summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-04-30 21:45:51 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-04-30 21:45:51 +0000
commit5cbeb59475d2d25a86ac936e47c99be86e0a3183 (patch)
treeb84cfa6aa252b33d133ceb0922061367ca5ac637
parenteb3451793aaf42870e44281708ccac51c010e837 (diff)
parent627758a905bdac685d065ed3de08e628b03b70b4 (diff)
downloadicu-build-tools-release.tar.gz
Snap for 11784721 from 627758a905bdac685d065ed3de08e628b03b70b4 to build-tools-releasebuild-tools-release
Change-Id: I48be0d30274e0df643635f86bc40c5a9de1e52ad
-rw-r--r--Android.bp2
-rw-r--r--LICENSE411
-rw-r--r--README.version2
-rw-r--r--android_icu4j/Android.bp1
-rw-r--r--android_icu4j/src/icu74/Android.bp46
-rw-r--r--android_icu4j/src/icu74/main/java/com/ibm/icu/impl/CalendarAstronomer.java1674
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java712
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/ICUService.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/LocaleFallbackData.java8
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java13
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/PropsVectors.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java142
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java120
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/breakiter/BurmeseBreakEngine.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/breakiter/KhmerBreakEngine.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/breakiter/LaoBreakEngine.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/breakiter/ThaiBreakEngine.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/locale/LSR.java111
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/locale/LikelySubtags.java595
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java8
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java20
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/locale/XLikelySubtags.java593
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java5
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/number/Grouper.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/number/Modifier.java40
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java5
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java37
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/units/MeasureUnitImpl.java14
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/units/UnitPreferences.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/units/UnitsConverter.java157
-rw-r--r--android_icu4j/src/main/java/android/icu/lang/UCharacter.java92
-rw-r--r--android_icu4j/src/main/java/android/icu/lang/UProperty.java27
-rw-r--r--android_icu4j/src/main/java/android/icu/lang/UScript.java5
-rw-r--r--android_icu4j/src/main/java/android/icu/math/BigDecimal.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/DateTimeFormatterFactory.java406
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/FormattedMessage.java3
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/FormattedPlaceholder.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/Formatter.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/FormatterFactory.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/IdentityFormatterFactory.java5
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/InputSource.java85
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/MFDataModel.java523
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/MFDataModelFormatter.java602
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/MFDataModelValidator.java205
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/MFFunctionRegistry.java349
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/MFParseException.java34
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/MFParser.java789
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/MFSerializer.java382
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/MessageFormatter.java184
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/Mf2DataModel.java884
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/Mf2DataModelFormatter.java281
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/Mf2FunctionRegistry.java350
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/Mf2Parser.java770
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/Mf2Serializer.java501
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/NumberFormatterFactory.java312
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/OptUtils.java20
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/PlainStringFormattedValue.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/PluralSelectorFactory.java111
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/Selector.java7
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/SelectorFactory.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/StringUtils.java143
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/StringView.java39
-rw-r--r--android_icu4j/src/main/java/android/icu/message2/TextSelectorFactory.java26
-rw-r--r--android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java10
-rw-r--r--android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java10
-rw-r--r--android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java1
-rw-r--r--android_icu4j/src/main/java/android/icu/number/ScientificNotation.java4
-rw-r--r--android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java26
-rw-r--r--android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java12
-rw-r--r--android_icu4j/src/main/java/android/icu/text/MessageFormat.java4
-rw-r--r--android_icu4j/src/main/java/android/icu/text/NFRule.java19
-rw-r--r--android_icu4j/src/main/java/android/icu/text/NFRuleSet.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/text/NFSubstitution.java73
-rw-r--r--android_icu4j/src/main/java/android/icu/text/PersonName.java27
-rw-r--r--android_icu4j/src/main/java/android/icu/text/PersonNameFormatter.java26
-rw-r--r--android_icu4j/src/main/java/android/icu/text/RBBINode.java11
-rw-r--r--android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java17
-rw-r--r--android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java18
-rw-r--r--android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java36
-rw-r--r--android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java11
-rw-r--r--android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java384
-rw-r--r--android_icu4j/src/main/java/android/icu/text/SimplePersonName.java12
-rw-r--r--android_icu4j/src/main/java/android/icu/text/SpoofChecker.java94
-rw-r--r--android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java8
-rw-r--r--android_icu4j/src/main/java/android/icu/text/Transliterator.java19
-rw-r--r--android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java43
-rw-r--r--android_icu4j/src/main/java/android/icu/text/UnicodeSet.java19
-rw-r--r--android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java11
-rw-r--r--android_icu4j/src/main/java/android/icu/util/Calendar.java48
-rw-r--r--android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java19
-rw-r--r--android_icu4j/src/main/java/android/icu/util/CopticCalendar.java11
-rw-r--r--android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java11
-rw-r--r--android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java16
-rw-r--r--android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java544
-rw-r--r--android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java10
-rw-r--r--android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java8
-rw-r--r--android_icu4j/src/main/java/android/icu/util/MeasureUnit.java30
-rw-r--r--android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/util/TimeZone.java2
-rw-r--r--android_icu4j/src/main/java/android/icu/util/ULocale.java116
-rw-r--r--android_icu4j/src/main/java/android/icu/util/VersionInfo.java6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java26
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt5
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_header.txt6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_readme.txt2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/af.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/am.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ar.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/as.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/az.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/be.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bg.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bn.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bs.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ca.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/catalog.txt23
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/chr.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cs.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cy.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/da.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de_CH.txt772
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/dsb.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/el.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_AU.txt818
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_CA.txt818
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_GB.txt818
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_IN.txt818
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_419.txt830
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_MX.txt831
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_US.txt801
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/et.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/eu.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fa.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fi.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fil.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr_CA.txt831
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ga.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gd.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gl.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gu.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha_NE.txt762
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/he.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi_Latn.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hr.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hsb.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hu.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hy.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/id.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ig.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/is.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/it.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ja.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/jv.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ka.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kk.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/km.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kn.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ko.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kok.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ky.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lo.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lt.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lv.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mk.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ml.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mn.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mr.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ms.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/my.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ne.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nl.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nn.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/no.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/or.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pa.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pl.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ps.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt_PT.txt814
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/qu.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ro.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ru.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sc.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sd.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/si.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sk.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sl.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/so.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sq.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Cyrl_BA.txt818
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn_BA.txt818
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sv.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw_KE.txt806
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ta.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/te.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tg.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/th.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ti.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tk.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tr.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uk.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ur.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uz.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/vi.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/wo.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo_BJ.txt809
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue_Hans.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant_HK.txt712
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zu.txt7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitLocalePreferencesTest.txt42
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitPreferencesTest.txt6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitsTest.txt11
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnvbin52544 -> 52544 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.resbin1792 -> 1776 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.resbin228288 -> 228336 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnvbin4320 -> 4320 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnvbin2448 -> 2448 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnvbin9344 -> 9344 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnvbin10608 -> 10608 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnvbin10496 -> 10496 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnvbin800 -> 800 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnvbin7760 -> 7760 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java12
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java28
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java204
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java38
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java8
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java77
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java9
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java23
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java70
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java14
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java13
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java10
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java9
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java20
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java106
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java18
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java150
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java7
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java54
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java60
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java18
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/impl/UnitsTest.java18
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java8
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java158
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java20
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/Args.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/CoreTest.java31
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java25
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterListTest.java18
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterMessageRefTest.java25
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterPersonTest.java58
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/DataModelErrorsTest.java44
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/FirstReleaseTests.java36
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/FromJsonTest.java425
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/FunctionsTest.java38
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/IcuFunctionsTest.java49
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/MessageFormat2Test.java195
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2FeaturesTest.java142
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2IcuTest.java60
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/ParserSmokeTest.java47
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/SelectorsWithVariousArgumentsTest.java42
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/SerializationTest.java109
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/SyntaxErrorsTest.java37
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/TestCase.java157
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/TestUtils.java92
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/Unit.java111
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/data-model-errors.json32
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-parser-tests.json61
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-functions.json193
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-previous-release.json390
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-selectors.json131
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/syntax-errors.json56
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/test-core.json212
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/message2/test-functions.json325
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java50
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java17
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java31
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java88
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java5
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java23
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.IllegalIcuArgumentException.datbin1114 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.InvalidFormatException.datbin3177 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.OlsonTimeZone.datbin20988 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.RelativeDateFormat.datbin11886 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneAdapter.datbin21421 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.locale.LocaleSyntaxException.datbin1134 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.number.SkeletonSyntaxException.datbin1149 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ArabicShapingException.datbin3177 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormat.datbin93746 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormatSymbols.datbin40444 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.CurrencyPluralInfo.datbin1170 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormat.datbin48188 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormatSymbols.datbin32837 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalFormat.datbin12472 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DecimalFormat.datbin11432 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DecimalFormatSymbols.datbin7403 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.SimpleDateFormat.datbin92694 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.StringPrepParseException.datbin7712 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.BuddhistCalendar.datbin2672 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.Calendar.datbin4090 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ChineseCalendar.datbin3260 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.CopticCalendar.datbin3328 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DangiCalendar.datbin3610 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.EthiopicCalendar.datbin2630 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.GregorianCalendar.datbin4099 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.HebrewCalendar.datbin3701 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUCloneNotSupportedException.datbin1674 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUException.datbin1579 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUInputTooLongException.datbin1659 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUUncheckedIOException.datbin1612 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IllformedLocaleException.datbin1184 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IndianCalendar.datbin2511 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IslamicCalendar.datbin3876 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.JapaneseCalendar.datbin2750 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.PersianCalendar.datbin4600 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TaiwanCalendar.datbin2929 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.UResourceTypeMismatchException.datbin3242 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.VTimeZone.datbin2676 -> 0 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.DateNumberFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.DateNumberFormat.dat)bin2602 -> 2602 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.IllegalIcuArgumentException.datbin0 -> 1114 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.InvalidFormatException.datbin0 -> 3177 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.OlsonTimeZone.datbin0 -> 21115 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.RelativeDateFormat.datbin0 -> 11976 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TZDBTimeZoneNames.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TZDBTimeZoneNames.dat)bin277 -> 277 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneAdapter.datbin0 -> 21548 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneGenericNames.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneGenericNames.dat)bin407 -> 407 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneNamesImpl.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneNamesImpl.dat)bin237 -> 237 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.duration.BasicDurationFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.duration.BasicDurationFormat.dat)bin383 -> 383 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.locale.LocaleSyntaxException.datbin0 -> 1134 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.CustomSymbolCurrency.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.CustomSymbolCurrency.dat)bin345 -> 345 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.DecimalFormatProperties.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.DecimalFormatProperties.dat)bin586 -> 586 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat)bin187 -> 187 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.Properties.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.Properties.dat)bin106 -> 106 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.math.BigDecimal.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.math.BigDecimal.dat)bin520 -> 520 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.math.MathContext.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.math.MathContext.dat)bin595 -> 595 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.message2.MFParseException.datbin0 -> 1058 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.number.NumberRangeFormatter$SpanField.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.number.NumberRangeFormatter$SpanField.dat)bin306 -> 306 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.number.SkeletonSyntaxException.datbin0 -> 1149 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ArabicShapingException.datbin0 -> 3177 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormat$Field.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormat$Field.dat)bin312 -> 312 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormat.datbin0 -> 90128 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormatSymbols.datbin0 -> 37080 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.CompactDecimalFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.CompactDecimalFormat.dat)bin65 -> 65 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.CurrencyPluralInfo.datbin0 -> 1161 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormat$Field.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormat$Field.dat)bin792 -> 792 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormat.datbin0 -> 44440 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormatSymbols.datbin0 -> 29083 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalFormat$SpanField.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalFormat$SpanField.dat)bin303 -> 303 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalFormat.datbin0 -> 13042 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalInfo$PatternInfo.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalInfo$PatternInfo.dat)bin270 -> 270 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalInfo.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalInfo.dat)bin568 -> 568 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DecimalFormat.datbin0 -> 11432 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DecimalFormatSymbols.datbin0 -> 7403 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ListFormatter$Field.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ListFormatter$Field.dat)bin250 -> 250 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ListFormatter$SpanField.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ListFormatter$SpanField.dat)bin289 -> 289 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MeasureFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MeasureFormat.dat)bin3295 -> 3295 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MessageFormat$Field.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MessageFormat$Field.dat)bin249 -> 249 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MessageFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MessageFormat.dat)bin382 -> 382 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.NumberFormat$Field.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.NumberFormat$Field.dat)bin449 -> 449 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.NumberFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.NumberFormat.dat)bin3812 -> 3812 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.PluralFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.PluralFormat.dat)bin3043 -> 3043 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.PluralRules.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.PluralRules.dat)bin872 -> 872 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.RelativeDateTimeFormatter$Field.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.RelativeDateTimeFormatter$Field.dat)bin246 -> 246 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.RuleBasedNumberFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.RuleBasedNumberFormat.dat)bin44502 -> 44502 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.SelectFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.SelectFormat.dat)bin202 -> 202 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.SimpleDateFormat.datbin0 -> 88946 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.StringPrepParseException.datbin0 -> 7712 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.TimeUnitFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.TimeUnitFormat.dat)bin2689 -> 2689 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.TimeZoneFormat.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.TimeZoneFormat.dat)bin774 -> 774 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.AnnualTimeZoneRule.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.AnnualTimeZoneRule.dat)bin898 -> 898 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.BuddhistCalendar.datbin0 -> 2672 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.Calendar.datbin0 -> 4090 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ChineseCalendar.datbin0 -> 3260 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.CopticCalendar.datbin0 -> 3328 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.Currency.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.Currency.dat)bin345 -> 345 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DangiCalendar.datbin0 -> 3610 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DateInterval.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DateInterval.dat)bin139 -> 139 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DateTimeRule.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DateTimeRule.dat)bin324 -> 324 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.EthiopicCalendar.datbin0 -> 2630 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.GregorianCalendar.datbin0 -> 4099 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.HebrewCalendar.datbin0 -> 3701 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUCloneNotSupportedException.datbin0 -> 1674 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUException.datbin0 -> 1579 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUInputTooLongException.datbin0 -> 1659 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUUncheckedIOException.datbin0 -> 1612 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IllformedLocaleException.datbin0 -> 1184 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IndianCalendar.datbin0 -> 2511 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.InitialTimeZoneRule.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.InitialTimeZoneRule.dat)bin241 -> 241 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IslamicCalendar.datbin0 -> 4237 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.JapaneseCalendar.datbin0 -> 2750 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.MeasureUnit.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.MeasureUnit.dat)bin173 -> 173 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.PersianCalendar.datbin0 -> 3078 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.RuleBasedTimeZone.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.RuleBasedTimeZone.dat)bin1401 -> 1401 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.SimpleTimeZone.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.SimpleTimeZone.dat)bin1152 -> 1152 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TaiwanCalendar.datbin0 -> 2929 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeArrayTimeZoneRule.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeArrayTimeZoneRule.dat)bin312 -> 312 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeUnit.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeUnit.dat)bin173 -> 173 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeZone.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeZone.dat)bin1606 -> 1606 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ULocale.dat (renamed from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ULocale.dat)bin365 -> 365 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.UResourceTypeMismatchException.datbin0 -> 3242 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.VTimeZone.datbin0 -> 2690 bytes
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java10
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java56
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java4
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java5
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java76
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java13
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java10
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java6
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java2
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java28
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java100
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java275
-rw-r--r--android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java6
-rw-r--r--android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties2
-rw-r--r--android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java7
-rw-r--r--icu4c/APIChangeReport.html1354
-rw-r--r--icu4c/APIChangeReport.md719
-rwxr-xr-xicu4c/build_qnx/build-hooks2
-rw-r--r--icu4c/source/Doxyfile.in2
-rw-r--r--icu4c/source/acinclude.m411
-rw-r--r--icu4c/source/aclocal.m454
-rw-r--r--icu4c/source/allinone/Build.Windows.IcuVersion.props2
-rw-r--r--icu4c/source/allinone/Build.Windows.ProjectConfiguration.props11
-rw-r--r--icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props3
-rw-r--r--icu4c/source/allinone/allinone.sln36
-rw-r--r--icu4c/source/common/brkeng.cpp6
-rw-r--r--icu4c/source/common/brkiter.cpp9
-rw-r--r--icu4c/source/common/bytesinkutil.h112
-rw-r--r--icu4c/source/common/caniter.cpp50
-rw-r--r--icu4c/source/common/charstr.h7
-rw-r--r--icu4c/source/common/common.vcxproj1
-rw-r--r--icu4c/source/common/common_uwp.vcxproj1
-rw-r--r--icu4c/source/common/filteredbrk.cpp2
-rw-r--r--icu4c/source/common/hash.h10
-rw-r--r--icu4c/source/common/localebuilder.cpp54
-rw-r--r--icu4c/source/common/localefallback_data.h2064
-rw-r--r--icu4c/source/common/localematcher.cpp54
-rw-r--r--icu4c/source/common/localeprioritylist.cpp6
-rw-r--r--icu4c/source/common/locavailable.cpp31
-rw-r--r--icu4c/source/common/locbased.cpp6
-rw-r--r--icu4c/source/common/locdispnames.cpp139
-rw-r--r--icu4c/source/common/locdistance.cpp8
-rw-r--r--icu4c/source/common/locdistance.h10
-rw-r--r--icu4c/source/common/locdspnm.cpp156
-rw-r--r--icu4c/source/common/locid.cpp181
-rw-r--r--icu4c/source/common/loclikely.cpp886
-rw-r--r--icu4c/source/common/loclikelysubtags.cpp247
-rw-r--r--icu4c/source/common/loclikelysubtags.h17
-rw-r--r--icu4c/source/common/locmap.cpp86
-rw-r--r--icu4c/source/common/locresdata.cpp100
-rw-r--r--icu4c/source/common/locutil.cpp25
-rw-r--r--icu4c/source/common/locutil.h2
-rw-r--r--icu4c/source/common/messagepattern.cpp1
-rw-r--r--icu4c/source/common/normalizer2impl.cpp10
-rw-r--r--icu4c/source/common/normalizer2impl.h8
-rw-r--r--icu4c/source/common/propname_data.h1824
-rw-r--r--icu4c/source/common/putil.cpp11
-rw-r--r--icu4c/source/common/rbbi.cpp4
-rw-r--r--icu4c/source/common/rbbi_cache.cpp4
-rw-r--r--icu4c/source/common/rbbinode.cpp71
-rw-r--r--icu4c/source/common/rbbinode.h3
-rw-r--r--icu4c/source/common/rbbirb.cpp5
-rw-r--r--icu4c/source/common/rbbiscan.cpp47
-rw-r--r--icu4c/source/common/rbbistbl.cpp2
-rw-r--r--icu4c/source/common/rbbitblb.cpp5
-rw-r--r--icu4c/source/common/resbund.cpp18
-rw-r--r--icu4c/source/common/ruleiter.cpp20
-rw-r--r--icu4c/source/common/ruleiter.h2
-rw-r--r--icu4c/source/common/ubidiln.cpp1
-rw-r--r--icu4c/source/common/ubrk.cpp16
-rw-r--r--icu4c/source/common/ucase.h2
-rw-r--r--icu4c/source/common/ucasemap.cpp22
-rw-r--r--icu4c/source/common/uchar_props_data.h4718
-rw-r--r--icu4c/source/common/uchriter.cpp11
-rw-r--r--icu4c/source/common/ucnv.cpp10
-rw-r--r--icu4c/source/common/ucnv_err.cpp4
-rw-r--r--icu4c/source/common/ucnv_u7.cpp4
-rw-r--r--icu4c/source/common/ucnvbocu.cpp2
-rw-r--r--icu4c/source/common/ucnvisci.cpp4
-rw-r--r--icu4c/source/common/ucnvscsu.cpp6
-rw-r--r--icu4c/source/common/ucurr.cpp115
-rw-r--r--icu4c/source/common/udata.cpp12
-rw-r--r--icu4c/source/common/udataswp.cpp4
-rw-r--r--icu4c/source/common/uiter.cpp28
-rw-r--r--icu4c/source/common/uloc.cpp1652
-rw-r--r--icu4c/source/common/uloc_keytype.cpp32
-rw-r--r--icu4c/source/common/uloc_tag.cpp800
-rw-r--r--icu4c/source/common/ulocale.cpp31
-rw-r--r--icu4c/source/common/ulocbuilder.cpp25
-rw-r--r--icu4c/source/common/ulocimp.h247
-rw-r--r--icu4c/source/common/umapfile.cpp6
-rw-r--r--icu4c/source/common/umutex.cpp2
-rw-r--r--icu4c/source/common/unicode/brkiter.h19
-rw-r--r--icu4c/source/common/unicode/caniter.h7
-rw-r--r--icu4c/source/common/unicode/chariter.h68
-rw-r--r--icu4c/source/common/unicode/docmain.h5
-rw-r--r--icu4c/source/common/unicode/dtintrv.h5
-rw-r--r--icu4c/source/common/unicode/localematcher.h8
-rw-r--r--icu4c/source/common/unicode/localpointer.h100
-rw-r--r--icu4c/source/common/unicode/locid.h82
-rw-r--r--icu4c/source/common/unicode/normlzr.h24
-rw-r--r--icu4c/source/common/unicode/parsepos.h4
-rw-r--r--icu4c/source/common/unicode/platform.h62
-rw-r--r--icu4c/source/common/unicode/ptypes.h86
-rw-r--r--icu4c/source/common/unicode/rbbi.h30
-rw-r--r--icu4c/source/common/unicode/resbund.h25
-rw-r--r--icu4c/source/common/unicode/schriter.h4
-rw-r--r--icu4c/source/common/unicode/simpleformatter.h4
-rw-r--r--icu4c/source/common/unicode/stringpiece.h8
-rw-r--r--icu4c/source/common/unicode/uchar.h145
-rw-r--r--icu4c/source/common/unicode/uchriter.h34
-rw-r--r--icu4c/source/common/unicode/ucnv.h3
-rw-r--r--icu4c/source/common/unicode/uconfig.h12
-rw-r--r--icu4c/source/common/unicode/uloc.h25
-rw-r--r--icu4c/source/common/unicode/ulocbuilder.h2
-rw-r--r--icu4c/source/common/unicode/umachine.h14
-rw-r--r--icu4c/source/common/unicode/unifunct.h4
-rw-r--r--icu4c/source/common/unicode/uniset.h20
-rw-r--r--icu4c/source/common/unicode/unistr.h50
-rw-r--r--icu4c/source/common/unicode/urename.h9
-rw-r--r--icu4c/source/common/unicode/uscript.h5
-rw-r--r--icu4c/source/common/unicode/uset.h4
-rw-r--r--icu4c/source/common/unicode/utypes.h18
-rw-r--r--icu4c/source/common/unicode/uvernum.h12
-rw-r--r--icu4c/source/common/unifunct.cpp4
-rw-r--r--icu4c/source/common/uniset_props.cpp49
-rw-r--r--icu4c/source/common/unistr.cpp99
-rw-r--r--icu4c/source/common/unistr_case.cpp2
-rw-r--r--icu4c/source/common/unistr_cnv.cpp32
-rw-r--r--icu4c/source/common/unistr_props.cpp2
-rw-r--r--icu4c/source/common/unormcmp.cpp6
-rw-r--r--icu4c/source/common/uprops.cpp87
-rw-r--r--icu4c/source/common/uprops.h73
-rw-r--r--icu4c/source/common/uresbund.cpp258
-rw-r--r--icu4c/source/common/uresdata.cpp8
-rw-r--r--icu4c/source/common/uscript.cpp35
-rw-r--r--icu4c/source/common/uset_props.cpp8
-rw-r--r--icu4c/source/common/usprep.cpp2
-rw-r--r--icu4c/source/common/ustrcase.cpp2
-rw-r--r--icu4c/source/common/ustrenum.cpp8
-rw-r--r--icu4c/source/common/util_props.cpp7
-rw-r--r--icu4c/source/common/utrie2.cpp26
-rw-r--r--icu4c/source/common/utrie2_builder.cpp4
-rw-r--r--icu4c/source/common/uts46.cpp55
-rw-r--r--icu4c/source/common/utypes.cpp13
-rw-r--r--icu4c/source/common/uvector.cpp2
-rw-r--r--icu4c/source/common/uvectr32.cpp6
-rw-r--r--icu4c/source/common/uvectr64.cpp6
-rw-r--r--icu4c/source/config/dist.mk4
-rw-r--r--icu4c/source/config/mh-solaris4
-rwxr-xr-xicu4c/source/configure437
-rw-r--r--icu4c/source/configure.ac117
-rw-r--r--icu4c/source/data/brkitr/LOCALE_DEPS.json2
-rw-r--r--icu4c/source/data/brkitr/adaboost/jaml.txt3354
-rw-r--r--icu4c/source/data/brkitr/root.txt2
-rw-r--r--icu4c/source/data/coll/LOCALE_DEPS.json2
-rw-r--r--icu4c/source/data/coll/af.txt2
-rw-r--r--icu4c/source/data/coll/am.txt2
-rw-r--r--icu4c/source/data/coll/ar.txt4
-rw-r--r--icu4c/source/data/coll/as.txt2
-rw-r--r--icu4c/source/data/coll/az.txt4
-rw-r--r--icu4c/source/data/coll/be.txt2
-rw-r--r--icu4c/source/data/coll/bg.txt2
-rw-r--r--icu4c/source/data/coll/bn.txt4
-rw-r--r--icu4c/source/data/coll/bo.txt2
-rw-r--r--icu4c/source/data/coll/br.txt2
-rw-r--r--icu4c/source/data/coll/bs.txt4
-rw-r--r--icu4c/source/data/coll/bs_Cyrl.txt2
-rw-r--r--icu4c/source/data/coll/ca.txt2
-rw-r--r--icu4c/source/data/coll/ceb.txt2
-rw-r--r--icu4c/source/data/coll/chr.txt2
-rw-r--r--icu4c/source/data/coll/cs.txt2
-rw-r--r--icu4c/source/data/coll/cy.txt2
-rw-r--r--icu4c/source/data/coll/da.txt4
-rw-r--r--icu4c/source/data/coll/de.txt4
-rw-r--r--icu4c/source/data/coll/de_AT.txt2
-rw-r--r--icu4c/source/data/coll/dsb.txt2
-rw-r--r--icu4c/source/data/coll/ee.txt2
-rw-r--r--icu4c/source/data/coll/el.txt2
-rw-r--r--icu4c/source/data/coll/en_US_POSIX.txt2
-rw-r--r--icu4c/source/data/coll/eo.txt2
-rw-r--r--icu4c/source/data/coll/es.txt6
-rw-r--r--icu4c/source/data/coll/et.txt2
-rw-r--r--icu4c/source/data/coll/fa.txt2
-rw-r--r--icu4c/source/data/coll/fa_AF.txt2
-rw-r--r--icu4c/source/data/coll/ff_Adlm.txt2
-rw-r--r--icu4c/source/data/coll/fi.txt6
-rw-r--r--icu4c/source/data/coll/fil.txt2
-rw-r--r--icu4c/source/data/coll/fo.txt4
-rw-r--r--icu4c/source/data/coll/fr_CA.txt2
-rw-r--r--icu4c/source/data/coll/fy.txt2
-rw-r--r--icu4c/source/data/coll/gl.txt4
-rw-r--r--icu4c/source/data/coll/gu.txt2
-rw-r--r--icu4c/source/data/coll/ha.txt2
-rw-r--r--icu4c/source/data/coll/haw.txt2
-rw-r--r--icu4c/source/data/coll/he.txt2
-rw-r--r--icu4c/source/data/coll/hi.txt2
-rw-r--r--icu4c/source/data/coll/hr.txt4
-rw-r--r--icu4c/source/data/coll/hsb.txt2
-rw-r--r--icu4c/source/data/coll/hu.txt2
-rw-r--r--icu4c/source/data/coll/hy.txt2
-rw-r--r--icu4c/source/data/coll/ig.txt2
-rw-r--r--icu4c/source/data/coll/is.txt4
-rw-r--r--icu4c/source/data/coll/ja.txt6
-rw-r--r--icu4c/source/data/coll/ka.txt2
-rw-r--r--icu4c/source/data/coll/kk.txt2
-rw-r--r--icu4c/source/data/coll/kl.txt4
-rw-r--r--icu4c/source/data/coll/km.txt2
-rw-r--r--icu4c/source/data/coll/kn.txt4
-rw-r--r--icu4c/source/data/coll/ko.txt8
-rw-r--r--icu4c/source/data/coll/kok.txt2
-rw-r--r--icu4c/source/data/coll/ku.txt2
-rw-r--r--icu4c/source/data/coll/ky.txt2
-rw-r--r--icu4c/source/data/coll/lkt.txt2
-rw-r--r--icu4c/source/data/coll/ln.txt4
-rw-r--r--icu4c/source/data/coll/lo.txt2
-rw-r--r--icu4c/source/data/coll/lt.txt2
-rw-r--r--icu4c/source/data/coll/lv.txt24
-rw-r--r--icu4c/source/data/coll/mk.txt2
-rw-r--r--icu4c/source/data/coll/ml.txt2
-rw-r--r--icu4c/source/data/coll/mn.txt2
-rw-r--r--icu4c/source/data/coll/mr.txt2
-rw-r--r--icu4c/source/data/coll/mt.txt2
-rw-r--r--icu4c/source/data/coll/my.txt2
-rw-r--r--icu4c/source/data/coll/ne.txt2
-rw-r--r--icu4c/source/data/coll/no.txt4
-rw-r--r--icu4c/source/data/coll/om.txt2
-rw-r--r--icu4c/source/data/coll/or.txt2
-rw-r--r--icu4c/source/data/coll/pa.txt2
-rw-r--r--icu4c/source/data/coll/pl.txt2
-rw-r--r--icu4c/source/data/coll/ps.txt2
-rw-r--r--icu4c/source/data/coll/ro.txt2
-rw-r--r--icu4c/source/data/coll/root.txt12
-rw-r--r--icu4c/source/data/coll/ru.txt2
-rw-r--r--icu4c/source/data/coll/se.txt4
-rw-r--r--icu4c/source/data/coll/si.txt4
-rw-r--r--icu4c/source/data/coll/sk.txt4
-rw-r--r--icu4c/source/data/coll/sl.txt2
-rw-r--r--icu4c/source/data/coll/smn.txt4
-rw-r--r--icu4c/source/data/coll/sq.txt2
-rw-r--r--icu4c/source/data/coll/sr.txt2
-rw-r--r--icu4c/source/data/coll/sr_Latn.txt4
-rw-r--r--icu4c/source/data/coll/sv.txt6
-rw-r--r--icu4c/source/data/coll/ta.txt2
-rw-r--r--icu4c/source/data/coll/te.txt2
-rw-r--r--icu4c/source/data/coll/th.txt2
-rw-r--r--icu4c/source/data/coll/tk.txt2
-rw-r--r--icu4c/source/data/coll/to.txt2
-rw-r--r--icu4c/source/data/coll/tr.txt4
-rw-r--r--icu4c/source/data/coll/ug.txt2
-rw-r--r--icu4c/source/data/coll/uk.txt2
-rw-r--r--icu4c/source/data/coll/ur.txt2
-rw-r--r--icu4c/source/data/coll/uz.txt2
-rw-r--r--icu4c/source/data/coll/vi.txt4
-rw-r--r--icu4c/source/data/coll/wo.txt2
-rw-r--r--icu4c/source/data/coll/yi.txt2
-rw-r--r--icu4c/source/data/coll/yo.txt2
-rw-r--r--icu4c/source/data/coll/zh.txt14
-rw-r--r--icu4c/source/data/curr/LOCALE_DEPS.json3
-rw-r--r--icu4c/source/data/curr/en.txt8
-rw-r--r--icu4c/source/data/curr/en_CA.txt3
-rw-r--r--icu4c/source/data/curr/es.txt8
-rw-r--r--icu4c/source/data/curr/fr.txt8
-rw-r--r--icu4c/source/data/curr/ks.txt6
-rw-r--r--icu4c/source/data/curr/kxv_IN.txt6
-rw-r--r--icu4c/source/data/curr/kxv_Latn.txt5
-rw-r--r--icu4c/source/data/curr/kxv_Latn_IN.txt9
-rw-r--r--icu4c/source/data/curr/nl.txt5
-rw-r--r--icu4c/source/data/curr/root.txt6
-rw-r--r--icu4c/source/data/curr/supplementalData.txt26
-rw-r--r--icu4c/source/data/dtd/cldr/common/dtd/ldml.dtd6
-rw-r--r--icu4c/source/data/dtd/cldr/common/dtd/ldmlICU.dtd2
-rw-r--r--icu4c/source/data/icupkg.inc.in1
-rw-r--r--icu4c/source/data/in/pnames.icubin44673 -> 45392 bytes
-rw-r--r--icu4c/source/data/in/uprops.icubin141604 -> 142592 bytes
-rw-r--r--icu4c/source/data/lang/LOCALE_DEPS.json3
-rw-r--r--icu4c/source/data/lang/af.txt1
-rw-r--r--icu4c/source/data/lang/am.txt1
-rw-r--r--icu4c/source/data/lang/ar.txt1
-rw-r--r--icu4c/source/data/lang/ar_XB.txt3
-rw-r--r--icu4c/source/data/lang/ast.txt1
-rw-r--r--icu4c/source/data/lang/bg.txt1
-rw-r--r--icu4c/source/data/lang/br.txt1
-rw-r--r--icu4c/source/data/lang/bs.txt1
-rw-r--r--icu4c/source/data/lang/ca.txt1
-rw-r--r--icu4c/source/data/lang/ccp.txt1
-rw-r--r--icu4c/source/data/lang/cs.txt1
-rw-r--r--icu4c/source/data/lang/cy.txt1
-rw-r--r--icu4c/source/data/lang/da.txt1
-rw-r--r--icu4c/source/data/lang/de.txt1
-rw-r--r--icu4c/source/data/lang/ee.txt1
-rw-r--r--icu4c/source/data/lang/el.txt1
-rw-r--r--icu4c/source/data/lang/en.txt3
-rw-r--r--icu4c/source/data/lang/en_XA.txt3
-rw-r--r--icu4c/source/data/lang/es.txt1
-rw-r--r--icu4c/source/data/lang/et.txt1
-rw-r--r--icu4c/source/data/lang/eu.txt1
-rw-r--r--icu4c/source/data/lang/fa.txt1
-rw-r--r--icu4c/source/data/lang/fi.txt1
-rw-r--r--icu4c/source/data/lang/fil.txt1
-rw-r--r--icu4c/source/data/lang/fr.txt3
-rw-r--r--icu4c/source/data/lang/fr_BE.txt1
-rw-r--r--icu4c/source/data/lang/fr_CA.txt1
-rw-r--r--icu4c/source/data/lang/ga.txt1
-rw-r--r--icu4c/source/data/lang/gd.txt1
-rw-r--r--icu4c/source/data/lang/gl.txt1
-rw-r--r--icu4c/source/data/lang/gu.txt1
-rw-r--r--icu4c/source/data/lang/he.txt1
-rw-r--r--icu4c/source/data/lang/hi.txt1
-rw-r--r--icu4c/source/data/lang/hi_Latn.txt1
-rw-r--r--icu4c/source/data/lang/hr.txt1
-rw-r--r--icu4c/source/data/lang/hu.txt1
-rw-r--r--icu4c/source/data/lang/id.txt1
-rw-r--r--icu4c/source/data/lang/is.txt1
-rw-r--r--icu4c/source/data/lang/it.txt1
-rw-r--r--icu4c/source/data/lang/ja.txt1
-rw-r--r--icu4c/source/data/lang/kgp.txt1
-rw-r--r--icu4c/source/data/lang/kn.txt1
-rw-r--r--icu4c/source/data/lang/ko.txt1
-rw-r--r--icu4c/source/data/lang/ks.txt58
-rw-r--r--icu4c/source/data/lang/kxv_IN.txt6
-rw-r--r--icu4c/source/data/lang/kxv_Latn.txt5
-rw-r--r--icu4c/source/data/lang/kxv_Latn_IN.txt9
-rw-r--r--icu4c/source/data/lang/lb.txt1
-rw-r--r--icu4c/source/data/lang/lo.txt1
-rw-r--r--icu4c/source/data/lang/lt.txt1
-rw-r--r--icu4c/source/data/lang/lv.txt1
-rw-r--r--icu4c/source/data/lang/mn.txt1
-rw-r--r--icu4c/source/data/lang/mr.txt1
-rw-r--r--icu4c/source/data/lang/ms.txt1
-rw-r--r--icu4c/source/data/lang/nl.txt1
-rw-r--r--icu4c/source/data/lang/no.txt1
-rw-r--r--icu4c/source/data/lang/pl.txt1
-rw-r--r--icu4c/source/data/lang/pt.txt1
-rw-r--r--icu4c/source/data/lang/ro.txt1
-rw-r--r--icu4c/source/data/lang/root.txt2
-rw-r--r--icu4c/source/data/lang/ru.txt1
-rw-r--r--icu4c/source/data/lang/sc.txt1
-rw-r--r--icu4c/source/data/lang/sk.txt1
-rw-r--r--icu4c/source/data/lang/sl.txt1
-rw-r--r--icu4c/source/data/lang/so.txt1
-rw-r--r--icu4c/source/data/lang/sq.txt1
-rw-r--r--icu4c/source/data/lang/sr.txt1
-rw-r--r--icu4c/source/data/lang/sr_Cyrl_BA.txt1
-rw-r--r--icu4c/source/data/lang/sr_Latn.txt1
-rw-r--r--icu4c/source/data/lang/sr_Latn_BA.txt1
-rw-r--r--icu4c/source/data/lang/sv.txt1
-rw-r--r--icu4c/source/data/lang/sw.txt1
-rw-r--r--icu4c/source/data/lang/ta.txt1
-rw-r--r--icu4c/source/data/lang/te.txt1
-rw-r--r--icu4c/source/data/lang/th.txt1
-rw-r--r--icu4c/source/data/lang/tr.txt1
-rw-r--r--icu4c/source/data/lang/uk.txt1
-rw-r--r--icu4c/source/data/lang/ur.txt1
-rw-r--r--icu4c/source/data/lang/vi.txt1
-rw-r--r--icu4c/source/data/lang/yrl.txt1
-rw-r--r--icu4c/source/data/lang/yue.txt1
-rw-r--r--icu4c/source/data/lang/yue_Hans.txt1
-rw-r--r--icu4c/source/data/lang/zh.txt1
-rw-r--r--icu4c/source/data/lang/zh_Hant.txt1
-rw-r--r--icu4c/source/data/lang/zh_Hant_HK.txt1
-rw-r--r--icu4c/source/data/lang/zu.txt1
-rw-r--r--icu4c/source/data/locales/LOCALE_DEPS.json3
-rw-r--r--icu4c/source/data/locales/en_001.txt1
-rw-r--r--icu4c/source/data/locales/en_AU.txt2
-rw-r--r--icu4c/source/data/locales/en_CA.txt2
-rw-r--r--icu4c/source/data/locales/en_GB.txt8
-rw-r--r--icu4c/source/data/locales/en_IN.txt56
-rw-r--r--icu4c/source/data/locales/it.txt24
-rw-r--r--icu4c/source/data/locales/ks.txt16
-rw-r--r--icu4c/source/data/locales/kxv_IN.txt6
-rw-r--r--icu4c/source/data/locales/lv.txt4
-rw-r--r--icu4c/source/data/locales/root.txt2
-rw-r--r--icu4c/source/data/locales/ta.txt106
-rw-r--r--icu4c/source/data/locales/uk.txt4
-rw-r--r--icu4c/source/data/makedata.mak4
-rw-r--r--icu4c/source/data/misc/icuver.txt6
-rw-r--r--icu4c/source/data/misc/keyTypeData.txt2
-rw-r--r--icu4c/source/data/misc/langInfo.txt4666
-rw-r--r--icu4c/source/data/misc/metaZones.txt5
-rw-r--r--icu4c/source/data/misc/metadata.txt40
-rw-r--r--icu4c/source/data/misc/supplementalData.txt154
-rw-r--r--icu4c/source/data/misc/units.txt133
-rw-r--r--icu4c/source/data/misc/zoneinfo64.txt4
-rw-r--r--icu4c/source/data/rbnf/LOCALE_DEPS.json2
-rw-r--r--icu4c/source/data/rbnf/id.txt5
-rw-r--r--icu4c/source/data/rbnf/root.txt2
-rw-r--r--icu4c/source/data/region/LOCALE_DEPS.json3
-rw-r--r--icu4c/source/data/region/ff_Adlm.txt2
-rw-r--r--icu4c/source/data/region/hi_Latn.txt1
-rw-r--r--icu4c/source/data/region/ks.txt2
-rw-r--r--icu4c/source/data/region/kxv_IN.txt6
-rw-r--r--icu4c/source/data/region/kxv_Latn.txt5
-rw-r--r--icu4c/source/data/region/kxv_Latn_IN.txt9
-rw-r--r--icu4c/source/data/region/root.txt2
-rw-r--r--icu4c/source/data/unidata/changes.txt14
-rw-r--r--icu4c/source/data/unidata/ppucd.txt6635
-rw-r--r--icu4c/source/data/unit/LOCALE_DEPS.json3
-rw-r--r--icu4c/source/data/unit/kxv_IN.txt6
-rw-r--r--icu4c/source/data/unit/kxv_Latn.txt5
-rw-r--r--icu4c/source/data/unit/kxv_Latn_IN.txt9
-rw-r--r--icu4c/source/data/unit/root.txt2
-rw-r--r--icu4c/source/data/zone/LOCALE_DEPS.json3
-rw-r--r--icu4c/source/data/zone/af.txt20
-rw-r--r--icu4c/source/data/zone/am.txt38
-rw-r--r--icu4c/source/data/zone/ar.txt38
-rw-r--r--icu4c/source/data/zone/ar_XB.txt16
-rw-r--r--icu4c/source/data/zone/as.txt35
-rw-r--r--icu4c/source/data/zone/ast.txt14
-rw-r--r--icu4c/source/data/zone/az.txt38
-rw-r--r--icu4c/source/data/zone/be.txt38
-rw-r--r--icu4c/source/data/zone/bg.txt38
-rw-r--r--icu4c/source/data/zone/blo.txt32
-rw-r--r--icu4c/source/data/zone/bn.txt38
-rw-r--r--icu4c/source/data/zone/br.txt8
-rw-r--r--icu4c/source/data/zone/brx.txt35
-rw-r--r--icu4c/source/data/zone/bs.txt20
-rw-r--r--icu4c/source/data/zone/bs_Cyrl.txt35
-rw-r--r--icu4c/source/data/zone/ca.txt20
-rw-r--r--icu4c/source/data/zone/ccp.txt44
-rw-r--r--icu4c/source/data/zone/ce.txt38
-rw-r--r--icu4c/source/data/zone/ceb.txt8
-rw-r--r--icu4c/source/data/zone/chr.txt35
-rw-r--r--icu4c/source/data/zone/cs.txt20
-rw-r--r--icu4c/source/data/zone/cv.txt32
-rw-r--r--icu4c/source/data/zone/cy.txt17
-rw-r--r--icu4c/source/data/zone/da.txt20
-rw-r--r--icu4c/source/data/zone/de.txt20
-rw-r--r--icu4c/source/data/zone/dsb.txt14
-rw-r--r--icu4c/source/data/zone/dz.txt12
-rw-r--r--icu4c/source/data/zone/ee.txt11
-rw-r--r--icu4c/source/data/zone/el.txt38
-rw-r--r--icu4c/source/data/zone/en.txt16
-rw-r--r--icu4c/source/data/zone/en_001.txt3
-rw-r--r--icu4c/source/data/zone/en_CA.txt5
-rw-r--r--icu4c/source/data/zone/en_XA.txt16
-rw-r--r--icu4c/source/data/zone/es.txt20
-rw-r--r--icu4c/source/data/zone/es_419.txt3
-rw-r--r--icu4c/source/data/zone/es_MX.txt3
-rw-r--r--icu4c/source/data/zone/es_US.txt3
-rw-r--r--icu4c/source/data/zone/et.txt20
-rw-r--r--icu4c/source/data/zone/eu.txt20
-rw-r--r--icu4c/source/data/zone/fa.txt38
-rw-r--r--icu4c/source/data/zone/ff_Adlm.txt43
-rw-r--r--icu4c/source/data/zone/fi.txt20
-rw-r--r--icu4c/source/data/zone/fil.txt14
-rw-r--r--icu4c/source/data/zone/fo.txt17
-rw-r--r--icu4c/source/data/zone/fr.txt20
-rw-r--r--icu4c/source/data/zone/fr_CA.txt5
-rw-r--r--icu4c/source/data/zone/fy.txt9
-rw-r--r--icu4c/source/data/zone/ga.txt14
-rw-r--r--icu4c/source/data/zone/gd.txt17
-rw-r--r--icu4c/source/data/zone/gl.txt20
-rw-r--r--icu4c/source/data/zone/gsw.txt6
-rw-r--r--icu4c/source/data/zone/gu.txt38
-rw-r--r--icu4c/source/data/zone/ha.txt8
-rw-r--r--icu4c/source/data/zone/he.txt38
-rw-r--r--icu4c/source/data/zone/hi.txt38
-rw-r--r--icu4c/source/data/zone/hi_Latn.txt3
-rw-r--r--icu4c/source/data/zone/hr.txt20
-rw-r--r--icu4c/source/data/zone/hsb.txt14
-rw-r--r--icu4c/source/data/zone/hu.txt20
-rw-r--r--icu4c/source/data/zone/hy.txt38
-rw-r--r--icu4c/source/data/zone/ia.txt8
-rw-r--r--icu4c/source/data/zone/id.txt20
-rw-r--r--icu4c/source/data/zone/ig.txt8
-rw-r--r--icu4c/source/data/zone/is.txt14
-rw-r--r--icu4c/source/data/zone/it.txt17
-rw-r--r--icu4c/source/data/zone/ja.txt38
-rw-r--r--icu4c/source/data/zone/jv.txt17
-rw-r--r--icu4c/source/data/zone/ka.txt38
-rw-r--r--icu4c/source/data/zone/kea.txt5
-rw-r--r--icu4c/source/data/zone/kgp.txt38
-rw-r--r--icu4c/source/data/zone/kk.txt38
-rw-r--r--icu4c/source/data/zone/km.txt38
-rw-r--r--icu4c/source/data/zone/kn.txt38
-rw-r--r--icu4c/source/data/zone/ko.txt38
-rw-r--r--icu4c/source/data/zone/kok.txt35
-rw-r--r--icu4c/source/data/zone/ks.txt46
-rw-r--r--icu4c/source/data/zone/ksh.txt6
-rw-r--r--icu4c/source/data/zone/ku.txt17
-rw-r--r--icu4c/source/data/zone/kxv.txt32
-rw-r--r--icu4c/source/data/zone/kxv_IN.txt6
-rw-r--r--icu4c/source/data/zone/kxv_Latn.txt5
-rw-r--r--icu4c/source/data/zone/kxv_Latn_IN.txt9
-rw-r--r--icu4c/source/data/zone/ky.txt38
-rw-r--r--icu4c/source/data/zone/lb.txt14
-rw-r--r--icu4c/source/data/zone/lo.txt38
-rw-r--r--icu4c/source/data/zone/lt.txt38
-rw-r--r--icu4c/source/data/zone/lv.txt38
-rw-r--r--icu4c/source/data/zone/mai.txt29
-rw-r--r--icu4c/source/data/zone/mi.txt11
-rw-r--r--icu4c/source/data/zone/mk.txt38
-rw-r--r--icu4c/source/data/zone/ml.txt38
-rw-r--r--icu4c/source/data/zone/mn.txt38
-rw-r--r--icu4c/source/data/zone/mr.txt38
-rw-r--r--icu4c/source/data/zone/ms.txt17
-rw-r--r--icu4c/source/data/zone/mt.txt3
-rw-r--r--icu4c/source/data/zone/my.txt38
-rw-r--r--icu4c/source/data/zone/ne.txt38
-rw-r--r--icu4c/source/data/zone/nl.txt180
-rw-r--r--icu4c/source/data/zone/nn.txt5
-rw-r--r--icu4c/source/data/zone/no.txt20
-rw-r--r--icu4c/source/data/zone/or.txt35
-rw-r--r--icu4c/source/data/zone/pa.txt38
-rw-r--r--icu4c/source/data/zone/pcm.txt35
-rw-r--r--icu4c/source/data/zone/pl.txt20
-rw-r--r--icu4c/source/data/zone/ps.txt35
-rw-r--r--icu4c/source/data/zone/ps_PK.txt3
-rw-r--r--icu4c/source/data/zone/pt.txt17
-rw-r--r--icu4c/source/data/zone/pt_PT.txt8
-rw-r--r--icu4c/source/data/zone/qu.txt11
-rw-r--r--icu4c/source/data/zone/rm.txt6
-rw-r--r--icu4c/source/data/zone/ro.txt20
-rw-r--r--icu4c/source/data/zone/root.txt2
-rw-r--r--icu4c/source/data/zone/ru.txt38
-rw-r--r--icu4c/source/data/zone/sc.txt11
-rw-r--r--icu4c/source/data/zone/sd.txt35
-rw-r--r--icu4c/source/data/zone/se_FI.txt8
-rw-r--r--icu4c/source/data/zone/si.txt38
-rw-r--r--icu4c/source/data/zone/sk.txt20
-rw-r--r--icu4c/source/data/zone/sl.txt20
-rw-r--r--icu4c/source/data/zone/so.txt35
-rw-r--r--icu4c/source/data/zone/sq.txt29
-rw-r--r--icu4c/source/data/zone/sr.txt38
-rw-r--r--icu4c/source/data/zone/sr_Cyrl_BA.txt8
-rw-r--r--icu4c/source/data/zone/sr_Latn.txt38
-rw-r--r--icu4c/source/data/zone/sr_Latn_BA.txt8
-rw-r--r--icu4c/source/data/zone/sv.txt23
-rw-r--r--icu4c/source/data/zone/sw.txt14
-rw-r--r--icu4c/source/data/zone/sw_KE.txt8
-rw-r--r--icu4c/source/data/zone/syr.txt32
-rw-r--r--icu4c/source/data/zone/ta.txt38
-rw-r--r--icu4c/source/data/zone/te.txt38
-rw-r--r--icu4c/source/data/zone/th.txt38
-rw-r--r--icu4c/source/data/zone/ti.txt27
-rw-r--r--icu4c/source/data/zone/tk.txt35
-rw-r--r--icu4c/source/data/zone/to.txt20
-rw-r--r--icu4c/source/data/zone/tr.txt20
-rw-r--r--icu4c/source/data/zone/ug.txt8
-rw-r--r--icu4c/source/data/zone/uk.txt38
-rw-r--r--icu4c/source/data/zone/ur.txt38
-rw-r--r--icu4c/source/data/zone/ur_IN.txt3
-rw-r--r--icu4c/source/data/zone/uz.txt35
-rw-r--r--icu4c/source/data/zone/uz_Cyrl.txt3
-rw-r--r--icu4c/source/data/zone/vec.txt20
-rw-r--r--icu4c/source/data/zone/vi.txt17
-rw-r--r--icu4c/source/data/zone/xh.txt11
-rw-r--r--icu4c/source/data/zone/xnr.txt8
-rw-r--r--icu4c/source/data/zone/yo.txt23
-rw-r--r--icu4c/source/data/zone/yo_BJ.txt5
-rw-r--r--icu4c/source/data/zone/yrl.txt38
-rw-r--r--icu4c/source/data/zone/yue.txt38
-rw-r--r--icu4c/source/data/zone/yue_Hans.txt38
-rw-r--r--icu4c/source/data/zone/zh.txt38
-rw-r--r--icu4c/source/data/zone/zh_Hant.txt38
-rw-r--r--icu4c/source/data/zone/zh_Hant_HK.txt21
-rw-r--r--icu4c/source/data/zone/zu.txt38
-rw-r--r--icu4c/source/extra/uconv/pkgdata.inc.in1
-rw-r--r--icu4c/source/extra/uconv/uconv.cpp56
-rw-r--r--icu4c/source/extra/uconv/uconv.vcxproj1
-rw-r--r--icu4c/source/i18n/astro.cpp745
-rw-r--r--icu4c/source/i18n/astro.h295
-rw-r--r--icu4c/source/i18n/basictz.cpp1
-rw-r--r--icu4c/source/i18n/brktrans.h2
-rw-r--r--icu4c/source/i18n/buddhcal.cpp96
-rw-r--r--icu4c/source/i18n/buddhcal.h22
-rw-r--r--icu4c/source/i18n/calendar.cpp340
-rw-r--r--icu4c/source/i18n/casetrn.cpp2
-rw-r--r--icu4c/source/i18n/cecal.cpp57
-rw-r--r--icu4c/source/i18n/cecal.h21
-rw-r--r--icu4c/source/i18n/chnsecal.cpp771
-rw-r--r--icu4c/source/i18n/chnsecal.h84
-rw-r--r--icu4c/source/i18n/coll.cpp8
-rw-r--r--icu4c/source/i18n/collationbuilder.cpp4
-rw-r--r--icu4c/source/i18n/collationroot.cpp4
-rw-r--r--icu4c/source/i18n/collationruleparser.cpp17
-rw-r--r--icu4c/source/i18n/coptccal.cpp83
-rw-r--r--icu4c/source/i18n/coptccal.h17
-rw-r--r--icu4c/source/i18n/cpdtrans.cpp26
-rw-r--r--icu4c/source/i18n/cpdtrans.h2
-rw-r--r--icu4c/source/i18n/csdetect.cpp12
-rw-r--r--icu4c/source/i18n/csrmbcs.cpp4
-rw-r--r--icu4c/source/i18n/dangical.cpp65
-rw-r--r--icu4c/source/i18n/dangical.h4
-rw-r--r--icu4c/source/i18n/datefmt.cpp62
-rw-r--r--icu4c/source/i18n/dayperiodrules.cpp5
-rw-r--r--icu4c/source/i18n/decNumber.cpp5
-rw-r--r--icu4c/source/i18n/decimfmt.cpp2
-rw-r--r--icu4c/source/i18n/displayoptions.cpp2
-rw-r--r--icu4c/source/i18n/double-conversion-cached-powers.cpp8
-rw-r--r--icu4c/source/i18n/double-conversion-cached-powers.h8
-rw-r--r--icu4c/source/i18n/dtfmtsym.cpp191
-rw-r--r--icu4c/source/i18n/dtitvfmt.cpp4
-rw-r--r--icu4c/source/i18n/dtitvinf.cpp7
-rw-r--r--icu4c/source/i18n/dtptngen.cpp60
-rw-r--r--icu4c/source/i18n/dtptngen_impl.h2
-rw-r--r--icu4c/source/i18n/esctrn.cpp2
-rw-r--r--icu4c/source/i18n/ethpccal.cpp83
-rw-r--r--icu4c/source/i18n/ethpccal.h17
-rw-r--r--icu4c/source/i18n/fmtable.cpp4
-rw-r--r--icu4c/source/i18n/formatted_string_builder.cpp24
-rw-r--r--icu4c/source/i18n/formatted_string_builder.h6
-rw-r--r--icu4c/source/i18n/gender.cpp9
-rw-r--r--icu4c/source/i18n/gregocal.cpp162
-rw-r--r--icu4c/source/i18n/gregoimp.cpp31
-rw-r--r--icu4c/source/i18n/gregoimp.h85
-rw-r--r--icu4c/source/i18n/hebrwcal.cpp212
-rw-r--r--icu4c/source/i18n/hebrwcal.h30
-rw-r--r--icu4c/source/i18n/i18n.vcxproj12
-rw-r--r--icu4c/source/i18n/i18n.vcxproj.filters36
-rw-r--r--icu4c/source/i18n/i18n_uwp.vcxproj12
-rw-r--r--icu4c/source/i18n/indiancal.cpp82
-rw-r--r--icu4c/source/i18n/indiancal.h24
-rw-r--r--icu4c/source/i18n/inputext.cpp4
-rw-r--r--icu4c/source/i18n/islamcal.cpp399
-rw-r--r--icu4c/source/i18n/islamcal.h76
-rw-r--r--icu4c/source/i18n/iso8601cal.cpp9
-rw-r--r--icu4c/source/i18n/iso8601cal.h2
-rw-r--r--icu4c/source/i18n/japancal.cpp95
-rw-r--r--icu4c/source/i18n/japancal.h23
-rw-r--r--icu4c/source/i18n/listformatter.cpp18
-rw-r--r--icu4c/source/i18n/measfmt.cpp11
-rw-r--r--icu4c/source/i18n/measunit.cpp8
-rw-r--r--icu4c/source/i18n/measunit_extra.cpp16
-rw-r--r--icu4c/source/i18n/measunit_impl.h4
-rw-r--r--icu4c/source/i18n/measure.cpp2
-rw-r--r--icu4c/source/i18n/messageformat2.cpp893
-rw-r--r--icu4c/source/i18n/messageformat2_allocation.h147
-rw-r--r--icu4c/source/i18n/messageformat2_arguments.cpp59
-rw-r--r--icu4c/source/i18n/messageformat2_checker.cpp299
-rw-r--r--icu4c/source/i18n/messageformat2_checker.h97
-rw-r--r--icu4c/source/i18n/messageformat2_data_model.cpp1152
-rw-r--r--icu4c/source/i18n/messageformat2_errors.cpp290
-rw-r--r--icu4c/source/i18n/messageformat2_errors.h160
-rw-r--r--icu4c/source/i18n/messageformat2_evaluation.cpp207
-rw-r--r--icu4c/source/i18n/messageformat2_evaluation.h209
-rw-r--r--icu4c/source/i18n/messageformat2_formattable.cpp338
-rw-r--r--icu4c/source/i18n/messageformat2_formatter.cpp326
-rw-r--r--icu4c/source/i18n/messageformat2_function_registry.cpp1186
-rw-r--r--icu4c/source/i18n/messageformat2_function_registry_internal.h233
-rw-r--r--icu4c/source/i18n/messageformat2_macros.h113
-rw-r--r--icu4c/source/i18n/messageformat2_parser.cpp2279
-rw-r--r--icu4c/source/i18n/messageformat2_parser.h184
-rw-r--r--icu4c/source/i18n/messageformat2_serializer.cpp340
-rw-r--r--icu4c/source/i18n/messageformat2_serializer.h75
-rw-r--r--icu4c/source/i18n/msgfmt.cpp4
-rw-r--r--icu4c/source/i18n/name2uni.h2
-rw-r--r--icu4c/source/i18n/nfrule.cpp12
-rw-r--r--icu4c/source/i18n/nfrule.h5
-rw-r--r--icu4c/source/i18n/nfsubs.cpp50
-rw-r--r--icu4c/source/i18n/nortrans.cpp2
-rw-r--r--icu4c/source/i18n/nultrans.cpp2
-rw-r--r--icu4c/source/i18n/number_affixutils.h7
-rw-r--r--icu4c/source/i18n/number_asformat.cpp2
-rw-r--r--icu4c/source/i18n/number_asformat.h7
-rw-r--r--icu4c/source/i18n/number_capi.cpp21
-rw-r--r--icu4c/source/i18n/number_compact.cpp4
-rw-r--r--icu4c/source/i18n/number_compact.h8
-rw-r--r--icu4c/source/i18n/number_currencysymbols.cpp2
-rw-r--r--icu4c/source/i18n/number_currencysymbols.h9
-rw-r--r--icu4c/source/i18n/number_decimalquantity.cpp22
-rw-r--r--icu4c/source/i18n/number_decimalquantity.h17
-rw-r--r--icu4c/source/i18n/number_decimfmtprops.h7
-rw-r--r--icu4c/source/i18n/number_decnum.h6
-rw-r--r--icu4c/source/i18n/number_fluent.cpp28
-rw-r--r--icu4c/source/i18n/number_formatimpl.cpp13
-rw-r--r--icu4c/source/i18n/number_formatimpl.h7
-rw-r--r--icu4c/source/i18n/number_integerwidth.cpp4
-rw-r--r--icu4c/source/i18n/number_longnames.cpp4
-rw-r--r--icu4c/source/i18n/number_longnames.h7
-rw-r--r--icu4c/source/i18n/number_mapper.h12
-rw-r--r--icu4c/source/i18n/number_microprops.h7
-rw-r--r--icu4c/source/i18n/number_modifiers.cpp55
-rw-r--r--icu4c/source/i18n/number_modifiers.h15
-rw-r--r--icu4c/source/i18n/number_multiplier.cpp4
-rw-r--r--icu4c/source/i18n/number_multiplier.h9
-rw-r--r--icu4c/source/i18n/number_patternmodifier.cpp14
-rw-r--r--icu4c/source/i18n/number_patternmodifier.h8
-rw-r--r--icu4c/source/i18n/number_patternstring.cpp4
-rw-r--r--icu4c/source/i18n/number_patternstring.h7
-rw-r--r--icu4c/source/i18n/number_rounding.cpp2
-rw-r--r--icu4c/source/i18n/number_roundingutils.h6
-rw-r--r--icu4c/source/i18n/number_scientific.cpp4
-rw-r--r--icu4c/source/i18n/number_scientific.h9
-rw-r--r--icu4c/source/i18n/number_simple.cpp21
-rw-r--r--icu4c/source/i18n/number_skeletons.cpp6
-rw-r--r--icu4c/source/i18n/number_skeletons.h6
-rw-r--r--icu4c/source/i18n/number_types.h14
-rw-r--r--icu4c/source/i18n/number_usageprefs.h13
-rw-r--r--icu4c/source/i18n/number_utils.h6
-rw-r--r--icu4c/source/i18n/number_utypes.h9
-rw-r--r--icu4c/source/i18n/numparse_affixes.cpp6
-rw-r--r--icu4c/source/i18n/numparse_affixes.h13
-rw-r--r--icu4c/source/i18n/numparse_compositions.cpp6
-rw-r--r--icu4c/source/i18n/numparse_compositions.h6
-rw-r--r--icu4c/source/i18n/numparse_currency.h8
-rw-r--r--icu4c/source/i18n/numparse_decimal.cpp2
-rw-r--r--icu4c/source/i18n/numparse_decimal.h8
-rw-r--r--icu4c/source/i18n/numparse_impl.h6
-rw-r--r--icu4c/source/i18n/numparse_scientific.h9
-rw-r--r--icu4c/source/i18n/numparse_symbols.h9
-rw-r--r--icu4c/source/i18n/numparse_types.h7
-rw-r--r--icu4c/source/i18n/numparse_utils.h11
-rw-r--r--icu4c/source/i18n/numparse_validators.h9
-rw-r--r--icu4c/source/i18n/numrange_capi.cpp10
-rw-r--r--icu4c/source/i18n/numrange_fluent.cpp25
-rw-r--r--icu4c/source/i18n/numrange_impl.h9
-rw-r--r--icu4c/source/i18n/numsys.cpp1
-rw-r--r--icu4c/source/i18n/olsontz.cpp20
-rw-r--r--icu4c/source/i18n/persncal.cpp117
-rw-r--r--icu4c/source/i18n/persncal.h29
-rw-r--r--icu4c/source/i18n/pluralranges.h4
-rw-r--r--icu4c/source/i18n/plurfmt.cpp9
-rw-r--r--icu4c/source/i18n/plurrule.cpp53
-rw-r--r--icu4c/source/i18n/rbnf.cpp11
-rw-r--r--icu4c/source/i18n/rbt.cpp4
-rw-r--r--icu4c/source/i18n/rbt.h2
-rw-r--r--icu4c/source/i18n/rbt_data.cpp20
-rw-r--r--icu4c/source/i18n/rbt_pars.cpp12
-rw-r--r--icu4c/source/i18n/rbt_rule.cpp10
-rw-r--r--icu4c/source/i18n/rbt_set.cpp8
-rw-r--r--icu4c/source/i18n/rbtz.cpp4
-rw-r--r--icu4c/source/i18n/regexcmp.cpp2
-rw-r--r--icu4c/source/i18n/regexcst.h330
-rw-r--r--icu4c/source/i18n/region.cpp8
-rw-r--r--icu4c/source/i18n/reldatefmt.cpp4
-rw-r--r--icu4c/source/i18n/rematch.cpp7
-rw-r--r--icu4c/source/i18n/remtrans.cpp4
-rw-r--r--icu4c/source/i18n/repattrn.cpp8
-rw-r--r--icu4c/source/i18n/rulebasedcollator.cpp29
-rw-r--r--icu4c/source/i18n/simpletz.cpp25
-rw-r--r--icu4c/source/i18n/smpdtfmt.cpp127
-rw-r--r--icu4c/source/i18n/sources.txt11
-rw-r--r--icu4c/source/i18n/string_segment.cpp2
-rw-r--r--icu4c/source/i18n/string_segment.h2
-rw-r--r--icu4c/source/i18n/strmatch.cpp8
-rw-r--r--icu4c/source/i18n/stsearch.cpp4
-rw-r--r--icu4c/source/i18n/taiwncal.cpp119
-rw-r--r--icu4c/source/i18n/taiwncal.h21
-rw-r--r--icu4c/source/i18n/timezone.cpp207
-rw-r--r--icu4c/source/i18n/tmutfmt.cpp8
-rw-r--r--icu4c/source/i18n/translit.cpp44
-rw-r--r--icu4c/source/i18n/transreg.cpp108
-rw-r--r--icu4c/source/i18n/tridpars.cpp4
-rw-r--r--icu4c/source/i18n/tzfmt.cpp22
-rw-r--r--icu4c/source/i18n/tzgnames.cpp63
-rw-r--r--icu4c/source/i18n/tznames.cpp12
-rw-r--r--icu4c/source/i18n/tznames_impl.cpp122
-rw-r--r--icu4c/source/i18n/tznames_impl.h3
-rw-r--r--icu4c/source/i18n/tztrans.cpp24
-rw-r--r--icu4c/source/i18n/ucal.cpp34
-rw-r--r--icu4c/source/i18n/ucol_res.cpp8
-rw-r--r--icu4c/source/i18n/ucol_sit.cpp23
-rw-r--r--icu4c/source/i18n/ucsdet.cpp2
-rw-r--r--icu4c/source/i18n/udat.cpp27
-rw-r--r--icu4c/source/i18n/udateintervalformat.cpp6
-rw-r--r--icu4c/source/i18n/ulocdata.cpp19
-rw-r--r--icu4c/source/i18n/umsg.cpp14
-rw-r--r--icu4c/source/i18n/uni2name.h2
-rw-r--r--icu4c/source/i18n/unicode/calendar.h85
-rw-r--r--icu4c/source/i18n/unicode/choicfmt.h4
-rw-r--r--icu4c/source/i18n/unicode/coleitr.h4
-rw-r--r--icu4c/source/i18n/unicode/coll.h10
-rw-r--r--icu4c/source/i18n/unicode/datefmt.h13
-rw-r--r--icu4c/source/i18n/unicode/dcfmtsym.h4
-rw-r--r--icu4c/source/i18n/unicode/decimfmt.h38
-rw-r--r--icu4c/source/i18n/unicode/dtfmtsym.h8
-rw-r--r--icu4c/source/i18n/unicode/dtitvfmt.h21
-rw-r--r--icu4c/source/i18n/unicode/dtptngen.h19
-rw-r--r--icu4c/source/i18n/unicode/dtrule.h20
-rw-r--r--icu4c/source/i18n/unicode/fieldpos.h8
-rw-r--r--icu4c/source/i18n/unicode/fmtable.h23
-rw-r--r--icu4c/source/i18n/unicode/formattednumber.h4
-rw-r--r--icu4c/source/i18n/unicode/fpositer.h2
-rw-r--r--icu4c/source/i18n/unicode/gregocal.h54
-rw-r--r--icu4c/source/i18n/unicode/measfmt.h4
-rw-r--r--icu4c/source/i18n/unicode/measunit.h58
-rw-r--r--icu4c/source/i18n/unicode/measure.h4
-rw-r--r--icu4c/source/i18n/unicode/messageformat2.h399
-rw-r--r--icu4c/source/i18n/unicode/messageformat2_arguments.h138
-rw-r--r--icu4c/source/i18n/unicode/messageformat2_data_model.h3090
-rw-r--r--icu4c/source/i18n/unicode/messageformat2_data_model_names.h42
-rw-r--r--icu4c/source/i18n/unicode/messageformat2_formattable.h1017
-rw-r--r--icu4c/source/i18n/unicode/messageformat2_function_registry.h429
-rw-r--r--icu4c/source/i18n/unicode/msgfmt.h6
-rw-r--r--icu4c/source/i18n/unicode/nounit.h2
-rw-r--r--icu4c/source/i18n/unicode/numberformatter.h32
-rw-r--r--icu4c/source/i18n/unicode/numberrangeformatter.h26
-rw-r--r--icu4c/source/i18n/unicode/numfmt.h34
-rw-r--r--icu4c/source/i18n/unicode/numsys.h2
-rw-r--r--icu4c/source/i18n/unicode/plurfmt.h7
-rw-r--r--icu4c/source/i18n/unicode/plurrule.h2
-rw-r--r--icu4c/source/i18n/unicode/rbnf.h23
-rw-r--r--icu4c/source/i18n/unicode/rbtz.h12
-rw-r--r--icu4c/source/i18n/unicode/search.h14
-rw-r--r--icu4c/source/i18n/unicode/selfmt.h2
-rw-r--r--icu4c/source/i18n/unicode/simplenumberformatter.h77
-rw-r--r--icu4c/source/i18n/unicode/simpletz.h14
-rw-r--r--icu4c/source/i18n/unicode/smpdtfmt.h386
-rw-r--r--icu4c/source/i18n/unicode/sortkey.h8
-rw-r--r--icu4c/source/i18n/unicode/stsearch.h4
-rw-r--r--icu4c/source/i18n/unicode/tblcoll.h4
-rw-r--r--icu4c/source/i18n/unicode/timezone.h14
-rw-r--r--icu4c/source/i18n/unicode/tmutamt.h6
-rw-r--r--icu4c/source/i18n/unicode/tmutfmt.h4
-rw-r--r--icu4c/source/i18n/unicode/translit.h20
-rw-r--r--icu4c/source/i18n/unicode/tzfmt.h4
-rw-r--r--icu4c/source/i18n/unicode/tzrule.h26
-rw-r--r--icu4c/source/i18n/unicode/tztrans.h10
-rw-r--r--icu4c/source/i18n/unicode/ucal.h9
-rw-r--r--icu4c/source/i18n/unicode/usimplenumberformatter.h74
-rw-r--r--icu4c/source/i18n/unicode/vtzone.h8
-rw-r--r--icu4c/source/i18n/units_converter.cpp272
-rw-r--r--icu4c/source/i18n/units_converter.h21
-rw-r--r--icu4c/source/i18n/units_data.cpp32
-rw-r--r--icu4c/source/i18n/units_data.h3
-rw-r--r--icu4c/source/i18n/units_router.cpp2
-rw-r--r--icu4c/source/i18n/unum.cpp47
-rw-r--r--icu4c/source/i18n/upluralrules.cpp2
-rw-r--r--icu4c/source/i18n/uregex.cpp8
-rw-r--r--icu4c/source/i18n/usearch.cpp2
-rw-r--r--icu4c/source/i18n/uspoof.cpp101
-rw-r--r--icu4c/source/i18n/uspoof_conf.cpp1
-rw-r--r--icu4c/source/i18n/uspoof_impl.cpp2
-rw-r--r--icu4c/source/i18n/utrans.cpp10
-rw-r--r--icu4c/source/i18n/vtzone.cpp16
-rw-r--r--icu4c/source/i18n/vzone.cpp6
-rw-r--r--icu4c/source/i18n/windtfmt.cpp8
-rw-r--r--icu4c/source/i18n/winnmfmt.cpp7
-rw-r--r--icu4c/source/i18n/zrule.cpp2
-rw-r--r--icu4c/source/icudefs.mk.in2
-rw-r--r--icu4c/source/io/Android.bp41
-rw-r--r--icu4c/source/io/io.vcxproj1
-rw-r--r--icu4c/source/io/locbund.cpp8
-rw-r--r--icu4c/source/io/sprintf.cpp8
-rw-r--r--icu4c/source/io/sscanf.cpp4
-rw-r--r--icu4c/source/io/ufile.cpp20
-rw-r--r--icu4c/source/io/ufmt_cmn.cpp9
-rw-r--r--icu4c/source/io/uprintf.cpp2
-rw-r--r--icu4c/source/io/uprntf_p.cpp26
-rw-r--r--icu4c/source/io/uscanf.cpp2
-rw-r--r--icu4c/source/io/uscanf_p.cpp15
-rw-r--r--icu4c/source/io/ustream.cpp4
-rw-r--r--icu4c/source/layoutex/layoutex.vcxproj16
-rw-r--r--icu4c/source/layoutex/playout.cpp2
-rwxr-xr-xicu4c/source/runConfigureICU15
-rw-r--r--icu4c/source/samples/Makefile.in4
-rw-r--r--icu4c/source/samples/all/all.sln208
-rw-r--r--icu4c/source/samples/all/samplecheck.bat155
-rw-r--r--icu4c/source/samples/break/Android.bp49
-rw-r--r--icu4c/source/samples/break/Makefile25
-rw-r--r--icu4c/source/samples/break/break.cpp150
-rw-r--r--icu4c/source/samples/break/break.sln25
-rw-r--r--icu4c/source/samples/break/break.vcxproj153
-rw-r--r--icu4c/source/samples/break/break.vcxproj.filters25
-rw-r--r--icu4c/source/samples/break/readme.txt63
-rw-r--r--icu4c/source/samples/break/ubreak.c134
-rw-r--r--icu4c/source/samples/cal/Makefile.in78
-rw-r--r--icu4c/source/samples/cal/cal.c766
-rw-r--r--icu4c/source/samples/cal/cal.sln25
-rw-r--r--icu4c/source/samples/cal/cal.vcxproj158
-rw-r--r--icu4c/source/samples/cal/cal.vcxproj.filters30
-rw-r--r--icu4c/source/samples/cal/readme.txt61
-rw-r--r--icu4c/source/samples/cal/uprint.c80
-rw-r--r--icu4c/source/samples/cal/uprint.h30
-rw-r--r--icu4c/source/samples/case/Makefile27
-rw-r--r--icu4c/source/samples/case/case.cpp92
-rw-r--r--icu4c/source/samples/case/case.sln25
-rw-r--r--icu4c/source/samples/case/case.vcxproj152
-rw-r--r--icu4c/source/samples/case/case.vcxproj.filters25
-rw-r--r--icu4c/source/samples/case/readme.txt64
-rw-r--r--icu4c/source/samples/case/ucase.c94
-rw-r--r--icu4c/source/samples/citer/Makefile25
-rw-r--r--icu4c/source/samples/citer/citer.cpp206
-rw-r--r--icu4c/source/samples/citer/citer.vcxproj121
-rw-r--r--icu4c/source/samples/citer/citer.vcxproj.filters22
-rw-r--r--icu4c/source/samples/citer/readme.txt63
-rw-r--r--icu4c/source/samples/coll/coll.cpp12
-rw-r--r--icu4c/source/samples/csdet/Makefile25
-rw-r--r--icu4c/source/samples/csdet/csdet.c77
-rw-r--r--icu4c/source/samples/csdet/csdet.vcxproj128
-rw-r--r--icu4c/source/samples/csdet/csdet.vcxproj.filters22
-rw-r--r--icu4c/source/samples/csdet/readme.txt63
-rw-r--r--icu4c/source/samples/date/Makefile.in78
-rw-r--r--icu4c/source/samples/date/date.c357
-rw-r--r--icu4c/source/samples/date/date.sln25
-rw-r--r--icu4c/source/samples/date/date.vcxproj154
-rw-r--r--icu4c/source/samples/date/date.vcxproj.filters30
-rw-r--r--icu4c/source/samples/date/readme.txt61
-rw-r--r--icu4c/source/samples/date/uprint.c81
-rw-r--r--icu4c/source/samples/date/uprint.h30
-rw-r--r--icu4c/source/samples/datecal/Makefile27
-rw-r--r--icu4c/source/samples/datecal/cal.cpp75
-rw-r--r--icu4c/source/samples/datecal/ccal.c61
-rw-r--r--icu4c/source/samples/datefmt/Makefile23
-rw-r--r--icu4c/source/samples/datefmt/README.TXT107
-rw-r--r--icu4c/source/samples/datefmt/answers/main_0.cpp70
-rw-r--r--icu4c/source/samples/datefmt/answers/main_1.cpp68
-rw-r--r--icu4c/source/samples/datefmt/answers/main_2.cpp91
-rw-r--r--icu4c/source/samples/datefmt/answers/main_3.cpp100
-rw-r--r--icu4c/source/samples/datefmt/datefmt.sln27
-rw-r--r--icu4c/source/samples/datefmt/datefmt.vcxproj152
-rw-r--r--icu4c/source/samples/datefmt/datefmt.vcxproj.filters25
-rw-r--r--icu4c/source/samples/datefmt/main.cpp102
-rw-r--r--icu4c/source/samples/datefmt/util.cpp69
-rw-r--r--icu4c/source/samples/datefmt/util.h22
-rw-r--r--icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.cpp144
-rw-r--r--icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj140
-rw-r--r--icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters22
-rw-r--r--icu4c/source/samples/dtptngsample/dtptngsample.cpp166
-rw-r--r--icu4c/source/samples/dtptngsample/dtptngsample.vcxproj134
-rw-r--r--icu4c/source/samples/dtptngsample/dtptngsample.vcxproj.filters22
-rw-r--r--icu4c/source/samples/layout/FontMap.GDI14
-rw-r--r--icu4c/source/samples/layout/FontMap.Gnome11
-rw-r--r--icu4c/source/samples/layout/FontMap.cpp291
-rw-r--r--icu4c/source/samples/layout/FontMap.h70
-rw-r--r--icu4c/source/samples/layout/FontTableCache.cpp95
-rw-r--r--icu4c/source/samples/layout/FontTableCache.h43
-rw-r--r--icu4c/source/samples/layout/GDIFontInstance.cpp408
-rw-r--r--icu4c/source/samples/layout/GDIFontInstance.h162
-rw-r--r--icu4c/source/samples/layout/GDIFontMap.cpp43
-rw-r--r--icu4c/source/samples/layout/GDIFontMap.h42
-rw-r--r--icu4c/source/samples/layout/GDIGUISupport.cpp28
-rw-r--r--icu4c/source/samples/layout/GDIGUISupport.h34
-rw-r--r--icu4c/source/samples/layout/GUISupport.h32
-rw-r--r--icu4c/source/samples/layout/GnomeFontInstance.cpp207
-rw-r--r--icu4c/source/samples/layout/GnomeFontInstance.h172
-rw-r--r--icu4c/source/samples/layout/GnomeFontMap.cpp45
-rw-r--r--icu4c/source/samples/layout/GnomeFontMap.h42
-rw-r--r--icu4c/source/samples/layout/GnomeGUISupport.cpp43
-rw-r--r--icu4c/source/samples/layout/GnomeGUISupport.h34
-rw-r--r--icu4c/source/samples/layout/LayoutSample.rc123
-rw-r--r--icu4c/source/samples/layout/Makefile.in110
-rw-r--r--icu4c/source/samples/layout/RenderingSurface.h36
-rw-r--r--icu4c/source/samples/layout/Sample.txt1
-rw-r--r--icu4c/source/samples/layout/ScriptCompositeFontInstance.cpp109
-rw-r--r--icu4c/source/samples/layout/ScriptCompositeFontInstance.h186
-rw-r--r--icu4c/source/samples/layout/Surface.cpp33
-rw-r--r--icu4c/source/samples/layout/Surface.h17
-rw-r--r--icu4c/source/samples/layout/UnicodeReader.cpp123
-rw-r--r--icu4c/source/samples/layout/UnicodeReader.h36
-rw-r--r--icu4c/source/samples/layout/arraymem.h25
-rw-r--r--icu4c/source/samples/layout/cgnomelayout.c350
-rw-r--r--icu4c/source/samples/layout/clayout.c370
-rw-r--r--icu4c/source/samples/layout/cmaps.cpp212
-rw-r--r--icu4c/source/samples/layout/cmaps.h95
-rw-r--r--icu4c/source/samples/layout/gdiglue.cpp83
-rw-r--r--icu4c/source/samples/layout/gdiglue.h41
-rw-r--r--icu4c/source/samples/layout/gnomeglue.cpp79
-rw-r--r--icu4c/source/samples/layout/gnomeglue.h42
-rw-r--r--icu4c/source/samples/layout/gnomelayout.cpp347
-rw-r--r--icu4c/source/samples/layout/gsupport.h17
-rw-r--r--icu4c/source/samples/layout/layout.cpp364
-rw-r--r--icu4c/source/samples/layout/layout.sln25
-rw-r--r--icu4c/source/samples/layout/layout.vcxproj216
-rw-r--r--icu4c/source/samples/layout/layout.vcxproj.filters95
-rw-r--r--icu4c/source/samples/layout/paragraph.cpp289
-rw-r--r--icu4c/source/samples/layout/paragraph.h94
-rw-r--r--icu4c/source/samples/layout/pflow.c386
-rw-r--r--icu4c/source/samples/layout/pflow.h36
-rw-r--r--icu4c/source/samples/layout/readme.html164
-rw-r--r--icu4c/source/samples/layout/resource.h25
-rw-r--r--icu4c/source/samples/layout/rsurface.cpp27
-rw-r--r--icu4c/source/samples/layout/rsurface.h24
-rw-r--r--icu4c/source/samples/layout/sfnt.h225
-rw-r--r--icu4c/source/samples/layout/ucreader.cpp23
-rw-r--r--icu4c/source/samples/layout/ucreader.h22
-rw-r--r--icu4c/source/samples/legacy/Makefile88
-rw-r--r--icu4c/source/samples/legacy/README44
-rw-r--r--icu4c/source/samples/legacy/legacy.cpp116
-rw-r--r--icu4c/source/samples/legacy/legacy.sln27
-rw-r--r--icu4c/source/samples/legacy/legacy.vcxproj236
-rw-r--r--icu4c/source/samples/legacy/legacy.vcxproj.filters28
-rw-r--r--icu4c/source/samples/legacy/newcol.cpp96
-rw-r--r--icu4c/source/samples/legacy/oldcol.cpp113
-rw-r--r--icu4c/source/samples/msgfmt/Makefile25
-rw-r--r--icu4c/source/samples/msgfmt/README.TXT98
-rw-r--r--icu4c/source/samples/msgfmt/answers/main_0.cpp30
-rw-r--r--icu4c/source/samples/msgfmt/answers/main_1.cpp28
-rw-r--r--icu4c/source/samples/msgfmt/answers/main_2.cpp50
-rw-r--r--icu4c/source/samples/msgfmt/answers/main_3.cpp50
-rw-r--r--icu4c/source/samples/msgfmt/main.cpp50
-rw-r--r--icu4c/source/samples/msgfmt/msgfmt.sln25
-rw-r--r--icu4c/source/samples/msgfmt/msgfmt.vcxproj155
-rw-r--r--icu4c/source/samples/msgfmt/msgfmt.vcxproj.filters25
-rw-r--r--icu4c/source/samples/msgfmt/util.cpp69
-rw-r--r--icu4c/source/samples/msgfmt/util.h22
-rw-r--r--icu4c/source/samples/numfmt/Makefile25
-rw-r--r--icu4c/source/samples/numfmt/capi.c81
-rw-r--r--icu4c/source/samples/numfmt/main.cpp276
-rw-r--r--icu4c/source/samples/numfmt/numfmt.sln25
-rw-r--r--icu4c/source/samples/numfmt/numfmt.vcxproj160
-rw-r--r--icu4c/source/samples/numfmt/numfmt.vcxproj.filters33
-rw-r--r--icu4c/source/samples/numfmt/readme.txt64
-rw-r--r--icu4c/source/samples/numfmt/util.cpp131
-rw-r--r--icu4c/source/samples/numfmt/util.h30
-rw-r--r--icu4c/source/samples/plurfmtsample/plurfmtsample.cpp105
-rw-r--r--icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj133
-rw-r--r--icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters22
-rw-r--r--icu4c/source/samples/props/Makefile25
-rw-r--r--icu4c/source/samples/props/props.cpp74
-rw-r--r--icu4c/source/samples/props/props.sln25
-rw-r--r--icu4c/source/samples/props/props.vcxproj173
-rw-r--r--icu4c/source/samples/props/props.vcxproj.filters22
-rw-r--r--icu4c/source/samples/props/readme.txt62
-rw-r--r--icu4c/source/samples/readme.txt45
-rw-r--r--icu4c/source/samples/strsrch/strsrch.cpp14
-rw-r--r--icu4c/source/samples/translit/answers/main_1.cpp1
-rw-r--r--icu4c/source/samples/translit/answers/main_2.cpp7
-rw-r--r--icu4c/source/samples/translit/answers/main_3.cpp11
-rw-r--r--icu4c/source/samples/translit/answers/main_4.cpp11
-rw-r--r--icu4c/source/samples/translit/answers/unaccent.cpp10
-rw-r--r--icu4c/source/samples/translit/answers/unaccent.h7
-rw-r--r--icu4c/source/samples/translit/main.cpp2
-rw-r--r--icu4c/source/samples/translit/unaccent.cpp2
-rw-r--r--icu4c/source/samples/translit/util.cpp2
-rw-r--r--icu4c/source/samples/uciter8/Makefile23
-rw-r--r--icu4c/source/samples/uciter8/readme.txt76
-rw-r--r--icu4c/source/samples/uciter8/uciter8.c364
-rw-r--r--icu4c/source/samples/uciter8/uciter8.sln25
-rw-r--r--icu4c/source/samples/uciter8/uciter8.vcxproj154
-rw-r--r--icu4c/source/samples/uciter8/uciter8.vcxproj.filters30
-rw-r--r--icu4c/source/samples/uciter8/uit_len8.c562
-rw-r--r--icu4c/source/samples/uciter8/uit_len8.h35
-rw-r--r--icu4c/source/samples/ucnv/Makefile26
-rw-r--r--icu4c/source/samples/ucnv/convsamp.cpp1144
-rw-r--r--icu4c/source/samples/ucnv/data01.txt15
-rw-r--r--icu4c/source/samples/ucnv/data02.bin1
-rw-r--r--icu4c/source/samples/ucnv/data06.txt96
-rw-r--r--icu4c/source/samples/ucnv/flagcb.c292
-rw-r--r--icu4c/source/samples/ucnv/flagcb.h63
-rw-r--r--icu4c/source/samples/ucnv/readme.txt69
-rw-r--r--icu4c/source/samples/ucnv/ucnv.sln25
-rw-r--r--icu4c/source/samples/ucnv/ucnv.vcxproj154
-rw-r--r--icu4c/source/samples/ucnv/ucnv.vcxproj.filters30
-rw-r--r--icu4c/source/samples/udata/Makefile72
-rw-r--r--icu4c/source/samples/udata/reader.c135
-rw-r--r--icu4c/source/samples/udata/reader.vcxproj161
-rw-r--r--icu4c/source/samples/udata/reader.vcxproj.filters22
-rw-r--r--icu4c/source/samples/udata/readme.txt65
-rw-r--r--icu4c/source/samples/udata/udata.sln35
-rw-r--r--icu4c/source/samples/udata/writer.c114
-rw-r--r--icu4c/source/samples/udata/writer.vcxproj159
-rw-r--r--icu4c/source/samples/udata/writer.vcxproj.filters22
-rw-r--r--icu4c/source/samples/ufortune/Makefile58
-rw-r--r--icu4c/source/samples/ufortune/fortunedefs.mk43
-rw-r--r--icu4c/source/samples/ufortune/readme.txt69
-rw-r--r--icu4c/source/samples/ufortune/resources/Makefile63
-rw-r--r--icu4c/source/samples/ufortune/resources/es.txt474
-rw-r--r--icu4c/source/samples/ufortune/resources/fortune_resources.mak57
-rw-r--r--icu4c/source/samples/ufortune/resources/res-file-list.txt2
-rw-r--r--icu4c/source/samples/ufortune/resources/root.txt216
-rw-r--r--icu4c/source/samples/ufortune/ufortune.c208
-rw-r--r--icu4c/source/samples/ufortune/ufortune.sln25
-rw-r--r--icu4c/source/samples/ufortune/ufortune.vcxproj96
-rw-r--r--icu4c/source/samples/ufortune/ufortune.vcxproj.filters41
-rw-r--r--icu4c/source/samples/ugrep/ugrep.cpp13
-rw-r--r--icu4c/source/samples/uresb/Makefile80
-rw-r--r--icu4c/source/samples/uresb/en.txt49
-rw-r--r--icu4c/source/samples/uresb/readme.txt71
-rw-r--r--icu4c/source/samples/uresb/resources.mak31
-rw-r--r--icu4c/source/samples/uresb/resources.vcxproj75
-rw-r--r--icu4c/source/samples/uresb/resources.vcxproj.filters26
-rw-r--r--icu4c/source/samples/uresb/root.txt50
-rw-r--r--icu4c/source/samples/uresb/sr.txt50
-rw-r--r--icu4c/source/samples/uresb/uresb.c386
-rw-r--r--icu4c/source/samples/uresb/uresb.sln38
-rw-r--r--icu4c/source/samples/uresb/uresb.vcxproj170
-rw-r--r--icu4c/source/samples/uresb/uresb.vcxproj.filters22
-rw-r--r--icu4c/source/samples/ustring/Makefile23
-rw-r--r--icu4c/source/samples/ustring/readme.txt63
-rw-r--r--icu4c/source/samples/ustring/ustring.cpp622
-rw-r--r--icu4c/source/samples/ustring/ustring.sln25
-rw-r--r--icu4c/source/samples/ustring/ustring.vcxproj151
-rw-r--r--icu4c/source/samples/ustring/ustring.vcxproj.filters22
-rw-r--r--icu4c/source/stubdata/Android.bp1
-rw-r--r--icu4c/source/stubdata/icudt74l.datbin27997952 -> 0 bytes
-rw-r--r--icu4c/source/stubdata/icudt75l.datbin0 -> 27956416 bytes
-rw-r--r--icu4c/source/stubdata/stubdata.vcxproj1
-rw-r--r--icu4c/source/test/Android.bp1
-rw-r--r--icu4c/source/test/cintltst/callcoll.c14
-rw-r--r--icu4c/source/test/cintltst/capitst.c32
-rw-r--r--icu4c/source/test/cintltst/cbiapts.c8
-rw-r--r--icu4c/source/test/cintltst/cbiditst.c3
-rw-r--r--icu4c/source/test/cintltst/ccaltst.c42
-rw-r--r--icu4c/source/test/cintltst/ccapitst.c50
-rw-r--r--icu4c/source/test/cintltst/ccurrtst.c2
-rw-r--r--icu4c/source/test/cintltst/cdateintervalformattest.c8
-rw-r--r--icu4c/source/test/cintltst/cdattst.c29
-rw-r--r--icu4c/source/test/cintltst/cdetst.c4
-rw-r--r--icu4c/source/test/cintltst/cdtdptst.c10
-rw-r--r--icu4c/source/test/cintltst/cdtrgtst.c14
-rw-r--r--icu4c/source/test/cintltst/cestst.c4
-rw-r--r--icu4c/source/test/cintltst/cfintst.c4
-rw-r--r--icu4c/source/test/cintltst/cfrtst.c8
-rw-r--r--icu4c/source/test/cintltst/cg7coll.c10
-rw-r--r--icu4c/source/test/cintltst/chashtst.c2
-rw-r--r--icu4c/source/test/cintltst/cintltst.c6
-rw-r--r--icu4c/source/test/cintltst/cintltst.vcxproj5
-rw-r--r--icu4c/source/test/cintltst/cintltst.vcxproj.filters6
-rw-r--r--icu4c/source/test/cintltst/citertst.c22
-rw-r--r--icu4c/source/test/cintltst/cjaptst.c4
-rw-r--r--icu4c/source/test/cintltst/cloctst.c244
-rw-r--r--icu4c/source/test/cintltst/cloctst.h2
-rw-r--r--icu4c/source/test/cintltst/cnormtst.c42
-rw-r--r--icu4c/source/test/cintltst/cnumtst.c27
-rw-r--r--icu4c/source/test/cintltst/cpluralrulestest.c10
-rw-r--r--icu4c/source/test/cintltst/crelativedateformattest.c8
-rw-r--r--icu4c/source/test/cintltst/crestst.c10
-rw-r--r--icu4c/source/test/cintltst/creststn.c138
-rw-r--r--icu4c/source/test/cintltst/cstrtest.c10
-rw-r--r--icu4c/source/test/cintltst/cturtst.c4
-rw-r--r--icu4c/source/test/cintltst/cucdapi.c14
-rw-r--r--icu4c/source/test/cintltst/cucdtst.c38
-rw-r--r--icu4c/source/test/cintltst/currtest.c3
-rw-r--r--icu4c/source/test/cintltst/custrtrn.c14
-rw-r--r--icu4c/source/test/cintltst/custrtst.c20
-rw-r--r--icu4c/source/test/cintltst/encoll.c6
-rw-r--r--icu4c/source/test/cintltst/eurocreg.c2
-rw-r--r--icu4c/source/test/cintltst/hpmufn.c4
-rw-r--r--icu4c/source/test/cintltst/idnatest.c20
-rw-r--r--icu4c/source/test/cintltst/nccbtst.c12
-rw-r--r--icu4c/source/test/cintltst/ncnvtst.c20
-rw-r--r--icu4c/source/test/cintltst/nucnvtst.c82
-rw-r--r--icu4c/source/test/cintltst/reapits.c2
-rw-r--r--icu4c/source/test/cintltst/spooftest.c2
-rw-r--r--icu4c/source/test/cintltst/spreptst.c2
-rw-r--r--icu4c/source/test/cintltst/stdnmtst.c6
-rw-r--r--icu4c/source/test/cintltst/tracetst.c2
-rw-r--r--icu4c/source/test/cintltst/ucnvseltst.c8
-rw-r--r--icu4c/source/test/cintltst/udatatst.c26
-rw-r--r--icu4c/source/test/cintltst/udatpg_test.c14
-rw-r--r--icu4c/source/test/cintltst/uformattedvaluetst.c4
-rw-r--r--icu4c/source/test/cintltst/ulistfmttest.c10
-rw-r--r--icu4c/source/test/cintltst/ulocaletst.c20
-rw-r--r--icu4c/source/test/cintltst/ulocbuildertst.c64
-rw-r--r--icu4c/source/test/cintltst/unumberformattertst.c22
-rw-r--r--icu4c/source/test/cintltst/unumberrangeformattertst.c8
-rw-r--r--icu4c/source/test/cintltst/uregiontest.c16
-rw-r--r--icu4c/source/test/cintltst/usettest.c14
-rw-r--r--icu4c/source/test/cintltst/usrchdat.inc (renamed from icu4c/source/test/cintltst/usrchdat.c)0
-rw-r--r--icu4c/source/test/cintltst/usrchtst.c2
-rw-r--r--icu4c/source/test/cintltst/utf16tst.c20
-rw-r--r--icu4c/source/test/cintltst/utf8tst.c30
-rw-r--r--icu4c/source/test/cintltst/utmstest.c2
-rw-r--r--icu4c/source/test/cintltst/utransts.c20
-rw-r--r--icu4c/source/test/depstest/dependencies.txt7
-rwxr-xr-xicu4c/source/test/depstest/depstest.py17
-rw-r--r--icu4c/source/test/fuzzer/Makefile.in29
-rw-r--r--icu4c/source/test/fuzzer/break_iterator_fuzzer.cpp21
-rw-r--r--icu4c/source/test/fuzzer/calendar_fuzzer.cpp4
-rw-r--r--icu4c/source/test/fuzzer/collator_compare_fuzzer.cpp21
-rw-r--r--icu4c/source/test/fuzzer/collator_rulebased_fuzzer.cpp5
-rw-r--r--icu4c/source/test/fuzzer/date_format_fuzzer.cpp7
-rw-r--r--icu4c/source/test/fuzzer/date_time_pattern_generator_fuzzer.cpp60
-rw-r--r--icu4c/source/test/fuzzer/dtfmtsym_fuzzer.cpp75
-rw-r--r--icu4c/source/test/fuzzer/locale_util.h1
-rw-r--r--icu4c/source/test/fuzzer/normalizer2_fuzzer.cpp83
-rw-r--r--icu4c/source/test/fuzzer/number_formatter_fuzzer.cpp45
-rw-r--r--icu4c/source/test/fuzzer/plurrule_fuzzer.cpp84
-rw-r--r--icu4c/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp5
-rw-r--r--icu4c/source/test/fuzzer/rule_based_break_iterator_fuzzer.cpp26
-rw-r--r--icu4c/source/test/fuzzer/time_zone_names_fuzzer.cpp63
-rw-r--r--icu4c/source/test/fuzzer/timezone_create_fuzzer.cpp44
-rw-r--r--icu4c/source/test/fuzzer/ucasemap_fuzzer.cpp2
-rw-r--r--icu4c/source/test/fuzzer/unicodeset_fuzzer.cpp57
-rw-r--r--icu4c/source/test/fuzzer/uprop_fuzzer.cpp44
-rwxr-xr-xicu4c/source/test/hdrtst/testinternalheaders.sh14
-rw-r--r--icu4c/source/test/intltest/Makefile.in5
-rw-r--r--icu4c/source/test/intltest/aliastst.cpp8
-rw-r--r--icu4c/source/test/intltest/allcoll.cpp9
-rw-r--r--icu4c/source/test/intltest/alphaindextst.cpp2
-rw-r--r--icu4c/source/test/intltest/apicoll.cpp42
-rw-r--r--icu4c/source/test/intltest/apicoll.h1
-rw-r--r--icu4c/source/test/intltest/astrotst.cpp258
-rw-r--r--icu4c/source/test/intltest/astrotst.h7
-rw-r--r--icu4c/source/test/intltest/callimts.cpp53
-rw-r--r--icu4c/source/test/intltest/caltest.cpp388
-rw-r--r--icu4c/source/test/intltest/caltest.h20
-rw-r--r--icu4c/source/test/intltest/caltztst.cpp52
-rw-r--r--icu4c/source/test/intltest/canittst.cpp4
-rw-r--r--icu4c/source/test/intltest/citrtest.cpp5
-rw-r--r--icu4c/source/test/intltest/compactdecimalformattest.cpp3
-rw-r--r--icu4c/source/test/intltest/convtest.h4
-rw-r--r--icu4c/source/test/intltest/cpdtrtst.cpp8
-rw-r--r--icu4c/source/test/intltest/csdetest.cpp4
-rw-r--r--icu4c/source/test/intltest/dadrcal.cpp6
-rw-r--r--icu4c/source/test/intltest/dadrfmt.cpp2
-rw-r--r--icu4c/source/test/intltest/dcfmapts.cpp10
-rw-r--r--icu4c/source/test/intltest/dcfmtest.cpp2
-rw-r--r--icu4c/source/test/intltest/decoll.cpp2
-rw-r--r--icu4c/source/test/intltest/displayoptions_test.cpp2
-rw-r--r--icu4c/source/test/intltest/dtfmtrtts.cpp8
-rw-r--r--icu4c/source/test/intltest/dtfmttst.cpp81
-rw-r--r--icu4c/source/test/intltest/dtfmttst.h2
-rw-r--r--icu4c/source/test/intltest/dtifmtts.cpp16
-rw-r--r--icu4c/source/test/intltest/dtptngts.cpp4
-rw-r--r--icu4c/source/test/intltest/encoll.cpp2
-rw-r--r--icu4c/source/test/intltest/escoll.cpp2
-rw-r--r--icu4c/source/test/intltest/ficoll.cpp2
-rw-r--r--icu4c/source/test/intltest/fldset.cpp2
-rw-r--r--icu4c/source/test/intltest/formatted_string_builder_test.cpp2
-rw-r--r--icu4c/source/test/intltest/formattedvaluetest.cpp3
-rw-r--r--icu4c/source/test/intltest/frcoll.cpp2
-rw-r--r--icu4c/source/test/intltest/g7coll.cpp2
-rw-r--r--icu4c/source/test/intltest/genderinfotest.cpp3
-rw-r--r--icu4c/source/test/intltest/idnaconf.cpp1
-rw-r--r--icu4c/source/test/intltest/incaltst.cpp32
-rw-r--r--icu4c/source/test/intltest/incaltst.h2
-rw-r--r--icu4c/source/test/intltest/intltest.cpp17
-rw-r--r--icu4c/source/test/intltest/intltest.vcxproj111
-rw-r--r--icu4c/source/test/intltest/intltest.vcxproj.filters8
-rw-r--r--icu4c/source/test/intltest/itercoll.cpp2
-rw-r--r--icu4c/source/test/intltest/itformat.cpp4
-rw-r--r--icu4c/source/test/intltest/itrbnf.cpp93
-rw-r--r--icu4c/source/test/intltest/itrbnf.h6
-rw-r--r--icu4c/source/test/intltest/itspoof.cpp2
-rw-r--r--icu4c/source/test/intltest/jacoll.cpp2
-rw-r--r--icu4c/source/test/intltest/jamotest.cpp30
-rw-r--r--icu4c/source/test/intltest/lcukocol.cpp4
-rw-r--r--icu4c/source/test/intltest/listformattertest.h2
-rw-r--r--icu4c/source/test/intltest/loctest.cpp333
-rw-r--r--icu4c/source/test/intltest/loctest.h2
-rw-r--r--icu4c/source/test/intltest/measfmttest.cpp12
-rw-r--r--icu4c/source/test/intltest/messageformat2test.cpp1075
-rw-r--r--icu4c/source/test/intltest/messageformat2test.h206
-rw-r--r--icu4c/source/test/intltest/messageformat2test_builtin.cpp195
-rw-r--r--icu4c/source/test/intltest/messageformat2test_custom.cpp732
-rw-r--r--icu4c/source/test/intltest/messageformat2test_features.cpp478
-rw-r--r--icu4c/source/test/intltest/messageformat2test_fromjson.cpp1265
-rw-r--r--icu4c/source/test/intltest/messageformat2test_icu.cpp159
-rw-r--r--icu4c/source/test/intltest/messageformat2test_utils.h318
-rw-r--r--icu4c/source/test/intltest/mnkytst.cpp2
-rw-r--r--icu4c/source/test/intltest/msfmrgts.cpp4
-rw-r--r--icu4c/source/test/intltest/numbertest.h31
-rw-r--r--icu4c/source/test/intltest/numbertest_api.cpp57
-rw-r--r--icu4c/source/test/intltest/numbertest_decimalquantity.cpp8
-rw-r--r--icu4c/source/test/intltest/numbertest_parse.cpp8
-rw-r--r--icu4c/source/test/intltest/numbertest_patternstring.cpp2
-rw-r--r--icu4c/source/test/intltest/numbertest_permutation.cpp8
-rw-r--r--icu4c/source/test/intltest/numbertest_range.cpp43
-rw-r--r--icu4c/source/test/intltest/numbertest_simple.cpp151
-rw-r--r--icu4c/source/test/intltest/numfmtspectest.cpp3
-rw-r--r--icu4c/source/test/intltest/numfmtst.cpp22
-rw-r--r--icu4c/source/test/intltest/numrgts.cpp2
-rw-r--r--icu4c/source/test/intltest/pluralmaptest.cpp4
-rw-r--r--icu4c/source/test/intltest/plurfmts.cpp1
-rw-r--r--icu4c/source/test/intltest/plurults.cpp27
-rw-r--r--icu4c/source/test/intltest/plurults.h2
-rw-r--r--icu4c/source/test/intltest/quantityformattertest.cpp3
-rw-r--r--icu4c/source/test/intltest/rbbiapts.cpp30
-rw-r--r--icu4c/source/test/intltest/rbbiapts.h1
-rw-r--r--icu4c/source/test/intltest/rbbimonkeytest.cpp2
-rw-r--r--icu4c/source/test/intltest/rbbitst.cpp342
-rw-r--r--icu4c/source/test/intltest/rbbitst.h10
-rw-r--r--icu4c/source/test/intltest/regcoll.cpp22
-rw-r--r--icu4c/source/test/intltest/regcoll.h2
-rw-r--r--icu4c/source/test/intltest/reldatefmttest.cpp3
-rw-r--r--icu4c/source/test/intltest/restest.cpp2
-rw-r--r--icu4c/source/test/intltest/restsnew.cpp14
-rw-r--r--icu4c/source/test/intltest/scientificnumberformattertest.cpp3
-rw-r--r--icu4c/source/test/intltest/simpleformattertest.cpp3
-rw-r--r--icu4c/source/test/intltest/srchtest.cpp70
-rw-r--r--icu4c/source/test/intltest/static_unisets_test.cpp2
-rw-r--r--icu4c/source/test/intltest/strcase.cpp4
-rw-r--r--icu4c/source/test/intltest/string_segment_test.cpp2
-rw-r--r--icu4c/source/test/intltest/strtest.cpp7
-rw-r--r--icu4c/source/test/intltest/strtest.h2
-rw-r--r--icu4c/source/test/intltest/testidna.cpp4
-rw-r--r--icu4c/source/test/intltest/textfile.cpp18
-rw-r--r--icu4c/source/test/intltest/thcoll.cpp8
-rw-r--r--icu4c/source/test/intltest/tmsgfmt.cpp14
-rw-r--r--icu4c/source/test/intltest/transapi.cpp34
-rw-r--r--icu4c/source/test/intltest/transtst.cpp128
-rw-r--r--icu4c/source/test/intltest/transtst.h10
-rw-r--r--icu4c/source/test/intltest/trcoll.cpp2
-rw-r--r--icu4c/source/test/intltest/trnserr.cpp6
-rw-r--r--icu4c/source/test/intltest/tsdate.cpp2
-rw-r--r--icu4c/source/test/intltest/tsmthred.cpp7
-rw-r--r--icu4c/source/test/intltest/tsnmfmt.cpp8
-rw-r--r--icu4c/source/test/intltest/tstnorm.cpp4
-rw-r--r--icu4c/source/test/intltest/tstnrapi.cpp2
-rw-r--r--icu4c/source/test/intltest/tzfmttst.cpp101
-rw-r--r--icu4c/source/test/intltest/tzfmttst.h3
-rw-r--r--icu4c/source/test/intltest/tzregts.cpp3
-rw-r--r--icu4c/source/test/intltest/tzrulets.cpp4
-rw-r--r--icu4c/source/test/intltest/tztest.cpp168
-rw-r--r--icu4c/source/test/intltest/ucaconf.cpp8
-rw-r--r--icu4c/source/test/intltest/ucdtest.cpp265
-rw-r--r--icu4c/source/test/intltest/ucdtest.h3
-rw-r--r--icu4c/source/test/intltest/uchar_type_build_test.cpp197
-rw-r--r--icu4c/source/test/intltest/unifiedcachetest.cpp3
-rw-r--r--icu4c/source/test/intltest/units_data_test.cpp8
-rw-r--r--icu4c/source/test/intltest/units_test.cpp23
-rw-r--r--icu4c/source/test/intltest/usettest.cpp4
-rw-r--r--icu4c/source/test/intltest/ustrtest.cpp24
-rw-r--r--icu4c/source/test/intltest/utxttest.cpp6
-rw-r--r--icu4c/source/test/iotest/iotest.vcxproj2
-rw-r--r--icu4c/source/test/letest/FontObject.cpp10
-rw-r--r--icu4c/source/test/letest/FontObject.h2
-rw-r--r--icu4c/source/test/letest/PortableFontInstance.cpp1
-rw-r--r--icu4c/source/test/letest/SimpleFontInstance.cpp4
-rw-r--r--icu4c/source/test/letest/cletest.vcxproj2
-rw-r--r--icu4c/source/test/letest/gendata.vcxproj2
-rw-r--r--icu4c/source/test/letest/letest.cpp11
-rw-r--r--icu4c/source/test/letest/letest.vcxproj2
-rw-r--r--icu4c/source/test/letest/testdata.cpp4
-rw-r--r--icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h8
-rw-r--r--icu4c/source/test/perf/collationperf/collperf.cpp34
-rw-r--r--icu4c/source/test/perf/collperf2/collperf2.vcxproj2
-rw-r--r--icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp22
-rw-r--r--icu4c/source/test/perf/leperf/FontObject.cpp10
-rw-r--r--icu4c/source/test/perf/leperf/FontObject.h2
-rw-r--r--icu4c/source/test/perf/leperf/Makefile.in2
-rw-r--r--icu4c/source/test/perf/leperf/PortableFontInstance.cpp1
-rw-r--r--icu4c/source/test/perf/leperf/SimpleFontInstance.cpp2
-rw-r--r--icu4c/source/test/perf/leperf/cfonts.cpp4
-rw-r--r--icu4c/source/test/perf/leperf/letrperf.cpp183
-rw-r--r--icu4c/source/test/perf/leperf/xmlreader.h2
-rw-r--r--icu4c/source/test/perf/localecanperf/localecanperf.cpp10
-rw-r--r--icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj2
-rw-r--r--icu4c/source/test/perf/ubrkperf/ubrkperfold.cpp776
-rw-r--r--icu4c/source/test/perf/ubrkperf/ubrkperfold.dsp168
-rw-r--r--icu4c/source/test/perf/unisetperf/draft/bitset.cpp11
-rw-r--r--icu4c/source/test/perf/unisetperf/draft/trieset.cpp11
-rw-r--r--icu4c/source/test/perf/ustrperf/stringperf.h4
-rw-r--r--icu4c/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt4
-rw-r--r--icu4c/source/test/testdata/cldr/localeIdentifiers/localeCanonicalization.txt4
-rw-r--r--icu4c/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt5
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/_header.txt6
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/_readme.txt2
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/af.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/am.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ar.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/as.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/az.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/be.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/bg.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/bn.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/bs.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ca.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/catalog.txt23
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/chr.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/cs.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/cy.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/da.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/de.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/de_CH.txt772
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/dsb.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/el.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/en.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/en_AU.txt818
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/en_CA.txt818
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/en_GB.txt818
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/en_IN.txt818
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/es.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/es_419.txt830
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/es_MX.txt831
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/es_US.txt801
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/et.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/eu.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/fa.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/fi.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/fil.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/fr.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/fr_CA.txt831
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ga.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/gd.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/gl.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/gu.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ha.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ha_NE.txt762
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/he.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/hi.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/hi_Latn.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/hr.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/hsb.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/hu.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/hy.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/id.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ig.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/is.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/it.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ja.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/jv.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ka.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/kk.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/km.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/kn.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ko.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/kok.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ky.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/lo.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/lt.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/lv.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/mk.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ml.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/mn.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/mr.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ms.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/my.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ne.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/nl.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/nn.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/no.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/or.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/pa.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/pl.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ps.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/pt.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/pt_PT.txt814
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/qu.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ro.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ru.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sc.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sd.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/si.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sk.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sl.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/so.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sq.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sr.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sr_Cyrl_BA.txt818
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sr_Latn.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sr_Latn_BA.txt818
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sv.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sw.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/sw_KE.txt806
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ta.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/te.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/tg.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/th.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ti.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/tk.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/tr.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/uk.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/ur.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/uz.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/vi.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/wo.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/yo.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/yo_BJ.txt809
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/yue.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/yue_Hans.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/zh.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/zh_Hant.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/zh_Hant_HK.txt712
-rw-r--r--icu4c/source/test/testdata/cldr/personNameTest/zu.txt7
-rw-r--r--icu4c/source/test/testdata/cldr/units/unitLocalePreferencesTest.txt42
-rw-r--r--icu4c/source/test/testdata/cldr/units/unitPreferencesTest.txt6
-rw-r--r--icu4c/source/test/testdata/cldr/units/unitsTest.txt11
-rw-r--r--icu4c/source/test/testdata/collationtest.txt14
-rw-r--r--icu4c/source/test/testdata/out/build/ibm9027.cnvbin52532 -> 52532 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/root.resbin1780 -> 1772 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/structLocale.resbin228288 -> 228328 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/test1.cnvbin4320 -> 4320 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/test1bmp.cnvbin2448 -> 2448 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/test2.cnvbin9336 -> 9336 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/test3.cnvbin10596 -> 10596 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/test4.cnvbin10484 -> 10484 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/test4x.cnvbin792 -> 792 bytes
-rw-r--r--icu4c/source/test/testdata/out/build/test5.cnvbin7760 -> 7760 bytes
-rw-r--r--icu4c/source/test/testdata/out/testdata.datbin2974352 -> 2974384 bytes
-rw-r--r--icu4c/source/test/testdata/root.txt6
-rw-r--r--icu4c/source/test/testdata/ssearch.xml12
-rw-r--r--icu4c/source/test/testdata/structLocale.txt12
-rw-r--r--icu4c/source/test/thaitest/thaitest.cpp30
-rw-r--r--icu4c/source/tools/ctestfw/ctest.c12
-rw-r--r--icu4c/source/tools/ctestfw/ctestfw.vcxproj17
-rw-r--r--icu4c/source/tools/ctestfw/testdata.cpp12
-rw-r--r--icu4c/source/tools/ctestfw/tstdtmod.cpp4
-rw-r--r--icu4c/source/tools/ctestfw/unicode/utimer.h2
-rw-r--r--icu4c/source/tools/ctestfw/uperf.cpp4
-rw-r--r--icu4c/source/tools/escapesrc/tblgen.cpp3
-rw-r--r--icu4c/source/tools/genbrk/genbrk.cpp2
-rw-r--r--icu4c/source/tools/genbrk/genbrk.vcxproj1
-rw-r--r--icu4c/source/tools/genccode/genccode.vcxproj1
-rw-r--r--icu4c/source/tools/gencfu/gencfu.cpp2
-rw-r--r--icu4c/source/tools/gencfu/gencfu.vcxproj1
-rw-r--r--icu4c/source/tools/gencmn/gencmn.vcxproj1
-rw-r--r--icu4c/source/tools/gencnval/gencnval.c1
-rw-r--r--icu4c/source/tools/gencnval/gencnval.vcxproj1
-rw-r--r--icu4c/source/tools/gencolusb/extract_unsafe_backwards.cpp4
-rw-r--r--icu4c/source/tools/gencolusb/verify_uset.cpp3
-rw-r--r--icu4c/source/tools/gendict/gendict.cpp89
-rw-r--r--icu4c/source/tools/gendict/gendict.vcxproj1
-rw-r--r--icu4c/source/tools/gennorm2/gennorm2.vcxproj1
-rw-r--r--icu4c/source/tools/genrb/derb.cpp8
-rw-r--r--icu4c/source/tools/genrb/derb.vcxproj1
-rw-r--r--icu4c/source/tools/genrb/errmsg.c6
-rw-r--r--icu4c/source/tools/genrb/filterrb.cpp13
-rw-r--r--icu4c/source/tools/genrb/genrb.cpp10
-rw-r--r--icu4c/source/tools/genrb/genrb.vcxproj21
-rw-r--r--icu4c/source/tools/genrb/parse.cpp4
-rw-r--r--icu4c/source/tools/genrb/read.c2
-rw-r--r--icu4c/source/tools/genrb/rle.c18
-rw-r--r--icu4c/source/tools/genrb/wrtjava.cpp3
-rw-r--r--icu4c/source/tools/genrb/wrtxml.cpp2
-rwxr-xr-xicu4c/source/tools/genren/genren.pl10
-rw-r--r--icu4c/source/tools/gensprep/gensprep.vcxproj1
-rw-r--r--icu4c/source/tools/gensprep/store.c2
-rw-r--r--icu4c/source/tools/gentest/gentest.vcxproj1
-rw-r--r--icu4c/source/tools/icuexportdata/icuexportdata.vcxproj1
-rw-r--r--icu4c/source/tools/icuinfo/icuinfo.vcxproj1
-rw-r--r--icu4c/source/tools/icuinfo/testplug.vcxproj1
-rw-r--r--icu4c/source/tools/icupkg/icupkg.vcxproj1
-rw-r--r--icu4c/source/tools/icuswap/icuswap.vcxproj6
-rw-r--r--icu4c/source/tools/makeconv/makeconv.vcxproj1
-rw-r--r--icu4c/source/tools/pkgdata/pkgdata.cpp12
-rw-r--r--icu4c/source/tools/pkgdata/pkgdata.vcxproj1
-rw-r--r--icu4c/source/tools/toolutil/filestrm.cpp4
-rw-r--r--icu4c/source/tools/toolutil/ppucd.cpp65
-rw-r--r--icu4c/source/tools/toolutil/ppucd.h3
-rw-r--r--icu4c/source/tools/toolutil/swapimpl.cpp2
-rw-r--r--icu4c/source/tools/toolutil/toolutil.h2
-rw-r--r--icu4c/source/tools/toolutil/toolutil.vcxproj43
-rw-r--r--icu4c/source/tools/toolutil/udbgutil.cpp2
-rw-r--r--icu4c/source/tools/tzcode/Makefile.in3
-rw-r--r--icu4c/source/tools/tzcode/icuzdump.cpp4
-rw-r--r--icu4c/source/tools/tzcode/icuzdump.vcxproj3
-rw-r--r--icu4c/source/tools/tzcode/tz2icu.cpp35
-rw-r--r--icu4c/source/tools/tzcode/zic.c3
-rw-r--r--icu4j/APIChangeReport.html371
-rw-r--r--icu4j/Android.bp18
-rw-r--r--icu4j/coverage-exclusion.txt22
-rw-r--r--icu4j/demos/pom.xml2
-rwxr-xr-xicu4j/extract-data-files.sh15
-rw-r--r--icu4j/main/charset/pom.xml2
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/cns-11643-1992.cnvbin42928 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebcdic-xml-us.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/euc-jp-2007.cnvbin44304 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/euc-tw-2014.cnvbin298640 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/gb18030-2022.cnvbin98160 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsm-03.38-2009.cnvbin3200 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1006_P100-1995.cnvbin3472 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1025_P100-1995.cnvbin2928 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1026_P100-1995.cnvbin2944 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1047_P100-1995.cnvbin2704 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1051_P100-1995.cnvbin3376 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1089_P100-1995.cnvbin3056 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1097_P100-1995.cnvbin3504 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1098_P100-1995.cnvbin4304 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1112_P100-1995.cnvbin2960 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1122_P100-1999.cnvbin2832 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1123_P100-1995.cnvbin3024 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1124_P100-1996.cnvbin3024 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1125_P100-1997.cnvbin3872 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1129_P100-1997.cnvbin3136 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1130_P100-1997.cnvbin3136 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1131_P100-1997.cnvbin3712 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1132_P100-1998.cnvbin2848 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1133_P100-1997.cnvbin2784 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1137_P100-1999.cnvbin2912 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1140_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1141_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1142_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1143_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1144_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1145_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1146_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1147_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1148_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1149_P100-1997.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1153_P100-1999.cnvbin3040 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1154_P100-1999.cnvbin2960 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1155_P100-1999.cnvbin2928 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1156_P100-1999.cnvbin2992 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1157_P100-1999.cnvbin2864 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1158_P100-1999.cnvbin3056 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1160_P100-1999.cnvbin2864 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1162_P100-1999.cnvbin2944 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1164_P100-1999.cnvbin3168 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1168_P100-2002.cnvbin3600 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1250_P100-1995.cnvbin3200 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1251_P100-1995.cnvbin3168 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1252_P100-2000.cnvbin3248 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1253_P100-1995.cnvbin3056 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1254_P100-1995.cnvbin3264 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1255_P100-1995.cnvbin3232 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1256_P110-1997.cnvbin4208 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1257_P100-1995.cnvbin3056 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1258_P100-1997.cnvbin3408 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-12712_P100-1998.cnvbin2992 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1276_P100-1995.cnvbin3376 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1363_P110-1997.cnvbin2832 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1363_P11B-1998.cnvbin54688 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1364_P110-2007.cnvbin60464 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1371_P100-1999.cnvbin54256 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1373_P100-2002.cnvbin60384 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1375_P100-2008.cnvbin88976 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1383_P110-1999.cnvbin23072 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1386_P100-2001.cnvbin57728 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1388_P103-2001.cnvbin77840 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1390_P110-2003.cnvbin76896 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1399_P110-2003.cnvbin4272 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-16684_P110-2003.cnvbin3488 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-16804_X110-1999.cnvbin3296 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-273_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-277_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-278_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-280_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-284_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-285_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-290_P100-1995.cnvbin2672 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-297_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P120-1999.cnvbin5328 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P12A_P12A-2004_U2.cnvbin43584 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P12A_P12A-2009_U2.cnvbin43488 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-37_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-420_X120-1999.cnvbin3264 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-424_P100-1995.cnvbin2912 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-437_P100-1995.cnvbin3952 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4517_P100-2005.cnvbin3424 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4899_P100-1998.cnvbin2752 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4909_P100-1999.cnvbin2848 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4971_P100-1999.cnvbin2848 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-500_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5012_P100-1999.cnvbin2928 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5123_P100-1999.cnvbin2704 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5346_P100-1998.cnvbin3200 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5347_P100-1998.cnvbin3200 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5348_P100-1997.cnvbin3200 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5349_P100-1998.cnvbin3072 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5350_P100-1998.cnvbin3280 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5351_P100-1998.cnvbin3232 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5352_P100-1998.cnvbin4224 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5353_P100-1998.cnvbin3088 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5354_P100-1998.cnvbin3408 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5471_P100-2006.cnvbin62816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5478_P100-1995.cnvbin23216 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-720_P100-1997.cnvbin3488 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-737_P100-1997.cnvbin3712 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-775_P100-1996.cnvbin3680 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-803_P100-1999.cnvbin2592 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-813_P100-1995.cnvbin2832 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-838_P100-1995.cnvbin2784 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-8482_P100-1999.cnvbin2704 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-850_P100-1995.cnvbin3632 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-851_P100-1995.cnvbin3632 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-852_P100-1995.cnvbin3760 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-855_P100-1995.cnvbin3664 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-856_P100-1995.cnvbin3584 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-857_P100-1995.cnvbin3616 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-858_P100-1997.cnvbin3568 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-860_P100-1995.cnvbin3824 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-861_P100-1995.cnvbin3952 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-862_P100-1995.cnvbin4160 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-863_P100-1995.cnvbin3936 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-864_X110-1999.cnvbin4192 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-865_P100-1995.cnvbin3952 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-866_P100-1995.cnvbin3664 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-867_P100-1998.cnvbin4096 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-868_P100-1995.cnvbin4272 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-869_P100-1995.cnvbin3536 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-870_P100-1995.cnvbin2992 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-871_P100-1995.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-874_P100-1995.cnvbin2784 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-875_P100-1995.cnvbin2832 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-878_P100-1996.cnvbin3504 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9005_X110-2007.cnvbin2976 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-901_P100-1999.cnvbin3696 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-902_P100-1999.cnvbin3616 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9067_X100-2005.cnvbin2960 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-912_P100-1995.cnvbin3744 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-913_P100-2000.cnvbin2976 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-914_P100-1995.cnvbin2992 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-915_P100-1995.cnvbin2928 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-916_P100-1995.cnvbin2912 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-918_P100-1995.cnvbin3472 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-920_P100-1995.cnvbin2912 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-921_P100-1995.cnvbin2960 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-922_P100-1999.cnvbin3584 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-923_P100-1998.cnvbin2816 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-930_P120-1999.cnvbin38336 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-933_P110-1995.cnvbin59152 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-935_P110-1999.cnvbin29616 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-937_P110-1999.cnvbin1504 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-939_P120-1999.cnvbin6080 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-942_P12A-1999.cnvbin7920 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-943_P130-1999.cnvbin10640 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-943_P15A-2003.cnvbin35296 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9447_P100-2002.cnvbin3360 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9448_X100-2005.cnvbin4336 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9449_P100-2002.cnvbin3216 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-949_P110-1999.cnvbin2112 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-949_P11A-1999.cnvbin48416 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-950_P110-1999.cnvbin14896 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-954_P101-2007.cnvbin45152 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-964_P110-1999.cnvbin54736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-970_P110_P110-2006_U2.cnvbin23856 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-971_P100-1995.cnvbin1344 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-25546.cnvbin25136 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d1.cnvbin25552 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d2.cnvbin25040 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d3.cnvbin27952 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d4.cnvbin21408 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d5.cnvbin17424 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d6.cnvbin62544 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d7.cnvbin49824 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s1.cnvbin2240 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s2.cnvbin2480 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s3.cnvbin2848 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-t.cnvbin140896 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_10-1998.cnvbin2736 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_11-2001.cnvbin2528 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_14-1998.cnvbin2992 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-ir-165.cnvbin23216 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/jisx-212.cnvbin22896 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmb-excp.cnvbin6880 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-0_2-10.2.cnvbin3968 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-29-10.2.cnvbin3440 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-35-10.2.cnvbin3920 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-6_2-10.4.cnvbin3664 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-7_3-10.2.cnvbin3632 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-874-2000.cnvbin3584 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-936-2000.cnvbin6576 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-949-2000.cnvbin5568 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-950-2000.cnvbin11872 -> 0 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/cns-11643-1992.cnvbin0 -> 42928 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/cnvalias.icu (renamed from icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/cnvalias.icu)bin63680 -> 63680 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebcdic-xml-us.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/euc-jp-2007.cnvbin0 -> 44304 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/euc-tw-2014.cnvbin0 -> 298640 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/gb18030-2022.cnvbin0 -> 98160 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsm-03.38-2009.cnvbin0 -> 3200 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1006_P100-1995.cnvbin0 -> 3472 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1025_P100-1995.cnvbin0 -> 2928 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1026_P100-1995.cnvbin0 -> 2944 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1047_P100-1995.cnvbin0 -> 2704 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1051_P100-1995.cnvbin0 -> 3376 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1089_P100-1995.cnvbin0 -> 3056 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1097_P100-1995.cnvbin0 -> 3504 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1098_P100-1995.cnvbin0 -> 4304 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1112_P100-1995.cnvbin0 -> 2960 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1122_P100-1999.cnvbin0 -> 2832 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1123_P100-1995.cnvbin0 -> 3024 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1124_P100-1996.cnvbin0 -> 3024 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1125_P100-1997.cnvbin0 -> 3872 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1129_P100-1997.cnvbin0 -> 3136 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1130_P100-1997.cnvbin0 -> 3136 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1131_P100-1997.cnvbin0 -> 3712 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1132_P100-1998.cnvbin0 -> 2848 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1133_P100-1997.cnvbin0 -> 2784 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1137_P100-1999.cnvbin0 -> 2912 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1140_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1141_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1142_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1143_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1144_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1145_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1146_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1147_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1148_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1149_P100-1997.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1153_P100-1999.cnvbin0 -> 3040 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1154_P100-1999.cnvbin0 -> 2960 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1155_P100-1999.cnvbin0 -> 2928 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1156_P100-1999.cnvbin0 -> 2992 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1157_P100-1999.cnvbin0 -> 2864 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1158_P100-1999.cnvbin0 -> 3056 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1160_P100-1999.cnvbin0 -> 2864 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1162_P100-1999.cnvbin0 -> 2944 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1164_P100-1999.cnvbin0 -> 3168 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1168_P100-2002.cnvbin0 -> 3600 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1250_P100-1995.cnvbin0 -> 3200 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1251_P100-1995.cnvbin0 -> 3168 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1252_P100-2000.cnvbin0 -> 3248 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1253_P100-1995.cnvbin0 -> 3056 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1254_P100-1995.cnvbin0 -> 3264 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1255_P100-1995.cnvbin0 -> 3232 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1256_P110-1997.cnvbin0 -> 4208 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1257_P100-1995.cnvbin0 -> 3056 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1258_P100-1997.cnvbin0 -> 3408 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-12712_P100-1998.cnvbin0 -> 2992 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1276_P100-1995.cnvbin0 -> 3376 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1363_P110-1997.cnvbin0 -> 2832 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1363_P11B-1998.cnvbin0 -> 54688 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1364_P110-2007.cnvbin0 -> 60464 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1371_P100-1999.cnvbin0 -> 54256 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1373_P100-2002.cnvbin0 -> 60384 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1375_P100-2008.cnvbin0 -> 88976 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1383_P110-1999.cnvbin0 -> 23072 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1386_P100-2001.cnvbin0 -> 57728 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1388_P103-2001.cnvbin0 -> 77840 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1390_P110-2003.cnvbin0 -> 76896 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1399_P110-2003.cnvbin0 -> 4272 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-16684_P110-2003.cnvbin0 -> 3488 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-16804_X110-1999.cnvbin0 -> 3296 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-273_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-277_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-278_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-280_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-284_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-285_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-290_P100-1995.cnvbin0 -> 2672 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-297_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P120-1999.cnvbin0 -> 5328 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P12A_P12A-2004_U2.cnvbin0 -> 43584 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P12A_P12A-2009_U2.cnvbin0 -> 43488 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-37_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-420_X120-1999.cnvbin0 -> 3264 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-424_P100-1995.cnvbin0 -> 2912 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-437_P100-1995.cnvbin0 -> 3952 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4517_P100-2005.cnvbin0 -> 3424 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4899_P100-1998.cnvbin0 -> 2752 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4909_P100-1999.cnvbin0 -> 2848 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4971_P100-1999.cnvbin0 -> 2848 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-500_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5012_P100-1999.cnvbin0 -> 2928 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5123_P100-1999.cnvbin0 -> 2704 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5346_P100-1998.cnvbin0 -> 3200 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5347_P100-1998.cnvbin0 -> 3200 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5348_P100-1997.cnvbin0 -> 3200 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5349_P100-1998.cnvbin0 -> 3072 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5350_P100-1998.cnvbin0 -> 3280 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5351_P100-1998.cnvbin0 -> 3232 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5352_P100-1998.cnvbin0 -> 4224 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5353_P100-1998.cnvbin0 -> 3088 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5354_P100-1998.cnvbin0 -> 3408 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5471_P100-2006.cnvbin0 -> 62816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5478_P100-1995.cnvbin0 -> 23216 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-720_P100-1997.cnvbin0 -> 3488 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-737_P100-1997.cnvbin0 -> 3712 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-775_P100-1996.cnvbin0 -> 3680 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-803_P100-1999.cnvbin0 -> 2592 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-813_P100-1995.cnvbin0 -> 2832 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-838_P100-1995.cnvbin0 -> 2784 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-8482_P100-1999.cnvbin0 -> 2704 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-850_P100-1995.cnvbin0 -> 3632 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-851_P100-1995.cnvbin0 -> 3632 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-852_P100-1995.cnvbin0 -> 3760 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-855_P100-1995.cnvbin0 -> 3664 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-856_P100-1995.cnvbin0 -> 3584 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-857_P100-1995.cnvbin0 -> 3616 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-858_P100-1997.cnvbin0 -> 3568 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-860_P100-1995.cnvbin0 -> 3824 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-861_P100-1995.cnvbin0 -> 3952 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-862_P100-1995.cnvbin0 -> 4160 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-863_P100-1995.cnvbin0 -> 3936 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-864_X110-1999.cnvbin0 -> 4192 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-865_P100-1995.cnvbin0 -> 3952 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-866_P100-1995.cnvbin0 -> 3664 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-867_P100-1998.cnvbin0 -> 4096 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-868_P100-1995.cnvbin0 -> 4272 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-869_P100-1995.cnvbin0 -> 3536 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-870_P100-1995.cnvbin0 -> 2992 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-871_P100-1995.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-874_P100-1995.cnvbin0 -> 2784 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-875_P100-1995.cnvbin0 -> 2832 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-878_P100-1996.cnvbin0 -> 3504 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9005_X110-2007.cnvbin0 -> 2976 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-901_P100-1999.cnvbin0 -> 3696 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-902_P100-1999.cnvbin0 -> 3616 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9067_X100-2005.cnvbin0 -> 2960 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-912_P100-1995.cnvbin0 -> 3744 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-913_P100-2000.cnvbin0 -> 2976 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-914_P100-1995.cnvbin0 -> 2992 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-915_P100-1995.cnvbin0 -> 2928 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-916_P100-1995.cnvbin0 -> 2912 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-918_P100-1995.cnvbin0 -> 3472 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-920_P100-1995.cnvbin0 -> 2912 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-921_P100-1995.cnvbin0 -> 2960 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-922_P100-1999.cnvbin0 -> 3584 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-923_P100-1998.cnvbin0 -> 2816 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-930_P120-1999.cnvbin0 -> 38336 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-933_P110-1995.cnvbin0 -> 59152 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-935_P110-1999.cnvbin0 -> 29616 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-937_P110-1999.cnvbin0 -> 1504 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-939_P120-1999.cnvbin0 -> 6080 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-942_P12A-1999.cnvbin0 -> 7920 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-943_P130-1999.cnvbin0 -> 10640 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-943_P15A-2003.cnvbin0 -> 35296 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9447_P100-2002.cnvbin0 -> 3360 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9448_X100-2005.cnvbin0 -> 4336 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9449_P100-2002.cnvbin0 -> 3216 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-949_P110-1999.cnvbin0 -> 2112 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-949_P11A-1999.cnvbin0 -> 48416 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-950_P110-1999.cnvbin0 -> 14896 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-954_P101-2007.cnvbin0 -> 45152 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-964_P110-1999.cnvbin0 -> 54736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-970_P110_P110-2006_U2.cnvbin0 -> 23856 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-971_P100-1995.cnvbin0 -> 1344 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-25546.cnvbin0 -> 25136 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d1.cnvbin0 -> 25552 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d2.cnvbin0 -> 25040 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d3.cnvbin0 -> 27952 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d4.cnvbin0 -> 21408 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d5.cnvbin0 -> 17424 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d6.cnvbin0 -> 62544 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d7.cnvbin0 -> 49824 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s1.cnvbin0 -> 2240 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s2.cnvbin0 -> 2480 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s3.cnvbin0 -> 2848 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-t.cnvbin0 -> 140896 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_10-1998.cnvbin0 -> 2736 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_11-2001.cnvbin0 -> 2528 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_14-1998.cnvbin0 -> 2992 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-ir-165.cnvbin0 -> 23216 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/jisx-212.cnvbin0 -> 22896 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmb-excp.cnvbin0 -> 6880 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-0_2-10.2.cnvbin0 -> 3968 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-29-10.2.cnvbin0 -> 3440 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-35-10.2.cnvbin0 -> 3920 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-6_2-10.4.cnvbin0 -> 3664 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-7_3-10.2.cnvbin0 -> 3632 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-874-2000.cnvbin0 -> 3584 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-936-2000.cnvbin0 -> 6576 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-949-2000.cnvbin0 -> 5568 bytes
-rw-r--r--icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-950-2000.cnvbin0 -> 11872 bytes
-rw-r--r--icu4j/main/charset/src/test/java/com/ibm/icu/dev/test/charset/TestCharset.java14
-rw-r--r--icu4j/main/collate/pom.xml2
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/af.resbin7456 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/am.resbin496 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ar.resbin21120 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/as.resbin6928 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/az.resbin22048 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/be.resbin7072 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bg.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bn.resbin24080 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bo.resbin13264 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/br.resbin8112 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bs.resbin19744 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bs_Cyrl.resbin6768 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ca.resbin9184 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ceb.resbin8192 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/chr.resbin496 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/cs.resbin9184 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/cy.resbin10128 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/da.resbin27568 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de.resbin20736 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de_AT.resbin9600 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/dsb.resbin10432 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ee.resbin11328 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/el.resbin496 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en_US_POSIX.resbin15808 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/eo.resbin9440 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es.resbin25328 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/et.resbin10432 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fa.resbin7648 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fa_AF.resbin8720 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ff_Adlm.resbin8944 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fi.resbin33408 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fil.resbin8192 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fo.resbin27664 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fr_CA.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fy.resbin8064 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/gl.resbin16848 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/gu.resbin6688 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ha.resbin9504 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/haw.resbin11216 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/he.resbin496 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hi.resbin6688 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hr.resbin19744 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hsb.resbin9952 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hu.resbin17872 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hy.resbin6752 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ig.resbin12224 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/is.resbin23888 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ja.resbin123216 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ka.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kk.resbin7120 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kl.resbin22896 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/km.resbin8080 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kn.resbin24720 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ko.resbin261712 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kok.resbin6816 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ku.resbin10848 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ky.resbin7008 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lkt.resbin8960 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ln.resbin22080 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lo.resbin496 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lt.resbin10048 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lv.resbin9136 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mk.resbin7104 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ml.resbin7296 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mn.resbin496 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mr.resbin6864 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mt.resbin8000 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/my.resbin25856 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ne.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/no.resbin27712 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/om.resbin10160 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/or.resbin6816 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa.resbin7056 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pl.resbin10096 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ps.resbin8720 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ro.resbin8896 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/root.resbin60240 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ru.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/se.resbin28240 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/si.resbin13472 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sk.resbin24912 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sl.resbin8592 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/smn.resbin23952 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sq.resbin11344 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr.resbin6768 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn.resbin19744 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sv.resbin34528 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ta.resbin7168 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/te.resbin6672 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/th.resbin6736 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/tk.resbin10432 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/to.resbin11920 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/tr.resbin20896 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ug.resbin7360 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/uk.resbin7200 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ur.resbin7936 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/uz.resbin8496 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/vi.resbin36400 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/wo.resbin9920 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yi.resbin7456 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yo.resbin9024 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh.resbin540080 -> 0 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/af.resbin0 -> 7456 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/am.resbin0 -> 496 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ar.resbin0 -> 21104 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ar_SA.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ar_SA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ars.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ars.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/as.resbin0 -> 6928 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/az.resbin0 -> 22032 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/be.resbin0 -> 7072 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bg.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bn.resbin0 -> 24080 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bo.resbin0 -> 13264 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/br.resbin0 -> 8112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bs.resbin0 -> 19728 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bs_Cyrl.resbin0 -> 6768 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ca.resbin0 -> 9184 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ceb.resbin0 -> 8192 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/chr.resbin0 -> 496 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/cs.resbin0 -> 9184 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/cy.resbin0 -> 10128 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/da.resbin0 -> 27552 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de.resbin0 -> 20720 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de_.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de_.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de_AT.resbin0 -> 9600 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de__PHONEBOOK.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de__PHONEBOOK.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/dsb.resbin0 -> 10432 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/dz.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/dz.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ee.resbin0 -> 11328 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/el.resbin0 -> 496 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en_US.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en_US.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en_US_POSIX.resbin0 -> 15808 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/eo.resbin0 -> 9440 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es.resbin0 -> 25328 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es_.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es_.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es__TRADITIONAL.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es__TRADITIONAL.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/et.resbin0 -> 10432 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fa.resbin0 -> 7648 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fa_AF.resbin0 -> 8720 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ff.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ff.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ff_Adlm.resbin0 -> 8944 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fi.resbin0 -> 33408 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fil.resbin0 -> 8192 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fo.resbin0 -> 27648 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fr.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fr.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fr_CA.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fy.resbin0 -> 8064 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ga.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ga.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/gl.resbin0 -> 16832 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/gu.resbin0 -> 6688 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ha.resbin0 -> 9504 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/haw.resbin0 -> 11216 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/he.resbin0 -> 496 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/he_IL.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/he_IL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hi.resbin0 -> 6688 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hr.resbin0 -> 19728 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hsb.resbin0 -> 9952 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hu.resbin0 -> 17872 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hy.resbin0 -> 6752 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/id.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/id.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/id_ID.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/id_ID.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ig.resbin0 -> 12224 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/in.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/in.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/in_ID.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/in_ID.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/is.resbin0 -> 23872 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/it.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/it.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/iw.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/iw.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/iw_IL.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/iw_IL.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ja.resbin0 -> 123216 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ka.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kk.resbin0 -> 7120 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kl.resbin0 -> 22880 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/km.resbin0 -> 8080 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kn.resbin0 -> 24720 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ko.resbin0 -> 261696 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kok.resbin0 -> 6816 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ku.resbin0 -> 10848 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ky.resbin0 -> 7008 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lb.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lb.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lij.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lij.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lkt.resbin0 -> 8960 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ln.resbin0 -> 22064 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lo.resbin0 -> 496 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lt.resbin0 -> 10048 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lv.resbin0 -> 11328 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mk.resbin0 -> 7104 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ml.resbin0 -> 7296 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mn.resbin0 -> 496 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mo.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mo.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mr.resbin0 -> 6864 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ms.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ms.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mt.resbin0 -> 8000 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/my.resbin0 -> 25856 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nb.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nb.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nb_NO.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nb_NO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ne.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nl.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nl.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nn.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nn.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/no.resbin0 -> 27696 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/no_NO.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/no_NO.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/om.resbin0 -> 10160 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/or.resbin0 -> 6816 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa.resbin0 -> 7056 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_Guru.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_Guru.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_Guru_IN.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_Guru_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_IN.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pl.resbin0 -> 10096 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ps.resbin0 -> 8720 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pt.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pt.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/res_index.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/res_index.res)bin1504 -> 1504 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ro.resbin0 -> 8896 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/root.resbin0 -> 60240 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ru.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sa.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sa.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/se.resbin0 -> 28224 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_BA.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_BA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_CS.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_CS.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_YU.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_YU.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/si.resbin0 -> 13472 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sk.resbin0 -> 24896 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sl.resbin0 -> 8592 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/smn.resbin0 -> 23936 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sq.resbin0 -> 11344 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr.resbin0 -> 6768 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_BA.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_BA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_BA.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_BA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_ME.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_ME.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_RS.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_RS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn.resbin0 -> 19728 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn_BA.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn_BA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn_RS.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn_RS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_ME.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_ME.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_RS.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_RS.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sv.resbin0 -> 34528 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sw.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sw.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ta.resbin0 -> 7168 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/te.resbin0 -> 6672 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/th.resbin0 -> 6736 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/tk.resbin0 -> 10432 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/to.resbin0 -> 11920 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/tr.resbin0 -> 20880 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ucadata.icu (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ucadata.icu)bin572656 -> 572656 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ug.resbin0 -> 7360 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/uk.resbin0 -> 7200 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ur.resbin0 -> 7936 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/uz.resbin0 -> 8496 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/vi.resbin0 -> 36400 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/wae.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/wae.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/wo.resbin0 -> 9920 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/xh.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/xh.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yi.resbin0 -> 7456 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yo.resbin0 -> 9024 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_CN.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_CN.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hans.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hans.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hans_CN.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hans_CN.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hant.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hant.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh.resbin0 -> 540064 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_CN.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_CN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_HK.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_HK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans_CN.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans_CN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans_SG.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans_SG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_HK.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_HK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_MO.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_MO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_TW.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_TW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_MO.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_MO.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_SG.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_SG.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_TW.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_TW.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zu.res (renamed from icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zu.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java4
-rw-r--r--icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationMiscTest.java9
-rw-r--r--icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationRegressionTest.java23
-rw-r--r--icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationServiceTest.java6
-rw-r--r--icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java76
-rw-r--r--icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ULocaleCollationTest.java100
-rw-r--r--icu4j/main/common_tests/pom.xml8
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java4
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java10
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java9
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberFormatTest.java106
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberRegressionTests.java18
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java7
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/RbnfTest.java54
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TestMessageFormat.java60
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java18
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/message2/Mf2FeaturesTest.java142
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java50
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java17
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/CompatibilityTest.java5
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/FormatHandler.java4
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java23
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java2
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java13
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUServiceTest.java10
-rw-r--r--icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java275
-rw-r--r--icu4j/main/core/pom.xml8
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/CalendarAstronomer.java711
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/DateNumberFormat.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUResourceBundle.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUService.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleFallbackData.java8
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleIDParser.java13
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/PropsVectors.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java142
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/ZoneMeta.java120
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/BurmeseBreakEngine.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/KhmerBreakEngine.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/LaoBreakEngine.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/ThaiBreakEngine.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LSR.java111
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java588
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleDistance.java8
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleExtensions.java20
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/XLikelySubtags.java586
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantAffixModifier.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java5
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Grouper.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Modifier.java40
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/number/MutablePatternModifier.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/number/SimpleModifier.java5
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java37
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/units/MeasureUnitImpl.java14
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitPreferences.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitsConverter.java157
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/lang/UCharacter.java90
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java27
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/lang/UScript.java5
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/math/BigDecimal.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/DateTimeFormatterFactory.java406
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedMessage.java3
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedPlaceholder.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/Formatter.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/FormatterFactory.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/IdentityFormatterFactory.java5
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/InputSource.java84
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModel.java494
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModelFormatter.java601
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModelValidator.java204
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/MFFunctionRegistry.java346
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/MFParseException.java32
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/MFParser.java787
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/MFSerializer.java380
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/MessageFormatter.java184
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2DataModel.java867
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2DataModelFormatter.java280
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2FunctionRegistry.java347
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2Parser.java754
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2Serializer.java497
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/NumberFormatterFactory.java312
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/OptUtils.java20
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/PlainStringFormattedValue.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/PluralSelectorFactory.java110
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/Selector.java7
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/SelectorFactory.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/StringUtils.java142
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/StringView.java38
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/message2/TextSelectorFactory.java26
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberFormatter.java10
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberRangeFormatter.java10
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/number/NumberRangeFormatterImpl.java1
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/number/ScientificNotation.java4
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/number/UnlocalizedNumberFormatter.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/CanonicalIterator.java26
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/DateIntervalFormat.java12
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/MessageFormat.java4
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/NFRule.java19
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/NFRuleSet.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/NFSubstitution.java73
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/PersonName.java54
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/PersonNameFormatter.java52
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/RBBINode.java11
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/RBBIRuleScanner.java17
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/RBBITableBuilder.java18
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedBreakIterator.java36
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedNumberFormat.java11
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/SimpleDateFormat.java384
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/SimplePersonName.java22
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/SpoofChecker.java94
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/TimeUnitFormat.java8
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/text/UnicodeSet.java19
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/BuddhistCalendar.java11
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/Calendar.java48
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/ChineseCalendar.java19
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/CopticCalendar.java11
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/CurrencyAmount.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/GregorianCalendar.java11
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/HebrewCalendar.java16
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/IslamicCalendar.java544
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/JapaneseCalendar.java10
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/LocaleMatcher.java8
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java30
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/TimeUnitAmount.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/TimeZone.java2
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/ULocale.java116
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/util/VersionInfo.java6
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af.resbin14272 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af_NA.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af_ZA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/agq.resbin2416 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/agq_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ak.resbin2000 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ak_GH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/am.resbin12560 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/am_ET.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar.resbin23520 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_001.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_AE.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_BH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_DJ.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_DZ.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_EG.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_EH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_ER.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_IL.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_IQ.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_JO.resbin208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_KM.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_KW.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_LB.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_LY.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_MA.resbin448 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_MR.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_OM.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_PS.resbin208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_QA.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SA.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SD.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SO.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SS.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SY.resbin208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_TD.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_TN.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_XB.resbin22688 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_YE.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ars.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/as.resbin12544 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/as_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/asa.resbin1184 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/asa_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ast.resbin23808 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ast_ES.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az.resbin12080 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_AZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Cyrl.resbin2576 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Cyrl_AZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Latn_AZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bas.resbin2464 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bas_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/be.resbin17792 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/be_BY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bem.resbin1360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bem_ZM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bez.resbin2160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bez_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bg.resbin21840 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bg_BG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bgc.resbin1232 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bgc_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bho.resbin640 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bho_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/blo.resbin9072 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/blo_BJ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bm.resbin1952 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bm_ML.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn.resbin13360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn_BD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn_IN.resbin816 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo.resbin2528 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo_IN.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/br.resbin18384 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/br_FR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/jaml.resbin3488 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/root.resbin656 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brx.resbin9056 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brx_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs.resbin13328 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Cyrl.resbin9472 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Cyrl_BA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Latn_BA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca.resbin18192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_AD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_ES.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_FR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_IT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp.resbin16240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp_BD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ce.resbin8304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ce_RU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ceb.resbin3776 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ceb_PH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cgg.resbin1152 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cgg_UG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/chr.resbin13184 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/chr_US.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb.resbin2112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb_IQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb_IR.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cs.resbin18848 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cs_CZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/csw.resbin1216 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/csw_CA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cv.resbin6112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cv_RU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cy.resbin17280 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cy_GB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da.resbin13440 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da_DK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da_GL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dav.resbin1872 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dav_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de.resbin17952 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_AT.resbin656 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_BE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_CH.resbin592 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_DE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_IT.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_LI.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_LU.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dje.resbin1072 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dje_NE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/doi.resbin3008 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/doi_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dsb.resbin17280 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dsb_DE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dua.resbin2128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dua_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dyo.resbin1568 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dyo_SN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dz.resbin5920 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dz_BT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebu.resbin1808 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebu_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee.resbin9136 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee_GH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee_TG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el.resbin20080 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el_CY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el_GR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en.resbin15888 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_001.resbin3712 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_150.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AE.resbin1024 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AI.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AT.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AU.resbin1648 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BE.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BI.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BW.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BZ.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CA.resbin5472 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CC.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CH.resbin576 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CK.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CM.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CX.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DE.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DK.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ER.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FI.resbin352 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FJ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FK.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GB.resbin688 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GI.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_HK.resbin512 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ID.resbin448 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IE.resbin400 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IL.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IM.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IN.resbin2064 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IO.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_JE.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_JM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KE.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MP.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MS.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MT.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MU.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MV.resbin208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NF.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NL.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NR.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NU.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NZ.resbin560 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PK.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PN.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_RH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_RW.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SC.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SE.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SG.resbin736 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SH.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SI.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SX.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TK.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TV.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TZ.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_UG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_UM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_US.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_US_POSIX.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_WS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_XA.resbin35680 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZA.resbin496 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZW.resbin352 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eo.resbin1568 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eo_001.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es.resbin15264 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_419.resbin5360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_AR.resbin1312 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BO.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BR.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BZ.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CL.resbin1264 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CO.resbin2672 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CR.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_DO.resbin720 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_EA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_EC.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_ES.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_GQ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_GT.resbin1216 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_HN.resbin368 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_IC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_MX.resbin3696 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_NI.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PA.resbin848 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PE.resbin928 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PH.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PR.resbin416 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PY.resbin752 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_SV.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_US.resbin2480 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_UY.resbin448 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_VE.resbin992 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/et.resbin16528 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/et_EE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eu.resbin18272 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eu_ES.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ewo.resbin2448 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ewo_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa.resbin17152 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa_AF.resbin1168 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa_IR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff.resbin2048 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm.resbin55040 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_BF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GH.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GM.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_LR.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_MR.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_NE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_NG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_SL.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_SN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_CM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_GN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_BF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GH.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GM.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_LR.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_MR.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_NE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_NG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_SL.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_SN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_MR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_SN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fi.resbin24224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fi_FI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fil.resbin14304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fil_PH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo.resbin16560 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo_DK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo_FO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr.resbin20672 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BE.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BJ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CA.resbin6336 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CD.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CH.resbin1120 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CI.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CM.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_DJ.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_DZ.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_FR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GP.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_HT.resbin880 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_KM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_LU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MA.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_ML.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MR.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_NC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_NE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_PF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_PM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_RE.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_RW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SN.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SY.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TD.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TN.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_VU.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_WF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_YT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fur.resbin4032 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fur_IT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fy.resbin6704 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fy_NL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga.resbin20928 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga_GB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga_IE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gd.resbin28688 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gd_GB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gl.resbin14192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gl_ES.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw.resbin3360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_FR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_LI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gu.resbin15648 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gu_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/guz.resbin1600 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/guz_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gv.resbin1344 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gv_IM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha.resbin10848 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_GH.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_NE.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_NG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/haw.resbin1552 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/haw_US.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/he.resbin19808 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/he_IL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi.resbin23200 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_Latn.resbin10768 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_Latn_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr.resbin22928 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr_BA.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr_HR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hsb.resbin17888 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hsb_DE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hu.resbin15072 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hu_HU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hy.resbin16256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hy_AM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ia.resbin13504 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ia_001.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/icuver.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/id.resbin14608 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/id_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ie.resbin976 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ie_EE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ig.resbin7024 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ig_NG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ii.resbin6528 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ii_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/in.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/in_ID.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/is.resbin17264 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/is_IS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it.resbin14448 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_CH.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_IT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_SM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_VA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/iw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/iw_IL.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja.resbin27200 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja_JP.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja_JP_TRADITIONAL.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jgo.resbin2720 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jgo_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jmc.resbin816 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jmc_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jv.resbin11248 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jv_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ka.resbin13472 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ka_GE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kab.resbin2224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kab_DZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kam.resbin1984 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kam_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kde.resbin1936 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kde_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kea.resbin9712 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kea_CV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/keyTypeData.resbin7312 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kgp.resbin14976 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kgp_BR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/khq.resbin1072 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/khq_ML.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ki.resbin1888 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ki_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kk.resbin17232 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kk_KZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kkj.resbin1696 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kkj_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kl.resbin2160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kl_GL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kln.resbin1984 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kln_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/km.resbin12240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/km_KH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kn.resbin14992 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kn_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko.resbin70576 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_CN.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_KP.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_KR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kok.resbin11296 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kok_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks.resbin3744 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Arab_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Deva.resbin1904 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Deva_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksb.resbin1520 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksb_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksf.resbin2288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksf_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksh.resbin5664 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksh_DE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ku.resbin7856 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ku_TR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kw.resbin800 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kw_GB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv.resbin3008 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Deva.resbin1040 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Deva_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Latn_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Orya.resbin1088 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Orya_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Telu.resbin864 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Telu_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ky.resbin16528 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ky_KG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lag.resbin2128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lag_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/langInfo.resbin77280 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lb.resbin9328 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lb_LU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lg.resbin1744 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lg_UG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lij.resbin1088 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lij_IT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lkt.resbin4112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lkt_US.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmo.resbin560 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmo_IT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln.resbin2736 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_AO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lo.resbin26896 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lo_LA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc.resbin1360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc_IQ.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc_IR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lt.resbin23488 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lt_LT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lu.resbin2128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lu_CD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luo.resbin2096 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luo_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luy.resbin1344 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luy_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lv.resbin21936 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lv_LV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mai.resbin5088 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mai_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas.resbin1984 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mer.resbin1472 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mer_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/metaZones.resbin43120 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/metadata.resbin37984 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mfe.resbin1616 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mfe_MU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mg.resbin2080 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mg_MG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgh.resbin1616 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgh_MZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgo.resbin1456 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgo_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mi.resbin12320 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mi_NZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mk.resbin17824 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mk_MK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ml.resbin15104 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ml_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mn.resbin16080 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mn_MN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni.resbin2464 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_Beng.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_Beng_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mr.resbin16608 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mr_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms.resbin11520 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_BN.resbin416 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_ID.resbin592 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_MY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_SG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mt.resbin10640 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mt_MT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mua.resbin2352 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mua_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/my.resbin14016 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/my_MM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mzn.resbin2928 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mzn_IR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/naq.resbin1952 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/naq_NA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb_SJ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nd.resbin1712 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nd_ZW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds.resbin992 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds_DE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds_NL.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne.resbin10496 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne_IN.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne_NP.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl.resbin20256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_AW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_BE.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_BQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_CW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_NL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_SR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_SX.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nmg.resbin2224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nmg_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nn.resbin9808 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nn_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nnh.resbin2144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nnh_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no.resbin18208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no_NO_NY.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nqo.resbin1984 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nqo_GN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nus.resbin2176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nus_SS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nyn.resbin1152 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nyn_UG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc.resbin1088 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc_ES.resbin3200 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc_FR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om.resbin1536 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om_ET.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om_KE.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/or.resbin13200 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/or_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os.resbin3536 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os_GE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os_RU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa.resbin14384 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Arab.resbin1104 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Arab_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Guru.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Guru_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pcm.resbin10720 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pcm_NG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pl.resbin18144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pl_PL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pnames.icubin44688 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pool.resbin158544 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/prg.resbin1056 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/prg_PL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps.resbin10928 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps_AF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps_PK.resbin944 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt.resbin12704 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_AO.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_BR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_CV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_GQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_GW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_LU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_MO.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_MZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_PT.resbin9344 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_ST.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_TL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu.resbin5920 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_BO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_EC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_PE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/raj.resbin1136 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/raj_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/id.resbin1552 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/root.resbin17504 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/res_index.resbin9056 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rm.resbin3984 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rm_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rn.resbin2048 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rn_BI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro.resbin20944 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro_MD.resbin944 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro_RO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rof.resbin1744 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rof_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/root.resbin109632 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru.resbin34752 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_BY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_KG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_KZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_MD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_RU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_UA.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rw.resbin1440 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rw_RW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rwk.resbin816 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rwk_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sa.resbin2560 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sa_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sah.resbin7456 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sah_RU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/saq.resbin1856 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/saq_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat.resbin2480 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_Olck.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_Olck_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sbp.resbin1792 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sbp_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sc.resbin20864 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sc_IT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd.resbin9360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Arab_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Deva.resbin2128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Deva_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se.resbin4416 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_FI.resbin10224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_SE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/seh.resbin1440 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/seh_MZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ses.resbin976 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ses_ML.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sg.resbin2064 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sg_CF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi.resbin1552 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Latn.resbin1920 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Latn_MA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_MA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Tfng.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Tfng_MA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/si.resbin13360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/si_LK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sk.resbin19552 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sk_SK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sl.resbin19136 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sl_SI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/smn.resbin4592 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/smn_FI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sn.resbin1792 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sn_ZW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so.resbin18944 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_DJ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_ET.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_KE.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_SO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq.resbin15232 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_AL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_MK.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_XK.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr.resbin15328 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_CS.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_BA.resbin4128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_ME.resbin560 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_XK.resbin352 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn.resbin15840 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_BA.resbin3968 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_ME.resbin560 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_XK.resbin336 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_ME.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_XK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_YU.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su.resbin2400 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_ID.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_Latn_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/supplementalData.resbin243088 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv.resbin22448 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_AX.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_FI.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_SE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw.resbin12880 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_CD.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_KE.resbin1472 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_UG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr.resbin9312 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr_IQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr_SY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/szl.resbin1120 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/szl_PL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta.resbin19920 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_LK.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_MY.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_SG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/te.resbin17264 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/te_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo.resbin1728 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo_UG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tg.resbin10624 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tg_TJ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th.resbin28048 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th_TH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th_TH_TRADITIONAL.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti.resbin9136 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti_ER.resbin400 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti_ET.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tk.resbin14720 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tk_TM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tl.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tl_PH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/to.resbin13584 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/to_TO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tok.resbin1440 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tok_001.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr.resbin14304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr_CY.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr_TR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tt.resbin9040 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tt_RU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/twq.resbin960 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/twq_NE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tzm.resbin1888 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tzm_MA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ug.resbin7248 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ug_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uk.resbin25184 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uk_UA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/res_index.resbin4704 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/root.resbin4496 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/units.resbin21232 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uprops.icubin141616 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur.resbin13008 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur_IN.resbin1376 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz.resbin14640 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_AF.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Arab.resbin800 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Arab_AF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Cyrl.resbin4832 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Cyrl_UZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Latn_UZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_UZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai.resbin2064 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_LR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Latn.resbin1120 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Latn_LR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Vaii.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Vaii_LR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vec.resbin4656 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vec_IT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vi.resbin16864 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vi_VN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vmw.resbin1008 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vmw_MZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vun.resbin816 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vun_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wae.resbin4416 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wae_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wo.resbin9104 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wo_SN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xh.resbin3984 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xh_ZA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xnr.resbin3296 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xnr_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xog.resbin1712 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xog_UG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yav.resbin2288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yav_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yi.resbin3344 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yi_UA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo.resbin10048 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo_BJ.resbin5200 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo_NG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl.resbin16000 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_BR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_CO.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_VE.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue.resbin22000 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_CN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_HK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hans.resbin20288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hans_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hant.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hant_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/za.resbin864 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/za_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zgh.resbin1520 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zgh_MA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh.resbin37840 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_CN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_HK.resbin1152 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_MO.resbin992 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_SG.resbin1136 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant.resbin24576 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_HK.resbin4448 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_MO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_TW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_MO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_SG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_TW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/af.resbin16736 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/agq.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ak.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/am.resbin23776 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar.resbin26832 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar_SA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar_XB.resbin24912 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ars.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/as.resbin29040 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/asa.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ast.resbin19840 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az.resbin22736 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_AZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Cyrl.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Latn_AZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bas.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/be.resbin26720 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bem.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bez.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bg.resbin25536 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bgc.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bho.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/blo.resbin33680 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bm.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bn.resbin29552 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bo.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/br.resbin16464 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/brx.resbin27520 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs.resbin20032 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Cyrl.resbin19888 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Latn_BA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ca.resbin19344 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ccp.resbin51760 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ce.resbin19856 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ceb.resbin12336 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cgg.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/chr.resbin22288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ckb.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cs.resbin18560 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/csw.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cv.resbin22160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cy.resbin17280 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/da.resbin15888 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dav.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/de.resbin18144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/de_CH.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dje.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/doi.resbin1840 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dsb.resbin18176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dua.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dyo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dz.resbin13632 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ebu.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ee.resbin17712 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/el.resbin28928 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en.resbin3696 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_001.resbin720 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_150.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AE.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AU.resbin1088 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BW.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CA.resbin3552 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CM.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CX.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ER.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FJ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GB.resbin208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GH.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GM.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GY.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_HK.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ID.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IE.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IN.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_JE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_JM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KE.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LR.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LS.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MH.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MO.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MP.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MU.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MW.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MY.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NA.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NZ.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_RH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_RW.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SD.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SG.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SL.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SS.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SX.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SZ.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TZ.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_UG.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_WS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_XA.resbin28224 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZA.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZM.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZW.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/eo.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es.resbin16208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_419.resbin2688 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_AR.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CL.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CO.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_DO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_EC.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_GT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_HN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_MX.resbin880 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_NI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PE.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_SV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_US.resbin896 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_UY.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_VE.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/et.resbin17248 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/eu.resbin22144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ewo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fa.resbin24880 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Adlm.resbin52784 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_CM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_GN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_GN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_MR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_SN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_MR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_SN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fi.resbin18880 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fil.resbin14624 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fil_PH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fo.resbin14208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr.resbin15088 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr_CA.resbin8816 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr_GF.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fur.resbin1248 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fy.resbin17856 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ga.resbin22320 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gd.resbin20144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gl.resbin17264 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gsw.resbin3168 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gu.resbin28240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/guz.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gv.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ha.resbin15360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/haw.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/he.resbin26128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/he_IL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hi.resbin22704 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hi_Latn.resbin1328 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hr.resbin19888 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hsb.resbin17008 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hu.resbin20048 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hy.resbin31632 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ia.resbin15344 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/id.resbin12336 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/id_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ie.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ig.resbin15456 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ii.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/in.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/in_ID.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/is.resbin18592 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/it.resbin19872 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/iw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/iw_IL.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ja.resbin19360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jgo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jmc.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jv.resbin17120 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ka.resbin29616 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kam.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kde.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kea.resbin6032 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kgp.resbin28720 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/khq.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ki.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kk.resbin22992 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kkj.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kl.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kln.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/km.resbin31392 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kn.resbin29952 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ko.resbin18864 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ko_KP.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kok.resbin22400 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks.resbin27632 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Arab_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Deva.resbin1440 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksb.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksf.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksh.resbin4592 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ku.resbin21744 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv.resbin26736 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Deva.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Orya.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Telu.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ky.resbin23616 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lag.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lb.resbin16592 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lg.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lij.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lkt.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lmo.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ln.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lo.resbin29216 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lrc.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lt.resbin30464 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lu.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/luo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/luy.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lv.resbin27632 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mai.resbin19936 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mas.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mer.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mfe.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mg.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mgh.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mgo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mi.resbin17488 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mk.resbin23648 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ml.resbin32384 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mn.resbin21904 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni.resbin2112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_Beng.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_Beng_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mr.resbin24320 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ms.resbin11312 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ms_ID.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mt.resbin1184 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mua.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/my.resbin30624 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mzn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/naq.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nb.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nd.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nds.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ne.resbin24352 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ne_IN.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nl.resbin14976 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nl_SR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nmg.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nn.resbin7968 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nn_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nnh.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no.resbin13920 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no_NO_NY.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nqo.resbin3200 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nus.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nyn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/oc.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/om.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/or.resbin29472 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/os.resbin1248 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa.resbin27536 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Arab_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Guru.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Guru_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pcm.resbin26512 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pl.resbin20768 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pool.resbin116704 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/prg.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ps.resbin24544 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ps_PK.resbin1840 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt.resbin23440 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_AO.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_CV.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_GQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_GW.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_LU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_MO.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_MZ.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_PT.resbin19008 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_ST.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_TL.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu.resbin16800 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu_BO.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu_EC.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/raj.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/res_index.resbin4768 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rm.resbin4512 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ro.resbin19968 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rof.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/root.resbin896 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ru.resbin21232 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rwk.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sa.resbin1824 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sah.resbin4640 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/saq.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat.resbin2096 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_Olck.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_Olck_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sbp.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sc.resbin21360 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd.resbin26816 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Arab_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Deva.resbin1504 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Deva_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/se.resbin896 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/se_FI.resbin15008 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/seh.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ses.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sg.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_MA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Tfng.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Tfng_MA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/si.resbin29072 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sk.resbin18288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sl.resbin18576 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/smn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/so.resbin31760 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sq.resbin26512 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr.resbin22336 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_CS.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_BA.resbin13056 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_XK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn.resbin26368 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_BA.resbin16864 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_ME.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_ME.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_XK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_YU.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su.resbin1280 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_ID.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_Latn_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sv.resbin15024 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sw.resbin15968 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sw_KE.resbin7984 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/syr.resbin28624 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/szl.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta.resbin30576 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta_MY.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta_SG.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/te.resbin30192 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/teo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tg.resbin1696 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/th.resbin28096 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ti.resbin12448 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tk.resbin24064 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tl.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tl_PH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/to.resbin23376 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tok.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tr.resbin18960 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tt.resbin2080 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/twq.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tzm.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ug.resbin17264 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uk.resbin30288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ur.resbin25232 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ur_IN.resbin3728 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz.resbin22800 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_AF.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Arab.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Arab_AF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Cyrl.resbin14928 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Latn_UZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_UZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_LR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Vaii.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Vaii_LR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vec.resbin22528 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vi.resbin15920 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vmw.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vun.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/wae.resbin1568 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/wo.resbin1808 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xh.resbin2688 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xnr.resbin17152 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xog.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yav.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yi.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yo.resbin11216 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yo_BJ.resbin4992 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl.resbin32080 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl_CO.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl_VE.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue.resbin14912 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_CN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_HK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hans.resbin15472 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hans_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hant.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hant_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/za.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zgh.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh.resbin16208 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_CN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans_SG.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant.resbin14944 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_HK.resbin5264 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_MO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_TW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_MO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_SG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_TW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zu.resbin34240 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zu.resbin14144 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zu_ZA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af.resbin0 -> 14272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af_NA.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af_ZA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/agq.resbin0 -> 2416 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/agq_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ak.resbin0 -> 2000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ak_GH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/am.resbin0 -> 12560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/am_ET.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar.resbin0 -> 23520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_001.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_AE.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_BH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_DJ.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_DZ.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_EG.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_EH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_ER.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_IL.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_IQ.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_JO.resbin0 -> 208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_KM.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_KW.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_LB.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_LY.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_MA.resbin0 -> 448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_MR.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_OM.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_PS.resbin0 -> 208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_QA.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SA.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SD.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SO.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SS.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SY.resbin0 -> 208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_TD.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_TN.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_XB.resbin0 -> 22688 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_YE.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ars.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/as.resbin0 -> 12608 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/as_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/asa.resbin0 -> 1184 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/asa_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ast.resbin0 -> 23808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ast_ES.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az.resbin0 -> 12080 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_AZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Cyrl.resbin0 -> 2576 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Cyrl_AZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Latn_AZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bas.resbin0 -> 2464 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bas_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/be.resbin0 -> 17792 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/be_BY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bem.resbin0 -> 1360 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bem_ZM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bez.resbin0 -> 2160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bez_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bg.resbin0 -> 21840 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bg_BG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bgc.resbin0 -> 1232 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bgc_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bho.resbin0 -> 640 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bho_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/blo.resbin0 -> 9072 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/blo_BJ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bm.resbin0 -> 1952 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bm_ML.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn.resbin0 -> 13360 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn_BD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn_IN.resbin0 -> 816 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo.resbin0 -> 2528 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo_IN.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/br.resbin0 -> 18384 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/br_FR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/burmesedict.dict (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/burmesedict.dict)bin254448 -> 254448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/char.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/char.brk)bin13776 -> 13776 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/cjdict.dict (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/cjdict.dict)bin2007296 -> 2007296 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/de.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/de.res)bin2992 -> 2992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/el.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/el.res)bin160 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en.res)bin1776 -> 1776 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en_US.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en_US.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en_US_POSIX.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en_US_POSIX.res)bin160 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/es.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/es.res)bin2176 -> 2176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/fi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/fi.res)bin160 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/fr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/fr.res)bin1200 -> 1200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/it.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/it.res)bin688 -> 688 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ja.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ja.res)bin2784 -> 2784 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/jaml.resbin0 -> 12832 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/khmerdict.dict (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/khmerdict.dict)bin445552 -> 445552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ko.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ko.res)bin544 -> 544 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/laodict.dict (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/laodict.dict)bin162624 -> 162624 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line.brk)bin32800 -> 32800 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_cj.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_cj.brk)bin32848 -> 32848 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose.brk)bin33168 -> 33168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose_cj.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose_cj.brk)bin34608 -> 34608 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose_phrase_cj.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose_phrase_cj.brk)bin37104 -> 37104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal.brk)bin32656 -> 32656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal_cj.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal_cj.brk)bin32944 -> 32944 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal_phrase_cj.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal_phrase_cj.brk)bin35376 -> 35376 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_phrase_cj.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_phrase_cj.brk)bin35216 -> 35216 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/pt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/pt.res)bin2288 -> 2288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/res_index.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/res_index.res)bin240 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/root.resbin0 -> 656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ru.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ru.res)bin336 -> 336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sent.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sent.brk)bin19664 -> 19664 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sent_el.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sent_el.brk)bin19680 -> 19680 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sv.res)bin160 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/thaidict.dict (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/thaidict.dict)bin126144 -> 126144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/title.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/title.brk)bin12112 -> 12112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word.brk)bin22688 -> 22688 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word_POSIX.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word_POSIX.brk)bin22704 -> 22704 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word_fi_sv.brk (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word_fi_sv.brk)bin22672 -> 22672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/zh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/zh.res)bin272 -> 272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/zh_Hant.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/zh_Hant.res)bin272 -> 272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brx.resbin0 -> 9104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brx_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs.resbin0 -> 13328 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Cyrl.resbin0 -> 9472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Cyrl_BA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Latn_BA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca.resbin0 -> 18192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_AD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_ES.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_FR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_IT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp.resbin0 -> 16240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp_BD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ce.resbin0 -> 8304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ce_RU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ceb.resbin0 -> 3776 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ceb_PH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cgg.resbin0 -> 1152 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cgg_UG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/chr.resbin0 -> 13184 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/chr_US.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb.resbin0 -> 2112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb_IQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb_IR.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/confusables.cfu (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/confusables.cfu)bin45648 -> 45648 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cs.resbin0 -> 18864 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cs_CZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/csw.resbin0 -> 1216 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/csw_CA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/currencyNumericCodes.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/currencyNumericCodes.res)bin3104 -> 3104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cv.resbin0 -> 6112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cv_RU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cy.resbin0 -> 17280 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cy_GB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da.resbin0 -> 13440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da_DK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da_GL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dav.resbin0 -> 1872 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dav_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dayPeriods.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dayPeriods.res)bin19968 -> 19968 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de.resbin0 -> 17952 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_AT.resbin0 -> 656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_BE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_CH.resbin0 -> 592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_DE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_IT.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_LI.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_LU.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dje.resbin0 -> 1072 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dje_NE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/doi.resbin0 -> 3008 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/doi_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dsb.resbin0 -> 17296 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dsb_DE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dua.resbin0 -> 2128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dua_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dyo.resbin0 -> 1568 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dyo_SN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dz.resbin0 -> 5920 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dz_BT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebu.resbin0 -> 1808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebu_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee.resbin0 -> 9136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee_GH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee_TG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el.resbin0 -> 20080 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el_CY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el_GR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en.resbin0 -> 15888 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_001.resbin0 -> 3728 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_150.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AE.resbin0 -> 1024 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AI.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AT.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AU.resbin0 -> 1648 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BE.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BI.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BW.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BZ.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CA.resbin0 -> 5472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CC.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CH.resbin0 -> 576 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CK.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CM.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CX.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DE.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DK.resbin0 -> 320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ER.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FI.resbin0 -> 352 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FJ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FK.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GB.resbin0 -> 656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GI.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_HK.resbin0 -> 512 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ID.resbin0 -> 448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IE.resbin0 -> 400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IL.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IM.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IN.resbin0 -> 1968 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IO.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_JE.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_JM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KE.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MP.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MS.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MT.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MU.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MV.resbin0 -> 208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NF.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NL.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NR.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NU.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NZ.resbin0 -> 560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PK.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PN.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_RH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_RW.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SC.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SE.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SG.resbin0 -> 736 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SH.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SI.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SX.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TK.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TV.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TZ.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_UG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_UM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_US.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_US_POSIX.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_WS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_XA.resbin0 -> 35680 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZA.resbin0 -> 496 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZW.resbin0 -> 352 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eo.resbin0 -> 1568 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eo_001.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es.resbin0 -> 15264 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_419.resbin0 -> 5360 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_AR.resbin0 -> 1312 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BO.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BR.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BZ.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CL.resbin0 -> 1264 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CO.resbin0 -> 2672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CR.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_DO.resbin0 -> 720 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_EA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_EC.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_ES.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_GQ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_GT.resbin0 -> 1216 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_HN.resbin0 -> 368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_IC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_MX.resbin0 -> 3696 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_NI.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PA.resbin0 -> 848 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PE.resbin0 -> 928 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PH.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PR.resbin0 -> 416 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PY.resbin0 -> 752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_SV.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_US.resbin0 -> 2480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_UY.resbin0 -> 448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_VE.resbin0 -> 992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/et.resbin0 -> 16528 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/et_EE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eu.resbin0 -> 18272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eu_ES.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ewo.resbin0 -> 2448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ewo_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa.resbin0 -> 17152 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa_AF.resbin0 -> 1168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa_IR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff.resbin0 -> 2048 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm.resbin0 -> 55040 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_BF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GH.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GM.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_LR.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_MR.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_NE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_NG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_SL.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_SN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_CM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_GN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_BF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GH.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GM.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_LR.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_MR.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_NE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_NG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_SL.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_SN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_MR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_SN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fi.resbin0 -> 24224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fi_FI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fil.resbin0 -> 14304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fil_PH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo.resbin0 -> 16560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo_DK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo_FO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr.resbin0 -> 20672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BE.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BJ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CA.resbin0 -> 6400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CD.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CH.resbin0 -> 1120 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CI.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CM.resbin0 -> 320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_DJ.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_DZ.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_FR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GP.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_HT.resbin0 -> 880 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_KM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_LU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MA.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_ML.resbin0 -> 320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MR.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_NC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_NE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_PF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_PM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_RE.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_RW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SN.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SY.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TD.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TN.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_VU.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_WF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_YT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fur.resbin0 -> 4032 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fur_IT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fy.resbin0 -> 6704 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fy_NL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga.resbin0 -> 20928 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga_GB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga_IE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gd.resbin0 -> 28688 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gd_GB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/genderList.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/genderList.res)bin544 -> 544 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gl.resbin0 -> 14192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gl_ES.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/grammaticalFeatures.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/grammaticalFeatures.res)bin5008 -> 5008 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw.resbin0 -> 3360 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_FR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_LI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gu.resbin0 -> 15648 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gu_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/guz.resbin0 -> 1600 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/guz_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gv.resbin0 -> 1344 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gv_IM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha.resbin0 -> 10848 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_GH.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_NE.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_NG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/haw.resbin0 -> 1552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/haw_US.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/he.resbin0 -> 19888 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/he_IL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi.resbin0 -> 23200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_Latn.resbin0 -> 10768 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_Latn_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr.resbin0 -> 22928 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr_BA.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr_HR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hsb.resbin0 -> 17888 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hsb_DE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hu.resbin0 -> 15072 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hu_HU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hy.resbin0 -> 16256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hy_AM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ia.resbin0 -> 13504 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ia_001.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/icustd.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/icustd.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/icuver.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/id.resbin0 -> 14608 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/id_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ie.resbin0 -> 976 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ie_EE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ig.resbin0 -> 7024 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ig_NG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ii.resbin0 -> 6528 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ii_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/in.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/in_ID.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/is.resbin0 -> 17264 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/is_IS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it.resbin0 -> 14432 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_CH.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_IT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_SM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_VA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/iw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/iw_IL.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja.resbin0 -> 27200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja_JP.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja_JP_TRADITIONAL.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jgo.resbin0 -> 2720 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jgo_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jmc.resbin0 -> 816 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jmc_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jv.resbin0 -> 11248 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jv_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ka.resbin0 -> 13472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ka_GE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kab.resbin0 -> 2224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kab_DZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kam.resbin0 -> 1984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kam_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kde.resbin0 -> 1936 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kde_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kea.resbin0 -> 9712 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kea_CV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/keyTypeData.resbin0 -> 7328 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kgp.resbin0 -> 14976 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kgp_BR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/khq.resbin0 -> 1072 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/khq_ML.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ki.resbin0 -> 1888 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ki_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kk.resbin0 -> 17232 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kk_KZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kkj.resbin0 -> 1696 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kkj_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kl.resbin0 -> 2160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kl_GL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kln.resbin0 -> 1984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kln_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/km.resbin0 -> 12240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/km_KH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kn.resbin0 -> 14992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kn_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko.resbin0 -> 70576 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_CN.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_KP.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_KR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kok.resbin0 -> 11296 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kok_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks.resbin0 -> 3744 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Arab_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Deva.resbin0 -> 1904 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Deva_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksb.resbin0 -> 1520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksb_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksf.resbin0 -> 2288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksf_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksh.resbin0 -> 5664 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksh_DE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ku.resbin0 -> 7856 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ku_TR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kw.resbin0 -> 800 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kw_GB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv.resbin0 -> 3008 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Deva.resbin0 -> 1040 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Deva_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Latn_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Orya.resbin0 -> 1088 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Orya_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Telu.resbin0 -> 864 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Telu_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ky.resbin0 -> 16528 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ky_KG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lag.resbin0 -> 2128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lag_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/langInfo.resbin0 -> 77424 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lb.resbin0 -> 9328 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lb_LU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lg.resbin0 -> 1744 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lg_UG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lij.resbin0 -> 1088 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lij_IT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lkt.resbin0 -> 4112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lkt_US.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmo.resbin0 -> 560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmo_IT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln.resbin0 -> 2736 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_AO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lo.resbin0 -> 26896 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lo_LA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc.resbin0 -> 1360 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc_IQ.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc_IR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lt.resbin0 -> 23504 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lt_LT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lu.resbin0 -> 2128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lu_CD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luo.resbin0 -> 2096 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luo_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luy.resbin0 -> 1344 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luy_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lv.resbin0 -> 21952 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lv_LV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mai.resbin0 -> 5088 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mai_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas.resbin0 -> 1984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mer.resbin0 -> 1472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mer_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/metaZones.resbin0 -> 43008 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/metadata.resbin0 -> 38256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mfe.resbin0 -> 1616 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mfe_MU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mg.resbin0 -> 2080 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mg_MG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgh.resbin0 -> 1616 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgh_MZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgo.resbin0 -> 1456 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgo_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mi.resbin0 -> 12320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mi_NZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mk.resbin0 -> 17824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mk_MK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ml.resbin0 -> 15104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ml_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mn.resbin0 -> 16080 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mn_MN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni.resbin0 -> 2464 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_Beng.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_Beng_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mr.resbin0 -> 16608 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mr_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms.resbin0 -> 11520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_BN.resbin0 -> 416 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_ID.resbin0 -> 592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_MY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_SG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mt.resbin0 -> 10640 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mt_MT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mua.resbin0 -> 2352 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mua_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/my.resbin0 -> 14016 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/my_MM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mzn.resbin0 -> 2928 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mzn_IR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/naq.resbin0 -> 1952 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/naq_NA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb_SJ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nd.resbin0 -> 1712 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nd_ZW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds.resbin0 -> 992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds_DE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds_NL.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne.resbin0 -> 10496 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne_IN.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne_NP.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfc.nrm (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfc.nrm)bin35392 -> 35392 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc.nrm (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc.nrm)bin55120 -> 55120 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc_cf.nrm (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc_cf.nrm)bin52432 -> 52432 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc_scf.nrm (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc_scf.nrm)bin51984 -> 51984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl.resbin0 -> 20256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_AW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_BE.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_BQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_CW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_NL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_SR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_SX.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nmg.resbin0 -> 2224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nmg_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nn.resbin0 -> 9808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nn_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nnh.resbin0 -> 2144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nnh_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no.resbin0 -> 18208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no_NO_NY.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nqo.resbin0 -> 1984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nqo_GN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/numberingSystems.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/numberingSystems.res)bin6032 -> 6032 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nus.resbin0 -> 2176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nus_SS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nyn.resbin0 -> 1152 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nyn_UG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc.resbin0 -> 1088 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc_ES.resbin0 -> 3200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc_FR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om.resbin0 -> 1536 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om_ET.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om_KE.resbin0 -> 320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/or.resbin0 -> 13200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/or_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os.resbin0 -> 3536 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os_GE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os_RU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa.resbin0 -> 14384 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Arab.resbin0 -> 1104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Arab_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Guru.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Guru_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pcm.resbin0 -> 10720 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pcm_NG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pl.resbin0 -> 18144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pl_PL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pluralRanges.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pluralRanges.res)bin3520 -> 3520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/plurals.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/plurals.res)bin35840 -> 35840 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pnames.icubin0 -> 45392 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pool.resbin0 -> 158640 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/prg.resbin0 -> 1056 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/prg_PL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps.resbin0 -> 10928 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps_AF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps_PK.resbin0 -> 944 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt.resbin0 -> 12704 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_AO.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_BR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_CV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_GQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_GW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_LU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_MO.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_MZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_PT.resbin0 -> 9344 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_ST.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_TL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu.resbin0 -> 5920 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_BO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_EC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_PE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/raj.resbin0 -> 1136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/raj_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/af.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/af.res)bin3536 -> 3536 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ak.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ak.res)bin2384 -> 2384 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/am.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/am.res)bin1472 -> 1472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ar.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ar.res)bin11488 -> 11488 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ar_SA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ar_SA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ars.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ars.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/az.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/az.res)bin3232 -> 3232 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/be.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/be.res)bin13664 -> 13664 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/bg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/bg.res)bin36480 -> 36480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/bs.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/bs.res)bin2688 -> 2688 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ca.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ca.res)bin10064 -> 10064 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ccp.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ccp.res)bin1984 -> 1984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/chr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/chr.res)bin1808 -> 1808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/cs.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/cs.res)bin3776 -> 3776 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/cy.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/cy.res)bin2384 -> 2384 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/da.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/da.res)bin8224 -> 8224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/de.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/de.res)bin5728 -> 5728 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/de_CH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/de_CH.res)bin5552 -> 5552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ee.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ee.res)bin3616 -> 3616 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/el.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/el.res)bin11440 -> 11440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en.res)bin8960 -> 8960 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en_001.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en_001.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en_IN.res)bin7712 -> 7712 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/eo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/eo.res)bin1504 -> 1504 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es.res)bin8640 -> 8640 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_419.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_419.res)bin912 -> 912 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_DO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_DO.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_GT.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_GT.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_HN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_HN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_MX.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_MX.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_NI.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_NI.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_PA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_PA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_PR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_PR.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_SV.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_SV.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_US.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_US.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/et.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/et.res)bin1472 -> 1472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fa.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fa.res)bin1808 -> 1808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fa_AF.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fa_AF.res)bin1664 -> 1664 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ff.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ff.res)bin1952 -> 1952 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fi.res)bin63184 -> 63184 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fil.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fil.res)bin1936 -> 1936 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fo.res)bin2960 -> 2960 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr.res)bin7520 -> 7520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr_BE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr_BE.res)bin6784 -> 6784 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr_CH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr_CH.res)bin6800 -> 6800 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ga.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ga.res)bin9328 -> 9328 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/he.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/he.res)bin10288 -> 10288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hi.res)bin4672 -> 4672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hr.res)bin6672 -> 6672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hu.res)bin5248 -> 5248 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hy.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hy.res)bin1392 -> 1392 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/id.resbin0 -> 1664 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/in.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/in.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/is.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/is.res)bin3104 -> 3104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/it.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/it.res)bin23056 -> 23056 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/iw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/iw.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ja.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ja.res)bin2000 -> 2000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ka.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ka.res)bin2208 -> 2208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/kk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/kk.res)bin5328 -> 5328 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/kl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/kl.res)bin3040 -> 3040 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/km.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/km.res)bin1584 -> 1584 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ko.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ko.res)bin7152 -> 7152 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ky.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ky.res)bin7408 -> 7408 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lb.res)bin11296 -> 11296 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lo.res)bin1440 -> 1440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lrc.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lrc.res)bin1824 -> 1824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lt.res)bin5552 -> 5552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lv.res)bin2608 -> 2608 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/mk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/mk.res)bin2592 -> 2592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ms.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ms.res)bin1696 -> 1696 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/mt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/mt.res)bin15184 -> 15184 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/my.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/my.res)bin1456 -> 1456 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nb.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ne.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ne.res)bin5552 -> 5552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nl.res)bin4576 -> 4576 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nn.res)bin2352 -> 2352 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/no.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/no.res)bin12544 -> 12544 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pl.res)bin25184 -> 25184 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pt.res)bin9488 -> 9488 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pt_PT.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pt_PT.res)bin8976 -> 8976 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/qu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/qu.res)bin1696 -> 1696 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/res_index.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/res_index.res)bin992 -> 992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ro.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ro.res)bin2624 -> 2624 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/root.resbin0 -> 17504 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ru.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ru.res)bin53072 -> 53072 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/se.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/se.res)bin1216 -> 1216 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sh.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sk.res)bin2560 -> 2560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sl.res)bin3552 -> 3552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sq.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sq.res)bin2256 -> 2256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sr.res)bin4224 -> 4224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sr_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sr_Latn.res)bin4112 -> 4112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/su.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/su.res)bin1488 -> 1488 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sv.res)bin8240 -> 8240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sw.res)bin1792 -> 1792 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ta.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ta.res)bin2752 -> 2752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/th.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/th.res)bin1440 -> 1440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/tr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/tr.res)bin3120 -> 3120 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/uk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/uk.res)bin3424 -> 3424 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/vec.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/vec.res)bin15184 -> 15184 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/vi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/vi.res)bin2032 -> 2032 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/yue.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/yue.res)bin5344 -> 5344 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/yue_Hans.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/yue_Hans.res)bin5376 -> 5376 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh.res)bin7216 -> 7216 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_HK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_HK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant.res)bin7760 -> 7760 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_HK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_HK.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_MO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_MO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_TW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_TW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_MO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_MO.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_TW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_TW.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/res_index.resbin0 -> 9056 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3491.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3491.spp)bin20528 -> 20528 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530cs.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530cs.spp)bin13120 -> 13120 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530csci.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530csci.spp)bin19984 -> 19984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530mixp.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530mixp.spp)bin13664 -> 13664 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3722.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3722.spp)bin20736 -> 20736 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3920node.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3920node.spp)bin20736 -> 20736 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3920res.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3920res.spp)bin13728 -> 13728 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4011.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4011.spp)bin13328 -> 13328 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4013.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4013.spp)bin13744 -> 13744 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4505.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4505.spp)bin13200 -> 13200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4518.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4518.spp)bin13920 -> 13920 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4518ci.spp (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4518ci.spp)bin20784 -> 20784 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rm.resbin0 -> 3984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rm_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rn.resbin0 -> 2048 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rn_BI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro.resbin0 -> 20944 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro_MD.resbin0 -> 944 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro_RO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rof.resbin0 -> 1744 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rof_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/root.resbin0 -> 109440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru.resbin0 -> 34752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_BY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_KG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_KZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_MD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_RU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_UA.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rw.resbin0 -> 1440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rw_RW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rwk.resbin0 -> 816 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rwk_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sa.resbin0 -> 2560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sa_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sah.resbin0 -> 7456 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sah_RU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/saq.resbin0 -> 1856 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/saq_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat.resbin0 -> 2480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_Olck.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_Olck_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sbp.resbin0 -> 1792 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sbp_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sc.resbin0 -> 20832 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sc_IT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd.resbin0 -> 9360 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Arab_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Deva.resbin0 -> 2128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Deva_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se.resbin0 -> 4416 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_FI.resbin0 -> 10224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_SE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/seh.resbin0 -> 1440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/seh_MZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ses.resbin0 -> 976 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ses_ML.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sg.resbin0 -> 2064 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sg_CF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi.resbin0 -> 1552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Latn.resbin0 -> 1920 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Latn_MA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_MA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Tfng.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Tfng_MA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/si.resbin0 -> 13392 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/si_LK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sk.resbin0 -> 19552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sk_SK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sl.resbin0 -> 19136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sl_SI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/smn.resbin0 -> 4592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/smn_FI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sn.resbin0 -> 1792 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sn_ZW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so.resbin0 -> 18944 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_DJ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_ET.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_KE.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_SO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq.resbin0 -> 15232 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_AL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_MK.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_XK.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr.resbin0 -> 15328 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_CS.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_BA.resbin0 -> 4128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_ME.resbin0 -> 560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_XK.resbin0 -> 352 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn.resbin0 -> 15840 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_BA.resbin0 -> 3968 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_ME.resbin0 -> 560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_XK.resbin0 -> 336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_ME.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_XK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_YU.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su.resbin0 -> 2400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_ID.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_Latn_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/supplementalData.resbin0 -> 242704 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv.resbin0 -> 22448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_AX.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_FI.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_SE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw.resbin0 -> 12880 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_CD.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_KE.resbin0 -> 1472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_UG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr.resbin0 -> 9312 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr_IQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr_SY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/szl.resbin0 -> 1120 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/szl_PL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta.resbin0 -> 19856 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_LK.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_MY.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_SG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/te.resbin0 -> 17264 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/te_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo.resbin0 -> 1728 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo_UG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tg.resbin0 -> 10624 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tg_TJ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th.resbin0 -> 28048 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th_TH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th_TH_TRADITIONAL.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti.resbin0 -> 9136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti_ER.resbin0 -> 400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti_ET.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/timezoneTypes.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/timezoneTypes.res)bin21104 -> 21104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tk.resbin0 -> 14736 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tk_TM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tl.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tl_PH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/to.resbin0 -> 13584 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/to_TO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tok.resbin0 -> 1440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tok_001.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr.resbin0 -> 14304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr_CY.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr_TR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tt.resbin0 -> 9040 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tt_RU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/twq.resbin0 -> 960 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/twq_NE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tzm.resbin0 -> 1888 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tzm_MA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ubidi.icu (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ubidi.icu)bin27584 -> 27584 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ucase.icu (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ucase.icu)bin30480 -> 30480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uemoji.icu (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uemoji.icu)bin13312 -> 13312 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ug.resbin0 -> 7248 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ug_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uk.resbin0 -> 25184 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uk_UA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ulayout.icu (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ulayout.icu)bin13728 -> 13728 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unames.icu (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unames.icu)bin296096 -> 296096 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/af.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/af.res)bin17376 -> 17376 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/agq.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/agq.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ak.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ak.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/am.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/am.res)bin12256 -> 12256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar.res)bin24336 -> 24336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar_SA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar_SA.res)bin7504 -> 7504 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar_XB.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar_XB.res)bin33440 -> 33440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ars.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ars.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/as.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/as.res)bin17728 -> 17728 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/asa.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/asa.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ast.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ast.res)bin12784 -> 12784 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az.res)bin11152 -> 11152 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_AZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_AZ.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Cyrl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Cyrl.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Latn_AZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Latn_AZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bas.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bas.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/be.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/be.res)bin33744 -> 33744 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bem.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bem.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bez.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bez.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bg.res)bin16000 -> 16000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bgc.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bgc.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bho.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bho.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/blo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/blo.res)bin400 -> 400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bm.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bm.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bn.res)bin14896 -> 14896 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bn_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bn_IN.res)bin160 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/br.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/br.res)bin32656 -> 32656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/brx.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/brx.res)bin320 -> 320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs.res)bin10800 -> 10800 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_BA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_BA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Cyrl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Cyrl.res)bin2032 -> 2032 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Latn_BA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Latn_BA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ca.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ca.res)bin16496 -> 16496 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ccp.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ccp.res)bin15648 -> 15648 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ce.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ce.res)bin1728 -> 1728 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ceb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ceb.res)bin19824 -> 19824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cgg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cgg.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/chr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/chr.res)bin21824 -> 21824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ckb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ckb.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cs.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cs.res)bin51136 -> 51136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/csw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/csw.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cv.res)bin384 -> 384 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cy.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cy.res)bin26336 -> 26336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/da.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/da.res)bin17888 -> 17888 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dav.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dav.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/de.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/de.res)bin31776 -> 31776 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/de_CH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/de_CH.res)bin768 -> 768 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dje.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dje.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/doi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/doi.res)bin336 -> 336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dsb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dsb.res)bin18128 -> 18128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dua.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dua.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dyo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dyo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dz.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dz.res)bin336 -> 336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ebu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ebu.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ee.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ee.res)bin736 -> 736 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/el.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/el.res)bin37232 -> 37232 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en.res)bin16704 -> 16704 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_001.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_001.res)bin2880 -> 2880 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_150.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_150.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AI.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AT.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AT.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AU.res)bin2080 -> 2080 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BB.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BB.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BS.res)bin144 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BZ.res)bin144 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CA.res)bin4368 -> 4368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CC.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CX.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CX.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CY.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ER.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ER.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FI.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FJ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FJ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GB.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GB.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GD.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GD.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GI.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GY.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_HK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_HK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ID.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ID.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IL.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IN.res)bin208 -> 208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_JE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_JE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_JM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_JM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KI.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KY.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KY.res)bin144 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LC.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MT.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MT.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MV.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MV.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MY.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NF.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NF.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NH.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NL.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PW.res)bin144 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_RH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_RH.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_RW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_RW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SB.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SB.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SC.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SD.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SD.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SI.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SL.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SX.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SX.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TC.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TT.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TT.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TV.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TV.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_UG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_UG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VC.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_WS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_WS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_XA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_XA.res)bin50000 -> 50000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/eo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/eo.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es.res)bin15088 -> 15088 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_419.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_419.res)bin2176 -> 2176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_AR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_AR.res)bin464 -> 464 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CL.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CL.res)bin224 -> 224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CO.res)bin368 -> 368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_DO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_DO.res)bin304 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_EC.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_EC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_GT.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_GT.res)bin544 -> 544 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_HN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_HN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_MX.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_MX.res)bin1552 -> 1552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_NI.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_NI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PR.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PY.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PY.res)bin400 -> 400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_SV.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_SV.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_US.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_US.res)bin2368 -> 2368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_UY.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_UY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_VE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_VE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/et.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/et.res)bin20672 -> 20672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/eu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/eu.res)bin13920 -> 13920 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ewo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ewo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fa.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fa.res)bin15200 -> 15200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Adlm.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Adlm.res)bin44272 -> 44272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_CM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_CM.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_GN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_GN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_CM.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_CM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_GN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_GN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_MR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_MR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_SN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_SN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_MR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_MR.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_SN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_SN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fi.res)bin44448 -> 44448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fil.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fil.res)bin14992 -> 14992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fil_PH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fil_PH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fo.res)bin14672 -> 14672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr.res)bin24592 -> 24592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr_CA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr_CA.res)bin11712 -> 11712 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr_HT.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr_HT.res)bin432 -> 432 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fur.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fur.res)bin560 -> 560 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fy.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fy.res)bin2592 -> 2592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ga.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ga.res)bin30656 -> 30656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gd.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gd.res)bin33264 -> 33264 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gl.res)bin12176 -> 12176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gsw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gsw.res)bin368 -> 368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gu.res)bin16336 -> 16336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/guz.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/guz.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gv.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ha.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ha.res)bin27488 -> 27488 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/haw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/haw.res)bin384 -> 384 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/he.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/he.res)bin22112 -> 22112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/he_IL.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/he_IL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hi.res)bin22752 -> 22752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hi_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hi_Latn.res)bin1936 -> 1936 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hr.res)bin23472 -> 23472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hsb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hsb.res)bin19872 -> 19872 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hu.res)bin33824 -> 33824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hy.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hy.res)bin45856 -> 45856 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ia.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ia.res)bin12240 -> 12240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/id.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/id.res)bin8880 -> 8880 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/id_ID.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/id_ID.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ie.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ie.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ig.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ig.res)bin1392 -> 1392 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ii.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ii.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/in.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/in.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/in_ID.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/in_ID.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/is.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/is.res)bin33824 -> 33824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/it.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/it.res)bin18448 -> 18448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/iw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/iw.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/iw_IL.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/iw_IL.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ja.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ja.res)bin13152 -> 13152 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jgo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jgo.res)bin256 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jmc.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jmc.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jv.res)bin10128 -> 10128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ka.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ka.res)bin18400 -> 18400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kab.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kab.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kam.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kam.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kde.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kde.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kea.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kea.res)bin9552 -> 9552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kgp.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kgp.res)bin18368 -> 18368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/khq.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/khq.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ki.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ki.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kk.res)bin12752 -> 12752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kkj.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kkj.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kl.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kln.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kln.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/km.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/km.res)bin12240 -> 12240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kn.res)bin77888 -> 77888 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ko.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ko.res)bin9760 -> 9760 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kok.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kok.res)bin15392 -> 15392 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks.res)bin368 -> 368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Arab.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Arab.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Arab_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Arab_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Deva.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Deva.res)bin144 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksb.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksf.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksf.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksh.res)bin3344 -> 3344 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ku.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ku.res)bin1696 -> 1696 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kw.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Deva.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Deva.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lag.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Latn_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_Beng_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Orya.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Orya.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Telu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Telu.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ky.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ky.res)bin13360 -> 13360 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lag.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lg.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lb.res)bin6704 -> 6704 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lij.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lij.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lmo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lkt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lkt.res)bin672 -> 672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lmo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ln.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ln.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lrc.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lo.res)bin10368 -> 10368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lrc.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lu.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lt.res)bin70976 -> 70976 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/luo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/luo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/luy.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/luy.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mai.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lv.res)bin50176 -> 50176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mai.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mas.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mas.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mer.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mer.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mfe.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mfe.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mg.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mgh.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mgh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mgo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mgo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mi.res)bin5168 -> 5168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mk.res)bin13824 -> 13824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ml.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ml.res)bin33296 -> 33296 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mn.res)bin14512 -> 14512 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_Beng.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_Beng.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mua.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_Beng_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nn_NO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mr.res)bin67168 -> 67168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ms.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ms.res)bin10016 -> 10016 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mt.res)bin672 -> 672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mua.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/naq.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/my.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/my.res)bin13712 -> 13712 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mzn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mzn.res)bin3376 -> 3376 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/naq.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nd.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nb.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nb.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nd.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nmg.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nds.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nds.res)bin320 -> 320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ne.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ne.res)bin15440 -> 15440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nl.res)bin10400 -> 10400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nmg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nnh.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nn.res)bin7152 -> 7152 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nn_NO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Arab_PK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nnh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nus.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no.res)bin17312 -> 17312 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no_NO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no_NO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no_NO_NY.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no_NO_NY.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nqo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nqo.res)bin1792 -> 1792 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nus.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nyn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nyn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/om.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/oc.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/oc.res)bin272 -> 272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/om.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Guru.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/or.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/or.res)bin21120 -> 21120 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/os.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/os.res)bin512 -> 512 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa.res)bin22752 -> 22752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Arab.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Arab.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Arab_PK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Guru_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Guru.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/prg.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Guru_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_Olck_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_PK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_PK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pcm.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pcm.res)bin21104 -> 21104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pl.res)bin64672 -> 64672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pool.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pool.res)bin140768 -> 140768 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/prg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/raj.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ps.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ps.res)bin14816 -> 14816 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ps_PK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ps_PK.res)bin1136 -> 1136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt.res)bin15808 -> 15808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_AO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_AO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_CH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_CH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_CV.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_CV.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_GQ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_GQ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_GW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_GW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_LU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_LU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_MO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_MO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_MZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_MZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_PT.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_PT.res)bin4512 -> 4512 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_ST.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_ST.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_TL.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_TL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/qu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/qu.res)bin4464 -> 4464 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/raj.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/res_index.resbin0 -> 4752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rm.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rm.res)bin2000 -> 2000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rof.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ro.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ro.res)bin31552 -> 31552 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ro_MD.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ro_MD.res)bin320 -> 320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rof.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rw.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/root.resbin0 -> 4496 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ru.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ru.res)bin78912 -> 78912 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rwk.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rwk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sa.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sa.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/saq.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sah.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sah.res)bin3104 -> 3104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/saq.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_Olck.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_Olck.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sbp.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_Olck_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Arab_PK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sbp.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Arab.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sc.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sc.res)bin19664 -> 19664 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd.res)bin13280 -> 13280 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Arab.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/seh.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Arab_PK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Deva_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Deva.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Deva.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Deva_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Tfng_MA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_PK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_PK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/se.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/se.res)bin4752 -> 4752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/seh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ses.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ses.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sg.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_BA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_BA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_CS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_CS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_YU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_YU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Tfng.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_MA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_MA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Tfng.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Tfng_MA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_RS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/si.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/si.res)bin22880 -> 22880 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sk.res)bin50368 -> 50368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sl.res)bin53568 -> 53568 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/smn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/smn.res)bin384 -> 384 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/so.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/so.res)bin17216 -> 17216 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sq.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sq.res)bin13680 -> 13680 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr.res)bin28912 -> 28912 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_BA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_BA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_CS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_CS.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_BA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_BA.res)bin1424 -> 1424 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_CS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_CS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_RS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_XK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_XK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_ME.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_YU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_YU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn.res)bin18848 -> 18848 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_BA.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_BA.res)bin1440 -> 1440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_CS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_CS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_ME.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_RS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_RS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_Latn_ID.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_YU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_YU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_ME.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_ME.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_RS.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_RS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_XK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_XK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_YU.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_YU.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su.res)bin176 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_ID.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_ID.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/szl.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_Latn_ID.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Arab_AF.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sv.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sv.res)bin19872 -> 19872 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sv_FI.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sv_FI.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sw.res)bin19360 -> 19360 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sw_KE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sw_KE.res)bin1408 -> 1408 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/syr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/syr.res)bin13312 -> 13312 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/szl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/teo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ta.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ta.res)bin61168 -> 61168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/te.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/te.res)bin27808 -> 27808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/teo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tg.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tg.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tok.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/th.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/th.res)bin17920 -> 17920 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ti.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ti.res)bin512 -> 512 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tk.res)bin13440 -> 13440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tl.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tl_PH.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tl_PH.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/to.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/to.res)bin24048 -> 24048 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tok.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tt.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tr.res)bin11008 -> 11008 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tt.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/twq.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/twq.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tzm.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tzm.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ug.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ug.res)bin3216 -> 3216 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uk.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uk.res)bin75072 -> 75072 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ur.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ur.res)bin15616 -> 15616 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ur_IN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ur_IN.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz.res)bin10896 -> 10896 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_AF.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_AF.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Arab.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Arab.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Arab_AF.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Latn_UZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Cyrl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Cyrl.res)bin912 -> 912 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Latn_UZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Vaii_LR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_UZ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_UZ.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Vaii.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_LR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_LR.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Latn.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Vaii.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vmw.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Vaii_LR.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hans_CN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vec.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vec.res)bin176 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vi.res)bin8752 -> 8752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vmw.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vun.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vun.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xog.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/wae.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/wae.res)bin480 -> 480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/wo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/wo.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xh.res)bin176 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xnr.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xnr.res)bin224 -> 224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xog.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yav.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yav.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yi.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yi.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hant.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yo.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yo.res)bin6592 -> 6592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yo_BJ.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yo_BJ.res)bin3168 -> 3168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl.res)bin18528 -> 18528 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl_CO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl_CO.res)bin496 -> 496 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl_VE.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl_VE.res)bin496 -> 496 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue.res)bin6352 -> 6352 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_CN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_CN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_HK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_HK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hans.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hans.res)bin7280 -> 7280 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hans_CN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hant_HK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hant.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/za.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hant_HK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_CN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/za.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zgh.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zgh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh.res)bin9232 -> 9232 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_CN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_CN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_HK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_HK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_CN.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_TW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_HK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_HK.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_MO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_MO.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_SG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_SG.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant.res)bin10704 -> 10704 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_HK.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_HK.res)bin4736 -> 4736 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_MO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_MO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_TW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_MO.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_MO.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_SG.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_SG.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_TW.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_TW.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zu.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zu.res)bin5584 -> 5584 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/units.resbin0 -> 22192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uprops.icubin0 -> 142592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur.resbin0 -> 13008 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur_IN.resbin0 -> 1376 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uts46.nrm (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uts46.nrm)bin59824 -> 59824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz.resbin0 -> 14640 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_AF.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Arab.resbin0 -> 800 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Arab_AF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Cyrl.resbin0 -> 4832 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Cyrl_UZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Latn_UZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_UZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai.resbin0 -> 2064 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_LR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Latn.resbin0 -> 1120 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Latn_LR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Vaii.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Vaii_LR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vec.resbin0 -> 4656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vec_IT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vi.resbin0 -> 16944 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vi_VN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vmw.resbin0 -> 1008 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vmw_MZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vun.resbin0 -> 816 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vun_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wae.resbin0 -> 4416 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wae_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/windowsZones.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/windowsZones.res)bin22128 -> 22128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wo.resbin0 -> 9104 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wo_SN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xh.resbin0 -> 3984 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xh_ZA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xnr.resbin0 -> 3296 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xnr_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xog.resbin0 -> 1712 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xog_UG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yav.resbin0 -> 2288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yav_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yi.resbin0 -> 3344 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yi_UA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo.resbin0 -> 10048 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo_BJ.resbin0 -> 5200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo_NG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl.resbin0 -> 16000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_BR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_CO.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_VE.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue.resbin0 -> 22000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_CN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_HK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hans.resbin0 -> 20288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hans_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hant.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hant_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/za.resbin0 -> 864 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/za_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zgh.resbin0 -> 1520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zgh_MA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh.resbin0 -> 37840 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_CN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_HK.resbin0 -> 1152 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_MO.resbin0 -> 992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_SG.resbin0 -> 1136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant.resbin0 -> 24592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_HK.resbin0 -> 4448 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_MO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_TW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_MO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_SG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_TW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/af.resbin0 -> 16400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/agq.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ak.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/am.resbin0 -> 23296 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar.resbin0 -> 26304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar_SA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar_XB.resbin0 -> 24528 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ars.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/as.resbin0 -> 28480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/asa.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ast.resbin0 -> 19520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az.resbin0 -> 22208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_AZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Cyrl.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Latn_AZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bas.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/be.resbin0 -> 26144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bem.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bez.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bg.resbin0 -> 25024 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bgc.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bho.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/blo.resbin0 -> 32976 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bm.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bn.resbin0 -> 28960 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bo.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/br.resbin0 -> 16240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/brx.resbin0 -> 26992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs.resbin0 -> 19728 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Cyrl.resbin0 -> 19488 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Latn_BA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ca.resbin0 -> 18992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ccp.resbin0 -> 50656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ce.resbin0 -> 19456 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ceb.resbin0 -> 12160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cgg.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/chr.resbin0 -> 21840 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ckb.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cs.resbin0 -> 18272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/csw.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cv.resbin0 -> 21808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cy.resbin0 -> 16960 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/da.resbin0 -> 15616 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dav.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/de.resbin0 -> 17888 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/de_CH.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dje.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/doi.resbin0 -> 1840 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dsb.resbin0 -> 17856 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dua.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dyo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dz.resbin0 -> 13488 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ebu.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ee.resbin0 -> 17424 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/el.resbin0 -> 28352 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en.resbin0 -> 3664 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_001.resbin0 -> 720 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_150.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AE.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AU.resbin0 -> 1088 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BW.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CA.resbin0 -> 3456 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CM.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CX.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ER.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FJ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GB.resbin0 -> 208 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GH.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GM.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GY.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_HK.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ID.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IE.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IN.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_JE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_JM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KE.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LR.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LS.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MH.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MO.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MP.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MU.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MW.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MY.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NA.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NZ.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_RH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_RW.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SD.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SG.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SL.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SS.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SX.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SZ.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TZ.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_UG.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_WS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_XA.resbin0 -> 28016 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZA.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZM.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZW.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/eo.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es.resbin0 -> 15872 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_419.resbin0 -> 2624 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_AR.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CL.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CO.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_DO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_EC.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_GT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_HN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_MX.resbin0 -> 864 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_NI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PE.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_SV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_US.resbin0 -> 880 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_UY.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_VE.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/et.resbin0 -> 16992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/eu.resbin0 -> 21808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ewo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fa.resbin0 -> 24384 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Adlm.resbin0 -> 51840 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_CM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_GN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_GN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_MR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_SN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_MR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_SN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fi.resbin0 -> 18592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fil.resbin0 -> 14368 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fil_PH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fo.resbin0 -> 13936 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr.resbin0 -> 14848 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr_CA.resbin0 -> 8720 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr_GF.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fur.resbin0 -> 1248 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fy.resbin0 -> 17776 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ga.resbin0 -> 22000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gd.resbin0 -> 19824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gl.resbin0 -> 16912 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gsw.resbin0 -> 3136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gu.resbin0 -> 27680 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/guz.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gv.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ha.resbin0 -> 15088 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/haw.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/he.resbin0 -> 25632 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/he_IL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hi.resbin0 -> 22144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hi_Latn.resbin0 -> 1296 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hr.resbin0 -> 19520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hsb.resbin0 -> 16704 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hu.resbin0 -> 19712 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hy.resbin0 -> 30992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ia.resbin0 -> 15072 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/id.resbin0 -> 12016 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/id_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ie.resbin0 -> 320 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ig.resbin0 -> 15248 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ii.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/in.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/in_ID.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/is.resbin0 -> 18336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/it.resbin0 -> 19520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/iw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/iw_IL.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ja.resbin0 -> 18976 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jgo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jmc.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jv.resbin0 -> 16784 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ka.resbin0 -> 29024 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kam.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kde.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kea.resbin0 -> 5824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kgp.resbin0 -> 28144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/khq.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ki.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kk.resbin0 -> 22544 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kkj.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kl.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kln.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/km.resbin0 -> 30800 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kn.resbin0 -> 29392 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ko.resbin0 -> 18512 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ko_KP.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kok.resbin0 -> 21936 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks.resbin0 -> 27136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Arab_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Deva.resbin0 -> 1440 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksb.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksf.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksh.resbin0 -> 4544 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ku.resbin0 -> 21392 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv.resbin0 -> 26224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Deva.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Latn_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Orya.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Telu.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ky.resbin0 -> 23168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lag.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lb.resbin0 -> 16352 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lg.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lij.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lkt.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lmo.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ln.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lo.resbin0 -> 28640 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lrc.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lt.resbin0 -> 29824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lu.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/luo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/luy.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lv.resbin0 -> 27056 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mai.resbin0 -> 19472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mas.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mer.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mfe.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mg.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mgh.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mgo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mi.resbin0 -> 17168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mk.resbin0 -> 23136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ml.resbin0 -> 31744 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mn.resbin0 -> 21456 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni.resbin0 -> 2112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_Beng.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_Beng_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mr.resbin0 -> 23856 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ms.resbin0 -> 11008 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ms_ID.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mt.resbin0 -> 1168 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mua.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/my.resbin0 -> 29968 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mzn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/naq.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nb.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nd.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nds.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ne.resbin0 -> 23792 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ne_IN.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nl.resbin0 -> 18160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nl_SR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nmg.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nn.resbin0 -> 7744 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nn_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nnh.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no.resbin0 -> 13600 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no_NO_NY.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nqo.resbin0 -> 3200 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nus.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nyn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/oc.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/om.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/or.resbin0 -> 28928 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/os.resbin0 -> 1248 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa.resbin0 -> 26992 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Arab_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Guru.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Guru_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pcm.resbin0 -> 26000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pl.resbin0 -> 20400 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pool.resbin0 -> 114864 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/prg.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ps.resbin0 -> 24032 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ps_PK.resbin0 -> 1760 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt.resbin0 -> 23072 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_AO.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_CV.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_GQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_GW.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_LU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_MO.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_MZ.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_PT.resbin0 -> 18816 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_ST.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_TL.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu.resbin0 -> 16496 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu_BO.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu_EC.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/raj.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/res_index.resbin0 -> 4816 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rm.resbin0 -> 4480 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ro.resbin0 -> 19616 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rof.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/root.resbin0 -> 880 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ru.resbin0 -> 20832 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rwk.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sa.resbin0 -> 1824 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sah.resbin0 -> 4640 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/saq.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat.resbin0 -> 2096 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_Olck.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_Olck_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sbp.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sc.resbin0 -> 21024 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd.resbin0 -> 26304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Arab_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Deva.resbin0 -> 1504 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Deva_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/se.resbin0 -> 896 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/se_FI.resbin0 -> 14768 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/seh.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ses.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sg.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_MA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Tfng.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Tfng_MA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/si.resbin0 -> 28528 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sk.resbin0 -> 18000 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sl.resbin0 -> 18256 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/smn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/so.resbin0 -> 31136 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sq.resbin0 -> 25968 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr.resbin0 -> 21936 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_CS.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_BA.resbin0 -> 12768 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_XK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn.resbin0 -> 25840 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_BA.resbin0 -> 16592 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_ME.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_ME.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_XK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_YU.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su.resbin0 -> 1280 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_ID.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_Latn_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sv.resbin0 -> 14720 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sw.resbin0 -> 15600 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sw_KE.resbin0 -> 7632 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/syr.resbin0 -> 28160 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/szl.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta.resbin0 -> 30016 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta_MY.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta_SG.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/te.resbin0 -> 29616 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/teo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tg.resbin0 -> 1696 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/th.resbin0 -> 27488 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ti.resbin0 -> 12224 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tk.resbin0 -> 23520 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tl.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tl_PH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/to.resbin0 -> 22976 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tok.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tr.resbin0 -> 18656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tt.resbin0 -> 2080 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/twq.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tzdbNames.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tzdbNames.res)bin8176 -> 8176 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tzm.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ug.resbin0 -> 16928 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uk.resbin0 -> 29712 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ur.resbin0 -> 24672 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ur_IN.resbin0 -> 3680 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz.resbin0 -> 22336 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_AF.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Arab.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Arab_AF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Cyrl.resbin0 -> 14880 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Latn_UZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_UZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_LR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Vaii.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Vaii_LR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vec.resbin0 -> 22144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vi.resbin0 -> 15680 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vmw.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vun.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/wae.resbin0 -> 1568 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/wo.resbin0 -> 1808 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xh.resbin0 -> 2640 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xnr.resbin0 -> 16848 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xog.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yav.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yi.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yo.resbin0 -> 10784 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yo_BJ.resbin0 -> 4752 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl.resbin0 -> 31472 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl_CO.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl_VE.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue.resbin0 -> 14656 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_CN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_HK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hans.resbin0 -> 15216 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hans_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hant.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hant_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/za.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zgh.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh.resbin0 -> 15936 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_CN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans_SG.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant.resbin0 -> 14688 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_HK.resbin0 -> 5120 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_MO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_TW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_MO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_SG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_TW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zu.resbin0 -> 33616 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zoneinfo64.res (renamed from icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zoneinfo64.res)bin151504 -> 151504 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zu.resbin0 -> 14144 bytes
-rw-r--r--icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zu_ZA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/data/TestDataElements_testtypes.java26
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestClassOverride.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestCompatibility.java12
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java28
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/AstroTest.java204
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java38
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java8
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java77
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/duration/ICUDurationTest.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/BigNumberFormatTest.java70
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java14
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java13
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/MessageRegressionTest.java20
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java6
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatTest.java150
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java4
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/SelectFormatAPITest.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/TimeUnitTest.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java18
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/TestUScript.java4
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterCompare.java8
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java158
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java20
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Args.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CoreTest.java28
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java25
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterListTest.java18
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterMessageRefTest.java25
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterPersonTest.java58
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/DataModelErrorsTest.java41
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FirstReleaseTests.java33
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FromJsonTest.java422
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FunctionsTest.java35
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/IcuFunctionsTest.java46
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/MessageFormat2Test.java195
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Mf2IcuTest.java60
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/ParserSmokeTest.java44
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SelectorsWithVariousArgumentsTest.java39
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SerializationTest.java106
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SyntaxErrorsTest.java34
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestCase.java157
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestUtils.java92
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Unit.java110
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntHashtable.java6
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java6
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/LongHashtable.java6
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java31
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBITest.java88
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java10
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java4
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java56
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DebugUtilitiesData.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DisplayNameTest.java5
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/LocaleMatcherTest.java6
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/RegionTest.java2
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/TextTrieMapTest.java32
-rw-r--r--icu4j/main/core/src/test/java/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java6
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt4
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt4
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt5
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_header.txt6
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_readme.txt2
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/af.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/am.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ar.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/as.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/az.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/be.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bg.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bn.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bs.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ca.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/catalog.txt23
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/chr.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cs.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cy.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/da.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de_CH.txt772
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/dsb.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/el.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_AU.txt818
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_CA.txt818
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_GB.txt818
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_IN.txt818
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_419.txt830
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_MX.txt831
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_US.txt801
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/et.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/eu.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fa.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fi.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fil.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr_CA.txt831
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ga.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gd.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gl.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gu.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha_NE.txt762
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/he.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi_Latn.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hr.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hsb.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hu.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hy.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/id.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ig.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/is.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/it.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ja.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/jv.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ka.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kk.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/km.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kn.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ko.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kok.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ky.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lo.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lt.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lv.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mk.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ml.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mn.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mr.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ms.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/my.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ne.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nl.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nn.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/no.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/or.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pa.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pl.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ps.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt_PT.txt814
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/qu.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ro.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ru.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sc.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sd.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/si.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sk.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sl.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/so.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sq.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Cyrl_BA.txt818
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn_BA.txt818
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sv.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw_KE.txt806
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ta.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/te.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tg.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/th.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ti.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tk.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tr.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uk.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ur.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uz.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/vi.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/wo.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo_BJ.txt809
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue_Hans.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant_HK.txt712
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zu.txt7
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitLocalePreferencesTest.txt42
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitPreferencesTest.txt6
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitsTest.txt11
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/ibm9027.cnvbin52544 -> 52544 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/root.resbin1792 -> 1776 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/structLocale.resbin228288 -> 228336 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1.cnvbin4320 -> 4320 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1bmp.cnvbin2448 -> 2448 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test2.cnvbin9344 -> 9344 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test3.cnvbin10608 -> 10608 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4.cnvbin10496 -> 10496 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4x.cnvbin800 -> 800 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test5.cnvbin7760 -> 7760 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/data-model-errors.json32
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-parser-tests.json61
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-functions.json193
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-previous-release.json390
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-selectors.json131
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/syntax-errors.json56
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/test-core.json212
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/test-functions.json325
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.IllegalIcuArgumentException.datbin1114 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.InvalidFormatException.datbin3177 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.OlsonTimeZone.datbin20988 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.RelativeDateFormat.datbin11886 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneAdapter.datbin21421 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.locale.LocaleSyntaxException.datbin1134 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.number.SkeletonSyntaxException.datbin1149 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ArabicShapingException.datbin3177 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormat.datbin93746 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormatSymbols.datbin40444 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.CurrencyPluralInfo.datbin1170 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormat.datbin48188 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormatSymbols.datbin32837 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalFormat.datbin12472 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DecimalFormat.datbin11432 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DecimalFormatSymbols.datbin7403 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.SimpleDateFormat.datbin92694 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.StringPrepParseException.datbin7712 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.BuddhistCalendar.datbin2672 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.Calendar.datbin4090 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ChineseCalendar.datbin3260 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.CopticCalendar.datbin3328 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DangiCalendar.datbin3610 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.EthiopicCalendar.datbin2630 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.GregorianCalendar.datbin4099 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.HebrewCalendar.datbin3701 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUCloneNotSupportedException.datbin1674 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUException.datbin1579 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUInputTooLongException.datbin1659 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUUncheckedIOException.datbin1612 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IllformedLocaleException.datbin1184 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IndianCalendar.datbin2511 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IslamicCalendar.datbin3876 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.JapaneseCalendar.datbin2750 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.PersianCalendar.datbin4600 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TaiwanCalendar.datbin2929 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.UResourceTypeMismatchException.datbin3242 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.VTimeZone.datbin2676 -> 0 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.DateNumberFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.DateNumberFormat.dat)bin2602 -> 2602 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.IllegalIcuArgumentException.datbin0 -> 1114 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.InvalidFormatException.datbin0 -> 3177 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.JavaTimeZone.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.JavaTimeZone.dat)bin2551 -> 2551 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.OlsonTimeZone.datbin0 -> 21115 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.RelativeDateFormat.datbin0 -> 11976 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat)bin277 -> 277 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneAdapter.datbin0 -> 21548 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneGenericNames.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneGenericNames.dat)bin407 -> 407 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat)bin237 -> 237 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat)bin383 -> 383 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.locale.LocaleSyntaxException.datbin0 -> 1134 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat)bin345 -> 345 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat)bin586 -> 586 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat)bin187 -> 187 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.Properties.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.Properties.dat)bin106 -> 106 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.math.BigDecimal.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.math.BigDecimal.dat)bin520 -> 520 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.math.MathContext.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.math.MathContext.dat)bin595 -> 595 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.message2.MFParseException.datbin0 -> 1058 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.number.NumberRangeFormatter$SpanField.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.number.NumberRangeFormatter$SpanField.dat)bin306 -> 306 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.number.SkeletonSyntaxException.datbin0 -> 1149 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ArabicShapingException.datbin0 -> 3177 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormat$Field.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormat$Field.dat)bin312 -> 312 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormat.datbin0 -> 90128 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormatSymbols.datbin0 -> 37080 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.CompactDecimalFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.CompactDecimalFormat.dat)bin65 -> 65 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.CurrencyPluralInfo.datbin0 -> 1161 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormat$Field.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormat$Field.dat)bin792 -> 792 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormat.datbin0 -> 44440 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormatSymbols.datbin0 -> 29083 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat)bin303 -> 303 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalFormat.datbin0 -> 13042 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat)bin270 -> 270 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalInfo.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalInfo.dat)bin568 -> 568 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DecimalFormat.datbin0 -> 11432 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DecimalFormatSymbols.datbin0 -> 7403 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ListFormatter$Field.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ListFormatter$Field.dat)bin250 -> 250 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ListFormatter$SpanField.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ListFormatter$SpanField.dat)bin289 -> 289 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MeasureFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MeasureFormat.dat)bin3295 -> 3295 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MessageFormat$Field.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MessageFormat$Field.dat)bin249 -> 249 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MessageFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MessageFormat.dat)bin382 -> 382 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.NumberFormat$Field.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.NumberFormat$Field.dat)bin449 -> 449 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.NumberFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.NumberFormat.dat)bin3812 -> 3812 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.PluralFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.PluralFormat.dat)bin3043 -> 3043 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.PluralRules.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.PluralRules.dat)bin872 -> 872 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat)bin246 -> 246 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.RuleBasedNumberFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.RuleBasedNumberFormat.dat)bin44502 -> 44502 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.SelectFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.SelectFormat.dat)bin202 -> 202 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.SimpleDateFormat.datbin0 -> 88946 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.StringPrepParseException.datbin0 -> 7712 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.TimeUnitFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.TimeUnitFormat.dat)bin2689 -> 2689 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.TimeZoneFormat.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.TimeZoneFormat.dat)bin774 -> 774 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.AnnualTimeZoneRule.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.AnnualTimeZoneRule.dat)bin898 -> 898 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.BuddhistCalendar.datbin0 -> 2672 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.Calendar.datbin0 -> 4090 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ChineseCalendar.datbin0 -> 3260 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.CopticCalendar.datbin0 -> 3328 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.Currency.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.Currency.dat)bin345 -> 345 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DangiCalendar.datbin0 -> 3610 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DateInterval.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DateInterval.dat)bin139 -> 139 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DateTimeRule.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DateTimeRule.dat)bin324 -> 324 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.EthiopicCalendar.datbin0 -> 2630 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.GregorianCalendar.datbin0 -> 4099 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.HebrewCalendar.datbin0 -> 3701 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUCloneNotSupportedException.datbin0 -> 1674 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUException.datbin0 -> 1579 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUInputTooLongException.datbin0 -> 1659 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUUncheckedIOException.datbin0 -> 1612 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IllformedLocaleException.datbin0 -> 1184 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IndianCalendar.datbin0 -> 2511 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.InitialTimeZoneRule.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.InitialTimeZoneRule.dat)bin241 -> 241 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IslamicCalendar.datbin0 -> 4237 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.JapaneseCalendar.datbin0 -> 2750 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.MeasureUnit.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.MeasureUnit.dat)bin173 -> 173 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.PersianCalendar.datbin0 -> 3078 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.RuleBasedTimeZone.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.RuleBasedTimeZone.dat)bin1401 -> 1401 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.SimpleTimeZone.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.SimpleTimeZone.dat)bin1152 -> 1152 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TaiwanCalendar.datbin0 -> 2929 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat)bin312 -> 312 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeUnit.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeUnit.dat)bin173 -> 173 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeZone.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeZone.dat)bin1606 -> 1606 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ULocale.dat (renamed from icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ULocale.dat)bin365 -> 365 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.UResourceTypeMismatchException.datbin0 -> 3242 bytes
-rw-r--r--icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.VTimeZone.datbin0 -> 2690 bytes
-rw-r--r--icu4j/main/currdata/pom.xml2
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/af.resbin7648 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/af_NA.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/agq.resbin2784 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ak.resbin2336 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/am.resbin6112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar.resbin13664 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_AE.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_DJ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_ER.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_KM.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_LB.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SO.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SS.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ars.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/as.resbin8208 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/asa.resbin2368 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ast.resbin37440 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az.resbin26528 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_AZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Cyrl.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Latn_AZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bas.resbin2416 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/be.resbin30304 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bem.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bez.resbin3376 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bg.resbin32224 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bgc.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bho.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/blo.resbin18160 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bm.resbin2560 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bn.resbin14512 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bn_IN.resbin512 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bo.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bo_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/br.resbin37440 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/brx.resbin16896 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs.resbin29680 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Cyrl.resbin18704 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Latn_BA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ca.resbin29456 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ca_FR.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ccp.resbin22704 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ce.resbin15872 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ceb.resbin5120 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cgg.resbin880 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/chr.resbin5552 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ckb.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cs.resbin51888 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/csw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cv.resbin6912 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cy.resbin26928 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/da.resbin20672 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dav.resbin832 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de.resbin25760 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_CH.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_LI.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_LU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dje.resbin832 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/doi.resbin368 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dsb.resbin24128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dua.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dyo.resbin1536 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dz.resbin4736 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ebu.resbin880 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ee.resbin17568 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/el.resbin34080 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en.resbin27376 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_001.resbin592 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_150.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AI.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AT.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AU.resbin1744 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BB.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BI.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BS.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CA.resbin800 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CC.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CX.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ER.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FJ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FK.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GD.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GG.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GH.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GI.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GY.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ID.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IM.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IN.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_JE.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_JM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KE.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KI.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KY.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LC.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LS.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MS.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MT.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MV.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MY.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NF.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_RH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_RW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SB.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SC.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SE.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SH.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SL.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SS.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SX.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TT.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TV.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_UG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VC.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_WS.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/eo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es.resbin19504 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_419.resbin880 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_AR.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CL.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CO.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CU.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_DO.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_EC.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_GQ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_GT.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_HN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_MX.resbin848 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_NI.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PE.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PY.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_SV.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_US.resbin592 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_UY.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_VE.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/et.resbin27904 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/eu.resbin34848 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ewo.resbin3024 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fa.resbin10752 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fa_AF.resbin672 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff.resbin2576 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm.resbin49296 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_BF.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_CM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GH.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GM.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_LR.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_MR.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_NE.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_NG.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_SL.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_SN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_CM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_GN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GM.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_LR.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_MR.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_NG.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_SL.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_SN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_MR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_SN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fi.resbin34384 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fil.resbin12768 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fil_PH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fo.resbin10576 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fo_DK.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr.resbin30240 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_BI.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_CA.resbin1792 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_CD.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_DJ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_DZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_GN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_HT.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_KM.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_LU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MR.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MU.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_RW.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_SC.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_SY.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_TN.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_VU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fur.resbin4096 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fy.resbin13920 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ga.resbin36992 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gd.resbin51472 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gl.resbin13808 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gsw.resbin16816 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gu.resbin7936 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/guz.resbin832 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gv.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ha.resbin14256 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ha_GH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/haw.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/he.resbin10384 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/he_IL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hi.resbin7488 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hi_Latn.resbin592 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hr.resbin28480 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hr_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hsb.resbin24512 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hu.resbin16368 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hy.resbin8336 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ia.resbin14128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/id.resbin9856 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/id_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ie.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ig.resbin12416 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ii.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/in.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/in_ID.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/is.resbin19456 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/it.resbin21008 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/iw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/iw_IL.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ja.resbin11744 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jgo.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jmc.resbin848 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jv.resbin3888 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ka.resbin13040 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kab.resbin2688 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kam.resbin1072 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kde.resbin944 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kea.resbin3360 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kgp.resbin34000 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/khq.resbin832 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ki.resbin1152 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kk.resbin7232 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kkj.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kl.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kln.resbin3088 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/km.resbin7840 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kn.resbin16752 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ko.resbin10064 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kok.resbin11696 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks.resbin12768 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Arab_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Deva.resbin640 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksb.resbin2336 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksf.resbin3008 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksh.resbin10576 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ku.resbin15792 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv.resbin416 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Deva.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Orya.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Telu.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ky.resbin7184 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lag.resbin3152 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lb.resbin25168 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lg.resbin2144 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lij.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lkt.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lmo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ln.resbin2880 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ln_AO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lo.resbin15792 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lrc.resbin368 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lt.resbin57664 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lu.resbin2880 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/luo.resbin1168 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/luy.resbin960 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lv.resbin19584 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mai.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mas.resbin3248 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mas_TZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mer.resbin1632 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mfe.resbin2512 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mg.resbin2560 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mgh.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mgo.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mi.resbin12752 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mk.resbin15840 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ml.resbin22640 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mn.resbin7744 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni.resbin448 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_Beng.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_Beng_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mr.resbin11760 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms.resbin4240 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_BN.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_ID.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_SG.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mt.resbin384 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mua.resbin2624 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/my.resbin9472 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mzn.resbin7728 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/naq.resbin2096 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nb.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nd.resbin3200 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nds.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ne.resbin9152 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl.resbin13584 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_AW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_BQ.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_CW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_SR.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_SX.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nmg.resbin2464 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nn.resbin8032 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nn_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nnh.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no.resbin23296 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no_NO_NY.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nqo.resbin5504 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nus.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nyn.resbin896 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/oc.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/om.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/om_KE.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/or.resbin7920 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/os.resbin704 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/os_RU.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa.resbin9056 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Arab.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Arab_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Guru.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Guru_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pcm.resbin14800 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pl.resbin41600 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pool.resbin190992 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/prg.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ps.resbin12784 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ps_PK.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt.resbin34432 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_AO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_CV.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_GQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_GW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_LU.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_MO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_MZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_PT.resbin12624 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_ST.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_TL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu.resbin11808 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu_BO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu_EC.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/raj.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/res_index.resbin5552 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rm.resbin28704 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rn.resbin3584 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ro.resbin23696 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ro_MD.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rof.resbin2928 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/root.resbin1040 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru.resbin37248 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_BY.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_KG.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_KZ.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_MD.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rw.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rwk.resbin848 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sa.resbin400 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sah.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/saq.resbin3232 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat.resbin592 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_Olck.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_Olck_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sbp.resbin3008 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sc.resbin33104 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd.resbin6912 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Arab_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Deva.resbin736 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Deva_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/se.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/se_SE.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/seh.resbin1952 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ses.resbin832 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sg.resbin3104 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi.resbin928 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Latn.resbin2736 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_MA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Tfng.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Tfng_MA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/si.resbin8144 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sk.resbin57984 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sl.resbin30624 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/smn.resbin384 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sn.resbin2976 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so.resbin17200 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_DJ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_ET.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_KE.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sq.resbin21856 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sq_MK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr.resbin17728 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_CS.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_BA.resbin864 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_XK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn.resbin23136 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_BA.resbin352 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_ME.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_ME.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_XK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_YU.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su.resbin704 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_ID.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_Latn_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/supplementalData.resbin27280 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sv.resbin28752 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw.resbin21280 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_CD.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_KE.resbin9776 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_UG.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/syr.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/szl.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta.resbin17200 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_LK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_MY.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_SG.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/te.resbin16592 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/teo.resbin3296 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/teo_KE.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tg.resbin848 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/th.resbin14640 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ti.resbin464 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ti_ER.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tk.resbin15104 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tl.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tl_PH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/to.resbin704 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tok.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tr.resbin16576 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tt.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/twq.resbin832 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tzm.resbin2672 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ug.resbin17584 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uk.resbin42816 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ur.resbin7904 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ur_IN.resbin448 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz.resbin7680 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_AF.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Arab.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Arab_AF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Cyrl.resbin2320 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Latn_UZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_UZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai.resbin1872 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_LR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Latn.resbin2592 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Vaii.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Vaii_LR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vec.resbin14064 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vi.resbin16944 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vmw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vun.resbin848 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/wae.resbin480 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/wo.resbin944 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xh.resbin21296 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xnr.resbin14064 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xog.resbin1872 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yav.resbin1056 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yi.resbin912 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yo.resbin13040 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yo_BJ.resbin10096 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl.resbin40576 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl_CO.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl_VE.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue.resbin6576 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_CN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_HK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hans.resbin7888 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hans_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hant.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hant_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/za.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zgh.resbin1040 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh.resbin8624 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_CN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_HK.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_MO.resbin208 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_SG.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant.resbin6608 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_HK.resbin2016 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_MO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_TW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_MO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_SG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_TW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zu.resbin3216 -> 0 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/af.resbin0 -> 7648 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/af_NA.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/agq.resbin0 -> 2784 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ak.resbin0 -> 2336 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/am.resbin0 -> 6112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar.resbin0 -> 13664 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_AE.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_DJ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_ER.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_KM.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_LB.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SO.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SS.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ars.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/as.resbin0 -> 8208 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/asa.resbin0 -> 2368 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ast.resbin0 -> 37440 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az.resbin0 -> 26528 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_AZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Cyrl.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Latn_AZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bas.resbin0 -> 2416 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/be.resbin0 -> 30304 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bem.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bez.resbin0 -> 3376 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bg.resbin0 -> 32224 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bgc.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bho.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/blo.resbin0 -> 18160 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bm.resbin0 -> 2560 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bn.resbin0 -> 14512 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bn_IN.resbin0 -> 512 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bo.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bo_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/br.resbin0 -> 37440 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/brx.resbin0 -> 16896 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs.resbin0 -> 29680 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Cyrl.resbin0 -> 18704 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Latn_BA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ca.resbin0 -> 29456 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ca_FR.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ccp.resbin0 -> 22704 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ce.resbin0 -> 15872 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ceb.resbin0 -> 5120 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cgg.resbin0 -> 880 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/chr.resbin0 -> 5552 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ckb.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cs.resbin0 -> 51888 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/csw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cv.resbin0 -> 6912 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cy.resbin0 -> 26928 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/da.resbin0 -> 20672 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dav.resbin0 -> 832 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de.resbin0 -> 25760 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_CH.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_LI.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_LU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dje.resbin0 -> 832 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/doi.resbin0 -> 368 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dsb.resbin0 -> 24128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dua.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dyo.resbin0 -> 1536 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dz.resbin0 -> 4736 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ebu.resbin0 -> 880 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ee.resbin0 -> 17568 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/el.resbin0 -> 34080 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en.resbin0 -> 27488 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_001.resbin0 -> 592 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_150.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AI.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AT.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AU.resbin0 -> 1744 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BB.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BI.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BS.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CA.resbin0 -> 784 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CC.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CX.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ER.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FJ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FK.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GD.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GG.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GH.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GI.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GY.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ID.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IM.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IN.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_JE.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_JM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KE.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KI.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KY.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LC.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LS.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MS.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MT.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MV.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MY.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NF.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_RH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_RW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SB.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SC.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SE.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SH.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SL.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SS.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SX.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TT.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TV.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_UG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VC.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_WS.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/eo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es.resbin0 -> 19600 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_419.resbin0 -> 880 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_AR.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CL.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CO.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CU.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_DO.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_EC.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_GQ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_GT.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_HN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_MX.resbin0 -> 848 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_NI.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PE.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PY.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_SV.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_US.resbin0 -> 592 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_UY.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_VE.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/et.resbin0 -> 27904 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/eu.resbin0 -> 34848 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ewo.resbin0 -> 3024 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fa.resbin0 -> 10752 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fa_AF.resbin0 -> 672 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff.resbin0 -> 2576 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm.resbin0 -> 49296 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_BF.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_CM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GH.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GM.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_LR.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_MR.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_NE.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_NG.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_SL.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_SN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_CM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_GN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GM.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_LR.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_MR.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_NG.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_SL.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_SN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_MR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_SN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fi.resbin0 -> 34384 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fil.resbin0 -> 12768 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fil_PH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fo.resbin0 -> 10576 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fo_DK.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr.resbin0 -> 30336 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_BI.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_CA.resbin0 -> 1792 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_CD.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_DJ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_DZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_GN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_HT.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_KM.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_LU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MR.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MU.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_RW.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_SC.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_SY.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_TN.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_VU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fur.resbin0 -> 4096 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fy.resbin0 -> 13920 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ga.resbin0 -> 36992 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gd.resbin0 -> 51472 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gl.resbin0 -> 13808 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gsw.resbin0 -> 16816 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gu.resbin0 -> 7936 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/guz.resbin0 -> 832 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gv.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ha.resbin0 -> 14256 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ha_GH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/haw.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/he.resbin0 -> 10384 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/he_IL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hi.resbin0 -> 7488 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hi_Latn.resbin0 -> 592 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hr.resbin0 -> 28480 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hr_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hsb.resbin0 -> 24512 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hu.resbin0 -> 16368 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hy.resbin0 -> 8336 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ia.resbin0 -> 14128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/id.resbin0 -> 9856 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/id_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ie.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ig.resbin0 -> 12416 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ii.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/in.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/in_ID.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/is.resbin0 -> 19456 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/it.resbin0 -> 21008 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/iw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/iw_IL.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ja.resbin0 -> 11744 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jgo.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jmc.resbin0 -> 848 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jv.resbin0 -> 3888 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ka.resbin0 -> 13040 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kab.resbin0 -> 2688 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kam.resbin0 -> 1072 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kde.resbin0 -> 944 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kea.resbin0 -> 3360 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kgp.resbin0 -> 34000 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/khq.resbin0 -> 832 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ki.resbin0 -> 1152 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kk.resbin0 -> 7232 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kkj.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kl.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kln.resbin0 -> 3088 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/km.resbin0 -> 7840 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kn.resbin0 -> 16752 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ko.resbin0 -> 10064 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kok.resbin0 -> 11696 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks.resbin0 -> 12768 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Arab_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Deva.resbin0 -> 640 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksb.resbin0 -> 2336 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksf.resbin0 -> 3008 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksh.resbin0 -> 10576 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ku.resbin0 -> 15792 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv.resbin0 -> 416 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Deva.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Latn_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Orya.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Telu.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ky.resbin0 -> 7184 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lag.resbin0 -> 3152 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lb.resbin0 -> 25168 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lg.resbin0 -> 2144 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lij.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lkt.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lmo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ln.resbin0 -> 2880 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ln_AO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lo.resbin0 -> 15792 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lrc.resbin0 -> 368 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lt.resbin0 -> 57664 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lu.resbin0 -> 2880 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/luo.resbin0 -> 1168 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/luy.resbin0 -> 960 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lv.resbin0 -> 19584 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mai.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mas.resbin0 -> 3248 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mas_TZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mer.resbin0 -> 1632 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mfe.resbin0 -> 2512 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mg.resbin0 -> 2560 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mgh.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mgo.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mi.resbin0 -> 12752 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mk.resbin0 -> 15840 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ml.resbin0 -> 22640 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mn.resbin0 -> 7744 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni.resbin0 -> 448 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_Beng.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_Beng_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mr.resbin0 -> 11760 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms.resbin0 -> 4240 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_BN.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_ID.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_SG.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mt.resbin0 -> 384 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mua.resbin0 -> 2624 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/my.resbin0 -> 9472 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mzn.resbin0 -> 7728 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/naq.resbin0 -> 2096 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nb.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nd.resbin0 -> 3200 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nds.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ne.resbin0 -> 9152 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl.resbin0 -> 13648 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_AW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_BQ.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_CW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_SR.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_SX.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nmg.resbin0 -> 2464 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nn.resbin0 -> 8032 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nn_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nnh.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no.resbin0 -> 23296 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no_NO_NY.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nqo.resbin0 -> 5504 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nus.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nyn.resbin0 -> 896 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/oc.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/om.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/om_KE.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/or.resbin0 -> 7920 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/os.resbin0 -> 704 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/os_RU.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa.resbin0 -> 9056 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Arab.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Arab_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Guru.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Guru_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pcm.resbin0 -> 14800 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pl.resbin0 -> 41600 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pool.resbin0 -> 191008 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/prg.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ps.resbin0 -> 12784 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ps_PK.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt.resbin0 -> 34432 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_AO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_CV.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_GQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_GW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_LU.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_MO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_MZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_PT.resbin0 -> 12624 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_ST.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_TL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu.resbin0 -> 11808 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu_BO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu_EC.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/raj.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/res_index.resbin0 -> 5600 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rm.resbin0 -> 28704 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rn.resbin0 -> 3584 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ro.resbin0 -> 23696 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ro_MD.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rof.resbin0 -> 2928 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/root.resbin0 -> 1056 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru.resbin0 -> 37248 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_BY.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_KG.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_KZ.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_MD.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rw.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rwk.resbin0 -> 848 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sa.resbin0 -> 400 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sah.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/saq.resbin0 -> 3232 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat.resbin0 -> 592 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_Olck.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_Olck_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sbp.resbin0 -> 3008 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sc.resbin0 -> 33104 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd.resbin0 -> 6912 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Arab_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Deva.resbin0 -> 736 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Deva_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/se.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/se_SE.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/seh.resbin0 -> 1952 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ses.resbin0 -> 832 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sg.resbin0 -> 3104 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi.resbin0 -> 928 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Latn.resbin0 -> 2736 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_MA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Tfng.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Tfng_MA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/si.resbin0 -> 8144 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sk.resbin0 -> 57984 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sl.resbin0 -> 30624 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/smn.resbin0 -> 384 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sn.resbin0 -> 2976 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so.resbin0 -> 17200 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_DJ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_ET.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_KE.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sq.resbin0 -> 21856 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sq_MK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr.resbin0 -> 17728 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_CS.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_BA.resbin0 -> 864 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_XK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn.resbin0 -> 23136 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_BA.resbin0 -> 352 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_ME.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_ME.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_XK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_YU.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su.resbin0 -> 704 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_ID.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_Latn_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/supplementalData.resbin0 -> 27392 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sv.resbin0 -> 28752 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw.resbin0 -> 21280 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_CD.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_KE.resbin0 -> 9776 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_UG.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/syr.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/szl.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta.resbin0 -> 17200 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_LK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_MY.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_SG.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/te.resbin0 -> 16592 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/teo.resbin0 -> 3296 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/teo_KE.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tg.resbin0 -> 848 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/th.resbin0 -> 14640 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ti.resbin0 -> 464 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ti_ER.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tk.resbin0 -> 15104 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tl.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tl_PH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/to.resbin0 -> 704 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tok.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tr.resbin0 -> 16576 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tt.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/twq.resbin0 -> 832 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tzm.resbin0 -> 2672 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ug.resbin0 -> 17584 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uk.resbin0 -> 42816 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ur.resbin0 -> 7904 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ur_IN.resbin0 -> 448 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz.resbin0 -> 7680 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_AF.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Arab.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Arab_AF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Cyrl.resbin0 -> 2320 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Latn_UZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_UZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai.resbin0 -> 1872 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_LR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Latn.resbin0 -> 2592 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Vaii.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Vaii_LR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vec.resbin0 -> 14064 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vi.resbin0 -> 16944 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vmw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vun.resbin0 -> 848 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/wae.resbin0 -> 480 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/wo.resbin0 -> 944 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xh.resbin0 -> 21296 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xnr.resbin0 -> 14064 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xog.resbin0 -> 1872 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yav.resbin0 -> 1056 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yi.resbin0 -> 912 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yo.resbin0 -> 13040 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yo_BJ.resbin0 -> 10096 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl.resbin0 -> 40576 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl_CO.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl_VE.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue.resbin0 -> 6576 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_CN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_HK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hans.resbin0 -> 7888 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hans_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hant.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hant_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/za.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zgh.resbin0 -> 1040 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh.resbin0 -> 8624 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_CN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_HK.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_MO.resbin0 -> 208 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_SG.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant.resbin0 -> 6608 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_HK.resbin0 -> 2016 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_MO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_TW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_MO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_SG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_TW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zu.resbin0 -> 3216 bytes
-rw-r--r--icu4j/main/framework/pom.xml2
-rw-r--r--icu4j/main/framework/src/test/java/com/ibm/icu/dev/test/TestFmwk.java4
-rw-r--r--icu4j/main/icu4j/pom.xml2
-rw-r--r--icu4j/main/langdata/pom.xml2
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/af.resbin13936 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/agq.resbin928 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ak.resbin1136 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/am.resbin14368 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar.resbin24768 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_EG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_LY.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_SA.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_XB.resbin56304 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ars.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/as.resbin16016 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/asa.resbin544 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ast.resbin21664 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az.resbin16256 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_AZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Cyrl.resbin5536 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Latn_AZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bas.resbin1392 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/be.resbin16896 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bem.resbin1312 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bez.resbin1088 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bg.resbin20352 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bgc.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bho.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/blo.resbin3392 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bm.resbin1200 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bn.resbin24912 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bn_IN.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bo.resbin672 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/br.resbin23136 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/brx.resbin19696 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs.resbin18928 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Cyrl.resbin14048 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Latn_BA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ca.resbin22560 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ccp.resbin33904 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ce.resbin8048 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ceb.resbin1488 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cgg.resbin416 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/chr.resbin10640 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ckb.resbin8192 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cs.resbin28544 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/csw.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cv.resbin1568 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cy.resbin18944 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/da.resbin17840 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dav.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de.resbin20176 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de_AT.resbin432 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de_CH.resbin992 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dje.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/doi.resbin976 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dsb.resbin10080 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dua.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dyo.resbin672 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dz.resbin7216 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ebu.resbin656 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ee.resbin9152 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/el.resbin26304 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en.resbin27024 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_001.resbin656 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_150.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AU.resbin496 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CA.resbin3760 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CX.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ER.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FJ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GB.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IN.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_JE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_JM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_RH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_RW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SB.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SD.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SE.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SI.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SX.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TT.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_UG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VC.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_WS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_XA.resbin68608 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/eo.resbin2864 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es.resbin15744 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_419.resbin2016 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_AR.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BO.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CL.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CO.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CR.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_DO.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_EC.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_GT.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_HN.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_MX.resbin816 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_NI.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PA.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PE.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PR.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PY.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_SV.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_US.resbin832 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_UY.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_VE.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/et.resbin25872 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/eu.resbin30896 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ewo.resbin1536 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fa.resbin19968 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fa_AF.resbin784 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff.resbin1056 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Adlm.resbin37840 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_CM.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_GN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_CM.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_GN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_MR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_SN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_MR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_SN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fi.resbin33968 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fil.resbin14672 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fil_PH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fo.resbin10288 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr.resbin23808 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_BE.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_CA.resbin2560 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_CH.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fur.resbin6240 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fy.resbin16224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ga.resbin25776 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gd.resbin28832 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gl.resbin13424 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gsw.resbin11744 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gu.resbin21536 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/guz.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gv.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ha.resbin13536 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ha_NE.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/haw.resbin992 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/he.resbin25504 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/he_IL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hi.resbin14224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hi_Latn.resbin4480 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hr.resbin16800 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hsb.resbin10160 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hu.resbin22640 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hy.resbin18592 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ia.resbin9664 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/id.resbin18704 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/id_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ie.resbin208 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ig.resbin13680 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ii.resbin464 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/in.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/in_ID.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/is.resbin19440 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/it.resbin22240 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/iw.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/iw_IL.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ja.resbin19408 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jgo.resbin576 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jmc.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jv.resbin8064 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ka.resbin20192 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kab.resbin880 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kam.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kde.resbin1168 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kea.resbin6272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kgp.resbin22608 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/khq.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ki.resbin432 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kk.resbin31216 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kkj.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kl.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kln.resbin1600 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/km.resbin15120 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kn.resbin22896 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ko.resbin15744 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kok.resbin11552 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks.resbin14640 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Arab_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Deva.resbin2320 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksb.resbin624 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksf.resbin992 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksh.resbin17312 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ku.resbin10768 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kw.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv.resbin1840 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Deva.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Orya.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Telu.resbin256 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ky.resbin17456 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lag.resbin1152 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lb.resbin20720 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lg.resbin1152 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lij.resbin176 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lkt.resbin4864 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lmo.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ln.resbin976 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lo.resbin21840 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lrc.resbin5472 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lt.resbin28576 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lu.resbin864 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/luo.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/luy.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lv.resbin22400 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mai.resbin9584 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mas.resbin1872 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mer.resbin784 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mfe.resbin688 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mg.resbin928 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mgh.resbin944 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mgo.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mi.resbin14192 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mk.resbin20128 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ml.resbin24624 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mn.resbin16928 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni.resbin1856 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_Beng.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_Beng_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mo.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mr.resbin15776 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ms.resbin16224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mt.resbin8848 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mua.resbin896 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/my.resbin17120 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mzn.resbin4224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/naq.resbin1360 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nb.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nd.resbin1136 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nds.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ne.resbin19504 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nl.resbin23232 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nmg.resbin1296 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nn.resbin6320 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nn_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nnh.resbin672 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no.resbin20912 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no_NO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no_NO_NY.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nqo.resbin11360 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nus.resbin1536 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nyn.resbin448 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/oc.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/om.resbin2768 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/or.resbin19776 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/os.resbin2256 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa.resbin14016 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Arab.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Arab_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Guru.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Guru_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pcm.resbin19056 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pl.resbin24608 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pool.resbin139840 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/prg.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ps.resbin12608 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ps_PK.resbin336 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt.resbin20336 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_AO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_CH.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_CV.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_GQ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_GW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_LU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_MO.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_MZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_PT.resbin8912 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_ST.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_TL.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/qu.resbin18016 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/raj.resbin128 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/res_index.resbin4800 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rm.resbin13024 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rn.resbin816 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ro.resbin25328 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ro_MD.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rof.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/root.resbin320 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ru.resbin24480 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rw.resbin2608 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rwk.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sa.resbin1632 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sah.resbin2240 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/saq.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat.resbin2224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_Olck.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_Olck_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sbp.resbin1264 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sc.resbin23136 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd.resbin12512 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Arab.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Arab_PK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Deva.resbin2208 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Deva_IN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_IN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_PK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/se.resbin4144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/se_FI.resbin1536 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/seh.resbin384 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ses.resbin304 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sg.resbin944 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi.resbin704 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Latn.resbin896 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_MA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Tfng.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Tfng_MA.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/si.resbin15088 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sk.resbin21280 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sl.resbin29744 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/smn.resbin9168 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sn.resbin784 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/so.resbin23856 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sq.resbin25728 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr.resbin13696 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_BA.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_CS.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_BA.resbin1136 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_ME.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_XK.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn.resbin16080 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_BA.resbin1104 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_CS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_ME.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_XK.resbin192 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_YU.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_ME.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_RS.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_XK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_YU.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su.resbin1184 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_ID.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_Latn_ID.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sv.resbin28032 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sv_FI.resbin160 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw.resbin16608 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw_CD.resbin592 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw_KE.resbin5168 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/syr.resbin3296 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/szl.resbin224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ta.resbin23824 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/te.resbin23376 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/teo.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tg.resbin7792 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/th.resbin26608 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ti.resbin7232 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ti_ER.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tk.resbin19296 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tl.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tl_PH.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/to.resbin38832 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tok.resbin544 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tr.resbin27984 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tt.resbin2864 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/twq.resbin288 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tzm.resbin992 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ug.resbin21968 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uk.resbin25984 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ur.resbin15232 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ur_IN.resbin528 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz.resbin12304 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_AF.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Arab.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Arab_AF.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Cyrl.resbin7552 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Latn.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Latn_UZ.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_UZ.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai.resbin656 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_LR.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Latn.resbin928 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Vaii.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Vaii_LR.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vec.resbin14128 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vi.resbin33904 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vmw.resbin144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vun.resbin272 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/wae.resbin3456 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/wo.resbin3568 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xh.resbin2144 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xnr.resbin4784 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xog.resbin1168 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yav.resbin992 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yi.resbin3712 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yo.resbin18048 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yo_BJ.resbin6400 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl.resbin23296 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl_CO.resbin368 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl_VE.resbin368 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue.resbin12080 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_CN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_HK.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hans.resbin13360 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hans_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hant.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hant_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/za.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zgh.resbin912 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh.resbin16224 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_CN.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_HK.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans_CN.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans_SG.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant.resbin12848 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_HK.resbin1760 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_MO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_TW.resbin80 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_MO.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_SG.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_TW.resbin112 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zu.resbin20336 -> 0 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/af.resbin0 -> 13872 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/agq.resbin0 -> 928 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ak.resbin0 -> 1136 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/am.resbin0 -> 14320 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar.resbin0 -> 24720 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_EG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_LY.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_SA.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_XB.resbin0 -> 56240 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ars.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/as.resbin0 -> 16016 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/asa.resbin0 -> 544 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ast.resbin0 -> 21600 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az.resbin0 -> 16256 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_AZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Cyrl.resbin0 -> 5536 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Latn_AZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bas.resbin0 -> 1392 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/be.resbin0 -> 16896 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bem.resbin0 -> 1312 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bez.resbin0 -> 1088 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bg.resbin0 -> 20288 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bgc.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bho.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/blo.resbin0 -> 3392 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bm.resbin0 -> 1200 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bn.resbin0 -> 24912 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bn_IN.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bo.resbin0 -> 672 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/br.resbin0 -> 23088 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/brx.resbin0 -> 19696 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs.resbin0 -> 18880 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Cyrl.resbin0 -> 14048 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Latn_BA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ca.resbin0 -> 22528 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ccp.resbin0 -> 33840 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ce.resbin0 -> 8048 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ceb.resbin0 -> 1488 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cgg.resbin0 -> 416 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/chr.resbin0 -> 10640 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ckb.resbin0 -> 8192 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cs.resbin0 -> 28496 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/csw.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cv.resbin0 -> 1568 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cy.resbin0 -> 18912 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/da.resbin0 -> 17792 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dav.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de.resbin0 -> 20112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de_AT.resbin0 -> 432 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de_CH.resbin0 -> 992 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dje.resbin0 -> 320 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/doi.resbin0 -> 976 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dsb.resbin0 -> 10080 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dua.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dyo.resbin0 -> 672 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dz.resbin0 -> 7216 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ebu.resbin0 -> 656 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ee.resbin0 -> 9088 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/el.resbin0 -> 26224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en.resbin0 -> 26992 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_001.resbin0 -> 656 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_150.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AU.resbin0 -> 496 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CA.resbin0 -> 3760 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CX.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ER.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FJ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GB.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IN.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_JE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_JM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_RH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_RW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SB.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SD.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SE.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SI.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SX.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TT.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_UG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VC.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_WS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_XA.resbin0 -> 68528 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/eo.resbin0 -> 2864 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es.resbin0 -> 15696 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_419.resbin0 -> 2016 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_AR.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BO.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CL.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CO.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CR.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_DO.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_EC.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_GT.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_HN.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_MX.resbin0 -> 816 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_NI.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PA.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PE.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PR.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PY.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_SV.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_US.resbin0 -> 832 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_UY.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_VE.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/et.resbin0 -> 25808 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/eu.resbin0 -> 30832 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ewo.resbin0 -> 1536 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fa.resbin0 -> 19936 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fa_AF.resbin0 -> 784 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff.resbin0 -> 1056 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Adlm.resbin0 -> 37840 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_CM.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_GN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_CM.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_GN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_MR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_SN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_MR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_SN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fi.resbin0 -> 33920 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fil.resbin0 -> 14576 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fil_PH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fo.resbin0 -> 10288 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr.resbin0 -> 23776 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_BE.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_CA.resbin0 -> 2512 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_CH.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fur.resbin0 -> 6240 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fy.resbin0 -> 16224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ga.resbin0 -> 25728 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gd.resbin0 -> 28752 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gl.resbin0 -> 13344 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gsw.resbin0 -> 11744 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gu.resbin0 -> 21504 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/guz.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gv.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ha.resbin0 -> 13536 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ha_NE.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/haw.resbin0 -> 992 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/he.resbin0 -> 25472 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/he_IL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hi.resbin0 -> 14176 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hi_Latn.resbin0 -> 4416 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hr.resbin0 -> 16736 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hsb.resbin0 -> 10160 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hu.resbin0 -> 22576 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hy.resbin0 -> 18592 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ia.resbin0 -> 9664 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/id.resbin0 -> 18624 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/id_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ie.resbin0 -> 208 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ig.resbin0 -> 13680 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ii.resbin0 -> 464 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/in.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/in_ID.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/is.resbin0 -> 19392 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/it.resbin0 -> 22192 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/iw.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/iw_IL.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ja.resbin0 -> 19392 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jgo.resbin0 -> 576 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jmc.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jv.resbin0 -> 8064 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ka.resbin0 -> 20192 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kab.resbin0 -> 880 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kam.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kde.resbin0 -> 1168 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kea.resbin0 -> 6272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kgp.resbin0 -> 22576 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/khq.resbin0 -> 320 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ki.resbin0 -> 432 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kk.resbin0 -> 31216 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kkj.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kl.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kln.resbin0 -> 1600 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/km.resbin0 -> 15120 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kn.resbin0 -> 22848 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ko.resbin0 -> 15728 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kok.resbin0 -> 11552 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks.resbin0 -> 14640 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Arab_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Deva.resbin0 -> 2320 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksb.resbin0 -> 624 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksf.resbin0 -> 992 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksh.resbin0 -> 17312 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ku.resbin0 -> 10768 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kw.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv.resbin0 -> 1840 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Deva.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Latn_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Orya.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Telu.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ky.resbin0 -> 17456 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lag.resbin0 -> 1152 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lb.resbin0 -> 20640 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lg.resbin0 -> 1152 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lij.resbin0 -> 176 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lkt.resbin0 -> 4864 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lmo.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ln.resbin0 -> 976 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lo.resbin0 -> 21792 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lrc.resbin0 -> 5472 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lt.resbin0 -> 28512 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lu.resbin0 -> 864 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/luo.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/luy.resbin0 -> 320 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lv.resbin0 -> 22336 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mai.resbin0 -> 9584 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mas.resbin0 -> 1872 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mer.resbin0 -> 784 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mfe.resbin0 -> 688 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mg.resbin0 -> 928 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mgh.resbin0 -> 944 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mgo.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mi.resbin0 -> 14192 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mk.resbin0 -> 20128 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ml.resbin0 -> 24624 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mn.resbin0 -> 16864 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni.resbin0 -> 1856 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_Beng.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_Beng_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mo.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mr.resbin0 -> 15728 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ms.resbin0 -> 16176 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mt.resbin0 -> 8848 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mua.resbin0 -> 896 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/my.resbin0 -> 17120 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mzn.resbin0 -> 4224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/naq.resbin0 -> 1360 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nb.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nd.resbin0 -> 1136 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nds.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ne.resbin0 -> 19504 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nl.resbin0 -> 23168 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nmg.resbin0 -> 1296 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nn.resbin0 -> 6320 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nn_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nnh.resbin0 -> 672 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no.resbin0 -> 20864 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no_NO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no_NO_NY.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nqo.resbin0 -> 11360 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nus.resbin0 -> 1536 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nyn.resbin0 -> 448 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/oc.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/om.resbin0 -> 2768 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/or.resbin0 -> 19776 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/os.resbin0 -> 2256 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa.resbin0 -> 14016 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Arab.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Arab_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Guru.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Guru_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pcm.resbin0 -> 19056 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pl.resbin0 -> 24560 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pool.resbin0 -> 139824 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/prg.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ps.resbin0 -> 12608 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ps_PK.resbin0 -> 336 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt.resbin0 -> 20304 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_AO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_CH.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_CV.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_GQ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_GW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_LU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_MO.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_MZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_PT.resbin0 -> 8912 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_ST.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_TL.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/qu.resbin0 -> 18016 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/raj.resbin0 -> 128 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/res_index.resbin0 -> 4832 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rm.resbin0 -> 13024 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rn.resbin0 -> 816 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ro.resbin0 -> 25264 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ro_MD.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rof.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/root.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ru.resbin0 -> 24400 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rw.resbin0 -> 2608 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rwk.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sa.resbin0 -> 1632 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sah.resbin0 -> 2240 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/saq.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat.resbin0 -> 2224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_Olck.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_Olck_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sbp.resbin0 -> 1264 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sc.resbin0 -> 23088 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd.resbin0 -> 12512 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Arab.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Arab_PK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Deva.resbin0 -> 2208 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Deva_IN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_PK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/se.resbin0 -> 4144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/se_FI.resbin0 -> 1536 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/seh.resbin0 -> 384 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ses.resbin0 -> 304 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sg.resbin0 -> 944 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi.resbin0 -> 704 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Latn.resbin0 -> 896 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_MA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Tfng.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Tfng_MA.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/si.resbin0 -> 15088 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sk.resbin0 -> 21232 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sl.resbin0 -> 29696 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/smn.resbin0 -> 9168 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sn.resbin0 -> 784 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/so.resbin0 -> 23808 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sq.resbin0 -> 25680 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr.resbin0 -> 13632 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_BA.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_CS.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_BA.resbin0 -> 1072 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_ME.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_XK.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn.resbin0 -> 16016 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_BA.resbin0 -> 1040 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_CS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_ME.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_XK.resbin0 -> 192 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_YU.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_ME.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_RS.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_XK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_YU.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su.resbin0 -> 1184 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_ID.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_Latn_ID.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sv.resbin0 -> 27968 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sv_FI.resbin0 -> 160 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw.resbin0 -> 16544 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw_CD.resbin0 -> 592 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw_KE.resbin0 -> 5168 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/syr.resbin0 -> 3296 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/szl.resbin0 -> 224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ta.resbin0 -> 23760 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/te.resbin0 -> 23280 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/teo.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tg.resbin0 -> 7792 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/th.resbin0 -> 26528 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ti.resbin0 -> 7232 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ti_ER.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tk.resbin0 -> 19296 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tl.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tl_PH.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/to.resbin0 -> 38832 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tok.resbin0 -> 544 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tr.resbin0 -> 27936 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tt.resbin0 -> 2864 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/twq.resbin0 -> 288 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tzm.resbin0 -> 992 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ug.resbin0 -> 21968 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uk.resbin0 -> 25904 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ur.resbin0 -> 15152 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ur_IN.resbin0 -> 528 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz.resbin0 -> 12304 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_AF.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Arab.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Arab_AF.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Cyrl.resbin0 -> 7552 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Latn.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Latn_UZ.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_UZ.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai.resbin0 -> 656 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_LR.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Latn.resbin0 -> 928 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Vaii.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Vaii_LR.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vec.resbin0 -> 14128 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vi.resbin0 -> 33840 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vmw.resbin0 -> 144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vun.resbin0 -> 272 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/wae.resbin0 -> 3456 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/wo.resbin0 -> 3568 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xh.resbin0 -> 2144 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xnr.resbin0 -> 4784 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xog.resbin0 -> 1168 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yav.resbin0 -> 992 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yi.resbin0 -> 3712 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yo.resbin0 -> 18048 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yo_BJ.resbin0 -> 6400 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl.resbin0 -> 23248 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl_CO.resbin0 -> 368 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl_VE.resbin0 -> 368 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue.resbin0 -> 12080 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_CN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_HK.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hans.resbin0 -> 13360 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hans_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hant.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hant_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/za.resbin0 -> 240 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zgh.resbin0 -> 912 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh.resbin0 -> 16224 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_CN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_HK.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans_CN.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans_SG.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant.resbin0 -> 12848 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_HK.resbin0 -> 1744 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_MO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_TW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_MO.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_SG.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_TW.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zu.resbin0 -> 20272 bytes
-rw-r--r--icu4j/main/localespi/pom.xml2
-rw-r--r--icu4j/main/localespi/src/main/java/com/ibm/icu/impl/jdkadapter/CalendarICU.java2
-rw-r--r--icu4j/main/localespi/src/test/java/com/ibm/icu/dev/test/localespi/NumberFormatTest.java2
-rw-r--r--icu4j/main/regiondata/pom.xml2
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Adlm.resbin14688 -> 0 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hi_Latn.resbin240 -> 0 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks.resbin7344 -> 0 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/res_index.resbin4784 -> 0 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/root.resbin96 -> 0 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/af.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/af.res)bin4992 -> 4992 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/agq.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/agq.res)bin5584 -> 5584 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ak.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ak.res)bin3824 -> 3824 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/am.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/am.res)bin5808 -> 5808 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar.res)bin7424 -> 7424 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_AE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_AE.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_LY.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_LY.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_SA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_SA.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_XB.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_XB.res)bin11568 -> 11568 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ars.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ars.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/as.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/as.res)bin7984 -> 7984 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/asa.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/asa.res)bin3232 -> 3232 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ast.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ast.res)bin4016 -> 4016 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az.res)bin6432 -> 6432 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_AZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_AZ.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Cyrl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Cyrl.res)bin5408 -> 5408 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Latn_AZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Latn_AZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bas.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bas.res)bin5136 -> 5136 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/be.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/be.res)bin7616 -> 7616 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bem.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bem.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bez.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bez.res)bin6192 -> 6192 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bg.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bg.res)bin4928 -> 4928 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bgc.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bgc.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bho.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bho.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/blo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/blo.res)bin8912 -> 8912 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bm.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bm.res)bin4144 -> 4144 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bn.res)bin8080 -> 8080 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bn_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bn_IN.res)bin400 -> 400 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bo.res)bin416 -> 416 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bo_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bo_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/br.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/br.res)bin4800 -> 4800 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/brx.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/brx.res)bin7216 -> 7216 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs.res)bin2416 -> 2416 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_BA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_BA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Cyrl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Cyrl.res)bin2432 -> 2432 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Latn_BA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Latn_BA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ca.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ca.res)bin4848 -> 4848 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ccp.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ccp.res)bin13968 -> 13968 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ce.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ce.res)bin5648 -> 5648 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ceb.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ceb.res)bin1536 -> 1536 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cgg.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cgg.res)bin1584 -> 1584 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/chr.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/chr.res)bin5936 -> 5936 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ckb.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ckb.res)bin7312 -> 7312 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cs.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cs.res)bin5056 -> 5056 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/csw.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/csw.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cv.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cv.res)bin5088 -> 5088 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cy.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cy.res)bin5584 -> 5584 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/da.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/da.res)bin3824 -> 3824 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dav.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dav.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de.res)bin3840 -> 3840 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de_AT.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de_AT.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de_CH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de_CH.res)bin208 -> 208 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dje.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dje.res)bin1056 -> 1056 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/doi.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/doi.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dsb.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dsb.res)bin4032 -> 4032 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dua.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dua.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dyo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dyo.res)bin1360 -> 1360 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dz.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dz.res)bin9024 -> 9024 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ebu.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ebu.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ee.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ee.res)bin11328 -> 11328 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/el.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/el.res)bin8400 -> 8400 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en.res)bin1408 -> 1408 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_001.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_001.res)bin336 -> 336 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_150.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_150.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AI.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AT.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AT.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AU.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BB.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BB.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BW.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CA.res)bin464 -> 464 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CC.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CX.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CX.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CY.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ER.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ER.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FI.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FJ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FJ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GB.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GB.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GD.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GD.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GI.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GY.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_HK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_HK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ID.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ID.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IL.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_JE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_JE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_JM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_JM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KI.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KY.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LC.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MT.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MT.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MV.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MV.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MW.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MY.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NF.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NF.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NH.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NL.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PW.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_RH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_RH.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_RW.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_RW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SB.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SB.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SC.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SD.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SD.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SE.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SI.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SI.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SL.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SX.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SX.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TC.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TT.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TT.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TV.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TV.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_UG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_UG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VC.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VC.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_WS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_WS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_XA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_XA.res)bin14416 -> 14416 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZW.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/eo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/eo.res)bin5360 -> 5360 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es.res)bin2208 -> 2208 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_419.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_419.res)bin752 -> 752 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_AR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_AR.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BO.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CL.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CL.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CO.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CR.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_DO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_DO.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_EC.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_EC.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_GT.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_GT.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_HN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_HN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_MX.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_MX.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_NI.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_NI.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PE.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PR.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PY.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PY.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_SV.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_SV.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_US.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_US.res)bin176 -> 176 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_UY.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_UY.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_VE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_VE.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/et.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/et.res)bin5392 -> 5392 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/eu.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/eu.res)bin5232 -> 5232 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ewo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ewo.res)bin5072 -> 5072 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fa.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fa.res)bin5840 -> 5840 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fa_AF.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fa_AF.res)bin1632 -> 1632 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff.res)bin5024 -> 5024 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Adlm.resbin0 -> 14688 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_CM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_CM.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_GN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_GN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_CM.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_CM.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_GN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_GN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_MR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_MR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_SN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_SN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_MR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_MR.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_SN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_SN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fi.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fi.res)bin4784 -> 4784 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fil.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fil.res)bin2288 -> 2288 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fil_PH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fil_PH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fo.res)bin4784 -> 4784 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr.res)bin5600 -> 5600 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr_BE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr_BE.res)bin176 -> 176 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr_CA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr_CA.res)bin1280 -> 1280 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fur.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fur.res)bin5344 -> 5344 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fy.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fy.res)bin3856 -> 3856 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ga.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ga.res)bin9056 -> 9056 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gd.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gd.res)bin9120 -> 9120 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gl.res)bin3584 -> 3584 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gsw.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gsw.res)bin6032 -> 6032 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gu.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gu.res)bin8240 -> 8240 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/guz.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/guz.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gv.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gv.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ha.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ha.res)bin6784 -> 6784 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/haw.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/haw.res)bin512 -> 512 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/he.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/he.res)bin7184 -> 7184 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/he_IL.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/he_IL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hi.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hi.res)bin2608 -> 2608 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hi_Latn.resbin0 -> 256 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hr.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hr.res)bin3456 -> 3456 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hsb.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hsb.res)bin3616 -> 3616 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hu.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hu.res)bin6320 -> 6320 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hy.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hy.res)bin8560 -> 8560 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ia.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ia.res)bin4240 -> 4240 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/id.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/id.res)bin3312 -> 3312 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/id_ID.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/id_ID.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ie.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ie.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ig.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ig.res)bin4208 -> 4208 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ii.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ii.res)bin208 -> 208 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/in.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/in.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/in_ID.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/in_ID.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/is.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/is.res)bin6960 -> 6960 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/it.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/it.res)bin4352 -> 4352 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/iw.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/iw.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/iw_IL.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/iw_IL.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ja.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ja.res)bin5168 -> 5168 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jgo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jgo.res)bin1824 -> 1824 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jmc.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jmc.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jv.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jv.res)bin5680 -> 5680 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ka.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ka.res)bin8576 -> 8576 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kab.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kab.res)bin4448 -> 4448 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kam.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kam.res)bin1200 -> 1200 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kde.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kde.res)bin2752 -> 2752 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kea.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kea.res)bin5744 -> 5744 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kgp.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kgp.res)bin7792 -> 7792 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/khq.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/khq.res)bin1008 -> 1008 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ki.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ki.res)bin1184 -> 1184 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kk.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kk.res)bin4704 -> 4704 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kkj.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kkj.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kl.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kln.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kln.res)bin8416 -> 8416 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/km.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/km.res)bin8080 -> 8080 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kn.res)bin8608 -> 8608 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ko.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ko.res)bin4640 -> 4640 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ko_KP.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ko_KP.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kok.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kok.res)bin5536 -> 5536 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks.resbin0 -> 7344 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Arab.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Arab.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Arab_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Arab_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Deva.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Deva.res)bin272 -> 272 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksb.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksb.res)bin2416 -> 2416 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksf.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksf.res)bin4784 -> 4784 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksh.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksh.res)bin8000 -> 8000 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ku.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ku.res)bin6976 -> 6976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kw.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kw.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv.res)bin6368 -> 6368 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Deva.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Deva.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_IN.resbin0 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_Beng.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Latn_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_Beng_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Orya.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Orya.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Telu.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Telu.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ky.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ky.res)bin4192 -> 4192 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lag.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lag.res)bin5632 -> 5632 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lb.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lb.res)bin3472 -> 3472 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lg.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lg.res)bin2704 -> 2704 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lij.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lij.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lkt.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lkt.res)bin560 -> 560 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lmo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lmo.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ln.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ln.res)bin4832 -> 4832 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lo.res)bin7648 -> 7648 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lrc.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lrc.res)bin560 -> 560 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lt.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lt.res)bin7152 -> 7152 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lu.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lu.res)bin4352 -> 4352 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/luo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/luo.res)bin1600 -> 1600 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/luy.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/luy.res)bin1008 -> 1008 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lv.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lv.res)bin7456 -> 7456 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mai.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mai.res)bin4272 -> 4272 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mas.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mas.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mer.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mer.res)bin2720 -> 2720 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mfe.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mfe.res)bin3120 -> 3120 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mg.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mg.res)bin3760 -> 3760 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mgh.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mgh.res)bin3104 -> 3104 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mgo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mgo.res)bin144 -> 144 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mi.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mi.res)bin8224 -> 8224 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mk.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mk.res)bin3968 -> 3968 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ml.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ml.res)bin8448 -> 8448 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mn.res)bin5696 -> 5696 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni.res)bin400 -> 400 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_Beng.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Guru.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_Beng_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nn_NO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mo.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mr.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mr.res)bin5472 -> 5472 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ms.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ms.res)bin2976 -> 2976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mt.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mt.res)bin7232 -> 7232 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mua.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mua.res)bin4448 -> 4448 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/my.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/my.res)bin8672 -> 8672 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mzn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mzn.res)bin5504 -> 5504 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/naq.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/naq.res)bin3264 -> 3264 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nb.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nb.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nd.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nd.res)bin2192 -> 2192 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nds.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nds.res)bin144 -> 144 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ne.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ne.res)bin6544 -> 6544 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nl.res)bin3968 -> 3968 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nmg.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nmg.res)bin3616 -> 3616 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nn.res)bin1744 -> 1744 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nn_NO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Arab_PK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nnh.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nnh.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no.res)bin3824 -> 3824 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no_NO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no_NO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no_NO_NY.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no_NO_NY.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nqo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nqo.res)bin8480 -> 8480 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nus.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nus.res)bin1248 -> 1248 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nyn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nyn.res)bin1632 -> 1632 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/oc.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/oc.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/om.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/om.res)bin176 -> 176 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/or.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/or.res)bin8304 -> 8304 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/os.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/os.res)bin384 -> 384 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa.res)bin7440 -> 7440 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Arab.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Arab.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Arab_PK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Guru_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Guru.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_Olck.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Guru_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_Olck_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_PK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_PK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pcm.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pcm.res)bin7408 -> 7408 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pl.res)bin5872 -> 5872 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pool.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pool.res)bin83440 -> 83440 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/prg.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/prg.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ps.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ps.res)bin6432 -> 6432 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ps_PK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ps_PK.res)bin208 -> 208 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt.res)bin4080 -> 4080 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_AO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_AO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_CH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_CH.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_CV.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_CV.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_GQ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_GQ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_GW.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_GW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_LU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_LU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_MO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_MO.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_MZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_MZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_PT.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_PT.res)bin1872 -> 1872 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_ST.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_ST.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_TL.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_TL.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/qu.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/qu.res)bin2432 -> 2432 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/raj.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/raj.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/res_index.resbin0 -> 4832 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rm.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rm.res)bin4496 -> 4496 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rn.res)bin4608 -> 4608 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ro.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ro.res)bin5344 -> 5344 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ro_MD.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ro_MD.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rof.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rof.res)bin1088 -> 1088 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/root.resbin0 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ru.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ru.res)bin4576 -> 4576 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ru_UA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ru_UA.res)bin464 -> 464 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rw.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rw.res)bin176 -> 176 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rwk.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rwk.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sa.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sa.res)bin336 -> 336 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sah.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sah.res)bin528 -> 528 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/saq.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/saq.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat.res)bin320 -> 320 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_Olck.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Arab.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_Olck_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Arab_PK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sbp.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sbp.res)bin3936 -> 3936 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sc.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sc.res)bin6224 -> 6224 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd.res)bin6512 -> 6512 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Arab.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Tfng.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Arab_PK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Deva_IN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Deva.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Deva.res)bin192 -> 192 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Deva_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Tfng_MA.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_IN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_PK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_PK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/se.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/se.res)bin4304 -> 4304 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/se_FI.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/se_FI.res)bin704 -> 704 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/seh.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/seh.res)bin2000 -> 2000 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ses.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ses.res)bin1008 -> 1008 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sg.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sg.res)bin5504 -> 5504 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_BA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_BA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_CS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_CS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_YU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_YU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi.res)bin3184 -> 3184 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Latn.res)bin5136 -> 5136 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_MA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_MA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Tfng.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Tfng_MA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_RS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/si.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/si.res)bin8448 -> 8448 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sk.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sk.res)bin4928 -> 4928 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sl.res)bin4544 -> 4544 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/smn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/smn.res)bin3632 -> 3632 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sn.res)bin1584 -> 1584 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/so.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/so.res)bin7936 -> 7936 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sq.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sq.res)bin6176 -> 6176 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr.res)bin2816 -> 2816 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_BA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_BA.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_CS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_CS.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_BA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_BA.res)bin800 -> 800 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_CS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_CS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_ME.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_ME.res)bin240 -> 240 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_RS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_RS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_XK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_XK.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_YU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_YU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn.res)bin3376 -> 3376 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_BA.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_BA.res)bin720 -> 720 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_CS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_CS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_ME.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_ME.res)bin240 -> 240 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_RS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_Latn_ID.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_XK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_XK.res)bin144 -> 144 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_YU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_YU.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_ME.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_ME.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_RS.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_RS.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_XK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_XK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_YU.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_YU.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su.res)bin240 -> 240 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_ID.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_ID.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Latn.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_Latn_ID.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Arab_AF.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sv.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sv.res)bin4288 -> 4288 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw.res)bin4128 -> 4128 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw_CD.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw_CD.res)bin272 -> 272 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw_KE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw_KE.res)bin1488 -> 1488 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/syr.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/syr.res)bin6736 -> 6736 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/szl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/szl.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ta.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ta.res)bin8640 -> 8640 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/te.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/te.res)bin8560 -> 8560 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/teo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/teo.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tg.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tg.res)bin3888 -> 3888 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/th.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/th.res)bin8016 -> 8016 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ti.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ti.res)bin5584 -> 5584 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tk.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tk.res)bin6832 -> 6832 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tl.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tl_PH.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tl_PH.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/to.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/to.res)bin8288 -> 8288 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tok.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tok.res)bin160 -> 160 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tr.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tr.res)bin5696 -> 5696 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tt.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tt.res)bin3344 -> 3344 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/twq.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/twq.res)bin1008 -> 1008 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tzm.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tzm.res)bin4816 -> 4816 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ug.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ug.res)bin8048 -> 8048 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uk.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uk.res)bin6912 -> 6912 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ur.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ur.res)bin6368 -> 6368 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ur_IN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ur_IN.res)bin864 -> 864 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz.res)bin6416 -> 6416 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_AF.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_AF.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Arab.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Arab.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Arab_AF.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Latn_UZ.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Cyrl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Cyrl.res)bin4672 -> 4672 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Vaii.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Latn_UZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Vaii_LR.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_UZ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_UZ.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai.res)bin4464 -> 4464 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_LR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_LR.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Latn.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Latn.res)bin5040 -> 5040 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Vaii.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hant.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Vaii_LR.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hans_CN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vec.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vec.res)bin5504 -> 5504 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vi.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vi.res)bin4544 -> 4544 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vmw.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vmw.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vun.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vun.res)bin976 -> 976 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/wae.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/wae.res)bin4224 -> 4224 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/wo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/wo.res)bin4880 -> 4880 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xh.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xh.res)bin3680 -> 3680 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xnr.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xnr.res)bin3440 -> 3440 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xog.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xog.res)bin2592 -> 2592 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yav.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yav.res)bin5136 -> 5136 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yi.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yi.res)bin5648 -> 5648 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yo.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yo.res)bin7296 -> 7296 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yo_BJ.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yo_BJ.res)bin3536 -> 3536 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl.res)bin8160 -> 8160 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl_CO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl_CO.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl_VE.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl_VE.res)bin128 -> 128 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue.res)bin3648 -> 3648 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_CN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_CN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_HK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_HK.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hans.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hans.res)bin3696 -> 3696 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hans_CN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hant_HK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hant.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hant_HK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans_CN.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/za.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/za.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zgh.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zgh.res)bin3248 -> 3248 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh.res)bin3792 -> 3792 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_CN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_CN.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_HK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_HK.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans_CN.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans_SG.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans_SG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_TW.res)bin80 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant.res)bin3632 -> 3632 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_HK.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_HK.res)bin1456 -> 1456 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_MO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_MO.res)bin96 -> 96 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_TW.resbin0 -> 80 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_MO.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_MO.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_SG.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_SG.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_TW.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_TW.res)bin112 -> 112 bytes
-rw-r--r--icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zu.res (renamed from icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zu.res)bin6976 -> 6976 bytes
-rw-r--r--icu4j/main/shared/data/icudata.jarbin12333607 -> 12327213 bytes
-rw-r--r--icu4j/main/shared/data/icutzdata.jarbin95067 -> 95001 bytes
-rw-r--r--icu4j/main/shared/data/testdata.jarbin832121 -> 832080 bytes
-rw-r--r--icu4j/main/translit/pom.xml2
-rw-r--r--icu4j/main/translit/src/main/java/com/ibm/icu/text/AnyTransliterator.java2
-rw-r--r--icu4j/main/translit/src/main/java/com/ibm/icu/text/Transliterator.java19
-rw-r--r--icu4j/main/translit/src/main/java/com/ibm/icu/text/TransliteratorRegistry.java43
-rw-r--r--icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/el.res (renamed from icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/el.res)bin160 -> 160 bytes
-rw-r--r--icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/en.res (renamed from icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/en.res)bin320 -> 320 bytes
-rw-r--r--icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/root.res (renamed from icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/root.res)bin1092784 -> 1092784 bytes
-rw-r--r--icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java4
-rw-r--r--icu4j/maven-migration/pom.xml2
-rw-r--r--icu4j/perf-tests/pom.xml2
-rw-r--r--icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java2
-rw-r--r--icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java18
-rw-r--r--icu4j/pom.xml59
-rwxr-xr-xicu4j/releases_tools/shared.sh8
-rw-r--r--icu4j/samples/pom.xml2
-rw-r--r--icu4j/tools/build/icu4j65.api3.gzbin62538 -> 0 bytes
-rw-r--r--icu4j/tools/build/icu4j75.api3.gzbin0 -> 68722 bytes
-rw-r--r--icu4j/tools/build/pom.xml2
-rw-r--r--icu4j/tools/build/src/main/java/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java27
-rw-r--r--icu4j/tools/misc/pom.xml2
-rw-r--r--icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java2
-rw-r--r--icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java2
-rw-r--r--icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java2
-rw-r--r--icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java4
-rw-r--r--icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java2
-rw-r--r--icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java2
-rw-r--r--icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/timezone/ICUZDump.java2
-rw-r--r--icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java2
-rw-r--r--icu4j/tools/utilities-for-cldr/pom.xml2
-rw-r--r--libandroidicu/include/unicode/platform.h62
-rw-r--r--libandroidicu/include/unicode/ptypes.h86
-rw-r--r--libandroidicu/include/unicode/ucal.h9
-rw-r--r--libandroidicu/include/unicode/uchar.h145
-rw-r--r--libandroidicu/include/unicode/ucnv.h3
-rw-r--r--libandroidicu/include/unicode/uconfig.h12
-rw-r--r--libandroidicu/include/unicode/uloc.h25
-rw-r--r--libandroidicu/include/unicode/umachine.h14
-rw-r--r--libandroidicu/include/unicode/urename.h9
-rw-r--r--libandroidicu/include/unicode/uscript.h5
-rw-r--r--libandroidicu/include/unicode/uset.h4
-rw-r--r--libandroidicu/include/unicode/usimplenumberformatter.h309
-rw-r--r--libandroidicu/include/unicode/utypes.h18
-rw-r--r--libandroidicu/include/unicode/uvernum.h12
-rw-r--r--libandroidicu/static_shim/shim.cpp1
-rw-r--r--libicu/cts_headers/astro.h295
-rw-r--r--libicu/cts_headers/brktrans.h2
-rw-r--r--libicu/cts_headers/buddhcal.h22
-rw-r--r--libicu/cts_headers/bytesinkutil.h112
-rw-r--r--libicu/cts_headers/cecal.h21
-rw-r--r--libicu/cts_headers/charstr.h7
-rw-r--r--libicu/cts_headers/chnsecal.h84
-rw-r--r--libicu/cts_headers/coptccal.h17
-rw-r--r--libicu/cts_headers/cpdtrans.h2
-rw-r--r--libicu/cts_headers/dangical.h4
-rw-r--r--libicu/cts_headers/double-conversion-cached-powers.h8
-rw-r--r--libicu/cts_headers/dtptngen_impl.h2
-rw-r--r--libicu/cts_headers/ethpccal.h17
-rw-r--r--libicu/cts_headers/formatted_string_builder.h6
-rw-r--r--libicu/cts_headers/gregoimp.h85
-rw-r--r--libicu/cts_headers/hash.h10
-rw-r--r--libicu/cts_headers/hebrwcal.h30
-rw-r--r--libicu/cts_headers/indiancal.h24
-rw-r--r--libicu/cts_headers/islamcal.h76
-rw-r--r--libicu/cts_headers/iso8601cal.h2
-rw-r--r--libicu/cts_headers/japancal.h23
-rw-r--r--libicu/cts_headers/localefallback_data.h2064
-rw-r--r--libicu/cts_headers/locdistance.h10
-rw-r--r--libicu/cts_headers/loclikelysubtags.h17
-rw-r--r--libicu/cts_headers/locutil.h2
-rw-r--r--libicu/cts_headers/measunit_impl.h4
-rw-r--r--libicu/cts_headers/messageformat2_allocation.h147
-rw-r--r--libicu/cts_headers/messageformat2_checker.h97
-rw-r--r--libicu/cts_headers/messageformat2_errors.h160
-rw-r--r--libicu/cts_headers/messageformat2_evaluation.h209
-rw-r--r--libicu/cts_headers/messageformat2_function_registry_internal.h233
-rw-r--r--libicu/cts_headers/messageformat2_macros.h113
-rw-r--r--libicu/cts_headers/messageformat2_parser.h184
-rw-r--r--libicu/cts_headers/messageformat2_serializer.h75
-rw-r--r--libicu/cts_headers/name2uni.h2
-rw-r--r--libicu/cts_headers/nfrule.h5
-rw-r--r--libicu/cts_headers/normalizer2impl.h8
-rw-r--r--libicu/cts_headers/number_affixutils.h7
-rw-r--r--libicu/cts_headers/number_asformat.h7
-rw-r--r--libicu/cts_headers/number_compact.h8
-rw-r--r--libicu/cts_headers/number_currencysymbols.h9
-rw-r--r--libicu/cts_headers/number_decimalquantity.h17
-rw-r--r--libicu/cts_headers/number_decimfmtprops.h7
-rw-r--r--libicu/cts_headers/number_decnum.h6
-rw-r--r--libicu/cts_headers/number_formatimpl.h7
-rw-r--r--libicu/cts_headers/number_longnames.h7
-rw-r--r--libicu/cts_headers/number_mapper.h12
-rw-r--r--libicu/cts_headers/number_microprops.h7
-rw-r--r--libicu/cts_headers/number_modifiers.h15
-rw-r--r--libicu/cts_headers/number_multiplier.h9
-rw-r--r--libicu/cts_headers/number_patternmodifier.h8
-rw-r--r--libicu/cts_headers/number_patternstring.h7
-rw-r--r--libicu/cts_headers/number_roundingutils.h6
-rw-r--r--libicu/cts_headers/number_scientific.h9
-rw-r--r--libicu/cts_headers/number_skeletons.h6
-rw-r--r--libicu/cts_headers/number_types.h14
-rw-r--r--libicu/cts_headers/number_usageprefs.h13
-rw-r--r--libicu/cts_headers/number_utils.h6
-rw-r--r--libicu/cts_headers/number_utypes.h9
-rw-r--r--libicu/cts_headers/numparse_affixes.h13
-rw-r--r--libicu/cts_headers/numparse_compositions.h6
-rw-r--r--libicu/cts_headers/numparse_currency.h8
-rw-r--r--libicu/cts_headers/numparse_decimal.h8
-rw-r--r--libicu/cts_headers/numparse_impl.h6
-rw-r--r--libicu/cts_headers/numparse_scientific.h9
-rw-r--r--libicu/cts_headers/numparse_symbols.h9
-rw-r--r--libicu/cts_headers/numparse_types.h7
-rw-r--r--libicu/cts_headers/numparse_utils.h11
-rw-r--r--libicu/cts_headers/numparse_validators.h9
-rw-r--r--libicu/cts_headers/numrange_impl.h9
-rw-r--r--libicu/cts_headers/persncal.h29
-rw-r--r--libicu/cts_headers/pluralranges.h4
-rw-r--r--libicu/cts_headers/propname_data.h1824
-rw-r--r--libicu/cts_headers/rbbinode.h3
-rw-r--r--libicu/cts_headers/rbt.h2
-rw-r--r--libicu/cts_headers/regexcst.h330
-rw-r--r--libicu/cts_headers/ruleiter.h2
-rw-r--r--libicu/cts_headers/string_segment.h2
-rw-r--r--libicu/cts_headers/taiwncal.h21
-rw-r--r--libicu/cts_headers/tznames_impl.h3
-rw-r--r--libicu/cts_headers/ucase.h2
-rw-r--r--libicu/cts_headers/uchar_props_data.h4718
-rw-r--r--libicu/cts_headers/ulocimp.h247
-rw-r--r--libicu/cts_headers/uni2name.h2
-rw-r--r--libicu/cts_headers/unicode/brkiter.h19
-rw-r--r--libicu/cts_headers/unicode/calendar.h85
-rw-r--r--libicu/cts_headers/unicode/caniter.h7
-rw-r--r--libicu/cts_headers/unicode/chariter.h68
-rw-r--r--libicu/cts_headers/unicode/choicfmt.h4
-rw-r--r--libicu/cts_headers/unicode/coleitr.h4
-rw-r--r--libicu/cts_headers/unicode/coll.h10
-rw-r--r--libicu/cts_headers/unicode/datefmt.h13
-rw-r--r--libicu/cts_headers/unicode/dcfmtsym.h4
-rw-r--r--libicu/cts_headers/unicode/decimfmt.h38
-rw-r--r--libicu/cts_headers/unicode/docmain.h5
-rw-r--r--libicu/cts_headers/unicode/dtfmtsym.h8
-rw-r--r--libicu/cts_headers/unicode/dtintrv.h5
-rw-r--r--libicu/cts_headers/unicode/dtitvfmt.h21
-rw-r--r--libicu/cts_headers/unicode/dtptngen.h19
-rw-r--r--libicu/cts_headers/unicode/dtrule.h20
-rw-r--r--libicu/cts_headers/unicode/fieldpos.h8
-rw-r--r--libicu/cts_headers/unicode/fmtable.h23
-rw-r--r--libicu/cts_headers/unicode/formattednumber.h4
-rw-r--r--libicu/cts_headers/unicode/fpositer.h2
-rw-r--r--libicu/cts_headers/unicode/gregocal.h54
-rw-r--r--libicu/cts_headers/unicode/localematcher.h8
-rw-r--r--libicu/cts_headers/unicode/localpointer.h100
-rw-r--r--libicu/cts_headers/unicode/locid.h82
-rw-r--r--libicu/cts_headers/unicode/measfmt.h4
-rw-r--r--libicu/cts_headers/unicode/measunit.h58
-rw-r--r--libicu/cts_headers/unicode/measure.h4
-rw-r--r--libicu/cts_headers/unicode/messageformat2.h399
-rw-r--r--libicu/cts_headers/unicode/messageformat2_arguments.h138
-rw-r--r--libicu/cts_headers/unicode/messageformat2_data_model.h3090
-rw-r--r--libicu/cts_headers/unicode/messageformat2_data_model_names.h42
-rw-r--r--libicu/cts_headers/unicode/messageformat2_formattable.h1017
-rw-r--r--libicu/cts_headers/unicode/messageformat2_function_registry.h429
-rw-r--r--libicu/cts_headers/unicode/msgfmt.h6
-rw-r--r--libicu/cts_headers/unicode/normlzr.h24
-rw-r--r--libicu/cts_headers/unicode/nounit.h2
-rw-r--r--libicu/cts_headers/unicode/numberformatter.h32
-rw-r--r--libicu/cts_headers/unicode/numberrangeformatter.h26
-rw-r--r--libicu/cts_headers/unicode/numfmt.h34
-rw-r--r--libicu/cts_headers/unicode/numsys.h2
-rw-r--r--libicu/cts_headers/unicode/parsepos.h4
-rw-r--r--libicu/cts_headers/unicode/platform.h62
-rw-r--r--libicu/cts_headers/unicode/plurfmt.h7
-rw-r--r--libicu/cts_headers/unicode/plurrule.h2
-rw-r--r--libicu/cts_headers/unicode/ptypes.h86
-rw-r--r--libicu/cts_headers/unicode/rbbi.h30
-rw-r--r--libicu/cts_headers/unicode/rbnf.h23
-rw-r--r--libicu/cts_headers/unicode/rbtz.h12
-rw-r--r--libicu/cts_headers/unicode/resbund.h25
-rw-r--r--libicu/cts_headers/unicode/schriter.h4
-rw-r--r--libicu/cts_headers/unicode/search.h14
-rw-r--r--libicu/cts_headers/unicode/selfmt.h2
-rw-r--r--libicu/cts_headers/unicode/simpleformatter.h4
-rw-r--r--libicu/cts_headers/unicode/simplenumberformatter.h77
-rw-r--r--libicu/cts_headers/unicode/simpletz.h14
-rw-r--r--libicu/cts_headers/unicode/smpdtfmt.h386
-rw-r--r--libicu/cts_headers/unicode/sortkey.h8
-rw-r--r--libicu/cts_headers/unicode/stringpiece.h8
-rw-r--r--libicu/cts_headers/unicode/stsearch.h4
-rw-r--r--libicu/cts_headers/unicode/tblcoll.h4
-rw-r--r--libicu/cts_headers/unicode/timezone.h14
-rw-r--r--libicu/cts_headers/unicode/tmutamt.h6
-rw-r--r--libicu/cts_headers/unicode/tmutfmt.h4
-rw-r--r--libicu/cts_headers/unicode/translit.h20
-rw-r--r--libicu/cts_headers/unicode/tzfmt.h4
-rw-r--r--libicu/cts_headers/unicode/tzrule.h26
-rw-r--r--libicu/cts_headers/unicode/tztrans.h10
-rw-r--r--libicu/cts_headers/unicode/ucal.h9
-rw-r--r--libicu/cts_headers/unicode/uchar.h145
-rw-r--r--libicu/cts_headers/unicode/uchriter.h34
-rw-r--r--libicu/cts_headers/unicode/ucnv.h3
-rw-r--r--libicu/cts_headers/unicode/uconfig.h12
-rw-r--r--libicu/cts_headers/unicode/uloc.h25
-rw-r--r--libicu/cts_headers/unicode/ulocbuilder.h2
-rw-r--r--libicu/cts_headers/unicode/umachine.h14
-rw-r--r--libicu/cts_headers/unicode/unifunct.h4
-rw-r--r--libicu/cts_headers/unicode/uniset.h20
-rw-r--r--libicu/cts_headers/unicode/unistr.h50
-rw-r--r--libicu/cts_headers/unicode/urename.h9
-rw-r--r--libicu/cts_headers/unicode/uscript.h5
-rw-r--r--libicu/cts_headers/unicode/uset.h4
-rw-r--r--libicu/cts_headers/unicode/usimplenumberformatter.h74
-rw-r--r--libicu/cts_headers/unicode/utypes.h18
-rw-r--r--libicu/cts_headers/unicode/uvernum.h12
-rw-r--r--libicu/cts_headers/unicode/vtzone.h8
-rw-r--r--libicu/cts_headers/units_converter.h21
-rw-r--r--libicu/cts_headers/units_data.h3
-rw-r--r--libicu/cts_headers/uprops.h73
-rw-r--r--libicu/ndk_headers/unicode/platform.h62
-rw-r--r--libicu/ndk_headers/unicode/ptypes.h86
-rw-r--r--libicu/ndk_headers/unicode/uchar.h98
-rw-r--r--libicu/ndk_headers/unicode/uconfig.h12
-rw-r--r--libicu/ndk_headers/unicode/uloc.h25
-rw-r--r--libicu/ndk_headers/unicode/umachine.h14
-rw-r--r--libicu/ndk_headers/unicode/urename.h9
-rw-r--r--libicu/ndk_headers/unicode/uscript.h5
-rw-r--r--libicu/ndk_headers/unicode/utypes.h18
-rw-r--r--libicu/ndk_headers/unicode/uvernum.h12
-rw-r--r--tools/cldr/cldr-to-icu/build-icu-data.xml6
-rw-r--r--tools/cldr/cldr-to-icu/pom.xml2
-rw-r--r--tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuFunctions.java12
-rw-r--r--tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java3
-rw-r--r--tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilder.java10
-rw-r--r--tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapper.java6
-rw-r--r--tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt89
-rw-r--r--tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilderTest.java10
-rw-r--r--tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TrieTest.java2
-rw-r--r--tools/icuutil.py4
-rw-r--r--tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java5
-rwxr-xr-xtools/updatecldrdata.py9
9606 files changed, 81494 insertions, 111008 deletions
diff --git a/Android.bp b/Android.bp
index 8c4d9fad6..d188be7d9 100644
--- a/Android.bp
+++ b/Android.bp
@@ -41,7 +41,7 @@ license {
"SPDX-license-identifier-ICU",
"SPDX-license-identifier-ISC",
"SPDX-license-identifier-MIT",
- "SPDX-license-identifier-Unicode-DFS",
+ "SPDX-license-identifier-Unicode-3.0",
"legacy_unencumbered",
],
license_text: [
diff --git a/LICENSE b/LICENSE
index 25b6eb9d3..6fdb4aa2f 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,38 +1,44 @@
-COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
+UNICODE LICENSE V3
-Copyright © 1991-2018 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+COPYRIGHT AND PERMISSION NOTICE
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+Copyright © 2016-2023 Unicode, Inc.
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
----------------------
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+----------------------------------------------------------------------
Third-Party Software Licenses
@@ -40,7 +46,9 @@ This section contains third-party software notices and/or additional
terms for licensed third-party software components included within ICU
libraries.
-1. ICU License - ICU 1.8.1 to ICU 57.1
+----------------------------------------------------------------------
+
+ICU License - ICU 1.8.1 to ICU 57.1
COPYRIGHT AND PERMISSION NOTICE
@@ -75,7 +83,9 @@ of the copyright holder.
All trademarks and registered trademarks mentioned herein are the
property of their respective owners.
-2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt)
+----------------------------------------------------------------------
+
+Chinese/Japanese Word Break Dictionary Data (cjdict.txt)
# The Google Chrome software developed by Google is licensed under
# the BSD license. Other software included in this distribution is
@@ -279,33 +289,33 @@ property of their respective owners.
#
# ---------------COPYING.ipadic-----END----------------------------------
-3. Lao Word Break Dictionary Data (laodict.txt)
+----------------------------------------------------------------------
- # Copyright (c) 2013 International Business Machines Corporation
- # and others. All Rights Reserved.
+Lao Word Break Dictionary Data (laodict.txt)
+
+ # Copyright (C) 2016 and later: Unicode, Inc. and others.
+ # License & terms of use: http://www.unicode.org/copyright.html
+ # Copyright (c) 2015 International Business Machines Corporation
+ # and others. All Rights Reserved.
#
- # Project: http://code.google.com/p/lao-dictionary/
- # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
- # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
- # (copied below)
+ # Project: https://github.com/rober42539/lao-dictionary
+ # Dictionary: https://github.com/rober42539/lao-dictionary/laodict.txt
+ # License: https://github.com/rober42539/lao-dictionary/LICENSE.txt
+ # (copied below)
#
- # This file is derived from the above dictionary, with slight
- # modifications.
+ # This file is derived from the above dictionary version of Nov 22, 2020
# ----------------------------------------------------------------------
# Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
- # modification,
- # are permitted provided that the following conditions are met:
- #
- #
- # Redistributions of source code must retain the above copyright notice, this
- # list of conditions and the following disclaimer. Redistributions in
- # binary form must reproduce the above copyright notice, this list of
- # conditions and the following disclaimer in the documentation and/or
- # other materials provided with the distribution.
+ # modification, are permitted provided that the following conditions are met:
#
+ # Redistributions of source code must retain the above copyright notice, this
+ # list of conditions and the following disclaimer. Redistributions in binary
+ # form must reproduce the above copyright notice, this list of conditions and
+ # the following disclaimer in the documentation and/or other materials
+ # provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@@ -321,7 +331,9 @@ property of their respective owners.
# OF THE POSSIBILITY OF SUCH DAMAGE.
# --------------------------------------------------------------------------
-4. Burmese Word Break Dictionary Data (burmesedict.txt)
+----------------------------------------------------------------------
+
+Burmese Word Break Dictionary Data (burmesedict.txt)
# Copyright (c) 2014 International Business Machines Corporation
# and others. All Rights Reserved.
@@ -361,7 +373,9 @@ property of their respective owners.
# SUCH DAMAGE.
# --------------------------------------------------------------------------
-5. Time Zone Database
+----------------------------------------------------------------------
+
+Time Zone Database
ICU uses the public domain data and code derived from Time Zone
Database for its time zone support. The ownership of the TZ database
@@ -384,7 +398,9 @@ Database section 7.
# making a contribution to the database or code waives all rights to
# future claims in that contribution or in the TZ Database.
-6. Google double-conversion
+----------------------------------------------------------------------
+
+Google double-conversion
Copyright 2006-2011, the V8 project authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -412,3 +428,290 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------
+
+File: aclocal.m4 (only for ICU4C)
+Section: pkg.m4 - Macros to locate and utilise pkg-config.
+
+
+Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+
+As a special exception to the GNU General Public License, if you
+distribute this file as part of a program that contains a
+configuration script generated by Autoconf, you may include it under
+the same distribution terms that you use for the rest of that
+program.
+
+
+(The condition for the exception is fulfilled because
+ICU4C includes a configuration script generated by Autoconf,
+namely the `configure` script.)
+
+----------------------------------------------------------------------
+
+File: config.guess (only for ICU4C)
+
+
+This file is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, see <https://www.gnu.org/licenses/>.
+
+As a special exception to the GNU General Public License, if you
+distribute this file as part of a program that contains a
+configuration script generated by Autoconf, you may include it under
+the same distribution terms that you use for the rest of that
+program. This Exception is an additional permission under section 7
+of the GNU General Public License, version 3 ("GPLv3").
+
+
+(The condition for the exception is fulfilled because
+ICU4C includes a configuration script generated by Autoconf,
+namely the `configure` script.)
+
+----------------------------------------------------------------------
+
+File: install-sh (only for ICU4C)
+
+
+Copyright 1991 by the Massachusetts Institute of Technology
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of M.I.T. not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. M.I.T. makes no representations about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+
+----------------------------------------------------------------------
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/README.version b/README.version
index e27b3a95c..1832b3698 100644
--- a/README.version
+++ b/README.version
@@ -1,3 +1,3 @@
URL: https://github.com/unicode-org/icu
-Version: 74.2
+Version: 75.1
BugComponent: 23970
diff --git a/android_icu4j/Android.bp b/android_icu4j/Android.bp
index c206515b3..33745be72 100644
--- a/android_icu4j/Android.bp
+++ b/android_icu4j/Android.bp
@@ -468,6 +468,7 @@ java_test {
"core-icu4j",
],
static_libs: [
+ "gson",
"junit",
"junit-params",
"tzdata-testing",
diff --git a/android_icu4j/src/icu74/Android.bp b/android_icu4j/src/icu74/Android.bp
new file mode 100644
index 000000000..e9085323e
--- /dev/null
+++ b/android_icu4j/src/icu74/Android.bp
@@ -0,0 +1,46 @@
+//
+// Copyright (C) 2024 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+ default_team: "trendy_team_java_core_libraries",
+ default_visibility: ["//visibility:private"],
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "external_icu_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ // SPDX-license-identifier-BSD
+ // SPDX-license-identifier-ICU
+ // SPDX-license-identifier-MIT
+ // SPDX-license-identifier-Unicode-DFS
+ // legacy_unencumbered
+ default_applicable_licenses: ["external_icu_license"],
+}
+
+// Small static library used by TwilightService in the system server and WallpaperPicker2 app. To
+// avoid @CorePlaformApi, the system server doesn't use CalendarAstronomer in android.icu.
+// Don't link this in boot classpath or Zygote to avoid class collision with the
+// com.ibm.icu.impl.CalendarAstronomer in the app classloader.
+java_library_static {
+ name: "icu4j_calendar_astronomer",
+ host_supported: false,
+ sdk_version: "core_current",
+ srcs: ["main/java/com/ibm/icu/impl/CalendarAstronomer.java"],
+ visibility: [
+ "//frameworks/base/services/core",
+ "//packages/apps/WallpaperPicker2",
+ ],
+}
diff --git a/android_icu4j/src/icu74/main/java/com/ibm/icu/impl/CalendarAstronomer.java b/android_icu4j/src/icu74/main/java/com/ibm/icu/impl/CalendarAstronomer.java
new file mode 100644
index 000000000..1aaaf2b47
--- /dev/null
+++ b/android_icu4j/src/icu74/main/java/com/ibm/icu/impl/CalendarAstronomer.java
@@ -0,0 +1,1674 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2011, International Business Machines Corporation and *
+ * others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * <code>CalendarAstronomer</code> is a class that can perform the calculations to
+ * determine the positions of the sun and moon, the time of sunrise and
+ * sunset, and other astronomy-related data. The calculations it performs
+ * are in some cases quite complicated, and this utility class saves you
+ * the trouble of worrying about them.
+ * <p>
+ * The measurement of time is a very important part of astronomy. Because
+ * astronomical bodies are constantly in motion, observations are only valid
+ * at a given moment in time. Accordingly, each <code>CalendarAstronomer</code>
+ * object has a <code>time</code> property that determines the date
+ * and time for which its calculations are performed. You can set and
+ * retrieve this property with {@link #setDate setDate}, {@link #getDate getDate}
+ * and related methods.
+ * <p>
+ * Almost all of the calculations performed by this class, or by any
+ * astronomer, are approximations to various degrees of accuracy. The
+ * calculations in this class are mostly modelled after those described
+ * in the book
+ * <a href="http://www.amazon.com/exec/obidos/ISBN=0521356997" target="_top">
+ * Practical Astronomy With Your Calculator</a>, by Peter J.
+ * Duffett-Smith, Cambridge University Press, 1990. This is an excellent
+ * book, and if you want a greater understanding of how these calculations
+ * are performed it a very good, readable starting point.
+ * <p>
+ * <strong>WARNING:</strong> This class is very early in its development, and
+ * it is highly likely that its API will change to some degree in the future.
+ * At the moment, it basically does just enough to support {@link com.ibm.icu.util.IslamicCalendar}
+ * and {@link com.ibm.icu.util.ChineseCalendar}.
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @internal
+ */
+public class CalendarAstronomer {
+
+ //-------------------------------------------------------------------------
+ // Astronomical constants
+ //-------------------------------------------------------------------------
+
+ /**
+ * The number of standard hours in one sidereal day.
+ * Approximately 24.93.
+ * @internal
+ */
+ public static final double SIDEREAL_DAY = 23.93446960027;
+
+ /**
+ * The number of sidereal hours in one mean solar day.
+ * Approximately 24.07.
+ * @internal
+ */
+ public static final double SOLAR_DAY = 24.065709816;
+
+ /**
+ * The average number of solar days from one new moon to the next. This is the time
+ * it takes for the moon to return the same ecliptic longitude as the sun.
+ * It is longer than the sidereal month because the sun's longitude increases
+ * during the year due to the revolution of the earth around the sun.
+ * Approximately 29.53.
+ *
+ * @see #SIDEREAL_MONTH
+ * @internal
+ */
+ public static final double SYNODIC_MONTH = 29.530588853;
+
+ /**
+ * The average number of days it takes
+ * for the moon to return to the same ecliptic longitude relative to the
+ * stellar background. This is referred to as the sidereal month.
+ * It is shorter than the synodic month due to
+ * the revolution of the earth around the sun.
+ * Approximately 27.32.
+ *
+ * @see #SYNODIC_MONTH
+ * @internal
+ */
+ public static final double SIDEREAL_MONTH = 27.32166;
+
+ /**
+ * The average number number of days between successive vernal equinoxes.
+ * Due to the precession of the earth's
+ * axis, this is not precisely the same as the sidereal year.
+ * Approximately 365.24
+ *
+ * @see #SIDEREAL_YEAR
+ * @internal
+ */
+ public static final double TROPICAL_YEAR = 365.242191;
+
+ /**
+ * The average number of days it takes
+ * for the sun to return to the same position against the fixed stellar
+ * background. This is the duration of one orbit of the earth about the sun
+ * as it would appear to an outside observer.
+ * Due to the precession of the earth's
+ * axis, this is not precisely the same as the tropical year.
+ * Approximately 365.25.
+ *
+ * @see #TROPICAL_YEAR
+ * @internal
+ */
+ public static final double SIDEREAL_YEAR = 365.25636;
+
+ //-------------------------------------------------------------------------
+ // Time-related constants
+ //-------------------------------------------------------------------------
+
+ /**
+ * The number of milliseconds in one second.
+ * @internal
+ */
+ public static final int SECOND_MS = 1000;
+
+ /**
+ * The number of milliseconds in one minute.
+ * @internal
+ */
+ public static final int MINUTE_MS = 60*SECOND_MS;
+
+ /**
+ * The number of milliseconds in one hour.
+ * @internal
+ */
+ public static final int HOUR_MS = 60*MINUTE_MS;
+
+ /**
+ * The number of milliseconds in one day.
+ * @internal
+ */
+ public static final long DAY_MS = 24*HOUR_MS;
+
+ /**
+ * The start of the julian day numbering scheme used by astronomers, which
+ * is 1/1/4713 BC (Julian), 12:00 GMT. This is given as the number of milliseconds
+ * since 1/1/1970 AD (Gregorian), a negative number.
+ * Note that julian day numbers and
+ * the Julian calendar are <em>not</em> the same thing. Also note that
+ * julian days start at <em>noon</em>, not midnight.
+ * @internal
+ */
+ public static final long JULIAN_EPOCH_MS = -210866760000000L;
+
+// static {
+// Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
+// cal.clear();
+// cal.set(cal.ERA, 0);
+// cal.set(cal.YEAR, 4713);
+// cal.set(cal.MONTH, cal.JANUARY);
+// cal.set(cal.DATE, 1);
+// cal.set(cal.HOUR_OF_DAY, 12);
+// System.out.println("1.5 Jan 4713 BC = " + cal.getTime().getTime());
+
+// cal.clear();
+// cal.set(cal.YEAR, 2000);
+// cal.set(cal.MONTH, cal.JANUARY);
+// cal.set(cal.DATE, 1);
+// cal.add(cal.DATE, -1);
+// System.out.println("0.0 Jan 2000 = " + cal.getTime().getTime());
+// }
+
+ /**
+ * Milliseconds value for 0.0 January 2000 AD.
+ */
+ static final long EPOCH_2000_MS = 946598400000L;
+
+ //-------------------------------------------------------------------------
+ // Assorted private data used for conversions
+ //-------------------------------------------------------------------------
+
+ // My own copies of these so compilers are more likely to optimize them away
+ static private final double PI = 3.14159265358979323846;
+ static private final double PI2 = PI * 2.0;
+
+ static private final double RAD_HOUR = 12 / PI; // radians -> hours
+ static private final double DEG_RAD = PI / 180; // degrees -> radians
+ static private final double RAD_DEG = 180 / PI; // radians -> degrees
+
+ //-------------------------------------------------------------------------
+ // Constructors
+ //-------------------------------------------------------------------------
+
+ /**
+ * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+ * the current date and time.
+ * @internal
+ */
+ public CalendarAstronomer() {
+ this(System.currentTimeMillis());
+ }
+
+ /**
+ * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+ * the specified date and time.
+ * @internal
+ */
+ public CalendarAstronomer(Date d) {
+ this(d.getTime());
+ }
+
+ /**
+ * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+ * the specified time. The time is expressed as a number of milliseconds since
+ * January 1, 1970 AD (Gregorian).
+ *
+ * @see java.util.Date#getTime()
+ * @internal
+ */
+ public CalendarAstronomer(long aTime) {
+ time = aTime;
+ }
+
+ /**
+ * Construct a new <code>CalendarAstronomer</code> object with the given
+ * latitude and longitude. The object's time is set to the current
+ * date and time.
+ * <p>
+ * @param longitude The desired longitude, in <em>degrees</em> east of
+ * the Greenwich meridian.
+ *
+ * @param latitude The desired latitude, in <em>degrees</em>. Positive
+ * values signify North, negative South.
+ *
+ * @see java.util.Date#getTime()
+ * @internal
+ */
+ public CalendarAstronomer(double longitude, double latitude) {
+ this();
+ fLongitude = normPI(longitude * DEG_RAD);
+ fLatitude = normPI(latitude * DEG_RAD);
+ fGmtOffset = (long)(fLongitude * 24 * HOUR_MS / PI2);
+ }
+
+
+ //-------------------------------------------------------------------------
+ // Time and date getters and setters
+ //-------------------------------------------------------------------------
+
+ /**
+ * Set the current date and time of this <code>CalendarAstronomer</code> object. All
+ * astronomical calculations are performed based on this time setting.
+ *
+ * @param aTime the date and time, expressed as the number of milliseconds since
+ * 1/1/1970 0:00 GMT (Gregorian).
+ *
+ * @see #setDate
+ * @see #getTime
+ * @internal
+ */
+ public void setTime(long aTime) {
+ time = aTime;
+ clearCache();
+ }
+
+ /**
+ * Set the current date and time of this <code>CalendarAstronomer</code> object. All
+ * astronomical calculations are performed based on this time setting.
+ *
+ * @param date the time and date, expressed as a <code>Date</code> object.
+ *
+ * @see #setTime
+ * @see #getDate
+ * @internal
+ */
+ public void setDate(Date date) {
+ setTime(date.getTime());
+ }
+
+ /**
+ * Set the current date and time of this <code>CalendarAstronomer</code> object. All
+ * astronomical calculations are performed based on this time setting.
+ *
+ * @param jdn the desired time, expressed as a "julian day number",
+ * which is the number of elapsed days since
+ * 1/1/4713 BC (Julian), 12:00 GMT. Note that julian day
+ * numbers start at <em>noon</em>. To get the jdn for
+ * the corresponding midnight, subtract 0.5.
+ *
+ * @see #getJulianDay
+ * @see #JULIAN_EPOCH_MS
+ * @internal
+ */
+ public void setJulianDay(double jdn) {
+ time = (long)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
+ clearCache();
+ julianDay = jdn;
+ }
+
+ /**
+ * Get the current time of this <code>CalendarAstronomer</code> object,
+ * represented as the number of milliseconds since
+ * 1/1/1970 AD 0:00 GMT (Gregorian).
+ *
+ * @see #setTime
+ * @see #getDate
+ * @internal
+ */
+ public long getTime() {
+ return time;
+ }
+
+ /**
+ * Get the current time of this <code>CalendarAstronomer</code> object,
+ * represented as a <code>Date</code> object.
+ *
+ * @see #setDate
+ * @see #getTime
+ * @internal
+ */
+ public Date getDate() {
+ return new Date(time);
+ }
+
+ /**
+ * Get the current time of this <code>CalendarAstronomer</code> object,
+ * expressed as a "julian day number", which is the number of elapsed
+ * days since 1/1/4713 BC (Julian), 12:00 GMT.
+ *
+ * @see #setJulianDay
+ * @see #JULIAN_EPOCH_MS
+ * @internal
+ */
+ public double getJulianDay() {
+ if (julianDay == INVALID) {
+ julianDay = (double)(time - JULIAN_EPOCH_MS) / (double)DAY_MS;
+ }
+ return julianDay;
+ }
+
+ /**
+ * Return this object's time expressed in julian centuries:
+ * the number of centuries after 1/1/1900 AD, 12:00 GMT
+ *
+ * @see #getJulianDay
+ * @internal
+ */
+ public double getJulianCentury() {
+ if (julianCentury == INVALID) {
+ julianCentury = (getJulianDay() - 2415020.0) / 36525;
+ }
+ return julianCentury;
+ }
+
+ /**
+ * Returns the current Greenwich sidereal time, measured in hours
+ * @internal
+ */
+ public double getGreenwichSidereal() {
+ if (siderealTime == INVALID) {
+ // See page 86 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+
+ double UT = normalize((double)time/HOUR_MS, 24);
+
+ siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24);
+ }
+ return siderealTime;
+ }
+
+ private double getSiderealOffset() {
+ if (siderealT0 == INVALID) {
+ double JD = Math.floor(getJulianDay() - 0.5) + 0.5;
+ double S = JD - 2451545.0;
+ double T = S / 36525.0;
+ siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
+ }
+ return siderealT0;
+ }
+
+ /**
+ * Returns the current local sidereal time, measured in hours
+ * @internal
+ */
+ public double getLocalSidereal() {
+ return normalize(getGreenwichSidereal() + (double)fGmtOffset/HOUR_MS, 24);
+ }
+
+ /**
+ * Converts local sidereal time to Universal Time.
+ *
+ * @param lst The Local Sidereal Time, in hours since sidereal midnight
+ * on this object's current date.
+ *
+ * @return The corresponding Universal Time, in milliseconds since
+ * 1 Jan 1970, GMT.
+ */
+ private long lstToUT(double lst) {
+ // Convert to local mean time
+ double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
+
+ // Then find local midnight on this day
+ long base = DAY_MS * ((time + fGmtOffset)/DAY_MS) - fGmtOffset;
+
+ //out(" lt =" + lt + " hours");
+ //out(" base=" + new Date(base));
+
+ return base + (long)(lt * HOUR_MS);
+ }
+
+
+ //-------------------------------------------------------------------------
+ // Coordinate transformations, all based on the current time of this object
+ //-------------------------------------------------------------------------
+
+ /**
+ * Convert from ecliptic to equatorial coordinates.
+ *
+ * @param ecliptic A point in the sky in ecliptic coordinates.
+ * @return The corresponding point in equatorial coordinates.
+ * @internal
+ */
+ public final Equatorial eclipticToEquatorial(Ecliptic ecliptic)
+ {
+ return eclipticToEquatorial(ecliptic.longitude, ecliptic.latitude);
+ }
+
+ /**
+ * Convert from ecliptic to equatorial coordinates.
+ *
+ * @param eclipLong The ecliptic longitude
+ * @param eclipLat The ecliptic latitude
+ *
+ * @return The corresponding point in equatorial coordinates.
+ * @internal
+ */
+ public final Equatorial eclipticToEquatorial(double eclipLong, double eclipLat)
+ {
+ // See page 42 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+
+ double obliq = eclipticObliquity();
+ double sinE = Math.sin(obliq);
+ double cosE = Math.cos(obliq);
+
+ double sinL = Math.sin(eclipLong);
+ double cosL = Math.cos(eclipLong);
+
+ double sinB = Math.sin(eclipLat);
+ double cosB = Math.cos(eclipLat);
+ double tanB = Math.tan(eclipLat);
+
+ return new Equatorial(Math.atan2(sinL*cosE - tanB*sinE, cosL),
+ Math.asin(sinB*cosE + cosB*sinE*sinL) );
+ }
+
+ /**
+ * Convert from ecliptic longitude to equatorial coordinates.
+ *
+ * @param eclipLong The ecliptic longitude
+ *
+ * @return The corresponding point in equatorial coordinates.
+ * @internal
+ */
+ public final Equatorial eclipticToEquatorial(double eclipLong)
+ {
+ return eclipticToEquatorial(eclipLong, 0); // TODO: optimize
+ }
+
+ /**
+ * @internal
+ */
+ public Horizon eclipticToHorizon(double eclipLong)
+ {
+ Equatorial equatorial = eclipticToEquatorial(eclipLong);
+
+ double H = getLocalSidereal()*PI/12 - equatorial.ascension; // Hour-angle
+
+ double sinH = Math.sin(H);
+ double cosH = Math.cos(H);
+ double sinD = Math.sin(equatorial.declination);
+ double cosD = Math.cos(equatorial.declination);
+ double sinL = Math.sin(fLatitude);
+ double cosL = Math.cos(fLatitude);
+
+ double altitude = Math.asin(sinD*sinL + cosD*cosL*cosH);
+ double azimuth = Math.atan2(-cosD*cosL*sinH, sinD - sinL * Math.sin(altitude));
+
+ return new Horizon(azimuth, altitude);
+ }
+
+
+ //-------------------------------------------------------------------------
+ // The Sun
+ //-------------------------------------------------------------------------
+
+ //
+ // Parameters of the Sun's orbit as of the epoch Jan 0.0 1990
+ // Angles are in radians (after multiplying by PI/180)
+ //
+ static final double JD_EPOCH = 2447891.5; // Julian day of epoch
+
+ static final double SUN_ETA_G = 279.403303 * PI/180; // Ecliptic longitude at epoch
+ static final double SUN_OMEGA_G = 282.768422 * PI/180; // Ecliptic longitude of perigee
+ static final double SUN_E = 0.016713; // Eccentricity of orbit
+ //double sunR0 = 1.495585e8; // Semi-major axis in KM
+ //double sunTheta0 = 0.533128 * PI/180; // Angular diameter at R0
+
+ // The following three methods, which compute the sun parameters
+ // given above for an arbitrary epoch (whatever time the object is
+ // set to), make only a small difference as compared to using the
+ // above constants. E.g., Sunset times might differ by ~12
+ // seconds. Furthermore, the eta-g computation is befuddled by
+ // Duffet-Smith's incorrect coefficients (p.86). I've corrected
+ // the first-order coefficient but the others may be off too - no
+ // way of knowing without consulting another source.
+
+// /**
+// * Return the sun's ecliptic longitude at perigee for the current time.
+// * See Duffett-Smith, p. 86.
+// * @return radians
+// */
+// private double getSunOmegaG() {
+// double T = getJulianCentury();
+// return (281.2208444 + (1.719175 + 0.000452778*T)*T) * DEG_RAD;
+// }
+
+// /**
+// * Return the sun's ecliptic longitude for the current time.
+// * See Duffett-Smith, p. 86.
+// * @return radians
+// */
+// private double getSunEtaG() {
+// double T = getJulianCentury();
+// //return (279.6966778 + (36000.76892 + 0.0003025*T)*T) * DEG_RAD;
+// //
+// // The above line is from Duffett-Smith, and yields manifestly wrong
+// // results. The below constant is derived empirically to match the
+// // constant he gives for the 1990 EPOCH.
+// //
+// return (279.6966778 + (-0.3262541582718024 + 0.0003025*T)*T) * DEG_RAD;
+// }
+
+// /**
+// * Return the sun's eccentricity of orbit for the current time.
+// * See Duffett-Smith, p. 86.
+// * @return double
+// */
+// private double getSunE() {
+// double T = getJulianCentury();
+// return 0.01675104 - (0.0000418 + 0.000000126*T)*T;
+// }
+
+ /**
+ * The longitude of the sun at the time specified by this object.
+ * The longitude is measured in radians along the ecliptic
+ * from the "first point of Aries," the point at which the ecliptic
+ * crosses the earth's equatorial plane at the vernal equinox.
+ * <p>
+ * Currently, this method uses an approximation of the two-body Kepler's
+ * equation for the earth and the sun. It does not take into account the
+ * perturbations caused by the other planets, the moon, etc.
+ * @internal
+ */
+ public double getSunLongitude()
+ {
+ // See page 86 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+
+ if (sunLongitude == INVALID) {
+ double[] result = getSunLongitude(getJulianDay());
+ sunLongitude = result[0];
+ meanAnomalySun = result[1];
+ }
+ return sunLongitude;
+ }
+
+ /**
+ * TODO Make this public when the entire class is package-private.
+ */
+ /*public*/ double[] getSunLongitude(double julian)
+ {
+ // See page 86 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+
+ double day = julian - JD_EPOCH; // Days since epoch
+
+ // Find the angular distance the sun in a fictitious
+ // circular orbit has travelled since the epoch.
+ double epochAngle = norm2PI(PI2/TROPICAL_YEAR*day);
+
+ // The epoch wasn't at the sun's perigee; find the angular distance
+ // since perigee, which is called the "mean anomaly"
+ double meanAnomaly = norm2PI(epochAngle + SUN_ETA_G - SUN_OMEGA_G);
+
+ // Now find the "true anomaly", e.g. the real solar longitude
+ // by solving Kepler's equation for an elliptical orbit
+ // NOTE: The 3rd ed. of the book lists omega_g and eta_g in different
+ // equations; omega_g is to be correct.
+ return new double[] {
+ norm2PI(trueAnomaly(meanAnomaly, SUN_E) + SUN_OMEGA_G),
+ meanAnomaly
+ };
+ }
+
+ /**
+ * The position of the sun at this object's current date and time,
+ * in equatorial coordinates.
+ * @internal
+ */
+ public Equatorial getSunPosition() {
+ return eclipticToEquatorial(getSunLongitude(), 0);
+ }
+
+ private static class SolarLongitude {
+ double value;
+ SolarLongitude(double val) { value = val; }
+ }
+
+ /**
+ * Constant representing the vernal equinox.
+ * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+ * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
+ * @internal
+ */
+ public static final SolarLongitude VERNAL_EQUINOX = new SolarLongitude(0);
+
+ /**
+ * Constant representing the summer solstice.
+ * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+ * Note: In this case, "summer" refers to the northern hemisphere's seasons.
+ * @internal
+ */
+ public static final SolarLongitude SUMMER_SOLSTICE = new SolarLongitude(PI/2);
+
+ /**
+ * Constant representing the autumnal equinox.
+ * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+ * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
+ * @internal
+ */
+ public static final SolarLongitude AUTUMN_EQUINOX = new SolarLongitude(PI);
+
+ /**
+ * Constant representing the winter solstice.
+ * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+ * Note: In this case, "winter" refers to the northern hemisphere's seasons.
+ * @internal
+ */
+ public static final SolarLongitude WINTER_SOLSTICE = new SolarLongitude((PI*3)/2);
+
+ /**
+ * Find the next time at which the sun's ecliptic longitude will have
+ * the desired value.
+ * @internal
+ */
+ public long getSunTime(double desired, boolean next)
+ {
+ return timeOfAngle( new AngleFunc() { @Override
+ public double eval() { return getSunLongitude(); } },
+ desired,
+ TROPICAL_YEAR,
+ MINUTE_MS,
+ next);
+ }
+
+ /**
+ * Find the next time at which the sun's ecliptic longitude will have
+ * the desired value.
+ * @internal
+ */
+ public long getSunTime(SolarLongitude desired, boolean next) {
+ return getSunTime(desired.value, next);
+ }
+
+ /**
+ * Returns the time (GMT) of sunrise or sunset on the local date to which
+ * this calendar is currently set.
+ *
+ * NOTE: This method only works well if this object is set to a
+ * time near local noon. Because of variations between the local
+ * official time zone and the geographic longitude, the
+ * computation can flop over into an adjacent day if this object
+ * is set to a time near local midnight.
+ *
+ * @internal
+ */
+ public long getSunRiseSet(boolean rise) {
+ long t0 = time;
+
+ // Make a rough guess: 6am or 6pm local time on the current day
+ long noon = ((time + fGmtOffset)/DAY_MS)*DAY_MS - fGmtOffset + 12*HOUR_MS;
+
+ setTime(noon + (rise ? -6L : 6L) * HOUR_MS);
+
+ long t = riseOrSet(new CoordFunc() {
+ @Override
+ public Equatorial eval() { return getSunPosition(); }
+ },
+ rise,
+ .533 * DEG_RAD, // Angular Diameter
+ 34 /60.0 * DEG_RAD, // Refraction correction
+ MINUTE_MS / 12); // Desired accuracy
+
+ setTime(t0);
+ return t;
+ }
+
+// Commented out - currently unused. ICU 2.6, Alan
+// //-------------------------------------------------------------------------
+// // Alternate Sun Rise/Set
+// // See Duffett-Smith p.93
+// //-------------------------------------------------------------------------
+//
+// // This yields worse results (as compared to USNO data) than getSunRiseSet().
+// /**
+// * TODO Make this public when the entire class is package-private.
+// */
+// /*public*/ long getSunRiseSet2(boolean rise) {
+// // 1. Calculate coordinates of the sun's center for midnight
+// double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
+// double[] sl = getSunLongitude(jd);
+// double lambda1 = sl[0];
+// Equatorial pos1 = eclipticToEquatorial(lambda1, 0);
+//
+// // 2. Add ... to lambda to get position 24 hours later
+// double lambda2 = lambda1 + 0.985647*DEG_RAD;
+// Equatorial pos2 = eclipticToEquatorial(lambda2, 0);
+//
+// // 3. Calculate LSTs of rising and setting for these two positions
+// double tanL = Math.tan(fLatitude);
+// double H = Math.acos(-tanL * Math.tan(pos1.declination));
+// double lst1r = (PI2 + pos1.ascension - H) * 24 / PI2;
+// double lst1s = (pos1.ascension + H) * 24 / PI2;
+// H = Math.acos(-tanL * Math.tan(pos2.declination));
+// double lst2r = (PI2-H + pos2.ascension ) * 24 / PI2;
+// double lst2s = (H + pos2.ascension ) * 24 / PI2;
+// if (lst1r > 24) lst1r -= 24;
+// if (lst1s > 24) lst1s -= 24;
+// if (lst2r > 24) lst2r -= 24;
+// if (lst2s > 24) lst2s -= 24;
+//
+// // 4. Convert LSTs to GSTs. If GST1 > GST2, add 24 to GST2.
+// double gst1r = lstToGst(lst1r);
+// double gst1s = lstToGst(lst1s);
+// double gst2r = lstToGst(lst2r);
+// double gst2s = lstToGst(lst2s);
+// if (gst1r > gst2r) gst2r += 24;
+// if (gst1s > gst2s) gst2s += 24;
+//
+// // 5. Calculate GST at 0h UT of this date
+// double t00 = utToGst(0);
+//
+// // 6. Calculate GST at 0h on the observer's longitude
+// double offset = Math.round(fLongitude*12/PI); // p.95 step 6; he _rounds_ to nearest 15 deg.
+// double t00p = t00 - offset*1.002737909;
+// if (t00p < 0) t00p += 24; // do NOT normalize
+//
+// // 7. Adjust
+// if (gst1r < t00p) {
+// gst1r += 24;
+// gst2r += 24;
+// }
+// if (gst1s < t00p) {
+// gst1s += 24;
+// gst2s += 24;
+// }
+//
+// // 8.
+// double gstr = (24.07*gst1r-t00*(gst2r-gst1r))/(24.07+gst1r-gst2r);
+// double gsts = (24.07*gst1s-t00*(gst2s-gst1s))/(24.07+gst1s-gst2s);
+//
+// // 9. Correct for parallax, refraction, and sun's diameter
+// double dec = (pos1.declination + pos2.declination) / 2;
+// double psi = Math.acos(Math.sin(fLatitude) / Math.cos(dec));
+// double x = 0.830725 * DEG_RAD; // parallax+refraction+diameter
+// double y = Math.asin(Math.sin(x) / Math.sin(psi)) * RAD_DEG;
+// double delta_t = 240 * y / Math.cos(dec) / 3600; // hours
+//
+// // 10. Add correction to GSTs, subtract from GSTr
+// gstr -= delta_t;
+// gsts += delta_t;
+//
+// // 11. Convert GST to UT and then to local civil time
+// double ut = gstToUt(rise ? gstr : gsts);
+// //System.out.println((rise?"rise=":"set=") + ut + ", delta_t=" + delta_t);
+// long midnight = DAY_MS * (time / DAY_MS); // Find UT midnight on this day
+// return midnight + (long) (ut * 3600000);
+// }
+
+// Commented out - currently unused. ICU 2.6, Alan
+// /**
+// * Convert local sidereal time to Greenwich sidereal time.
+// * Section 15. Duffett-Smith p.21
+// * @param lst in hours (0..24)
+// * @return GST in hours (0..24)
+// */
+// double lstToGst(double lst) {
+// double delta = fLongitude * 24 / PI2;
+// return normalize(lst - delta, 24);
+// }
+
+// Commented out - currently unused. ICU 2.6, Alan
+// /**
+// * Convert UT to GST on this date.
+// * Section 12. Duffett-Smith p.17
+// * @param ut in hours
+// * @return GST in hours
+// */
+// double utToGst(double ut) {
+// return normalize(getT0() + ut*1.002737909, 24);
+// }
+
+// Commented out - currently unused. ICU 2.6, Alan
+// /**
+// * Convert GST to UT on this date.
+// * Section 13. Duffett-Smith p.18
+// * @param gst in hours
+// * @return UT in hours
+// */
+// double gstToUt(double gst) {
+// return normalize(gst - getT0(), 24) * 0.9972695663;
+// }
+
+// Commented out - currently unused. ICU 2.6, Alan
+// double getT0() {
+// // Common computation for UT <=> GST
+//
+// // Find JD for 0h UT
+// double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
+//
+// double s = jd - 2451545.0;
+// double t = s / 36525.0;
+// double t0 = 6.697374558 + (2400.051336 + 0.000025862*t)*t;
+// return t0;
+// }
+
+// Commented out - currently unused. ICU 2.6, Alan
+// //-------------------------------------------------------------------------
+// // Alternate Sun Rise/Set
+// // See sci.astro FAQ
+// // http://www.faqs.org/faqs/astronomy/faq/part3/section-5.html
+// //-------------------------------------------------------------------------
+//
+// // Note: This method appears to produce inferior accuracy as
+// // compared to getSunRiseSet().
+//
+// /**
+// * TODO Make this public when the entire class is package-private.
+// */
+// /*public*/ long getSunRiseSet3(boolean rise) {
+//
+// // Compute day number for 0.0 Jan 2000 epoch
+// double d = (double)(time - EPOCH_2000_MS) / DAY_MS;
+//
+// // Now compute the Local Sidereal Time, LST:
+// //
+// double LST = 98.9818 + 0.985647352 * d + /*UT*15 + long*/
+// fLongitude*RAD_DEG;
+// //
+// // (east long. positive). Note that LST is here expressed in degrees,
+// // where 15 degrees corresponds to one hour. Since LST really is an angle,
+// // it's convenient to use one unit---degrees---throughout.
+//
+// // COMPUTING THE SUN'S POSITION
+// // ----------------------------
+// //
+// // To be able to compute the Sun's rise/set times, you need to be able to
+// // compute the Sun's position at any time. First compute the "day
+// // number" d as outlined above, for the desired moment. Next compute:
+// //
+// double oblecl = 23.4393 - 3.563E-7 * d;
+// //
+// double w = 282.9404 + 4.70935E-5 * d;
+// double M = 356.0470 + 0.9856002585 * d;
+// double e = 0.016709 - 1.151E-9 * d;
+// //
+// // This is the obliquity of the ecliptic, plus some of the elements of
+// // the Sun's apparent orbit (i.e., really the Earth's orbit): w =
+// // argument of perihelion, M = mean anomaly, e = eccentricity.
+// // Semi-major axis is here assumed to be exactly 1.0 (while not strictly
+// // true, this is still an accurate approximation). Next compute E, the
+// // eccentric anomaly:
+// //
+// double E = M + e*(180/PI) * Math.sin(M*DEG_RAD) * ( 1.0 + e*Math.cos(M*DEG_RAD) );
+// //
+// // where E and M are in degrees. This is it---no further iterations are
+// // needed because we know e has a sufficiently small value. Next compute
+// // the true anomaly, v, and the distance, r:
+// //
+// /* r * cos(v) = */ double A = Math.cos(E*DEG_RAD) - e;
+// /* r * sin(v) = */ double B = Math.sqrt(1 - e*e) * Math.sin(E*DEG_RAD);
+// //
+// // and
+// //
+// // r = sqrt( A*A + B*B )
+// double v = Math.atan2( B, A )*RAD_DEG;
+// //
+// // The Sun's true longitude, slon, can now be computed:
+// //
+// double slon = v + w;
+// //
+// // Since the Sun is always at the ecliptic (or at least very very close to
+// // it), we can use simplified formulae to convert slon (the Sun's ecliptic
+// // longitude) to sRA and sDec (the Sun's RA and Dec):
+// //
+// // sin(slon) * cos(oblecl)
+// // tan(sRA) = -------------------------
+// // cos(slon)
+// //
+// // sin(sDec) = sin(oblecl) * sin(slon)
+// //
+// // As was the case when computing az, the Azimuth, if possible use an
+// // atan2() function to compute sRA.
+//
+// double sRA = Math.atan2(Math.sin(slon*DEG_RAD) * Math.cos(oblecl*DEG_RAD), Math.cos(slon*DEG_RAD))*RAD_DEG;
+//
+// double sin_sDec = Math.sin(oblecl*DEG_RAD) * Math.sin(slon*DEG_RAD);
+// double sDec = Math.asin(sin_sDec)*RAD_DEG;
+//
+// // COMPUTING RISE AND SET TIMES
+// // ----------------------------
+// //
+// // To compute when an object rises or sets, you must compute when it
+// // passes the meridian and the HA of rise/set. Then the rise time is
+// // the meridian time minus HA for rise/set, and the set time is the
+// // meridian time plus the HA for rise/set.
+// //
+// // To find the meridian time, compute the Local Sidereal Time at 0h local
+// // time (or 0h UT if you prefer to work in UT) as outlined above---name
+// // that quantity LST0. The Meridian Time, MT, will now be:
+// //
+// // MT = RA - LST0
+// double MT = normalize(sRA - LST, 360);
+// //
+// // where "RA" is the object's Right Ascension (in degrees!). If negative,
+// // add 360 deg to MT. If the object is the Sun, leave the time as it is,
+// // but if it's stellar, multiply MT by 365.2422/366.2422, to convert from
+// // sidereal to solar time. Now, compute HA for rise/set, name that
+// // quantity HA0:
+// //
+// // sin(h0) - sin(lat) * sin(Dec)
+// // cos(HA0) = ---------------------------------
+// // cos(lat) * cos(Dec)
+// //
+// // where h0 is the altitude selected to represent rise/set. For a purely
+// // mathematical horizon, set h0 = 0 and simplify to:
+// //
+// // cos(HA0) = - tan(lat) * tan(Dec)
+// //
+// // If you want to account for refraction on the atmosphere, set h0 = -35/60
+// // degrees (-35 arc minutes), and if you want to compute the rise/set times
+// // for the Sun's upper limb, set h0 = -50/60 (-50 arc minutes).
+// //
+// double h0 = -50/60 * DEG_RAD;
+//
+// double HA0 = Math.acos(
+// (Math.sin(h0) - Math.sin(fLatitude) * sin_sDec) /
+// (Math.cos(fLatitude) * Math.cos(sDec*DEG_RAD)))*RAD_DEG;
+//
+// // When HA0 has been computed, leave it as it is for the Sun but multiply
+// // by 365.2422/366.2422 for stellar objects, to convert from sidereal to
+// // solar time. Finally compute:
+// //
+// // Rise time = MT - HA0
+// // Set time = MT + HA0
+// //
+// // convert the times from degrees to hours by dividing by 15.
+// //
+// // If you'd like to check that your calculations are accurate or just
+// // need a quick result, check the USNO's Sun or Moon Rise/Set Table,
+// // <URL:http://aa.usno.navy.mil/AA/data/docs/RS_OneYear.html>.
+//
+// double result = MT + (rise ? -HA0 : HA0); // in degrees
+//
+// // Find UT midnight on this day
+// long midnight = DAY_MS * (time / DAY_MS);
+//
+// return midnight + (long) (result * 3600000 / 15);
+// }
+
+ //-------------------------------------------------------------------------
+ // The Moon
+ //-------------------------------------------------------------------------
+
+ static final double moonL0 = 318.351648 * PI/180; // Mean long. at epoch
+ static final double moonP0 = 36.340410 * PI/180; // Mean long. of perigee
+ static final double moonN0 = 318.510107 * PI/180; // Mean long. of node
+ static final double moonI = 5.145366 * PI/180; // Inclination of orbit
+ static final double moonE = 0.054900; // Eccentricity of orbit
+
+ // These aren't used right now
+ static final double moonA = 3.84401e5; // semi-major axis (km)
+ static final double moonT0 = 0.5181 * PI/180; // Angular size at distance A
+ static final double moonPi = 0.9507 * PI/180; // Parallax at distance A
+
+ /**
+ * The position of the moon at the time set on this
+ * object, in equatorial coordinates.
+ * @internal
+ */
+ public Equatorial getMoonPosition()
+ {
+ //
+ // See page 142 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+ //
+ if (moonPosition == null) {
+ // Calculate the solar longitude. Has the side effect of
+ // filling in "meanAnomalySun" as well.
+ double sunLong = getSunLongitude();
+
+ //
+ // Find the # of days since the epoch of our orbital parameters.
+ // TODO: Convert the time of day portion into ephemeris time
+ //
+ double day = getJulianDay() - JD_EPOCH; // Days since epoch
+
+ // Calculate the mean longitude and anomaly of the moon, based on
+ // a circular orbit. Similar to the corresponding solar calculation.
+ double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
+ double meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
+
+ //
+ // Calculate the following corrections:
+ // Evection: the sun's gravity affects the moon's eccentricity
+ // Annual Eqn: variation in the effect due to earth-sun distance
+ // A3: correction factor (for ???)
+ //
+ double evection = 1.2739*PI/180 * Math.sin(2 * (meanLongitude - sunLong)
+ - meanAnomalyMoon);
+ double annual = 0.1858*PI/180 * Math.sin(meanAnomalySun);
+ double a3 = 0.3700*PI/180 * Math.sin(meanAnomalySun);
+
+ meanAnomalyMoon += evection - annual - a3;
+
+ //
+ // More correction factors:
+ // center equation of the center correction
+ // a4 yet another error correction (???)
+ //
+ // TODO: Skip the equation of the center correction and solve Kepler's eqn?
+ //
+ double center = 6.2886*PI/180 * Math.sin(meanAnomalyMoon);
+ double a4 = 0.2140*PI/180 * Math.sin(2 * meanAnomalyMoon);
+
+ // Now find the moon's corrected longitude
+ moonLongitude = meanLongitude + evection + center - annual + a4;
+
+ //
+ // And finally, find the variation, caused by the fact that the sun's
+ // gravitational pull on the moon varies depending on which side of
+ // the earth the moon is on
+ //
+ double variation = 0.6583*PI/180 * Math.sin(2*(moonLongitude - sunLong));
+
+ moonLongitude += variation;
+
+ //
+ // What we've calculated so far is the moon's longitude in the plane
+ // of its own orbit. Now map to the ecliptic to get the latitude
+ // and longitude. First we need to find the longitude of the ascending
+ // node, the position on the ecliptic where it is crossed by the moon's
+ // orbit as it crosses from the southern to the northern hemisphere.
+ //
+ double nodeLongitude = norm2PI(moonN0 - 0.0529539*PI/180 * day);
+
+ nodeLongitude -= 0.16*PI/180 * Math.sin(meanAnomalySun);
+
+ double y = Math.sin(moonLongitude - nodeLongitude);
+ double x = Math.cos(moonLongitude - nodeLongitude);
+
+ moonEclipLong = Math.atan2(y*Math.cos(moonI), x) + nodeLongitude;
+ double moonEclipLat = Math.asin(y * Math.sin(moonI));
+
+ moonPosition = eclipticToEquatorial(moonEclipLong, moonEclipLat);
+ }
+ return moonPosition;
+ }
+
+ /**
+ * The "age" of the moon at the time specified in this object.
+ * This is really the angle between the
+ * current ecliptic longitudes of the sun and the moon,
+ * measured in radians.
+ *
+ * @see #getMoonPhase
+ * @internal
+ */
+ public double getMoonAge() {
+ // See page 147 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+ //
+ // Force the moon's position to be calculated. We're going to use
+ // some the intermediate results cached during that calculation.
+ //
+ getMoonPosition();
+
+ return norm2PI(moonEclipLong - sunLongitude);
+ }
+
+ /**
+ * Calculate the phase of the moon at the time set in this object.
+ * The returned phase is a <code>double</code> in the range
+ * <code>0 <= phase < 1</code>, interpreted as follows:
+ * <ul>
+ * <li>0.00: New moon
+ * <li>0.25: First quarter
+ * <li>0.50: Full moon
+ * <li>0.75: Last quarter
+ * </ul>
+ *
+ * @see #getMoonAge
+ * @internal
+ */
+ public double getMoonPhase() {
+ // See page 147 of "Practical Astronomy with your Calculator",
+ // by Peter Duffet-Smith, for details on the algorithm.
+ return 0.5 * (1 - Math.cos(getMoonAge()));
+ }
+
+ private static class MoonAge {
+ double value;
+ MoonAge(double val) { value = val; }
+ }
+
+ /**
+ * Constant representing a new moon.
+ * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+ * @internal
+ */
+ public static final MoonAge NEW_MOON = new MoonAge(0);
+
+ /**
+ * Constant representing the moon's first quarter.
+ * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+ * @internal
+ */
+ public static final MoonAge FIRST_QUARTER = new MoonAge(PI/2);
+
+ /**
+ * Constant representing a full moon.
+ * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+ * @internal
+ */
+ public static final MoonAge FULL_MOON = new MoonAge(PI);
+
+ /**
+ * Constant representing the moon's last quarter.
+ * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+ * @internal
+ */
+ public static final MoonAge LAST_QUARTER = new MoonAge((PI*3)/2);
+
+ /**
+ * Find the next or previous time at which the Moon's ecliptic
+ * longitude will have the desired value.
+ * <p>
+ * @param desired The desired longitude.
+ * @param next <tt>true</tt> if the next occurrance of the phase
+ * is desired, <tt>false</tt> for the previous occurrance.
+ * @internal
+ */
+ public long getMoonTime(double desired, boolean next)
+ {
+ return timeOfAngle( new AngleFunc() {
+ @Override
+ public double eval() { return getMoonAge(); } },
+ desired,
+ SYNODIC_MONTH,
+ MINUTE_MS,
+ next);
+ }
+
+ /**
+ * Find the next or previous time at which the moon will be in the
+ * desired phase.
+ * <p>
+ * @param desired The desired phase of the moon.
+ * @param next <tt>true</tt> if the next occurrance of the phase
+ * is desired, <tt>false</tt> for the previous occurrance.
+ * @internal
+ */
+ public long getMoonTime(MoonAge desired, boolean next) {
+ return getMoonTime(desired.value, next);
+ }
+
+ /**
+ * Returns the time (GMT) of sunrise or sunset on the local date to which
+ * this calendar is currently set.
+ * @internal
+ */
+ public long getMoonRiseSet(boolean rise)
+ {
+ return riseOrSet(new CoordFunc() {
+ @Override
+ public Equatorial eval() { return getMoonPosition(); }
+ },
+ rise,
+ .533 * DEG_RAD, // Angular Diameter
+ 34 /60.0 * DEG_RAD, // Refraction correction
+ MINUTE_MS); // Desired accuracy
+ }
+
+ //-------------------------------------------------------------------------
+ // Interpolation methods for finding the time at which a given event occurs
+ //-------------------------------------------------------------------------
+
+ private interface AngleFunc {
+ public double eval();
+ }
+
+ private long timeOfAngle(AngleFunc func, double desired,
+ double periodDays, long epsilon, boolean next)
+ {
+ // Find the value of the function at the current time
+ double lastAngle = func.eval();
+
+ // Find out how far we are from the desired angle
+ double deltaAngle = norm2PI(desired - lastAngle) ;
+
+ // Using the average period, estimate the next (or previous) time at
+ // which the desired angle occurs.
+ double deltaT = (deltaAngle + (next ? 0 : -PI2)) * (periodDays*DAY_MS) / PI2;
+
+ double lastDeltaT = deltaT; // Liu
+ long startTime = time; // Liu
+
+ setTime(time + (long)deltaT);
+
+ // Now iterate until we get the error below epsilon. Throughout
+ // this loop we use normPI to get values in the range -Pi to Pi,
+ // since we're using them as correction factors rather than absolute angles.
+ do {
+ // Evaluate the function at the time we've estimated
+ double angle = func.eval();
+
+ // Find the # of milliseconds per radian at this point on the curve
+ double factor = Math.abs(deltaT / normPI(angle-lastAngle));
+
+ // Correct the time estimate based on how far off the angle is
+ deltaT = normPI(desired - angle) * factor;
+
+ // HACK:
+ //
+ // If abs(deltaT) begins to diverge we need to quit this loop.
+ // This only appears to happen when attempting to locate, for
+ // example, a new moon on the day of the new moon. E.g.:
+ //
+ // This result is correct:
+ // newMoon(7508(Mon Jul 23 00:00:00 CST 1990,false))=
+ // Sun Jul 22 10:57:41 CST 1990
+ //
+ // But attempting to make the same call a day earlier causes deltaT
+ // to diverge:
+ // CalendarAstronomer.timeOfAngle() diverging: 1.348508727575625E9 ->
+ // 1.3649828540224032E9
+ // newMoon(7507(Sun Jul 22 00:00:00 CST 1990,false))=
+ // Sun Jul 08 13:56:15 CST 1990
+ //
+ // As a temporary solution, we catch this specific condition and
+ // adjust our start time by one eighth period days (either forward
+ // or backward) and try again.
+ // Liu 11/9/00
+ if (Math.abs(deltaT) > Math.abs(lastDeltaT)) {
+ long delta = (long) (periodDays * DAY_MS / 8);
+ setTime(startTime + (next ? delta : -delta));
+ return timeOfAngle(func, desired, periodDays, epsilon, next);
+ }
+
+ lastDeltaT = deltaT;
+ lastAngle = angle;
+
+ setTime(time + (long)deltaT);
+ }
+ while (Math.abs(deltaT) > epsilon);
+
+ return time;
+ }
+
+ private interface CoordFunc {
+ public Equatorial eval();
+ }
+
+ private long riseOrSet(CoordFunc func, boolean rise,
+ double diameter, double refraction,
+ long epsilon)
+ {
+ Equatorial pos = null;
+ double tanL = Math.tan(fLatitude);
+ long deltaT = Long.MAX_VALUE;
+ int count = 0;
+
+ //
+ // Calculate the object's position at the current time, then use that
+ // position to calculate the time of rising or setting. The position
+ // will be different at that time, so iterate until the error is allowable.
+ //
+ do {
+ // See "Practical Astronomy With Your Calculator, section 33.
+ pos = func.eval();
+ double angle = Math.acos(-tanL * Math.tan(pos.declination));
+ double lst = ((rise ? PI2-angle : angle) + pos.ascension ) * 24 / PI2;
+
+ // Convert from LST to Universal Time.
+ long newTime = lstToUT( lst );
+
+ deltaT = newTime - time;
+ setTime(newTime);
+ }
+ while (++ count < 5 && Math.abs(deltaT) > epsilon);
+
+ // Calculate the correction due to refraction and the object's angular diameter
+ double cosD = Math.cos(pos.declination);
+ double psi = Math.acos(Math.sin(fLatitude) / cosD);
+ double x = diameter / 2 + refraction;
+ double y = Math.asin(Math.sin(x) / Math.sin(psi));
+ long delta = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
+
+ return time + (rise ? -delta : delta);
+ }
+
+ //-------------------------------------------------------------------------
+ // Other utility methods
+ //-------------------------------------------------------------------------
+
+ /***
+ * Given 'value', add or subtract 'range' until 0 <= 'value' < range.
+ * The modulus operator.
+ */
+ private static final double normalize(double value, double range) {
+ return value - range * Math.floor(value / range);
+ }
+
+ /**
+ * Normalize an angle so that it's in the range 0 - 2pi.
+ * For positive angles this is just (angle % 2pi), but the Java
+ * mod operator doesn't work that way for negative numbers....
+ */
+ private static final double norm2PI(double angle) {
+ return normalize(angle, PI2);
+ }
+
+ /**
+ * Normalize an angle into the range -PI - PI
+ */
+ private static final double normPI(double angle) {
+ return normalize(angle + PI, PI2) - PI;
+ }
+
+ /**
+ * Find the "true anomaly" (longitude) of an object from
+ * its mean anomaly and the eccentricity of its orbit. This uses
+ * an iterative solution to Kepler's equation.
+ *
+ * @param meanAnomaly The object's longitude calculated as if it were in
+ * a regular, circular orbit, measured in radians
+ * from the point of perigee.
+ *
+ * @param eccentricity The eccentricity of the orbit
+ *
+ * @return The true anomaly (longitude) measured in radians
+ */
+ private double trueAnomaly(double meanAnomaly, double eccentricity)
+ {
+ // First, solve Kepler's equation iteratively
+ // Duffett-Smith, p.90
+ double delta;
+ double E = meanAnomaly;
+ do {
+ delta = E - eccentricity * Math.sin(E) - meanAnomaly;
+ E = E - delta / (1 - eccentricity * Math.cos(E));
+ }
+ while (Math.abs(delta) > 1e-5); // epsilon = 1e-5 rad
+
+ return 2.0 * Math.atan( Math.tan(E/2) * Math.sqrt( (1+eccentricity)
+ /(1-eccentricity) ) );
+ }
+
+ /**
+ * Return the obliquity of the ecliptic (the angle between the ecliptic
+ * and the earth's equator) at the current time. This varies due to
+ * the precession of the earth's axis.
+ *
+ * @return the obliquity of the ecliptic relative to the equator,
+ * measured in radians.
+ */
+ private double eclipticObliquity() {
+ if (eclipObliquity == INVALID) {
+ final double epoch = 2451545.0; // 2000 AD, January 1.5
+
+ double T = (getJulianDay() - epoch) / 36525;
+
+ eclipObliquity = 23.439292
+ - 46.815/3600 * T
+ - 0.0006/3600 * T*T
+ + 0.00181/3600 * T*T*T;
+
+ eclipObliquity *= DEG_RAD;
+ }
+ return eclipObliquity;
+ }
+
+
+ //-------------------------------------------------------------------------
+ // Private data
+ //-------------------------------------------------------------------------
+
+ /**
+ * Current time in milliseconds since 1/1/1970 AD
+ * @see java.util.Date#getTime
+ */
+ private long time;
+
+ /* These aren't used yet, but they'll be needed for sunset calculations
+ * and equatorial to horizon coordinate conversions
+ */
+ private double fLongitude = 0.0;
+ private double fLatitude = 0.0;
+ private long fGmtOffset = 0;
+
+ //
+ // The following fields are used to cache calculated results for improved
+ // performance. These values all depend on the current time setting
+ // of this object, so the clearCache method is provided.
+ //
+ static final private double INVALID = Double.MIN_VALUE;
+
+ private transient double julianDay = INVALID;
+ private transient double julianCentury = INVALID;
+ private transient double sunLongitude = INVALID;
+ private transient double meanAnomalySun = INVALID;
+ private transient double moonLongitude = INVALID;
+ private transient double moonEclipLong = INVALID;
+ //private transient double meanAnomalyMoon = INVALID;
+ private transient double eclipObliquity = INVALID;
+ private transient double siderealT0 = INVALID;
+ private transient double siderealTime = INVALID;
+
+ private transient Equatorial moonPosition = null;
+
+ private void clearCache() {
+ julianDay = INVALID;
+ julianCentury = INVALID;
+ sunLongitude = INVALID;
+ meanAnomalySun = INVALID;
+ moonLongitude = INVALID;
+ moonEclipLong = INVALID;
+ //meanAnomalyMoon = INVALID;
+ eclipObliquity = INVALID;
+ siderealTime = INVALID;
+ siderealT0 = INVALID;
+ moonPosition = null;
+ }
+
+ //private static void out(String s) {
+ // System.out.println(s);
+ //}
+
+ //private static String deg(double rad) {
+ // return Double.toString(rad * RAD_DEG);
+ //}
+
+ //private static String hours(long ms) {
+ // return Double.toString((double)ms / HOUR_MS) + " hours";
+ //}
+
+ /**
+ * @internal
+ */
+ public String local(long localMillis) {
+ return new Date(localMillis - TimeZone.getDefault().getRawOffset()).toString();
+ }
+
+
+ /**
+ * Represents the position of an object in the sky relative to the ecliptic,
+ * the plane of the earth's orbit around the Sun.
+ * This is a spherical coordinate system in which the latitude
+ * specifies the position north or south of the plane of the ecliptic.
+ * The longitude specifies the position along the ecliptic plane
+ * relative to the "First Point of Aries", which is the Sun's position in the sky
+ * at the Vernal Equinox.
+ * <p>
+ * Note that Ecliptic objects are immutable and cannot be modified
+ * once they are constructed. This allows them to be passed and returned by
+ * value without worrying about whether other code will modify them.
+ *
+ * @see CalendarAstronomer.Equatorial
+ * @see CalendarAstronomer.Horizon
+ * @internal
+ */
+ public static final class Ecliptic {
+ /**
+ * Constructs an Ecliptic coordinate object.
+ * <p>
+ * @param lat The ecliptic latitude, measured in radians.
+ * @param lon The ecliptic longitude, measured in radians.
+ * @internal
+ */
+ public Ecliptic(double lat, double lon) {
+ latitude = lat;
+ longitude = lon;
+ }
+
+ /**
+ * Return a string representation of this object
+ * @internal
+ */
+ @Override
+ public String toString() {
+ return Double.toString(longitude*RAD_DEG) + "," + (latitude*RAD_DEG);
+ }
+
+ /**
+ * The ecliptic latitude, in radians. This specifies an object's
+ * position north or south of the plane of the ecliptic,
+ * with positive angles representing north.
+ * @internal
+ */
+ public final double latitude;
+
+ /**
+ * The ecliptic longitude, in radians.
+ * This specifies an object's position along the ecliptic plane
+ * relative to the "First Point of Aries", which is the Sun's position
+ * in the sky at the Vernal Equinox,
+ * with positive angles representing east.
+ * <p>
+ * A bit of trivia: the first point of Aries is currently in the
+ * constellation Pisces, due to the precession of the earth's axis.
+ * @internal
+ */
+ public final double longitude;
+ }
+
+ /**
+ * Represents the position of an
+ * object in the sky relative to the plane of the earth's equator.
+ * The <i>Right Ascension</i> specifies the position east or west
+ * along the equator, relative to the sun's position at the vernal
+ * equinox. The <i>Declination</i> is the position north or south
+ * of the equatorial plane.
+ * <p>
+ * Note that Equatorial objects are immutable and cannot be modified
+ * once they are constructed. This allows them to be passed and returned by
+ * value without worrying about whether other code will modify them.
+ *
+ * @see CalendarAstronomer.Ecliptic
+ * @see CalendarAstronomer.Horizon
+ * @internal
+ */
+ public static final class Equatorial {
+ /**
+ * Constructs an Equatorial coordinate object.
+ * <p>
+ * @param asc The right ascension, measured in radians.
+ * @param dec The declination, measured in radians.
+ * @internal
+ */
+ public Equatorial(double asc, double dec) {
+ ascension = asc;
+ declination = dec;
+ }
+
+ /**
+ * Return a string representation of this object, with the
+ * angles measured in degrees.
+ * @internal
+ */
+ @Override
+ public String toString() {
+ return Double.toString(ascension*RAD_DEG) + "," + (declination*RAD_DEG);
+ }
+
+ /**
+ * Return a string representation of this object with the right ascension
+ * measured in hours, minutes, and seconds.
+ * @internal
+ */
+ public String toHmsString() {
+ return radToHms(ascension) + "," + radToDms(declination);
+ }
+
+ /**
+ * The right ascension, in radians.
+ * This is the position east or west along the equator
+ * relative to the sun's position at the vernal equinox,
+ * with positive angles representing East.
+ * @internal
+ */
+ public final double ascension;
+
+ /**
+ * The declination, in radians.
+ * This is the position north or south of the equatorial plane,
+ * with positive angles representing north.
+ * @internal
+ */
+ public final double declination;
+ }
+
+ /**
+ * Represents the position of an object in the sky relative to
+ * the local horizon.
+ * The <i>Altitude</i> represents the object's elevation above the horizon,
+ * with objects below the horizon having a negative altitude.
+ * The <i>Azimuth</i> is the geographic direction of the object from the
+ * observer's position, with 0 representing north. The azimuth increases
+ * clockwise from north.
+ * <p>
+ * Note that Horizon objects are immutable and cannot be modified
+ * once they are constructed. This allows them to be passed and returned by
+ * value without worrying about whether other code will modify them.
+ *
+ * @see CalendarAstronomer.Ecliptic
+ * @see CalendarAstronomer.Equatorial
+ * @internal
+ */
+ public static final class Horizon {
+ /**
+ * Constructs a Horizon coordinate object.
+ * <p>
+ * @param alt The altitude, measured in radians above the horizon.
+ * @param azim The azimuth, measured in radians clockwise from north.
+ * @internal
+ */
+ public Horizon(double alt, double azim) {
+ altitude = alt;
+ azimuth = azim;
+ }
+
+ /**
+ * Return a string representation of this object, with the
+ * angles measured in degrees.
+ * @internal
+ */
+ @Override
+ public String toString() {
+ return Double.toString(altitude*RAD_DEG) + "," + (azimuth*RAD_DEG);
+ }
+
+ /**
+ * The object's altitude above the horizon, in radians.
+ * @internal
+ */
+ public final double altitude;
+
+ /**
+ * The object's direction, in radians clockwise from north.
+ * @internal
+ */
+ public final double azimuth;
+ }
+
+ static private String radToHms(double angle) {
+ int hrs = (int) (angle*RAD_HOUR);
+ int min = (int)((angle*RAD_HOUR - hrs) * 60);
+ int sec = (int)((angle*RAD_HOUR - hrs - min/60.0) * 3600);
+
+ return Integer.toString(hrs) + "h" + min + "m" + sec + "s";
+ }
+
+ static private String radToDms(double angle) {
+ int deg = (int) (angle*RAD_DEG);
+ int min = (int)((angle*RAD_DEG - deg) * 60);
+ int sec = (int)((angle*RAD_DEG - deg - min/60.0) * 3600);
+
+ return Integer.toString(deg) + "\u00b0" + min + "'" + sec + "\"";
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java b/android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java
index 088100dbe..e616c9cad 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java
@@ -11,7 +11,6 @@
package android.icu.impl;
import java.util.Date;
-import java.util.TimeZone;
/**
* <code>CalendarAstronomer</code> is a class that can perform the calculations to
@@ -207,15 +206,6 @@ public class CalendarAstronomer {
/**
* Construct a new <code>CalendarAstronomer</code> object that is initialized to
- * the specified date and time.
- * @hide draft / provisional / internal are hidden on Android
- */
- public CalendarAstronomer(Date d) {
- this(d.getTime());
- }
-
- /**
- * Construct a new <code>CalendarAstronomer</code> object that is initialized to
* the specified time. The time is expressed as a number of milliseconds since
* January 1, 1970 AD (Gregorian).
*
@@ -226,32 +216,9 @@ public class CalendarAstronomer {
time = aTime;
}
- /**
- * Construct a new <code>CalendarAstronomer</code> object with the given
- * latitude and longitude. The object's time is set to the current
- * date and time.
- * <p>
- * @param longitude The desired longitude, in <em>degrees</em> east of
- * the Greenwich meridian.
- *
- * @param latitude The desired latitude, in <em>degrees</em>. Positive
- * values signify North, negative South.
- *
- * @see java.util.Date#getTime()
- * @hide draft / provisional / internal are hidden on Android
- */
- public CalendarAstronomer(double longitude, double latitude) {
- this();
- fLongitude = normPI(longitude * DEG_RAD);
- fLatitude = normPI(latitude * DEG_RAD);
- fGmtOffset = (long)(fLongitude * 24 * HOUR_MS / PI2);
- }
-
-
//-------------------------------------------------------------------------
// Time and date getters and setters
//-------------------------------------------------------------------------
-
/**
* Set the current date and time of this <code>CalendarAstronomer</code> object. All
* astronomical calculations are performed based on this time setting.
@@ -268,19 +235,6 @@ public class CalendarAstronomer {
clearCache();
}
- /**
- * Set the current date and time of this <code>CalendarAstronomer</code> object. All
- * astronomical calculations are performed based on this time setting.
- *
- * @param date the time and date, expressed as a <code>Date</code> object.
- *
- * @see #setTime
- * @see #getDate
- * @hide draft / provisional / internal are hidden on Android
- */
- public void setDate(Date date) {
- setTime(date.getTime());
- }
/**
* Set the current date and time of this <code>CalendarAstronomer</code> object. All
@@ -343,77 +297,6 @@ public class CalendarAstronomer {
return julianDay;
}
- /**
- * Return this object's time expressed in julian centuries:
- * the number of centuries after 1/1/1900 AD, 12:00 GMT
- *
- * @see #getJulianDay
- * @hide draft / provisional / internal are hidden on Android
- */
- public double getJulianCentury() {
- if (julianCentury == INVALID) {
- julianCentury = (getJulianDay() - 2415020.0) / 36525;
- }
- return julianCentury;
- }
-
- /**
- * Returns the current Greenwich sidereal time, measured in hours
- * @hide draft / provisional / internal are hidden on Android
- */
- public double getGreenwichSidereal() {
- if (siderealTime == INVALID) {
- // See page 86 of "Practical Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
-
- double UT = normalize((double)time/HOUR_MS, 24);
-
- siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24);
- }
- return siderealTime;
- }
-
- private double getSiderealOffset() {
- if (siderealT0 == INVALID) {
- double JD = Math.floor(getJulianDay() - 0.5) + 0.5;
- double S = JD - 2451545.0;
- double T = S / 36525.0;
- siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
- }
- return siderealT0;
- }
-
- /**
- * Returns the current local sidereal time, measured in hours
- * @hide draft / provisional / internal are hidden on Android
- */
- public double getLocalSidereal() {
- return normalize(getGreenwichSidereal() + (double)fGmtOffset/HOUR_MS, 24);
- }
-
- /**
- * Converts local sidereal time to Universal Time.
- *
- * @param lst The Local Sidereal Time, in hours since sidereal midnight
- * on this object's current date.
- *
- * @return The corresponding Universal Time, in milliseconds since
- * 1 Jan 1970, GMT.
- */
- private long lstToUT(double lst) {
- // Convert to local mean time
- double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
-
- // Then find local midnight on this day
- long base = DAY_MS * ((time + fGmtOffset)/DAY_MS) - fGmtOffset;
-
- //out(" lt =" + lt + " hours");
- //out(" base=" + new Date(base));
-
- return base + (long)(lt * HOUR_MS);
- }
-
-
//-------------------------------------------------------------------------
// Coordinate transformations, all based on the current time of this object
//-------------------------------------------------------------------------
@@ -421,18 +304,6 @@ public class CalendarAstronomer {
/**
* Convert from ecliptic to equatorial coordinates.
*
- * @param ecliptic A point in the sky in ecliptic coordinates.
- * @return The corresponding point in equatorial coordinates.
- * @hide draft / provisional / internal are hidden on Android
- */
- public final Equatorial eclipticToEquatorial(Ecliptic ecliptic)
- {
- return eclipticToEquatorial(ecliptic.longitude, ecliptic.latitude);
- }
-
- /**
- * Convert from ecliptic to equatorial coordinates.
- *
* @param eclipLong The ecliptic longitude
* @param eclipLat The ecliptic latitude
*
@@ -459,42 +330,6 @@ public class CalendarAstronomer {
Math.asin(sinB*cosE + cosB*sinE*sinL) );
}
- /**
- * Convert from ecliptic longitude to equatorial coordinates.
- *
- * @param eclipLong The ecliptic longitude
- *
- * @return The corresponding point in equatorial coordinates.
- * @hide draft / provisional / internal are hidden on Android
- */
- public final Equatorial eclipticToEquatorial(double eclipLong)
- {
- return eclipticToEquatorial(eclipLong, 0); // TODO: optimize
- }
-
- /**
- * @hide draft / provisional / internal are hidden on Android
- */
- public Horizon eclipticToHorizon(double eclipLong)
- {
- Equatorial equatorial = eclipticToEquatorial(eclipLong);
-
- double H = getLocalSidereal()*PI/12 - equatorial.ascension; // Hour-angle
-
- double sinH = Math.sin(H);
- double cosH = Math.cos(H);
- double sinD = Math.sin(equatorial.declination);
- double cosD = Math.cos(equatorial.declination);
- double sinL = Math.sin(fLatitude);
- double cosL = Math.cos(fLatitude);
-
- double altitude = Math.asin(sinD*sinL + cosD*cosL*cosH);
- double azimuth = Math.atan2(-cosD*cosL*sinH, sinD - sinL * Math.sin(altitude));
-
- return new Horizon(azimuth, altitude);
- }
-
-
//-------------------------------------------------------------------------
// The Sun
//-------------------------------------------------------------------------
@@ -608,45 +443,12 @@ public class CalendarAstronomer {
};
}
- /**
- * The position of the sun at this object's current date and time,
- * in equatorial coordinates.
- * @hide draft / provisional / internal are hidden on Android
- */
- public Equatorial getSunPosition() {
- return eclipticToEquatorial(getSunLongitude(), 0);
- }
-
private static class SolarLongitude {
double value;
SolarLongitude(double val) { value = val; }
}
/**
- * Constant representing the vernal equinox.
- * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
- * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
- * @hide draft / provisional / internal are hidden on Android
- */
- public static final SolarLongitude VERNAL_EQUINOX = new SolarLongitude(0);
-
- /**
- * Constant representing the summer solstice.
- * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
- * Note: In this case, "summer" refers to the northern hemisphere's seasons.
- * @hide draft / provisional / internal are hidden on Android
- */
- public static final SolarLongitude SUMMER_SOLSTICE = new SolarLongitude(PI/2);
-
- /**
- * Constant representing the autumnal equinox.
- * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
- * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
- * @hide draft / provisional / internal are hidden on Android
- */
- public static final SolarLongitude AUTUMN_EQUINOX = new SolarLongitude(PI);
-
- /**
* Constant representing the winter solstice.
* For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
* Note: In this case, "winter" refers to the northern hemisphere's seasons.
@@ -678,312 +480,6 @@ public class CalendarAstronomer {
return getSunTime(desired.value, next);
}
- /**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- *
- * NOTE: This method only works well if this object is set to a
- * time near local noon. Because of variations between the local
- * official time zone and the geographic longitude, the
- * computation can flop over into an adjacent day if this object
- * is set to a time near local midnight.
- *
- * @hide draft / provisional / internal are hidden on Android
- */
- public long getSunRiseSet(boolean rise) {
- long t0 = time;
-
- // Make a rough guess: 6am or 6pm local time on the current day
- long noon = ((time + fGmtOffset)/DAY_MS)*DAY_MS - fGmtOffset + 12*HOUR_MS;
-
- setTime(noon + (rise ? -6L : 6L) * HOUR_MS);
-
- long t = riseOrSet(new CoordFunc() {
- @Override
- public Equatorial eval() { return getSunPosition(); }
- },
- rise,
- .533 * DEG_RAD, // Angular Diameter
- 34 /60.0 * DEG_RAD, // Refraction correction
- MINUTE_MS / 12); // Desired accuracy
-
- setTime(t0);
- return t;
- }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// //-------------------------------------------------------------------------
-// // Alternate Sun Rise/Set
-// // See Duffett-Smith p.93
-// //-------------------------------------------------------------------------
-//
-// // This yields worse results (as compared to USNO data) than getSunRiseSet().
-// /**
-// * TODO Make this public when the entire class is package-private.
-// */
-// /*public*/ long getSunRiseSet2(boolean rise) {
-// // 1. Calculate coordinates of the sun's center for midnight
-// double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
-// double[] sl = getSunLongitude(jd);
-// double lambda1 = sl[0];
-// Equatorial pos1 = eclipticToEquatorial(lambda1, 0);
-//
-// // 2. Add ... to lambda to get position 24 hours later
-// double lambda2 = lambda1 + 0.985647*DEG_RAD;
-// Equatorial pos2 = eclipticToEquatorial(lambda2, 0);
-//
-// // 3. Calculate LSTs of rising and setting for these two positions
-// double tanL = Math.tan(fLatitude);
-// double H = Math.acos(-tanL * Math.tan(pos1.declination));
-// double lst1r = (PI2 + pos1.ascension - H) * 24 / PI2;
-// double lst1s = (pos1.ascension + H) * 24 / PI2;
-// H = Math.acos(-tanL * Math.tan(pos2.declination));
-// double lst2r = (PI2-H + pos2.ascension ) * 24 / PI2;
-// double lst2s = (H + pos2.ascension ) * 24 / PI2;
-// if (lst1r > 24) lst1r -= 24;
-// if (lst1s > 24) lst1s -= 24;
-// if (lst2r > 24) lst2r -= 24;
-// if (lst2s > 24) lst2s -= 24;
-//
-// // 4. Convert LSTs to GSTs. If GST1 > GST2, add 24 to GST2.
-// double gst1r = lstToGst(lst1r);
-// double gst1s = lstToGst(lst1s);
-// double gst2r = lstToGst(lst2r);
-// double gst2s = lstToGst(lst2s);
-// if (gst1r > gst2r) gst2r += 24;
-// if (gst1s > gst2s) gst2s += 24;
-//
-// // 5. Calculate GST at 0h UT of this date
-// double t00 = utToGst(0);
-//
-// // 6. Calculate GST at 0h on the observer's longitude
-// double offset = Math.round(fLongitude*12/PI); // p.95 step 6; he _rounds_ to nearest 15 deg.
-// double t00p = t00 - offset*1.002737909;
-// if (t00p < 0) t00p += 24; // do NOT normalize
-//
-// // 7. Adjust
-// if (gst1r < t00p) {
-// gst1r += 24;
-// gst2r += 24;
-// }
-// if (gst1s < t00p) {
-// gst1s += 24;
-// gst2s += 24;
-// }
-//
-// // 8.
-// double gstr = (24.07*gst1r-t00*(gst2r-gst1r))/(24.07+gst1r-gst2r);
-// double gsts = (24.07*gst1s-t00*(gst2s-gst1s))/(24.07+gst1s-gst2s);
-//
-// // 9. Correct for parallax, refraction, and sun's diameter
-// double dec = (pos1.declination + pos2.declination) / 2;
-// double psi = Math.acos(Math.sin(fLatitude) / Math.cos(dec));
-// double x = 0.830725 * DEG_RAD; // parallax+refraction+diameter
-// double y = Math.asin(Math.sin(x) / Math.sin(psi)) * RAD_DEG;
-// double delta_t = 240 * y / Math.cos(dec) / 3600; // hours
-//
-// // 10. Add correction to GSTs, subtract from GSTr
-// gstr -= delta_t;
-// gsts += delta_t;
-//
-// // 11. Convert GST to UT and then to local civil time
-// double ut = gstToUt(rise ? gstr : gsts);
-// //System.out.println((rise?"rise=":"set=") + ut + ", delta_t=" + delta_t);
-// long midnight = DAY_MS * (time / DAY_MS); // Find UT midnight on this day
-// return midnight + (long) (ut * 3600000);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert local sidereal time to Greenwich sidereal time.
-// * Section 15. Duffett-Smith p.21
-// * @param lst in hours (0..24)
-// * @return GST in hours (0..24)
-// */
-// double lstToGst(double lst) {
-// double delta = fLongitude * 24 / PI2;
-// return normalize(lst - delta, 24);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert UT to GST on this date.
-// * Section 12. Duffett-Smith p.17
-// * @param ut in hours
-// * @return GST in hours
-// */
-// double utToGst(double ut) {
-// return normalize(getT0() + ut*1.002737909, 24);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert GST to UT on this date.
-// * Section 13. Duffett-Smith p.18
-// * @param gst in hours
-// * @return UT in hours
-// */
-// double gstToUt(double gst) {
-// return normalize(gst - getT0(), 24) * 0.9972695663;
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// double getT0() {
-// // Common computation for UT <=> GST
-//
-// // Find JD for 0h UT
-// double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
-//
-// double s = jd - 2451545.0;
-// double t = s / 36525.0;
-// double t0 = 6.697374558 + (2400.051336 + 0.000025862*t)*t;
-// return t0;
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// //-------------------------------------------------------------------------
-// // Alternate Sun Rise/Set
-// // See sci.astro FAQ
-// // http://www.faqs.org/faqs/astronomy/faq/part3/section-5.html
-// //-------------------------------------------------------------------------
-//
-// // Note: This method appears to produce inferior accuracy as
-// // compared to getSunRiseSet().
-//
-// /**
-// * TODO Make this public when the entire class is package-private.
-// */
-// /*public*/ long getSunRiseSet3(boolean rise) {
-//
-// // Compute day number for 0.0 Jan 2000 epoch
-// double d = (double)(time - EPOCH_2000_MS) / DAY_MS;
-//
-// // Now compute the Local Sidereal Time, LST:
-// //
-// double LST = 98.9818 + 0.985647352 * d + /*UT*15 + long*/
-// fLongitude*RAD_DEG;
-// //
-// // (east long. positive). Note that LST is here expressed in degrees,
-// // where 15 degrees corresponds to one hour. Since LST really is an angle,
-// // it's convenient to use one unit---degrees---throughout.
-//
-// // COMPUTING THE SUN'S POSITION
-// // ----------------------------
-// //
-// // To be able to compute the Sun's rise/set times, you need to be able to
-// // compute the Sun's position at any time. First compute the "day
-// // number" d as outlined above, for the desired moment. Next compute:
-// //
-// double oblecl = 23.4393 - 3.563E-7 * d;
-// //
-// double w = 282.9404 + 4.70935E-5 * d;
-// double M = 356.0470 + 0.9856002585 * d;
-// double e = 0.016709 - 1.151E-9 * d;
-// //
-// // This is the obliquity of the ecliptic, plus some of the elements of
-// // the Sun's apparent orbit (i.e., really the Earth's orbit): w =
-// // argument of perihelion, M = mean anomaly, e = eccentricity.
-// // Semi-major axis is here assumed to be exactly 1.0 (while not strictly
-// // true, this is still an accurate approximation). Next compute E, the
-// // eccentric anomaly:
-// //
-// double E = M + e*(180/PI) * Math.sin(M*DEG_RAD) * ( 1.0 + e*Math.cos(M*DEG_RAD) );
-// //
-// // where E and M are in degrees. This is it---no further iterations are
-// // needed because we know e has a sufficiently small value. Next compute
-// // the true anomaly, v, and the distance, r:
-// //
-// /* r * cos(v) = */ double A = Math.cos(E*DEG_RAD) - e;
-// /* r * sin(v) = */ double B = Math.sqrt(1 - e*e) * Math.sin(E*DEG_RAD);
-// //
-// // and
-// //
-// // r = sqrt( A*A + B*B )
-// double v = Math.atan2( B, A )*RAD_DEG;
-// //
-// // The Sun's true longitude, slon, can now be computed:
-// //
-// double slon = v + w;
-// //
-// // Since the Sun is always at the ecliptic (or at least very very close to
-// // it), we can use simplified formulae to convert slon (the Sun's ecliptic
-// // longitude) to sRA and sDec (the Sun's RA and Dec):
-// //
-// // sin(slon) * cos(oblecl)
-// // tan(sRA) = -------------------------
-// // cos(slon)
-// //
-// // sin(sDec) = sin(oblecl) * sin(slon)
-// //
-// // As was the case when computing az, the Azimuth, if possible use an
-// // atan2() function to compute sRA.
-//
-// double sRA = Math.atan2(Math.sin(slon*DEG_RAD) * Math.cos(oblecl*DEG_RAD), Math.cos(slon*DEG_RAD))*RAD_DEG;
-//
-// double sin_sDec = Math.sin(oblecl*DEG_RAD) * Math.sin(slon*DEG_RAD);
-// double sDec = Math.asin(sin_sDec)*RAD_DEG;
-//
-// // COMPUTING RISE AND SET TIMES
-// // ----------------------------
-// //
-// // To compute when an object rises or sets, you must compute when it
-// // passes the meridian and the HA of rise/set. Then the rise time is
-// // the meridian time minus HA for rise/set, and the set time is the
-// // meridian time plus the HA for rise/set.
-// //
-// // To find the meridian time, compute the Local Sidereal Time at 0h local
-// // time (or 0h UT if you prefer to work in UT) as outlined above---name
-// // that quantity LST0. The Meridian Time, MT, will now be:
-// //
-// // MT = RA - LST0
-// double MT = normalize(sRA - LST, 360);
-// //
-// // where "RA" is the object's Right Ascension (in degrees!). If negative,
-// // add 360 deg to MT. If the object is the Sun, leave the time as it is,
-// // but if it's stellar, multiply MT by 365.2422/366.2422, to convert from
-// // sidereal to solar time. Now, compute HA for rise/set, name that
-// // quantity HA0:
-// //
-// // sin(h0) - sin(lat) * sin(Dec)
-// // cos(HA0) = ---------------------------------
-// // cos(lat) * cos(Dec)
-// //
-// // where h0 is the altitude selected to represent rise/set. For a purely
-// // mathematical horizon, set h0 = 0 and simplify to:
-// //
-// // cos(HA0) = - tan(lat) * tan(Dec)
-// //
-// // If you want to account for refraction on the atmosphere, set h0 = -35/60
-// // degrees (-35 arc minutes), and if you want to compute the rise/set times
-// // for the Sun's upper limb, set h0 = -50/60 (-50 arc minutes).
-// //
-// double h0 = -50/60 * DEG_RAD;
-//
-// double HA0 = Math.acos(
-// (Math.sin(h0) - Math.sin(fLatitude) * sin_sDec) /
-// (Math.cos(fLatitude) * Math.cos(sDec*DEG_RAD)))*RAD_DEG;
-//
-// // When HA0 has been computed, leave it as it is for the Sun but multiply
-// // by 365.2422/366.2422 for stellar objects, to convert from sidereal to
-// // solar time. Finally compute:
-// //
-// // Rise time = MT - HA0
-// // Set time = MT + HA0
-// //
-// // convert the times from degrees to hours by dividing by 15.
-// //
-// // If you'd like to check that your calculations are accurate or just
-// // need a quick result, check the USNO's Sun or Moon Rise/Set Table,
-// // <URL:http://aa.usno.navy.mil/AA/data/docs/RS_OneYear.html>.
-//
-// double result = MT + (rise ? -HA0 : HA0); // in degrees
-//
-// // Find UT midnight on this day
-// long midnight = DAY_MS * (time / DAY_MS);
-//
-// return midnight + (long) (result * 3600000 / 15);
-// }
-
//-------------------------------------------------------------------------
// The Moon
//-------------------------------------------------------------------------
@@ -1050,7 +546,7 @@ public class CalendarAstronomer {
double a4 = 0.2140*PI/180 * Math.sin(2 * meanAnomalyMoon);
// Now find the moon's corrected longitude
- moonLongitude = meanLongitude + evection + center - annual + a4;
+ double moonLongitude = meanLongitude + evection + center - annual + a4;
//
// And finally, find the variation, caused by the fact that the sun's
@@ -1104,26 +600,6 @@ public class CalendarAstronomer {
return norm2PI(moonEclipLong - sunLongitude);
}
- /**
- * Calculate the phase of the moon at the time set in this object.
- * The returned phase is a <code>double</code> in the range
- * <code>0 <= phase < 1</code>, interpreted as follows:
- * <ul>
- * <li>0.00: New moon
- * <li>0.25: First quarter
- * <li>0.50: Full moon
- * <li>0.75: Last quarter
- * </ul>
- *
- * @see #getMoonAge
- * @hide draft / provisional / internal are hidden on Android
- */
- public double getMoonPhase() {
- // See page 147 of "Practical Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
- return 0.5 * (1 - Math.cos(getMoonAge()));
- }
-
private static class MoonAge {
double value;
MoonAge(double val) { value = val; }
@@ -1137,27 +613,6 @@ public class CalendarAstronomer {
public static final MoonAge NEW_MOON = new MoonAge(0);
/**
- * Constant representing the moon's first quarter.
- * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
- * @hide draft / provisional / internal are hidden on Android
- */
- public static final MoonAge FIRST_QUARTER = new MoonAge(PI/2);
-
- /**
- * Constant representing a full moon.
- * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
- * @hide draft / provisional / internal are hidden on Android
- */
- public static final MoonAge FULL_MOON = new MoonAge(PI);
-
- /**
- * Constant representing the moon's last quarter.
- * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
- * @hide draft / provisional / internal are hidden on Android
- */
- public static final MoonAge LAST_QUARTER = new MoonAge((PI*3)/2);
-
- /**
* Find the next or previous time at which the Moon's ecliptic
* longitude will have the desired value.
* <p>
@@ -1190,23 +645,6 @@ public class CalendarAstronomer {
return getMoonTime(desired.value, next);
}
- /**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- * @hide draft / provisional / internal are hidden on Android
- */
- public long getMoonRiseSet(boolean rise)
- {
- return riseOrSet(new CoordFunc() {
- @Override
- public Equatorial eval() { return getMoonPosition(); }
- },
- rise,
- .533 * DEG_RAD, // Angular Diameter
- 34 /60.0 * DEG_RAD, // Refraction correction
- MINUTE_MS); // Desired accuracy
- }
-
//-------------------------------------------------------------------------
// Interpolation methods for finding the time at which a given event occurs
//-------------------------------------------------------------------------
@@ -1283,48 +721,6 @@ public class CalendarAstronomer {
return time;
}
- private interface CoordFunc {
- public Equatorial eval();
- }
-
- private long riseOrSet(CoordFunc func, boolean rise,
- double diameter, double refraction,
- long epsilon)
- {
- Equatorial pos = null;
- double tanL = Math.tan(fLatitude);
- long deltaT = Long.MAX_VALUE;
- int count = 0;
-
- //
- // Calculate the object's position at the current time, then use that
- // position to calculate the time of rising or setting. The position
- // will be different at that time, so iterate until the error is allowable.
- //
- do {
- // See "Practical Astronomy With Your Calculator, section 33.
- pos = func.eval();
- double angle = Math.acos(-tanL * Math.tan(pos.declination));
- double lst = ((rise ? PI2-angle : angle) + pos.ascension ) * 24 / PI2;
-
- // Convert from LST to Universal Time.
- long newTime = lstToUT( lst );
-
- deltaT = newTime - time;
- setTime(newTime);
- }
- while (++ count < 5 && Math.abs(deltaT) > epsilon);
-
- // Calculate the correction due to refraction and the object's angular diameter
- double cosD = Math.cos(pos.declination);
- double psi = Math.acos(Math.sin(fLatitude) / cosD);
- double x = diameter / 2 + refraction;
- double y = Math.asin(Math.sin(x) / Math.sin(psi));
- long delta = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
-
- return time + (rise ? -delta : delta);
- }
-
//-------------------------------------------------------------------------
// Other utility methods
//-------------------------------------------------------------------------
@@ -1391,19 +787,16 @@ public class CalendarAstronomer {
* measured in radians.
*/
private double eclipticObliquity() {
- if (eclipObliquity == INVALID) {
- final double epoch = 2451545.0; // 2000 AD, January 1.5
+ final double epoch = 2451545.0; // 2000 AD, January 1.5
- double T = (getJulianDay() - epoch) / 36525;
+ double T = (getJulianDay() - epoch) / 36525;
- eclipObliquity = 23.439292
+ double eclipObliquity = 23.439292
- 46.815/3600 * T
- 0.0006/3600 * T*T
+ 0.00181/3600 * T*T*T;
- eclipObliquity *= DEG_RAD;
- }
- return eclipObliquity;
+ return eclipObliquity * DEG_RAD;
}
@@ -1417,13 +810,6 @@ public class CalendarAstronomer {
*/
private long time;
- /* These aren't used yet, but they'll be needed for sunset calculations
- * and equatorial to horizon coordinate conversions
- */
- private double fLongitude = 0.0;
- private double fLatitude = 0.0;
- private long fGmtOffset = 0;
-
//
// The following fields are used to cache calculated results for improved
// performance. These values all depend on the current time setting
@@ -1432,52 +818,20 @@ public class CalendarAstronomer {
static final private double INVALID = Double.MIN_VALUE;
private transient double julianDay = INVALID;
- private transient double julianCentury = INVALID;
private transient double sunLongitude = INVALID;
private transient double meanAnomalySun = INVALID;
- private transient double moonLongitude = INVALID;
private transient double moonEclipLong = INVALID;
- //private transient double meanAnomalyMoon = INVALID;
- private transient double eclipObliquity = INVALID;
- private transient double siderealT0 = INVALID;
- private transient double siderealTime = INVALID;
private transient Equatorial moonPosition = null;
private void clearCache() {
julianDay = INVALID;
- julianCentury = INVALID;
sunLongitude = INVALID;
meanAnomalySun = INVALID;
- moonLongitude = INVALID;
moonEclipLong = INVALID;
- //meanAnomalyMoon = INVALID;
- eclipObliquity = INVALID;
- siderealTime = INVALID;
- siderealT0 = INVALID;
moonPosition = null;
}
- //private static void out(String s) {
- // System.out.println(s);
- //}
-
- //private static String deg(double rad) {
- // return Double.toString(rad * RAD_DEG);
- //}
-
- //private static String hours(long ms) {
- // return Double.toString((double)ms / HOUR_MS) + " hours";
- //}
-
- /**
- * @hide draft / provisional / internal are hidden on Android
- */
- public String local(long localMillis) {
- return new Date(localMillis - TimeZone.getDefault().getRawOffset()).toString();
- }
-
-
/**
* Represents the position of an object in the sky relative to the ecliptic,
* the plane of the earth's orbit around the Sun.
@@ -1492,7 +846,6 @@ public class CalendarAstronomer {
* value without worrying about whether other code will modify them.
*
* @see CalendarAstronomer.Equatorial
- * @see CalendarAstronomer.Horizon
* @hide Only a subset of ICU is exposed in Android
* @hide draft / provisional / internal are hidden on Android
*/
@@ -1553,7 +906,6 @@ public class CalendarAstronomer {
* value without worrying about whether other code will modify them.
*
* @see CalendarAstronomer.Ecliptic
- * @see CalendarAstronomer.Horizon
* @hide Only a subset of ICU is exposed in Android
* @hide draft / provisional / internal are hidden on Android
*/
@@ -1607,60 +959,6 @@ public class CalendarAstronomer {
public final double declination;
}
- /**
- * Represents the position of an object in the sky relative to
- * the local horizon.
- * The <i>Altitude</i> represents the object's elevation above the horizon,
- * with objects below the horizon having a negative altitude.
- * The <i>Azimuth</i> is the geographic direction of the object from the
- * observer's position, with 0 representing north. The azimuth increases
- * clockwise from north.
- * <p>
- * Note that Horizon objects are immutable and cannot be modified
- * once they are constructed. This allows them to be passed and returned by
- * value without worrying about whether other code will modify them.
- *
- * @see CalendarAstronomer.Ecliptic
- * @see CalendarAstronomer.Equatorial
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- public static final class Horizon {
- /**
- * Constructs a Horizon coordinate object.
- * <p>
- * @param alt The altitude, measured in radians above the horizon.
- * @param azim The azimuth, measured in radians clockwise from north.
- * @hide draft / provisional / internal are hidden on Android
- */
- public Horizon(double alt, double azim) {
- altitude = alt;
- azimuth = azim;
- }
-
- /**
- * Return a string representation of this object, with the
- * angles measured in degrees.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Override
- public String toString() {
- return Double.toString(altitude*RAD_DEG) + "," + (azimuth*RAD_DEG);
- }
-
- /**
- * The object's altitude above the horizon, in radians.
- * @hide draft / provisional / internal are hidden on Android
- */
- public final double altitude;
-
- /**
- * The object's direction, in radians clockwise from north.
- * @hide draft / provisional / internal are hidden on Android
- */
- public final double azimuth;
- }
-
static private String radToHms(double angle) {
int hrs = (int) (angle*RAD_HOUR);
int min = (int)((angle*RAD_HOUR - hrs) * 60);
diff --git a/android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java b/android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java
index f160e7872..4d3068798 100644
--- a/android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java
+++ b/android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java
@@ -247,7 +247,7 @@ public final class DateNumberFormat extends NumberFormat {
Number result = null;
if (sawNumber) {
num = negative ? num * (-1) : num;
- result = Long.valueOf(num);
+ result = num;
parsePosition.setIndex(base + offset);
}
return result;
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java b/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java
index f4ae5ae9a..3ed55c054 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java
@@ -274,7 +274,7 @@ public class ICUResourceBundle extends UResourceBundle {
}
}
} catch (Throwable t) {
- //System.err.println("Error in - " + new Integer(i).toString()
+ //System.err.println("Error in - " + i
// + " - " + t.toString());
// ignore the err - just skip that resource
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUService.java b/android_icu4j/src/main/java/android/icu/impl/ICUService.java
index d6ebaa4b2..e34ad4c02 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUService.java
@@ -597,6 +597,8 @@ public class ICUService extends ICUNotifier {
Factory f = lIter.previous();
f.updateVisibleIDs(mutableMap);
}
+ // Capture the return value in a local variable.
+ // Avoids returning an idcache value changed by another thread (could be null after clearCaches()).
Map<String, Factory> result = Collections.unmodifiableMap(mutableMap);
this.idcache = result;
return result;
diff --git a/android_icu4j/src/main/java/android/icu/impl/LocaleFallbackData.java b/android_icu4j/src/main/java/android/icu/impl/LocaleFallbackData.java
index d812a2803..4e61b68b2 100644
--- a/android_icu4j/src/main/java/android/icu/impl/LocaleFallbackData.java
+++ b/android_icu4j/src/main/java/android/icu/impl/LocaleFallbackData.java
@@ -51,7 +51,6 @@ class LocaleFallbackData {
t.put("ain", "Kana");
t.put("aio", "Mymr");
t.put("aiq", "Arab");
- t.put("ajp", "Arab");
t.put("akk", "Xsux");
t.put("akv", "Cyrl");
t.put("alk", "Laoo");
@@ -389,7 +388,6 @@ class LocaleFallbackData {
t.put("jdt", "Cyrl");
t.put("jee", "Deva");
t.put("jge", "Geor");
- t.put("ji", "Hebr");
t.put("jje", "Hang");
t.put("jkm", "Mymr");
t.put("jml", "Deva");
@@ -488,6 +486,7 @@ class LocaleFallbackData {
t.put("ktb", "Ethi");
t.put("ktl", "Arab");
t.put("ktp", "Plrd");
+ t.put("ku_IR", "Arab");
t.put("ku_LB", "Arab");
t.put("kuf", "Laoo");
t.put("kum", "Cyrl");
@@ -710,7 +709,6 @@ class LocaleFallbackData {
t.put("pra", "Khar");
t.put("prc", "Arab");
t.put("prd", "Arab");
- t.put("prp", "Gujr");
t.put("prt", "Thai");
t.put("prx", "Arab");
t.put("ps", "Arab");
@@ -796,7 +794,6 @@ class LocaleFallbackData {
t.put("skb", "Thai");
t.put("skj", "Deva");
t.put("skr", "Arab");
- t.put("slq", "Arab");
t.put("smh", "Yiii");
t.put("smp", "Samr");
t.put("smu", "Khmr");
@@ -867,7 +864,6 @@ class LocaleFallbackData {
t.put("tkb", "Deva");
t.put("tks", "Arab");
t.put("tkt", "Deva");
- t.put("tmk", "Deva");
t.put("tmr", "Syrc");
t.put("tnv", "Cakm");
t.put("tov", "Arab");
@@ -962,7 +958,6 @@ class LocaleFallbackData {
t.put("xrn", "Cyrl");
t.put("xsa", "Sarb");
t.put("xsr", "Deva");
- t.put("xss", "Cyrl");
t.put("xub", "Taml");
t.put("xuj", "Taml");
t.put("xve", "Ital");
@@ -1028,7 +1023,6 @@ class LocaleFallbackData {
t.put("zh_VN", "Hant");
t.put("zhd", "Hani");
t.put("zhx", "Nshu");
- t.put("zkb", "Cyrl");
t.put("zko", "Cyrl");
t.put("zkt", "Kits");
t.put("zkz", "Cyrl");
diff --git a/android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java b/android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java
index a9f3186e7..10e066531 100644
--- a/android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java
+++ b/android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java
@@ -367,6 +367,15 @@ public final class LocaleIDParser {
}
}
+ // There are no strict limitation of the syntax of variant in the legacy
+ // locale format. If the locale is constructed from unicode_locale_id
+ // as defined in UTS35, then we know each unicode_variant_subtag
+ // could have max length of 8 ((alphanum{5,8} | digit alphanum{3})
+ // 179 would allow 20 unicode_variant_subtag with sep in the
+ // unicode_locale_id
+ // 8*20 + 1*(20-1) = 179
+ private static final int MAX_VARIANTS_LENGTH = 179;
+
/**
* Advance index past variant, and accumulate normalized variant in buffer. This ignores
* the codepage information from POSIX ids. Index must be immediately after the country
@@ -434,10 +443,12 @@ public final class LocaleIDParser {
c = UNDERSCORE;
}
append(c);
+ if (buffer.length() - oldBlen > MAX_VARIANTS_LENGTH) {
+ throw new IllegalArgumentException("variants is too long");
+ }
}
}
--index; // unget
-
return oldBlen;
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/PropsVectors.java b/android_icu4j/src/main/java/android/icu/impl/PropsVectors.java
index 99f52fd27..490d48a9b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/PropsVectors.java
+++ b/android_icu4j/src/main/java/android/icu/impl/PropsVectors.java
@@ -380,7 +380,7 @@ public class PropsVectors {
// sort the properties vectors to find unique vector values
Integer[] indexArray = new Integer[rows];
for (int i = 0; i < rows; ++i) {
- indexArray[i] = Integer.valueOf(columns * i);
+ indexArray[i] = columns * i;
}
Arrays.sort(indexArray, new Comparator<Integer>() {
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java b/android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java
index c451bc858..3aba5b2d7 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java
@@ -12,11 +12,14 @@ package android.icu.impl;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.util.EnumSet;
import java.util.Iterator;
import java.util.MissingResourceException;
import android.icu.lang.UCharacter;
import android.icu.lang.UCharacter.HangulSyllableType;
+import android.icu.lang.UCharacter.IdentifierStatus;
+import android.icu.lang.UCharacter.IdentifierType;
import android.icu.lang.UCharacter.NumericType;
import android.icu.lang.UCharacterCategory;
import android.icu.lang.UProperty;
@@ -865,6 +868,18 @@ public final class UCharacterProperty
return LayoutProps.INSTANCE.maxVoValue;
}
},
+ new IntProperty(SRC_PROPSVEC) { // IDENTIFIER_STATUS
+ @Override
+ int getValue(int c) {
+ int value = getAdditional(c, 2) >>> ID_TYPE_SHIFT;
+ return value >= ID_TYPE_ALLOWED_MIN ?
+ IdentifierStatus.ALLOWED.ordinal() : IdentifierStatus.RESTRICTED.ordinal();
+ }
+ @Override
+ int getMaxValue(int which) {
+ return IdentifierStatus.ALLOWED.ordinal();
+ }
+ },
};
public int getIntPropertyValue(int c, int which) {
@@ -938,6 +953,7 @@ public final class UCharacterProperty
} else {
switch(which) {
case UProperty.SCRIPT_EXTENSIONS:
+ case UProperty.IDENTIFIER_TYPE:
return SRC_PROPSVEC;
default:
return SRC_NONE; /* undefined */
@@ -1445,20 +1461,73 @@ public final class UCharacterProperty
/*
* Properties in vector word 2
* Bits
- * 31..26 unused since ICU 70 added uemoji.icu;
- * in ICU 57..69 stored emoji properties
+ * 31..26 ICU 75: Identifier_Type bit set
+ * ICU 70..74: unused
+ * ICU 57..69: emoji properties; moved to uemoji.icu in ICU 70
* 25..20 Line Break
* 19..15 Sentence Break
* 14..10 Word Break
* 9.. 5 Grapheme Cluster Break
* 4.. 0 Decomposition Type
*/
- //ivate static final int PROPS_2_EXTENDED_PICTOGRAPHIC=26; // ICU 62..69
- //ivate static final int PROPS_2_EMOJI_COMPONENT = 27; // ICU 60..69
- //ivate static final int PROPS_2_EMOJI = 28; // ICU 57..69
- //ivate static final int PROPS_2_EMOJI_PRESENTATION = 29; // ICU 57..69
- //ivate static final int PROPS_2_EMOJI_MODIFIER = 30; // ICU 57..69
- //ivate static final int PROPS_2_EMOJI_MODIFIER_BASE = 31; // ICU 57..69
+
+ // https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type
+ // The Identifier_Type maps each code point to a *set* of one or more values.
+ // Some can be combined with others, some can only occur alone.
+ // Exclusion & Limited_Use are combinable bits, but cannot occur together.
+ // We use this forbidden combination for enumerated values.
+ // We use 6 bits for all possible combinations.
+ // If more combinable values are added, then we need to use more bits.
+ //
+ // We do not store separate data for Identifier_Status:
+ // We can derive that from the encoded Identifier_Type via a simple range check.
+
+ // vate static final int ID_TYPE_MASK = 0xfc000000;
+ private static final int ID_TYPE_SHIFT = 26;
+
+ // A high bit for use in idTypeToEncoded[] but not used in the data
+ private static final int ID_TYPE_BIT = 0x80;
+
+ // Combinable bits
+ private static final int ID_TYPE_EXCLUSION = 0x20;
+ private static final int ID_TYPE_LIMITED_USE = 0x10;
+ private static final int ID_TYPE_UNCOMMON_USE = 8;
+ private static final int ID_TYPE_TECHNICAL = 4;
+ private static final int ID_TYPE_OBSOLETE = 2;
+ private static final int ID_TYPE_NOT_XID = 1;
+
+ // Exclusive values
+ private static final int ID_TYPE_NOT_CHARACTER = 0;
+
+ // Forbidden bit combination used for enumerating other exclusive values
+ private static final int ID_TYPE_FORBIDDEN = ID_TYPE_EXCLUSION | ID_TYPE_LIMITED_USE; // 0x30
+ private static final int ID_TYPE_DEPRECATED = ID_TYPE_FORBIDDEN; // 0x30
+ private static final int ID_TYPE_DEFAULT_IGNORABLE = ID_TYPE_FORBIDDEN + 1; // 0x31
+ private static final int ID_TYPE_NOT_NFKC = ID_TYPE_FORBIDDEN + 2; // 0x32
+
+ private static final int ID_TYPE_ALLOWED_MIN = ID_TYPE_FORBIDDEN + 0xc; // 0x3c
+ private static final int ID_TYPE_INCLUSION = ID_TYPE_FORBIDDEN + 0xe; // 0x3e
+ private static final int ID_TYPE_RECOMMENDED = ID_TYPE_FORBIDDEN + 0xf; // 0x3f
+
+ /**
+ * Maps UIdentifierType to encoded bits.
+ * When UPROPS_ID_TYPE_BIT is set, then use "&" to test whether the value bit is set.
+ * When UPROPS_ID_TYPE_BIT is not set, then compare ("==") the array value with the data value.
+ */
+ private static final int[] idTypeToEncoded = {
+ ID_TYPE_NOT_CHARACTER,
+ ID_TYPE_DEPRECATED,
+ ID_TYPE_DEFAULT_IGNORABLE,
+ ID_TYPE_NOT_NFKC,
+ ID_TYPE_BIT | ID_TYPE_NOT_XID,
+ ID_TYPE_BIT | ID_TYPE_EXCLUSION,
+ ID_TYPE_BIT | ID_TYPE_OBSOLETE,
+ ID_TYPE_BIT | ID_TYPE_TECHNICAL,
+ ID_TYPE_BIT | ID_TYPE_UNCOMMON_USE,
+ ID_TYPE_BIT | ID_TYPE_LIMITED_USE,
+ ID_TYPE_INCLUSION,
+ ID_TYPE_RECOMMENDED
+ };
private static final int LB_MASK = 0x03f00000;
private static final int LB_SHIFT = 20;
@@ -1565,7 +1634,7 @@ public final class UCharacterProperty
private static final class IsAcceptable implements ICUBinary.Authenticate {
@Override
public boolean isDataVersionAcceptable(byte version[]) {
- return version[0] == 7;
+ return version[0] == 8;
}
}
private static final int DATA_FORMAT = 0x5550726F; // "UPro"
@@ -1736,6 +1805,61 @@ public final class UCharacterProperty
}
}
+ public boolean hasIDType(int c, int typeIndex) {
+ if (typeIndex < 0 || typeIndex >= idTypeToEncoded.length) {
+ return false;
+ }
+ int encodedType = idTypeToEncoded[typeIndex];
+ int value = getAdditional(c, 2) >>> ID_TYPE_SHIFT;
+ if ((encodedType & ID_TYPE_BIT) != 0) {
+ return value < ID_TYPE_FORBIDDEN && (value & encodedType) != 0;
+ } else {
+ return value == encodedType;
+ }
+ }
+
+ public boolean hasIDType(int c, IdentifierType type) {
+ return hasIDType(c, type.ordinal());
+ }
+
+ private static void maybeAddType(int value, int bit, IdentifierType t,
+ EnumSet<IdentifierType> types) {
+ if ((value & bit) != 0) {
+ types.add(t);
+ }
+ }
+
+ public int getIDTypes(int c, EnumSet<IdentifierType> types) {
+ types.clear();
+ int value = getAdditional(c, 2) >>> ID_TYPE_SHIFT;;
+ if ((value & ID_TYPE_FORBIDDEN) == ID_TYPE_FORBIDDEN || value == ID_TYPE_NOT_CHARACTER) {
+ // single value
+ IdentifierType t;
+ switch (value) {
+ case ID_TYPE_NOT_CHARACTER: t = IdentifierType.NOT_CHARACTER; break;
+ case ID_TYPE_DEPRECATED: t = IdentifierType.DEPRECATED; break;
+ case ID_TYPE_DEFAULT_IGNORABLE: t = IdentifierType.DEFAULT_IGNORABLE; break;
+ case ID_TYPE_NOT_NFKC: t = IdentifierType.NOT_NFKC; break;
+ case ID_TYPE_INCLUSION: t = IdentifierType.INCLUSION; break;
+ case ID_TYPE_RECOMMENDED: t = IdentifierType.RECOMMENDED; break;
+ default:
+ throw new IllegalStateException(
+ String.format("unknown IdentifierType data value 0x%02x", value));
+ }
+ types.add(t);
+ return 1;
+ } else {
+ // one or more combinable bits
+ maybeAddType(value, ID_TYPE_NOT_XID, IdentifierType.NOT_XID, types);
+ maybeAddType(value, ID_TYPE_EXCLUSION, IdentifierType.EXCLUSION, types);
+ maybeAddType(value, ID_TYPE_OBSOLETE, IdentifierType.OBSOLETE, types);
+ maybeAddType(value, ID_TYPE_TECHNICAL, IdentifierType.TECHNICAL, types);
+ maybeAddType(value, ID_TYPE_UNCOMMON_USE, IdentifierType.UNCOMMON_USE, types);
+ maybeAddType(value, ID_TYPE_LIMITED_USE, IdentifierType.LIMITED_USE, types);
+ return types.size();
+ }
+ }
+
// This static initializer block must be placed after
// other static member initialization
static {
diff --git a/android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java b/android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java
index 0a874dae7..c96c991c3 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java
@@ -14,14 +14,12 @@
package android.icu.impl;
import java.lang.ref.SoftReference;
-import java.text.ParsePosition;
import java.util.Collections;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.Set;
import java.util.TreeSet;
-import android.icu.text.NumberFormat;
import android.icu.util.Output;
import android.icu.util.SimpleTimeZone;
import android.icu.util.TimeZone;
@@ -504,7 +502,7 @@ public final class ZoneMeta {
if (singleZone == null) {
Set<String> ids = TimeZone.getAvailableIDs(SystemTimeZoneType.CANONICAL_LOCATION, country, null);
assert(ids.size() >= 1);
- singleZone = Boolean.valueOf(ids.size() <= 1);
+ singleZone = ids.size() <= 1;
SINGLE_COUNTRY_CACHE.put(tzid, singleZone);
}
@@ -649,8 +647,7 @@ public final class ZoneMeta {
// fields[1] - hour / 5-bit
// fields[2] - min / 6-bit
// fields[3] - sec / 6-bit
- Integer key = Integer.valueOf(
- fields[0] * (fields[1] | fields[2] << 5 | fields[3] << 11));
+ Integer key = fields[0] * (fields[1] | fields[2] << 5 | fields[3] << 11);
return CUSTOM_ZONE_CACHE.getInstance(key, fields);
}
return null;
@@ -682,66 +679,25 @@ public final class ZoneMeta {
* @return Returns true when the given custom id is valid.
*/
static boolean parseCustomID(String id, int[] fields) {
- NumberFormat numberFormat = null;
-
if (id != null && id.length() > kGMT_ID.length() &&
- id.toUpperCase(Locale.ENGLISH).startsWith(kGMT_ID)) {
- ParsePosition pos = new ParsePosition(kGMT_ID.length());
+ id.substring(0, 3).equalsIgnoreCase(kGMT_ID)) {
int sign = 1;
int hour = 0;
int min = 0;
int sec = 0;
- if (id.charAt(pos.getIndex()) == 0x002D /*'-'*/) {
+ int[] pos = new int[1];
+ pos[0] = kGMT_ID.length();
+ if (id.charAt(pos[0]) == 0x002D /*'-'*/) {
sign = -1;
- } else if (id.charAt(pos.getIndex()) != 0x002B /*'+'*/) {
- return false;
- }
- pos.setIndex(pos.getIndex() + 1);
-
- numberFormat = NumberFormat.getInstance();
- numberFormat.setParseIntegerOnly(true);
-
- // Look for either hh:mm, hhmm, or hh
- int start = pos.getIndex();
-
- Number n = numberFormat.parse(id, pos);
- if (pos.getIndex() == start) {
+ } else if (id.charAt(pos[0]) != 0x002B /*'+'*/) {
return false;
}
- hour = n.intValue();
-
- if (pos.getIndex() < id.length()){
- if (pos.getIndex() - start > 2
- || id.charAt(pos.getIndex()) != 0x003A /*':'*/) {
- return false;
- }
- // hh:mm
- pos.setIndex(pos.getIndex() + 1);
- int oldPos = pos.getIndex();
- n = numberFormat.parse(id, pos);
- if ((pos.getIndex() - oldPos) != 2) {
- // must be 2 digits
- return false;
- }
- min = n.intValue();
- if (pos.getIndex() < id.length()) {
- if (id.charAt(pos.getIndex()) != 0x003A /*':'*/) {
- return false;
- }
- // [:ss]
- pos.setIndex(pos.getIndex() + 1);
- oldPos = pos.getIndex();
- n = numberFormat.parse(id, pos);
- if (pos.getIndex() != id.length()
- || (pos.getIndex() - oldPos) != 2) {
- return false;
- }
- sec = n.intValue();
- }
- } else {
- // Supported formats are below -
- //
+ pos[0]++;
+ int start = pos[0];
+ hour = Utility.parseNumber(id, pos, 10);
+ if (pos[0] == id.length()) {
+ // Handle the following cases
// HHmmss
// Hmmss
// HHmm
@@ -749,27 +705,57 @@ public final class ZoneMeta {
// HH
// H
- int length = pos.getIndex() - start;
- if (length <= 0 || 6 < length) {
- // invalid length
- return false;
- }
+ // Get all digits
+ // Should be 1 to 6 digits.
+ int length = pos[0] - start;
switch (length) {
- case 1:
- case 2:
+ case 1: // H
+ case 2: // HH
// already set to hour
break;
- case 3:
- case 4:
+ case 3: // Hmm
+ case 4: // HHmm
min = hour % 100;
hour /= 100;
break;
- case 5:
- case 6:
+ case 5: // Hmmss
+ case 6: // HHmmss
sec = hour % 100;
min = (hour/100) % 100;
hour /= 10000;
break;
+ default:
+ // invalid range
+ return false;
+ }
+ } else {
+ // Handle the following cases
+ // HH:mm:ss
+ // H:mm:ss
+ // HH:mm
+ // H:mm
+ if (pos[0] - start < 1 || pos[0] - start > 2 || id.charAt(pos[0]) != 0x003A /*':'*/) {
+ return false;
+ }
+ pos[0]++; // skip : after H
+ if (id.length() == pos[0]) {
+ return false;
+ }
+ start = pos[0];
+ min = Utility.parseNumber(id, pos, 10);
+ if (pos[0] - start != 2) {
+ return false;
+ }
+ if (id.length() > pos[0]) {
+ if (id.charAt(pos[0]) != 0x003A /*':'*/) {
+ return false;
+ }
+ pos[0]++; // skip : after mm
+ start = pos[0];
+ sec = Utility.parseNumber(id, pos, 10);
+ if (pos[0] - start != 2 || id.length() > pos[0]) {
+ return false;
+ }
}
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/breakiter/BurmeseBreakEngine.java b/android_icu4j/src/main/java/android/icu/impl/breakiter/BurmeseBreakEngine.java
index 6b0bfbc24..4aecc01bc 100644
--- a/android_icu4j/src/main/java/android/icu/impl/breakiter/BurmeseBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/impl/breakiter/BurmeseBreakEngine.java
@@ -202,7 +202,7 @@ public class BurmeseBreakEngine extends DictionaryBreakEngine {
// Did we find a word on this iteration? If so, push it on the break stack
if (wordLength > 0) {
- foundBreaks.push(Integer.valueOf(current + wordLength));
+ foundBreaks.push(current + wordLength);
}
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/breakiter/KhmerBreakEngine.java b/android_icu4j/src/main/java/android/icu/impl/breakiter/KhmerBreakEngine.java
index f746b9836..6bbaa9f98 100644
--- a/android_icu4j/src/main/java/android/icu/impl/breakiter/KhmerBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/impl/breakiter/KhmerBreakEngine.java
@@ -210,7 +210,7 @@ public class KhmerBreakEngine extends DictionaryBreakEngine {
// Did we find a word on this iteration? If so, push it on the break stack
if (wordLength > 0) {
- foundBreaks.push(Integer.valueOf(current + wordLength));
+ foundBreaks.push(current + wordLength);
}
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/breakiter/LaoBreakEngine.java b/android_icu4j/src/main/java/android/icu/impl/breakiter/LaoBreakEngine.java
index 9db413de5..22b4343b0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/breakiter/LaoBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/impl/breakiter/LaoBreakEngine.java
@@ -210,7 +210,7 @@ public class LaoBreakEngine extends DictionaryBreakEngine {
// Did we find a word on this iteration? If so, push it on the break stack
if (wordLength > 0) {
- foundBreaks.push(Integer.valueOf(current + wordLength));
+ foundBreaks.push(current + wordLength);
}
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/breakiter/ThaiBreakEngine.java b/android_icu4j/src/main/java/android/icu/impl/breakiter/ThaiBreakEngine.java
index 9d663bd12..4f32d462b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/breakiter/ThaiBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/impl/breakiter/ThaiBreakEngine.java
@@ -254,7 +254,7 @@ public class ThaiBreakEngine extends DictionaryBreakEngine {
// Did we find a word on this iteration? If so, push it on the break stack
if (wordLength > 0) {
- foundBreaks.push(Integer.valueOf(current + wordLength));
+ foundBreaks.push(current + wordLength);
}
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LSR.java b/android_icu4j/src/main/java/android/icu/impl/locale/LSR.java
index bf62ae93b..c774af479 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LSR.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LSR.java
@@ -3,9 +3,12 @@
// License & terms of use: http://www.unicode.org/copyright.html
package android.icu.impl.locale;
+import java.util.HashMap;
import java.util.List;
import java.util.Objects;
+import android.icu.lang.UCharacter;
+import android.icu.lang.UProperty;
import android.icu.lang.UScript;
/**
@@ -151,45 +154,91 @@ public final class LSR {
return (encodeLanguageToInt() + (27*27*27) * encodeRegionToInt(m49)) |
(encodeScriptToInt() << 24);
}
- private static String toLanguage(int encoded) {
- if (encoded == 0) return "";
- if (encoded == 1) return "skip";
- encoded &= 0x00ffffff;
- encoded %= 27*27*27;
- StringBuilder res = new StringBuilder(3);
- res.append((char)('a' + ((encoded % 27) - 1)));
- res.append((char)('a' + (((encoded / 27 ) % 27) - 1)));
- if (encoded / (27 * 27) != 0) {
- res.append((char)('a' + ((encoded / (27 * 27)) - 1)));
+
+ // BEGIN Android patch: Save ~1MB zygote heap. http://b/331291118
+ // ~7k LSR instances and ~21k strings are created from this path.
+ private static class CachedDecoder {
+ private static final String[] DECODED_ZERO =
+ new String[] {/*lang=*/ "", /*script=*/ "", /*region=*/ ""};
+ private static final String[] DECODED_ONE =
+ new String[] {/*lang=*/ "skip", /*script=*/ "script", /*region=*/ ""};
+
+ private final HashMap<Integer, String> langsCache;
+ private final HashMap<Integer, String> scriptsCache;
+ private final HashMap<Integer, String> regionsCache;
+
+ private final String[] m49;
+
+ CachedDecoder(String[] m49) {
+ int estLangCacheCapacity = 556; // ~= LocaleIDs._languages.length
+ langsCache = new HashMap<>(estLangCacheCapacity);
+ scriptsCache = new HashMap<>(UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT));
+ int estRegionCacheCapacity = 253; // ~= LocaleIDs._countries.length
+ regionsCache = new HashMap<>(estRegionCacheCapacity);
+ this.m49 = m49;
}
- return res.toString();
- }
- private static String toScript(int encoded) {
- if (encoded == 0) return "";
- if (encoded == 1) return "script";
- encoded = (encoded >> 24) & 0x000000ff;
- return UScript.getShortName(encoded);
- }
- private static String toRegion(int encoded, String[] m49) {
- if (encoded == 0 || encoded == 1) return "";
- encoded &= 0x00ffffff;
- encoded /= 27 * 27 * 27;
- encoded %= 27 * 27;
- if (encoded < 27) {
- return m49[encoded];
+
+ /**
+ * @return a String[3] object where the first element is a language code, the second element
+ * is a script code, and the third element is a region code.
+ */
+ String[] decode(int encoded) {
+ if (encoded == 0) {
+ return DECODED_ZERO;
+ }
+ if (encoded == 1) {
+ return DECODED_ONE;
+ }
+
+ int encodedLang = encoded & 0x00ffffff;
+ encodedLang %= 27*27*27;
+ String lang = langsCache.computeIfAbsent(encodedLang, CachedDecoder::toLanguage);
+
+ int encodedScript = (encoded >> 24) & 0x000000ff;
+ String script = scriptsCache.computeIfAbsent(encodedScript, UScript::getShortName);
+
+ int encodedRegion = encoded & 0x00ffffff;
+ encodedRegion /= 27 * 27 * 27;
+ encodedRegion %= 27 * 27;
+
+ String region;
+ if (encodedRegion < 27) {
+ region = m49[encodedRegion];
+ } else {
+ region = regionsCache.computeIfAbsent(encodedRegion, CachedDecoder::toRegion);
+ }
+
+ return new String[] {lang, script, region};
+ }
+
+ private static String toLanguage(int encoded) {
+ StringBuilder res = new StringBuilder(3);
+ res.append((char)('a' + ((encoded % 27) - 1)));
+ res.append((char)('a' + (((encoded / 27 ) % 27) - 1)));
+ if (encoded / (27 * 27) != 0) {
+ res.append((char)('a' + ((encoded / (27 * 27)) - 1)));
+ }
+ return res.toString();
+ }
+
+ private static String toRegion(int encoded) {
+ StringBuilder res = new StringBuilder(3);
+ res.append((char)('A' + ((encoded % 27) - 1)));
+ res.append((char)('A' + (((encoded / 27) % 27) - 1)));
+ return res.toString();
}
- StringBuilder res = new StringBuilder(3);
- res.append((char)('A' + ((encoded % 27) - 1)));
- res.append((char)('A' + (((encoded / 27) % 27) - 1)));
- return res.toString();
}
public static LSR[] decodeInts(int[] nums, String[] m49) {
LSR[] lsrs = new LSR[nums.length];
+
+ CachedDecoder decoder = new CachedDecoder(m49);
for (int i = 0; i < nums.length; ++i) {
- int n = nums[i];
- lsrs[i] = new LSR(toLanguage(n), toScript(n), toRegion(n, m49), LSR.IMPLICIT_LSR);
+ int encoded = nums[i];
+ String[] lsrStrings = decoder.decode(encoded);
+ lsrs[i] = new LSR(lsrStrings[0], lsrStrings[1], lsrStrings[2], LSR.IMPLICIT_LSR);
}
return lsrs;
}
+ // END Android patch: Save ~1MB zygote heap. http://b/331291118
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LikelySubtags.java b/android_icu4j/src/main/java/android/icu/impl/locale/LikelySubtags.java
new file mode 100644
index 000000000..6c4b699c9
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LikelySubtags.java
@@ -0,0 +1,595 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.locale;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.TreeMap;
+
+import android.icu.impl.ICUData;
+import android.icu.impl.ICUResourceBundle;
+import android.icu.impl.UResource;
+import android.icu.util.BytesTrie;
+import android.icu.util.Region;
+import android.icu.util.ULocale;
+
+/**
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public final class LikelySubtags {
+ private static final String PSEUDO_ACCENTS_PREFIX = "'"; // -XA, -PSACCENT
+ private static final String PSEUDO_BIDI_PREFIX = "+"; // -XB, -PSBIDI
+ private static final String PSEUDO_CRACKED_PREFIX = ","; // -XC, -PSCRACK
+
+ public static final int SKIP_SCRIPT = 1;
+
+ private static final boolean DEBUG_OUTPUT = LSR.DEBUG_OUTPUT;
+
+ // VisibleForTesting
+ /**
+ * @hide Only a subset of ICU is exposed in Android
+ */
+ public static final class Data {
+ public final Map<String, String> languageAliases;
+ public final Map<String, String> regionAliases;
+ public final byte[] trie;
+ public final LSR[] lsrs;
+
+ public Data(Map<String, String> languageAliases, Map<String, String> regionAliases,
+ byte[] trie, LSR[] lsrs) {
+ this.languageAliases = languageAliases;
+ this.regionAliases = regionAliases;
+ this.trie = trie;
+ this.lsrs = lsrs;
+ }
+
+ private static UResource.Value getValue(UResource.Table table,
+ String key, UResource.Value value) {
+ if (!table.findValue(key, value)) {
+ throw new MissingResourceException(
+ "langInfo.res missing data", "", "likely/" + key);
+ }
+ return value;
+ }
+
+ // VisibleForTesting
+ public static Data load() throws MissingResourceException {
+ ICUResourceBundle langInfo = ICUResourceBundle.getBundleInstance(
+ ICUData.ICU_BASE_NAME, "langInfo",
+ ICUResourceBundle.ICU_DATA_CLASS_LOADER, ICUResourceBundle.OpenType.DIRECT);
+ UResource.Value value = langInfo.getValueWithFallback("likely");
+ UResource.Table likelyTable = value.getTable();
+
+ Map<String, String> languageAliases;
+ if (likelyTable.findValue("languageAliases", value)) {
+ String[] pairs = value.getStringArray();
+ languageAliases = new HashMap<>(pairs.length / 2);
+ for (int i = 0; i < pairs.length; i += 2) {
+ languageAliases.put(pairs[i], pairs[i + 1]);
+ }
+ } else {
+ languageAliases = Collections.emptyMap();
+ }
+
+ Map<String, String> regionAliases;
+ if (likelyTable.findValue("regionAliases", value)) {
+ String[] pairs = value.getStringArray();
+ regionAliases = new HashMap<>(pairs.length / 2);
+ for (int i = 0; i < pairs.length; i += 2) {
+ regionAliases.put(pairs[i], pairs[i + 1]);
+ }
+ } else {
+ regionAliases = Collections.emptyMap();
+ }
+
+ ByteBuffer buffer = getValue(likelyTable, "trie", value).getBinary();
+ byte[] trie = new byte[buffer.remaining()];
+ buffer.get(trie);
+
+ String[] m49 = getValue(likelyTable, "m49", value).getStringArray();
+ LSR[] lsrs = LSR.decodeInts(getValue(likelyTable, "lsrnum", value).getIntVector(), m49);
+ return new Data(languageAliases, regionAliases, trie, lsrs);
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (this == other) { return true; }
+ if (other == null || !getClass().equals(other.getClass())) { return false; }
+ Data od = (Data)other;
+ return
+ languageAliases.equals(od.languageAliases) &&
+ regionAliases.equals(od.regionAliases) &&
+ Arrays.equals(trie, od.trie) &&
+ Arrays.equals(lsrs, od.lsrs);
+ }
+
+ @Override
+ public int hashCode() { // unused; silence ErrorProne
+ return 1;
+ }
+ }
+
+ // VisibleForTesting
+ public static final LikelySubtags INSTANCE = new LikelySubtags(Data.load());
+
+ private final Map<String, String> languageAliases;
+ private final Map<String, String> regionAliases;
+
+ // The trie maps each lang+script+region (encoded in ASCII) to an index into lsrs.
+ // There is also a trie value for each intermediate lang and lang+script.
+ // '*' is used instead of "und", "Zzzz"/"" and "ZZ"/"".
+ private final BytesTrie trie;
+ private final long trieUndState;
+ private final long trieUndZzzzState;
+ private final int defaultLsrIndex;
+ private final long[] trieFirstLetterStates = new long[26];
+ private final LSR[] lsrs;
+
+ private LikelySubtags(LikelySubtags.Data data) {
+ languageAliases = data.languageAliases;
+ regionAliases = data.regionAliases;
+ trie = new BytesTrie(data.trie, 0);
+ lsrs = data.lsrs;
+
+ // Cache the result of looking up language="und" encoded as "*", and "und-Zzzz" ("**").
+ BytesTrie.Result result = trie.next('*');
+ assert result.hasNext();
+ trieUndState = trie.getState64();
+ result = trie.next('*');
+ assert result.hasNext();
+ trieUndZzzzState = trie.getState64();
+ result = trie.next('*');
+ assert result.hasValue();
+ defaultLsrIndex = trie.getValue();
+ trie.reset();
+
+ for (char c = 'a'; c <= 'z'; ++c) {
+ result = trie.next(c);
+ if (result == BytesTrie.Result.NO_VALUE) {
+ trieFirstLetterStates[c - 'a'] = trie.getState64();
+ }
+ trie.reset();
+ }
+
+ if (DEBUG_OUTPUT) {
+ System.out.println("*** likely subtags");
+ for (Map.Entry<String, LSR> mapping : getTable().entrySet()) {
+ System.out.println(mapping);
+ }
+ }
+ }
+
+ /**
+ * Implementation of LocaleMatcher.canonicalize(ULocale).
+ */
+ public ULocale canonicalize(ULocale locale) {
+ String lang = locale.getLanguage();
+ String lang2 = languageAliases.get(lang);
+ String region = locale.getCountry();
+ String region2 = regionAliases.get(region);
+ if (lang2 != null || region2 != null) {
+ return new ULocale(
+ lang2 == null ? lang : lang2,
+ locale.getScript(),
+ region2 == null ? region : region2);
+ }
+ return locale;
+ }
+
+ private static String getCanonical(Map<String, String> aliases, String alias) {
+ String canonical = aliases.get(alias);
+ return canonical == null ? alias : canonical;
+ }
+
+ // VisibleForTesting
+ public LSR makeMaximizedLsrFrom(ULocale locale, boolean returnInputIfUnmatch) {
+ String name = locale.getName(); // Faster than .toLanguageTag().
+ if (name.startsWith("@x=")) {
+ String tag = locale.toLanguageTag();
+ assert tag.startsWith("und-x-");
+ // Private use language tag x-subtag-subtag... which CLDR changes to
+ // und-x-subtag-subtag...
+ return new LSR(tag, "", "", LSR.EXPLICIT_LSR);
+ }
+ LSR max = makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
+ locale.getVariant(), returnInputIfUnmatch);
+ if (max.language.isEmpty() && max.script.isEmpty() && max.region.isEmpty()) {
+ return new LSR(locale.getLanguage(), locale.getScript(), locale.getCountry(), LSR.EXPLICIT_LSR);
+ }
+ return max;
+ }
+
+ public LSR makeMaximizedLsrFrom(Locale locale) {
+ String tag = locale.toLanguageTag();
+ if (tag.startsWith("x-") || tag.startsWith("und-x-")) {
+ // Private use language tag x-subtag-subtag... which CLDR changes to
+ // und-x-subtag-subtag...
+ return new LSR(tag, "", "", LSR.EXPLICIT_LSR);
+ }
+ return makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
+ locale.getVariant(), false);
+ }
+
+ private LSR makeMaximizedLsr(String language, String script, String region, String variant, boolean returnInputIfUnmatch) {
+ // Handle pseudolocales like en-XA, ar-XB, fr-PSCRACK.
+ // They should match only themselves,
+ // not other locales with what looks like the same language and script subtags.
+ if (!returnInputIfUnmatch) {
+ if (region.length() == 2 && region.charAt(0) == 'X') {
+ switch (region.charAt(1)) {
+ case 'A':
+ return new LSR(PSEUDO_ACCENTS_PREFIX + language,
+ PSEUDO_ACCENTS_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ case 'B':
+ return new LSR(PSEUDO_BIDI_PREFIX + language,
+ PSEUDO_BIDI_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ case 'C':
+ return new LSR(PSEUDO_CRACKED_PREFIX + language,
+ PSEUDO_CRACKED_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ default: // normal locale
+ break;
+ }
+ }
+
+ if (variant.startsWith("PS")) {
+ int lsrFlags = region.isEmpty() ?
+ LSR.EXPLICIT_LANGUAGE | LSR.EXPLICIT_SCRIPT : LSR.EXPLICIT_LSR;
+ switch (variant) {
+ case "PSACCENT":
+ return new LSR(PSEUDO_ACCENTS_PREFIX + language,
+ PSEUDO_ACCENTS_PREFIX + script,
+ region.isEmpty() ? "XA" : region, lsrFlags);
+ case "PSBIDI":
+ return new LSR(PSEUDO_BIDI_PREFIX + language,
+ PSEUDO_BIDI_PREFIX + script,
+ region.isEmpty() ? "XB" : region, lsrFlags);
+ case "PSCRACK":
+ return new LSR(PSEUDO_CRACKED_PREFIX + language,
+ PSEUDO_CRACKED_PREFIX + script,
+ region.isEmpty() ? "XC" : region, lsrFlags);
+ default: // normal locale
+ break;
+ }
+ }
+ }
+
+ language = getCanonical(languageAliases, language);
+ // (We have no script mappings.)
+ region = getCanonical(regionAliases, region);
+ return maximize(language, script, region, returnInputIfUnmatch);
+ }
+
+ /**
+ * Helper method to find out a region is a macroregion
+ */
+ private boolean isMacroregion(String region) {
+ Region.RegionType type = Region.getInstance(region).getType();
+ return type == Region.RegionType.WORLD ||
+ type == Region.RegionType.CONTINENT ||
+ type == Region.RegionType.SUBCONTINENT ;
+ }
+
+ /**
+ * Raw access to addLikelySubtags. Input must be in canonical format, eg "en", not "eng" or "EN".
+ */
+ private LSR maximize(String language, String script, String region, boolean returnInputIfUnmatch) {
+ if (language.equals("und")) {
+ language = "";
+ }
+ if (script.equals("Zzzz")) {
+ script = "";
+ }
+ if (region.equals("ZZ")) {
+ region = "";
+ }
+ if (!script.isEmpty() && !region.isEmpty() && !language.isEmpty()) {
+ return new LSR(language, script, region, LSR.EXPLICIT_LSR); // already maximized
+ }
+
+ boolean retainLanguage = false;
+ boolean retainScript = false;
+ boolean retainRegion = false;
+ BytesTrie iter = new BytesTrie(trie);
+ long state;
+ int value;
+ // Small optimization: Array lookup for first language letter.
+ int c0;
+ if (language.length() >= 2 && 0 <= (c0 = language.charAt(0) - 'a') && c0 <= 25 &&
+ (state = trieFirstLetterStates[c0]) != 0) {
+ value = trieNext(iter.resetToState64(state), language, 1);
+ } else {
+ value = trieNext(iter, language, 0);
+ }
+ boolean matchLanguage = (value >= 0);
+ boolean matchScript = false;
+ if (value >= 0) {
+ retainLanguage = ! language.isEmpty();
+ state = iter.getState64();
+ } else {
+ retainLanguage = true;
+ iter.resetToState64(trieUndState); // "und" ("*")
+ state = 0;
+ }
+
+ if (value >= 0 && !script.isEmpty()) {
+ matchScript = true;
+ }
+ if (value > 0) {
+ // Intermediate or final value from just language.
+ if (value == SKIP_SCRIPT) {
+ value = 0;
+ }
+ retainScript = ! script.isEmpty();
+ } else {
+ value = trieNext(iter, script, 0);
+ if (value >= 0) {
+ retainScript = ! script.isEmpty();
+ state = iter.getState64();
+ } else {
+ retainScript = true;
+ if (state == 0) {
+ iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
+ } else {
+ iter.resetToState64(state);
+ value = trieNext(iter, "", 0);
+ assert value >= 0;
+ state = iter.getState64();
+ }
+ }
+ }
+
+ boolean matchRegion = false;
+ if (value > 0) {
+ // Final value from just language or language+script.
+ retainRegion = ! region.isEmpty();
+ } else {
+ value = trieNext(iter, region, 0);
+ if (value >= 0) {
+ if (!region.isEmpty() && !isMacroregion(region)) {
+ retainRegion = true;
+ matchRegion = true;
+ }
+ } else {
+ retainRegion = true;
+ if (state == 0) {
+ value = defaultLsrIndex;
+ } else {
+ iter.resetToState64(state);
+ value = trieNext(iter, "", 0);
+ assert value > 0;
+ }
+ }
+ }
+ LSR result = lsrs[value];
+
+ if (returnInputIfUnmatch &&
+ (!(matchLanguage || matchScript || (matchRegion && language.isEmpty())))) {
+ return new LSR("", "", "", LSR.EXPLICIT_LSR); // no matching.
+ }
+ if (language.isEmpty()) {
+ language = "und";
+ }
+
+ if (! (retainLanguage || retainScript || retainRegion)) {
+ assert result.flags == LSR.IMPLICIT_LSR;
+ return result;
+ }
+ if (!retainLanguage) {
+ language = result.language;
+ }
+ if (!retainScript) {
+ script = result.script;
+ }
+ if (!retainRegion) {
+ region = result.region;
+ }
+ int retainMask = (retainLanguage ? 4 : 0) + (retainScript ? 2 : 0) + (retainRegion ? 1 : 0);
+ // retainOldMask flags = LSR explicit-subtag flags
+ return new LSR(language, script, region, retainMask);
+ }
+
+ /**
+ * Tests whether lsr is "more likely" than other.
+ * For example, fr-Latn-FR is more likely than fr-Latn-CH because
+ * FR is the default region for fr-Latn.
+ *
+ * <p>The likelyInfo caches lookup information between calls.
+ * The return value is an updated likelyInfo value,
+ * with bit 0 set if lsr is "more likely".
+ * The initial value of likelyInfo must be negative.
+ */
+ int compareLikely(LSR lsr, LSR other, int likelyInfo) {
+ // If likelyInfo >= 0:
+ // likelyInfo bit 1 is set if the previous comparison with lsr
+ // was for equal language and script.
+ // Otherwise the scripts differed.
+ if (!lsr.language.equals(other.language)) {
+ return 0xfffffffc; // negative, lsr not better than other
+ }
+ if (!lsr.script.equals(other.script)) {
+ int index;
+ if (likelyInfo >= 0 && (likelyInfo & 2) == 0) {
+ index = likelyInfo >> 2;
+ } else {
+ index = getLikelyIndex(lsr.language, "");
+ likelyInfo = index << 2;
+ }
+ LSR likely = lsrs[index];
+ if (lsr.script.equals(likely.script)) {
+ return likelyInfo | 1;
+ } else {
+ return likelyInfo & ~1;
+ }
+ }
+ if (!lsr.region.equals(other.region)) {
+ int index;
+ if (likelyInfo >= 0 && (likelyInfo & 2) != 0) {
+ index = likelyInfo >> 2;
+ } else {
+ index = getLikelyIndex(lsr.language, lsr.region);
+ likelyInfo = (index << 2) | 2;
+ }
+ LSR likely = lsrs[index];
+ if (lsr.region.equals(likely.region)) {
+ return likelyInfo | 1;
+ } else {
+ return likelyInfo & ~1;
+ }
+ }
+ return likelyInfo & ~1; // lsr not better than other
+ }
+
+ // Subset of maximize().
+ private int getLikelyIndex(String language, String script) {
+ if (language.equals("und")) {
+ language = "";
+ }
+ if (script.equals("Zzzz")) {
+ script = "";
+ }
+
+ BytesTrie iter = new BytesTrie(trie);
+ long state;
+ int value;
+ // Small optimization: Array lookup for first language letter.
+ int c0;
+ if (language.length() >= 2 && 0 <= (c0 = language.charAt(0) - 'a') && c0 <= 25 &&
+ (state = trieFirstLetterStates[c0]) != 0) {
+ value = trieNext(iter.resetToState64(state), language, 1);
+ } else {
+ value = trieNext(iter, language, 0);
+ }
+ if (value >= 0) {
+ state = iter.getState64();
+ } else {
+ iter.resetToState64(trieUndState); // "und" ("*")
+ state = 0;
+ }
+
+ if (value > 0) {
+ // Intermediate or final value from just language.
+ if (value == SKIP_SCRIPT) {
+ value = 0;
+ }
+ } else {
+ value = trieNext(iter, script, 0);
+ if (value >= 0) {
+ state = iter.getState64();
+ } else {
+ if (state == 0) {
+ iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
+ } else {
+ iter.resetToState64(state);
+ value = trieNext(iter, "", 0);
+ assert value >= 0;
+ state = iter.getState64();
+ }
+ }
+ }
+
+ if (value > 0) {
+ // Final value from just language or language+script.
+ } else {
+ value = trieNext(iter, "", 0);
+ assert value > 0;
+ }
+ return value;
+ }
+
+ private static final int trieNext(BytesTrie iter, String s, int i) {
+ BytesTrie.Result result;
+ if (s.isEmpty()) {
+ result = iter.next('*');
+ } else {
+ int end = s.length() - 1;
+ for (;; ++i) {
+ int c = s.charAt(i);
+ if (i < end) {
+ if (!iter.next(c).hasNext()) {
+ return -1;
+ }
+ } else {
+ // last character of this subtag
+ result = iter.next(c | 0x80);
+ break;
+ }
+ }
+ }
+ switch (result) {
+ case NO_MATCH: return -1;
+ case NO_VALUE: return 0;
+ case INTERMEDIATE_VALUE:
+ assert iter.getValue() == SKIP_SCRIPT;
+ return SKIP_SCRIPT;
+ case FINAL_VALUE: return iter.getValue();
+ default: return -1;
+ }
+ }
+
+ public LSR minimizeSubtags(String languageIn, String scriptIn, String regionIn,
+ ULocale.Minimize fieldToFavor) {
+ LSR max = maximize(languageIn, scriptIn, regionIn, true);
+ if (max.language.isEmpty() && max.region.isEmpty() && max.script.isEmpty()) {
+ // Cannot match, return as is
+ return new LSR(languageIn, scriptIn, regionIn, LSR.EXPLICIT_LSR);
+ }
+ LSR test = maximize(max.language, "", "", true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, "", "", LSR.DONT_CARE_FLAGS);
+ }
+ if (ULocale.Minimize.FAVOR_REGION == fieldToFavor) {
+ test = maximize(max.language, "", max.region, true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, "", max.region, LSR.DONT_CARE_FLAGS);
+ }
+ test = maximize(max.language, max.script, "", true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, max.script, "", LSR.DONT_CARE_FLAGS);
+ }
+ } else {
+ test = maximize(max.language, max.script, "", true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, max.script, "", LSR.DONT_CARE_FLAGS);
+ }
+ test = maximize(max.language, "", max.region, true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, "", max.region, LSR.DONT_CARE_FLAGS);
+ }
+ }
+ return new LSR(max.language, max.script, max.region, LSR.DONT_CARE_FLAGS);
+ }
+
+ private Map<String, LSR> getTable() {
+ Map<String, LSR> map = new TreeMap<>();
+ StringBuilder sb = new StringBuilder();
+ for (BytesTrie.Entry entry : trie) {
+ sb.setLength(0);
+ int length = entry.bytesLength();
+ for (int i = 0; i < length;) {
+ byte b = entry.byteAt(i++);
+ if (b == '*') {
+ sb.append("*-");
+ } else if (b >= 0) {
+ sb.append((char) b);
+ } else { // end of subtag
+ sb.append((char) (b & 0x7f)).append('-');
+ }
+ }
+ assert sb.length() > 0 && sb.charAt(sb.length() - 1) == '-';
+ sb.setLength(sb.length() - 1);
+ map.put(sb.toString(), lsrs[entry.value]);
+ }
+ return map;
+ }
+
+ @Override
+ public String toString() {
+ return getTable().toString();
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java
index f04476ae5..441610807 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java
@@ -230,8 +230,8 @@ public class LocaleDistance {
// VisibleForTesting
public int testOnlyDistance(ULocale desired, ULocale supported,
int threshold, FavorSubtag favorSubtag) {
- LSR supportedLSR = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(supported, false);
- LSR desiredLSR = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(desired, false);
+ LSR supportedLSR = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(supported, false);
+ LSR desiredLSR = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(desired, false);
int indexAndDistance = getBestIndexAndDistance(desiredLSR, new LSR[] { supportedLSR }, 1,
shiftDistance(threshold), favorSubtag, LocaleMatcher.Direction.WITH_ONE_WAY);
return getDistanceFloor(indexAndDistance);
@@ -255,7 +255,7 @@ public class LocaleDistance {
long desLangState = desLangDistance >= 0 && supportedLSRsLength > 1 ? iter.getState64() : 0;
// Index of the supported LSR with the lowest distance.
int bestIndex = -1;
- // Cached lookup info from XLikelySubtags.compareLikely().
+ // Cached lookup info from LikelySubtags.compareLikely().
int bestLikelyInfo = -1;
for (int slIndex = 0; slIndex < supportedLSRsLength; ++slIndex) {
LSR supported = supportedLSRs[slIndex];
@@ -374,7 +374,7 @@ public class LocaleDistance {
if (direction != LocaleMatcher.Direction.ONLY_TWO_WAY ||
// Is there also a match when we swap desired/supported?
isMatch(supported, desired, shiftedThreshold, favorSubtag)) {
- bestLikelyInfo = XLikelySubtags.INSTANCE.compareLikely(
+ bestLikelyInfo = LikelySubtags.INSTANCE.compareLikely(
supported, supportedLSRs[bestIndex], bestLikelyInfo);
if ((bestLikelyInfo & 1) != 0) {
// This supported locale matches as well as the previous best match,
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java
index 0e1ed8971..94242c0c9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java
@@ -44,12 +44,12 @@ public class LocaleExtensions {
CALENDAR_JAPANESE = new LocaleExtensions();
CALENDAR_JAPANESE._id = "u-ca-japanese";
CALENDAR_JAPANESE._map = new TreeMap<Character, Extension>();
- CALENDAR_JAPANESE._map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), UnicodeLocaleExtension.CA_JAPANESE);
+ CALENDAR_JAPANESE._map.put(UnicodeLocaleExtension.SINGLETON, UnicodeLocaleExtension.CA_JAPANESE);
NUMBER_THAI = new LocaleExtensions();
NUMBER_THAI._id = "u-nu-thai";
NUMBER_THAI._map = new TreeMap<Character, Extension>();
- NUMBER_THAI._map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), UnicodeLocaleExtension.NU_THAI);
+ NUMBER_THAI._map.put(UnicodeLocaleExtension.SINGLETON, UnicodeLocaleExtension.NU_THAI);
}
private LocaleExtensions() {
@@ -71,7 +71,7 @@ public class LocaleExtensions {
}
// Build extension map
- _map = new TreeMap<Character, Extension>();
+ _map = new TreeMap<>();
if (hasExtension) {
for (Entry<CaseInsensitiveChar, String> ext : extensions.entrySet()) {
char key = AsciiUtil.toLower(ext.getKey().value());
@@ -86,7 +86,7 @@ public class LocaleExtensions {
}
Extension e = new Extension(key, AsciiUtil.toLowerString(value));
- _map.put(Character.valueOf(key), e);
+ _map.put(key, e);
}
}
@@ -111,7 +111,7 @@ public class LocaleExtensions {
}
UnicodeLocaleExtension ule = new UnicodeLocaleExtension(uaset, ukmap);
- _map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), ule);
+ _map.put(UnicodeLocaleExtension.SINGLETON, ule);
}
if (_map.size() == 0) {
@@ -128,11 +128,11 @@ public class LocaleExtensions {
}
public Extension getExtension(Character key) {
- return _map.get(Character.valueOf(AsciiUtil.toLower(key.charValue())));
+ return _map.get(AsciiUtil.toLower(key.charValue()));
}
public String getExtensionValue(Character key) {
- Extension ext = _map.get(Character.valueOf(AsciiUtil.toLower(key.charValue())));
+ Extension ext = _map.get(AsciiUtil.toLower(key.charValue()));
if (ext == null) {
return null;
}
@@ -140,7 +140,7 @@ public class LocaleExtensions {
}
public Set<String> getUnicodeLocaleAttributes() {
- Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON));
+ Extension ext = _map.get(UnicodeLocaleExtension.SINGLETON);
if (ext == null) {
return Collections.emptySet();
}
@@ -149,7 +149,7 @@ public class LocaleExtensions {
}
public Set<String> getUnicodeLocaleKeys() {
- Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON));
+ Extension ext = _map.get(UnicodeLocaleExtension.SINGLETON);
if (ext == null) {
return Collections.emptySet();
}
@@ -158,7 +158,7 @@ public class LocaleExtensions {
}
public String getUnicodeLocaleType(String unicodeLocaleKey) {
- Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON));
+ Extension ext = _map.get(UnicodeLocaleExtension.SINGLETON);
if (ext == null) {
return null;
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/XLikelySubtags.java b/android_icu4j/src/main/java/android/icu/impl/locale/XLikelySubtags.java
deleted file mode 100644
index 5c3d2f63a..000000000
--- a/android_icu4j/src/main/java/android/icu/impl/locale/XLikelySubtags.java
+++ /dev/null
@@ -1,593 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-package android.icu.impl.locale;
-
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.TreeMap;
-
-import android.icu.impl.ICUData;
-import android.icu.impl.ICUResourceBundle;
-import android.icu.impl.UResource;
-import android.icu.util.BytesTrie;
-import android.icu.util.Region;
-import android.icu.util.ULocale;
-
-/**
- * @hide Only a subset of ICU is exposed in Android
- */
-public final class XLikelySubtags {
- private static final String PSEUDO_ACCENTS_PREFIX = "'"; // -XA, -PSACCENT
- private static final String PSEUDO_BIDI_PREFIX = "+"; // -XB, -PSBIDI
- private static final String PSEUDO_CRACKED_PREFIX = ","; // -XC, -PSCRACK
-
- public static final int SKIP_SCRIPT = 1;
-
- private static final boolean DEBUG_OUTPUT = LSR.DEBUG_OUTPUT;
-
- // VisibleForTesting
- /**
- * @hide Only a subset of ICU is exposed in Android
- */
- public static final class Data {
- public final Map<String, String> languageAliases;
- public final Map<String, String> regionAliases;
- public final byte[] trie;
- public final LSR[] lsrs;
-
- public Data(Map<String, String> languageAliases, Map<String, String> regionAliases,
- byte[] trie, LSR[] lsrs) {
- this.languageAliases = languageAliases;
- this.regionAliases = regionAliases;
- this.trie = trie;
- this.lsrs = lsrs;
- }
-
- private static UResource.Value getValue(UResource.Table table,
- String key, UResource.Value value) {
- if (!table.findValue(key, value)) {
- throw new MissingResourceException(
- "langInfo.res missing data", "", "likely/" + key);
- }
- return value;
- }
-
- // VisibleForTesting
- public static Data load() throws MissingResourceException {
- ICUResourceBundle langInfo = ICUResourceBundle.getBundleInstance(
- ICUData.ICU_BASE_NAME, "langInfo",
- ICUResourceBundle.ICU_DATA_CLASS_LOADER, ICUResourceBundle.OpenType.DIRECT);
- UResource.Value value = langInfo.getValueWithFallback("likely");
- UResource.Table likelyTable = value.getTable();
-
- Map<String, String> languageAliases;
- if (likelyTable.findValue("languageAliases", value)) {
- String[] pairs = value.getStringArray();
- languageAliases = new HashMap<>(pairs.length / 2);
- for (int i = 0; i < pairs.length; i += 2) {
- languageAliases.put(pairs[i], pairs[i + 1]);
- }
- } else {
- languageAliases = Collections.emptyMap();
- }
-
- Map<String, String> regionAliases;
- if (likelyTable.findValue("regionAliases", value)) {
- String[] pairs = value.getStringArray();
- regionAliases = new HashMap<>(pairs.length / 2);
- for (int i = 0; i < pairs.length; i += 2) {
- regionAliases.put(pairs[i], pairs[i + 1]);
- }
- } else {
- regionAliases = Collections.emptyMap();
- }
-
- ByteBuffer buffer = getValue(likelyTable, "trie", value).getBinary();
- byte[] trie = new byte[buffer.remaining()];
- buffer.get(trie);
-
- String[] m49 = getValue(likelyTable, "m49", value).getStringArray();
- LSR[] lsrs = LSR.decodeInts(getValue(likelyTable, "lsrnum", value).getIntVector(), m49);
- return new Data(languageAliases, regionAliases, trie, lsrs);
- }
-
- @Override
- public boolean equals(Object other) {
- if (this == other) { return true; }
- if (other == null || !getClass().equals(other.getClass())) { return false; }
- Data od = (Data)other;
- return
- languageAliases.equals(od.languageAliases) &&
- regionAliases.equals(od.regionAliases) &&
- Arrays.equals(trie, od.trie) &&
- Arrays.equals(lsrs, od.lsrs);
- }
-
- @Override
- public int hashCode() { // unused; silence ErrorProne
- return 1;
- }
- }
-
- // VisibleForTesting
- public static final XLikelySubtags INSTANCE = new XLikelySubtags(Data.load());
-
- private final Map<String, String> languageAliases;
- private final Map<String, String> regionAliases;
-
- // The trie maps each lang+script+region (encoded in ASCII) to an index into lsrs.
- // There is also a trie value for each intermediate lang and lang+script.
- // '*' is used instead of "und", "Zzzz"/"" and "ZZ"/"".
- private final BytesTrie trie;
- private final long trieUndState;
- private final long trieUndZzzzState;
- private final int defaultLsrIndex;
- private final long[] trieFirstLetterStates = new long[26];
- private final LSR[] lsrs;
-
- private XLikelySubtags(XLikelySubtags.Data data) {
- languageAliases = data.languageAliases;
- regionAliases = data.regionAliases;
- trie = new BytesTrie(data.trie, 0);
- lsrs = data.lsrs;
-
- // Cache the result of looking up language="und" encoded as "*", and "und-Zzzz" ("**").
- BytesTrie.Result result = trie.next('*');
- assert result.hasNext();
- trieUndState = trie.getState64();
- result = trie.next('*');
- assert result.hasNext();
- trieUndZzzzState = trie.getState64();
- result = trie.next('*');
- assert result.hasValue();
- defaultLsrIndex = trie.getValue();
- trie.reset();
-
- for (char c = 'a'; c <= 'z'; ++c) {
- result = trie.next(c);
- if (result == BytesTrie.Result.NO_VALUE) {
- trieFirstLetterStates[c - 'a'] = trie.getState64();
- }
- trie.reset();
- }
-
- if (DEBUG_OUTPUT) {
- System.out.println("*** likely subtags");
- for (Map.Entry<String, LSR> mapping : getTable().entrySet()) {
- System.out.println(mapping);
- }
- }
- }
-
- /**
- * Implementation of LocaleMatcher.canonicalize(ULocale).
- */
- public ULocale canonicalize(ULocale locale) {
- String lang = locale.getLanguage();
- String lang2 = languageAliases.get(lang);
- String region = locale.getCountry();
- String region2 = regionAliases.get(region);
- if (lang2 != null || region2 != null) {
- return new ULocale(
- lang2 == null ? lang : lang2,
- locale.getScript(),
- region2 == null ? region : region2);
- }
- return locale;
- }
-
- private static String getCanonical(Map<String, String> aliases, String alias) {
- String canonical = aliases.get(alias);
- return canonical == null ? alias : canonical;
- }
-
- // VisibleForTesting
- public LSR makeMaximizedLsrFrom(ULocale locale, boolean returnInputIfUnmatch) {
- String name = locale.getName(); // Faster than .toLanguageTag().
- if (name.startsWith("@x=")) {
- String tag = locale.toLanguageTag();
- assert tag.startsWith("und-x-");
- // Private use language tag x-subtag-subtag... which CLDR changes to
- // und-x-subtag-subtag...
- return new LSR(tag, "", "", LSR.EXPLICIT_LSR);
- }
- LSR max = makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
- locale.getVariant(), returnInputIfUnmatch);
- if (max.language.isEmpty() && max.script.isEmpty() && max.region.isEmpty()) {
- return new LSR(locale.getLanguage(), locale.getScript(), locale.getCountry(), LSR.EXPLICIT_LSR);
- }
- return max;
- }
-
- public LSR makeMaximizedLsrFrom(Locale locale) {
- String tag = locale.toLanguageTag();
- if (tag.startsWith("x-") || tag.startsWith("und-x-")) {
- // Private use language tag x-subtag-subtag... which CLDR changes to
- // und-x-subtag-subtag...
- return new LSR(tag, "", "", LSR.EXPLICIT_LSR);
- }
- return makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
- locale.getVariant(), false);
- }
-
- private LSR makeMaximizedLsr(String language, String script, String region, String variant, boolean returnInputIfUnmatch) {
- // Handle pseudolocales like en-XA, ar-XB, fr-PSCRACK.
- // They should match only themselves,
- // not other locales with what looks like the same language and script subtags.
- if (region.length() == 2 && region.charAt(0) == 'X') {
- switch (region.charAt(1)) {
- case 'A':
- return new LSR(PSEUDO_ACCENTS_PREFIX + language,
- PSEUDO_ACCENTS_PREFIX + script, region, LSR.EXPLICIT_LSR);
- case 'B':
- return new LSR(PSEUDO_BIDI_PREFIX + language,
- PSEUDO_BIDI_PREFIX + script, region, LSR.EXPLICIT_LSR);
- case 'C':
- return new LSR(PSEUDO_CRACKED_PREFIX + language,
- PSEUDO_CRACKED_PREFIX + script, region, LSR.EXPLICIT_LSR);
- default: // normal locale
- break;
- }
- }
-
- if (variant.startsWith("PS")) {
- int lsrFlags = region.isEmpty() ?
- LSR.EXPLICIT_LANGUAGE | LSR.EXPLICIT_SCRIPT : LSR.EXPLICIT_LSR;
- switch (variant) {
- case "PSACCENT":
- return new LSR(PSEUDO_ACCENTS_PREFIX + language,
- PSEUDO_ACCENTS_PREFIX + script,
- region.isEmpty() ? "XA" : region, lsrFlags);
- case "PSBIDI":
- return new LSR(PSEUDO_BIDI_PREFIX + language,
- PSEUDO_BIDI_PREFIX + script,
- region.isEmpty() ? "XB" : region, lsrFlags);
- case "PSCRACK":
- return new LSR(PSEUDO_CRACKED_PREFIX + language,
- PSEUDO_CRACKED_PREFIX + script,
- region.isEmpty() ? "XC" : region, lsrFlags);
- default: // normal locale
- break;
- }
- }
-
- language = getCanonical(languageAliases, language);
- // (We have no script mappings.)
- region = getCanonical(regionAliases, region);
- return maximize(language, script, region, returnInputIfUnmatch);
- }
-
- /**
- * Helper method to find out a region is a macroregion
- */
- private boolean isMacroregion(String region) {
- Region.RegionType type = Region.getInstance(region).getType();
- return type == Region.RegionType.WORLD ||
- type == Region.RegionType.CONTINENT ||
- type == Region.RegionType.SUBCONTINENT ;
- }
-
- /**
- * Raw access to addLikelySubtags. Input must be in canonical format, eg "en", not "eng" or "EN".
- */
- private LSR maximize(String language, String script, String region, boolean returnInputIfUnmatch) {
- if (language.equals("und")) {
- language = "";
- }
- if (script.equals("Zzzz")) {
- script = "";
- }
- if (region.equals("ZZ")) {
- region = "";
- }
- if (!script.isEmpty() && !region.isEmpty() && !language.isEmpty()) {
- return new LSR(language, script, region, LSR.EXPLICIT_LSR); // already maximized
- }
-
- boolean retainLanguage = false;
- boolean retainScript = false;
- boolean retainRegion = false;
- BytesTrie iter = new BytesTrie(trie);
- long state;
- int value;
- // Small optimization: Array lookup for first language letter.
- int c0;
- if (language.length() >= 2 && 0 <= (c0 = language.charAt(0) - 'a') && c0 <= 25 &&
- (state = trieFirstLetterStates[c0]) != 0) {
- value = trieNext(iter.resetToState64(state), language, 1);
- } else {
- value = trieNext(iter, language, 0);
- }
- boolean matchLanguage = (value >= 0);
- boolean matchScript = false;
- if (value >= 0) {
- retainLanguage = ! language.isEmpty();
- state = iter.getState64();
- } else {
- retainLanguage = true;
- iter.resetToState64(trieUndState); // "und" ("*")
- state = 0;
- }
-
- if (value >= 0 && !script.isEmpty()) {
- matchScript = true;
- }
- if (value > 0) {
- // Intermediate or final value from just language.
- if (value == SKIP_SCRIPT) {
- value = 0;
- }
- retainScript = ! script.isEmpty();
- } else {
- value = trieNext(iter, script, 0);
- if (value >= 0) {
- retainScript = ! script.isEmpty();
- state = iter.getState64();
- } else {
- retainScript = true;
- if (state == 0) {
- iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
- } else {
- iter.resetToState64(state);
- value = trieNext(iter, "", 0);
- assert value >= 0;
- state = iter.getState64();
- }
- }
- }
-
- boolean matchRegion = false;
- if (value > 0) {
- // Final value from just language or language+script.
- retainRegion = ! region.isEmpty();
- } else {
- value = trieNext(iter, region, 0);
- if (value >= 0) {
- if (!region.isEmpty() && !isMacroregion(region)) {
- retainRegion = true;
- matchRegion = true;
- }
- } else {
- retainRegion = true;
- if (state == 0) {
- value = defaultLsrIndex;
- } else {
- iter.resetToState64(state);
- value = trieNext(iter, "", 0);
- assert value > 0;
- }
- }
- }
- LSR result = lsrs[value];
-
- if (returnInputIfUnmatch &&
- (!(matchLanguage || matchScript || (matchRegion && language.isEmpty())))) {
- return new LSR("", "", "", LSR.EXPLICIT_LSR); // no matching.
- }
- if (language.isEmpty()) {
- language = "und";
- }
-
- if (! (retainLanguage || retainScript || retainRegion)) {
- assert result.flags == LSR.IMPLICIT_LSR;
- return result;
- }
- if (!retainLanguage) {
- language = result.language;
- }
- if (!retainScript) {
- script = result.script;
- }
- if (!retainRegion) {
- region = result.region;
- }
- int retainMask = (retainLanguage ? 4 : 0) + (retainScript ? 2 : 0) + (retainRegion ? 1 : 0);
- // retainOldMask flags = LSR explicit-subtag flags
- return new LSR(language, script, region, retainMask);
- }
-
- /**
- * Tests whether lsr is "more likely" than other.
- * For example, fr-Latn-FR is more likely than fr-Latn-CH because
- * FR is the default region for fr-Latn.
- *
- * <p>The likelyInfo caches lookup information between calls.
- * The return value is an updated likelyInfo value,
- * with bit 0 set if lsr is "more likely".
- * The initial value of likelyInfo must be negative.
- */
- int compareLikely(LSR lsr, LSR other, int likelyInfo) {
- // If likelyInfo >= 0:
- // likelyInfo bit 1 is set if the previous comparison with lsr
- // was for equal language and script.
- // Otherwise the scripts differed.
- if (!lsr.language.equals(other.language)) {
- return 0xfffffffc; // negative, lsr not better than other
- }
- if (!lsr.script.equals(other.script)) {
- int index;
- if (likelyInfo >= 0 && (likelyInfo & 2) == 0) {
- index = likelyInfo >> 2;
- } else {
- index = getLikelyIndex(lsr.language, "");
- likelyInfo = index << 2;
- }
- LSR likely = lsrs[index];
- if (lsr.script.equals(likely.script)) {
- return likelyInfo | 1;
- } else {
- return likelyInfo & ~1;
- }
- }
- if (!lsr.region.equals(other.region)) {
- int index;
- if (likelyInfo >= 0 && (likelyInfo & 2) != 0) {
- index = likelyInfo >> 2;
- } else {
- index = getLikelyIndex(lsr.language, lsr.region);
- likelyInfo = (index << 2) | 2;
- }
- LSR likely = lsrs[index];
- if (lsr.region.equals(likely.region)) {
- return likelyInfo | 1;
- } else {
- return likelyInfo & ~1;
- }
- }
- return likelyInfo & ~1; // lsr not better than other
- }
-
- // Subset of maximize().
- private int getLikelyIndex(String language, String script) {
- if (language.equals("und")) {
- language = "";
- }
- if (script.equals("Zzzz")) {
- script = "";
- }
-
- BytesTrie iter = new BytesTrie(trie);
- long state;
- int value;
- // Small optimization: Array lookup for first language letter.
- int c0;
- if (language.length() >= 2 && 0 <= (c0 = language.charAt(0) - 'a') && c0 <= 25 &&
- (state = trieFirstLetterStates[c0]) != 0) {
- value = trieNext(iter.resetToState64(state), language, 1);
- } else {
- value = trieNext(iter, language, 0);
- }
- if (value >= 0) {
- state = iter.getState64();
- } else {
- iter.resetToState64(trieUndState); // "und" ("*")
- state = 0;
- }
-
- if (value > 0) {
- // Intermediate or final value from just language.
- if (value == SKIP_SCRIPT) {
- value = 0;
- }
- } else {
- value = trieNext(iter, script, 0);
- if (value >= 0) {
- state = iter.getState64();
- } else {
- if (state == 0) {
- iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
- } else {
- iter.resetToState64(state);
- value = trieNext(iter, "", 0);
- assert value >= 0;
- state = iter.getState64();
- }
- }
- }
-
- if (value > 0) {
- // Final value from just language or language+script.
- } else {
- value = trieNext(iter, "", 0);
- assert value > 0;
- }
- return value;
- }
-
- private static final int trieNext(BytesTrie iter, String s, int i) {
- BytesTrie.Result result;
- if (s.isEmpty()) {
- result = iter.next('*');
- } else {
- int end = s.length() - 1;
- for (;; ++i) {
- int c = s.charAt(i);
- if (i < end) {
- if (!iter.next(c).hasNext()) {
- return -1;
- }
- } else {
- // last character of this subtag
- result = iter.next(c | 0x80);
- break;
- }
- }
- }
- switch (result) {
- case NO_MATCH: return -1;
- case NO_VALUE: return 0;
- case INTERMEDIATE_VALUE:
- assert iter.getValue() == SKIP_SCRIPT;
- return SKIP_SCRIPT;
- case FINAL_VALUE: return iter.getValue();
- default: return -1;
- }
- }
-
- public LSR minimizeSubtags(String languageIn, String scriptIn, String regionIn,
- ULocale.Minimize fieldToFavor) {
- LSR max = maximize(languageIn, scriptIn, regionIn, true);
- if (max.language.isEmpty() && max.region.isEmpty() && max.script.isEmpty()) {
- // Cannot match, return as is
- return new LSR(languageIn, scriptIn, regionIn, LSR.EXPLICIT_LSR);
- }
- LSR test = maximize(max.language, "", "", true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, "", "", LSR.DONT_CARE_FLAGS);
- }
- if (ULocale.Minimize.FAVOR_REGION == fieldToFavor) {
- test = maximize(max.language, "", max.region, true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, "", max.region, LSR.DONT_CARE_FLAGS);
- }
- test = maximize(max.language, max.script, "", true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, max.script, "", LSR.DONT_CARE_FLAGS);
- }
- } else {
- test = maximize(max.language, max.script, "", true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, max.script, "", LSR.DONT_CARE_FLAGS);
- }
- test = maximize(max.language, "", max.region, true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, "", max.region, LSR.DONT_CARE_FLAGS);
- }
- }
- return new LSR(max.language, max.script, max.region, LSR.DONT_CARE_FLAGS);
- }
-
- private Map<String, LSR> getTable() {
- Map<String, LSR> map = new TreeMap<>();
- StringBuilder sb = new StringBuilder();
- for (BytesTrie.Entry entry : trie) {
- sb.setLength(0);
- int length = entry.bytesLength();
- for (int i = 0; i < length;) {
- byte b = entry.byteAt(i++);
- if (b == '*') {
- sb.append("*-");
- } else if (b >= 0) {
- sb.append((char) b);
- } else { // end of subtag
- sb.append((char) (b & 0x7f)).append('-');
- }
- }
- assert sb.length() > 0 && sb.charAt(sb.length() - 1) == '-';
- sb.setLength(sb.length() - 1);
- map.put(sb.toString(), lsrs[entry.value]);
- }
- return map;
- }
-
- @Override
- public String toString() {
- return getTable().toString();
- }
-}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java
index e3c970cf1..349b32650 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java
@@ -91,7 +91,7 @@ public class ConstantAffixModifier implements Modifier {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
if (!(other instanceof ConstantAffixModifier)) {
return false;
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java
index 19b21d3f2..a9b780b1b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java
@@ -98,14 +98,11 @@ public class ConstantMultiFieldModifier implements Modifier {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
if (!(other instanceof ConstantMultiFieldModifier)) {
return false;
}
ConstantMultiFieldModifier _other = (ConstantMultiFieldModifier) other;
- if (parameters != null && _other.parameters != null && parameters.obj == _other.parameters.obj) {
- return true;
- }
return Arrays.equals(prefixChars, _other.prefixChars) && Arrays.equals(prefixFields, _other.prefixFields)
&& Arrays.equals(suffixChars, _other.suffixChars) && Arrays.equals(suffixFields, _other.suffixFields)
&& overwrite == _other.overwrite && strong == _other.strong;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java b/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java
index 6e24f9655..b75ae8c96 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java
@@ -720,7 +720,7 @@ public abstract class DecimalQuantity_AbstractBCD implements DecimalQuantity {
StringBuilder sb = new StringBuilder();
toScientificString(sb);
- return Double.valueOf(sb.toString());
+ return Double.parseDouble(sb.toString());
}
@Override
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/Grouper.java b/android_icu4j/src/main/java/android/icu/impl/number/Grouper.java
index 932a8148c..b706bcb0a 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/Grouper.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/Grouper.java
@@ -82,7 +82,7 @@ public class Grouper {
ICUResourceBundle resource = (ICUResourceBundle) UResourceBundle
.getBundleInstance(ICUData.ICU_BASE_NAME, locale);
String result = resource.getStringWithFallback("NumberElements/minimumGroupingDigits");
- return Short.valueOf(result);
+ return Short.parseShort(result);
}
/**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/Modifier.java b/android_icu4j/src/main/java/android/icu/impl/number/Modifier.java
index db6c27d60..08a415690 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/Modifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/Modifier.java
@@ -26,6 +26,7 @@ public interface Modifier {
POS;
static final int COUNT = Signum.values().length;
+ public static final Signum[] VALUES = Signum.values();
};
/**
@@ -87,8 +88,45 @@ public interface Modifier {
public Parameters getParameters();
/**
+ * Returns whether this Modifier equals another Modifier.
+ */
+ public boolean strictEquals(Modifier other);
+
+ /**
* Returns whether this Modifier is *semantically equivalent* to the other Modifier;
* in many cases, this is the same as equal, but parameters should be ignored.
*/
- public boolean semanticallyEquivalent(Modifier other);
+ default boolean semanticallyEquivalent(Modifier other) {
+ Parameters paramsThis = this.getParameters();
+ Parameters paramsOther = other.getParameters();
+ if (paramsThis == null && paramsOther == null) {
+ return this.strictEquals(other);
+ } else if (paramsThis == null || paramsOther == null) {
+ return false;
+ } else if (paramsThis.obj == null && paramsOther.obj == null) {
+ return this.strictEquals(other);
+ } else if (paramsThis.obj == null || paramsOther.obj == null) {
+ return false;
+ }
+ for (Signum signum : Signum.VALUES) {
+ for (StandardPlural plural : StandardPlural.VALUES) {
+ Modifier mod1 = paramsThis.obj.getModifier(signum, plural);
+ Modifier mod2 = paramsOther.obj.getModifier(signum, plural);
+ if (mod1 == mod2) {
+ // Equal pointers
+ continue;
+ } else if (mod1 == null || mod2 == null) {
+ // One pointer is null but not the other
+ return false;
+ } else if (!mod1.strictEquals(mod2)) {
+ // The modifiers are NOT equivalent
+ return false;
+ } else {
+ // The modifiers are equivalent
+ continue;
+ }
+ }
+ }
+ return true;
+ }
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java
index e84af1ee2..b4bce0019 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java
@@ -352,7 +352,7 @@ public class MutablePatternModifier implements Modifier, SymbolProvider, MicroPr
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
// This method is not currently used. (unsafe path not used in range formatting)
assert false;
return false;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java
index 8a34133dc..34ad9f848 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java
@@ -73,14 +73,11 @@ public class SimpleModifier implements Modifier {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
if (!(other instanceof SimpleModifier)) {
return false;
}
SimpleModifier _other = (SimpleModifier) other;
- if (parameters != null && _other.parameters != null && parameters.obj == _other.parameters.obj) {
- return true;
- }
return compiledPattern.equals(_other.compiledPattern) && field == _other.field && strong == _other.strong;
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java b/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java
index 3f11202bd..bc179c6c1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java
+++ b/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java
@@ -12,6 +12,7 @@ import java.util.HashMap;
import android.icu.impl.ICUData;
import android.icu.impl.ICUResourceBundle;
+import android.icu.impl.IllegalIcuArgumentException;
import android.icu.impl.UResource;
import android.icu.util.MeasureUnit;
import android.icu.util.UResourceBundle;
@@ -81,6 +82,15 @@ public class ConversionRates {
}
+ // Map the MeasureUnitImpl for a simple unit to its corresponding SimpleUnitID,
+ // then get the specialMappingName for that SimpleUnitID (which may be null if
+ // the simple unit converts to base using factor + offset instelad of a special mapping).
+ protected String getSpecialMappingName(MeasureUnitImpl simpleUnit) {
+ if (!checkSimpleUnit(simpleUnit)) return null;
+ String simpleIdentifier = simpleUnit.getSingleUnits().get(0).getSimpleUnitID();
+ return this.mapToConversionRate.get(simpleIdentifier).getSpecialMappingName();
+ }
+
public MeasureUnitImpl extractCompoundBaseUnit(MeasureUnitImpl measureUnit) {
ArrayList<SingleUnitImpl> baseUnits = this.extractBaseUnits(measureUnit);
@@ -169,6 +179,7 @@ public class ConversionRates {
String target = null;
String factor = null;
String offset = "0";
+ String special = null;
String systems = null;
for (int j = 0; simpleUnitConversionInfo.getKeyAndValue(j, key, value); j++) {
assert (value.getType() == UResourceBundle.STRING);
@@ -182,18 +193,20 @@ public class ConversionRates {
factor = valueString;
} else if ("offset".equals(keyString)) {
offset = valueString;
+ } else if ("special".equals(keyString)) {
+ special = valueString; // the name of a special mapping used instead of factor + optional offset.
} else if ("systems".equals(keyString)) {
systems = value.toString(); // still want the spaces here
} else {
- assert false : "The key must be target, factor, systems or offset";
+ assert false : "The key must be target, factor, offset, special, or systems";
}
}
// HERE a single conversion rate data should be loaded
assert (target != null);
- assert (factor != null);
+ assert (factor != null || special != null);
- mapToConversionRate.put(simpleUnit, new ConversionRateInfo(simpleUnit, target, factor, offset, systems));
+ mapToConversionRate.put(simpleUnit, new ConversionRateInfo(simpleUnit, target, factor, offset, special, systems));
}
@@ -214,13 +227,15 @@ public class ConversionRates {
private final String target;
private final String conversionRate;
private final BigDecimal offset;
+ private final String specialMappingName; // the name of a special mapping used instead of factor + optional offset.
private final String systems;
- public ConversionRateInfo(String simpleUnit, String target, String conversionRate, String offset, String systems) {
+ public ConversionRateInfo(String simpleUnit, String target, String conversionRate, String offset, String special, String systems) {
this.simpleUnit = simpleUnit;
this.target = target;
this.conversionRate = conversionRate;
this.offset = forNumberWithDivision(offset);
+ this.specialMappingName = special;
this.systems = systems;
}
@@ -256,12 +271,24 @@ public class ConversionRates {
* @return The conversion rate from this unit to the base unit.
*/
public String getConversionRate() {
+ if (conversionRate==null) {
+ throw new IllegalIcuArgumentException("trying to use a null conversion rate (for special?)");
+ }
return conversionRate;
}
/**
+ * @return The name of the special conversion system for this unit (used instead of factor + optional offset).
+ */
+ public String getSpecialMappingName() {
+ return specialMappingName;
+ }
+
+ /**
* @return The measurement systems this unit belongs to.
*/
- public String getSystems() { return systems; }
+ public String getSystems() {
+ return systems;
+ }
}
}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/MeasureUnitImpl.java b/android_icu4j/src/main/java/android/icu/impl/units/MeasureUnitImpl.java
index 1277b1b28..975665b1e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/units/MeasureUnitImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/units/MeasureUnitImpl.java
@@ -799,6 +799,20 @@ public class MeasureUnitImpl {
@Override
public int compare(MeasureUnitImpl o1, MeasureUnitImpl o2) {
+ String special1 = this.conversionRates.getSpecialMappingName(o1);
+ String special2 = this.conversionRates.getSpecialMappingName(o2);
+ if (special1 != null || special2 != null) {
+ if (special1 == null) {
+ // non-specials come first
+ return -1;
+ }
+ if (special2 == null) {
+ // non-specials come first
+ return 1;
+ }
+ // both are specials, compare lexicographically
+ return special1.compareTo(special2);
+ }
BigDecimal factor1 = this.conversionRates.getFactorToBase(o1).getConversionRate();
BigDecimal factor2 = this.conversionRates.getFactorToBase(o2).getConversionRate();
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/UnitPreferences.java b/android_icu4j/src/main/java/android/icu/impl/units/UnitPreferences.java
index e884b15af..2c8a42d7a 100644
--- a/android_icu4j/src/main/java/android/icu/impl/units/UnitPreferences.java
+++ b/android_icu4j/src/main/java/android/icu/impl/units/UnitPreferences.java
@@ -96,7 +96,7 @@ public class UnitPreferences {
}
}
- String region = ULocale.getRegionForSupplementalData(locale, false);
+ String region = ULocale.getRegionForSupplementalData(locale, true);
// Check the locale system tag, e.g `ms=metric`.
String localeSystem = locale.getKeywordValue("measure");
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/UnitsConverter.java b/android_icu4j/src/main/java/android/icu/impl/units/UnitsConverter.java
index 0eb1c2e24..d18e4e735 100644
--- a/android_icu4j/src/main/java/android/icu/impl/units/UnitsConverter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/units/UnitsConverter.java
@@ -7,12 +7,14 @@ import static java.math.MathContext.DECIMAL128;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.regex.Pattern;
import android.icu.impl.IllegalIcuArgumentException;
import android.icu.util.MeasureUnit;
+// TODO ICU-22683: Consider splitting handling of special mappings into separate (possibly internal) class
/**
* @hide Only a subset of ICU is exposed in Android
*/
@@ -20,6 +22,8 @@ public class UnitsConverter {
private BigDecimal conversionRate;
private boolean reciprocal;
private BigDecimal offset;
+ private String specialSource;
+ private String specialTarget;
/**
* Constructor of <code>UnitsConverter</code>.
@@ -46,6 +50,7 @@ public class UnitsConverter {
* NOTE:
* - source and target must be under the same category
* - e.g. meter to mile --> both of them are length units.
+ * This converts from source to base to target (one of those may be a no-op).
*
* @param source represents the source unit.
* @param target represents the target unit.
@@ -57,21 +62,38 @@ public class UnitsConverter {
throw new IllegalIcuArgumentException("input units must be convertible or reciprocal");
}
- Factor sourceToBase = conversionRates.getFactorToBase(source);
- Factor targetToBase = conversionRates.getFactorToBase(target);
+ this.specialSource = conversionRates.getSpecialMappingName(source);
+ this.specialTarget = conversionRates.getSpecialMappingName(target);
- if (convertibility == Convertibility.CONVERTIBLE) {
- this.conversionRate = sourceToBase.divide(targetToBase).getConversionRate();
+ if (this.specialSource == null && this.specialTarget == null) {
+ Factor sourceToBase = conversionRates.getFactorToBase(source);
+ Factor targetToBase = conversionRates.getFactorToBase(target);
+
+ if (convertibility == Convertibility.CONVERTIBLE) {
+ this.conversionRate = sourceToBase.divide(targetToBase).getConversionRate();
+ } else {
+ assert convertibility == Convertibility.RECIPROCAL;
+ this.conversionRate = sourceToBase.multiply(targetToBase).getConversionRate();
+ }
+ this.reciprocal = convertibility == Convertibility.RECIPROCAL;
+
+ // calculate the offset
+ this.offset = conversionRates.getOffset(source, target, sourceToBase, targetToBase, convertibility);
+ // We should see no offsets for reciprocal conversions - they don't make sense:
+ assert convertibility != Convertibility.RECIPROCAL || this.offset == BigDecimal.ZERO;
} else {
- assert convertibility == Convertibility.RECIPROCAL;
- this.conversionRate = sourceToBase.multiply(targetToBase).getConversionRate();
+ this.reciprocal = false;
+ this.offset = BigDecimal.ZERO;
+ if (this.specialSource == null) {
+ // conversionRate is for source to base only
+ this.conversionRate = conversionRates.getFactorToBase(source).getConversionRate();
+ } else if (this.specialTarget == null) {
+ // conversionRate is for base to target only
+ this.conversionRate = conversionRates.getFactorToBase(target).getConversionRate();
+ } else {
+ this.conversionRate = BigDecimal.ONE;
+ }
}
- this.reciprocal = convertibility == Convertibility.RECIPROCAL;
-
- // calculate the offset
- this.offset = conversionRates.getOffset(source, target, sourceToBase, targetToBase, convertibility);
- // We should see no offsets for reciprocal conversions - they don't make sense:
- assert convertibility != Convertibility.RECIPROCAL || this.offset == BigDecimal.ZERO;
}
static public Convertibility extractConvertibility(MeasureUnitImpl source, MeasureUnitImpl target, ConversionRates conversionRates) {
@@ -114,8 +136,34 @@ public class UnitsConverter {
return true;
}
+ // Convert inputValue (source) to base then to target
public BigDecimal convert(BigDecimal inputValue) {
- BigDecimal result = inputValue.multiply(this.conversionRate).add(offset);
+ BigDecimal result = inputValue;
+ if (this.specialSource != null || this.specialTarget != null) {
+ BigDecimal base = inputValue;
+ // convert input (=source) to base
+ if (this.specialSource != null) {
+ // We have a special mapping from source to base (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ base = (this.specialSource.equals("beaufort"))?
+ scaleToBase(inputValue, minMetersPerSecForBeaufort): inputValue;
+ } else {
+ // Standard mapping (using factor, offset) from source to base.
+ base = inputValue.multiply(this.conversionRate);
+ }
+ // convert base to result (=target)
+ if (this.specialTarget != null) {
+ // We have a special mapping from base to target (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ result = (this.specialTarget.equals("beaufort"))?
+ baseToScale(base, minMetersPerSecForBeaufort): base;
+ } else {
+ // Standard mapping (using factor, offset) from base to target.
+ result = base.divide(this.conversionRate, DECIMAL128);
+ }
+ return result;
+ }
+ result = inputValue.multiply(this.conversionRate).add(offset);
if (this.reciprocal) {
// We should see no offsets for reciprocal conversions - they don't make sense:
assert offset == BigDecimal.ZERO;
@@ -128,8 +176,33 @@ public class UnitsConverter {
return result;
}
+ // Convert inputValue (target) to base then to source
public BigDecimal convertInverse(BigDecimal inputValue) {
BigDecimal result = inputValue;
+ if (this.specialSource != null || this.specialTarget != null) {
+ BigDecimal base = inputValue;
+ // convert input (=target) to base
+ if (this.specialTarget != null) {
+ // We have a special mapping from target to base (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ base = (this.specialTarget.equals("beaufort"))?
+ scaleToBase(inputValue, minMetersPerSecForBeaufort): inputValue;
+ } else {
+ // Standard mapping (using factor, offset) from target to base.
+ base = inputValue.multiply(this.conversionRate);
+ }
+ // convert base to result (=source)
+ if (this.specialSource != null) {
+ // We have a special mapping from base to source (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ result = (this.specialSource.equals("beaufort"))?
+ baseToScale(base, minMetersPerSecForBeaufort): base;
+ } else {
+ // Standard mapping (using factor, offset) from base to source.
+ result = base.divide(this.conversionRate, DECIMAL128);
+ }
+ return result;
+ }
if (this.reciprocal) {
// We should see no offsets for reciprocal conversions - they don't make sense:
assert offset == BigDecimal.ZERO;
@@ -143,6 +216,64 @@ public class UnitsConverter {
return result;
}
+ // TODO per CLDR-17421 and ICU-22683: consider getting the data below from CLDR
+ private static final BigDecimal[] minMetersPerSecForBeaufort = {
+ // Minimum m/s (base) values for each Bft value, plus an extra artificial value;
+ // when converting from Bft to m/s, the middle of the range will be used
+ // (Values from table in Wikipedia, except for artificial value).
+ // Since this is 0 based, max Beaufort value is thus array dimension minus 2.
+ BigDecimal.valueOf(0.0), // 0 Bft
+ BigDecimal.valueOf(0.3), // 1
+ BigDecimal.valueOf(1.6), // 2
+ BigDecimal.valueOf(3.4), // 3
+ BigDecimal.valueOf(5.5), // 4
+ BigDecimal.valueOf(8.0), // 5
+ BigDecimal.valueOf(10.8), // 6
+ BigDecimal.valueOf(13.9), // 7
+ BigDecimal.valueOf(17.2), // 8
+ BigDecimal.valueOf(20.8), // 9
+ BigDecimal.valueOf(24.5), // 10
+ BigDecimal.valueOf(28.5), // 11
+ BigDecimal.valueOf(32.7), // 12
+ BigDecimal.valueOf(36.9), // 13
+ BigDecimal.valueOf(41.4), // 14
+ BigDecimal.valueOf(46.1), // 15
+ BigDecimal.valueOf(51.1), // 16
+ BigDecimal.valueOf(55.8), // 17
+ BigDecimal.valueOf(61.4), // artificial end of range 17 to give reasonable midpoint
+ };
+
+ // Convert from what should be discrete scale values for a particular unit like beaufort
+ // to a corresponding value in the base unit (which can have any decimal value, like meters/sec).
+ // First we round the scale value to the nearest integer (in case it is specified with a fractional value),
+ // then we map that to a value in middle of the range of corresponding base values.
+ // This can handle different scales, specified by minBaseForScaleValues[].
+ private BigDecimal scaleToBase(BigDecimal scaleValue, BigDecimal[] minBaseForScaleValues) {
+ BigDecimal pointFive = BigDecimal.valueOf(0.5);
+ BigDecimal scaleAdjust = scaleValue.abs().add(pointFive); // adjust up for later truncation
+ BigDecimal scaleAdjustCapped = scaleAdjust.min(BigDecimal.valueOf(minBaseForScaleValues.length - 2));
+ int scaleIndex = scaleAdjustCapped.intValue();
+ // Return midpont of range (the final range uses an articial end to produce reasonable midpoint)
+ return minBaseForScaleValues[scaleIndex].add(minBaseForScaleValues[scaleIndex + 1]).multiply(pointFive);
+ }
+
+ // Convert from a value in the base unit (which can have any decimal value, like meters/sec) to a corresponding
+ // discrete value in a scale (like beaufort), where each scale value represents a range of base values.
+ // We binary-search the ranges to find the one that contains the specified base value, and return its index.
+ // This can handle different scales, specified by minBaseForScaleValues[].
+ private BigDecimal baseToScale(BigDecimal baseValue, BigDecimal[] minBaseForScaleValues) {
+ int scaleIndex = Arrays.binarySearch(minBaseForScaleValues, baseValue.abs());
+ if (scaleIndex < 0) {
+ // since our first array entry is 0, this value will always be -2 or less
+ scaleIndex = -scaleIndex - 2;
+ }
+ int scaleMax = minBaseForScaleValues.length - 2;
+ if (scaleIndex > scaleMax) {
+ scaleIndex = scaleMax;
+ }
+ return BigDecimal.valueOf(scaleIndex);
+ }
+
/**
* @hide Only a subset of ICU is exposed in Android
*/
diff --git a/android_icu4j/src/main/java/android/icu/lang/UCharacter.java b/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
index d16e313a8..b25205f12 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
@@ -11,6 +11,7 @@
package android.icu.lang;
import java.lang.ref.SoftReference;
+import java.util.EnumSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
@@ -3545,6 +3546,56 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
public static final int UPRIGHT = 3;
}
+ /**
+ * Identifier Status constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UProperty#IDENTIFIER_STATUS
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ public enum IdentifierStatus {
+ /** @hide draft / provisional / internal are hidden on Android*/
+ RESTRICTED,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ ALLOWED,
+ }
+
+ /**
+ * Identifier Type constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UProperty#IDENTIFIER_TYPE
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ public enum IdentifierType {
+ /** @hide draft / provisional / internal are hidden on Android*/
+ NOT_CHARACTER,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ DEPRECATED,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ DEFAULT_IGNORABLE,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ NOT_NFKC,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ NOT_XID,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ EXCLUSION,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ OBSOLETE,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ TECHNICAL,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ UNCOMMON_USE,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ LIMITED_USE,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ INCLUSION,
+ /** @hide draft / provisional / internal are hidden on Android*/
+ RECOMMENDED,
+ }
+
// public data members -----------------------------------------------
/**
@@ -4014,6 +4065,47 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
}
/**
+ * Does the set of Identifier_Type values code point c contain the given type?
+ *
+ * <p>Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * <p>Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @param c code point
+ * @param type Identifier_Type to check
+ * @return true if type is in Identifier_Type(c)
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ public static final boolean hasIdentifierType(int c, IdentifierType type) {
+ return UCharacterProperty.INSTANCE.hasIDType(c, type);
+ }
+
+ /**
+ * Writes code point c's Identifier_Type as a set of IdentifierType values and
+ * returns the number of types.
+ * The set is cleared before c's types are added.
+ *
+ * <p>Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * <p>Each code point maps to a <i>set</i> of IdentifierType values.
+ * There is always at least one type.
+ * Only some of the types can be combined with others,
+ * and usually only a small number of types occur together.
+ * Future versions might add additional types.
+ * See UTS #39 and its data files for details.
+ *
+ * @param c code point
+ * @param types output set
+ * @return number of values in c's Identifier_Type
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ public static final int getIdentifierTypes(int c, EnumSet<IdentifierType> types) {
+ return UCharacterProperty.INSTANCE.getIDTypes(c, types);
+ }
+
+ /**
* Determines if the specified code point should be regarded as an
* ignorable character in a Java identifier.
* A character is Java-identifier-ignorable if it has the general category
diff --git a/android_icu4j/src/main/java/android/icu/lang/UProperty.java b/android_icu4j/src/main/java/android/icu/lang/UProperty.java
index 8fb283511..001188162 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UProperty.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UProperty.java
@@ -738,12 +738,20 @@ public interface UProperty
public static final int VERTICAL_ORIENTATION = 0x1018;
/**
+ * Enumerated property Identifier_Status.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ public static final int IDENTIFIER_STATUS = 0x1019;
+
+ /**
* One more than the last constant for enumerated/integer Unicode properties.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
* @hide unsupported on Android
*/
@Deprecated
- public static final int INT_LIMIT = 0x1019;
+ public static final int INT_LIMIT = 0x101A;
/**
* Bitmask property General_Category_Mask.
@@ -904,12 +912,27 @@ public interface UProperty
*/
public static final int OTHER_PROPERTY_START=SCRIPT_EXTENSIONS;
/**
+ * Miscellaneous property Identifier_Type.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * <p>Corresponds to {@link UCharacter#hasIdentifierType(int, UCharacter.IdentifierType)} and
+ * {@link UCharacter#getIdentifierTypes(int, java.util.EnumSet)}.
+ *
+ * <p>Each code point maps to a <i>set</i> of IdentifierType values.
+ *
+ * @see UCharacter#hasIdentifierType(int, UCharacter.IdentifierType)
+ * @see UCharacter#getIdentifierTypes(int, java.util.EnumSet)
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ public static final int IDENTIFIER_TYPE = 0x7001;
+ /**
* One more than the last constant for Unicode properties with unusual value types.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
* @hide unsupported on Android
*/
@Deprecated
- public static final int OTHER_PROPERTY_LIMIT=0x7001;
+ public static final int OTHER_PROPERTY_LIMIT = 0x7002;
/**
* Selector constants for UCharacter.getPropertyName() and
diff --git a/android_icu4j/src/main/java/android/icu/lang/UScript.java b/android_icu4j/src/main/java/android/icu/lang/UScript.java
index 84ed2f043..f4972e5f1 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UScript.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UScript.java
@@ -880,6 +880,9 @@ public final class UScript {
/***/
public static final int NAG_MUNDARI = 199; /* Nagm */
+ /** @hide unsupported on Android*/
+ public static final int ARABIC_NASTALIQ = 200; /* Aran */
+
/**
* One more than the highest normal UScript code.
* The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT).
@@ -888,7 +891,7 @@ public final class UScript {
* @hide unsupported on Android
*/
@Deprecated
- public static final int CODE_LIMIT = 200;
+ public static final int CODE_LIMIT = 201;
private static int[] getCodesFromLocale(ULocale locale) {
// Multi-script languages, equivalent to the LocaleScript data
diff --git a/android_icu4j/src/main/java/android/icu/math/BigDecimal.java b/android_icu4j/src/main/java/android/icu/math/BigDecimal.java
index 9909e66cc..099fbdd7f 100644
--- a/android_icu4j/src/main/java/android/icu/math/BigDecimal.java
+++ b/android_icu4j/src/main/java/android/icu/math/BigDecimal.java
@@ -2814,7 +2814,7 @@ public class BigDecimal extends java.lang.Number implements java.io.Serializable
// Reminder: a zero double returns '0.0', so we cannot fastpath to
// use the constant ZERO. This might be important enough to justify
// a factory approach, a cache, or a few private constants, later.
- return new android.icu.math.BigDecimal((new java.lang.Double(dub)).toString());
+ return new android.icu.math.BigDecimal(Double.toString(dub));
}
/**
diff --git a/android_icu4j/src/main/java/android/icu/message2/DateTimeFormatterFactory.java b/android_icu4j/src/main/java/android/icu/message2/DateTimeFormatterFactory.java
index e01f72cf0..6b969b918 100644
--- a/android_icu4j/src/main/java/android/icu/message2/DateTimeFormatterFactory.java
+++ b/android_icu4j/src/main/java/android/icu/message2/DateTimeFormatterFactory.java
@@ -1,32 +1,52 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
+import java.util.Calendar;
import java.util.Locale;
import java.util.Map;
-import java.util.Objects;
+import java.util.TimeZone;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
-import android.icu.impl.locale.AsciiUtil;
import android.icu.text.DateFormat;
-import android.icu.text.SimpleDateFormat;
/**
* Creates a {@link Formatter} doing formatting of date / time, similar to
* <code>{exp, date}</code> and <code>{exp, time}</code> in {@link android.icu.text.MessageFormat}.
*/
class DateTimeFormatterFactory implements FormatterFactory {
+ private final String kind;
+
+ // "datetime", "date", "time"
+ DateTimeFormatterFactory(String kind) {
+ switch (kind) {
+ case "date":
+ break;
+ case "time":
+ break;
+ case "datetime":
+ break;
+ default:
+ kind = "datetime";
+ }
+ this.kind = kind;
+ }
private static int stringToStyle(String option) {
- switch (AsciiUtil.toUpperString(option)) {
- case "FULL": return DateFormat.FULL;
- case "LONG": return DateFormat.LONG;
- case "MEDIUM": return DateFormat.MEDIUM;
- case "SHORT": return DateFormat.SHORT;
- case "": // intentional fall-through
- case "DEFAULT": return DateFormat.DEFAULT;
- default: throw new IllegalArgumentException("Invalid datetime style: " + option);
+ switch (option) {
+ case "full":
+ return DateFormat.FULL;
+ case "long":
+ return DateFormat.LONG;
+ case "medium":
+ return DateFormat.MEDIUM;
+ case "short":
+ return DateFormat.SHORT;
+ default:
+ throw new IllegalArgumentException("Invalid datetime style: " + option);
}
}
@@ -38,49 +58,279 @@ class DateTimeFormatterFactory implements FormatterFactory {
*/
@Override
public Formatter createFormatter(Locale locale, Map<String, Object> fixedOptions) {
- DateFormat df;
+ int dateStyle = DateFormat.NONE;
+ int timeStyle = DateFormat.NONE;
+ switch (kind) {
+ case "date":
+ dateStyle = getDateTimeStyle(fixedOptions, "style");
+ break;
+ case "time":
+ timeStyle = getDateTimeStyle(fixedOptions, "style");
+ break;
+ case "datetime": // $FALL-THROUGH$
+ default:
+ dateStyle = getDateTimeStyle(fixedOptions, "dateStyle");
+ timeStyle = getDateTimeStyle(fixedOptions, "timeStyle");
+ break;
+ }
// TODO: how to handle conflicts. What if we have both skeleton and style, or pattern?
- Object opt = fixedOptions.get("skeleton");
- if (opt != null) {
- String skeleton = Objects.toString(opt);
- df = DateFormat.getInstanceForSkeleton(skeleton, locale);
- return new DateTimeFormatter(df);
+ if (dateStyle == DateFormat.NONE && timeStyle == DateFormat.NONE) {
+ String skeleton = "";
+ switch (kind) {
+ case "date":
+ skeleton = getDateFieldOptions(fixedOptions);
+ break;
+ case "time":
+ skeleton = getTimeFieldOptions(fixedOptions);
+ break;
+ case "datetime": // $FALL-THROUGH$
+ default:
+ skeleton = getDateFieldOptions(fixedOptions);
+ skeleton += getTimeFieldOptions(fixedOptions);
+ break;
+ }
+
+ if (skeleton.isEmpty()) {
+ // Custom option, icu namespace
+ skeleton = OptUtils.getString(fixedOptions, "icu:skeleton", "");
+ }
+ if (!skeleton.isEmpty()) {
+ DateFormat df = DateFormat.getInstanceForSkeleton(skeleton, locale);
+ return new DateTimeFormatter(locale, df);
+ }
+
+ // No skeletons, custom or otherwise, match fallback to short / short as per spec.
+ switch (kind) {
+ case "date":
+ dateStyle = DateFormat.SHORT;
+ timeStyle = DateFormat.NONE;
+ break;
+ case "time":
+ dateStyle = DateFormat.NONE;
+ timeStyle = DateFormat.SHORT;
+ break;
+ case "datetime": // $FALL-THROUGH$
+ default:
+ dateStyle = DateFormat.SHORT;
+ timeStyle = DateFormat.SHORT;
+ }
}
- opt = fixedOptions.get("pattern");
+ DateFormat df = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale);
+ return new DateTimeFormatter(locale, df);
+ }
+
+ private static int getDateTimeStyle(Map<String, Object> options, String key) {
+ String opt = OptUtils.getString(options, key);
if (opt != null) {
- String pattern = Objects.toString(opt);
- SimpleDateFormat sf = new SimpleDateFormat(pattern, locale);
- return new DateTimeFormatter(sf);
+ return stringToStyle(opt);
}
+ return DateFormat.NONE;
+ }
- int dateStyle = DateFormat.NONE;
- opt = fixedOptions.get("datestyle");
- if (opt != null) {
- dateStyle = stringToStyle(Objects.toString(opt, ""));
+ private static String getDateFieldOptions(Map<String, Object> options) {
+ StringBuilder skeleton = new StringBuilder();
+ String opt;
+
+ // In all the switches below we just ignore invalid options.
+ // Would be nice to report (log?), but ICU does not have a clear policy on how to do that.
+ // But we don't want to throw, that is too drastic.
+
+ opt = OptUtils.getString(options, "weekday", "");
+ switch (opt) {
+ case "long":
+ skeleton.append("EEEE");
+ break;
+ case "short":
+ skeleton.append("E");
+ break;
+ case "narrow":
+ skeleton.append("EEEEEE");
+ break;
+ default:
+ // invalid value, we just ignore it.
}
- int timeStyle = DateFormat.NONE;
- opt = fixedOptions.get("timestyle");
- if (opt != null) {
- timeStyle = stringToStyle(Objects.toString(opt, ""));
+ opt = OptUtils.getString(options, "era", "");
+ switch (opt) {
+ case "long":
+ skeleton.append("GGGG");
+ break;
+ case "short":
+ skeleton.append("G");
+ break;
+ case "narrow":
+ skeleton.append("GGGGG");
+ break;
+ default:
+ // invalid value, we just ignore it.
}
- if (dateStyle == DateFormat.NONE && timeStyle == DateFormat.NONE) {
- // Match the MessageFormat behavior
- dateStyle = DateFormat.SHORT;
- timeStyle = DateFormat.SHORT;
+ opt = OptUtils.getString(options, "year", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("y");
+ break;
+ case "2-digit":
+ skeleton.append("yy");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ opt = OptUtils.getString(options, "month", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("M");
+ break;
+ case "2-digit":
+ skeleton.append("MM");
+ break;
+ case "long":
+ skeleton.append("MMMM");
+ break;
+ case "short":
+ skeleton.append("MMM");
+ break;
+ case "narrow":
+ skeleton.append("MMMMM");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ opt = OptUtils.getString(options, "day", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("d");
+ break;
+ case "2-digit":
+ skeleton.append("dd");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+ return skeleton.toString();
+ }
+
+ private static String getTimeFieldOptions(Map<String, Object> options) {
+ StringBuilder skeleton = new StringBuilder();
+ String opt;
+
+ // In all the switches below we just ignore invalid options.
+ // Would be nice to report (log?), but ICU does not have a clear policy on how to do that.
+ // But we don't want to throw, that is too drastic.
+
+ int showHour = 0;
+ opt = OptUtils.getString(options, "hour", "");
+ switch (opt) {
+ case "numeric":
+ showHour = 1;
+ break;
+ case "2-digit":
+ showHour = 2;
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+ if (showHour > 0) {
+ String hourCycle = "";
+ opt = OptUtils.getString(options, "hourCycle", "");
+ switch (opt) {
+ case "h11":
+ hourCycle = "K";
+ break;
+ case "h12":
+ hourCycle = "h";
+ break;
+ case "h23":
+ hourCycle = "H";
+ break;
+ case "h24":
+ hourCycle = "k";
+ break;
+ default:
+ hourCycle = "j"; // default for the locale
+ }
+ skeleton.append(hourCycle);
+ if (showHour == 2) {
+ skeleton.append(hourCycle);
+ }
+ }
+
+ opt = OptUtils.getString(options, "minute", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("m");
+ break;
+ case "2-digit":
+ skeleton.append("mm");
+ break;
+ default:
+ // invalid value, we just ignore it.
}
- df = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale);
- return new DateTimeFormatter(df);
+ opt = OptUtils.getString(options, "second", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("s");
+ break;
+ case "2-digit":
+ skeleton.append("ss");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ opt = OptUtils.getString(options, "fractionalSecondDigits", "");
+ switch (opt) {
+ case "1":
+ skeleton.append("S");
+ break;
+ case "2":
+ skeleton.append("SS");
+ break;
+ case "3":
+ skeleton.append("SSS");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ opt = OptUtils.getString(options, "timeZoneName", "");
+ switch (opt) {
+ case "long":
+ skeleton.append("z");
+ break;
+ case "short":
+ skeleton.append("zzzz");
+ break;
+ case "shortOffset":
+ skeleton.append("O");
+ break;
+ case "longOffset":
+ skeleton.append("OOOO");
+ break;
+ case "shortGeneric":
+ skeleton.append("v");
+ break;
+ case "longGeneric":
+ skeleton.append("vvvv");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ return skeleton.toString();
}
private static class DateTimeFormatter implements Formatter {
private final DateFormat icuFormatter;
+ private final Locale locale;
- private DateTimeFormatter(DateFormat df) {
+ private DateTimeFormatter(Locale locale, DateFormat df) {
+ this.locale = locale;
this.icuFormatter = df;
}
@@ -91,7 +341,24 @@ class DateTimeFormatterFactory implements FormatterFactory {
public FormattedPlaceholder format(Object toFormat, Map<String, Object> variableOptions) {
// TODO: use a special type to indicate function without input argument.
if (toFormat == null) {
- throw new IllegalArgumentException("The date to format can't be null");
+ return null;
+ }
+ if (toFormat instanceof CharSequence) {
+ toFormat = parseIso8601(toFormat.toString());
+ // We were unable to parse the input as iso date
+ if (toFormat instanceof CharSequence) {
+ return new FormattedPlaceholder(
+ toFormat, new PlainStringFormattedValue("{|" + toFormat + "|}"));
+ }
+ }
+ if (toFormat instanceof Calendar) {
+ TimeZone tz = ((Calendar) toFormat).getTimeZone();
+ long milis = ((Calendar) toFormat).getTimeInMillis();
+ android.icu.util.TimeZone icuTz = android.icu.util.TimeZone.getTimeZone(tz.getID());
+ android.icu.util.Calendar calendar =
+ android.icu.util.Calendar.getInstance(icuTz, locale);
+ calendar.setTimeInMillis(milis);
+ toFormat = calendar;
}
String result = icuFormatter.format(toFormat);
return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue(result));
@@ -102,7 +369,68 @@ class DateTimeFormatterFactory implements FormatterFactory {
*/
@Override
public String formatToString(Object toFormat, Map<String, Object> variableOptions) {
- return format(toFormat, variableOptions).toString();
+ FormattedPlaceholder result = format(toFormat, variableOptions);
+ return result != null ? result.toString() : null;
}
}
+
+ private final static Pattern ISO_PATTERN = Pattern.compile(
+ "^(([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])){1}(T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(\\.[0-9]{1,3})?(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?)?$");
+
+ private static Integer safeParse(String str) {
+ if (str == null || str.isEmpty())
+ return null;
+ return Integer.parseInt(str);
+ }
+
+ private static Object parseIso8601(String text) {
+ Matcher m = ISO_PATTERN.matcher(text);
+ if (m.find() && m.groupCount() == 12 && !m.group().isEmpty()) {
+ Integer year = safeParse(m.group(2));
+ Integer month = safeParse(m.group(3));
+ Integer day = safeParse(m.group(4));
+ Integer hour = safeParse(m.group(6));
+ Integer minute = safeParse(m.group(7));
+ Integer second = safeParse(m.group(8));
+ Integer millisecond = 0;
+ if (m.group(9) != null) {
+ String z = (m.group(9) + "000").substring(1, 4);
+ millisecond = safeParse(z);
+ } else {
+ millisecond = 0;
+ }
+ String tzPart = m.group(10);
+
+ if (hour == null) {
+ hour = 0;
+ minute = 0;
+ second = 0;
+ }
+
+ android.icu.util.GregorianCalendar gc = new android.icu.util.GregorianCalendar(
+ year, month - 1, day, hour, minute, second);
+ gc.set(android.icu.util.Calendar.MILLISECOND, millisecond);
+
+ if (tzPart != null) {
+ if (tzPart.equals("Z")) {
+ gc.setTimeZone(android.icu.util.TimeZone.GMT_ZONE);
+ } else {
+ int sign = tzPart.startsWith("-") ? -1 : 1;
+ String[] tzParts = tzPart.substring(1).split(":");
+ if (tzParts.length == 2) {
+ Integer tzHour = safeParse(tzParts[0]);
+ Integer tzMin = safeParse(tzParts[1]);
+ if (tzHour != null && tzMin != null) {
+ int offset = sign * (tzHour * 60 + tzMin) * 60 * 1000;
+ gc.setTimeZone(new android.icu.util.SimpleTimeZone(offset, "offset"));
+ }
+ }
+ }
+ }
+
+ return gc;
+ }
+ return text;
+ }
+
}
diff --git a/android_icu4j/src/main/java/android/icu/message2/FormattedMessage.java b/android_icu4j/src/main/java/android/icu/message2/FormattedMessage.java
index 960723a24..d9b41972b 100644
--- a/android_icu4j/src/main/java/android/icu/message2/FormattedMessage.java
+++ b/android_icu4j/src/main/java/android/icu/message2/FormattedMessage.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
@@ -118,5 +118,4 @@ public class FormattedMessage implements FormattedValue {
public AttributedCharacterIterator toCharacterIterator() {
throw new RuntimeException("Not yet implemented.");
}
-
}
diff --git a/android_icu4j/src/main/java/android/icu/message2/FormattedPlaceholder.java b/android_icu4j/src/main/java/android/icu/message2/FormattedPlaceholder.java
index 16bd52dc3..aa139db91 100644
--- a/android_icu4j/src/main/java/android/icu/message2/FormattedPlaceholder.java
+++ b/android_icu4j/src/main/java/android/icu/message2/FormattedPlaceholder.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
diff --git a/android_icu4j/src/main/java/android/icu/message2/Formatter.java b/android_icu4j/src/main/java/android/icu/message2/Formatter.java
index 0eeac568c..2572d3f39 100644
--- a/android_icu4j/src/main/java/android/icu/message2/Formatter.java
+++ b/android_icu4j/src/main/java/android/icu/message2/Formatter.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
diff --git a/android_icu4j/src/main/java/android/icu/message2/FormatterFactory.java b/android_icu4j/src/main/java/android/icu/message2/FormatterFactory.java
index 6b89c31ed..0d1832dad 100644
--- a/android_icu4j/src/main/java/android/icu/message2/FormatterFactory.java
+++ b/android_icu4j/src/main/java/android/icu/message2/FormatterFactory.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
diff --git a/android_icu4j/src/main/java/android/icu/message2/IdentityFormatterFactory.java b/android_icu4j/src/main/java/android/icu/message2/IdentityFormatterFactory.java
index 6798b989f..7057ae4bc 100644
--- a/android_icu4j/src/main/java/android/icu/message2/IdentityFormatterFactory.java
+++ b/android_icu4j/src/main/java/android/icu/message2/IdentityFormatterFactory.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
@@ -26,7 +26,8 @@ class IdentityFormatterFactory implements FormatterFactory {
*/
@Override
public FormattedPlaceholder format(Object toFormat, Map<String, Object> variableOptions) {
- return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue(Objects.toString(toFormat)));
+ return new FormattedPlaceholder(
+ toFormat, new PlainStringFormattedValue(Objects.toString(toFormat)));
}
/**
diff --git a/android_icu4j/src/main/java/android/icu/message2/InputSource.java b/android_icu4j/src/main/java/android/icu/message2/InputSource.java
new file mode 100644
index 000000000..7122486e8
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/InputSource.java
@@ -0,0 +1,85 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+class InputSource {
+ final String buffer;
+
+ private int cursor;
+ private int lastReadCursor = -1;
+ private int lastReadCount = 0;
+
+ InputSource(String input) {
+ if (input == null) {
+ throw new IllegalArgumentException("Input string should not be null");
+ }
+ this.buffer = input;
+ this.cursor = 0;
+ }
+
+ boolean atEnd() {
+ return cursor >= buffer.length();
+ }
+
+ int peekChar() {
+ if (atEnd()) {
+ return -1;
+ }
+ return buffer.charAt(cursor);
+ }
+
+ int readCodePoint() {
+ // TODO: remove this?
+ // START Detect possible infinite loop
+ if (lastReadCursor != cursor) {
+ lastReadCursor = cursor;
+ lastReadCount = 1;
+ } else {
+ lastReadCount++;
+ if (lastReadCount >= 10) {
+ throw new RuntimeException("Stuck in a loop!");
+ }
+ }
+ // END Detect possible infinite loop
+
+ if (atEnd()) {
+ return -1;
+ }
+
+ char c = buffer.charAt(cursor++);
+ if (Character.isHighSurrogate(c)) {
+ if (!atEnd()) {
+ char c2 = buffer.charAt(cursor++);
+ if (Character.isLowSurrogate(c2)) {
+ return Character.toCodePoint(c, c2);
+ } else { // invalid, high surrogate followed by non-surrogate
+ cursor--;
+ return c;
+ }
+ }
+ }
+ return c;
+ }
+
+ // Backup a number of characters.
+ void backup(int amount) {
+ // TODO: validate
+ cursor -= amount;
+ }
+
+ int getPosition() {
+ return cursor;
+ }
+
+ void skip(int amount) {
+ // TODO: validate
+ cursor += amount;
+ }
+
+ void gotoPosition(int position) {
+ // TODO: validate
+ cursor = position;
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/MFDataModel.java b/android_icu4j/src/main/java/android/icu/message2/MFDataModel.java
new file mode 100644
index 000000000..4436f5743
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/MFDataModel.java
@@ -0,0 +1,523 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This maps closely to the official specification.
+ * Since it is not final, we will not add javadoc everywhere.
+ *
+ * <p>See <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model/README.md">the
+ * latest description</a>.</p>
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+@Deprecated
+@SuppressWarnings("javadoc")
+public class MFDataModel {
+
+ private MFDataModel() {
+ // Prevent instantiation
+ }
+
+ // Messages
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public interface Message {
+ // Provides a common type for PatternMessage and SelectMessage.
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class PatternMessage implements Message {
+ public final List<Declaration> declarations;
+ public final Pattern pattern;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public PatternMessage(List<Declaration> declarations, Pattern pattern) {
+ this.declarations = declarations;
+ this.pattern = pattern;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class SelectMessage implements Message {
+ public final List<Declaration> declarations;
+ public final List<Expression> selectors;
+ public final List<Variant> variants;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public SelectMessage(
+ List<Declaration> declarations,
+ List<Expression> selectors,
+ List<Variant> variants) {
+ this.declarations = declarations;
+ this.selectors = selectors;
+ this.variants = variants;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public interface Declaration {
+ // Provides a common type for InputDeclaration, LocalDeclaration, and UnsupportedStatement.
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class InputDeclaration implements Declaration {
+ public final String name;
+ public final VariableExpression value;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public InputDeclaration(String name, VariableExpression value) {
+ this.name = name;
+ this.value = value;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class LocalDeclaration implements Declaration {
+ public final String name;
+ public final Expression value;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public LocalDeclaration(String name, Expression value) {
+ this.name = name;
+ this.value = value;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class UnsupportedStatement implements Declaration {
+ public final String keyword;
+ public final String body;
+ public final List<Expression> expressions;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public UnsupportedStatement(String keyword, String body, List<Expression> expressions) {
+ this.keyword = keyword;
+ this.body = body;
+ this.expressions = expressions;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public interface LiteralOrCatchallKey {
+ // Provides a common type for the selection keys: Variant, Literal, or CatchallKey.
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class Variant implements LiteralOrCatchallKey {
+ public final List<LiteralOrCatchallKey> keys;
+ public final Pattern value;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Variant(List<LiteralOrCatchallKey> keys, Pattern value) {
+ this.keys = keys;
+ this.value = value;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class CatchallKey implements LiteralOrCatchallKey {
+ // String value; // Always '*' in MF2
+ }
+
+ // Patterns
+
+ // type Pattern = Array<string | Expression | Markup>;
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class Pattern {
+ public final List<PatternPart> parts;
+
+ Pattern() {
+ this.parts = new ArrayList<>();
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public interface PatternPart {
+ // Provides a common type for StringPart and Expression.
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class StringPart implements PatternPart {
+ public final String value;
+
+ StringPart(String value) {
+ this.value = value;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public interface Expression extends PatternPart {
+ // Provides a common type for all kind of expressions:
+ // LiteralExpression, VariableExpression, FunctionExpression, UnsupportedExpression, Markup
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class LiteralExpression implements Expression {
+ public final Literal arg;
+ public final Annotation annotation;
+ public final List<Attribute> attributes;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public LiteralExpression(Literal arg, Annotation annotation, List<Attribute> attributes) {
+ this.arg = arg;
+ this.annotation = annotation;
+ this.attributes = attributes;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class VariableExpression implements Expression {
+ public final VariableRef arg;
+ public final Annotation annotation;
+ public final List<Attribute> attributes;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public VariableExpression(
+ VariableRef arg, Annotation annotation, List<Attribute> attributes) {
+ this.arg = arg;
+ this.annotation = annotation;
+ this.attributes = attributes;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public interface Annotation {
+ // Provides a common type for FunctionAnnotation, UnsupportedAnnotation
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class FunctionExpression implements Expression {
+ public final FunctionAnnotation annotation;
+ public final List<Attribute> attributes;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public FunctionExpression(FunctionAnnotation annotation, List<Attribute> attributes) {
+ this.annotation = annotation;
+ this.attributes = attributes;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class UnsupportedExpression implements Expression {
+ public final UnsupportedAnnotation annotation;
+ public final List<Attribute> attributes;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public UnsupportedExpression(UnsupportedAnnotation annotation, List<Attribute> attributes) {
+ this.annotation = annotation;
+ this.attributes = attributes;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class Attribute {
+ public final String name;
+ public final LiteralOrVariableRef value;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Attribute(String name, LiteralOrVariableRef value) {
+ this.name = name;
+ this.value = value;
+ }
+ }
+
+ // Expressions
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public interface LiteralOrVariableRef {
+ // Provides a common type for Literal and VariableRef,
+ // to represent things like `foo` / `|foo|` / `1234` (literals)
+ // and `$foo` (VariableRef), as argument for placeholders or value in options.
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class Literal implements LiteralOrVariableRef, LiteralOrCatchallKey {
+ public final String value;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Literal(String value) {
+ this.value = value;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class VariableRef implements LiteralOrVariableRef {
+ public final String name;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public VariableRef(String name) {
+ this.name = name;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class FunctionAnnotation implements Annotation {
+ public final String name;
+ public final Map<String, Option> options;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public FunctionAnnotation(String name, Map<String, Option> options) {
+ this.name = name;
+ this.options = options;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class Option {
+ public final String name;
+ public final LiteralOrVariableRef value;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Option(String name, LiteralOrVariableRef value) {
+ this.name = name;
+ this.value = value;
+ }
+ }
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class UnsupportedAnnotation implements Annotation {
+ public final String source;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public UnsupportedAnnotation(String source) {
+ this.source = source;
+ }
+ }
+
+ // Markup
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class Markup implements Expression {
+ enum Kind {
+ OPEN,
+ CLOSE,
+ STANDALONE
+ }
+
+ public final Kind kind;
+ public final String name;
+ public final Map<String, Option> options;
+ public final List<Attribute> attributes;
+
+ /**
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Markup(
+ Kind kind, String name, Map<String, Option> options, List<Attribute> attributes) {
+ this.kind = kind;
+ this.name = name;
+ this.options = options;
+ this.attributes = attributes;
+ }
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/MFDataModelFormatter.java b/android_icu4j/src/main/java/android/icu/message2/MFDataModelFormatter.java
new file mode 100644
index 000000000..347c4ccbe
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/MFDataModelFormatter.java
@@ -0,0 +1,602 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import android.icu.message2.MFDataModel.Annotation;
+import android.icu.message2.MFDataModel.CatchallKey;
+import android.icu.message2.MFDataModel.Declaration;
+import android.icu.message2.MFDataModel.Expression;
+import android.icu.message2.MFDataModel.FunctionAnnotation;
+import android.icu.message2.MFDataModel.FunctionExpression;
+import android.icu.message2.MFDataModel.InputDeclaration;
+import android.icu.message2.MFDataModel.Literal;
+import android.icu.message2.MFDataModel.LiteralExpression;
+import android.icu.message2.MFDataModel.LiteralOrCatchallKey;
+import android.icu.message2.MFDataModel.LiteralOrVariableRef;
+import android.icu.message2.MFDataModel.LocalDeclaration;
+import android.icu.message2.MFDataModel.Option;
+import android.icu.message2.MFDataModel.Pattern;
+import android.icu.message2.MFDataModel.SelectMessage;
+import android.icu.message2.MFDataModel.StringPart;
+import android.icu.message2.MFDataModel.UnsupportedAnnotation;
+import android.icu.message2.MFDataModel.UnsupportedExpression;
+import android.icu.message2.MFDataModel.VariableRef;
+import android.icu.message2.MFDataModel.Variant;
+import android.icu.util.Calendar;
+import android.icu.util.CurrencyAmount;
+
+/**
+ * Takes an {@link MFDataModel} and formats it to a {@link String}
+ * (and later on we will also implement formatting to a {@code FormattedMessage}).
+ */
+// TODO: move this in the MessageFormatter?
+class MFDataModelFormatter {
+ private final Locale locale;
+ private final MFDataModel.Message dm;
+
+ private final MFFunctionRegistry standardFunctions;
+ private final MFFunctionRegistry customFunctions;
+ private static final MFFunctionRegistry EMPTY_REGISTY = MFFunctionRegistry.builder().build();
+
+ MFDataModelFormatter(
+ MFDataModel.Message dm, Locale locale, MFFunctionRegistry customFunctionRegistry) {
+ this.locale = locale;
+ this.dm = dm;
+ this.customFunctions =
+ customFunctionRegistry == null ? EMPTY_REGISTY : customFunctionRegistry;
+
+ standardFunctions =
+ MFFunctionRegistry.builder()
+ // Date/time formatting
+ .setFormatter("datetime", new DateTimeFormatterFactory("datetime"))
+ .setFormatter("date", new DateTimeFormatterFactory("date"))
+ .setFormatter("time", new DateTimeFormatterFactory("time"))
+ .setDefaultFormatterNameForType(Date.class, "datetime")
+ .setDefaultFormatterNameForType(Calendar.class, "datetime")
+ .setDefaultFormatterNameForType(java.util.Calendar.class, "datetime")
+
+ // Number formatting
+ .setFormatter("number", new NumberFormatterFactory("number"))
+ .setFormatter("integer", new NumberFormatterFactory("integer"))
+ .setDefaultFormatterNameForType(Integer.class, "number")
+ .setDefaultFormatterNameForType(Double.class, "number")
+ .setDefaultFormatterNameForType(Number.class, "number")
+ .setDefaultFormatterNameForType(CurrencyAmount.class, "number")
+
+ // Format that returns "to string"
+ .setFormatter("string", new IdentityFormatterFactory())
+ .setDefaultFormatterNameForType(String.class, "string")
+ .setDefaultFormatterNameForType(CharSequence.class, "string")
+
+ // Register the standard selectors
+ .setSelector("number", new NumberFormatterFactory("number"))
+ .setSelector("integer", new NumberFormatterFactory("integer"))
+ .setSelector("string", new TextSelectorFactory())
+ .setSelector("icu:gender", new TextSelectorFactory())
+ .build();
+ }
+
+ String format(Map<String, Object> arguments) {
+ MFDataModel.Pattern patternToRender = null;
+ if (arguments == null) {
+ arguments = new HashMap<>();
+ }
+
+ Map<String, Object> variables;
+ if (dm instanceof MFDataModel.PatternMessage) {
+ MFDataModel.PatternMessage pm = (MFDataModel.PatternMessage) dm;
+ variables = resolveDeclarations(pm.declarations, arguments);
+ patternToRender = pm.pattern;
+ } else if (dm instanceof MFDataModel.SelectMessage) {
+ MFDataModel.SelectMessage sm = (MFDataModel.SelectMessage) dm;
+ variables = resolveDeclarations(sm.declarations, arguments);
+ patternToRender = findBestMatchingPattern(sm, variables, arguments);
+ } else {
+ formattingError("");
+ return "ERROR!";
+ }
+
+ if (patternToRender == null) {
+ return "ERROR!";
+ }
+
+ StringBuilder result = new StringBuilder();
+ for (MFDataModel.PatternPart part : patternToRender.parts) {
+ if (part instanceof MFDataModel.StringPart) {
+ MFDataModel.StringPart strPart = (StringPart) part;
+ result.append(strPart.value);
+ } else if (part instanceof MFDataModel.Expression) {
+ FormattedPlaceholder formattedExpression =
+ formatExpression((Expression) part, variables, arguments);
+ result.append(formattedExpression.getFormattedValue().toString());
+ } else if (part instanceof MFDataModel.Markup) {
+ // Ignore
+ } else if (part instanceof MFDataModel.UnsupportedExpression) {
+ // Ignore
+ } else {
+ formattingError("Unknown part type: " + part);
+ }
+ }
+ return result.toString();
+ }
+
+ private Pattern findBestMatchingPattern(
+ SelectMessage sm, Map<String, Object> variables, Map<String, Object> arguments) {
+ Pattern patternToRender = null;
+
+ // ====================================
+ // spec: ### Resolve Selectors
+ // ====================================
+
+ // Collect all the selector functions in an array, to reuse
+ List<Expression> selectors = sm.selectors;
+ // spec: Let `res` be a new empty list of resolved values that support selection.
+ List<ResolvedSelector> res = new ArrayList<>(selectors.size());
+ // spec: For each _selector_ `sel`, in source order,
+ for (Expression sel : selectors) {
+ // spec: Let `rv` be the resolved value of `sel`.
+ FormattedPlaceholder fph = formatExpression(sel, variables, arguments);
+ String functionName = null;
+ Object argument = null;
+ Map<String, Object> options = new HashMap<>();
+ if (fph.getInput() instanceof ResolvedExpression) {
+ ResolvedExpression re = (ResolvedExpression) fph.getInput();
+ argument = re.argument;
+ functionName = re.functionName;
+ options.putAll(re.options);
+ } else if (fph.getInput() instanceof MFDataModel.VariableExpression) {
+ MFDataModel.VariableExpression ve = (MFDataModel.VariableExpression) fph.getInput();
+ argument = resolveLiteralOrVariable(ve.arg, variables, arguments);
+ if (ve.annotation instanceof FunctionAnnotation) {
+ functionName = ((FunctionAnnotation) ve.annotation).name;
+ }
+ } else if (fph.getInput() instanceof LiteralExpression) {
+ LiteralExpression le = (LiteralExpression) fph.getInput();
+ argument = le.arg;
+ if (le.annotation instanceof FunctionAnnotation) {
+ functionName = ((FunctionAnnotation) le.annotation).name;
+ }
+ }
+ SelectorFactory funcFactory = standardFunctions.getSelector(functionName);
+ if (funcFactory == null) {
+ funcFactory = customFunctions.getSelector(functionName);
+ }
+ // spec: If selection is supported for `rv`:
+ if (funcFactory != null) {
+ Selector selectorFunction = funcFactory.createSelector(locale, options);
+ ResolvedSelector rs = new ResolvedSelector(argument, options, selectorFunction);
+ // spec: Append `rv` as the last element of the list `res`.
+ res.add(rs);
+ } else {
+ throw new IllegalArgumentException("Unknown selector type: " + functionName);
+ }
+ }
+
+ // This should not be possible, we added one function for each selector,
+ // or we have thrown an exception.
+ // But just in case someone removes the throw above?
+ if (res.size() != selectors.size()) {
+ throw new IllegalArgumentException(
+ "Something went wrong, not enough selector functions, "
+ + res.size() + " vs. " + selectors.size());
+ }
+
+ // ====================================
+ // spec: ### Resolve Preferences
+ // ====================================
+
+ // spec: Let `pref` be a new empty list of lists of strings.
+ List<List<String>> pref = new ArrayList<>();
+ // spec: For each index `i` in `res`:
+ for (int i = 0; i < res.size(); i++) {
+ // spec: Let `keys` be a new empty list of strings.
+ List<String> keys = new ArrayList<>();
+ // spec: For each _variant_ `var` of the message:
+ for (Variant var : sm.variants) {
+ // spec: Let `key` be the `var` key at position `i`.
+ LiteralOrCatchallKey key = var.keys.get(i);
+ // spec: If `key` is not the catch-all key `'*'`:
+ if (key instanceof CatchallKey) {
+ keys.add("*");
+ } else if (key instanceof Literal) {
+ // spec: Assert that `key` is a _literal_.
+ // spec: Let `ks` be the resolved value of `key`.
+ String ks = ((Literal) key).value;
+ // spec: Append `ks` as the last element of the list `keys`.
+ keys.add(ks);
+ } else {
+ formattingError("Literal expected, but got " + key);
+ }
+ }
+ // spec: Let `rv` be the resolved value at index `i` of `res`.
+ ResolvedSelector rv = res.get(i);
+ // spec: Let `matches` be the result of calling the method MatchSelectorKeys(`rv`, `keys`)
+ List<String> matches = matchSelectorKeys(rv, keys);
+ // spec: Append `matches` as the last element of the list `pref`.
+ pref.add(matches);
+ }
+
+ // ====================================
+ // spec: ### Filter Variants
+ // ====================================
+
+ // spec: Let `vars` be a new empty list of _variants_.
+ List<Variant> vars = new ArrayList<>();
+ // spec: For each _variant_ `var` of the message:
+ for (Variant var : sm.variants) {
+ // spec: For each index `i` in `pref`:
+ int found = 0;
+ for (int i = 0; i < pref.size(); i++) {
+ // spec: Let `key` be the `var` key at position `i`.
+ LiteralOrCatchallKey key = var.keys.get(i);
+ // spec: If `key` is the catch-all key `'*'`:
+ if (key instanceof CatchallKey) {
+ // spec: Continue the inner loop on `pref`.
+ found++;
+ continue;
+ }
+ // spec: Assert that `key` is a _literal_.
+ if (!(key instanceof Literal)) {
+ formattingError("Literal expected");
+ }
+ // spec: Let `ks` be the resolved value of `key`.
+ String ks = ((Literal) key).value;
+ // spec: Let `matches` be the list of strings at index `i` of `pref`.
+ List<String> matches = pref.get(i);
+ // spec: If `matches` includes `ks`:
+ if (matches.contains(ks)) {
+ // spec: Continue the inner loop on `pref`.
+ found++;
+ continue;
+ } else {
+ // spec: Else:
+ // spec: Continue the outer loop on message _variants_.
+ break;
+ }
+ }
+ if (found == pref.size()) {
+ // spec: Append `var` as the last element of the list `vars`.
+ vars.add(var);
+ }
+ }
+
+ // ====================================
+ // spec: ### Sort Variants
+ // ====================================
+ // spec: Let `sortable` be a new empty list of (integer, _variant_) tuples.
+ List<IntVarTuple> sortable = new ArrayList<>();
+ // spec: For each _variant_ `var` of `vars`:
+ for (Variant var : vars) {
+ // spec: Let `tuple` be a new tuple (-1, `var`).
+ IntVarTuple tuple = new IntVarTuple(-1, var);
+ // spec: Append `tuple` as the last element of the list `sortable`.
+ sortable.add(tuple);
+ }
+ // spec: Let `len` be the integer count of items in `pref`.
+ int len = pref.size();
+ // spec: Let `i` be `len` - 1.
+ int i = len - 1;
+ // spec: While `i` >= 0:
+ while (i >= 0) {
+ // spec: Let `matches` be the list of strings at index `i` of `pref`.
+ List<String> matches = pref.get(i);
+ // spec: Let `minpref` be the integer count of items in `matches`.
+ int minpref = matches.size();
+ // spec: For each tuple `tuple` of `sortable`:
+ for (IntVarTuple tuple : sortable) {
+ // spec: Let `matchpref` be an integer with the value `minpref`.
+ int matchpref = minpref;
+ // spec: Let `key` be the `tuple` _variant_ key at position `i`.
+ LiteralOrCatchallKey key = tuple.variant.keys.get(i);
+ // spec: If `key` is not the catch-all key `'*'`:
+ if (!(key instanceof CatchallKey)) {
+ // spec: Assert that `key` is a _literal_.
+ if (!(key instanceof Literal)) {
+ formattingError("Literal expected");
+ }
+ // spec: Let `ks` be the resolved value of `key`.
+ String ks = ((Literal) key).value;
+ // spec: Let `matchpref` be the integer position of `ks` in `matches`.
+ matchpref = matches.indexOf(ks);
+ }
+ // spec: Set the `tuple` integer value as `matchpref`.
+ tuple.integer = matchpref;
+ }
+ // spec: Set `sortable` to be the result of calling the method `SortVariants(sortable)`.
+ sortable.sort(MFDataModelFormatter::sortVariants);
+ // spec: Set `i` to be `i` - 1.
+ i--;
+ }
+ // spec: Let `var` be the _variant_ element of the first element of `sortable`.
+ IntVarTuple var = sortable.get(0);
+ // spec: Select the _pattern_ of `var`.
+ patternToRender = var.variant.value;
+
+ // And should do that only once, when building the data model.
+ if (patternToRender == null) {
+ // If there was a case with all entries in the keys `*` this should not happen
+ throw new IllegalArgumentException(
+ "The selection went wrong, cannot select any option.");
+ }
+
+ return patternToRender;
+ }
+
+ /* spec:
+ * `SortVariants` is a method whose single argument is
+ * a list of (integer, _variant_) tuples.
+ * It returns a list of (integer, _variant_) tuples.
+ * Any implementation of `SortVariants` is acceptable
+ * as long as it satisfies the following requirements:
+ *
+ * 1. Let `sortable` be an arbitrary list of (integer, _variant_) tuples.
+ * 1. Let `sorted` be `SortVariants(sortable)`.
+ * 1. `sorted` is the result of sorting `sortable` using the following comparator:
+ * 1. `(i1, v1)` <= `(i2, v2)` if and only if `i1 <= i2`.
+ * 1. The sort is stable (pairs of tuples from `sortable` that are equal
+ * in their first element have the same relative order in `sorted`).
+ */
+ private static int sortVariants(IntVarTuple o1, IntVarTuple o2) {
+ int result = Integer.compare(o1.integer, o2.integer);
+ if (result != 0) {
+ return result;
+ }
+ List<LiteralOrCatchallKey> v1 = o1.variant.keys;
+ List<LiteralOrCatchallKey> v2 = o1.variant.keys;
+ if (v1.size() != v2.size()) {
+ formattingError("The number of keys is not equal.");
+ }
+ for (int i = 0; i < v1.size(); i++) {
+ LiteralOrCatchallKey k1 = v1.get(i);
+ LiteralOrCatchallKey k2 = v2.get(i);
+ String s1 = k1 instanceof Literal ? ((Literal) k1).value : "*";
+ String s2 = k2 instanceof Literal ? ((Literal) k2).value : "*";
+ int cmp = s1.compareTo(s2);
+ if (cmp != 0) {
+ return cmp;
+ }
+ }
+ return 0;
+ }
+
+ /**
+ * spec:
+ * The method MatchSelectorKeys is determined by the implementation.
+ * It takes as arguments a resolved _selector_ value `rv` and a list of string keys `keys`,
+ * and returns a list of string keys in preferential order.
+ * The returned list MUST contain only unique elements of the input list `keys`.
+ * The returned list MAY be empty.
+ * The most-preferred key is first,
+ * with each successive key appearing in order by decreasing preference.
+ */
+ @SuppressWarnings("static-method")
+ private List<String> matchSelectorKeys(ResolvedSelector rv, List<String> keys) {
+ return rv.selectorFunction.matches(rv.argument, keys, rv.options);
+ }
+
+ private static class ResolvedSelector {
+ final Object argument;
+ final Map<String, Object> options;
+ final Selector selectorFunction;
+
+ public ResolvedSelector(
+ Object argument, Map<String, Object> options, Selector selectorFunction) {
+ this.argument = argument;
+ this.options = new HashMap<>(options);
+ this.selectorFunction = selectorFunction;
+ }
+ }
+
+ private static void formattingError(String message) {
+ throw new IllegalArgumentException(message);
+ }
+
+ private FormatterFactory getFormattingFunctionFactoryByName(
+ Object toFormat, String functionName) {
+ // Get a function name from the type of the object to format
+ if (functionName == null || functionName.isEmpty()) {
+ if (toFormat == null) {
+ // The object to format is null, and no function provided.
+ return null;
+ }
+ Class<?> clazz = toFormat.getClass();
+ functionName = standardFunctions.getDefaultFormatterNameForType(clazz);
+ if (functionName == null) {
+ functionName = customFunctions.getDefaultFormatterNameForType(clazz);
+ }
+ if (functionName == null) {
+ throw new IllegalArgumentException(
+ "Object to format without a function, and unknown type: "
+ + toFormat.getClass().getName());
+ }
+ }
+
+ FormatterFactory func = standardFunctions.getFormatter(functionName);
+ if (func == null) {
+ func = customFunctions.getFormatter(functionName);
+ }
+ return func;
+ }
+
+ private static Object resolveLiteralOrVariable(
+ LiteralOrVariableRef value,
+ Map<String, Object> localVars,
+ Map<String, Object> arguments) {
+ if (value instanceof Literal) {
+ String val = ((Literal) value).value;
+ Number nr = OptUtils.asNumber(val);
+ if (nr != null) {
+ return nr;
+ }
+ return val;
+ } else if (value instanceof VariableRef) {
+ String varName = ((VariableRef) value).name;
+ Object val = localVars.get(varName);
+ if (val == null) {
+ val = localVars.get(varName);
+ }
+ if (val == null) {
+ val = arguments.get(varName);
+ }
+ return val;
+ }
+ return value;
+ }
+
+ private static Map<String, Object> convertOptions(
+ Map<String, Option> options,
+ Map<String, Object> localVars,
+ Map<String, Object> arguments) {
+ Map<String, Object> result = new HashMap<>();
+ for (Option option : options.values()) {
+ result.put(option.name, resolveLiteralOrVariable(option.value, localVars, arguments));
+ }
+ return result;
+ }
+
+ /**
+ * Formats an expression.
+ *
+ * @param expression the expression to format
+ * @param variables local variables, created from declarations (`.input` and `.local`)
+ * @param arguments the arguments passed at runtime to be formatted (`mf.format(arguments)`)
+ */
+ private FormattedPlaceholder formatExpression(
+ Expression expression, Map<String, Object> variables, Map<String, Object> arguments) {
+
+ Annotation annotation = null; // function name
+ String functionName = null;
+ Object toFormat = null;
+ Map<String, Object> options = new HashMap<>();
+ String fallbackString = "{\uFFFD}";
+
+ if (expression instanceof MFDataModel.VariableExpression) {
+ MFDataModel.VariableExpression varPart = (MFDataModel.VariableExpression) expression;
+ fallbackString = "{$" + varPart.arg.name + "}";
+ annotation = varPart.annotation; // function name & options
+ Object resolved = resolveLiteralOrVariable(varPart.arg, variables, arguments);
+ if (resolved instanceof FormattedPlaceholder) {
+ Object input = ((FormattedPlaceholder) resolved).getInput();
+ if (input instanceof ResolvedExpression) {
+ ResolvedExpression re = (ResolvedExpression) input;
+ toFormat = re.argument;
+ functionName = re.functionName;
+ options.putAll(re.options);
+ } else {
+ toFormat = input;
+ }
+ } else {
+ toFormat = resolved;
+ }
+ } else if (expression
+ instanceof MFDataModel.FunctionExpression) { // Function without arguments
+ MFDataModel.FunctionExpression fe = (FunctionExpression) expression;
+ fallbackString = "{:" + fe.annotation.name + "}";
+ annotation = fe.annotation;
+ } else if (expression instanceof MFDataModel.LiteralExpression) {
+ MFDataModel.LiteralExpression le = (LiteralExpression) expression;
+ annotation = le.annotation;
+ fallbackString = "{|" + le.arg.value + "|}";
+ toFormat = resolveLiteralOrVariable(le.arg, variables, arguments);
+ } else if (expression instanceof MFDataModel.Markup) {
+ // No output on markup, for now (we only format to string)
+ return new FormattedPlaceholder(expression, new PlainStringFormattedValue(""));
+ } else {
+ UnsupportedExpression ue = (UnsupportedExpression) expression;
+ char sigil = ue.annotation.source.charAt(0);
+ return new FormattedPlaceholder(
+ expression, new PlainStringFormattedValue("{" + sigil + "}"));
+ }
+
+ if (annotation instanceof FunctionAnnotation) {
+ FunctionAnnotation fa = (FunctionAnnotation) annotation;
+ if (functionName != null && !functionName.equals(fa.name)) {
+ formattingError(
+ "invalid function overrides, '" + functionName + "' <> '" + fa.name + "'");
+ }
+ functionName = fa.name;
+ Map<String, Object> newOptions = convertOptions(fa.options, variables, arguments);
+ options.putAll(newOptions);
+ } else if (annotation instanceof UnsupportedAnnotation) {
+ // We don't know how to format unsupported annotations
+ return new FormattedPlaceholder(expression, new PlainStringFormattedValue(fallbackString));
+ }
+
+ FormatterFactory funcFactory = getFormattingFunctionFactoryByName(toFormat, functionName);
+ if (funcFactory == null) {
+ return new FormattedPlaceholder(expression, new PlainStringFormattedValue(fallbackString));
+ }
+ Formatter ff = funcFactory.createFormatter(locale, options);
+ String res = ff.formatToString(toFormat, arguments);
+ if (res == null) {
+ res = fallbackString;
+ }
+
+ ResolvedExpression resExpression = new ResolvedExpression(toFormat, functionName, options);
+ return new FormattedPlaceholder(resExpression, new PlainStringFormattedValue(res));
+ }
+
+ static class ResolvedExpression implements Expression {
+ final Object argument;
+ final String functionName;
+ final Map<String, Object> options;
+
+ public ResolvedExpression(
+ Object argument, String functionName, Map<String, Object> options) {
+ this.argument = argument;
+ this.functionName = functionName;
+ this.options = options;
+ }
+ }
+
+ private Map<String, Object> resolveDeclarations(
+ List<MFDataModel.Declaration> declarations, Map<String, Object> arguments) {
+ Map<String, Object> variables = new HashMap<>();
+ String name;
+ Expression value;
+ if (declarations != null) {
+ for (Declaration declaration : declarations) {
+ if (declaration instanceof InputDeclaration) {
+ name = ((InputDeclaration) declaration).name;
+ value = ((InputDeclaration) declaration).value;
+ } else if (declaration instanceof LocalDeclaration) {
+ name = ((LocalDeclaration) declaration).name;
+ value = ((LocalDeclaration) declaration).value;
+ } else {
+ continue;
+ }
+ try {
+ // There it no need to succeed in solving everything.
+ // For example there is no problem is `$b` is not defined below:
+ // .local $a = {$b :number}
+ // {{ Hello {$user}! }}
+ FormattedPlaceholder fmt = formatExpression(value, variables, arguments);
+ // If it works, all good
+ variables.put(name, fmt);
+ } catch (Exception e) {
+ // It's OK to ignore the failure in this context, see comment above.
+ }
+ }
+ }
+ return variables;
+ }
+
+ private static class IntVarTuple {
+ int integer;
+ final Variant variant;
+
+ public IntVarTuple(int integer, Variant variant) {
+ this.integer = integer;
+ this.variant = variant;
+ }
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/MFDataModelValidator.java b/android_icu4j/src/main/java/android/icu/message2/MFDataModelValidator.java
new file mode 100644
index 000000000..aecd28162
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/MFDataModelValidator.java
@@ -0,0 +1,205 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.StringJoiner;
+
+import android.icu.message2.MFDataModel.Annotation;
+import android.icu.message2.MFDataModel.CatchallKey;
+import android.icu.message2.MFDataModel.Declaration;
+import android.icu.message2.MFDataModel.Expression;
+import android.icu.message2.MFDataModel.FunctionAnnotation;
+import android.icu.message2.MFDataModel.FunctionExpression;
+import android.icu.message2.MFDataModel.InputDeclaration;
+import android.icu.message2.MFDataModel.Literal;
+import android.icu.message2.MFDataModel.LiteralExpression;
+import android.icu.message2.MFDataModel.LiteralOrCatchallKey;
+import android.icu.message2.MFDataModel.LiteralOrVariableRef;
+import android.icu.message2.MFDataModel.LocalDeclaration;
+import android.icu.message2.MFDataModel.Option;
+import android.icu.message2.MFDataModel.PatternMessage;
+import android.icu.message2.MFDataModel.SelectMessage;
+import android.icu.message2.MFDataModel.VariableExpression;
+import android.icu.message2.MFDataModel.VariableRef;
+import android.icu.message2.MFDataModel.Variant;
+
+// I can merge all this in the MFDataModel class and make it private
+class MFDataModelValidator {
+ private final MFDataModel.Message message;
+ private final Set<String> declaredVars = new HashSet<>();
+
+ MFDataModelValidator(MFDataModel.Message message) {
+ this.message = message;
+ }
+
+ boolean validate() throws MFParseException {
+ if (message instanceof PatternMessage) {
+ validateDeclarations(((PatternMessage) message).declarations);
+ } else if (message instanceof SelectMessage) {
+ SelectMessage sm = (SelectMessage) message;
+ validateDeclarations(sm.declarations);
+ validateSelectors(sm.selectors);
+ int selectorCount = sm.selectors.size();
+ validateVariants(sm.variants, selectorCount);
+ }
+ return true;
+ }
+
+ private boolean validateVariants(List<Variant> variants, int selectorCount)
+ throws MFParseException {
+ if (variants == null || variants.isEmpty()) {
+ error("Selection messages must have at least one variant");
+ }
+
+ // Look for an entry with all keys = '*'
+ boolean hasUltimateFallback = false;
+ Set<String> fakeKeys = new HashSet<>();
+ for (Variant variant : variants) {
+ if (variant.keys == null || variant.keys.isEmpty()) {
+ error("Selection variants must have at least one key");
+ }
+ if (variant.keys.size() != selectorCount) {
+ error("Selection variants must have the same number of variants as the selectors.");
+ }
+ int catchAllCount = 0;
+ StringJoiner fakeKey = new StringJoiner("<<::>>");
+ for (LiteralOrCatchallKey key : variant.keys) {
+ if (key instanceof CatchallKey) {
+ catchAllCount++;
+ fakeKey.add("*");
+ } else if (key instanceof Literal) {
+ fakeKey.add(((Literal) key).value);
+ }
+ }
+ if (fakeKeys.contains(fakeKey.toString())) {
+ error("Dumplicate combination of keys");
+ } else {
+ fakeKeys.add(fakeKey.toString());
+ }
+ if (catchAllCount == selectorCount) {
+ hasUltimateFallback = true;
+ }
+ }
+ if (!hasUltimateFallback) {
+ error("There must be one variant with all the keys being '*'");
+ }
+ return true;
+ }
+
+ private boolean validateSelectors(List<Expression> selectors) throws MFParseException {
+ if (selectors == null || selectors.isEmpty()) {
+ error("Selection messages must have selectors");
+ }
+ return true;
+ }
+
+ /*
+ * .input {$foo :number} .input {$foo} => ERROR
+ * .input {$foo :number} .local $foo={$bar} => ERROR, local foo overrides an input
+ * .local $foo={...} .local $foo={...} => ERROR, foo declared twice
+ * .local $a={$foo} .local $b={$foo} => NOT AN ERROR (foo is used, not declared)
+ * .local $a={:f opt=$foo} .local $foo={$foo} => ERROR, foo declared after beeing used in opt
+ */
+ private boolean validateDeclarations(List<Declaration> declarations) throws MFParseException {
+ if (declarations == null || declarations.isEmpty()) {
+ return true;
+ }
+ for (Declaration declaration : declarations) {
+ if (declaration instanceof LocalDeclaration) {
+ LocalDeclaration ld = (LocalDeclaration) declaration;
+ validateExpression(ld.value, false);
+ addVariableDeclaration(ld.name);
+ } else if (declaration instanceof InputDeclaration) {
+ InputDeclaration id = (InputDeclaration) declaration;
+ validateExpression(id.value, true);
+ }
+ }
+ return true;
+ }
+
+ /*
+ * One might also consider checking if the same variable is used with more than one type:
+ * .local $a = {$foo :number}
+ * .local $b = {$foo :string}
+ * .local $c = {$foo :datetime}
+ *
+ * But this is not necesarily an error.
+ * If $foo is a number, then it might be formatter as a number, or as date (epoch time),
+ * or something else.
+ *
+ * So it is not safe to complain. Especially with custom functions:
+ * # get the first name from a `Person` object
+ * .local $b = {$person :getField fieldName=firstName}
+ * # get formats a `Person` object
+ * .local $b = {$person :person}
+ */
+ private void validateExpression(Expression expression, boolean fromInput)
+ throws MFParseException {
+ String argName = null;
+ Annotation annotation = null;
+ if (expression instanceof Literal) {
+ // ...{foo}... or ...{|foo|}... or ...{123}...
+ // does not declare anything
+ } else if (expression instanceof LiteralExpression) {
+ LiteralExpression le = (LiteralExpression) expression;
+ argName = le.arg.value;
+ annotation = le.annotation;
+ } else if (expression instanceof VariableExpression) {
+ VariableExpression ve = (VariableExpression) expression;
+ // ...{$foo :bar opt1=|str| opt2=$x opt3=$y}...
+ // .input {$foo :number} => declares `foo`, if already declared is an error
+ // .local $a={$foo} => declares `a`, but only used `foo`, does not declare it
+ argName = ve.arg.name;
+ annotation = ve.annotation;
+ } else if (expression instanceof FunctionExpression) {
+ // ...{$foo :bar opt1=|str| opt2=$x opt3=$y}...
+ FunctionExpression fe = (FunctionExpression) expression;
+ annotation = fe.annotation;
+ }
+
+ if (annotation instanceof FunctionAnnotation) {
+ FunctionAnnotation fa = (FunctionAnnotation) annotation;
+ if (fa.options != null) {
+ for (Option opt : fa.options.values()) {
+ LiteralOrVariableRef val = opt.value;
+ if (val instanceof VariableRef) {
+ // We had something like {:f option=$val}, it means we's seen `val`
+ // It is not a declaration, so not an error.
+ addVariableDeclaration(((VariableRef) val).name);
+ }
+ }
+ }
+ }
+
+ // We chech the argument name after options to prevent errors like this:
+ // .local $foo = {$a :b option=$foo}
+ if (argName != null) {
+ // if we come from `.input {$foo :function}` then `varName` is null
+ // and `argName` is `foo`
+ if (fromInput) {
+ addVariableDeclaration(argName);
+ } else {
+ // Remember that we've seen it, to complain if there is a declaration later
+ declaredVars.add(argName);
+ }
+ }
+ }
+
+ private boolean addVariableDeclaration(String varName) throws MFParseException {
+ if (declaredVars.contains(varName)) {
+ error("Variable '" + varName + "' already declared");
+ return false;
+ }
+ declaredVars.add(varName);
+ return true;
+ }
+
+ private void error(String text) throws MFParseException {
+ throw new MFParseException(text, -1);
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/MFFunctionRegistry.java b/android_icu4j/src/main/java/android/icu/message2/MFFunctionRegistry.java
new file mode 100644
index 000000000..4269f09e5
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/MFFunctionRegistry.java
@@ -0,0 +1,349 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * This class is used to register mappings between various function
+ * names and the factories that can create those functions.
+ *
+ * <p>For example to add formatting for a {@code Person} object one would need to:</p>
+ * <ul>
+ * <li>write a function (class, lambda, etc.) that does the formatting proper
+ * (implementing {@link Formatter})</li>
+ * <li>write a factory that creates such a function
+ * (implementing {@link FormatterFactory})</li>
+ * <li>add a mapping from the function name as used in the syntax
+ * (for example {@code "person"}) to the factory</li>
+ * <li>optionally add a mapping from the class to format ({@code ...Person.class}) to
+ * the formatter name ({@code "person"}), so that one can use a placeholder in the message
+ * without specifying a function (for example {@code "... {$me} ..."} instead of
+ * {@code "... {$me :person} ..."}, if the class of {@code $me} is an {@code instanceof Person}).
+ * </li>
+ * </ul>
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+@Deprecated
+public class MFFunctionRegistry {
+ private final Map<String, FormatterFactory> formattersMap;
+ private final Map<String, SelectorFactory> selectorsMap;
+ private final Map<Class<?>, String> classToFormatter;
+
+ private MFFunctionRegistry(Builder builder) {
+ this.formattersMap = new HashMap<>(builder.formattersMap);
+ this.selectorsMap = new HashMap<>(builder.selectorsMap);
+ this.classToFormatter = new HashMap<>(builder.classToFormatter);
+ }
+
+ /**
+ * Creates a builder.
+ *
+ * @return the Builder.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Returns the formatter factory used to create the formatter for function
+ * named {@code name}.
+ *
+ * <p>Note: function name here means the name used to refer to the function in the
+ * MessageFormat 2 syntax, for example {@code "... {$exp :datetime} ..."}<br>
+ * The function name here is {@code "datetime"}, and does not have to correspond to the
+ * name of the methods / classes used to implement the functionality.</p>
+ *
+ * <p>For example one might write a {@code PersonFormatterFactory} returning a {@code PersonFormatter},
+ * and map that to the MessageFormat function named {@code "person"}.<br>
+ * The only name visible to the users of MessageFormat syntax will be {@code "person"}.</p>
+ *
+ * @param formatterName the function name.
+ * @return the factory creating formatters for {@code name}. Returns {@code null} if none is registered.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public FormatterFactory getFormatter(String formatterName) {
+ return formattersMap.get(formatterName);
+ }
+
+ /**
+ * Get all know names that have a mappings from name to {@link FormatterFactory}.
+ *
+ * @return a set of all the known formatter names.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Set<String> getFormatterNames() {
+ return formattersMap.keySet();
+ }
+
+ /**
+ * Returns the name of the formatter used to format an object of type {@code clazz}.
+ *
+ * @param clazz the class of the object to format.
+ * @return the name of the formatter class, if registered. Returns {@code null} otherwise.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public String getDefaultFormatterNameForType(Class<?> clazz) {
+ // Search for the class "as is", to save time.
+ // If we don't find it then we iterate the registered classes and check
+ // if the class is an instanceof the ones registered.
+ // For example a BuddhistCalendar when we only registered Calendar
+ String result = classToFormatter.get(clazz);
+ if (result != null) {
+ return result;
+ }
+ // We didn't find the class registered explicitly "as is"
+ for (Map.Entry<Class<?>, String> e : classToFormatter.entrySet()) {
+ if (e.getKey().isAssignableFrom(clazz)) {
+ return e.getValue();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Get all know classes that have a mappings from class to function name.
+ *
+ * @return a set of all the known classes that have mapping to function names.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Set<Class<?>> getDefaultFormatterTypes() {
+ return classToFormatter.keySet();
+ }
+
+ /**
+ * Returns the selector factory used to create the selector for function
+ * named {@code name}.
+ *
+ * <p>Note: the same comments about naming as the ones on {@code getFormatter} apply.</p>
+ *
+ * @param selectorName the selector name.
+ * @return the factory creating selectors for {@code name}. Returns {@code null} if none is registered.
+ * @see #getFormatter(String)
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public SelectorFactory getSelector(String selectorName) {
+ return selectorsMap.get(selectorName);
+ }
+
+ /**
+ * Get all know names that have a mappings from name to {@link SelectorFactory}.
+ *
+ * @return a set of all the known selector names.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Set<String> getSelectorNames() {
+ return selectorsMap.keySet();
+ }
+
+ /**
+ * A {@code Builder} used to build instances of {@link MFFunctionRegistry}.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static class Builder {
+ private final Map<String, FormatterFactory> formattersMap = new HashMap<>();
+ private final Map<String, SelectorFactory> selectorsMap = new HashMap<>();
+ private final Map<Class<?>, String> classToFormatter = new HashMap<>();
+
+ // Prevent direct creation
+ private Builder() {}
+
+ /**
+ * Adds all the mapping from another registry to this one.
+ *
+ * @param functionRegistry the registry to copy from.
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder addAll(MFFunctionRegistry functionRegistry) {
+ formattersMap.putAll(functionRegistry.formattersMap);
+ selectorsMap.putAll(functionRegistry.selectorsMap);
+ classToFormatter.putAll(functionRegistry.classToFormatter);
+ return this;
+ }
+
+ /**
+ * Adds a mapping from a formatter name to a {@link FormatterFactory}.
+ *
+ * @param formatterName the function name (as used in the MessageFormat 2 syntax).
+ * @param formatterFactory the factory that handles the name.
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder setFormatter(String formatterName, FormatterFactory formatterFactory) {
+ formattersMap.put(formatterName, formatterFactory);
+ return this;
+ }
+
+ /**
+ * Remove the formatter associated with the name.
+ *
+ * @param formatterName the name of the formatter to remove.
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder removeFormatter(String formatterName) {
+ formattersMap.remove(formatterName);
+ return this;
+ }
+
+ /**
+ * Remove all the formatter mappings.
+ *
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder clearFormatters() {
+ formattersMap.clear();
+ return this;
+ }
+
+ /**
+ * Adds a mapping from a type to format to a {@link FormatterFactory} formatter name.
+ *
+ * @param clazz the class of the type to format.
+ * @param formatterName the formatter name (as used in the MessageFormat 2 syntax).
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder setDefaultFormatterNameForType(Class<?> clazz, String formatterName) {
+ classToFormatter.put(clazz, formatterName);
+ return this;
+ }
+
+ /**
+ * Remove the function name associated with the class.
+ *
+ * @param clazz the class to remove the mapping for.
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder removeDefaultFormatterNameForType(Class<?> clazz) {
+ classToFormatter.remove(clazz);
+ return this;
+ }
+
+ /**
+ * Remove all the class to formatter-names mappings.
+ *
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder clearDefaultFormatterNames() {
+ classToFormatter.clear();
+ return this;
+ }
+
+ /**
+ * Adds a mapping from a selector name to a {@link SelectorFactory}.
+ *
+ * @param selectorName the function name (as used in the MessageFormat 2 syntax).
+ * @param selectorFactory the factory that handles the name.
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder setSelector(String selectorName, SelectorFactory selectorFactory) {
+ selectorsMap.put(selectorName, selectorFactory);
+ return this;
+ }
+
+ /**
+ * Remove the selector associated with the name.
+ *
+ * @param selectorName the name of the selector to remove.
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder removeSelector(String selectorName) {
+ selectorsMap.remove(selectorName);
+ return this;
+ }
+
+ /**
+ * Remove all the selector mappings.
+ *
+ * @return the builder, for fluent use.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public Builder clearSelectors() {
+ selectorsMap.clear();
+ return this;
+ }
+
+ /**
+ * Builds an instance of {@link MFFunctionRegistry}.
+ *
+ * @return the function registry created.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public MFFunctionRegistry build() {
+ return new MFFunctionRegistry(this);
+ }
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/MFParseException.java b/android_icu4j/src/main/java/android/icu/message2/MFParseException.java
new file mode 100644
index 000000000..bac04c3bd
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/MFParseException.java
@@ -0,0 +1,34 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+import java.text.ParseException;
+
+/**
+ * Used to report parsing errors in {@link MessageFormatter}.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+@Deprecated
+public class MFParseException extends ParseException {
+ private static final long serialVersionUID = -7634219305388292407L;
+
+ /**
+ * Constructs a MFParseException with the specified message and offset.
+ *
+ * @param message the message
+ * @param errorOffset the position where the error is found while parsing.
+ */
+ public MFParseException(String message, int errorOffset) {
+ super(message, errorOffset);
+ }
+
+ @Override
+ public String getMessage() {
+ return super.getMessage();
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/MFParser.java b/android_icu4j/src/main/java/android/icu/message2/MFParser.java
new file mode 100644
index 000000000..efa7b7756
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/MFParser.java
@@ -0,0 +1,789 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * This class parses a {@code MessageFormat 2} syntax into a data model {@link MFDataModel.Message}.
+ *
+ * <p>It is used by {@link MessageFormatter}, but it might be handy for various tools.</p>
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+@Deprecated
+public class MFParser {
+ private static final int EOF = -1;
+ private final InputSource input;
+
+ MFParser(String text) {
+ this.input = new InputSource(text);
+ }
+
+ /**
+ * Parses a {@code MessageFormat 2} syntax into a {@link MFDataModel.Message}.
+ *
+ * <p>It is used by {@link MessageFormatter}, but it might be handy for various tools.</p>
+ * @param input the text to parse
+ * @return the parsed {@code MFDataModel.Message}
+ * @throws MFParseException if errors are detected
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static MFDataModel.Message parse(String input) throws MFParseException {
+ return new MFParser(input).parseImpl();
+ }
+
+ // Parser proper
+ private MFDataModel.Message parseImpl() throws MFParseException {
+ MFDataModel.Message result;
+ int cp = input.peekChar();
+ if (cp == '.') { // declarations or .match
+ result = getComplexMessage();
+ } else if (cp == '{') { // `{` or `{{`
+ cp = input.readCodePoint();
+ cp = input.peekChar();
+ if (cp == '{') { // `{{`, complex body without declarations
+ input.backup(1); // let complexBody deal with the wrapping {{ and }}
+ MFDataModel.Pattern pattern = getQuotedPattern();
+ result = new MFDataModel.PatternMessage(new ArrayList<>(), pattern);
+ } else { // placeholder
+ input.backup(1); // We want the '{' present, to detect the part as placeholder.
+ MFDataModel.Pattern pattern = getPattern();
+ result = new MFDataModel.PatternMessage(new ArrayList<>(), pattern);
+ }
+ } else {
+ MFDataModel.Pattern pattern = getPattern();
+ result = new MFDataModel.PatternMessage(new ArrayList<>(), pattern);
+ }
+ skipOptionalWhitespaces();
+ checkCondition(input.atEnd(), "Content detected after the end of the message.");
+ new MFDataModelValidator(result).validate();
+ return result;
+ }
+
+ // abnf: simple-message = [simple-start pattern]
+ // abnf: simple-start = simple-start-char / text-escape / placeholder
+ // abnf: pattern = *(text-char / text-escape / placeholder)
+ private MFDataModel.Pattern getPattern() throws MFParseException {
+ MFDataModel.Pattern pattern = new MFDataModel.Pattern();
+ while (true) {
+ MFDataModel.PatternPart part = getPatternPart();
+ if (part == null) {
+ break;
+ }
+ pattern.parts.add(part);
+ }
+ // checkCondition(!pattern.parts.isEmpty(), "Empty pattern");
+ return pattern;
+ }
+
+ private MFDataModel.PatternPart getPatternPart() throws MFParseException {
+ int cp = input.peekChar();
+ switch (cp) {
+ case EOF:
+ return null;
+ case '}': // This is the end, otherwise it would be escaped
+ return null;
+ case '{':
+ MFDataModel.Expression ph = getPlaceholder();
+ return ph;
+ default:
+ String plainText = getText();
+ MFDataModel.StringPart sp = new MFDataModel.StringPart(plainText);
+ return sp;
+ }
+ }
+
+ private String getText() {
+ StringBuilder result = new StringBuilder();
+ while (true) {
+ int cp = input.readCodePoint();
+ switch (cp) {
+ case EOF:
+ return result.toString();
+ case '\\':
+ cp = input.readCodePoint();
+ if (cp == '\\' || cp == '{' || cp == '|' | cp == '}') {
+ result.appendCodePoint(cp);
+ } else { // TODO: Error, treat invalid escape?
+ result.appendCodePoint('\\');
+ result.appendCodePoint(cp);
+ }
+ break;
+ case '.':
+ case '@':
+ case '|':
+ result.appendCodePoint(cp);
+ break;
+ default:
+ if (StringUtils.isContentChar(cp) || StringUtils.isWhitespace(cp)) {
+ result.appendCodePoint(cp);
+ } else {
+ input.backup(1);
+ return result.toString();
+ }
+ }
+ }
+ }
+
+ // abnf: placeholder = expression / markup
+ // abnf: expression = literal-expression
+ // abnf: / variable-expression
+ // abnf: / annotation-expression
+ // abnf: literal-expression = "{" [s] literal [s annotation] *(s attribute) [s] "}"
+ // abnf: variable-expression = "{" [s] variable [s annotation] *(s attribute) [s] "}"
+ // abnf: annotation-expression = "{" [s] annotation *(s attribute) [s] "}"
+ // abnf: markup = "{" [s] "#" identifier *(s option) *(s attribute) [s] ["/"] "}" ; open and standalone
+ // abnf: / "{" [s] "/" identifier *(s option) *(s attribute) [s] "}" ; close
+ private MFDataModel.Expression getPlaceholder() throws MFParseException {
+ int cp = input.peekChar();
+ if (cp != '{') {
+ return null;
+ }
+ input.readCodePoint(); // consume the '{'
+ skipOptionalWhitespaces();
+ cp = input.peekChar();
+
+ MFDataModel.Expression result;
+ if (cp == '#' || cp == '/') {
+ result = getMarkup();
+ } else if (cp == '$') {
+ result = getVariableExpression();
+ } else if (StringUtils.isFunctionSigil(cp)
+ || StringUtils.isPrivateAnnotationSigil(cp)
+ || StringUtils.isReservedAnnotationSigil(cp)) {
+ result = getAnnotationExpression();
+ } else {
+ result = getLiteralExpression();
+ }
+
+ skipOptionalWhitespaces();
+ cp = input.readCodePoint(); // consume the '}'
+ checkCondition(cp == '}', "Unclosed placeholder");
+
+ return result;
+ }
+
+ private MFDataModel.Annotation getAnnotation() throws MFParseException {
+ int position = input.getPosition();
+ skipOptionalWhitespaces();
+
+ int cp = input.peekChar();
+ switch (cp) {
+ case '}':
+ return null;
+ case ':': // annotation, function
+ // abnf: function = ":" identifier *(s option)
+ input.readCodePoint(); // Consume the sigil
+ String identifier = getIdentifier();
+ checkCondition(identifier != null, "Annotation / function name missing");
+ Map<String, MFDataModel.Option> options = getOptions();
+ return new MFDataModel.FunctionAnnotation(identifier, options);
+ default: // reserved && private
+ if (StringUtils.isReservedAnnotationSigil(cp)
+ || StringUtils.isPrivateAnnotationSigil(cp)) {
+ cp = input.readCodePoint();
+ // The sigil is part of the body.
+ // Safe to cast to char, the code point is in BMP
+ identifier = (char) cp + getIdentifier();
+ String body = getReservedBody();
+ return new MFDataModel.UnsupportedAnnotation(identifier + body);
+ }
+ }
+ input.gotoPosition(position);
+ return null;
+ }
+
+ private MFDataModel.Annotation getMarkupAnnotation() throws MFParseException {
+ skipOptionalWhitespaces();
+
+ int cp = input.peekChar();
+ switch (cp) {
+ case '}':
+ return null;
+ case '#':
+ case '/':
+ // abnf: markup = "{" [s] "#" identifier *(s option) *(s attribute) [s] ["/"] "}" ; open and standalone
+ // abnf: / "{" [s] "/" identifier *(s option) *(s attribute) [s] "}" ; close
+ input.readCodePoint(); // Consume the sigil
+ String identifier = getIdentifier();
+ checkCondition(identifier != null, "Annotation / function name missing");
+ Map<String, MFDataModel.Option> options = getOptions();
+ return new MFDataModel.FunctionAnnotation(identifier, options);
+ default:
+ // reserved, private, function, something else,
+ return null;
+ }
+ }
+
+ // abnf: literal-expression = "{" [s] literal [s annotation] *(s attribute) [s] "}"
+ private MFDataModel.Expression getLiteralExpression() throws MFParseException {
+ MFDataModel.Literal literal = getLiteral();
+ checkCondition(literal != null, "Literal expression expected.");
+
+ MFDataModel.Annotation annotation = null;
+ int wsCount = skipWhitespaces();
+ if (wsCount > 0) { // we might have an annotation
+ annotation = getAnnotation();
+ if (annotation == null) {
+ // We had some spaces, but no annotation.
+ // So we put (some) back for the possible attributes.
+ input.backup(1);
+ }
+ }
+
+ List<MFDataModel.Attribute> attributes = getAttributes();
+
+ // Literal without a function, for example {|hello|} or {123}
+ return new MFDataModel.LiteralExpression(literal, annotation, attributes);
+ }
+
+ // abnf: variable-expression = "{" [s] variable [s annotation] *(s attribute) [s] "}"
+ private MFDataModel.VariableExpression getVariableExpression() throws MFParseException {
+ MFDataModel.VariableRef variableRef = getVariableRef();
+ MFDataModel.Annotation annotation = getAnnotation();
+ List<MFDataModel.Attribute> attributes = getAttributes();
+ // Variable without a function, for example {$foo}
+ return new MFDataModel.VariableExpression(variableRef, annotation, attributes);
+ }
+
+ // abnf: annotation-expression = "{" [s] annotation *(s attribute) [s] "}"
+ private MFDataModel.Expression getAnnotationExpression() throws MFParseException {
+ MFDataModel.Annotation annotation = getAnnotation();
+ List<MFDataModel.Attribute> attributes = getAttributes();
+
+ if (annotation instanceof MFDataModel.FunctionAnnotation) {
+ return new MFDataModel.FunctionExpression(
+ (MFDataModel.FunctionAnnotation) annotation, attributes);
+ } else if (annotation instanceof MFDataModel.UnsupportedAnnotation) {
+ return new MFDataModel.UnsupportedExpression(
+ (MFDataModel.UnsupportedAnnotation) annotation, attributes);
+ } else {
+ error("Unexpected annotation : " + annotation);
+ }
+ return null;
+ }
+
+ // abnf: markup = "{" [s] "#" identifier *(s option) *(s attribute) [s] ["/"] "}" ; open and standalone
+ // abnf: / "{" [s] "/" identifier *(s option) *(s attribute) [s] "}" ; close
+ private MFDataModel.Markup getMarkup() throws MFParseException {
+ int cp = input.peekChar(); // consume the '{'
+ checkCondition(cp == '#' || cp == '/', "Should not happen. Expecting a markup.");
+
+ MFDataModel.Markup.Kind kind =
+ cp == '/' ? MFDataModel.Markup.Kind.CLOSE : MFDataModel.Markup.Kind.OPEN;
+
+ MFDataModel.Annotation annotation = getMarkupAnnotation();
+ List<MFDataModel.Attribute> attributes = getAttributes();
+
+ cp = input.peekChar();
+ if (cp == '/') {
+ kind = MFDataModel.Markup.Kind.STANDALONE;
+ input.readCodePoint();
+ }
+
+ if (annotation instanceof MFDataModel.FunctionAnnotation) {
+ MFDataModel.FunctionAnnotation fa = (MFDataModel.FunctionAnnotation) annotation;
+ return new MFDataModel.Markup(kind, fa.name, fa.options, attributes);
+ }
+
+ return null;
+ }
+
+ private List<MFDataModel.Attribute> getAttributes() throws MFParseException {
+ List<MFDataModel.Attribute> result = new ArrayList<>();
+ while (true) {
+ MFDataModel.Attribute attribute = getAttribute();
+ if (attribute == null) {
+ break;
+ }
+ result.add(attribute);
+ }
+ return result;
+ }
+
+ // abnf: attribute = "@" identifier [[s] "=" [s] (literal / variable)]
+ private MFDataModel.Attribute getAttribute() throws MFParseException {
+ int position = input.getPosition();
+ if (skipWhitespaces() == 0) {
+ input.gotoPosition(position);
+ return null;
+ }
+ int cp = input.peekChar();
+ if (cp == '@') {
+ input.readCodePoint(); // consume the '@'
+ String id = getIdentifier();
+ int wsCount = skipWhitespaces();
+ cp = input.peekChar();
+ MFDataModel.LiteralOrVariableRef literalOrVariable = null;
+ if (cp == '=') {
+ input.readCodePoint();
+ skipOptionalWhitespaces();
+ literalOrVariable = getLiteralOrVariableRef();
+ checkCondition(literalOrVariable != null, "Attributes must have a value after `=`");
+ } else {
+ // was not equal, attribute without a value, put the "spaces" back.
+ input.backup(wsCount);
+ }
+ return new MFDataModel.Attribute(id, literalOrVariable);
+ } else {
+ input.gotoPosition(position);
+ }
+ return null;
+ }
+
+ // abnf: reserved-body = *([s] 1*(reserved-char / reserved-escape / quoted))
+ // abnf: reserved-escape = backslash ( backslash / "{" / "|" / "}" )
+ private String getReservedBody() throws MFParseException {
+ int spaceCount = skipWhitespaces();
+ StringBuilder result = new StringBuilder();
+ while (true) {
+ int cp = input.readCodePoint();
+ if (StringUtils.isReservedChar(cp)) {
+ result.appendCodePoint(cp);
+ } else if (cp == '\\') {
+ cp = input.readCodePoint();
+ checkCondition(
+ cp == '{' || cp == '|' || cp == '}',
+ "Invalid escape sequence. Only \\{, \\| and \\} are valid here.");
+ result.append(cp);
+ } else if (cp == '|') {
+ input.backup(1);
+ MFDataModel.Literal quoted = getQuotedLiteral();
+ result.append(quoted.value);
+ } else if (cp == EOF) {
+ return result.toString();
+ } else {
+ if (result.length() == 0) {
+ input.backup(spaceCount + 1);
+ return "";
+ } else {
+ input.backup(1);
+ return result.toString();
+ }
+ }
+ }
+ }
+
+ // abnf: identifier = [namespace ":"] name
+ // abnf: namespace = name
+ // abnf: name = name-start *name-char
+ private String getIdentifier() throws MFParseException {
+ String namespace = getName();
+ if (namespace == null) {
+ return null;
+ }
+ int cp = input.readCodePoint();
+ if (cp == ':') { // the previous name was namespace
+ String name = getName();
+ checkCondition(name != null, "Expected name after namespace '" + namespace + "'");
+ return namespace + ":" + name;
+ } else {
+ input.backup(1);
+ }
+ return namespace;
+ }
+
+ // abnf helper: *(s option)
+ private Map<String, MFDataModel.Option> getOptions() throws MFParseException {
+ Map<String, MFDataModel.Option> options = new LinkedHashMap<>();
+ while (true) {
+ MFDataModel.Option option = getOption();
+ if (option == null) {
+ break;
+ }
+ if (options.containsKey(option.name)) {
+ error("Duplicated option '" + option.name + "'");
+ }
+ options.put(option.name, option);
+ }
+ return options;
+ }
+
+ // abnf: option = identifier [s] "=" [s] (literal / variable)
+ private MFDataModel.Option getOption() throws MFParseException {
+ int position = input.getPosition();
+ skipOptionalWhitespaces();
+ String identifier = getIdentifier();
+ if (identifier == null) {
+ input.gotoPosition(position);
+ return null;
+ }
+ skipOptionalWhitespaces();
+ int cp = input.readCodePoint();
+ checkCondition(cp == '=', "Expected '='");
+ // skipOptionalWhitespaces();
+ MFDataModel.LiteralOrVariableRef litOrVar = getLiteralOrVariableRef();
+ if (litOrVar == null) {
+ error("Options must have a value. An empty string should be quoted.");
+ }
+ return new MFDataModel.Option(identifier, litOrVar);
+ }
+
+ private MFDataModel.LiteralOrVariableRef getLiteralOrVariableRef() throws MFParseException {
+ int cp = input.peekChar();
+ if (cp == '$') {
+ return getVariableRef();
+ }
+ return getLiteral();
+ }
+
+ // abnf: literal = quoted / unquoted
+ private MFDataModel.Literal getLiteral() throws MFParseException {
+ int cp = input.readCodePoint();
+ switch (cp) {
+ case '|': // quoted
+ // abnf: quoted = "|" *(quoted-char / quoted-escape) "|"
+ input.backup(1);
+ MFDataModel.Literal ql = getQuotedLiteral();
+ return ql;
+ default: // unquoted
+ input.backup(1);
+ MFDataModel.Literal unql = getUnQuotedLiteral();
+ return unql;
+ }
+ }
+
+ private MFDataModel.VariableRef getVariableRef() throws MFParseException {
+ int cp = input.readCodePoint();
+ if (cp != '$') {
+ checkCondition(cp == '$', "We can't get here");
+ }
+
+ // abnf: variable = "$" name
+ String name = getName();
+ checkCondition(name != null, "Invalid variable reference following $");
+ return new MFDataModel.VariableRef(name);
+ }
+
+ private MFDataModel.Literal getQuotedLiteral() throws MFParseException {
+ StringBuilder result = new StringBuilder();
+ int cp = input.readCodePoint();
+ checkCondition(cp == '|', "expected starting '|'");
+ while (true) {
+ cp = input.readCodePoint();
+ if (cp == EOF) {
+ break;
+ } else if (StringUtils.isQuotedChar(cp)) {
+ result.appendCodePoint(cp);
+ } else if (cp == '\\') {
+ cp = input.readCodePoint();
+ checkCondition(cp == '|', "Invalid escape sequence, only \"\\|\" is valid here");
+ result.appendCodePoint('|');
+ } else {
+ break;
+ }
+ }
+
+ checkCondition(cp == '|', "expected ending '|'");
+
+ return new MFDataModel.Literal(result.toString());
+ }
+
+ private MFDataModel.Literal getUnQuotedLiteral() throws MFParseException {
+ String name = getName();
+ if (name != null) {
+ return new MFDataModel.Literal(name);
+ }
+ return getNumberLiteral();
+ }
+
+ // abnf: ; number-literal matches JSON number (https://www.rfc-editor.org/rfc/rfc8259#section-6)
+ // abnf: number-literal = ["-"] (%x30 / (%x31-39 *DIGIT)) ["." 1*DIGIT] [%i"e" ["-" / "+"] 1*DIGIT]
+ private static final Pattern RE_NUMBER_LITERAL =
+ Pattern.compile("^-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+\\-]?[0-9]+)?");
+
+ private MFDataModel.Literal getNumberLiteral() {
+ String numberString = peekWithRegExp(RE_NUMBER_LITERAL);
+ if (numberString != null) {
+ return new MFDataModel.Literal(numberString);
+ }
+ return null;
+ }
+
+ private void skipMandatoryWhitespaces() throws MFParseException {
+ int count = skipWhitespaces();
+ checkCondition(count > 0, "Space expected");
+ }
+
+ private void skipOptionalWhitespaces() {
+ skipWhitespaces();
+ }
+
+ private int skipWhitespaces() {
+ int skipCount = 0;
+ while (true) {
+ int cp = input.readCodePoint();
+ if (cp == EOF) {
+ return skipCount;
+ }
+ if (!StringUtils.isWhitespace(cp)) {
+ input.backup(1);
+ return skipCount;
+ }
+ skipCount++;
+ }
+ }
+
+ private MFDataModel.Message getComplexMessage() throws MFParseException {
+ List<MFDataModel.Declaration> declarations = new ArrayList<>();
+ boolean foundMatch = false;
+ while (true) {
+ MFDataModel.Declaration declaration = getDeclaration();
+ if (declaration == null) {
+ break;
+ }
+ if (declaration instanceof MatchDeclaration) {
+ foundMatch = true;
+ break;
+ }
+ declarations.add(declaration);
+ }
+ if (foundMatch) {
+ return getMatch(declarations);
+ } else { // Expect {{...}} or end of message
+ skipOptionalWhitespaces();
+ int cp = input.peekChar();
+ if (cp == EOF) {
+ // Only declarations, no pattern
+ return new MFDataModel.PatternMessage(declarations, null);
+ } else {
+ MFDataModel.Pattern pattern = getQuotedPattern();
+ return new MFDataModel.PatternMessage(declarations, pattern);
+ }
+ }
+ }
+
+ // abnf: matcher = match-statement 1*([s] variant)
+ // abnf: match-statement = match 1*([s] selector)
+ // abnf: selector = expression
+ // abnf: variant = key *(s key) [s] quoted-pattern
+ // abnf: key = literal / "*"
+ // abnf: match = %s".match"
+ private MFDataModel.SelectMessage getMatch(List<MFDataModel.Declaration> declarations)
+ throws MFParseException {
+ // ".match" was already consumed by the caller
+ // Look for selectors
+ List<MFDataModel.Expression> expressions = new ArrayList<>();
+ while (true) {
+ skipMandatoryWhitespaces();
+ MFDataModel.Expression expression = getPlaceholder();
+ if (expression == null) {
+ break;
+ }
+ checkCondition(
+ !(expression instanceof MFDataModel.Markup), "Cannot do selection on markup");
+ expressions.add(expression);
+ }
+
+ checkCondition(!expressions.isEmpty(), "There should be at least one selector expression.");
+
+ // At this point we need to look for variants, which are key - value
+ List<MFDataModel.Variant> variants = new ArrayList<>();
+ while (true) {
+ MFDataModel.Variant variant = getVariant();
+ if (variant == null) {
+ break;
+ }
+ variants.add(variant);
+ }
+ return new MFDataModel.SelectMessage(declarations, expressions, variants);
+ }
+
+ // abnf: variant = key *(s key) [s] quoted-pattern
+ // abnf: key = literal / "*"
+ private MFDataModel.Variant getVariant() throws MFParseException {
+ List<MFDataModel.LiteralOrCatchallKey> keys = new ArrayList<>();
+ // abnf variant = key *(s key) [s] quoted-pattern
+ while (true) {
+ // Space is required between keys
+ MFDataModel.LiteralOrCatchallKey key = getKey(!keys.isEmpty());
+ if (key == null) {
+ break;
+ }
+ keys.add(key);
+ }
+ skipOptionalWhitespaces();
+ if (input.atEnd()) {
+ checkCondition(
+ keys.isEmpty(), "After selector keys it is mandatory to have a pattern.");
+ return null;
+ }
+ MFDataModel.Pattern pattern = getQuotedPattern();
+ return new MFDataModel.Variant(keys, pattern);
+ }
+
+ private MFDataModel.LiteralOrCatchallKey getKey(boolean requireSpaces) throws MFParseException {
+ if (requireSpaces) {
+ skipMandatoryWhitespaces();
+ } else {
+ skipOptionalWhitespaces();
+ }
+ int cp = input.peekChar();
+ if (cp == '*') {
+ input.readCodePoint(); // consume the '*'
+ return new MFDataModel.CatchallKey();
+ }
+ if (cp == EOF) {
+ return null;
+ }
+ return getLiteral();
+ }
+
+ private static class MatchDeclaration implements MFDataModel.Declaration {
+ // Provides a common type that extends MFDataModel.Declaration but for match.
+ // There is no such thing in the data model.
+ }
+
+ // abnf: input-declaration = input [s] variable-expression
+ // abnf: local-declaration = local s variable [s] "=" [s] expression
+ // abnf: reserved-statement = reserved-keyword [s reserved-body] 1*([s] expression)
+ // abnf: reserved-keyword = "." name
+ private MFDataModel.Declaration getDeclaration() throws MFParseException {
+ int position = input.getPosition();
+ skipOptionalWhitespaces();
+ int cp = input.readCodePoint();
+ if (cp != '.') {
+ input.gotoPosition(position);
+ return null;
+ }
+ String declName = getName();
+ checkCondition(declName != null, "Expected a declaration after the '.'");
+
+ MFDataModel.Expression expression;
+ switch (declName) {
+ case "input":
+ skipMandatoryWhitespaces();
+ expression = getPlaceholder();
+ String inputVarName = null;
+ if (expression instanceof MFDataModel.VariableExpression) {
+ inputVarName = ((MFDataModel.VariableExpression) expression).arg.name;
+ }
+ if (expression instanceof MFDataModel.VariableExpression) {
+ return new MFDataModel.InputDeclaration(
+ inputVarName, (MFDataModel.VariableExpression) expression);
+ }
+ break;
+ case "local":
+ // abnf: local-declaration = local s variable [s] "=" [s] expression
+ skipMandatoryWhitespaces();
+ MFDataModel.LiteralOrVariableRef varName = getVariableRef();
+ skipOptionalWhitespaces();
+ cp = input.readCodePoint();
+ checkCondition(cp == '=', declName);
+ skipOptionalWhitespaces();
+ expression = getPlaceholder();
+ if (varName instanceof MFDataModel.VariableRef) {
+ return new MFDataModel.LocalDeclaration(
+ ((MFDataModel.VariableRef) varName).name, expression);
+ }
+ break;
+ case "match":
+ return new MatchDeclaration();
+ default: // abnf: reserved-statement = reserved-keyword [s reserved-body] 1*([s] expression)
+ skipOptionalWhitespaces();
+ String body = getReservedBody();
+ List<MFDataModel.Expression> expressions = new ArrayList<>();
+ while (true) {
+ skipOptionalWhitespaces();
+ expression = getPlaceholder();
+ // This also covers != null
+ if (expression instanceof MFDataModel.VariableExpression) {
+ expressions.add(expression);
+ } else {
+ break;
+ }
+ }
+ return new MFDataModel.UnsupportedStatement(declName, body, expressions);
+ }
+ return null;
+ }
+
+ // quoted-pattern = "{{" pattern "}}"
+ private MFDataModel.Pattern getQuotedPattern() throws MFParseException { // {{ ... }}
+ int cp = input.readCodePoint();
+ checkCondition(cp == '{', "Expected { for a complex body");
+ cp = input.readCodePoint();
+ checkCondition(cp == '{', "Expected second { for a complex body");
+ MFDataModel.Pattern pattern = getPattern();
+ cp = input.readCodePoint();
+ checkCondition(cp == '}', "Expected } to end a complex body");
+ cp = input.readCodePoint();
+ checkCondition(cp == '}', "Expected second } to end a complex body");
+ return pattern;
+ }
+
+ private String getName() throws MFParseException {
+ StringBuilder result = new StringBuilder();
+ int cp = input.readCodePoint();
+ checkCondition(cp != EOF, "Expected name or namespace.");
+ if (!StringUtils.isNameStart(cp)) {
+ input.backup(1);
+ return null;
+ }
+ result.appendCodePoint(cp);
+ while (true) {
+ cp = input.readCodePoint();
+ if (StringUtils.isNameChar(cp)) {
+ result.appendCodePoint(cp);
+ } else if (cp == EOF) {
+ break;
+ } else {
+ input.backup(1);
+ break;
+ }
+ }
+ return result.toString();
+ }
+
+ private void checkCondition(boolean condition, String message) throws MFParseException {
+ if (!condition) {
+ error(message);
+ }
+ }
+
+ private void error(String message) throws MFParseException {
+ StringBuilder finalMsg = new StringBuilder();
+ if (input == null) {
+ finalMsg.append("Parse error: ");
+ finalMsg.append(message);
+ } else {
+ int position = input.getPosition();
+ finalMsg.append("Parse error [" + input.getPosition() + "]: ");
+ finalMsg.append(message);
+ finalMsg.append("\n");
+ if (position != EOF) {
+ finalMsg.append(input.buffer.substring(0, position));
+ finalMsg.append("^^^");
+ finalMsg.append(input.buffer.substring(position));
+ } else {
+ finalMsg.append(input.buffer);
+ finalMsg.append("^^^");
+ }
+ }
+ throw new MFParseException(finalMsg.toString(), input.getPosition());
+ }
+
+ private String peekWithRegExp(Pattern pattern) {
+ StringView sv = new StringView(input.buffer, input.getPosition());
+ Matcher m = pattern.matcher(sv);
+ boolean found = m.find();
+ if (found) {
+ input.skip(m.group().length());
+ return m.group();
+ }
+ return null;
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/MFSerializer.java b/android_icu4j/src/main/java/android/icu/message2/MFSerializer.java
new file mode 100644
index 000000000..e2079996f
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/MFSerializer.java
@@ -0,0 +1,382 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+
+import android.icu.message2.MFDataModel.Annotation;
+import android.icu.message2.MFDataModel.Attribute;
+import android.icu.message2.MFDataModel.CatchallKey;
+import android.icu.message2.MFDataModel.Declaration;
+import android.icu.message2.MFDataModel.Expression;
+import android.icu.message2.MFDataModel.FunctionAnnotation;
+import android.icu.message2.MFDataModel.FunctionExpression;
+import android.icu.message2.MFDataModel.InputDeclaration;
+import android.icu.message2.MFDataModel.Literal;
+import android.icu.message2.MFDataModel.LiteralExpression;
+import android.icu.message2.MFDataModel.LiteralOrCatchallKey;
+import android.icu.message2.MFDataModel.LiteralOrVariableRef;
+import android.icu.message2.MFDataModel.LocalDeclaration;
+import android.icu.message2.MFDataModel.Markup;
+import android.icu.message2.MFDataModel.Option;
+import android.icu.message2.MFDataModel.Pattern;
+import android.icu.message2.MFDataModel.PatternMessage;
+import android.icu.message2.MFDataModel.PatternPart;
+import android.icu.message2.MFDataModel.SelectMessage;
+import android.icu.message2.MFDataModel.StringPart;
+import android.icu.message2.MFDataModel.UnsupportedAnnotation;
+import android.icu.message2.MFDataModel.UnsupportedExpression;
+import android.icu.message2.MFDataModel.UnsupportedStatement;
+import android.icu.message2.MFDataModel.VariableExpression;
+import android.icu.message2.MFDataModel.VariableRef;
+import android.icu.message2.MFDataModel.Variant;
+
+/**
+ * This class serializes a MessageFormat 2 data model {@link MFDataModel.Message} to a string,
+ * with the proper MessageFormat 2 syntax.
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+@Deprecated
+public class MFSerializer {
+ private boolean shouldDoubleQuotePattern = false;
+ private boolean needSpace = false;
+ private final StringBuilder result = new StringBuilder();
+
+ /**
+ * Method converting the {@link MFDataModel.Message} to a string in MessageFormat 2 syntax.
+ *
+ * <p>The result is not necessarily identical with the original string parsed to generate
+ * the data model. But is is functionally equivalent.</p>
+ *
+ * @param message the data model message to serialize
+ * @return the serialized message, in MessageFormat 2 syntax
+ *
+ * @deprecated This API is for technology preview only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ public static String dataModelToString(MFDataModel.Message message) {
+ return new MFSerializer().messageToString(message);
+ }
+
+ private String messageToString(MFDataModel.Message message) {
+ if (message instanceof PatternMessage) {
+ patternMessageToString((PatternMessage) message);
+ } else if (message instanceof SelectMessage) {
+ selectMessageToString((SelectMessage) message);
+ } else {
+ errorType("Message", message);
+ }
+ return result.toString();
+ }
+
+ private void selectMessageToString(SelectMessage message) {
+ declarationsToString(message.declarations);
+ shouldDoubleQuotePattern = true;
+ addSpaceIfNeeded();
+ result.append(".match");
+ for (Expression selector : message.selectors) {
+ result.append(' ');
+ expressionToString(selector);
+ }
+ for (Variant variant : message.variants) {
+ variantToString(variant);
+ }
+ }
+
+ private void patternMessageToString(PatternMessage message) {
+ declarationsToString(message.declarations);
+ patternToString(message.pattern);
+ }
+
+ private void patternToString(Pattern pattern) {
+ addSpaceIfNeeded();
+ if (shouldDoubleQuotePattern) {
+ result.append("{{");
+ }
+ for (PatternPart part : pattern.parts) {
+ if (part instanceof StringPart) {
+ stringPartToString((StringPart) part);
+ } else {
+ expressionToString((Expression) part);
+ }
+ }
+ if (shouldDoubleQuotePattern) {
+ result.append("}}");
+ }
+ }
+
+ private void expressionToString(Expression expression) {
+ if (expression == null) {
+ return;
+ }
+ if (expression instanceof LiteralExpression) {
+ literalExpressionToString((LiteralExpression) expression);
+ } else if (expression instanceof VariableExpression) {
+ variableExpressionToString((VariableExpression) expression);
+ } else if (expression instanceof FunctionExpression) {
+ functionExpressionToString((FunctionExpression) expression);
+ } else if (expression instanceof Markup) {
+ markupToString((Markup) expression);
+ } else if (expression instanceof UnsupportedExpression) {
+ unsupportedExpressionToString((UnsupportedExpression) expression);
+ } else {
+ errorType("Expression", expression);
+ }
+ }
+
+ private void unsupportedExpressionToString(UnsupportedExpression ue) {
+ result.append('{');
+ annotationToString(ue.annotation);
+ attributesToString(ue.attributes);
+ result.append('}');
+ }
+
+ private void markupToString(Markup markup) {
+ result.append('{');
+ if (markup.kind == Markup.Kind.CLOSE) {
+ result.append('/');
+ } else {
+ result.append('#');
+ }
+ result.append(markup.name);
+ optionsToString(markup.options);
+ attributesToString(markup.attributes);
+ if (markup.kind == Markup.Kind.STANDALONE) {
+ result.append('/');
+ }
+ result.append('}');
+ }
+
+ private void optionsToString(Map<String, Option> options) {
+ for (Option option : options.values()) {
+ result.append(' ');
+ result.append(option.name);
+ result.append('=');
+ literalOrVariableRefToString(option.value);
+ }
+ }
+
+ private void functionExpressionToString(FunctionExpression fe) {
+ result.append('{');
+ annotationToString(fe.annotation);
+ attributesToString(fe.attributes);
+ result.append('}');
+ }
+
+ private void attributesToString(List<Attribute> attributes) {
+ if (attributes == null) {
+ return;
+ }
+ for (Attribute attribute : attributes) {
+ result.append(" @");
+ result.append(attribute.name);
+ // Attributes can be with without a value (for now?)
+ if (attribute.value != null) {
+ result.append('=');
+ literalOrVariableRefToString(attribute.value);
+ }
+ }
+ }
+
+ private void annotationToString(Annotation annotation) {
+ if (annotation == null) {
+ return;
+ }
+ if (annotation instanceof FunctionAnnotation) {
+ addSpaceIfNeeded();
+ result.append(":");
+ result.append(((FunctionAnnotation) annotation).name);
+ optionsToString(((FunctionAnnotation) annotation).options);
+ } else if (annotation instanceof UnsupportedAnnotation) {
+ addSpaceIfNeeded();
+ String value = ((UnsupportedAnnotation) annotation).source;
+ for (int i = 0; i < value.length(); i++) {
+ char c = value.charAt(i);
+ if (c == '\\' || c == '{' || c == '}') {
+ result.append('\\');
+ }
+ result.append(c);
+ }
+ } else {
+ errorType("Annotation", annotation);
+ }
+ }
+
+ private void variableExpressionToString(VariableExpression ve) {
+ if (ve == null) {
+ return;
+ }
+ result.append('{');
+ literalOrVariableRefToString(ve.arg);
+ needSpace = true;
+ annotationToString(ve.annotation);
+ attributesToString(ve.attributes);
+ result.append('}');
+ needSpace = false;
+ }
+
+ private void literalOrVariableRefToString(LiteralOrVariableRef literalOrVarRef) {
+ if (literalOrVarRef instanceof Literal) {
+ literalToString((Literal) literalOrVarRef);
+ } else if (literalOrVarRef instanceof VariableRef) {
+ result.append("$" + ((VariableRef) literalOrVarRef).name);
+ } else {
+ errorType("LiteralOrVariableRef", literalOrVarRef);
+ }
+ }
+
+ // abnf: number-literal = ["-"] (%x30 / (%x31-39 *DIGIT)) ["." 1*DIGIT]
+ // [%i"e" ["-" / "+"] 1*DIGIT]
+ // Not identical to the one in the parser. This one has a $ at the end, to
+ // match the whole string
+ // TBD if it can be refactored to reuse.
+ private static final java.util.regex.Pattern RE_NUMBER_LITERAL =
+ java.util.regex.Pattern.compile("^-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+\\-]?[0-9]+)?$");
+
+ private void literalToString(Literal literal) {
+ String value = literal.value;
+ Matcher matcher = RE_NUMBER_LITERAL.matcher(value);
+ if (matcher.find()) { // It is a number, output as is
+ result.append(value);
+ } else {
+ StringBuilder literalBuffer = new StringBuilder();
+ boolean wasName = true;
+ for (int i = 0; i < value.length(); i++) {
+ char c = value.charAt(i);
+ if (c == '\\' || c == '|') {
+ literalBuffer.append('\\');
+ }
+ literalBuffer.append(c);
+ if (i == 0 && !StringUtils.isNameStart(c)) {
+ wasName = false;
+ } else if (!StringUtils.isNameChar(c)) {
+ wasName = false;
+ }
+ }
+ if (wasName && literalBuffer.length() != 0) {
+ result.append(literalBuffer);
+ } else {
+ result.append('|');
+ result.append(literalBuffer);
+ result.append('|');
+ }
+ }
+ }
+
+ private void literalExpressionToString(LiteralExpression le) {
+ result.append('{');
+ literalOrVariableRefToString(le.arg);
+ needSpace = true;
+ annotationToString(le.annotation);
+ attributesToString(le.attributes);
+ result.append('}');
+ }
+
+ private void stringPartToString(StringPart part) {
+ if (part.value.startsWith(".")) {
+ if (!shouldDoubleQuotePattern) {
+ shouldDoubleQuotePattern = true;
+ result.append("{{");
+ }
+ }
+ for (int i = 0; i < part.value.length(); i++) {
+ char c = part.value.charAt(i);
+ if (c == '\\' || c == '{' || c == '}') {
+ result.append('\\');
+ }
+ result.append(c);
+ }
+ }
+
+ private void declarationsToString(List<Declaration> declarations) {
+ if (declarations == null || declarations.isEmpty()) {
+ return;
+ }
+ shouldDoubleQuotePattern = true;
+ for (Declaration declaration : declarations) {
+ if (declaration instanceof LocalDeclaration) {
+ localDeclarationToString((LocalDeclaration) declaration);
+ } else if (declaration instanceof InputDeclaration) {
+ inputDeclarationToString((InputDeclaration) declaration);
+ } else if (declaration instanceof UnsupportedStatement) {
+ unsupportedStatementToString((UnsupportedStatement) declaration);
+ } else {
+ errorType("Declaration", declaration);
+ }
+ }
+ }
+
+ private void unsupportedStatementToString(UnsupportedStatement declaration) {
+ addSpaceIfNeeded();
+ result.append('.');
+ result.append(declaration.keyword);
+ if (!declaration.body.isEmpty()) {
+ result.append(' ');
+ }
+ result.append('|');
+ result.append(declaration.body);
+ result.append('|');
+ needSpace = true;
+ for (Expression expression : declaration.expressions) {
+ addSpaceIfNeeded();
+ expressionToString(expression);
+ needSpace = true;
+ }
+ }
+
+ private void inputDeclarationToString(InputDeclaration declaration) {
+ addSpaceIfNeeded();
+ result.append(".input ");
+ variableExpressionToString(declaration.value);
+ needSpace = true;
+ }
+
+ private void localDeclarationToString(LocalDeclaration declaration) {
+ addSpaceIfNeeded();
+ result.append(".local $");
+ result.append(declaration.name);
+ result.append(" = ");
+ expressionToString(declaration.value);
+ needSpace = true;
+ }
+
+ private void variantToString(Variant variant) {
+ for (LiteralOrCatchallKey key : variant.keys) {
+ result.append(' ');
+ if (key instanceof CatchallKey) {
+ result.append('*');
+ } else {
+ literalToString(((Literal) key));
+ }
+ }
+ result.append(' ');
+ patternToString(variant.value);
+ }
+
+ private void addSpaceIfNeeded() {
+ if (needSpace) {
+ result.append(' ');
+ needSpace = false;
+ }
+ }
+
+ private void errorType(String expectedType, Object obj) {
+ error("Unexpected '" + expectedType + "' type: ", obj);
+ }
+
+ private void error(String text, Object obj) {
+ error(text + obj.getClass().getName());
+ }
+
+ private void error(String text) {
+ throw new RuntimeException(text);
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/MessageFormatter.java b/android_icu4j/src/main/java/android/icu/message2/MessageFormatter.java
index cf597ec5f..8c51b35c5 100644
--- a/android_icu4j/src/main/java/android/icu/message2/MessageFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/message2/MessageFormatter.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
@@ -9,12 +9,12 @@ import java.util.Map;
/**
* <h3>Overview of {@code MessageFormatter}</h3>
- *
+ *
* <p>In ICU4J, the {@code MessageFormatter} class is the next iteration of {@link android.icu.text.MessageFormat}.
* This new version will build on the lessons learned from using MessageFormat for 25 years
* in various environments, when used directly or as a base for other public APIs.</p>
*
- *
+ *
* <p>The effort to design a succesor to {@code MessageFormat} will result in a specification
* referred to as MessageFormat 2.0.
* The reasoning for this effort is shared in the
@@ -37,9 +37,9 @@ import java.util.Map;
* but the final set of functions and the parameters accepted by those functions is not yet finalized.</p>
*
* <h3>Examples</h3>
- *
+ *
* <h4>Basic usage</h4>
- *
+ *
* <blockquote><pre>
* import static org.junit.Assert.assertEquals;
* import java.util.Date;
@@ -50,56 +50,57 @@ import java.util.Map;
* import android.icu.message2.MessageFormatter;
*
* &#064;Test
- * public void testMf2() {
+ * public void test() {
* final Locale enGb = Locale.forLanguageTag("en-GB");
* Map<String, Object> arguments = new HashMap<>();
* arguments.put("name", "John");
- * arguments.put("exp", new Date(1679971371000L)); // March 27, 2023, 7:42:51 PM
+ * arguments.put("exp", new Date(2023 - 1900, 2, 27, 19, 42, 51)); // March 27, 2023, 7:42:51 PM
*
* MessageFormatter mf2 = MessageFormatter.builder()
- * .setPattern("{Hello {$name}, your card expires on {$exp :datetime skeleton=yMMMdE}!}")
- * .setLocale(enGb)
- * .build();
+ * .setPattern("Hello {$name}, your card expires on {$exp :datetime year=numeric month=short day=numeric weekday=short}!")
+ * .setLocale(enGb)
+ * .build();
*
* assertEquals(
- * "Hello John, your card expires on Mon, 27 Mar 2023!",
- * mf2.formatToString(arguments));
+ * "Hello John, your card expires on Mon, 27 Mar 2023!",
+ * mf2.formatToString(arguments));
* }
* </pre></blockquote>
- *
+ *
* <h4>Placeholder examples</h4>
- *
+ *
* <table border="1">
* <tr>
* <th>Code to set runtime value for placeholder</th>
* <th>Examples of placeholder in message pattern</th>
* </tr>
* <tr>
- * <td>{@code arguments.put("name", "John")}</td>
- * <td>{@code &#125;$name&#126;}</td>
+ * <td><code>arguments.put("name", "John")</code></td>
+ * <td><code>{$name}</code></td>
* </tr>
* <tr>
- * <td>{@code arguments.put("exp", new Date(…))}</td>
- * <td>{@code &#125;$exp :datetime skeleton=yMMMdE&#126;} <br> {@code &#125;$exp :datetime datestyle=full&#126;}</td>
+ * <td><code>arguments.put("exp", new Date(…))</code></td>
+ * <td><code>{$exp :datetime skeleton=year=numeric month=short day=numeric weekday=short}</code> <br>
+ * <code>{$exp :datetime dateStyle=full}</code></td>
* </tr>
* <tr>
- * <td>{@code arguments.put("val", 3.141592653)}</td>
- * <td>{@code &#125;$val&#126;} <br> {@code &#125;$val :number skeleton=(.####)&#126;}</td>
+ * <td><code>arguments.put("val", 3.141592653)</code></td>
+ * <td><code>{$val}</code> <br> <code>{$val :number minimumFractionDigits=5}</code></td>
* </tr>
* <tr>
* <td>No argument for fixed values known at build time</td>
- * <td>{@code &#125;(123456789.531) :number&#126;}</td>
+ * <td><code>{|123456789.531| :number}</code></td>
* </tr>
* </table>
- *
+ *
* <h4>Plural selection message</h4>
- *
+ *
* <blockquote><pre>
* &#064;Test
- * public void testMf2Selection() {
- * final String message = "match {$count :plural}\n"
- * + " when one {You have one notification.}\n"
- * + " when * {You have {$count} notifications.}\n";
+ * public void testSelection() {
+ * final String message = ".match {$count :number}\n"
+ * + " 1 {{You have one notification.}}\n"
+ * + " * {{You have {$count} notifications.}}\n";
* final Locale enGb = Locale.forLanguageTag("en-GB");
* Map<String, Object> arguments = new HashMap<>();
*
@@ -119,86 +120,22 @@ import java.util.Map;
* mf2.formatToString(arguments));
* }
* </pre></blockquote>
- *
+ *
* <h4>Built-in formatter functions</h4>
- *
- * <p>The tech preview implementation comes with formatters for numbers ({@code number}),
- * date / time ({@code datetime}),
- * plural selectors ({@code plural} and {@code selectordinal}),
- * and general selector ({@code select}),
- * very similar to what MessageFormat offers.</p>
- *
+ *
+ * <p>The tech preview implementation comes with formatters for numbers ({@code :number}),
+ * date / time ({@code :datetime}, {@code :date}, {@code :time}),
+ * plural selectors ({@code :number} with options for {@code plural} and {@code ordinal} selection),
+ * and general selector ({@code :string}),
+ * very similar to what {@code MessageFormat} offers.</p>
+ *
* <p>The <a target="github" href="https://github.com/unicode-org/icu/tree/main/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2">ICU test code</a>
* covers most features, and has examples of how to make custom placeholder formatters;
* you can look for classes that implement {@code android.icu.message2.FormatterFactory}
* (they are named {@code Custom*Test.java}).</p>
- *
- * <h3>Functions currently implemented</h3>
- *
- * <p>These are the functions interpreted right now:</p>
- *
- * <table border="1">
- * <tr>
- * <td rowspan="4">{@code datetime}</td>
- * <td>Similar to MessageFormat's {@code date} and {@code time}.</td>
- * </tr>
- *
- * <tr><td>{@code datestyle} and {@code timestyle}<br>
- * Similar to {@code argStyle : short | medium | long | full}.<br>
- * Same values are accepted, but we can use both in one placeholder,
- * for example <code>{$due :datetime datestyle=full timestyle=long}</code>.
- * </td></tr>
*
- * <tr><td>{@code pattern}<br>
- * Similar to {@code argStyle = argStyleText}.<br>
- * This is bad i18n practice, and will probably be dropped.<br>
- * This is included just to support migration to MessageFormat 2.
- * </td></tr>
- *
- * <tr><td>{@code skeleton}<br>
- * Same as {@code argStyle = argSkeletonText}.<br>
- * These are the date/time skeletons as supported by {@link android.icu.text.SimpleDateFormat}.
- * </td></tr>
- *
- * <tr>
- * <td rowspan="4">{@code number}</td>
- * <td>Similar to MessageFormat's {@code number}.</td>
- * </tr>
- *
- * <tr><td>{@code skeleton}<br>
- * These are the number skeletons as supported by {@link android.icu.number.NumberFormatter}.</td></tr>
- *
- * <tr><td>{@code minimumFractionDigits}<br>
- * Only implemented to be able to pass the unit tests from the ECMA tech preview implementation,
- * which prefers options bags to skeletons.<br>
- * TBD if the final {@number} function will support skeletons, option backs, or both.</td></tr>
- *
- * <tr><td>{@code offset}<br>
- * Used to support plural with an offset.</td></tr>
- *
- * <tr><td >{@code identity}</td><td>Returns the direct string value of the argument (calling {@code toString()}).</td></tr>
- *
- * <tr>
- * <td rowspan="3">{@code plural}</td>
- * <td>Similar to MessageFormat's {@code plural}.</td>
- * </tr>
- *
- * <tr><td>{@code skeleton}<br>
- * These are the number skeletons as supported by {@link android.icu.number.NumberFormatter}.<br>
- * Can also be indirect, from a local variable of type {@code number} (recommended).</td></tr>
- *
- * <tr><td>{@code offset}<br>
- * Used to support plural with an offset.<br>
- * Can also be indirect, from a local variable of type {@code number} (recommended).</td></tr>
- *
- * <tr>
- * <td>{@code selectordinal}</td>
- * <td>Similar to MessageFormat's {@code selectordinal}.<br>
- * For now it accepts the same parameters as {@code plural}, although there is no use case for them.<br>
- * TBD if this will be merged into {@code plural} (with some {@code kind} option) or not.</td></tr>
- *
- * <tr><td>{@code select}</td><td>Literal match, same as MessageFormat's {@code select}.</td></tr>
- * </table>
+ * <p>The complete list of valid options for each function, and how they infulence the results, can be found at
+ * <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/registry.md">here</a>.<p>
*
* @deprecated This API is for technology preview only.
* @hide Only a subset of ICU is exposed in Android
@@ -208,36 +145,35 @@ import java.util.Map;
public class MessageFormatter {
private final Locale locale;
private final String pattern;
- private final Mf2FunctionRegistry functionRegistry;
- private final Mf2DataModel dataModel;
- private final Mf2DataModelFormatter modelFormatter;
+ private final MFFunctionRegistry functionRegistry;
+ private final MFDataModel.Message dataModel;
+ private final MFDataModelFormatter modelFormatter;
private MessageFormatter(Builder builder) {
this.locale = builder.locale;
this.functionRegistry = builder.functionRegistry;
if ((builder.pattern == null && builder.dataModel == null)
|| (builder.pattern != null && builder.dataModel != null)) {
- throw new IllegalArgumentException("You need to set either a pattern, or a dataModel, but not both.");
+ throw new IllegalArgumentException(
+ "You need to set either a pattern, or a dataModel, but not both.");
}
if (builder.dataModel != null) {
this.dataModel = builder.dataModel;
- this.pattern = Mf2Serializer.dataModelToString(this.dataModel);
+ // this.pattern = MFSerializer.dataModelToString(this.dataModel);
+ this.pattern = MFSerializer.dataModelToString(dataModel);
} else {
this.pattern = builder.pattern;
- Mf2Serializer tree = new Mf2Serializer();
- Mf2Parser parser = new Mf2Parser(pattern, tree);
try {
- parser.parse_Message();
- dataModel = tree.build();
- } catch (Mf2Parser.ParseException pe) {
- throw new IllegalArgumentException(
- "Parse error:\n"
+ this.dataModel = MFParser.parse(pattern);
+ } catch (MFParseException pe) {
+ throw new IllegalArgumentException(""
+ + "Parse error:\n"
+ "Message: <<" + pattern + ">>\n"
- + "Error:" + parser.getErrorMessage(pe) + "\n");
+ + "Error: " + pe.getMessage() + "\n");
}
}
- modelFormatter = new Mf2DataModelFormatter(dataModel, locale, functionRegistry);
+ modelFormatter = new MFDataModelFormatter(dataModel, locale, functionRegistry);
}
/**
@@ -271,7 +207,7 @@ public class MessageFormatter {
* Get the pattern (the serialized message in MessageFormat 2 syntax) of
* the current {@code MessageFormatter}.
*
- * <p>If the {@code MessageFormatter} was created from an {@link Mf2DataModel}
+ * <p>If the {@code MessageFormatter} was created from an {@link MFDataModel}
* the this string is generated from that model.</p>
*
* @return the pattern.
@@ -299,7 +235,7 @@ public class MessageFormatter {
* @hide draft / provisional / internal are hidden on Android
*/
@Deprecated
- public Mf2DataModel getDataModel() {
+ public MFDataModel.Message getDataModel() {
return dataModel;
}
@@ -332,6 +268,7 @@ public class MessageFormatter {
* @hide draft / provisional / internal are hidden on Android
*/
@Deprecated
+ @SuppressWarnings("static-method")
public FormattedMessage format(Map<String, Object> arguments) {
throw new RuntimeException("Not yet implemented.");
}
@@ -347,12 +284,11 @@ public class MessageFormatter {
public static class Builder {
private Locale locale = Locale.getDefault(Locale.Category.FORMAT);
private String pattern = null;
- private Mf2FunctionRegistry functionRegistry = Mf2FunctionRegistry.builder().build();
- private Mf2DataModel dataModel = null;
+ private MFFunctionRegistry functionRegistry = MFFunctionRegistry.builder().build();
+ private MFDataModel.Message dataModel = null;
// Prevent direct creation
- private Builder() {
- }
+ private Builder() {}
/**
* Sets the locale to use for all formatting and selection operations.
@@ -387,7 +323,7 @@ public class MessageFormatter {
}
/**
- * Sets an instance of {@link Mf2FunctionRegistry} that should register any
+ * Sets an instance of {@link MFFunctionRegistry} that should register any
* custom functions used by the message.
*
* <p>There is no need to do this in order to use standard functions
@@ -402,7 +338,7 @@ public class MessageFormatter {
* @hide draft / provisional / internal are hidden on Android
*/
@Deprecated
- public Builder setFunctionRegistry(Mf2FunctionRegistry functionRegistry) {
+ public Builder setFunctionRegistry(MFFunctionRegistry functionRegistry) {
this.functionRegistry = functionRegistry;
return this;
}
@@ -418,7 +354,7 @@ public class MessageFormatter {
* @hide draft / provisional / internal are hidden on Android
*/
@Deprecated
- public Builder setDataModel(Mf2DataModel dataModel) {
+ public Builder setDataModel(MFDataModel.Message dataModel) {
this.dataModel = dataModel;
this.pattern = null;
return this;
diff --git a/android_icu4j/src/main/java/android/icu/message2/Mf2DataModel.java b/android_icu4j/src/main/java/android/icu/message2/Mf2DataModel.java
deleted file mode 100644
index 0dd5e4b68..000000000
--- a/android_icu4j/src/main/java/android/icu/message2/Mf2DataModel.java
+++ /dev/null
@@ -1,884 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package android.icu.message2;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.StringJoiner;
-
-/**
- * This maps closely to the official specification.
- * Since it is not final, we will not add javadoc everywhere.
- *
- * <p>See <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/syntax.md">the
- * description of the syntax with examples and use cases</a> and the corresponding
- * <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/message.ebnf">EBNF</a>.</p>
- *
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
-@Deprecated
-@SuppressWarnings("javadoc")
-public class Mf2DataModel {
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class SelectorKeys {
- private final List<String> keys;
-
- private SelectorKeys(Builder builder) {
- keys = new ArrayList<>();
- keys.addAll(builder.keys);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public List<String> getKeys() {
- return Collections.unmodifiableList(keys);
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- @Override
- public String toString() {
- StringJoiner result = new StringJoiner(" ");
- for (String key : keys) {
- result.add(key);
- }
- return result.toString();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Builder {
- private final List<String> keys = new ArrayList<>();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder add(String key) {
- keys.add(key);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addAll(Collection<String> otherKeys) {
- this.keys.addAll(otherKeys);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public SelectorKeys build() {
- return new SelectorKeys(this);
- }
- }
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Pattern {
- private final List<Part> parts;
-
- private Pattern(Builder builder) {
- parts = new ArrayList<>();
- parts.addAll(builder.parts);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public List<Part> getParts() {
- return parts;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- @Override
- public String toString() {
- StringBuilder result = new StringBuilder();
- result.append("{");
- for (Part part : parts) {
- result.append(part);
- }
- result.append("}");
- return result.toString();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Builder {
- private final List<Part> parts = new ArrayList<>();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder add(Part part) {
- parts.add(part);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addAll(Collection<Part> otherParts) {
- parts.addAll(otherParts);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Pattern build() {
- return new Pattern(this);
- }
-
- }
- }
-
- /**
- * No functional role, this is only to be able to say that a message is a sequence of Part(s),
- * and that plain text {@link Text} and {@link Expression} are Part(s).
- *
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public interface Part {
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Text implements Part {
- private final String value;
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- private Text(Builder builder) {
- this(builder.value);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Text(String value) {
- this.value = value;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public String getValue() {
- return value;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- @Override
- public String toString() {
- return value;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Builder {
- private String value;
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setValue(String value) {
- this.value = value;
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Text build() {
- return new Text(this);
- }
- }
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Expression implements Part {
- private final Value operand; // Literal | Variable
- private final String functionName;
- private final Map<String, Value> options;
- Formatter formatter = null;
-
- private Expression(Builder builder) {
- this.operand = builder.operand;
- this.functionName = builder.functionName;
- this.options = builder.options;
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Value getOperand() {
- return operand;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public String getFunctionName() {
- return functionName;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Map<String, Value> getOptions() {
- return options;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- @Override
- public String toString() {
- StringBuilder result = new StringBuilder();
- result.append("{");
- if (operand != null) {
- result.append(operand);
- }
- if (functionName != null) {
- result.append(" :").append(functionName);
- }
- for (Entry<String, Value> option : options.entrySet()) {
- result.append(" ").append(option.getKey()).append("=").append(option.getValue());
- }
- result.append("}");
- return result.toString();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Builder {
- private Value operand = null;
- private String functionName = null;
- private final OrderedMap<String, Value> options = new OrderedMap<>();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setOperand(Value operand) {
- this.operand = operand;
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setFunctionName(String functionName) {
- this.functionName = functionName;
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addOption(String key, Value value) {
- options.put(key, value);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addOptions(Map<String, Value> otherOptions) {
- options.putAll(otherOptions);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Expression build() {
- return new Expression(this);
- }
- }
- }
-
-// public static class Placeholder extends Expression implements Part {
-// public Placeholder(Builder builder) {
-// super(builder);
-// }
-// }
-
- /**
- * A Value can be either a Literal, or a Variable, but not both.
- *
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Value {
- private final String literal;
- private final String variableName;
-
- private Value(Builder builder) {
- this.literal = builder.literal;
- this.variableName = builder.variableName;
-// this(builder.literal, builder.variableName);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public String getLiteral() {
- return literal;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public String getVariableName() {
- return variableName;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public boolean isLiteral() {
- return literal != null;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public boolean isVariable() {
- return variableName != null;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- @Override
- public String toString() {
- return isLiteral() ? "(" + literal + ")" : "$" + variableName;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Builder {
- private String literal;
- private String variableName;
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setLiteral(String literal) {
- this.literal = literal;
- this.variableName = null;
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setVariableName(String variableName) {
- this.variableName = variableName;
- this.literal = null;
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Value build() {
- return new Value(this);
- }
- }
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Variable {
- private final String name;
-
- private Variable(Builder builder) {
- this.name = builder.name;
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public String getName() {
- return name;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Builder {
- private String name;
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setName(String name) {
- this.name = name;
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Variable build() {
- return new Variable(this);
- }
- }
- }
-
- /**
- * This is only to not force LinkedHashMap on the public API.
- *
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class OrderedMap<K, V> extends LinkedHashMap<K, V> {
- private static final long serialVersionUID = -7049361727790825496L;
-
- /**
- * {@inheritDoc}
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public OrderedMap() {
- super();
- }
- }
-
- private final OrderedMap<String, Expression> localVariables;
- private final List<Expression> selectors;
- private final OrderedMap<SelectorKeys, Pattern> variants;
- private final Pattern pattern;
-
- private Mf2DataModel(Builder builder) {
- this.localVariables = builder.localVariables;
- this.selectors = builder.selectors;
- this.variants = builder.variants;
- this.pattern = builder.pattern;
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public OrderedMap<String, Expression> getLocalVariables() {
- return localVariables;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public List<Expression> getSelectors() {
- return selectors;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public OrderedMap<SelectorKeys, Pattern> getVariants() {
- return variants;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Pattern getPattern() {
- return pattern;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- @Override
- public String toString() {
- StringBuilder result = new StringBuilder();
- for (Entry<String, Expression> lv : localVariables.entrySet()) {
- result.append("let $").append(lv.getKey());
- result.append(" = ");
- result.append(lv.getValue());
- result.append("\n");
- }
- if (!selectors.isEmpty()) {
- result.append("match");
- for (Expression e : this.selectors) {
- result.append(" ").append(e);
- }
- result.append("\n");
- for (Entry<SelectorKeys, Pattern> variant : variants.entrySet()) {
- result.append(" when ").append(variant.getKey());
- result.append(" ");
- result.append(variant.getValue());
- result.append("\n");
- }
- } else {
- result.append(pattern);
- }
- return result.toString();
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Builder {
- private final OrderedMap<String, Expression> localVariables = new OrderedMap<>(); // declaration*
- private final List<Expression> selectors = new ArrayList<>();
- private final OrderedMap<SelectorKeys, Pattern> variants = new OrderedMap<>();
- private Pattern pattern = Pattern.builder().build();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addLocalVariable(String variableName, Expression expression) {
- this.localVariables.put(variableName, expression);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addLocalVariables(OrderedMap<String, Expression> otherLocalVariables) {
- this.localVariables.putAll(otherLocalVariables);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addSelector(Expression otherSelector) {
- this.selectors.add(otherSelector);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addSelectors(List<Expression> otherSelectors) {
- this.selectors.addAll(otherSelectors);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addVariant(SelectorKeys keys, Pattern newPattern) {
- this.variants.put(keys, newPattern);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addVariants(OrderedMap<SelectorKeys, Pattern> otherVariants) {
- this.variants.putAll(otherVariants);
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setPattern(Pattern pattern) {
- this.pattern = pattern;
- return this;
- }
-
- /**
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Mf2DataModel build() {
- return new Mf2DataModel(this);
- }
- }
-}
diff --git a/android_icu4j/src/main/java/android/icu/message2/Mf2DataModelFormatter.java b/android_icu4j/src/main/java/android/icu/message2/Mf2DataModelFormatter.java
deleted file mode 100644
index 6ff0f1eb9..000000000
--- a/android_icu4j/src/main/java/android/icu/message2/Mf2DataModelFormatter.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package android.icu.message2;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import android.icu.message2.Mf2DataModel.Expression;
-import android.icu.message2.Mf2DataModel.Part;
-import android.icu.message2.Mf2DataModel.Pattern;
-import android.icu.message2.Mf2DataModel.SelectorKeys;
-import android.icu.message2.Mf2DataModel.Text;
-import android.icu.message2.Mf2DataModel.Value;
-import android.icu.util.Calendar;
-import android.icu.util.CurrencyAmount;
-
-/**
- * Takes an {@link Mf2DataModel} and formats it to a {@link String}
- * (and later on we will also implement formatting to a {@code FormattedMessage}).
- */
-// TODO: move this in the MessageFormatter
-class Mf2DataModelFormatter {
- private final Locale locale;
- private final Mf2DataModel dm;
-
- final Mf2FunctionRegistry standardFunctions;
- final Mf2FunctionRegistry customFunctions;
- private static final Mf2FunctionRegistry EMPTY_REGISTY = Mf2FunctionRegistry.builder().build();
-
- Mf2DataModelFormatter(Mf2DataModel dm, Locale locale, Mf2FunctionRegistry customFunctionRegistry) {
- this.locale = locale;
- this.dm = dm;
- this.customFunctions = customFunctionRegistry == null ? EMPTY_REGISTY : customFunctionRegistry;
-
- standardFunctions = Mf2FunctionRegistry.builder()
- // Date/time formatting
- .setFormatter("datetime", new DateTimeFormatterFactory())
- .setDefaultFormatterNameForType(Date.class, "datetime")
- .setDefaultFormatterNameForType(Calendar.class, "datetime")
-
- // Number formatting
- .setFormatter("number", new NumberFormatterFactory())
- .setDefaultFormatterNameForType(Integer.class, "number")
- .setDefaultFormatterNameForType(Double.class, "number")
- .setDefaultFormatterNameForType(Number.class, "number")
- .setDefaultFormatterNameForType(CurrencyAmount.class, "number")
-
- // Format that returns "to string"
- .setFormatter("identity", new IdentityFormatterFactory())
- .setDefaultFormatterNameForType(String.class, "identity")
- .setDefaultFormatterNameForType(CharSequence.class, "identity")
-
- // Register the standard selectors
- .setSelector("plural", new PluralSelectorFactory("cardinal"))
- .setSelector("selectordinal", new PluralSelectorFactory("ordinal"))
- .setSelector("select", new TextSelectorFactory())
- .setSelector("gender", new TextSelectorFactory())
-
- .build();
- }
-
- private static Map<String, Object> mf2OptToFixedOptions(Map<String, Value> options) {
- Map<String, Object> result = new HashMap<>();
- for (Entry<String, Value> option : options.entrySet()) {
- Value value = option.getValue();
- if (value.isLiteral()) {
- result.put(option.getKey(), value.getLiteral());
- }
- }
- return result;
- }
-
- private Map<String, Object> mf2OptToVariableOptions(Map<String, Value> options, Map<String, Object> arguments) {
- Map<String, Object> result = new HashMap<>();
- for (Entry<String, Value> option : options.entrySet()) {
- Value value = option.getValue();
- if (value.isVariable()) {
- result.put(option.getKey(), variableToObjectEx(value, arguments));
- }
- }
- return result;
- }
-
- FormatterFactory getFormattingFunctionFactoryByName(Object toFormat, String functionName) {
- // Get a function name from the type of the object to format
- if (functionName == null || functionName.isEmpty()) {
- if (toFormat == null) {
- // The object to format is null, and no function provided.
- return null;
- }
- Class<?> clazz = toFormat.getClass();
- functionName = standardFunctions.getDefaultFormatterNameForType(clazz);
- if (functionName == null) {
- functionName = customFunctions.getDefaultFormatterNameForType(clazz);
- }
- if (functionName == null) {
- throw new IllegalArgumentException("Object to format without a function, and unknown type: "
- + toFormat.getClass().getName());
- }
- }
-
- FormatterFactory func = standardFunctions.getFormatter(functionName);
- if (func == null) {
- func = customFunctions.getFormatter(functionName);
- if (func == null) {
- throw new IllegalArgumentException("Can't find an implementation for function: '"
- + functionName + "'");
- }
- }
- return func;
- }
-
- String format(Map<String, Object> arguments) {
- List<Expression> selectors = dm.getSelectors();
- Pattern patternToRender = selectors.isEmpty()
- ? dm.getPattern()
- : findBestMatchingPattern(selectors, arguments);
-
- StringBuilder result = new StringBuilder();
- for (Part part : patternToRender.getParts()) {
- if (part instanceof Text) {
- result.append(part);
- } else if (part instanceof Expression) { // Placeholder is an Expression
- FormattedPlaceholder fp = formatPlaceholder((Expression) part, arguments, false);
- result.append(fp.toString());
- } else {
- throw new IllegalArgumentException("Unknown part type: " + part);
- }
- }
- return result.toString();
- }
-
- private Pattern findBestMatchingPattern(List<Expression> selectors, Map<String, Object> arguments) {
- Pattern patternToRender = null;
-
- // Collect all the selector functions in an array, to reuse
- List<Selector> selectorFunctions = new ArrayList<>(selectors.size());
- for (Expression selector : selectors) {
- String functionName = selector.getFunctionName();
- SelectorFactory funcFactory = standardFunctions.getSelector(functionName);
- if (funcFactory == null) {
- funcFactory = customFunctions.getSelector(functionName);
- }
- if (funcFactory != null) {
- Map<String, Object> opt = mf2OptToFixedOptions(selector.getOptions());
- selectorFunctions.add(funcFactory.createSelector(locale, opt));
- } else {
- throw new IllegalArgumentException("Unknown selector type: " + functionName);
- }
- }
- // This should not be possible, we added one function for each selector, or we have thrown an exception.
- // But just in case someone removes the throw above?
- if (selectorFunctions.size() != selectors.size()) {
- throw new IllegalArgumentException("Something went wrong, not enough selector functions, "
- + selectorFunctions.size() + " vs. " + selectors.size());
- }
-
- // Iterate "vertically", through all variants
- for (Entry<SelectorKeys, Pattern> variant : dm.getVariants().entrySet()) {
- int maxCount = selectors.size();
- List<String> keysToCheck = variant.getKey().getKeys();
- if (selectors.size() != keysToCheck.size()) {
- throw new IllegalArgumentException("Mismatch between the number of selectors and the number of keys: "
- + selectors.size() + " vs. " + keysToCheck.size());
- }
- boolean matches = true;
- // Iterate "horizontally", through all matching functions and keys
- for (int i = 0; i < maxCount; i++) {
- Expression selector = selectors.get(i);
- String valToCheck = keysToCheck.get(i);
- Selector func = selectorFunctions.get(i);
- Map<String, Object> options = mf2OptToVariableOptions(selector.getOptions(), arguments);
- if (!func.matches(variableToObjectEx(selector.getOperand(), arguments), valToCheck, options)) {
- matches = false;
- break;
- }
- }
- if (matches) {
- patternToRender = variant.getValue();
- break;
- }
- }
-
- // TODO: check that there was an entry with all the keys set to `*`
- // And should do that only once, when building the data model.
- if (patternToRender == null) {
- // If there was a case with all entries in the keys `*` this should not happen
- throw new IllegalArgumentException("The selection went wrong, cannot select any option.");
- }
-
- return patternToRender;
- }
-
- /*
- * Pass a level to prevent local variables calling each-other recursively:
- *
- * <code><pre>
- * let $l1 = {$l4 :number}
- * let $l2 = {$l1 :number}
- * let $l3 = {$l2 :number}
- * let $l4 = {$l3 :number}
- * </pre></code>
- *
- * We can keep track of the calls (complicated and expensive).
- * Or we can forbid the use of variables before they are declared, but that is not in the spec (yet?).
- */
- private Object variableToObjectEx(Value value, Map<String, Object> arguments) {
- if (value == null) { // function only
- return null;
- }
- // We have an operand. Can be literal, local var, or argument.
- if (value.isLiteral()) {
- return value.getLiteral();
- } else if (value.isVariable()) {
- String varName = value.getVariableName();
- Expression localPh = dm.getLocalVariables().get(varName);
- if (localPh != null) {
- return formatPlaceholder(localPh, arguments, false);
- }
- return arguments.get(varName);
- } else {
- throw new IllegalArgumentException("Invalid operand type " + value);
- }
- }
-
- private FormattedPlaceholder formatPlaceholder(Expression ph, Map<String, Object> arguments, boolean localExpression) {
- Object toFormat;
- Value operand = ph.getOperand();
- if (operand == null) { // function only, "...{:currentOs option=value}..."
- toFormat = null;
- } else {
- // We have an operand. Can be literal, local var, or argument.
- if (operand.isLiteral()) { // "...{(1234.56) :number}..."
- // If it is a literal, return the string itself
- toFormat = operand.getLiteral();
- } else if (operand.isVariable()) {
- String varName = operand.getVariableName();
- if (!localExpression) {
- Expression localPh = dm.getLocalVariables().get(varName);
- if (localPh != null) {
- // If it is a local variable, we need to format that (recursive)
- // TODO: See if there is any danger to eval the local variables only once
- // (on demand in case the local var is not used, for example in a select)
- return formatPlaceholder(localPh, arguments, true);
- }
- }
- // Return the object in the argument bag.
- toFormat = arguments.get(varName);
- // toFormat might still be null here.
- } else {
- throw new IllegalArgumentException("Invalid operand type " + ph.getOperand());
- }
- }
-
- if (ph.formatter == null) {
- FormatterFactory funcFactory = getFormattingFunctionFactoryByName(toFormat, ph.getFunctionName());
- if (funcFactory != null) {
- Map<String, Object> fixedOptions = mf2OptToFixedOptions(ph.getOptions());
- Formatter ff = funcFactory.createFormatter(locale, fixedOptions);
- ph.formatter = ff;
- }
- }
- if (ph.formatter != null) {
- Map<String, Object> variableOptions = mf2OptToVariableOptions(ph.getOptions(), arguments);
- try {
- return ph.formatter.format(toFormat, variableOptions);
- } catch (IllegalArgumentException e) {
- // Fall-through to the name of the placeholder without replacement.
- }
- }
-
- return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue("{" + ph.getOperand() + "}"));
- }
-}
diff --git a/android_icu4j/src/main/java/android/icu/message2/Mf2FunctionRegistry.java b/android_icu4j/src/main/java/android/icu/message2/Mf2FunctionRegistry.java
deleted file mode 100644
index 702b54561..000000000
--- a/android_icu4j/src/main/java/android/icu/message2/Mf2FunctionRegistry.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package android.icu.message2;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * This class is used to register mappings between various function
- * names and the factories that can create those functions.
- *
- * <p>For example to add formatting for a {@code Person} object one would need to:</p>
- * <ul>
- * <li>write a function (class, lambda, etc.) that does the formatting proper
- * (implementing {@link Formatter})</li>
- * <li>write a factory that creates such a function
- * (implementing {@link FormatterFactory})</li>
- * <li>add a mapping from the function name as used in the syntax
- * (for example {@code "person"}) to the factory</li>
- * <li>optionally add a mapping from the class to format ({@code ...Person.class}) to
- * the formatter name ({@code "person"}), so that one can use a placeholder in the message
- * without specifying a function (for example {@code "... {$me} ..."} instead of
- * {@code "... {$me :person} ..."}, if the class of {@code $me} is an {@code instanceof Person}).
- * </li>
- * </ul>
- *
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
-@Deprecated
-public class Mf2FunctionRegistry {
- private final Map<String, FormatterFactory> formattersMap;
- private final Map<String, SelectorFactory> selectorsMap;
- private final Map<Class<?>, String> classToFormatter;
-
- private Mf2FunctionRegistry(Builder builder) {
- this.formattersMap = new HashMap<>(builder.formattersMap);
- this.selectorsMap = new HashMap<>(builder.selectorsMap);
- this.classToFormatter = new HashMap<>(builder.classToFormatter);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Returns the formatter factory used to create the formatter for function
- * named {@code name}.
- *
- * <p>Note: function name here means the name used to refer to the function in the
- * MessageFormat 2 syntax, for example {@code "... {$exp :datetime} ..."}<br>
- * The function name here is {@code "datetime"}, and does not have to correspond to the
- * name of the methods / classes used to implement the functionality.</p>
- *
- * <p>For example one might write a {@code PersonFormatterFactory} returning a {@code PersonFormatter},
- * and map that to the MessageFormat function named {@code "person"}.<br>
- * The only name visible to the users of MessageFormat syntax will be {@code "person"}.</p>
- *
- * @param formatterName the function name.
- * @return the factory creating formatters for {@code name}. Returns {@code null} if none is registered.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public FormatterFactory getFormatter(String formatterName) {
- return formattersMap.get(formatterName);
- }
-
- /**
- * Get all know names that have a mappings from name to {@link FormatterFactory}.
- *
- * @return a set of all the known formatter names.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Set<String> getFormatterNames() {
- return formattersMap.keySet();
- }
-
- /**
- * Returns the name of the formatter used to format an object of type {@code clazz}.
- *
- * @param clazz the class of the object to format.
- * @return the name of the formatter class, if registered. Returns {@code null} otherwise.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public String getDefaultFormatterNameForType(Class<?> clazz) {
- // Search for the class "as is", to save time.
- // If we don't find it then we iterate the registered classes and check
- // if the class is an instanceof the ones registered.
- // For example a BuddhistCalendar when we only registered Calendar
- String result = classToFormatter.get(clazz);
- if (result != null) {
- return result;
- }
- // We didn't find the class registered explicitly "as is"
- for (Map.Entry<Class<?>, String> e : classToFormatter.entrySet()) {
- if (e.getKey().isAssignableFrom(clazz)) {
- return e.getValue();
- }
- }
- return null;
- }
-
- /**
- * Get all know classes that have a mappings from class to function name.
- *
- * @return a set of all the known classes that have mapping to function names.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Set<Class<?>> getDefaultFormatterTypes() {
- return classToFormatter.keySet();
- }
-
- /**
- * Returns the selector factory used to create the selector for function
- * named {@code name}.
- *
- * <p>Note: the same comments about naming as the ones on {@code getFormatter} apply.</p>
- *
- * @param selectorName the selector name.
- * @return the factory creating selectors for {@code name}. Returns {@code null} if none is registered.
- * @see #getFormatter(String)
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public SelectorFactory getSelector(String selectorName) {
- return selectorsMap.get(selectorName);
- }
-
- /**
- * Get all know names that have a mappings from name to {@link SelectorFactory}.
- *
- * @return a set of all the known selector names.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Set<String> getSelectorNames() {
- return selectorsMap.keySet();
- }
-
- /**
- * A {@code Builder} used to build instances of {@link Mf2FunctionRegistry}.
- *
- * @deprecated This API is for technology preview only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public static class Builder {
- private final Map<String, FormatterFactory> formattersMap = new HashMap<>();
- private final Map<String, SelectorFactory> selectorsMap = new HashMap<>();
- private final Map<Class<?>, String> classToFormatter = new HashMap<>();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * Adds all the mapping from another registry to this one.
- *
- * @param functionRegistry the registry to copy from.
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder addAll(Mf2FunctionRegistry functionRegistry) {
- formattersMap.putAll(functionRegistry.formattersMap);
- selectorsMap.putAll(functionRegistry.selectorsMap);
- classToFormatter.putAll(functionRegistry.classToFormatter);
- return this;
- }
-
- /**
- * Adds a mapping from a formatter name to a {@link FormatterFactory}
- *
- * @param formatterName the function name (as used in the MessageFormat 2 syntax).
- * @param formatterFactory the factory that handles the name.
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setFormatter(String formatterName, FormatterFactory formatterFactory) {
- formattersMap.put(formatterName, formatterFactory);
- return this;
- }
-
- /**
- * Remove the formatter associated with the name.
- *
- * @param formatterName the name of the formatter to remove.
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder removeFormatter(String formatterName) {
- formattersMap.remove(formatterName);
- return this;
- }
-
- /**
- * Remove all the formatter mappings.
- *
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder clearFormatters() {
- formattersMap.clear();
- return this;
- }
-
- /**
- * Adds a mapping from a type to format to a {@link FormatterFactory} formatter name.
- *
- * @param clazz the class of the type to format.
- * @param formatterName the formatter name (as used in the MessageFormat 2 syntax).
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setDefaultFormatterNameForType(Class<?> clazz, String formatterName) {
- classToFormatter.put(clazz, formatterName);
- return this;
- }
-
- /**
- * Remove the function name associated with the class.
- *
- * @param clazz the class to remove the mapping for.
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder removeDefaultFormatterNameForType(Class<?> clazz) {
- classToFormatter.remove(clazz);
- return this;
- }
-
- /**
- * Remove all the class to formatter-names mappings.
- *
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder clearDefaultFormatterNames() {
- classToFormatter.clear();
- return this;
- }
-
- /**
- * Adds a mapping from a selector name to a {@link SelectorFactory}
- *
- * @param selectorName the function name (as used in the MessageFormat 2 syntax).
- * @param selectorFactory the factory that handles the name.
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder setSelector(String selectorName, SelectorFactory selectorFactory) {
- selectorsMap.put(selectorName, selectorFactory);
- return this;
- }
-
- /**
- * Remove the selector associated with the name.
- *
- * @param selectorName the name of the selector to remove.
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder removeSelector(String selectorName) {
- selectorsMap.remove(selectorName);
- return this;
- }
-
- /**
- * Remove all the selector mappings.
- *
- * @return the builder, for fluent use.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Builder clearSelectors() {
- selectorsMap.clear();
- return this;
- }
-
- /**
- * Builds an instance of {@link Mf2FunctionRegistry}.
- *
- * @return the function registry created.
- *
- * @deprecated This API is for technology preview only.
- * @hide draft / provisional / internal are hidden on Android
- */
- @Deprecated
- public Mf2FunctionRegistry build() {
- return new Mf2FunctionRegistry(this);
- }
- }
-}
diff --git a/android_icu4j/src/main/java/android/icu/message2/Mf2Parser.java b/android_icu4j/src/main/java/android/icu/message2/Mf2Parser.java
deleted file mode 100644
index 5445212f8..000000000
--- a/android_icu4j/src/main/java/android/icu/message2/Mf2Parser.java
+++ /dev/null
@@ -1,770 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package android.icu.message2;
-
-import java.util.Arrays;
-
-/**
- * Class generated from EBNF.
- */
-@SuppressWarnings("all") // Disable all warnings in the generated file
-class Mf2Parser
-{
- static class ParseException extends RuntimeException
- {
- private static final long serialVersionUID = 1L;
- private int begin, end, offending, expected, state;
-
- public ParseException(int b, int e, int s, int o, int x)
- {
- begin = b;
- end = e;
- state = s;
- offending = o;
- expected = x;
- }
-
- @Override
- public String getMessage()
- {
- return offending < 0
- ? "lexical analysis failed"
- : "syntax error";
- }
-
- public void serialize(EventHandler eventHandler)
- {
- }
-
- public int getBegin() {return begin;}
- public int getEnd() {return end;}
- public int getState() {return state;}
- public int getOffending() {return offending;}
- public int getExpected() {return expected;}
- public boolean isAmbiguousInput() {return false;}
- }
-
- /**
- * @hide Only a subset of ICU is exposed in Android
- */
-public interface EventHandler
- {
- public void reset(CharSequence string);
- public void startNonterminal(String name, int begin);
- public void endNonterminal(String name, int end);
- public void terminal(String name, int begin, int end);
- public void whitespace(int begin, int end);
- }
-
- /**
- * @hide Only a subset of ICU is exposed in Android
- */
-public static class TopDownTreeBuilder implements EventHandler
- {
- private CharSequence input = null;
- public Nonterminal[] stack = new Nonterminal[64];
- private int top = -1;
-
- @Override
- public void reset(CharSequence input)
- {
- this.input = input;
- top = -1;
- }
-
- @Override
- public void startNonterminal(String name, int begin)
- {
- Nonterminal nonterminal = new Nonterminal(name, begin, begin, new Symbol[0]);
- if (top >= 0) addChild(nonterminal);
- if (++top >= stack.length) stack = Arrays.copyOf(stack, stack.length << 1);
- stack[top] = nonterminal;
- }
-
- @Override
- public void endNonterminal(String name, int end)
- {
- stack[top].end = end;
- if (top > 0) --top;
- }
-
- @Override
- public void terminal(String name, int begin, int end)
- {
- addChild(new Terminal(name, begin, end));
- }
-
- @Override
- public void whitespace(int begin, int end)
- {
- }
-
- private void addChild(Symbol s)
- {
- Nonterminal current = stack[top];
- current.children = Arrays.copyOf(current.children, current.children.length + 1);
- current.children[current.children.length - 1] = s;
- }
-
- public void serialize(EventHandler e)
- {
- e.reset(input);
- stack[0].send(e);
- }
- }
-
- /**
- * @hide Only a subset of ICU is exposed in Android
- */
-public static abstract class Symbol
- {
- public String name;
- public int begin;
- public int end;
-
- protected Symbol(String name, int begin, int end)
- {
- this.name = name;
- this.begin = begin;
- this.end = end;
- }
-
- public abstract void send(EventHandler e);
- }
-
- /**
- * @hide Only a subset of ICU is exposed in Android
- */
-public static class Terminal extends Symbol
- {
- public Terminal(String name, int begin, int end)
- {
- super(name, begin, end);
- }
-
- @Override
- public void send(EventHandler e)
- {
- e.terminal(name, begin, end);
- }
- }
-
- /**
- * @hide Only a subset of ICU is exposed in Android
- */
-public static class Nonterminal extends Symbol
- {
- public Symbol[] children;
-
- public Nonterminal(String name, int begin, int end, Symbol[] children)
- {
- super(name, begin, end);
- this.children = children;
- }
-
- @Override
- public void send(EventHandler e)
- {
- e.startNonterminal(name, begin);
- int pos = begin;
- for (Symbol c : children)
- {
- if (pos < c.begin) e.whitespace(pos, c.begin);
- c.send(e);
- pos = c.end;
- }
- if (pos < end) e.whitespace(pos, end);
- e.endNonterminal(name, end);
- }
- }
-
- public Mf2Parser(CharSequence string, EventHandler t)
- {
- initialize(string, t);
- }
-
- public void initialize(CharSequence source, EventHandler parsingEventHandler)
- {
- eventHandler = parsingEventHandler;
- input = source;
- size = source.length();
- reset(0, 0, 0);
- }
-
- public CharSequence getInput()
- {
- return input;
- }
-
- public int getTokenOffset()
- {
- return b0;
- }
-
- public int getTokenEnd()
- {
- return e0;
- }
-
- public final void reset(int l, int b, int e)
- {
- b0 = b; e0 = b;
- l1 = l; b1 = b; e1 = e;
- end = e;
- eventHandler.reset(input);
- }
-
- public void reset()
- {
- reset(0, 0, 0);
- }
-
- public static String getOffendingToken(ParseException e)
- {
- return e.getOffending() < 0 ? null : TOKEN[e.getOffending()];
- }
-
- public static String[] getExpectedTokenSet(ParseException e)
- {
- String[] expected;
- if (e.getExpected() >= 0)
- {
- expected = new String[]{TOKEN[e.getExpected()]};
- }
- else
- {
- expected = getTokenSet(- e.getState());
- }
- return expected;
- }
-
- public String getErrorMessage(ParseException e)
- {
- String message = e.getMessage();
- String[] tokenSet = getExpectedTokenSet(e);
- String found = getOffendingToken(e);
- int size = e.getEnd() - e.getBegin();
- message += (found == null ? "" : ", found " + found)
- + "\nwhile expecting "
- + (tokenSet.length == 1 ? tokenSet[0] : java.util.Arrays.toString(tokenSet))
- + "\n"
- + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ");
- String prefix = input.subSequence(0, e.getBegin()).toString();
- int line = prefix.replaceAll("[^\n]", "").length() + 1;
- int column = prefix.length() - prefix.lastIndexOf('\n');
- return message
- + "at line " + line + ", column " + column + ":\n..."
- + input.subSequence(e.getBegin(), Math.min(input.length(), e.getBegin() + 64))
- + "...";
- }
-
- public void parse_Message()
- {
- eventHandler.startNonterminal("Message", e0);
- for (;;)
- {
- lookahead1W(12); // WhiteSpace | 'let' | 'match' | '{'
- if (l1 != 13) // 'let'
- {
- break;
- }
- whitespace();
- parse_Declaration();
- }
- switch (l1)
- {
- case 16: // '{'
- whitespace();
- parse_Pattern();
- break;
- default:
- whitespace();
- parse_Selector();
- for (;;)
- {
- whitespace();
- parse_Variant();
- lookahead1W(4); // END | WhiteSpace | 'when'
- if (l1 != 15) // 'when'
- {
- break;
- }
- }
- }
- eventHandler.endNonterminal("Message", e0);
- }
-
- private void parse_Declaration()
- {
- eventHandler.startNonterminal("Declaration", e0);
- consume(13); // 'let'
- lookahead1W(0); // WhiteSpace | Variable
- consume(4); // Variable
- lookahead1W(1); // WhiteSpace | '='
- consume(12); // '='
- lookahead1W(2); // WhiteSpace | '{'
- consume(16); // '{'
- lookahead1W(9); // WhiteSpace | Variable | Function | Literal
- whitespace();
- parse_Expression();
- consume(17); // '}'
- eventHandler.endNonterminal("Declaration", e0);
- }
-
- private void parse_Selector()
- {
- eventHandler.startNonterminal("Selector", e0);
- consume(14); // 'match'
- for (;;)
- {
- lookahead1W(2); // WhiteSpace | '{'
- consume(16); // '{'
- lookahead1W(9); // WhiteSpace | Variable | Function | Literal
- whitespace();
- parse_Expression();
- consume(17); // '}'
- lookahead1W(7); // WhiteSpace | 'when' | '{'
- if (l1 != 16) // '{'
- {
- break;
- }
- }
- eventHandler.endNonterminal("Selector", e0);
- }
-
- private void parse_Variant()
- {
- eventHandler.startNonterminal("Variant", e0);
- consume(15); // 'when'
- for (;;)
- {
- lookahead1W(11); // WhiteSpace | Nmtoken | Literal | '*'
- whitespace();
- parse_VariantKey();
- lookahead1W(13); // WhiteSpace | Nmtoken | Literal | '*' | '{'
- if (l1 == 16) // '{'
- {
- break;
- }
- }
- whitespace();
- parse_Pattern();
- eventHandler.endNonterminal("Variant", e0);
- }
-
- private void parse_VariantKey()
- {
- eventHandler.startNonterminal("VariantKey", e0);
- switch (l1)
- {
- case 10: // Literal
- consume(10); // Literal
- break;
- case 9: // Nmtoken
- consume(9); // Nmtoken
- break;
- default:
- consume(11); // '*'
- }
- eventHandler.endNonterminal("VariantKey", e0);
- }
-
- private void parse_Pattern()
- {
- eventHandler.startNonterminal("Pattern", e0);
- consume(16); // '{'
- for (;;)
- {
- lookahead1(8); // Text | '{' | '}'
- if (l1 == 17) // '}'
- {
- break;
- }
- switch (l1)
- {
- case 3: // Text
- consume(3); // Text
- break;
- default:
- parse_Placeholder();
- }
- }
- consume(17); // '}'
- eventHandler.endNonterminal("Pattern", e0);
- }
-
- private void parse_Placeholder()
- {
- eventHandler.startNonterminal("Placeholder", e0);
- consume(16); // '{'
- lookahead1W(14); // WhiteSpace | Variable | Function | MarkupStart | MarkupEnd | Literal | '}'
- if (l1 != 17) // '}'
- {
- switch (l1)
- {
- case 6: // MarkupStart
- whitespace();
- parse_Markup();
- break;
- case 7: // MarkupEnd
- consume(7); // MarkupEnd
- break;
- default:
- whitespace();
- parse_Expression();
- }
- }
- lookahead1W(3); // WhiteSpace | '}'
- consume(17); // '}'
- eventHandler.endNonterminal("Placeholder", e0);
- }
-
- private void parse_Expression()
- {
- eventHandler.startNonterminal("Expression", e0);
- switch (l1)
- {
- case 5: // Function
- parse_Annotation();
- break;
- default:
- parse_Operand();
- lookahead1W(5); // WhiteSpace | Function | '}'
- if (l1 == 5) // Function
- {
- whitespace();
- parse_Annotation();
- }
- }
- eventHandler.endNonterminal("Expression", e0);
- }
-
- private void parse_Operand()
- {
- eventHandler.startNonterminal("Operand", e0);
- switch (l1)
- {
- case 10: // Literal
- consume(10); // Literal
- break;
- default:
- consume(4); // Variable
- }
- eventHandler.endNonterminal("Operand", e0);
- }
-
- private void parse_Annotation()
- {
- eventHandler.startNonterminal("Annotation", e0);
- consume(5); // Function
- for (;;)
- {
- lookahead1W(6); // WhiteSpace | Name | '}'
- if (l1 != 8) // Name
- {
- break;
- }
- whitespace();
- parse_Option();
- }
- eventHandler.endNonterminal("Annotation", e0);
- }
-
- private void parse_Option()
- {
- eventHandler.startNonterminal("Option", e0);
- consume(8); // Name
- lookahead1W(1); // WhiteSpace | '='
- consume(12); // '='
- lookahead1W(10); // WhiteSpace | Variable | Nmtoken | Literal
- switch (l1)
- {
- case 10: // Literal
- consume(10); // Literal
- break;
- case 9: // Nmtoken
- consume(9); // Nmtoken
- break;
- default:
- consume(4); // Variable
- }
- eventHandler.endNonterminal("Option", e0);
- }
-
- private void parse_Markup()
- {
- eventHandler.startNonterminal("Markup", e0);
- consume(6); // MarkupStart
- for (;;)
- {
- lookahead1W(6); // WhiteSpace | Name | '}'
- if (l1 != 8) // Name
- {
- break;
- }
- whitespace();
- parse_Option();
- }
- eventHandler.endNonterminal("Markup", e0);
- }
-
- private void consume(int t)
- {
- if (l1 == t)
- {
- whitespace();
- eventHandler.terminal(TOKEN[l1], b1, e1);
- b0 = b1; e0 = e1; l1 = 0;
- }
- else
- {
- error(b1, e1, 0, l1, t);
- }
- }
-
- private void whitespace()
- {
- if (e0 != b1)
- {
- eventHandler.whitespace(e0, b1);
- e0 = b1;
- }
- }
-
- private int matchW(int tokenSetId)
- {
- int code;
- for (;;)
- {
- code = match(tokenSetId);
- if (code != 2) // WhiteSpace
- {
- break;
- }
- }
- return code;
- }
-
- private void lookahead1W(int tokenSetId)
- {
- if (l1 == 0)
- {
- l1 = matchW(tokenSetId);
- b1 = begin;
- e1 = end;
- }
- }
-
- private void lookahead1(int tokenSetId)
- {
- if (l1 == 0)
- {
- l1 = match(tokenSetId);
- b1 = begin;
- e1 = end;
- }
- }
-
- private int error(int b, int e, int s, int l, int t)
- {
- throw new ParseException(b, e, s, l, t);
- }
-
- private int b0, e0;
- private int l1, b1, e1;
- private EventHandler eventHandler = null;
- private CharSequence input = null;
- private int size = 0;
- private int begin = 0;
- private int end = 0;
-
- private int match(int tokenSetId)
- {
- begin = end;
- int current = end;
- int result = INITIAL[tokenSetId];
- int state = 0;
-
- for (int code = result & 63; code != 0; )
- {
- int charclass;
- int c0 = current < size ? input.charAt(current) : 0;
- ++current;
- if (c0 < 0x80)
- {
- charclass = MAP0[c0];
- }
- else if (c0 < 0xd800)
- {
- int c1 = c0 >> 4;
- charclass = MAP1[(c0 & 15) + MAP1[(c1 & 31) + MAP1[c1 >> 5]]];
- }
- else
- {
- if (c0 < 0xdc00)
- {
- int c1 = current < size ? input.charAt(current) : 0;
- if (c1 >= 0xdc00 && c1 < 0xe000)
- {
- ++current;
- c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000;
- }
- }
-
- int lo = 0, hi = 6;
- for (int m = 3; ; m = (hi + lo) >> 1)
- {
- if (MAP2[m] > c0) {hi = m - 1;}
- else if (MAP2[7 + m] < c0) {lo = m + 1;}
- else {charclass = MAP2[14 + m]; break;}
- if (lo > hi) {charclass = 0; break;}
- }
- }
-
- state = code;
- int i0 = (charclass << 6) + code - 1;
- code = TRANSITION[(i0 & 7) + TRANSITION[i0 >> 3]];
-
- if (code > 63)
- {
- result = code;
- code &= 63;
- end = current;
- }
- }
-
- result >>= 6;
- if (result == 0)
- {
- end = current - 1;
- int c1 = end < size ? input.charAt(end) : 0;
- if (c1 >= 0xdc00 && c1 < 0xe000)
- {
- --end;
- }
- return error(begin, end, state, -1, -1);
- }
-
- if (end > size) end = size;
- return (result & 31) - 1;
- }
-
- private static String[] getTokenSet(int tokenSetId)
- {
- java.util.ArrayList<String> expected = new java.util.ArrayList<>();
- int s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 63;
- for (int i = 0; i < 18; i += 32)
- {
- int j = i;
- int i0 = (i >> 5) * 38 + s - 1;
- int f = EXPECTED[i0];
- for ( ; f != 0; f >>>= 1, ++j)
- {
- if ((f & 1) != 0)
- {
- expected.add(TOKEN[j]);
- }
- }
- }
- return expected.toArray(new String[]{});
- }
-
- private static final int[] MAP0 =
- {
- /* 0 */ 24, 24, 24, 24, 24, 24, 24, 24, 24, 1, 1, 24, 24, 1, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
- /* 27 */ 24, 24, 24, 24, 24, 1, 24, 24, 24, 2, 24, 24, 24, 3, 4, 5, 6, 24, 7, 8, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- /* 58 */ 9, 24, 24, 10, 24, 24, 24, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- /* 85 */ 11, 11, 11, 11, 11, 11, 24, 12, 24, 24, 11, 24, 13, 11, 14, 11, 15, 11, 11, 16, 11, 11, 11, 17, 18, 19,
- /* 111 */ 11, 11, 11, 11, 11, 20, 11, 11, 21, 11, 11, 11, 22, 24, 23, 24, 24
- };
-
- private static final int[] MAP1 =
- {
- /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181,
- /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
- /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
- /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
- /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
- /* 105 */ 214, 214, 214, 383, 330, 396, 353, 291, 262, 247, 308, 330, 330, 330, 322, 292, 284, 292, 284, 292, 292,
- /* 126 */ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 347, 347, 347, 347, 347, 347, 347,
- /* 147 */ 277, 292, 292, 292, 292, 292, 292, 292, 292, 369, 330, 330, 331, 329, 330, 330, 292, 292, 292, 292, 292,
- /* 168 */ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 330, 330, 330, 330, 330, 330, 330, 330,
- /* 189 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330,
- /* 210 */ 330, 330, 330, 291, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
- /* 231 */ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 330, 24, 13, 11, 14, 11, 15,
- /* 253 */ 11, 11, 16, 11, 11, 11, 17, 18, 19, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 24, 12, 24, 24, 11, 11,
- /* 279 */ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 24, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- /* 305 */ 11, 11, 11, 11, 11, 11, 11, 20, 11, 11, 21, 11, 11, 11, 22, 24, 23, 24, 24, 24, 24, 24, 24, 24, 8, 24, 24,
- /* 332 */ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- /* 363 */ 9, 24, 24, 10, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 11, 11, 24, 24, 24, 24, 24, 24, 24,
- /* 390 */ 24, 24, 1, 1, 24, 24, 1, 24, 24, 24, 2, 24, 24, 24, 3, 4, 5, 6, 24, 7, 8, 24
- };
-
- private static final int[] MAP2 =
- {
- /* 0 */ 55296, 63744, 64976, 65008, 65534, 65536, 983040, 63743, 64975, 65007, 65533, 65535, 983039, 1114111, 24,
- /* 15 */ 11, 24, 11, 24, 11, 24
- };
-
- private static final int[] INITIAL =
- {
- /* 0 */ 1, 2, 3, 4, 133, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
- };
-
- private static final int[] TRANSITION =
- {
- /* 0 */ 237, 237, 237, 237, 237, 237, 237, 237, 200, 208, 455, 237, 237, 237, 237, 237, 236, 230, 455, 237, 237,
- /* 21 */ 237, 237, 237, 237, 245, 376, 382, 237, 237, 237, 237, 237, 380, 314, 382, 237, 237, 237, 237, 237, 263,
- /* 42 */ 455, 237, 237, 237, 237, 237, 237, 295, 455, 237, 237, 237, 237, 237, 237, 322, 287, 281, 252, 237, 237,
- /* 63 */ 237, 237, 344, 287, 281, 252, 237, 237, 237, 255, 358, 455, 237, 237, 237, 237, 237, 417, 380, 455, 237,
- /* 84 */ 237, 237, 237, 237, 419, 390, 215, 329, 252, 237, 237, 237, 237, 398, 275, 382, 237, 237, 237, 237, 419,
- /* 105 */ 390, 215, 410, 252, 237, 237, 237, 419, 390, 215, 329, 309, 237, 237, 237, 419, 390, 222, 365, 252, 237,
- /* 126 */ 237, 237, 419, 390, 427, 329, 302, 237, 237, 237, 419, 435, 215, 329, 252, 237, 237, 237, 419, 443, 215,
- /* 147 */ 329, 252, 237, 237, 237, 419, 390, 215, 329, 372, 237, 237, 237, 419, 390, 215, 336, 451, 237, 237, 237,
- /* 168 */ 402, 390, 215, 329, 252, 237, 237, 237, 350, 463, 269, 237, 237, 237, 237, 237, 474, 471, 269, 237, 237,
- /* 189 */ 237, 237, 237, 237, 380, 455, 237, 237, 237, 237, 237, 192, 192, 192, 192, 192, 192, 192, 192, 277, 192,
- /* 210 */ 192, 192, 192, 192, 192, 0, 414, 595, 0, 277, 22, 663, 0, 414, 595, 0, 277, 22, 663, 32, 277, 16, 16, 0,
- /* 234 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 277, 22, 22, 22, 0, 22, 22, 0, 482, 547, 0, 0, 0, 0, 0, 18, 0, 0, 277,
- /* 264 */ 0, 0, 768, 0, 768, 0, 0, 0, 277, 0, 22, 0, 0, 0, 277, 20, 31, 0, 0, 0, 348, 0, 414, 0, 0, 595, 0, 277, 22,
- /* 293 */ 663, 0, 277, 0, 0, 0, 0, 0, 26, 0, 482, 547, 0, 0, 960, 0, 0, 482, 547, 0, 38, 0, 0, 0, 0, 277, 704, 0, 0,
- /* 322 */ 277, 0, 663, 663, 0, 663, 27, 0, 482, 547, 348, 0, 414, 0, 0, 482, 547, 348, 0, 414, 0, 896, 277, 0, 663,
- /* 347 */ 663, 0, 663, 0, 0, 1088, 0, 0, 0, 0, 1088, 277, 18, 0, 0, 0, 0, 18, 0, 482, 547, 348, 36, 414, 0, 0, 482,
- /* 374 */ 547, 1024, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 22, 0, 277, 0, 663, 663, 0, 663, 0, 348, 20, 0, 0, 0, 0,
- /* 403 */ 0, 0, 0, 17, 0, 595, 17, 33, 482, 547, 348, 0, 414, 0, 0, 832, 0, 0, 0, 0, 0, 0, 595, 0, 29, 414, 595, 0,
- /* 431 */ 277, 22, 663, 0, 277, 0, 663, 663, 24, 663, 0, 348, 277, 0, 663, 663, 25, 663, 0, 348, 37, 482, 547, 0, 0,
- /* 456 */ 0, 0, 0, 277, 22, 0, 0, 1088, 0, 0, 0, 1088, 1088, 0, 0, 1152, 0, 0, 0, 0, 0, 1152, 0, 1152, 1152, 0
- };
-
- private static final int[] EXPECTED =
- {
- /* 0 */ 20, 4100, 65540, 131076, 32772, 131108, 131332, 98308, 196616, 1076, 1556, 3588, 90116, 69124, 132340, 16,
- /* 16 */ 32768, 32, 256, 8, 8, 1024, 512, 8192, 16384, 64, 128, 16, 32768, 32, 1024, 8192, 16384, 64, 128, 32768,
- /* 36 */ 16384, 16384
- };
-
- private static final String[] TOKEN =
- {
- "(0)",
- "END",
- "WhiteSpace",
- "Text",
- "Variable",
- "Function",
- "MarkupStart",
- "MarkupEnd",
- "Name",
- "Nmtoken",
- "Literal",
- "'*'",
- "'='",
- "'let'",
- "'match'",
- "'when'",
- "'{'",
- "'}'"
- };
-}
-
-// End
diff --git a/android_icu4j/src/main/java/android/icu/message2/Mf2Serializer.java b/android_icu4j/src/main/java/android/icu/message2/Mf2Serializer.java
deleted file mode 100644
index 64ae13ef8..000000000
--- a/android_icu4j/src/main/java/android/icu/message2/Mf2Serializer.java
+++ /dev/null
@@ -1,501 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package android.icu.message2;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import android.icu.message2.Mf2DataModel.Expression;
-import android.icu.message2.Mf2DataModel.Pattern;
-import android.icu.message2.Mf2DataModel.SelectorKeys;
-import android.icu.message2.Mf2DataModel.Text;
-import android.icu.message2.Mf2DataModel.Value;
-import android.icu.message2.Mf2Parser.EventHandler;
-import android.icu.message2.Mf2Serializer.Token.Type;
-
-// TODO: find a better name for this class
-class Mf2Serializer implements EventHandler {
- private String input;
- private final List<Token> tokens = new ArrayList<>();
-
- static class Token {
- final String name;
- final int begin;
- final int end;
- final Kind kind;
- private final Type type;
- private final String input;
-
- enum Kind {
- TERMINAL,
- NONTERMINAL_START,
- NONTERMINAL_END
- }
-
- enum Type {
- MESSAGE,
- PATTERN,
- TEXT,
- PLACEHOLDER,
- EXPRESSION,
- OPERAND,
- VARIABLE,
- IGNORE,
- FUNCTION,
- OPTION,
- NAME,
- NMTOKEN,
- LITERAL,
- SELECTOR,
- VARIANT,
- DECLARATION, VARIANTKEY, DEFAULT,
- }
-
- Token(Kind kind, String name, int begin, int end, String input) {
- this.kind = kind;
- this.name = name;
- this.begin = begin;
- this.end = end;
- this.input = input;
- switch (name) {
- case "Message": type = Type.MESSAGE; break;
- case "Pattern": type = Type.PATTERN; break;
- case "Text": type = Type.TEXT; break;
- case "Placeholder": type = Type.PLACEHOLDER; break;
- case "Expression": type = Type.EXPRESSION; break;
- case "Operand": type = Type.OPERAND; break;
- case "Variable": type = Type.VARIABLE; break;
- case "Function": type = Type.FUNCTION; break;
- case "Option": type = Type.OPTION; break;
- case "Annotation": type = Type.IGNORE; break;
- case "Name": type = Type.NAME; break;
- case "Nmtoken": type = Type.NMTOKEN; break;
- case "Literal": type = Type.LITERAL; break;
- case "Selector": type = Type.SELECTOR; break;
- case "Variant": type = Type.VARIANT; break;
- case "VariantKey": type = Type.VARIANTKEY; break;
- case "Declaration": type = Type.DECLARATION; break;
-
- case "Markup": type = Type.IGNORE; break;
- case "MarkupStart": type = Type.IGNORE; break;
- case "MarkupEnd": type = Type.IGNORE; break;
-
- case "'['": type = Type.IGNORE; break;
- case "']'": type = Type.IGNORE; break;
- case "'{'": type = Type.IGNORE; break;
- case "'}'": type = Type.IGNORE; break;
- case "'='": type = Type.IGNORE; break;
- case "'match'": type = Type.IGNORE; break;
- case "'when'": type = Type.IGNORE; break;
- case "'let'": type = Type.IGNORE; break;
- case "'*'": type = Type.DEFAULT; break;
- default:
- throw new IllegalArgumentException("Parse error: Unknown token \"" + name + "\"");
- }
- }
-
- boolean isStart() {
- return Kind.NONTERMINAL_START.equals(kind);
- }
-
- boolean isEnd() {
- return Kind.NONTERMINAL_END.equals(kind);
- }
-
- boolean isTerminal() {
- return Kind.TERMINAL.equals(kind);
- }
-
- @Override
- public String toString() {
- int from = begin == -1 ? 0 : begin;
- String strval = end == -1 ? input.substring(from) : input.substring(from, end);
- return String.format("Token(\"%s\", [%d, %d], %s) // \"%s\"", name, begin, end, kind, strval);
- }
- }
-
- Mf2Serializer() {}
-
- @Override
- public void reset(CharSequence input) {
- this.input = input.toString();
- tokens.clear();
- }
-
- @Override
- public void startNonterminal(String name, int begin) {
- tokens.add(new Token(Token.Kind.NONTERMINAL_START, name, begin, -1, input));
- }
-
- @Override
- public void endNonterminal(String name, int end) {
- tokens.add(new Token(Token.Kind.NONTERMINAL_END, name, -1, end, input));
- }
-
- @Override
- public void terminal(String name, int begin, int end) {
- tokens.add(new Token(Token.Kind.TERMINAL, name, begin, end, input));
- }
-
- @Override
- public void whitespace(int begin, int end) {
- }
-
- Mf2DataModel build() {
- if (!tokens.isEmpty()) {
- Token firstToken = tokens.get(0);
- if (Type.MESSAGE.equals(firstToken.type) && firstToken.isStart()) {
- return parseMessage();
- }
- }
- return null;
- }
-
- private Mf2DataModel parseMessage() {
- Mf2DataModel.Builder result = Mf2DataModel.builder();
-
- for (int i = 0; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case MESSAGE:
- if (token.isStart() && i == 0) {
- // all good
- } else if (token.isEnd() && i == tokens.size() - 1) {
- // We check if this last token is at the end of the input
- if (token.end != input.length()) {
- String leftover = input.substring(token.end)
- .replace("\n", "")
- .replace("\r", "")
- .replace(" ", "")
- .replace("\t", "")
- ;
- if (!leftover.isEmpty()) {
- throw new IllegalArgumentException("Parse error: Content detected after the end of the message: '"
- + input.substring(token.end) + "'");
- }
- }
- return result.build();
- } else {
- // End of message, we ignore the rest
- throw new IllegalArgumentException("Parse error: Extra tokens at the end of the message");
- }
- break;
- case PATTERN:
- ParseResult<Pattern> patternResult = parsePattern(i);
- i = patternResult.skipLen;
- result.setPattern(patternResult.resultValue);
- break;
- case DECLARATION:
- Declaration declaration = new Declaration();
- i = parseDeclaration(i, declaration);
- result.addLocalVariable(declaration.variableName, declaration.expr);
- break;
- case SELECTOR:
- ParseResult<List<Expression>> selectorResult = parseSelector(i);
- result.addSelectors(selectorResult.resultValue);
- i = selectorResult.skipLen;
- break;
- case VARIANT:
- ParseResult<Variant> variantResult = parseVariant(i);
- i = variantResult.skipLen;
- Variant variant = variantResult.resultValue;
- result.addVariant(variant.getSelectorKeys(), variant.getPattern());
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseMessage UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing MessageFormatter");
- }
-
- private ParseResult<Variant> parseVariant(int startToken) {
- Variant.Builder result = Variant.builder();
-
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case VARIANT:
- if (token.isStart()) { // all good
- } else if (token.isEnd()) {
- return new ParseResult<>(i, result.build());
- }
- break;
- case LITERAL:
- result.addSelectorKey(input.substring(token.begin + 1, token.end - 1));
- break;
- case NMTOKEN:
- result.addSelectorKey(input.substring(token.begin, token.end));
- break;
- case DEFAULT:
- result.addSelectorKey("*");
- break;
- case PATTERN:
- ParseResult<Pattern> patternResult = parsePattern(i);
- i = patternResult.skipLen;
- result.setPattern(patternResult.resultValue);
- break;
- case VARIANTKEY:
-// variant.variantKey = new VariantKey(input.substring(token.begin, token.end));
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseVariant UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Variant");
- }
-
- private ParseResult<List<Expression>> parseSelector(int startToken) {
- List<Expression> result = new ArrayList<>();
-
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case SELECTOR:
- if (token.isStart()) { // all good, do nothing
- } else if (token.isEnd()) {
- return new ParseResult<>(i, result);
- }
- break;
- case EXPRESSION:
- ParseResult<Expression> exprResult = parseExpression(i);
- i = exprResult.skipLen;
- result.add(exprResult.resultValue);
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseSelector UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing selectors");
- }
-
- private int parseDeclaration(int startToken, Declaration declaration) {
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case DECLARATION:
- if (token.isStart()) { // all good
- } else if (token.isEnd()) {
- return i;
- }
- break;
- case VARIABLE:
- declaration.variableName = input.substring(token.begin + 1, token.end);
- break;
- case EXPRESSION:
- ParseResult<Expression> exprResult = parseExpression(i);
- i = exprResult.skipLen;
- declaration.expr = exprResult.resultValue;
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseDeclaration UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Declaration");
- }
-
- private ParseResult<Pattern> parsePattern(int startToken) {
- Pattern.Builder result = Pattern.builder();
-
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case TEXT:
- Text text = new Text(input.substring(token.begin, token.end));
- result.add(text);
- break;
- case PLACEHOLDER:
- break;
- case EXPRESSION:
- ParseResult<Expression> exprResult = parseExpression(i);
- i = exprResult.skipLen;
- result.add(exprResult.resultValue);
- break;
- case VARIABLE:
- case IGNORE:
- break;
- case PATTERN:
- if (token.isStart() && i == startToken) { // all good, do nothing
- } else if (token.isEnd()) {
- return new ParseResult<>(i, result.build());
- }
- break;
- default:
- throw new IllegalArgumentException("Parse error: parsePattern UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Pattern");
- }
-
- static class Option {
- String name;
- Value value;
- }
-
- static class Declaration {
- String variableName;
- Expression expr;
- }
-
- static class Variant {
- private final SelectorKeys selectorKeys;
- private final Pattern pattern;
-
- private Variant(Builder builder) {
- this.selectorKeys = builder.selectorKeys.build();
- this.pattern = builder.pattern;
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- */
- public static Builder builder() {
- return new Builder();
- }
-
- public SelectorKeys getSelectorKeys() {
- return selectorKeys;
- }
-
- public Pattern getPattern() {
- return pattern;
- }
-
- /**
- * @hide Only a subset of ICU is exposed in Android
- */
- public static class Builder {
- private final SelectorKeys.Builder selectorKeys = SelectorKeys.builder();
- private Pattern pattern = Pattern.builder().build();
-
- // Prevent direct creation
- private Builder() {
- }
-
- public Builder setSelectorKeys(SelectorKeys selectorKeys) {
- this.selectorKeys.addAll(selectorKeys.getKeys());
- return this;
- }
-
- public Builder addSelectorKey(String selectorKey) {
- this.selectorKeys.add(selectorKey);
- return this;
- }
-
- public Builder setPattern(Pattern pattern) {
- this.pattern = pattern;
- return this;
- }
-
- public Variant build() {
- return new Variant(this);
- }
- }
- }
-
- static class ParseResult<T> {
- final int skipLen;
- final T resultValue;
-
- public ParseResult(int skipLen, T resultValue) {
- this.skipLen = skipLen;
- this.resultValue = resultValue;
- }
- }
-
- private ParseResult<Expression> parseExpression(int startToken) {
- Expression.Builder result = Expression.builder();
-
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case EXPRESSION: // intentional fall-through
- case PLACEHOLDER:
- if (token.isStart() && i == startToken) {
- // all good
- } else if (token.isEnd()) {
- return new ParseResult<>(i, result.build());
- }
- break;
- case FUNCTION:
- result.setFunctionName(input.substring(token.begin + 1, token.end));
- break;
- case LITERAL:
- result.setOperand(Value.builder()
- .setLiteral(input.substring(token.begin + 1, token.end - 1))
- .build());
- break;
- case VARIABLE:
- result.setOperand(Value.builder()
- .setVariableName(input.substring(token.begin + 1, token.end))
- .build());
- break;
- case OPTION:
- Option option = new Option();
- i = parseOptions(i, option);
- result.addOption(option.name, option.value);
- break;
- case OPERAND:
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseExpression UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Expression");
- }
-
- private int parseOptions(int startToken, Option option) {
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case OPTION:
- if (token.isStart() && i == startToken) {
- // all good
- } else if (token.isEnd()) {
- return i;
- }
- break;
- case NAME:
- option.name = input.substring(token.begin, token.end);
- break;
- case LITERAL:
- option.value = Value.builder()
- .setLiteral(input.substring(token.begin + 1, token.end - 1))
- .build();
- break;
- case NMTOKEN:
- option.value = Value.builder()
- .setLiteral(input.substring(token.begin, token.end))
- .build();
- break;
- case VARIABLE:
- option.value = Value.builder()
- .setVariableName(input.substring(token.begin + 1, token.end))
- .build();
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseOptions UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Option");
- }
-
- static String dataModelToString(Mf2DataModel dataModel) {
- return dataModel.toString();
- }
-}
diff --git a/android_icu4j/src/main/java/android/icu/message2/NumberFormatterFactory.java b/android_icu4j/src/main/java/android/icu/message2/NumberFormatterFactory.java
index f10cc180a..368a163e4 100644
--- a/android_icu4j/src/main/java/android/icu/message2/NumberFormatterFactory.java
+++ b/android_icu4j/src/main/java/android/icu/message2/NumberFormatterFactory.java
@@ -1,65 +1,95 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import android.icu.math.BigDecimal;
+import android.icu.number.FormattedNumber;
import android.icu.number.LocalizedNumberFormatter;
+import android.icu.number.Notation;
import android.icu.number.NumberFormatter;
+import android.icu.number.NumberFormatter.GroupingStrategy;
+import android.icu.number.NumberFormatter.SignDisplay;
import android.icu.number.Precision;
+import android.icu.number.Scale;
import android.icu.number.UnlocalizedNumberFormatter;
import android.icu.text.FormattedValue;
+import android.icu.text.NumberingSystem;
+import android.icu.text.PluralRules;
+import android.icu.text.PluralRules.PluralType;
import android.icu.util.CurrencyAmount;
-
+import android.icu.util.MeasureUnit;
/**
* Creates a {@link Formatter} doing numeric formatting, similar to <code>{exp, number}</code>
* in {@link android.icu.text.MessageFormat}.
*/
-class NumberFormatterFactory implements FormatterFactory {
+class NumberFormatterFactory implements FormatterFactory, SelectorFactory {
+ private final String kind;
+
+ public NumberFormatterFactory(String kind) {
+ switch (kind) {
+ case "number": // $FALL-THROUGH$
+ case "integer":
+ break;
+ default:
+ // Default to number
+ kind = "number";
+ }
+ this.kind = kind;
+ }
/**
* {@inheritDoc}
*/
@Override
public Formatter createFormatter(Locale locale, Map<String, Object> fixedOptions) {
- return new NumberFormatterImpl(locale, fixedOptions);
+ return new NumberFormatterImpl(locale, fixedOptions, kind);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Selector createSelector(Locale locale, Map<String, Object> fixedOptions) {
+ String type = OptUtils.getString(fixedOptions, "select", "");
+ PluralType pluralType;
+ switch (type) {
+ case "ordinal":
+ pluralType = PluralType.ORDINAL;
+ break;
+ case "cardinal": // $FALL-THROUGH$
+ default:
+ pluralType = PluralType.CARDINAL;
+ }
+
+ PluralRules rules = PluralRules.forLocale(locale, pluralType);
+ return new PluralSelectorImpl(locale, rules, fixedOptions, kind);
}
static class NumberFormatterImpl implements Formatter {
private final Locale locale;
private final Map<String, Object> fixedOptions;
private final LocalizedNumberFormatter icuFormatter;
+ private final String kind;
final boolean advanced;
- private static LocalizedNumberFormatter formatterForOptions(Locale locale, Map<String, Object> fixedOptions) {
- UnlocalizedNumberFormatter nf;
- String skeleton = OptUtils.getString(fixedOptions, "skeleton");
- if (skeleton != null) {
- nf = NumberFormatter.forSkeleton(skeleton);
- } else {
- nf = NumberFormatter.with();
- Integer minFractionDigits = OptUtils.getInteger(fixedOptions, "minimumFractionDigits");
- if (minFractionDigits != null) {
- nf = nf.precision(Precision.minFraction(minFractionDigits));
- }
- }
- return nf.locale(locale);
- }
-
- NumberFormatterImpl(Locale locale, Map<String, Object> fixedOptions) {
+ NumberFormatterImpl(Locale locale, Map<String, Object> fixedOptions, String kind) {
this.locale = locale;
this.fixedOptions = new HashMap<>(fixedOptions);
- String skeleton = OptUtils.getString(fixedOptions, "skeleton");
+ String skeleton = OptUtils.getString(fixedOptions, "icu:skeleton");
boolean fancy = skeleton != null;
- this.icuFormatter = formatterForOptions(locale, fixedOptions);
+ this.icuFormatter = formatterForOptions(locale, fixedOptions, kind);
this.advanced = fancy;
+ this.kind = kind;
}
LocalizedNumberFormatter getIcuFormatter() {
@@ -88,12 +118,12 @@ class NumberFormatterFactory implements FormatterFactory {
// This is really wasteful, as we don't use the existing
// formatter if even one option is variable.
// We can optimize, but for now will have to do.
- realFormatter = formatterForOptions(locale, mergedOptions);
+ realFormatter = formatterForOptions(locale, mergedOptions, kind);
}
- Integer offset = OptUtils.getInteger(variableOptions, "offset");
+ Integer offset = OptUtils.getInteger(variableOptions, "icu:offset");
if (offset == null && fixedOptions != null) {
- offset = OptUtils.getInteger(fixedOptions, "offset");
+ offset = OptUtils.getInteger(fixedOptions, "icu:offset");
}
if (offset == null) {
offset = 0;
@@ -124,10 +154,240 @@ class NumberFormatterFactory implements FormatterFactory {
if (nrValue != null) {
result = realFormatter.format(nrValue.doubleValue() - offset);
} else {
- result = new PlainStringFormattedValue("NaN");
+ result = new PlainStringFormattedValue("{|" + strValue + "|}");
}
}
return new FormattedPlaceholder(toFormat, result);
}
}
+
+ private static class PluralSelectorImpl implements Selector {
+ private static final String NO_MATCH = "\uFFFDNO_MATCH\uFFFE"; // Unlikely to show in a key
+ private final PluralRules rules;
+ private Map<String, Object> fixedOptions;
+ private LocalizedNumberFormatter icuFormatter;
+
+ private PluralSelectorImpl(
+ Locale locale, PluralRules rules, Map<String, Object> fixedOptions, String kind) {
+ this.rules = rules;
+ this.fixedOptions = fixedOptions;
+ this.icuFormatter = formatterForOptions(locale, fixedOptions, kind);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List<String> matches(
+ Object value, List<String> keys, Map<String, Object> variableOptions) {
+ List<String> result = new ArrayList<>();
+ if (value == null) {
+ return result;
+ }
+ for (String key : keys) {
+ if (matches(value, key, variableOptions)) {
+ result.add(key);
+ } else {
+ result.add(NO_MATCH);
+ }
+ }
+
+ result.sort(PluralSelectorImpl::pluralComparator);
+ return result;
+ }
+
+ // The order is exact values, key, other
+ // There is no need to be very strict, as these are keys that are already equal
+ // So we will not get to compare "1" vs "2", or "one" vs "few".
+ // TODO: This is quite ugly, change when time.
+ private static int pluralComparator(String o1, String o2) {
+ if (o1.equals(o2)) {
+ return 0;
+ }
+ if (NO_MATCH.equals(o1)) {
+ return 1;
+ }
+ if (NO_MATCH.equals(o2)) {
+ return -1;
+ }
+ // * sorts last
+ if ("*".equals(o1)) {
+ return 1;
+ }
+ if ("*".equals(o2)) {
+ return -1;
+ }
+ // Numbers sort first
+ if (OptUtils.asNumber(o1) != null) {
+ return -1;
+ }
+ if (OptUtils.asNumber(o2) != null) {
+ return 1;
+ }
+ // At this point they are both strings
+ // We should never get here, so the order does not really matter
+ return o1.compareTo(o2);
+ }
+
+ private boolean matches(Object value, String key, Map<String, Object> variableOptions) {
+ if ("*".equals(key)) {
+ return true;
+ }
+
+ Integer offset = OptUtils.getInteger(variableOptions, "icu:offset");
+ if (offset == null && fixedOptions != null) {
+ offset = OptUtils.getInteger(fixedOptions, "icu:offset");
+ }
+ if (offset == null) {
+ offset = 0;
+ }
+
+ Number valToCheck = Double.MIN_VALUE;
+ if (value instanceof FormattedPlaceholder) {
+ FormattedPlaceholder fph = (FormattedPlaceholder) value;
+ value = fph.getInput();
+ }
+
+ if (value instanceof Number) {
+ valToCheck = ((Number) value).doubleValue();
+ } else {
+ return false;
+ }
+
+ Number keyNrVal = OptUtils.asNumber(key);
+ if (keyNrVal != null && valToCheck.doubleValue() == keyNrVal.doubleValue()) {
+ return true;
+ }
+
+ FormattedNumber formatted = icuFormatter.format(valToCheck.doubleValue() - offset);
+ String match = rules.select(formatted);
+ if (match.equals("other")) {
+ match = "*";
+ }
+ return match.equals(key);
+ }
+ }
+
+ private static LocalizedNumberFormatter formatterForOptions(
+ Locale locale, Map<String, Object> fixedOptions, String kind) {
+ UnlocalizedNumberFormatter nf;
+ String skeleton = OptUtils.getString(fixedOptions, "icu:skeleton");
+ if (skeleton != null) {
+ return NumberFormatter.forSkeleton(skeleton).locale(locale);
+ }
+
+ Integer option;
+ String strOption;
+ nf = NumberFormatter.with();
+
+ // These options don't apply to `:integer`
+ if ("number".equals(kind)) {
+ Notation notation;
+ switch (OptUtils.getString(fixedOptions, "notation", "standard")) {
+ case "scientific":
+ notation = Notation.scientific();
+ break;
+ case "engineering":
+ notation = Notation.engineering();
+ break;
+ case "compact":
+ {
+ switch (OptUtils.getString(fixedOptions, "compactDisplay", "short")) {
+ case "long":
+ notation = Notation.compactLong();
+ break;
+ case "short": // $FALL-THROUGH$
+ default:
+ notation = Notation.compactShort();
+ }
+ }
+ break;
+ case "standard": // $FALL-THROUGH$
+ default:
+ notation = Notation.simple();
+ }
+ nf = nf.notation(notation);
+
+ strOption = OptUtils.getString(fixedOptions, "style", "decimal");
+ if (strOption.equals("percent")) {
+ nf = nf.unit(MeasureUnit.PERCENT).scale(Scale.powerOfTen(2));
+ }
+
+ option = OptUtils.getInteger(fixedOptions, "minimumFractionDigits");
+ if (option != null) {
+ nf = nf.precision(Precision.minFraction(option));
+ }
+ option = OptUtils.getInteger(fixedOptions, "maximumFractionDigits");
+ if (option != null) {
+ nf = nf.precision(Precision.maxFraction(option));
+ }
+ option = OptUtils.getInteger(fixedOptions, "minimumSignificantDigits");
+ if (option != null) {
+ nf = nf.precision(Precision.minSignificantDigits(option));
+ }
+ } // end of `:number` specific options
+
+ strOption = OptUtils.getString(fixedOptions, "numberingSystem", "");
+ if (!strOption.isEmpty()) {
+ strOption = strOption.toLowerCase(Locale.US);
+ // No good way to validate, there are too many.
+ NumberingSystem ns = NumberingSystem.getInstanceByName(strOption);
+ nf = nf.symbols(ns);
+ }
+
+ // The options below apply to both `:number` and `:integer`
+ option = OptUtils.getInteger(fixedOptions, "minimumIntegerDigits");
+ if (option != null) {
+ // TODO! Ask Shane. nf.integerWidth(null) ?
+ }
+ option = OptUtils.getInteger(fixedOptions, "maximumSignificantDigits");
+ if (option != null) {
+ nf = nf.precision(Precision.maxSignificantDigits(option));
+ }
+
+ strOption = OptUtils.getString(fixedOptions, "signDisplay", "auto");
+ SignDisplay signDisplay;
+ switch (strOption) {
+ case "always":
+ signDisplay = SignDisplay.ALWAYS;
+ break;
+ case "exceptZero":
+ signDisplay = SignDisplay.EXCEPT_ZERO;
+ break;
+ case "negative":
+ signDisplay = SignDisplay.NEGATIVE;
+ break;
+ case "never":
+ signDisplay = SignDisplay.NEVER;
+ break;
+ case "auto": // $FALL-THROUGH$
+ default:
+ signDisplay = SignDisplay.AUTO;
+ }
+ nf = nf.sign(signDisplay);
+
+ GroupingStrategy grp;
+ strOption = OptUtils.getString(fixedOptions, "useGrouping", "auto");
+ switch (strOption) {
+ case "always":
+ grp = GroupingStrategy.ON_ALIGNED;
+ break; // TODO: check with Shane
+ case "never":
+ grp = GroupingStrategy.OFF;
+ break;
+ case "min2":
+ grp = GroupingStrategy.MIN2;
+ break;
+ case "auto": // $FALL-THROUGH$
+ default:
+ grp = GroupingStrategy.AUTO;
+ }
+ nf = nf.grouping(grp);
+
+ if (kind.equals("integer")) {
+ nf = nf.precision(Precision.integer());
+ }
+
+ return nf.locale(locale);
+ }
}
diff --git a/android_icu4j/src/main/java/android/icu/message2/OptUtils.java b/android_icu4j/src/main/java/android/icu/message2/OptUtils.java
index b7ece5620..8b74d9239 100644
--- a/android_icu4j/src/main/java/android/icu/message2/OptUtils.java
+++ b/android_icu4j/src/main/java/android/icu/message2/OptUtils.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
@@ -14,14 +14,10 @@ class OptUtils {
return (Number) value;
}
if (value instanceof CharSequence) {
- String strValue = value.toString();
try {
- return Double.parseDouble(strValue);
- } catch (NumberFormatException e) {
- }
- try {
- return Integer.decode(strValue);
+ return Double.parseDouble(value.toString());
} catch (NumberFormatException e) {
+ /* just ignore, we want to try more */
}
}
return null;
@@ -39,15 +35,15 @@ class OptUtils {
return null;
}
- static String getString(Map<String, Object> options, String key) {
+ static String getString(Map<String, Object> options, String key, String defaultVal) {
Object value = options.get(key);
- if (value == null) {
- return null;
- }
if (value instanceof CharSequence) {
return value.toString();
}
- return null;
+ return defaultVal;
}
+ static String getString(Map<String, Object> options, String key) {
+ return getString(options, key, null);
+ }
}
diff --git a/android_icu4j/src/main/java/android/icu/message2/PlainStringFormattedValue.java b/android_icu4j/src/main/java/android/icu/message2/PlainStringFormattedValue.java
index 388647b4b..370c30d4c 100644
--- a/android_icu4j/src/main/java/android/icu/message2/PlainStringFormattedValue.java
+++ b/android_icu4j/src/main/java/android/icu/message2/PlainStringFormattedValue.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
diff --git a/android_icu4j/src/main/java/android/icu/message2/PluralSelectorFactory.java b/android_icu4j/src/main/java/android/icu/message2/PluralSelectorFactory.java
deleted file mode 100644
index b94170992..000000000
--- a/android_icu4j/src/main/java/android/icu/message2/PluralSelectorFactory.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package android.icu.message2;
-
-import java.util.Locale;
-import java.util.Map;
-
-import android.icu.number.FormattedNumber;
-import android.icu.text.FormattedValue;
-import android.icu.text.PluralRules;
-import android.icu.text.PluralRules.PluralType;
-
-/**
- * Creates a {@link Selector} doing plural selection, similar to <code>{exp, plural}</code>
- * in {@link android.icu.text.MessageFormat}.
- */
-class PluralSelectorFactory implements SelectorFactory {
- private final PluralType pluralType;
-
- /**
- * Creates a {@code PluralSelectorFactory} of the desired type.
- *
- * @param type the kind of plural selection we want
- */
- // TODO: Use an enum
- PluralSelectorFactory(String type) {
- switch (type) {
- case "ordinal":
- pluralType = PluralType.ORDINAL;
- break;
- case "cardinal": // intentional fallthrough
- default:
- pluralType = PluralType.CARDINAL;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Selector createSelector(Locale locale, Map<String, Object> fixedOptions) {
- PluralRules rules = PluralRules.forLocale(locale, pluralType);
- return new PluralSelectorImpl(rules, fixedOptions);
- }
-
- private static class PluralSelectorImpl implements Selector {
- private final PluralRules rules;
- private Map<String, Object> fixedOptions;
-
- private PluralSelectorImpl(PluralRules rules, Map<String, Object> fixedOptions) {
- this.rules = rules;
- this.fixedOptions = fixedOptions;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean matches(Object value, String key, Map<String, Object> variableOptions) {
- if (value == null) {
- return false;
- }
- if ("*".equals(key)) {
- return true;
- }
-
- Integer offset = OptUtils.getInteger(variableOptions, "offset");
- if (offset == null && fixedOptions != null) {
- offset = OptUtils.getInteger(fixedOptions, "offset");
- }
- if (offset == null) {
- offset = 0;
- }
-
- double valToCheck = Double.MIN_VALUE;
- FormattedValue formattedValToCheck = null;
- if (value instanceof FormattedPlaceholder) {
- FormattedPlaceholder fph = (FormattedPlaceholder) value;
- value = fph.getInput();
- formattedValToCheck = fph.getFormattedValue();
- }
-
- if (value instanceof Double) {
- valToCheck = (double) value;
- } else if (value instanceof Integer) {
- valToCheck = (Integer) value;
- } else {
- return false;
- }
-
- // If there is nothing "tricky" about the formatter part we compare values directly.
- // Right now ICU4J checks if the formatter is a DecimalFormt, which also feels "hacky".
- // We need something better.
- if (!fixedOptions.containsKey("skeleton") && !variableOptions.containsKey("skeleton")) {
- try { // for match exact.
- if (Double.parseDouble(key) == valToCheck) {
- return true;
- }
- } catch (NumberFormatException e) {
- }
- }
-
- String match = formattedValToCheck instanceof FormattedNumber
- ? rules.select((FormattedNumber) formattedValToCheck)
- : rules.select(valToCheck - offset);
- return match.equals(key);
- }
- }
-}
diff --git a/android_icu4j/src/main/java/android/icu/message2/Selector.java b/android_icu4j/src/main/java/android/icu/message2/Selector.java
index 895c2d78b..f821d6017 100644
--- a/android_icu4j/src/main/java/android/icu/message2/Selector.java
+++ b/android_icu4j/src/main/java/android/icu/message2/Selector.java
@@ -1,9 +1,10 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
+import java.util.List;
import java.util.Map;
/**
@@ -27,7 +28,7 @@ public interface Selector {
* for {@code matches(1, "1")}, {@code matches(1, "one")}, and {@code matches(1, "*")}.</p>
*
* @param value the value to select on.
- * @param key the key to test for matching.
+ * @param keys the key to test for matching.
* @param variableOptions options that are not know at build time.
* @return the formatted string.
*
@@ -35,5 +36,5 @@ public interface Selector {
* @hide draft / provisional / internal are hidden on Android
*/
@Deprecated
- boolean matches(Object value, String key, Map<String, Object> variableOptions);
+ List<String> matches(Object value, List<String> keys, Map<String, Object> variableOptions);
}
diff --git a/android_icu4j/src/main/java/android/icu/message2/SelectorFactory.java b/android_icu4j/src/main/java/android/icu/message2/SelectorFactory.java
index 2b9ead386..10d76d36c 100644
--- a/android_icu4j/src/main/java/android/icu/message2/SelectorFactory.java
+++ b/android_icu4j/src/main/java/android/icu/message2/SelectorFactory.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
diff --git a/android_icu4j/src/main/java/android/icu/message2/StringUtils.java b/android_icu4j/src/main/java/android/icu/message2/StringUtils.java
new file mode 100644
index 000000000..8c87cf264
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/StringUtils.java
@@ -0,0 +1,143 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+class StringUtils {
+
+ /*
+ * abnf: content-char = %x01-08 ; omit NULL (%x00), HTAB (%x09) and LF (%x0A)
+ * abnf: / %x0B-0C ; omit CR (%x0D)
+ * abnf: / %x0E-1F ; omit SP (%x20)
+ * abnf: / %x21-2D ; omit . (%x2E)
+ * abnf: / %x2F-3F ; omit @ (%x40)
+ * abnf: / %x41-5B ; omit \ (%x5C)
+ * abnf: / %x5D-7A ; omit { | } (%x7B-7D)
+ * abnf: / %x7E-D7FF ; omit surrogates
+ * abnf: / %xE000-10FFFF
+ */
+ static boolean isContentChar(int cp) {
+ return (cp >= 0x0001 && cp <= 0x0008) // omit HTAB (%x09) and LF (%x0A)
+ || (cp >= 0x000B && cp <= 0x000C) // omit CR (%x0D)
+ || (cp >= 0x000E && cp <= 0x001F) // omit SP (%x20)
+ || (cp >= 0x0021 && cp <= 0x002D) // omit . (%x2E)
+ || (cp >= 0x002F && cp <= 0x003F) // omit @ (%x40)
+ || (cp >= 0x0041 && cp <= 0x005B) // omit \ (%x5C)
+ || (cp >= 0x005D && cp <= 0x007A) // omit { | } (%x7B-7D)
+ || (cp >= 0x007E && cp <= 0xD7FF) // omit surrogates
+ || (cp >= 0xE000 && cp <= 0x10FFFF);
+ }
+
+ // abnf: text-char = content-char / s / "." / "@" / "|"
+ static boolean isTextChar(int cp) {
+ return isContentChar(cp) || isWhitespace(cp) || cp == '.' || cp == '@' || cp == '|';
+ }
+
+ // abnf: backslash = %x5C ; U+005C REVERSE SOLIDUS "\"
+ static boolean isBackslash(int cp) {
+ return cp == '\\';
+ }
+
+ /*
+ * ; Whitespace
+ * abnf: s = 1*( SP / HTAB / CR / LF / %x3000 )
+ */
+ static boolean isWhitespace(int cp) {
+ return cp == ' ' || cp == '\t' || cp == '\r' || cp == '\n' || cp == '\u3000';
+ }
+
+ /*
+ * abnf: name-start = ALPHA / "_"
+ * abnf: / %xC0-D6 / %xD8-F6 / %xF8-2FF
+ * abnf: / %x370-37D / %x37F-1FFF / %x200C-200D
+ * abnf: / %x2070-218F / %x2C00-2FEF / %x3001-D7FF
+ * abnf: / %xF900-FDCF / %xFDF0-FFFC / %x10000-EFFFF
+ */
+ static boolean isNameStart(int cp) {
+ return isAlpha(cp)
+ || cp == '_'
+ || (cp >= 0x00C0 && cp <= 0x00D6)
+ || (cp >= 0x00D8 && cp <= 0x00F6)
+ || (cp >= 0x00F8 && cp <= 0x02FF)
+ || (cp >= 0x0370 && cp <= 0x037D)
+ || (cp >= 0x037F && cp <= 0x1FFF)
+ || (cp >= 0x200C && cp <= 0x200D)
+ || (cp >= 0x2070 && cp <= 0x218F)
+ || (cp >= 0x2C00 && cp <= 0x2FEF)
+ || (cp >= 0x3001 && cp <= 0xD7FF)
+ || (cp >= 0xF900 && cp <= 0xFDCF)
+ || (cp >= 0xFDF0 && cp <= 0xFFFC)
+ || (cp >= 0x10000 && cp <= 0xEFFFF);
+ }
+
+ /*
+ * abnf: name-char = name-start / DIGIT / "-" / "."
+ * abnf: / %xB7 / %x300-36F / %x203F-2040
+ */
+ static boolean isNameChar(int cp) {
+ return isNameStart(cp)
+ || isDigit(cp)
+ || cp == '-'
+ || cp == '.'
+ || cp == 0x00B7
+ || (cp >= 0x0300 && cp <= 0x036F)
+ || (cp >= 0x203F && cp <= 0x2040);
+ }
+
+ // abnf: private-start = "^" / "&"
+ static boolean isPrivateStart(int cp) {
+ return cp == '^' || cp == '&';
+ }
+
+ // abnf: quoted-char = content-char / s / "." / "@" / "{" / "}"
+ static boolean isQuotedChar(int cp) {
+ return isContentChar(cp)
+ || isWhitespace(cp)
+ || cp == '.'
+ || cp == '@'
+ || cp == '{'
+ || cp == '}';
+ }
+
+ // abnf: reserved-char = content-char / "."
+ static boolean isReservedChar(int cp) {
+ return isContentChar(cp) || cp == '.';
+ }
+
+ static boolean isSimpleStartChar(int cp) {
+ return StringUtils.isContentChar(cp)
+ || StringUtils.isWhitespace(cp)
+ || cp == '@'
+ || cp == '|';
+ }
+
+ // ALPHA is predefined in ABNF as plain ASCII, A-Z and a-z
+ // See https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_form
+ static boolean isAlpha(int cp) {
+ return (cp >= 'a' && cp <= 'z') || (cp >= 'A' && cp <= 'Z');
+ }
+
+ // DIGIT is predefined in ABNF as plain ASCII, 0-9
+ // See https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_form
+ static boolean isDigit(int cp) {
+ return cp >= '0' && cp <= '9';
+ }
+
+ // abnf: function = ":" identifier *(s option)
+ static boolean isFunctionSigil(int cp) {
+ return cp == ':';
+ }
+
+ // abnf: private-start = "^" / "&"
+ static boolean isPrivateAnnotationSigil(int cp) {
+ return cp == '^' || cp == '&';
+ }
+
+ // abnf: reserved-annotation-start = "!" / "%" / "*" / "+" / "<" / ">" / "?" / "~"
+ private static final String RESERVED_ANNOTATION_SIGILS = "!%*+<>?~";
+
+ static boolean isReservedAnnotationSigil(int cp) {
+ return RESERVED_ANNOTATION_SIGILS.indexOf(cp) != -1;
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/StringView.java b/android_icu4j/src/main/java/android/icu/message2/StringView.java
new file mode 100644
index 000000000..0dca0b26c
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/message2/StringView.java
@@ -0,0 +1,39 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.message2;
+
+class StringView implements CharSequence {
+ final int offset;
+ final String text;
+
+ StringView(String text, int offset) {
+ this.offset = offset;
+ this.text = text;
+ }
+
+ StringView(String text) {
+ this(text, 0);
+ }
+
+ @Override
+ public int length() {
+ return text.length() - offset;
+ }
+
+ @Override
+ public char charAt(int index) {
+ return text.charAt(index + offset);
+ }
+
+ @Override
+ public CharSequence subSequence(int start, int end) {
+ return text.subSequence(start + offset, end + offset);
+ }
+
+ @Override
+ public String toString() {
+ return text.substring(offset);
+ }
+}
diff --git a/android_icu4j/src/main/java/android/icu/message2/TextSelectorFactory.java b/android_icu4j/src/main/java/android/icu/message2/TextSelectorFactory.java
index f293a1297..cb1ef0291 100644
--- a/android_icu4j/src/main/java/android/icu/message2/TextSelectorFactory.java
+++ b/android_icu4j/src/main/java/android/icu/message2/TextSelectorFactory.java
@@ -1,12 +1,14 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.message2;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
-
+import java.util.Objects;
/**
* Creates a {@link Selector} doing literal selection, similar to <code>{exp, select}</code>
@@ -27,11 +29,27 @@ class TextSelectorFactory implements SelectorFactory {
* {@inheritDoc}
*/
@Override
- public boolean matches(Object value, String key, Map<String, Object> variableOptions) {
+ public List<String> matches(
+ Object value, List<String> keys, Map<String, Object> variableOptions) {
+ List<String> result = new ArrayList<>();
+ if (value == null) {
+ return result;
+ }
+ for (String key : keys) {
+ if (matches(value, key)) {
+ result.add(key);
+ }
+ }
+ result.sort(String::compareTo);
+ return result;
+ }
+
+ @SuppressWarnings("static-method")
+ private boolean matches(Object value, String key) {
if ("*".equals(key)) {
return true;
}
- return key.equals(value);
+ return key.equals(Objects.toString(value));
}
}
}
diff --git a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
index 48a4e4410..9ef5a5c29 100644
--- a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
@@ -117,6 +117,16 @@ public class LocalizedNumberFormatter extends NumberFormatterSettings<LocalizedN
}
/**
+ * Disassociate the locale from this formatter.
+ *
+ * @return The fluent chain.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ public UnlocalizedNumberFormatter withoutLocale() {
+ return new UnlocalizedNumberFormatter(this, KEY_LOCALE, null);
+ }
+
+ /**
* Helper method that creates a FormattedStringBuilder and formats.
*/
private FormattedNumber format(DecimalQuantity fq) {
diff --git a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
index 6873c0397..c711d34c2 100644
--- a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
@@ -79,6 +79,16 @@ public class LocalizedNumberRangeFormatter extends NumberRangeFormatterSettings<
return formatImpl(dq1, dq2, first.equals(second));
}
+ /**
+ * Disassociate the locale from this formatter.
+ *
+ * @return The fluent chain.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ public UnlocalizedNumberRangeFormatter withoutLocale() {
+ return new UnlocalizedNumberRangeFormatter(this, KEY_LOCALE, null);
+ }
+
FormattedNumberRange formatImpl(DecimalQuantity first, DecimalQuantity second, boolean equalBeforeRounding) {
if (fImpl == null) {
fImpl = new NumberRangeFormatterImpl(resolve());
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java
index 894bba455..cf9cde380 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java
@@ -438,5 +438,4 @@ class NumberRangeFormatterImpl {
assert mod != null;
return mod;
}
-
}
diff --git a/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java b/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
index ff19242e2..7aae53f83 100644
--- a/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
+++ b/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
@@ -253,7 +253,7 @@ public class ScientificNotation extends Notation {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
// This method is not currently used. (unsafe path not used in range formatting)
assert false;
return false;
@@ -332,7 +332,7 @@ public class ScientificNotation extends Notation {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
if (!(other instanceof ScientificModifier)) {
return false;
}
diff --git a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
index f551d0019..4cfbb9081 100644
--- a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
@@ -19,7 +19,7 @@ public class UnlocalizedNumberFormatter extends NumberFormatterSettings<Unlocali
/** Base constructor; called during startup only. Sets the threshold to the default value of 3. */
UnlocalizedNumberFormatter() {
- super(null, KEY_THRESHOLD, new Long(3));
+ super(null, KEY_THRESHOLD, 3L);
}
UnlocalizedNumberFormatter(NumberFormatterSettings<?> parent, int key, Object value) {
diff --git a/android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java b/android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java
index 8903d0afb..d584f1a53 100644
--- a/android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java
@@ -184,7 +184,7 @@ class AnyTransliterator extends Transliterator {
}
}
- Integer key = Integer.valueOf(source);
+ Integer key = source;
Transliterator t = cache.get(key);
if (t == null) {
String sourceName = UScript.getName(source);
diff --git a/android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java b/android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java
index 27d8c5466..c69eb9e3f 100644
--- a/android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java
@@ -150,6 +150,10 @@ public final class CanonicalIterator {
}
}
+ // To avoid infinity loop caused by permute, we limit the depth of recursive
+ // call to permute and throw exception.
+ // We know in some unit test we need at least 4. Set to 8 just in case some
+ // unforseen use cases.
/**
* Simple implementation of permutation.
* <br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
@@ -161,9 +165,27 @@ public final class CanonicalIterator {
*/
@Deprecated
public static void permute(String source, boolean skipZeros, Set<String> output) {
+ permute(source, skipZeros, output, 0);
+ }
+
+ private static int PERMUTE_DEPTH_LIMIT = 8;
+ /**
+ * Simple implementation of permutation.
+ * <br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
+ * @param source the string to find permutations for
+ * @param skipZeros set to true to skip characters with canonical combining class zero
+ * @param output the set to add the results to
+ * @param depth the depth of the recursive call.
+ * @deprecated This API is ICU internal only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ private static void permute(String source, boolean skipZeros, Set<String> output, int depth) {
// TODO: optimize
//if (PROGRESS) System.out.println("Permute: " + source);
-
+ if (depth > PERMUTE_DEPTH_LIMIT) {
+ throw new UnsupportedOperationException("Stack too deep:" + depth);
+ }
// optimization:
// if zero or one character, just return a set with it
// we check for length < 2 to keep from counting code points all the time
@@ -189,7 +211,7 @@ public final class CanonicalIterator {
// see what the permutations of the characters before and after this one are
subpermute.clear();
permute(source.substring(0,i)
- + source.substring(i + UTF16.getCharCount(cp)), skipZeros, subpermute);
+ + source.substring(i + UTF16.getCharCount(cp)), skipZeros, subpermute, depth+1);
// prefix this character to all of them
String chStr = UTF16.valueOf(source, i);
diff --git a/android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java b/android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java
index a5dd3a8d8..873bae2a9 100644
--- a/android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java
@@ -2281,7 +2281,17 @@ public class DateIntervalFormat extends UFormat {
private static boolean fieldExistsInSkeleton(int field, String skeleton)
{
String fieldChar = DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field];
- return ( (skeleton.indexOf(fieldChar) == -1) ? false : true ) ;
+ boolean result = skeleton.contains(fieldChar);
+ if (!result) {
+ if (fieldChar.equals("M")) {
+ // if the caller specified Calendar.MONTH, check the pattern for both M and L
+ result = skeleton.contains("L");
+ } else if (fieldChar.equals("y")) {
+ // if the caller specified Calendar.YEAR, check the pattern for y, Y, u, U, and r
+ result = skeleton.contains("U") || skeleton.contains("Y") || skeleton.contains("u") || skeleton.contains("r");
+ }
+ }
+ return result;
}
diff --git a/android_icu4j/src/main/java/android/icu/text/MessageFormat.java b/android_icu4j/src/main/java/android/icu/text/MessageFormat.java
index 5e9bd0af9..51d910c5c 100644
--- a/android_icu4j/src/main/java/android/icu/text/MessageFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/MessageFormat.java
@@ -1246,7 +1246,7 @@ public class MessageFormat extends UFormat {
String key = null;
if(args!=null) {
argNumber=part.getValue(); // ARG_NUMBER
- argId = Integer.valueOf(argNumber);
+ argId = argNumber;
} else {
if(part.getType()==MessagePattern.Part.Type.ARG_NAME) {
key=msgPattern.getSubstring(part);
@@ -1601,7 +1601,7 @@ public class MessageFormat extends UFormat {
int argNumber=part.getValue(); // ARG_NUMBER
if (dest.attributes != null) {
// We only need argId if we add it into the attributes.
- argId = Integer.valueOf(argNumber);
+ argId = argNumber;
}
if(0<=argNumber && argNumber<args.length) {
arg=args[argNumber];
diff --git a/android_icu4j/src/main/java/android/icu/text/NFRule.java b/android_icu4j/src/main/java/android/icu/text/NFRule.java
index 71b3e30d6..acc68c3e4 100644
--- a/android_icu4j/src/main/java/android/icu/text/NFRule.java
+++ b/android_icu4j/src/main/java/android/icu/text/NFRule.java
@@ -113,7 +113,7 @@ final class NFRule {
/**
* The RuleBasedNumberFormat that owns this rule
*/
- private final RuleBasedNumberFormat formatter;
+ final RuleBasedNumberFormat formatter;
//-----------------------------------------------------------------------
// construction
@@ -731,6 +731,13 @@ final class NFRule {
return power(radix, exponent);
}
+ /**
+ * Internal function used by the rounding code in MultiplierSubstitution.
+ */
+ boolean hasModulusSubstitution() {
+ return (sub1 instanceof ModulusSubstitution) || (sub2 instanceof ModulusSubstitution);
+ }
+
//-----------------------------------------------------------------------
// formatting
//-----------------------------------------------------------------------
@@ -896,13 +903,13 @@ final class NFRule {
* character not consumed by matching the text against this rule
* (if this rule doesn't match the text at all, the parse position
* if left unchanged (presumably at 0) and the function returns
- * new Long(0)).
+ * Long.valueOf(0)).
* @param isFractionRule True if this rule is contained within a
* fraction rule set. This is only used if the rule has no
* substitutions.
* @return If this rule matched the text, this is the rule's base value
* combined appropriately with the results of parsing the substitutions.
- * If nothing matched, this is new Long(0) and the parse position is
+ * If nothing matched, this is Long.valueOf(0) and the parse position is
* left unchanged. The result will be an instance of Long if the
* result is an integer and Double otherwise. The result is never null.
*/
@@ -1053,9 +1060,9 @@ final class NFRule {
// return the result as a Long if possible, or as a Double
if (result == (long)result) {
- return Long.valueOf((long)result);
+ return (long) result;
} else {
- return new Double(result);
+ return result;
}
}
@@ -1120,7 +1127,7 @@ final class NFRule {
* consider rules with base values lower than this value.
* @return If there's a match, this is the result of composing
* baseValue with the result of matching the substitution. Otherwise,
- * this is new Long(0). It's never null. If the result is an integer,
+ * this is Long.valueOf(0). It's never null. If the result is an integer,
* this will be an instance of Long; otherwise, it's an instance of
* Double.
*/
diff --git a/android_icu4j/src/main/java/android/icu/text/NFRuleSet.java b/android_icu4j/src/main/java/android/icu/text/NFRuleSet.java
index ed2e37501..0394a6be6 100644
--- a/android_icu4j/src/main/java/android/icu/text/NFRuleSet.java
+++ b/android_icu4j/src/main/java/android/icu/text/NFRuleSet.java
@@ -749,7 +749,7 @@ final class NFRuleSet {
* will be an instance of Long if it's an integral value; otherwise,
* it will be an instance of Double. This function always returns
* a valid object: If nothing matched the input string at all,
- * this function returns new Long(0), and the parse position is
+ * this function returns Long.valueOf(0), and the parse position is
* left unchanged.
*/
public Number parse(String text, ParsePosition parsePosition, double upperBound, int nonNumericalExecutedRuleMask) {
diff --git a/android_icu4j/src/main/java/android/icu/text/NFSubstitution.java b/android_icu4j/src/main/java/android/icu/text/NFSubstitution.java
index c65d90891..7046b28aa 100644
--- a/android_icu4j/src/main/java/android/icu/text/NFSubstitution.java
+++ b/android_icu4j/src/main/java/android/icu/text/NFSubstitution.java
@@ -12,6 +12,7 @@ package android.icu.text;
import java.text.ParsePosition;
import android.icu.impl.number.DecimalQuantity_DualStorageBCD;
+import android.icu.math.BigDecimal;
//===================================================================
// NFSubstitution (abstract base class)
@@ -306,16 +307,10 @@ abstract class NFSubstitution {
ruleSet.format(numberToFormat, toInsertInto, position + pos, recursionCount);
} else {
if (number <= MAX_INT64_IN_DOUBLE) {
- // or perform the transformation on the number (preserving
- // the result's fractional part if the formatter it set
- // to show it), then use that formatter's format() method
+ // or perform the transformation on the number,
+ // then use that formatter's format() method
// to format the result
- double numberToFormat = transformNumber((double) number);
- if (numberFormat.getMaximumFractionDigits() == 0) {
- numberToFormat = Math.floor(numberToFormat);
- }
-
- toInsertInto.insert(position + pos, numberFormat.format(numberToFormat));
+ toInsertInto.insert(position + pos, numberFormat.format(transformNumber((double) number)));
}
else {
// We have gone beyond double precision. Something has to give.
@@ -422,7 +417,7 @@ abstract class NFSubstitution {
* @return If there's a match, this is the result of composing
* baseValue with whatever was returned from matching the
* characters. This will be either a Long or a Double. If there's
- * no match this is new Long(0) (not null), and parsePosition
+ * no match this is Long.valueOf(0) (not null), and parsePosition
* is left unchanged.
*/
public Number doParse(String text, ParsePosition parsePosition, double baseValue,
@@ -485,9 +480,9 @@ abstract class NFSubstitution {
// the result.
result = composeRuleValue(result, baseValue);
if (result == (long)result) {
- return Long.valueOf((long)result);
+ return (long) result;
} else {
- return new Double(result);
+ return result;
}
// if the parse was UNsuccessful, return 0
@@ -667,6 +662,12 @@ class MultiplierSubstitution extends NFSubstitution {
*/
long divisor;
+ /**
+ * A backpointer to the owning rule. Used in the rounding logic to determine
+ * whether the owning rule also has a modulus substitution.
+ */
+ NFRule owningRule;
+
//-----------------------------------------------------------------------
// construction
//-----------------------------------------------------------------------
@@ -690,6 +691,7 @@ class MultiplierSubstitution extends NFSubstitution {
// substitution. Rather than keeping a back-pointer to the
// rule, we keep a copy of the divisor
this.divisor = rule.getDivisor();
+ this.owningRule = rule;
if (divisor == 0) { // this will cause recursion
throw new IllegalStateException("Substitution with divisor 0 " + description.substring(0, pos) +
@@ -750,26 +752,25 @@ class MultiplierSubstitution extends NFSubstitution {
*/
@Override
public double transformNumber(double number) {
- boolean doFloor = ruleSet != null;
- if (!doFloor) {
- // This is a HACK that partially addresses ICU-22313. The original code wanted us to do
- // floor() on the result if we were passing it to another rule set, but not if we were passing
- // it to a DecimalFormat. But the DurationRules rule set has multiplier substitutions where
- // we DO want to do the floor() operation. What we REALLY want is to do floor() any time
- // the owning rule also has a ModulusSubsitution, but we don't have access to that information
- // here, so instead we're doing a floor() any time the DecimalFormat has maxFracDigits equal to
- // 0. This seems to work with our existing rule sets, but could be a problem in the future,
- // but the "real" fix for DurationRules isn't worth doing, since we're deprecating DurationRules
- // anyway. This is enough to keep it from being egregiously wrong, without obvious side
- // effects. --rtg 8/16/23
- if (numberFormat == null || numberFormat.getMaximumFractionDigits() == 0) {
- doFloor = true;
- }
- }
- if (!doFloor) {
- return number / divisor;
- } else {
+ // Most of the time, when a number is handled by an NFSubstitution, we do a floor() on it, but
+ // if a substitution uses a DecimalFormat to format the number instead of a ruleset, we generally
+ // don't want to do a floor()-- we want to keep the value intact so that the DecimalFormat can
+ // either include the fractional part or round properly. The big exception to this is here in
+ // MultiplierSubstitution. If the rule includes two substitutions, the MultiplierSubstitution
+ // (which is handling the larger part of the number) really _does_ want to do a floor(), because
+ // the ModulusSubstitution (which is handling the smaller part of the number) will take
+ // care of the fractional part. (Consider something like `1/12: <0< feet >0.0> inches;`.)
+ // But if there is no ModulusSubstitution, we're shortening the number in some way-- the "larger part"
+ // of the number is the only part we're keeping. Even if the DecimalFormat doesn't include the
+ // fractional part in its output, we still want it to round. (Consider something like `1/1000: <0<K;`.)
+ // (TODO: The ROUND_FLOOR thing is a kludge to preserve the previous floor-always behavior. What we
+ // probably really want to do is just set the rounding mode on the DecimalFormat to match the rounding
+ // mode on the RuleBasedNumberFormat and then pass the number to it whole and let it do its own rounding.
+ // But before making that change, we'd have to make sure it didn't have undesirable side effects.)
+ if (ruleSet != null || owningRule.hasModulusSubstitution() || owningRule.formatter.getRoundingMode() == BigDecimal.ROUND_FLOOR) {
return Math.floor(number / divisor);
+ } else {
+ return number / divisor;
}
}
@@ -1029,9 +1030,9 @@ class ModulusSubstitution extends NFSubstitution {
result = composeRuleValue(result, baseValue);
if (result == (long)result) {
- return Long.valueOf((long)result);
+ return (long) result;
} else {
- return new Double(result);
+ return result;
}
} else {
return tempResult;
@@ -1312,7 +1313,7 @@ class FractionalPartSubstitution extends NFSubstitution {
* @param lenientParse If true, try matching the text as numerals if
* matching as words doesn't work
* @return If the match was successful, the current partial parse
- * result; otherwise new Long(0). The result is either a Long or
+ * result; otherwise Long.valueOf(0). The result is either a Long or
* a Double.
*/
@Override
@@ -1361,7 +1362,7 @@ class FractionalPartSubstitution extends NFSubstitution {
result = fq.toDouble();
result = composeRuleValue(result, baseValue);
- return new Double(result);
+ return result;
}
}
@@ -1694,7 +1695,7 @@ class NumeratorSubstitution extends NFSubstitution {
--zeroCount;
}
// d is now our true denominator
- result = new Double(n/(double)d);
+ result = (double)n/(double)d;
}
return result;
diff --git a/android_icu4j/src/main/java/android/icu/text/PersonName.java b/android_icu4j/src/main/java/android/icu/text/PersonName.java
index 9dabb67e2..abb8e3e20 100644
--- a/android_icu4j/src/main/java/android/icu/text/PersonName.java
+++ b/android_icu4j/src/main/java/android/icu/text/PersonName.java
@@ -16,7 +16,6 @@ import java.util.Set;
*
* @see SimplePersonName
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public interface PersonName {
//==============================================================================
@@ -24,32 +23,27 @@ public interface PersonName {
/**
* Identifiers for the name fields supported by the PersonName object.
- * @hide draft / provisional / internal are hidden on Android
*/
enum NameField {
/**
* Contains titles such as "Mr.", "Dr." (in English these typically
* precede the name)
- * @hide draft / provisional / internal are hidden on Android
*/
TITLE("title"),
/**
* The given name. May contain more than one token.
- * @hide draft / provisional / internal are hidden on Android
*/
GIVEN("given"),
/**
* Additional given names. (In English, this is usually the "middle name" and
* may contain more than one word.)
- * @hide draft / provisional / internal are hidden on Android
*/
GIVEN2("given2"),
/**
* The surname. In Spanish, this is the patronymic surname.
- * @hide draft / provisional / internal are hidden on Android
*/
SURNAME("surname"),
@@ -57,21 +51,18 @@ public interface PersonName {
* Additional surnames. This is only used in a few languages, such as Spanish,
* where it is the matronymic surname. (In most languages, multiple surnames all
* just go in the SURNAME field.)
- * @hide draft / provisional / internal are hidden on Android
*/
SURNAME2("surname2"),
/**
* Generational qualifiers that in English generally follow the actual name,
* such as "Jr." or "III".
- * @hide draft / provisional / internal are hidden on Android
*/
GENERATION("generation"),
/**
* Professional qualifiers that in English generally follow the actual name,
* such as "M.D." or "J.D.".
- * @hide draft / provisional / internal are hidden on Android
*/
CREDENTIALS("credentials");
@@ -83,7 +74,6 @@ public interface PersonName {
/**
* Returns the NameField's display name.
- * @hide draft / provisional / internal are hidden on Android
*/
@Override
public String toString() {
@@ -108,7 +98,6 @@ public interface PersonName {
/**
* Identifiers for the name field modifiers supported by the PersonName and PersonNameFormatter objects.
- * @hide draft / provisional / internal are hidden on Android
*/
enum FieldModifier {
/**
@@ -116,7 +105,6 @@ public interface PersonName {
* if "given" is "James", "given-informal" might be "Jimmy". Only applied to the "given"
* field. If the PersonName object doesn't apply this modifier, PersonNameFormatter just
* uses the unmodified version of "given".
- * @hide draft / provisional / internal are hidden on Android
*/
INFORMAL("informal"),
@@ -125,7 +113,6 @@ public interface PersonName {
* "van den Hul", this requests just the prefixes ("van den"). Only applied to the "surname"
* field. If the PersonName object doesn't apply this modifier, PersonNameFormatter
* assumes there are no prefixes.
- * @hide draft / provisional / internal are hidden on Android
*/
PREFIX("prefix"),
@@ -134,7 +121,6 @@ public interface PersonName {
* "van den Hul", this requests just the main word ("Hul"). Only applied to the "surname"
* field. If the implementing class doesn't apply this modifier, PersonNameFormatter
* assumes the entire "surname" field is the "core".
- * @hide draft / provisional / internal are hidden on Android
*/
CORE("core"),
@@ -142,7 +128,6 @@ public interface PersonName {
* Requests an initial for the specified field. PersonNameFormatter will do
* this algorithmically, but a PersonName object can apply this modifier itself if it wants
* different initial-generation logic (or stores the initial separately).
- * @hide draft / provisional / internal are hidden on Android
*/
INITIAL("initial"),
@@ -151,14 +136,12 @@ public interface PersonName {
* (this usually differs from "initial" in that "initial" often adds a period and "monogram"
* never does). PersonNameFormatter will do this algorithmically, but a PersonName object can
* apply this modifier itself if it wants different monogram-generation logic.
- * @hide draft / provisional / internal are hidden on Android
*/
MONOGRAM("monogram"),
/**
* Requests the field value converted to ALL CAPS. PersonName objects
* generally won't need to handle this modifier themselves.
- * @hide draft / provisional / internal are hidden on Android
*/
ALL_CAPS("allCaps"),
@@ -176,7 +159,6 @@ public interface PersonName {
* Requests the field value with the first grapheme of each word converted to titlecase.
* A PersonName object might handle this modifier itself to capitalize words more
* selectively.
- * @hide draft / provisional / internal are hidden on Android
*/
INITIAL_CAP("initialCap"),
@@ -204,7 +186,6 @@ public interface PersonName {
/**
* Returns the FieldModifier's display name.
- * @hide draft / provisional / internal are hidden on Android
*/
@Override
public String toString() {
@@ -213,7 +194,6 @@ public interface PersonName {
/**
* Returns the appropriate fieldModifier for its display name.
- * @hide draft / provisional / internal are hidden on Android
*/
public static FieldModifier forString(String name) {
for (FieldModifier modifier : values()) {
@@ -227,27 +207,23 @@ public interface PersonName {
/**
* An enum to specify the preferred field order for the name.
- * @hide draft / provisional / internal are hidden on Android
*/
enum PreferredOrder {
/**
* Indicates the name has no preferred field order, and that the formatter should deduce the
* proper field order based on the locales of the name and the formatter.
- * @hide draft / provisional / internal are hidden on Android
*/
DEFAULT,
/**
* Indicates that the name should be formatted in given-first order, even when the formatter
* would normally guess that it should be formatted in surname-first order.
- * @hide draft / provisional / internal are hidden on Android
*/
GIVEN_FIRST,
/**
* Indicates that the name should be formatted in surname-first order, even when the formatter
* would normally guess that it should be formatted in given-first order.
- * @hide draft / provisional / internal are hidden on Android
*/
SURNAME_FIRST
}
@@ -259,7 +235,6 @@ public interface PersonName {
* An implementing class is allowed to return null here to indicate the name's locale is unknown.
*
* @return The name's locale, or null if it's not known.
- * @hide draft / provisional / internal are hidden on Android
*/
public Locale getNameLocale();
@@ -269,7 +244,6 @@ public interface PersonName {
* and the formatter. But this can be used to force a particular field order, generally in cases
* where the deduction logic in PersonNameFormatter would guess wrong.
* @return The name's preferred field order.
- * @hide draft / provisional / internal are hidden on Android
*/
public PreferredOrder getPreferredOrder();
@@ -283,7 +257,6 @@ public interface PersonName {
* DIDN'T handle. This parameter may not be null, and must either be mutable or empty.
* @return The value of the requested field, optionally modified by some or all of the requested modifiers, or
* null if the requested field isn't present in the name.
- * @hide draft / provisional / internal are hidden on Android
*/
public String getFieldValue(NameField identifier, Set<FieldModifier> modifiers);
}
diff --git a/android_icu4j/src/main/java/android/icu/text/PersonNameFormatter.java b/android_icu4j/src/main/java/android/icu/text/PersonNameFormatter.java
index 8135a2f06..95b07c74a 100644
--- a/android_icu4j/src/main/java/android/icu/text/PersonNameFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/text/PersonNameFormatter.java
@@ -65,7 +65,6 @@ import android.icu.impl.personname.PersonNameFormatterImpl;
* </table>
*
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public class PersonNameFormatter {
//==============================================================================
@@ -74,26 +73,22 @@ public class PersonNameFormatter {
/**
* Specifies the desired length of the formatted name.
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public enum Length {
/**
* The longest name length. Generally uses most of the fields in the name object.
- * @hide draft / provisional / internal are hidden on Android
*/
LONG,
/**
* The most typical name length. Generally includes the given name and surname, but generally
* not most of the other fields.
- * @hide draft / provisional / internal are hidden on Android
*/
MEDIUM,
/**
* A shortened name. Skips most fields and may abbreviate some name fields to just their initials.
* When Formality is INFORMAL, may only include one field.
- * @hide draft / provisional / internal are hidden on Android
*/
SHORT,
@@ -107,18 +102,15 @@ public class PersonNameFormatter {
/**
* Specifies the intended usage of the formatted name.
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public enum Usage {
/**
* Used for when the name is going to be used to address the user directly: "Turn left here, John."
- * @hide draft / provisional / internal are hidden on Android
*/
ADDRESSING,
/**
* Used in general cases, when the name is used to refer to somebody else.
- * @hide draft / provisional / internal are hidden on Android
*/
REFERRING,
@@ -127,7 +119,6 @@ public class PersonNameFormatter {
* like chat avatars. In English, this is usually the person's initials, but this isn't true in all
* languages. When the caller specifies Usage.MONOGRAM, the Length parameter can be used to get different
* lengths of monograms: Length.SHORT is generally a single letter; Length.LONG may be as many as three or four.
- * @hide draft / provisional / internal are hidden on Android
*/
MONOGRAM
}
@@ -135,19 +126,16 @@ public class PersonNameFormatter {
/**
* Specifies the intended formality of the formatted name.
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public enum Formality {
/**
* The more formal version of the name.
- * @hide draft / provisional / internal are hidden on Android
*/
FORMAL,
/**
* The more informal version of the name. In English, this might omit fields or use the "informal" variant
* of the given name.
- * @hide draft / provisional / internal are hidden on Android
*/
INFORMAL,
@@ -162,12 +150,10 @@ public class PersonNameFormatter {
/**
* An enum indicating the desired display order for a formatted name.
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public enum DisplayOrder {
/**
* The default display order; used to indicate normal formatting.
- * @hide draft / provisional / internal are hidden on Android
*/
DEFAULT,
@@ -175,7 +161,6 @@ public class PersonNameFormatter {
* Used to indicate a display order suitable for use in a sorted list:
* For English, this would put the surnames first, with a comma between them and the rest
* of the name: "Smith, John".
- * @hide draft / provisional / internal are hidden on Android
*/
SORTING,
@@ -203,14 +188,12 @@ public class PersonNameFormatter {
* A utility class that can be used to construct a PersonNameFormatter.
* Use PersonNameFormatter.builder() to get a new instance.
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public static class Builder {
/**
* Sets the locale for the formatter to be constructed.
* @param locale The new formatter locale. May not be null.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder setLocale(Locale locale) {
if (locale != null) {
@@ -223,7 +206,6 @@ public class PersonNameFormatter {
* Sets the name length for the formatter to be constructed.
* @param length The new name length.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder setLength(Length length) {
this.length = length;
@@ -234,7 +216,6 @@ public class PersonNameFormatter {
* Sets the name usage for the formatter to be constructed.
* @param usage The new name length.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder setUsage(Usage usage) {
this.usage = usage;
@@ -245,7 +226,6 @@ public class PersonNameFormatter {
* Sets the name formality for the formatter to be constructed.
* @param formality The new name length.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder setFormality(Formality formality) {
this.formality = formality;
@@ -259,7 +239,6 @@ public class PersonNameFormatter {
* for most contexts (e.g., in English, "John Smith").
* @param order The desired display order for formatted names.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder setDisplayOrder(DisplayOrder order) {
this.displayOrder = order;
@@ -271,7 +250,6 @@ public class PersonNameFormatter {
* Japanese names to highlight which name is the surname.
* @param allCaps If true, the surname in the formatted result will be rendered in ALL CAPS.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder setSurnameAllCaps(boolean allCaps) {
this.surnameAllCaps = allCaps;
@@ -284,7 +262,6 @@ public class PersonNameFormatter {
* (presumably after calling the other methods to change the parameter) to create more
* than one PersonNameFormatter; you don't need a new Builder for each PersonNameFormatter.
* @return A new PersonNameFormatter.
- * @hide draft / provisional / internal are hidden on Android
*/
public PersonNameFormatter build() {
return new PersonNameFormatter(locale, length, usage, formality, displayOrder, surnameAllCaps);
@@ -307,7 +284,6 @@ public class PersonNameFormatter {
/**
* Returns a Builder object that can be used to construct a new PersonNameFormatter.
* @return A new Builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public static Builder builder() {
return new Builder();
@@ -317,7 +293,6 @@ public class PersonNameFormatter {
* Returns a Builder object whose fields match those used to construct this formatter,
* allowing a new formatter to be created based on this one.
* @return A new Builder that can be used to create a new formatter based on this formatter.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder toBuilder() {
Builder builder = builder();
@@ -335,7 +310,6 @@ public class PersonNameFormatter {
* @param name A PersonName object that supplies individual field values (optionally, with modifiers applied)
* to the formatter for formatting.
* @return The name, formatted according to the locale and other parameters passed to the formatter's constructor.
- * @hide draft / provisional / internal are hidden on Android
*/
public String formatToString(PersonName name) {
// TODO: Add a format() method that returns a FormattedPersonName object that descends from FormattedValue.
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBINode.java b/android_icu4j/src/main/java/android/icu/text/RBBINode.java
index 0729c68dd..4f2518126 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBINode.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBINode.java
@@ -177,7 +177,6 @@ class RBBINode {
}
-
//-------------------------------------------------------------------------
//
// flattenVariables Walk a parse tree, replacing any variable
@@ -196,7 +195,11 @@ class RBBINode {
// nested references are handled by cloneTree(), not here.
//
//-------------------------------------------------------------------------
- RBBINode flattenVariables() {
+ static final private int kRecursiveDepthLimit = 3500;
+ RBBINode flattenVariables(int depth) {
+ if (depth > kRecursiveDepthLimit) {
+ throw new IllegalArgumentException("The input is too long");
+ }
if (fType == varRef) {
RBBINode retNode = fLeftChild.cloneTree();
retNode.fRuleRoot = this.fRuleRoot;
@@ -205,11 +208,11 @@ class RBBINode {
}
if (fLeftChild != null) {
- fLeftChild = fLeftChild.flattenVariables();
+ fLeftChild = fLeftChild.flattenVariables(depth+1);
fLeftChild.fParent = this;
}
if (fRightChild != null) {
- fRightChild = fRightChild.flattenVariables();
+ fRightChild = fRightChild.flattenVariables(depth+1);
fRightChild.fParent = this;
}
return this;
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java b/android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java
index 872d051ee..5bfd81cc9 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java
@@ -413,7 +413,11 @@ class RBBIRuleScanner {
{
n = fNodeStack[fNodeStackPtr];
int v = UCharacter.digit((char) fC.fChar, 10);
- n.fVal = n.fVal * 10 + v;
+ long update = (long)(n.fVal) * 10 + v;
+ if (update > Integer.MAX_VALUE) {
+ error(RBBIRuleBuilder.U_BRK_RULE_SYNTAX);
+ }
+ n.fVal = (int)(update);
break;
}
@@ -771,7 +775,7 @@ class RBBIRuleScanner {
// These are recognized in all contexts, whether in quoted text or not.
//
if (c.fChar == '\'') {
- if (UTF16.charAt(fRB.fRules, fNextIndex) == '\'') {
+ if (fNextIndex < fRB.fRules.length() && UTF16.charAt(fRB.fRules, fNextIndex) == '\'') {
c.fChar = nextCharLL(); // get nextChar officially so character counts
c.fEscaped = true; // stay correct.
} else {
@@ -788,6 +792,9 @@ class RBBIRuleScanner {
return;
}
}
+ if (c.fChar == -1) {
+ return;
+ }
if (fQuoteMode) {
c.fEscaped = true;
@@ -1060,7 +1067,11 @@ class RBBIRuleScanner {
// Verify that the set contains at least one code point.
//
- if (uset.isEmpty()) {
+ // Use tempSet to handle the case that the UnicodeSet contains
+ // only string element, such as [{ab}] and treat it as empty set.
+ UnicodeSet tempSet = new UnicodeSet(uset);
+ tempSet.removeAllStrings();
+ if (tempSet.isEmpty()) {
// This set is empty.
// Make it an error, because it almost certainly is not what the user wanted.
// Also, avoids having to think about corner cases in the tree manipulation code
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java b/android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java
index 017f43cc3..12659233a 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java
@@ -117,7 +117,7 @@ class RBBITableBuilder {
// Walk through the tree, replacing any references to $variables with a copy of the
// parse tree for the substitution expression.
//
- fRB.fTreeRoots[fRootIx] = fRB.fTreeRoots[fRootIx].flattenVariables();
+ fRB.fTreeRoots[fRootIx] = fRB.fTreeRoots[fRootIx].flattenVariables(0);
if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("ftree")>=0) {
System.out.println("Parse tree after flattening variable references.");
fRB.fTreeRoots[fRootIx].printTree(true);
@@ -752,7 +752,7 @@ class RBBITableBuilder {
for (n=0; n<fDStates.size(); n++) { // For each state s (row in the state table)
RBBIStateDescriptor sd = fDStates.get(n);
if (sd.fPositions.contains(tagNode)) { // if s include the tag node t
- sd.fTagVals.add(Integer.valueOf(tagNode.fVal));
+ sd.fTagVals.add(tagNode.fVal);
}
}
}
@@ -800,15 +800,15 @@ class RBBITableBuilder {
// We will need this as a default, for rule sets with no explicit tagging,
// or with explicit tagging of {0}.
if (fRB.fRuleStatusVals.size() == 0) {
- fRB.fRuleStatusVals.add(Integer.valueOf(1)); // Num of statuses in group
- fRB.fRuleStatusVals.add(Integer.valueOf(0)); // and our single status of zero
+ fRB.fRuleStatusVals.add(1); // Num of statuses in group
+ fRB.fRuleStatusVals.add(0); // and our single status of zero
SortedSet<Integer> s0 = new TreeSet<>(); // mapping for rules with no explicit tagging
- fRB.fStatusSets.put(s0, Integer.valueOf(0)); // (key is an empty set).
+ fRB.fStatusSets.put(s0, 0); // (key is an empty set).
SortedSet<Integer> s1 = new TreeSet<>(); // mapping for rules with explicit tagging of {0}
- s1.add(Integer.valueOf(0));
- fRB.fStatusSets.put(s1, Integer.valueOf(0));
+ s1.add(0);
+ fRB.fStatusSets.put(s1, 0);
}
// For each state, check whether the state's status tag values are
@@ -822,12 +822,12 @@ class RBBITableBuilder {
// Add them to the statusSets map, This map associates
// the set of status values with an index in the runtime status
// values array.
- arrayIndexI = Integer.valueOf(fRB.fRuleStatusVals.size());
+ arrayIndexI = fRB.fRuleStatusVals.size();
fRB.fStatusSets.put(statusVals, arrayIndexI);
// Add the new set of status values to the vector of values that
// will eventually become the array used by the runtime engine.
- fRB.fRuleStatusVals.add(Integer.valueOf(statusVals.size()));
+ fRB.fRuleStatusVals.add(statusVals.size());
fRB.fRuleStatusVals.addAll(statusVals);
}
diff --git a/android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java b/android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java
index 566c1e79d..45e75ff57 100644
--- a/android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java
@@ -20,9 +20,8 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.text.CharacterIterator;
-import java.util.ArrayList;
-import java.util.List;
import java.util.MissingResourceException;
+import java.util.concurrent.ConcurrentLinkedQueue;
import android.icu.impl.CharacterIteration;
import android.icu.impl.ICUBinary;
@@ -58,9 +57,6 @@ public class RuleBasedBreakIterator extends BreakIterator {
*/
private RuleBasedBreakIterator() {
fDictionaryCharCount = 0;
- synchronized(gAllBreakEngines) {
- fBreakEngines = new ArrayList<>(gAllBreakEngines);
- }
}
/**
@@ -172,9 +168,6 @@ public class RuleBasedBreakIterator extends BreakIterator {
if (fText != null) {
result.fText = (CharacterIterator)(fText.clone());
}
- synchronized (gAllBreakEngines) {
- result.fBreakEngines = new ArrayList<>(gAllBreakEngines);
- }
result.fLookAheadMatches = new int[fRData.fFTable.fLookAheadResultsSize];
result.fBreakCache = result.new BreakCache(fBreakCache);
result.fDictionaryCache = result.new DictionaryCache(fDictionaryCache);
@@ -337,24 +330,21 @@ public class RuleBasedBreakIterator extends BreakIterator {
* Lazily updated as break engines are needed, because instantiation of
* break engines is expensive.
*
- * Because gAllBreakEngines can be referenced concurrently from different
- * BreakIterator instances, all access is synchronized.
+ * Important notes:
+ * <ul>Because we don't want to add the same LanguageBreakEngine multiple times, all writes
+ * are synchronized.
+ * <ul>Read access avoids explicit synchronization, but will end up being synchronized if
+ * needed.
*/
- private static final List<LanguageBreakEngine> gAllBreakEngines;
+ private static final ConcurrentLinkedQueue<LanguageBreakEngine> gAllBreakEngines;
static {
gUnhandledBreakEngine = new UnhandledBreakEngine();
- gAllBreakEngines = new ArrayList<>();
+ gAllBreakEngines = new ConcurrentLinkedQueue<>();
gAllBreakEngines.add(gUnhandledBreakEngine);
}
/**
- * List of all known break engines. Similar to gAllBreakEngines, but local to a
- * break iterator, allowing it to be used without synchronization.
- */
- private List<LanguageBreakEngine> fBreakEngines;
-
- /**
* Dump the contents of the state table and character classes for this break iterator.
* For debugging only.
* @deprecated This API is ICU internal only.
@@ -705,19 +695,18 @@ public class RuleBasedBreakIterator extends BreakIterator {
// We have a dictionary character.
// Does an already instantiated break engine handle it?
- for (LanguageBreakEngine candidate : fBreakEngines) {
+ // First read without synchronization, which could lead to a new language
+ // break engine being added and we didn't go over it.
+ for (LanguageBreakEngine candidate : gAllBreakEngines) {
if (candidate.handles(c)) {
return candidate;
}
}
synchronized (gAllBreakEngines) {
- // This break iterator's list of break engines didn't handle the character.
- // Check the global list, another break iterator may have instantiated the
- // desired engine.
+ // Another break iterator may have instantiated the desired engine.
for (LanguageBreakEngine candidate : gAllBreakEngines) {
if (candidate.handles(c)) {
- fBreakEngines.add(candidate);
return candidate;
}
}
@@ -770,7 +759,6 @@ public class RuleBasedBreakIterator extends BreakIterator {
if (eng != null && eng != gUnhandledBreakEngine) {
gAllBreakEngines.add(eng);
- fBreakEngines.add(eng);
}
return eng;
} // end synchronized(gAllBreakEngines)
diff --git a/android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java b/android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java
index 79c5c6f4a..aad2880fc 100644
--- a/android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java
@@ -405,7 +405,16 @@ import android.icu.util.UResourceBundleIterator;
* <td style="width: 37;"></td>
* <td style="width: 23;">&lt;&lt;</td>
* <td style="width: 165; vertical-align: top;">in normal rule</td>
- * <td>Divide the number by the rule's divisor and format the quotient</td>
+ * <td>Divide the number by the rule's divisor, perform floor() on the quotient,
+ * and format the resulting value.<br>
+ * If there is a DecimalFormat pattern between the &lt; characters and the
+ * rule does NOT also contain a &gt;&gt; substitution, we DON'T perform
+ * floor() on the quotient-- the quotient is passed through to the DecimalFormat
+ * intact. That is, for the value 1,900:<br>
+ * - "1/1000: &lt;&lt; thousand;" will produce "one thousand"<br>
+ * - "1/1000: &lt;0&lt; thousand;" will produce "2 thousand" (NOT "1 thousand")<br>
+ * - "1/1000: &lt;0&lt; seconds &gt;0&gt; milliseconds;" will produce "1 second 900 milliseconds"
+ * </td>
* </tr>
* <tr>
* <td style="width: 37;"></td>
diff --git a/android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java b/android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java
index fc952d269..b49afba2a 100644
--- a/android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java
@@ -58,53 +58,44 @@ import android.icu.util.UResourceBundle;
* (date -&gt; text), parsing (text -&gt; date), and normalization.
*
* <p>
- * <code>SimpleDateFormat</code> allows you to start by choosing
- * any user-defined patterns for date-time formatting. However, you
- * are encouraged to create a date-time formatter with either
- * <code>getTimeInstance</code>, <code>getDateInstance</code>, or
- * <code>getDateTimeInstance</code> in <code>DateFormat</code>. Each
- * of these class methods can return a date/time formatter initialized
- * with a default format pattern. You may modify the format pattern
- * using the <code>applyPattern</code> methods as desired.
+ * Clients are encouraged to create a date-time formatter using
+ * <code>DateFormat.getDateInstance()</code>, <code>DateFormat.getDateInstance()</code>,
+ * or <code>DateFormat.getDateTimeInstance()</code> rather than
+ * explicitly constructing an instance of <code>SimpleDateFormat</code>. This way, the client
+ * is guaranteed to get an appropriate formatting pattern for whatever locale the
+ * program is running in. If the client needs more control, they should consider using
+ * <code>DateFormat.getInstanceForSkeleton()</code>.
+ * However, if the client needs something more unusual than
+ * the default patterns in the locales, he can construct a <code>SimpleDateFormat</code> directly
+ * and give it an appropriate pattern (or use one of the factory methods on DateFormat
+ * and modify the pattern after the fact with <code>toPattern()</code> and <code>applyPattern()</code>.
* For more information on using these methods, see
* {@link DateFormat}.
*
* <p><strong>Date and Time Patterns:</strong></p>
*
* <p>Date and time formats are specified by <em>date and time pattern</em> strings.
- * Within date and time pattern strings, all unquoted ASCII letters [A-Za-z] are reserved
- * as pattern letters representing calendar fields. <code>SimpleDateFormat</code> supports
- * the date and time formatting algorithm and pattern letters defined by <a href="http://www.unicode.org/reports/tr35/">UTS#35
- * Unicode Locale Data Markup Language (LDML)</a>. The following pattern letters are
- * currently available (note that the actual values depend on CLDR and may change from the
- * examples shown here):</p>
+ * The full syntax for date and time patterns can be found at
+ * <a href="https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns">https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns</a>.</p>
+ *
+ * <p>Within date and time pattern strings, all unquoted ASCII letters [A-Za-z] are reserved
+ * as pattern letters representing calendar fields. Some of the most commonly used pattern letters are:</p>
* <blockquote>
* <table border="1">
* <tr>
- * <th>Field</th>
* <th style="text-align: center">Sym.</th>
* <th style="text-align: center">No.</th>
* <th>Example</th>
* <th>Description</th>
* </tr>
* <tr>
- * <th rowspan="3">era</th>
- * <td style="text-align: center" rowspan="3">G</td>
+ * <td style="text-align: center">G</td>
* <td style="text-align: center">1..3</td>
* <td>AD</td>
- * <td rowspan="3">Era - Replaced with the Era string for the current date. One to three letters for the
+ * <td>Era - Replaced with the Era string for the current date. One to three letters for the
* abbreviated form, four letters for the long (wide) form, five for the narrow form.</td>
* </tr>
* <tr>
- * <td style="text-align: center">4</td>
- * <td>Anno Domini</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>A</td>
- * </tr>
- * <tr>
- * <th rowspan="6">year</th>
* <td style="text-align: center">y</td>
* <td style="text-align: center">1..n</td>
* <td>1996</td>
@@ -165,44 +156,6 @@ import android.icu.util.UResourceBundle;
* </td>
* </tr>
* <tr>
- * <td style="text-align: center">Y</td>
- * <td style="text-align: center">1..n</td>
- * <td>1997</td>
- * <td>Year (in "Week of Year" based calendars). Normally the length specifies the padding,
- * but for two letters it also specifies the maximum length. This year designation is used in ISO
- * year-week calendar as defined by ISO 8601, but can be used in non-Gregorian based calendar systems
- * where week date processing is desired. May not always be the same value as calendar year.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">u</td>
- * <td style="text-align: center">1..n</td>
- * <td>4601</td>
- * <td>Extended year. This is a single number designating the year of this calendar system, encompassing
- * all supra-year fields. For example, for the Julian calendar system, year numbers are positive, with an
- * era of BCE or CE. An extended year value for the Julian calendar system assigns positive values to CE
- * years and negative values to BCE years, with 1 BCE being year 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center" rowspan="3">U</td>
- * <td style="text-align: center">1..3</td>
- * <td>甲子</td>
- * <td rowspan="3">Cyclic year name. Calendars such as the Chinese lunar calendar (and related calendars)
- * and the Hindu calendars use 60-year cycles of year names. Use one through three letters for the abbreviated
- * name, four for the full (wide) name, or five for the narrow name (currently the data only provides abbreviated names,
- * which will be used for all requested name widths). If the calendar does not provide cyclic year name data,
- * or if the year value to be formatted is out of the range of years for which cyclic name data is provided,
- * then numeric formatting is used (behaves like 'y').</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>(currently also 甲子)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>(currently also 甲子)</td>
- * </tr>
- * <tr>
- * <th rowspan="6">quarter</th>
* <td rowspan="3" style="text-align: center">Q</td>
* <td style="text-align: center">1..2</td>
* <td>02</td>
@@ -218,22 +171,6 @@ import android.icu.util.UResourceBundle;
* <td>2nd quarter</td>
* </tr>
* <tr>
- * <td rowspan="3" style="text-align: center">q</td>
- * <td style="text-align: center">1..2</td>
- * <td>02</td>
- * <td rowspan="3"><b>Stand-Alone</b> Quarter - Use one or two for the numerical quarter, three for the abbreviation,
- * or four for the full name (five for the narrow name is not yet supported).</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Q2</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>2nd quarter</td>
- * </tr>
- * <tr>
- * <th rowspan="8">month</th>
* <td rowspan="4" style="text-align: center">M</td>
* <td style="text-align: center">1..2</td>
* <td>09</td>
@@ -254,41 +191,6 @@ import android.icu.util.UResourceBundle;
* <td>S</td>
* </tr>
* <tr>
- * <td rowspan="4" style="text-align: center">L</td>
- * <td style="text-align: center">1..2</td>
- * <td>09</td>
- * <td rowspan="4"><b>Stand-Alone</b> Month - Use one or two for the numerical month, three for the abbreviation,
- * four for the full (wide) name, or 5 for the narrow name. With two ("LL"), the month number is zero-padded if
- * necessary (e.g. "08").</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Sep</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>September</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>S</td>
- * </tr>
- * <tr>
- * <th rowspan="2">week</th>
- * <td style="text-align: center">w</td>
- * <td style="text-align: center">1..2</td>
- * <td>27</td>
- * <td>Week of Year. Use "w" to show the minimum number of digits, or "ww" to always show two digits
- * (zero-padding if necessary, e.g. "08").</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">W</td>
- * <td style="text-align: center">1</td>
- * <td>3</td>
- * <td>Week of Month</td>
- * </tr>
- * <tr>
- * <th rowspan="4">day</th>
* <td style="text-align: center">d</td>
* <td style="text-align: center">1..2</td>
* <td>1</td>
@@ -296,29 +198,6 @@ import android.icu.util.UResourceBundle;
* two digits (zero-padding if necessary, e.g. "08").</td>
* </tr>
* <tr>
- * <td style="text-align: center">D</td>
- * <td style="text-align: center">1..3</td>
- * <td>345</td>
- * <td>Day of year</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">F</td>
- * <td style="text-align: center">1</td>
- * <td>2</td>
- * <td>Day of Week in Month. The example is for the 2nd Wed in July</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">g</td>
- * <td style="text-align: center">1..n</td>
- * <td>2451334</td>
- * <td>Modified Julian day. This is different from the conventional Julian day number in two regards.
- * First, it demarcates days at local zone midnight, rather than noon GMT. Second, it is a local number;
- * that is, it depends on the local time zone. It can be thought of as a single number that encompasses
- * all the date-related fields.</td>
- * </tr>
- * <tr>
- * <th rowspan="14">week<br>
- * day</th>
* <td rowspan="4" style="text-align: center">E</td>
* <td style="text-align: center">1..3</td>
* <td>Tue</td>
@@ -338,61 +217,12 @@ import android.icu.util.UResourceBundle;
* <td>Tu</td>
* </tr>
* <tr>
- * <td rowspan="5" style="text-align: center">e</td>
- * <td style="text-align: center">1..2</td>
- * <td>2</td>
- * <td rowspan="5">Local day of week. Same as E except adds a numeric value that will depend on the local
- * starting day of the week, using one or two letters. For this example, Monday is the first day of the week.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Tue</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Tuesday</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>T</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">6</td>
- * <td>Tu</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">c</td>
- * <td style="text-align: center">1</td>
- * <td>2</td>
- * <td rowspan="5"><b>Stand-Alone</b> local day of week - Use one letter for the local numeric value (same
- * as 'e'), three for the short day, four for the full (wide) name, five for the narrow name, or six for
- * the short name.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Tue</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Tuesday</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>T</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">6</td>
- * <td>Tu</td>
- * </tr>
- * <tr>
- * <th>period</th>
* <td style="text-align: center">a</td>
* <td style="text-align: center">1</td>
* <td>AM</td>
* <td>AM or PM</td>
* </tr>
* <tr>
- * <th rowspan="4">hour</th>
* <td style="text-align: center">h</td>
* <td style="text-align: center">1..2</td>
* <td>11</td>
@@ -409,19 +239,6 @@ import android.icu.util.UResourceBundle;
* 12-hour-cycle format (h or K). Use HH for zero padding.</td>
* </tr>
* <tr>
- * <td style="text-align: center">K</td>
- * <td style="text-align: center">1..2</td>
- * <td>0</td>
- * <td>Hour [0-11]. When used in a skeleton, only matches K or h, see above. Use KK for zero padding.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">k</td>
- * <td style="text-align: center">1..2</td>
- * <td>24</td>
- * <td>Hour [1-24]. When used in a skeleton, only matches k or H, see above. Use kk for zero padding.</td>
- * </tr>
- * <tr>
- * <th>minute</th>
* <td style="text-align: center">m</td>
* <td style="text-align: center">1..2</td>
* <td>59</td>
@@ -429,7 +246,6 @@ import android.icu.util.UResourceBundle;
* (zero-padding if necessary, e.g. "08")..</td>
* </tr>
* <tr>
- * <th rowspan="3">second</th>
* <td style="text-align: center">s</td>
* <td style="text-align: center">1..2</td>
* <td>12</td>
@@ -437,27 +253,10 @@ import android.icu.util.UResourceBundle;
* (zero-padding if necessary, e.g. "08").</td>
* </tr>
* <tr>
- * <td style="text-align: center">S</td>
- * <td style="text-align: center">1..n</td>
- * <td>3450</td>
- * <td>Fractional Second - truncates (like other time fields) to the count of letters when formatting. Appends zeros if more than 3 letters specified. Truncates at three significant digits when parsing.
- * (example shows display using pattern SSSS for seconds value 12.34567)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">A</td>
- * <td style="text-align: center">1..n</td>
- * <td>69540000</td>
- * <td>Milliseconds in day. This field behaves <i>exactly</i> like a composite of all time-related fields,
- * not including the zone fields. As such, it also reflects discontinuities of those fields on DST transition
- * days. On a day of DST onset, it will jump forward. On a day of DST cessation, it will jump backward. This
- * reflects the fact that is must be combined with the offset field to obtain a unique local time value.</td>
- * </tr>
- * <tr>
- * <th rowspan="23">zone</th>
* <td rowspan="2" style="text-align: center">z</td>
* <td style="text-align: center">1..3</td>
* <td>PDT</td>
- * <td>The <i>short specific non-location format</i>.
+ * <td>Time zone. The <i>short specific non-location format</i>.
* Where that is unavailable, falls back to the <i>short localized GMT format</i> ("O").</td>
* </tr>
* <tr>
@@ -467,43 +266,10 @@ import android.icu.util.UResourceBundle;
* Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO").</td>
* </tr>
* <tr>
- * <td rowspan="3" style="text-align: center">Z</td>
- * <td style="text-align: center">1..3</td>
- * <td>-0800</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * The format is equivalent to RFC 822 zone format (when optional seconds field is absent).
- * This is equivalent to the "xxxx" specifier.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>GMT-8:00</td>
- * <td>The <i>long localized GMT format</i>.
- * This is equivalent to the "OOOO" specifier.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.
- * This is equivalent to the "XXXXX" specifier.</td>
- * </tr>
- * <tr>
- * <td rowspan="2" style="text-align: center">O</td>
- * <td style="text-align: center">1</td>
- * <td>GMT-8</td>
- * <td>The <i>short localized GMT format</i>.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>GMT-08:00</td>
- * <td>The <i>long localized GMT format</i>.</td>
- * </tr>
- * <tr>
* <td rowspan="2" style="text-align: center">v</td>
* <td style="text-align: center">1</td>
* <td>PT</td>
- * <td>The <i>short generic non-location format</i>.
+ * <td>Time zone. The <i>short generic non-location format</i>.
* Where that is unavailable, falls back to the <i>generic location format</i> ("VVVV"),
* then the <i>short localized GMT format</i> as the final fallback.</td>
* </tr>
@@ -513,109 +279,6 @@ import android.icu.util.UResourceBundle;
* <td>The <i>long generic non-location format</i>.
* Where that is unavailable, falls back to <i>generic location format</i> ("VVVV").
* </tr>
- * <tr>
- * <td rowspan="4" style="text-align: center">V</td>
- * <td style="text-align: center">1</td>
- * <td>uslax</td>
- * <td>The short time zone ID.
- * Where that is unavailable, the special short time zone ID <i>unk</i> (Unknown Zone) is used.<br>
- * <i><b>Note</b>: This specifier was originally used for a variant of the short specific non-location format,
- * but it was deprecated in the later version of the LDML specification. In CLDR 23/ICU 51, the definition of
- * the specifier was changed to designate a short time zone ID.</i></td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>America/Los_Angeles</td>
- * <td>The long time zone ID.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Los Angeles</td>
- * <td>The exemplar city (location) for the time zone.
- * Where that is unavailable, the localized exemplar city name for the special zone <i>Etc/Unknown</i> is used
- * as the fallback (for example, "Unknown City"). </td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Los Angeles Time</td>
- * <td>The <i>generic location format</i>.
- * Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO";
- * Note: Fallback is only necessary with a GMT-style Time Zone ID, like Etc/GMT-830.)<br>
- * This is especially useful when presenting possible timezone choices for user selection,
- * since the naming is more uniform than the "v" format.</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">X</td>
- * <td style="text-align: center">1</td>
- * <td>-08<br>
- * +0530<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours field and optional minutes field.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>-0800<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours and minutes fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>-08:00<br>
- * Z</td>
- * <td>The <i>ISO8601 extended format</i> with hours and minutes fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>-0800<br>
- * -075258<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58<br>
- * Z</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">x</td>
- * <td style="text-align: center">1</td>
- * <td>-08<br>
- * +0530</td>
- * <td>The <i>ISO8601 basic format</i> with hours field and optional minutes field.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>-0800</td>
- * <td>The <i>ISO8601 basic format</i> with hours and minutes fields.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>-08:00</td>
- * <td>The <i>ISO8601 extended format</i> with hours and minutes fields.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>-0800<br>
- * -075258</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)</td>
- * </tr>
* </table>
*
* </blockquote>
@@ -3923,7 +3586,7 @@ public class SimpleDateFormat extends DateFormat {
nDigits--;
}
pos.setIndex(oldPos + maxDigits);
- number = Integer.valueOf((int)val);
+ number = (int) val;
}
}
return number;
@@ -4606,8 +4269,7 @@ public class SimpleDateFormat extends DateFormat {
* @return override NumberFormat used for the field
*/
public NumberFormat getNumberFormat(char field) {
- Character ovrField;
- ovrField = Character.valueOf(field);
+ Character ovrField = field;
if (overrideMap != null && overrideMap.containsKey(ovrField)) {
String nsName = overrideMap.get(ovrField).toString();
NumberFormat nf = numberFormatters.get(nsName);
@@ -4653,7 +4315,7 @@ public class SimpleDateFormat extends DateFormat {
fullOverride = true;
} else { // Field specific override string such as "y=hebrew"
nsName = currentString.substring(equalSignPosition+1);
- ovrField = Character.valueOf(currentString.charAt(0));
+ ovrField = currentString.charAt(0);
overrideMap.put(ovrField,nsName);
fullOverride = false;
}
diff --git a/android_icu4j/src/main/java/android/icu/text/SimplePersonName.java b/android_icu4j/src/main/java/android/icu/text/SimplePersonName.java
index b35e4a963..ec3007738 100644
--- a/android_icu4j/src/main/java/android/icu/text/SimplePersonName.java
+++ b/android_icu4j/src/main/java/android/icu/text/SimplePersonName.java
@@ -20,14 +20,12 @@ import java.util.TreeSet;
* in a SimplePersonName. But beyond storing and returning modified field values provided to it by the caller,
* SimplePersonName relies on the PersonNameFormatter's default handling of field modifiers.
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public class SimplePersonName implements PersonName {
/**
* A utility class for constructing a SimplePersonName. Use SimplePersonName.builder()
* to get a new Builder instance.
* @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
public static class Builder {
/**
@@ -35,7 +33,6 @@ public class SimplePersonName implements PersonName {
* @param locale The locale for the new name object. Can be null, which indicates the
* name's locale is unknown.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder setLocale(Locale locale) {
this.locale = locale;
@@ -46,7 +43,6 @@ public class SimplePersonName implements PersonName {
* Set the preferred order for the new name object.
* @param preferredOrder The preferred order for the new name object.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder setPreferredOrder(PreferredOrder preferredOrder) {
this.preferredOrder = preferredOrder;
@@ -60,7 +56,6 @@ public class SimplePersonName implements PersonName {
* to this field value. May be null, which is the same as the empty set.
* @param value The value for this field.
* @return This builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public Builder addField(NameField field,
Collection<FieldModifier> modifiers,
@@ -89,7 +84,6 @@ public class SimplePersonName implements PersonName {
/**
* Returns a SimplePersonName with the field values and name locale that were passed to this builder.
* @return A SimplePersonName with the field values and name locale that were passed to this builder.
- * @hide draft / provisional / internal are hidden on Android
*/
public SimplePersonName build() {
// special-case code for the "surname" field -- if it isn't specified, but "surname-prefix" and
@@ -125,7 +119,6 @@ public class SimplePersonName implements PersonName {
/**
* Returns a Builder object that can be used to construct a new SimplePersonName object.
* @return A Builder object that can be used to construct a new SimplePersonName object.
- * @hide draft / provisional / internal are hidden on Android
*/
public static Builder builder() {
return new Builder();
@@ -143,7 +136,6 @@ public class SimplePersonName implements PersonName {
/**
* Returns the locale of the name-- that is, the language or country of origin for the person being named.
* @return The name's locale, or null if it's unknown.
- * @hide draft / provisional / internal are hidden on Android
*/
@Override
public Locale getNameLocale() {
@@ -154,7 +146,6 @@ public class SimplePersonName implements PersonName {
* Returns the preferred field order for the name. This will be DEFAULT, unless the caller sets it to something
* else using the builder.
* @return The name's preferred field order.
- * @hide draft / provisional / internal are hidden on Android
*/
@Override
public PreferredOrder getPreferredOrder() { return preferredOrder; }
@@ -170,7 +161,6 @@ public class SimplePersonName implements PersonName {
* was provided at construction time.
* @return The value of the requested field, optionally modified by some or all of the requested modifiers, or
* null if the requested field isn't present in the name.
- * @hide draft / provisional / internal are hidden on Android
*/
@Override
public String getFieldValue(NameField nameField, Set<FieldModifier> modifiers) {
@@ -257,4 +247,4 @@ public class SimplePersonName implements PersonName {
private final Locale nameLocale;
private final PreferredOrder preferredOrder;
private final Map<String, String> fieldValues;
-} \ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/text/SpoofChecker.java b/android_icu4j/src/main/java/android/icu/text/SpoofChecker.java
index 3b0fff416..87bba05f7 100644
--- a/android_icu4j/src/main/java/android/icu/text/SpoofChecker.java
+++ b/android_icu4j/src/main/java/android/icu/text/SpoofChecker.java
@@ -36,6 +36,7 @@ import android.icu.impl.ICUBinary;
import android.icu.impl.ICUBinary.Authenticate;
import android.icu.impl.Utility;
import android.icu.lang.UCharacter;
+import android.icu.lang.UCharacter.IdentifierType;
import android.icu.lang.UCharacterCategory;
import android.icu.lang.UProperty;
import android.icu.lang.UScript;
@@ -322,95 +323,18 @@ public class SpoofChecker {
/**
* Security Profile constant from UTS 39 for use in {@link SpoofChecker.Builder#setAllowedChars}.
*/
- public static final UnicodeSet INCLUSION = new UnicodeSet(
- "['\\-.\\:\\u00B7\\u0375\\u058A\\u05F3\\u05F4\\u06FD\\u06FE\\u0F0B\\u2010"
- + "\\u2019\\u2027\\u30A0\\u30FB]"
- ).freeze();
- // Note: data from IdentifierStatus.txt & IdentifierType.txt
- // There is tooling to generate this constant in the unicodetools project:
- // org.unicode.text.tools.RecommendedSetGenerator
- // It will print the Java and C++ code to the console for easy copy-paste into this file.
+ public static final UnicodeSet INCLUSION =
+ new UnicodeSet().
+ applyIntPropertyValue(UProperty.IDENTIFIER_TYPE, IdentifierType.INCLUSION.ordinal()).
+ freeze();
/**
* Security Profile constant from UTS 39 for use in {@link SpoofChecker.Builder#setAllowedChars}.
*/
- public static final UnicodeSet RECOMMENDED = new UnicodeSet(
- "[0-9A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u0131\\u0134-\\u013E"
- + "\\u0141-\\u0148\\u014A-\\u017E\\u018F\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-"
- + "\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B\\u021E"
- + "\\u021F\\u0226-\\u0233\\u0259\\u02BB\\u02BC\\u02EC\\u0300-\\u0304\\u0306-"
- + "\\u030C\\u030F-\\u0311\\u0313\\u0314\\u031B\\u0323-\\u0328\\u032D\\u032E"
- + "\\u0330\\u0331\\u0335\\u0338\\u0339\\u0342\\u0345\\u037B-\\u037D\\u0386"
- + "\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03CE\\u03FC-\\u045F\\u048A-"
- + "\\u04FF\\u0510-\\u0529\\u052E\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0586"
- + "\\u05B4\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u063F\\u0641-\\u0655\\u0660-"
- + "\\u0669\\u0670-\\u0672\\u0674\\u0679-\\u068D\\u068F-\\u06A0\\u06A2-\\u06D3"
- + "\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0750-\\u07B1\\u0870-\\u0887"
- + "\\u0889-\\u088E\\u08A0-\\u08AC\\u08B2\\u08B5-\\u08C9\\u0901-\\u094D\\u094F"
- + "\\u0950\\u0956\\u0957\\u0960-\\u0963\\u0966-\\u096F\\u0971-\\u0977\\u0979-"
- + "\\u097F\\u0981-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-"
- + "\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE"
- + "\\u09D7\\u09E0-\\u09E3\\u09E6-\\u09F1\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A"
- + "\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A35\\u0A38\\u0A39"
- + "\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A5C\\u0A66-\\u0A74"
- + "\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0"
- + "\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD"
- + "\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B05-"
- + "\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-"
- + "\\u0B39\\u0B3C-\\u0B43\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5F-"
- + "\\u0B61\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90"
- + "\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-"
- + "\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0"
- + "\\u0BD7\\u0BE6-\\u0BEF\\u0C01-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-"
- + "\\u0C33\\u0C35-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55"
- + "\\u0C56\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C80\\u0C82\\u0C83\\u0C85-"
- + "\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-"
- + "\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CE0-\\u0CE3"
- + "\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-"
- + "\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D43\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-"
- + "\\u0D57\\u0D60\\u0D61\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-"
- + "\\u0D8E\\u0D91-\\u0D96\\u0D9A-\\u0DA5\\u0DA7-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD"
- + "\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDE\\u0DF2\\u0E01-"
- + "\\u0E32\\u0E34-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84"
- + "\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB2\\u0EB4-\\u0EBD\\u0EC0-"
- + "\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDE\\u0EDF\\u0F00\\u0F20-"
- + "\\u0F29\\u0F35\\u0F37\\u0F3E-\\u0F42\\u0F44-\\u0F47\\u0F49-\\u0F4C\\u0F4E-"
- + "\\u0F51\\u0F53-\\u0F56\\u0F58-\\u0F5B\\u0F5D-\\u0F68\\u0F6A-\\u0F6C\\u0F71"
- + "\\u0F72\\u0F74\\u0F7A-\\u0F80\\u0F82-\\u0F84\\u0F86-\\u0F92\\u0F94-\\u0F97"
- + "\\u0F99-\\u0F9C\\u0F9E-\\u0FA1\\u0FA3-\\u0FA6\\u0FA8-\\u0FAB\\u0FAD-\\u0FB8"
- + "\\u0FBA-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10C7\\u10CD\\u10D0-"
- + "\\u10F0\\u10F7-\\u10FA\\u10FD-\\u10FF\\u1200-\\u1248\\u124A-\\u124D\\u1250-"
- + "\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0"
- + "\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-"
- + "\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u1780-"
- + "\\u17A2\\u17A5-\\u17A7\\u17A9-\\u17B3\\u17B6-\\u17CD\\u17D0\\u17D2\\u17D7"
- + "\\u17DC\\u17E0-\\u17E9\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00-\\u1E99\\u1E9E"
- + "\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D"
- + "\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F70\\u1F72\\u1F74\\u1F76"
- + "\\u1F78\\u1F7A\\u1F7C\\u1F80-\\u1FB4\\u1FB6-\\u1FBA\\u1FBC\\u1FC2-\\u1FC4"
- + "\\u1FC6-\\u1FC8\\u1FCA\\u1FCC\\u1FD0-\\u1FD2\\u1FD6-\\u1FDA\\u1FE0-\\u1FE2"
- + "\\u1FE4-\\u1FEA\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FF8\\u1FFA\\u1FFC\\u2D27"
- + "\\u2D2D\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-"
- + "\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-"
- + "\\u3007\\u3041-\\u3096\\u3099\\u309A\\u309D\\u309E\\u30A1-\\u30FA\\u30FC-"
- + "\\u30FE\\u3105-\\u312D\\u312F\\u31A0-\\u31BF\\u3400-\\u4DBF\\u4E00-\\u9FFF"
- + "\\uA67F\\uA717-\\uA71F\\uA788\\uA78D\\uA792\\uA793\\uA7AA\\uA7C0-\\uA7CA"
- + "\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA9E7-\\uA9FE\\uAA60-\\uAA76\\uAA7A-"
- + "\\uAA7F\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-"
- + "\\uAB2E\\uAB66\\uAB67\\uAC00-\\uD7A3\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14"
- + "\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29\\U00011301\\U00011303"
- + "\\U0001133B\\U0001133C\\U00016FF0\\U00016FF1\\U0001B11F-\\U0001B122"
- + "\\U0001B132\\U0001B150-\\U0001B152\\U0001B155\\U0001B164-\\U0001B167"
- + "\\U0001DF00-\\U0001DF1E\\U0001DF25-\\U0001DF2A\\U0001E08F\\U0001E7E0-"
- + "\\U0001E7E6\\U0001E7E8-\\U0001E7EB\\U0001E7ED\\U0001E7EE\\U0001E7F0-"
- + "\\U0001E7FE\\U00020000-\\U0002A6DF\\U0002A700-\\U0002B739\\U0002B740-"
- + "\\U0002B81D\\U0002B820-\\U0002CEA1\\U0002CEB0-\\U0002EBE0\\U0002EBF0-"
- + "\\U0002EE5D\\U00030000-\\U0003134A\\U00031350-\\U000323AF]"
- ).freeze();
- // Note: data from IdentifierStatus.txt & IdentifierType.txt
- // There is tooling to generate this constant in the unicodetools project:
- // org.unicode.text.tools.RecommendedSetGenerator
- // It will print the Java and C++ code to the console for easy copy-paste into this file.
+ public static final UnicodeSet RECOMMENDED =
+ new UnicodeSet().
+ applyIntPropertyValue(UProperty.IDENTIFIER_TYPE, IdentifierType.RECOMMENDED.ordinal()).
+ freeze();
/**
* Constants for the kinds of checks that USpoofChecker can perform. These values are used both to select the set of
diff --git a/android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java b/android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java
index 9be67e389..bcb8ef13d 100644
--- a/android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java
@@ -309,15 +309,15 @@ public class TimeUnitFormat extends MeasureFormat {
if (resultNumber == null && longestParseDistance != 0) {
// set the number using plurrual count
if (countOfLongestMatch.equals("zero")) {
- resultNumber = Integer.valueOf(0);
+ resultNumber = 0;
} else if (countOfLongestMatch.equals("one")) {
- resultNumber = Integer.valueOf(1);
+ resultNumber = 1;
} else if (countOfLongestMatch.equals("two")) {
- resultNumber = Integer.valueOf(2);
+ resultNumber = 2;
} else {
// should not happen.
// TODO: how to handle?
- resultNumber = Integer.valueOf(3);
+ resultNumber = 3;
}
}
if (longestParseDistance == 0) {
diff --git a/android_icu4j/src/main/java/android/icu/text/Transliterator.java b/android_icu4j/src/main/java/android/icu/text/Transliterator.java
index 77b9fa035..c2b57dab5 100644
--- a/android_icu4j/src/main/java/android/icu/text/Transliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/Transliterator.java
@@ -19,6 +19,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.Objects;
+import java.util.function.Supplier;
import android.icu.impl.ICUData;
import android.icu.impl.ICUResourceBundle;
@@ -1453,7 +1454,7 @@ public abstract class Transliterator implements StringTransform {
MessageFormat format = new MessageFormat(
bundle.getString(RB_DISPLAY_NAME_PATTERN));
// Construct the argument array
- Object[] args = new Object[] { Integer.valueOf(2), stv[0], stv[1] };
+ Object[] args = new Object[] { 2, stv[0], stv[1] };
// Use display names for the scripts, if they exist
for (int j=1; j<=2; ++j) {
@@ -2111,7 +2112,18 @@ public abstract class Transliterator implements StringTransform {
if (type.equals("file") || type.equals("internal")) {
// Rest of line is <resource>:<encoding>:<direction>
// pos colon c2
- String resString = res.getString("resource");
+ // BEGIN Android patch: Lazily load transliterator rules.
+ // String resString = res.getString("resource");
+ int rowIndex = row;
+ Supplier<String> resSupplier = () -> {
+ // Avoid capturing UResourceBundle objects, but read the resource string
+ // with the captured row ID.
+ UResourceBundle rootBund = UResourceBundle.getBundleInstance(
+ ICUData.ICU_TRANSLIT_BASE_NAME, ROOT);
+ UResourceBundle transIDsBund = rootBund.get(RB_RULE_BASED_IDS);
+ UResourceBundle thisBund = transIDsBund.get(rowIndex).get(0);
+ return thisBund.getString("resource");
+ };
int dir;
String direction = res.getString("direction");
switch (direction.charAt(0)) {
@@ -2125,9 +2137,10 @@ public abstract class Transliterator implements StringTransform {
throw new RuntimeException("Can't parse direction: " + direction);
}
registry.put(ID,
- resString, // resource
+ resSupplier, // resource
dir,
!type.equals("internal"));
+ // END Android patch: Lazily load transliterator rules.
} else if (type.equals("alias")) {
//'alias'; row[2]=createInstance argument
String resString = res.getString();
diff --git a/android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java b/android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java
index d7b2dbe3d..5ccf422e5 100644
--- a/android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java
+++ b/android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java
@@ -24,6 +24,7 @@ import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Set;
+import java.util.function.Supplier;
import android.icu.impl.ICUData;
import android.icu.impl.ICUResourceBundle;
@@ -222,14 +223,39 @@ class TransliteratorRegistry {
// Entry classes
//----------------------------------------------------------------------
+ // BEGIN Android patch: Lazily load transliterator rules.
static class ResourceEntry {
- public String resource;
- public int direction;
+ private final Supplier<String> resourceSupplier;
+ public final int direction;
+ private String resource;
public ResourceEntry(String n, int d) {
resource = n;
direction = d;
+ resourceSupplier = null;
+ }
+
+ public ResourceEntry(Supplier<String> resourceSupplier, int dir) {
+ this.resourceSupplier = resourceSupplier;
+ direction = dir;
+ }
+
+ public String getResource() {
+ if (resourceSupplier == null) {
+ return resource;
+ }
+
+ synchronized (this) {
+ if (resource != null) {
+ return resource;
+ }
+
+ String str = resourceSupplier.get();
+ resource = str;
+ return str;
+ }
}
}
+ // END Android patch: Lazily load transliterator rules.
// An entry representing a rule in a locale resource bundle
static class LocaleEntry {
@@ -350,6 +376,15 @@ class TransliteratorRegistry {
registerEntry(ID, new ResourceEntry(resourceName, dir), visible);
}
+ // BEGIN Android patch: Lazily load transliterator rules.
+ void put(String ID,
+ Supplier<String> resourceSupplier,
+ int dir,
+ boolean visible) {
+ registerEntry(ID, new ResourceEntry(resourceSupplier, dir), visible);
+ }
+ // END Android patch: Lazily load transliterator rules.
+
/**
* Register an ID and an alias ID. This adds an entry to the
* dynamic store, or replaces an existing entry. Any entry in the
@@ -877,7 +912,9 @@ class TransliteratorRegistry {
try {
ResourceEntry re = (ResourceEntry) entry;
- parser.parse(re.resource, re.direction);
+ // Android patch: Lazily load transliterator rules.
+ // parser.parse(re.resource, re.direction);
+ parser.parse(re.getResource(), re.direction);
} catch (ClassCastException e) {
// If we pull a rule from a locale resource bundle it will
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeSet.java b/android_icu4j/src/main/java/android/icu/text/UnicodeSet.java
index 297edbb0c..a6d8570d7 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeSet.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeSet.java
@@ -27,6 +27,7 @@ import android.icu.impl.RuleCharacterIterator;
import android.icu.impl.SortedSetRelation;
import android.icu.impl.StringRange;
import android.icu.impl.UCaseProps;
+import android.icu.impl.UCharacterProperty;
import android.icu.impl.UPropertyAliases;
import android.icu.impl.UnicodeSetStringSpan;
import android.icu.impl.Utility;
@@ -3301,6 +3302,15 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
}
}
+ private static final class IdentifierTypeFilter implements Filter {
+ int idType;
+ IdentifierTypeFilter(int idType) { this.idType = idType; }
+ @Override
+ public boolean contains(int c) {
+ return UCharacterProperty.INSTANCE.hasIDType(c, idType);
+ }
+ }
+
// VersionInfo for unassigned characters
private static final VersionInfo NO_VERSION = VersionInfo.getInstance(0, 0, 0, 0);
@@ -3417,6 +3427,9 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
} else if (prop == UProperty.SCRIPT_EXTENSIONS) {
UnicodeSet inclusions = CharacterPropertiesImpl.getInclusionsForProperty(prop);
applyFilter(new ScriptExtensionsFilter(value), inclusions);
+ } else if (prop == UProperty.IDENTIFIER_TYPE) {
+ UnicodeSet inclusions = CharacterPropertiesImpl.getInclusionsForProperty(prop);
+ applyFilter(new IdentifierTypeFilter(value), inclusions);
} else if (0 <= prop && prop < UProperty.BINARY_LIMIT) {
if (value == 0 || value == 1) {
set(CharacterProperties.getBinaryPropertySet(prop));
@@ -3562,6 +3575,10 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
v = UCharacter.getPropertyValueEnum(UProperty.SCRIPT, valueAlias);
// fall through to calling applyIntPropertyValue()
break;
+ case UProperty.IDENTIFIER_TYPE:
+ v = UCharacter.getPropertyValueEnum(p, valueAlias);
+ // fall through to calling applyIntPropertyValue()
+ break;
default:
// p is a non-binary, non-enumerated property that we
// don't support (yet).
@@ -3854,7 +3871,7 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
* constructors, applyPattern(), and closeOver().
* It can be ORed together with other, unrelated options.
*
- * @hide draft / provisional / internal are hidden on Android
+ * @hide unsupported on Android
*/
public static final int SIMPLE_CASE_INSENSITIVE = 6;
diff --git a/android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java b/android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java
index a72f82d59..350a2a9a1 100644
--- a/android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java
@@ -229,4 +229,15 @@ public class BuddhistCalendar extends GregorianCalendar {
public String getType() {
return "buddhist";
}
+
+ /**
+ * {@inheritDoc}
+ * @deprecated This API is ICU internal only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Override
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return false;
+ }
}
diff --git a/android_icu4j/src/main/java/android/icu/util/Calendar.java b/android_icu4j/src/main/java/android/icu/util/Calendar.java
index dad9368d0..6b0dd1f3c 100644
--- a/android_icu4j/src/main/java/android/icu/util/Calendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/Calendar.java
@@ -1789,10 +1789,13 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
case ISO8601:
// Only differs week numbering rule from Gregorian
cal = new GregorianCalendar(zone, locale);
- String type = locale.getUnicodeLocaleType("fw");
- // Only set fw to Monday for ISO8601 if there aer no fw keyword.
- // If there is a fw keyword, the Calendar constructor already set it to the fw value.
- if (locale.getKeywordValue("fw") == null) {
+ // Based on UTS35 "First Day Overrides"
+ // https://unicode.org/reports/tr35/tr35-dates.html#first-day-overrides
+ // Only set fw to Monday for ISO8601 if there are no fw nor rg keywords.
+ // If there is a fw or rg keywords, the Calendar constructor already set it
+ // to the fw value or based on the rg value.
+ if (locale.getUnicodeLocaleType("fw") == null &&
+ locale.getUnicodeLocaleType("rg") == null) {
cal.setFirstDayOfWeek(MONDAY);
}
cal.setMinimalDaysInFirstWeek(4);
@@ -2977,14 +2980,9 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
// * Until we have new API per #9393, we temporarily hardcode knowledge of
// which calendars have era 0 years that go backwards.
{
- boolean era0WithYearsThatGoBackwards = false;
int era = get(ERA);
- if (era == 0) {
- String calType = getType();
- if (calType.equals("gregorian") || calType.equals("roc") || calType.equals("coptic")) {
- amount = -amount;
- era0WithYearsThatGoBackwards = true;
- }
+ if (era == 0 && isEra0CountingBackward()) {
+ amount = -amount;
}
int newYear = internalGet(field) + amount;
if (era > 0 || newYear >= 1) {
@@ -3003,7 +3001,7 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
// else we are in era 0 with newYear < 1;
// calendars with years that go backwards must pin the year value at 0,
// other calendars can have years < 0 in era 0
- } else if (era0WithYearsThatGoBackwards) {
+ } else if (era == 0 && isEra0CountingBackward()) {
newYear = 1;
}
set(field, newYear);
@@ -3319,11 +3317,8 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
// also handle YEAR the same way.
{
int era = get(ERA);
- if (era == 0) {
- String calType = getType();
- if (calType.equals("gregorian") || calType.equals("roc") || calType.equals("coptic")) {
- amount = -amount;
- }
+ if (era == 0 && isEra0CountingBackward()) {
+ amount = -amount;
}
}
// Fall through into standard handling
@@ -4051,6 +4046,17 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
}
/**
+ * The year in this calendar is counting from 1 backward if the era is 0.
+ * @return The year in era 0 of this calendar is counting backward from 1.
+ * @deprecated This API is ICU internal only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return false;
+ }
+
+ /**
* Returns the week number of a day, within a period. This may be the week number in
* a year or the week number in a month. Usually this will be a value &gt;= 1, but if
* some initial days of the period are excluded from week 1, because
@@ -5740,12 +5746,12 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
}
if (mid == lower) {
- return Long.valueOf(upper);
+ return upper;
}
midOffset = tz.getOffset(mid);
if (midOffset != upperOffset) {
if (onUnitTime) {
- return Long.valueOf(upper);
+ return upper;
}
return findPreviousZoneTransitionTime(tz, upperOffset, upper, mid);
}
@@ -6106,6 +6112,10 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
internalSet(EXTENDED_YEAR, year);
+ if (year > Long.MAX_VALUE / 400) {
+ throw new IllegalArgumentException("year is too large");
+ }
+
int month = useMonth ? internalGetMonth(getDefaultMonthInYear(year)) : 0;
// Get the Julian day of the day BEFORE the start of this year.
diff --git a/android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java b/android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java
index 28441bc8e..0aa63956d 100644
--- a/android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java
@@ -111,12 +111,6 @@ public class ChineseCalendar extends Calendar {
private TimeZone zoneAstro;
/**
- * We have one instance per object, and we don't synchronize it because
- * Calendar doesn't support multithreaded execution in the first place.
- */
- private transient CalendarAstronomer astro = new CalendarAstronomer();
-
- /**
* Cache that maps Gregorian year to local days of winter solstice.
* @see #winterSolstice
*/
@@ -691,10 +685,9 @@ public class ChineseCalendar extends Calendar {
// PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
long ms = daysToMillis(computeGregorianMonthStart(gyear, DECEMBER) +
1 - EPOCH_JULIAN_DAY);
- astro.setTime(ms);
// Winter solstice is 270 degrees solar longitude aka Dongzhi
- long solarLong = astro.getSunTime(CalendarAstronomer.WINTER_SOLSTICE,
+ long solarLong = (new CalendarAstronomer(ms)).getSunTime(CalendarAstronomer.WINTER_SOLSTICE,
true);
cacheValue = millisToDays(solarLong);
winterSolsticeCache.put(gyear, cacheValue);
@@ -712,9 +705,7 @@ public class ChineseCalendar extends Calendar {
* new moon after or before <code>days</code>
*/
private int newMoonNear(int days, boolean after) {
-
- astro.setTime(daysToMillis(days));
- long newMoon = astro.getMoonTime(CalendarAstronomer.NEW_MOON, after);
+ long newMoon = (new CalendarAstronomer(daysToMillis(days))).getMoonTime(CalendarAstronomer.NEW_MOON, after);
return millisToDays(newMoon);
}
@@ -737,11 +728,8 @@ public class ChineseCalendar extends Calendar {
* @param days days after January 1, 1970 0:00 Asia/Shanghai
*/
private int majorSolarTerm(int days) {
-
- astro.setTime(daysToMillis(days));
-
// Compute (floor(solarLongitude / (pi/6)) + 2) % 12
- int term = ((int) Math.floor(6 * astro.getSunLongitude() / Math.PI) + 2) % 12;
+ int term = ((int) Math.floor(6 * (new CalendarAstronomer(daysToMillis(days))).getSunLongitude() / Math.PI) + 2) % 12;
if (term < 1) {
term += 12;
}
@@ -1035,7 +1023,6 @@ public class ChineseCalendar extends Calendar {
stream.defaultReadObject();
/* set up the transient caches... */
- astro = new CalendarAstronomer();
winterSolsticeCache = new CalendarCache();
newYearCache = new CalendarCache();
}
diff --git a/android_icu4j/src/main/java/android/icu/util/CopticCalendar.java b/android_icu4j/src/main/java/android/icu/util/CopticCalendar.java
index a66b7bfc1..c35ae41f0 100644
--- a/android_icu4j/src/main/java/android/icu/util/CopticCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/CopticCalendar.java
@@ -222,6 +222,17 @@ public final class CopticCalendar extends CECalendar
/**
* {@inheritDoc}
* @deprecated This API is ICU internal only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Override
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @deprecated This API is ICU internal only.
* @hide original deprecated declaration
* @hide draft / provisional / internal are hidden on Android
*/
diff --git a/android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java b/android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java
index 0a29aeabf..25df7bba9 100644
--- a/android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java
+++ b/android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java
@@ -39,7 +39,7 @@ public class CurrencyAmount extends Measure {
* @param currency the currency
*/
public CurrencyAmount(double number, Currency currency) {
- super(new Double(number), currency);
+ super(number, currency);
}
/**
diff --git a/android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java b/android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java
index 7403b902c..5515a456a 100644
--- a/android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java
@@ -867,6 +867,17 @@ public class GregorianCalendar extends Calendar {
return "gregorian";
}
+ /**
+ * {@inheritDoc}
+ * @deprecated This API is ICU internal only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Override
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return true;
+ }
+
/*
private static CalendarFactory factory;
public static CalendarFactory factory() {
diff --git a/android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java b/android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java
index 91e2ad7d1..82779d534 100644
--- a/android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java
@@ -254,6 +254,8 @@ public class HebrewCalendar extends Calendar {
{ 383, 384, 385 }, // Elul
};
+ private static final int MONTHS_IN_CYCLE = 235;
+ private static final int YEARS_IN_CYCLE = 19;
//-------------------------------------------------------------------------
// Data Members...
//-------------------------------------------------------------------------
@@ -591,7 +593,7 @@ public class HebrewCalendar extends Calendar {
if (day == CalendarCache.EMPTY) {
// # of months before year
- int months = (int)floorDivide((235 * (long)year - 234), 19);
+ int months = (int)floorDivide((MONTHS_IN_CYCLE * (long)year - (MONTHS_IN_CYCLE-1)), YEARS_IN_CYCLE);
long frac = months * MONTH_FRACT + BAHARAD; // Fractional part of day #
day = months * 29 + (frac / DAY_PARTS); // Whole # part of calculation
@@ -675,7 +677,7 @@ public class HebrewCalendar extends Calendar {
@Deprecated
public static boolean isLeapYear(int year) {
//return (year * 12 + 17) % 19 >= 12;
- int x = (year*12 + 17) % 19;
+ int x = (year*12 + 17) % YEARS_IN_CYCLE;
return x >= ((x < 0) ? -7 : 12);
}
@@ -705,6 +707,10 @@ public class HebrewCalendar extends Calendar {
// on the year) but since we _always_ number from 0..12, and
// the leap year determines whether or not month 5 (Adar 1)
// is present, we allow 0..12 in any given year.
+ if (month <= -MONTHS_IN_CYCLE || MONTHS_IN_CYCLE <= month) {
+ extendedYear += (month / MONTHS_IN_CYCLE) * YEARS_IN_CYCLE;
+ month = month % MONTHS_IN_CYCLE;
+ }
while (month < 0) {
month += monthsInYear(--extendedYear);
}
@@ -781,7 +787,7 @@ public class HebrewCalendar extends Calendar {
protected void handleComputeFields(int julianDay) {
long d = julianDay - 347997;
long m = floorDivide((d * DAY_PARTS), MONTH_PARTS); // Months (approx)
- int year = (int)(floorDivide((19 * m + 234), 235) + 1); // Years (approx)
+ int year = (int)(floorDivide((YEARS_IN_CYCLE * m + (MONTHS_IN_CYCLE-1)), MONTHS_IN_CYCLE) + 1); // Years (approx)
long ys = startOfYear(year); // 1st day of year
int dayOfYear = (int)(d - ys);
@@ -846,6 +852,10 @@ public class HebrewCalendar extends Calendar {
// on the year) but since we _always_ number from 0..12, and
// the leap year determines whether or not month 5 (Adar 1)
// is present, we allow 0..12 in any given year.
+ if (month <= -MONTHS_IN_CYCLE || MONTHS_IN_CYCLE <= month) {
+ eyear += (month / MONTHS_IN_CYCLE) * YEARS_IN_CYCLE;
+ month = month % MONTHS_IN_CYCLE;
+ }
while (month < 0) {
month += monthsInYear(--eyear);
}
diff --git a/android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java b/android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java
index 63b9d1a7f..8b0fbf432 100644
--- a/android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java
@@ -12,6 +12,7 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Date;
import java.util.Locale;
+import java.util.function.IntConsumer;
import android.icu.impl.CalendarAstronomer;
import android.icu.impl.CalendarCache;
@@ -154,13 +155,14 @@ public class IslamicCalendar extends Calendar {
private static final long HIJRA_MILLIS = -42521587200000L; // 7/16/622 AD 00:00
/**
- * Friday EPOC
+ * Friday EPOCH
*/
- private static final long CIVIL_EPOC = 1948440; // CE 622 July 16 Friday (Julian calendar) / CE 622 July 19 (Gregorian calendar)
+ private static final long CIVIL_EPOCH = 1948440; // CE 622 July 16 Friday (Julian calendar) / CE 622 July 19 (Gregorian calendar)
+ //
/**
- * Thursday EPOC
+ * Thursday EPOCH
*/
- private static final long ASTRONOMICAL_EPOC = 1948439; // CE 622 July 15 Thursday (Julian calendar)
+ private static final long ASTRONOMICAL_EPOCH = 1948439; // CE 622 July 15 Thursday (Julian calendar)
//-------------------------------------------------------------------------
// Constructors...
@@ -293,6 +295,301 @@ public class IslamicCalendar extends Calendar {
this.set(Calendar.SECOND, second);
}
+ // Private interface for different Islamic calendar algorithms.
+ private interface Algorithm {
+ /**
+ * Returns <code>true</code> if this object is using the fixed-cycle civil
+ * calendar, or <code>false</code> if using the religious, astronomical
+ * calendar.
+ */
+ public boolean isCivil();
+
+ /**
+ * Return the type the algorithm implement.
+ */
+ public CalculationType getType();
+
+ /**
+ * Return the epoch used by this algorithm.
+ */
+ public long epoch();
+
+ /**
+ * Return the day # on which the given year starts. Days are counted
+ * from the Hijri epoch, origin 0.
+ *
+ * @param year The hijri year
+ */
+ public long yearStart(int year);
+
+ /**
+ * Return the day # on which the given month starts. Days are counted
+ * from the Hijri epoch, origin 0.
+ *
+ * @param year The hijri year
+ * @param month The hijri month, 0-based
+ */
+ public long monthStart(int year, int month);
+
+ /**
+ * Return the length (in days) of the given month.
+ *
+ * @param year The hijri year
+ * @param month The hijri month, 0-based
+ */
+ public int monthLength(int year, int month);
+
+ /**
+ * Return the length (in days) of the given year.
+ *
+ * @param year The hijri year
+ */
+ public int yearLength(int year);
+
+ /**
+ * Compute the year, month, dayOfMonth, and dayOfYear of the given julian days
+ * and current time and feed the caculuated results to the consumers.
+ * @param julianDays
+ * @param current the time in millisecond.
+ * @param yearConsumer consumer to take the year result.
+ * @param monthConsumer consumer to take the month result.
+ * @param dayOfMonthConsumer consumer to take the dayOfMonth result.
+ * @param dayOfYearConsumer consumer to take the dayOfYear result.
+ */
+ public void compute(long julianDays, long current,
+ IntConsumer yearConsumer, IntConsumer monthConsumer,
+ IntConsumer dayOfMonthConsumer, IntConsumer dayOfYearConsumer);
+ };
+
+ /**
+ * Algorithm which implement the rules for CalculationType.ISLAMIC.
+ */
+ static private class IslamicAlgorithm implements Algorithm {
+ public boolean isCivil() {
+ return false;
+ }
+ public CalculationType getType() {
+ return CalculationType.ISLAMIC;
+ }
+ public long epoch() {
+ return CIVIL_EPOCH;
+ }
+ public long yearStart(int year) {
+ return monthStart(year, 0);
+ }
+ public long monthStart(int year, int month) {
+ // Normalize year/month in case month is outside the normal bounds, which may occur
+ // in the case of an add operation
+ return trueMonthStart(12*((year + month / 12)-1) + (month % 12));
+ }
+ public int monthLength(int year, int month) {
+ month += 12*(year-1);
+ return (int)(trueMonthStart(month+1) - trueMonthStart(month));
+ }
+ public int yearLength(int year) {
+ int month = 12*(year-1);
+ return (int)(trueMonthStart(month + 12) - trueMonthStart(month));
+ }
+ public void compute(long julianDays, long current,
+ IntConsumer yearConsumer, IntConsumer monthConsumer,
+ IntConsumer dayOfMonthConsumer, IntConsumer dayOfYearConsumer) {
+ long days = julianDays - epoch();
+ // Guess at the number of elapsed full months since the epoch
+ int month = (int)Math.floor(days / CalendarAstronomer.SYNODIC_MONTH);
+ long monthStart = (long)Math.floor(month * CalendarAstronomer.SYNODIC_MONTH - 1);
+ if (days - monthStart >= 25 && moonAge(current) > 0) {
+ // If we're near the end of the month, assume next month and search backwards
+ month++;
+ }
+ // Find out the last time that the new moon was actually visible at this longitude
+ // This returns midnight the night that the moon was visible at sunset.
+ while ((monthStart = trueMonthStart(month)) > days) {
+ // If it was after the date in question, back up a month and try again
+ month--;
+ }
+ int year = month >= 0 ? ((month / 12) + 1) : ((month + 1 ) / 12);
+ month = ((month % 12) + 12 ) % 12;
+ yearConsumer.accept(year);
+ monthConsumer.accept(month);
+ dayOfMonthConsumer.accept((int)(days - monthStart(year, month)) + 1);
+ dayOfYearConsumer.accept((int)(days - yearStart(year) + 1));
+ }
+ };
+
+ /**
+ * Algorithm which implement the rules for CalculationType.ISLAMIC_CIVIL.
+ */
+ static private class CivilAlgorithm implements Algorithm {
+ public boolean isCivil() {
+ return true;
+ }
+ public CalculationType getType() {
+ return CalculationType.ISLAMIC_CIVIL;
+ }
+ public long epoch() {
+ return CIVIL_EPOCH;
+ }
+ public long yearStart(int year) {
+ return (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+ }
+ public long monthStart(int year, int month) {
+ // Normalize year/month in case month is outside the normal bounds, which may occur
+ // in the case of an add operation
+ return (long)Math.ceil(29.5*(month % 12)) + yearStart(year + month / 12);
+ }
+ public int monthLength(int year, int month) {
+ int length = 29;
+ if (month % 2 == 0) {
+ ++length;
+ }
+ if (month == DHU_AL_HIJJAH && civilLeapYear(year)) {
+ ++length;
+ }
+ return length;
+ }
+ public int yearLength(int year) {
+ return 354 + (civilLeapYear(year) ? 1 : 0);
+ }
+ public void compute(long julianDays, long current,
+ IntConsumer yearConsumer, IntConsumer monthConsumer,
+ IntConsumer dayOfMonthConsumer, IntConsumer dayOfYearConsumer) {
+ long days = julianDays - epoch();
+ // Use the civil calendar approximation, which is just arithmetic
+ int year = (int)Math.floor( (30 * days + 10646) / 10631.0 );
+ int month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
+ month = Math.min(month, 11);
+ yearConsumer.accept(year);
+ monthConsumer.accept(month);
+ dayOfMonthConsumer.accept((int)(days - monthStart(year, month)) + 1);
+ dayOfYearConsumer.accept((int)(days - yearStart(year) + 1));
+ }
+ };
+
+ /**
+ * Algorithm which implement the rules for CalculationType.ISLAMIC_TBLA.
+ * Mostly the same as CivilAlgorithm, except it return false for isCivil and use different
+ * epoch value.
+ */
+ static private class TBLAAlgorithm extends CivilAlgorithm {
+ public boolean isCivil() {
+ return false;
+ }
+ public CalculationType getType() {
+ return CalculationType.ISLAMIC_TBLA;
+ }
+ public long epoch() {
+ return ASTRONOMICAL_EPOCH;
+ }
+ };
+
+ /**
+ * Algorithm which implement the rules for CalculationType.ISLAMIC_UMALQURA.
+ */
+ static private class UmalquraAlgorithm implements Algorithm {
+ public boolean isCivil() {
+ return false;
+ }
+ public CalculationType getType() {
+ return CalculationType.ISLAMIC_UMALQURA;
+ }
+ public long epoch() {
+ return CIVIL_EPOCH;
+ }
+ public long yearStart(int year) {
+ if (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END) {
+ return CIVIL_ALGORITHM.yearStart(year);
+ }
+ int index = year - UMALQURA_YEAR_START;
+ // rounded least-squares fit of the dates previously calculated from UMALQURA_MONTHLENGTH iteration
+ int yrStartLinearEstimate = (int)((354.36720 * index) + 460322.05 + 0.5);
+ // need a slight correction to some
+ return yrStartLinearEstimate + UMALQURA_YEAR_START_ESTIMATE_FIX[index];
+ }
+ public long monthStart(int year, int month) {
+ // Normalize year/month in case month is outside the normal bounds, which may occur
+ // in the case of an add operation
+ year += month / 12;
+ month %= 12;
+ if (year < UMALQURA_YEAR_START) {
+ return CIVIL_ALGORITHM.monthStart(year, month);
+ }
+ long ms = yearStart(year);
+ for(int i=0; i< month; i++) {
+ ms+= monthLength(year, i);
+ }
+ return ms;
+ }
+ public int monthLength(int year, int month) {
+ if (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END) {
+ return CIVIL_ALGORITHM.monthLength(year, month);
+ }
+ int index = (year - UMALQURA_YEAR_START); // calculate year offset into bit map array
+ int mask = (0x01 << (11 - month)); // set mask for bit corresponding to month
+ if((UMALQURA_MONTHLENGTH[index] & mask) != 0) {
+ return 30;
+ }
+ return 29;
+ }
+ public int yearLength(int year) {
+ if (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END) {
+ return CIVIL_ALGORITHM.yearLength(year);
+ }
+ int length = 0;
+ for(int i = 0; i < 12; i++) {
+ length += monthLength(year, i);
+ }
+ return length;
+ }
+ public void compute(long julianDays, long current,
+ IntConsumer yearConsumer, IntConsumer monthConsumer,
+ IntConsumer dayOfMonthConsumer, IntConsumer dayOfYearConsumer) {
+ long days = julianDays - epoch();
+ if( days < yearStart(UMALQURA_YEAR_START)) {
+ CIVIL_ALGORITHM.compute(julianDays, current,
+ yearConsumer, monthConsumer, dayOfMonthConsumer, dayOfYearConsumer);
+ return;
+ }
+ // Estimate a value y which is closer to but not greater than the year.
+ // It is the inverse function of the logic inside yearStart() about the
+ // linear estimate.
+ int year = (int)((days - (460322.05 + 0.5)) / 354.36720) + UMALQURA_YEAR_START - 1;
+ int month = 0;
+ long monthStart;
+ long d = 1;
+ while (d > 0) {
+ year++;
+ d = days - yearStart(year) +1;
+ int yearLength = yearLength(year);
+ if (d == yearLength) {
+ month = 11;
+ break;
+ } else if (d < yearLength) {
+ int monthLen = monthLength(year, month);
+ for (month = 0; d > monthLen; monthLen = monthLength(year, ++month)) {
+ d -= monthLen;
+ }
+ break;
+ }
+ }
+ yearConsumer.accept(year);
+ monthConsumer.accept(month);
+ dayOfMonthConsumer.accept((int)(days - monthStart(year, month)) + 1);
+ dayOfYearConsumer.accept((int)(days - yearStart(year) + 1));
+ }
+ };
+
+ private static Algorithm ISLAMIC_ALGORITHM;
+ private static Algorithm CIVIL_ALGORITHM;
+ private static Algorithm TBLA_ALGORITHM;
+ private static Algorithm UMALQURA_ALGORITHM;
+
+ static {
+ ISLAMIC_ALGORITHM = new IslamicAlgorithm();
+ CIVIL_ALGORITHM = new CivilAlgorithm();
+ TBLA_ALGORITHM = new TBLAAlgorithm();
+ UMALQURA_ALGORITHM = new UmalquraAlgorithm();
+ };
+
/**
* Determines whether this object uses the fixed-cycle Islamic civil calendar
* or an approximation of the religious, astronomical calendar.
@@ -304,13 +601,12 @@ public class IslamicCalendar extends Calendar {
*/
public void setCivil(boolean beCivil)
{
- civil = beCivil;
-
if (beCivil && cType != CalculationType.ISLAMIC_CIVIL) {
// The fields of the calendar will become invalid, because the calendar
// rules are different
long m = getTimeInMillis();
cType = CalculationType.ISLAMIC_CIVIL;
+ algorithm = CIVIL_ALGORITHM;
clear();
setTimeInMillis(m);
} else if(!beCivil && cType != CalculationType.ISLAMIC) {
@@ -318,9 +614,11 @@ public class IslamicCalendar extends Calendar {
// rules are different
long m = getTimeInMillis();
cType = CalculationType.ISLAMIC;
+ algorithm = ISLAMIC_ALGORITHM;
clear();
setTimeInMillis(m);
}
+ civil = algorithm.isCivil();
}
/**
@@ -331,10 +629,7 @@ public class IslamicCalendar extends Calendar {
* @hide unsupported on Android
*/
public boolean isCivil() {
- if(cType == CalculationType.ISLAMIC_CIVIL) {
- return true;
- }
- return false;
+ return algorithm.isCivil();
}
//-------------------------------------------------------------------------
@@ -560,51 +855,7 @@ public class IslamicCalendar extends Calendar {
* from the Hijri epoch, origin 0.
*/
private long yearStart(int year) {
- long ys = 0;
- if (cType == CalculationType.ISLAMIC_CIVIL
- || cType == CalculationType.ISLAMIC_TBLA
- || (cType == CalculationType.ISLAMIC_UMALQURA && (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END))) {
- ys = (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
- } else if(cType == CalculationType.ISLAMIC) {
- ys = trueMonthStart(12*(year-1));
- } else if(cType == CalculationType.ISLAMIC_UMALQURA){
- year -= UMALQURA_YEAR_START;
- // rounded least-squares fit of the dates previously calculated from UMALQURA_MONTHLENGTH iteration
- int yrStartLinearEstimate = (int)((354.36720 * year) + 460322.05 + 0.5);
- // need a slight correction to some
- ys = yrStartLinearEstimate + UMALQURA_YEAR_START_ESTIMATE_FIX[year];
- }
- return ys;
- }
-
- /**
- * Return the day # on which the given month starts. Days are counted
- * from the Hijri epoch, origin 0.
- *
- * @param year The hijri year
- * @param month The hijri month, 0-based
- */
- private long monthStart(int year, int month) {
- // Normalize year/month in case month is outside the normal bounds, which may occur
- // in the case of an add operation
- int realYear = year + month / 12;
- int realMonth = month % 12;
- long ms = 0;
- if (cType == CalculationType.ISLAMIC_CIVIL
- || cType == CalculationType.ISLAMIC_TBLA
- || (cType == CalculationType.ISLAMIC_UMALQURA && year < UMALQURA_YEAR_START )) {
- ms = (long)Math.ceil(29.5*realMonth)
- + (realYear-1)*354 + (long)Math.floor((3+11*realYear)/30.0);
- } else if(cType == CalculationType.ISLAMIC) {
- ms = trueMonthStart(12*(realYear-1) + realMonth);
- } else if(cType == CalculationType.ISLAMIC_UMALQURA) {
- ms = yearStart(year);
- for(int i=0; i< month; i++) {
- ms+= handleGetMonthLength(year, i);
- }
- }
-
- return ms;
+ return algorithm.yearStart(year);
}
/**
@@ -660,12 +911,7 @@ public class IslamicCalendar extends Calendar {
*/
static final double moonAge(long time)
{
- double age = 0;
-
- synchronized(astro) {
- astro.setTime(time);
- age = astro.getMoonAge();
- }
+ double age = (new CalendarAstronomer(time)).getMoonAge();
// Convert to degrees and normalize...
age = age * 180 / Math.PI;
if (age > 180) {
@@ -679,9 +925,6 @@ public class IslamicCalendar extends Calendar {
// Internal data....
//
- // And an Astronomer object for the moon age calculations
- private static CalendarAstronomer astro = new CalendarAstronomer();
-
private static CalendarCache cache = new CalendarCache();
/**
@@ -700,6 +943,8 @@ public class IslamicCalendar extends Calendar {
*/
private CalculationType cType = CalculationType.ISLAMIC_CIVIL;
+ private transient Algorithm algorithm = CIVIL_ALGORITHM;
+
//----------------------------------------------------------------------
// Calendar framework
//----------------------------------------------------------------------
@@ -712,32 +957,7 @@ public class IslamicCalendar extends Calendar {
*/
@Override
protected int handleGetMonthLength(int extendedYear, int month) {
-
- int length;
-
- if (cType == CalculationType.ISLAMIC_CIVIL
- || cType == CalculationType.ISLAMIC_TBLA
- || (cType == CalculationType.ISLAMIC_UMALQURA && (extendedYear < UMALQURA_YEAR_START || extendedYear > UMALQURA_YEAR_END) )) {
- length = 29 + (month+1) % 2;
- if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
- length++;
- }
- }
- else if (cType == CalculationType.ISLAMIC) {
- month = 12*(extendedYear-1) + month;
- length = (int)( trueMonthStart(month+1) - trueMonthStart(month) );
- }
- else { // cType == CalculationType.ISLAMIC_UMALQURA should be true at this point and not null.
- int idx = (extendedYear - UMALQURA_YEAR_START); // calculate year offset into bit map array
- int mask = (0x01 << (11 - month)); // set mask for bit corresponding to month
- if((UMALQURA_MONTHLENGTH[idx] & mask) == 0 ) {
- length = 29;
- }
- else {
- length = 30;
- }
- }
- return length;
+ return algorithm.monthLength(extendedYear, month);
}
/**
@@ -745,20 +965,7 @@ public class IslamicCalendar extends Calendar {
*/
@Override
protected int handleGetYearLength(int extendedYear) {
- int length =0;
- if (cType == CalculationType.ISLAMIC_CIVIL
- || cType == CalculationType.ISLAMIC_TBLA
- || (cType == CalculationType.ISLAMIC_UMALQURA && (extendedYear < UMALQURA_YEAR_START || extendedYear > UMALQURA_YEAR_END) )) {
- length = 354 + (civilLeapYear(extendedYear) ? 1 : 0);
- } else if (cType == CalculationType.ISLAMIC) {
- int month = 12*(extendedYear-1);
- length = (int)(trueMonthStart(month + 12) - trueMonthStart(month));
- } else if (cType == CalculationType.ISLAMIC_UMALQURA) {
- for(int i=0; i<12; i++)
- length += handleGetMonthLength(extendedYear, i);
- }
-
- return length;
+ return algorithm.yearLength(extendedYear);
}
//-------------------------------------------------------------------------
@@ -774,7 +981,7 @@ public class IslamicCalendar extends Calendar {
*/
@Override
protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
- return (int)(monthStart(eyear, month) + ((cType == CalculationType.ISLAMIC_TBLA)? ASTRONOMICAL_EPOC: CIVIL_EPOC) - 1);
+ return (int)(algorithm.monthStart(eyear, month) + algorithm.epoch()- 1);
}
//-------------------------------------------------------------------------
@@ -811,84 +1018,18 @@ public class IslamicCalendar extends Calendar {
*/
@Override
protected void handleComputeFields(int julianDay) {
- int year =0, month=0, dayOfMonth=0, dayOfYear=0;
- long monthStart;
- long days = julianDay - CIVIL_EPOC;
-
- if (cType == CalculationType.ISLAMIC_CIVIL || cType == CalculationType.ISLAMIC_TBLA) {
- if (cType == CalculationType.ISLAMIC_TBLA) {
- days = julianDay - ASTRONOMICAL_EPOC;
- }
- // Use the civil calendar approximation, which is just arithmetic
- year = (int)Math.floor( (30 * days + 10646) / 10631.0 );
- month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
- month = Math.min(month, 11);
- } else if (cType == CalculationType.ISLAMIC){
- // Guess at the number of elapsed full months since the epoch
- int months = (int)Math.floor(days / CalendarAstronomer.SYNODIC_MONTH);
-
- monthStart = (long)Math.floor(months * CalendarAstronomer.SYNODIC_MONTH - 1);
-
- if ( days - monthStart >= 25 && moonAge(internalGetTimeInMillis()) > 0) {
- // If we're near the end of the month, assume next month and search backwards
- months++;
- }
-
- // Find out the last time that the new moon was actually visible at this longitude
- // This returns midnight the night that the moon was visible at sunset.
- while ((monthStart = trueMonthStart(months)) > days) {
- // If it was after the date in question, back up a month and try again
- months--;
- }
-
- year = months >= 0 ? ((months / 12) + 1) : ((months + 1 ) / 12);
- month = ((months % 12) + 12 ) % 12;
- } else if (cType == CalculationType.ISLAMIC_UMALQURA) {
- long umalquraStartdays = yearStart(UMALQURA_YEAR_START);
- if( days < umalquraStartdays) {
- // Use Civil calculation
- year = (int)Math.floor( (30 * days + 10646) / 10631.0 );
- month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
- month = Math.min(month, 11);
- } else {
- int y =UMALQURA_YEAR_START-1, m =0;
- long d = 1;
- while(d > 0) {
- y++;
- d = days - yearStart(y) +1;
- if(d == handleGetYearLength(y)) {
- m=11;
- break;
- } else if(d < handleGetYearLength(y) ) {
- int monthLen = handleGetMonthLength(y, m);
- m=0;
- while(d > monthLen) {
- d -= monthLen;
- m++;
- monthLen = handleGetMonthLength(y, m);
- }
- break;
- }
- }
- year = y;
- month = m;
- }
- }
-
-
- dayOfMonth = (int)(days - monthStart(year, month)) + 1;
-
- // Now figure out the day of the year.
- dayOfYear = (int)(days - monthStart(year, 0) + 1);
-
-
- internalSet(ERA, 0);
- internalSet(YEAR, year);
- internalSet(EXTENDED_YEAR, year);
- internalSet(MONTH, month);
- internalSet(ORDINAL_MONTH, month);
- internalSet(DAY_OF_MONTH, dayOfMonth);
- internalSet(DAY_OF_YEAR, dayOfYear);
+ algorithm.compute(julianDay, internalGetTimeInMillis(),
+ year -> {
+ internalSet(ERA, 0);
+ internalSet(YEAR, year);
+ internalSet(EXTENDED_YEAR, year);
+ },
+ month -> {
+ internalSet(MONTH, month);
+ internalSet(ORDINAL_MONTH, month);
+ },
+ dayOfMonth -> { internalSet(DAY_OF_MONTH, dayOfMonth); },
+ dayOfYear -> { internalSet(DAY_OF_YEAR, dayOfYear); });
}
/**
@@ -930,19 +1071,29 @@ public class IslamicCalendar extends Calendar {
*/
public void setCalculationType(CalculationType type) {
cType = type;
-
- // ensure civil property is up-to-date
- if(cType == CalculationType.ISLAMIC_CIVIL)
- civil = true;
- else
- civil = false;
+ switch (cType) {
+ case ISLAMIC_UMALQURA:
+ algorithm = UMALQURA_ALGORITHM;
+ break;
+ case ISLAMIC:
+ algorithm = ISLAMIC_ALGORITHM;
+ break;
+ case ISLAMIC_TBLA:
+ algorithm = TBLA_ALGORITHM;
+ break;
+ case ISLAMIC_CIVIL:
+ default:
+ algorithm = CIVIL_ALGORITHM;
+ break;
+ }
+ civil = algorithm.isCivil();
}
/**
* gets the calculation type for this calendar.
*/
public CalculationType getCalculationType() {
- return cType;
+ return algorithm.getType();
}
/**
@@ -968,26 +1119,17 @@ public class IslamicCalendar extends Calendar {
*/
@Override
public String getType() {
- if (cType == null) {
- // TODO: getType() is called during Islamic calendar
- // construction and might be null at that point. We should
- // check the initialization sequence. See ticket#10425.
- return "islamic";
- }
- return cType.bcpType();
+ return algorithm.getType().bcpType();
}
private void readObject(ObjectInputStream in) throws IOException,ClassNotFoundException {
in.defaultReadObject();
-
if (cType == null) {
// The serialized data was created by an ICU version before CalculationType
// was introduced.
cType = civil ? CalculationType.ISLAMIC_CIVIL : CalculationType.ISLAMIC;
- } else {
- // Make sure 'civil' is consistent with CalculationType
- civil = (cType == CalculationType.ISLAMIC_CIVIL);
}
+ setCalculationType(cType);
}
//-------------------------------------------------------------------------
diff --git a/android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java b/android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java
index 1ecf33861..27d63f110 100644
--- a/android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java
@@ -471,4 +471,14 @@ public class JapaneseCalendar extends GregorianCalendar {
return super.getActualMaximum(field);
}
+ /**
+ * {@inheritDoc}
+ * @deprecated This API is ICU internal only.
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ @Override
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return false;
+ }
}
diff --git a/android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java b/android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java
index ce2c9486b..2819f9b6d 100644
--- a/android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java
@@ -18,8 +18,8 @@ import java.util.Locale;
import java.util.Map;
import android.icu.impl.locale.LSR;
+import android.icu.impl.locale.LikelySubtags;
import android.icu.impl.locale.LocaleDistance;
-import android.icu.impl.locale.XLikelySubtags;
/**
* Immutable class that picks the best match between a user's desired locales and
@@ -758,7 +758,7 @@ public final class LocaleMatcher {
if (locale.equals(UND_ULOCALE)) {
return UND_LSR;
} else {
- return XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale, false);
+ return LikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale, false);
}
}
@@ -766,7 +766,7 @@ public final class LocaleMatcher {
if (locale.equals(UND_LOCALE) || locale.equals(EMPTY_LOCALE)) {
return UND_LSR;
} else {
- return XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale);
+ return LikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale);
}
}
@@ -1119,7 +1119,7 @@ public final class LocaleMatcher {
* @return ULocale with remapped subtags.
*/
public ULocale canonicalize(ULocale locale) {
- return XLikelySubtags.INSTANCE.canonicalize(locale);
+ return LikelySubtags.INSTANCE.canonicalize(locale);
}
/**
diff --git a/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java b/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
index 4e750a472..4c7e7ca9c 100644
--- a/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
+++ b/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
@@ -111,6 +111,20 @@ public class MeasureUnit implements Serializable {
public enum MeasurePrefix {
/**
+ * SI prefix: quetta, 10^30.
+ *
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ QUETTA(30, "quetta", 10),
+
+ /**
+ * SI prefix: ronna, 10^27.
+ *
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ RONNA(27, "ronna", 10),
+
+ /**
* SI prefix: yotta, 10^24.
*/
YOTTA(24, "yotta", 10),
@@ -216,6 +230,20 @@ public class MeasureUnit implements Serializable {
YOCTO(-24, "yocto", 10),
/**
+ * SI prefix: ronto, 10^-27.
+ *
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ RONTO(-27, "ronto", 10),
+
+ /**
+ * SI prefix: quecto, 10^-30.
+ *
+ * @hide draft / provisional / internal are hidden on Android
+ */
+ QUECTO(-30, "quecto", 10),
+
+ /**
* IEC binary prefix: kibi, 1024^1.
*/
KIBI(1, "kibi", 1024),
@@ -1561,7 +1589,7 @@ public class MeasureUnit implements Serializable {
/**
* Constant for unit of speed: beaufort
- * @hide draft / provisional / internal are hidden on Android
+ * @hide unsupported on Android
*/
public static final MeasureUnit BEAUFORT = MeasureUnit.internalGetInstance("speed", "beaufort");
diff --git a/android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java b/android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java
index 2fb923a6f..af9186721 100644
--- a/android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java
+++ b/android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java
@@ -30,7 +30,7 @@ public class TimeUnitAmount extends Measure {
* Create from a number and unit.
*/
public TimeUnitAmount(double number, TimeUnit unit) {
- super(new Double(number), unit);
+ super(number, unit);
}
/**
diff --git a/android_icu4j/src/main/java/android/icu/util/TimeZone.java b/android_icu4j/src/main/java/android/icu/util/TimeZone.java
index 62376e684..8aafaedc5 100644
--- a/android_icu4j/src/main/java/android/icu/util/TimeZone.java
+++ b/android_icu4j/src/main/java/android/icu/util/TimeZone.java
@@ -762,7 +762,7 @@ abstract public class TimeZone implements Serializable, Cloneable, Freezable<Tim
* @see #getAvailableIDs(SystemTimeZoneType, String, Integer)
*/
public static String[] getAvailableIDs(int rawOffset) {
- Set<String> ids = getAvailableIDs(SystemTimeZoneType.ANY, null, Integer.valueOf(rawOffset));
+ Set<String> ids = getAvailableIDs(SystemTimeZoneType.ANY, null, rawOffset);
return ids.toArray(new String[0]);
}
diff --git a/android_icu4j/src/main/java/android/icu/util/ULocale.java b/android_icu4j/src/main/java/android/icu/util/ULocale.java
index de4a53522..1837f4e11 100644
--- a/android_icu4j/src/main/java/android/icu/util/ULocale.java
+++ b/android_icu4j/src/main/java/android/icu/util/ULocale.java
@@ -45,11 +45,11 @@ import android.icu.impl.locale.InternalLocaleBuilder;
import android.icu.impl.locale.KeyTypeData;
import android.icu.impl.locale.LSR;
import android.icu.impl.locale.LanguageTag;
+import android.icu.impl.locale.LikelySubtags;
import android.icu.impl.locale.LocaleExtensions;
import android.icu.impl.locale.LocaleSyntaxException;
import android.icu.impl.locale.ParseStatus;
import android.icu.impl.locale.UnicodeLocaleExtension;
-import android.icu.impl.locale.XLikelySubtags;
import android.icu.lang.UScript;
import android.icu.text.LocaleDisplayNames;
import android.icu.text.LocaleDisplayNames.DialectHandling;
@@ -492,13 +492,13 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
/**
* Keep our own default ULocale.
*/
- private static Locale defaultLocale = Locale.getDefault();
- private static ULocale defaultULocale;
+ private static volatile ULocale defaultULocale;
private static Locale[] defaultCategoryLocales = new Locale[Category.values().length];
private static ULocale[] defaultCategoryULocales = new ULocale[Category.values().length];
static {
+ Locale defaultLocale = Locale.getDefault();
defaultULocale = forLocale(defaultLocale);
if (JDKLocaleHelper.hasLocaleCategories()) {
@@ -527,34 +527,47 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
* @return the default ULocale.
*/
public static ULocale getDefault() {
+ // Only synchronize if we must update the default locale.
+ ULocale currentDefaultULocale = defaultULocale;
+ if (currentDefaultULocale == null) {
+ // When Java's default locale has extensions (such as ja-JP-u-ca-japanese),
+ // Locale -> ULocale mapping requires BCP47 keyword mapping data that is currently
+ // stored in a resource bundle.
+ // If this happens during the class initialization's call to .forLocale(defaultLocale),
+ // then defaultULocale is still null until forLocale() returns.
+ // However, UResourceBundle currently requires non-null default ULocale.
+ // For now, this implementation returns ULocale.ROOT to avoid the problem.
+ // TODO: Consider moving BCP47 mapping data out of resource bundle later.
+ return ULocale.ROOT;
+ } else if (currentDefaultULocale.locale.equals(Locale.getDefault())) {
+ return currentDefaultULocale;
+ }
synchronized (ULocale.class) {
- if (defaultULocale == null) {
- // When Java's default locale has extensions (such as ja-JP-u-ca-japanese),
- // Locale -> ULocale mapping requires BCP47 keyword mapping data that is currently
- // stored in a resource bundle. However, UResourceBundle currently requires
- // non-null default ULocale. For now, this implementation returns ULocale.ROOT
- // to avoid the problem.
+ Locale currentDefault = Locale.getDefault();
+ assert currentDefault != null;
- // TODO: Consider moving BCP47 mapping data out of resource bundle later.
+ currentDefaultULocale = defaultULocale;
+ assert currentDefaultULocale != null;
- return ULocale.ROOT;
+ if (currentDefaultULocale.locale.equals(currentDefault)) {
+ return currentDefaultULocale;
}
- Locale currentDefault = Locale.getDefault();
- if (!defaultLocale.equals(currentDefault)) {
- defaultLocale = currentDefault;
- defaultULocale = forLocale(currentDefault);
-
- if (!JDKLocaleHelper.hasLocaleCategories()) {
- // Detected Java default Locale change.
- // We need to update category defaults to match
- // Java 7's behavior on Android API level 21..23.
- for (Category cat : Category.values()) {
- int idx = cat.ordinal();
- defaultCategoryLocales[idx] = currentDefault;
- defaultCategoryULocales[idx] = forLocale(currentDefault);
- }
- } }
- return defaultULocale;
+
+ ULocale nextULocale = forLocale(currentDefault);
+ assert nextULocale != null;
+
+ if (!JDKLocaleHelper.hasLocaleCategories()) {
+ // Detected Java default Locale change.
+ // We need to update category defaults to match
+ // Java 7's behavior on Android API level 21..23.
+ for (Category cat : Category.values()) {
+ int idx = cat.ordinal();
+ defaultCategoryLocales[idx] = currentDefault;
+ defaultCategoryULocales[idx] = nextULocale;
+ }
+ }
+
+ return defaultULocale = nextULocale;
}
}
@@ -576,8 +589,7 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
* @hide unsupported on Android
*/
public static synchronized void setDefault(ULocale newLocale){
- defaultLocale = newLocale.toLocale();
- Locale.setDefault(defaultLocale);
+ Locale.setDefault(newLocale.toLocale());
defaultULocale = newLocale;
// This method also updates all category default locales
for (Category cat : Category.values()) {
@@ -620,8 +632,7 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
// time.
Locale currentDefault = Locale.getDefault();
- if (!defaultLocale.equals(currentDefault)) {
- defaultLocale = currentDefault;
+ if (!defaultULocale.locale.equals(currentDefault)) {
defaultULocale = forLocale(currentDefault);
for (Category cat : Category.values()) {
@@ -887,6 +898,22 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
}
/**
+ * Get region code from a key in locale or null.
+ */
+ private static String getRegionFromKey(ULocale locale, String key) {
+ String region = locale.getKeywordValue(key);
+ if (region != null && region.length() >= 3 && region.length() <= 7) {
+ if (Character.isLetter(region.charAt(0))) {
+ return AsciiUtil.toUpperString(region.substring(0, 2));
+ } else {
+ // assume three-digit region code
+ return region.substring(0, 3);
+ }
+ }
+ return null;
+ }
+
+ /**
* <strong>[icu]</strong> Get the region to use for supplemental data lookup.
* Uses
* (1) any region specified by locale tag "rg"; if none then
@@ -909,17 +936,16 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
@Deprecated
public static String getRegionForSupplementalData(
ULocale locale, boolean inferRegion) {
- String region = locale.getKeywordValue("rg");
- if (region != null && region.length() >= 3 && region.length() <= 7) {
- if (Character.isLetter(region.charAt(0))) {
- return AsciiUtil.toUpperString(region.substring(0, 2));
- } else {
- // assume three-digit region code
- return region.substring(0, 3);
- }
+ String region = getRegionFromKey(locale, "rg");
+ if (region != null) {
+ return region;
}
region = locale.getCountry();
if (region.length() == 0 && inferRegion) {
+ region = getRegionFromKey(locale, "sd");
+ if (region != null) {
+ return region;
+ }
ULocale maximized = addLikelySubtags(locale);
region = maximized.getCountry();
}
@@ -2551,20 +2577,18 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
*
* If the provided ULocale instance is already in the maximal form, or there is no
* data available available for maximization, it will be returned. For example,
- * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+ * "sh" cannot be maximized, since there is no reasonable maximization.
* Otherwise, a new ULocale instance with the maximal form is returned.
*
* Examples:
*
* "en" maximizes to "en_Latn_US"
*
- * "de" maximizes to "de_Latn_US"
+ * "de" maximizes to "de_Latn_DE"
*
* "sr" maximizes to "sr_Cyrl_RS"
*
- * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
- *
- * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
+ * "zh_Hani" maximizes to "zh_Hani_CN"
*
* @param loc The ULocale to maximize
* @return The maximized ULocale instance.
@@ -2581,7 +2605,7 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
trailing = loc.localeID.substring(trailingIndex);
}
- LSR max = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(
+ LSR max = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(
new ULocale(loc.getLanguage(), loc.getScript(), loc.getCountry()), true);
String newLocaleID = createTagString(max.language, max.script, max.region,
trailing);
@@ -2688,7 +2712,7 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
trailing = loc.localeID.substring(trailingIndex);
}
- LSR lsr = XLikelySubtags.INSTANCE.minimizeSubtags(
+ LSR lsr = LikelySubtags.INSTANCE.minimizeSubtags(
loc.getLanguage(), loc.getScript(), loc.getCountry(), fieldToFavor);
String newLocaleID = createTagString(lsr.language, lsr.script, lsr.region,
trailing);
diff --git a/android_icu4j/src/main/java/android/icu/util/VersionInfo.java b/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
index a464d95fe..ede34d910 100644
--- a/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
+++ b/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
@@ -196,7 +196,7 @@ public final class VersionInfo implements Comparable<VersionInfo>
* @hide draft / provisional / internal are hidden on Android
*/
@Deprecated
- public static final String ICU_DATA_VERSION_PATH = "74b";
+ public static final String ICU_DATA_VERSION_PATH = "75b";
/**
* Data version in ICU4J.
@@ -300,7 +300,7 @@ public final class VersionInfo implements Comparable<VersionInfo>
throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
}
int version = getInt(major, minor, milli, micro);
- Integer key = Integer.valueOf(version);
+ Integer key = version;
VersionInfo result = MAP_.get(key);
if (result == null) {
result = new VersionInfo(version);
@@ -527,7 +527,7 @@ public final class VersionInfo implements Comparable<VersionInfo>
UNICODE_15_0 = getInstance(15, 0, 0, 0);
UNICODE_15_1 = getInstance(15, 1, 0, 0);
- ICU_VERSION = getInstance(74, 2, 0, 0);
+ ICU_VERSION = getInstance(75, 1, 0, 0);
ICU_DATA_VERSION = ICU_VERSION;
UNICODE_VERSION = UNICODE_15_1;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java b/android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java
index 41c8d2362..0c3d58e83 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java
@@ -42,7 +42,7 @@ public class TestDataElements_testtypes extends ListResourceBundle {
},
{
"emptyint",
- new Integer(0),
+ 0,
},
{
"emptyintv",
@@ -67,14 +67,14 @@ public class TestDataElements_testtypes extends ListResourceBundle {
{
"integerarray",
new Integer[] {
- new Integer(1),
- new Integer(2),
- new Integer(3),
- new Integer(-3),
- new Integer(4),
- new Integer(5),
- new Integer(6),
- new Integer(7),
+ 1,
+ 2,
+ 3,
+ -3,
+ 4,
+ 5,
+ 6,
+ 7,
},
},
{
@@ -101,19 +101,19 @@ public class TestDataElements_testtypes extends ListResourceBundle {
},
{
"minusone",
- new Integer(-1),
+ -1,
},
{
"one",
- new Integer(1),
+ 1,
},
{
"onehundredtwentythree",
- new Integer(123),
+ 123,
},
{
"plusone",
- new Integer(1),
+ 1,
},
{
"string",
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt
index 417c1001d..25a0f1460 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt
@@ -1,7 +1,7 @@
# Test data for Likely Subtags
# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Test data for https://www.unicode.org/reports/tr35/tr35.html#Likely_Subtags
@@ -788,7 +788,7 @@ pt-TL ; pt-Latn-TL ; pt-TL ;
qaa ; FAIL ; ;
qaa-CH ; FAIL ; ;
qaa-Cyrl ; FAIL ; ;
-qaa-Cyrl-CH ; ; ;
+qaa-Cyrl-CH ; FAIL ; ;
qu ; qu-Latn-PE ; qu ;
qu-AQ ; qu-Latn-AQ ; qu-AQ ;
qu-BO ; qu-Latn-BO ; qu-BO ;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt
index bce4a8a4f..2e4bb5929 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt
@@ -1,7 +1,7 @@
# Test data for locale identifier canonicalization
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt
index fd9986c00..ed0fdcd7b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt
@@ -1,7 +1,7 @@
# Test data for locale display name generation
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
# Format:
# @locale=<locale to display in>
@@ -65,7 +65,6 @@ en-u-co-gb2312; English (Simplified Chinese Sort Order - GB2312)
en-u-co-phonebk; English (Phonebook Sort Order)
en-u-co-phonetic; English (Phonetic Sort Order)
en-u-co-pinyin; English (Pinyin Sort Order)
-en-u-co-reformed; English (Reformed Sort Order)
en-u-co-search; English (General-Purpose Search)
en-u-co-searchjl; English (Search By Hangul Initial Consonant)
en-u-co-standard; English (Standard Sort Order)
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_header.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_header.txt
index d32b3c067..a060992b4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_header.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_header.txt
@@ -1,6 +1,6 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for personName formats
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
+# \ No newline at end of file
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_readme.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_readme.txt
index c45acdf84..fe3dca10f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_readme.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/_readme.txt
@@ -1,5 +1,5 @@
# Test data for personName formats
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/af.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/af.txt
index 726da7aa1..06efa0df3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/af.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/af.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: af
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/am.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/am.txt
index ac7b469a2..3fc2478d5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/am.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/am.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: am
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ar.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ar.txt
index 6776b1de5..a45007061 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ar.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ar.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ar
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/as.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/as.txt
index 6eeadad5c..38aafe03b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/as.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/as.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: as
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/az.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/az.txt
index 2f1c236be..a28f8bfe0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/az.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/az.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: az
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/be.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/be.txt
index 5be3444c8..d93e284e9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/be.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/be.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: be
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bg.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bg.txt
index 78861df6c..97ff654d5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bg.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bg.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bg
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bn.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bn.txt
index 50982f61a..3e344225f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bn.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bn
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bs.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bs.txt
index c6687f31c..b2306853c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bs.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/bs.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bs
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ca.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ca.txt
index 259fec0cb..3f1309c05 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ca.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ca.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ca
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/catalog.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/catalog.txt
index 55f5de7cd..4d6db7134 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/catalog.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/catalog.txt
@@ -1,10 +1,9 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for personName formats
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-af.txt
+#af.txt
am.txt
ar.txt
as.txt
@@ -19,31 +18,21 @@ cs.txt
cy.txt
da.txt
de.txt
-de_CH.txt
dsb.txt
el.txt
en.txt
-en_AU.txt
-en_CA.txt
-en_GB.txt
-en_IN.txt
es.txt
-es_419.txt
-es_MX.txt
-es_US.txt
et.txt
eu.txt
fa.txt
fi.txt
fil.txt
fr.txt
-fr_CA.txt
ga.txt
gd.txt
gl.txt
gu.txt
ha.txt
-ha_NE.txt
he.txt
hi.txt
hi_Latn.txt
@@ -82,7 +71,6 @@ pa.txt
pl.txt
ps.txt
pt.txt
-pt_PT.txt
qu.txt
ro.txt
ru.txt
@@ -94,12 +82,9 @@ sl.txt
so.txt
sq.txt
sr.txt
-sr_Cyrl_BA.txt
sr_Latn.txt
-sr_Latn_BA.txt
sv.txt
sw.txt
-sw_KE.txt
ta.txt
te.txt
tg.txt
@@ -113,10 +98,8 @@ uz.txt
vi.txt
wo.txt
yo.txt
-yo_BJ.txt
yue.txt
yue_Hans.txt
zh.txt
zh_Hant.txt
-zh_Hant_HK.txt
zu.txt \ No newline at end of file
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/chr.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/chr.txt
index d1941bac6..79c0413f0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/chr.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/chr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: chr
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cs.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cs.txt
index 56e0c6289..ba810bc2d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cs.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cs.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: cs
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cy.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cy.txt
index dd32a7a68..4efcf7d98 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cy.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/cy.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: cy
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/da.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/da.txt
index bda38f8d1..8df996418 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/da.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/da.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: da
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de.txt
index e719c9b60..8cb75f208 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: de
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de_CH.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de_CH.txt
deleted file mode 100644
index e2e11de09..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/de_CH.txt
+++ /dev/null
@@ -1,772 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: de_CH
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Lena
-name ; locale; de_CH
-
-expectedResult; Lena
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; L
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Iris
-name ; surname; Falke
-name ; locale; de_CH
-
-expectedResult; Falke, Iris
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Iris Falke
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Falke, I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; sorting; short; referring; formal
-
-expectedResult; I. Falke
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Iris F.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Falke
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Iris
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; FI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IF
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; F
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Max
-name ; given2; Ben
-name ; surname; Mustermann
-name ; locale; de_CH
-
-expectedResult; Mustermann, Max Ben
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; Max Ben Mustermann
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Mustermann, Max B.
-
-parameters; surnameFirst; medium; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Max B. Mustermann
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Mustermann, M. B.
-
-parameters; surnameFirst; short; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; M. B. Mustermann
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Mustermann, Max
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Max Mustermann
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Mustermann, M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mustermann
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Max M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Max
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MBM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MMB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MM
-
-parameters; givenFirst; long; monogram; informal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; Dr.
-name ; given; Paul
-name ; given-informal; Pauli
-name ; given2; Vinzent
-name ; surname-prefix; von
-name ; surname-core; Fischer
-name ; surname2; Müller
-name ; generation; jr.
-name ; credentials; MdB
-name ; locale; de_CH
-
-expectedResult; von Fischer, Dr. Paul Vinzent jr. MdB
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Dr. Paul Vinzent von Fischer jr. MdB
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Fischer, Paul V. jr. MdB
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Paul V. von Fischer jr. MdB
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Fischer, Paul Vinzent von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Fischer, Paul V. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Fischer, P. V. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; von Fischer, P. V.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Fischer, Pauli
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; P. V. von Fischer
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Pauli von Fischer
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Dr. von Fischer
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Fischer, P.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Pauli v. F.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Pauli
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; PVV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VPV
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; PV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VP
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Tomás
-name ; locale; ko_AQ
-
-expectedResult; Tomás
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; T
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Adélaïde
-name ; surname; Lemaître
-name ; locale; ko_AQ
-
-expectedResult; Lemaître, Adélaïde
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adélaïde Lemaître
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Lemaître, A.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; sorting; short; referring; formal
-
-expectedResult; A. Lemaître
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Adélaïde L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adélaïde
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Lemaître
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; AL
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; LA
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Kjetil
-name ; given2; Bjørn
-name ; surname; Løseth
-name ; locale; ko_AQ
-
-expectedResult; Løseth, Kjetil Bjørn
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; Kjetil Bjørn Løseth
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Løseth, Kjetil B.
-
-parameters; surnameFirst; medium; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Kjetil B. Løseth
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Løseth, Kjetil
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kjetil Løseth
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Løseth, K. B.
-
-parameters; surnameFirst; short; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; K. B. Løseth
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Løseth, K.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kjetil L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Kjetil
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Løseth
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; KBL
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; LKB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; KL
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; LK
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Anna Cornelia
-name ; given-informal; Nele
-name ; given2; Eva Sophia
-name ; surname-prefix; van den
-name ; surname-core; Wolf
-name ; surname2; Becker Schmidt
-name ; generation; jr.
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; van den Wolf, Prof. Dr. Anna Cornelia Eva Sophia jr. M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Prof. Dr. Anna Cornelia Eva Sophia van den Wolf jr. M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; van den Wolf, Anna Cornelia E. S. jr. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Anna Cornelia E. S. van den Wolf jr. M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wolf, Anna Cornelia Eva Sophia van den
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Wolf, Anna Cornelia E. S. van den
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; van den Wolf, A. C. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wolf, A. C. E. S. van den
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. C. E. S. van den Wolf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Prof. Dr. van den Wolf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Wolf, A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; van den Wolf, Nele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Nele van den Wolf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Nele v. d. W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Nele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/dsb.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/dsb.txt
index fcf81ed62..e94c3af1e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/dsb.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/dsb.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: dsb
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/el.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/el.txt
index b7ad436f9..0835e9086 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/el.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/el.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: el
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en.txt
index 06f447f2b..d1dabbbf6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: en
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_AU.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_AU.txt
deleted file mode 100644
index d130d4ed4..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_AU.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_AU
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_AU
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_AU
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_AU
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_AU
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_CA.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_CA.txt
deleted file mode 100644
index 3424bc2ad..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_CA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_CA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_CA
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_CA
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_CA
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr.
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr.
-name ; credentials; MP
-name ; locale; en_CA
-
-expectedResult; Mr. Bertram Wilberforce Henry Robert Wooster Jr., MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr. Bertram Wilberforce Henry Robert Jr., MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr., MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr., MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr. Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr.
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl Jr., MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof. Dr. Ada Cornelia César Martín Jr., MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr., MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr., MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Prof. Dr. von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_GB.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_GB.txt
deleted file mode 100644
index ff38d8a29..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_GB.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_GB
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_GB
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_GB
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_GB
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, MSH
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue W
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; MSH Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson MSH
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Watson MS
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_GB
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce HR Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce HR Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce HR
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster, BWHR
-
-parameters; sorting; short; referring; formal
-
-expectedResult; BWHR Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster BWHR
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Wooster BW
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bertie W
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, ZH
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber ZH
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Zäzilia S
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; ZH Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Stöber Z
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia CM von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; von Brühl Ada Cornelia CM Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia CM von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Brühl, ACCM von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; ACCM von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl ACCM
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl AC
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele vB
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_IN.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_IN.txt
deleted file mode 100644
index 8c5b8db1b..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/en_IN.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_IN
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_IN
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_IN
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_IN
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_IN
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es.txt
index 3cb56375b..f9a219c1d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: es
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_419.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_419.txt
deleted file mode 100644
index 3821f6ea0..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_419.txt
+++ /dev/null
@@ -1,830 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_419
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_419
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_419
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_419
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz, J. L. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Miguel Ángel
-name ; given-informal; Migue
-name ; given2; Juan Antonio
-name ; surname-core; Pablo
-name ; surname2; Pérez
-name ; generation; II
-name ; locale; es_419
-
-expectedResult; Pablo Pérez, Sr. Miguel Ángel Juan Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Sr. Miguel Ángel Juan Antonio Pablo II
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Pablo Pérez Miguel Ángel Juan Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Pablo, Sr. Miguel Ángel Juan Antonio
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Pablo Pérez, Sr. Miguel Ángel J. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Miguel Ángel J. A. Pablo
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Pablo Miguel Ángel J. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Pablo Pérez, Migue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; M. Á. J. A. Pablo
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Migue Pablo Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Pablo M. Á. J. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Pablo Pérez Migue
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. Pablo Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; Pablo, Migue
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Migue Pablo
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Pablo M. Á.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Pablo Migue
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. Pablo
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Migue P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Migue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MPP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; PMJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; PM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Peter
-name ; locale; ko_AQ
-
-expectedResult; Peter
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; P
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Martine
-name ; surname; Sodersen
-name ; locale; ko_AQ
-
-expectedResult; Sodersen, Martine
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Martine Sodersen
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Sodersen Martine
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Sodersen, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. Sodersen
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sodersen M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Martine S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Sodersen
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Martine
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Christopher
-name ; given2; Hans
-name ; surname; Jacobsen
-name ; locale; ko_AQ
-
-expectedResult; Jacobsen, Christopher Hans
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Christopher Hans Jacobsen
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Jacobsen Christopher Hans
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Jacobsen, Christopher H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Christopher H. Jacobsen
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Jacobsen Christopher H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Jacobsen, Christopher
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Christopher Jacobsen
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Jacobsen Christopher
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Jacobsen, C. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; C. H. Jacobsen
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Christopher J.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Jacobsen C. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Christopher
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Jacobsen C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Jacobsen
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; JCH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; CJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; JC
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; C
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; von
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dra. Mary Sue Marie von Miller II, Dr./Dra.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-
-expectedResult; von Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; von Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue M. von Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. von Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; von Miller Jones, Marge
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; Marge von Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; von Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Prof. Dra. von Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; M. S. M. von Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Miller, Marge
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marge von Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge v. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MVJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_MX.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_MX.txt
deleted file mode 100644
index 74c4a52d2..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_MX.txt
+++ /dev/null
@@ -1,831 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_MX
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_MX
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_MX
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_MX
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz, J. L. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Marcelo Miguel
-name ; given-informal; Marce
-name ; given2; Javier Ariel
-name ; surname-core; Romero
-name ; surname2; Pérez
-name ; generation; Júnior
-name ; credentials; Miembro del Parlamento
-name ; locale; es_MX
-
-expectedResult; Romero Pérez Marcelo Miguel Javier Ariel Miembro del Parlamento
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Marcelo Miguel J. A. Romero Miembro del Parlamento
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Romero Marcelo Miguel J. A. Miembro del Parlamento
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Romero Pérez, Sr. Marcelo Miguel Javier Ariel
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Sr. Marcelo Miguel Javier Ariel Romero Pérez
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Romero, Sr. Marcelo Miguel Javier Ariel
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Romero Pérez, Sr. Marcelo Miguel J. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Romero Pérez, Marce
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; M. M. J. A. Romero
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marce Romero Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Romero M. M. J. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Romero Pérez Marce
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. Romero Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; Romero, Marce
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marce Romero
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Romero M. M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Romero Marce
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. Romero
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Marce R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marce
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MRP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RMJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; RM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Mohammed
-name ; locale; ko_AQ
-
-expectedResult; Mohammed
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; M
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Zäzilia
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Z. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; Käthe
-name ; given2; Kate
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe Kate
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Käthe Kate Müller
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Müller Käthe Kate
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Müller, Käthe K.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Käthe K. Müller
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Müller Käthe K.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Müller, K. K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; K. K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller K. K.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MKK
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; von
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Prof. Dra. Mary Sue Marie von Miller Jones
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; von Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue M. von Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. von Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; von Miller Jones, Marge
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; Marge von Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; von Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Prof. Dra. von Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; M. S. M. von Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Miller, Marge
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marge von Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge v. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MVJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_US.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_US.txt
deleted file mode 100644
index 8af3e97c7..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/es_US.txt
+++ /dev/null
@@ -1,801 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_US
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_US
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_US
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_US
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Alejandro Martín
-name ; given-informal; Ale
-name ; given2; Carlos Miguel
-name ; surname-core; García
-name ; surname2; Pérez
-name ; generation; Júnior
-name ; credentials; Miembro del Parlamento
-name ; locale; es_US
-
-expectedResult; Sr. Alejandro Martín Carlos Miguel García Júnior, Miembro del Parlamento
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; García Pérez Alejandro Martín Carlos Miguel Miembro del Parlamento
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Alejandro Martín C. M. García Miembro del Parlamento
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; García Alejandro Martín C. M. Miembro del Parlamento
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; García Pérez, Alejandro Martín Carlos Miguel
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García, Sr. Alejandro Martín Carlos Miguel
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; García, Sr. Alejandro Martín C. M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; A. M. C. M. García
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García A. M. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Ale García Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; García Pérez Ale
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; García A. M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ale García
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Ale
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. García
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Ale G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; AGP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; Ale
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; GA
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Aziz
-name ; locale; ko_AQ
-
-expectedResult; Aziz
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Kate
-name ; surname; Smith
-name ; locale; ko_AQ
-
-expectedResult; Smith, Kate
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kate Smith
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Smith Kate
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; K. Smith
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Smith K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kate S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Smith
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Kate
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Sarah
-name ; given2; Anna
-name ; surname; Johnson
-name ; locale; ko_AQ
-
-expectedResult; Johnson, Sarah Anna
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; Johnson Sarah Anna
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Sarah Anna Johnson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Johnson, Sarah A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Johnson Sarah A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Sarah A. Johnson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Johnson S. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Johnson Sarah
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. A. Johnson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sarah Johnson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Johnson S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sarah J.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Johnson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Sarah
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JSA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; de
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dra. Mary Sue Marie de Miller II, Dr./Dra.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; de Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; de Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; de Miller, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; de Miller Jones, Mary Sue Marie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; de Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Mary Sue M. de Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. de Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; de Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Marge de Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Prof. Dra. de Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; de Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; M. S. M. de Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; de Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; de Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge de Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Marge d. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; DMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MDJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; DM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; D
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/et.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/et.txt
index 543ce3eb9..9344dfae1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/et.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/et.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: et
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/eu.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/eu.txt
index eb47d520f..7446c34b7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/eu.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/eu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: eu
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fa.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fa.txt
index ee9efab2b..8113fcb39 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fa.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fa.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fa
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fi.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fi.txt
index 7a456e390..9ab44f71b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fi.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fi
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fil.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fil.txt
index c966189a0..160cbc5e7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fil.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fil.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fil
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr.txt
index fba3bd02f..1bee09713 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fr
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr_CA.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr_CA.txt
deleted file mode 100644
index e6791fb5a..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/fr_CA.txt
+++ /dev/null
@@ -1,831 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: fr_CA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Adèle
-name ; locale; fr_CA
-
-expectedResult; Adèle
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Louise
-name ; surname; Péricourt
-name ; locale; fr_CA
-
-expectedResult; Péricourt, Louise
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Louise Péricourt
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Péricourt Louise
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Péricourt, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; L. Péricourt
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Péricourt L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Louise P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Péricourt
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Louise
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; LP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; PL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Marie-Agnès
-name ; given2; Suzanne
-name ; surname; Gilot
-name ; locale; fr_CA
-
-expectedResult; Gilot, Marie-Agnès Suzanne
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Gilot Marie-Agnès Suzanne
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Marie-Agnès Suzanne Gilot
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Gilot, Marie-Agnès S.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Gilot Marie-Agnès S.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Marie-Agnès S. Gilot
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Gilot, Marie-Agnès
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Gilot Marie-Agnès
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marie-Agnès Gilot
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Gilot, M.-A. S.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Gilot M.-A. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; M.-A. S. Gilot
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marie-Agnès G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Gilot M.-A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Marie-Agnès
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Gilot
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GMS
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MSG
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; GM
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; MG
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; M.
-name ; given; Jean-Nicolas
-name ; given-informal; Nico
-name ; given2; Louis Marcel
-name ; surname-prefix; de
-name ; surname-core; Larochellière
-name ; surname2; Drainville
-name ; generation; fils
-name ; locale; fr_CA
-
-expectedResult; M. de Larochellière Jean-Nicolas Louis Marcel fils
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; M. Jean-Nicolas Louis Marcel de Larochellière fils
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Larochellière, Jean-Nicolas Louis Marcel de
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Larochellière, Jean-Nicolas L. M. de
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; de Larochellière Jean-Nicolas L. M.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Jean-Nicolas L. M. de Larochellière
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Larochellière, J.-N. L. M. de
-
-parameters; sorting; short; referring; formal
-
-expectedResult; de Larochellière J.-N. L. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; J.-N. L. M. de Larochellière
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; de Larochellière J.-N.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Larochellière, Nico de
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; de Larochellière Nico
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Nico de Larochellière
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; M. de Larochellière
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Nico d. L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Nico
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JLL
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; LJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JL
-
-parameters; givenFirst; medium; monogram; formal
-
-expectedResult; LJ
-
-parameters; surnameFirst; medium; monogram; formal
-
-expectedResult; LN
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; NL
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; N
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Asmar
-name ; locale; ko_AQ
-
-expectedResult; Asmar
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Hermione
-name ; surname; Granger
-name ; locale; ko_AQ
-
-expectedResult; Granger, Hermione
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Granger Hermione
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Hermione Granger
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Granger, H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Hermione G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Granger H.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; H. Granger
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hermione
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Granger
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GH
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; HG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; H
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; Ginevra
-name ; given2; Molly
-name ; surname; Weasley
-name ; locale; ko_AQ
-
-expectedResult; Weasley, Ginevra Molly
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Ginevra Molly Weasley
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Weasley Ginevra Molly
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Weasley, Ginevra M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ginevra M. Weasley
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Weasley Ginevra M.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Weasley, Ginevra
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ginevra Weasley
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Weasley Ginevra
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Weasley, G. M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; G. M. Weasley
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Weasley G. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Ginevra W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Weasley G.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ginevra
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Weasley
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GMW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WGM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; GW
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; WG
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; María Florencia
-name ; given-informal; Flor
-name ; given2; Martina Cristina
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr.
-name ; credentials; MD DDS
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dr. María Florencia Martina Cristina von Brühl Jr., MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Prof. Dr. von Brühl María Florencia Martina Cristina Jr., MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Brühl, María Florencia Martina Cristina von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, María Florencia M. C. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; María Florencia M. C. von Brühl
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl María Florencia M. C.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, M. F. M. C. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. F. M. C. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl M. F. M. C.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof. Dr. von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Brühl, Flor von
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; von Brühl M. F.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Flor von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Flor
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Flor v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Flor
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MMB
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; BF
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; BM
-
-parameters; surnameFirst; medium; monogram; formal
-
-expectedResult; FB
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MB
-
-parameters; givenFirst; medium; monogram; formal
-
-expectedResult; B
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; F
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ga.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ga.txt
index 3aba9ec85..eae720d2d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ga.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ga.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ga
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gd.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gd.txt
index c20b60214..d2b1b8837 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gd.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gd.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gd
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gl.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gl.txt
index a05b02af4..5000968a8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gl.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gl
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gu.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gu.txt
index aa7aa5c26..a1a164e90 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gu.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/gu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gu
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha.txt
index 474b7a3c3..d6fff6a1a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ha
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha_NE.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha_NE.txt
deleted file mode 100644
index d2c879c66..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ha_NE.txt
+++ /dev/null
@@ -1,762 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: ha_NE
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Sule
-name ; locale; ha_NE
-
-expectedResult; Sule
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Shehu
-name ; surname; Muhammed
-name ; locale; ha_NE
-
-expectedResult; Muhammed, Shehu
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Muhammed Shehu
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Shehu Muhammed
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Muhammed S.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; S. Muhammed
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Muhammed
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Shehu M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Shehu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Fatima
-name ; given2; Amina
-name ; surname; Umar
-name ; locale; ha_NE
-
-expectedResult; Umar, Fatima Amina
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Fatima Amina Umar
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Umar Fatima Amina
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Umar Fatima A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Umar, Fatima
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Fatima Umar
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Umar Fatima
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; F. A. Umar
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Umar F. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Fatima U.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Umar F.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Fatima
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Umar
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; FAU
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; UFA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; UF
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; F
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; U
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Malam
-name ; given; Shehu
-name ; given2; Bello
-name ; surname-core; Modibbo
-name ; credentials; MP
-name ; locale; ha_NE
-
-expectedResult; Malam Shehu Bello Modibbo MP
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Modibbo Malam Shehu Bello MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Modibbo, Shehu Bello
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Modibbo Shehu B. MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Modibbo, Shehu
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Malam Modibbo
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Modibbo S. B.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Modibbo Shehu
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. B. Modibbo
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Shehu Modibbo
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Modibbo S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Shehu M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Shehu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SBM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Farf. Dr.
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; Eva Sophia
-name ; surname-prefix; van den
-name ; surname-core; Wolf
-name ; surname2; Becker Schmidt
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Farf. Dr. Ada Cornelia Eva Sophia van den Wolf Becker Schmidt M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; van den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; van den Wolf Ada Cornelia E. S. Jr, M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wolf, Ada Cornelia Eva Sophia van den
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A. C. E. S. van den Wolf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; van den Wolf A. C. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Farf. Dr. van den Wolf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Wolf, Neele
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Neele van den Wolf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; van den Wolf A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; van den Wolf Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. d. W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/he.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/he.txt
index adccf7613..9bee575e0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/he.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/he.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: he
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi.txt
index d9021e942..6fde59f4b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hi
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi_Latn.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi_Latn.txt
index 4bac4f344..cdd12e006 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi_Latn.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hi_Latn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hi_Latn
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hr.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hr.txt
index c8b4c4508..c944a06a2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hr.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hr
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hsb.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hsb.txt
index 40fa1470c..65980c01c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hsb.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hsb.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hsb
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hu.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hu.txt
index ffd6167bb..0282ddb51 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hu.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hu
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hy.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hy.txt
index 98390483c..129c9ef9a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hy.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/hy.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hy
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/id.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/id.txt
index 0069dcc04..2c43aa4ed 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/id.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/id.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: id
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ig.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ig.txt
index ba7c854cb..c9a7755a2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ig.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ig.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ig
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/is.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/is.txt
index f276fc1c8..b593480a0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/is.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/is.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: is
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/it.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/it.txt
index 94d1f4308..0fa151d2a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/it.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/it.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: it
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ja.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ja.txt
index da3fd82e4..1ff2d977e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ja.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ja.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ja
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/jv.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/jv.txt
index ecd4f8180..1cd2195ce 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/jv.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/jv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: jv
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ka.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ka.txt
index ced01ad4d..412ebf1b4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ka.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ka.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ka
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kk.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kk.txt
index 2a46fc875..1d55b15f1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kk.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kk
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/km.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/km.txt
index e2f529fbd..a457bd4a0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/km.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/km.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: km
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kn.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kn.txt
index 295c955b8..9a773f820 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kn.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kn
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ko.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ko.txt
index a04f3bc91..3e4319a3e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ko.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ko.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ko
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kok.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kok.txt
index aef93c2ef..9af38f5e3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kok.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/kok.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kok
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ky.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ky.txt
index bdc49df6e..37553ed86 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ky.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ky.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ky
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lo.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lo.txt
index 094259ed5..29e47e22b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lo.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lo
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lt.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lt.txt
index ab79d6e88..8bdba8e63 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lt.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lt.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lt
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lv.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lv.txt
index d7a6d1482..48059189c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lv.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/lv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lv
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mk.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mk.txt
index fe66a9bab..12a4423bc 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mk.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mk
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ml.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ml.txt
index a2d583167..b18f25f1e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ml.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ml.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ml
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mn.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mn.txt
index 23bff1e29..e702e69db 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mn.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mn
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mr.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mr.txt
index f42c24ed6..716ce3746 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mr.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/mr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mr
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ms.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ms.txt
index 7d046ce6a..b5f9438d5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ms.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ms.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ms
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/my.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/my.txt
index e7fcdfcb5..d512446c7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/my.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/my.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: my
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ne.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ne.txt
index 771c007ea..ad0aa217e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ne.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ne.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ne
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nl.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nl.txt
index dcb197e39..8e469d2d9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nl.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: nl
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nn.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nn.txt
index 0f3ffeb63..a6272c8f4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nn.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/nn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: nn
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/no.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/no.txt
index 86734e653..777ee130c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/no.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/no.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: no
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/or.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/or.txt
index fc4c7931e..7f67e5a60 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/or.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/or.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: or
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pa.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pa.txt
index 55ce96617..4814f8d89 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pa.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pa.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pa
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pl.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pl.txt
index dc2c1ff7a..94423727c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pl.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pl
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ps.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ps.txt
index b640ee021..8206054d0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ps.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ps.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ps
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt.txt
index d7d9f9948..a121341c8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pt
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt_PT.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt_PT.txt
deleted file mode 100644
index 5f4c0ffeb..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/pt_PT.txt
+++ /dev/null
@@ -1,814 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: pt_PT
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Maria
-name ; locale; pt_PT
-
-expectedResult; Maria
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; M
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Maria
-name ; surname; Silva
-name ; locale; pt_PT
-
-expectedResult; Silva, Maria
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Maria Silva
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Silva Maria
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Silva, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Maria S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Silva M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Maria
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Maria João
-name ; given2; Pedro
-name ; surname; Silva
-name ; locale; pt_PT
-
-expectedResult; Silva, Maria João Pedro
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Maria João Pedro Silva
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Silva Maria João Pedro
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Maria João P. Silva
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Silva Maria João P.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Silva, Maria João
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Maria João Pedro
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Maria João Silva
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Silva Maria João
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Silva, M. J. P.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. J. P. Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Silva M. J. P.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Maria João S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Silva M. J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Maria João
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MPS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SMP
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; José
-name ; given-informal; Zé
-name ; given2; Pedro Eduardo
-name ; surname-prefix; da
-name ; surname-core; Silva
-name ; surname2; Silveira
-name ; generation; Jr.
-name ; credentials; MP
-name ; locale; pt_PT
-
-expectedResult; da Silva Sr. José Pedro Eduardo Jr., MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Sr. José Pedro Eduardo da Silva Jr., MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Silva, José Pedro Eduardo da
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; da Silva José P. E. Jr., MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; José P. E. da Silva Jr., MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Sr. José Pedro Eduardo
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; da Silva, J. P. E.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; da Silva J. P. E.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; J. P. E. da Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sr. José da Silva
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; da Silva, Zé
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; da Silva J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; da Silva Zé
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zé da Silva
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Sr. José
-
-parameters; givenFirst; long; addressing; formal
-
-expectedResult; Zé d. S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; DJP
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JPD
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; DZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZD
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; Zé
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; D
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Hamish
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Stöber, Z. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Mary Lou
-name ; given-informal; Neele
-name ; given2; Cesare Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof. Dr. Mary Lou Cesare Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof. Dr. Mary Lou Cesare Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Mary Lou C. M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Mary Lou C. M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Mary Lou Cesare Martín von
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof. Dr. Mary Lou Cesare Martín
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Prof. Dr. Mary Lou von Brühl
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; von Brühl, M. L. C. M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. L. C. M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl M. L. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof. Dr. Mary Lou
-
-parameters; givenFirst; long; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl M. L.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MCV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VMC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/qu.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/qu.txt
index 6122737fc..1318852ac 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/qu.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/qu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: qu
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ro.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ro.txt
index 5b8e6b8e0..8a1585735 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ro.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ro.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ro
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ru.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ru.txt
index 070e3a3d5..2f556cf6a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ru.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ru.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ru
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sc.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sc.txt
index 1c0c0cc60..4ca703902 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sc.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sc.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sc
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sd.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sd.txt
index 33fecc3e3..4a6e6bd39 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sd.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sd.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sd
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/si.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/si.txt
index e3231077e..3a889b0d7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/si.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/si.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: si
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sk.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sk.txt
index 39569e58f..e23c70af7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sk.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sk
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sl.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sl.txt
index 6b0e0f7bc..7ce7763e0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sl.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sl
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/so.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/so.txt
index b07186c77..a9ef691e9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/so.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/so.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: so
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sq.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sq.txt
index e2f7e2d70..682d8ed74 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sq.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sq.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sq
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr.txt
index 2167976d0..b13c1252a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sr
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Cyrl_BA.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Cyrl_BA.txt
deleted file mode 100644
index e786482eb..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Cyrl_BA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sr_Cyrl_BA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Иван
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Иван
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; И
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Ирена
-name ; surname; Марковић
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Марковић, Ирена
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ирена Марковић
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Марковић Ирена
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Марковић, И.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; И. Марковић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Марковић И.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ирена М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Марковић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Ирена
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ИМ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; МИ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; И
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Јован
-name ; given2; Драган
-name ; surname; Поповић
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Поповић, Јован Драган
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Јован Драган Поповић
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Поповић Јован Драган
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Поповић, Јован Д.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Јован Д. Поповић
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Поповић Јован Д.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Поповић, Ј. Д.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Поповић, Јован
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ј. Д. Поповић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Јован Поповић
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Поповић Ј. Д.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Поповић Јован
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Поповић Ј.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Јован П.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Поповић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Јован
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ЈДП
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ПЈД
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ЈП
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ПЈ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; Ј
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; П
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; др
-name ; given; Слађана
-name ; given-informal; Слађа
-name ; given2; Вера
-name ; surname-core; Миленковић
-name ; generation; млађи
-name ; credentials; дипл. инж.
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Миленковић др Слађана Вера млађи, дипл. инж.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Миленковић Слађана В. млађи, дипл. инж.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Слађана В. Миленковић млађи, дипл. инж.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; др Слађана Вера Миленковић дипл. инж.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Миленковић, Слађана Вера
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Миленковић, Слађана В.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Миленковић, С. В.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Миленковић, Слађа
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Миленковић С. В.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Миленковић Слађа
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; С. В. Миленковић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Слађа Миленковић
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; др Миленковић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Миленковић С.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Слађа М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Слађа
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; МСВ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; СВМ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; МС
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; СМ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; С
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Синбад
-name ; locale; ko_AQ
-
-expectedResult; Синбад
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; С
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Кете
-name ; surname; Милер
-name ; locale; ko_AQ
-
-expectedResult; Милер, Кете
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Кете Милер
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Милер Кете
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Милер, К.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; К. Милер
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Милер К.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Кете М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Милер
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Кете
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; КМ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; МК
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; К
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Цецилија
-name ; given2; Хемиш
-name ; surname; Штебер
-name ; locale; ko_AQ
-
-expectedResult; Штебер, Цецилија Хемиш
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Цецилија Хемиш Штебер
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Штебер Цецилија Хемиш
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Штебер, Цецилија Х.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Цецилија Х. Штебер
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Штебер Цецилија Х.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Штебер, Цецилија
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Цецилија Штебер
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Штебер Цецилија
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Штебер, Ц. Х.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Ц. Х. Штебер
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Штебер Ц. Х.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Цецилија Ш.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Штебер Ц.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Цецилија
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Штебер
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; ЦХШ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ШЦХ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ЦШ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ШЦ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; Ц
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; Ш
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; проф. др
-name ; given; Александра
-name ; given-informal; Сања
-name ; given2; Ева Сара
-name ; surname-prefix; ван ден
-name ; surname-core; Волф
-name ; surname2; Петровић Југовић
-name ; generation; млађи
-name ; credentials; дипл. инж.
-name ; locale; ko_AQ
-
-expectedResult; проф. др Александра Ева Сара ван ден Волф Петровић Југовић дипл. инж.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; ван ден Волф проф. др Александра Ева Сара млађи, дипл. инж.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Александра Е. С. ван ден Волф млађи, дипл. инж.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; ван ден Волф Александра Е. С. млађи, дипл. инж.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Волф, Александра Ева Сара ван ден
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Волф, Александра Е. С. ван ден
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Волф, А. Е. С. ван ден
-
-parameters; sorting; short; referring; formal
-
-expectedResult; А. Е. С. ван ден Волф
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; ван ден Волф А. Е. С.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; проф. др ван ден Волф
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; ван ден Волф, Сања
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; ван ден Волф Сања
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Сања ван ден Волф
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; ван ден Волф А.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Сања в. д. В.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Сања
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; АЕВ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ВАЕ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ВС
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; СВ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; В
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; С
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn.txt
index fb8c4342e..f8834dff6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sr_Latn
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn_BA.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn_BA.txt
deleted file mode 100644
index d37883f16..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sr_Latn_BA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sr_Latn_BA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Ivan
-name ; locale; sr_Latn_BA
-
-expectedResult; Ivan
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; I
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irena
-name ; surname; Marković
-name ; locale; sr_Latn_BA
-
-expectedResult; Marković, Irena
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Irena Marković
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Marković Irena
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marković, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; I. Marković
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marković I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Irena M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marković
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irena
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; IM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Jovan
-name ; given2; Dragan
-name ; surname; Popović
-name ; locale; sr_Latn_BA
-
-expectedResult; Popović, Jovan Dragan
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Jovan Dragan Popović
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Popović Jovan Dragan
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Popović, Jovan D.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Jovan D. Popović
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Popović Jovan D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Popović, J. D.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Popović, Jovan
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; J. D. Popović
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Jovan Popović
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Popović J. D.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Popović Jovan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Popović J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Jovan P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Popović
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Jovan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JDP
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; PJD
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JP
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; PJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; dr
-name ; given; Slađana
-name ; given-informal; Slađa
-name ; given2; Vera
-name ; surname-core; Milenković
-name ; generation; mlađi
-name ; credentials; dipl. inž.
-name ; locale; sr_Latn_BA
-
-expectedResult; Milenković dr Slađana Vera mlađi, dipl. inž.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Milenković Slađana V. mlađi, dipl. inž.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Slađana V. Milenković mlađi, dipl. inž.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; dr Slađana Vera Milenković dipl. inž.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Milenković, Slađana Vera
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Milenković, Slađana V.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Milenković, S. V.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Milenković, Slađa
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Milenković S. V.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Milenković Slađa
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. V. Milenković
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Slađa Milenković
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; dr Milenković
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Milenković S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Slađa M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Slađa
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSV
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SVM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Kete
-name ; surname; Miler
-name ; locale; ko_AQ
-
-expectedResult; Miler, Kete
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kete Miler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Miler Kete
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Miler, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Miler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Miler K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kete M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Miler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Kete
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Cecilija
-name ; given2; Hemiš
-name ; surname; Šteber
-name ; locale; ko_AQ
-
-expectedResult; Šteber, Cecilija Hemiš
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Cecilija Hemiš Šteber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Šteber Cecilija Hemiš
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Šteber, Cecilija H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Cecilija H. Šteber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Šteber Cecilija H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Šteber, Cecilija
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Cecilija Šteber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Šteber Cecilija
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Šteber, C. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; C. H. Šteber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Šteber C. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Cecilija Š.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Šteber C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Cecilija
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Šteber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; CHŠ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ŠCH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; CŠ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ŠC
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; C
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; Š
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; prof. dr
-name ; given; Aleksandra
-name ; given-informal; Sanja
-name ; given2; Eva Sara
-name ; surname-prefix; van den
-name ; surname-core; Volf
-name ; surname2; Petrović Jugović
-name ; generation; mlađi
-name ; credentials; dipl. inž.
-name ; locale; ko_AQ
-
-expectedResult; prof. dr Aleksandra Eva Sara van den Volf Petrović Jugović dipl. inž.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; van den Volf prof. dr Aleksandra Eva Sara mlađi, dipl. inž.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Aleksandra E. S. van den Volf mlađi, dipl. inž.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; van den Volf Aleksandra E. S. mlađi, dipl. inž.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Volf, Aleksandra Eva Sara van den
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Volf, Aleksandra E. S. van den
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Volf, A. E. S. van den
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. E. S. van den Volf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; prof. dr van den Volf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Volf A. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; van den Volf, Sanja
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Sanja van den Volf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; van den Volf Sanja
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; van den Volf A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sanja v. d. V.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Sanja
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sv.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sv.txt
index bde781262..22fd9cb9c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sv.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sv
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw.txt
index 119cc16e8..4a4dafad0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sw
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw_KE.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw_KE.txt
deleted file mode 100644
index 07501b707..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/sw_KE.txt
+++ /dev/null
@@ -1,806 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sw_KE
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Hassan
-name ; locale; sw_KE
-
-expectedResult; Hassan
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; H
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Maria
-name ; surname; Hasani
-name ; locale; sw_KE
-
-expectedResult; Hasani, Maria
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Hasani Maria
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Maria Hasani
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Hasani, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Hasani M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; M. Hasani
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hasani
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Maria
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; HM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; MH
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; H
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Ali
-name ; given2; Juma
-name ; surname; Hamisi
-name ; locale; sw_KE
-
-expectedResult; Hamisi, Ali Juma
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Ali Juma Hamisi
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Hamisi Ali Juma
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Hamisi, Ali J.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ali J. Hamisi
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Hamisi Ali J.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Hamisi, A. J.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. J. Hamisi
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hamisi A. J.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Hamisi, Ali
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ali Hamisi
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Hamisi Ali
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Hamisi A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Hamisi
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; AJH
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; Ali
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; HAJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AH
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; HA
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; H
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Bw.
-name ; given; Adam Juma
-name ; given-informal; Bita
-name ; given2; Agape Shukurani
-name ; surname-core; Masalu
-name ; generation; Jr
-name ; credentials; MB
-name ; locale; sw_KE
-
-expectedResult; Bw. Adam Juma Agape Shukurani Masalu MB
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Adam Juma Agape Shukurani Masalu MB
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Masalu Adam Juma Agape Shukurani MB
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Masalu, Adam Juma Agape Shukurani
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adam Juma A. S. Masalu Jr, MB
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Masalu Adam Juma A. S. MB
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Masalu, Adam Juma A. S.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Masalu, A. J. A. S.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. J. A. S. Masalu
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Masalu A. J. A. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Masalu A. J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Masalu, Bita
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bita Masalu
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Masalu Bita
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bw. Masalu
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bita
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MAA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Kevin
-name ; locale; ko_AQ
-
-expectedResult; Kevin
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; K
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; John
-name ; surname; Mkwawa
-name ; locale; ko_AQ
-
-expectedResult; Mkwawa, John
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; John Mkwawa
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Mkwawa John
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Mkwawa, J.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. Mkwawa
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Mkwawa J.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mkwawa
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; John
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MJ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zamara
-name ; given2; Imani
-name ; surname; Bukenya
-name ; locale; ko_AQ
-
-expectedResult; Bukenya, Zamara Imani
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bukenya Zamara Imani
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zamara Imani Bukenya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bukenya, Zamara I.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Bukenya Zamara I.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zamara I. Bukenya
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Bukenya, Zamara
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bukenya Zamara
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bukenya, Z. I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Zamara Bukenya
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Bukenya Z. I.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. I. Bukenya
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Bukenya Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bukenya
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Zamara
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BZI
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZIB
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; BZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZB
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dk.
-name ; given; Salima
-name ; given-informal; Sarah
-name ; given2; Farida
-name ; surname-prefix; mwana
-name ; surname-core; Hamisi
-name ; surname2; Musa
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dk. Salima Farida mwana Hamisi Musa M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; mwana Hamisi Salima Farida M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Salima F. mwana Hamisi Jr, M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Salima Farida mwana Hamisi M.D. Ph.D.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; mwana Hamisi Salima F. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Hamisi, Salima Farida mwana
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Hamisi, Salima F. mwana
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof. Dk. mwana Hamisi
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Hamisi, S. F. mwana
-
-parameters; sorting; short; referring; formal
-
-expectedResult; mwana Hamisi, Sarah
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; mwana Hamisi S. F.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; mwana Hamisi Sarah
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. F. mwana Hamisi
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sarah mwana Hamisi
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; mwana Hamisi S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sarah
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSF
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SFM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ta.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ta.txt
index 37cc63ea2..8df191397 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ta.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ta.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ta
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/te.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/te.txt
index 4e7b4dc1a..a4d7825b6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/te.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/te.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: te
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tg.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tg.txt
index e5e8f9424..fc22a6479 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tg.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tg.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tg
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/th.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/th.txt
index 8ae86cbb3..fe9094ccd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/th.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/th.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: th
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ti.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ti.txt
index fc4873880..272692bd8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ti.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ti.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ti
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tk.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tk.txt
index 25434d2a9..465f168c5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tk.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tk
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tr.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tr.txt
index f04baa7b0..153de5121 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tr.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/tr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tr
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uk.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uk.txt
index eb599d84e..92e0f719e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uk.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: uk
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ur.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ur.txt
index 019584587..b6798fc66 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ur.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/ur.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ur
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uz.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uz.txt
index 07ab62850..b99dab8d2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uz.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/uz.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: uz
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/vi.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/vi.txt
index 895483649..a7c40d22d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/vi.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/vi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: vi
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/wo.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/wo.txt
index e16f3cffd..4e5e580b2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/wo.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/wo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: wo
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo.txt
index fcb09dc7e..80c4c6ac9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yo
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo_BJ.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo_BJ.txt
deleted file mode 100644
index 2acd74764..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yo_BJ.txt
+++ /dev/null
@@ -1,809 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: yo_BJ
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Boluwatife
-name ; locale; yo_BJ
-
-expectedResult; Boluwatife
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; B
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Olabisi
-name ; surname; Adeboye
-name ; locale; yo_BJ
-
-expectedResult; Adeboye, Olabisi
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adeboye Olabisi
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Olabisi Adeboye
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adeboye, O.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adeboye O.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; O. Adeboye
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Olabisi A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adeboye
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Olabisi
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AO
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; OA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; O
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Adeolu
-name ; given2; Adegboyega
-name ; surname; Akintola
-name ; locale; yo_BJ
-
-expectedResult; Akintola, Adeolu Adegboyega
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adeolu Adegboyega Akintola
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Akintola Adeolu Adegboyega
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Akintola, Adeolu A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Adeolu A. Akintola
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Akintola Adeolu A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Akintola, Adeolu
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adeolu Akintola
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Akintola Adeolu
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Akintola, A. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. A. Akintola
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Akintola A. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Akintola A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Adeolu A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Akintola
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Adeolu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAA
-
-parameters; givenFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AA
-
-parameters; givenFirst; long; monogram; informal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; Ɔ̀gbɛ́ni
-name ; given; Adebola Opeyemi
-name ; given-informal; Bolanle
-name ; given2; Olumide Ajao
-name ; surname-core; Adekunle
-name ; generation; Jr
-name ; credentials; Asofin
-name ; locale; yo_BJ
-
-expectedResult; Adebola Opeyemi Olumide Ajao Adekunle Asofin
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Adekunle Adebola Opeyemi Olumide Ajao Asofin
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Adekunle, Adebola Opeyemi Olumide Ajao
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adebola Opeyemi O. A. Adekunle Asofin
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Adekunle Adebola Opeyemi O. A. Asofin
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Adekunle, Adebola Opeyemi O. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Adekunle, A. O. O. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. O. O. A. Adekunle
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Adekunle A. O. O. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Adekunle, Bolanle
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ɔ̀gbɛ́ni Adekunle
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Adekunle Bolanle
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bolanle Adekunle
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adekunle A. O.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bolanle A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bolanle
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAO
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AOA
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; AB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; BA
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Ɔ̀jɔ̀gbɔ́n Ɔ̀mɔ̀wé
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Ada Cornelia César Martín von Brühl M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Ada Cornelia César Martín M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C. M. von Brühl M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C. M. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C. M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ɔ̀jɔ̀gbɔ́n Ɔ̀mɔ̀wé von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Brühl, A. C. C. M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. C. C. M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A. C. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue.txt
index 845bd7b19..59d7ee8be 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yue
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue_Hans.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue_Hans.txt
index ff6d98760..3d7422817 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue_Hans.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/yue_Hans.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yue_Hans
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh.txt
index 1fa6bd3dc..786e7cedd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zh
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant.txt
index 18698d5bf..ad0e8f1bf 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zh_Hant
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant_HK.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant_HK.txt
deleted file mode 100644
index 34596362e..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zh_Hant_HK.txt
+++ /dev/null
@@ -1,712 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: zh_Hant_HK
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; 文傑
-name ; locale; zh_Hant_HK
-
-expectedResult; 文傑
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 文
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; 雅婷
-name ; surname; 張
-name ; locale; zh_Hant_HK
-
-expectedResult; 張雅.婷.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 雅婷張.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 張雅婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷張
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 張雅
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 雅張
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 張
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; 家豪
-name ; given2; 明德
-name ; surname; 林
-name ; locale; zh_Hant_HK
-
-expectedResult; 林家.豪.明.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 家豪明德林
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 林家.豪.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 林家豪明.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 林家豪明德
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; 家豪林.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 家明林
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 家豪林
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 林家明
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 林家豪
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 家豪
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 家
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 林
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; 先生
-name ; given; 雅婷
-name ; given-informal; 婷婷
-name ; given2; 婷婷
-name ; surname-core; 王
-name ; generation; 二世
-name ; credentials; 議員
-name ; locale; zh_Hant_HK
-
-expectedResult; 先生雅婷婷婷王二世,議員
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 王雅婷婷.二世,議員
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 王雅婷婷婷二世議員
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; 王雅.婷.婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王雅.婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王雅婷婷婷
-
-parameters; sorting; long; referring; formal
-
-expectedResult; 婷婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 婷婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 王先生
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; 王婷婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 婷婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 婷
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 王
-
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; 雅婷
-name ; locale; fr_AQ
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; 雅婷
-name ; surname; 王
-name ; locale; fr_AQ
-
-expectedResult; 王·雅.·婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王雅.·婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王·雅婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷·王
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 雅婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 王雅
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 雅王
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 王
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; 雅婷
-name ; given2; 婷婷
-name ; surname; 王
-name ; locale; fr_AQ
-
-expectedResult; 王·雅.·婷.·婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王·雅婷·婷婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; 雅婷·婷婷·王
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 王雅.·婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王雅婷婷.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 王·雅婷
-
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 王
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; 博士
-name ; given; 怡君
-name ; given-informal; 小君
-name ; given2; 達印
-name ; surname-prefix; 馮
-name ; surname-core; 陳
-name ; generation; 二世
-name ; credentials; 醫學博士
-name ; locale; fr_AQ
-
-expectedResult; 博士·怡君·達印·馮·陳·二世,·醫學博士
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 馮·陳怡君達.·印.二世,醫學博士
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 馮·陳·怡君·達印·二世醫學博士
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; 馮·陳·怡.·君.·達.·印.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 馮·陳·怡君·達印
-
-parameters; sorting; long; referring; formal
-
-expectedResult; 馮·陳怡.·君.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 小君馮.·陳.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 馮·陳·博士
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; 馮·陳·小君
-
-parameters; sorting; short; referring; informal
-
-expectedResult; 馮·陳·怡君
-
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; 小君馮·陳
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 馮·陳博士
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; 馮·陳小君
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 怡達馮
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 馮怡達
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 小君
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 小
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 馮
-
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zu.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zu.txt
index e9c2b0db5..2b76af487 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zu.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/personNameTest/zu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zu
#
# Test lines have the following structure:
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitLocalePreferencesTest.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitLocalePreferencesTest.txt
new file mode 100644
index 000000000..1922607f9
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitLocalePreferencesTest.txt
@@ -0,0 +1,42 @@
+# Test data for unit locale preferences
+# Copyright © 1991-2024 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-3.0
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+# input-unit; amount; usage; languageTag; expected-unit; expected-amount # comment
+#
+# • The amounts are both rationals
+# • The comment is optional (if it isn't present the # can be omitted)
+#
+# Use: Convert the Input amount & unit according to the Usage and Locale.
+# The result should match the Expected amount and unit.
+#
+# The input and expected output units are unit identifers; in particular, the output does not have further processing:
+# • no localization
+#
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-ussystem-mu-celsius; celsius; -155/9 # mu > ms > rg > (likely) region
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-ussystem-mu-celsius; celsius; -155/9
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-metric; celsius; -155/9
+fahrenheit; 1; default; en-u-rg-dezzzz; celsius; -155/9
+fahrenheit; 1; default; en-DE; celsius; -155/9 # explicit region > likely region
+fahrenheit; 1; default; en-US; fahrenheit; 1
+fahrenheit; 1; default; en; fahrenheit; 1 # likely region = US
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz-ms-metric; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-u-rg-dezzzz; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-DE; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-US-u-rg-uszzzz-ms-uksystem; gallon-imperial; 2.5 # ms-uksystem should behave like GB
+gallon-imperial; 2.5; fluid; en-u-rg-gbzzzz; gallon-imperial; 2.5
+gallon-imperial; 2.5; fluid; en-GB; gallon-imperial; 2.5
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz-ms-ussystem; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en-US; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en; gallon; 1,420,653,125/473176473 # likely region = US
+ampere; 2.5; default; en; ampere; 2.5 # an input unit whose quantity has no preference data should get base units
+pound-force-foot; 12,345; default; en; kilowatt-hour; 0.004649325714486427205
+kilocandela; 1; default; en; candela; 1,000 # an input unit whose quantity has no preference data should get base units
+candela-per-byte; 1; default; en; candela-per-bit; 0.125 # an input unit that has no quantity should get base units
+candela-per-cubic-foot; 1; default; en; candela-per-cubic-meter; 1,953,125,000/55306341 # an input unit that has no quantity should get base units
+foot; 1; default; de-u-mu-celsius; centimeter; 30.48 # a -mu unit that is not convertible from the input unit should get ignored
+#pound; 28; default; en-u-mu-stone; stone; 2 # only temperature units are supported
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitPreferencesTest.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitPreferencesTest.txt
index 61abdcafd..dbf3ce4d4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitPreferencesTest.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitPreferencesTest.txt
@@ -1,8 +1,8 @@
# Test data for unit preferences
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -22,7 +22,7 @@
# • no formatted with the skeleton
# • no suppression of zero values (for secondary -and- units such as pound in stone-and-pound)
#
-# Generation: Set GENERATE_TESTS in TestUnits.java to regenerate unitPreferencesTest.txt.
+# Generation: Use GenerateUnitTestData.java to regenerate unitPreferencesTest.txt.
area; default; 001; 1100000; 1100000.0; square-meter; 11/10; 1.1; square-kilometer
area; default; 001; 1000000; 1000000.0; square-meter; 1; 1.0; square-kilometer
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitsTest.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitsTest.txt
index 233a9304e..8999a44f8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitsTest.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitsTest.txt
@@ -1,7 +1,7 @@
# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -12,7 +12,7 @@
# round to 4 decimal digits before comparing.
# Note that certain conversions are approximate, such as degrees to radians
#
-# Generation: Set GENERATE_TESTS in TestUnits.java to regenerate unitsTest.txt.
+# Generation: Use GenerateUnitTestData.java to regenerate unitsTest.txt.
acceleration ; meter-per-square-second ; meter-per-square-second ; 1 * x ; 1,000.00
acceleration ; g-force ; meter-per-square-second ; 9.80665 * x ; 9806.65
@@ -182,6 +182,7 @@ resolution ; pixel-per-inch ; pixel-per-meter ; 5,000/127 * x ; 39370.08
resolution ; dot-per-centimeter ; pixel-per-meter ; 100 * x ; 100000.0
resolution ; pixel-per-centimeter ; pixel-per-meter ; 100 * x ; 100000.0
solid-angle ; steradian ; square-revolution ; 4,290,444,930,214,144/169379976663492169 * x ; 25.3303
+speed ; beaufort ; meter-per-second ; special:beaufort(x) ; 58.6
speed ; kilometer-per-hour ; meter-per-second ; 2.5/9 * x ; 277.7778
speed ; mile-per-hour ; meter-per-second ; 0.44704 * x ; 447.04
speed ; knot ; meter-per-second ; 4.63/9 * x ; 514.4444
@@ -189,9 +190,9 @@ speed ; meter-per-second ; meter-per-second ; 1 * x ; 1,000.00
substance-amount ; item ; item ; 1 * x ; 1,000.00
substance-amount ; mole ; item ; 602,214,076,000,000,000,000,000 * x ; 6.022141E26
temperature ; rankine ; kelvin ; 5/9 * x ; 555.5556
-temperature ; fahrenheit ; kelvin ; 5/9 * x - 2,298.35/9 ; 810.9278
+temperature ; fahrenheit ; kelvin ; 5/9 * x + 2,298.35/9 ; 810.9278
temperature ; kelvin ; kelvin ; 1 * x ; 1,000.00
-temperature ; celsius ; kelvin ; 1 * x - 273.15 ; 1273.15
+temperature ; celsius ; kelvin ; 1 * x + 273.15 ; 1273.15
typewidth ; em ; em ; 1 * x ; 1,000.00
voltage ; volt ; kilogram-square-meter-per-cubic-second-ampere ; 1 * x ; 1000.0
volume ; drop ; cubic-meter ; 0.0000001540287998046875/3 * x ; 5.134293E-5
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnv
index ba3554c24..6fb1d4825 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.res b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.res
index d793c460d..b3a01b5fa 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.res
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.res
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.res b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.res
index 676cd0a55..aebb0a397 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.res
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.res
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnv
index 24ea7e2ff..3c793f069 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnv
index e02852dba..0dc7d250a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnv
index 44da9046f..d2b98e107 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnv
index be6a73238..d85bb0a9b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnv
index 9ee3de4f9..16384c617 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnv
index 462a34809..7e07de8dd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnv
index addbda43b..099548de6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java b/android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java
index d2a5daf76..33421e622 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java
@@ -398,7 +398,7 @@ abstract public class TestFmwk extends AbstractTestLog {
if (s == null) {
return defVal;
}
- return (maxVal == -1) ? Integer.valueOf(s) : Math.max(Integer.valueOf(s), maxVal);
+ return (maxVal == -1) ? Integer.parseInt(s) : Math.max(Integer.parseInt(s), maxVal);
}
public long getLongProperty(String key, long defVal) {
@@ -406,7 +406,7 @@ abstract public class TestFmwk extends AbstractTestLog {
if (s == null) {
return defVal;
}
- return Long.valueOf(s);
+ return Long.parseLong(s);
}
public int getInclusion() {
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java
index bc74ba6c5..3e0410b6e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java
@@ -125,7 +125,7 @@ public class TestClassOverride extends BidiFmwk {
bidi = new Bidi();
verifyClassifier(bidi);
- classifier = new CustomClassifier(new Integer(TestData.R));
+ classifier = new CustomClassifier(TestData.R);
bidi.setCustomClassifier(classifier);
verifyClassifier(bidi);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java
index 1256327f5..323217621 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java
@@ -206,9 +206,9 @@ public class TestCompatibility extends BidiFmwk {
AttributedString as = new AttributedString("HEBREW 123 english MOREHEB");
as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
as.addAttribute(TextAttribute.NUMERIC_SHAPING, NumericShaper.getShaper(NumericShaper.ARABIC));
- as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(1), 0, 26);
- as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(-1), 0, 6);
- as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(-1), 19, 26);
+ as.addAttribute(TextAttribute.BIDI_EMBEDDING, 1, 0, 26);
+ as.addAttribute(TextAttribute.BIDI_EMBEDDING, -1, 0, 6);
+ as.addAttribute(TextAttribute.BIDI_EMBEDDING, -1, 19, 26);
bidi = new Bidi(as.getIterator());
jbidi = new java.text.Bidi(as.getIterator());
compareBidi(bidi, jbidi);
@@ -217,7 +217,7 @@ public class TestCompatibility extends BidiFmwk {
as = new AttributedString("HEBREW 123 english MOREHEB");
as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
- as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(0), 0, 26);
+ as.addAttribute(TextAttribute.BIDI_EMBEDDING, 0, 0, 26);
bidi = new Bidi(as.getIterator());
jbidi = new java.text.Bidi(as.getIterator());
compareBidi(bidi, jbidi);
@@ -259,7 +259,7 @@ public class TestCompatibility extends BidiFmwk {
Character[] objects = new Character[10];
levels = new byte[objects.length];
for (int i = 0; i < objects.length; i++) {
- objects[i] = new Character((char)('a'+i));
+ objects[i] = (char)('a'+i);
levels[i] = myLevels[i];
}
Bidi.reorderVisually(levels, 3, objects, 3, 7);
@@ -268,7 +268,7 @@ public class TestCompatibility extends BidiFmwk {
strbidi += objects[i].toString();
}
for (int i = 0; i < objects.length; i++) {
- objects[i] = new Character((char)('a'+i));
+ objects[i] = (char)('a'+i);
levels[i] = myLevels[i];
}
java.text.Bidi.reorderVisually(levels, 3, objects, 3, 7);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java
index 883ecec78..c90f45f91 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java
@@ -2921,15 +2921,15 @@ public class DiagBigDecimalTest extends CoreTestFmwk {
java.lang.String val;
// 1999.03.07 Infinities no longer errors
val = "-1";
- TestFmwk.assertTrue("dov001", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov001", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "-0.1";
- TestFmwk.assertTrue("dov002", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov002", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "0";
- TestFmwk.assertTrue("dov003", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov003", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "0.1";
- TestFmwk.assertTrue("dov004", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov004", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "1";
- TestFmwk.assertTrue("dov005", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov005", ((new android.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "1e1000";
TestFmwk.assertTrue("dov006", ((new android.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.POSITIVE_INFINITY);
val = "-1e1000";
@@ -2960,23 +2960,23 @@ public class DiagBigDecimalTest extends CoreTestFmwk {
java.lang.String val;
// 1999.03.07 Infinities no longer errors
val = "-1";
- TestFmwk.assertTrue("flv001", ((new android.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv001", ((new android.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "-0.1";
- TestFmwk.assertTrue("flv002", ((new android.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv002", ((new android.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "0";
- TestFmwk.assertTrue("flv003", ((new android.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv003", ((new android.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "0.1";
- TestFmwk.assertTrue("flv004", ((new android.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv004", ((new android.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "1";
- TestFmwk.assertTrue("flv005", ((new android.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv005", ((new android.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "1e200";
- TestFmwk.assertTrue("flv006", ((new android.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY);
+ TestFmwk.assertTrue("flv006", ((new android.icu.math.BigDecimal(val)).floatValue()) == Float.POSITIVE_INFINITY);
val = "-1e200";
- TestFmwk.assertTrue("flv007", ((new android.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY);
+ TestFmwk.assertTrue("flv007", ((new android.icu.math.BigDecimal(val)).floatValue()) == Float.NEGATIVE_INFINITY);
val = "1e1000";
- TestFmwk.assertTrue("flv008", ((new android.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY);
+ TestFmwk.assertTrue("flv008", ((new android.icu.math.BigDecimal(val)).floatValue()) == Float.POSITIVE_INFINITY);
val = "-1e1000";
- TestFmwk.assertTrue("flv009", ((new android.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY);
+ TestFmwk.assertTrue("flv009", ((new android.icu.math.BigDecimal(val)).floatValue()) == Float.NEGATIVE_INFINITY);
}
/* ----------------------------------------------------------------- */
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java
index c67f0a26d..3c968e32a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java
@@ -9,7 +9,6 @@
*/
package android.icu.dev.test.calendar;
-import java.util.Date;
import java.util.Locale;
import org.junit.Test;
@@ -20,7 +19,6 @@ import org.junit.runners.JUnit4;
import android.icu.dev.test.CoreTestFmwk;
import android.icu.impl.CalendarAstronomer;
-import android.icu.impl.CalendarAstronomer.Ecliptic;
import android.icu.impl.CalendarAstronomer.Equatorial;
import android.icu.text.DateFormat;
import android.icu.util.Calendar;
@@ -39,7 +37,6 @@ public class AstroTest extends CoreTestFmwk {
@Test
public void TestSolarLongitude() {
GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
- CalendarAstronomer astro = new CalendarAstronomer();
// year, month, day, hour, minute, longitude (radians), ascension(radians), declination(radians)
final double tests[][] = {
{ 1980, 7, 27, 00, 00, 2.166442986535465, 2.2070499713207730, 0.3355704075759270 },
@@ -50,7 +47,7 @@ public class AstroTest extends CoreTestFmwk {
gc.clear();
gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
- astro.setDate(gc.getTime());
+ CalendarAstronomer astro = new CalendarAstronomer(gc.getTimeInMillis());
double longitude = astro.getSunLongitude();
if (longitude != tests[i][5]) {
@@ -64,36 +61,12 @@ public class AstroTest extends CoreTestFmwk {
") for test " + i);
}
}
- Equatorial result = astro.getSunPosition();
- if (result.ascension != tests[i][6]) {
- if ((float)result.ascension == (float)tests[i][6]) {
- logln("result.ascension(" + result.ascension +
- ") != tests[i][6](" + tests[i][6] +
- ") in double for test " + i);
- } else {
- errln("FAIL: result.ascension(" + result.ascension +
- ") != tests[i][6](" + tests[i][6] +
- ") for test " + i);
- }
- }
- if (result.declination != tests[i][7]) {
- if ((float)result.declination == (float)tests[i][7]) {
- logln("result.declination(" + result.declination +
- ") != tests[i][7](" + tests[i][7] +
- ") in double for test " + i);
- } else {
- errln("FAIL: result.declination(" + result.declination +
- ") != tests[i][7](" + tests[i][7] +
- ") for test " + i);
- }
- }
}
}
@Test
public void TestLunarPosition() {
GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
- CalendarAstronomer astro = new CalendarAstronomer();
// year, month, day, hour, minute, ascension(radians), declination(radians)
final double tests[][] = {
{ 1979, 2, 26, 16, 00, -0.3778379118188744, -0.1399698825594198 },
@@ -103,7 +76,7 @@ public class AstroTest extends CoreTestFmwk {
for (int i = 0; i < tests.length; i++) {
gc.clear();
gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
- astro.setDate(gc.getTime());
+ CalendarAstronomer astro = new CalendarAstronomer(gc.getTimeInMillis());
Equatorial result = astro.getMoonPosition();
if (result.ascension != tests[i][5]) {
@@ -141,24 +114,17 @@ public class AstroTest extends CoreTestFmwk {
@Test
public void TestCoverage() {
GregorianCalendar cal = new GregorianCalendar(1958, Calendar.AUGUST, 15);
- Date then = cal.getTime();
- CalendarAstronomer myastro = new CalendarAstronomer(then);
+ CalendarAstronomer myastro = new CalendarAstronomer(cal.getTimeInMillis());
//Latitude: 34 degrees 05' North
//Longitude: 118 degrees 22' West
double laLat = 34 + 5d/60, laLong = 360 - (118 + 22d/60);
- CalendarAstronomer myastro2 = new CalendarAstronomer(laLong, laLat);
double eclLat = laLat * Math.PI / 360;
double eclLong = laLong * Math.PI / 360;
- Ecliptic ecl = new Ecliptic(eclLat, eclLong);
- logln("ecliptic: " + ecl);
-
- CalendarAstronomer myastro3 = new CalendarAstronomer();
- myastro3.setJulianDay((4713 + 2000) * 365.25);
CalendarAstronomer[] astronomers = {
- myastro, myastro2, myastro3, myastro2 // check cache
+ myastro, myastro, myastro // check cache
};
@@ -168,176 +134,21 @@ public class AstroTest extends CoreTestFmwk {
logln("astro: " + astro);
logln(" time: " + astro.getTime());
logln(" date: " + astro.getDate());
- logln(" cent: " + astro.getJulianCentury());
- logln(" gw sidereal: " + astro.getGreenwichSidereal());
- logln(" loc sidereal: " + astro.getLocalSidereal());
- logln(" equ ecl: " + astro.eclipticToEquatorial(ecl));
- logln(" equ long: " + astro.eclipticToEquatorial(eclLong));
- logln(" horiz: " + astro.eclipticToHorizon(eclLong));
- logln(" sunrise: " + new Date(astro.getSunRiseSet(true)));
- logln(" sunset: " + new Date(astro.getSunRiseSet(false)));
- logln(" moon phase: " + astro.getMoonPhase());
- logln(" moonrise: " + new Date(astro.getMoonRiseSet(true)));
- logln(" moonset: " + new Date(astro.getMoonRiseSet(false)));
- logln(" prev summer solstice: " + new Date(astro.getSunTime(CalendarAstronomer.SUMMER_SOLSTICE, false)));
- logln(" next summer solstice: " + new Date(astro.getSunTime(CalendarAstronomer.SUMMER_SOLSTICE, true)));
- logln(" prev full moon: " + new Date(astro.getMoonTime(CalendarAstronomer.FULL_MOON, false)));
- logln(" next full moon: " + new Date(astro.getMoonTime(CalendarAstronomer.FULL_MOON, true)));
- }
-
- }
-
- static final long DAY_MS = 24*60*60*1000L;
-
- @Test
- public void TestSunriseTimes() {
-
- // logln("Sunrise/Sunset times for San Jose, California, USA");
- // CalendarAstronomer astro = new CalendarAstronomer(-121.55, 37.20);
- // TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
-
- // We'll use a table generated by the UNSO website as our reference
- // From: http://aa.usno.navy.mil/
- //-Location: W079 25, N43 40
- //-Rise and Set for the Sun for 2001
- //-Zone: 4h West of Greenwich
- int[] USNO = {
- 6,59, 19,45,
- 6,57, 19,46,
- 6,56, 19,47,
- 6,54, 19,48,
- 6,52, 19,49,
- 6,50, 19,51,
- 6,48, 19,52,
- 6,47, 19,53,
- 6,45, 19,54,
- 6,43, 19,55,
- 6,42, 19,57,
- 6,40, 19,58,
- 6,38, 19,59,
- 6,36, 20, 0,
- 6,35, 20, 1,
- 6,33, 20, 3,
- 6,31, 20, 4,
- 6,30, 20, 5,
- 6,28, 20, 6,
- 6,27, 20, 7,
- 6,25, 20, 8,
- 6,23, 20,10,
- 6,22, 20,11,
- 6,20, 20,12,
- 6,19, 20,13,
- 6,17, 20,14,
- 6,16, 20,16,
- 6,14, 20,17,
- 6,13, 20,18,
- 6,11, 20,19,
- };
-
- logln("Sunrise/Sunset times for Toronto, Canada");
- CalendarAstronomer astro = new CalendarAstronomer(-(79+25/60), 43+40/60);
-
- // As of ICU4J 2.8 the ICU4J time zones implement pass-through
- // to the underlying JDK. Because of variation in the
- // underlying JDKs, we have to use a fixed-offset
- // SimpleTimeZone to get consistent behavior between JDKs.
- // The offset we want is [-18000000, 3600000] (raw, dst).
- // [aliu 10/15/03]
-
- // TimeZone tz = TimeZone.getTimeZone("America/Montreal");
- TimeZone tz = new SimpleTimeZone(-18000000 + 3600000, "Montreal(FIXED)");
-
- GregorianCalendar cal = new GregorianCalendar(tz, Locale.US);
- GregorianCalendar cal2 = new GregorianCalendar(tz, Locale.US);
- cal.clear();
- cal.set(Calendar.YEAR, 2001);
- cal.set(Calendar.MONTH, Calendar.APRIL);
- cal.set(Calendar.DAY_OF_MONTH, 1);
- cal.set(Calendar.HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work
-
- DateFormat df = DateFormat.getTimeInstance(cal, DateFormat.MEDIUM, Locale.US);
- DateFormat df2 = DateFormat.getDateTimeInstance(cal, DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US);
- DateFormat day = DateFormat.getDateInstance(cal, DateFormat.MEDIUM, Locale.US);
-
- for (int i=0; i < 30; i++) {
- astro.setDate(cal.getTime());
-
- Date sunrise = new Date(astro.getSunRiseSet(true));
- Date sunset = new Date(astro.getSunRiseSet(false));
-
- cal2.setTime(cal.getTime());
- cal2.set(Calendar.SECOND, 0);
- cal2.set(Calendar.MILLISECOND, 0);
-
- cal2.set(Calendar.HOUR_OF_DAY, USNO[4*i+0]);
- cal2.set(Calendar.MINUTE, USNO[4*i+1]);
- Date exprise = cal2.getTime();
- cal2.set(Calendar.HOUR_OF_DAY, USNO[4*i+2]);
- cal2.set(Calendar.MINUTE, USNO[4*i+3]);
- Date expset = cal2.getTime();
- // Compute delta of what we got to the USNO data, in seconds
- int deltarise = Math.abs((int)(sunrise.getTime() - exprise.getTime()) / 1000);
- int deltaset = Math.abs((int)(sunset.getTime() - expset.getTime()) / 1000);
-
- // Allow a deviation of 0..MAX_DEV seconds
- // It would be nice to get down to 60 seconds, but at this
- // point that appears to be impossible without a redo of the
- // algorithm using something more advanced than Duffett-Smith.
- final int MAX_DEV = 180;
- if (deltarise > MAX_DEV || deltaset > MAX_DEV) {
- if (deltarise > MAX_DEV) {
- errln("FAIL: " + day.format(cal.getTime()) +
- ", Sunrise: " + df2.format(sunrise) +
- " (USNO " + df.format(exprise) +
- " d=" + deltarise + "s)");
- } else {
- logln(day.format(cal.getTime()) +
- ", Sunrise: " + df.format(sunrise) +
- " (USNO " + df.format(exprise) + ")");
- }
- if (deltaset > MAX_DEV) {
- errln("FAIL: " + day.format(cal.getTime()) +
- ", Sunset: " + df2.format(sunset) +
- " (USNO " + df.format(expset) +
- " d=" + deltaset + "s)");
- } else {
- logln(day.format(cal.getTime()) +
- ", Sunset: " + df.format(sunset) +
- " (USNO " + df.format(expset) + ")");
- }
- } else {
- logln(day.format(cal.getTime()) +
- ", Sunrise: " + df.format(sunrise) +
- " (USNO " + df.format(exprise) + ")" +
- ", Sunset: " + df.format(sunset) +
- " (USNO " + df.format(expset) + ")");
- }
- cal.add(Calendar.DATE, 1);
+ logln(" equ long: " + astro.eclipticToEquatorial(eclLat, eclLong));
}
-// CalendarAstronomer a = new CalendarAstronomer(-(71+5/60), 42+37/60);
-// cal.clear();
-// cal.set(cal.YEAR, 1986);
-// cal.set(cal.MONTH, cal.MARCH);
-// cal.set(cal.DATE, 10);
-// cal.set(cal.YEAR, 1988);
-// cal.set(cal.MONTH, cal.JULY);
-// cal.set(cal.DATE, 27);
-// a.setDate(cal.getTime());
-// long r = a.getSunRiseSet2(true);
}
@Test
public void TestBasics() {
// Check that our JD computation is the same as the book's (p. 88)
- CalendarAstronomer astro = new CalendarAstronomer();
GregorianCalendar cal3 = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.US);
DateFormat d3 = DateFormat.getDateTimeInstance(cal3, DateFormat.MEDIUM,DateFormat.MEDIUM,Locale.US);
cal3.clear();
cal3.set(Calendar.YEAR, 1980);
cal3.set(Calendar.MONTH, Calendar.JULY);
cal3.set(Calendar.DATE, 27);
- astro.setDate(cal3.getTime());
+ CalendarAstronomer astro = new CalendarAstronomer(cal3.getTimeInMillis());
double jd = astro.getJulianDay() - 2447891.5;
double exp = -3444;
if (jd == exp) {
@@ -360,7 +171,6 @@ public class AstroTest extends CoreTestFmwk {
@Test
public void TestMoonAge(){
GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0,"GMT"));
- CalendarAstronomer calastro = new CalendarAstronomer();
// more testcases are around the date 05/20/2012
//ticket#3785 UDate ud0 = 1337557623000.0;
double testcase[][] = {{2012, 5, 20 , 16 , 48, 59},
@@ -383,7 +193,7 @@ public class AstroTest extends CoreTestFmwk {
(int)testcase[i][2]+" Hour "+(int)testcase[i][3]+" Minutes "+(int)testcase[i][4]+
" Seconds "+(int)testcase[i][5];
gc.set((int)testcase[i][0],(int)testcase[i][1]-1,(int)testcase[i][2],(int)testcase[i][3],(int)testcase[i][4], (int)testcase[i][5]);
- calastro.setDate(gc.getTime());
+ CalendarAstronomer calastro = new CalendarAstronomer(gc.getTimeInMillis());
double expectedAge = (angle[i]*PI)/180;
double got = calastro.getMoonAge();
logln(testString);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java
index bc639b4cb..20dec60f5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java
@@ -691,14 +691,10 @@ public class CalendarRegressionTest extends CoreTestFmwk {
// Test field disambiguation with a few special hard-coded cases.
// This shouldn't fail if the above cases aren't failing.
Object[] DISAM = {
- new Integer(1998), new Integer(1), new Integer(Calendar.SUNDAY),
- d[0],
- new Integer(1998), new Integer(2), new Integer(Calendar.SATURDAY),
- d[1],
- new Integer(1998), new Integer(53), new Integer(Calendar.THURSDAY),
- d[2],
- new Integer(1998), new Integer(53), new Integer(Calendar.FRIDAY),
- d[3],
+ 1998, 1, Calendar.SUNDAY, d[0],
+ 1998, 2, Calendar.SATURDAY, d[1],
+ 1998, 53, Calendar.THURSDAY, d[2],
+ 1998, 53, Calendar.FRIDAY, d[3],
};
testCal.setMinimalDaysInFirstWeek(3);
testCal.setFirstDayOfWeek(Calendar.SUNDAY);
@@ -742,10 +738,10 @@ public class CalendarRegressionTest extends CoreTestFmwk {
d[7] = tempcal.getTime();
Object[] ADDROLL = {
- ADD, new Integer(1), d[0], d[1],
- ADD, new Integer(1), d[2], d[3],
- ROLL, new Integer(1), d[4], d[5],
- ROLL, new Integer(1), d[6], d[7],
+ ADD, 1, d[0], d[1],
+ ADD, 1, d[2], d[3],
+ ROLL, 1, d[4], d[5],
+ ROLL, 1, d[6], d[7],
};
testCal.setMinimalDaysInFirstWeek(3);
testCal.setFirstDayOfWeek(Calendar.SUNDAY);
@@ -1696,9 +1692,9 @@ public class CalendarRegressionTest extends CoreTestFmwk {
d[5] = tempcal.getTime();
// Test specific failure reported in bug
Object[] DATA = {
- new Integer(1), d[0], new Integer(4), d[1],
- new Integer(8), d[2], new Integer(-1), d[3],
- new Integer(-4), d[4], new Integer(-8), d[5],
+ 1, d[0], 4, d[1],
+ 8, d[2], -1, d[3],
+ -4, d[4], -8, d[5],
};
for (int i=0; i<DATA.length; i+=2) {
cal.clear();
@@ -2718,5 +2714,17 @@ public class CalendarRegressionTest extends CoreTestFmwk {
Calendar.getInstance(Locale.forLanguageTag(localeIds[i])).getFirstDayOfWeek());
}
}
+
+ @Test
+ public void TestIslamicUmalquraCalendarSlow() { // ICU-22513
+ Locale loc = new Locale("th@calendar=islamic-umalqura");
+ Calendar cal = Calendar.getInstance(loc);
+ cal.clear();
+ cal.add(Calendar.YEAR, 1229080905);
+ cal.roll(Calendar.WEEK_OF_MONTH, 1499050699);
+ cal.fieldDifference(new Date(0), Calendar.YEAR_WOY);
+
+ }
+
}
//eof
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java
index 4737b9bdf..1e454e854 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java
@@ -281,8 +281,8 @@ public class CalendarTestFmwk extends CoreTestFmwk {
h[0] = new HashMap();
h[1] = new HashMap();
}
- h[0].put(new Integer(minActual), nub);
- h[1].put(new Integer(maxActual), nub);
+ h[0].put(minActual, nub);
+ h[1].put(maxActual, nub);
if (minActual < minLow || minActual > minHigh) {
errln("Fail: " + ymdToString(cal) +
@@ -323,8 +323,8 @@ public class CalendarTestFmwk extends CoreTestFmwk {
cal.getGreatestMinimum(f) : cal.getMaximum(f);
// If either the top of the range or the bottom was never
// seen, then there may be a problem.
- if (h[k].get(new Integer(rangeLow)) == null ||
- h[k].get(new Integer(rangeHigh)) == null) {
+ if (h[k].get(rangeLow) == null ||
+ h[k].get(rangeHigh) == null) {
fullRangeSeen = false;
}
buf.append(k==0 ? " minima seen=(" : "; maxima seen=(");
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java
index 125729302..529850a4c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java
@@ -208,6 +208,76 @@ public class IBMCalendarTest extends CalendarTestFmwk {
}
}
+ private void verifyFirstDayOfWeek(String l, int weekday) {
+ assertEquals(l, weekday,
+ Calendar.getInstance(Locale.forLanguageTag(l)).getFirstDayOfWeek());
+ }
+ /**
+ * Test "First Day Overrides" behavior
+ * https://unicode.org/reports/tr35/tr35-dates.html#first-day-overrides
+ * And data in <firstDay> of
+ * https://github.com/unicode-org/cldr/blob/main/common/supplemental/supplementalData.xml
+ *
+ * Examples of region for First Day of a week
+ * Friday: MV
+ * Saturday: AE AF
+ * Sunday: US JP
+ * Monday: GB
+ */
+ @Test
+ public void TestFirstDayOfWeek() {
+ String l;
+ // Test -u-fw- value
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-sun-rg-mvzzzz-sd-usca", Calendar.SUNDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-mon-rg-mvzzzz-sd-usca", Calendar.MONDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-tue-rg-mvzzzz-sd-usca", Calendar.TUESDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-wed-rg-mvzzzz-sd-usca", Calendar.WEDNESDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-thu-rg-mvzzzz-sd-usca", Calendar.THURSDAY);
+ verifyFirstDayOfWeek("en-AE-u-ca-iso8601-fw-fri-rg-aezzzz-sd-usca", Calendar.FRIDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-sat-rg-mvzzzz-sd-usca", Calendar.SATURDAY);
+
+ // Test -u-rg- value
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-mvzzzz-sd-usca", Calendar.FRIDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-aezzzz-sd-usca", Calendar.SATURDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-uszzzz-sd-usca", Calendar.SUNDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-gbzzzz-sd-usca", Calendar.MONDAY);
+
+ // Test -u-ca-iso8601
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-sd-mv00", Calendar.MONDAY);
+ verifyFirstDayOfWeek("en-AE-u-ca-iso8601-sd-aeaj", Calendar.MONDAY);
+ verifyFirstDayOfWeek("en-US-u-ca-iso8601-sd-usca", Calendar.MONDAY);
+
+ // Test Region Tags only
+ verifyFirstDayOfWeek("en-MV", Calendar.FRIDAY);
+ verifyFirstDayOfWeek("en-AE", Calendar.SATURDAY);
+ verifyFirstDayOfWeek("en-US", Calendar.SUNDAY);
+ verifyFirstDayOfWeek("dv-GB", Calendar.MONDAY);
+
+ // Test -u-sd-
+ //verifyFirstDayOfWeek("en-u-sd-mv00", Calendar.FRIDAY);
+ // verifyFirstDayOfWeek("en-u-sd-aeaj", Calendar.SATURDAY);
+ // verifyFirstDayOfWeek("en-u-sd-usca", Calendar.SUNDAY);
+ // verifyFirstDayOfWeek("dv-u-sd-gbsct", Calendar.MONDAY);
+
+ // Test Add Likely Subtags algorithm produces a region
+ // dv => dv_Thaa_MV => Friday
+ verifyFirstDayOfWeek("dv", Calendar.FRIDAY);
+ // und_Thaa => dv_Thaa_MV => Friday
+ verifyFirstDayOfWeek("und-Thaa", Calendar.FRIDAY);
+
+ // ssh => ssh_Arab_AE => Saturday
+ verifyFirstDayOfWeek("ssh", Calendar.SATURDAY);
+ // wbl_Arab => wbl_Arab_AF => Saturday
+ verifyFirstDayOfWeek("wbl-Arab", Calendar.SATURDAY);
+
+ // en => en_Latn_US => Sunday
+ verifyFirstDayOfWeek("en", Calendar.SUNDAY);
+ // und_Hira => ja_Hira_JP => Sunday
+ verifyFirstDayOfWeek("und-Hira", Calendar.SUNDAY);
+
+ verifyFirstDayOfWeek("zxx", Calendar.MONDAY);
+ }
+
/**
* Verify that BuddhistCalendar shifts years to Buddhist Era but otherwise
* behaves like GregorianCalendar.
@@ -910,7 +980,6 @@ public class IBMCalendarTest extends CalendarTestFmwk {
// CalendarAstronomer
// (This class should probably be made package-private.)
CalendarAstronomer astro = new CalendarAstronomer();
- /*String s = */astro.local(0);
// ChineseCalendar
ChineseCalendar ccal = new ChineseCalendar(TimeZone.getDefault(),
@@ -2130,7 +2199,6 @@ public class IBMCalendarTest extends CalendarTestFmwk {
int lastDay = 1;
String type = base.getType();
boolean ignoreOrdinaryMonth12Bug = (!quick) && (type.equals("chinese") || type.equals("dangi"));
- boolean ignoreICU22258 = (!quick) && type.equals("dangi");
for (int j = 0; j < numOfDaysToTest; j++, test.setTime(test.getTime() - msInADay)) {
g.setTime(test);
base.clear();
@@ -2182,11 +2250,6 @@ public class IBMCalendarTest extends CalendarTestFmwk {
int year = base.get(Calendar.YEAR);
int month = base.get(Calendar.MONTH) + 1;
int date = base.get(Calendar.DATE);
- if (ignoreICU22258 && (year == 4 || year == 34) && month == 12 && date == 30) {
- logKnownIssue("ICU-22258",
- "Dangi Problem in 1988/2/17=>4/12/30 and 1958/2/18=>34/12/30");
- continue;
- }
errln("Round trip conversion produces different time from " + test + " to " +
result + " delta: " + (result.getTime() - test.getTime()) +
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java
index 0893ef050..66bbe5cce 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java
@@ -84,7 +84,7 @@ public class AlphabeticIndexTest extends TestFmwk {
/* Japanese*/ {"ja", "\u3042:\u304B:\u3055:\u305F:\u306A:\u306F:\u307E:\u3084:\u3089:\u308F"},
/* Korean*/ {"ko", "\u3131:\u3134:\u3137:\u3139:\u3141:\u3142:\u3145:\u3147:\u3148:\u314A:\u314B:\u314C:\u314D:\u314E"},
/* Lithuanian*/ {"lt", "A:B:C:\u010C:D:E:F:G:H:I:J:K:L:M:N:O:P:R:S:\u0160:T:U:V:Z:\u017D"},
- /* Latvian*/ {"lv", "A:B:C:\u010C:D:E:F:G:\u0122:H:I:J:K:\u0136:L:\u013B:M:N:\u0145:O:P:Q:R:S:\u0160:T:U:V:W:X:Z:\u017D"},
+ /* Latvian*/ {"lv", "A:\u0100:B:C:\u010C:D:E:\u0112:F:G:\u0122:H:I:Y:\u012A:J:K:\u0136:L:\u013B:M:N:\u0145:O:P:Q:R:S:\u0160:T:U:\u016A:V:W:X:Z:\u017D"},
/* Norwegian Bokm\u00E5l*/ {"nb", "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:\u00C6:\u00D8:\u00C5"},
/* Dutch*/ {"nl", "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"},
/* Polish*/ {"pl", "A:B:C:\u0106:D:E:F:G:H:I:J:K:L:\u0141:M:N:O:\u00D3:P:Q:R:S:\u015A:T:U:V:W:X:Y:Z:\u0179:\u017B"},
@@ -996,7 +996,7 @@ public class AlphabeticIndexTest extends TestFmwk {
List<String> labels = index.getBucketLabels();
for (String[] testCase : testCases) {
String name = testCase[0];
- int bucketIndex = Integer.valueOf(testCase[1]);
+ int bucketIndex = Integer.parseInt(testCase[1]);
String label = testCase[2];
String msg = "getBucketIndex(" + name + ")";
assertEquals(msg, bucketIndex, index.getBucketIndex(name));
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java
index 92822bf57..5ccb367c1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java
@@ -533,11 +533,10 @@ public class CollationMiscTest extends TestFmwk {
};
String[] att = { "strength", };
- Object[] val = { new Integer(Collator.QUATERNARY), };
+ Object[] val = { Collator.QUATERNARY, };
String[] attShifted = { "strength", "AlternateHandling"};
- Object valShifted[] = { new Integer(Collator.QUATERNARY),
- Boolean.TRUE };
+ Object valShifted[] = { Collator.QUATERNARY, Boolean.TRUE };
genericLocaleStarterWithOptions(Locale.JAPANESE, test1, att, val);
genericLocaleStarterWithOptions(Locale.JAPANESE, test2, att, val);
@@ -2215,7 +2214,7 @@ public class CollationMiscTest extends TestFmwk {
{
String tests[] = { "B", "b", "Bb", "bB" };
String[] att = { "strength", "UpperFirst" };
- Object attVals[] = { new Integer(Collator.QUATERNARY), Boolean.TRUE };
+ Object attVals[] = { Collator.QUATERNARY, Boolean.TRUE };
genericLocaleStarterWithOptions(new Locale("root","",""), tests, att, attVals);
}
@@ -2224,7 +2223,7 @@ public class CollationMiscTest extends TestFmwk {
{
String tests[] = { "\\u00e2T", "aT" };
String att[] = { "strength", "CaseLevel" };
- Object attVals[] = { new Integer(Collator.PRIMARY), Boolean.TRUE };
+ Object attVals[] = { Collator.PRIMARY, Boolean.TRUE };
String tests2[] = { "a", "A" };
String rule = "&[first tertiary ignorable]=A=a";
String att2[] = { "CaseLevel" };
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java
index 753f00e39..8e2ac6af2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java
@@ -1080,7 +1080,7 @@ public class CollationRegressionTest extends TestFmwk {
// Iterate forward and collect all of the elements into a Vector
while ((elem = iter.next()) != CollationElementIterator.NULLORDER) {
- elements.add(new Integer(elem));
+ elements.add(elem);
}
// Now iterate backward and make sure they're the same
@@ -1247,6 +1247,27 @@ public class CollationRegressionTest extends TestFmwk {
}
@Test
+ public void TestICU22555InfinityLoop() {
+ char data[] = {
+ 0x0020, 0x0026, 0x4000, 0x002c, 0x6601, 0x0106, 0xff7f, 0xff99,
+ 0x003b, 0x1141, 0x106a, 0x1006, 0x0001, 0x0080, 0x1141, 0x106a,
+ 0x0026, 0x00ff, 0xff6f, 0xff99, 0x013b, 0x1141, 0x1067, 0x1026,
+ 0x0601, 0x0080, 0x5f03, 0x17e3, 0x0000, 0x3e00, 0x3e3e, 0x0055,
+ 0x8080, 0x0000, 0x01e4, 0x0000, 0x0300, 0x003d, 0x4cff, 0x8053,
+ 0x7a65, 0x0000, 0x6400, 0x5f00, 0x0150, 0x9090, 0x9090, 0x2f5f,
+ 0x0053, 0xffe4, 0x002c, 0x0300, 0x1f3d, 0x55f7, 0x8053, 0x1750,
+ 0x3d00, 0xff00, 0x00ff, 0xff6f, 0x0099, 0x03fa, 0x0303, 0x0303,
+ 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303,
+ 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303,
+ };
+ String rule = new String(data, 0, data.length);
+ try {
+ RuleBasedCollator coll = new RuleBasedCollator(rule);
+ } catch(Exception expected) {
+ }
+ }
+
+ @Test
public void TestBeforeWithTooStrongAfter() {
// ICU ticket #9959:
// Forbid rules with a before-reset followed by a stronger relation.
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java
index eeb032d15..d08625b8b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java
@@ -427,10 +427,10 @@ public class CollationServiceTest extends TestFmwk {
boolean expectAvailable = DATA[(i*3)+2].equals("t");
ULocale actual = Collator.getFunctionalEquivalent(kw[0],input,isAvailable);
if(!actual.equals(expect) || (expectAvailable!=isAvailable[0])) {
- errln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + new Boolean(isAvailable[0]) + ", " +
- "expected " + expect + " avail " + new Boolean(expectAvailable));
+ errln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + isAvailable[0] + ", " +
+ "expected " + expect + " avail " + expectAvailable);
} else {
- logln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + new Boolean(isAvailable[0]));
+ logln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + isAvailable[0]);
}
}
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java
index eecc48f90..edaa9bca5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java
@@ -208,7 +208,7 @@ public class ICUDurationTest extends CoreTestFmwk {
logln("format date from -> " + formatted);
}
- formatted = df.format(new Long(1000*3600*24*2));
+ formatted = df.format(1000L*3600*24*2);
expect = "fra due giorni";
if(!expect.equals(formatted)) {
errln("Expected " + expect + " but got " + formatted);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java
index 08c5e7d9e..378d58e1d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java
@@ -38,7 +38,7 @@ public class BigNumberFormatTest extends CoreTestFmwk {
DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
- Number n = new Long(1234);
+ Number n = 1234L;
expect(fmt1, n, "1.234E3");
expect(fmt2, n, "1.234E+3");
expect(fmt1, "1.234E3", n);
@@ -53,11 +53,11 @@ public class BigNumberFormatTest extends CoreTestFmwk {
public void TestSecondaryGrouping() {
DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
DecimalFormat f = new DecimalFormat("#,##,###", US);
- expect(f, new Long(123456789), "12,34,56,789");
+ expect(f, 123456789L, "12,34,56,789");
expectPat(f, "#,##,##0");
f.applyPattern("#,###");
f.setSecondaryGroupingSize(4);
- expect(f, new Long(123456789), "12,3456,789");
+ expect(f, 123456789L, "12,3456,789");
expectPat(f, "#,####,##0");
// On Sun JDK 1.2-1.3, the hi_IN locale uses '0' for a zero digit,
@@ -65,7 +65,7 @@ public class BigNumberFormatTest extends CoreTestFmwk {
f = (DecimalFormat) NumberFormat.getInstance(new Locale("hi", "IN"));
String str = transmute("1,87,65,43,210",
f.getDecimalFormatSymbols().getZeroDigit());
- expect(f, new Long(1876543210), str);
+ expect(f, 1876543210L, str);
}
private void expectPad(DecimalFormat fmt, String pat, int pos) {
@@ -192,19 +192,19 @@ public class BigNumberFormatTest extends CoreTestFmwk {
DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
/*For ICU compatibility [Richard/GCL]*/
expect(NumberFormat.getScientificInstance(Locale.US),
- new Number[] { new Double(12345.678901),
+ new Number[] { 12345.678901d,
new java.math.BigDecimal("12345.678901"),
},
"1.2345678901E4");
expect(new DecimalFormat("##0.###E0", US),
- new Double(12345),
+ 12345d,
"12.34E3");
expect(new DecimalFormat("##0.###E0", US),
- new Double(12345.00001),
+ 12345.00001d,
"12.35E3");
expect(new DecimalFormat("##0.####E0", US),
- new Number[] { new Integer(12345),
- new Long(12345),
+ new Number[] { 12345,
+ 12345L,
new java.math.BigDecimal("12345.4999"),
new java.math.BigDecimal("12344.5001"),
},
@@ -216,19 +216,19 @@ public class BigNumberFormatTest extends CoreTestFmwk {
"12.346E3");
/*For ICU compatibility [Richard/GCL]*/
expect(NumberFormat.getScientificInstance(Locale.FRANCE),
- new Double(12345.678901),
+ 12345.678901d,
"1,2345678901E4");
expect(new DecimalFormat("##0.####E0", US),
- new Double(789.12345e-9),
+ 789.12345e-9d,
"789.12E-9");
expect(new DecimalFormat("##0.####E0", US),
- new Double(780.e-9),
+ 780.e-9d,
"780E-9");
expect(new DecimalFormat(".###E0", US),
- new Double(45678),
+ 45678d,
".457E5");
expect(new DecimalFormat(".###E0", US),
- new Long(0),
+ 0L,
".0E0");
expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
new DecimalFormat("##E0", US),
@@ -237,7 +237,7 @@ public class BigNumberFormatTest extends CoreTestFmwk {
new DecimalFormat("00E0", US),
new DecimalFormat("000E0", US),
},
- new Long(45678000),
+ 45678000L,
new String[] { "4.5678E7",
"45.678E6",
"4567.8E4",
@@ -247,19 +247,19 @@ public class BigNumberFormatTest extends CoreTestFmwk {
}
);
expect(new DecimalFormat("###E0", US),
- new Object[] { new Double(0.0000123), "12.3E-6",
- new Double(0.000123), "123E-6",
+ new Object[] { 0.0000123d, "12.3E-6",
+ 0.000123d, "123E-6",
new java.math.BigDecimal("0.00123"), "1.23E-3", // Cafe VM messes up Double(0.00123)
- new Double(0.0123), "12.3E-3",
- new Double(0.123), "123E-3",
- new Double(1.23), "1.23E0",
- new Double(12.3), "12.3E0",
- new Double(123), "123E0",
- new Double(1230), "1.23E3",
+ 0.0123d, "12.3E-3",
+ 0.123d, "123E-3",
+ 1.23d, "1.23E0",
+ 12.3d, "12.3E0",
+ 123d, "123E0",
+ 1230d, "1.23E3",
});
expect(new DecimalFormat("0.#E+00", US),
- new Object[] { new Double(0.00012), "1.2E-04",
- new Long(12000), "1.2E+04",
+ new Object[] { 0.00012d, "1.2E-04",
+ 12000L, "1.2E+04",
});
}
@@ -269,26 +269,26 @@ public class BigNumberFormatTest extends CoreTestFmwk {
public void TestPad() {
DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
expect(new DecimalFormat("*^##.##", US),
- new Object[] { new Long(0), "^^^^0",
- new Double(-1.3), "^-1.3",
+ new Object[] { 0L, "^^^^0",
+ -1.3d, "^-1.3",
}
);
expect(new DecimalFormat("##0.0####E0*_ 'g-m/s^2'", US),
- new Object[] { new Long(0), "0.0E0______ g-m/s^2",
- new Double(1.0/3), "333.333E-3_ g-m/s^2",
+ new Object[] { 0L, "0.0E0______ g-m/s^2",
+ 1.0d/3, "333.333E-3_ g-m/s^2",
}
);
expect(new DecimalFormat("##0.0####*_ 'g-m/s^2'", US),
- new Object[] { new Long(0), "0.0______ g-m/s^2",
- new Double(1.0/3), "0.33333__ g-m/s^2",
+ new Object[] { 0L, "0.0______ g-m/s^2",
+ 1.0d/3, "0.33333__ g-m/s^2",
}
);
expect(new DecimalFormat("*x#,###,###,##0.00;*x(#,###,###,##0.00)", US),
new Object[] {
- new Long(-100), "xxxxxxxx(100.00)",
- new Long(-1000), "xxxxxx(1,000.00)",
- new Long(-1000000), "xx(1,000,000.00)",
- new Long(-1000000000), "(1,000,000,000.00)",
+ -100L, "xxxxxxxx(100.00)",
+ -1000L, "xxxxxx(1,000.00)",
+ -1000000L, "xx(1,000,000.00)",
+ -1000000000L, "(1,000,000,000.00)",
});
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java
index de168e1da..5e32c4ded 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java
@@ -991,7 +991,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what + "=" + s);
first = s.charAt(0);
if(first<kHindiZero || first>(kHindiZero+9)) {
- errln(what + "- wrong digit, got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + "- wrong digit, got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1002,7 +1002,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what + ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit, got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit, got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1013,7 +1013,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what + ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
{
@@ -1023,7 +1023,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what + ": " + s);
first = s.charAt(0);
if(first<kLatinZero || first>(kLatinZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1034,7 +1034,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what+ ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1045,7 +1045,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what+ ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1056,7 +1056,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what+ ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java
index cbce57d8d..791a50439 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java
@@ -2490,7 +2490,7 @@ public class DateFormatTest extends CoreTestFmwk {
f.format((Object)cal, buf, pos);
f.format((Object)now, buf, pos);
- f.format(new Long(now.getTime()), buf, pos);
+ f.format(now.getTime(), buf, pos);
try {
f.format("Howdy", buf, pos);
}
@@ -3622,7 +3622,7 @@ public class DateFormatTest extends CoreTestFmwk {
errln("FAIL: Date must be accepted by formatToCharacterIterator");
}
- Number num = new Long(d.getTime());
+ Number num = d.getTime();
try {
acit = df.formatToCharacterIterator(num);
if (acit == null) {
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java
index 657294fc2..c5a400bd2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java
@@ -1825,7 +1825,7 @@ public class DateIntervalFormatTest extends CoreTestFmwk {
String firstPart = patternInfo.getFirstPart();
String secondPart = patternInfo.getSecondPart();
if (!matches(dateFormatPattern, firstPart, secondPart)) {
- if (logKnownIssue("11585", "incompatible pattern between date format and date interval format")) {
+ if (logKnownIssue("ICU-11585", "incompatible pattern between date format and date interval format")) {
logln("For skeleton " + skeleton + "/locale " + locale + ": mismatch between date format «"
+ dateFormatPattern + "» and date interval format «" + firstPart + secondPart + "».");
} else {
@@ -2503,6 +2503,17 @@ public class DateIntervalFormatTest extends CoreTestFmwk {
DateFormat df = dif.getDateFormat();
SimpleDateFormat sdf = (SimpleDateFormat)df;
assertEquals("Wrong date format", "M/d/r, h:mm\u202Fa", sdf.toPattern());
+
+ // additional tests for the related ICU-22202
+ dif = DateIntervalFormat.getInstance("Lh", ULocale.ENGLISH);
+ df = dif.getDateFormat();
+ sdf = (SimpleDateFormat)df;
+ assertEquals("Wrong date format", "L, h a", sdf.toPattern());
+
+ dif = DateIntervalFormat.getInstance("UH", ULocale.forLanguageTag("en-u-ca-chinese"));
+ df = dif.getDateFormat();
+ sdf = (SimpleDateFormat)df;
+ assertEquals("Wrong date format", "r(U), HH", sdf.toPattern());
}
@Test
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java
index 6c458e787..a5acb752c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java
@@ -50,7 +50,7 @@ public class IntlTestDateFormatAPIC extends CoreTestFmwk {
// compile-time name hiding.
Date dateObj = new Date(0);
- Number numObj = new Double(3.1415926535897932384626433832795);
+ Number numObj = 3.1415926535897932384626433832795;
StringBuffer strBuffer = new StringBuffer("");
String str;
FieldPosition fpos = new FieldPosition(0);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
index b71c9499a..65bc5adb0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -308,8 +308,8 @@ public class IntlTestDecimalFormatAPIC extends CoreTestFmwk {
@Test
public void testFormatToCharacterIterator() {
- Number number = new Double(350.76);
- Number negativeNumber = new Double(-350.76);
+ Number number = 350.76d;
+ Number negativeNumber = -350.76d;
Locale us = Locale.US;
@@ -342,12 +342,12 @@ public class IntlTestDecimalFormatAPIC extends CoreTestFmwk {
getNegativeCurrencyVectorUS());
// test multiple grouping separators
- number = new Long(100300400);
+ number = 100300400L;
t_Format(11, number, NumberFormat.getNumberInstance(us),
getNumberVector2US());
// test 0
- number = new Long(0);
+ number = 0L;
t_Format(12, number, NumberFormat.getNumberInstance(us),
getZeroVector());
}
@@ -511,7 +511,7 @@ public class IntlTestDecimalFormatAPIC extends CoreTestFmwk {
// called from support_messageformat tests
public FieldContainer(int start, int end, AttributedCharacterIterator.Attribute attribute, int value) {
- this(start, end, attribute, new Integer(value));
+ this(start, end, attribute, Integer.valueOf(value));
}
// called from support_messageformat tests
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java
index 43dbca492..87ca383ab 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java
@@ -3919,7 +3919,7 @@ public class MeasureUnitTest extends CoreTestFmwk {
System.out.println(" * Returns by value, unit of " + type + ": " + code + ".");
System.out.printf(" * Also see {@link #create%s()}.\n", name);
String getterVersion = getVersion(javaName, thisVersion);
- if (Integer.valueOf(getterVersion) < 64) {
+ if (Integer.parseInt(getterVersion) < 64) {
getterVersion = "64";
}
if (isDraft(javaName)) {
@@ -4626,6 +4626,8 @@ public class MeasureUnitTest extends CoreTestFmwk {
}
TestCase cases[] = {
+ new TestCase(MeasureUnit.MeasurePrefix.QUECTO, 10, -30),
+ new TestCase(MeasureUnit.MeasurePrefix.RONTO, 10, -27),
new TestCase(MeasureUnit.MeasurePrefix.YOCTO, 10, -24),
new TestCase(MeasureUnit.MeasurePrefix.ZEPTO, 10, -21),
new TestCase(MeasureUnit.MeasurePrefix.ATTO, 10, -18),
@@ -4647,6 +4649,8 @@ public class MeasureUnitTest extends CoreTestFmwk {
new TestCase(MeasureUnit.MeasurePrefix.EXA, 10, 18),
new TestCase(MeasureUnit.MeasurePrefix.ZETTA, 10, 21),
new TestCase(MeasureUnit.MeasurePrefix.YOTTA, 10, 24),
+ new TestCase(MeasureUnit.MeasurePrefix.RONNA, 10, 27),
+ new TestCase(MeasureUnit.MeasurePrefix.QUETTA, 10, 30),
new TestCase(MeasureUnit.MeasurePrefix.KIBI, 1024, 1),
new TestCase(MeasureUnit.MeasurePrefix.MEBI, 1024, 2),
new TestCase(MeasureUnit.MeasurePrefix.GIBI, 1024, 3),
@@ -4674,8 +4678,7 @@ public class MeasureUnitTest extends CoreTestFmwk {
// Prove that all built-in units are parseable, except "generic" temperature
// (and for now, beaufort units)
- if (unit == MeasureUnit.GENERIC_TEMPERATURE ||
- (unit == MeasureUnit.BEAUFORT && logKnownIssue("CLDR-16327", "beaufort currently not convertible"))) {
+ if (unit == MeasureUnit.GENERIC_TEMPERATURE) {
try {
MeasureUnit.forIdentifier(unit.getIdentifier());
Assert.fail("GENERIC_TEMPERATURE should not be parseable (BEAUFORT also currently non-parseable)");
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java
index 5f8bec742..373099944 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java
@@ -136,7 +136,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
try {
logln("Apply with pattern : " + pattern1);
messageFormatter.applyPattern(pattern1);
- Object[] paramArray = {new Integer(7)};
+ Object[] paramArray = {7};
String tempBuffer = messageFormatter.format(paramArray);
if (!tempBuffer.equals("Impossible {1} has occurred -- status code is 7 and message is {2}."))
errln("Tests arguments < substitution failed");
@@ -471,7 +471,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
errln("argument0: \"" + objs[0] + "\"");
mf.setLocale(Locale.US);
mf.applyPattern("{0,number,#.##}, {0,number,#.#}");
- Object[] oldobjs = {new Double(3.1415)};
+ Object[] oldobjs = {3.1415d};
String result = mf.format( oldobjs );
logln("pattern: \"" + mf.toPattern() + "\"");
logln("text for parsing: \"" + result + "\"");
@@ -479,7 +479,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
if (!result.equals("3.14, 3.1"))
errln("result = " + result);
Object[] newobjs = mf.parse(result, new ParsePosition(0));
- // newobjs now equals {new Double(3.1)}
+ // newobjs now equals {Double.valueOf(3.1)}
if (((Number)newobjs[0]).doubleValue() != 3.1) // was (Double) [alan]
errln( "newobjs[0] = " + newobjs[0]);
}
@@ -498,7 +498,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
form1.setFormat(1, fileform);
form2.setFormat(0, fileform);
- Object[] testArgs = {new Long(12373), "MyDisk"};
+ Object[] testArgs = {12373L, "MyDisk"};
logln(form1.format(testArgs));
logln(form2.format(testArgs));
}
@@ -550,7 +550,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
};
for (int i=0; i<3; i++) {
- String out = mf.format(new Object[]{new Integer(i)});
+ String out = mf.format(new Object[]{i});
if (SUFFIX[i] == null) {
if (!out.equals(PREFIX[i]))
errln("" + i + ": Got \"" + out + "\"; Want \"" + PREFIX[i] + "\"");
@@ -681,7 +681,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
logln("Apply with pattern : " + pattern1);
messageFormatter.applyPattern(pattern1);
HashMap paramsMap = new HashMap();
- paramsMap.put("arg0", new Integer(7));
+ paramsMap.put("arg0", 7);
String tempBuffer = messageFormatter.format(paramsMap);
if (!tempBuffer.equals("Impossible {arg1} has occurred -- status code is 7 and message is {arg2}."))
errln("Tests arguments < substitution failed");
@@ -704,7 +704,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
logln("Apply with pattern : " + pattern2);
messageFormatter.applyPattern(pattern2);
paramsMap.clear();
- paramsMap.put("ARG_ZERO", new Integer(7));
+ paramsMap.put("ARG_ZERO", 7);
tempBuffer = messageFormatter.format(paramsMap);
if (!tempBuffer.equals("Double ' Quotes 7 test and quoted {ARG_ONE} test plus 'other {ARG_TWO} stuff'."))
errln("quote format test (w/ params) failed.");
@@ -832,7 +832,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
mf.setLocale(Locale.US);
mf.applyPattern("{" + argName + ",number,#.##}, {" + argName + ",number,#.#}");
Map oldobjs = new HashMap();
- oldobjs.put(argName, new Double(3.1415));
+ oldobjs.put(argName, 3.1415d);
String result = mf.format( oldobjs );
logln("pattern: \"" + mf.toPattern() + "\"");
logln("text for parsing: \"" + result + "\"");
@@ -840,7 +840,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
if (!result.equals("3.14, 3.1"))
errln("result = " + result);
Map newobjs = mf.parseToMap(result, new ParsePosition(0));
- // newobjs now equals {new Double(3.1)}
+ // newobjs now equals {Double.valueOf(3.1)}
if (((Number)newobjs.get(argName)).doubleValue() != 3.1) // was (Double) [alan]
errln( "newobjs.get(argName) = " + newobjs.get(argName));
}{ // Taken from Test4105380().
@@ -855,7 +855,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
form2.setFormat(0, fileform);
Map testArgs = new HashMap();
testArgs.put("diskName", "MyDisk");
- testArgs.put("numberOfFiles", new Long(12373));
+ testArgs.put("numberOfFiles", 12373L);
logln(form1.format(testArgs));
logln(form2.format(testArgs));
}{ // Taken from test4293229().
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java
index 4332a4a4d..58ae87bea 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java
@@ -150,11 +150,11 @@ public class NumberFormatRoundTripTest extends CoreTestFmwk {
}
private void _test(NumberFormat fmt, double value) {
- _test(fmt, new Double(value));
+ _test(fmt, Double.valueOf(value));
}
private void _test(NumberFormat fmt, long value) {
- _test(fmt, new Long(value));
+ _test(fmt, Long.valueOf(value));
}
private void _test(NumberFormat fmt, Number value) {
@@ -166,7 +166,7 @@ public class NumberFormatRoundTripTest extends CoreTestFmwk {
else
s = fmt.format(value.longValue());
- Number n = new Double(0);
+ Number n = 0d;
boolean show = verbose;
if (DEBUG)
logln(
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java
index 21add8928..e3e11c7f3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java
@@ -541,7 +541,7 @@ public class NumberFormatTest extends CoreTestFmwk {
for (int i=0; i<DATA.length; ++i) {
String locale = DATA[i][0];
String pat = DATA[i][1];
- Double numberToBeFormat = new Double(DATA[i][2]);
+ Double numberToBeFormat = Double.valueOf(DATA[i][2]);
DecimalFormatSymbols sym = new DecimalFormatSymbols(new ULocale(locale));
for (int j=1; j<=3; ++j) {
// j represents the number of currency sign in the pattern.
@@ -724,7 +724,7 @@ public class NumberFormatTest extends CoreTestFmwk {
ULocale save = ULocale.getDefault();
ULocale.setDefault(ULocale.US);
MeasureFormat curFmt = MeasureFormat.getCurrencyFormat();
- String strBuf = curFmt.format(new CurrencyAmount(new Float(1234.56), Currency.getInstance("USD")));
+ String strBuf = curFmt.format(new CurrencyAmount(Float.valueOf(1234.56f), Currency.getInstance("USD")));
try {
CurrencyAmount parsedVal = (CurrencyAmount)curFmt.parseObject(strBuf);
@@ -797,7 +797,7 @@ public class NumberFormatTest extends CoreTestFmwk {
continue;
}
String localeString = DATA[i][0];
- Double numberToBeFormat = new Double(DATA[i][1]);
+ Double numberToBeFormat = Double.valueOf(DATA[i][1]);
String currencyISOCode = DATA[i][2];
ULocale locale = new ULocale(localeString);
NumberFormat numFmt = NumberFormat.getInstance(locale, k);
@@ -1278,7 +1278,7 @@ public class NumberFormatTest extends CoreTestFmwk {
new DecimalFormat("00E0", US),
new DecimalFormat("000E0", US),
},
- new Long(45678000),
+ Long.valueOf(45678000),
new String[] { "4.5678E7",
"45.678E6",
"4567.8E4",
@@ -1299,15 +1299,15 @@ public class NumberFormatTest extends CoreTestFmwk {
expect(new DecimalFormat("000E0", US), 45678000, "457E5");
/*
expect(new DecimalFormat("###E0", US, status),
- new Object[] { new Double(0.0000123), "12.3E-6",
- new Double(0.000123), "123E-6",
- new Double(0.00123), "1.23E-3",
- new Double(0.0123), "12.3E-3",
- new Double(0.123), "123E-3",
- new Double(1.23), "1.23E0",
- new Double(12.3), "12.3E0",
- new Double(123), "123E0",
- new Double(1230), "1.23E3",
+ new Object[] { Double.valueOf(0.0000123), "12.3E-6",
+ Double.valueOf(0.000123), "123E-6",
+ Double.valueOf(0.00123), "1.23E-3",
+ Double.valueOf(0.0123), "12.3E-3",
+ Double.valueOf(0.123), "123E-3",
+ Double.valueOf(1.23), "1.23E0",
+ Double.valueOf(12.3), "12.3E0",
+ Double.valueOf(123), "123E0",
+ Double.valueOf(1230), "1.23E3",
});
!
! Unroll this test into individual tests below...
@@ -1324,8 +1324,8 @@ public class NumberFormatTest extends CoreTestFmwk {
expect2(new DecimalFormat("###E0", US), 1230.0, "1.23E3");
/*
expect(new DecimalFormat("0.#E+00", US, status),
- new Object[] { new Double(0.00012), "1.2E-04",
- new Long(12000), "1.2E+04",
+ new Object[] { Double.valueOf(0.00012), "1.2E-04",
+ Long.valueOf(12000), "1.2E+04",
});
!
! Unroll this test into individual tests below...
@@ -1558,7 +1558,7 @@ public class NumberFormatTest extends CoreTestFmwk {
public void TestScientific2() {
// jb 2552
DecimalFormat fmt = (DecimalFormat)NumberFormat.getCurrencyInstance();
- Number num = new Double(12.34);
+ Number num = 12.34d;
expect(fmt, num, "$12.34");
fmt.setScientificNotation(true);
expect(fmt, num, "$1.23E1");
@@ -2542,7 +2542,7 @@ public class NumberFormatTest extends CoreTestFmwk {
@Test
public void TestBigDecimalRounding() {
String figure = "50.000000004";
- Double dbl = new Double(figure);
+ Double dbl = Double.valueOf(figure);
BigDecimal dec = new BigDecimal(figure);
DecimalFormat f = (DecimalFormat) NumberFormat.getInstance();
@@ -2657,20 +2657,20 @@ public class NumberFormatTest extends CoreTestFmwk {
/** Format-Parse test (convenience) */
public void expect2(NumberFormat fmt, double n, String exp) {
- expect2(fmt, new Double(n), exp);
+ expect2(fmt, Double.valueOf(n), exp);
}
/** RBNF Format-Parse test (convenience) */
public void expect3(NumberFormat fmt, double n, String exp) {
- expect3(fmt, new Double(n), exp);
+ expect3(fmt, Double.valueOf(n), exp);
}
/** Format-Parse test (convenience) */
public void expect2(NumberFormat fmt, long n, String exp) {
- expect2(fmt, new Long(n), exp);
+ expect2(fmt, Long.valueOf(n), exp);
}
/** RBNF Format-Parse test (convenience) */
public void expect3(NumberFormat fmt, long n, String exp) {
- expect3(fmt, new Long(n), exp);
+ expect3(fmt, Long.valueOf(n), exp);
}
/** Format test */
@@ -2745,12 +2745,12 @@ public class NumberFormatTest extends CoreTestFmwk {
/** Format test (convenience) */
public void expect(NumberFormat fmt, double n, String exp) {
- expect(fmt, new Double(n), exp);
+ expect(fmt, Double.valueOf(n), exp);
}
/** Format test (convenience) */
public void expect(NumberFormat fmt, long n, String exp) {
- expect(fmt, new Long(n), exp);
+ expect(fmt, Long.valueOf(n), exp);
}
/** Parse test */
@@ -2797,12 +2797,12 @@ public class NumberFormatTest extends CoreTestFmwk {
/** Parse test (convenience) */
public void expect(NumberFormat fmt, String str, double n) {
- expect(fmt, str, new Double(n));
+ expect(fmt, str, Double.valueOf(n));
}
/** Parse test (convenience) */
public void expect(NumberFormat fmt, String str, long n) {
- expect(fmt, str, new Long(n));
+ expect(fmt, str, Long.valueOf(n));
}
/** Parse test */
@@ -3264,7 +3264,7 @@ public class NumberFormatTest extends CoreTestFmwk {
// Tests when "if (number instanceof Long)" is true
try {
- nf.format(new Long("0"), sb, fp);
+ nf.format(Long.valueOf("0"), sb, fp);
} catch (Exception e) {
errln("NumberFormat.format(Object number, ...) was not suppose to "
+ "return an exception for a Long object. Error: " + e);
@@ -3738,13 +3738,13 @@ public class NumberFormatTest extends CoreTestFmwk {
} catch (NullPointerException ex) {
}
try {
- ca = new CurrencyAmount(new Integer(0), (Currency) null);
+ ca = new CurrencyAmount(Integer.valueOf(0), (Currency) null);
errln("NullPointerException should have been thrown.");
} catch (NullPointerException ex) {
}
- ca = new CurrencyAmount(new Integer(0), Currency.getInstance(new ULocale("ja_JP")));
- cb = new CurrencyAmount(new Integer(1), Currency.getInstance(new ULocale("ja_JP")));
+ ca = new CurrencyAmount(Integer.valueOf(0), Currency.getInstance(new ULocale("ja_JP")));
+ cb = new CurrencyAmount(Integer.valueOf(1), Currency.getInstance(new ULocale("ja_JP")));
if (ca.equals(null)) {
errln("Comparison should return false.");
}
@@ -3897,41 +3897,41 @@ public class NumberFormatTest extends CoreTestFmwk {
{
ULocale.US, // ULocale - null for default locale
"#.##", // Pattern
- Integer.valueOf(BigDecimal.ROUND_DOWN), // Rounding Mode or null (implicit)
- Double.valueOf(0.0d), // Rounding increment, Double or BigDecimal, or null (implicit)
- Double.valueOf(123.4567d), // Input value, Long, Double, BigInteger or BigDecimal
+ BigDecimal.ROUND_DOWN, // Rounding Mode or null (implicit)
+ 0.0d, // Rounding increment, Double or BigDecimal, or null (implicit)
+ 123.4567d, // Input value, Long, Double, BigInteger or BigDecimal
"123.45" // Expected result, null for exception
},
{
ULocale.US,
"#.##",
null,
- Double.valueOf(0.1d),
- Double.valueOf(123.4567d),
+ 0.1d,
+ 123.4567d,
"123.5"
},
{
ULocale.US,
"#.##",
- Integer.valueOf(BigDecimal.ROUND_DOWN),
- Double.valueOf(0.1d),
- Double.valueOf(123.4567d),
+ BigDecimal.ROUND_DOWN,
+ 0.1d,
+ 123.4567d,
"123.4"
},
{
ULocale.US,
"#.##",
- Integer.valueOf(BigDecimal.ROUND_UNNECESSARY),
+ BigDecimal.ROUND_UNNECESSARY,
null,
- Double.valueOf(123.4567d),
+ 123.4567d,
null
},
{
ULocale.US,
"#.##",
- Integer.valueOf(BigDecimal.ROUND_DOWN),
+ BigDecimal.ROUND_DOWN,
null,
- Long.valueOf(1234),
+ 1234L,
"1234"
},
};
@@ -4840,7 +4840,7 @@ public class NumberFormatTest extends CoreTestFmwk {
v1.add(new FieldContainer(11, 12, NumberFormat.Field.DECIMAL_SEPARATOR));
v1.add(new FieldContainer(12, 15, NumberFormat.Field.FRACTION));
- Number number = new Double(123456789.9753);
+ Number number = 123456789.9753d;
ULocale usLoc = new ULocale("en-US");
DecimalFormatSymbols US = new DecimalFormatSymbols(usLoc);
@@ -4939,7 +4939,7 @@ public class NumberFormatTest extends CoreTestFmwk {
@Test
public void TestMissingFieldPositionsCurrency() {
DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance(ULocale.US);
- Number number = new Double(92314587.66);
+ Number number = 92314587.66d;
String result = "$92,314,587.66";
checkFormatWithField("currency", formatter, number, result,
@@ -4958,7 +4958,7 @@ public class NumberFormatTest extends CoreTestFmwk {
public void TestMissingFieldPositionsNegativeDouble() {
// test for exponential fields with double
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
- Number number = new Double(-12345678.90123);
+ Number number = -12345678.90123d;
DecimalFormat formatter = new DecimalFormat("0.#####E+00", us_symbols);
String numFmtted = formatter.format(number);
@@ -4980,7 +4980,7 @@ public class NumberFormatTest extends CoreTestFmwk {
public void TestMissingFieldPositionsPerCent() {
// Check PERCENT
DecimalFormat percentFormat = (DecimalFormat) NumberFormat.getPercentInstance(ULocale.US);
- Number number = new Double(-0.986);
+ Number number = -0.986d;
String numberFormatted = percentFormat.format(number);
checkFormatWithField("sign", percentFormat, number, numberFormatted,
NumberFormat.Field.SIGN, 0, 1);
@@ -4995,7 +4995,7 @@ public class NumberFormatTest extends CoreTestFmwk {
// Check PERCENT with more digits
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
DecimalFormat fmtPercent = new DecimalFormat("0.#####%", us_symbols);
- Number number = new Double(-0.986);
+ Number number = -0.986d;
String numFmtted = fmtPercent.format(number);
checkFormatWithField("sign", fmtPercent, number, numFmtted,
@@ -5015,7 +5015,7 @@ public class NumberFormatTest extends CoreTestFmwk {
// Check PERMILLE
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
DecimalFormat fmtPerMille = new DecimalFormat("0.######‰", us_symbols);
- Number numberPermille = new Double(-0.98654);
+ Number numberPermille = -0.98654d;
String numFmtted = fmtPerMille.format(numberPermille);
checkFormatWithField("sign", fmtPerMille, numberPermille, numFmtted,
@@ -5053,7 +5053,7 @@ public class NumberFormatTest extends CoreTestFmwk {
@Test
public void TestMissingFieldPositionsNegativeLong() {
- Number number = new Long("-123456789987654321");
+ Number number = Long.valueOf("-123456789987654321");
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
DecimalFormat formatter = new DecimalFormat("0.#####E+0", us_symbols);
String longFmtted = formatter.format(number);
@@ -5077,7 +5077,7 @@ public class NumberFormatTest extends CoreTestFmwk {
// Check complex positive;negative pattern.
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
DecimalFormat fmtPosNegSign = new DecimalFormat("+0.####E+00;-0.#######E+0", us_symbols);
- Number positiveExp = new Double("9876543210");
+ Number positiveExp = Double.valueOf("9876543210");
String posExpFormatted = fmtPosNegSign.format(positiveExp);
checkFormatWithField("sign", fmtPosNegSign, positiveExp, posExpFormatted,
@@ -6116,8 +6116,8 @@ public class NumberFormatTest extends CoreTestFmwk {
df.setParseNoExponent(true);
assertEquals("Parse no exponent getter is broken", true, df.isParseNoExponent());
Number result2 = df.parse("123E4");
- assertEquals("Exponent did not parse before setParseNoExponent", result1, new Long(1230000));
- assertEquals("Exponent parsed after setParseNoExponent", result2, new Long(123));
+ assertEquals("Exponent did not parse before setParseNoExponent", result1, 1230000L);
+ assertEquals("Exponent parsed after setParseNoExponent", result2, 123L);
}
@Test
@@ -6330,8 +6330,8 @@ public class NumberFormatTest extends CoreTestFmwk {
pattern = pattern.replace("¤", "¤¤¤¤¤");
df.applyPattern(pattern);
// Note: Narrow currency is not parseable because of ambiguity.
- assertEquals("Narrow currency symbol for USD in en_CA is US$",
- "US$123.45", df.format(123.45));
+ assertEquals("Narrow currency symbol for USD in en_CA is $",
+ "$123.45", df.format(123.45));
}
@Test
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java
index aedd0fe33..951b7003d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java
@@ -395,7 +395,7 @@ public class NumberRegressionTests extends CoreTestFmwk {
{
DecimalFormat df = new DecimalFormat();
String str = "0.1234";
- Double d1 = new Double(str);
+ Double d1 = Double.parseDouble(str);
Number d2 = df.parse(str, new ParsePosition(0));
logln(d1.toString());
if (d2.doubleValue() != d1.doubleValue())
@@ -852,7 +852,7 @@ public class NumberRegressionTests extends CoreTestFmwk {
DecimalFormat fmt = new DecimalFormat("#,##0.00");
StringBuffer formatted = new StringBuffer();
FieldPosition field = new FieldPosition(0);
- Double num = new Double(1234.5);
+ Double num = 1234.5;
fmt.format(num, formatted, field);
if (field.getBeginIndex() != 0 && field.getEndIndex() != 5)
errln("Format 1234.5 failed. Begin index: " + field.getBeginIndex() + " End index: " + field.getEndIndex());
@@ -1391,13 +1391,13 @@ public class NumberRegressionTests extends CoreTestFmwk {
{
ParsePosition ppos = new ParsePosition(0);
Number result = df.parse("-0.0", ppos);
- assertEquals("Should parse to double -0.0", new Double(-0.0), result);
+ assertEquals("Should parse to double -0.0", -0.0d, result);
}
df.setParseIntegerOnly(true);
{
ParsePosition ppos = new ParsePosition(0);
Number result = df.parse("-0.0", ppos);
- assertEquals("Should parse to an integer type, not a double", new Long(0), result);
+ assertEquals("Should parse to an integer type, not a double", 0L, result);
}
}
@@ -1675,10 +1675,10 @@ public class NumberRegressionTests extends CoreTestFmwk {
@Test
public void Test4217661() {
Object[] DATA = {
- new Double(0.001), "0",
- new Double(1.001), "1",
- new Double(0.006), "0.01",
- new Double(1.006), "1.01",
+ 0.001d, "0",
+ 1.001d, "1",
+ 0.006d, "0.01",
+ 1.006d, "1.01",
};
NumberFormat fmt = NumberFormat.getInstance(Locale.US);
fmt.setMaximumFractionDigits(2);
@@ -1872,7 +1872,7 @@ class MyNumberFormat extends NumberFormat {
}
@Override
public Number parse(String text, ParsePosition parsePosition) {
- return new Integer(0);
+ return 0;
}
@Override
public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java
index 7fd76a4db..8ef92b02a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java
@@ -38,18 +38,18 @@ public class PluralFormatTest extends CoreTestFmwk {
// Create example outputs for all supported locales.
/*
System.out.println("\n" + localeIDs);
- String lastValue = (String) changes.get(new Integer(0));
+ String lastValue = (String) changes.get(Integer.valueOf(0));
int lastNumber = 0;
for (int i = 1; i < 199; ++i) {
- if (changes.get(new Integer(i)) != null) {
+ if (changes.get(Integer.valueOf(i)) != null) {
if (lastNumber == i-1) {
System.out.println(lastNumber + ": " + lastValue);
} else {
System.out.println(lastNumber + "... " + (i-1) + ": " + lastValue);
}
lastNumber = i;
- lastValue = (String) changes.get(new Integer(i));
+ lastValue = (String) changes.get(Integer.valueOf(i));
}
}
System.out.println(lastNumber + "..." + 199 + ": " + lastValue);
@@ -59,7 +59,7 @@ public class PluralFormatTest extends CoreTestFmwk {
try {
PluralFormat plf = new PluralFormat(new ULocale(locales[i]), testPattern);
log("plf: " + plf);
- String expected = changes.get(new Integer(0));
+ String expected = changes.get(0);
for (int n = 0; n < 200; ++n) {
String value = changes.get(n);
if (value != null) {
@@ -78,8 +78,8 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestOneFormLocales() {
String localeIDs = "ja,ko,tr,vi";
String testPattern = "other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -88,10 +88,10 @@ public class PluralFormatTest extends CoreTestFmwk {
String localeIDs = "bem,da,de,el,en,eo,es,et,fi,fo,he,it,mr,nb,nl,nn,no,pt_PT,sv,af,bg,ca,eu,fur,fy,ha,ku,lb,ml," +
"nah,ne,om,or,pap,ps,so,sq,sw,ta,te,tk,ur,mn,gsw,rm";
String testPattern = "one{one} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -99,9 +99,9 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSingular01Locales() {
String localeIDs = "ff,fr,kab,gu,pa,pt,zu,bn";
String testPattern = "one{one} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "one");
- changes.put(new Integer(2), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "one");
+ changes.put(2, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -109,22 +109,22 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestZeroSingularLocales() {
String localeIDs = "lv";
String testPattern = "zero{zero} one{one} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "zero");
- changes.put(new Integer(1), "one");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "zero");
+ changes.put(1, "one");
for (int i = 2; i < 20; ++i) {
if (i < 10) {
- changes.put(new Integer(i), "other");
+ changes.put(i, "other");
} else {
- changes.put(new Integer(i), "zero");
+ changes.put(i, "zero");
}
- changes.put(new Integer(i*10), "zero");
+ changes.put(i*10, "zero");
if (i == 11) {
- changes.put(new Integer(i*10 + 1), "zero");
- changes.put(new Integer(i*10 + 2), "zero");
+ changes.put(i * 10 + 1, "zero");
+ changes.put(i * 10 + 2, "zero");
} else {
- changes.put(new Integer(i*10 + 1), "one");
- changes.put(new Integer(i*10 + 2), "other");
+ changes.put(i * 10 + 1, "one");
+ changes.put(i * 10 + 2, "other");
}
}
helperTestRules(localeIDs, testPattern, changes);
@@ -134,11 +134,11 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSingularDual() {
String localeIDs = "ga";
String testPattern = "one{one} two{two} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "two");
- changes.put(new Integer(3), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "two");
+ changes.put(3, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -146,14 +146,14 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSingularZeroSome() {
String localeIDs = "ro";
String testPattern = "few{few} one{one} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "few");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(20), "other");
- changes.put(new Integer(101), "few");
- changes.put(new Integer(102), "few");
- changes.put(new Integer(120), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "few");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(20, "other");
+ changes.put(101, "few");
+ changes.put(102, "few");
+ changes.put(120, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -161,18 +161,18 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSpecial12_19() {
String localeIDs = "lt";
String testPattern = "one{one} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(10), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(10, "other");
for (int i = 2; i < 20; ++i) {
if (i == 11) {
continue;
}
- changes.put(new Integer(i*10 + 1), "one");
- changes.put(new Integer(i*10 + 2), "few");
- changes.put(new Integer((i+1)*10), "other");
+ changes.put(i * 10 + 1, "one");
+ changes.put(i * 10 + 2, "few");
+ changes.put((i + 1) * 10, "other");
}
helperTestRules(localeIDs, testPattern, changes);
}
@@ -181,18 +181,18 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestPaucalExcept11_14() {
String localeIDs = "hr,sr,uk";
String testPattern = "one{one} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(5), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(5, "other");
for (int i = 2; i < 20; ++i) {
if (i == 11) {
continue;
}
- changes.put(new Integer(i*10 + 1), "one");
- changes.put(new Integer(i*10 + 2), "few");
- changes.put(new Integer(i*10 + 5), "other");
+ changes.put(i * 10 + 1, "one");
+ changes.put(i * 10 + 2, "few");
+ changes.put(i * 10 + 5, "other");
}
helperTestRules(localeIDs, testPattern, changes);
}
@@ -201,7 +201,7 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestPaucalRu() {
String localeIDs = "ru";
String testPattern = "one{one} many{many} other{other}";
- Map changes = new HashMap();
+ Map<Integer, String> changes = new HashMap<>();
for (int i = 0; i < 200; i+=10) {
if (i == 10 || i == 110) {
put(i, 0, 9, "many", changes);
@@ -232,11 +232,11 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSingularPaucal() {
String localeIDs = "cs,sk";
String testPattern = "one{one} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(5), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(5, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -244,17 +244,17 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestPaucal1_234() {
String localeIDs = "pl";
String testPattern = "one{one} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(5), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(5, "other");
for (int i = 2; i < 20; ++i) {
if (i == 11) {
continue;
}
- changes.put(new Integer(i*10 + 2), "few");
- changes.put(new Integer(i*10 + 5), "other");
+ changes.put(i * 10 + 2, "few");
+ changes.put(i * 10 + 5, "other");
}
helperTestRules(localeIDs, testPattern, changes);
}
@@ -263,16 +263,16 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestPaucal1_2_34() {
String localeIDs = "sl";
String testPattern = "one{one} two{two} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "two");
- changes.put(new Integer(3), "few");
- changes.put(new Integer(5), "other");
- changes.put(new Integer(101), "one");
- changes.put(new Integer(102), "two");
- changes.put(new Integer(103), "few");
- changes.put(new Integer(105), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "two");
+ changes.put(3, "few");
+ changes.put(5, "other");
+ changes.put(101, "one");
+ changes.put(102, "two");
+ changes.put(103, "few");
+ changes.put(105, "other");
helperTestRules(localeIDs, testPattern, changes);
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java
index 30a22457e..193bf6fc6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java
@@ -87,7 +87,7 @@ public class PluralFormatUnitTest extends CoreTestFmwk {
String result = numberFmt.format(n*n);
for (int k = 0; k < plFmts.length; ++k) {
sb.delete(0, sb.length());
- String pfResult = plFmts[k].format(Long.valueOf(n*n), sb, ignore).toString();
+ String pfResult = plFmts[k].format((long)(n*n), sb, ignore).toString();
TestFmwk.assertEquals("PluralFormat's output is not as expected", result, pfResult);
}
}
@@ -309,7 +309,7 @@ public class PluralFormatUnitTest extends CoreTestFmwk {
MessageFormat pfmt = new MessageFormat("The disk ''{0}'' contains {1, plural, one {one ''''{1, number, #.0}'''' widget} other {# widgets}}.");
logln("");
for (int i = 0; i < 3; ++i) {
- args[1] = new Integer(i);
+ args[1] = i;
logln(pfmt.format(args));
}
/* ICU 4.8 returns null instead of a choice/plural/select Format object
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java
index a16532b88..bd9f73283 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java
@@ -1760,4 +1760,11 @@ public class PluralRulesTest extends CoreTestFmwk {
form = xyz.select(range);
assertEquals("Fallback form", "other", form);
}
+ @Test
+ public void test22638LongNumberValue() {
+ PluralRules test = PluralRules.createRules(
+ "g:c%4422322222232222222222232222222322222223222222232222222322222223" +
+ "2222222322222232222222322222223222232222222222222322222223222222");
+ assertEquals("Long number value should get null", null, test);
+ }
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java
index 3c49de2e9..ff1d9f5d4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java
@@ -379,6 +379,40 @@ public class RbnfTest extends CoreTestFmwk {
doParsingTest(formatter, testDataLenient, true);
}
+ @Test
+ public void TestDFRounding() {
+ // test for ICU-22611
+ RuleBasedNumberFormat nf;
+
+ // no decimal places
+ nf = new RuleBasedNumberFormat("1000/1000: <##K<;", Locale.US);
+ assertEquals("-1K", nf.format(-1400));
+ assertEquals("-2K", nf.format(-1900));
+ assertEquals("1K", nf.format(1400));
+ assertEquals("2K", nf.format(1900));
+
+ // 1 decimal place
+ nf = new RuleBasedNumberFormat("1000/1000: <##.0K<;", Locale.US);
+ assertEquals("-1.4K", nf.format(-1440));
+ assertEquals("1.9K", nf.format(1890));
+
+ // with modulus substitution
+ nf = new RuleBasedNumberFormat("1000/1000: <##<K>##>; -x: ->>;", Locale.US);
+ assertEquals("-1K400", nf.format(-1400));
+ assertEquals("-1K900", nf.format(-1900));
+ assertEquals("1K400", nf.format(1400));
+ assertEquals("1K900", nf.format(1900));
+
+ // no decimal places, but with rounding mode set to ROUND_FLOOR
+ nf = new RuleBasedNumberFormat("1000/1000: <##K<;", Locale.US);
+ nf.setMaximumFractionDigits(0);
+ nf.setRoundingMode(BigDecimal.ROUND_FLOOR);
+ assertEquals("-2K", nf.format(-1400));
+ assertEquals("-2K", nf.format(-1900));
+ assertEquals("1K", nf.format(1400));
+ assertEquals("1K", nf.format(1900));
+ }
+
/**
* Perform a simple spot check on the Spanish spellout rules
*/
@@ -554,6 +588,7 @@ public class RbnfTest extends CoreTestFmwk {
{ "200", "zwei\u00ADhundert" },
{ "579", "f\u00fcnf\u00ADhundert\u00ADneun\u00ADund\u00ADsiebzig" },
{ "1,000", "ein\u00ADtausend" },
+ { "1,101", "ein\u00adtausend\u00adein\u00adhundert\u00adeins" },
{ "2,000", "zwei\u00ADtausend" },
{ "3,004", "drei\u00ADtausend\u00ADvier" },
{ "4,567", "vier\u00ADtausend\u00ADf\u00fcnf\u00ADhundert\u00ADsieben\u00ADund\u00ADsechzig" },
@@ -569,6 +604,23 @@ public class RbnfTest extends CoreTestFmwk {
};
doParsingTest(formatter, testDataLenient, true);
+
+ String[][] testDataYear = {
+ { "101", "ein\u00adhundert\u00adeins" },
+ { "900", "neun\u00adhundert" },
+ { "1,001", "ein\u00adtausend\u00adeins" },
+ { "1,100", "elf\u00adhundert" },
+ { "1,101", "elf\u00adhundert\u00adeins" },
+ { "1,234", "zw\u00f6lf\u00adhundert\u00advier\u00adund\u00addrei\u00dfig" },
+ { "2,001", "zwei\u00adtausend\u00adeins" },
+ { "10,001", "zehn\u00adtausend\u00adeins" },
+ { "-100", "minus ein\u00adhundert" },
+ { "12.34", "12,3" },
+ };
+
+ formatter.setDefaultRuleSet("%spellout-numbering-year");
+ logln("testing year rules");
+ doTest(formatter, testDataYear, false);
}
/**
@@ -1319,7 +1371,7 @@ public class RbnfTest extends CoreTestFmwk {
// Tests when "if (!(that instanceof RuleBasedNumberFormat))" is true
RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat("dummy");
if (rbnf.equals("dummy") ||
- rbnf.equals(new Character('a')) ||
+ rbnf.equals('a') ||
rbnf.equals(new Object()) ||
rbnf.equals(-1) ||
rbnf.equals(0) ||
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java
index 9eb99a229..21a0bef5a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java
@@ -154,7 +154,7 @@ public class SelectFormatAPITest extends CoreTestFmwk {
boolean threwException = false;
try {
StringBuffer buf = new StringBuffer("AppendHere-");
- selFmt1.format(Integer.valueOf(0), buf, new FieldPosition(0));
+ selFmt1.format(0, buf, new FieldPosition(0));
} catch (IllegalArgumentException e) {
threwException = true;
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java
index 0fc41b23b..a1c867886 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java
@@ -157,7 +157,7 @@ public class TestMessageFormat extends CoreTestFmwk {
public void TestPattern() // aka PatternTest()
{
Object testArgs[] = {
- new Double(1), new Double(3456),
+ 1d, 3456d,
"Disk", new Date(1000000000L)
};
String testCases[] = {
@@ -275,7 +275,7 @@ public class TestMessageFormat extends CoreTestFmwk {
public void TestStaticFormat()
{
Object arguments[] = {
- new Integer(7),
+ 7,
new Date(871068000000L),
"a disturbance in the Force"
};
@@ -291,9 +291,9 @@ public class TestMessageFormat extends CoreTestFmwk {
@Test
public void TestSimpleFormat()
{
- Object testArgs1[] = {new Integer(0), "MyDisk"};
- Object testArgs2[] = {new Integer(1), "MyDisk"};
- Object testArgs3[] = {new Integer(12), "MyDisk"};
+ Object testArgs1[] = {0, "MyDisk"};
+ Object testArgs2[] = {1, "MyDisk"};
+ Object testArgs3[] = {12, "MyDisk"};
MessageFormat form = new MessageFormat(
"The disk \"{1}\" contains {0} file(s).");
@@ -329,21 +329,21 @@ public class TestMessageFormat extends CoreTestFmwk {
FieldPosition ignore = new FieldPosition(FieldPosition_DONT_CARE);
StringBuffer string = new StringBuffer();
- Object testArgs1[] = {new Integer(0), "MyDisk"};
+ Object testArgs1[] = {0, "MyDisk"};
form.format(testArgs1, string, ignore);
assertEquals("format#1",
"The disk \"MyDisk\" contains no files.",
string.toString());
string.setLength(0);
- Object testArgs2[] = {new Integer(1), "MyDisk"};
+ Object testArgs2[] = {1, "MyDisk"};
form.format(testArgs2, string, ignore);
assertEquals("format#2",
"The disk \"MyDisk\" contains one file.",
string.toString());
string.setLength(0);
- Object testArgs3[] = {new Integer(1273), "MyDisk"};
+ Object testArgs3[] = {1273, "MyDisk"};
form.format(testArgs3, string, ignore);
assertEquals("format#3",
"The disk \"MyDisk\" contains 1,273 files.",
@@ -437,7 +437,7 @@ public class TestMessageFormat extends CoreTestFmwk {
public void TestSetLocale()
{
Object arguments[] = {
- new Double(456.83),
+ 456.83d,
new Date(871068000000L),
"deposit"
};
@@ -822,9 +822,9 @@ public class TestMessageFormat extends CoreTestFmwk {
final Object ARGS[] = {
new Date(10000000000000L),
- new Integer(1303),
- new Integer(1202),
- new Double(1303.0/1202 - 1),
+ 1303,
+ 1202,
+ 1303.0d/1202 - 1,
"Glimmung",
"the printers",
"Nick",
@@ -906,7 +906,7 @@ public class TestMessageFormat extends CoreTestFmwk {
public void TestSetGetFormats()
{
Object arguments[] = {
- new Double(456.83),
+ 456.83d,
new Date(871068000000L),
"deposit"
};
@@ -1122,7 +1122,7 @@ public class TestMessageFormat extends CoreTestFmwk {
gotException = false;
try {
- Object args[] = {new Long(42)};
+ Object args[] = {42L};
msg.format(args, new StringBuffer(), new FieldPosition(FieldPosition_DONT_CARE));
} catch (IllegalArgumentException e) {
gotException = true;
@@ -1135,7 +1135,7 @@ public class TestMessageFormat extends CoreTestFmwk {
gotException = false;
try {
- Object args[] = {new Long(42)};
+ Object args[] = {42L};
msg.format((Object) args, new StringBuffer(), new FieldPosition(FieldPosition_DONT_CARE));
} catch (IllegalArgumentException e) {
gotException = true;
@@ -1293,7 +1293,7 @@ public class TestMessageFormat extends CoreTestFmwk {
"{0, plural, one {{0, number,C''est #,##0.0# fichier}} " +
"other {Ce sont # fichiers}} dans la liste.",
new ULocale("fr"));
- Object objArray[] = {new Long(0)};
+ Object objArray[] = {0L};
HashMap objMap = new HashMap();
objMap.put("argument", objArray[0]);
String result = msgFmt.format(objArray);
@@ -1318,7 +1318,7 @@ public class TestMessageFormat extends CoreTestFmwk {
"{argument, plural, one{C''est # fichier} other {Ce " +
"sont # fichiers}} dans la liste.",
new ULocale("fr"));
- Object objArray[] = {new Long(0)};
+ Object objArray[] = {0L};
HashMap objMap = new HashMap();
objMap.put("argument", objArray[0]);
String result = mfNum.format(objArray);
@@ -1341,7 +1341,7 @@ public class TestMessageFormat extends CoreTestFmwk {
"are {argument, number,###.0} zavoda} other{are # " +
"zavodov}} in the directory.",
new ULocale("uk"));
- Object objArray[] = {new Long(4)};
+ Object objArray[] = {4L};
HashMap objMap = new HashMap();
objMap.put("argument", objArray[0]);
String result = mfNum.format(objArray);
@@ -1590,7 +1590,7 @@ public class TestMessageFormat extends CoreTestFmwk {
dateFormat.setTimeZone(TimeZone.getTimeZone("Etc/GMT"));
ms.setFormatByArgumentName("date", dateFormat);
Map map = new HashMap();
- map.put("number", new Integer(1234));
+ map.put("number", 1234);
map.put("date", new Date(0,0,0));
String result = ms.format(map);
assertEquals("setFormatByArgumentName", "1234.000 year:99 month:12 day:31", result);
@@ -1620,15 +1620,15 @@ public class TestMessageFormat extends CoreTestFmwk {
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
msgfmts[2].setFormat(0, fileform);
- Object[] args0 = new Object[] { "tmp", new Date(1184777888000L), new Integer(15), new Integer(2) };
+ Object[] args0 = new Object[] { "tmp", new Date(1184777888000L), 15, 2 };
HashMap args1 = new HashMap();
args1.put("arg0", "tmp");
args1.put("arg1", new Date(1184777888000L));
- args1.put("arg2", new Integer(15));
- args1.put("arg3", new Integer(2));
+ args1.put("arg2", 15);
+ args1.put("arg3", 2);
- Object[] args2 = new Object[] { new Integer(34) };
+ Object[] args2 = new Object[] { 34 };
Object[] args = { args0, args1, args2 };
@@ -1641,18 +1641,18 @@ public class TestMessageFormat extends CoreTestFmwk {
new AttributedString(expectedStrings[1]), new AttributedString(expectedStrings[2]) };
// Add expected attributes to the expectedAttributedStrings[0]
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(3), 4, 7);
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(0), 16, 19);
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(2), 30, 32);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 3, 4, 7);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 0, 16, 19);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 2, 30, 32);
expectedAttributedStrings[0].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 30, 32);
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(1), 53, 63);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 1, 53, 63);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.HOUR1, DateFormat.Field.HOUR1, 53, 54);
//expectedAttributedStrings[0].addAttribute(DateFormat.Field.TIME_SEPARATOR, DateFormat.Field.TIME_SEPARATOR, 54, 55);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.MINUTE, DateFormat.Field.MINUTE, 55, 57);
//expectedAttributedStrings[0].addAttribute(DateFormat.Field.TIME_SEPARATOR, DateFormat.Field.TIME_SEPARATOR, 57, 58);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.SECOND, DateFormat.Field.SECOND, 58, 60);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.AM_PM, DateFormat.Field.AM_PM, 61, 63);
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(1), 67, 79);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 1, 67, 79);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.MONTH, DateFormat.Field.MONTH, 67, 70);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.DAY_OF_MONTH, DateFormat.Field.DAY_OF_MONTH, 71, 73);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.YEAR, DateFormat.Field.YEAR, 75, 79);
@@ -1675,7 +1675,7 @@ public class TestMessageFormat extends CoreTestFmwk {
expectedAttributedStrings[1].addAttribute(DateFormat.Field.YEAR, DateFormat.Field.YEAR, 75, 79);
// Add expected attributes to the expectedAttributedStrings[2]
- expectedAttributedStrings[2].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(0), 20, 28);
+ expectedAttributedStrings[2].addAttribute(MessageFormat.Field.ARGUMENT, 0, 20, 28);
expectedAttributedStrings[2].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 20, 22);
for (int i = 0; i < msgfmts.length; i++) {
@@ -1880,7 +1880,7 @@ public class TestMessageFormat extends CoreTestFmwk {
m.applyPattern("x { _oOo_ , number , integer } y");
Map<String, Object> map = new HashMap<String, Object>();
- map.put("_oOo_", new Integer(3));
+ map.put("_oOo_", 3);
StringBuffer result = new StringBuffer();
assertEquals("trim-named-arg format() failed", "x 3 y",
m.format(map, result, new FieldPosition(FieldPosition_DONT_CARE)).toString());
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java
index 64bad3f66..4aaefdb36 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java
@@ -405,7 +405,7 @@ public class TimeUnitTest extends CoreTestFmwk {
public void TestFormat() {
TimeUnitFormat tuf = new TimeUnitFormat();
try {
- tuf.format(new Integer("1"), null, null);
+ tuf.format(Integer.parseInt("1"), null, null);
errln("TimeUnitFormat.format(Object,StringBuffer,FieldPosition) "
+ "was suppose to return an exception because the Object "
+ "parameter was not of type TimeUnitAmount.");
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java
index f9c24e623..fc25a15ff 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java
@@ -277,8 +277,7 @@ public class TimeZoneFormatTest extends CoreTestFmwk {
}
} else {
// Specific or generic: raw offset must be preserved.
- if (inOffsets[0] != outOffsets[0] && !(LOCALES[locidx].getName().startsWith("ku") && tzids[tzidx].equals("America/Miquelon")
- && logKnownIssue("CLDR-17024", "TestTimeZoneRoundTrip exhaust. fail with tz=America/Miquelon, locale=ku"))) {
+ if (inOffsets[0] != outOffsets[0] ) {
if (JDKTZ && tzids[tzidx].startsWith("SystemV/")) {
// JDK uses rule SystemV for these zones while
// ICU handles these zones as aliases of existing time zones
@@ -429,13 +428,6 @@ public class TimeZoneFormatTest extends CoreTestFmwk {
continue;
}
- if ((id.equals("America/Miquelon") || id.equals("America/Hermosillo") || id.equals("America/Mazatlan"))
- && PATTERNS[patidx].equals("v")
- && LOCALES[locidx].getName().startsWith("ku")
- && logKnownIssue("CLDR-17024", "TestTimeRoundTrip fail with tz=America/Miquelon, pattern=v, locale=ku")) {
- continue;
- }
-
BasicTimeZone btz = (BasicTimeZone)TimeZone.getTimeZone(id, TimeZone.TIMEZONE_ICU);
TimeZone tz = TimeZone.getTimeZone(id);
sdf.setTimeZone(tz);
@@ -546,10 +538,10 @@ public class TimeZoneFormatTest extends CoreTestFmwk {
// These special cases do not round trip time as designed.
private boolean isSpecialTimeRoundTripCase(ULocale loc, String id, String pattern, long time) {
final Object[][] EXCLUSIONS = {
- {null, "Asia/Chita", "zzzz", Long.valueOf(1414252800000L)},
- {null, "Asia/Chita", "vvvv", Long.valueOf(1414252800000L)},
- {null, "Asia/Srednekolymsk", "zzzz", Long.valueOf(1414241999999L)},
- {null, "Asia/Srednekolymsk", "vvvv", Long.valueOf(1414241999999L)},
+ {null, "Asia/Chita", "zzzz", 1414252800000L},
+ {null, "Asia/Chita", "vvvv", 1414252800000L},
+ {null, "Asia/Srednekolymsk", "zzzz", 1414241999999L},
+ {null, "Asia/Srednekolymsk", "vvvv", 1414241999999L},
};
boolean isExcluded = false;
for (Object[] excl : EXCLUSIONS) {
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/impl/UnitsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/impl/UnitsTest.java
index b2ae37914..812b128a8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/impl/UnitsTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/impl/UnitsTest.java
@@ -282,6 +282,9 @@ public class UnitsTest {
new TestData("percent", "portion", UnitsConverter.Convertibility.CONVERTIBLE),
new TestData("ofhg", "kilogram-per-square-meter-square-second", UnitsConverter.Convertibility.CONVERTIBLE),
new TestData("second-per-meter", "meter-per-second", UnitsConverter.Convertibility.RECIPROCAL),
+ new TestData("mile-per-hour", "meter-per-second", UnitsConverter.Convertibility.CONVERTIBLE),
+ new TestData("knot", "meter-per-second", UnitsConverter.Convertibility.CONVERTIBLE),
+ new TestData("beaufort", "meter-per-second", UnitsConverter.Convertibility.CONVERTIBLE),
};
ConversionRates conversionRates = new ConversionRates();
@@ -395,6 +398,8 @@ public class UnitsTest {
new TestCase("cubic-meter-per-kilogram", "specific-volume"),
new TestCase("meter-per-second", "speed"),
new TestCase("second-per-meter", "speed"),
+ new TestCase("knot", "speed"),
+ new TestCase("beaufort", "speed"),
new TestCase("mile-per-gallon", "consumption"),
new TestCase("liter-per-100-kilometer", "consumption"),
new TestCase("cubic-meter-per-meter", "consumption"),
@@ -450,6 +455,19 @@ public class UnitsTest {
new TestData("ton", "pound", 1.0, 2000),
new TestData("stone", "pound", 1.0, 14),
new TestData("stone", "kilogram", 1.0, 6.35029),
+ // Speed
+ new TestData("mile-per-hour", "meter-per-second", 1.0, 0.44704),
+ new TestData("knot", "meter-per-second", 1.0, 0.514444),
+ new TestData("beaufort", "meter-per-second", 1.0, 0.95),
+ new TestData("beaufort", "meter-per-second", 4.0, 6.75),
+ new TestData("beaufort", "meter-per-second", 7.0, 15.55),
+ new TestData("beaufort", "meter-per-second", 10.0, 26.5),
+ new TestData("beaufort", "meter-per-second", 13.0, 39.15),
+ new TestData("beaufort", "mile-per-hour", 1.0, 2.12509),
+ new TestData("beaufort", "mile-per-hour", 4.0, 15.099319971367215),
+ new TestData("beaufort", "mile-per-hour", 7.0, 34.784359341445956),
+ new TestData("beaufort", "mile-per-hour", 10.0, 59.2788),
+ new TestData("beaufort", "mile-per-hour", 13.0, 87.5761),
// Temperature
new TestData("celsius", "fahrenheit", 0.0, 32.0),
new TestData("celsius", "fahrenheit", 10.0, 50.0),
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java
index bdac4269a..3aff77aed 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java
@@ -340,6 +340,8 @@ public class TestUScript extends CoreTestFmwk {
"Cypro_Minoan", "Old_Uyghur", "Tangsa", "Toto", "Vithkuqi",
// new in ICU 72
"Kawi", "Nag_Mundari",
+ // new in ICU 75
+ "Aran",
};
String[] expectedShort = new String[]{
"Bali", "Batk", "Blis", "Brah", "Cham", "Cirt", "Cyrs", "Egyd", "Egyh", "Egyp",
@@ -380,6 +382,8 @@ public class TestUScript extends CoreTestFmwk {
"Cpmn", "Ougr", "Tnsa", "Toto", "Vith",
// new in ICU 72
"Kawi", "Nagm",
+ // new in ICU 75
+ "Aran",
};
if(expectedLong.length!=(UScript.CODE_LIMIT-UScript.BALINESE)) {
errln("need to add new script codes in lang.TestUScript.java!");
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java
index e40e19c4e..ce596ccb4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java
@@ -99,8 +99,8 @@ public final class UCharacterCompare
if (UCharacter.toLowerCase(i) != Character.toLowerCase(i))
trackDifference(p, i, "toLowerCase()", Integer.toHexString(UCharacter.toLowerCase(i)), Integer
.toHexString(Character.toLowerCase(i)));
- if (!UCharacter.toString(i).equals(new Character(i).toString()))
- trackDifference(p, i, "toString()", UCharacter.toString(i), new Character(i).toString());
+ if (!UCharacter.toString(i).equals(Character.valueOf(i).toString()))
+ trackDifference(p, i, "toString()", UCharacter.toString(i), Character.valueOf(i).toString());
if (UCharacter.toTitleCase(i) != Character.toTitleCase(i))
trackDifference(p, i, "toTitleCase()", Integer.toHexString(UCharacter.toTitleCase(i)), Integer
.toHexString(Character.toTitleCase(i)));
@@ -212,9 +212,9 @@ public final class UCharacterCompare
throws Exception {
if (m_hashtable_.containsKey(method)) {
Integer value = m_hashtable_.get(method);
- m_hashtable_.put(method, new Integer(value.intValue() + 1));
+ m_hashtable_.put(method, value.intValue() + 1);
} else
- m_hashtable_.put(method, new Integer(1));
+ m_hashtable_.put(method, 1);
String temp = Integer.toHexString(ch);
StringBuffer s = new StringBuffer(temp);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java
index 4e23ec1bc..d72891365 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java
@@ -13,6 +13,7 @@ package android.icu.dev.test.lang;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Arrays;
+import java.util.EnumSet;
import java.util.Locale;
import org.junit.Test;
@@ -29,6 +30,8 @@ import android.icu.impl.UCharacterName;
import android.icu.impl.Utility;
import android.icu.lang.CharacterProperties;
import android.icu.lang.UCharacter;
+import android.icu.lang.UCharacter.IdentifierStatus;
+import android.icu.lang.UCharacter.IdentifierType;
import android.icu.lang.UCharacterCategory;
import android.icu.lang.UCharacterDirection;
import android.icu.lang.UCharacterEnums;
@@ -4056,4 +4059,159 @@ public final class UCharacterTest extends CoreTestFmwk
assertTrue("idcmStart.contains(U+1D7C3)", idcmStart.contains(0x1D7C3));
assertFalse("idcmStart.contains(U+1D7C4)", idcmStart.contains(0x1D7C4));
}
+
+ private static final IdentifierStatus[] ID_STATUS_VALUES = IdentifierStatus.values();
+
+ private static IdentifierStatus getIDStatus(int c) {
+ int idStatusInt = UCharacter.getIntPropertyValue(c, UProperty.IDENTIFIER_STATUS);
+ return ID_STATUS_VALUES[idStatusInt];
+ }
+
+ @Test
+ public void TestIDStatus() {
+ assertEquals("ID_Status(slash)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x2F));
+ assertEquals("ID_Status(digit 0)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x30));
+ assertEquals("ID_Status(colon)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x3A));
+ assertEquals("ID_Status(semicolon)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x3B));
+ assertEquals("ID_Status(Greek small alpha)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x03B1));
+ assertEquals("ID_Status(Greek small archaic koppa)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x03D9));
+ assertEquals("ID_Status(Hangul syllable)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0xAC00));
+ assertEquals("ID_Status(surrogate)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0xD800));
+ assertEquals("ID_Status(Arabic tail fragment)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0xFE73));
+ assertEquals("ID_Status(Hentaigana ko-3)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x1B03A));
+ assertEquals("ID_Status(Katakana small ko)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x1B155));
+ assertEquals("ID_Status(U+2EE5D)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x2EE5D));
+ assertEquals("ID_Status(U+10FFFF)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x10FFFF));
+
+ // Property names work and get the correct sets.
+ UnicodeSet idStatus = new UnicodeSet("[:Identifier_Status=Allowed:]");
+ // Unicode 15.1: 112778 Allowed characters; normally grows over time
+ assertTrue("Allowed number of characters", idStatus.size() >= 112778);
+ assertFalse("Allowed.contains(slash)", idStatus.contains(0x2F));
+ assertTrue("Allowed.contains(digit 0)", idStatus.contains(0x30));
+ assertTrue("Allowed.contains(colon)", idStatus.contains(0x3A));
+ assertFalse("Allowed.contains(semicolon)", idStatus.contains(0x3B));
+ assertTrue("Allowed.contains(Greek small alpha)", idStatus.contains(0x03B1));
+ assertFalse("Allowed.contains(Greek small archaic koppa)", idStatus.contains(0x03D9));
+ assertTrue("Allowed.contains(Hangul syllable)", idStatus.contains(0xAC00));
+ assertFalse("Allowed.contains(surrogate)", idStatus.contains(0xD800));
+ assertFalse("Allowed.contains(Arabic tail fragment)", idStatus.contains(0xFE73));
+ assertFalse("Allowed.contains(Hentaigana ko-3)", idStatus.contains(0x1B03A));
+ assertTrue("Allowed.contains(Katakana small ko)", idStatus.contains(0x1B155));
+ assertTrue("Allowed.contains(U+2EE5D)", idStatus.contains(0x2EE5D));
+ assertFalse("Allowed.contains(U+10FFFF)", idStatus.contains(0x10FFFF));
+ }
+
+ private static final IdentifierType[] ID_TYPE_VALUES = IdentifierType.values();
+
+ private EnumSet<IdentifierType> getIDTypes(int c) {
+ EnumSet<IdentifierType> types =
+ EnumSet.of(IdentifierType.NOT_CHARACTER, IdentifierType.RECOMMENDED);
+ int length = UCharacter.getIdentifierTypes(c, types);
+ assertEquals(
+ String.format("getIdentifierTypes(U+%04x) length vs. set.size()", c),
+ length, types.size());
+ // Check that hasIdentifierType() agrees.
+ for (IdentifierType t : ID_TYPE_VALUES) {
+ boolean expected = types.contains(t);
+ boolean actual = UCharacter.hasIdentifierType(c, t);
+ assertEquals(
+ String.format("getIdentifierTypes(U+%04x).contains(%s) vs. hasIdentifierType()",
+ c, t),
+ expected, actual);
+ }
+ return types;
+ }
+
+ @Test
+ public void TestIDType() {
+ // Note: Types other than Recommended and Inclusion may well change over time.
+ assertEquals("ID_Type(slash)", EnumSet.of(IdentifierType.NOT_XID), getIDTypes(0x2F));
+ assertEquals("ID_Type(digit 0)", EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0x30));
+ assertEquals("ID_Type(colon)", EnumSet.of(IdentifierType.INCLUSION), getIDTypes(0x3A));
+ assertEquals("ID_Type(semicolon)", EnumSet.of(IdentifierType.NOT_XID), getIDTypes(0x3B));
+ assertEquals("ID_Type(Greek small alpha)",
+ EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0x03B1));
+ assertEquals("ID_Type(Greek small archaic koppa)",
+ EnumSet.of(IdentifierType.OBSOLETE), getIDTypes(0x03D9));
+ assertEquals("ID_Type(Hangul syllable)",
+ EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0xAC00));
+ assertEquals("ID_Type(surrogate)",
+ EnumSet.of(IdentifierType.NOT_CHARACTER), getIDTypes(0xD800));
+ assertEquals("ID_Type(Arabic tail fragment)",
+ EnumSet.of(IdentifierType.TECHNICAL), getIDTypes(0xFE73));
+ assertEquals("ID_Type(Linear B syllable)",
+ EnumSet.of(IdentifierType.EXCLUSION), getIDTypes(0x10000));
+ assertEquals("ID_Type(Hentaigana ko-3)",
+ EnumSet.of(IdentifierType.OBSOLETE), getIDTypes(0x1B03A));
+ assertEquals("ID_Type(Katakana small ko)",
+ EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0x1B155));
+ assertEquals("ID_Type(U+2EE5D)",
+ EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0x2EE5D));
+ assertEquals("ID_Type(U+10FFFF)",
+ EnumSet.of(IdentifierType.NOT_CHARACTER), getIDTypes(0x10FFFF));
+
+ assertEquals("ID_Type(CYRILLIC THOUSANDS SIGN)",
+ EnumSet.of(IdentifierType.NOT_XID, IdentifierType.OBSOLETE),
+ getIDTypes(0x0482));
+ assertEquals("ID_Type(SYRIAC FEMININE DOT)",
+ EnumSet.of(IdentifierType.TECHNICAL, IdentifierType.LIMITED_USE),
+ getIDTypes(0x0740));
+ assertEquals("ID_Type(NKO LETTER JONA JA)",
+ EnumSet.of(IdentifierType.OBSOLETE, IdentifierType.LIMITED_USE),
+ getIDTypes(0x07E8));
+ assertEquals("ID_Type(SYRIAC END OF PARAGRAPH)",
+ EnumSet.of(IdentifierType.NOT_XID, IdentifierType.LIMITED_USE),
+ getIDTypes(0x0700));
+ assertEquals("ID_Type(LATIN SMALL LETTER EZH)=",
+ EnumSet.of(IdentifierType.TECHNICAL, IdentifierType.UNCOMMON_USE),
+ getIDTypes(0x0292));
+ assertEquals("ID_Type(MUSICAL SYMBOL KIEVAN C CLEF)",
+ EnumSet.of(IdentifierType.NOT_XID, IdentifierType.TECHNICAL,
+ IdentifierType.UNCOMMON_USE),
+ getIDTypes(0x1D1DE));
+ assertEquals("ID_Type(MRO LETTER TA)",
+ EnumSet.of(IdentifierType.EXCLUSION, IdentifierType.UNCOMMON_USE),
+ getIDTypes(0x16A40));
+ assertEquals("ID_Type(GREEK MUSICAL LEIMMA)",
+ EnumSet.of(IdentifierType.NOT_XID, IdentifierType.OBSOLETE),
+ getIDTypes(0x1D245));
+
+ // Property names work and get the correct sets.
+ UnicodeSet rec = new UnicodeSet("[:Identifier_Type=Recommended:]");
+ UnicodeSet incl = new UnicodeSet("[:Identifier_Type=Inclusion:]");
+ UnicodeSet limited = new UnicodeSet("[:Identifier_Type=Limited_Use:]");
+ UnicodeSet uncommon = new UnicodeSet("[:Identifier_Type=Uncommon_Use:]");
+ UnicodeSet notChar = new UnicodeSet("[:Identifier_Type=Not_Character:]");
+ // Unicode 15.1 set sizes; normally grows over time except Not_Character shrinks
+ assertTrue("Recommended number of characters", rec.size() >= 112761);
+ assertTrue("Inclusion number of characters", incl.size() >= 17);
+ assertTrue("Limited_Use number of characters", limited.size() >= 5268);
+ assertTrue("Uncommon_Use number of characters", uncommon.size() >= 398);
+ assertTrue("Not_Character number of characters",
+ 800000 <= notChar.size() && notChar.size() <= 964293);
+ assertFalse("Recommended.contains(slash)", rec.contains(0x2F));
+ assertTrue("Recommended.contains(digit 0)", rec.contains(0x30));
+ assertTrue("Inclusion.contains(colon)", incl.contains(0x3A));
+ assertTrue("Recommended.contains(U+2EE5D)", rec.contains(0x2EE5D));
+ assertTrue("Limited_Use.contains(SYRIAC FEMININE DOT)", limited.contains(0x0740));
+ assertTrue("Limited_Use.contains(NKO LETTER JONA JA)", limited.contains(0x7E8));
+ assertTrue("Not_Character.contains(surrogate)", notChar.contains(0xd800));
+ assertTrue("Not_Character.contains(U+10FFFF)", notChar.contains(0x10FFFF));
+ assertTrue("Uncommon_Use.contains(LATIN SMALL LETTER EZH)", uncommon.contains(0x0292));
+ assertTrue("Uncommon_Use.contains(MUSICAL SYMBOL KIEVAN C CLEF)", uncommon.contains(0x1D1DE));
+
+ // More mutually exclusive types, including some otherwise combinable ones.
+ UnicodeSet dep = new UnicodeSet("[:Identifier_Type=Deprecated:]");
+ UnicodeSet di = new UnicodeSet("[:Identifier_Type=Default_Ignorable:]");
+ UnicodeSet notNFKC = new UnicodeSet("[:Identifier_Type=Not_NFKC:]");
+ UnicodeSet excl = new UnicodeSet("[:Identifier_Type=Exclusion:]");
+ UnicodeSet allExclusive = new UnicodeSet();
+ allExclusive.addAll(rec).addAll(incl).addAll(limited).addAll(excl).
+ addAll(notNFKC).addAll(di).addAll(dep).addAll(notChar);
+ assertEquals("num chars in mutually exclusive types",
+ rec.size() + incl.size() + limited.size() + excl.size() +
+ notNFKC.size() + di.size() + dep.size() + notChar.size(),
+ allExclusive.size());
+ }
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java
index c108d1d8f..35a6fdc11 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java
@@ -844,17 +844,7 @@ public class UnicodeSetTest extends CoreTestFmwk {
}
}
}
-
- static final Integer
- I_ANY = new Integer(SortedSetRelation.ANY),
- I_CONTAINS = new Integer(SortedSetRelation.CONTAINS),
- I_DISJOINT = new Integer(SortedSetRelation.DISJOINT),
- I_NO_B = new Integer(SortedSetRelation.NO_B),
- I_ISCONTAINED = new Integer(SortedSetRelation.ISCONTAINED),
- I_EQUALS = new Integer(SortedSetRelation.EQUALS),
- I_NO_A = new Integer(SortedSetRelation.NO_A),
- I_NONE = new Integer(SortedSetRelation.NONE);
-
+
@Test
public void TestSetRelation() {
@@ -888,8 +878,8 @@ public class UnicodeSetTest extends CoreTestFmwk {
SortedSet jset = new TreeSet();
for (int i = 0; i < size*2; i += 2) { // only even values
- iset.add(new Integer(i));
- jset.add(new Integer(i));
+ iset.add(i);
+ jset.add(i);
}
int iterations = 1000000 / size;
@@ -899,12 +889,12 @@ public class UnicodeSetTest extends CoreTestFmwk {
CheckSpeed(iset, jset, "when a = b", iterations);
- iset.add(new Integer(size + 1)); // add odd value in middle
+ iset.add(size + 1); // add odd value in middle
CheckSpeed(iset, jset, "when a contains b", iterations);
CheckSpeed(jset, iset, "when b contains a", iterations);
- jset.add(new Integer(size - 1)); // add different odd value in middle
+ jset.add(size - 1); // add different odd value in middle
CheckSpeed(jset, iset, "when a, b are disjoint", iterations);
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/Args.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/Args.java
index 5724b2c3e..297ab4234 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/Args.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/Args.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CoreTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CoreTest.java
new file mode 100644
index 000000000..397dc20d1
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CoreTest.java
@@ -0,0 +1,31 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.io.Reader;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.testsharding.MainTestShard;
+
+@MainTestShard
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class CoreTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "test-core.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Unit[] unitList = TestUtils.GSON.fromJson(reader, Unit[].class);
+ for (Unit unit : unitList) {
+ TestUtils.runTestCase(unit);
+ }
+ }
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java
index 4b8d515aa..105a87a08 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
@@ -15,8 +15,8 @@ import android.icu.dev.test.CoreTestFmwk;
import android.icu.message2.FormattedPlaceholder;
import android.icu.message2.Formatter;
import android.icu.message2.FormatterFactory;
+import android.icu.message2.MFFunctionRegistry;
import android.icu.message2.MessageFormatter;
-import android.icu.message2.Mf2FunctionRegistry;
import android.icu.message2.PlainStringFormattedValue;
import android.icu.testsharding.MainTestShard;
@@ -25,7 +25,7 @@ import android.icu.testsharding.MainTestShard;
*/
@MainTestShard
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
static class GrammarCasesFormatterFactory implements FormatterFactory {
@@ -45,14 +45,18 @@ public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
// Romanian naive and incomplete rules, just to make things work for testing.
private static String getDativeAndGenitive(String value) {
- if (value.endsWith("ana"))
+ if (value.endsWith("ana")) {
return value.substring(0, value.length() - 3) + "nei";
- if (value.endsWith("ca"))
+ }
+ if (value.endsWith("ca")) {
return value.substring(0, value.length() - 2) + "căi";
- if (value.endsWith("ga"))
+ }
+ if (value.endsWith("ga")) {
return value.substring(0, value.length() - 2) + "găi";
- if (value.endsWith("a"))
+ }
+ if (value.endsWith("a")) {
return value.substring(0, value.length() - 1) + "ei";
+ }
return "lui " + value;
}
@@ -83,10 +87,9 @@ public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue(result));
}
}
-
}
- static final Mf2FunctionRegistry REGISTRY = Mf2FunctionRegistry.builder()
+ static final MFFunctionRegistry REGISTRY = MFFunctionRegistry.builder()
.setFormatter("grammarBB", new GrammarCasesFormatterFactory())
.build();
@@ -95,7 +98,7 @@ public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
MessageFormatter mf = MessageFormatter.builder()
.setFunctionRegistry(REGISTRY)
.setLocale(Locale.forLanguageTag("ro"))
- .setPattern("{Cartea {$owner :grammarBB case=genitive}}")
+ .setPattern("Cartea {$owner :grammarBB case=genitive}")
.build();
assertEquals("case - genitive", "Cartea Mariei", mf.formatToString(Args.of("owner", "Maria")));
@@ -106,7 +109,7 @@ public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
mf = MessageFormatter.builder()
.setFunctionRegistry(REGISTRY)
.setLocale(Locale.forLanguageTag("ro"))
- .setPattern("{M-a sunat {$owner :grammarBB case=nominative}}")
+ .setPattern("M-a sunat {$owner :grammarBB case=nominative}")
.build();
assertEquals("case - nominative", "M-a sunat Maria", mf.formatToString(Args.of("owner", "Maria")));
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterListTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterListTest.java
index 5eea3295b..7bee14335 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterListTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterListTest.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
@@ -17,7 +17,7 @@ import android.icu.dev.test.CoreTestFmwk;
import android.icu.message2.FormattedPlaceholder;
import android.icu.message2.Formatter;
import android.icu.message2.FormatterFactory;
-import android.icu.message2.Mf2FunctionRegistry;
+import android.icu.message2.MFFunctionRegistry;
import android.icu.message2.PlainStringFormattedValue;
import android.icu.text.ListFormatter;
import android.icu.text.ListFormatter.Type;
@@ -29,7 +29,7 @@ import android.icu.testsharding.MainTestShard;
*/
@MainTestShard
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class CustomFormatterListTest extends CoreTestFmwk {
static class ListFormatterFactory implements FormatterFactory {
@@ -74,26 +74,22 @@ public class CustomFormatterListTest extends CoreTestFmwk {
}
}
- static final Mf2FunctionRegistry REGISTRY = Mf2FunctionRegistry.builder()
+ static final MFFunctionRegistry REGISTRY = MFFunctionRegistry.builder()
.setFormatter("listformat", new ListFormatterFactory())
.build();
@Test
public void test() {
- String [] progLanguages = {
- "C/C++",
- "Java",
- "Python"
- };
+ String[] progLanguages = {"C/C++", "Java", "Python"};
TestUtils.runTestCase(REGISTRY, new TestCase.Builder()
- .pattern("{I know {$languages :listformat type=AND}!}")
+ .pattern("I know {$languages :listformat type=AND}!")
.arguments(Args.of("languages", progLanguages))
.expected("I know C/C++, Java, and Python!")
.build());
TestUtils.runTestCase(REGISTRY, new TestCase.Builder()
- .pattern("{You are allowed to use {$languages :listformat type=OR}!}")
+ .pattern("You are allowed to use {$languages :listformat type=OR}!")
.arguments(Args.of("languages", Arrays.asList(progLanguages)))
.expected("You are allowed to use C/C++, Java, or Python!")
.build());
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterMessageRefTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterMessageRefTest.java
index d9f8ad043..e45db8f5f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterMessageRefTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterMessageRefTest.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
@@ -17,8 +17,8 @@ import android.icu.dev.test.CoreTestFmwk;
import android.icu.message2.FormattedPlaceholder;
import android.icu.message2.Formatter;
import android.icu.message2.FormatterFactory;
+import android.icu.message2.MFFunctionRegistry;
import android.icu.message2.MessageFormatter;
-import android.icu.message2.Mf2FunctionRegistry;
import android.icu.message2.PlainStringFormattedValue;
import android.icu.testsharding.MainTestShard;
@@ -30,7 +30,7 @@ import android.icu.testsharding.MainTestShard;
*/
@MainTestShard
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class CustomFormatterMessageRefTest extends CoreTestFmwk {
static class ResourceManagerFactory implements FormatterFactory {
@@ -43,6 +43,7 @@ public class CustomFormatterMessageRefTest extends CoreTestFmwk {
static class ResourceManagerFactoryImpl implements Formatter {
final Map<String, Object> options;
+ @SuppressWarnings("unused")
ResourceManagerFactoryImpl(Locale locale, Map<String, Object> options) {
this.options = options;
}
@@ -59,8 +60,8 @@ public class CustomFormatterMessageRefTest extends CoreTestFmwk {
Properties props = (Properties) oProps;
Object msg = props.get(toFormat.toString());
MessageFormatter mf = MessageFormatter.builder()
- .setPattern(msg.toString())
- .build();
+ .setPattern(msg.toString())
+ .build();
result = mf.formatToString(options);
}
return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue(result));
@@ -73,17 +74,17 @@ public class CustomFormatterMessageRefTest extends CoreTestFmwk {
}
}
- static final Mf2FunctionRegistry REGISTRY = Mf2FunctionRegistry.builder()
+ static final MFFunctionRegistry REGISTRY = MFFunctionRegistry.builder()
.setFormatter("msgRef", new ResourceManagerFactory())
.build();
static final Properties PROPERTIES = new Properties();
@BeforeClass
- static public void beforeClass() {
- PROPERTIES.put("firefox", "match {$gcase :select} when genitive {Firefoxin} when * {Firefox}");
- PROPERTIES.put("chrome", "match {$gcase :select} when genitive {Chromen} when * {Chrome}");
- PROPERTIES.put("safari", "match {$gcase :select} when genitive {Safarin} when * {Safari}");
+ public static void beforeClass() {
+ PROPERTIES.put("firefox", ".match {$gcase :string} genitive {{Firefoxin}} * {{Firefox}}");
+ PROPERTIES.put("chrome", ".match {$gcase :string} genitive {{Chromen}} * {{Chrome}}");
+ PROPERTIES.put("safari", ".match {$gcase :string} genitive {{Safarin}} * {{Safari}}");
}
@Test
@@ -110,11 +111,11 @@ public class CustomFormatterMessageRefTest extends CoreTestFmwk {
MessageFormatter mf1 = MessageFormatter.builder()
.setFunctionRegistry(REGISTRY)
- .setPattern("{Please start {$browser :msgRef gcase=genitive resbundle=$res}}")
+ .setPattern("Please start {$browser :msgRef gcase=genitive resbundle=$res}")
.build();
MessageFormatter mf2 = MessageFormatter.builder()
.setFunctionRegistry(REGISTRY)
- .setPattern("{Please start {$browser :msgRef resbundle=$res}}")
+ .setPattern("Please start {$browser :msgRef resbundle=$res}")
.build();
browser.replace(0, browser.length(), "firefox");
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterPersonTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterPersonTest.java
index b0ec8ddac..42e1122cb 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterPersonTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/CustomFormatterPersonTest.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
@@ -16,7 +16,7 @@ import android.icu.dev.test.CoreTestFmwk;
import android.icu.message2.FormattedPlaceholder;
import android.icu.message2.Formatter;
import android.icu.message2.FormatterFactory;
-import android.icu.message2.Mf2FunctionRegistry;
+import android.icu.message2.MFFunctionRegistry;
import android.icu.message2.PlainStringFormattedValue;
import android.icu.testsharding.MainTestShard;
@@ -25,7 +25,7 @@ import android.icu.testsharding.MainTestShard;
*/
@MainTestShard
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class CustomFormatterPersonTest extends CoreTestFmwk {
public static class Person {
@@ -45,7 +45,7 @@ public class CustomFormatterPersonTest extends CoreTestFmwk {
}
}
- public static class PersonNameFormatterFactory implements FormatterFactory {
+ private static class PersonNameFormatterFactory implements FormatterFactory {
@Override
public Formatter createFormatter(Locale locale, Map<String, Object> fixedOptions) {
return new PersonNameFormatterImpl(fixedOptions.get("formality"), fixedOptions.get("length"));
@@ -95,7 +95,7 @@ public class CustomFormatterPersonTest extends CoreTestFmwk {
}
}
- private static final Mf2FunctionRegistry CUSTOM_FUNCTION_REGISTRY = Mf2FunctionRegistry.builder()
+ private static final MFFunctionRegistry CUSTOM_FUNCTION_REGISTRY = MFFunctionRegistry.builder()
.setFormatter("person", new PersonNameFormatterFactory())
.setDefaultFormatterNameForType(Person.class, "person")
.build();
@@ -105,41 +105,39 @@ public class CustomFormatterPersonTest extends CoreTestFmwk {
Person who = new Person("Mr.", "John", "Doe");
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal}}")
+ .pattern("Hello {$name :person formality=formal}")
.arguments(Args.of("name", who))
.expected("Hello {$name}")
- .errors("person function unknown when called without a custom registry")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Hello {$name :person formality=informal}}")
+ .pattern("Hello {$name :person formality=informal}")
.arguments(Args.of("name", who))
.expected("Hello {$name}")
- .errors("person function unknown when called without a custom registry")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal}}")
+ .pattern("Hello {$name :person formality=formal}")
.arguments(Args.of("name", who))
.expected("Hello Mr. Doe")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=informal}}")
+ .pattern("Hello {$name :person formality=informal}")
.arguments(Args.of("name", who))
.expected("Hello John")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal length=long}}")
+ .pattern("Hello {$name :person formality=formal length=long}")
.arguments(Args.of("name", who))
.expected("Hello Mr. John Doe")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal length=medium}}")
+ .pattern("Hello {$name :person formality=formal length=medium}")
.arguments(Args.of("name", who))
.expected("Hello John Doe")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal length=short}}")
+ .pattern("Hello {$name :person formality=formal length=short}")
.arguments(Args.of("name", who))
.expected("Hello Mr. Doe")
.build());
@@ -151,26 +149,26 @@ public class CustomFormatterPersonTest extends CoreTestFmwk {
Person malePerson = new Person("Mr.", "John", "Doe");
Person unknownPerson = new Person("Mr./Ms.", "Anonymous", "Doe");
String message = ""
- + "let $hostName = {$host :person length=long}\n"
- + "let $guestName = {$guest :person length=long}\n"
- + "let $guestsOther = {$guestCount :number offset=1}\n"
+ + ".local $hostName = {$host :person length=long}\n"
+ + ".local $guestName = {$guest :person length=long}\n"
+ + ".local $guestsOther = {$guestCount :number icu:offset=1}\n"
// + "\n"
- + "match {$hostGender :gender} {$guestCount :plural}\n"
+ + ".match {$hostGender :icu:gender} {$guestCount :number}\n"
// + "\n"
- + "when female 0 {{$hostName} does not give a party.}\n"
- + "when female 1 {{$hostName} invites {$guestName} to her party.}\n"
- + "when female 2 {{$hostName} invites {$guestName} and one other person to her party.}\n"
- + "when female * {{$hostName} invites {$guestName} and {$guestsOther} other people to her party.}\n"
+ + " female 0 {{{$hostName} does not give a party.}}\n"
+ + " female 1 {{{$hostName} invites {$guestName} to her party.}}\n"
+ + " female 2 {{{$hostName} invites {$guestName} and one other person to her party.}}\n"
+ + " female * {{{$hostName} invites {$guestName} and {$guestsOther} other people to her party.}}\n"
// + "\n"
- + "when male 0 {{$hostName} does not give a party.}\n"
- + "when male 1 {{$hostName} invites {$guestName} to his party.}\n"
- + "when male 2 {{$hostName} invites {$guestName} and one other person to his party.}\n"
- + "when male * {{$hostName} invites {$guestName} and {$guestsOther} other people to his party.}\n"
+ + " male 0 {{{$hostName} does not give a party.}}\n"
+ + " male 1 {{{$hostName} invites {$guestName} to his party.}}\n"
+ + " male 2 {{{$hostName} invites {$guestName} and one other person to his party.}}\n"
+ + " male * {{{$hostName} invites {$guestName} and {$guestsOther} other people to his party.}}\n"
// + "\n"
- + "when * 0 {{$hostName} does not give a party.}\n"
- + "when * 1 {{$hostName} invites {$guestName} to their party.}\n"
- + "when * 2 {{$hostName} invites {$guestName} and one other person to their party.}\n"
- + "when * * {{$hostName} invites {$guestName} and {$guestsOther} other people to their party.}\n";
+ + " * 0 {{{$hostName} does not give a party.}}\n"
+ + " * 1 {{{$hostName} invites {$guestName} to their party.}}\n"
+ + " * 2 {{{$hostName} invites {$guestName} and one other person to their party.}}\n"
+ + " * * {{{$hostName} invites {$guestName} and {$guestsOther} other people to their party.}}\n";
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
.pattern(message)
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/DataModelErrorsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/DataModelErrorsTest.java
new file mode 100644
index 000000000..b367eb896
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/DataModelErrorsTest.java
@@ -0,0 +1,44 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.google.gson.reflect.TypeToken;
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.message2.MessageFormatter;
+import android.icu.testsharding.MainTestShard;
+
+@MainTestShard
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class DataModelErrorsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "data-model-errors.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Type mapType = new TypeToken<Map<String, String[]>>(){/* not code */}.getType();
+ Map<String, String[]> unitList = TestUtils.GSON.fromJson(reader, mapType);
+ for (Entry<String, String[]> tests : unitList.entrySet()) {
+ for (String pattern : tests.getValue()) {
+ try {
+ MessageFormatter.builder().setPattern(pattern).build().formatToString(null);
+ fail("Undetected errors in '" + tests.getKey() + "': '" + pattern + "'");
+ } catch (Exception e) {
+ // We expected an error, so it's all good
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/FirstReleaseTests.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/FirstReleaseTests.java
new file mode 100644
index 000000000..e7f6dd2e8
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/FirstReleaseTests.java
@@ -0,0 +1,36 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.io.Reader;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.testsharding.MainTestShard;
+
+/*
+ * This is the equivalent of the `FromJsonTest` class in the previous release.
+ * That class was originally a json file, converted to some hard-coded tests in the Java class.
+ * Now that we can use gson for testing we reverted those tests back to json, tested in this class.
+ */
+@MainTestShard
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class FirstReleaseTests extends CoreTestFmwk {
+ private static final String JSON_FILE = "icu-test-previous-release.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Unit[] unitList = TestUtils.GSON.fromJson(reader, Unit[].class);
+ for (Unit unit : unitList) {
+ TestUtils.runTestCase(unit);
+ }
+ }
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/FromJsonTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/FromJsonTest.java
deleted file mode 100644
index b7314016a..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/FromJsonTest.java
+++ /dev/null
@@ -1,425 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package android.icu.dev.test.message2;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import android.icu.dev.test.CoreTestFmwk;
-import android.icu.testsharding.MainTestShard;
-
-/**
- * These tests come from the test suite created for the JavaScript implementation of MessageFormat v2.
- *
- * <p>Original JSON file
- * <a href="https://github.com/messageformat/messageformat/blob/master/packages/mf2-messageformat/src/__fixtures/test-messages.json">here</a>.</p>
- */
-@MainTestShard
-@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
-public class FromJsonTest extends CoreTestFmwk {
-
- static final TestCase[] TEST_CASES = {
- new TestCase.Builder()
- .pattern("{hello}")
- .expected("hello")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(world)}}")
- .expected("hello world")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {()}}")
- .expected("hello ")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {$place}}")
- .arguments(Args.of("place", "world"))
- .expected("hello world")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {$place}}")
- .expected("hello {$place}")
- // errorsJs: ["missing-var"]
- .build(),
- new TestCase.Builder()
- .pattern("{{$one} and {$two}}")
- .arguments(Args.of("one", 1.3, "two", 4.2))
- .expected("1.3 and 4.2")
- .build(),
- new TestCase.Builder()
- .pattern("{{$one} et {$two}}")
- .locale("fr")
- .arguments(Args.of("one", 1.3, "two", 4.2))
- .expected("1,3 et 4,2")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number}}")
- .expected("hello 4.2")
- .build(),
- new TestCase.Builder() // not in the original JSON
- .locale("ar-EG")
- .pattern("{hello {(4.2) :number}}")
- .expected("hello \u0664\u066B\u0662")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(foo) :number}}")
- .expected("hello NaN")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {:number}}")
- .expected("hello NaN")
- // This is different from JS, should be an error.
- .errors("ICU4J: exception.")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number minimumFractionDigits=2}}")
- .expected("hello 4.20")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number minimumFractionDigits=(2)}}")
- .expected("hello 4.20")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number minimumFractionDigits=$foo}}")
- .arguments(Args.of("foo", 2f))
- .expected("hello 4.20")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number minimumFractionDigits=$foo}}")
- .arguments(Args.of("foo", "2"))
- .expected("hello 4.20")
- // errorsJs: ["invalid-type"]
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {(bar)} {bar {$foo}}")
- .expected("bar bar")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {(bar)} {bar {$foo}}")
- .arguments(Args.of("foo", "foo"))
- // expectedJs: "bar foo"
- // It is undefined if we allow arguments to override local variables, or it is an error.
- // And undefined who wins if that happens, the local variable of the argument.
- .expected("bar bar")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {$bar} {bar {$foo}}")
- .arguments(Args.of("bar", "foo"))
- .expected("bar foo")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {$bar :number} {bar {$foo}}")
- .arguments(Args.of("bar", 4.2))
- .expected("bar 4.2")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {$bar :number minimumFractionDigits=2} {bar {$foo}}")
- .arguments(Args.of("bar", 4.2))
- .expected("bar 4.20")
- .build(),
- new TestCase.Builder().ignore("Maybe") // Because minimumFractionDigits=foo
- .pattern("let $foo = {$bar :number minimumFractionDigits=foo} {bar {$foo}}")
- .arguments(Args.of("bar", 4.2))
- .expected("bar 4.2")
- .errors("invalid-type")
- .build(),
- new TestCase.Builder().ignore("Maybe. Function specific behavior.")
- .pattern("let $foo = {$bar :number} {bar {$foo}}")
- .arguments(Args.of("bar", "foo"))
- .expected("bar NaN")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {$bar} let $bar = {$baz} {bar {$foo}}")
- .arguments(Args.of("baz", "foo"))
- // expectedJs: "bar foo"
- // It is currently undefined if a local variable (like $foo)
- // can reference a local variable that was not yet defined (like $bar).
- // That is called hoisting and it is valid in JavaScript or Python.
- // Not allowing that would prevent circular references.
- // https://github.com/unicode-org/message-format-wg/issues/292
- .expected("bar {$bar}")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when (1) {one} when * {other}")
- .pattern("match {$foo :select} when (1) {one} when * {other}")
- .arguments(Args.of("foo", "1"))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo :plural} when 1 {one} when * {other}")
- .arguments(Args.of("foo", "1")) // Should this be error? Plural on string?
- // expectedJs: "one"
- .expected("other")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo :select} when (1) {one} when * {other}")
- .arguments(Args.of("foo", "1"))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when 1 {one} when * {other}")
- .pattern("match {$foo :plural} when 1 {one} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo :plural} when 1 {one} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder().ignore("not possible to put a null in a map")
- .pattern("match {$foo} when 1 {one} when * {other}")
- .arguments(Args.of("foo", null))
- .expected("other")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when 1 {one} when * {other}")
- .pattern("match {$foo :plural} when 1 {one} when * {other}")
- .expected("other")
- .errors("missing-var")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when one {one} when * {other}")
- .pattern("match {$foo :plural} when one {one} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when 1 {=1} when one {one} when * {other}")
- .pattern("match {$foo :plural} when 1 {=1} when one {one} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("=1")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when one {one} when 1 {=1} when * {other}")
- .pattern("match {$foo :plural} when one {one} when 1 {=1} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} {$bar} when one one {one one} when one * {one other} when * * {other}")
- .pattern("match {$foo :plural} {$bar :plural} when one one {one one} when one * {one other} when * * {other}")
- .arguments(Args.of("foo", 1, "bar", 1))
- .expected("one one")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} {$bar} when one one {one one} when one * {one other} when * * {other}")
- .pattern("match {$foo :plural} {$bar :plural} when one one {one one} when one * {one other} when * * {other}")
- .arguments(Args.of("foo", 1, "bar", 2))
- .expected("one other")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} {$bar} when one one {one one} when one * {one other} when * * {other}")
- .pattern("match {$foo :plural} {$bar :plural} when one one {one one} when one * {one other} when * * {other}")
- .arguments(Args.of("foo", 2, "bar", 2))
- .expected("other")
- .build(),
- new TestCase.Builder()
- .patternJs("let $foo = {$bar} match {$foo} when one {one} when * {other}")
- .pattern("let $foo = {$bar} match {$foo :plural} when one {one} when * {other}")
- .arguments(Args.of("bar", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("let $foo = {$bar} match {$foo} when one {one} when * {other}")
- .pattern("let $foo = {$bar} match {$foo :plural} when one {one} when * {other}")
- .arguments(Args.of("bar", 2))
- .expected("other")
- .build(),
- new TestCase.Builder()
- .patternJs("let $bar = {$none} match {$foo} when one {one} when * {{$bar}}")
- .pattern("let $bar = {$none} match {$foo :plural} when one {one} when * {{$bar}}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("let $bar = {$none} match {$foo} when one {one} when * {{$bar}}")
- .pattern("let $bar = {$none :plural} match {$foo} when one {one} when * {{$bar}}")
- .arguments(Args.of("foo", 2))
- .expected("{$bar}")
- .errors("missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("let bar = {(foo)} {{$bar}}")
- .expected("{$bar}")
- .errors("missing-char", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("let $bar {(foo)} {{$bar}}")
- .expected("foo")
- .errors("missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("let $bar = (foo) {{$bar}}")
- .expected("{$bar}")
- .errors("missing-char", "junk-element")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag}}")
- .expected("{+tag}")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag}content}")
- .expected("{+tag}content")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag}content{-tag}}")
- .expected("{+tag}content{-tag}")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{-tag}content}")
- .expected("{-tag}content")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag foo=bar}}")
- .expected("{+tag foo=bar}")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag foo=(foo) bar=$bar}}")
- .arguments(Args.of("bar", "b a r"))
- .expected("{+tag foo=foo bar=(b a r)}")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {(foo) +markup}}")
- .expected("bad {+markup}")
- .errors("extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("{{-tag foo=bar}}")
- .expected("{-tag}")
- .errors("extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("no braces")
- .expected("{no braces}")
- .errors("parse-error", "junk-element")
- .build(),
- new TestCase.Builder()
- .pattern("no braces {$foo}")
- .arguments(Args.of("foo", 2))
- .expected("{no braces {$foo}}")
- .errors("parse-error", "junk-element")
- .build(),
- new TestCase.Builder().ignore("infinite loop!")
- .pattern("{missing end brace")
- .expected("missing end brace")
- .errors("missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("{missing end {$brace")
- .expected("missing end {$brace}")
- .errors("missing-char", "missing-char", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("{extra} content")
- .expected("extra")
- .errors("extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("{empty { }}")
- .expected("empty ")
- // errorsJs: ["parse-error", "junk-element"]
- .build(),
- new TestCase.Builder()
- .pattern("{bad {:}}")
- .expected("bad {:}")
- .errors("empty-token", "missing-func")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {placeholder}}")
- .expected("bad {placeholder}")
- .errors("parse-error", "extra-content", "junk-element")
- .build(),
- new TestCase.Builder()
- .pattern("{no-equal {(42) :number minimumFractionDigits 2}}")
- .expected( "no-equal 42.00")
- .errors("missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {:placeholder option=}}")
- .expected("bad {:placeholder}")
- .errors("empty-token", "missing-func")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {:placeholder option value}}")
- .expected("bad {:placeholder}")
- .errors("missing-char", "missing-func")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {:placeholder option}}")
- .expected("bad {:placeholder}")
- .errors("missing-char", "empty-token", "missing-func")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {$placeholder option}}")
- .expected("bad {$placeholder}")
- .errors("extra-content", "extra-content", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("{no {$placeholder end}")
- .expected("no {$placeholder}")
- .errors("extra-content", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("match {} when * {foo}")
- .expected("foo")
- .errors("parse-error", "bad-selector", "junk-element")
- .build(),
- new TestCase.Builder()
- .pattern("match {+foo} when * {foo}")
- .expected("foo")
- .errors("bad-selector")
- .build(),
- new TestCase.Builder()
- .pattern("match {(foo)} when*{foo}")
- .expected("foo")
- .errors("missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("match when * {foo}")
- .expected("foo")
- .errors("empty-token")
- .build(),
- new TestCase.Builder()
- .pattern("match {(x)} when * foo")
- .expected("")
- .errors("key-mismatch", "missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("match {(x)} when * {foo} extra")
- .expected("foo")
- .errors("extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("match (x) when * {foo}")
- .expected("")
- .errors("empty-token", "extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo} when * * {foo}")
- .expected("foo")
- .errors("key-mismatch", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo} {$bar} when * {foo}")
- .expected("foo")
- .errors("key-mismatch", "missing-var", "missing-var")
- .build()
- };
-
- @Test
- public void test() {
- int ignoreCount = 0;
- for (TestCase testCase : TEST_CASES) {
- if (testCase.ignore)
- ignoreCount++;
- TestUtils.runTestCase(testCase);
- }
- System.out.printf("Executed %d test cases out of %d, skipped %d%n",
- TEST_CASES.length - ignoreCount, TEST_CASES.length, ignoreCount);
- }
-}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/FunctionsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/FunctionsTest.java
new file mode 100644
index 000000000..d27f02baf
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/FunctionsTest.java
@@ -0,0 +1,38 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.google.gson.reflect.TypeToken;
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.testsharding.MainTestShard;
+
+@MainTestShard
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class FunctionsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "test-functions.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Type mapType = new TypeToken<Map<String, Unit[]>>(){/* not code */}.getType();
+ Map<String, Unit[]> unitList = TestUtils.GSON.fromJson(reader, mapType);
+ for (Entry<String, Unit[]> testGroup : unitList.entrySet()) {
+ for (Unit unit : testGroup.getValue()) {
+ TestUtils.runTestCase(unit);
+ }
+ }
+ }
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/IcuFunctionsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/IcuFunctionsTest.java
new file mode 100644
index 000000000..7b95f442d
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/IcuFunctionsTest.java
@@ -0,0 +1,49 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.Date;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.google.gson.reflect.TypeToken;
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.testsharding.MainTestShard;
+
+@MainTestShard
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class IcuFunctionsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "icu-test-functions.json";
+
+ // Some default parameters for all messages, to use if the message does not have its own
+ private static final Map<String, Object> ARGS =
+ Args.of(
+ "user", "John",
+ "exp", new Date(2024 - 1900, 7, 3, 21, 43, 57), // Aug 3, 2024, at 9:43:57 pm
+ "tsOver", "full");
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Type mapType =
+ new TypeToken<Map<String, Unit[]>>() {
+ /* not code */
+ }.getType();
+ Map<String, Unit[]> unitList = TestUtils.GSON.fromJson(reader, mapType);
+ for (Entry<String, Unit[]> testGroup : unitList.entrySet()) {
+ for (Unit unit : testGroup.getValue()) {
+ TestUtils.runTestCase(unit, ARGS);
+ }
+ }
+ }
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/MessageFormat2Test.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/MessageFormat2Test.java
index e1334d626..1f7ce8f24 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/MessageFormat2Test.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/MessageFormat2Test.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
@@ -18,8 +18,8 @@ import android.icu.dev.test.CoreTestFmwk;
import android.icu.message2.FormattedPlaceholder;
import android.icu.message2.Formatter;
import android.icu.message2.FormatterFactory;
+import android.icu.message2.MFFunctionRegistry;
import android.icu.message2.MessageFormatter;
-import android.icu.message2.Mf2FunctionRegistry;
import android.icu.number.FormattedNumber;
import android.icu.number.LocalizedNumberFormatter;
import android.icu.number.NumberFormatter;
@@ -37,13 +37,13 @@ import android.icu.testsharding.MainTestShard;
*/
@MainTestShard
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void test() {
MessageFormatter mf2 = MessageFormatter.builder()
- .setPattern("{Hello World!}").build();
+ .setPattern("Hello World!").build();
assertEquals("simple message",
"Hello World!",
mf2.formatToString(Args.NONE));
@@ -53,32 +53,39 @@ public class MessageFormat2Test extends CoreTestFmwk {
public void testDateFormat() {
Date expiration = new Date(2022 - 1900, java.util.Calendar.OCTOBER, 27);
MessageFormatter mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime skeleton=yMMMdE}!}")
+ .setPattern("Your card expires on {$exp :datetime icu:skeleton=yMMMdE}!")
.build();
assertEquals("date format",
"Your card expires on Thu, Oct 27, 2022!",
mf2.formatToString(Args.of("exp", expiration)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime datestyle=full}!}")
+ .setPattern("Your card expires on {$exp :datetime year=numeric month=short day=numeric weekday=short}!")
+ .build();
+ assertEquals("date format",
+ "Your card expires on Thu, Oct 27, 2022!",
+ mf2.formatToString(Args.of("exp", expiration)));
+
+ mf2 = MessageFormatter.builder()
+ .setPattern("Your card expires on {$exp :datetime dateStyle=full}!")
.build();
assertEquals("date format",
"Your card expires on Thursday, October 27, 2022!",
mf2.formatToString(Args.of("exp", expiration)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime datestyle=long}!}")
+ .setPattern("Your card expires on {$exp :datetime dateStyle=long}!")
.build();
assertEquals("date format",
"Your card expires on October 27, 2022!",
mf2.formatToString(Args.of("exp", expiration)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime datestyle=medium}!}")
+ .setPattern("Your card expires on {$exp :date style=medium}!")
.build();
assertEquals("date format",
"Your card expires on Oct 27, 2022!",
mf2.formatToString(Args.of("exp", expiration)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime datestyle=short}!}")
+ .setPattern("Your card expires on {$exp :datetime dateStyle=short}!")
.build();
assertEquals("date format",
"Your card expires on 10/27/22!",
@@ -86,7 +93,7 @@ public class MessageFormat2Test extends CoreTestFmwk {
Calendar cal = new GregorianCalendar(2022, Calendar.OCTOBER, 27);
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime skeleton=yMMMdE}!}")
+ .setPattern("Your card expires on {$exp :datetime icu:skeleton=yMMMdE}!")
.build();
assertEquals("date format",
"Your card expires on Thu, Oct 27, 2022!",
@@ -94,7 +101,7 @@ public class MessageFormat2Test extends CoreTestFmwk {
// Implied function based on type of the object to format
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp}!}")
+ .setPattern("Your card expires on {$exp}!")
.build();
assertEquals("date format",
"Your card expires on 10/27/22, 12:00\u202FAM!",
@@ -108,14 +115,14 @@ public class MessageFormat2Test extends CoreTestFmwk {
// But we test to see if it works because it extends Calendar, which is registered.
BuddhistCalendar calNotRegistered = new BuddhistCalendar(2022, Calendar.OCTOBER, 27);
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime skeleton=yMMMdE}!}")
+ .setPattern("Your card expires on {$exp :datetime icu:skeleton=yMMMdE}!")
.build();
assertEquals("date format",
"Your card expires on Wed, Oct 27, 1479!",
mf2.formatToString(Args.of("exp", calNotRegistered)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime skeleton=yMMMdE}!}")
+ .setPattern("Your card expires on {$exp :datetime icu:skeleton=yMMMdE}!")
.build();
assertEquals("date format",
"Your card expires on Wed, Oct 27, 1479!",
@@ -125,9 +132,9 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPlural() {
String message = ""
- + "match {$count :plural}\n"
- + " when 1 {You have one notification.}\n"
- + " when * {You have {$count} notifications.}\n";
+ + ".match {$count :number}\n"
+ + " 1 {{You have one notification.}}\n"
+ + " * {{You have {$count} notifications.}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
@@ -143,14 +150,14 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPluralOrdinal() {
String message = ""
- + "match {$place :selectordinal}\n"
- + " when 1 {You got the gold medal}\n"
- + " when 2 {You got the silver medal}\n"
- + " when 3 {You got the bronze medal}\n"
- + " when one {You got in the {$place}st place}\n"
- + " when two {You got in the {$place}nd place}\n"
- + " when few {You got in the {$place}rd place}\n"
- + " when * {You got in the {$place}th place}\n"
+ + ".match {$place :number select=ordinal}\n"
+ + " 1 {{You got the gold medal}}\n"
+ + " 2 {{You got the silver medal}}\n"
+ + " 3 {{You got the bronze medal}}\n"
+ + " one {{You got in the {$place}st place}}\n"
+ + " two {{You got in the {$place}nd place}}\n"
+ + " few {{You got in the {$place}rd place}}\n"
+ + " * {{You got in the {$place}th place}}\n"
;
MessageFormatter mf2 = MessageFormatter.builder()
@@ -188,10 +195,10 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Override
public Formatter createFormatter(Locale locale, Map<String, Object> fixedOptions) {
// Check that the formatter can only see the fixed options
- Assert.assertTrue(fixedOptions.containsKey("skeleton"));
- Assert.assertFalse(fixedOptions.containsKey("unit"));
+ Assert.assertTrue(fixedOptions.containsKey("icu:skeleton"));
+ Assert.assertFalse(fixedOptions.containsKey("icu:unit"));
- Object valSkeleton = fixedOptions.get("skeleton");
+ Object valSkeleton = fixedOptions.get("icu:skeleton");
LocalizedNumberFormatter nf = valSkeleton != null
? NumberFormatter.forSkeleton(valSkeleton.toString()).locale(locale)
: NumberFormatter.withLocale(locale);
@@ -260,12 +267,15 @@ public class MessageFormat2Test extends CoreTestFmwk {
}
@Test
+ // Due to the many changes in how the variable resolution is done,
+ // it is now not possible to caching the formatters.
+ // Might be able to bring it back, but for now it is off.
public void testFormatterIsCreatedOnce() {
TemperatureFormatterFactory counter = new TemperatureFormatterFactory();
- Mf2FunctionRegistry registry = Mf2FunctionRegistry.builder()
+ MFFunctionRegistry registry = MFFunctionRegistry.builder()
.setFormatter("temp", counter)
.build();
- String message = "{Testing {$count :temp unit=$unit skeleton=(.00/w)}.}";
+ String message = "Testing {$count :temp unit=$unit icu:skeleton=|.00/w|}.";
MessageFormatter mf2 = MessageFormatter.builder()
.setFunctionRegistry(registry)
.setPattern(message)
@@ -283,10 +293,10 @@ public class MessageFormat2Test extends CoreTestFmwk {
// Check that the constructor was only called once,
// and the formatter as many times as the public call to format.
- assertEquals("cached formatter", 1, counter.constructCount);
+ assertEquals("cached formatter", 20, counter.constructCount);
assertEquals("cached formatter", maxCount * 2, counter.formatCount);
- assertEquals("cached formatter", 1, counter.fFormatterCount);
- assertEquals("cached formatter", 1, counter.cFormatterCount);
+ assertEquals("cached formatter", 10, counter.fFormatterCount);
+ assertEquals("cached formatter", 10, counter.cFormatterCount);
// Check that the skeleton is respected
assertEquals("cached formatter",
@@ -302,7 +312,7 @@ public class MessageFormat2Test extends CoreTestFmwk {
"Testing 12.54°F.",
mf2.formatToString(Args.of("count", 12.54321, "unit", "F")));
- message = "{Testing {$count :temp unit=$unit skeleton=(.0/w)}.}";
+ message = "Testing {$count :temp unit=$unit icu:skeleton=|.0/w|}.";
mf2 = MessageFormatter.builder()
.setFunctionRegistry(registry)
.setPattern(message)
@@ -325,11 +335,11 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPluralWithOffset() {
String message = ""
- + "match {$count :plural offset=2}\n"
- + " when 1 {Anna}\n"
- + " when 2 {Anna and Bob}\n"
- + " when one {Anna, Bob, and {$count :number offset=2} other guest}\n"
- + " when * {Anna, Bob, and {$count :number offset=2} other guests}\n";
+ + ".match {$count :number icu:offset=2}\n"
+ + " 1 {{Anna}}\n"
+ + " 2 {{Anna and Bob}}\n"
+ + " one {{Anna, Bob, and {$count :number icu:offset=2} other guest}}\n"
+ + " * {{Anna, Bob, and {$count :number icu:offset=2} other guests}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
.build();
@@ -353,12 +363,12 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPluralWithOffsetAndLocalVar() {
String message = ""
- + "let $foo = {$count :number offset=2}"
- + "match {$foo :plural}\n" // should "inherit" the offset
- + " when 1 {Anna}\n"
- + " when 2 {Anna and Bob}\n"
- + " when one {Anna, Bob, and {$foo} other guest}\n"
- + " when * {Anna, Bob, and {$foo} other guests}\n";
+ + ".local $foo = {$count :number icu:offset=2}"
+ + ".match {$foo :number}\n" // should "inherit" the offset
+ + " 1 {{Anna}}\n"
+ + " 2 {{Anna and Bob}}\n"
+ + " one {{Anna, Bob, and {$foo} other guest}}\n"
+ + " * {{Anna, Bob, and {$foo} other guests}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
.build();
@@ -382,11 +392,11 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPluralWithOffsetAndLocalVar2() {
String message = ""
- + "let $foo = {$amount :number skeleton=(.00/w)}\n"
- + "match {$foo :plural}\n" // should "inherit" the offset
- + " when 1 {Last dollar}\n"
- + " when one {{$foo} dollar}\n"
- + " when * {{$foo} dollars}\n";
+ + ".local $foo = {$amount :number icu:skeleton=|.00/w|}\n"
+ + ".match {$foo :number}\n" // should "inherit" the offset
+ + " 1 {{Last dollar}}\n"
+ + " one {{{$foo} dollar}}\n"
+ + " * {{{$foo} dollars}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
.build();
@@ -402,28 +412,49 @@ public class MessageFormat2Test extends CoreTestFmwk {
}
@Test
- public void testLoopOnLocalVars() {
+ public void testPluralWithOffsetAndLocalVar2Options() {
String message = ""
- + "let $foo = {$baz :number}\n"
- + "let $bar = {$foo}\n"
- + "let $baz = {$bar}\n"
- + "{The message uses {$baz} and works}\n";
+ + ".local $foo = {$amount :number minumumFractionalDigits=2}\n"
+ + ".match {$foo :number}\n" // should "inherit" the offset
+ + " 1 {{Last dollar}}\n"
+ + " one {{{$foo} dollar}}\n"
+ + " * {{{$foo} dollars}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
.build();
- assertEquals("test local vars loop",
- "The message uses {$bar} and works",
+ assertEquals("plural with offset",
+ "Last dollar",
mf2.formatToString(Args.of("amount", 1)));
+ assertEquals("plural with offset",
+ "2 dollars",
+ mf2.formatToString(Args.of("amount", 2)));
+ assertEquals("plural with offset",
+ "3 dollars",
+ mf2.formatToString(Args.of("amount", 3)));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testLoopOnLocalVars() {
+ String message = ""
+ + ".local $foo = {$baz :number}\n"
+ + ".local $bar = {$foo}\n"
+ + ".local $baz = {$bar}\n"
+ + "{{The message uses {$baz} and works}}\n";
+ // Circular references on variables is now detected.
+ // So we check that this throws (see expected in the @Test above)
+ MessageFormatter.builder()
+ .setPattern(message)
+ .build();
}
@Test
public void testVariableOptionsInSelector() {
String messageVar = ""
- + "match {$count :plural offset=$delta}\n"
- + " when 1 {A}\n"
- + " when 2 {A and B}\n"
- + " when one {A, B, and {$count :number offset=$delta} more character}\n"
- + " when * {A, B, and {$count :number offset=$delta} more characters}\n";
+ + ".match {$count :number icu:offset=$delta}\n"
+ + " 1 {{A}}\n"
+ + " 2 {{A and B}}\n"
+ + " one {{A, B, and {$count :number icu:offset=$delta} more character}}\n"
+ + " * {{A, B, and {$count :number icu:offset=$delta} more characters}}\n";
MessageFormatter mfVar = MessageFormatter.builder()
.setPattern(messageVar)
.build();
@@ -437,10 +468,10 @@ public class MessageFormat2Test extends CoreTestFmwk {
mfVar.formatToString(Args.of("count", 7, "delta", 2)));
String messageVar2 = ""
- + "match {$count :plural offset=$delta}\n"
- + " when 1 {Exactly 1}\n"
- + " when 2 {Exactly 2}\n"
- + " when * {Count = {$count :number offset=$delta} and delta={$delta}.}\n";
+ + ".match {$count :number icu:offset=$delta}\n"
+ + " 1 {{Exactly 1}}\n"
+ + " 2 {{Exactly 2}}\n"
+ + " * {{Count = {$count :number icu:offset=$delta} and delta={$delta}.}}\n";
MessageFormatter mfVar2 = MessageFormatter.builder()
.setPattern(messageVar2)
.build();
@@ -476,12 +507,12 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testVariableOptionsInSelectorWithLocalVar() {
String messageFix = ""
- + "let $offCount = {$count :number offset=2}"
- + "match {$offCount :plural}\n"
- + " when 1 {A}\n"
- + " when 2 {A and B}\n"
- + " when one {A, B, and {$offCount} more character}\n"
- + " when * {A, B, and {$offCount} more characters}\n";
+ + ".local $offCount = {$count :number icu:offset=2}"
+ + ".match {$offCount :number}\n"
+ + " 1 {{A}}\n"
+ + " 2 {{A and B}}\n"
+ + " one {{A, B, and {$offCount} more character}}\n"
+ + " * {{A, B, and {$offCount} more characters}}\n";
MessageFormatter mfFix = MessageFormatter.builder()
.setPattern(messageFix)
.build();
@@ -491,12 +522,12 @@ public class MessageFormat2Test extends CoreTestFmwk {
assertEquals("test local vars loop", "A, B, and 5 more characters", mfFix.formatToString(Args.of("count", 7)));
String messageVar = ""
- + "let $offCount = {$count :number offset=$delta}"
- + "match {$offCount :plural}\n"
- + " when 1 {A}\n"
- + " when 2 {A and B}\n"
- + " when one {A, B, and {$offCount} more character}\n"
- + " when * {A, B, and {$offCount} more characters}\n";
+ + ".local $offCount = {$count :number icu:offset=$delta}"
+ + ".match {$offCount :number}\n"
+ + " 1 {{A}}\n"
+ + " 2 {{A and B}}\n"
+ + " one {{A, B, and {$offCount} more character}}\n"
+ + " * {{A, B, and {$offCount} more characters}}\n";
MessageFormatter mfVar = MessageFormatter.builder()
.setPattern(messageVar)
.build();
@@ -510,11 +541,11 @@ public class MessageFormat2Test extends CoreTestFmwk {
mfVar.formatToString(Args.of("count", 7, "delta", 2)));
String messageVar2 = ""
- + "let $offCount = {$count :number offset=$delta}"
- + "match {$offCount :plural}\n"
- + " when 1 {Exactly 1}\n"
- + " when 2 {Exactly 2}\n"
- + " when * {Count = {$count}, OffCount = {$offCount}, and delta={$delta}.}\n";
+ + ".local $offCount = {$count :number icu:offset=$delta}"
+ + ".match {$offCount :number}\n"
+ + " 1 {{Exactly 1}}\n"
+ + " 2 {{Exactly 2}}\n"
+ + " * {{Count = {$count}, OffCount = {$offCount}, and delta={$delta}.}}\n";
MessageFormatter mfVar2 = MessageFormatter.builder()
.setPattern(messageVar2)
.build();
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2FeaturesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2FeaturesTest.java
index a5348ab7b..fc3c03852 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2FeaturesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2FeaturesTest.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
@@ -28,7 +28,7 @@ import android.icu.testsharding.MainTestShard;
*/
@MainTestShard
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class Mf2FeaturesTest extends CoreTestFmwk {
// November 23, 2022 at 7:42:37.123 PM
@@ -37,7 +37,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testEmptyMessage() {
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{}")
+ .pattern("")
.arguments(Args.NONE)
.expected("")
.build());
@@ -46,7 +46,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testPlainText() {
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Hello World!}")
+ .pattern("Hello World!")
.arguments(Args.NONE)
.expected("Hello World!")
.build());
@@ -55,7 +55,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testPlaceholders() {
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Hello, {$userName}!}")
+ .pattern("Hello, {$userName}!")
.arguments(Args.of("userName", "John"))
.expected("Hello, John!")
.build());
@@ -65,7 +65,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
public void testArgumentMissing() {
// Test to check what happens if an argument name from the placeholder is not found
// We do what the old ICU4J MessageFormat does.
- String message = "{Hello {$name}, today is {$today :datetime skeleton=yMMMMdEEEE}.}";
+ String message = "Hello {$name}, today is {$today :datetime year=numeric month=long day=numeric weekday=long}.";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
@@ -91,7 +91,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testDefaultLocale() {
- String message = "{Date: {$date :datetime skeleton=yMMMMdEEEE}.}";
+ String message = "Date: {$date :date year=numeric month=long day=numeric weekday=long}.";
String expectedEn = "Date: Wednesday, November 23, 2022.";
String expectedRo = "Date: miercuri, 23 noiembrie 2022.";
Map<String, Object> arguments = Args.of("date", TEST_DATE);
@@ -128,14 +128,14 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
public void testAllKindOfDates() {
// Default function
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date}.}")
+ .pattern("Testing date formatting: {$date}.")
.locale("ro")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23.11.2022, 19:42.")
.build());
// Default options
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime}.}")
+ .pattern("Testing date formatting: {$date :datetime}.")
.locale("ro")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23.11.2022, 19:42.")
@@ -143,74 +143,66 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
// Skeleton
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=yMMMMd}.}")
+ .pattern("Testing date formatting: {$date :date year=numeric month=long day=numeric}.")
.locale("ro-RO")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23 noiembrie 2022.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=jm}.}")
+ .pattern("Testing date formatting: {$date :datetime hour=numeric minute=numeric}.")
.locale("ro-RO")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 19:42.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=yMMMd}.}")
+ .pattern("Testing date formatting: {$date :date year=numeric month=short day=numeric}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: Nov 23, 2022.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=yMMMdjms}.}")
+ .pattern("Testing date formatting: {$date :datetime icu:skeleton=yMMMdjms}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: Nov 23, 2022, 7:42:37\u202FPM.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=jm}.}")
+ .pattern("Testing date formatting: {$date :datetime hour=numeric minute=numeric}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 7:42\u202FPM.")
.build());
// Style
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime datestyle=long}.}")
+ .pattern("Testing date formatting: {$date :datetime dateStyle=long}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: November 23, 2022.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern(
- "{Testing date formatting: {$date :datetime datestyle=medium}.}")
+ .pattern("Testing date formatting: {$date :datetime dateStyle=medium}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: Nov 23, 2022.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime datestyle=short}.}")
+ .pattern("Testing date formatting: {$date :datetime dateStyle=short}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 11/23/22.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime timestyle=long}.}")
+ .pattern("Testing date formatting: {$date :datetime timeStyle=long}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 7:42:37\u202FPM PST.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime timestyle=medium}.}")
+ .pattern("Testing date formatting: {$date :datetime timeStyle=medium}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 7:42:37\u202FPM.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
.pattern(
- "{Testing date formatting: {$date :datetime timestyle=short}.}")
+ "Testing date formatting: {$date :datetime timeStyle=short}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 7:42\u202FPM.")
.build());
-
- // Pattern
- TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime pattern=(d 'of' MMMM, y 'at' HH:mm)}.}")
- .arguments(Args.of("date", TEST_DATE))
- .expected("Testing date formatting: 23 of November, 2022 at 19:42.")
- .build());
}
@Test
@@ -219,19 +211,19 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
// From literal values
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{From literal: {(123456789) :number}!}")
+ .pattern("From literal: {123456789 :number}!")
.locale("ro")
.arguments(Args.of("val", value))
.expected("From literal: 123.456.789!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{From literal: {(123456789.531) :number}!}")
+ .pattern("From literal: {|123456789.531| :number}!")
.locale("ro")
.arguments(Args.of("val", value))
.expected("From literal: 123.456.789,531!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{From literal: {(123456789.531) :number}!}")
+ .pattern("From literal: {123456789.531 :number}!")
.locale("my")
.arguments(Args.of("val", value))
.expected("From literal: \u1041\u1042\u1043,\u1044\u1045\u1046,\u1047\u1048\u1049.\u1045\u1043\u1041!")
@@ -239,37 +231,37 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
// Testing that the detection works for various types (without specifying :number)
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default double: {$val}!}")
+ .pattern("Default double: {$val}!")
.locale("en-IN")
.arguments(Args.of("val", value))
.expected("Default double: 1,23,45,67,890.97531!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default double: {$val}!}")
+ .pattern("Default double: {$val}!")
.locale("ro")
.arguments(Args.of("val", value))
.expected("Default double: 1.234.567.890,97531!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default float: {$val}!}")
+ .pattern("Default float: {$val}!")
.locale("ro")
.arguments(Args.of("val", 3.1415926535))
.expected("Default float: 3,141593!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default long: {$val}!}")
+ .pattern("Default long: {$val}!")
.locale("ro")
.arguments(Args.of("val", 1234567890123456789L))
.expected("Default long: 1.234.567.890.123.456.789!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default number: {$val}!}")
+ .pattern("Default number: {$val}!")
.locale("ro")
.arguments(Args.of("val", new BigDecimal("1234567890123456789.987654321")))
.expected("Default number: 1.234.567.890.123.456.789,987654!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Price: {$val}}")
+ .pattern("Price: {$val}")
.locale("de")
.arguments(Args.of("val", new CurrencyAmount(1234.56, Currency.getInstance("EUR"))))
.expected("Price: 1.234,56\u00A0\u20AC")
@@ -277,33 +269,33 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
// Various skeletons
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, minFraction: {$val :number skeleton=(.00000000*)}!}")
+ .pattern("Option, minFraction: {$val :number minimumFractionDigits=8}!")
.locale("ro")
.arguments(Args.of("val", value))
- .expected("Skeletons, minFraction: 1.234.567.890,97531000!")
+ .expected("Option, minFraction: 1.234.567.890,97531000!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, maxFraction: {$val :number skeleton=(.###)}!}")
+ .pattern("Option, maxFraction: {$val :number maximumFractionDigits=3}!")
.locale("ro")
.arguments(Args.of("val", value))
- .expected("Skeletons, maxFraction: 1.234.567.890,975!")
+ .expected("Option, maxFraction: 1.234.567.890,975!")
.build());
// Currency
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, currency: {$val :number skeleton=(currency/EUR)}!}")
+ .pattern("Skeletons, currency: {$val :number icu:skeleton=|currency/EUR|}!")
.locale("de")
.arguments(Args.of("val", value))
.expected("Skeletons, currency: 1.234.567.890,98\u00A0\u20AC!")
.build());
// Currency as a parameter
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, currency: {$val :number skeleton=$skel}!}")
+ .pattern("Skeletons, currency: {$val :number icu:skeleton=$skel}!")
.locale("de")
.arguments(Args.of("val", value, "skel", "currency/EUR"))
.expected("Skeletons, currency: 1.234.567.890,98\u00A0\u20AC!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, currency: {$val :number skeleton=$skel}!}")
+ .pattern("Skeletons, currency: {$val :number icu:skeleton=$skel}!")
.locale("de")
.arguments(Args.of("val", value, "skel", "currency/JPY"))
.expected("Skeletons, currency: 1.234.567.891\u00A0\u00A5!")
@@ -313,22 +305,22 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
double celsius = 27;
TestUtils.runTestCase(new TestCase.Builder()
.pattern(""
- + "let $intl = {$valC :number skeleton=(unit/celsius)}\n"
- + "let $us = {$valF :number skeleton=(unit/fahrenheit)}\n"
- + "{Temperature: {$intl} ({$us})}")
+ + ".local $intl = {$valC :number icu:skeleton=|unit/celsius|}\n"
+ + ".local $us = {$valF :number icu:skeleton=|unit/fahrenheit|}\n"
+ + "{{Temperature: {$intl} ({$us})}}")
.locale("ro")
.arguments(Args.of("valC", celsius, "valF", celsius * 9 / 5 + 32))
.expected("Temperature: 27 \u00B0C (80,6 \u00B0F)")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Height: {$len :number skeleton=(unit/meter)}}")
+ .pattern("Height: {$len :number icu:skeleton=|unit/meter|}")
.locale("ro")
.arguments(Args.of("len", 1.75))
.expected("Height: 1,75 m")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, currency: {$val :number skeleton=(currency/EUR)}!}")
+ .pattern("Skeletons, currency: {$val :number icu:skeleton=|currency/EUR|}!")
.locale("de")
.arguments(Args.of("val", value))
.expected("Skeletons, currency: 1.234.567.890,98\u00A0\u20AC!")
@@ -338,20 +330,20 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testSpecialPluralWithDecimals() {
String message;
- message = "let $amount = {$count :number}\n"
- + "match {$amount :plural}\n"
- + " when 1 {I have {$amount} dollar.}\n"
- + " when * {I have {$amount} dollars.}\n";
+ message = ".local $amount = {$count :number}\n"
+ + ".match {$amount :number}\n"
+ + " 1 {{I have {$amount} dollar.}}\n"
+ + " * {{I have {$amount} dollars.}}\n";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
.locale("en-US")
.arguments(Args.of("count", 1))
.expected("I have 1 dollar.")
.build());
- message = "let $amount = {$count :number skeleton=(.00*)}\n"
- + "match {$amount :plural skeleton=(.00*)}\n"
- + " when 1 {I have {$amount} dollar.}\n"
- + " when * {I have {$amount} dollars.}\n";
+ message = ".local $amount = {$count :number minimumFractionDigits=2}\n"
+ + ".match {$amount :number minimumFractionDigits=2}\n"
+ + " one {{I have {$amount} dollar.}}\n"
+ + " * {{I have {$amount} dollars.}}\n";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
.locale("en-US")
@@ -363,13 +355,13 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testDefaultFunctionAndOptions() {
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date}.}")
+ .pattern("Testing date formatting: {$date}.")
.locale("ro")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23.11.2022, 19:42.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime}.}")
+ .pattern("Testing date formatting: {$date :datetime}.")
.locale("ro")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23.11.2022, 19:42.")
@@ -378,9 +370,9 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testSimpleSelection() {
- String message = "match {$count :plural}\n"
- + " when 1 {You have one notification.}\n"
- + " when * {You have {$count} notifications.}\n";
+ String message = ".match {$count :number}\n"
+ + " 1 {{You have one notification.}}\n"
+ + " * {{You have {$count} notifications.}}\n";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
@@ -397,13 +389,13 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testComplexSelection() {
String message = ""
- + "match {$photoCount :plural} {$userGender :select}\n"
- + " when 1 masculine {{$userName} added a new photo to his album.}\n"
- + " when 1 feminine {{$userName} added a new photo to her album.}\n"
- + " when 1 * {{$userName} added a new photo to their album.}\n"
- + " when * masculine {{$userName} added {$photoCount} photos to his album.}\n"
- + " when * feminine {{$userName} added {$photoCount} photos to her album.}\n"
- + " when * * {{$userName} added {$photoCount} photos to their album.}";
+ + ".match {$photoCount :number} {$userGender :string}\n"
+ + " 1 masculine {{{$userName} added a new photo to his album.}}\n"
+ + " 1 feminine {{{$userName} added a new photo to her album.}}\n"
+ + " 1 * {{{$userName} added a new photo to their album.}}\n"
+ + " * masculine {{{$userName} added {$photoCount} photos to his album.}}\n"
+ + " * feminine {{{$userName} added {$photoCount} photos to her album.}}\n"
+ + " * * {{{$userName} added {$photoCount} photos to their album.}}";
TestUtils.runTestCase(new TestCase.Builder().pattern(message)
.arguments(Args.of("photoCount", 1, "userGender", "masculine", "userName", "John"))
@@ -438,8 +430,8 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
public void testSimpleLocaleVariable() {
TestUtils.runTestCase(new TestCase.Builder()
.pattern(""
- + "let $expDate = {$expDate :datetime skeleton=yMMMdE}\n"
- + "{Your tickets expire on {$expDate}.}")
+ + ".local $exp = {$expDate :datetime year=numeric month=short day=numeric weekday=short}\n"
+ + "{{Your tickets expire on {$exp}.}}")
.arguments(Args.of("count", 1, "expDate", TEST_DATE))
.expected("Your tickets expire on Wed, Nov 23, 2022.")
.build());
@@ -448,10 +440,10 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testLocaleVariableWithSelect() {
String message = ""
- + "let $expDate = {$expDate :datetime skeleton=yMMMdE}\n"
- + "match {$count :plural}\n"
- + " when 1 {Your ticket expires on {$expDate}.}\n"
- + " when * {Your {$count} tickets expire on {$expDate}.}\n";
+ + ".local $exp = {$expDate :date year=numeric month=short day=numeric weekday=short}\n"
+ + ".match {$count :number}\n"
+ + " 1 {{Your ticket expires on {$exp}.}}\n"
+ + " * {{Your {$count} tickets expire on {$exp}.}}\n";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2IcuTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2IcuTest.java
index 386022847..6d0d46f1a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2IcuTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/Mf2IcuTest.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
@@ -26,13 +26,13 @@ import android.icu.testsharding.MainTestShard;
*/
@MainTestShard
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class Mf2IcuTest extends CoreTestFmwk {
@Test
public void testSample() {
MessageFormatter form = MessageFormatter.builder()
- .setPattern("{There are {$count} files on {$where}}")
+ .setPattern("There are {$count} files on {$where}")
.build();
assertEquals("format", "There are abc files on def",
form.formatToString(Args.of("count", "abc", "where", "def")));
@@ -40,13 +40,15 @@ public class Mf2IcuTest extends CoreTestFmwk {
@Test
public void testStaticFormat() {
- Map<String, Object> arguments = Args.of("planet", new Integer(7), "when", new Date(871068000000L), "what",
- "a disturbance in the Force");
+ Map<String, Object> arguments = Args.of(
+ "planet", 7,
+ "when", new Date(871068000000L),
+ "what", "a disturbance in the Force");
assertEquals("format", "At 12:20:00\u202FPM on Aug 8, 1997, there was a disturbance in the Force on planet 7.",
MessageFormatter.builder()
- .setPattern("{At {$when :datetime timestyle=default} on {$when :datetime datestyle=default}, "
- + "there was {$what} on planet {$planet :number kind=integer}.}")
+ .setPattern("At {$when :datetime timeStyle=medium} on {$when :datetime dateStyle=medium}, "
+ + "there was {$what} on planet {$planet :number kind=integer}.")
.build()
.formatToString(arguments));
}
@@ -55,12 +57,12 @@ public class Mf2IcuTest extends CoreTestFmwk {
@Test
public void testSimpleFormat() {
- Map<String, Object> testArgs1 = Args.of("fileCount", new Integer(0), "diskName", "MyDisk");
- Map<String, Object> testArgs2 = Args.of("fileCount", new Integer(1), "diskName", "MyDisk");
- Map<String, Object> testArgs3 = Args.of("fileCount", new Integer(12), "diskName", "MyDisk");
+ Map<String, Object> testArgs1 = Args.of("fileCount", 0, "diskName", "MyDisk");
+ Map<String, Object> testArgs2 = Args.of("fileCount", 1, "diskName", "MyDisk");
+ Map<String, Object> testArgs3 = Args.of("fileCount", 12, "diskName", "MyDisk");
MessageFormatter form = MessageFormatter.builder()
- .setPattern("{The disk \"{$diskName}\" contains {$fileCount} file(s).}")
+ .setPattern("The disk \"{$diskName}\" contains {$fileCount} file(s).")
.build();
assertEquals("format", "The disk \"MyDisk\" contains 0 file(s).", form.formatToString(testArgs1));
@@ -75,9 +77,9 @@ public class Mf2IcuTest extends CoreTestFmwk {
@Test
public void testSelectFormatToPattern() {
String pattern = ""
- + "match {$userGender :select}\n"
- + " when female {{$userName} est all\u00E9e \u00E0 Paris.}"
- + " when * {{$userName} est all\u00E9 \u00E0 Paris.}"
+ + ".match {$userGender :string}\n"
+ + " female {{{$userName} est all\u00E9e \u00E0 Paris.}}"
+ + " * {{{$userName} est all\u00E9 \u00E0 Paris.}}"
;
MessageFormatter mf = MessageFormatter.builder()
@@ -107,18 +109,32 @@ public class Mf2IcuTest extends CoreTestFmwk {
public void testMessageFormatDateTimeSkeleton() {
Date date = new GregorianCalendar(2021, Calendar.NOVEMBER, 23, 16, 42, 55).getTime();
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime skeleton=MMMMd}}",
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime icu:skeleton=MMMMd}",
Locale.forLanguageTag("en"), "November 23");
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime skeleton=yMMMMdjm}}",
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime icu:skeleton=yMMMMdjm}",
Locale.forLanguageTag("en"), "November 23, 2021 at 4:42\u202FPM");
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime skeleton=( yMMMMd )}}",
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime icu:skeleton=|yMMMMd|}",
Locale.forLanguageTag("en"), "November 23, 2021");
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime skeleton=yMMMMd}}",
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime icu:skeleton=yMMMMd}",
Locale.forLanguageTag("fr"), "23 novembre 2021");
- doTheRealDateTimeSkeletonTesting(date, "{Expiration: {$when :datetime skeleton=yMMM}!}",
+ doTheRealDateTimeSkeletonTesting(date, "Expiration: {$when :datetime icu:skeleton=yMMM}!",
+ Locale.forLanguageTag("en"), "Expiration: Nov 2021!");
+ }
+
+ @Test
+ public void testMessageFormatDateTimeOptions() {
+ Date date = new GregorianCalendar(2021, Calendar.NOVEMBER, 23, 16, 42, 55).getTime();
+
+ doTheRealDateTimeSkeletonTesting(date, "{$when :date month=long day=numeric}",
+ Locale.forLanguageTag("en"), "November 23");
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime year=numeric month=long day=numeric hour=numeric minute=numeric}",
+ Locale.forLanguageTag("en"), "November 23, 2021 at 4:42\u202FPM");
+ doTheRealDateTimeSkeletonTesting(date, "{$when :date year=numeric month=short day=numeric}",
+ Locale.forLanguageTag("en"), "Nov 23, 2021");
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime year=numeric month=long day=numeric}",
+ Locale.forLanguageTag("fr"), "23 novembre 2021");
+ doTheRealDateTimeSkeletonTesting(date, "Expiration: {$when :datetime year=numeric month=short}!",
Locale.forLanguageTag("en"), "Expiration: Nov 2021!");
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime pattern=('::'yMMMMd)}}",
- Locale.forLanguageTag("en"), "::2021November23"); // pattern
}
@Test
@@ -132,7 +148,7 @@ public class Mf2IcuTest extends CoreTestFmwk {
assertEquals("old icu test", "Hello John, today is December 23, 2022.", mf1.format(goodArg));
MessageFormatter mf2 = MessageFormatter.builder()
- .setPattern("{Hello {$user}, today is {$today :datetime datestyle=long}.}")
+ .setPattern("Hello {$user}, today is {$today :datetime dateStyle=long}.")
.build();
assertEquals("old icu test", "Hello {$user}, today is {$today}.", mf2.formatToString(badArg));
assertEquals("old icu test", "Hello John, today is December 23, 2022.", mf2.formatToString(goodArg));
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/ParserSmokeTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/ParserSmokeTest.java
new file mode 100644
index 000000000..8e1f43eed
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/ParserSmokeTest.java
@@ -0,0 +1,47 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.google.gson.reflect.TypeToken;
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.message2.MFParser;
+import android.icu.testsharding.MainTestShard;
+
+/*
+ * A list of tests for the parser.
+ */
+@MainTestShard
+@RunWith(JUnit4.class)
+@SuppressWarnings({"static-method", "javadoc"})
+public class ParserSmokeTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "icu-parser-tests.json";
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testNullInput() throws Exception {
+ MFParser.parse(null);
+ }
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Type mapType = new TypeToken<Map<String, String[]>>(){/* not code */}.getType();
+ Map<String, String[]> unitList = TestUtils.GSON.fromJson(reader, mapType);
+ for (Entry<String, String[]> testGroup : unitList.entrySet()) {
+ for (String unit : testGroup.getValue()) {
+ MFParser.parse(unit);
+ }
+ }
+ }
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/SelectorsWithVariousArgumentsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/SelectorsWithVariousArgumentsTest.java
new file mode 100644
index 000000000..a0bfbd73a
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/SelectorsWithVariousArgumentsTest.java
@@ -0,0 +1,42 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.io.Reader;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.testsharding.MainTestShard;
+
+@MainTestShard
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class SelectorsWithVariousArgumentsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "icu-test-selectors.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ TestWithVariations[] unitList =
+ TestUtils.GSON.fromJson(reader, TestWithVariations[].class);
+ for (TestWithVariations testWithVar : unitList) {
+ Unit sharedUnit = testWithVar.shared;
+ for (Unit variation : testWithVar.variations) {
+ Unit mergedUnit = sharedUnit.merge(variation);
+ TestUtils.runTestCase(mergedUnit);
+ }
+ }
+ }
+ }
+
+ class TestWithVariations {
+ String comment;
+ Unit shared;
+ Unit[] variations;
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/SerializationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/SerializationTest.java
new file mode 100644
index 000000000..8e1e1b05e
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/SerializationTest.java
@@ -0,0 +1,109 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.message2.MFDataModel.Message;
+import android.icu.message2.MFParser;
+import android.icu.message2.MFSerializer;
+import android.icu.testsharding.MainTestShard;
+
+@MainTestShard
+@RunWith(JUnit4.class)
+@SuppressWarnings({"static-method", "javadoc"})
+public class SerializationTest extends CoreTestFmwk {
+
+ @Test
+ public void test() throws Exception {
+ String[] testStrings = {
+ "Hello {$count &something}",
+ "Hello world!",
+ "{{.Hello world!}}",
+ "Hello {userName}",
+ "Hello {$userName}",
+ "Hello {|-12345.12+e10|}",
+ "Hello {$count :something max=10 min=1.1416 opt1=someString opt2=|a b \\| c| @a1 @a2=|| @a3=|str|}",
+ "Hello {$count &something}",
+ ".input {$a :number} {{Hello world!}}",
+ ".local $b = {$a :number} {{Hello world!}}",
+ ".local $c = {1 :number} {{Hello {userName}}}",
+ ".match {$count :number}\n"
+ + "one {{You deleted {$count} file}}\n"
+ + "* {{You deleted {$count} files}}",
+ ".match {$count :number}\n"
+ + "one {{You deleted {$count} file}}\n"
+ + "* {{You deleted {$count} files}}",
+ ".match {$place :number select=ordinal}\n"
+ + "* {{You fininshed in the {$place}th place}}\n"
+ + "two {{You fininshed in the {$place}nd place}}\n"
+ + "one {{You fininshed in the {$place}st place}}\n"
+ + "1 {{You got the gold medal}}\n"
+ + "2 {{You got the silver medal}}\n"
+ + "3 {{You got the bronze medal}}\n"
+ + "few {{You fininshed in the {$place}rd place}}\n",
+ ".match {$fileCount :number} {$folderCount :number}\n"
+ + "* * {{You deleted {$fileCount} files in {$folderCount} folders}}\n"
+ + "one one {{You deleted {$fileCount} file in {$folderCount} folder}}\n"
+ + "one * {{You deleted {$fileCount} file in {$folderCount} folders}}\n"
+ + "* one {{You deleted {$fileCount} files in {$folderCount} folder}}\n",
+ "{$count :number minimumFractionDigits=2} dollars",
+ "{$count :number minimumFractionDigits=3} dollars",
+ "{|3.1415| :number minimumFractionDigits=5} dollars",
+ "{|3.1415| :number maximumFractionDigits=2} dollars",
+ ".local $c = {$count :number minimumFractionDigits=2}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".local $c = {$count} .foobar |asd asd asd asd| {$bar1} {$bar2} {$bar3} .local $b = {$bar} {{Foo bar}}\n",
+ ".local $c = {1 :number minimumFractionDigits=2}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".local $c = {1 :number}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".local $c = {1.25 :number}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".local $c = {1.25 :number maximumFractionDigits=0}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".match {$count :number} 1 {{one}} * {{other}}",
+ };
+ for (String test : testStrings) {
+ checkOneString(test);
+ }
+ }
+
+ void checkOneString(String pattern) throws Exception {
+ Message dm = MFParser.parse(pattern);
+ String parsed = MFSerializer.dataModelToString(dm);
+
+ /* This is a quick test.
+ * A better idea would be to parse the original string,
+ * serialize the data model, then parse again in a new data model.
+ * That would give us two data models to compare, where
+ * small differences in spacing or quoting does not matter.
+ * But we don't have (yet) an implementation of `equals` on of the data model classes.
+ */
+ pattern =
+ pattern.replace('\n', ' ')
+ .replaceAll(" +", " ")
+ // Naive normalization for `|1234.56|` to `1234.56`
+ .replaceAll("\\|([\\d\\.]+)\\|", "$1")
+ // Naive normalization for `|asBaC12|` to `asBaC12`
+ .replaceAll("\\|([a-zA-Z\\d]+)\\|", "$1")
+ .replaceAll(" \\}", "}")
+ .trim();
+ assertEquals("Serialization different from to the initial source", pattern, parsed);
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/SyntaxErrorsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/SyntaxErrorsTest.java
new file mode 100644
index 000000000..7d8f61b6f
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/SyntaxErrorsTest.java
@@ -0,0 +1,37 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.io.Reader;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import android.icu.dev.test.CoreTestFmwk;
+import android.icu.message2.MessageFormatter;
+import android.icu.testsharding.MainTestShard;
+
+@MainTestShard
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class SyntaxErrorsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "syntax-errors.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ String[] srcList = TestUtils.GSON.fromJson(reader, String[].class);
+ for (String source : srcList) {
+ try {
+ MessageFormatter.builder().setPattern(source).build();
+ fail("Pattern expected to fail, but didn't: '" + source + "'");
+ } catch (Exception e) {
+ // If we get here it is fine
+ }
+ }
+ }
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/TestCase.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/TestCase.java
index 6d5e05002..5bc8d4d95 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/TestCase.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/TestCase.java
@@ -1,6 +1,6 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
@@ -14,93 +14,94 @@ import java.util.StringJoiner;
/** Utility class encapsulating what we need for a simple test. */
class TestCase {
- final String message;
- final Locale locale;
- final Map<String, Object> arguments;
- final String expected;
- final boolean ignore;
- final String ignoreReason;
- final List<String> errors;
+ final String message;
+ final Locale locale;
+ final Map<String, Object> arguments;
+ final String expected;
+ final boolean ignore;
+ final String ignoreReason;
+ final List<String> errors;
- @Override
- public String toString() {
- StringJoiner result = new StringJoiner(",\n ", "TestCase {\n ", "\n}");
- result.add("message: " + message + "'");
- result.add("locale: '" + locale.toLanguageTag() + "'");
- result.add("arguments: " + arguments);
- result.add("expected: '" + expected + "'");
- result.add("ignore: " + ignore);
- result.add("ignoreReason: '" + ignoreReason + "'");
- result.add("errors: " + errors);
- return result.toString();
- }
+ @Override
+ public String toString() {
+ StringJoiner result = new StringJoiner(",\n ", "TestCase {\n ", "\n}");
+ result.add("message: " + message + "'");
+ result.add("locale: '" + locale.toLanguageTag() + "'");
+ result.add("arguments: " + arguments);
+ result.add("expected: '" + expected + "'");
+ result.add("ignore: " + ignore);
+ result.add("ignoreReason: '" + ignoreReason + "'");
+ result.add("errors: " + errors);
+ return result.toString();
+ }
- private TestCase(TestCase.Builder builder) {
- this.ignore = builder.ignore;
- this.message = builder.pattern == null ? "" : builder.pattern;
- this.locale = (builder.localeId == null)
- ? Locale.getDefault(Category.FORMAT)
- : Locale.forLanguageTag(builder.localeId);
- this.arguments = builder.arguments == null ? Args.NONE : builder.arguments;
- this.expected = builder.expected == null ? "" : builder.expected;
- this.errors = builder.errors == null ? new ArrayList<String>() : builder.errors;
- this.ignoreReason = builder.ignoreReason == null ? "" : builder.ignoreReason;
- }
+ private TestCase(TestCase.Builder builder) {
+ this.ignore = builder.ignore;
+ this.message = builder.pattern == null ? "" : builder.pattern;
+ this.locale = (builder.localeId == null)
+ ? Locale.getDefault(Category.FORMAT)
+ : Locale.forLanguageTag(builder.localeId);
+ this.arguments = builder.arguments == null ? Args.NONE : builder.arguments;
+ this.expected = builder.expected == null ? "" : builder.expected;
+ this.errors = builder.errors == null ? new ArrayList<>() : builder.errors;
+ this.ignoreReason = builder.ignoreReason == null ? "" : builder.ignoreReason;
+ }
- static class Builder {
- private String pattern;
- private String localeId;
- private Map<String, Object> arguments;
- private String expected;
- private boolean ignore = false;
- private String ignoreReason;
- private List<String> errors;
+ static class Builder {
+ private String pattern;
+ private String localeId;
+ private Map<String, Object> arguments;
+ private String expected;
+ private boolean ignore = false;
+ private String ignoreReason;
+ private List<String> errors;
- public TestCase build() {
- return new TestCase(this);
- }
+ public TestCase build() {
+ return new TestCase(this);
+ }
- public TestCase.Builder pattern(String pattern) {
- this.pattern = pattern;
- return this;
- }
+ public TestCase.Builder pattern(String pattern) {
+ this.pattern = pattern;
+ return this;
+ }
- public TestCase.Builder patternJs(String patternJs) {
- // Ignore the JavaScript stuff
- return this;
- }
+ @SuppressWarnings("unused")
+ public TestCase.Builder patternJs(String patternJs) {
+ // Ignore the JavaScript stuff
+ return this;
+ }
- public TestCase.Builder arguments(Map<String, Object> arguments) {
- this.arguments = arguments;
- return this;
- }
+ public TestCase.Builder arguments(Map<String, Object> arguments) {
+ this.arguments = arguments;
+ return this;
+ }
- public TestCase.Builder expected(String expected) {
- this.expected = expected;
- return this;
- }
+ public TestCase.Builder expected(String expected) {
+ this.expected = expected;
+ return this;
+ }
- public TestCase.Builder errors(String ... errors) {
- this.errors = new ArrayList<>();
- this.errors.addAll(Arrays.asList(errors));
- return this;
- }
+ public TestCase.Builder errors(String... errors) {
+ this.errors = new ArrayList<>();
+ this.errors.addAll(Arrays.asList(errors));
+ return this;
+ }
- public TestCase.Builder locale(String localeId) {
- this.localeId = localeId;
- return this;
- }
+ public TestCase.Builder locale(String localeId) {
+ this.localeId = localeId;
+ return this;
+ }
- public TestCase.Builder ignore() {
- this.ignore = true;
- this.ignoreReason = "";
- return this;
- }
+ public TestCase.Builder ignore() {
+ this.ignore = true;
+ this.ignoreReason = "";
+ return this;
+ }
- public TestCase.Builder ignore(String reason) {
- this.ignore = true;
- this.ignoreReason = reason;
- return this;
- }
+ public TestCase.Builder ignore(String reason) {
+ this.ignore = true;
+ this.ignoreReason = reason;
+ return this;
}
- } \ No newline at end of file
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/TestUtils.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/TestUtils.java
index 6cd69de3a..c8e024b2c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/message2/TestUtils.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/TestUtils.java
@@ -1,26 +1,45 @@
/* GENERATED SOURCE. DO NOT MODIFY. */
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package android.icu.dev.test.message2;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Locale;
+import java.util.Map;
+
import org.junit.Ignore;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import android.icu.message2.MFFunctionRegistry;
import android.icu.message2.MessageFormatter;
-import android.icu.message2.Mf2FunctionRegistry;
-@Ignore("Utility class, has no test methods.")
/** Utility class, has no test methods. */
+@Ignore("Utility class, has no test methods.")
public class TestUtils {
+ static final Gson GSON = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
+
+ // ======= Legacy TestCase utilities, no json-compatible ========
static void runTestCase(TestCase testCase) {
runTestCase(null, testCase);
}
- static void runTestCase(Mf2FunctionRegistry customFunctionsRegistry, TestCase testCase) {
+ static void runTestCase(MFFunctionRegistry customFunctionsRegistry, TestCase testCase) {
if (testCase.ignore) {
return;
}
@@ -53,4 +72,69 @@ public class TestUtils {
private static String reportCase(TestCase testCase) {
return testCase.toString();
}
+
+ // ======= Same functionality with Unit, usable with JSON ========
+
+ static boolean expectsErrors(Unit unit) {
+ return unit.errors != null && !unit.errors.isEmpty();
+ }
+
+ static void runTestCase(Unit unit) {
+ runTestCase(unit, null);
+ }
+
+ static void runTestCase(Unit unit, Map<String, Object> params) {
+ if (unit.ignore != null) {
+ return;
+ }
+
+ StringBuilder pattern = new StringBuilder();
+ if (unit.srcs != null) {
+ for (String src : unit.srcs) {
+ pattern.append(src);
+ }
+ } else if (unit.src != null) {
+ pattern.append(unit.src);
+ }
+
+ // We can call the "complete" constructor with null values, but we want to test that
+ // all constructors work properly.
+ MessageFormatter.Builder mfBuilder =
+ MessageFormatter.builder().setPattern(pattern.toString());
+ if (unit.locale != null && !unit.locale.isEmpty()) {
+ mfBuilder.setLocale(Locale.forLanguageTag(unit.locale));
+ } else {
+ mfBuilder.setLocale(Locale.US);
+ }
+
+ try {
+ MessageFormatter mf = mfBuilder.build();
+ if (unit.params != null) {
+ params = unit.params;
+ }
+ String result = mf.formatToString(params);
+ if (expectsErrors(unit)) {
+ fail(reportCase(unit)
+ + "\nExpected error, but it didn't happen.\n"
+ + "Result: '" + result + "'");
+ } else {
+ assertEquals(reportCase(unit), unit.exp, result);
+ }
+ } catch (IllegalArgumentException | NullPointerException e) {
+ if (!expectsErrors(unit)) {
+ fail(reportCase(unit)
+ + "\nNo error was expected here, but it happened:\n"
+ + e.getMessage());
+ }
+ }
+ }
+
+ private static String reportCase(Unit unit) {
+ return unit.toString();
+ }
+
+ static Reader jsonReader(String jsonFileName) {
+ InputStream json = TestUtils.class.getResourceAsStream(jsonFileName);
+ return new BufferedReader(new InputStreamReader(json, StandardCharsets.UTF_8));
+ }
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/Unit.java b/android_icu4j/src/main/tests/android/icu/dev/test/message2/Unit.java
new file mode 100644
index 000000000..ab87fc206
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/Unit.java
@@ -0,0 +1,111 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package android.icu.dev.test.message2;
+
+import java.util.List;
+import java.util.Map;
+import java.util.StringJoiner;
+
+// Class corresponding to the json test files.
+// Since this is serialized by Gson, the field names should match the keys in the .json files.
+class Unit {
+ final String src;
+ final List<String> srcs;
+ final String locale;
+ final Map<String, Object> params;
+ final String exp;
+ final String ignore;
+ final List<Error> errors;
+
+ Unit(
+ String src,
+ List<String> srcs,
+ String locale,
+ Map<String, Object> params,
+ String exp,
+ String ignore,
+ List<Error> errors) {
+ this.src = src;
+ this.srcs = srcs;
+ this.locale = locale;
+ this.params = params;
+ this.exp = exp;
+ this.ignore = ignore;
+ this.errors = errors;
+ }
+
+ class Error {
+ final String name;
+ final String type;
+
+ Error(String name, String type) {
+ this.name = name;
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return "Error ["
+ + (name != null ? "name=" + name + ", " : "")
+ + (type != null ? "type=" + type : "")
+ + "]";
+ }
+ }
+
+ @Override
+ public String toString() {
+ StringJoiner result = new StringJoiner(", ", "UnitTest {", "}");
+ result.add("src=" + escapeString(src));
+ if (params != null) {
+ result.add("params=" + params);
+ }
+ if (exp != null) {
+ result.add("exp=" + escapeString(exp));
+ }
+ return result.toString();
+ }
+
+ /**
+ * Creates and returns a new Unit created by merging the current unit with the `other` one.
+ *
+ * <p>Each value in `other`, if not null, will override the corresponding current value.</p>
+ *
+ * @param other the unit to merge into the current one
+ * @return a new unit created by merging `this` unit and `other`
+ */
+ public Unit merge(Unit other) {
+ String newSrc = other.src != null ? other.src : this.src;
+ List<String> newSrcs = other.srcs != null ? other.srcs : this.srcs;
+ String newLocale = other.locale != null ? other.locale : this.locale;
+ Map<String, Object> newParams = other.params != null ? other.params : this.params;
+ String newExp = other.exp != null ? other.exp : this.exp;
+ String newIgnore = other.ignore != null ? other.ignore : this.ignore;
+ List<Error> newErrors = other.errors != null ? other.errors : this.errors;
+ return new Unit(newSrc, newSrcs, newLocale, newParams, newExp, newIgnore, newErrors);
+ }
+
+ private static String escapeString(String str) {
+ if (str == null) {
+ return "null";
+ }
+
+ StringBuilder result = new StringBuilder();
+ str.chars().forEach(c -> {
+ switch (c) {
+ case '\\': result.append("\\\\"); break;
+ case '\t': result.append("\\t"); break;
+ case '\n': result.append("\\n"); break;
+ case '\r': result.append("\\r"); break;
+ default:
+ if (c < 0x0020 || (c >= 0x3000 && c <= 3020)) {
+ result.append(String.format("\\u%04X", c));
+ } else {
+ result.append((char) c);
+ }
+ }
+ });
+ return "\"" + result.toString() + "\"";
+ }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/data-model-errors.json b/android_icu4j/src/main/tests/android/icu/dev/test/message2/data-model-errors.json
new file mode 100644
index 000000000..0a6bd6764
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/data-model-errors.json
@@ -0,0 +1,32 @@
+{
+ "Variant Key Mismatch": [
+ ".match {$foo :x} * * {{foo}}",
+ ".match {$foo :x} {$bar :x} * {{foo}}"
+ ],
+ "Missing Fallback Variant": [
+ ".match {:foo} 1 {{_}}",
+ ".match {:foo} other {{_}}",
+ ".match {:foo} {:bar} * 1 {{_}} 1 * {{_}}"
+ ],
+ "Missing Selector Annotation": [
+ ".match {$foo} one {{one}} * {{other}}",
+ ".input {$foo} .match {$foo} one {{one}} * {{other}}",
+ ".local $foo = {$bar} .match {$foo} one {{one}} * {{other}}"
+ ],
+ "Duplicate Declaration": [
+ ".input {$foo} .input {$foo} {{_}}",
+ ".input {$foo} .local $foo = {42} {{_}}",
+ ".local $foo = {42} .input {$foo} {{_}}",
+ ".local $foo = {:unknown} .local $foo = {42} {{_}}",
+ ".local $foo = {$bar} .local $bar = {42} {{_}}",
+ ".local $foo = {$foo} {{_}}",
+ ".local $foo = {$bar} .local $bar = {$baz} {{_}}",
+ ".local $foo = {$bar :func} .local $bar = {$baz} {{_}}",
+ ".local $foo = {42 :func opt=$foo} {{_}}",
+ ".local $foo = {42 :func opt=$bar} .local $bar = {42} {{_}}"
+ ],
+ "Duplicate Option Name": [
+ "bad {:placeholder option=x option=x}",
+ "bad {:placeholder ns:option=x ns:option=y}"
+ ]
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-parser-tests.json b/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-parser-tests.json
new file mode 100644
index 000000000..56e3094e5
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-parser-tests.json
@@ -0,0 +1,61 @@
+{
+ "Simple messages": [
+ "",
+ "Hello",
+ "Hello world!",
+ "Hello \\t \\n \\r \\{ world!",
+ "Hello world {:datetime}",
+ "Hello world {foo}",
+ "Hello {0} world",
+ "Hello {123} world",
+ "Hello {-123} world",
+ "Hello {3.1416} world",
+ "Hello {-3.1416} world",
+ "Hello {123E+2} world",
+ "Hello {123E-2} world",
+ "Hello {123.456E+2} world",
+ "Hello {123.456E-2} world",
+ "Hello {-123.456E+2} world",
+ "Hello {-123.456E-2} world",
+ "Hello {-123E+2} world",
+ "Hello {-123E-2} world",
+ "Hello world {$exp}",
+ "Hello world {$exp :datetime}",
+ "Hello world {|2024-02-27| :datetime}",
+ "Hello world {$exp :datetime style=long} and more",
+ "Hello world {$exp :function number=1234} and more",
+ "Hello world {$exp :function unquoted=left } and more",
+ "Hello world {$exp :function quoted=|Something| } and more",
+ "Hello world {$exp :function quoted=|Something with spaces| } and more",
+ "Hello world {$exp :function quoted=|Something with \\| spaces and \\| escapes| } and more",
+ "Hello world {$exp :function number=1234 unquoted=left quoted=|Something|}",
+ "Hello world {$exp :function number=1234 unquoted=left quoted=|Something longer|}",
+ "Hello world {$exp :function number=1234 unquoted=left quoted=|Something \\| longer|}"
+ ],
+ "Attributes": [
+ "Hello world {$exp}",
+ "Hello world {$exp @attr}",
+ "Hello world {$exp @valid @attr=a @attrb=123 @atrn=|foo bar|}",
+ "Hello world {$exp :date @valid @attr=aaaa @attrb=123 @atrn=|foo bar|}",
+ "Hello world {$exp :date year=numeric month=long day=numeric int=12 @valid @attr=a @attrb=123 @atrn=|foo bar|}"
+ ],
+ "Reserved and private": [
+ "Reserved {$exp &foo |something more protected|} and more",
+ "Reserved {$exp %foo |something quoted \\| inside|} and more",
+ "{{.starting with dot is OK here}}",
+ "{{Some string pattern, with {$foo} and {$exp :date style=long}!}}"
+ ],
+ "Simple messages, with declarations": [
+ ".input {$pi :number}",
+ ".input {$exp :date}",
+ ".local $foo = {$exp}",
+ ".local $foo = {$exp :date}",
+ ".local $foo = {$exp :date year=numeric month=long day=numeric}",
+ ".local $bar = {$foo :date month=medium}",
+ ".something |reserved=| {$foo :date}"
+ ],
+ "Multiple declarations in one message": [
+ ".input {$a :date} .local $b = {$a :date year=numeric month=long day=numeric} .local $c = {$b :date month=medium} .someting |reserved = \\| and more| {$x :date} {$y :date} {$z :number}",
+ ".input {$a :date} .local $exp = {$a :date style=full} {{Your card expires on {$exp}!}}"
+ ]
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-functions.json b/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-functions.json
new file mode 100644
index 000000000..9dc118bd0
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-functions.json
@@ -0,0 +1,193 @@
+{
+ "Date and time formats": [
+ {
+ "src": "Expires on {$exp}",
+ "exp": "Expires on 8/3/24, 9:43 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime}",
+ "exp": "Expires on 8/3/24, 9:43 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime icu:skeleton=yMMMMdjmsSSEE}",
+ "exp": "Expires on Sat, August 3, 2024 at 9:43:57.00 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime dateStyle=full}",
+ "exp": "Expires on Saturday, August 3, 2024"
+ },
+ {
+ "src": "Expires on {$exp :datetime dateStyle=long}",
+ "exp": "Expires on August 3, 2024"
+ },
+ {
+ "src": "Expires on {$exp :datetime dateStyle=medium}",
+ "exp": "Expires on Aug 3, 2024"
+ },
+ {
+ "src": "Expires on {$exp :datetime timeStyle=long}",
+ "exp": "Expires on 9:43:57 PM PDT"
+ },
+ {
+ "src": "Expires on {$exp :datetime timeStyle=medium}",
+ "exp": "Expires on 9:43:57 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime timeStyle=short}",
+ "exp": "Expires on 9:43 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime dateStyle=full timeStyle=medium}",
+ "exp": "Expires on Saturday, August 3, 2024 at 9:43:57 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime year=numeric month=long}",
+ "exp": "Expires on August 2024"
+ },
+ {
+ "src": "Expires on {$exp :datetime year=numeric month=medium day=numeric weekday=long hour=numeric minute=numeric}",
+ "exp": "Expires on 3 Saturday 2024, 9:43 PM"
+ },
+ {
+ "comment": "Make sure we ignore date / time fields if needed",
+ "src": "Expires on {$exp :date year=numeric month=medium day=numeric weekday=long hour=numeric minute=numeric}",
+ "exp": "Expires on 3 Saturday 2024"
+ },
+ {
+ "comment": "Make sure we ignore date / time fields if needed",
+ "src": "Expires at {$exp :time year=numeric month=medium day=numeric weekday=long hour=numeric minute=numeric}",
+ "exp": "Expires at 9:43 PM"
+ },
+ {
+ "comment": "Make sure we ignore date / time fields if needed",
+ "src": "Expires at {$exp :time style=long dateStyle=full timeStyle=medium}",
+ "exp": "Expires at 9:43:57 PM PDT"
+ },
+ {
+ "comment": "Make sure we ignore date / time fields if needed",
+ "src": "Expires on {$exp :date style=long dateStyle=full timeStyle=medium}",
+ "exp": "Expires on August 3, 2024"
+ }
+ ],
+ "Literals" : [
+ {
+ "src": "Expires on {|2025-02-27| :datetime dateStyle=full}",
+ "exp": "Expires on Thursday, February 27, 2025"
+ },
+ {
+ "src": "Expires at {|2024-07-02T19:23:45| :datetime timeStyle=full}",
+ "exp": "Expires at 7:23:45 PM Pacific Daylight Time"
+ },
+ {
+ "src": "Expires at {|2024-07-02T19:23:45.123| :datetime timeStyle=full}",
+ "exp": "Expires at 7:23:45 PM Pacific Daylight Time"
+ },
+ {
+ "src": "Expires on {|2025-02-27T19:23:45| :datetime dateStyle=full}",
+ "exp": "Expires on Thursday, February 27, 2025"
+ },
+ {
+ "src": "Expires at {|2024-07-02T19:23:45Z| :datetime timeStyle=long}",
+ "exp": "Expires at 7:23:45 PM GMT"
+ },
+ {
+ "src": "Expires at {|2024-07-02T19:23:45+03:30| :datetime timeStyle=full}",
+ "exp": "Expires at 7:23:45 PM GMT+03:30"
+ }
+ ],
+ "Chaining" : [
+ {
+ "comment": "Horibly long, but I really wanted to test multiple declarations with overrides, and you can't join strings in JSON",
+ "srcs": [
+ ".input {$exp :datetime timeStyle=short}\n",
+ ".input {$user :string}\n",
+ ".local $longExp = {$exp :datetime dateStyle=long}\n",
+ ".local $zooExp = {$exp :datetime dateStyle=short timeStyle=$tsOver}\n",
+ "{{Hello John, you want '{$exp}', '{$longExp}', or '{$zooExp}' or even '{$exp :datetime dateStyle=full}'?}}"
+ ],
+ "exp": "Hello John, you want '9:43 PM', 'August 3, 2024 at 9:43 PM', or '8/3/24, 9:43:57 PM Pacific Daylight Time' or even 'Saturday, August 3, 2024 at 9:43 PM'?"
+ },
+ {
+ "srcs": [
+ ".input {$exp :datetime year=numeric month=numeric day=|2-digit|}\n",
+ ".local $longExp = {$exp :datetime month=long weekday=long}\n",
+ "{{Expires on '{$exp}' ('{$longExp}').}}"
+ ],
+ "exp": "Expires on '8/03/2024' ('Saturday, August 03, 2024')."
+ }
+ ],
+ "Number formatter" : [
+ {
+ "src": "Format {$val} number",
+ "params": { "val": 31 },
+ "exp": "Format 31 number"
+ },
+ {
+ "src": "Format {123456789.9876} number",
+ "locale": "en-IN",
+ "exp": "Format 12,34,56,789.9876 number"
+ },
+ {
+ "src": "Format {|3.1416|} number",
+ "locale": "ar-AR-u-nu-latn",
+ "exp": "Format 3.1416 number"
+ },
+ {
+ "src": "Format {|3.1416|} number",
+ "locale": "ar-AR-u-nu-arab",
+ "exp": "Format ٣٫١٤١٦ number"
+ },
+ {
+ "src": "Format {3.1415926 :number}",
+ "exp": "Format 3.141593"
+ },
+ {
+ "src": "Format {3.1415926 :number maximumFractionDigits=4}",
+ "exp": "Format 3.1416"
+ },
+ {
+ "src": "Format {3 :number minimumFractionDigits=2}",
+ "exp": "Format 3.00"
+ },
+ {
+ "src": "Format {3.2 :number minimumFractionDigits=2}",
+ "exp": "Format 3.20"
+ },
+ {
+ "src": "Format {123456789.97531 :number maximumSignificantDigits=4}",
+ "exp": "Format 123,500,000"
+ },
+ {
+ "src": "Format {3.1415926 :number}",
+ "exp": "Format 3.141593"
+ },
+ {
+ "src": "Numbering system {123456 :number numberingSystem=deva}",
+ "exp": "Numbering system १२३,४५६"
+ },
+ {
+ "src": "Percent {0.1416 :number style=percent}",
+ "exp": "Percent 14.16%"
+ },
+ {
+ "src": "Scientific {123456789.97531 :number notation=scientific}",
+ "exp": "Scientific 1.234568E8"
+ },
+ {
+ "src": "Engineering {123456789.97531 :number notation=engineering}",
+ "exp": "Engineering 123.45679E6"
+ },
+ {
+ "src": "Compact {123456789.97531 :number notation=compact}",
+ "exp": "Compact 123M"
+ },
+ {
+ "src": "Compact {123456789.97531 :number notation=compact compactDisplay=long}",
+ "exp": "Compact 123 million"
+ },
+ {
+ "src": "Compact {123456789.97531 :number notation=compact compactDisplay=short}",
+ "exp": "Compact 123M"
+ }
+ ]
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-previous-release.json b/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-previous-release.json
new file mode 100644
index 000000000..6c235c2a3
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-previous-release.json
@@ -0,0 +1,390 @@
+[
+ {
+ "src": "hello",
+ "exp": "hello"
+ },
+ {
+ "src": "hello {|world|}",
+ "exp": "hello world"
+ },
+ {
+ "src": "hello {||}",
+ "exp": "hello "
+ },
+ {
+ "src": "hello {$place}",
+ "params": { "place": "world" },
+ "exp": "hello world"
+ },
+ {
+ "src": "hello {$place}",
+ "exp": "hello {$place}",
+ "errorsJs": [{ "type": "missing-var" }]
+ },
+ {
+ "src": "{$one} and {$two}",
+ "params" : { "one": 1.3, "two": 4.2 },
+ "exp": "1.3 and 4.2"
+ },
+ {
+ "src": "{$one} et {$two}",
+ "locale": "fr",
+ "params": { "one": 1.3, "two": 4.2 },
+ "exp": "1,3 et 4,2"
+ },
+ {
+ "src": "hello {|4.2| :number}",
+ "exp": "hello 4.2"
+ },
+ {
+ "locale": "ar-EG",
+ "src": "hello {|4.2| :number}",
+ "exp": "hello \u0664\u066B\u0662"
+ },
+ {
+ "src": "hello {|foo| :number}",
+ "exp": "hello {|foo|}"
+ },
+ {
+ "src": "hello {:number}",
+ "exp": "hello {|foo|}",
+ "comment": "This is different from JS, should be an error.",
+ "errors": [{ "type": "ICU4J: exception" }]
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=2}",
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=|2|}",
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=$foo}",
+ "params": { "foo": 2f },
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=$foo}",
+ "params": { "foo": "2" },
+ "exp": "hello 4.20",
+ "errorsJs": ["invalid-type"]
+ },
+ {
+ "src": ".local $foo = {|bar|} {{bar {$foo}}}",
+ "exp": "bar bar"
+ },
+ {
+ "src": ".local $foo = {bar} {{bar {$foo}}}",
+ "params": { "foo": "foo" },
+ "expectedJs": "bar foo",
+ "comment": "It is undefined if we allow arguments to override local variables, or it is an error. And undefined who wins if that happens, the local variable of the argument.",
+ "exp": "bar bar"
+ },
+ {
+ "src": ".local $foo = {$bar} {{bar {$foo}}}",
+ "params": { "bar": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".local $foo = {$bar :number} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.2"
+ },
+ {
+ "src": ".local $foo = {$bar :number minimumFractionDigits=2} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.20"
+ },
+ {
+ "ignore": "Maybe. Because `minimumFractionDigits=foo`",
+ "src": ".local $foo = {$bar :number minimumFractionDigits=foo} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.2",
+ "errors": [{ "type": "invalid-type" }]
+ },
+ {
+ "src": ".local $foo = {$bar :number} {{bar {$foo}}}",
+ "params": { "bar": "foo" },
+ "exp": "bar {|foo|}"
+ },
+ {
+ "src": ".local $bar = {$baz} .local $foo = {$bar} {{bar {$foo}}}",
+ "params": { "baz": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "patternJs": ".match {$foo} 1 {{one}} * {{other}}",
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "params": { "foo": "1" },
+ "exp": "one"
+ },
+ {
+ "src": ".match {$foo :number} 1 {{one}} * {{other}}",
+ "params": { "foo": "1" },
+ "comment": "Should this be error? Plural on string?",
+ "expectedJs": "one",
+ "exp": "other"
+ },
+ {
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "params": { "foo": "1" },
+ "exp": "one"
+ },
+ {
+ "patternJs": ".match {$foo} 1 {{one}} * {{other}}",
+ "src": ".match {$foo :number} 1 {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".match {$foo :number} 1 {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "ignore": "Can't pass null in a map",
+ "src": ".match {$foo} 1 {{one}} * {{other}}",
+ "params": { "foo": null },
+ "exp": "other"
+ },
+ {
+ "srcJs": ".match {$foo} 1 {{one}} * {{other}}",
+ "src": ".match {$foo :number} 1 {{one}} * {{other}}",
+ "exp": "other",
+ "errors": [{ "type": "missing-var" }]
+ },
+ {
+ "srcJs": ".match {$foo} one {{one}} * {{other}}",
+ "src": ".match {$foo :number} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "srcJs": ".match {$foo} 1 {{=1}} one {{one}} * {{other}}",
+ "src": ".match {$foo :number} 1 {{=1}} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "=1"
+ },
+ {
+ "srcJs": ".match {$foo} one {{one}} 1 {{=1}} * {{other}}",
+ "src": ".match {$foo :number} one {{one}} 1 {{=1}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "=1"
+ },
+ {
+ "srcJs": ".match {$foo} {$bar} one one {{one one}} one * {{one other}} * * {{other}}",
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 1, "bar": 1 },
+ "exp": "one one"
+ },
+ {
+ "srcJs": ".match {$foo} {$bar} one one {{one one}} one * {{one other}} * * {{other}}",
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 1, "bar": 2 },
+ "exp": "one other"
+ },
+ {
+ "srcJs": ".match {$foo} {$bar} one one {{one one}} one * {{one other}} * * {{other}}",
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 2, "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "srcJs": ".local $foo = {$bar} .match {$foo} one {{one}} * {{other}}",
+ "src": ".local $foo = {$bar} .match {$foo :number} one {{one}} * {{other}}",
+ "params": { "bar": 1 },
+ "exp": "one"
+ },
+ {
+ "srcJs": ".local $foo = {$bar} .match {$foo} one {{one}} * {{other}}",
+ "src": ".local $foo = {$bar} .match {$foo :number} one {{one}} * {{other}}",
+ "params": { "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "srcJs": ".local $bar = {$none} .match {$foo} one {{one}} * {{{$bar}}}",
+ "src": ".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}",
+ "params": { "foo": 1, "none": "" },
+ "exp": "one"
+ },
+ {
+ "srcJs": ".local $bar = {$none} .match {$foo} one {{one}} * {{{$bar}}}",
+ "src": ".local $bar = {$none :number} .match {$foo} one {{one}} * {{{$bar}}}",
+ "params": { "foo": 2 },
+ "exp": "{$bar}",
+ "errors": [{ "type": "missing-var" }]
+ },
+ {
+ "src": ".local bar = {|foo|} {{$bar}}",
+ "exp": "{$bar}",
+ "errors": [{ "type": "missing-char" }, { "type": "missing-var" }]
+ },
+ {
+ "src": ".local $bar {|foo|} {{$bar}}",
+ "exp": "foo",
+ "errors": [{ "type": "missing-char" }]
+ },
+ {
+ "src": ".local $bar = |foo| {{$bar}}",
+ "exp": "{$bar}",
+ "errors": [{ "type": "missing-char" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "{{#tag}}",
+ "exp": "#tag"
+ },
+ {
+ "src": "{#tag}",
+ "exp": ""
+ },
+ {
+ "src": "{#tag}content",
+ "exp": "content"
+ },
+ {
+ "src": "{#tag}content{/tag}",
+ "exp": "content"
+ },
+ {
+ "src": "{#tag}content",
+ "exp": "content"
+ },
+ {
+ "comment": "When we format markup to string we generate no output",
+ "src": "{#tag foo=bar}",
+ "exp": ""
+ },
+ {
+ "src": "{#tag foo=foo bar=$bar}",
+ "params": { "bar": "b a r" },
+ "exp": ""
+ },
+ {
+ "src": "bad {#markup/} test",
+ "exp": "bad test",
+ "errorsJs": [{ "type": "extra-content" }]
+ },
+ {
+ "src": "{#tag foo=bar}",
+ "exp": "",
+ "errorsJs": [{ "type": "extra-content" }]
+ },
+ {
+ "src": "no braces",
+ "exp": "no braces",
+ "errorsJs": [{ "type": "parse-error" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "no braces {$foo}",
+ "params": { "foo": 2 },
+ "exp": "no braces 2",
+ "errorsJs": [{ "type": "parse-error" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "{missing end brace",
+ "exp": "missing end brace",
+ "errors": [{ "type": "missing-char" }]
+ },
+ {
+ "src": "{missing end {$brace",
+ "exp": "missing end {$brace}",
+ "errors": [{ "type": "missing-char" }, { "type": "missing-char" }, { "type": "missing-var" }]
+ },
+ {
+ "src": "{{extra}} content",
+ "exp": "extra",
+ "errors": [{ "type": "extra-content" }]
+ },
+ {
+ "src": "empty { }",
+ "exp": "empty ",
+ "errors": [{ "type": "parse-error" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "bad {:}",
+ "exp": "bad {:}",
+ "errors": [{ "type": "empty-token" }, { "type": "missing-func" }]
+ },
+ {
+ "src": "bad {placeholder}",
+ "exp": "bad placeholder",
+ "errorsJs": [{ "type": "parse-error" }, { "type": "extra-content" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "no-equal {|42| :number minimumFractionDigits 2}",
+ "exp": "no-equal 42.00",
+ "errors": [{ "type": "missing-char" }]
+ },
+ {
+ "src": "bad {:placeholder option=}",
+ "exp": "bad {:placeholder}",
+ "errors": [{ "type": "empty-token" }, { "type": "missing-func" }]
+ },
+ {
+ "src": "bad {:placeholder option value}",
+ "exp": "bad {:placeholder}",
+ "errors": [{ "type": "missing-char" }, { "type": "missing-func" }]
+ },
+ {
+ "src": "{bad {:placeholder option}}",
+ "exp": "bad {:placeholder}",
+ "errors": [{ "type": "missing-char" }, { "type": "empty-token" }, { "type": "missing-func" }]
+ },
+ {
+ "src": "{bad {$placeholder option}}",
+ "exp": "bad {$placeholder}",
+ "errors": [{ "type": "extra-content" }, { "type": "extra-content" }, { "type": "missing-var" }]
+ },
+ {
+ "src": "{no {$placeholder end}",
+ "exp": "no {$placeholder}",
+ "errors": [{ "type": "extra-content" }, { "type": "missing-var" }]
+ },
+ {
+ "src": ".match {} * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "parse-error" }, { "type": "bad-selector" }, { "type": "junk-element" }]
+ },
+ {
+ "src": ".match {#foo} * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "bad-selector" }]
+ },
+ {
+ "src": ".match {|foo|} *{{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "missing-char" }]
+ },
+ {
+ "src": ".match * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "empty-token" }]
+ },
+ {
+ "src": ".match {|x|} * foo",
+ "exp": "",
+ "errors": [{ "type": "key-mismatch" }, { "type": "missing-char" }]
+ },
+ {
+ "src": ".match {|x|} * {{foo}} extra",
+ "exp": "foo",
+ "errors": [{ "type": "extra-content" }]
+ },
+ {
+ "src": ".match |x| * {{foo}}",
+ "exp": "",
+ "errors": [{ "type": "empty-token" }, { "type": "extra-content" }]
+ },
+ {
+ "src": ".match {$foo} * * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "key-mismatch" }, { "type": "missing-var" }]
+ },
+ {
+ "src": ".match {$foo} {$bar} * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "key-mismatch" }, { "type": "missing-var" }, { "type": "missing-var" }]
+ }
+]
+
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-selectors.json b/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-selectors.json
new file mode 100644
index 000000000..1f237254f
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/icu-test-selectors.json
@@ -0,0 +1,131 @@
+[
+ {
+ "comment": "Testing simple plural",
+ "shared": {
+ "srcs": [
+ ".match {$count :number}\n",
+ "one {{{$count} file}}\n",
+ " * {{{$count} files}}"
+ ]
+ },
+ "variations" : [
+ { "params": { "count": 0 }, "exp": "0 files" },
+ { "params": { "count": 1 }, "exp": "1 file" },
+ { "params": { "count": 3 }, "exp": "3 files" },
+ { "params": { "count": 0 }, "locale": "fr", "exp": "0 file" },
+ { "params": { "count": 1 }, "locale": "fr", "exp": "1 file" },
+ { "params": { "count": 3 }, "locale": "fr", "exp": "3 files" }
+ ]
+ },
+ {
+ "comment": "Testing simple plural, but swap variant order",
+ "shared": {
+ "srcs": [
+ ".match {$count :number}\n",
+ " * {{You deleted {$count} files}}\n",
+ "one {{You deleted {$count} file}}"
+ ]
+ },
+ "variations" : [
+ {
+ "params": { "count": 1 },
+ "exp": "You deleted 1 file"
+ },
+ {
+ "params": { "count": 3 },
+ "exp": "You deleted 3 files"
+ }
+ ]
+ },
+ {
+ "comment": "Ordinal, with mixed order and exact matches",
+ "shared": {
+ "srcs": [
+ ".match {$place :number select=ordinal}\n",
+ "* {{You finished in the {$place}th place}}\n",
+ "two {{You finished in the {$place}nd place}}\n",
+ "one {{You finished in the {$place}st place}}\n",
+ "1 {{You got the gold medal}}\n",
+ "2 {{You got the silver medal}}\n",
+ "3 {{You got the bronze medal}}\n",
+ "few {{You finished in the {$place}rd place}}\n"
+ ]
+ },
+ "variations" : [
+ { "params": { "place": 1 }, "exp": "You got the gold medal" },
+ { "params": { "place": 2 }, "exp": "You got the silver medal" },
+ { "params": { "place": 3 }, "exp": "You got the bronze medal" },
+ { "params": { "place": 7 }, "exp": "You finished in the 7th place" },
+ { "params": { "place": 21 }, "exp": "You finished in the 21st place" },
+ { "params": { "place": 22 }, "exp": "You finished in the 22nd place" },
+ { "params": { "place": 23 }, "exp": "You finished in the 23rd place" },
+ { "params": { "place": 28 }, "exp": "You finished in the 28th place" }
+ ]
+ },
+ {
+ "comment": "Plural combinations, mixed order",
+ "shared": {
+ "srcs": [
+ ".match {$fileCount :number} {$folderCount :number}\n",
+ " * * {{You found {$fileCount} files in {$folderCount} folders}}\n",
+ " one one {{You found {$fileCount} file in {$folderCount} folder}}\n",
+ " one * {{You found {$fileCount} file in {$folderCount} folders}}\n",
+ " * one {{You found {$fileCount} files in {$folderCount} folder}}\n"
+ ]
+ },
+ "variations" : [
+ { "params": { "fileCount": 1, "folderCount": 1 }, "exp": "You found 1 file in 1 folder" },
+ { "params": { "fileCount": 1, "folderCount": 5 }, "exp": "You found 1 file in 5 folders" },
+ { "params": { "fileCount": 7, "folderCount": 1 }, "exp": "You found 7 files in 1 folder" },
+ { "params": { "fileCount": 7, "folderCount": 3 }, "exp": "You found 7 files in 3 folders" }
+ ]
+ },
+ {
+ "comment": "Test that the selection honors the formatting option (`1.00 dollars`)",
+ "shared": {
+ "srcs": [
+ ".local $c = {$price :number minimumFractionDigits=$minF}\n",
+ ".match {$c}\n",
+ " one {{{$c} dollar}}\n",
+ " * {{{$c} dollars}}"
+ ]
+ },
+ "variations" : [
+ { "params": { "price": 1, "minF": 0 }, "exp": "1 dollar" },
+ { "params": { "price": 1, "minF": 2 }, "exp": "1.00 dollars" }
+ ]
+ },
+ {
+ "comment": "Test that the selection honors the formatting option (`1.00 dollars`)",
+ "shared": {
+ "srcs": [
+ ".local $c = {$price :number maximumFractionDigits=$maxF}\n",
+ ".match {$c}\n",
+ " one {{{$c} dollar}}\n",
+ " * {{{$c} dollars}}"
+ ]
+ },
+ "variations" : [
+ { "params": { "price": 1.25, "maxF": 0 }, "exp": "1 dollar" },
+ { "params": { "price": 1.25, "maxF": 2 }, "exp": "1.25 dollars" }
+ ]
+ },
+ {
+ "comment": "Test that the selection honors the `:integer` over options",
+ "shared": {
+ "srcs": [
+ ".local $c = {$price :integer maximumFractionDigits=$maxF}\n",
+ ".match {$c}\n",
+ " one {{{$c} dollar}}\n",
+ " * {{{$c} dollars}}"
+ ]
+ },
+ "variations" : [
+ { "params": { "price": 1, "maxF": 0 }, "exp": "1 dollar" },
+ { "params": { "price": 1, "maxF": 2 }, "exp": "1 dollar" },
+ { "params": { "price": 1.25, "maxF": 0 }, "exp": "1 dollar" },
+ { "params": { "price": 1.25, "maxF": 2 }, "exp": "1 dollar" },
+ { "params": { "price": 4.12345, "maxF": 4 }, "exp": "4 dollars" }
+ ]
+ }
+]
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/syntax-errors.json b/android_icu4j/src/main/tests/android/icu/dev/test/message2/syntax-errors.json
new file mode 100644
index 000000000..fc4537131
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/syntax-errors.json
@@ -0,0 +1,56 @@
+[
+ ".",
+ "{",
+ "}",
+ "{}",
+ "{{",
+ "{{}",
+ "{{}}}",
+ "{|foo| #markup}",
+ "{{missing end brace}",
+ "{{missing end braces",
+ "{{missing end {$braces",
+ "{{extra}} content",
+ "empty { } placeholder",
+ "missing space {42:func}",
+ "missing space {|foo|:func}",
+ "missing space {|foo|@bar}",
+ "missing space {:func@bar}",
+ "missing space {:func @bar@baz}",
+ "missing space {:func @bar=42@baz}",
+ "missing space {+reserved@bar}",
+ "missing space {&private@bar}",
+ "bad {:} placeholder",
+ "bad {\\u0000placeholder}",
+ "no-equal {|42| :number minimumFractionDigits 2}",
+ "bad {:placeholder option=}",
+ "bad {:placeholder option value}",
+ "bad {:placeholder option:value}",
+ "bad {:placeholder option}",
+ "bad {:placeholder:}",
+ "bad {::placeholder}",
+ "bad {:placeholder::foo}",
+ "bad {:placeholder option:=x}",
+ "bad {:placeholder :option=x}",
+ "bad {:placeholder option::x=y}",
+ "bad {$placeholder option}",
+ "bad {:placeholder @attribute=}",
+ "bad {:placeholder @attribute=@foo}",
+ "no {placeholder end",
+ "no {$placeholder end",
+ "no {:placeholder end",
+ "no {|placeholder| end",
+ "no {|literal} end",
+ "no {|literal or placeholder end",
+ ".local bar = {|foo|} {{_}}",
+ ".local #bar = {|foo|} {{_}}",
+ ".local $bar {|foo|} {{_}}",
+ ".local $bar = |foo| {{_}}",
+ ".match {#foo} * {{foo}}",
+ ".match {} * {{foo}}",
+ ".match {|foo| :x} {|bar| :x} ** {{foo}}",
+ ".match * {{foo}}",
+ ".match {|x| :x} * foo",
+ ".match {|x| :x} * {{foo}} extra",
+ ".match |x| * {{foo}}"
+]
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/test-core.json b/android_icu4j/src/main/tests/android/icu/dev/test/message2/test-core.json
new file mode 100644
index 000000000..4400b6977
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/test-core.json
@@ -0,0 +1,212 @@
+[
+ { "src": "hello", "exp": "hello" },
+ { "src": "hello {world}", "exp": "hello world" },
+ {
+ "src": "hello { world\t\n}",
+ "exp": "hello world",
+ "cleanSrc": "hello {world}"
+ },
+ {
+ "src": "hello {\u3000world\r}",
+ "exp": "hello world",
+ "cleanSrc": "hello {world}"
+ },
+ { "src": "hello {|world|}", "exp": "hello world" },
+ { "src": "hello {||}", "exp": "hello " },
+ {
+ "src": "hello {$place}",
+ "params": { "place": "world" },
+ "exp": "hello world"
+ },
+ {
+ "src": "hello {$place-.}",
+ "params": { "place-.": "world" },
+ "exp": "hello world"
+ },
+ {
+ "src": "hello {$place}",
+ "errorsJs": [{ "type": "unresolved-var" }],
+ "exp": "hello {$place}"
+ },
+ {
+ "src": "{$one} and {$two}",
+ "params": { "one": 1.3, "two": 4.2 },
+ "exp": "1.3 and 4.2"
+ },
+ {
+ "src": "{$one} et {$two}",
+ "locale": "fr",
+ "params": { "one": 1.3, "two": 4.2 },
+ "exp": "1,3 et 4,2"
+ },
+ { "src": ".local $foo = {bar} {{bar {$foo}}}", "exp": "bar bar" },
+ { "src": ".local $foo = {|bar|} {{bar {$foo}}}", "exp": "bar bar" },
+ {
+ "src": ".local $foo = {|bar|} {{bar {$foo}}}",
+ "params": { "foo": "foo" },
+ "exp": "bar bar"
+ },
+ {
+ "src": ".local $foo = {$bar} {{bar {$foo}}}",
+ "params": { "bar": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".local $foo = {$baz} .local $bar = {$foo} {{bar {$bar}}}",
+ "params": { "baz": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".input {$foo} {{bar {$foo}}}",
+ "params": { "foo": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".input {$foo} .local $bar = {$foo} {{bar {$bar}}}",
+ "params": { "foo": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".local $foo = {$baz} .local $bar = {$foo} {{bar {$bar}}}",
+ "params": { "baz": "foo" },
+ "exp": "bar foo"
+ },
+ { "src": ".local $x = {42} .local $y = {$x} {{{$x} {$y}}}", "exp": "42 42" },
+ {
+ "src": "{#tag}",
+ "exp": "",
+ "parts": [{ "type": "markup", "kind": "open", "name": "tag" }]
+ },
+ {
+ "src": "{#tag}content",
+ "exp": "content",
+ "parts": [
+ { "type": "markup", "kind": "open", "name": "tag" },
+ { "type": "literal", "value": "content" }
+ ]
+ },
+ {
+ "src": "{#ns:tag}content{/ns:tag}",
+ "exp": "content",
+ "parts": [
+ { "type": "markup", "kind": "open", "name": "ns:tag" },
+ { "type": "literal", "value": "content" },
+ { "type": "markup", "kind": "close", "name": "ns:tag" }
+ ]
+ },
+ {
+ "src": "{/tag}content",
+ "exp": "content",
+ "parts": [
+ { "type": "markup", "kind": "close", "name": "tag" },
+ { "type": "literal", "value": "content" }
+ ]
+ },
+ {
+ "src": "{#tag foo=bar}",
+ "exp": "",
+ "parts": [
+ {
+ "type": "markup",
+ "kind": "open",
+ "name": "tag",
+ "options": { "foo": "bar" }
+ }
+ ]
+ },
+ {
+ "src": "{#tag foo=bar/}",
+ "cleanSrc": "{#tag foo=bar /}",
+ "exp": "",
+ "parts": [
+ {
+ "type": "markup",
+ "kind": "standalone",
+ "name": "tag",
+ "options": { "foo": "bar" }
+ }
+ ]
+ },
+ {
+ "src": "{#tag a:foo=|foo| b:bar=$bar}",
+ "params": { "bar": "b a r" },
+ "exp": "",
+ "parts": [
+ {
+ "type": "markup",
+ "kind": "open",
+ "name": "tag",
+ "options": { "a:foo": "foo", "b:bar": "b a r" }
+ }
+ ]
+ },
+ {
+ "src": "{/tag foo=bar}",
+ "exp": "",
+ "parts": [
+ {
+ "type": "markup",
+ "kind": "close",
+ "name": "tag",
+ "options": { "foo": "bar" }
+ }
+ ]
+ },
+ {
+ "src": "{42 @foo @bar=13}",
+ "exp": "42",
+ "parts": [{ "type": "string", "value": "42" }]
+ },
+ {
+ "src": "{42 @foo=$bar}",
+ "exp": "42",
+ "parts": [{ "type": "string", "value": "42" }]
+ },
+ {
+ "src": "foo {+reserved}",
+ "exp": "foo {+}",
+ "parts": [
+ { "type": "literal", "value": "foo " },
+ { "type": "fallback", "source": "+" }
+ ],
+ "errorsJs": [{ "type": "unsupported-annotation" }]
+ },
+ {
+ "src": "foo {&private}",
+ "exp": "foo {&}",
+ "parts": [
+ { "type": "literal", "value": "foo " },
+ { "type": "fallback", "source": "&" }
+ ],
+ "errorsJs": [{ "type": "unsupported-annotation" }]
+ },
+ {
+ "src": "foo {?reserved @a @b=$c}",
+ "exp": "foo {?}",
+ "parts": [
+ { "type": "literal", "value": "foo " },
+ { "type": "fallback", "source": "?" }
+ ],
+ "errorsJs": [{ "type": "unsupported-annotation" }]
+ },
+ {
+ "src": ".foo {42} {{bar}}",
+ "exp": "bar",
+ "parts": [{ "type": "literal", "value": "bar" }],
+ "errorsJs": [{ "type": "unsupported-statement" }]
+ },
+ {
+ "src": ".foo{42}{{bar}}",
+ "cleanSrc": ".foo {42} {{bar}}",
+ "exp": "bar",
+ "parts": [{ "type": "literal", "value": "bar" }],
+ "errorsJs": [{ "type": "unsupported-statement" }]
+ },
+ {
+ "src": ".foo |}lit{| {42}{{bar}}",
+ "cleanSrc": ".foo |}lit{| {42} {{bar}}",
+ "exp": "bar",
+ "parts": [{ "type": "literal", "value": "bar" }],
+ "errorsJs": [{ "type": "unsupported-statement" }]
+ }
+]
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/message2/test-functions.json b/android_icu4j/src/main/tests/android/icu/dev/test/message2/test-functions.json
new file mode 100644
index 000000000..8cf1b7a25
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/message2/test-functions.json
@@ -0,0 +1,325 @@
+{
+ "date": [
+ { "src": "{:date}", "exp": "{:date}", "errorsJs": [{ "type": "bad-input" }] },
+ {
+ "src": "{horse :date}",
+ "exp": "{|horse|}",
+ "errorsJs": [{ "name": "RangeError" }]
+ },
+ { "src": "{|2006-01-02| :date}", "exp": "1/2/06" },
+ { "src": "{|2006-01-02T15:04:06| :date}", "exp": "1/2/06" },
+ { "src": "{|2006-01-02| :date style=long}", "exp": "January 2, 2006" },
+ {
+ "src": ".local $d = {|2006-01-02| :date style=long} {{{$d :date}}}",
+ "exp": "January 2, 2006"
+ },
+ {
+ "ignore": "Can't chain :time and :date, they are different types",
+ "src": ".local $t = {|2006-01-02T15:04:06| :time} {{{$t :date}}}",
+ "exp": "1/2/06"
+ }
+ ],
+ "time": [
+ { "src": "{:time}", "exp": "{:time}", "errorsJs": [{ "type": "bad-input" }] },
+ {
+ "src": "{horse :time}",
+ "exp": "{|horse|}",
+ "errorsJs": [{ "name": "RangeError" }]
+ },
+ { "src": "{|2006-01-02T15:04:06| :time}", "expJs": "3:04 PM", "exp": "3:04 PM" },
+ {
+ "src": "{|2006-01-02T15:04:06| :time style=medium}",
+ "expJs": "3:04:06 PM",
+ "exp": "3:04:06 PM"
+ },
+ {
+ "src": ".local $t = {|2006-01-02T15:04:06| :time style=medium} {{{$t :time}}}",
+ "expJs": "3:04:06 PM",
+ "exp": "3:04:06 PM"
+ },
+ {
+ "ignore": "Can't chain :time and :date, they are different types",
+ "src": ".local $d = {|2006-01-02T15:04:06| :date} {{{$d :time}}}",
+ "exp": "3:04 PM"
+ }
+ ],
+ "datetime": [
+ {
+ "src": "{:datetime}",
+ "exp": "{:datetime}",
+ "errorsJs": [{ "type": "bad-input" }]
+ },
+ {
+ "src": "{$x :datetime}",
+ "exp": "{$x}",
+ "params": { "x": true },
+ "errors": [{ "type": "bad-input" }]
+ },
+ {
+ "src": "{horse :datetime}",
+ "exp": "{|horse|}",
+ "errorsJs": [{ "name": "RangeError" }]
+ },
+ { "src": "{|2006-01-02T15:04:06| :datetime}", "expJs": "1/2/06, 3:04 PM", "exp": "1/2/06, 3:04 PM" },
+ {
+ "src": "{|2006-01-02T15:04:06| :datetime year=numeric month=|2-digit|}",
+ "exp": "01/2006"
+ },
+ {
+ "src": "{|2006-01-02T15:04:06| :datetime dateStyle=long}",
+ "exp": "January 2, 2006"
+ },
+ {
+ "src": "{|2006-01-02T15:04:06| :datetime timeStyle=medium}",
+ "expJs": "3:04:06 PM",
+ "exp": "3:04:06 PM"
+ },
+ {
+ "src": "{$dt :datetime}",
+ "params": { "dt": "2006-01-02T15:04:06" },
+ "expJs": "1/2/06, 3:04 PM",
+ "exp": "1/2/06, 3:04 PM"
+ },
+ {
+ "ignore": "Can't chain :time and :date, they are different types",
+ "src": ".input {$dt :time style=medium} {{{$dt :datetime dateStyle=long}}}",
+ "params": { "dt": "2006-01-02T15:04:06" },
+ "exp": "January 2, 2006 at 3:04:06 PM"
+ }
+ ],
+ "integer": [
+ { "src": "hello {4.2 :integer}", "exp": "hello 4" },
+ { "src": "hello {-4.20 :integer}", "exp": "hello -4" },
+ { "src": "hello {0.42e+1 :integer}", "exp": "hello 4" },
+ {
+ "src": ".match {$foo :integer} one {{one}} * {{other}}",
+ "params": { "foo": 1.2 },
+ "exp": "one"
+ }
+ ],
+ "number": [
+ { "src": "hello {4.2 :number}", "exp": "hello 4.2" },
+ { "src": "hello {-4.20 :number}", "exp": "hello -4.2" },
+ { "src": "hello {0.42e+1 :number}", "exp": "hello 4.2" },
+ {
+ "src": "hello {foo :number}",
+ "exp": "hello {|foo|}",
+ "errorsJs": [{ "type": "bad-input" }]
+ },
+ {
+ "src": "hello {:number}",
+ "exp": "hello {:number}",
+ "errors": [{ "type": "bad-input" }]
+ },
+ {
+ "src": "hello {4.2 :number minimumFractionDigits=2}",
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=|2|}",
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {4.2 :number minimumFractionDigits=$foo}",
+ "params": { "foo": 2 },
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=$foo}",
+ "params": { "foo": "2" },
+ "exp": "hello 4.20"
+ },
+ {
+ "src": ".local $foo = {$bar :number} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.2"
+ },
+ {
+ "src": ".local $foo = {$bar :number minimumFractionDigits=2} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.20"
+ },
+ {
+ "src": ".local $foo = {$bar :number minimumFractionDigits=foo} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "comment": "I think it is fine to ignore invalid options",
+ "expJs": "bar {$bar}",
+ "exp": "bar 4.2",
+ "errorsJs": [{ "type": "bad-option" }]
+ },
+ {
+ "src": ".local $foo = {$bar :number} {{bar {$foo}}}",
+ "params": { "bar": "foo" },
+ "expJs": "bar {$bar}",
+ "exp": "bar {|foo|}",
+ "errorsJs": [{ "type": "bad-input" }]
+ },
+ {
+ "src": ".input {$foo :number} {{bar {$foo}}}",
+ "params": { "foo": 4.2 },
+ "exp": "bar 4.2"
+ },
+ {
+ "src": ".input {$foo :number minimumFractionDigits=2} {{bar {$foo}}}",
+ "params": { "foo": 4.2 },
+ "exp": "bar 4.20"
+ },
+ {
+ "src": ".input {$foo :number minimumFractionDigits=foo} {{bar {$foo}}}",
+ "params": { "foo": 4.2 },
+ "comment": "I think it is fine to ignore invalid options",
+ "exp": "bar 4.2",
+ "expJs": "bar {$foo}",
+ "errorsJs": [{ "type": "bad-option" }]
+ },
+ {
+ "src": ".input {$foo :number} {{bar {$foo}}}",
+ "params": { "foo": "foo" },
+ "expJs": "bar {$foo}",
+ "exp": "bar {|foo|}",
+ "errorsJs": [{ "type": "bad-input" }]
+ },
+ {
+ "src": ".match {$foo :number} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".match {$foo :number} 1 {{=1}} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "=1"
+ },
+ {
+ "src": ".match {$foo :number} one {{one}} 1 {{=1}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "=1"
+ },
+ {
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 1, "bar": 1 },
+ "exp": "one one"
+ },
+ {
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 1, "bar": 2 },
+ "exp": "one other"
+ },
+ {
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 2, "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "src": ".input {$foo :number} .match {$foo} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".local $foo = {$bar :number} .match {$foo} one {{one}} * {{other}}",
+ "params": { "bar": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".input {$foo :number} .local $bar = {$foo} .match {$bar} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".input {$bar :number} .match {$bar} one {{one}} * {{other}}",
+ "params": { "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "src": ".input {$bar} .match {$bar :number} one {{one}} * {{other}}",
+ "params": { "bar": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".input {$bar} .match {$bar :number} one {{one}} * {{other}}",
+ "params": { "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "src": ".input {$bar} .match {$bar :number} one {{one}} * {{other}}",
+ "params": { "bar": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".input {$bar} .match {$bar :number} one {{one}} * {{other}}",
+ "params": { "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "src": ".input {$none} .match {$foo :number} one {{one}} * {{{$none}}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}",
+ "params": { "foo": 2 },
+ "exp": "{$none}",
+ "errors": [{ "type": "unresolved-var" }]
+ },
+ {
+ "src": "{42 :number @foo @bar=13}",
+ "exp": "42",
+ "parts": [
+ { "type": "number", "parts": [{ "type": "integer", "value": "42" }] }
+ ]
+ }
+ ],
+ "ordinal": [
+ {
+ "src": ".match {$foo :ordinal} one {{st}} two {{nd}} few {{rd}} * {{th}}",
+ "params": { "foo": 1 },
+ "exp": "th",
+ "errors": [{ "type": "missing-func" }, { "type": "not-selectable" }]
+ },
+ {
+ "src": "hello {42 :ordinal}",
+ "exp": "hello {|42|}",
+ "errorsJs": [{ "type": "missing-func" }]
+ }
+ ],
+ "plural": [
+ {
+ "src": ".match {$foo :plural} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "other",
+ "errors": [{ "type": "missing-func" }, { "type": "not-selectable" }]
+ },
+ {
+ "src": "hello {42 :plural}",
+ "exp": "hello {|42|}",
+ "errorsJs": [{ "type": "missing-func" }]
+ }
+ ],
+ "string": [
+ {
+ "src": ".match {$foo :string} |1| {{one}} * {{other}}",
+ "params": { "foo": "1" },
+ "exp": "one"
+ },
+ {
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "expJs": "one",
+ "exp": "other"
+ },
+ {
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "params": { "foo": null },
+ "exp": "other"
+ },
+ {
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "exp": "other",
+ "errorsJs": [{ "type": "unresolved-var" }]
+ }
+ ]
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java
index 5c26a4c90..de096a4c6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java
@@ -27,14 +27,14 @@ public class IntHashtable {
public void put(int key, int value) {
if (value == defaultValue) {
- table.remove(new Integer(key));
+ table.remove(key);
} else {
- table.put(new Integer(key), new Integer(value));
+ table.put(key, value);
}
}
public int get(int key) {
- Integer value = table.get(new Integer(key));
+ Integer value = table.get(key);
if (value == null) return defaultValue;
return value.intValue();
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java
index bd0a1438c..d8e08da83 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java
@@ -27,14 +27,14 @@ public class IntStringHashtable {
public void put(int key, String value) {
if (value == defaultValue) {
- table.remove(new Integer(key));
+ table.remove(key);
} else {
- table.put(new Integer(key), value);
+ table.put(key, value);
}
}
public String get(int key) {
- String value = table.get(new Integer(key));
+ String value = table.get(key);
if (value == null) return defaultValue;
return value;
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java
index 8ccd647a5..36d51a71a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java
@@ -26,14 +26,14 @@ public class LongHashtable {
public void put(long key, int value) {
if (value == defaultValue) {
- table.remove(new Long(key));
+ table.remove(key);
} else {
- table.put(new Long(key), new Integer(value));
+ table.put(key, value);
}
}
public int get(long key) {
- Integer value = table.get(new Long(key));
+ Integer value = table.get(key);
if (value == null) return defaultValue;
return value.intValue();
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java
index 01d92dc3c..a7e564b3b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java
@@ -521,6 +521,11 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
// Test the priorities
{"Test the locale with mu,ms,rg --> mu tag wins", "en-US-u-mu-celsius-ms-ussystem-rg-uszzzz", "celsius", "0", "default", "celsius", "0.0", "0 degrees Celsius"},
{"Test the locale with ms,rg --> ms tag wins", "en-US-u-ms-metric-rg-uszzzz", "foot", "1", "default", "foot", "30.0", "30 centimeters"},
+
+ // Test the liklihood of the languages
+ {"Test the region of `en` --> region should be US", "en", "celsius", "1", "default", "fahrenheit", "34.0", "34 degrees Fahrenheit"},
+ {"Test the region of `de` --> region should be DE", "de", "celsius", "1", "default", "celsius", "1.0", "1 Grad Celsius"},
+ {"Test the region of `ar` --> region should be EG", "ar", "celsius", "1", "default", "celsius", "1.0", "١ درجة مئوية"},
};
int testIndex = 0;
@@ -1657,7 +1662,7 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
ULocale.ENGLISH,
Double.NEGATIVE_INFINITY,
// "-∞ km²");
- "0 cm²");
+ "0 in²");
// TODO(icu-units#132): Java BigDecimal does not support Inf and NaN, so
// we get a misleading "0" out of this:
@@ -1669,7 +1674,7 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
ULocale.ENGLISH,
Double.NaN,
// "NaN cm²");
- "0 cm²");
+ "0 in²");
assertFormatSingle(
"Negative numbers: minute-and-second",
@@ -2176,7 +2181,7 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
NumberFormatter.with().unit(USD).unitWidth(UnitWidth.NARROW),
ULocale.forLanguageTag("en-CA"),
5.43,
- "US$5.43");
+ "$5.43");
assertFormatSingle(
"Currency Difference between Narrow and Short (Short Version)",
@@ -5118,7 +5123,7 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
NumberFormatter.with().sign(SignDisplay.ACCOUNTING).unit(USD).unitWidth(UnitWidth.NARROW),
ULocale.CANADA,
-444444,
- "(US$444,444.00)");
+ "($444,444.00)");
assertFormatSingle(
"Sign Accounting Negative Short",
@@ -5398,10 +5403,39 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
@Test
public void locale() {
// Coverage for the locale setters.
- Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.ENGLISH));
- Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(ULocale.ENGLISH));
- Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(Locale.ENGLISH));
- Assert.assertNotEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.FRENCH));
+ Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH),
+ NumberFormatter.with().locale(Locale.ENGLISH));
+ Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH),
+ NumberFormatter.withLocale(ULocale.ENGLISH));
+ Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH),
+ NumberFormatter.withLocale(Locale.ENGLISH));
+ Assert.assertNotEquals(NumberFormatter.with().locale(ULocale.ENGLISH),
+ NumberFormatter.with().locale(Locale.FRENCH));
+
+ LocalizedNumberFormatter lnf1 = NumberFormatter.withLocale(ULocale.ENGLISH).unitWidth(UnitWidth.FULL_NAME)
+ .scale(Scale.powerOfTen(2));
+ LocalizedNumberFormatter lnf2 = NumberFormatter.with()
+ .notation(Notation.compactLong()).locale(ULocale.FRENCH).unitWidth(UnitWidth.FULL_NAME);
+ UnlocalizedNumberFormatter unf1 = lnf1.withoutLocale();
+ UnlocalizedNumberFormatter unf2 = lnf2.withoutLocale();
+
+ assertFormatSingle(
+ "Formatter after withoutLocale A",
+ "unit/meter unit-width-full-name scale/100",
+ "unit/meter unit-width-full-name scale/100",
+ unf1.unit(MeasureUnit.METER),
+ ULocale.ITALY,
+ 2,
+ "200 metri");
+
+ assertFormatSingle(
+ "Formatter after withoutLocale B",
+ "compact-long unit/meter unit-width-full-name",
+ "compact-long unit/meter unit-width-full-name",
+ unf2.unit(MeasureUnit.METER),
+ ULocale.JAPAN,
+ 2,
+ "2 メートル");
}
@Test
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java
index 7ad9d7e6a..e8bc9151d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java
@@ -826,6 +826,22 @@ public class NumberRangeFormatterTest extends CoreTestFmwk {
}
}
+ @Test
+ public void locale() {
+ LocalizedNumberRangeFormatter lnf = NumberRangeFormatter.withLocale(ULocale.ENGLISH)
+ .identityFallback(RangeIdentityFallback.RANGE);
+ UnlocalizedNumberRangeFormatter unf1 = lnf.withoutLocale();
+ UnlocalizedNumberRangeFormatter unf2 = NumberRangeFormatter.with()
+ .identityFallback(RangeIdentityFallback.RANGE)
+ .locale(ULocale.forLanguageTag("ar-EG"))
+ .withoutLocale();
+
+ FormattedNumberRange res1 = unf1.locale(ULocale.forLanguageTag("bn")).formatRange(5, 5);
+ assertEquals("res1", "\u09EB\u2013\u09EB", res1.toString());
+ FormattedNumberRange res2 = unf2.locale(ULocale.forLanguageTag("ja-JP")).formatRange(5, 5);
+ assertEquals("res2", "5\uFF5E5", res2.toString());
+ }
+
static final String[] allNSNames = NumberingSystem.getAvailableNames();
private class RangePatternSink extends UResource.Sink {
@@ -954,7 +970,6 @@ public class NumberRangeFormatterTest extends CoreTestFmwk {
}
{
- // TODO(CLDR-14111): Add spacing between range separator and sign
LocalizedNumberRangeFormatter lnrf = NumberRangeFormatter
.withLocale(ULocale.forLanguageTag("de-CH"));
String actual = lnrf.formatRange(2, -3).toString();
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java
index c2d598067..73daea285 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java
@@ -488,4 +488,35 @@ public class RBBIAPITest extends CoreTestFmwk {
bi.setText("Here is some Text");
TestFmwk.assertEquals("Title instance break iterator not correctly instantiated", bi.first(), 0);
}
+
+ @Test
+ public void TestBug22580() {
+ try {
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator("'");
+ } catch(IllegalArgumentException e) {
+ // nothing.
+ }
+ boolean quick = TestFmwk.getExhaustiveness() <= 5;
+ if (quick) {
+ return;
+ }
+ // Test any 1 or 2 ASCII chars as rule will not cause infinity loop.
+ // only in exhaust mode
+ for (char u1 = ' '; u1 < '~'; u1++) {
+ try {
+ char array[] = {u1};
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator(new String(array));
+ } catch(IllegalArgumentException e) {
+ // nothing.
+ }
+ for (char u2 = ' '; u2 < '~'; u2++) {
+ try {
+ char array[] = {u1, u2};
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator(new String(array));
+ } catch(IllegalArgumentException e) {
+ // nothing.
+ }
+ }
+ }
+ }
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java
index 03c0aad00..36895416a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java
@@ -11,6 +11,7 @@ package android.icu.dev.test.rbbi;
import java.text.CharacterIterator;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Locale;
@@ -911,7 +912,7 @@ public class RBBITest extends CoreTestFmwk {
assertEquals("Wrong number of breaks found", 2, breaksFound);
}
- /* Test handling of unpair surrogate.
+ /* Test handling of unpaired surrogate.
*/
@Test
public void TestUnpairedSurrogate() {
@@ -922,24 +923,24 @@ public class RBBITest extends CoreTestFmwk {
try {
new RuleBasedBreakIterator("a\ud800b;");
- fail("TestUnpairedSurrogate: RuleBasedBreakIterator() failed to throw an exception with unpair low surrogate.");
+ fail("TestUnpairedSurrogate: RuleBasedBreakIterator() failed to throw an exception with unpaired low surrogate.");
}
catch (IllegalArgumentException e) {
- // expected exception with unpair surrogate.
+ // expected exception with unpaired surrogate.
}
catch (Exception e) {
- fail("TestUnpairedSurrogate: Unexpected exception while new RuleBasedBreakIterator() with unpair low surrogate: " + e);
+ fail("TestUnpairedSurrogate: Unexpected exception while new RuleBasedBreakIterator() with unpaired low surrogate: " + e);
}
try {
new RuleBasedBreakIterator("a\ude00b;");
- fail("TestUnpairedSurrogate: RuleBasedBreakIterator() failed to throw an exception with unpair high surrogate.");
+ fail("TestUnpairedSurrogate: RuleBasedBreakIterator() failed to throw an exception with unpaired high surrogate.");
}
catch (IllegalArgumentException e) {
- // expected exception with unpair surrogate.
+ // expected exception with unpaired surrogate.
}
catch (Exception e) {
- fail("TestUnpairedSurrogate: Unexpected exception while new RuleBasedBreakIterator() with unpair high surrogate: " + e);
+ fail("TestUnpairedSurrogate: Unexpected exception while new RuleBasedBreakIterator() with unpaired high surrogate: " + e);
}
@@ -949,6 +950,79 @@ public class RBBITest extends CoreTestFmwk {
assertEquals("Rules does not match", rules, bi.toString());
}
+ @Test
+ public void TestBug22579() {
+ try {
+ new RuleBasedBreakIterator("[{ab}];");
+ fail("TestBug22579: RuleBasedBreakIterator() failed to throw an exception with only string in an Unicode set.");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with only string inside an Unicode set.
+ }
+ catch (Exception e) {
+ fail("TestBug22579: Unexpected exception while new RuleBasedBreakIterator() with only string in an Unicode Set: " + e);
+ }
+
+ }
+ @Test
+ public void TestBug22585() {
+ try {
+ new RuleBasedBreakIterator("$a=[\udecb];");
+ fail("TestBug22585: RuleBasedBreakIterator() failed to throw an exception with unpaired high surrogate.");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with unpaired surrogate.
+ }
+ catch (Exception e) {
+ fail("TestBug22585: Unexpected exception while new RuleBasedBreakIterator() with unpaired high surrogate: " + e);
+ }
+
+ try {
+ new RuleBasedBreakIterator("$a=[\ud94e];");
+ fail("TestBug22585: RuleBasedBreakIterator() failed to throw an exception with unpaired low surrogate.");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with unpaired surrogate.
+ }
+ catch (Exception e) {
+ fail("TestBug22585: Unexpected exception while new RuleBasedBreakIterator() with unpaired low surrogate: " + e);
+ }
+ }
+ @Test
+ public void TestBug22602() {
+ try {
+ char[] charArray = new char[25000];
+ Arrays.fill(charArray, 'A');
+ charArray[charArray.length-1] = ';';
+ String rules = new String(charArray);
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator(rules);
+ fail("TestBug22602: RuleBasedBreakIterator() failed to throw an exception with a long string followed by a ';'.");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with a long string followed by a ';'.
+ }
+ catch(StackOverflowError e) {
+ fail("TestBug22602: Unexpected exception while new RuleBasedBreakIterator() with a long string followed by a ';': " + e);
+ }
+ }
+ @Test
+ public void TestBug22636() {
+ try {
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator("A{77777777777777};");
+ fail("TestBug22636: new RuleBasedBreakIterator() with a large status value inside {}: should throw IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with a large status value inside {}.
+ }
+ try {
+ RuleBasedBreakIterator bi2 = new RuleBasedBreakIterator("A{2147483648};");
+ fail("TestBug22636: new RuleBasedBreakIterator() with a large status value inside {}: should throw IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with a large status value inside {}.
+ }
+ RuleBasedBreakIterator bi3 = new RuleBasedBreakIterator("A{2147483647};");
+ }
/* Test preceding(index) and following(index), with semi-random indexes.
* The random indexes are produced in clusters that are relatively closely spaced,
* to increase the occurrences of hits to the internal break cache.
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java
index 6b9b3931e..e5a4725f0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java
@@ -201,6 +201,11 @@ public class CompatibilityTest extends CoreTestFmwk
}
private static final String[][] SKIP_CASES = {
+ // android.icu.message2.Mf2DataModel$OrderedMap was very drafty
+ {"ICU_72.1", "android.icu.message2.Mf2DataModel$OrderedMap"},
+ {"ICU_73.1", "android.icu.message2.Mf2DataModel$OrderedMap"},
+ {"ICU_74.1", "android.icu.message2.Mf2DataModel$OrderedMap"},
+
// ICU 52+ PluralRules/PluralFormat/CurrencyPluralInfo are not
// serialization-compatible with previous versions.
{"ICU_50.1", "android.icu.text.CurrencyPluralInfo"},
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java
index 89cd84576..df0b2c749 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java
@@ -1147,7 +1147,7 @@ public class FormatHandler
// reproduced since formatToCharacterIterator was introduced,
// up to ICU 4.0.
- AttributedCharacterIterator aci = formats[0].formatToCharacterIterator(new Double(12.345D));
+ AttributedCharacterIterator aci = formats[0].formatToCharacterIterator(12.345d);
if (aci == null) {} // NOP - for resolving 'Unused local variable' warning.
}
return formats;
@@ -1785,7 +1785,7 @@ public class FormatHandler
{
MessageFormat mfa = (MessageFormat) a;
MessageFormat mfb = (MessageFormat) b;
- Object arguments[] = {new Integer(123456)};
+ Object arguments[] = {123456};
return mfa.format(arguments) != mfb.format(arguments);
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java
index f992c84d6..4a733c754 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java
@@ -40,7 +40,7 @@ import android.icu.impl.TimeZoneAdapter;
import android.icu.impl.URLHandler;
import android.icu.math.BigDecimal;
import android.icu.math.MathContext;
-import android.icu.message2.Mf2DataModel;
+import android.icu.message2.MFParseException;
import android.icu.util.AnnualTimeZoneRule;
import android.icu.util.Calendar;
import android.icu.util.Currency;
@@ -766,26 +766,13 @@ public class SerializableTestUtility {
}
}
- private static class Mf2DataModelOrderedMapHandler implements Handler {
+ private static class MFParseExceptionHandler extends ExceptionHandlerBase {
@Override
public Object[] getTestObjects() {
- Mf2DataModel.OrderedMap<String, Object> mapWithContent = new Mf2DataModel.OrderedMap<>();
- mapWithContent.put("number", Double.valueOf(3.1416));
- mapWithContent.put("date", new Date(1664582400000L /* 20221001T000000Z */));
- mapWithContent.put("string", "testing");
- return new Mf2DataModel.OrderedMap[] {
- new Mf2DataModel.OrderedMap(),
- mapWithContent
+ return new MFParseException[] {
+ new MFParseException("test", 42)
};
}
-
- @Override
- public boolean hasSameBehavior(Object a, Object b) {
- // OrderedMap extends LinkedHashMap, without adding any functionality, nothing to test.
- Mf2DataModel.OrderedMap ra = (Mf2DataModel.OrderedMap)a;
- Mf2DataModel.OrderedMap rb = (Mf2DataModel.OrderedMap)b;
- return ra.equals(rb);
- }
}
private static HashMap map = new HashMap();
@@ -885,7 +872,7 @@ public class SerializableTestUtility {
map.put("android.icu.util.ICUCloneNotSupportedException", new ICUCloneNotSupportedExceptionHandler());
map.put("android.icu.util.ICUInputTooLongException", new ICUInputTooLongExceptionHandler());
- map.put("android.icu.message2.Mf2DataModel$OrderedMap", new Mf2DataModelOrderedMapHandler());
+ map.put("android.icu.message2.MFParseException", new MFParseExceptionHandler());
}
/*
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.IllegalIcuArgumentException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.IllegalIcuArgumentException.dat
deleted file mode 100644
index eecd041d2..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.IllegalIcuArgumentException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.InvalidFormatException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.InvalidFormatException.dat
deleted file mode 100644
index e5e894448..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.InvalidFormatException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.OlsonTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.OlsonTimeZone.dat
deleted file mode 100644
index 0812b4e62..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.OlsonTimeZone.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.RelativeDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.RelativeDateFormat.dat
deleted file mode 100644
index 13256ae65..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.RelativeDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneAdapter.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneAdapter.dat
deleted file mode 100644
index 0901d1c94..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneAdapter.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.locale.LocaleSyntaxException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.locale.LocaleSyntaxException.dat
deleted file mode 100644
index 431275f82..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.locale.LocaleSyntaxException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.number.SkeletonSyntaxException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.number.SkeletonSyntaxException.dat
deleted file mode 100644
index 77f643059..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.number.SkeletonSyntaxException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ArabicShapingException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ArabicShapingException.dat
deleted file mode 100644
index 825d642e8..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ArabicShapingException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormat.dat
deleted file mode 100644
index 37e863f39..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormatSymbols.dat
deleted file mode 100644
index 71d428b01..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.CurrencyPluralInfo.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.CurrencyPluralInfo.dat
deleted file mode 100644
index ea54e21b2..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.CurrencyPluralInfo.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormat.dat
deleted file mode 100644
index 3327b2081..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormatSymbols.dat
deleted file mode 100644
index c4c4f9185..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalFormat.dat
deleted file mode 100644
index 78884387a..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DecimalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DecimalFormat.dat
deleted file mode 100644
index 87d063a81..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DecimalFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DecimalFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DecimalFormatSymbols.dat
deleted file mode 100644
index 582da83d9..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DecimalFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.SimpleDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.SimpleDateFormat.dat
deleted file mode 100644
index 9abf1dbee..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.SimpleDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.StringPrepParseException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.StringPrepParseException.dat
deleted file mode 100644
index 1bfd404df..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.StringPrepParseException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.BuddhistCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.BuddhistCalendar.dat
deleted file mode 100644
index cb6faa66f..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.BuddhistCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.Calendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.Calendar.dat
deleted file mode 100644
index 91a65d121..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.Calendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ChineseCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ChineseCalendar.dat
deleted file mode 100644
index c644727c4..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ChineseCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.CopticCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.CopticCalendar.dat
deleted file mode 100644
index 15a5d0ba3..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.CopticCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DangiCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DangiCalendar.dat
deleted file mode 100644
index 7c3f2f0ca..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DangiCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.EthiopicCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.EthiopicCalendar.dat
deleted file mode 100644
index ccc2a8788..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.EthiopicCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.GregorianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.GregorianCalendar.dat
deleted file mode 100644
index f2cb5da72..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.GregorianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.HebrewCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.HebrewCalendar.dat
deleted file mode 100644
index 2236fd424..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.HebrewCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUCloneNotSupportedException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUCloneNotSupportedException.dat
deleted file mode 100644
index 300e9c56f..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUCloneNotSupportedException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUException.dat
deleted file mode 100644
index 4f1c6e26f..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUInputTooLongException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUInputTooLongException.dat
deleted file mode 100644
index f0479e2c3..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUInputTooLongException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUUncheckedIOException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUUncheckedIOException.dat
deleted file mode 100644
index 636e27a69..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ICUUncheckedIOException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IllformedLocaleException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IllformedLocaleException.dat
deleted file mode 100644
index bde3c7ae2..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IllformedLocaleException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IndianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IndianCalendar.dat
deleted file mode 100644
index 103d40db9..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IndianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IslamicCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IslamicCalendar.dat
deleted file mode 100644
index b54ce5db1..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.IslamicCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.JapaneseCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.JapaneseCalendar.dat
deleted file mode 100644
index f338c49d1..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.JapaneseCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.PersianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.PersianCalendar.dat
deleted file mode 100644
index b1309ab94..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.PersianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TaiwanCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TaiwanCalendar.dat
deleted file mode 100644
index 324ace339..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TaiwanCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.UResourceTypeMismatchException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.UResourceTypeMismatchException.dat
deleted file mode 100644
index c273bec33..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.UResourceTypeMismatchException.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.VTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.VTimeZone.dat
deleted file mode 100644
index 1f69b2990..000000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.VTimeZone.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.DateNumberFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.DateNumberFormat.dat
index ab393f69c..ab393f69c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.DateNumberFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.DateNumberFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.IllegalIcuArgumentException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.IllegalIcuArgumentException.dat
new file mode 100644
index 000000000..e8b6fde44
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.IllegalIcuArgumentException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.InvalidFormatException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.InvalidFormatException.dat
new file mode 100644
index 000000000..26dc8a199
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.InvalidFormatException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.OlsonTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 000000000..05944a730
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.OlsonTimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.RelativeDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.RelativeDateFormat.dat
new file mode 100644
index 000000000..eb7f8ac18
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.RelativeDateFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TZDBTimeZoneNames.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TZDBTimeZoneNames.dat
index be0463283..be0463283 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TZDBTimeZoneNames.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TZDBTimeZoneNames.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneAdapter.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 000000000..02be71847
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneAdapter.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneGenericNames.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneGenericNames.dat
index de19e0718..de19e0718 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneGenericNames.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneGenericNames.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneNamesImpl.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneNamesImpl.dat
index c04af70cf..c04af70cf 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.TimeZoneNamesImpl.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.TimeZoneNamesImpl.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.duration.BasicDurationFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.duration.BasicDurationFormat.dat
index 3bfb44296..3bfb44296 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.duration.BasicDurationFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.duration.BasicDurationFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.locale.LocaleSyntaxException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.locale.LocaleSyntaxException.dat
new file mode 100644
index 000000000..f0cba1454
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.locale.LocaleSyntaxException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.CustomSymbolCurrency.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.CustomSymbolCurrency.dat
index 7566c1dd6..7566c1dd6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.CustomSymbolCurrency.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.CustomSymbolCurrency.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.DecimalFormatProperties.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.DecimalFormatProperties.dat
index 1c6023b29..1c6023b29 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.DecimalFormatProperties.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.DecimalFormatProperties.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
index edb3d5dd1..edb3d5dd1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.Properties.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.Properties.dat
index 3e0c8db45..3e0c8db45 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.impl.number.Properties.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.impl.number.Properties.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.math.BigDecimal.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.math.BigDecimal.dat
index dd4ce5221..dd4ce5221 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.math.BigDecimal.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.math.BigDecimal.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.math.MathContext.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.math.MathContext.dat
index da7116766..da7116766 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.math.MathContext.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.math.MathContext.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.message2.MFParseException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.message2.MFParseException.dat
new file mode 100644
index 000000000..4f3e66557
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.message2.MFParseException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.number.NumberRangeFormatter$SpanField.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.number.NumberRangeFormatter$SpanField.dat
index 614dc17c1..614dc17c1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.number.NumberRangeFormatter$SpanField.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.number.NumberRangeFormatter$SpanField.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.number.SkeletonSyntaxException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.number.SkeletonSyntaxException.dat
new file mode 100644
index 000000000..67a5e7740
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.number.SkeletonSyntaxException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ArabicShapingException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ArabicShapingException.dat
new file mode 100644
index 000000000..fc78c33d3
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ArabicShapingException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormat$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormat$Field.dat
index 1480893fe..1480893fe 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ChineseDateFormat$Field.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormat$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormat.dat
new file mode 100644
index 000000000..fbb0dd935
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 000000000..1bc4f0e3d
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ChineseDateFormatSymbols.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.CompactDecimalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.CompactDecimalFormat.dat
index 4795b267d..4795b267d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.CompactDecimalFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.CompactDecimalFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.CurrencyPluralInfo.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.CurrencyPluralInfo.dat
new file mode 100644
index 000000000..d1514f3d3
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.CurrencyPluralInfo.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormat$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormat$Field.dat
index 06b87bb1b..06b87bb1b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateFormat$Field.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormat$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormat.dat
new file mode 100644
index 000000000..005e9ca1a
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormatSymbols.dat
new file mode 100644
index 000000000..68239173b
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateFormatSymbols.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalFormat$SpanField.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalFormat$SpanField.dat
index d1fb9f8a5..d1fb9f8a5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalFormat$SpanField.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalFormat$SpanField.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalFormat.dat
new file mode 100644
index 000000000..0e25af4b8
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalInfo$PatternInfo.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalInfo$PatternInfo.dat
index 25ebef5b2..25ebef5b2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalInfo$PatternInfo.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalInfo$PatternInfo.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalInfo.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalInfo.dat
index 546ebbb23..546ebbb23 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.DateIntervalInfo.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DateIntervalInfo.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DecimalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DecimalFormat.dat
new file mode 100644
index 000000000..9d3d5acc6
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DecimalFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DecimalFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 000000000..451d479db
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.DecimalFormatSymbols.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ListFormatter$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ListFormatter$Field.dat
index d2e613616..d2e613616 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ListFormatter$Field.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ListFormatter$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ListFormatter$SpanField.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ListFormatter$SpanField.dat
index 50e3c2b04..50e3c2b04 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.ListFormatter$SpanField.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.ListFormatter$SpanField.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MeasureFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MeasureFormat.dat
index cb0559896..cb0559896 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MeasureFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MeasureFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MessageFormat$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MessageFormat$Field.dat
index a1aca43fd..a1aca43fd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MessageFormat$Field.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MessageFormat$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MessageFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MessageFormat.dat
index 3e8d13fe9..3e8d13fe9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.MessageFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.MessageFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.NumberFormat$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.NumberFormat$Field.dat
index 78dbc5193..78dbc5193 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.NumberFormat$Field.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.NumberFormat$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.NumberFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.NumberFormat.dat
index ed34ed133..ed34ed133 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.NumberFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.NumberFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.PluralFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.PluralFormat.dat
index 62b5532c5..62b5532c5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.PluralFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.PluralFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.PluralRules.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.PluralRules.dat
index 8e3375ba4..8e3375ba4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.PluralRules.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.PluralRules.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.RelativeDateTimeFormatter$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.RelativeDateTimeFormatter$Field.dat
index 9ff848c76..9ff848c76 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.RelativeDateTimeFormatter$Field.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.RelativeDateTimeFormatter$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.RuleBasedNumberFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.RuleBasedNumberFormat.dat
index d0b7ea93e..d0b7ea93e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.RuleBasedNumberFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.RuleBasedNumberFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.SelectFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.SelectFormat.dat
index bbd38651c..bbd38651c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.SelectFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.SelectFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.SimpleDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.SimpleDateFormat.dat
new file mode 100644
index 000000000..c099a472d
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.SimpleDateFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.StringPrepParseException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.StringPrepParseException.dat
new file mode 100644
index 000000000..23f3cf69f
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.StringPrepParseException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.TimeUnitFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.TimeUnitFormat.dat
index d683f3cbc..d683f3cbc 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.TimeUnitFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.TimeUnitFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.TimeZoneFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.TimeZoneFormat.dat
index 247ad4fe4..247ad4fe4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.text.TimeZoneFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.text.TimeZoneFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.AnnualTimeZoneRule.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.AnnualTimeZoneRule.dat
index da8dfef5a..da8dfef5a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.AnnualTimeZoneRule.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.AnnualTimeZoneRule.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.BuddhistCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.BuddhistCalendar.dat
new file mode 100644
index 000000000..81dffc08d
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.BuddhistCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.Calendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.Calendar.dat
new file mode 100644
index 000000000..d4f47f54b
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.Calendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ChineseCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ChineseCalendar.dat
new file mode 100644
index 000000000..19a9811b1
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ChineseCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.CopticCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.CopticCalendar.dat
new file mode 100644
index 000000000..13cdf28a8
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.CopticCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.Currency.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.Currency.dat
index 7566c1dd6..7566c1dd6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.Currency.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.Currency.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DangiCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DangiCalendar.dat
new file mode 100644
index 000000000..053fa15dc
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DangiCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DateInterval.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DateInterval.dat
index c30bb84f4..c30bb84f4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DateInterval.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DateInterval.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DateTimeRule.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DateTimeRule.dat
index 7057de988..7057de988 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.DateTimeRule.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.DateTimeRule.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.EthiopicCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.EthiopicCalendar.dat
new file mode 100644
index 000000000..75444749a
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.EthiopicCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.GregorianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.GregorianCalendar.dat
new file mode 100644
index 000000000..0fad143b4
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.GregorianCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.HebrewCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.HebrewCalendar.dat
new file mode 100644
index 000000000..421f7d535
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.HebrewCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUCloneNotSupportedException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUCloneNotSupportedException.dat
new file mode 100644
index 000000000..2ac31d8cf
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUCloneNotSupportedException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUException.dat
new file mode 100644
index 000000000..e23aabc58
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUInputTooLongException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUInputTooLongException.dat
new file mode 100644
index 000000000..a2835c7ef
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUInputTooLongException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUUncheckedIOException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUUncheckedIOException.dat
new file mode 100644
index 000000000..dcbdae1bc
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ICUUncheckedIOException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IllformedLocaleException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IllformedLocaleException.dat
new file mode 100644
index 000000000..a6da2f21f
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IllformedLocaleException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IndianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IndianCalendar.dat
new file mode 100644
index 000000000..ff6fc9eec
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IndianCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.InitialTimeZoneRule.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.InitialTimeZoneRule.dat
index cc19377dd..cc19377dd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.InitialTimeZoneRule.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.InitialTimeZoneRule.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IslamicCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IslamicCalendar.dat
new file mode 100644
index 000000000..7bd44b9b3
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.IslamicCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.JapaneseCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.JapaneseCalendar.dat
new file mode 100644
index 000000000..278c13820
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.JapaneseCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.MeasureUnit.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.MeasureUnit.dat
index e97cd298a..e97cd298a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.MeasureUnit.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.MeasureUnit.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.PersianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.PersianCalendar.dat
new file mode 100644
index 000000000..d4f1bc73b
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.PersianCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.RuleBasedTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.RuleBasedTimeZone.dat
index d69978e1a..d69978e1a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.RuleBasedTimeZone.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.RuleBasedTimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.SimpleTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.SimpleTimeZone.dat
index 71d8d1a4c..71d8d1a4c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.SimpleTimeZone.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.SimpleTimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TaiwanCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TaiwanCalendar.dat
new file mode 100644
index 000000000..108d92edc
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TaiwanCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeArrayTimeZoneRule.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeArrayTimeZoneRule.dat
index 189e4dae3..189e4dae3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeArrayTimeZoneRule.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeArrayTimeZoneRule.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeUnit.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeUnit.dat
index e97cd298a..e97cd298a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeUnit.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeUnit.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeZone.dat
index 56e8cd29a..56e8cd29a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.TimeZone.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.TimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ULocale.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ULocale.dat
index b222926d5..b222926d5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_71.1/android.icu.util.ULocale.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.ULocale.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.UResourceTypeMismatchException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 000000000..843e7fd73
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.UResourceTypeMismatchException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.VTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.VTimeZone.dat
new file mode 100644
index 000000000..38278b880
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_75.1/android.icu.util.VTimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java
index 7ed393f2c..b0aa45f9f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java
@@ -295,7 +295,7 @@ public class IDNAConformanceTest extends CoreTestFmwk {
//if met "=====", it means this item is finished
if ("=====".equals(tempStr)) {
//set them into result, using records number as key
- result.put(new Long(records), hashItem);
+ result.put((long)records, hashItem);
//create another hash item and continue
hashItem = new HashMap();
records++;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java
index adc1a4100..dff72a55c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java
@@ -190,7 +190,7 @@ public class NamePrepTransform {
try {
Class cls = Class.forName("android.icu.text.Transliterator");
Method createMethod = cls.getMethod("createFromRules", String.class, String.class, Integer.TYPE);
- translitInstance = createMethod.invoke(null, id, rule, Integer.valueOf(direction));
+ translitInstance = createMethod.invoke(null, id, rule, direction);
translitMethod = cls.getMethod("transliterate", String.class);
} catch (Throwable e) {
return false;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java
index 948398330..fc96e89d2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java
@@ -249,8 +249,8 @@ public class TimeZoneAliasTest extends CoreTestFmwk {
private int maxOffset;
private int minRecentOffset;
private int maxRecentOffset;
- private List inflectionPoints = new ArrayList();
- private Set purportedAliases = new TreeSet();
+ private List<Long> inflectionPoints = new ArrayList<>();
+ private Set<String> purportedAliases = new TreeSet<>();
private Zone(String id) { // for internal use only; use make instead!
zone = TimeZone.getTimeZone(id);
@@ -269,7 +269,7 @@ public class TimeZoneAliasTest extends CoreTestFmwk {
if (zone.getOffset(lastDate) < zone.getOffset(endDate2)) lastDate = endDate2;
maxRecentOffset = minRecentOffset = minOffset = maxOffset = zone.getOffset(lastDate);
- inflectionPoints.add(new Long(lastDate));
+ inflectionPoints.add(lastDate);
int lastOffset = zone.getOffset(endDate);
long lastInflection = endDate;
@@ -294,12 +294,12 @@ public class TimeZoneAliasTest extends CoreTestFmwk {
high = mid;
}
}
- inflectionPoints.add(new Long(low));
+ inflectionPoints.add(low);
lastInflection = low;
}
lastOffset = currentOffset;
}
- inflectionPoints.add(new Long(startDate)); // just to cap it off for comparisons.
+ inflectionPoints.add(startDate); // just to cap it off for comparisons.
}
// we assume that places will not convert time zones then back within one day
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java
index d2f06f2ef..b8a755532 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java
@@ -260,8 +260,8 @@ public class TimeZoneRegressionTest extends CoreTestFmwk {
dow,
millis);
tzRawOffset = testTZ.getRawOffset();
- tzOffsetFloat = new Float((float)tzOffset/(float)3600000);
- tzRawOffsetFloat = new Float((float)tzRawOffset/(float)3600000);
+ tzOffsetFloat = (float)tzOffset/3600000f;
+ tzRawOffsetFloat = (float)tzRawOffset/3600000f;
Date testDate = testCal.getTime();
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
index 602a5273f..ed57e54a2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
@@ -301,6 +301,26 @@ public class TimeZoneTest extends CoreTestFmwk
"GMT-2:31:123", "0", TimeZone.UNKNOWN_ZONE_ID,
"GMT+3:75", "0", TimeZone.UNKNOWN_ZONE_ID,
"GMT-01010101", "0", TimeZone.UNKNOWN_ZONE_ID,
+ "GMT-4E58", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-4e58", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-1E01", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-2E01", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-2e01", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-9e02", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-1e03", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-2e03", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-500M", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-500T", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-9E00", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-0X0F", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-0x0F", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-0x12", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-B111", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-b111", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-0b11", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-๑๒", "-43200", "GMT-12:00", // ICU-22637
+ "GMT-๑๒:๓๔", "-45240", "GMT-12:34", // ICU-22637
+ "GMT+๑๒:๓๔:๕๖", "45296", "GMT+12:34:56", // ICU-22637
};
for (int i = 0; i < DATA.length; i += 3) {
String id = DATA[i];
@@ -359,25 +379,25 @@ public class TimeZoneTest extends CoreTestFmwk
// todo: check to see whether we can test for all of pst, pdt, pt
Object[] DATA = {
// z and zzzz
- Boolean.FALSE, new Integer(TimeZone.SHORT), "PST",
- Boolean.TRUE, new Integer(TimeZone.SHORT), "PDT",
- Boolean.FALSE, new Integer(TimeZone.LONG), "Pacific Standard Time",
- Boolean.TRUE, new Integer(TimeZone.LONG), "Pacific Daylight Time",
+ Boolean.FALSE, TimeZone.SHORT, "PST",
+ Boolean.TRUE, TimeZone.SHORT, "PDT",
+ Boolean.FALSE, TimeZone.LONG, "Pacific Standard Time",
+ Boolean.TRUE, TimeZone.LONG, "Pacific Daylight Time",
// v and vvvv
- Boolean.FALSE, new Integer(TimeZone.SHORT_GENERIC), "PT",
- Boolean.TRUE, new Integer(TimeZone.SHORT_GENERIC), "PT",
- Boolean.FALSE, new Integer(TimeZone.LONG_GENERIC), "Pacific Time",
- Boolean.TRUE, new Integer(TimeZone.LONG_GENERIC), "Pacific Time",
+ Boolean.FALSE, TimeZone.SHORT_GENERIC, "PT",
+ Boolean.TRUE, TimeZone.SHORT_GENERIC, "PT",
+ Boolean.FALSE, TimeZone.LONG_GENERIC, "Pacific Time",
+ Boolean.TRUE, TimeZone.LONG_GENERIC, "Pacific Time",
// z and ZZZZ
- Boolean.FALSE, new Integer(TimeZone.SHORT_GMT), "-0800",
- Boolean.TRUE, new Integer(TimeZone.SHORT_GMT), "-0700",
- Boolean.FALSE, new Integer(TimeZone.LONG_GMT), "GMT-08:00",
- Boolean.TRUE, new Integer(TimeZone.LONG_GMT), "GMT-07:00",
+ Boolean.FALSE, TimeZone.SHORT_GMT, "-0800",
+ Boolean.TRUE, TimeZone.SHORT_GMT, "-0700",
+ Boolean.FALSE, TimeZone.LONG_GMT, "GMT-08:00",
+ Boolean.TRUE, TimeZone.LONG_GMT, "GMT-07:00",
// V and VVVV
- Boolean.FALSE, new Integer(TimeZone.SHORT_COMMONLY_USED), "PST",
- Boolean.TRUE, new Integer(TimeZone.SHORT_COMMONLY_USED), "PDT",
- Boolean.FALSE, new Integer(TimeZone.GENERIC_LOCATION), "Los Angeles Time",
- Boolean.TRUE, new Integer(TimeZone.GENERIC_LOCATION), "Los Angeles Time",
+ Boolean.FALSE, TimeZone.SHORT_COMMONLY_USED, "PST",
+ Boolean.TRUE, TimeZone.SHORT_COMMONLY_USED, "PDT",
+ Boolean.FALSE, TimeZone.GENERIC_LOCATION, "Los Angeles Time",
+ Boolean.TRUE, TimeZone.GENERIC_LOCATION, "Los Angeles Time",
};
for (int i=0; i<DATA.length; i+=3) {
@@ -1792,8 +1812,8 @@ public class TimeZoneTest extends CoreTestFmwk
*/
@Test
public void TestDisplayNamesMeta() {
- final Integer TZSHORT = new Integer(TimeZone.SHORT);
- final Integer TZLONG = new Integer(TimeZone.LONG);
+ final Integer TZSHORT = TimeZone.SHORT;
+ final Integer TZLONG = TimeZone.LONG;
final Object[][] zoneDisplayTestData = {
// zone id locale summer format expected display name
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java
index 1f70a49d1..27cc47a6c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java
@@ -285,7 +285,7 @@ public class UnicodeMapTest extends TestFmwk {
logln(unicodeMap.toString());
}
for (int i = start; i <= end; ++i) {
- hashMap.put(new Integer(i), value);
+ hashMap.put(i, value);
}
if (!hasSameValues(unicodeMap, hashMap)) {
errln("Failed at " + count);
@@ -296,7 +296,7 @@ public class UnicodeMapTest extends TestFmwk {
private boolean hasSameValues(UnicodeMap unicodeMap, HashMap hashMap) {
for (int i = 0; i < MODIFY_TEST_LIMIT; ++i) {
Object unicodeMapValue = unicodeMap.getValue(i);
- Object hashMapValue = hashMap.get(new Integer(i));
+ Object hashMapValue = hashMap.get(i);
if (unicodeMapValue != hashMapValue) {
return false;
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java
index 3dac19da2..c2cc31202 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java
@@ -229,7 +229,7 @@ public class CurrencyTest extends CoreTestFmwk {
"US$",
USD.getName(en_CA, Currency.SYMBOL_NAME, isChoiceFormat));
assertEquals("USD.getName(NARROW_SYMBOL_NAME, en_CA)",
- "US$",
+ "$",
USD.getName(en_CA, Currency.NARROW_SYMBOL_NAME, isChoiceFormat));
assertEquals("USD.getName(SYMBOL_NAME) in en_NZ",
"US$",
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java
index 5341fe16e..5b19cc908 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java
@@ -14,7 +14,7 @@ import android.icu.testsharding.MainTestShard;
@MainTestShard
public class DebugUtilitiesData extends Object {
- public static final String ICU4C_VERSION="74.2";
+ public static final String ICU4C_VERSION="75.1";
public static final int UDebugEnumType = 0;
public static final int UCalendarDateFields = 1;
public static final int UCalendarMonths = 2;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java
index d9274b45e..cc8aaa371 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java
@@ -50,9 +50,8 @@ public class DisplayNameTest extends CoreTestFmwk {
for (int k = 0; k < codeToName.length; ++k) codeToName[k] = new HashMap();
}
- static final Object[] zoneFormats = {new Integer(0), new Integer(1), new Integer(2),
- new Integer(3), new Integer(4), new Integer(5), new Integer(6), new Integer(7)};
- static final Object[] currencyFormats = {new Integer(Currency.SYMBOL_NAME), new Integer(Currency.LONG_NAME)};
+ static final Object[] zoneFormats = {0, 1, 2, 3, 4, 5, 6, 7};
+ static final Object[] currencyFormats = {Currency.SYMBOL_NAME, Currency.LONG_NAME};
static final Object[] NO_CONTEXT = {null};
static final Date JAN1;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java
index 9c7765e93..0c6195f70 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java
@@ -132,7 +132,7 @@ public final class ICUResourceBundleCollationTest extends TestFmwk {
logln("Testing getting collation values:");
kwVals = ICUResourceBundle.getKeywordValues(ICUData.ICU_COLLATION_BASE_NAME,COLLATION_RESNAME);
for(n=0;n<kwVals.length;n++) {
- logln(new Integer(n).toString() + ": " + kwVals[n]);
+ logln(Integer.valueOf(n).toString() + ": " + kwVals[n]);
if(DEFAULT_NAME.equals(kwVals[n])) {
errln("getKeywordValues for collation returned 'default' in the list.");
} else if(STANDARD_NAME.equals(kwVals[n])) {
@@ -153,6 +153,70 @@ public final class ICUResourceBundleCollationTest extends TestFmwk {
}
@Test
+ public void TestGetFunctionalEquivalentVariantLengthWithinLimit() {
+ String valid =
+ "_" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678";
+
+ ULocale equivLocale = ICUResourceBundle.getFunctionalEquivalent(
+ ICUData.ICU_BASE_NAME, ICUResourceBundle.ICU_DATA_CLASS_LOADER,
+ "calendar", "calendar", new ULocale(valid), new boolean[1], false);
+ ULocale localeExpected = new ULocale("_@calendar=gregorian");
+ if(!equivLocale.equals(localeExpected)) {
+ errln("Get unexpected locale:" + equivLocale.toString() +
+ " while expecting " + localeExpected.toString());
+ }
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void TestGetFunctionalEquivalentVariantLengthOverLimit() {
+ String invalid =
+ "_" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678X"; // One character too long.
+ ULocale equivLocale2 = ICUResourceBundle.getFunctionalEquivalent(
+ ICUData.ICU_BASE_NAME, ICUResourceBundle.ICU_DATA_CLASS_LOADER,
+ "calendar", "calendar", new ULocale(invalid), new boolean[1], false);
+ }
+
+ @Test
public void TestOpen(){
UResourceBundle bundle = UResourceBundle.getBundleInstance(ICUData.ICU_COLLATION_BASE_NAME, "en_US_POSIX");
if(bundle==null){
@@ -172,16 +236,16 @@ public final class ICUResourceBundleCollationTest extends TestFmwk {
ULocale inLocale = new ULocale(testCases[i+1]);
ULocale expectLocale = new ULocale(testCases[i+2]);
- logln(new Integer(i/3).toString() + ": " + new Boolean(expectAvail).toString() + "\t\t" +
- inLocale.toString() + "\t\t" + expectLocale.toString());
+ logln("" + i/3 + ": " + expectAvail + "\t\t" +
+ inLocale + "\t\t" + expectLocale);
ULocale equivLocale = ICUResourceBundle.getFunctionalEquivalent(path, cl, resName, keyword, inLocale, isAvail, truncate);
boolean gotAvail = isAvail[0];
if((gotAvail != expectAvail) || !equivLocale.equals(expectLocale)) {
- errln(new Integer(i/3).toString() + ": Error, expected Equiv=" + new Boolean(expectAvail).toString() + "\t\t" +
- inLocale.toString() + "\t\t--> " + expectLocale.toString() + ", but got " + new Boolean(gotAvail).toString() + " " +
- equivLocale.toString());
+ errln("" + i/3 + ": Error, expected Equiv=" + expectAvail + "\t\t" +
+ inLocale + "\t\t--> " + expectLocale + ", but got " + gotAvail + " " +
+ equivLocale);
}
}
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java
index 4152dd211..c79b0dbe1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java
@@ -720,9 +720,8 @@ public final class ICUResourceBundleTest extends CoreTestFmwk {
}
Set<String> localLangExceptions = new HashSet<>();
- if (logKnownIssue("cldrbug:17001", "No localized language name for nmg, vmw")) {
+ if (logKnownIssue("ICU-22681", "No localized language name for nmg")) {
localLangExceptions.add("nmg");
- localLangExceptions.add("vmw");
}
for (int i = 0; i < locales.length; ++i) {
@@ -806,16 +805,16 @@ public final class ICUResourceBundleTest extends CoreTestFmwk {
ULocale inLocale = new ULocale(testCases[i+1]);
ULocale expectLocale = new ULocale(testCases[i+2]);
- logln(new Integer(i/3).toString() + ": " + new Boolean(expectAvail).toString() + "\t\t" +
- inLocale.toString() + "\t\t" + expectLocale.toString());
+ logln("" + i/3 + ": " + expectAvail + "\t\t" +
+ inLocale + "\t\t" + expectLocale);
ULocale equivLocale = ICUResourceBundle.getFunctionalEquivalent(path, cl, resName, keyword, inLocale, isAvail, truncate);
boolean gotAvail = isAvail[0];
if((gotAvail != expectAvail) || !equivLocale.equals(expectLocale)) {
- errln(new Integer(i/3).toString() + ": Error, expected Equiv=" + new Boolean(expectAvail).toString() + "\t\t" +
- inLocale.toString() + "\t\t--> " + expectLocale.toString() + ", but got " + new Boolean(gotAvail).toString() + " " +
- equivLocale.toString());
+ errln("" + i/3 + ": Error, expected Equiv=" + expectAvail + "\t\t" +
+ inLocale + "\t\t--> " + expectLocale + ", but got " + gotAvail + " " +
+ equivLocale);
}
}
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java
index d8bdd6baf..014dcaa6b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java
@@ -121,7 +121,7 @@ public class ICUServiceTest extends CoreTestFmwk
// register an object with one locale,
// search for an object with a more specific locale
// should return the original object
- Integer singleton0 = new Integer(0);
+ Integer singleton0 = 0;
service.registerObject(singleton0, "en_US");
Object result = service.get("en_US_FOO");
confirmIdentical("1) en_US_FOO -> en_US", result, singleton0);
@@ -129,7 +129,7 @@ public class ICUServiceTest extends CoreTestFmwk
// register a new object with the more specific locale
// search for an object with that locale
// should return the new object
- Integer singleton1 = new Integer(1);
+ Integer singleton1 = 1;
service.registerObject(singleton1, "en_US_FOO");
result = service.get("en_US_FOO");
confirmIdentical("2) en_US_FOO -> en_US_FOO", result, singleton1);
@@ -144,7 +144,7 @@ public class ICUServiceTest extends CoreTestFmwk
// register a new object with yet another locale
// original factory list is unchanged
- Integer singleton2 = new Integer(2);
+ Integer singleton2 = 2;
service.registerObject(singleton2, "en");
confirmIdentical("5) factory size", factories.size(), 2);
@@ -155,7 +155,7 @@ public class ICUServiceTest extends CoreTestFmwk
confirmIdentical("6) en_US_BAR -> en_US", result, singleton0);
// register a new object with an old id, should hide earlier factory using this id, but leave it there
- Integer singleton3 = new Integer(3);
+ Integer singleton3 = 3;
service.registerObject(singleton3, "en_US");
factories = service.factories();
confirmIdentical("9) factory size", factories.size(), 4);
@@ -191,7 +191,7 @@ public class ICUServiceTest extends CoreTestFmwk
// should be able to register invisible factories, these will not
// be visible by default, but if you know the secret password you
// can still access these services...
- Integer singleton4 = new Integer(4);
+ Integer singleton4 = 4;
service.registerObject(singleton4, "en_US_BAR", false);
result = service.get("en_US_BAR");
confirmIdentical("17) get invisible", result, singleton4);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java
index b61c07b4e..c42022bd2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java
@@ -25,8 +25,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import android.icu.dev.test.CoreTestFmwk;
+import android.icu.impl.locale.LikelySubtags;
import android.icu.impl.locale.XCldrStub.FileUtilities;
-import android.icu.impl.locale.XLikelySubtags;
import android.icu.util.LocaleMatcher;
import android.icu.util.LocaleMatcher.FavorSubtag;
import android.icu.util.LocalePriorityList;
@@ -871,7 +871,7 @@ public class LocaleMatcherTest extends CoreTestFmwk {
long start = System.nanoTime();
for (int i = iterations; i > 0; --i) {
for (ULocale locale : list) {
- XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale, false);
+ LikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale, false);
}
}
return System.nanoTime() - start;
@@ -1073,7 +1073,7 @@ public class LocaleMatcherTest extends CoreTestFmwk {
builder.setFavorSubtag(favor);
}
if (!test.threshold.isEmpty()) {
- int threshold = Integer.valueOf(test.threshold);
+ int threshold = Integer.parseInt(test.threshold);
builder.internalSetThresholdDistance(threshold);
}
matcher = builder.build();
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java
index b39f91707..9d1e65864 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java
@@ -429,7 +429,7 @@ public class RegionTest extends CoreTestFmwk {
String inputID = data[0];
String expectedID = data[1];
Region.RegionType expectedType = Region.RegionType.valueOf(data[2]);
- Region r = Region.getInstance(Integer.valueOf(inputID));
+ Region r = Region.getInstance(Integer.parseInt(inputID));
if ( !expectedID.equals(r.toString())) {
errln("Unexpected region ID for Region.getInstance(" + inputID + "); Expected: " + expectedID + " Got: " + r.toString());
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java
index f1207126c..2ed27cd1a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java
@@ -25,22 +25,22 @@ import android.icu.testsharding.MainTestShard;
@RunWith(JUnit4.class)
public class TextTrieMapTest extends CoreTestFmwk {
- private static final Integer SUN = new Integer(1);
- private static final Integer MON = new Integer(2);
- private static final Integer TUE = new Integer(3);
- private static final Integer WED = new Integer(4);
- private static final Integer THU = new Integer(5);
- private static final Integer FRI = new Integer(6);
- private static final Integer SAT = new Integer(7);
+ private static final Integer SUN = 1;
+ private static final Integer MON = 2;
+ private static final Integer TUE = 3;
+ private static final Integer WED = 4;
+ private static final Integer THU = 5;
+ private static final Integer FRI = 6;
+ private static final Integer SAT = 7;
- private static final Integer SUP1 = new Integer(8);
- private static final Integer SUP2 = new Integer(9);
- private static final Integer SUP3 = new Integer(10);
- private static final Integer SUP4 = new Integer(11);
- private static final Integer SUP5 = new Integer(12);
+ private static final Integer SUP1 = 8;
+ private static final Integer SUP2 = 9;
+ private static final Integer SUP3 = 10;
+ private static final Integer SUP4 = 11;
+ private static final Integer SUP5 = 12;
- private static final Integer FOO = new Integer(-1);
- private static final Integer BAR = new Integer(-2);
+ private static final Integer FOO = -1;
+ private static final Integer BAR = -2;
private static final Object[][] TESTDATA = {
{"Sunday", SUN},
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java
index 1b7cf1197..c767cfbb0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java
@@ -245,10 +245,10 @@ public class ULocaleCollationTest extends TestFmwk {
public void TestNameList() {
String[][][] tests = {
/* name in French, name in self, minimized, modified */
-// {{"fr-Cyrl-BE", "fr-Cyrl-CA"},
-// {"Français (cyrillique, Belgique)", "Français (cyrillique, Belgique)", "fr_Cyrl_BE", "fr_Cyrl_BE"},
-// {"Français (cyrillique, Canada)", "Français (cyrillique, Canada)", "fr_Cyrl_CA", "fr_Cyrl_CA"},
-// },
+ {{"fr-Cyrl-BE", "fr-Cyrl-CA"},
+ {"Français (cyrillique, Belgique)", "French (Cyrillic, Belgium)", "fr_Cyrl_BE", "fr_Cyrl_BE"},
+ {"Français (cyrillique, Canada)", "French (Cyrillic, Canada)", "fr_Cyrl_CA", "fr_Cyrl_CA"},
+ },
{{"en", "de", "fr", "zh"},
{"Allemand", "Deutsch", "de", "de"},
{"Anglais", "English", "en", "en"},
@@ -256,14 +256,14 @@ public class ULocaleCollationTest extends TestFmwk {
{"Français", "Français", "fr", "fr"},
},
// some non-canonical names
-// {{"iw", "iw-US", "no", "no-Cyrl", "in", "in-YU"},
-// {"Hébreu (États-Unis)", "עברית (ארצות הברית)", "iw_US", "iw_US"},
-// {"Hébreu (Israël)", "עברית (ישראל)", "iw", "iw_IL"},
-// {"Indonésien (Indonésie)", "Indonesia (Indonesia)", "in", "in_ID"},
-// {"Indonésien (Serbie)", "Indonesia (Serbia)", "in_YU", "in_YU"},
-// {"Norvégien (cyrillique)", "Norsk (kyrillisk)", "no_Cyrl", "no_Cyrl"},
-// {"Norvégien (latin)", "Norsk (latinsk)", "no", "no_Latn"},
-// },
+ {{"iw", "iw-US", "no", "no-Cyrl", "in", "in-YU"},
+ {"Hébreu (États-Unis)", "עברית (ארצות הברית)", "he_US", "he_US"},
+ {"Hébreu (Israël)", "עברית (ישראל)", "he", "he_IL"},
+ {"Indonésien (Indonésie)", "Indonesia (Indonesia)", "id", "id_ID"},
+ {"Indonésien (Serbie)", "Indonesia (Serbia)", "id_RS", "id_RS"},
+ {"Norvégien (cyrillique)", "Norwegian (Cyrillic)", "no_Cyrl", "no_Cyrl"},
+ {"Norvégien (latin)", "Norsk (latinsk)", "no", "no_Latn"},
+ },
{{"zh-Hant-TW", "en", "en-gb", "fr", "zh-Hant", "de", "de-CH", "zh-TW"},
{"Allemand (Allemagne)", "Deutsch (Deutschland)", "de", "de_DE"},
{"Allemand (Suisse)", "Deutsch (Schweiz)", "de_CH", "de_CH"},
@@ -286,46 +286,52 @@ public class ULocaleCollationTest extends TestFmwk {
{"Serbe (cyrillique)", "Српски (ћирилица)", "sr", "sr_Cyrl"},
{"Serbe (latin)", "Srpski (latinica)", "sr_Latn", "sr_Latn"},
},
-// {{"fr-Cyrl", "fr-Arab"},
-// {"Français (arabe)", "Français (arabe)", "fr_Arab", "fr_Arab"},
-// {"Français (cyrillique)", "Français (cyrillique)", "fr_Cyrl", "fr_Cyrl"},
-// },
-// {{"fr-Cyrl-BE", "fr-Arab-CA"},
-// {"Français (arabe, Canada)", "Français (arabe, Canada)", "fr_Arab_CA", "fr_Arab_CA"},
-// {"Français (cyrillique, Belgique)", "Français (cyrillique, Belgique)", "fr_Cyrl_BE", "fr_Cyrl_BE"},
-// }
+ {{"fr-Cyrl", "fr-Arab"},
+ {"Français (arabe)", "French (Arabic)", "fr_Arab", "fr_Arab"},
+ {"Français (cyrillique)", "French (Cyrillic)", "fr_Cyrl", "fr_Cyrl"},
+ },
+ {{"fr-Cyrl-BE", "fr-Arab-CA"},
+ {"Français (arabe, Canada)", "French (Arabic, Canada)", "fr_Arab_CA", "fr_Arab_CA"},
+ {"Français (cyrillique, Belgique)", "French (Cyrillic, Belgium)", "fr_Cyrl_BE", "fr_Cyrl_BE"},
+ }
};
- ULocale french = ULocale.FRENCH;
- LocaleDisplayNames names = LocaleDisplayNames.getInstance(french,
- DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU);
- for (Type type : DisplayContext.Type.values()) {
- logln("Contexts: " + names.getContext(type).toString());
- }
- Collator collator = Collator.getInstance(french);
-
- for (String[][] test : tests) {
- Set<ULocale> list = new LinkedHashSet<ULocale>();
- List<UiListItem> expected = new ArrayList<UiListItem>();
- for (String item : test[0]) {
- list.add(new ULocale(item));
- }
- for (int i = 1; i < test.length; ++i) {
- String[] rawRow = test[i];
- expected.add(new UiListItem(new ULocale(rawRow[2]), new ULocale(rawRow[3]), rawRow[0], rawRow[1]));
+ ULocale originalDefaultLocale = ULocale.getDefault();
+ ULocale.setDefault(ULocale.US);
+ try {
+ ULocale french = ULocale.FRENCH;
+ LocaleDisplayNames names = LocaleDisplayNames.getInstance(french,
+ DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU);
+ for (Type type : DisplayContext.Type.values()) {
+ logln("Contexts: " + names.getContext(type).toString());
}
- List<UiListItem> newList = names.getUiList(list, false, collator);
- if (!expected.equals(newList)) {
- if (expected.size() != newList.size()) {
- errln(list.toString() + ": wrong size" + expected + ", " + newList);
- } else {
- errln(list.toString());
- for (int i = 0; i < expected.size(); ++i) {
- assertEquals(i+"", expected.get(i), newList.get(i));
+ Collator collator = Collator.getInstance(french);
+
+ for (String[][] test : tests) {
+ Set<ULocale> list = new LinkedHashSet<ULocale>();
+ List<UiListItem> expected = new ArrayList<UiListItem>();
+ for (String item : test[0]) {
+ list.add(new ULocale(item));
+ }
+ for (int i = 1; i < test.length; ++i) {
+ String[] rawRow = test[i];
+ expected.add(new UiListItem(new ULocale(rawRow[2]), new ULocale(rawRow[3]), rawRow[0], rawRow[1]));
+ }
+ List<UiListItem> newList = names.getUiList(list, false, collator);
+ if (!expected.equals(newList)) {
+ if (expected.size() != newList.size()) {
+ errln(list.toString() + ": wrong size" + expected + ", " + newList);
+ } else {
+// errln(list.toString());
+ for (int i = 0; i < expected.size(); ++i) {
+ assertEquals(i + "", expected.get(i), newList.get(i));
+ }
}
+ } else {
+ assertEquals(list.toString(), expected, newList);
}
- } else {
- assertEquals(list.toString(), expected, newList);
}
+ } finally {
+ ULocale.setDefault(originalDefaultLocale);
}
}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java
index 75d4bd1f4..be223f7c8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java
@@ -1737,7 +1737,7 @@ public class ULocaleTest extends CoreTestFmwk {
} else {
errln("#" + i + ": locale: expected " + expectLocale + " but got " + n);
}
- Boolean actualBoolean = Boolean.valueOf(r[0]);
+ Boolean actualBoolean = r[0];
if(expectBoolean.equals(actualBoolean)) {
logln("#" + i + ": fallback: OK.");
} else {
@@ -1768,7 +1768,7 @@ public class ULocaleTest extends CoreTestFmwk {
} else {
errln("#" + i + ": expected " + expectLocale + " but got " + n.toString());
}
- Boolean actualBoolean = Boolean.valueOf(r[0]);
+ Boolean actualBoolean = r[0];
if(expectBoolean.equals(actualBoolean)) {
logln("#" + i + ": fallback: OK.");
} else {
@@ -1920,6 +1920,91 @@ public class ULocaleTest extends CoreTestFmwk {
}, {
"zzz",
""
+ }, {
+ // ICU-22547
+ // unicode_language_id = "root" |
+ // (unicode_language_subtag (sep unicode_script_subtag)? | unicode_script_subtag)
+ // (sep unicode_region_subtag)? (sep unicode_variant_subtag)* ;
+ // so "aaaa" is a well-formed unicode_language_id
+ "aaaa",
+ "aaaa",
+ }, {
+ // ICU-22727
+ // unicode_language_subtag = alpha{2,3} | alpha{5,8};
+ // so "bbbbb", "cccccc", "ddddddd", "eeeeeeee" are
+ // well-formed unicode_language_subtag and therefore
+ // well-formed unicode_language_id
+ "bbbbb",
+ "bbbbb",
+ }, {
+ // ICU-22727
+ "cccccc",
+ "cccccc",
+ }, {
+ // ICU-22727
+ "ddddddd",
+ "ddddddd",
+ }, {
+ // ICU-22727
+ "eeeeeeee",
+ "eeeeeeee",
+ }, {
+ // ICU-22546
+ "und-Zzzz",
+ "en_Latn_US" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "en",
+ "en_Latn_US" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "de",
+ "de_Latn_DE" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "sr",
+ "sr_Cyrl_RS" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "sh",
+ // Android patch: addLikelySubtags("sh") returns "sh_Latn_RS" on Android
+ // TODO(b/335896974): Investigate why this patch is needed.
+ "sh_Latn_RS" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "zh_Hani",
+ "zh_Hani_CN" // If change, please also update ULocale.java
+ }, {
+ // ICU-22545 & ICU-22742
+ "en_XA",
+ "en_Latn_XA",
+ }, {
+ // ICU-22545 & ICU-22742
+ "ar_XB",
+ "ar_Arab_XB",
+ }, {
+ // ICU-22545 & ICU-22742
+ "ru_XC",
+ "ru_Cyrl_XC",
+ }, {
+ // ICU-22742
+ "en_PSACCENT",
+ "en_Latn_US_PSACCENT",
+ }, {
+ "ar_PSBIDI",
+ "ar_Arab_EG_PSBIDI",
+ }, {
+ "ru_PSCRACK",
+ "ru_Cyrl_RU_PSCRACK",
+ }, {
+ "ar_PSACCENT",
+ "ar_Arab_EG_PSACCENT",
+ }, {
+ "ru_PSBIDI",
+ "ru_Cyrl_RU_PSBIDI",
+ }, {
+ "en_PSCRACK",
+ "en_Latn_US_PSCRACK",
}
};
@@ -4297,7 +4382,7 @@ public class ULocaleTest extends CoreTestFmwk {
@Test
public void TestForLanguageTag() {
- final Integer NOERROR = Integer.valueOf(-1);
+ final Integer NOERROR = -1;
final Object[][] langtag_to_locale = {
{"en", "en", NOERROR},
@@ -4305,24 +4390,24 @@ public class ULocaleTest extends CoreTestFmwk {
{"und-us", "_US", NOERROR},
{"und-latn", "_Latn", NOERROR},
{"en-us-posix", "en_US_POSIX", NOERROR},
- {"de-de_euro", "de", Integer.valueOf(3)},
+ {"de-de_euro", "de", 3},
{"kok-in", "kok_IN", NOERROR},
- {"123", "", Integer.valueOf(0)},
- {"en_us", "", Integer.valueOf(0)},
- {"en-latn-x", "en_Latn", Integer.valueOf(8)},
+ {"123", "", 0},
+ {"en_us", "", 0},
+ {"en-latn-x", "en_Latn", 8},
{"art-lojban", "jbo", NOERROR},
{"zh-hakka", "hak", NOERROR},
{"zh-cmn-CH", "cmn_CH", NOERROR},
{"xxx-yy", "xxx_YY", NOERROR},
{"fr-234", "fr_234", NOERROR},
{"i-default", "en@x=i-default", NOERROR},
- {"i-test", "", Integer.valueOf(0)},
- {"ja-jp-jp", "ja_JP", Integer.valueOf(6)},
+ {"i-test", "", 0},
+ {"ja-jp-jp", "ja_JP", 6},
{"bogus", "bogus", NOERROR},
- {"boguslang", "", Integer.valueOf(0)},
+ {"boguslang", "", 0},
{"EN-lATN-us", "en_Latn_US", NOERROR},
{"und-variant-1234", "__1234_VARIANT", NOERROR}, /* ICU-20478 */
- {"und-varzero-var1-vartwo", "__VARZERO", Integer.valueOf(12)},
+ {"und-varzero-var1-vartwo", "__VARZERO", 12},
{"en-u-ca-gregory", "en@calendar=gregorian", NOERROR},
{"en-U-cu-USD", "en@currency=usd", NOERROR},
{"en-us-u-va-posix", "en_US_POSIX", NOERROR},
@@ -4337,8 +4422,8 @@ public class ULocaleTest extends CoreTestFmwk {
{"en-us-u-tz-usnyc", "en_US@timezone=America/New_York", NOERROR},
{"und-a-abc-def", "@a=abc-def", NOERROR},
{"zh-u-ca-chinese-x-u-ca-chinese", "zh@calendar=chinese;x=u-ca-chinese", NOERROR},
- {"fr--FR", "fr", Integer.valueOf(3)},
- {"fr-", "fr", Integer.valueOf(3)},
+ {"fr--FR", "fr", 3},
+ {"fr-", "fr", 3},
{"x-elmer", "@x=elmer", NOERROR},
{"en-US-u-attr1-attr2-ca-gregory", "en_US@attribute=attr1-attr2;calendar=gregorian", NOERROR},
{"sr-u-kn", "sr@colnumeric=yes", NOERROR},
@@ -4346,7 +4431,7 @@ public class ULocaleTest extends CoreTestFmwk {
{"en-u-attr2-attr1-kn-kb", "en@attribute=attr1-attr2;colbackwards=yes;colnumeric=yes", NOERROR},
{"ja-u-ijkl-efgh-abcd-ca-japanese-xx-yyy-zzz-kn", "ja@attribute=abcd-efgh-ijkl;calendar=japanese;colnumeric=yes;xx=yyy-zzz", NOERROR},
{"de-u-xc-xphonebk-co-phonebk-ca-buddhist-mo-very-lo-extensi-xd-that-de-should-vc-probably-xz-killthebuffer",
- "de@calendar=buddhist;collation=phonebook;de=should;lo=extensi;mo=very;vc=probably;xc=xphonebk;xd=that;xz=yes", Integer.valueOf(92)},
+ "de@calendar=buddhist;collation=phonebook;de=should;lo=extensi;mo=very;vc=probably;xc=xphonebk;xd=that;xz=yes", 92},
/* #12761 */
{"en-a-bar-u-baz", "en@a=bar;attribute=baz", NOERROR},
{"en-a-bar-u-baz-x-u-foo", "en@a=bar;attribute=baz;x=u-foo", NOERROR},
@@ -4355,10 +4440,10 @@ public class ULocaleTest extends CoreTestFmwk {
{"en-a-bar-u-ca-islamic-civil-x-u-foo", "en@a=bar;calendar=islamic-civil;x=u-foo", NOERROR},
{"en-a-bar-u-baz-ca-islamic-civil-x-u-foo", "en@a=bar;attribute=baz;calendar=islamic-civil;x=u-foo", NOERROR},
/* #20098 */
- {"hant-cmn-cn", "hant", Integer.valueOf(5)},
+ {"hant-cmn-cn", "hant", 5},
{"zh-cmn-TW", "cmn_TW", NOERROR},
- {"zh-x_t-ab", "zh", Integer.valueOf(3)},
- {"zh-hans-cn-u-ca-x_t-u", "zh_Hans_CN@calendar=yes", Integer.valueOf(16)},
+ {"zh-x_t-ab", "zh", 3},
+ {"zh-hans-cn-u-ca-x_t-u", "zh_Hans_CN@calendar=yes", 16},
/* #20140 dupe keys in U-extension */
{"zh-u-ca-chinese-ca-gregory", "zh@calendar=chinese", NOERROR},
{"zh-u-ca-gregory-co-pinyin-ca-chinese", "zh@calendar=gregorian;collation=pinyin", NOERROR},
@@ -4501,7 +4586,7 @@ public class ULocaleTest extends CoreTestFmwk {
for (int i = 0; i < nExtensions; i++) {
String kstr = testcase[i/2 + 1];
- String ext = loc.getExtension(Character.valueOf(kstr.charAt(0)));
+ String ext = loc.getExtension(kstr.charAt(0));
if (ext == null || !ext.equals(testcase[i/2 + 2])) {
errln("Incorrect extension value: key="
+ kstr + ", returned=" + ext + ", expected=" + testcase[i/2 + 2]
@@ -5397,6 +5482,63 @@ public class ULocaleTest extends CoreTestFmwk {
}
+
+ @Test
+ public void TestVariantLengthWithinLimit() {
+ String valid =
+ "_" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678";
+
+ ULocale locale = new ULocale(valid);
+ Assert.assertEquals(valid.substring(2), locale.getVariant());
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void TestVariantLengthOverLimit() {
+ String invalid =
+ "_" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678X"; // One character too long.
+ ULocale locale = new ULocale(invalid);
+ }
+
@Test
public void TestLocaleCanonicalizationFromFile() throws IOException {
BufferedReader testFile = TestUtil.getDataReader("cldr/localeIdentifiers/localeCanonicalization.txt");
@@ -5472,6 +5614,103 @@ public class ULocaleTest extends CoreTestFmwk {
return tests;
}
+ // ICU-22742, test addLikelySubtags with pseudo-locales
+ @Test
+ public void TestPseudoLocales() {
+ // input locale tag, expected locale tag
+ String[][] testCases = new String[][] {
+ // language + region, en
+ { "en-XA", "en-Latn-XA" },
+ { "en-XB", "en-Latn-XB" },
+ { "en-XC", "en-Latn-XC" },
+
+ // language + region, ar
+ { "ar-XA", "ar-Arab-XA" },
+ { "ar-XB", "ar-Arab-XB" },
+ { "ar-XC", "ar-Arab-XC" },
+
+ // language + region, something other than en, ar
+ { "ru-XA", "ru-Cyrl-XA" },
+ { "el-XB", "el-Grek-XB" },
+
+ // undefined language - region
+ { "und-XA", "en-Latn-XA" },
+ { "und-XB", "en-Latn-XB" },
+ { "und-XC", "en-Latn-XC" },
+
+ // language + script + region
+ { "und-Latn-XA", "en-Latn-XA" },
+ { "und-Latn-XB", "en-Latn-XB" },
+ { "und-Latn-XC", "en-Latn-XC" },
+ { "und-Arab-XA", "ar-Arab-XA" },
+ { "und-Arab-XB", "ar-Arab-XB" },
+ { "und-Arab-XC", "ar-Arab-XC" },
+ { "und-Cyrl-XA", "ru-Cyrl-XA" },
+ { "und-Grek-XB", "el-Grek-XB" },
+
+ // Make sure the script is not damaged, when correct
+ { "ru-Cyrl-XA", "ru-Cyrl-XA" },
+ { "el-Grek-XB", "el-Grek-XB" },
+
+ // Make sure the script is not damaged, even if it is wrong
+ { "ru-Grek-XA", "ru-Grek-XA" },
+ { "el-Cyrl-XB", "el-Cyrl-XB" },
+
+ // PS Variants
+ { "en-XA-PSACCENT", "en-Latn-XA-psaccent" },
+ { "en-XA-PSBIDI", "en-Latn-XA-psbidi" },
+ { "en-XA-PSCRACK", "en-Latn-XA-pscrack" },
+ { "ar-XB-PSACCENT", "ar-Arab-XB-psaccent" },
+ { "ar-XB-PSBIDI", "ar-Arab-XB-psbidi" },
+ { "ar-XB-PSCRACK", "ar-Arab-XB-pscrack" },
+ { "en-XC-PSACCENT", "en-Latn-XC-psaccent" },
+ { "en-XC-PSBIDI", "en-Latn-XC-psbidi" },
+ { "en-XC-PSCRACK", "en-Latn-XC-pscrack" },
+
+ { "en-US-PSACCENT", "en-Latn-US-psaccent" },
+ { "en-US-PSBIDI", "en-Latn-US-psbidi" },
+ { "en-US-PSCRACK", "en-Latn-US-pscrack" },
+ { "ar-EG-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "ar-EG-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "ar-EG-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "en-PSACCENT", "en-Latn-US-psaccent" },
+ { "en-PSBIDI", "en-Latn-US-psbidi" },
+ { "en-PSCRACK", "en-Latn-US-pscrack" },
+ { "ar-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "ar-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "ar-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "und-US-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-US-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-US-PSCRACK", "en-Latn-US-pscrack" },
+ { "und-EG-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "und-EG-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "und-EG-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "und-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-PSCRACK", "en-Latn-US-pscrack" },
+ { "und-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-PSCRACK", "en-Latn-US-pscrack" },
+ };
+ String extensions = "-u-nu-Deva-hc-h23-fw-mon-mu-celsius-x-something-more";
+
+ for (String[] testCase : testCases) {
+ String inputTag = testCase[0];
+ String expectedTag = testCase[1];
+ ULocale result = ULocale.addLikelySubtags(ULocale.forLanguageTag(inputTag));
+ ULocale expected = ULocale.forLanguageTag(expectedTag);
+ assertEquals("pseudo-locales(" + inputTag + ")", expected, result);
+
+ // Make sure this also works with extensions. Kind of hacky...
+ result = ULocale.addLikelySubtags(ULocale.forLanguageTag(inputTag + extensions));
+ expected = ULocale.forLanguageTag(expectedTag + extensions);
+ assertEquals("pseudo-locales(" + inputTag + ")", expected, result);
+ }
+ }
+
@Test
@Parameters(method = "readLikelySubtagsTestCases")
public void likelySubtagsDataDriven(TestCase test) {
diff --git a/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java b/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java
index 5d5250dfa..f4b001f29 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java
@@ -27,12 +27,12 @@ import android.icu.impl.ICUData;
import android.icu.impl.ICUResourceBundle;
import android.icu.impl.UResource;
import android.icu.impl.locale.LSR;
+import android.icu.impl.locale.LikelySubtags;
import android.icu.impl.locale.LocaleDistance;
import android.icu.impl.locale.XCldrStub.Multimap;
import android.icu.impl.locale.XCldrStub.Predicate;
import android.icu.impl.locale.XCldrStub.Splitter;
import android.icu.impl.locale.XCldrStub.TreeMultimap;
-import android.icu.impl.locale.XLikelySubtags;
import android.icu.util.BytesTrieBuilder;
import android.icu.util.Output;
import android.icu.util.ULocale;
@@ -492,7 +492,7 @@ public final class LocaleDistanceBuilder {
Set<LSR> paradigmLSRs = new LinkedHashSet<>(); // could be TreeSet if LSR were Comparable
for (String paradigm : paradigms) {
ULocale pl = new ULocale(paradigm);
- LSR max = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(pl, false);
+ LSR max = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(pl, false);
// Clear the LSR flags to make the data equality test in
// LocaleDistanceTest happy.
paradigmLSRs.add(new LSR(max.language, max.script, max.region, LSR.DONT_CARE_FLAGS));
@@ -890,7 +890,7 @@ public final class LocaleDistanceBuilder {
}
public static final void main(String[] args) throws IOException {
- XLikelySubtags.Data likelyData = XLikelySubtags.Data.load();
+ LikelySubtags.Data likelyData = LikelySubtags.Data.load();
LocaleDistance.Data distanceData = build();
System.out.println("Writing LocaleDistance.Data to " + TXT_PATH + '/' + TXT_FILE_NAME);
try (PrintWriter out = openWriter()) {
diff --git a/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties b/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
index b85c548f7..9aa4ad162 100644
--- a/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
+++ b/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
@@ -1,2 +1,2 @@
# Property file for AndroidICUVersionTest.
-version=74.2.0.0
+version=75.1.0.0
diff --git a/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java b/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
index 7a6e046ba..1c7da169c 100644
--- a/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
+++ b/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
@@ -49,10 +49,9 @@ public class NumberFormatTest {
// below assert statement.
assertEquals('.', dfs.getGroupingSeparator());
assertEquals(',', dfs.getDecimalSeparator());
- // TODO(b/322774673): Re-enable this test in 24Q3.
- // assertEquals('.', dfs.getMonetaryDecimalSeparator());
- // assertEquals(',', dfs.getMonetaryGroupingSeparator());
+ assertEquals('.', dfs.getMonetaryDecimalSeparator());
+ assertEquals(',', dfs.getMonetaryGroupingSeparator());
// Assert that the separators in DecimalFormatSymbols are used.
- // assertEquals("€9,876.66",df.format(9876.66));
+ assertEquals("€9,876.66",df.format(9876.66));
}
}
diff --git a/icu4c/APIChangeReport.html b/icu4c/APIChangeReport.html
index 58a33293e..65fc04e92 100644
--- a/icu4c/APIChangeReport.html
+++ b/icu4c/APIChangeReport.html
@@ -5,31 +5,31 @@
-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>ICU4C API Comparison: ICU 73 with ICU 74</title>
+<title>ICU4C API Comparison: ICU 74 with ICU 75</title>
<link type="text/css" href="icu4c.css" rel="stylesheet">
</head>
<body>
<a name="#_top"></a>
-<h1>ICU4C API Comparison: ICU 73 with ICU 74</h1>
+<h1>ICU4C API Comparison: ICU 74 with ICU 75</h1>
<div id="toc">
<ul>
<li>
-<a href="#removed">Removed from ICU 73</a>
+<a href="#removed">Removed from ICU 74</a>
</li>
<li>
-<a href="#deprecated">Deprecated or Obsoleted in ICU 74</a>
+<a href="#deprecated">Deprecated or Obsoleted in ICU 75</a>
</li>
<li>
-<a href="#changed">Changed in ICU 74</a>
+<a href="#changed">Changed in ICU 75</a>
</li>
<li>
-<a href="#promoted">Promoted to stable in ICU 74</a>
+<a href="#promoted">Promoted to stable in ICU 75</a>
</li>
<li>
-<a href="#added">Added in ICU 74</a>
+<a href="#added">Added in ICU 75</a>
</li>
<li>
-<a href="#other">Other existing drafts in ICU 74</a>
+<a href="#other">Other existing drafts in ICU 75</a>
</li>
<li>
<a href="#simplifications">Signature Simplifications</a>
@@ -38,958 +38,1572 @@
<hr>
</div>
<a name="removed"></a>
-<h2>Removed from ICU 73</h2>
+<h2>Removed from ICU 74</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+<th>File</th><th>API</th><th>ICU 74</th><th>ICU 75</th>
</tr>
</THEAD>
+<tr class="row1">
+<td class="file">caniter.h</td><td class="proto"><tt>static</tt> void icu::CanonicalIterator::permute(UnicodeString&amp;, bool, Hashtable*, UErrorCode&amp;)</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">gregocal.h</td><td class="proto">UDate icu::GregorianCalendar::defaultCenturyStart() const</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">gregocal.h</td><td class="proto">bool icu::GregorianCalendar::haveDefaultCentury() const</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">gregocal.h</td><td class="proto">int32_t icu::GregorianCalendar::defaultCenturyStartYear() const</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">platform.h</td><td class="proto"><tt>#define</tt> U_HAVE_INTTYPES_H</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">platform.h</td><td class="proto"><tt>#define</tt> U_HAVE_STDINT_H</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="deprecated"></a>
-<h2>Deprecated or Obsoleted in ICU 74</h2>
+<h2>Deprecated or Obsoleted in ICU 75</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+<th>File</th><th>API</th><th>ICU 74</th><th>ICU 75</th>
</tr>
</THEAD>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::truncateStart(uint32_t, UErrorCode&amp;)</td><td class="">Draft<br>ICU 73</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_truncateStart(USimpleNumber*, int32_t, UErrorCode*)</td><td class="">Draft<br>ICU 73</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 75</span></span></td>
+</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="changed"></a>
-<h2>Changed in ICU 74 (old, new)</h2>
+<h2>Changed in ICU 75 (old, new)</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+<th>File</th><th>API</th><th>ICU 74</th><th>ICU 75</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder icu::DisplayOptions::copyToBuilder() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">calendar.h</td><td class="proto">bool icu::Calendar::inTemporalLeapYear(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">calendar.h</td><td class="proto">const char* icu::Calendar::getTemporalMonthCode(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">calendar.h</td><td class="proto">void icu::Calendar::setTemporalMonthCode(const char*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBeaufort()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBeaufort(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfCeiling</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfFloor</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfOdd</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">FormattedNumber icu::number::SimpleNumberFormatter::format(SimpleNumber, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">FormattedNumber icu::number::SimpleNumberFormatter::formatInt64(int64_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions icu::DisplayOptions::Builder::build()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">SimpleNumber&amp; icu::number::SimpleNumber::operator=(SimpleNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">SimpleNumberFormatter&amp; icu::number::SimpleNumberFormatter::operator=(SimpleNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::SimpleNumber()=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::SimpleNumber(SimpleNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::~SimpleNumber()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::SimpleNumberFormatter()=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::SimpleNumberFormatter(SimpleNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::~SimpleNumberFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumber icu::number::SimpleNumber::forInt64(int64_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocale(const icu::Locale&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndGroupingStrategy(const icu::Locale&amp;, UNumberGroupingStrategy, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto"><tt>static</tt> Builder icu::DisplayOptions::builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale&amp;, const DecimalFormatSymbols&amp;, UNumberGroupingStrategy, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">formattednumber.h</td><td class="proto">UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::multiplyByPowerOfTen(int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::roundTo(int32_t, UNumberFormatRoundingMode, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMinimumFractionDigits(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMinimumIntegerDigits(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setSign(USimpleNumberSign, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::truncateStart(uint32_t, UErrorCode&amp;)</td><td class="">Draft<br>ICU 73</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UCalendarDateFields::UCAL_ORDINAL_MONTH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">uset.h</td><td class="proto"><tt>enum</tt> ::USET_SIMPLE_CASE_INSENSITIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumber* usnum_openForInt64(int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumberFormatter* usnumf_openForLocale(const char*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumberFormatter* usnumf_openForLocaleAndGroupingStrategy(const char*, UNumberGroupingStrategy, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_MINUS_SIGN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_NO_SIGN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_PLUS_SIGN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_close(USimpleNumber*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_multiplyByPowerOfTen(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_roundTo(USimpleNumber*, int32_t, UNumberFormatRoundingMode, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMinimumFractionDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMinimumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setSign(USimpleNumber*, USimpleNumberSign, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setToInt64(USimpleNumber*, int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_truncateStart(USimpleNumber*, int32_t, UErrorCode*)</td><td class="">Draft<br>ICU 73</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_close(USimpleNumberFormatter*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_format(const USimpleNumberFormatter*, USimpleNumber*, UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_formatInt64(const USimpleNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="promoted"></a>
+<h2>Promoted to stable in ICU 75</h2>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>ICU 74</th><th>ICU 75</th>
+</tr>
+</THEAD>
+<tr class="row1">
+<td class="file">calendar.h</td><td class="proto">bool icu::Calendar::inTemporalLeapYear(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">calendar.h</td><td class="proto">const char* icu::Calendar::getTemporalMonthCode(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">calendar.h</td><td class="proto">void icu::Calendar::setTemporalMonthCode(const char*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBeaufort()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBeaufort(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfCeiling</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfFloor</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfOdd</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">FormattedNumber icu::number::SimpleNumberFormatter::format(SimpleNumber, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">FormattedNumber icu::number::SimpleNumberFormatter::formatInt64(int64_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">SimpleNumber&amp; icu::number::SimpleNumber::operator=(SimpleNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">SimpleNumberFormatter&amp; icu::number::SimpleNumberFormatter::operator=(SimpleNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::SimpleNumber()=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::SimpleNumber(SimpleNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::~SimpleNumber()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::SimpleNumberFormatter()=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::SimpleNumberFormatter(SimpleNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::~SimpleNumberFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumber icu::number::SimpleNumber::forInt64(int64_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocale(const icu::Locale&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndGroupingStrategy(const icu::Locale&amp;, UNumberGroupingStrategy, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale&amp;, const DecimalFormatSymbols&amp;, UNumberGroupingStrategy, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::multiplyByPowerOfTen(int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::roundTo(int32_t, UNumberFormatRoundingMode, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMinimumFractionDigits(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMinimumIntegerDigits(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setSign(USimpleNumberSign, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UCalendarDateFields::UCAL_ORDINAL_MONTH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_ARABIC_NASTALIQ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 75</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 75.">(Born Stable)</b></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">uset.h</td><td class="proto"><tt>enum</tt> ::USET_SIMPLE_CASE_INSENSITIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumber* usnum_openForInt64(int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumberFormatter* usnumf_openForLocale(const char*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumberFormatter* usnumf_openForLocaleAndGroupingStrategy(const char*, UNumberGroupingStrategy, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_MINUS_SIGN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">unum.h</td><td class="proto">bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_NO_SIGN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_PLUS_SIGN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_close(USimpleNumber*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_multiplyByPowerOfTen(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_roundTo(USimpleNumber*, int32_t, UNumberFormatRoundingMode, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMinimumFractionDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMinimumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setSign(USimpleNumber*, USimpleNumberSign, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setToInt64(USimpleNumber*, int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_close(USimpleNumberFormatter*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_format(const USimpleNumberFormatter*, USimpleNumber*, UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_formatInt64(const USimpleNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 73</td>
</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
-<a name="promoted"></a>
-<h2>Promoted to stable in ICU 74</h2>
+<a name="added"></a>
+<h2>Added in ICU 75</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+<th>File</th><th>API</th><th>ICU 74</th><th>ICU 75</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder icu::DisplayOptions::copyToBuilder() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">calendar.h</td><td class="proto"><tt>#define</tt> DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">caniter.h</td><td class="proto"><tt>static</tt> void icu::CanonicalIterator::permute(UnicodeString&amp;, bool, Hashtable*, UErrorCode&amp;, int32_t depth=)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_arguments.h</td><td class="proto">MessageArguments&amp; icu::message2::MessageArguments::operator=(MessageArguments&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_arguments.h</td><td class="proto">icu::message2::MessageArguments::MessageArguments()=default</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_arguments.h</td><td class="proto">icu::message2::MessageArguments::MessageArguments(const std::map&lt;, Formattable &gt;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_arguments.h</td><td class="proto">icu::message2::MessageArguments::~MessageArguments()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder &amp; icu::message2::data_model::Markup::Builder::setClose()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder &amp; icu::message2::data_model::Markup::Builder::setOpen()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions icu::DisplayOptions::Builder::build()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder &amp; icu::message2::data_model::Markup::Builder::setStandalone()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::MFDataModel::Builder::addBinding(Binding&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::MFDataModel::Builder::addSelector(Expression&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::MFDataModel::Builder::addUnsupportedStatement(UnsupportedStatement&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::MFDataModel::Builder::addVariant(SelectorKeys&amp;&amp;, Pattern&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::MFDataModel::Builder::setPattern(Pattern&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Expression::Builder::addAttribute(const UnicodeString&amp;, Operand&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Expression::Builder::setOperand(Operand&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Expression::Builder::setOperator(Operator&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Markup::Builder::addAttribute(const UnicodeString&amp;, Operand&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Markup::Builder::addOption(const UnicodeString&amp;, Operand&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto"><tt>static</tt> Builder icu::DisplayOptions::builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Markup::Builder::setName(const UnicodeString&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">formattednumber.h</td><td class="proto">UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Operator::Builder::addOption(const UnicodeString&amp;, Operand&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Operator::Builder::setFunctionName(FunctionName&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Operator::Builder::setReserved(Reserved&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Pattern::Builder::add(Expression&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Pattern::Builder::add(Markup&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Pattern::Builder::add(UnicodeString&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::Reserved::Builder::add(Literal&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::SelectorKeys::Builder::add(Key&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA_PREBASE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::UnsupportedStatement::Builder::addExpression(Expression&amp;&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA_START</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::UnsupportedStatement::Builder::setBody(Reserved&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Builder&amp; icu::message2::data_model::UnsupportedStatement::Builder::setKeyword(const UnicodeString&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_VIRAMA_FINAL</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Expression icu::message2::data_model::Expression::Builder::build(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_VIRAMA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Expression&amp; icu::message2::data_model::Expression::operator=(Expression)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Literal&amp; icu::message2::data_model::Literal::operator=(Literal)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">MFDataModel icu::message2::MFDataModel::Builder::build(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Markup icu::message2::data_model::Markup::Builder::build(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Operator icu::message2::data_model::Operator::Builder::build(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Option&amp; icu::message2::data_model::Option::operator=(Option)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Pattern icu::message2::data_model::Pattern::Builder::build(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">PatternPart&amp; icu::message2::data_model::PatternPart::operator=(PatternPart)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Reserved icu::message2::data_model::Reserved::Builder::build(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">Reserved&amp; icu::message2::data_model::Reserved::operator=(Reserved)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">SelectorKeys icu::message2::data_model::SelectorKeys::Builder::build(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">UnicodeString icu::message2::data_model::Literal::quoted() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">UnsupportedStatement icu::message2::data_model::UnsupportedStatement::Builder::build(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">UnsupportedStatement&amp; icu::message2::data_model::UnsupportedStatement::operator=(UnsupportedStatement)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Expression::isFunctionCall() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Expression::isReserved() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Expression::isStandaloneAnnotation() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Literal::isQuoted() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Literal::operator&lt;(const Literal&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Literal::operator==(const Literal&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Markup::isClose() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Markup::isOpen() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::Markup::isStandalone() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::PatternPart::isExpression() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::PatternPart::isMarkup() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">bool icu::message2::data_model::PatternPart::isText() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const Expression &amp; icu::message2::data_model::PatternPart::contents() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const Literal&amp; icu::message2::data_model::Reserved::getPart(int32_t) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const Markup &amp; icu::message2::data_model::PatternPart::asMarkup() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const Operand &amp; icu::message2::data_model::Expression::getOperand() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const Operand &amp; icu::message2::data_model::Option::getValue() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const Operator* icu::message2::data_model::Expression::getOperator(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const Reserved* icu::message2::data_model::UnsupportedStatement::getBody(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const UnicodeString &amp; icu::message2::data_model::Literal::unquoted() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const UnicodeString &amp; icu::message2::data_model::Markup::getName() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const UnicodeString &amp; icu::message2::data_model::Option::getName() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const UnicodeString &amp; icu::message2::data_model::PatternPart::asText() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">const UnicodeString &amp; icu::message2::data_model::UnsupportedStatement::getKeyword() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::MFDataModel::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::MFDataModel::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Expression::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Expression::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Expression::Expression()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Expression::Expression(const Expression&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Expression::~Expression()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Literal::Literal()=default</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Literal::Literal(bool, const UnicodeString&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Literal::Literal(const Literal&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Literal::~Literal()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Markup::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Markup::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Markup::Markup()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">unum.h</td><td class="proto">bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Markup::~Markup()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
-</table>
-<P></P>
-<a href="#_top">(jump back to top)</a>
-<hr>
-<a name="added"></a>
-<h2>Added in ICU 74</h2>
-<table BORDER="1" class="genTable">
-<THEAD>
-<tr>
-<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Operator::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Operator::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Option::Option()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Option::Option(const Option&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Option::Option(const UnicodeString&amp;, Operand&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Option::~Option()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Pattern::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Pattern::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::PatternPart::PatternPart()=default</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::PatternPart::PatternPart(Expression&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::PatternPart::PatternPart(Markup&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::PatternPart::PatternPart(const PatternPart&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::PatternPart::PatternPart(const UnicodeString&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::PatternPart::~PatternPart()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Reserved::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Reserved::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Reserved::Reserved()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Reserved::Reserved(const Reserved&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::Reserved::~Reserved()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::SelectorKeys::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::SelectorKeys::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::UnsupportedStatement::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::UnsupportedStatement::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::UnsupportedStatement::UnsupportedStatement()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::UnsupportedStatement::UnsupportedStatement(const UnsupportedStatement&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">icu::message2::data_model::UnsupportedStatement::~UnsupportedStatement()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">int32_t icu::message2::data_model::Reserved::numParts() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">std::vector&lt; Expression &gt; icu::message2::data_model::UnsupportedStatement::getExpressions() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">std::vector&lt; Option &gt; icu::message2::data_model::Expression::getAttributes() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_data_model.h</td><td class="proto">std::vector&lt; Option &gt; icu::message2::data_model::Markup::getAttributes() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_data_model.h</td><td class="proto">std::vector&lt; Option &gt; icu::message2::data_model::Markup::getOptions() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">Appendable&amp; icu::message2::FormattedMessage::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">CharacterIterator* icu::message2::FormattedMessage::toCharacterIterator(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">Formattable&amp; icu::message2::Formattable::operator=(Formattable)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">FormattedPlaceholder&amp; icu::message2::FormattedPlaceholder::operator=(FormattedPlaceholder&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">FormattedValue&amp; icu::message2::FormattedValue::operator=(FormattedValue&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">FunctionOptions&amp; icu::message2::FunctionOptions::operator=(FunctionOptions&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">FunctionOptions&amp; icu::message2::FunctionOptions::operator=(const FunctionOptions&amp;)=delete</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">FunctionOptionsMap icu::message2::FunctionOptions::getOptions() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">StringPiece icu::message2::FormattedMessage::subSequence(int32_t, int32_t, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">UDate icu::message2::Formattable::getDate(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">UFormattableType icu::message2::Formattable::getType() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">UnicodeString icu::message2::FormattedMessage::toString(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">UnicodeString icu::message2::FormattedMessage::toTempString(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">UnicodeString icu::message2::FormattedPlaceholder::formatToString(const Locale&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">bool icu::message2::Formattable::isNumeric() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">bool icu::message2::FormattedMessage::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">bool icu::message2::FormattedPlaceholder::canFormat() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">bool icu::message2::FormattedPlaceholder::isEvaluated() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">bool icu::message2::FormattedPlaceholder::isFallback() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">bool icu::message2::FormattedPlaceholder::isNullOperand() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">bool icu::message2::FormattedValue::isNumber() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">bool icu::message2::FormattedValue::isString() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">char16_t icu::message2::FormattedMessage::charAt(int32_t, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">const Formattable* icu::message2::Formattable::getArray(int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_formattable.h</td><td class="proto">const FormattableObject* icu::message2::Formattable::getObject(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_formattable.h</td><td class="proto">const FormattedValue &amp; icu::message2::FormattedPlaceholder::output() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
-</THEAD>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGasolineEnergyDensity()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">const FunctionOptions &amp; icu::message2::FormattedPlaceholder::options() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGasolineEnergyDensity(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">const UnicodeString &amp; icu::message2::FormattableObject::tag() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">measure.h</td><td class="proto">bool icu::Measure::operator!=(const UObject&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">const UnicodeString &amp; icu::message2::FormattedPlaceholder::getFallback() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">normalizer2.h</td><td class="proto"><tt>static</tt> const Normalizer2* icu::Normalizer2::getNFKCSimpleCasefoldInstance(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">const UnicodeString &amp; icu::message2::FormattedValue::getString() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">rbbi.h</td><td class="proto">bool icu::ExternalBreakEngine::handles(UChar32) const</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">const UnicodeString&amp; icu::message2::Formattable::getString(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">rbbi.h</td><td class="proto">bool icu::ExternalBreakEngine::isFor(UChar32, const char*) const</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">const message2::Formattable &amp; icu::message2::FormattedPlaceholder::asFormattable() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">rbbi.h</td><td class="proto">icu::ExternalBreakEngine::~ExternalBreakEngine()</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">const number::FormattedNumber &amp; icu::message2::FormattedValue::getNumber() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">rbbi.h</td><td class="proto">int32_t icu::ExternalBreakEngine::fillBreaks(UText*, int32_t, int32_t, int32_t*, int32_t, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">double icu::message2::Formattable::getDouble(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">rbbi.h</td><td class="proto"><tt>static</tt> void icu::RuleBasedBreakIterator::registerExternalBreakEngine(ExternalBreakEngine*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::Formattable icu::message2::Formattable::asICUFormattable(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> UnicodeString&amp; icu::TimeZone::getIanaID(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::Formattable::Formattable()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ucal.h</td><td class="proto">int32_t ucal_getIanaTimeZoneID(const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::Formattable::Formattable(const Formattable&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::Formattable::Formattable(const Formattable*, int32_t)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA_PREBASE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::Formattable::Formattable(const FormattableObject*)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA_START</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::Formattable::Formattable(const UnicodeString&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::Formattable::Formattable(double)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_VIRAMA_FINAL</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::Formattable::Formattable(int64_t)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_VIRAMA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::Formattable::~Formattable()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_IDS_UNARY_OPERATOR</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattableObject::~FormattableObject()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_CONTINUE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedMessage::FormattedMessage(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_START</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedMessage::~FormattedMessage()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocale.h</td><td class="proto">UEnumeration* ulocale_getKeywords(const ULocale*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedPlaceholder::FormattedPlaceholder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocale.h</td><td class="proto">UEnumeration* ulocale_getUnicodeKeywords(const ULocale*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedPlaceholder::FormattedPlaceholder(FormattedPlaceholder&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocale.h</td><td class="proto">ULocale* ulocale_openForLanguageTag(const char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedPlaceholder::FormattedPlaceholder(const Formattable&amp;, const UnicodeString&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocale.h</td><td class="proto">ULocale* ulocale_openForLocaleID(const char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedPlaceholder::FormattedPlaceholder(const FormattedPlaceholder&amp;, FormattedValue&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocale.h</td><td class="proto">bool ulocale_isBogus(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedPlaceholder::FormattedPlaceholder(const FormattedPlaceholder&amp;, FunctionOptions&amp;&amp;, FormattedValue&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getBaseName(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedPlaceholder::FormattedPlaceholder(const UnicodeString&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getLanguage(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedValue::FormattedValue()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getLocaleID(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedValue::FormattedValue(FormattedValue&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getRegion(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedValue::FormattedValue(const UnicodeString&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getScript(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedValue::FormattedValue(number::FormattedNumber&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getVariant(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FormattedValue::~FormattedValue()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocale.h</td><td class="proto">int32_t ulocale_getKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FunctionOptions::FunctionOptions()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocale.h</td><td class="proto">int32_t ulocale_getUnicodeKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FunctionOptions::FunctionOptions(FunctionOptions&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocale.h</td><td class="proto">void ulocale_close(ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">icu::message2::FunctionOptions::~FunctionOptions()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">ULocale* ulocbld_buildULocale(ULocaleBuilder*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">int32_t icu::message2::Formattable::getLong(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">ULocaleBuilder* ulocbld_open()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">int32_t icu::message2::FormattedMessage::length(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">bool ulocbld_copyErrorTo(const ULocaleBuilder*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">int64_t icu::message2::Formattable::getInt64(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">int32_t ulocbld_buildLanguageTag(ULocaleBuilder*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto">int64_t icu::message2::Formattable::getInt64Value(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">int32_t ulocbld_buildLocaleID(ULocaleBuilder*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto"><tt>static</tt> Formattable icu::message2::Formattable::forDate(UDate)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_addUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_formattable.h</td><td class="proto"><tt>static</tt> Formattable icu::message2::Formattable::forDecimal(std::string_view, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_adoptULocale(ULocaleBuilder*, ULocale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">Builder&amp; icu::message2::MFFunctionRegistry::Builder::adoptFormatter(const data_model::FunctionName&amp;, FormatterFactory*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_clear(ULocaleBuilder*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">Builder&amp; icu::message2::MFFunctionRegistry::Builder::adoptSelector(const data_model::FunctionName&amp;, SelectorFactory*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_clearExtensions(ULocaleBuilder*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">Builder&amp; icu::message2::MFFunctionRegistry::Builder::setDefaultFormatterNameByType(const UnicodeString&amp;, const data_model::FunctionName&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_close(ULocaleBuilder*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">FormattedPlaceholder icu::message2::Formatter::format(FormattedPlaceholder&amp;&amp;, FunctionOptions&amp;&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_removeUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">Formatter* icu::message2::FormatterFactory::createFormatter(const Locale&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setExtension(ULocaleBuilder*, char, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">FormatterFactory&amp; icu::message2::FormatterFactory::operator=(const FormatterFactory&amp;)=delete</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLanguage(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">FormatterFactory* icu::message2::MFFunctionRegistry::getFormatter(const FunctionName&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLanguageTag(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">MFFunctionRegistry icu::message2::MFFunctionRegistry::Builder::build()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLocale(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">MFFunctionRegistry&amp; icu::message2::MFFunctionRegistry::operator=(MFFunctionRegistry&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setRegion(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">Selector* icu::message2::SelectorFactory::createSelector(const Locale&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setScript(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">SelectorFactory&amp; icu::message2::SelectorFactory::operator=(const SelectorFactory&amp;)=delete</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setUnicodeLocaleKeyword(ULocaleBuilder*, const char*, int32_t, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">bool icu::message2::MFFunctionRegistry::getDefaultFormatterNameByType(const UnicodeString&amp;, FunctionName&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setVariant(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">const SelectorFactory* icu::message2::MFFunctionRegistry::getSelector(const FunctionName&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">unorm2.h</td><td class="proto">const UNormalizer2* unorm2_getNFKCSimpleCasefoldInstance(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">icu::message2::Formatter::~Formatter()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">icu::UnicodeString&amp; uspoof_getBidiSkeletonUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, icu::UnicodeString&amp;, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">icu::message2::FormatterFactory::~FormatterFactory()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getBidiSkeleton(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">icu::message2::MFFunctionRegistry::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getBidiSkeletonUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">icu::message2::MFFunctionRegistry::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusable(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, const UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">icu::message2::MFFunctionRegistry::MFFunctionRegistry(MFFunctionRegistry&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusableUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, const char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">icu::message2::MFFunctionRegistry::~MFFunctionRegistry()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusableUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, const icu::UnicodeString&amp;, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 74</span></span></td>
+<td class="file">messageformat2_function_registry.h</td><td class="proto">icu::message2::Selector::~Selector()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2_function_registry.h</td><td class="proto">icu::message2::SelectorFactory::~SelectorFactory()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2_function_registry.h</td><td class="proto">void icu::message2::Selector::selectKey(FormattedPlaceholder&amp;&amp;, FunctionOptions&amp;&amp;, const UnicodeString*, int32_t, UnicodeString*, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2.h</td><td class="proto">Builder&amp; icu::message2::MessageFormatter::Builder::setDataModel(MFDataModel&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2.h</td><td class="proto">Builder&amp; icu::message2::MessageFormatter::Builder::setFunctionRegistry(const MFFunctionRegistry&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2.h</td><td class="proto">Builder&amp; icu::message2::MessageFormatter::Builder::setLocale(const Locale&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2.h</td><td class="proto">Builder&amp; icu::message2::MessageFormatter::Builder::setPattern(const UnicodeString&amp;, UParseError&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2.h</td><td class="proto">FormattedMessage icu::message2::MessageFormatter::format(const MessageArguments&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2.h</td><td class="proto">MessageFormatter icu::message2::MessageFormatter::Builder::build(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2.h</td><td class="proto">MessageFormatter&amp; icu::message2::MessageFormatter::operator=(MessageFormatter&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2.h</td><td class="proto">UnicodeString icu::message2::MessageFormatter::formatToString(const MessageArguments&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2.h</td><td class="proto">UnicodeString icu::message2::MessageFormatter::getPattern() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2.h</td><td class="proto">const Locale &amp; icu::message2::MessageFormatter::getLocale() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2.h</td><td class="proto">const MFDataModel &amp; icu::message2::MessageFormatter::getDataModel() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2.h</td><td class="proto">const UnicodeString &amp; icu::message2::MessageFormatter::getNormalizedPattern() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2.h</td><td class="proto">icu::message2::MessageFormatter::Builder::Builder(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">messageformat2.h</td><td class="proto">icu::message2::MessageFormatter::Builder::~Builder()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">messageformat2.h</td><td class="proto">icu::message2::MessageFormatter::~MessageFormatter()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() &amp;&amp;</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numberformatter.h</td><td class="proto">UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() const &amp;</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberrangeformatter.h</td><td class="proto">UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() &amp;&amp;</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numberrangeformatter.h</td><td class="proto">UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() const &amp;</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMaximumIntegerDigits(uint32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto">bool u_hasIDType(UChar32, UIdentifierType)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierStatus::U_ID_STATUS_ALLOWED</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierStatus::U_ID_STATUS_RESTRICTED</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_DEFAULT_IGNORABLE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_DEPRECATED</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_EXCLUSION</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_INCLUSION</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_LIMITED_USE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_NOT_CHARACTER</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_NOT_NFKC</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_NOT_XID</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_OBSOLETE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_RECOMMENDED</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_TECHNICAL</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UIdentifierType::U_ID_TYPE_UNCOMMON_USE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_IDENTIFIER_STATUS</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_IDENTIFIER_TYPE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto">int32_t u_getIDTypes(UChar32, UIdentifierType*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uconfig.h</td><td class="proto"><tt>#define</tt> UCONFIG_NO_MF2</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_ARABIC_NASTALIQ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 75</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 75.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMaximumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_DUPLICATE_DECLARATION_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_DUPLICATE_OPTION_NAME_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_FORMATTING_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_MISSING_SELECTOR_ANNOTATION_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_NONEXHAUSTIVE_PATTERN_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_OPERAND_MISMATCH_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_SELECTOR_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_SYNTAX_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_UNKNOWN_FUNCTION_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_UNRESOLVED_VARIABLE_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_UNSUPPORTED_EXPRESSION_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_UNSUPPORTED_STATEMENT_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_MF_VARIANT_KEY_MISMATCH_ERROR</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 75</span></span></td>
</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="other"></a>
-<h2>Other existing drafts in ICU 74</h2>
+<h2>Other existing drafts in ICU 75</h2>
<div class="other">
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+<th>File</th><th>API</th><th>ICU 74</th><th>ICU 75</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">calendar.h</td><td class="proto">bool icu::Calendar::inTemporalLeapYear(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<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>
</tr>
<tr class="row0">
-<td class="file">calendar.h</td><td class="proto">const char* icu::Calendar::getTemporalMonthCode(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGasolineEnergyDensity()</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">calendar.h</td><td class="proto">void icu::Calendar::setTemporalMonthCode(const char*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGasolineEnergyDensity(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<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>
+<td class="file">measure.h</td><td class="proto">bool icu::Measure::operator!=(const UObject&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBeaufort()</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">normalizer2.h</td><td class="proto"><tt>static</tt> const Normalizer2* icu::Normalizer2::getNFKCSimpleCasefoldInstance(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBeaufort(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> UnicodeString&amp; icu::TimeZone::getIanaID(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfCeiling</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ucal.h</td><td class="proto">int32_t ucal_getIanaTimeZoneID(const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfFloor</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_IDS_UNARY_OPERATOR</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfOdd</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_CONTINUE</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto">FormattedNumber icu::number::SimpleNumberFormatter::format(SimpleNumber, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_START</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto">FormattedNumber icu::number::SimpleNumberFormatter::formatInt64(int64_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">UEnumeration* ulocale_getKeywords(const ULocale*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto">SimpleNumber&amp; icu::number::SimpleNumber::operator=(SimpleNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">UEnumeration* ulocale_getUnicodeKeywords(const ULocale*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto">SimpleNumberFormatter&amp; icu::number::SimpleNumberFormatter::operator=(SimpleNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">ULocale* ulocale_openForLanguageTag(const char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::SimpleNumber()=default</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">ULocale* ulocale_openForLocaleID(const char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::SimpleNumber(SimpleNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">bool ulocale_isBogus(const ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::~SimpleNumber()</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getBaseName(const ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::SimpleNumberFormatter()=default</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getLanguage(const ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::SimpleNumberFormatter(SimpleNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getLocaleID(const ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::~SimpleNumberFormatter()</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getRegion(const ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumber icu::number::SimpleNumber::forInt64(int64_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getScript(const ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocale(const icu::Locale&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getVariant(const ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndGroupingStrategy(const icu::Locale&amp;, UNumberGroupingStrategy, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">int32_t ulocale_getKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale&amp;, const DecimalFormatSymbols&amp;, UNumberGroupingStrategy, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">int32_t ulocale_getUnicodeKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::multiplyByPowerOfTen(int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocale.h</td><td class="proto">void ulocale_close(ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::roundTo(int32_t, UNumberFormatRoundingMode, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">ULocale* ulocbld_buildULocale(ULocaleBuilder*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMinimumFractionDigits(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">ULocaleBuilder* ulocbld_open()</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMinimumIntegerDigits(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">bool ulocbld_copyErrorTo(const ULocaleBuilder*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setSign(USimpleNumberSign, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">int32_t ulocbld_buildLanguageTag(ULocaleBuilder*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::truncateStart(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">int32_t ulocbld_buildLocaleID(ULocaleBuilder*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UCalendarDateFields::UCAL_ORDINAL_MONTH</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_addUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<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>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_adoptULocale(ULocaleBuilder*, ULocale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">uset.h</td><td class="proto"><tt>enum</tt> (anonymous)::USET_SIMPLE_CASE_INSENSITIVE</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_clear(ULocaleBuilder*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumber* usnum_openForInt64(int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_clearExtensions(ULocaleBuilder*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumberFormatter* usnumf_openForLocale(const char*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_close(ULocaleBuilder*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumberFormatter* usnumf_openForLocaleAndGroupingStrategy(const char*, UNumberGroupingStrategy, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_removeUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_MINUS_SIGN</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setExtension(ULocaleBuilder*, char, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_NO_SIGN</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLanguage(ULocaleBuilder*, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_PLUS_SIGN</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLanguageTag(ULocaleBuilder*, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_close(USimpleNumber*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLocale(ULocaleBuilder*, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_multiplyByPowerOfTen(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setRegion(ULocaleBuilder*, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_roundTo(USimpleNumber*, int32_t, UNumberFormatRoundingMode, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setScript(ULocaleBuilder*, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMinimumFractionDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setUnicodeLocaleKeyword(ULocaleBuilder*, const char*, int32_t, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMinimumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setVariant(ULocaleBuilder*, const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
+</tr>
+<tr class="row0">
+<td class="file">unorm2.h</td><td class="proto">const UNormalizer2* unorm2_getNFKCSimpleCasefoldInstance(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
</tr>
<tr class="row0">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setSign(USimpleNumber*, USimpleNumberSign, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uspoof.h</td><td class="proto">icu::UnicodeString&amp; uspoof_getBidiSkeletonUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, icu::UnicodeString&amp;, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setToInt64(USimpleNumber*, int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getBidiSkeleton(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_truncateStart(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getBidiSkeletonUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_close(USimpleNumberFormatter*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusable(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, const UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row0">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_format(const USimpleNumberFormatter*, USimpleNumber*, UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusableUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, const char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
<tr class="row1">
-<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_formatInt64(const USimpleNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusableUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, const icu::UnicodeString&amp;, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 74</td>
</tr>
</table>
</div>
@@ -1007,7 +1621,7 @@
<a href="#_top">(jump back to top)</a>
<hr>
<p>
-<i><font size="-1">Contents generated by StableAPI tool on Mon Oct 02 17:50:42 PDT 2023<br>
+<i><font size="-1">Contents generated by StableAPI tool on Thu Mar 28 15:48:02 PDT 2024<br>
Copyright &copy; 2017 and later: Unicode, Inc. and others.<br>
License &amp; terms of use: http://www.unicode.org/copyright.html
</font></i>
diff --git a/icu4c/APIChangeReport.md b/icu4c/APIChangeReport.md
index e97867325..76af79222 100644
--- a/icu4c/APIChangeReport.md
+++ b/icu4c/APIChangeReport.md
@@ -5,334 +5,471 @@
License & terms of use: http://www.unicode.org/copyright.html
-->
-# ICU4C API Comparison: ICU 73 with ICU 74
+# ICU4C API Comparison: ICU 74 with ICU 75
> _Note_ Markdown format of this document is new for ICU 65.
-- [Removed from ICU 73](#removed)
-- [Deprecated or Obsoleted in ICU 74](#deprecated)
-- [Changed in ICU 74](#changed)
-- [Promoted to stable in ICU 74](#promoted)
-- [Added in ICU 74](#added)
-- [Other existing drafts in ICU 74](#other)
+- [Removed from ICU 74](#removed)
+- [Deprecated or Obsoleted in ICU 75](#deprecated)
+- [Changed in ICU 75](#changed)
+- [Promoted to stable in ICU 75](#promoted)
+- [Added in ICU 75](#added)
+- [Other existing drafts in ICU 75](#other)
- [Signature Simplifications](#simplifications)
## Removed
-Removed from ICU 73
+Removed from ICU 74
-| File | API | ICU 73 | ICU 74 |
+| File | API | ICU 74 | ICU 75 |
|---|---|---|---|
+| caniter.h | <tt>static</tt> void icu::CanonicalIterator::permute(UnicodeString&amp;, bool, Hashtable*, UErrorCode&amp;) | Internal | (missing)
+| gregocal.h | UDate icu::GregorianCalendar::defaultCenturyStart() const | Internal | (missing)
+| gregocal.h | bool icu::GregorianCalendar::haveDefaultCentury() const | Internal | (missing)
+| gregocal.h | int32_t icu::GregorianCalendar::defaultCenturyStartYear() const | Internal | (missing)
+| platform.h | <tt>#define</tt> U_HAVE_INTTYPES_H | Internal | (missing)
+| platform.h | <tt>#define</tt> U_HAVE_STDINT_H | Internal | (missing)
## Deprecated
-Deprecated or Obsoleted in ICU 74
+Deprecated or Obsoleted in ICU 75
-| File | API | ICU 73 | ICU 74 |
+| File | API | ICU 74 | ICU 75 |
|---|---|---|---|
+| simplenumberformatter.h | void icu::number::SimpleNumber::truncateStart(uint32_t, UErrorCode&amp;) | DraftICU 73 | DeprecatedICU 75
+| usimplenumberformatter.h | void usnum_truncateStart(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 | DeprecatedICU 75
## Changed
-Changed in ICU 74 (old, new)
+Changed in ICU 75 (old, new)
-| File | API | ICU 73 | ICU 74 |
+| File | API | ICU 74 | ICU 75 |
|---|---|---|---|
-| displayoptions.h | Builder icu::DisplayOptions::copyToBuilder() const | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling) | Draft→StableICU 72
-| displayoptions.h | DisplayOptions icu::DisplayOptions::Builder::build() | Draft→StableICU 72
-| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;)=default | Draft→StableICU 72
-| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const | Draft→StableICU 72
-| displayoptions.h | icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default | Draft→StableICU 72
-| displayoptions.h | <tt>static</tt> Builder icu::DisplayOptions::builder() | Draft→StableICU 72
-| formattednumber.h | UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const | Draft→StableICU 72
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter() | Draft→StableICU 72
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne() | Draft→StableICU 72
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;) | Draft→StableICU 72
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;) | Draft→StableICU 72
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp; | Draft→StableICU 72
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp; | Draft→StableICU 72
-| udisplayoptions.h | UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*) | Draft→StableICU 72
-| udisplayoptions.h | UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*) | Draft→StableICU 72
-| udisplayoptions.h | UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*) | Draft→StableICU 72
-| udisplayoptions.h | const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase) | Draft→StableICU 72
-| udisplayoptions.h | const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass) | Draft→StableICU 72
-| udisplayoptions.h | const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory) | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED | Draft→StableICU 72
-| unum.h | bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute) | Draft→StableICU 72
+| calendar.h | bool icu::Calendar::inTemporalLeapYear(UErrorCode&amp;) const | Draft→StableICU 73
+| calendar.h | const char* icu::Calendar::getTemporalMonthCode(UErrorCode&amp;) const | Draft→StableICU 73
+| calendar.h | void icu::Calendar::setTemporalMonthCode(const char*, UErrorCode&amp;) | Draft→StableICU 73
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBeaufort() | Draft→StableICU 73
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBeaufort(UErrorCode&amp;) | Draft→StableICU 73
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfCeiling | Draft→StableICU 73
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfFloor | Draft→StableICU 73
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfOdd | Draft→StableICU 73
+| simplenumberformatter.h | FormattedNumber icu::number::SimpleNumberFormatter::format(SimpleNumber, UErrorCode&amp;) const | Draft→StableICU 73
+| simplenumberformatter.h | FormattedNumber icu::number::SimpleNumberFormatter::formatInt64(int64_t, UErrorCode&amp;) const | Draft→StableICU 73
+| simplenumberformatter.h | SimpleNumber&amp; icu::number::SimpleNumber::operator=(SimpleNumber&amp;&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | SimpleNumberFormatter&amp; icu::number::SimpleNumberFormatter::operator=(SimpleNumberFormatter&amp;&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumber::SimpleNumber()=default | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumber::SimpleNumber(SimpleNumber&amp;&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumber::~SimpleNumber() | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::SimpleNumberFormatter()=default | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::SimpleNumberFormatter(SimpleNumberFormatter&amp;&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::~SimpleNumberFormatter() | Draft→StableICU 73
+| simplenumberformatter.h | <tt>static</tt> SimpleNumber icu::number::SimpleNumber::forInt64(int64_t, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocale(const icu::Locale&amp;, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndGroupingStrategy(const icu::Locale&amp;, UNumberGroupingStrategy, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale&amp;, const DecimalFormatSymbols&amp;, UNumberGroupingStrategy, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::multiplyByPowerOfTen(int32_t, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::roundTo(int32_t, UNumberFormatRoundingMode, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::setMinimumFractionDigits(uint32_t, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::setMinimumIntegerDigits(uint32_t, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::setSign(USimpleNumberSign, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::truncateStart(uint32_t, UErrorCode&amp;) | DraftICU 73 | DeprecatedICU 75
+| ucal.h | <tt>enum</tt> UCalendarDateFields::UCAL_ORDINAL_MONTH | Draft→StableICU 73
+| uset.h | <tt>enum</tt> ::USET_SIMPLE_CASE_INSENSITIVE | Draft→StableICU 73
+| usimplenumberformatter.h | USimpleNumber* usnum_openForInt64(int64_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | USimpleNumberFormatter* usnumf_openForLocale(const char*, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | USimpleNumberFormatter* usnumf_openForLocaleAndGroupingStrategy(const char*, UNumberGroupingStrategy, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_MINUS_SIGN | Draft→StableICU 73
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_NO_SIGN | Draft→StableICU 73
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_PLUS_SIGN | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_close(USimpleNumber*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_multiplyByPowerOfTen(USimpleNumber*, int32_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_roundTo(USimpleNumber*, int32_t, UNumberFormatRoundingMode, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_setMinimumFractionDigits(USimpleNumber*, int32_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_setMinimumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_setSign(USimpleNumber*, USimpleNumberSign, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_setToInt64(USimpleNumber*, int64_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_truncateStart(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 | DeprecatedICU 75
+| usimplenumberformatter.h | void usnumf_close(USimpleNumberFormatter*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnumf_format(const USimpleNumberFormatter*, USimpleNumber*, UFormattedNumber*, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnumf_formatInt64(const USimpleNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*) | Draft→StableICU 73
## Promoted
-Promoted to stable in ICU 74
+Promoted to stable in ICU 75
-| File | API | ICU 73 | ICU 74 |
+| File | API | ICU 74 | ICU 75 |
|---|---|---|---|
-| displayoptions.h | Builder icu::DisplayOptions::copyToBuilder() const | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory) | Draft→StableICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling) | Draft→StableICU 72
-| displayoptions.h | DisplayOptions icu::DisplayOptions::Builder::build() | Draft→StableICU 72
-| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;)=default | Draft→StableICU 72
-| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const | Draft→StableICU 72
-| displayoptions.h | UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const | Draft→StableICU 72
-| displayoptions.h | icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default | Draft→StableICU 72
-| displayoptions.h | <tt>static</tt> Builder icu::DisplayOptions::builder() | Draft→StableICU 72
-| formattednumber.h | UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const | Draft→StableICU 72
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter() | Draft→StableICU 72
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne() | Draft→StableICU 72
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;) | Draft→StableICU 72
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;) | Draft→StableICU 72
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp; | Draft→StableICU 72
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp; | Draft→StableICU 72
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA_PREBASE | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA_START | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_VIRAMA_FINAL | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_VIRAMA | (missing) | StableICU 74| *(Born Stable)* |
-| udisplayoptions.h | UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*) | Draft→StableICU 72
-| udisplayoptions.h | UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*) | Draft→StableICU 72
-| udisplayoptions.h | UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*) | Draft→StableICU 72
-| udisplayoptions.h | const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase) | Draft→StableICU 72
-| udisplayoptions.h | const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass) | Draft→StableICU 72
-| udisplayoptions.h | const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory) | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE | Draft→StableICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED | Draft→StableICU 72
-| unum.h | bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute) | Draft→StableICU 72
+| calendar.h | bool icu::Calendar::inTemporalLeapYear(UErrorCode&amp;) const | Draft→StableICU 73
+| calendar.h | const char* icu::Calendar::getTemporalMonthCode(UErrorCode&amp;) const | Draft→StableICU 73
+| calendar.h | void icu::Calendar::setTemporalMonthCode(const char*, UErrorCode&amp;) | Draft→StableICU 73
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBeaufort() | Draft→StableICU 73
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBeaufort(UErrorCode&amp;) | Draft→StableICU 73
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfCeiling | Draft→StableICU 73
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfFloor | Draft→StableICU 73
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfOdd | Draft→StableICU 73
+| simplenumberformatter.h | FormattedNumber icu::number::SimpleNumberFormatter::format(SimpleNumber, UErrorCode&amp;) const | Draft→StableICU 73
+| simplenumberformatter.h | FormattedNumber icu::number::SimpleNumberFormatter::formatInt64(int64_t, UErrorCode&amp;) const | Draft→StableICU 73
+| simplenumberformatter.h | SimpleNumber&amp; icu::number::SimpleNumber::operator=(SimpleNumber&amp;&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | SimpleNumberFormatter&amp; icu::number::SimpleNumberFormatter::operator=(SimpleNumberFormatter&amp;&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumber::SimpleNumber()=default | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumber::SimpleNumber(SimpleNumber&amp;&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumber::~SimpleNumber() | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::SimpleNumberFormatter()=default | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::SimpleNumberFormatter(SimpleNumberFormatter&amp;&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::~SimpleNumberFormatter() | Draft→StableICU 73
+| simplenumberformatter.h | <tt>static</tt> SimpleNumber icu::number::SimpleNumber::forInt64(int64_t, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocale(const icu::Locale&amp;, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndGroupingStrategy(const icu::Locale&amp;, UNumberGroupingStrategy, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale&amp;, const DecimalFormatSymbols&amp;, UNumberGroupingStrategy, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::multiplyByPowerOfTen(int32_t, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::roundTo(int32_t, UNumberFormatRoundingMode, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::setMinimumFractionDigits(uint32_t, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::setMinimumIntegerDigits(uint32_t, UErrorCode&amp;) | Draft→StableICU 73
+| simplenumberformatter.h | void icu::number::SimpleNumber::setSign(USimpleNumberSign, UErrorCode&amp;) | Draft→StableICU 73
+| ucal.h | <tt>enum</tt> UCalendarDateFields::UCAL_ORDINAL_MONTH | Draft→StableICU 73
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_ARABIC_NASTALIQ | (missing) | StableICU 75| *(Born Stable)* |
+| uset.h | <tt>enum</tt> ::USET_SIMPLE_CASE_INSENSITIVE | Draft→StableICU 73
+| usimplenumberformatter.h | USimpleNumber* usnum_openForInt64(int64_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | USimpleNumberFormatter* usnumf_openForLocale(const char*, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | USimpleNumberFormatter* usnumf_openForLocaleAndGroupingStrategy(const char*, UNumberGroupingStrategy, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_MINUS_SIGN | Draft→StableICU 73
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_NO_SIGN | Draft→StableICU 73
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_PLUS_SIGN | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_close(USimpleNumber*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_multiplyByPowerOfTen(USimpleNumber*, int32_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_roundTo(USimpleNumber*, int32_t, UNumberFormatRoundingMode, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_setMinimumFractionDigits(USimpleNumber*, int32_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_setMinimumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_setSign(USimpleNumber*, USimpleNumberSign, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnum_setToInt64(USimpleNumber*, int64_t, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnumf_close(USimpleNumberFormatter*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnumf_format(const USimpleNumberFormatter*, USimpleNumber*, UFormattedNumber*, UErrorCode*) | Draft→StableICU 73
+| usimplenumberformatter.h | void usnumf_formatInt64(const USimpleNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*) | Draft→StableICU 73
## Added
-Added in ICU 74
+Added in ICU 75
-| File | API | ICU 73 | ICU 74 |
+| File | API | ICU 74 | ICU 75 |
|---|---|---|---|
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGasolineEnergyDensity() | (missing) | DraftICU 74
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGasolineEnergyDensity(UErrorCode&amp;) | (missing) | DraftICU 74
-| measure.h | bool icu::Measure::operator!=(const UObject&amp;) const | (missing) | DraftICU 74
-| normalizer2.h | <tt>static</tt> const Normalizer2* icu::Normalizer2::getNFKCSimpleCasefoldInstance(UErrorCode&amp;) | (missing) | DraftICU 74
-| rbbi.h | bool icu::ExternalBreakEngine::handles(UChar32) const | (missing) | InternalICU 74
-| rbbi.h | bool icu::ExternalBreakEngine::isFor(UChar32, const char*) const | (missing) | InternalICU 74
-| rbbi.h | icu::ExternalBreakEngine::~ExternalBreakEngine() | (missing) | InternalICU 74
-| rbbi.h | int32_t icu::ExternalBreakEngine::fillBreaks(UText*, int32_t, int32_t, int32_t*, int32_t, UErrorCode&amp;) const | (missing) | InternalICU 74
-| rbbi.h | <tt>static</tt> void icu::RuleBasedBreakIterator::registerExternalBreakEngine(ExternalBreakEngine*, UErrorCode&amp;) | (missing) | InternalICU 74
-| timezone.h | <tt>static</tt> UnicodeString&amp; icu::TimeZone::getIanaID(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;) | (missing) | DraftICU 74
-| ucal.h | int32_t ucal_getIanaTimeZoneID(const UChar*, int32_t, UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA_PREBASE | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA_START | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_VIRAMA_FINAL | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> ULineBreak::U_LB_VIRAMA | (missing) | StableICU 74| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_IDS_UNARY_OPERATOR | (missing) | DraftICU 74
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_CONTINUE | (missing) | DraftICU 74
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_START | (missing) | DraftICU 74
-| ulocale.h | UEnumeration* ulocale_getKeywords(const ULocale*, UErrorCode*) | (missing) | DraftICU 74
-| ulocale.h | UEnumeration* ulocale_getUnicodeKeywords(const ULocale*, UErrorCode*) | (missing) | DraftICU 74
-| ulocale.h | ULocale* ulocale_openForLanguageTag(const char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| ulocale.h | ULocale* ulocale_openForLocaleID(const char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| ulocale.h | bool ulocale_isBogus(const ULocale*) | (missing) | DraftICU 74
-| ulocale.h | const char* ulocale_getBaseName(const ULocale*) | (missing) | DraftICU 74
-| ulocale.h | const char* ulocale_getLanguage(const ULocale*) | (missing) | DraftICU 74
-| ulocale.h | const char* ulocale_getLocaleID(const ULocale*) | (missing) | DraftICU 74
-| ulocale.h | const char* ulocale_getRegion(const ULocale*) | (missing) | DraftICU 74
-| ulocale.h | const char* ulocale_getScript(const ULocale*) | (missing) | DraftICU 74
-| ulocale.h | const char* ulocale_getVariant(const ULocale*) | (missing) | DraftICU 74
-| ulocale.h | int32_t ulocale_getKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| ulocale.h | int32_t ulocale_getUnicodeKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| ulocale.h | void ulocale_close(ULocale*) | (missing) | DraftICU 74
-| ulocbuilder.h | ULocale* ulocbld_buildULocale(ULocaleBuilder*, UErrorCode*) | (missing) | DraftICU 74
-| ulocbuilder.h | ULocaleBuilder* ulocbld_open() | (missing) | DraftICU 74
-| ulocbuilder.h | bool ulocbld_copyErrorTo(const ULocaleBuilder*, UErrorCode*) | (missing) | DraftICU 74
-| ulocbuilder.h | int32_t ulocbld_buildLanguageTag(ULocaleBuilder*, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| ulocbuilder.h | int32_t ulocbld_buildLocaleID(ULocaleBuilder*, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_addUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_adoptULocale(ULocaleBuilder*, ULocale*) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_clear(ULocaleBuilder*) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_clearExtensions(ULocaleBuilder*) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_close(ULocaleBuilder*) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_removeUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_setExtension(ULocaleBuilder*, char, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_setLanguage(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_setLanguageTag(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_setLocale(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_setRegion(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_setScript(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_setUnicodeLocaleKeyword(ULocaleBuilder*, const char*, int32_t, const char*, int32_t) | (missing) | DraftICU 74
-| ulocbuilder.h | void ulocbld_setVariant(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
-| unorm2.h | const UNormalizer2* unorm2_getNFKCSimpleCasefoldInstance(UErrorCode*) | (missing) | DraftICU 74
-| uspoof.h | icu::UnicodeString&amp; uspoof_getBidiSkeletonUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, icu::UnicodeString&amp;, UErrorCode*) | (missing) | DraftICU 74
-| uspoof.h | int32_t uspoof_getBidiSkeleton(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| uspoof.h | int32_t uspoof_getBidiSkeletonUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| uspoof.h | uint32_t uspoof_areBidiConfusable(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, const UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| uspoof.h | uint32_t uspoof_areBidiConfusableUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, const char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
-| uspoof.h | uint32_t uspoof_areBidiConfusableUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, const icu::UnicodeString&amp;, UErrorCode*) | (missing) | DraftICU 74
+| calendar.h | <tt>#define</tt> DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY | (missing) | Internal
+| caniter.h | <tt>static</tt> void icu::CanonicalIterator::permute(UnicodeString&amp;, bool, Hashtable*, UErrorCode&amp;, int32_t depth=) | (missing) | Internal
+| messageformat2_arguments.h | MessageArguments&amp; icu::message2::MessageArguments::operator=(MessageArguments&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_arguments.h | icu::message2::MessageArguments::MessageArguments()=default | (missing) | InternalICU 75
+| messageformat2_arguments.h | icu::message2::MessageArguments::MessageArguments(const std::map&lt;, Formattable &gt;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_arguments.h | icu::message2::MessageArguments::~MessageArguments() | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder &amp; icu::message2::data_model::Markup::Builder::setClose() | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder &amp; icu::message2::data_model::Markup::Builder::setOpen() | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder &amp; icu::message2::data_model::Markup::Builder::setStandalone() | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::MFDataModel::Builder::addBinding(Binding&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::MFDataModel::Builder::addSelector(Expression&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::MFDataModel::Builder::addUnsupportedStatement(UnsupportedStatement&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::MFDataModel::Builder::addVariant(SelectorKeys&amp;&amp;, Pattern&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::MFDataModel::Builder::setPattern(Pattern&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Expression::Builder::addAttribute(const UnicodeString&amp;, Operand&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Expression::Builder::setOperand(Operand&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Expression::Builder::setOperator(Operator&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Markup::Builder::addAttribute(const UnicodeString&amp;, Operand&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Markup::Builder::addOption(const UnicodeString&amp;, Operand&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Markup::Builder::setName(const UnicodeString&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Operator::Builder::addOption(const UnicodeString&amp;, Operand&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Operator::Builder::setFunctionName(FunctionName&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Operator::Builder::setReserved(Reserved&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Pattern::Builder::add(Expression&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Pattern::Builder::add(Markup&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Pattern::Builder::add(UnicodeString&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::Reserved::Builder::add(Literal&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::SelectorKeys::Builder::add(Key&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::UnsupportedStatement::Builder::addExpression(Expression&amp;&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::UnsupportedStatement::Builder::setBody(Reserved&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Builder&amp; icu::message2::data_model::UnsupportedStatement::Builder::setKeyword(const UnicodeString&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Expression icu::message2::data_model::Expression::Builder::build(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Expression&amp; icu::message2::data_model::Expression::operator=(Expression) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Literal&amp; icu::message2::data_model::Literal::operator=(Literal) | (missing) | InternalICU 75
+| messageformat2_data_model.h | MFDataModel icu::message2::MFDataModel::Builder::build(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | Markup icu::message2::data_model::Markup::Builder::build(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Operator icu::message2::data_model::Operator::Builder::build(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Option&amp; icu::message2::data_model::Option::operator=(Option) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Pattern icu::message2::data_model::Pattern::Builder::build(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | PatternPart&amp; icu::message2::data_model::PatternPart::operator=(PatternPart) | (missing) | InternalICU 75
+| messageformat2_data_model.h | Reserved icu::message2::data_model::Reserved::Builder::build(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | Reserved&amp; icu::message2::data_model::Reserved::operator=(Reserved) | (missing) | InternalICU 75
+| messageformat2_data_model.h | SelectorKeys icu::message2::data_model::SelectorKeys::Builder::build(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | UnicodeString icu::message2::data_model::Literal::quoted() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | UnsupportedStatement icu::message2::data_model::UnsupportedStatement::Builder::build(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | UnsupportedStatement&amp; icu::message2::data_model::UnsupportedStatement::operator=(UnsupportedStatement) | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isFunctionCall() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isReserved() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isStandaloneAnnotation() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Literal::isQuoted() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Literal::operator&lt;(const Literal&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Literal::operator==(const Literal&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isClose() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isOpen() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isStandalone() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isExpression() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isMarkup() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isText() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const Expression &amp; icu::message2::data_model::PatternPart::contents() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const Literal&amp; icu::message2::data_model::Reserved::getPart(int32_t) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const Markup &amp; icu::message2::data_model::PatternPart::asMarkup() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const Operand &amp; icu::message2::data_model::Expression::getOperand() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const Operand &amp; icu::message2::data_model::Option::getValue() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const Operator* icu::message2::data_model::Expression::getOperator(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const Reserved* icu::message2::data_model::UnsupportedStatement::getBody(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const UnicodeString &amp; icu::message2::data_model::Literal::unquoted() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const UnicodeString &amp; icu::message2::data_model::Markup::getName() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const UnicodeString &amp; icu::message2::data_model::Option::getName() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const UnicodeString &amp; icu::message2::data_model::PatternPart::asText() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | const UnicodeString &amp; icu::message2::data_model::UnsupportedStatement::getKeyword() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::MFDataModel::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::MFDataModel::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Expression::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Expression::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Expression::Expression() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Expression::Expression(const Expression&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Expression::~Expression() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal()=default | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal(bool, const UnicodeString&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal(const Literal&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Literal::~Literal() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Markup::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Markup::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Markup::Markup() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Markup::~Markup() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Operator::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Operator::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Option::Option() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Option::Option(const Option&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Option::Option(const UnicodeString&amp;, Operand&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Option::~Option() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Pattern::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Pattern::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart()=default | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(Expression&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(Markup&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(const PatternPart&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(const UnicodeString&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::PatternPart::~PatternPart() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Reserved::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Reserved::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Reserved::Reserved() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Reserved::Reserved(const Reserved&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::Reserved::~Reserved() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::SelectorKeys::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::SelectorKeys::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::UnsupportedStatement() | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::UnsupportedStatement(const UnsupportedStatement&amp;) | (missing) | InternalICU 75
+| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::~UnsupportedStatement() | (missing) | InternalICU 75
+| messageformat2_data_model.h | int32_t icu::message2::data_model::Reserved::numParts() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | std::vector&lt; Expression &gt; icu::message2::data_model::UnsupportedStatement::getExpressions() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | std::vector&lt; Option &gt; icu::message2::data_model::Expression::getAttributes() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | std::vector&lt; Option &gt; icu::message2::data_model::Markup::getAttributes() const | (missing) | InternalICU 75
+| messageformat2_data_model.h | std::vector&lt; Option &gt; icu::message2::data_model::Markup::getOptions() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | Appendable&amp; icu::message2::FormattedMessage::appendTo(Appendable&amp;, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | CharacterIterator* icu::message2::FormattedMessage::toCharacterIterator(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | Formattable&amp; icu::message2::Formattable::operator=(Formattable) | (missing) | InternalICU 75
+| messageformat2_formattable.h | FormattedPlaceholder&amp; icu::message2::FormattedPlaceholder::operator=(FormattedPlaceholder&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | FormattedValue&amp; icu::message2::FormattedValue::operator=(FormattedValue&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | FunctionOptions&amp; icu::message2::FunctionOptions::operator=(FunctionOptions&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | FunctionOptions&amp; icu::message2::FunctionOptions::operator=(const FunctionOptions&amp;)=delete | (missing) | InternalICU 75
+| messageformat2_formattable.h | FunctionOptionsMap icu::message2::FunctionOptions::getOptions() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | StringPiece icu::message2::FormattedMessage::subSequence(int32_t, int32_t, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | UDate icu::message2::Formattable::getDate(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | UFormattableType icu::message2::Formattable::getType() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | UnicodeString icu::message2::FormattedMessage::toString(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | UnicodeString icu::message2::FormattedMessage::toTempString(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | UnicodeString icu::message2::FormattedPlaceholder::formatToString(const Locale&amp;, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | bool icu::message2::Formattable::isNumeric() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | bool icu::message2::FormattedMessage::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::canFormat() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isEvaluated() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isFallback() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isNullOperand() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | bool icu::message2::FormattedValue::isNumber() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | bool icu::message2::FormattedValue::isString() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | char16_t icu::message2::FormattedMessage::charAt(int32_t, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const Formattable* icu::message2::Formattable::getArray(int32_t&amp;, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const FormattableObject* icu::message2::Formattable::getObject(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const FormattedValue &amp; icu::message2::FormattedPlaceholder::output() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const FunctionOptions &amp; icu::message2::FormattedPlaceholder::options() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const UnicodeString &amp; icu::message2::FormattableObject::tag() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const UnicodeString &amp; icu::message2::FormattedPlaceholder::getFallback() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const UnicodeString &amp; icu::message2::FormattedValue::getString() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const UnicodeString&amp; icu::message2::Formattable::getString(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const message2::Formattable &amp; icu::message2::FormattedPlaceholder::asFormattable() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | const number::FormattedNumber &amp; icu::message2::FormattedValue::getNumber() const | (missing) | InternalICU 75
+| messageformat2_formattable.h | double icu::message2::Formattable::getDouble(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::Formattable icu::message2::Formattable::asICUFormattable(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::Formattable::Formattable() | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const Formattable&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const Formattable*, int32_t) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const FormattableObject*) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const UnicodeString&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::Formattable::Formattable(double) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::Formattable::Formattable(int64_t) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::Formattable::~Formattable() | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattableObject::~FormattableObject() | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedMessage::FormattedMessage(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedMessage::~FormattedMessage() | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder() | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(FormattedPlaceholder&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const Formattable&amp;, const UnicodeString&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const FormattedPlaceholder&amp;, FormattedValue&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const FormattedPlaceholder&amp;, FunctionOptions&amp;&amp;, FormattedValue&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const UnicodeString&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue() | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(FormattedValue&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(const UnicodeString&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(number::FormattedNumber&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FormattedValue::~FormattedValue() | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FunctionOptions::FunctionOptions() | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FunctionOptions::FunctionOptions(FunctionOptions&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_formattable.h | icu::message2::FunctionOptions::~FunctionOptions() | (missing) | InternalICU 75
+| messageformat2_formattable.h | int32_t icu::message2::Formattable::getLong(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | int32_t icu::message2::FormattedMessage::length(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | int64_t icu::message2::Formattable::getInt64(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | int64_t icu::message2::Formattable::getInt64Value(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_formattable.h | <tt>static</tt> Formattable icu::message2::Formattable::forDate(UDate) | (missing) | InternalICU 75
+| messageformat2_formattable.h | <tt>static</tt> Formattable icu::message2::Formattable::forDecimal(std::string_view, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_function_registry.h | Builder&amp; icu::message2::MFFunctionRegistry::Builder::adoptFormatter(const data_model::FunctionName&amp;, FormatterFactory*, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_function_registry.h | Builder&amp; icu::message2::MFFunctionRegistry::Builder::adoptSelector(const data_model::FunctionName&amp;, SelectorFactory*, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_function_registry.h | Builder&amp; icu::message2::MFFunctionRegistry::Builder::setDefaultFormatterNameByType(const UnicodeString&amp;, const data_model::FunctionName&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_function_registry.h | FormattedPlaceholder icu::message2::Formatter::format(FormattedPlaceholder&amp;&amp;, FunctionOptions&amp;&amp;, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_function_registry.h | Formatter* icu::message2::FormatterFactory::createFormatter(const Locale&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_function_registry.h | FormatterFactory&amp; icu::message2::FormatterFactory::operator=(const FormatterFactory&amp;)=delete | (missing) | InternalICU 75
+| messageformat2_function_registry.h | FormatterFactory* icu::message2::MFFunctionRegistry::getFormatter(const FunctionName&amp;) const | (missing) | InternalICU 75
+| messageformat2_function_registry.h | MFFunctionRegistry icu::message2::MFFunctionRegistry::Builder::build() | (missing) | InternalICU 75
+| messageformat2_function_registry.h | MFFunctionRegistry&amp; icu::message2::MFFunctionRegistry::operator=(MFFunctionRegistry&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_function_registry.h | Selector* icu::message2::SelectorFactory::createSelector(const Locale&amp;, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2_function_registry.h | SelectorFactory&amp; icu::message2::SelectorFactory::operator=(const SelectorFactory&amp;)=delete | (missing) | InternalICU 75
+| messageformat2_function_registry.h | bool icu::message2::MFFunctionRegistry::getDefaultFormatterNameByType(const UnicodeString&amp;, FunctionName&amp;) const | (missing) | InternalICU 75
+| messageformat2_function_registry.h | const SelectorFactory* icu::message2::MFFunctionRegistry::getSelector(const FunctionName&amp;) const | (missing) | InternalICU 75
+| messageformat2_function_registry.h | icu::message2::Formatter::~Formatter() | (missing) | InternalICU 75
+| messageformat2_function_registry.h | icu::message2::FormatterFactory::~FormatterFactory() | (missing) | InternalICU 75
+| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::MFFunctionRegistry(MFFunctionRegistry&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::~MFFunctionRegistry() | (missing) | InternalICU 75
+| messageformat2_function_registry.h | icu::message2::Selector::~Selector() | (missing) | InternalICU 75
+| messageformat2_function_registry.h | icu::message2::SelectorFactory::~SelectorFactory() | (missing) | InternalICU 75
+| messageformat2_function_registry.h | void icu::message2::Selector::selectKey(FormattedPlaceholder&amp;&amp;, FunctionOptions&amp;&amp;, const UnicodeString*, int32_t, UnicodeString*, int32_t&amp;, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2.h | Builder&amp; icu::message2::MessageFormatter::Builder::setDataModel(MFDataModel&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2.h | Builder&amp; icu::message2::MessageFormatter::Builder::setFunctionRegistry(const MFFunctionRegistry&amp;) | (missing) | InternalICU 75
+| messageformat2.h | Builder&amp; icu::message2::MessageFormatter::Builder::setLocale(const Locale&amp;) | (missing) | InternalICU 75
+| messageformat2.h | Builder&amp; icu::message2::MessageFormatter::Builder::setPattern(const UnicodeString&amp;, UParseError&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2.h | FormattedMessage icu::message2::MessageFormatter::format(const MessageArguments&amp;, UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2.h | MessageFormatter icu::message2::MessageFormatter::Builder::build(UErrorCode&amp;) const | (missing) | InternalICU 75
+| messageformat2.h | MessageFormatter&amp; icu::message2::MessageFormatter::operator=(MessageFormatter&amp;&amp;) | (missing) | InternalICU 75
+| messageformat2.h | UnicodeString icu::message2::MessageFormatter::formatToString(const MessageArguments&amp;, UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2.h | UnicodeString icu::message2::MessageFormatter::getPattern() const | (missing) | InternalICU 75
+| messageformat2.h | const Locale &amp; icu::message2::MessageFormatter::getLocale() const | (missing) | InternalICU 75
+| messageformat2.h | const MFDataModel &amp; icu::message2::MessageFormatter::getDataModel() const | (missing) | InternalICU 75
+| messageformat2.h | const UnicodeString &amp; icu::message2::MessageFormatter::getNormalizedPattern() const | (missing) | InternalICU 75
+| messageformat2.h | icu::message2::MessageFormatter::Builder::Builder(UErrorCode&amp;) | (missing) | InternalICU 75
+| messageformat2.h | icu::message2::MessageFormatter::Builder::~Builder() | (missing) | InternalICU 75
+| messageformat2.h | icu::message2::MessageFormatter::~MessageFormatter() | (missing) | InternalICU 75
+| numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() &amp;&amp; | (missing) | DraftICU 75
+| numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() const &amp; | (missing) | DraftICU 75
+| numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() &amp;&amp; | (missing) | DraftICU 75
+| numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() const &amp; | (missing) | DraftICU 75
+| simplenumberformatter.h | void icu::number::SimpleNumber::setMaximumIntegerDigits(uint32_t, UErrorCode&amp;) | (missing) | DraftICU 75
+| uchar.h | bool u_hasIDType(UChar32, UIdentifierType) | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierStatus::U_ID_STATUS_ALLOWED | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierStatus::U_ID_STATUS_RESTRICTED | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_DEFAULT_IGNORABLE | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_DEPRECATED | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_EXCLUSION | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_INCLUSION | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_LIMITED_USE | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_NOT_CHARACTER | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_NOT_NFKC | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_NOT_XID | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_OBSOLETE | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_RECOMMENDED | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_TECHNICAL | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UIdentifierType::U_ID_TYPE_UNCOMMON_USE | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_IDENTIFIER_STATUS | (missing) | DraftICU 75
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_IDENTIFIER_TYPE | (missing) | DraftICU 75
+| uchar.h | int32_t u_getIDTypes(UChar32, UIdentifierType*, int32_t, UErrorCode*) | (missing) | DraftICU 75
+| uconfig.h | <tt>#define</tt> UCONFIG_NO_MF2 | (missing) | InternalICU 75
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_ARABIC_NASTALIQ | (missing) | StableICU 75| *(Born Stable)* |
+| usimplenumberformatter.h | void usnum_setMaximumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | (missing) | DraftICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_DUPLICATE_DECLARATION_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_DUPLICATE_OPTION_NAME_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_FORMATTING_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_MISSING_SELECTOR_ANNOTATION_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_NONEXHAUSTIVE_PATTERN_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_OPERAND_MISMATCH_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_SELECTOR_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_SYNTAX_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNKNOWN_FUNCTION_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNRESOLVED_VARIABLE_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNSUPPORTED_EXPRESSION_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNSUPPORTED_STATEMENT_ERROR | (missing) | InternalICU 75
+| utypes.h | <tt>enum</tt> UErrorCode::U_MF_VARIANT_KEY_MISMATCH_ERROR | (missing) | InternalICU 75
## Other
-Other existing drafts in ICU 74
+Other existing drafts in ICU 75
-| File | API | ICU 73 | ICU 74 |
+| File | API | ICU 74 | ICU 75 |
|---|---|---|---|
-| calendar.h | bool icu::Calendar::inTemporalLeapYear(UErrorCode&amp;) const | DraftICU 73 |
-| calendar.h | const char* icu::Calendar::getTemporalMonthCode(UErrorCode&amp;) const | DraftICU 73 |
-| calendar.h | void icu::Calendar::setTemporalMonthCode(const char*, UErrorCode&amp;) | DraftICU 73 |
| measfmt.h | void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const | DraftICU 53 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBeaufort() | DraftICU 73 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBeaufort(UErrorCode&amp;) | DraftICU 73 |
-| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfCeiling | DraftICU 73 |
-| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfFloor | DraftICU 73 |
-| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfOdd | DraftICU 73 |
-| simplenumberformatter.h | FormattedNumber icu::number::SimpleNumberFormatter::format(SimpleNumber, UErrorCode&amp;) const | DraftICU 73 |
-| simplenumberformatter.h | FormattedNumber icu::number::SimpleNumberFormatter::formatInt64(int64_t, UErrorCode&amp;) const | DraftICU 73 |
-| simplenumberformatter.h | SimpleNumber&amp; icu::number::SimpleNumber::operator=(SimpleNumber&amp;&amp;) | DraftICU 73 |
-| simplenumberformatter.h | SimpleNumberFormatter&amp; icu::number::SimpleNumberFormatter::operator=(SimpleNumberFormatter&amp;&amp;) | DraftICU 73 |
-| simplenumberformatter.h | icu::number::SimpleNumber::SimpleNumber()=default | DraftICU 73 |
-| simplenumberformatter.h | icu::number::SimpleNumber::SimpleNumber(SimpleNumber&amp;&amp;) | DraftICU 73 |
-| simplenumberformatter.h | icu::number::SimpleNumber::~SimpleNumber() | DraftICU 73 |
-| simplenumberformatter.h | icu::number::SimpleNumberFormatter::SimpleNumberFormatter()=default | DraftICU 73 |
-| simplenumberformatter.h | icu::number::SimpleNumberFormatter::SimpleNumberFormatter(SimpleNumberFormatter&amp;&amp;) | DraftICU 73 |
-| simplenumberformatter.h | icu::number::SimpleNumberFormatter::~SimpleNumberFormatter() | DraftICU 73 |
-| simplenumberformatter.h | <tt>static</tt> SimpleNumber icu::number::SimpleNumber::forInt64(int64_t, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocale(const icu::Locale&amp;, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndGroupingStrategy(const icu::Locale&amp;, UNumberGroupingStrategy, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale&amp;, const DecimalFormatSymbols&amp;, UNumberGroupingStrategy, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | void icu::number::SimpleNumber::multiplyByPowerOfTen(int32_t, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | void icu::number::SimpleNumber::roundTo(int32_t, UNumberFormatRoundingMode, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | void icu::number::SimpleNumber::setMinimumFractionDigits(uint32_t, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | void icu::number::SimpleNumber::setMinimumIntegerDigits(uint32_t, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | void icu::number::SimpleNumber::setSign(USimpleNumberSign, UErrorCode&amp;) | DraftICU 73 |
-| simplenumberformatter.h | void icu::number::SimpleNumber::truncateStart(uint32_t, UErrorCode&amp;) | DraftICU 73 |
-| ucal.h | <tt>enum</tt> UCalendarDateFields::UCAL_ORDINAL_MONTH | DraftICU 73 |
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGasolineEnergyDensity() | DraftICU 74 |
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGasolineEnergyDensity(UErrorCode&amp;) | DraftICU 74 |
+| measure.h | bool icu::Measure::operator!=(const UObject&amp;) const | DraftICU 74 |
+| normalizer2.h | <tt>static</tt> const Normalizer2* icu::Normalizer2::getNFKCSimpleCasefoldInstance(UErrorCode&amp;) | DraftICU 74 |
+| timezone.h | <tt>static</tt> UnicodeString&amp; icu::TimeZone::getIanaID(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;) | DraftICU 74 |
+| ucal.h | int32_t ucal_getIanaTimeZoneID(const UChar*, int32_t, UChar*, int32_t, UErrorCode*) | DraftICU 74 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_IDS_UNARY_OPERATOR | DraftICU 74 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_CONTINUE | DraftICU 74 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_START | DraftICU 74 |
+| ulocale.h | UEnumeration* ulocale_getKeywords(const ULocale*, UErrorCode*) | DraftICU 74 |
+| ulocale.h | UEnumeration* ulocale_getUnicodeKeywords(const ULocale*, UErrorCode*) | DraftICU 74 |
+| ulocale.h | ULocale* ulocale_openForLanguageTag(const char*, int32_t, UErrorCode*) | DraftICU 74 |
+| ulocale.h | ULocale* ulocale_openForLocaleID(const char*, int32_t, UErrorCode*) | DraftICU 74 |
+| ulocale.h | bool ulocale_isBogus(const ULocale*) | DraftICU 74 |
+| ulocale.h | const char* ulocale_getBaseName(const ULocale*) | DraftICU 74 |
+| ulocale.h | const char* ulocale_getLanguage(const ULocale*) | DraftICU 74 |
+| ulocale.h | const char* ulocale_getLocaleID(const ULocale*) | DraftICU 74 |
+| ulocale.h | const char* ulocale_getRegion(const ULocale*) | DraftICU 74 |
+| ulocale.h | const char* ulocale_getScript(const ULocale*) | DraftICU 74 |
+| ulocale.h | const char* ulocale_getVariant(const ULocale*) | DraftICU 74 |
+| ulocale.h | int32_t ulocale_getKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*) | DraftICU 74 |
+| ulocale.h | int32_t ulocale_getUnicodeKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*) | DraftICU 74 |
+| ulocale.h | void ulocale_close(ULocale*) | DraftICU 74 |
+| ulocbuilder.h | ULocale* ulocbld_buildULocale(ULocaleBuilder*, UErrorCode*) | DraftICU 74 |
+| ulocbuilder.h | ULocaleBuilder* ulocbld_open() | DraftICU 74 |
+| ulocbuilder.h | bool ulocbld_copyErrorTo(const ULocaleBuilder*, UErrorCode*) | DraftICU 74 |
+| ulocbuilder.h | int32_t ulocbld_buildLanguageTag(ULocaleBuilder*, char*, int32_t, UErrorCode*) | DraftICU 74 |
+| ulocbuilder.h | int32_t ulocbld_buildLocaleID(ULocaleBuilder*, char*, int32_t, UErrorCode*) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_addUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_adoptULocale(ULocaleBuilder*, ULocale*) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_clear(ULocaleBuilder*) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_clearExtensions(ULocaleBuilder*) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_close(ULocaleBuilder*) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_removeUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_setExtension(ULocaleBuilder*, char, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_setLanguage(ULocaleBuilder*, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_setLanguageTag(ULocaleBuilder*, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_setLocale(ULocaleBuilder*, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_setRegion(ULocaleBuilder*, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_setScript(ULocaleBuilder*, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_setUnicodeLocaleKeyword(ULocaleBuilder*, const char*, int32_t, const char*, int32_t) | DraftICU 74 |
+| ulocbuilder.h | void ulocbld_setVariant(ULocaleBuilder*, const char*, int32_t) | DraftICU 74 |
+| unorm2.h | const UNormalizer2* unorm2_getNFKCSimpleCasefoldInstance(UErrorCode*) | DraftICU 74 |
| uregex.h | <tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 |
-| uset.h | <tt>enum</tt> (anonymous)::USET_SIMPLE_CASE_INSENSITIVE | DraftICU 73 |
-| usimplenumberformatter.h | USimpleNumber* usnum_openForInt64(int64_t, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | USimpleNumberFormatter* usnumf_openForLocale(const char*, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | USimpleNumberFormatter* usnumf_openForLocaleAndGroupingStrategy(const char*, UNumberGroupingStrategy, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_MINUS_SIGN | DraftICU 73 |
-| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_NO_SIGN | DraftICU 73 |
-| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_PLUS_SIGN | DraftICU 73 |
-| usimplenumberformatter.h | void usnum_close(USimpleNumber*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnum_multiplyByPowerOfTen(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnum_roundTo(USimpleNumber*, int32_t, UNumberFormatRoundingMode, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnum_setMinimumFractionDigits(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnum_setMinimumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnum_setSign(USimpleNumber*, USimpleNumberSign, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnum_setToInt64(USimpleNumber*, int64_t, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnum_truncateStart(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnumf_close(USimpleNumberFormatter*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnumf_format(const USimpleNumberFormatter*, USimpleNumber*, UFormattedNumber*, UErrorCode*) | DraftICU 73 |
-| usimplenumberformatter.h | void usnumf_formatInt64(const USimpleNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*) | DraftICU 73 |
+| uspoof.h | icu::UnicodeString&amp; uspoof_getBidiSkeletonUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, icu::UnicodeString&amp;, UErrorCode*) | DraftICU 74 |
+| uspoof.h | int32_t uspoof_getBidiSkeleton(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, UChar*, int32_t, UErrorCode*) | DraftICU 74 |
+| uspoof.h | int32_t uspoof_getBidiSkeletonUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, char*, int32_t, UErrorCode*) | DraftICU 74 |
+| uspoof.h | uint32_t uspoof_areBidiConfusable(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, const UChar*, int32_t, UErrorCode*) | DraftICU 74 |
+| uspoof.h | uint32_t uspoof_areBidiConfusableUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, const char*, int32_t, UErrorCode*) | DraftICU 74 |
+| uspoof.h | uint32_t uspoof_areBidiConfusableUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, const icu::UnicodeString&amp;, UErrorCode*) | DraftICU 74 |
## Simplifications
@@ -342,7 +479,7 @@ This section shows cases where the signature was "simplified" for the sake of co
## Colophon
-Contents generated by StableAPI tool on Mon Oct 02 17:52:32 PDT 2023
+Contents generated by StableAPI tool on Thu Mar 28 15:48:25 PDT 2024
Copyright © 2019 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html
diff --git a/icu4c/build_qnx/build-hooks b/icu4c/build_qnx/build-hooks
index 93fe62ea7..2a7655b16 100755
--- a/icu4c/build_qnx/build-hooks
+++ b/icu4c/build_qnx/build-hooks
@@ -15,7 +15,7 @@ function hook_preconfigure {
CFLAGS="$CFLAGS -fPIC"
CPPFLAGS="$CPPFLAGS -fPIC"
- CXXFLAGS="$CXXFLAGS -std=gnu++11"
+ CXXFLAGS="$CXXFLAGS -std=gnu++17"
else
# prefix is the base path where architecture independent files are installed in the target filesystem
configure_opts="${configure_opts} --prefix=/"
diff --git a/icu4c/source/Doxyfile.in b/icu4c/source/Doxyfile.in
index 75bab9365..c3b3f8deb 100644
--- a/icu4c/source/Doxyfile.in
+++ b/icu4c/source/Doxyfile.in
@@ -2084,7 +2084,7 @@ PREDEFINED = U_EXPORT2= \
U_DEFINE_LOCAL_OPEN_POINTER()= \
U_IN_DOXYGEN=1 \
U_CHAR16_IS_TYPEDEF=0 \
- U_CPLUSPLUS_VERSION=11 \
+ U_CPLUSPLUS_VERSION=17 \
U_WCHAR_IS_UTF16
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
diff --git a/icu4c/source/acinclude.m4 b/icu4c/source/acinclude.m4
index 7d0862b53..a75ab2e29 100644
--- a/icu4c/source/acinclude.m4
+++ b/icu4c/source/acinclude.m4
@@ -463,17 +463,6 @@ AC_DEFUN([AC_CHECK_STRICT_COMPILE],
then
if test "$GCC" = yes
then
- case "${host}" in
- *-*-solaris*)
- # Don't use -std=c11 on Solaris because of timezone check fails
- ;;
- *)
- # Do not use -ansi. It limits us to C90, and it breaks some platforms.
- # We use -std=c11 to disable the gnu99 defaults and its associated warnings
- CFLAGS="$CFLAGS -std=c11"
- ;;
- esac
-
CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings"
else
case "${host}" in
diff --git a/icu4c/source/aclocal.m4 b/icu4c/source/aclocal.m4
index 1e0201d1e..4c8464d28 100644
--- a/icu4c/source/aclocal.m4
+++ b/icu4c/source/aclocal.m4
@@ -12,60 +12,6 @@
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-# ===========================================================================
-# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
-#
-# DESCRIPTION
-#
-# Check whether the given FLAG works with the current language's compiler
-# or gives an error. (Warnings, however, are ignored)
-#
-# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
-# success/failure.
-#
-# If EXTRA-FLAGS is defined, it is added to the current language's default
-# flags (e.g. CFLAGS) when the check is done. The check is thus made with
-# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
-# force the compiler to issue an error when a bad flag is given.
-#
-# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
-#
-# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
-# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
-#
-# LICENSE
-#
-# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved. This file is offered as-is, without any
-# warranty.
-
-#serial 6
-
-AC_DEFUN([AX_CHECK_COMPILE_FLAG],
-[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
-AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
-AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
- ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
- _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
- AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
- [AS_VAR_SET(CACHEVAR,[yes])],
- [AS_VAR_SET(CACHEVAR,[no])])
- _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
-AS_VAR_IF(CACHEVAR,yes,
- [m4_default([$2], :)],
- [m4_default([$3], :)])
-AS_VAR_POPDEF([CACHEVAR])dnl
-])dnl AX_CHECK_COMPILE_FLAGS
-
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
dnl serial 11 (pkg-config-0.29.1)
dnl
diff --git a/icu4c/source/allinone/Build.Windows.IcuVersion.props b/icu4c/source/allinone/Build.Windows.IcuVersion.props
index 6ee398af3..1db57d655 100644
--- a/icu4c/source/allinone/Build.Windows.IcuVersion.props
+++ b/icu4c/source/allinone/Build.Windows.IcuVersion.props
@@ -3,6 +3,6 @@
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- This file is used to set the ICU Major Version number, which is used as a suffix on various file names in other Visual Studio projects. -->
<PropertyGroup>
- <IcuMajorVersion>74</IcuMajorVersion>
+ <IcuMajorVersion>75</IcuMajorVersion>
</PropertyGroup>
</Project>
diff --git a/icu4c/source/allinone/Build.Windows.ProjectConfiguration.props b/icu4c/source/allinone/Build.Windows.ProjectConfiguration.props
index bcb0f411d..222c0aa0b 100644
--- a/icu4c/source/allinone/Build.Windows.ProjectConfiguration.props
+++ b/icu4c/source/allinone/Build.Windows.ProjectConfiguration.props
@@ -63,11 +63,11 @@
Note: This version must match the version below in the ARM64 section for AdditionalLibraryDirectories
-->
<PropertyGroup Condition="'$(Platform)'=='ARM'">
- <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.22621.0</WindowsTargetPlatformVersion>
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
- <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.22621.0</WindowsTargetPlatformVersion>
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
</PropertyGroup>
<PropertyGroup>
@@ -96,6 +96,9 @@
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<!-- Enable parallel compilation for faster builds. -->
<MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <!-- Set the C/C++ versions supported. -->
+ <LanguageStandard>stdcpp17</LanguageStandard>
+ <LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<ResourceCompile>
<Culture>0x0409</Culture>
@@ -180,7 +183,7 @@
<!-- The ARM64 Desktop SDK doesn't include this by default -->
<AdditionalDependencies>kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<!-- Note: This needs to match the same version as WindowsTargetPlatformVersion for ARM -->
- <AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\arm</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<!-- Options that are common to all ARM 64-bit configurations for *all* projects. -->
@@ -196,7 +199,7 @@
<!-- The ARM64 Desktop SDK doesn't include this by default -->
<AdditionalDependencies>kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<!-- Note: This needs to match the same version as WindowsTargetPlatformVersion for ARM64 -->
- <AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\arm64</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
</Project> \ No newline at end of file
diff --git a/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props b/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
index 948b7c4f9..12c29b329 100644
--- a/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
+++ b/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
@@ -45,6 +45,9 @@
%(PreprocessorDefinitions);
U_PLATFORM_HAS_WINUWP_API=1;
</PreprocessorDefinitions>
+ <!-- Set the C/C++ versions supported. -->
+ <LanguageStandard>stdcpp17</LanguageStandard>
+ <LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>
diff --git a/icu4c/source/allinone/allinone.sln b/icu4c/source/allinone/allinone.sln
index 48de09771..4db4749d0 100644
--- a/icu4c/source/allinone/allinone.sln
+++ b/icu4c/source/allinone/allinone.sln
@@ -2,12 +2,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2036
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "..\samples\cal\cal.vcxproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
- ProjectSection(ProjectDependencies) = postProject
- {0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
- {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
- EndProjectSection
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst.vcxproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
ProjectSection(ProjectDependencies) = postProject
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
@@ -27,12 +21,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctestfw", "..\tools\ctestfw
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "date", "..\samples\date\date.vcxproj", "{38B5751A-C6F9-4409-950C-F4F9DA17275F}"
- ProjectSection(ProjectDependencies) = postProject
- {0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
- {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
- EndProjectSection
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "derb", "..\tools\genrb\derb.vcxproj", "{D3065ADB-8820-4CC7-9B6C-9510833961A3}"
ProjectSection(ProjectDependencies) = postProject
{C2B04507-2521-4801-BF0D-5FD79D6D518C} = {C2B04507-2521-4801-BF0D-5FD79D6D518C}
@@ -212,18 +200,6 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|ARM.ActiveCfg = Debug|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|ARM64.ActiveCfg = Debug|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|ARM.ActiveCfg = Release|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|ARM64.ActiveCfg = Release|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.ActiveCfg = Debug|ARM
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.Build.0 = Debug|ARM
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM64.ActiveCfg = Debug|ARM64
@@ -272,18 +248,6 @@ Global
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|ARM.ActiveCfg = Debug|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|ARM64.ActiveCfg = Debug|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.ActiveCfg = Debug|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.Build.0 = Debug|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|ARM.ActiveCfg = Release|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|ARM64.ActiveCfg = Release|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.ActiveCfg = Release|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.ActiveCfg = Debug|ARM
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.Build.0 = Debug|ARM
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM64.ActiveCfg = Debug|ARM64
diff --git a/icu4c/source/common/brkeng.cpp b/icu4c/source/common/brkeng.cpp
index 3f5828753..e53a7b2ce 100644
--- a/icu4c/source/common/brkeng.cpp
+++ b/icu4c/source/common/brkeng.cpp
@@ -114,13 +114,11 @@ UnhandledEngine::handleCharacter(UChar32 c) {
*/
ICULanguageBreakFactory::ICULanguageBreakFactory(UErrorCode &/*status*/) {
- fEngines = 0;
+ fEngines = nullptr;
}
ICULanguageBreakFactory::~ICULanguageBreakFactory() {
- if (fEngines != 0) {
- delete fEngines;
- }
+ delete fEngines;
}
void ICULanguageBreakFactory::ensureEngines(UErrorCode& status) {
diff --git a/icu4c/source/common/brkiter.cpp b/icu4c/source/common/brkiter.cpp
index b452cf2c0..4f2f0f3ac 100644
--- a/icu4c/source/common/brkiter.cpp
+++ b/icu4c/source/common/brkiter.cpp
@@ -438,17 +438,14 @@ BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
UTRACE_ENTRY(UTRACE_UBRK_CREATE_LINE);
uprv_strcpy(lb_lw, "line");
UErrorCode kvStatus = U_ZERO_ERROR;
- CharString value;
- CharStringByteSink valueSink(&value);
- loc.getKeywordValue("lb", valueSink, kvStatus);
+ auto value = loc.getKeywordValue<CharString>("lb", kvStatus);
if (U_SUCCESS(kvStatus) && (value == "strict" || value == "normal" || value == "loose")) {
uprv_strcat(lb_lw, "_");
uprv_strcat(lb_lw, value.data());
}
// lw=phrase is only supported in Japanese and Korean
if (uprv_strcmp(loc.getLanguage(), "ja") == 0 || uprv_strcmp(loc.getLanguage(), "ko") == 0) {
- value.clear();
- loc.getKeywordValue("lw", valueSink, kvStatus);
+ value = loc.getKeywordValue<CharString>("lw", kvStatus);
if (U_SUCCESS(kvStatus) && value == "phrase") {
uprv_strcat(lb_lw, "_");
uprv_strcat(lb_lw, value.data());
@@ -500,7 +497,7 @@ BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
Locale
BreakIterator::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
if (type == ULOC_REQUESTED_LOCALE) {
- return Locale(requestLocale);
+ return {requestLocale};
}
U_LOCALE_BASED(locBased, *this);
return locBased.getLocale(type, status);
diff --git a/icu4c/source/common/bytesinkutil.h b/icu4c/source/common/bytesinkutil.h
index 929c71fbe..b3bd487be 100644
--- a/icu4c/source/common/bytesinkutil.h
+++ b/icu4c/source/common/bytesinkutil.h
@@ -7,18 +7,52 @@
#ifndef BYTESINKUTIL_H
#define BYTESINKUTIL_H
+#include <type_traits>
+
#include "unicode/utypes.h"
#include "unicode/bytestream.h"
#include "unicode/edits.h"
+#include "charstr.h"
#include "cmemory.h"
#include "uassert.h"
+#include "ustr_imp.h"
U_NAMESPACE_BEGIN
class ByteSink;
-class CharString;
class Edits;
+class U_COMMON_API CharStringByteSink : public ByteSink {
+public:
+ CharStringByteSink(CharString* dest);
+ ~CharStringByteSink() override;
+
+ CharStringByteSink() = delete;
+ CharStringByteSink(const CharStringByteSink&) = delete;
+ CharStringByteSink& operator=(const CharStringByteSink&) = delete;
+
+ void Append(const char* bytes, int32_t n) override;
+
+ char* GetAppendBuffer(int32_t min_capacity,
+ int32_t desired_capacity_hint,
+ char* scratch,
+ int32_t scratch_capacity,
+ int32_t* result_capacity) override;
+
+private:
+ CharString& dest_;
+};
+
+// CharString doesn't provide the public API that StringByteSink requires a
+// string class to have so this template specialization replaces the default
+// implementation of StringByteSink<CharString> with CharStringByteSink.
+template<>
+class StringByteSink<CharString> : public CharStringByteSink {
+ public:
+ StringByteSink(CharString* dest) : CharStringByteSink(dest) { }
+ StringByteSink(CharString* dest, int32_t /*initialAppendCapacity*/) : CharStringByteSink(dest) { }
+};
+
class U_COMMON_API ByteSinkUtil {
public:
ByteSinkUtil() = delete; // all static
@@ -57,30 +91,64 @@ public:
ByteSink &sink, uint32_t options, Edits *edits,
UErrorCode &errorCode);
-private:
- static void appendNonEmptyUnchanged(const uint8_t *s, int32_t length,
- ByteSink &sink, uint32_t options, Edits *edits);
-};
-
-class U_COMMON_API CharStringByteSink : public ByteSink {
-public:
- CharStringByteSink(CharString* dest);
- ~CharStringByteSink() override;
-
- CharStringByteSink() = delete;
- CharStringByteSink(const CharStringByteSink&) = delete;
- CharStringByteSink& operator=(const CharStringByteSink&) = delete;
-
- void Append(const char* bytes, int32_t n) override;
+ /**
+ * Calls a lambda that writes to a ByteSink with a CheckedArrayByteSink
+ * and then returns through u_terminateChars(), in order to implement
+ * the classic ICU4C C API writing to a fix sized buffer on top of a
+ * contemporary C++ API.
+ *
+ * @param buffer receiving buffer
+ * @param capacity capacity of receiving buffer
+ * @param lambda that gets called with the sink as an argument
+ * @param status set to U_BUFFER_OVERFLOW_ERROR on overflow
+ * @return number of bytes written, or needed (in case of overflow)
+ * @internal
+ */
+ template <typename F,
+ typename = std::enable_if_t<
+ std::is_invocable_r_v<void, F, ByteSink&, UErrorCode&>>>
+ static int32_t viaByteSinkToTerminatedChars(char* buffer, int32_t capacity,
+ F&& lambda,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return 0; }
+ CheckedArrayByteSink sink(buffer, capacity);
+ lambda(sink, status);
+ if (U_FAILURE(status)) { return 0; }
+
+ int32_t reslen = sink.NumberOfBytesAppended();
+
+ if (sink.Overflowed()) {
+ status = U_BUFFER_OVERFLOW_ERROR;
+ return reslen;
+ }
+
+ return u_terminateChars(buffer, capacity, reslen, &status);
+ }
- char* GetAppendBuffer(int32_t min_capacity,
- int32_t desired_capacity_hint,
- char* scratch,
- int32_t scratch_capacity,
- int32_t* result_capacity) override;
+ /**
+ * Calls a lambda that writes to a ByteSink with a CharStringByteSink and
+ * then returns a CharString, in order to implement a contemporary C++ API
+ * on top of a C/C++ compatibility ByteSink API.
+ *
+ * @param lambda that gets called with the sink as an argument
+ * @param status to check and report
+ * @return the resulting string, or an empty string (in case of error)
+ * @internal
+ */
+ template <typename F,
+ typename = std::enable_if_t<
+ std::is_invocable_r_v<void, F, ByteSink&, UErrorCode&>>>
+ static CharString viaByteSinkToCharString(F&& lambda, UErrorCode& status) {
+ if (U_FAILURE(status)) { return {}; }
+ CharString result;
+ CharStringByteSink sink(&result);
+ lambda(sink, status);
+ return result;
+ }
private:
- CharString& dest_;
+ static void appendNonEmptyUnchanged(const uint8_t *s, int32_t length,
+ ByteSink &sink, uint32_t options, Edits *edits);
};
U_NAMESPACE_END
diff --git a/icu4c/source/common/caniter.cpp b/icu4c/source/common/caniter.cpp
index 64a3c65d2..2c987306e 100644
--- a/icu4c/source/common/caniter.cpp
+++ b/icu4c/source/common/caniter.cpp
@@ -64,6 +64,7 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CanonicalIterator)
+
/**
*@param source string to get results for
*/
@@ -73,10 +74,10 @@ CanonicalIterator::CanonicalIterator(const UnicodeString &sourceStr, UErrorCode
pieces_lengths(nullptr),
current(nullptr),
current_length(0),
- nfd(*Normalizer2::getNFDInstance(status)),
- nfcImpl(*Normalizer2Factory::getNFCImpl(status))
+ nfd(Normalizer2::getNFDInstance(status)),
+ nfcImpl(Normalizer2Factory::getNFCImpl(status))
{
- if(U_SUCCESS(status) && nfcImpl.ensureCanonIterData(status)) {
+ if(U_SUCCESS(status) && nfcImpl->ensureCanonIterData(status)) {
setSource(sourceStr, status);
}
}
@@ -172,7 +173,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
int32_t i = 0;
UnicodeString *list = nullptr;
- nfd.normalize(newSource, source, status);
+ nfd->normalize(newSource, source, status);
if(U_FAILURE(status)) {
return;
}
@@ -194,7 +195,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
current[0] = 0;
pieces[0] = new UnicodeString[1];
pieces_lengths[0] = 1;
- if (pieces[0] == 0) {
+ if (pieces[0] == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto CleanPartialInitialization;
}
@@ -203,7 +204,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
list = new UnicodeString[source.length()];
- if (list == 0) {
+ if (list == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto CleanPartialInitialization;
}
@@ -219,7 +220,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
// on the NFD form - see above).
for (; i < source.length(); i += U16_LENGTH(cp)) {
cp = source.char32At(i);
- if (nfcImpl.isCanonSegmentStarter(cp)) {
+ if (nfcImpl->isCanonSegmentStarter(cp)) {
source.extract(start, i-start, list[list_length++]); // add up to i
start = i;
}
@@ -252,9 +253,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
return;
// Common section to cleanup all local variables and reset object variables.
CleanPartialInitialization:
- if (list != nullptr) {
- delete[] list;
- }
+ delete[] list;
cleanPieces();
}
@@ -264,10 +263,19 @@ CleanPartialInitialization:
* @param source the string to find permutations for
* @return the results in a set.
*/
-void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status) {
+void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status, int32_t depth) {
if(U_FAILURE(status)) {
return;
}
+ // To avoid infinity loop caused by permute, we limit the depth of recursive
+ // call to permute and return U_UNSUPPORTED_ERROR.
+ // We know in some unit test we need at least 4. Set to 8 just in case some
+ // unforseen use cases.
+ constexpr int32_t kPermuteDepthLimit = 8;
+ if (depth > kPermuteDepthLimit) {
+ status = U_UNSUPPORTED_ERROR;
+ return;
+ }
//if (PROGRESS) printf("Permute: %s\n", UToS(Tr(source)));
int32_t i = 0;
@@ -277,7 +285,7 @@ void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros
if (source.length() <= 2 && source.countChar32() <= 1) {
UnicodeString *toPut = new UnicodeString(source);
/* test for nullptr */
- if (toPut == 0) {
+ if (toPut == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -311,7 +319,7 @@ void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros
// see what the permutations of the characters before and after this one are
//Hashtable *subpermute = permute(source.substring(0,i) + source.substring(i + UTF16.getCharCount(cp)));
- permute(subPermuteString.remove(i, U16_LENGTH(cp)), skipZeros, &subpermute, status);
+ permute(subPermuteString.remove(i, U16_LENGTH(cp)), skipZeros, &subpermute, status, depth+1);
/* Test for buffer overflows */
if(U_FAILURE(status)) {
return;
@@ -346,7 +354,7 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i
Hashtable permutations(status);
Hashtable basic(status);
if (U_FAILURE(status)) {
- return 0;
+ return nullptr;
}
result.setValueDeleter(uprv_deleteUObject);
permutations.setValueDeleter(uprv_deleteUObject);
@@ -381,7 +389,7 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i
//UnicodeString *possible = new UnicodeString(*((UnicodeString *)(ne2->value.pointer)));
UnicodeString possible(*((UnicodeString *)(ne2->value.pointer)));
UnicodeString attempt;
- nfd.normalize(possible, attempt, status);
+ nfd->normalize(possible, attempt, status);
// TODO: check if operator == is semanticaly the same as attempt.equals(segment)
if (attempt==segment) {
@@ -399,7 +407,7 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i
/* Test for buffer overflows */
if(U_FAILURE(status)) {
- return 0;
+ return nullptr;
}
// convert into a String[] to clean up storage
//String[] finalResult = new String[result.size()];
@@ -407,7 +415,7 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i
int32_t resultCount;
if((resultCount = result.count()) != 0) {
finalResult = new UnicodeString[resultCount];
- if (finalResult == 0) {
+ if (finalResult == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
}
@@ -448,7 +456,7 @@ Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const cha
for (int32_t i = 0; i < segLen; i += U16_LENGTH(cp)) {
// see if any character is at the start of some decomposition
U16_GET(segment, 0, i, segLen, cp);
- if (!nfcImpl.getCanonStartSet(cp, starts)) {
+ if (!nfcImpl->getCanonStartSet(cp, starts)) {
continue;
}
// if so, see which decompositions match
@@ -471,7 +479,7 @@ Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const cha
UnicodeString item = *((UnicodeString *)(ne->value.pointer));
UnicodeString *toAdd = new UnicodeString(prefix);
/* test for nullptr */
- if (toAdd == 0) {
+ if (toAdd == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
}
@@ -509,7 +517,7 @@ Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, con
UnicodeString temp(comp);
int32_t inputLen=temp.length();
UnicodeString decompString;
- nfd.normalize(temp, decompString, status);
+ nfd->normalize(temp, decompString, status);
if (U_FAILURE(status)) {
return nullptr;
}
@@ -573,7 +581,7 @@ Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, con
// brute force approach
// check to make sure result is canonically equivalent
UnicodeString trial;
- nfd.normalize(temp, trial, status);
+ nfd->normalize(temp, trial, status);
if(U_FAILURE(status) || trial.compare(segment+segmentPos, segLen - segmentPos) != 0) {
return nullptr;
}
diff --git a/icu4c/source/common/charstr.h b/icu4c/source/common/charstr.h
index 7749a804b..08283ca45 100644
--- a/icu4c/source/common/charstr.h
+++ b/icu4c/source/common/charstr.h
@@ -104,6 +104,13 @@ public:
*/
int32_t extract(char *dest, int32_t capacity, UErrorCode &errorCode) const;
+ bool operator==(const CharString& other) const {
+ return len == other.length() && (len == 0 || uprv_memcmp(data(), other.data(), len) == 0);
+ }
+ bool operator!=(const CharString& other) const {
+ return !operator==(other);
+ }
+
bool operator==(StringPiece other) const {
return len == other.length() && (len == 0 || uprv_memcmp(data(), other.data(), len) == 0);
}
diff --git a/icu4c/source/common/common.vcxproj b/icu4c/source/common/common.vcxproj
index be3093bd9..1fdf3bda8 100644
--- a/icu4c/source/common/common.vcxproj
+++ b/icu4c/source/common/common.vcxproj
@@ -35,7 +35,6 @@
</Midl>
<ClCompile>
<PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;U_COMMON_IMPLEMENTATION;U_PLATFORM_USES_ONLY_WIN32_API=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
diff --git a/icu4c/source/common/common_uwp.vcxproj b/icu4c/source/common/common_uwp.vcxproj
index b40f65c52..177455dc5 100644
--- a/icu4c/source/common/common_uwp.vcxproj
+++ b/icu4c/source/common/common_uwp.vcxproj
@@ -80,7 +80,6 @@
<ExceptionHandling>
</ExceptionHandling>
<FunctionLevelLinking>true</FunctionLevelLinking>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
diff --git a/icu4c/source/common/filteredbrk.cpp b/icu4c/source/common/filteredbrk.cpp
index a705b037c..a1490b612 100644
--- a/icu4c/source/common/filteredbrk.cpp
+++ b/icu4c/source/common/filteredbrk.cpp
@@ -147,7 +147,7 @@ public:
if(umtx_atomic_dec(&refcount) <= 0) {
delete this;
}
- return 0;
+ return nullptr;
}
virtual ~SimpleFilteredSentenceBreakData();
diff --git a/icu4c/source/common/hash.h b/icu4c/source/common/hash.h
index bc103ee72..c1a1c5c65 100644
--- a/icu4c/source/common/hash.h
+++ b/icu4c/source/common/hash.h
@@ -148,12 +148,12 @@ inline void Hashtable::initSize(UHashFunction *keyHash, UKeyComparator *keyComp,
}
inline Hashtable::Hashtable(UKeyComparator *keyComp, UValueComparator *valueComp,
- UErrorCode& status) : hash(0) {
+ UErrorCode& status) : hash(nullptr) {
init( uhash_hashUnicodeString, keyComp, valueComp, status);
}
inline Hashtable::Hashtable(UBool ignoreKeyCase, UErrorCode& status)
- : hash(0)
+ : hash(nullptr)
{
init(ignoreKeyCase ? uhash_hashCaselessUnicodeString
: uhash_hashUnicodeString,
@@ -164,7 +164,7 @@ inline Hashtable::Hashtable(UBool ignoreKeyCase, UErrorCode& status)
}
inline Hashtable::Hashtable(UBool ignoreKeyCase, int32_t size, UErrorCode& status)
- : hash(0)
+ : hash(nullptr)
{
initSize(ignoreKeyCase ? uhash_hashCaselessUnicodeString
: uhash_hashUnicodeString,
@@ -175,13 +175,13 @@ inline Hashtable::Hashtable(UBool ignoreKeyCase, int32_t size, UErrorCode& statu
}
inline Hashtable::Hashtable(UErrorCode& status)
- : hash(0)
+ : hash(nullptr)
{
init(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, status);
}
inline Hashtable::Hashtable()
- : hash(0)
+ : hash(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
init(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, status);
diff --git a/icu4c/source/common/localebuilder.cpp b/icu4c/source/common/localebuilder.cpp
index c1e1f2ad6..e53065a8a 100644
--- a/icu4c/source/common/localebuilder.cpp
+++ b/icu4c/source/common/localebuilder.cpp
@@ -3,21 +3,21 @@
#include <utility>
-#include "bytesinkutil.h" // CharStringByteSink
+#include "bytesinkutil.h" // StringByteSink<CharString>
#include "charstr.h"
#include "cstring.h"
#include "ulocimp.h"
#include "unicode/localebuilder.h"
#include "unicode/locid.h"
-U_NAMESPACE_BEGIN
+namespace {
-#define UPRV_ISDIGIT(c) (((c) >= '0') && ((c) <= '9'))
-#define UPRV_ISALPHANUM(c) (uprv_isASCIILetter(c) || UPRV_ISDIGIT(c) )
+inline bool UPRV_ISDIGIT(char c) { return c >= '0' && c <= '9'; }
+inline bool UPRV_ISALPHANUM(char c) { return uprv_isASCIILetter(c) || UPRV_ISDIGIT(c); }
constexpr const char* kAttributeKey = "attribute";
-static bool _isExtensionSubtags(char key, const char* s, int32_t len) {
+bool _isExtensionSubtags(char key, const char* s, int32_t len) {
switch (uprv_tolower(key)) {
case 'u':
return ultag_isUnicodeExtensionSubtags(s, len);
@@ -30,6 +30,10 @@ static bool _isExtensionSubtags(char key, const char* s, int32_t len) {
}
}
+} // namespace
+
+U_NAMESPACE_BEGIN
+
LocaleBuilder::LocaleBuilder() : UObject(), status_(U_ZERO_ERROR), language_(),
script_(), region_(), variant_(nullptr), extensions_(nullptr)
{
@@ -68,8 +72,10 @@ LocaleBuilder& LocaleBuilder::setLanguageTag(StringPiece tag)
return *this;
}
-static void setField(StringPiece input, char* dest, UErrorCode& errorCode,
- UBool (*test)(const char*, int32_t)) {
+namespace {
+
+void setField(StringPiece input, char* dest, UErrorCode& errorCode,
+ bool (*test)(const char*, int32_t)) {
if (U_FAILURE(errorCode)) { return; }
if (input.empty()) {
dest[0] = '\0';
@@ -81,6 +87,8 @@ static void setField(StringPiece input, char* dest, UErrorCode& errorCode,
}
}
+} // namespace
+
LocaleBuilder& LocaleBuilder::setLanguage(StringPiece language)
{
setField(language, language_, status_, &ultag_isLanguageSubtag);
@@ -99,7 +107,9 @@ LocaleBuilder& LocaleBuilder::setRegion(StringPiece region)
return *this;
}
-static void transform(char* data, int32_t len) {
+namespace {
+
+void transform(char* data, int32_t len) {
for (int32_t i = 0; i < len; i++, data++) {
if (*data == '_') {
*data = '-';
@@ -109,6 +119,8 @@ static void transform(char* data, int32_t len) {
}
}
+} // namespace
+
LocaleBuilder& LocaleBuilder::setVariant(StringPiece variant)
{
if (U_FAILURE(status_)) { return *this; }
@@ -134,7 +146,9 @@ LocaleBuilder& LocaleBuilder::setVariant(StringPiece variant)
return *this;
}
-static bool
+namespace {
+
+bool
_isKeywordValue(const char* key, const char* value, int32_t value_len)
{
if (key[1] == '\0') {
@@ -156,7 +170,7 @@ _isKeywordValue(const char* key, const char* value, int32_t value_len)
ultag_isUnicodeLocaleType(unicode_locale_type, -1);
}
-static void
+void
_copyExtensions(const Locale& from, icu::StringEnumeration *keywords,
Locale& to, bool validate, UErrorCode& errorCode)
{
@@ -169,9 +183,7 @@ _copyExtensions(const Locale& from, icu::StringEnumeration *keywords,
}
const char* key;
while ((key = keywords->next(nullptr, errorCode)) != nullptr) {
- CharString value;
- CharStringByteSink sink(&value);
- from.getKeywordValue(key, sink, errorCode);
+ auto value = from.getKeywordValue<CharString>(key, errorCode);
if (U_FAILURE(errorCode)) { return; }
if (uprv_strcmp(key, kAttributeKey) == 0) {
transform(value.data(), value.length());
@@ -186,9 +198,10 @@ _copyExtensions(const Locale& from, icu::StringEnumeration *keywords,
}
}
-void static
+void
_clearUAttributesAndKeyType(Locale& locale, UErrorCode& errorCode)
{
+ if (U_FAILURE(errorCode)) { return; }
// Clear Unicode attributes
locale.setKeywordValue(kAttributeKey, "", errorCode);
@@ -201,9 +214,10 @@ _clearUAttributesAndKeyType(Locale& locale, UErrorCode& errorCode)
}
}
-static void
+void
_setUnicodeExtensions(Locale& locale, const CharString& value, UErrorCode& errorCode)
{
+ if (U_FAILURE(errorCode)) { return; }
// Add the unicode extensions to extensions_
CharString locale_str("und-u-", errorCode);
locale_str.append(value, errorCode);
@@ -212,6 +226,8 @@ _setUnicodeExtensions(Locale& locale, const CharString& value, UErrorCode& error
locale, false, errorCode);
}
+} // namespace
+
LocaleBuilder& LocaleBuilder::setExtension(char key, StringPiece value)
{
if (U_FAILURE(status_)) { return *this; }
@@ -289,10 +305,8 @@ LocaleBuilder& LocaleBuilder::addUnicodeLocaleAttribute(
return *this;
}
- CharString attributes;
- CharStringByteSink sink(&attributes);
UErrorCode localErrorCode = U_ZERO_ERROR;
- extensions_->getKeywordValue(kAttributeKey, sink, localErrorCode);
+ auto attributes = extensions_->getKeywordValue<CharString>(kAttributeKey, localErrorCode);
if (U_FAILURE(localErrorCode)) {
CharString new_attributes(value_str.data(), status_);
// No attributes, set the attribute.
@@ -344,9 +358,7 @@ LocaleBuilder& LocaleBuilder::removeUnicodeLocaleAttribute(
}
if (extensions_ == nullptr) { return *this; }
UErrorCode localErrorCode = U_ZERO_ERROR;
- CharString attributes;
- CharStringByteSink sink(&attributes);
- extensions_->getKeywordValue(kAttributeKey, sink, localErrorCode);
+ auto attributes = extensions_->getKeywordValue<CharString>(kAttributeKey, localErrorCode);
// get failure, just return
if (U_FAILURE(localErrorCode)) { return *this; }
// Do not have any attributes, just return.
diff --git a/icu4c/source/common/localefallback_data.h b/icu4c/source/common/localefallback_data.h
index c847edeff..f6d7c87f5 100644
--- a/icu4c/source/common/localefallback_data.h
+++ b/icu4c/source/common/localefallback_data.h
@@ -26,10 +26,10 @@ const char scriptCodeChars[] =
const char dsLocaleIDChars[] =
"aaf\0aao\0aat\0ab\0abh\0abl\0abv\0acm\0acq\0acw\0acx\0adf\0adx\0"
"ady\0ae\0aeb\0aec\0aee\0aeq\0afb\0agi\0agj\0agx\0ahg\0aho\0ahr\0"
- "aib\0aij\0ain\0aio\0aiq\0ajp\0akk\0akv\0alk\0all\0alr\0alt\0alw\0"
- "am\0ams\0amw\0ani\0anp\0anr\0anu\0aot\0apc\0apd\0aph\0aqc\0ar\0"
- "arc\0arq\0ars\0ary\0arz\0as\0ase\0ask\0atn\0atv\0auj\0auz\0av\0"
- "avd\0avl\0awa\0awn\0axm\0ayh\0ayl\0ayn\0ayp\0az_IQ\0az_IR\0az_RU\0"
+ "aib\0aij\0ain\0aio\0aiq\0akk\0akv\0alk\0all\0alr\0alt\0alw\0am\0"
+ "ams\0amw\0ani\0anp\0anr\0anu\0aot\0apc\0apd\0aph\0aqc\0ar\0arc\0"
+ "arq\0ars\0ary\0arz\0as\0ase\0ask\0atn\0atv\0auj\0auz\0av\0avd\0"
+ "avl\0awa\0awn\0axm\0ayh\0ayl\0ayn\0ayp\0az_IQ\0az_IR\0az_RU\0"
"azb\0ba\0bal\0bap\0bax\0bbl\0bcq\0bdv\0bdz\0be\0bee\0bej\0bfb\0"
"bfq\0bft\0bfu\0bfw\0bfy\0bfz\0bg\0bgc\0bgd\0bgn\0bgp\0bgq\0bgw\0"
"bgx\0bha\0bhb\0bhd\0bhe\0bhh\0bhi\0bhj\0bhm\0bhn\0bho\0bht\0bhu\0"
@@ -53,58 +53,58 @@ const char dsLocaleIDChars[] =
"hno\0hoc\0hoh\0hoj\0how\0hoy\0hpo\0hrt\0hrz\0hsn\0hss\0htx\0hut\0"
"huy\0huz\0hy\0hyw\0ii\0imy\0inh\0int\0ior\0iru\0isk\0itk\0itl\0"
"iu\0iw\0ja\0jad\0jat\0jbe\0jbn\0jct\0jda\0jdg\0jdt\0jee\0jge\0"
- "ji\0jje\0jkm\0jml\0jna\0jnd\0jnl\0jns\0jog\0jpa\0jpr\0jrb\0jrb_MA\0"
+ "jje\0jkm\0jml\0jna\0jnd\0jnl\0jns\0jog\0jpa\0jpr\0jrb\0jrb_MA\0"
"jul\0jun\0juy\0jya\0jye\0ka\0kaa\0kap\0kaw\0kbd\0kbu\0kby\0kca\0"
"kdq\0kdt\0ket\0kex\0key\0kfa\0kfb\0kfc\0kfd\0kfe\0kfh\0kfi\0kfk\0"
"kfm\0kfp\0kfq\0kfr\0kfs\0kfx\0kfy\0kgj\0kgy\0khb\0khf\0khg\0khn\0"
"kht\0khv\0khw\0kif\0kim\0kip\0kjg\0kjh\0kjl\0kjo\0kjp\0kjt\0kk\0"
"kk_AF\0kk_CN\0kk_IR\0kk_MN\0kkf\0kkh\0kkt\0kle\0klj\0klr\0km\0"
"kmj\0kmz\0kn\0ko\0koi\0kok\0kpt\0kpy\0kqd\0kqy\0kra\0krc\0krk\0"
- "krr\0kru\0krv\0ks\0ksu\0ksw\0ksz\0ktb\0ktl\0ktp\0ku_LB\0kuf\0"
- "kum\0kv\0kva\0kvq\0kvt\0kvx\0kvy\0kxf\0kxk\0kxm\0kxp\0ky\0ky_CN\0"
- "kyu\0kyv\0kyw\0lab\0lad\0lae\0lah\0lbc\0lbe\0lbf\0lbj\0lbm\0lbo\0"
- "lbr\0lcp\0lep\0lez\0lhm\0lhs\0lif\0lis\0lkh\0lki\0lmh\0lmn\0lo\0"
- "loy\0lpo\0lrc\0lrk\0lrl\0lsa\0lsd\0lss\0luk\0luu\0luv\0luz\0lwl\0"
- "lwm\0lya\0lzh\0mag\0mai\0man_GN\0mby\0mde\0mdf\0mdx\0mdy\0mfa\0"
- "mfi\0mgp\0mhj\0mid\0mjl\0mjq\0mjr\0mjt\0mju\0mjv\0mjz\0mk\0mkb\0"
- "mke\0mki\0mkm\0ml\0mlf\0mn\0mn_CN\0mni\0mnj\0mns\0mnw\0mpz\0mr\0"
- "mra\0mrd\0mrj\0mro\0mrr\0ms_CC\0mtm\0mtr\0mud\0muk\0mut\0muv\0"
- "muz\0mvf\0mvy\0mvz\0mwr\0mwt\0mww\0my\0mym\0myv\0myz\0mzn\0nan\0"
- "nao\0ncd\0ncq\0ndf\0ne\0neg\0neh\0nei\0new\0ngt\0nio\0nit\0niv\0"
- "nli\0nlm\0nlx\0nmm\0nnp\0nod\0noe\0nog\0noi\0non\0nos\0npb\0nqo\0"
- "nsd\0nsf\0nsk\0nst\0nsv\0nty\0ntz\0nwc\0nwx\0nyl\0nyq\0oaa\0oac\0"
- "oar\0oav\0obm\0obr\0odk\0oht\0oj\0ojs\0okm\0oko\0okz\0ola\0ole\0"
- "omk\0omp\0omr\0oon\0or\0ort\0oru\0orv\0os\0osa\0osc\0osi\0ota\0"
- "otb\0otk\0oty\0pa\0pa_PK\0pal\0paq\0pbt\0pcb\0pce\0pcf\0pcg\0"
- "pch\0pci\0pcj\0peg\0peo\0pgd\0pgg\0pgl\0pgn\0phd\0phk\0phl\0phn\0"
- "pho\0phr\0pht\0phv\0phw\0pi\0pka\0pkr\0plk\0pll\0pmh\0pnt\0pra\0"
- "prc\0prd\0prp\0prt\0prx\0ps\0psh\0psi\0pst\0pum\0pwo\0pwr\0pww\0"
- "pyx\0qxq\0raa\0rab\0raf\0rah\0raj\0rav\0rbb\0rdb\0rei\0rhg\0rji\0"
- "rjs\0rka\0rki\0rkt\0rmi\0rmt\0rmz\0rom_BG\0rsk\0rtw\0ru\0rue\0"
- "rut\0rwr\0ryu\0sa\0sah\0sam\0sat\0saz\0sbn\0sbu\0sck\0scl\0scl_IN\0"
- "scp\0sct\0scu\0scx\0sd\0sd_IN\0sdb\0sdf\0sdg\0sdh\0sds\0sel\0"
- "sfm\0sga\0sgh\0sgj\0sgr\0sgt\0sgw\0sgy\0shd\0shi\0shm\0shn\0shu\0"
- "shv\0si\0sia\0sip\0siy\0siz\0sjd\0sjp\0sjt\0skb\0skj\0skr\0slq\0"
+ "krr\0kru\0krv\0ks\0ksu\0ksw\0ksz\0ktb\0ktl\0ktp\0ku_IR\0ku_LB\0"
+ "kuf\0kum\0kv\0kva\0kvq\0kvt\0kvx\0kvy\0kxf\0kxk\0kxm\0kxp\0ky\0"
+ "ky_CN\0kyu\0kyv\0kyw\0lab\0lad\0lae\0lah\0lbc\0lbe\0lbf\0lbj\0"
+ "lbm\0lbo\0lbr\0lcp\0lep\0lez\0lhm\0lhs\0lif\0lis\0lkh\0lki\0lmh\0"
+ "lmn\0lo\0loy\0lpo\0lrc\0lrk\0lrl\0lsa\0lsd\0lss\0luk\0luu\0luv\0"
+ "luz\0lwl\0lwm\0lya\0lzh\0mag\0mai\0man_GN\0mby\0mde\0mdf\0mdx\0"
+ "mdy\0mfa\0mfi\0mgp\0mhj\0mid\0mjl\0mjq\0mjr\0mjt\0mju\0mjv\0mjz\0"
+ "mk\0mkb\0mke\0mki\0mkm\0ml\0mlf\0mn\0mn_CN\0mni\0mnj\0mns\0mnw\0"
+ "mpz\0mr\0mra\0mrd\0mrj\0mro\0mrr\0ms_CC\0mtm\0mtr\0mud\0muk\0"
+ "mut\0muv\0muz\0mvf\0mvy\0mvz\0mwr\0mwt\0mww\0my\0mym\0myv\0myz\0"
+ "mzn\0nan\0nao\0ncd\0ncq\0ndf\0ne\0neg\0neh\0nei\0new\0ngt\0nio\0"
+ "nit\0niv\0nli\0nlm\0nlx\0nmm\0nnp\0nod\0noe\0nog\0noi\0non\0nos\0"
+ "npb\0nqo\0nsd\0nsf\0nsk\0nst\0nsv\0nty\0ntz\0nwc\0nwx\0nyl\0nyq\0"
+ "oaa\0oac\0oar\0oav\0obm\0obr\0odk\0oht\0oj\0ojs\0okm\0oko\0okz\0"
+ "ola\0ole\0omk\0omp\0omr\0oon\0or\0ort\0oru\0orv\0os\0osa\0osc\0"
+ "osi\0ota\0otb\0otk\0oty\0pa\0pa_PK\0pal\0paq\0pbt\0pcb\0pce\0"
+ "pcf\0pcg\0pch\0pci\0pcj\0peg\0peo\0pgd\0pgg\0pgl\0pgn\0phd\0phk\0"
+ "phl\0phn\0pho\0phr\0pht\0phv\0phw\0pi\0pka\0pkr\0plk\0pll\0pmh\0"
+ "pnt\0pra\0prc\0prd\0prt\0prx\0ps\0psh\0psi\0pst\0pum\0pwo\0pwr\0"
+ "pww\0pyx\0qxq\0raa\0rab\0raf\0rah\0raj\0rav\0rbb\0rdb\0rei\0rhg\0"
+ "rji\0rjs\0rka\0rki\0rkt\0rmi\0rmt\0rmz\0rom_BG\0rsk\0rtw\0ru\0"
+ "rue\0rut\0rwr\0ryu\0sa\0sah\0sam\0sat\0saz\0sbn\0sbu\0sck\0scl\0"
+ "scl_IN\0scp\0sct\0scu\0scx\0sd\0sd_IN\0sdb\0sdf\0sdg\0sdh\0sds\0"
+ "sel\0sfm\0sga\0sgh\0sgj\0sgr\0sgt\0sgw\0sgy\0shd\0shi\0shm\0shn\0"
+ "shu\0shv\0si\0sia\0sip\0siy\0siz\0sjd\0sjp\0sjt\0skb\0skj\0skr\0"
"smh\0smp\0smu\0smy\0soa\0sog\0soi\0sou\0spt\0spv\0sqo\0sqq\0sqt\0"
"sr\0srb\0srh\0srx\0srz\0ssh\0sss\0sts\0stv\0sty\0suz\0sva\0swb\0"
"swi\0swv\0syc\0syl\0syn\0syr\0syw\0ta\0tab\0taj\0tbk\0tcn\0tco\0"
"tcx\0tcy\0tda\0tdb\0tdd\0tdg\0tdh\0te\0tes\0tg\0tg_PK\0tge\0tgf\0"
"th\0the\0thf\0thi\0thl\0thm\0thq\0thr\0ths\0ti\0tig\0tij\0tin\0"
- "tjl\0tjo\0tkb\0tks\0tkt\0tmk\0tmr\0tnv\0tov\0tpu\0tra\0trg\0trm\0"
- "trw\0tsd\0tsj\0tt\0tth\0tto\0tts\0tvn\0twm\0txg\0txo\0tyr\0tyv\0"
- "ude\0udg\0udi\0udm\0ug\0ug_KZ\0ug_MN\0uga\0ugh\0ugo\0uk\0uki\0"
- "ulc\0unr\0unr_NP\0unx\0ur\0urk\0ush\0uum\0uz_AF\0uz_CN\0uzs\0"
- "vaa\0vaf\0vah\0vai\0vas\0vav\0vay\0vgr\0vmd\0vmh\0wal\0wbk\0wbq\0"
- "wbr\0wlo\0wme\0wne\0wni\0wsg\0wsv\0wtm\0wuu\0xal\0xan\0xas\0xco\0"
- "xcr\0xdq\0xhe\0xhm\0xis\0xka\0xkc\0xkj\0xkp\0xlc\0xld\0xly\0xmf\0"
- "xmn\0xmr\0xna\0xnr\0xpg\0xpi\0xpm\0xpr\0xrm\0xrn\0xsa\0xsr\0xss\0"
- "xub\0xuj\0xve\0xvi\0xwo\0xzh\0yai\0ybh\0ybi\0ydg\0yea\0yej\0yeu\0"
- "ygp\0yhd\0yi\0yig\0yih\0yiv\0ykg\0yna\0ynk\0yoi\0yoy\0yrk\0ysd\0"
- "ysn\0ysp\0ysr\0ysy\0yud\0yue\0yue_CN\0yug\0yux\0ywq\0ywu\0zau\0"
- "zba\0zch\0zdj\0zeh\0zen\0zgb\0zgh\0zgm\0zgn\0zh\0zh_AU\0zh_BN\0"
- "zh_GB\0zh_GF\0zh_HK\0zh_ID\0zh_MO\0zh_PA\0zh_PF\0zh_PH\0zh_SR\0"
- "zh_TH\0zh_TW\0zh_US\0zh_VN\0zhd\0zhx\0zkb\0zko\0zkt\0zkz\0zlj\0"
- "zln\0zlq\0zqe\0zrp\0zum\0zyg\0zyn\0zzj\0";
+ "tjl\0tjo\0tkb\0tks\0tkt\0tmr\0tnv\0tov\0tpu\0tra\0trg\0trm\0trw\0"
+ "tsd\0tsj\0tt\0tth\0tto\0tts\0tvn\0twm\0txg\0txo\0tyr\0tyv\0ude\0"
+ "udg\0udi\0udm\0ug\0ug_KZ\0ug_MN\0uga\0ugh\0ugo\0uk\0uki\0ulc\0"
+ "unr\0unr_NP\0unx\0ur\0urk\0ush\0uum\0uz_AF\0uz_CN\0uzs\0vaa\0"
+ "vaf\0vah\0vai\0vas\0vav\0vay\0vgr\0vmd\0vmh\0wal\0wbk\0wbq\0wbr\0"
+ "wlo\0wme\0wne\0wni\0wsg\0wsv\0wtm\0wuu\0xal\0xan\0xas\0xco\0xcr\0"
+ "xdq\0xhe\0xhm\0xis\0xka\0xkc\0xkj\0xkp\0xlc\0xld\0xly\0xmf\0xmn\0"
+ "xmr\0xna\0xnr\0xpg\0xpi\0xpm\0xpr\0xrm\0xrn\0xsa\0xsr\0xub\0xuj\0"
+ "xve\0xvi\0xwo\0xzh\0yai\0ybh\0ybi\0ydg\0yea\0yej\0yeu\0ygp\0yhd\0"
+ "yi\0yig\0yih\0yiv\0ykg\0yna\0ynk\0yoi\0yoy\0yrk\0ysd\0ysn\0ysp\0"
+ "ysr\0ysy\0yud\0yue\0yue_CN\0yug\0yux\0ywq\0ywu\0zau\0zba\0zch\0"
+ "zdj\0zeh\0zen\0zgb\0zgh\0zgm\0zgn\0zh\0zh_AU\0zh_BN\0zh_GB\0zh_GF\0"
+ "zh_HK\0zh_ID\0zh_MO\0zh_PA\0zh_PF\0zh_PH\0zh_SR\0zh_TH\0zh_TW\0"
+ "zh_US\0zh_VN\0zhd\0zhx\0zko\0zkt\0zkz\0zlj\0zln\0zlq\0zqe\0zrp\0"
+ "zum\0zyg\0zyn\0zzj\0";
const int32_t defaultScriptTable[] = {
0, 320, // aaf -> Mlym
@@ -138,996 +138,990 @@ const int32_t defaultScriptTable[] = {
110, 220, // ain -> Kana
114, 345, // aio -> Mymr
118, 10, // aiq -> Arab
- 122, 10, // ajp -> Arab
- 126, 570, // akk -> Xsux
- 130, 100, // akv -> Cyrl
- 134, 260, // alk -> Laoo
- 138, 320, // all -> Mlym
- 142, 100, // alr -> Cyrl
- 146, 100, // alt -> Cyrl
- 150, 120, // alw -> Ethi
- 154, 120, // am -> Ethi
- 157, 210, // ams -> Jpan
- 161, 475, // amw -> Syrc
- 165, 100, // ani -> Cyrl
- 169, 105, // anp -> Deva
- 173, 105, // anr -> Deva
- 177, 120, // anu -> Ethi
- 181, 45, // aot -> Beng
- 185, 10, // apc -> Arab
- 189, 10, // apd -> Arab
- 193, 105, // aph -> Deva
- 197, 100, // aqc -> Cyrl
- 201, 10, // ar -> Arab
- 204, 15, // arc -> Armi
- 208, 10, // arq -> Arab
- 212, 10, // ars -> Arab
- 216, 10, // ary -> Arab
- 220, 10, // arz -> Arab
- 224, 45, // as -> Beng
- 227, 450, // ase -> Sgnw
- 231, 10, // ask -> Arab
- 235, 10, // atn -> Arab
- 239, 100, // atv -> Cyrl
- 243, 10, // auj -> Arab
- 247, 10, // auz -> Arab
- 251, 100, // av -> Cyrl
- 254, 10, // avd -> Arab
- 258, 10, // avl -> Arab
- 262, 105, // awa -> Deva
- 266, 120, // awn -> Ethi
- 270, 20, // axm -> Armn
- 274, 10, // ayh -> Arab
- 278, 10, // ayl -> Arab
- 282, 10, // ayn -> Arab
- 286, 10, // ayp -> Arab
- 290, 10, // az_IQ -> Arab
- 296, 10, // az_IR -> Arab
- 302, 100, // az_RU -> Cyrl
- 308, 10, // azb -> Arab
- 312, 100, // ba -> Cyrl
- 315, 10, // bal -> Arab
- 319, 105, // bap -> Deva
- 323, 30, // bax -> Bamu
- 327, 125, // bbl -> Geor
- 331, 120, // bcq -> Ethi
- 335, 385, // bdv -> Orya
- 339, 10, // bdz -> Arab
- 343, 100, // be -> Cyrl
- 346, 105, // bee -> Deva
- 350, 10, // bej -> Arab
- 354, 105, // bfb -> Deva
- 358, 500, // bfq -> Taml
- 362, 10, // bft -> Arab
- 366, 535, // bfu -> Tibt
- 370, 385, // bfw -> Orya
- 374, 105, // bfy -> Deva
- 378, 105, // bfz -> Deva
- 382, 100, // bg -> Cyrl
- 385, 105, // bgc -> Deva
- 389, 105, // bgd -> Deva
- 393, 10, // bgn -> Arab
- 397, 10, // bgp -> Arab
- 401, 105, // bgq -> Deva
- 405, 105, // bgw -> Deva
- 409, 150, // bgx -> Grek
- 413, 105, // bha -> Deva
- 417, 105, // bhb -> Deva
- 421, 105, // bhd -> Deva
- 425, 10, // bhe -> Arab
- 429, 100, // bhh -> Cyrl
- 433, 105, // bhi -> Deva
- 437, 105, // bhj -> Deva
- 441, 10, // bhm -> Arab
- 445, 475, // bhn -> Syrc
- 449, 105, // bho -> Deva
- 453, 485, // bht -> Takr
- 457, 105, // bhu -> Deva
- 461, 105, // biy -> Deva
- 465, 475, // bjf -> Syrc
- 469, 105, // bjj -> Deva
- 473, 10, // bjm -> Arab
- 477, 345, // blk -> Mymr
- 481, 510, // blt -> Tavt
- 485, 105, // bmj -> Deva
- 489, 45, // bn -> Beng
- 492, 105, // bns -> Deva
- 496, 535, // bo -> Tibt
- 499, 100, // bph -> Cyrl
- 503, 105, // bpx -> Deva
- 507, 45, // bpy -> Beng
- 511, 10, // bqi -> Arab
- 515, 105, // bra -> Deva
- 519, 235, // brb -> Khmr
- 523, 105, // brd -> Deva
- 527, 10, // brh -> Arab
- 531, 10, // brk -> Arab
- 535, 260, // brv -> Laoo
- 539, 105, // brx -> Deva
- 543, 10, // bsh -> Arab
- 547, 10, // bsk -> Arab
- 551, 35, // bsq -> Bass
- 555, 120, // bst -> Ethi
- 559, 40, // btd -> Batk
- 563, 40, // btm -> Batk
- 567, 105, // btv -> Deva
- 571, 100, // bua -> Cyrl
- 575, 345, // bwe -> Mymr
- 579, 100, // bxm -> Cyrl
- 583, 330, // bxu -> Mong
- 587, 105, // byh -> Deva
- 591, 120, // byn -> Ethi
- 595, 105, // byw -> Deva
- 599, 530, // bzi -> Thai
- 603, 530, // cbn -> Thai
- 607, 60, // ccp -> Cakm
- 611, 515, // cde -> Telu
- 615, 105, // cdh -> Deva
- 619, 155, // cdi -> Gujr
- 623, 105, // cdj -> Deva
- 627, 105, // cdm -> Deva
- 631, 175, // cdo -> Hans
- 635, 45, // cdz -> Beng
- 639, 100, // ce -> Cyrl
- 642, 535, // cgk -> Tibt
- 646, 10, // chg -> Arab
- 650, 100, // chm -> Cyrl
- 654, 80, // chr -> Cher
- 658, 105, // chx -> Deva
- 662, 105, // cih -> Deva
- 666, 10, // cja -> Arab
- 670, 100, // cji -> Cyrl
- 674, 75, // cjm -> Cham
- 678, 175, // cjy -> Hans
- 682, 10, // ckb -> Arab
- 686, 100, // ckt -> Cyrl
- 690, 10, // clh -> Arab
- 694, 100, // clw -> Cyrl
- 698, 470, // cmg -> Soyo
- 702, 535, // cna -> Tibt
- 706, 175, // cnp -> Hans
- 710, 530, // cog -> Thai
- 714, 90, // cop -> Copt
- 718, 150, // cpg -> Grek
- 722, 65, // cr -> Cans
- 725, 100, // crh -> Cyrl
- 729, 65, // crj -> Cans
- 733, 65, // crk -> Cans
- 737, 65, // crl -> Cans
- 741, 65, // crm -> Cans
- 745, 345, // csh -> Mymr
- 749, 175, // csp -> Hans
- 753, 65, // csw -> Cans
- 757, 395, // ctd -> Pauc
- 761, 45, // ctg -> Beng
- 765, 105, // ctn -> Deva
- 769, 500, // ctt -> Taml
- 773, 100, // cu -> Cyrl
- 776, 255, // cuu -> Lana
- 780, 100, // cv -> Cyrl
- 783, 175, // czh -> Hans
- 787, 185, // czk -> Hebr
- 791, 105, // daq -> Deva
- 795, 100, // dar -> Cyrl
- 799, 10, // dcc -> Arab
- 803, 100, // ddo -> Cyrl
- 807, 10, // def -> Arab
- 811, 10, // deh -> Arab
- 815, 45, // der -> Beng
- 819, 105, // dhi -> Deva
- 823, 155, // dhn -> Gujr
- 827, 105, // dho -> Deva
- 831, 105, // dhw -> Deva
- 835, 535, // dka -> Tibt
- 839, 100, // dlg -> Cyrl
- 843, 310, // dmf -> Medf
- 847, 10, // dmk -> Arab
- 851, 10, // dml -> Arab
- 855, 100, // dng -> Cyrl
- 859, 345, // dnu -> Mymr
- 863, 345, // dnv -> Mymr
- 867, 105, // doi -> Deva
- 871, 120, // dox -> Ethi
- 875, 535, // dre -> Tibt
- 879, 105, // drq -> Deva
- 883, 120, // drs -> Ethi
- 887, 105, // dry -> Deva
- 891, 385, // dso -> Orya
- 895, 105, // dty -> Deva
- 899, 155, // dub -> Gujr
- 903, 105, // duh -> Deva
- 907, 105, // dus -> Deva
- 911, 525, // dv -> Thaa
- 914, 385, // dwk -> Orya
- 918, 105, // dwz -> Deva
- 922, 535, // dz -> Tibt
- 925, 535, // dzl -> Tibt
- 929, 150, // ecr -> Grek
- 933, 95, // ecy -> Cprt
- 937, 110, // egy -> Egyp
- 941, 215, // eky -> Kali
- 945, 150, // el -> Grek
- 948, 105, // emg -> Deva
- 952, 105, // emu -> Deva
- 956, 100, // enf -> Cyrl
- 960, 100, // enh -> Cyrl
- 964, 500, // era -> Taml
- 968, 135, // esg -> Gonm
- 972, 10, // esh -> Arab
- 976, 200, // ett -> Ital
- 980, 100, // eve -> Cyrl
- 984, 100, // evn -> Cyrl
- 988, 10, // fa -> Arab
- 991, 10, // fay -> Arab
- 995, 10, // faz -> Arab
- 999, 10, // fia -> Arab
- 1003, 105, // fmu -> Deva
- 1007, 10, // fub -> Arab
- 1011, 175, // gan -> Hans
- 1015, 385, // gaq -> Orya
- 1019, 155, // gas -> Gujr
- 1023, 515, // gau -> Telu
- 1027, 385, // gbj -> Orya
- 1031, 105, // gbk -> Deva
- 1035, 155, // gbl -> Gujr
- 1039, 105, // gbm -> Deva
- 1043, 10, // gbz -> Arab
- 1047, 385, // gdb -> Orya
- 1051, 100, // gdo -> Cyrl
- 1055, 105, // gdx -> Deva
- 1059, 120, // gez -> Ethi
- 1063, 10, // ggg -> Arab
- 1067, 10, // gha -> Arab
- 1071, 105, // ghe -> Deva
- 1075, 10, // ghr -> Arab
- 1079, 535, // ght -> Tibt
- 1083, 10, // gig -> Arab
- 1087, 100, // gin -> Cyrl
- 1091, 10, // gjk -> Arab
- 1095, 10, // gju -> Arab
- 1099, 100, // gld -> Cyrl
- 1103, 10, // glh -> Arab
- 1107, 10, // glk -> Arab
- 1111, 120, // gmv -> Ethi
- 1115, 275, // gmy -> Linb
- 1119, 535, // goe -> Tibt
- 1123, 120, // gof -> Ethi
- 1127, 105, // gok -> Deva
- 1131, 105, // gom -> Deva
- 1135, 515, // gon -> Telu
- 1139, 140, // got -> Goth
- 1143, 105, // gra -> Deva
- 1147, 95, // grc -> Cprt
- 1151, 45, // grt -> Beng
- 1155, 120, // gru -> Ethi
- 1159, 155, // gu -> Gujr
- 1162, 105, // gvr -> Deva
- 1166, 10, // gwc -> Arab
- 1170, 10, // gwf -> Arab
- 1174, 10, // gwt -> Arab
- 1178, 105, // gyo -> Deva
- 1182, 10, // gzi -> Arab
- 1186, 10, // ha_CM -> Arab
- 1192, 10, // ha_SD -> Arab
- 1198, 10, // hac -> Arab
- 1202, 175, // hak -> Hans
- 1206, 120, // har -> Ethi
- 1210, 10, // haz -> Arab
- 1214, 185, // hbo -> Hebr
- 1218, 120, // hdy -> Ethi
- 1222, 185, // he -> Hebr
- 1225, 105, // hi -> Deva
- 1228, 485, // hii -> Takr
- 1232, 570, // hit -> Xsux
- 1236, 10, // hkh -> Arab
- 1240, 105, // hlb -> Deva
- 1244, 190, // hlu -> Hluw
- 1248, 410, // hmd -> Plrd
- 1252, 50, // hmj -> Bopo
- 1256, 50, // hmq -> Bopo
- 1260, 10, // hnd -> Arab
- 1264, 105, // hne -> Deva
- 1268, 195, // hnj -> Hmnp
- 1272, 260, // hnj_AU -> Laoo
- 1279, 260, // hnj_CN -> Laoo
- 1286, 260, // hnj_FR -> Laoo
- 1293, 260, // hnj_GF -> Laoo
- 1300, 260, // hnj_LA -> Laoo
- 1307, 260, // hnj_MM -> Laoo
- 1314, 260, // hnj_SR -> Laoo
- 1321, 260, // hnj_TH -> Laoo
- 1328, 260, // hnj_VN -> Laoo
- 1335, 10, // hno -> Arab
- 1339, 105, // hoc -> Deva
- 1343, 10, // hoh -> Arab
- 1347, 105, // hoj -> Deva
- 1351, 170, // how -> Hani
- 1355, 105, // hoy -> Deva
- 1359, 345, // hpo -> Mymr
- 1363, 475, // hrt -> Syrc
- 1367, 10, // hrz -> Arab
- 1371, 175, // hsn -> Hans
- 1375, 10, // hss -> Arab
- 1379, 570, // htx -> Xsux
- 1383, 105, // hut -> Deva
- 1387, 185, // huy -> Hebr
- 1391, 100, // huz -> Cyrl
- 1395, 20, // hy -> Armn
- 1398, 20, // hyw -> Armn
- 1402, 575, // ii -> Yiii
- 1405, 285, // imy -> Lyci
- 1409, 100, // inh -> Cyrl
- 1413, 345, // int -> Mymr
- 1417, 120, // ior -> Ethi
- 1421, 500, // iru -> Taml
- 1425, 10, // isk -> Arab
- 1429, 185, // itk -> Hebr
- 1433, 100, // itl -> Cyrl
- 1437, 65, // iu -> Cans
- 1440, 185, // iw -> Hebr
- 1443, 210, // ja -> Jpan
- 1446, 10, // jad -> Arab
- 1450, 10, // jat -> Arab
- 1454, 185, // jbe -> Hebr
- 1458, 10, // jbn -> Arab
- 1462, 100, // jct -> Cyrl
- 1466, 535, // jda -> Tibt
- 1470, 10, // jdg -> Arab
- 1474, 100, // jdt -> Cyrl
- 1478, 105, // jee -> Deva
- 1482, 125, // jge -> Geor
- 1486, 185, // ji -> Hebr
- 1489, 165, // jje -> Hang
- 1493, 345, // jkm -> Mymr
- 1497, 105, // jml -> Deva
- 1501, 485, // jna -> Takr
- 1505, 10, // jnd -> Arab
- 1509, 105, // jnl -> Deva
- 1513, 105, // jns -> Deva
- 1517, 10, // jog -> Arab
- 1521, 185, // jpa -> Hebr
- 1525, 185, // jpr -> Hebr
- 1529, 185, // jrb -> Hebr
- 1533, 10, // jrb_MA -> Arab
- 1540, 105, // jul -> Deva
- 1544, 385, // jun -> Orya
- 1548, 385, // juy -> Orya
- 1552, 535, // jya -> Tibt
- 1556, 185, // jye -> Hebr
- 1560, 125, // ka -> Geor
- 1563, 100, // kaa -> Cyrl
- 1567, 100, // kap -> Cyrl
- 1571, 225, // kaw -> Kawi
- 1575, 100, // kbd -> Cyrl
- 1579, 10, // kbu -> Arab
- 1583, 10, // kby -> Arab
- 1587, 100, // kca -> Cyrl
- 1591, 45, // kdq -> Beng
- 1595, 530, // kdt -> Thai
- 1599, 100, // ket -> Cyrl
- 1603, 105, // kex -> Deva
- 1607, 515, // key -> Telu
- 1611, 245, // kfa -> Knda
- 1615, 105, // kfb -> Deva
- 1619, 515, // kfc -> Telu
- 1623, 245, // kfd -> Knda
- 1627, 500, // kfe -> Taml
- 1631, 320, // kfh -> Mlym
- 1635, 500, // kfi -> Taml
- 1639, 105, // kfk -> Deva
- 1643, 10, // kfm -> Arab
- 1647, 105, // kfp -> Deva
- 1651, 105, // kfq -> Deva
- 1655, 105, // kfr -> Deva
- 1659, 105, // kfs -> Deva
- 1663, 105, // kfx -> Deva
- 1667, 105, // kfy -> Deva
- 1671, 105, // kgj -> Deva
- 1675, 105, // kgy -> Deva
- 1679, 495, // khb -> Talu
- 1683, 530, // khf -> Thai
- 1687, 535, // khg -> Tibt
- 1691, 105, // khn -> Deva
- 1695, 345, // kht -> Mymr
- 1699, 100, // khv -> Cyrl
- 1703, 10, // khw -> Arab
- 1707, 105, // kif -> Deva
- 1711, 100, // kim -> Cyrl
- 1715, 105, // kip -> Deva
- 1719, 260, // kjg -> Laoo
- 1723, 100, // kjh -> Cyrl
- 1727, 105, // kjl -> Deva
- 1731, 105, // kjo -> Deva
- 1735, 345, // kjp -> Mymr
- 1739, 530, // kjt -> Thai
- 1743, 100, // kk -> Cyrl
- 1746, 10, // kk_AF -> Arab
- 1752, 10, // kk_CN -> Arab
- 1758, 10, // kk_IR -> Arab
- 1764, 10, // kk_MN -> Arab
- 1770, 535, // kkf -> Tibt
- 1774, 255, // kkh -> Lana
- 1778, 105, // kkt -> Deva
- 1782, 105, // kle -> Deva
- 1786, 10, // klj -> Arab
- 1790, 105, // klr -> Deva
- 1794, 235, // km -> Khmr
- 1797, 105, // kmj -> Deva
- 1801, 10, // kmz -> Arab
- 1805, 245, // kn -> Knda
- 1808, 250, // ko -> Kore
- 1811, 100, // koi -> Cyrl
- 1815, 105, // kok -> Deva
- 1819, 100, // kpt -> Cyrl
- 1823, 100, // kpy -> Cyrl
- 1827, 475, // kqd -> Syrc
- 1831, 120, // kqy -> Ethi
- 1835, 105, // kra -> Deva
- 1839, 100, // krc -> Cyrl
- 1843, 100, // krk -> Cyrl
- 1847, 235, // krr -> Khmr
- 1851, 105, // kru -> Deva
- 1855, 235, // krv -> Khmr
- 1859, 10, // ks -> Arab
- 1862, 345, // ksu -> Mymr
- 1866, 345, // ksw -> Mymr
- 1870, 105, // ksz -> Deva
- 1874, 120, // ktb -> Ethi
- 1878, 10, // ktl -> Arab
- 1882, 410, // ktp -> Plrd
- 1886, 10, // ku_LB -> Arab
- 1892, 260, // kuf -> Laoo
- 1896, 100, // kum -> Cyrl
- 1900, 100, // kv -> Cyrl
- 1903, 100, // kva -> Cyrl
- 1907, 345, // kvq -> Mymr
- 1911, 345, // kvt -> Mymr
- 1915, 10, // kvx -> Arab
- 1919, 215, // kvy -> Kali
- 1923, 345, // kxf -> Mymr
- 1927, 345, // kxk -> Mymr
- 1931, 530, // kxm -> Thai
- 1935, 10, // kxp -> Arab
- 1939, 100, // ky -> Cyrl
- 1942, 10, // ky_CN -> Arab
- 1948, 215, // kyu -> Kali
- 1952, 105, // kyv -> Deva
- 1956, 105, // kyw -> Deva
- 1960, 270, // lab -> Lina
- 1964, 185, // lad -> Hebr
- 1968, 105, // lae -> Deva
- 1972, 10, // lah -> Arab
- 1976, 280, // lbc -> Lisu
- 1980, 100, // lbe -> Cyrl
- 1984, 105, // lbf -> Deva
- 1988, 535, // lbj -> Tibt
- 1992, 105, // lbm -> Deva
- 1996, 260, // lbo -> Laoo
- 2000, 105, // lbr -> Deva
- 2004, 530, // lcp -> Thai
- 2008, 265, // lep -> Lepc
- 2012, 100, // lez -> Cyrl
- 2016, 105, // lhm -> Deva
- 2020, 475, // lhs -> Syrc
- 2024, 105, // lif -> Deva
- 2028, 280, // lis -> Lisu
- 2032, 535, // lkh -> Tibt
- 2036, 10, // lki -> Arab
- 2040, 105, // lmh -> Deva
- 2044, 515, // lmn -> Telu
- 2048, 260, // lo -> Laoo
- 2051, 105, // loy -> Deva
- 2055, 410, // lpo -> Plrd
- 2059, 10, // lrc -> Arab
- 2063, 10, // lrk -> Arab
- 2067, 10, // lrl -> Arab
- 2071, 10, // lsa -> Arab
- 2075, 185, // lsd -> Hebr
- 2079, 10, // lss -> Arab
- 2083, 535, // luk -> Tibt
- 2087, 105, // luu -> Deva
- 2091, 10, // luv -> Arab
- 2095, 10, // luz -> Arab
- 2099, 530, // lwl -> Thai
- 2103, 530, // lwm -> Thai
- 2107, 535, // lya -> Tibt
- 2111, 175, // lzh -> Hans
- 2115, 105, // mag -> Deva
- 2119, 105, // mai -> Deva
- 2123, 360, // man_GN -> Nkoo
- 2130, 10, // mby -> Arab
- 2134, 10, // mde -> Arab
- 2138, 100, // mdf -> Cyrl
- 2142, 120, // mdx -> Ethi
- 2146, 120, // mdy -> Ethi
- 2150, 10, // mfa -> Arab
- 2154, 10, // mfi -> Arab
- 2158, 105, // mgp -> Deva
- 2162, 10, // mhj -> Arab
- 2166, 295, // mid -> Mand
- 2170, 105, // mjl -> Deva
- 2174, 320, // mjq -> Mlym
- 2178, 320, // mjr -> Mlym
- 2182, 105, // mjt -> Deva
- 2186, 515, // mju -> Telu
- 2190, 320, // mjv -> Mlym
- 2194, 105, // mjz -> Deva
- 2198, 100, // mk -> Cyrl
- 2201, 105, // mkb -> Deva
- 2205, 105, // mke -> Deva
- 2209, 10, // mki -> Arab
- 2213, 530, // mkm -> Thai
- 2217, 320, // ml -> Mlym
- 2220, 530, // mlf -> Thai
- 2224, 100, // mn -> Cyrl
- 2227, 330, // mn_CN -> Mong
- 2233, 45, // mni -> Beng
- 2237, 10, // mnj -> Arab
- 2241, 100, // mns -> Cyrl
- 2245, 345, // mnw -> Mymr
- 2249, 530, // mpz -> Thai
- 2253, 105, // mr -> Deva
- 2256, 530, // mra -> Thai
- 2260, 105, // mrd -> Deva
- 2264, 100, // mrj -> Cyrl
- 2268, 335, // mro -> Mroo
- 2272, 105, // mrr -> Deva
- 2276, 10, // ms_CC -> Arab
- 2282, 100, // mtm -> Cyrl
- 2286, 105, // mtr -> Deva
- 2290, 100, // mud -> Cyrl
- 2294, 535, // muk -> Tibt
- 2298, 105, // mut -> Deva
- 2302, 500, // muv -> Taml
- 2306, 120, // muz -> Ethi
- 2310, 330, // mvf -> Mong
- 2314, 10, // mvy -> Arab
- 2318, 120, // mvz -> Ethi
- 2322, 105, // mwr -> Deva
- 2326, 345, // mwt -> Mymr
- 2330, 195, // mww -> Hmnp
- 2334, 345, // my -> Mymr
- 2337, 120, // mym -> Ethi
- 2341, 100, // myv -> Cyrl
- 2345, 295, // myz -> Mand
- 2349, 10, // mzn -> Arab
- 2353, 175, // nan -> Hans
- 2357, 105, // nao -> Deva
- 2361, 105, // ncd -> Deva
- 2365, 260, // ncq -> Laoo
- 2369, 100, // ndf -> Cyrl
- 2373, 105, // ne -> Deva
- 2376, 100, // neg -> Cyrl
- 2380, 535, // neh -> Tibt
- 2384, 570, // nei -> Xsux
- 2388, 105, // new -> Deva
- 2392, 260, // ngt -> Laoo
- 2396, 100, // nio -> Cyrl
- 2400, 515, // nit -> Telu
- 2404, 100, // niv -> Cyrl
- 2408, 10, // nli -> Arab
- 2412, 10, // nlm -> Arab
- 2416, 105, // nlx -> Deva
- 2420, 105, // nmm -> Deva
- 2424, 560, // nnp -> Wcho
- 2428, 255, // nod -> Lana
- 2432, 105, // noe -> Deva
- 2436, 100, // nog -> Cyrl
- 2440, 105, // noi -> Deva
- 2444, 430, // non -> Runr
- 2448, 575, // nos -> Yiii
- 2452, 535, // npb -> Tibt
- 2456, 360, // nqo -> Nkoo
- 2460, 575, // nsd -> Yiii
- 2464, 575, // nsf -> Yiii
- 2468, 65, // nsk -> Cans
- 2472, 540, // nst -> Tnsa
- 2476, 575, // nsv -> Yiii
- 2480, 575, // nty -> Yiii
- 2484, 10, // ntz -> Arab
- 2488, 355, // nwc -> Newa
- 2492, 105, // nwx -> Deva
- 2496, 530, // nyl -> Thai
- 2500, 10, // nyq -> Arab
- 2504, 100, // oaa -> Cyrl
- 2508, 100, // oac -> Cyrl
- 2512, 475, // oar -> Syrc
- 2516, 125, // oav -> Geor
- 2520, 405, // obm -> Phnx
- 2524, 345, // obr -> Mymr
- 2528, 10, // odk -> Arab
- 2532, 570, // oht -> Xsux
- 2536, 65, // oj -> Cans
- 2539, 65, // ojs -> Cans
- 2543, 165, // okm -> Hang
- 2547, 170, // oko -> Hani
- 2551, 235, // okz -> Khmr
- 2555, 105, // ola -> Deva
- 2559, 535, // ole -> Tibt
- 2563, 100, // omk -> Cyrl
- 2567, 340, // omp -> Mtei
- 2571, 325, // omr -> Modi
- 2575, 105, // oon -> Deva
- 2579, 385, // or -> Orya
- 2582, 515, // ort -> Telu
- 2586, 10, // oru -> Arab
- 2590, 100, // orv -> Cyrl
- 2594, 100, // os -> Cyrl
- 2597, 390, // osa -> Osge
- 2601, 200, // osc -> Ital
- 2605, 205, // osi -> Java
- 2609, 10, // ota -> Arab
- 2613, 535, // otb -> Tibt
- 2617, 380, // otk -> Orkh
- 2621, 145, // oty -> Gran
- 2625, 160, // pa -> Guru
- 2628, 10, // pa_PK -> Arab
- 2634, 400, // pal -> Phli
- 2638, 100, // paq -> Cyrl
- 2642, 10, // pbt -> Arab
- 2646, 235, // pcb -> Khmr
- 2650, 345, // pce -> Mymr
- 2654, 320, // pcf -> Mlym
- 2658, 320, // pcg -> Mlym
- 2662, 105, // pch -> Deva
- 2666, 105, // pci -> Deva
- 2670, 515, // pcj -> Telu
- 2674, 385, // peg -> Orya
- 2678, 565, // peo -> Xpeo
- 2682, 230, // pgd -> Khar
- 2686, 105, // pgg -> Deva
- 2690, 370, // pgl -> Ogam
- 2694, 200, // pgn -> Ital
- 2698, 105, // phd -> Deva
- 2702, 345, // phk -> Mymr
- 2706, 10, // phl -> Arab
- 2710, 405, // phn -> Phnx
- 2714, 260, // pho -> Laoo
- 2718, 10, // phr -> Arab
- 2722, 530, // pht -> Thai
- 2726, 10, // phv -> Arab
- 2730, 105, // phw -> Deva
- 2734, 455, // pi -> Sinh
- 2737, 55, // pka -> Brah
- 2741, 320, // pkr -> Mlym
- 2745, 10, // plk -> Arab
- 2749, 345, // pll -> Mymr
- 2753, 55, // pmh -> Brah
- 2757, 150, // pnt -> Grek
- 2761, 230, // pra -> Khar
- 2765, 10, // prc -> Arab
- 2769, 10, // prd -> Arab
- 2773, 155, // prp -> Gujr
- 2777, 530, // prt -> Thai
- 2781, 10, // prx -> Arab
- 2785, 10, // ps -> Arab
- 2788, 10, // psh -> Arab
- 2792, 10, // psi -> Arab
- 2796, 10, // pst -> Arab
- 2800, 105, // pum -> Deva
- 2804, 345, // pwo -> Mymr
- 2808, 105, // pwr -> Deva
- 2812, 530, // pww -> Thai
- 2816, 345, // pyx -> Mymr
- 2820, 10, // qxq -> Arab
- 2824, 105, // raa -> Deva
- 2828, 105, // rab -> Deva
- 2832, 105, // raf -> Deva
- 2836, 45, // rah -> Beng
- 2840, 105, // raj -> Deva
- 2844, 105, // rav -> Deva
- 2848, 345, // rbb -> Mymr
- 2852, 10, // rdb -> Arab
- 2856, 385, // rei -> Orya
- 2860, 425, // rhg -> Rohg
- 2864, 105, // rji -> Deva
- 2868, 105, // rjs -> Deva
- 2872, 235, // rka -> Khmr
- 2876, 345, // rki -> Mymr
- 2880, 45, // rkt -> Beng
- 2884, 20, // rmi -> Armn
- 2888, 10, // rmt -> Arab
- 2892, 345, // rmz -> Mymr
- 2896, 100, // rom_BG -> Cyrl
- 2903, 100, // rsk -> Cyrl
- 2907, 105, // rtw -> Deva
- 2911, 100, // ru -> Cyrl
- 2914, 100, // rue -> Cyrl
- 2918, 100, // rut -> Cyrl
- 2922, 105, // rwr -> Deva
- 2926, 220, // ryu -> Kana
- 2930, 105, // sa -> Deva
- 2933, 100, // sah -> Cyrl
- 2937, 435, // sam -> Samr
- 2941, 375, // sat -> Olck
- 2945, 445, // saz -> Saur
- 2949, 10, // sbn -> Arab
- 2953, 535, // sbu -> Tibt
- 2957, 105, // sck -> Deva
- 2961, 10, // scl -> Arab
- 2965, 10, // scl_IN -> Arab
- 2972, 105, // scp -> Deva
- 2976, 260, // sct -> Laoo
- 2980, 485, // scu -> Takr
- 2984, 150, // scx -> Grek
- 2988, 10, // sd -> Arab
- 2991, 105, // sd_IN -> Deva
- 2997, 10, // sdb -> Arab
- 3001, 10, // sdf -> Arab
- 3005, 10, // sdg -> Arab
- 3009, 10, // sdh -> Arab
- 3013, 10, // sds -> Arab
- 3017, 100, // sel -> Cyrl
- 3021, 410, // sfm -> Plrd
- 3025, 370, // sga -> Ogam
- 3029, 100, // sgh -> Cyrl
- 3033, 105, // sgj -> Deva
- 3037, 10, // sgr -> Arab
- 3041, 535, // sgt -> Tibt
- 3045, 120, // sgw -> Ethi
- 3049, 10, // sgy -> Arab
- 3053, 10, // shd -> Arab
- 3057, 520, // shi -> Tfng
- 3061, 10, // shm -> Arab
- 3065, 345, // shn -> Mymr
- 3069, 10, // shu -> Arab
- 3073, 10, // shv -> Arab
- 3077, 455, // si -> Sinh
- 3080, 100, // sia -> Cyrl
- 3084, 535, // sip -> Tibt
- 3088, 10, // siy -> Arab
- 3092, 10, // siz -> Arab
- 3096, 100, // sjd -> Cyrl
- 3100, 105, // sjp -> Deva
- 3104, 100, // sjt -> Cyrl
- 3108, 530, // skb -> Thai
- 3112, 105, // skj -> Deva
- 3116, 10, // skr -> Arab
- 3120, 10, // slq -> Arab
- 3124, 575, // smh -> Yiii
- 3128, 435, // smp -> Samr
- 3132, 235, // smu -> Khmr
- 3136, 10, // smy -> Arab
- 3140, 510, // soa -> Tavt
- 3144, 460, // sog -> Sogd
- 3148, 105, // soi -> Deva
- 3152, 530, // sou -> Thai
- 3156, 535, // spt -> Tibt
- 3160, 385, // spv -> Orya
- 3164, 10, // sqo -> Arab
- 3168, 260, // sqq -> Laoo
- 3172, 10, // sqt -> Arab
- 3176, 100, // sr -> Cyrl
- 3179, 465, // srb -> Sora
- 3183, 10, // srh -> Arab
- 3187, 105, // srx -> Deva
- 3191, 10, // srz -> Arab
- 3195, 10, // ssh -> Arab
- 3199, 260, // sss -> Laoo
- 3203, 10, // sts -> Arab
- 3207, 120, // stv -> Ethi
- 3211, 100, // sty -> Cyrl
- 3215, 105, // suz -> Deva
- 3219, 125, // sva -> Geor
- 3223, 10, // swb -> Arab
- 3227, 170, // swi -> Hani
- 3231, 105, // swv -> Deva
- 3235, 475, // syc -> Syrc
- 3239, 45, // syl -> Beng
- 3243, 475, // syn -> Syrc
- 3247, 475, // syr -> Syrc
- 3251, 105, // syw -> Deva
- 3255, 500, // ta -> Taml
- 3258, 100, // tab -> Cyrl
- 3262, 105, // taj -> Deva
- 3266, 480, // tbk -> Tagb
- 3270, 535, // tcn -> Tibt
- 3274, 345, // tco -> Mymr
- 3278, 500, // tcx -> Taml
- 3282, 245, // tcy -> Knda
- 3286, 520, // tda -> Tfng
- 3290, 105, // tdb -> Deva
- 3294, 490, // tdd -> Tale
- 3298, 105, // tdg -> Deva
- 3302, 105, // tdh -> Deva
- 3306, 515, // te -> Telu
- 3309, 205, // tes -> Java
- 3313, 100, // tg -> Cyrl
- 3316, 10, // tg_PK -> Arab
- 3322, 105, // tge -> Deva
- 3326, 535, // tgf -> Tibt
- 3330, 530, // th -> Thai
- 3333, 105, // the -> Deva
- 3337, 105, // thf -> Deva
- 3341, 490, // thi -> Tale
- 3345, 105, // thl -> Deva
- 3349, 530, // thm -> Thai
- 3353, 105, // thq -> Deva
- 3357, 105, // thr -> Deva
- 3361, 105, // ths -> Deva
- 3365, 120, // ti -> Ethi
- 3368, 120, // tig -> Ethi
- 3372, 105, // tij -> Deva
- 3376, 100, // tin -> Cyrl
- 3380, 345, // tjl -> Mymr
- 3384, 10, // tjo -> Arab
- 3388, 105, // tkb -> Deva
- 3392, 10, // tks -> Arab
- 3396, 105, // tkt -> Deva
- 3400, 105, // tmk -> Deva
- 3404, 475, // tmr -> Syrc
- 3408, 60, // tnv -> Cakm
- 3412, 10, // tov -> Arab
- 3416, 235, // tpu -> Khmr
- 3420, 10, // tra -> Arab
- 3424, 185, // trg -> Hebr
- 3428, 10, // trm -> Arab
- 3432, 10, // trw -> Arab
- 3436, 150, // tsd -> Grek
- 3440, 535, // tsj -> Tibt
- 3444, 100, // tt -> Cyrl
- 3447, 260, // tth -> Laoo
- 3451, 260, // tto -> Laoo
- 3455, 530, // tts -> Thai
- 3459, 345, // tvn -> Mymr
- 3463, 105, // twm -> Deva
- 3467, 505, // txg -> Tang
- 3471, 545, // txo -> Toto
- 3475, 510, // tyr -> Tavt
- 3479, 100, // tyv -> Cyrl
- 3483, 100, // ude -> Cyrl
- 3487, 320, // udg -> Mlym
- 3491, 0, // udi -> Aghb
- 3495, 100, // udm -> Cyrl
- 3499, 10, // ug -> Arab
- 3502, 100, // ug_KZ -> Cyrl
- 3508, 100, // ug_MN -> Cyrl
- 3514, 550, // uga -> Ugar
- 3518, 100, // ugh -> Cyrl
- 3522, 530, // ugo -> Thai
- 3526, 100, // uk -> Cyrl
- 3529, 385, // uki -> Orya
- 3533, 100, // ulc -> Cyrl
- 3537, 45, // unr -> Beng
- 3541, 105, // unr_NP -> Deva
- 3548, 45, // unx -> Beng
- 3552, 10, // ur -> Arab
- 3555, 530, // urk -> Thai
- 3559, 10, // ush -> Arab
- 3563, 150, // uum -> Grek
- 3567, 10, // uz_AF -> Arab
- 3573, 100, // uz_CN -> Cyrl
- 3579, 10, // uzs -> Arab
- 3583, 500, // vaa -> Taml
- 3587, 10, // vaf -> Arab
- 3591, 105, // vah -> Deva
- 3595, 555, // vai -> Vaii
- 3599, 105, // vas -> Deva
- 3603, 105, // vav -> Deva
- 3607, 105, // vay -> Deva
- 3611, 10, // vgr -> Arab
- 3615, 245, // vmd -> Knda
- 3619, 10, // vmh -> Arab
- 3623, 120, // wal -> Ethi
- 3627, 10, // wbk -> Arab
- 3631, 515, // wbq -> Telu
- 3635, 105, // wbr -> Deva
- 3639, 10, // wlo -> Arab
- 3643, 105, // wme -> Deva
- 3647, 10, // wne -> Arab
- 3651, 10, // wni -> Arab
- 3655, 130, // wsg -> Gong
- 3659, 10, // wsv -> Arab
- 3663, 105, // wtm -> Deva
- 3667, 175, // wuu -> Hans
- 3671, 100, // xal -> Cyrl
- 3675, 120, // xan -> Ethi
- 3679, 100, // xas -> Cyrl
- 3683, 85, // xco -> Chrs
- 3687, 70, // xcr -> Cari
- 3691, 100, // xdq -> Cyrl
- 3695, 10, // xhe -> Arab
- 3699, 235, // xhm -> Khmr
- 3703, 385, // xis -> Orya
- 3707, 10, // xka -> Arab
- 3711, 10, // xkc -> Arab
- 3715, 10, // xkj -> Arab
- 3719, 10, // xkp -> Arab
- 3723, 285, // xlc -> Lyci
- 3727, 290, // xld -> Lydi
- 3731, 115, // xly -> Elym
- 3735, 125, // xmf -> Geor
- 3739, 300, // xmn -> Mani
- 3743, 315, // xmr -> Merc
- 3747, 350, // xna -> Narb
- 3751, 105, // xnr -> Deva
- 3755, 150, // xpg -> Grek
- 3759, 370, // xpi -> Ogam
- 3763, 100, // xpm -> Cyrl
- 3767, 415, // xpr -> Prti
- 3771, 100, // xrm -> Cyrl
- 3775, 100, // xrn -> Cyrl
- 3779, 440, // xsa -> Sarb
- 3783, 105, // xsr -> Deva
- 3787, 100, // xss -> Cyrl
- 3791, 500, // xub -> Taml
- 3795, 500, // xuj -> Taml
- 3799, 200, // xve -> Ital
- 3803, 10, // xvi -> Arab
- 3807, 100, // xwo -> Cyrl
- 3811, 305, // xzh -> Marc
- 3815, 100, // yai -> Cyrl
- 3819, 105, // ybh -> Deva
- 3823, 105, // ybi -> Deva
- 3827, 10, // ydg -> Arab
- 3831, 320, // yea -> Mlym
- 3835, 150, // yej -> Grek
- 3839, 515, // yeu -> Telu
- 3843, 410, // ygp -> Plrd
- 3847, 185, // yhd -> Hebr
- 3851, 185, // yi -> Hebr
- 3854, 575, // yig -> Yiii
- 3858, 185, // yih -> Hebr
- 3862, 575, // yiv -> Yiii
- 3866, 100, // ykg -> Cyrl
- 3870, 410, // yna -> Plrd
- 3874, 100, // ynk -> Cyrl
- 3878, 210, // yoi -> Jpan
- 3882, 530, // yoy -> Thai
- 3886, 100, // yrk -> Cyrl
- 3890, 575, // ysd -> Yiii
- 3894, 575, // ysn -> Yiii
- 3898, 575, // ysp -> Yiii
- 3902, 100, // ysr -> Cyrl
- 3906, 410, // ysy -> Plrd
- 3910, 185, // yud -> Hebr
- 3914, 180, // yue -> Hant
- 3918, 175, // yue_CN -> Hans
- 3925, 100, // yug -> Cyrl
- 3929, 100, // yux -> Cyrl
- 3933, 410, // ywq -> Plrd
- 3937, 410, // ywu -> Plrd
- 3941, 535, // zau -> Tibt
- 3945, 10, // zba -> Arab
- 3949, 170, // zch -> Hani
- 3953, 10, // zdj -> Arab
- 3957, 170, // zeh -> Hani
- 3961, 520, // zen -> Tfng
- 3965, 170, // zgb -> Hani
- 3969, 520, // zgh -> Tfng
- 3973, 170, // zgm -> Hani
- 3977, 170, // zgn -> Hani
- 3981, 175, // zh -> Hans
- 3984, 180, // zh_AU -> Hant
- 3990, 180, // zh_BN -> Hant
- 3996, 180, // zh_GB -> Hant
- 4002, 180, // zh_GF -> Hant
- 4008, 180, // zh_HK -> Hant
- 4014, 180, // zh_ID -> Hant
- 4020, 180, // zh_MO -> Hant
- 4026, 180, // zh_PA -> Hant
- 4032, 180, // zh_PF -> Hant
- 4038, 180, // zh_PH -> Hant
- 4044, 180, // zh_SR -> Hant
- 4050, 180, // zh_TH -> Hant
- 4056, 180, // zh_TW -> Hant
- 4062, 180, // zh_US -> Hant
- 4068, 180, // zh_VN -> Hant
- 4074, 170, // zhd -> Hani
- 4078, 365, // zhx -> Nshu
- 4082, 100, // zkb -> Cyrl
- 4086, 100, // zko -> Cyrl
- 4090, 240, // zkt -> Kits
- 4094, 100, // zkz -> Cyrl
- 4098, 170, // zlj -> Hani
- 4102, 170, // zln -> Hani
- 4106, 170, // zlq -> Hani
- 4110, 170, // zqe -> Hani
- 4114, 185, // zrp -> Hebr
- 4118, 10, // zum -> Arab
- 4122, 170, // zyg -> Hani
- 4126, 170, // zyn -> Hani
- 4130, 170, // zzj -> Hani
+ 122, 570, // akk -> Xsux
+ 126, 100, // akv -> Cyrl
+ 130, 260, // alk -> Laoo
+ 134, 320, // all -> Mlym
+ 138, 100, // alr -> Cyrl
+ 142, 100, // alt -> Cyrl
+ 146, 120, // alw -> Ethi
+ 150, 120, // am -> Ethi
+ 153, 210, // ams -> Jpan
+ 157, 475, // amw -> Syrc
+ 161, 100, // ani -> Cyrl
+ 165, 105, // anp -> Deva
+ 169, 105, // anr -> Deva
+ 173, 120, // anu -> Ethi
+ 177, 45, // aot -> Beng
+ 181, 10, // apc -> Arab
+ 185, 10, // apd -> Arab
+ 189, 105, // aph -> Deva
+ 193, 100, // aqc -> Cyrl
+ 197, 10, // ar -> Arab
+ 200, 15, // arc -> Armi
+ 204, 10, // arq -> Arab
+ 208, 10, // ars -> Arab
+ 212, 10, // ary -> Arab
+ 216, 10, // arz -> Arab
+ 220, 45, // as -> Beng
+ 223, 450, // ase -> Sgnw
+ 227, 10, // ask -> Arab
+ 231, 10, // atn -> Arab
+ 235, 100, // atv -> Cyrl
+ 239, 10, // auj -> Arab
+ 243, 10, // auz -> Arab
+ 247, 100, // av -> Cyrl
+ 250, 10, // avd -> Arab
+ 254, 10, // avl -> Arab
+ 258, 105, // awa -> Deva
+ 262, 120, // awn -> Ethi
+ 266, 20, // axm -> Armn
+ 270, 10, // ayh -> Arab
+ 274, 10, // ayl -> Arab
+ 278, 10, // ayn -> Arab
+ 282, 10, // ayp -> Arab
+ 286, 10, // az_IQ -> Arab
+ 292, 10, // az_IR -> Arab
+ 298, 100, // az_RU -> Cyrl
+ 304, 10, // azb -> Arab
+ 308, 100, // ba -> Cyrl
+ 311, 10, // bal -> Arab
+ 315, 105, // bap -> Deva
+ 319, 30, // bax -> Bamu
+ 323, 125, // bbl -> Geor
+ 327, 120, // bcq -> Ethi
+ 331, 385, // bdv -> Orya
+ 335, 10, // bdz -> Arab
+ 339, 100, // be -> Cyrl
+ 342, 105, // bee -> Deva
+ 346, 10, // bej -> Arab
+ 350, 105, // bfb -> Deva
+ 354, 500, // bfq -> Taml
+ 358, 10, // bft -> Arab
+ 362, 535, // bfu -> Tibt
+ 366, 385, // bfw -> Orya
+ 370, 105, // bfy -> Deva
+ 374, 105, // bfz -> Deva
+ 378, 100, // bg -> Cyrl
+ 381, 105, // bgc -> Deva
+ 385, 105, // bgd -> Deva
+ 389, 10, // bgn -> Arab
+ 393, 10, // bgp -> Arab
+ 397, 105, // bgq -> Deva
+ 401, 105, // bgw -> Deva
+ 405, 150, // bgx -> Grek
+ 409, 105, // bha -> Deva
+ 413, 105, // bhb -> Deva
+ 417, 105, // bhd -> Deva
+ 421, 10, // bhe -> Arab
+ 425, 100, // bhh -> Cyrl
+ 429, 105, // bhi -> Deva
+ 433, 105, // bhj -> Deva
+ 437, 10, // bhm -> Arab
+ 441, 475, // bhn -> Syrc
+ 445, 105, // bho -> Deva
+ 449, 485, // bht -> Takr
+ 453, 105, // bhu -> Deva
+ 457, 105, // biy -> Deva
+ 461, 475, // bjf -> Syrc
+ 465, 105, // bjj -> Deva
+ 469, 10, // bjm -> Arab
+ 473, 345, // blk -> Mymr
+ 477, 510, // blt -> Tavt
+ 481, 105, // bmj -> Deva
+ 485, 45, // bn -> Beng
+ 488, 105, // bns -> Deva
+ 492, 535, // bo -> Tibt
+ 495, 100, // bph -> Cyrl
+ 499, 105, // bpx -> Deva
+ 503, 45, // bpy -> Beng
+ 507, 10, // bqi -> Arab
+ 511, 105, // bra -> Deva
+ 515, 235, // brb -> Khmr
+ 519, 105, // brd -> Deva
+ 523, 10, // brh -> Arab
+ 527, 10, // brk -> Arab
+ 531, 260, // brv -> Laoo
+ 535, 105, // brx -> Deva
+ 539, 10, // bsh -> Arab
+ 543, 10, // bsk -> Arab
+ 547, 35, // bsq -> Bass
+ 551, 120, // bst -> Ethi
+ 555, 40, // btd -> Batk
+ 559, 40, // btm -> Batk
+ 563, 105, // btv -> Deva
+ 567, 100, // bua -> Cyrl
+ 571, 345, // bwe -> Mymr
+ 575, 100, // bxm -> Cyrl
+ 579, 330, // bxu -> Mong
+ 583, 105, // byh -> Deva
+ 587, 120, // byn -> Ethi
+ 591, 105, // byw -> Deva
+ 595, 530, // bzi -> Thai
+ 599, 530, // cbn -> Thai
+ 603, 60, // ccp -> Cakm
+ 607, 515, // cde -> Telu
+ 611, 105, // cdh -> Deva
+ 615, 155, // cdi -> Gujr
+ 619, 105, // cdj -> Deva
+ 623, 105, // cdm -> Deva
+ 627, 175, // cdo -> Hans
+ 631, 45, // cdz -> Beng
+ 635, 100, // ce -> Cyrl
+ 638, 535, // cgk -> Tibt
+ 642, 10, // chg -> Arab
+ 646, 100, // chm -> Cyrl
+ 650, 80, // chr -> Cher
+ 654, 105, // chx -> Deva
+ 658, 105, // cih -> Deva
+ 662, 10, // cja -> Arab
+ 666, 100, // cji -> Cyrl
+ 670, 75, // cjm -> Cham
+ 674, 175, // cjy -> Hans
+ 678, 10, // ckb -> Arab
+ 682, 100, // ckt -> Cyrl
+ 686, 10, // clh -> Arab
+ 690, 100, // clw -> Cyrl
+ 694, 470, // cmg -> Soyo
+ 698, 535, // cna -> Tibt
+ 702, 175, // cnp -> Hans
+ 706, 530, // cog -> Thai
+ 710, 90, // cop -> Copt
+ 714, 150, // cpg -> Grek
+ 718, 65, // cr -> Cans
+ 721, 100, // crh -> Cyrl
+ 725, 65, // crj -> Cans
+ 729, 65, // crk -> Cans
+ 733, 65, // crl -> Cans
+ 737, 65, // crm -> Cans
+ 741, 345, // csh -> Mymr
+ 745, 175, // csp -> Hans
+ 749, 65, // csw -> Cans
+ 753, 395, // ctd -> Pauc
+ 757, 45, // ctg -> Beng
+ 761, 105, // ctn -> Deva
+ 765, 500, // ctt -> Taml
+ 769, 100, // cu -> Cyrl
+ 772, 255, // cuu -> Lana
+ 776, 100, // cv -> Cyrl
+ 779, 175, // czh -> Hans
+ 783, 185, // czk -> Hebr
+ 787, 105, // daq -> Deva
+ 791, 100, // dar -> Cyrl
+ 795, 10, // dcc -> Arab
+ 799, 100, // ddo -> Cyrl
+ 803, 10, // def -> Arab
+ 807, 10, // deh -> Arab
+ 811, 45, // der -> Beng
+ 815, 105, // dhi -> Deva
+ 819, 155, // dhn -> Gujr
+ 823, 105, // dho -> Deva
+ 827, 105, // dhw -> Deva
+ 831, 535, // dka -> Tibt
+ 835, 100, // dlg -> Cyrl
+ 839, 310, // dmf -> Medf
+ 843, 10, // dmk -> Arab
+ 847, 10, // dml -> Arab
+ 851, 100, // dng -> Cyrl
+ 855, 345, // dnu -> Mymr
+ 859, 345, // dnv -> Mymr
+ 863, 105, // doi -> Deva
+ 867, 120, // dox -> Ethi
+ 871, 535, // dre -> Tibt
+ 875, 105, // drq -> Deva
+ 879, 120, // drs -> Ethi
+ 883, 105, // dry -> Deva
+ 887, 385, // dso -> Orya
+ 891, 105, // dty -> Deva
+ 895, 155, // dub -> Gujr
+ 899, 105, // duh -> Deva
+ 903, 105, // dus -> Deva
+ 907, 525, // dv -> Thaa
+ 910, 385, // dwk -> Orya
+ 914, 105, // dwz -> Deva
+ 918, 535, // dz -> Tibt
+ 921, 535, // dzl -> Tibt
+ 925, 150, // ecr -> Grek
+ 929, 95, // ecy -> Cprt
+ 933, 110, // egy -> Egyp
+ 937, 215, // eky -> Kali
+ 941, 150, // el -> Grek
+ 944, 105, // emg -> Deva
+ 948, 105, // emu -> Deva
+ 952, 100, // enf -> Cyrl
+ 956, 100, // enh -> Cyrl
+ 960, 500, // era -> Taml
+ 964, 135, // esg -> Gonm
+ 968, 10, // esh -> Arab
+ 972, 200, // ett -> Ital
+ 976, 100, // eve -> Cyrl
+ 980, 100, // evn -> Cyrl
+ 984, 10, // fa -> Arab
+ 987, 10, // fay -> Arab
+ 991, 10, // faz -> Arab
+ 995, 10, // fia -> Arab
+ 999, 105, // fmu -> Deva
+ 1003, 10, // fub -> Arab
+ 1007, 175, // gan -> Hans
+ 1011, 385, // gaq -> Orya
+ 1015, 155, // gas -> Gujr
+ 1019, 515, // gau -> Telu
+ 1023, 385, // gbj -> Orya
+ 1027, 105, // gbk -> Deva
+ 1031, 155, // gbl -> Gujr
+ 1035, 105, // gbm -> Deva
+ 1039, 10, // gbz -> Arab
+ 1043, 385, // gdb -> Orya
+ 1047, 100, // gdo -> Cyrl
+ 1051, 105, // gdx -> Deva
+ 1055, 120, // gez -> Ethi
+ 1059, 10, // ggg -> Arab
+ 1063, 10, // gha -> Arab
+ 1067, 105, // ghe -> Deva
+ 1071, 10, // ghr -> Arab
+ 1075, 535, // ght -> Tibt
+ 1079, 10, // gig -> Arab
+ 1083, 100, // gin -> Cyrl
+ 1087, 10, // gjk -> Arab
+ 1091, 10, // gju -> Arab
+ 1095, 100, // gld -> Cyrl
+ 1099, 10, // glh -> Arab
+ 1103, 10, // glk -> Arab
+ 1107, 120, // gmv -> Ethi
+ 1111, 275, // gmy -> Linb
+ 1115, 535, // goe -> Tibt
+ 1119, 120, // gof -> Ethi
+ 1123, 105, // gok -> Deva
+ 1127, 105, // gom -> Deva
+ 1131, 515, // gon -> Telu
+ 1135, 140, // got -> Goth
+ 1139, 105, // gra -> Deva
+ 1143, 95, // grc -> Cprt
+ 1147, 45, // grt -> Beng
+ 1151, 120, // gru -> Ethi
+ 1155, 155, // gu -> Gujr
+ 1158, 105, // gvr -> Deva
+ 1162, 10, // gwc -> Arab
+ 1166, 10, // gwf -> Arab
+ 1170, 10, // gwt -> Arab
+ 1174, 105, // gyo -> Deva
+ 1178, 10, // gzi -> Arab
+ 1182, 10, // ha_CM -> Arab
+ 1188, 10, // ha_SD -> Arab
+ 1194, 10, // hac -> Arab
+ 1198, 175, // hak -> Hans
+ 1202, 120, // har -> Ethi
+ 1206, 10, // haz -> Arab
+ 1210, 185, // hbo -> Hebr
+ 1214, 120, // hdy -> Ethi
+ 1218, 185, // he -> Hebr
+ 1221, 105, // hi -> Deva
+ 1224, 485, // hii -> Takr
+ 1228, 570, // hit -> Xsux
+ 1232, 10, // hkh -> Arab
+ 1236, 105, // hlb -> Deva
+ 1240, 190, // hlu -> Hluw
+ 1244, 410, // hmd -> Plrd
+ 1248, 50, // hmj -> Bopo
+ 1252, 50, // hmq -> Bopo
+ 1256, 10, // hnd -> Arab
+ 1260, 105, // hne -> Deva
+ 1264, 195, // hnj -> Hmnp
+ 1268, 260, // hnj_AU -> Laoo
+ 1275, 260, // hnj_CN -> Laoo
+ 1282, 260, // hnj_FR -> Laoo
+ 1289, 260, // hnj_GF -> Laoo
+ 1296, 260, // hnj_LA -> Laoo
+ 1303, 260, // hnj_MM -> Laoo
+ 1310, 260, // hnj_SR -> Laoo
+ 1317, 260, // hnj_TH -> Laoo
+ 1324, 260, // hnj_VN -> Laoo
+ 1331, 10, // hno -> Arab
+ 1335, 105, // hoc -> Deva
+ 1339, 10, // hoh -> Arab
+ 1343, 105, // hoj -> Deva
+ 1347, 170, // how -> Hani
+ 1351, 105, // hoy -> Deva
+ 1355, 345, // hpo -> Mymr
+ 1359, 475, // hrt -> Syrc
+ 1363, 10, // hrz -> Arab
+ 1367, 175, // hsn -> Hans
+ 1371, 10, // hss -> Arab
+ 1375, 570, // htx -> Xsux
+ 1379, 105, // hut -> Deva
+ 1383, 185, // huy -> Hebr
+ 1387, 100, // huz -> Cyrl
+ 1391, 20, // hy -> Armn
+ 1394, 20, // hyw -> Armn
+ 1398, 575, // ii -> Yiii
+ 1401, 285, // imy -> Lyci
+ 1405, 100, // inh -> Cyrl
+ 1409, 345, // int -> Mymr
+ 1413, 120, // ior -> Ethi
+ 1417, 500, // iru -> Taml
+ 1421, 10, // isk -> Arab
+ 1425, 185, // itk -> Hebr
+ 1429, 100, // itl -> Cyrl
+ 1433, 65, // iu -> Cans
+ 1436, 185, // iw -> Hebr
+ 1439, 210, // ja -> Jpan
+ 1442, 10, // jad -> Arab
+ 1446, 10, // jat -> Arab
+ 1450, 185, // jbe -> Hebr
+ 1454, 10, // jbn -> Arab
+ 1458, 100, // jct -> Cyrl
+ 1462, 535, // jda -> Tibt
+ 1466, 10, // jdg -> Arab
+ 1470, 100, // jdt -> Cyrl
+ 1474, 105, // jee -> Deva
+ 1478, 125, // jge -> Geor
+ 1482, 165, // jje -> Hang
+ 1486, 345, // jkm -> Mymr
+ 1490, 105, // jml -> Deva
+ 1494, 485, // jna -> Takr
+ 1498, 10, // jnd -> Arab
+ 1502, 105, // jnl -> Deva
+ 1506, 105, // jns -> Deva
+ 1510, 10, // jog -> Arab
+ 1514, 185, // jpa -> Hebr
+ 1518, 185, // jpr -> Hebr
+ 1522, 185, // jrb -> Hebr
+ 1526, 10, // jrb_MA -> Arab
+ 1533, 105, // jul -> Deva
+ 1537, 385, // jun -> Orya
+ 1541, 385, // juy -> Orya
+ 1545, 535, // jya -> Tibt
+ 1549, 185, // jye -> Hebr
+ 1553, 125, // ka -> Geor
+ 1556, 100, // kaa -> Cyrl
+ 1560, 100, // kap -> Cyrl
+ 1564, 225, // kaw -> Kawi
+ 1568, 100, // kbd -> Cyrl
+ 1572, 10, // kbu -> Arab
+ 1576, 10, // kby -> Arab
+ 1580, 100, // kca -> Cyrl
+ 1584, 45, // kdq -> Beng
+ 1588, 530, // kdt -> Thai
+ 1592, 100, // ket -> Cyrl
+ 1596, 105, // kex -> Deva
+ 1600, 515, // key -> Telu
+ 1604, 245, // kfa -> Knda
+ 1608, 105, // kfb -> Deva
+ 1612, 515, // kfc -> Telu
+ 1616, 245, // kfd -> Knda
+ 1620, 500, // kfe -> Taml
+ 1624, 320, // kfh -> Mlym
+ 1628, 500, // kfi -> Taml
+ 1632, 105, // kfk -> Deva
+ 1636, 10, // kfm -> Arab
+ 1640, 105, // kfp -> Deva
+ 1644, 105, // kfq -> Deva
+ 1648, 105, // kfr -> Deva
+ 1652, 105, // kfs -> Deva
+ 1656, 105, // kfx -> Deva
+ 1660, 105, // kfy -> Deva
+ 1664, 105, // kgj -> Deva
+ 1668, 105, // kgy -> Deva
+ 1672, 495, // khb -> Talu
+ 1676, 530, // khf -> Thai
+ 1680, 535, // khg -> Tibt
+ 1684, 105, // khn -> Deva
+ 1688, 345, // kht -> Mymr
+ 1692, 100, // khv -> Cyrl
+ 1696, 10, // khw -> Arab
+ 1700, 105, // kif -> Deva
+ 1704, 100, // kim -> Cyrl
+ 1708, 105, // kip -> Deva
+ 1712, 260, // kjg -> Laoo
+ 1716, 100, // kjh -> Cyrl
+ 1720, 105, // kjl -> Deva
+ 1724, 105, // kjo -> Deva
+ 1728, 345, // kjp -> Mymr
+ 1732, 530, // kjt -> Thai
+ 1736, 100, // kk -> Cyrl
+ 1739, 10, // kk_AF -> Arab
+ 1745, 10, // kk_CN -> Arab
+ 1751, 10, // kk_IR -> Arab
+ 1757, 10, // kk_MN -> Arab
+ 1763, 535, // kkf -> Tibt
+ 1767, 255, // kkh -> Lana
+ 1771, 105, // kkt -> Deva
+ 1775, 105, // kle -> Deva
+ 1779, 10, // klj -> Arab
+ 1783, 105, // klr -> Deva
+ 1787, 235, // km -> Khmr
+ 1790, 105, // kmj -> Deva
+ 1794, 10, // kmz -> Arab
+ 1798, 245, // kn -> Knda
+ 1801, 250, // ko -> Kore
+ 1804, 100, // koi -> Cyrl
+ 1808, 105, // kok -> Deva
+ 1812, 100, // kpt -> Cyrl
+ 1816, 100, // kpy -> Cyrl
+ 1820, 475, // kqd -> Syrc
+ 1824, 120, // kqy -> Ethi
+ 1828, 105, // kra -> Deva
+ 1832, 100, // krc -> Cyrl
+ 1836, 100, // krk -> Cyrl
+ 1840, 235, // krr -> Khmr
+ 1844, 105, // kru -> Deva
+ 1848, 235, // krv -> Khmr
+ 1852, 10, // ks -> Arab
+ 1855, 345, // ksu -> Mymr
+ 1859, 345, // ksw -> Mymr
+ 1863, 105, // ksz -> Deva
+ 1867, 120, // ktb -> Ethi
+ 1871, 10, // ktl -> Arab
+ 1875, 410, // ktp -> Plrd
+ 1879, 10, // ku_IR -> Arab
+ 1885, 10, // ku_LB -> Arab
+ 1891, 260, // kuf -> Laoo
+ 1895, 100, // kum -> Cyrl
+ 1899, 100, // kv -> Cyrl
+ 1902, 100, // kva -> Cyrl
+ 1906, 345, // kvq -> Mymr
+ 1910, 345, // kvt -> Mymr
+ 1914, 10, // kvx -> Arab
+ 1918, 215, // kvy -> Kali
+ 1922, 345, // kxf -> Mymr
+ 1926, 345, // kxk -> Mymr
+ 1930, 530, // kxm -> Thai
+ 1934, 10, // kxp -> Arab
+ 1938, 100, // ky -> Cyrl
+ 1941, 10, // ky_CN -> Arab
+ 1947, 215, // kyu -> Kali
+ 1951, 105, // kyv -> Deva
+ 1955, 105, // kyw -> Deva
+ 1959, 270, // lab -> Lina
+ 1963, 185, // lad -> Hebr
+ 1967, 105, // lae -> Deva
+ 1971, 10, // lah -> Arab
+ 1975, 280, // lbc -> Lisu
+ 1979, 100, // lbe -> Cyrl
+ 1983, 105, // lbf -> Deva
+ 1987, 535, // lbj -> Tibt
+ 1991, 105, // lbm -> Deva
+ 1995, 260, // lbo -> Laoo
+ 1999, 105, // lbr -> Deva
+ 2003, 530, // lcp -> Thai
+ 2007, 265, // lep -> Lepc
+ 2011, 100, // lez -> Cyrl
+ 2015, 105, // lhm -> Deva
+ 2019, 475, // lhs -> Syrc
+ 2023, 105, // lif -> Deva
+ 2027, 280, // lis -> Lisu
+ 2031, 535, // lkh -> Tibt
+ 2035, 10, // lki -> Arab
+ 2039, 105, // lmh -> Deva
+ 2043, 515, // lmn -> Telu
+ 2047, 260, // lo -> Laoo
+ 2050, 105, // loy -> Deva
+ 2054, 410, // lpo -> Plrd
+ 2058, 10, // lrc -> Arab
+ 2062, 10, // lrk -> Arab
+ 2066, 10, // lrl -> Arab
+ 2070, 10, // lsa -> Arab
+ 2074, 185, // lsd -> Hebr
+ 2078, 10, // lss -> Arab
+ 2082, 535, // luk -> Tibt
+ 2086, 105, // luu -> Deva
+ 2090, 10, // luv -> Arab
+ 2094, 10, // luz -> Arab
+ 2098, 530, // lwl -> Thai
+ 2102, 530, // lwm -> Thai
+ 2106, 535, // lya -> Tibt
+ 2110, 175, // lzh -> Hans
+ 2114, 105, // mag -> Deva
+ 2118, 105, // mai -> Deva
+ 2122, 360, // man_GN -> Nkoo
+ 2129, 10, // mby -> Arab
+ 2133, 10, // mde -> Arab
+ 2137, 100, // mdf -> Cyrl
+ 2141, 120, // mdx -> Ethi
+ 2145, 120, // mdy -> Ethi
+ 2149, 10, // mfa -> Arab
+ 2153, 10, // mfi -> Arab
+ 2157, 105, // mgp -> Deva
+ 2161, 10, // mhj -> Arab
+ 2165, 295, // mid -> Mand
+ 2169, 105, // mjl -> Deva
+ 2173, 320, // mjq -> Mlym
+ 2177, 320, // mjr -> Mlym
+ 2181, 105, // mjt -> Deva
+ 2185, 515, // mju -> Telu
+ 2189, 320, // mjv -> Mlym
+ 2193, 105, // mjz -> Deva
+ 2197, 100, // mk -> Cyrl
+ 2200, 105, // mkb -> Deva
+ 2204, 105, // mke -> Deva
+ 2208, 10, // mki -> Arab
+ 2212, 530, // mkm -> Thai
+ 2216, 320, // ml -> Mlym
+ 2219, 530, // mlf -> Thai
+ 2223, 100, // mn -> Cyrl
+ 2226, 330, // mn_CN -> Mong
+ 2232, 45, // mni -> Beng
+ 2236, 10, // mnj -> Arab
+ 2240, 100, // mns -> Cyrl
+ 2244, 345, // mnw -> Mymr
+ 2248, 530, // mpz -> Thai
+ 2252, 105, // mr -> Deva
+ 2255, 530, // mra -> Thai
+ 2259, 105, // mrd -> Deva
+ 2263, 100, // mrj -> Cyrl
+ 2267, 335, // mro -> Mroo
+ 2271, 105, // mrr -> Deva
+ 2275, 10, // ms_CC -> Arab
+ 2281, 100, // mtm -> Cyrl
+ 2285, 105, // mtr -> Deva
+ 2289, 100, // mud -> Cyrl
+ 2293, 535, // muk -> Tibt
+ 2297, 105, // mut -> Deva
+ 2301, 500, // muv -> Taml
+ 2305, 120, // muz -> Ethi
+ 2309, 330, // mvf -> Mong
+ 2313, 10, // mvy -> Arab
+ 2317, 120, // mvz -> Ethi
+ 2321, 105, // mwr -> Deva
+ 2325, 345, // mwt -> Mymr
+ 2329, 195, // mww -> Hmnp
+ 2333, 345, // my -> Mymr
+ 2336, 120, // mym -> Ethi
+ 2340, 100, // myv -> Cyrl
+ 2344, 295, // myz -> Mand
+ 2348, 10, // mzn -> Arab
+ 2352, 175, // nan -> Hans
+ 2356, 105, // nao -> Deva
+ 2360, 105, // ncd -> Deva
+ 2364, 260, // ncq -> Laoo
+ 2368, 100, // ndf -> Cyrl
+ 2372, 105, // ne -> Deva
+ 2375, 100, // neg -> Cyrl
+ 2379, 535, // neh -> Tibt
+ 2383, 570, // nei -> Xsux
+ 2387, 105, // new -> Deva
+ 2391, 260, // ngt -> Laoo
+ 2395, 100, // nio -> Cyrl
+ 2399, 515, // nit -> Telu
+ 2403, 100, // niv -> Cyrl
+ 2407, 10, // nli -> Arab
+ 2411, 10, // nlm -> Arab
+ 2415, 105, // nlx -> Deva
+ 2419, 105, // nmm -> Deva
+ 2423, 560, // nnp -> Wcho
+ 2427, 255, // nod -> Lana
+ 2431, 105, // noe -> Deva
+ 2435, 100, // nog -> Cyrl
+ 2439, 105, // noi -> Deva
+ 2443, 430, // non -> Runr
+ 2447, 575, // nos -> Yiii
+ 2451, 535, // npb -> Tibt
+ 2455, 360, // nqo -> Nkoo
+ 2459, 575, // nsd -> Yiii
+ 2463, 575, // nsf -> Yiii
+ 2467, 65, // nsk -> Cans
+ 2471, 540, // nst -> Tnsa
+ 2475, 575, // nsv -> Yiii
+ 2479, 575, // nty -> Yiii
+ 2483, 10, // ntz -> Arab
+ 2487, 355, // nwc -> Newa
+ 2491, 105, // nwx -> Deva
+ 2495, 530, // nyl -> Thai
+ 2499, 10, // nyq -> Arab
+ 2503, 100, // oaa -> Cyrl
+ 2507, 100, // oac -> Cyrl
+ 2511, 475, // oar -> Syrc
+ 2515, 125, // oav -> Geor
+ 2519, 405, // obm -> Phnx
+ 2523, 345, // obr -> Mymr
+ 2527, 10, // odk -> Arab
+ 2531, 570, // oht -> Xsux
+ 2535, 65, // oj -> Cans
+ 2538, 65, // ojs -> Cans
+ 2542, 165, // okm -> Hang
+ 2546, 170, // oko -> Hani
+ 2550, 235, // okz -> Khmr
+ 2554, 105, // ola -> Deva
+ 2558, 535, // ole -> Tibt
+ 2562, 100, // omk -> Cyrl
+ 2566, 340, // omp -> Mtei
+ 2570, 325, // omr -> Modi
+ 2574, 105, // oon -> Deva
+ 2578, 385, // or -> Orya
+ 2581, 515, // ort -> Telu
+ 2585, 10, // oru -> Arab
+ 2589, 100, // orv -> Cyrl
+ 2593, 100, // os -> Cyrl
+ 2596, 390, // osa -> Osge
+ 2600, 200, // osc -> Ital
+ 2604, 205, // osi -> Java
+ 2608, 10, // ota -> Arab
+ 2612, 535, // otb -> Tibt
+ 2616, 380, // otk -> Orkh
+ 2620, 145, // oty -> Gran
+ 2624, 160, // pa -> Guru
+ 2627, 10, // pa_PK -> Arab
+ 2633, 400, // pal -> Phli
+ 2637, 100, // paq -> Cyrl
+ 2641, 10, // pbt -> Arab
+ 2645, 235, // pcb -> Khmr
+ 2649, 345, // pce -> Mymr
+ 2653, 320, // pcf -> Mlym
+ 2657, 320, // pcg -> Mlym
+ 2661, 105, // pch -> Deva
+ 2665, 105, // pci -> Deva
+ 2669, 515, // pcj -> Telu
+ 2673, 385, // peg -> Orya
+ 2677, 565, // peo -> Xpeo
+ 2681, 230, // pgd -> Khar
+ 2685, 105, // pgg -> Deva
+ 2689, 370, // pgl -> Ogam
+ 2693, 200, // pgn -> Ital
+ 2697, 105, // phd -> Deva
+ 2701, 345, // phk -> Mymr
+ 2705, 10, // phl -> Arab
+ 2709, 405, // phn -> Phnx
+ 2713, 260, // pho -> Laoo
+ 2717, 10, // phr -> Arab
+ 2721, 530, // pht -> Thai
+ 2725, 10, // phv -> Arab
+ 2729, 105, // phw -> Deva
+ 2733, 455, // pi -> Sinh
+ 2736, 55, // pka -> Brah
+ 2740, 320, // pkr -> Mlym
+ 2744, 10, // plk -> Arab
+ 2748, 345, // pll -> Mymr
+ 2752, 55, // pmh -> Brah
+ 2756, 150, // pnt -> Grek
+ 2760, 230, // pra -> Khar
+ 2764, 10, // prc -> Arab
+ 2768, 10, // prd -> Arab
+ 2772, 530, // prt -> Thai
+ 2776, 10, // prx -> Arab
+ 2780, 10, // ps -> Arab
+ 2783, 10, // psh -> Arab
+ 2787, 10, // psi -> Arab
+ 2791, 10, // pst -> Arab
+ 2795, 105, // pum -> Deva
+ 2799, 345, // pwo -> Mymr
+ 2803, 105, // pwr -> Deva
+ 2807, 530, // pww -> Thai
+ 2811, 345, // pyx -> Mymr
+ 2815, 10, // qxq -> Arab
+ 2819, 105, // raa -> Deva
+ 2823, 105, // rab -> Deva
+ 2827, 105, // raf -> Deva
+ 2831, 45, // rah -> Beng
+ 2835, 105, // raj -> Deva
+ 2839, 105, // rav -> Deva
+ 2843, 345, // rbb -> Mymr
+ 2847, 10, // rdb -> Arab
+ 2851, 385, // rei -> Orya
+ 2855, 425, // rhg -> Rohg
+ 2859, 105, // rji -> Deva
+ 2863, 105, // rjs -> Deva
+ 2867, 235, // rka -> Khmr
+ 2871, 345, // rki -> Mymr
+ 2875, 45, // rkt -> Beng
+ 2879, 20, // rmi -> Armn
+ 2883, 10, // rmt -> Arab
+ 2887, 345, // rmz -> Mymr
+ 2891, 100, // rom_BG -> Cyrl
+ 2898, 100, // rsk -> Cyrl
+ 2902, 105, // rtw -> Deva
+ 2906, 100, // ru -> Cyrl
+ 2909, 100, // rue -> Cyrl
+ 2913, 100, // rut -> Cyrl
+ 2917, 105, // rwr -> Deva
+ 2921, 220, // ryu -> Kana
+ 2925, 105, // sa -> Deva
+ 2928, 100, // sah -> Cyrl
+ 2932, 435, // sam -> Samr
+ 2936, 375, // sat -> Olck
+ 2940, 445, // saz -> Saur
+ 2944, 10, // sbn -> Arab
+ 2948, 535, // sbu -> Tibt
+ 2952, 105, // sck -> Deva
+ 2956, 10, // scl -> Arab
+ 2960, 10, // scl_IN -> Arab
+ 2967, 105, // scp -> Deva
+ 2971, 260, // sct -> Laoo
+ 2975, 485, // scu -> Takr
+ 2979, 150, // scx -> Grek
+ 2983, 10, // sd -> Arab
+ 2986, 105, // sd_IN -> Deva
+ 2992, 10, // sdb -> Arab
+ 2996, 10, // sdf -> Arab
+ 3000, 10, // sdg -> Arab
+ 3004, 10, // sdh -> Arab
+ 3008, 10, // sds -> Arab
+ 3012, 100, // sel -> Cyrl
+ 3016, 410, // sfm -> Plrd
+ 3020, 370, // sga -> Ogam
+ 3024, 100, // sgh -> Cyrl
+ 3028, 105, // sgj -> Deva
+ 3032, 10, // sgr -> Arab
+ 3036, 535, // sgt -> Tibt
+ 3040, 120, // sgw -> Ethi
+ 3044, 10, // sgy -> Arab
+ 3048, 10, // shd -> Arab
+ 3052, 520, // shi -> Tfng
+ 3056, 10, // shm -> Arab
+ 3060, 345, // shn -> Mymr
+ 3064, 10, // shu -> Arab
+ 3068, 10, // shv -> Arab
+ 3072, 455, // si -> Sinh
+ 3075, 100, // sia -> Cyrl
+ 3079, 535, // sip -> Tibt
+ 3083, 10, // siy -> Arab
+ 3087, 10, // siz -> Arab
+ 3091, 100, // sjd -> Cyrl
+ 3095, 105, // sjp -> Deva
+ 3099, 100, // sjt -> Cyrl
+ 3103, 530, // skb -> Thai
+ 3107, 105, // skj -> Deva
+ 3111, 10, // skr -> Arab
+ 3115, 575, // smh -> Yiii
+ 3119, 435, // smp -> Samr
+ 3123, 235, // smu -> Khmr
+ 3127, 10, // smy -> Arab
+ 3131, 510, // soa -> Tavt
+ 3135, 460, // sog -> Sogd
+ 3139, 105, // soi -> Deva
+ 3143, 530, // sou -> Thai
+ 3147, 535, // spt -> Tibt
+ 3151, 385, // spv -> Orya
+ 3155, 10, // sqo -> Arab
+ 3159, 260, // sqq -> Laoo
+ 3163, 10, // sqt -> Arab
+ 3167, 100, // sr -> Cyrl
+ 3170, 465, // srb -> Sora
+ 3174, 10, // srh -> Arab
+ 3178, 105, // srx -> Deva
+ 3182, 10, // srz -> Arab
+ 3186, 10, // ssh -> Arab
+ 3190, 260, // sss -> Laoo
+ 3194, 10, // sts -> Arab
+ 3198, 120, // stv -> Ethi
+ 3202, 100, // sty -> Cyrl
+ 3206, 105, // suz -> Deva
+ 3210, 125, // sva -> Geor
+ 3214, 10, // swb -> Arab
+ 3218, 170, // swi -> Hani
+ 3222, 105, // swv -> Deva
+ 3226, 475, // syc -> Syrc
+ 3230, 45, // syl -> Beng
+ 3234, 475, // syn -> Syrc
+ 3238, 475, // syr -> Syrc
+ 3242, 105, // syw -> Deva
+ 3246, 500, // ta -> Taml
+ 3249, 100, // tab -> Cyrl
+ 3253, 105, // taj -> Deva
+ 3257, 480, // tbk -> Tagb
+ 3261, 535, // tcn -> Tibt
+ 3265, 345, // tco -> Mymr
+ 3269, 500, // tcx -> Taml
+ 3273, 245, // tcy -> Knda
+ 3277, 520, // tda -> Tfng
+ 3281, 105, // tdb -> Deva
+ 3285, 490, // tdd -> Tale
+ 3289, 105, // tdg -> Deva
+ 3293, 105, // tdh -> Deva
+ 3297, 515, // te -> Telu
+ 3300, 205, // tes -> Java
+ 3304, 100, // tg -> Cyrl
+ 3307, 10, // tg_PK -> Arab
+ 3313, 105, // tge -> Deva
+ 3317, 535, // tgf -> Tibt
+ 3321, 530, // th -> Thai
+ 3324, 105, // the -> Deva
+ 3328, 105, // thf -> Deva
+ 3332, 490, // thi -> Tale
+ 3336, 105, // thl -> Deva
+ 3340, 530, // thm -> Thai
+ 3344, 105, // thq -> Deva
+ 3348, 105, // thr -> Deva
+ 3352, 105, // ths -> Deva
+ 3356, 120, // ti -> Ethi
+ 3359, 120, // tig -> Ethi
+ 3363, 105, // tij -> Deva
+ 3367, 100, // tin -> Cyrl
+ 3371, 345, // tjl -> Mymr
+ 3375, 10, // tjo -> Arab
+ 3379, 105, // tkb -> Deva
+ 3383, 10, // tks -> Arab
+ 3387, 105, // tkt -> Deva
+ 3391, 475, // tmr -> Syrc
+ 3395, 60, // tnv -> Cakm
+ 3399, 10, // tov -> Arab
+ 3403, 235, // tpu -> Khmr
+ 3407, 10, // tra -> Arab
+ 3411, 185, // trg -> Hebr
+ 3415, 10, // trm -> Arab
+ 3419, 10, // trw -> Arab
+ 3423, 150, // tsd -> Grek
+ 3427, 535, // tsj -> Tibt
+ 3431, 100, // tt -> Cyrl
+ 3434, 260, // tth -> Laoo
+ 3438, 260, // tto -> Laoo
+ 3442, 530, // tts -> Thai
+ 3446, 345, // tvn -> Mymr
+ 3450, 105, // twm -> Deva
+ 3454, 505, // txg -> Tang
+ 3458, 545, // txo -> Toto
+ 3462, 510, // tyr -> Tavt
+ 3466, 100, // tyv -> Cyrl
+ 3470, 100, // ude -> Cyrl
+ 3474, 320, // udg -> Mlym
+ 3478, 0, // udi -> Aghb
+ 3482, 100, // udm -> Cyrl
+ 3486, 10, // ug -> Arab
+ 3489, 100, // ug_KZ -> Cyrl
+ 3495, 100, // ug_MN -> Cyrl
+ 3501, 550, // uga -> Ugar
+ 3505, 100, // ugh -> Cyrl
+ 3509, 530, // ugo -> Thai
+ 3513, 100, // uk -> Cyrl
+ 3516, 385, // uki -> Orya
+ 3520, 100, // ulc -> Cyrl
+ 3524, 45, // unr -> Beng
+ 3528, 105, // unr_NP -> Deva
+ 3535, 45, // unx -> Beng
+ 3539, 10, // ur -> Arab
+ 3542, 530, // urk -> Thai
+ 3546, 10, // ush -> Arab
+ 3550, 150, // uum -> Grek
+ 3554, 10, // uz_AF -> Arab
+ 3560, 100, // uz_CN -> Cyrl
+ 3566, 10, // uzs -> Arab
+ 3570, 500, // vaa -> Taml
+ 3574, 10, // vaf -> Arab
+ 3578, 105, // vah -> Deva
+ 3582, 555, // vai -> Vaii
+ 3586, 105, // vas -> Deva
+ 3590, 105, // vav -> Deva
+ 3594, 105, // vay -> Deva
+ 3598, 10, // vgr -> Arab
+ 3602, 245, // vmd -> Knda
+ 3606, 10, // vmh -> Arab
+ 3610, 120, // wal -> Ethi
+ 3614, 10, // wbk -> Arab
+ 3618, 515, // wbq -> Telu
+ 3622, 105, // wbr -> Deva
+ 3626, 10, // wlo -> Arab
+ 3630, 105, // wme -> Deva
+ 3634, 10, // wne -> Arab
+ 3638, 10, // wni -> Arab
+ 3642, 130, // wsg -> Gong
+ 3646, 10, // wsv -> Arab
+ 3650, 105, // wtm -> Deva
+ 3654, 175, // wuu -> Hans
+ 3658, 100, // xal -> Cyrl
+ 3662, 120, // xan -> Ethi
+ 3666, 100, // xas -> Cyrl
+ 3670, 85, // xco -> Chrs
+ 3674, 70, // xcr -> Cari
+ 3678, 100, // xdq -> Cyrl
+ 3682, 10, // xhe -> Arab
+ 3686, 235, // xhm -> Khmr
+ 3690, 385, // xis -> Orya
+ 3694, 10, // xka -> Arab
+ 3698, 10, // xkc -> Arab
+ 3702, 10, // xkj -> Arab
+ 3706, 10, // xkp -> Arab
+ 3710, 285, // xlc -> Lyci
+ 3714, 290, // xld -> Lydi
+ 3718, 115, // xly -> Elym
+ 3722, 125, // xmf -> Geor
+ 3726, 300, // xmn -> Mani
+ 3730, 315, // xmr -> Merc
+ 3734, 350, // xna -> Narb
+ 3738, 105, // xnr -> Deva
+ 3742, 150, // xpg -> Grek
+ 3746, 370, // xpi -> Ogam
+ 3750, 100, // xpm -> Cyrl
+ 3754, 415, // xpr -> Prti
+ 3758, 100, // xrm -> Cyrl
+ 3762, 100, // xrn -> Cyrl
+ 3766, 440, // xsa -> Sarb
+ 3770, 105, // xsr -> Deva
+ 3774, 500, // xub -> Taml
+ 3778, 500, // xuj -> Taml
+ 3782, 200, // xve -> Ital
+ 3786, 10, // xvi -> Arab
+ 3790, 100, // xwo -> Cyrl
+ 3794, 305, // xzh -> Marc
+ 3798, 100, // yai -> Cyrl
+ 3802, 105, // ybh -> Deva
+ 3806, 105, // ybi -> Deva
+ 3810, 10, // ydg -> Arab
+ 3814, 320, // yea -> Mlym
+ 3818, 150, // yej -> Grek
+ 3822, 515, // yeu -> Telu
+ 3826, 410, // ygp -> Plrd
+ 3830, 185, // yhd -> Hebr
+ 3834, 185, // yi -> Hebr
+ 3837, 575, // yig -> Yiii
+ 3841, 185, // yih -> Hebr
+ 3845, 575, // yiv -> Yiii
+ 3849, 100, // ykg -> Cyrl
+ 3853, 410, // yna -> Plrd
+ 3857, 100, // ynk -> Cyrl
+ 3861, 210, // yoi -> Jpan
+ 3865, 530, // yoy -> Thai
+ 3869, 100, // yrk -> Cyrl
+ 3873, 575, // ysd -> Yiii
+ 3877, 575, // ysn -> Yiii
+ 3881, 575, // ysp -> Yiii
+ 3885, 100, // ysr -> Cyrl
+ 3889, 410, // ysy -> Plrd
+ 3893, 185, // yud -> Hebr
+ 3897, 180, // yue -> Hant
+ 3901, 175, // yue_CN -> Hans
+ 3908, 100, // yug -> Cyrl
+ 3912, 100, // yux -> Cyrl
+ 3916, 410, // ywq -> Plrd
+ 3920, 410, // ywu -> Plrd
+ 3924, 535, // zau -> Tibt
+ 3928, 10, // zba -> Arab
+ 3932, 170, // zch -> Hani
+ 3936, 10, // zdj -> Arab
+ 3940, 170, // zeh -> Hani
+ 3944, 520, // zen -> Tfng
+ 3948, 170, // zgb -> Hani
+ 3952, 520, // zgh -> Tfng
+ 3956, 170, // zgm -> Hani
+ 3960, 170, // zgn -> Hani
+ 3964, 175, // zh -> Hans
+ 3967, 180, // zh_AU -> Hant
+ 3973, 180, // zh_BN -> Hant
+ 3979, 180, // zh_GB -> Hant
+ 3985, 180, // zh_GF -> Hant
+ 3991, 180, // zh_HK -> Hant
+ 3997, 180, // zh_ID -> Hant
+ 4003, 180, // zh_MO -> Hant
+ 4009, 180, // zh_PA -> Hant
+ 4015, 180, // zh_PF -> Hant
+ 4021, 180, // zh_PH -> Hant
+ 4027, 180, // zh_SR -> Hant
+ 4033, 180, // zh_TH -> Hant
+ 4039, 180, // zh_TW -> Hant
+ 4045, 180, // zh_US -> Hant
+ 4051, 180, // zh_VN -> Hant
+ 4057, 170, // zhd -> Hani
+ 4061, 365, // zhx -> Nshu
+ 4065, 100, // zko -> Cyrl
+ 4069, 240, // zkt -> Kits
+ 4073, 100, // zkz -> Cyrl
+ 4077, 170, // zlj -> Hani
+ 4081, 170, // zln -> Hani
+ 4085, 170, // zlq -> Hani
+ 4089, 170, // zqe -> Hani
+ 4093, 185, // zrp -> Hebr
+ 4097, 10, // zum -> Arab
+ 4101, 170, // zyg -> Hani
+ 4105, 170, // zyn -> Hani
+ 4109, 170, // zzj -> Hani
};
//======================================================================
diff --git a/icu4c/source/common/localematcher.cpp b/icu4c/source/common/localematcher.cpp
index 6fc578af1..8aae596bc 100644
--- a/icu4c/source/common/localematcher.cpp
+++ b/icu4c/source/common/localematcher.cpp
@@ -4,6 +4,8 @@
// localematcher.cpp
// created: 2019may08 Markus W. Scherer
+#include <optional>
+
#include "unicode/utypes.h"
#include "unicode/localebuilder.h"
#include "unicode/localematcher.h"
@@ -302,7 +304,7 @@ LocaleMatcher LocaleMatcher::Builder::build(UErrorCode &errorCode) const {
namespace {
-LSR getMaximalLsrOrUnd(const XLikelySubtags &likelySubtags, const Locale &locale,
+LSR getMaximalLsrOrUnd(const LikelySubtags &likelySubtags, const Locale &locale,
UErrorCode &errorCode) {
if (U_FAILURE(errorCode) || locale.isBogus() || *locale.getName() == 0 /* "und" */) {
return UND_LSR;
@@ -338,7 +340,7 @@ int32_t LocaleMatcher::putIfAbsent(const LSR &lsr, int32_t i, int32_t suppLength
}
LocaleMatcher::LocaleMatcher(const Builder &builder, UErrorCode &errorCode) :
- likelySubtags(*XLikelySubtags::getSingleton(errorCode)),
+ likelySubtags(*LikelySubtags::getSingleton(errorCode)),
localeDistance(*LocaleDistance::getSingleton(errorCode)),
thresholdDistance(builder.thresholdDistance_),
demotionPerDesiredLocale(0),
@@ -551,7 +553,7 @@ LocaleMatcher &LocaleMatcher::operator=(LocaleMatcher &&src) noexcept {
class LocaleLsrIterator {
public:
- LocaleLsrIterator(const XLikelySubtags &likelySubtags, Locale::Iterator &locales,
+ LocaleLsrIterator(const LikelySubtags &likelySubtags, Locale::Iterator &locales,
ULocMatchLifetime lifetime) :
likelySubtags(likelySubtags), locales(locales), lifetime(lifetime) {}
@@ -596,7 +598,7 @@ public:
}
private:
- const XLikelySubtags &likelySubtags;
+ const LikelySubtags &likelySubtags;
Locale::Iterator &locales;
ULocMatchLifetime lifetime;
const Locale *current = nullptr, *remembered = nullptr;
@@ -605,10 +607,11 @@ private:
const Locale *LocaleMatcher::getBestMatch(const Locale &desiredLocale, UErrorCode &errorCode) const {
if (U_FAILURE(errorCode)) { return nullptr; }
- int32_t suppIndex = getBestSuppIndex(
+ std::optional<int32_t> suppIndex = getBestSuppIndex(
getMaximalLsrOrUnd(likelySubtags, desiredLocale, errorCode),
nullptr, errorCode);
- return U_SUCCESS(errorCode) && suppIndex >= 0 ? supportedLocales[suppIndex] : defaultLocale;
+ return U_SUCCESS(errorCode) && suppIndex.has_value() ? supportedLocales[*suppIndex]
+ : defaultLocale;
}
const Locale *LocaleMatcher::getBestMatch(Locale::Iterator &desiredLocales,
@@ -618,12 +621,14 @@ const Locale *LocaleMatcher::getBestMatch(Locale::Iterator &desiredLocales,
return defaultLocale;
}
LocaleLsrIterator lsrIter(likelySubtags, desiredLocales, ULOCMATCH_TEMPORARY_LOCALES);
- int32_t suppIndex = getBestSuppIndex(lsrIter.next(errorCode), &lsrIter, errorCode);
- return U_SUCCESS(errorCode) && suppIndex >= 0 ? supportedLocales[suppIndex] : defaultLocale;
+ std::optional<int32_t> suppIndex = getBestSuppIndex(lsrIter.next(errorCode), &lsrIter, errorCode);
+ return U_SUCCESS(errorCode) && suppIndex.has_value() ? supportedLocales[*suppIndex]
+ : defaultLocale;
}
const Locale *LocaleMatcher::getBestMatchForListString(
StringPiece desiredLocaleList, UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return nullptr; }
LocalePriorityList list(desiredLocaleList, errorCode);
LocalePriorityList::Iterator iter = list.iterator();
return getBestMatch(iter, errorCode);
@@ -634,13 +639,13 @@ LocaleMatcher::Result LocaleMatcher::getBestMatchResult(
if (U_FAILURE(errorCode)) {
return Result(nullptr, defaultLocale, -1, -1, false);
}
- int32_t suppIndex = getBestSuppIndex(
+ std::optional<int32_t> suppIndex = getBestSuppIndex(
getMaximalLsrOrUnd(likelySubtags, desiredLocale, errorCode),
nullptr, errorCode);
- if (U_FAILURE(errorCode) || suppIndex < 0) {
+ if (U_FAILURE(errorCode) || !suppIndex.has_value()) {
return Result(nullptr, defaultLocale, -1, -1, false);
} else {
- return Result(&desiredLocale, supportedLocales[suppIndex], 0, suppIndex, false);
+ return Result(&desiredLocale, supportedLocales[*suppIndex], 0, *suppIndex, false);
}
}
@@ -650,18 +655,19 @@ LocaleMatcher::Result LocaleMatcher::getBestMatchResult(
return Result(nullptr, defaultLocale, -1, -1, false);
}
LocaleLsrIterator lsrIter(likelySubtags, desiredLocales, ULOCMATCH_TEMPORARY_LOCALES);
- int32_t suppIndex = getBestSuppIndex(lsrIter.next(errorCode), &lsrIter, errorCode);
- if (U_FAILURE(errorCode) || suppIndex < 0) {
+ std::optional<int32_t> suppIndex = getBestSuppIndex(lsrIter.next(errorCode), &lsrIter, errorCode);
+ if (U_FAILURE(errorCode) || !suppIndex.has_value()) {
return Result(nullptr, defaultLocale, -1, -1, false);
} else {
- return Result(lsrIter.orphanRemembered(), supportedLocales[suppIndex],
- lsrIter.getBestDesiredIndex(), suppIndex, true);
+ return Result(lsrIter.orphanRemembered(), supportedLocales[*suppIndex],
+ lsrIter.getBestDesiredIndex(), *suppIndex, true);
}
}
-int32_t LocaleMatcher::getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remainingIter,
- UErrorCode &errorCode) const {
- if (U_FAILURE(errorCode)) { return -1; }
+std::optional<int32_t> LocaleMatcher::getBestSuppIndex(LSR desiredLSR,
+ LocaleLsrIterator *remainingIter,
+ UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return std::nullopt; }
int32_t desiredIndex = 0;
int32_t bestSupportedLsrIndex = -1;
for (int32_t bestShiftedDistance = LocaleDistance::shiftDistance(thresholdDistance);;) {
@@ -684,7 +690,7 @@ int32_t LocaleMatcher::getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remai
bestShiftedDistance = LocaleDistance::getShiftedDistance(bestIndexAndDistance);
if (remainingIter != nullptr) {
remainingIter->rememberCurrent(desiredIndex, errorCode);
- if (U_FAILURE(errorCode)) { return -1; }
+ if (U_FAILURE(errorCode)) { return std::nullopt; }
}
bestSupportedLsrIndex = LocaleDistance::getIndex(bestIndexAndDistance);
}
@@ -695,20 +701,21 @@ int32_t LocaleMatcher::getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remai
break;
}
desiredLSR = remainingIter->next(errorCode);
- if (U_FAILURE(errorCode)) { return -1; }
+ if (U_FAILURE(errorCode)) { return std::nullopt; }
++desiredIndex;
}
if (bestSupportedLsrIndex < 0) {
// no good match
- return -1;
+ return std::nullopt;
}
return supportedIndexes[bestSupportedLsrIndex];
}
UBool LocaleMatcher::isMatch(const Locale &desired, const Locale &supported,
UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return false; }
LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, supported, errorCode);
- if (U_FAILURE(errorCode)) { return 0; }
+ if (U_FAILURE(errorCode)) { return false; }
const LSR *pSuppLSR = &suppLSR;
int32_t indexAndDistance = localeDistance.getBestIndexAndDistance(
getMaximalLsrOrUnd(likelySubtags, desired, errorCode),
@@ -718,9 +725,10 @@ UBool LocaleMatcher::isMatch(const Locale &desired, const Locale &supported,
}
double LocaleMatcher::internalMatch(const Locale &desired, const Locale &supported, UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return 0.; }
// Returns the inverse of the distance: That is, 1-distance(desired, supported).
LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, supported, errorCode);
- if (U_FAILURE(errorCode)) { return 0; }
+ if (U_FAILURE(errorCode)) { return 0.; }
const LSR *pSuppLSR = &suppLSR;
int32_t indexAndDistance = localeDistance.getBestIndexAndDistance(
getMaximalLsrOrUnd(likelySubtags, desired, errorCode),
diff --git a/icu4c/source/common/localeprioritylist.cpp b/icu4c/source/common/localeprioritylist.cpp
index e5ba0a3c7..8ca70b143 100644
--- a/icu4c/source/common/localeprioritylist.cpp
+++ b/icu4c/source/common/localeprioritylist.cpp
@@ -21,13 +21,13 @@ U_NAMESPACE_BEGIN
namespace {
int32_t hashLocale(const UHashTok token) {
- auto *locale = static_cast<const Locale *>(token.pointer);
+ const auto* locale = static_cast<const Locale*>(token.pointer);
return locale->hashCode();
}
UBool compareLocales(const UHashTok t1, const UHashTok t2) {
- auto *l1 = static_cast<const Locale *>(t1.pointer);
- auto *l2 = static_cast<const Locale *>(t2.pointer);
+ const auto* l1 = static_cast<const Locale*>(t1.pointer);
+ const auto* l2 = static_cast<const Locale*>(t2.pointer);
return *l1 == *l2;
}
diff --git a/icu4c/source/common/locavailable.cpp b/icu4c/source/common/locavailable.cpp
index 0ea209398..4a2600e88 100644
--- a/icu4c/source/common/locavailable.cpp
+++ b/icu4c/source/common/locavailable.cpp
@@ -39,14 +39,10 @@ static icu::Locale* availableLocaleList = nullptr;
static int32_t availableLocaleListCount;
static icu::UInitOnce gInitOnceLocale {};
-U_NAMESPACE_END
-
-U_CDECL_BEGIN
+namespace {
-static UBool U_CALLCONV locale_available_cleanup()
+UBool U_CALLCONV locale_available_cleanup()
{
- U_NAMESPACE_USE
-
if (availableLocaleList) {
delete []availableLocaleList;
availableLocaleList = nullptr;
@@ -57,9 +53,7 @@ static UBool U_CALLCONV locale_available_cleanup()
return true;
}
-U_CDECL_END
-
-U_NAMESPACE_BEGIN
+} // namespace
void U_CALLCONV locale_available_init() {
// This function is a friend of class Locale.
@@ -107,10 +101,9 @@ icu::UInitOnce ginstalledLocalesInitOnce {};
class AvailableLocalesSink : public ResourceSink {
public:
void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override {
+ if (U_FAILURE(status)) { return; }
ResourceTable resIndexTable = value.getTable(status);
- if (U_FAILURE(status)) {
- return;
- }
+ if (U_FAILURE(status)) { return; }
for (int32_t i = 0; resIndexTable.getKeyAndValue(i, key, value); ++i) {
ULocAvailableType type;
if (uprv_strcmp(key, "InstalledLocales") == 0) {
@@ -144,7 +137,8 @@ class AvailableLocalesStringEnumeration : public StringEnumeration {
AvailableLocalesStringEnumeration(ULocAvailableType type) : fType(type) {
}
- const char* next(int32_t *resultLength, UErrorCode&) override {
+ const char* next(int32_t *resultLength, UErrorCode &status) override {
+ if (U_FAILURE(status)) { return nullptr; }
ULocAvailableType actualType = fType;
int32_t actualIndex = fIndex++;
@@ -176,11 +170,13 @@ class AvailableLocalesStringEnumeration : public StringEnumeration {
return result;
}
- void reset(UErrorCode&) override {
+ void reset(UErrorCode &status) override {
+ if (U_FAILURE(status)) { return; }
fIndex = 0;
}
- int32_t count(UErrorCode&) const override {
+ int32_t count(UErrorCode &status) const override {
+ if (U_FAILURE(status)) { return 0; }
if (fType == ULOC_AVAILABLE_WITH_LEGACY_ALIASES) {
return gAvailableLocaleCounts[ULOC_AVAILABLE_DEFAULT]
+ gAvailableLocaleCounts[ULOC_AVAILABLE_ONLY_LEGACY_ALIASES];
@@ -196,7 +192,7 @@ class AvailableLocalesStringEnumeration : public StringEnumeration {
/* ### Get available **************************************************/
-static UBool U_CALLCONV uloc_cleanup() {
+UBool U_CALLCONV uloc_cleanup() {
for (int32_t i = 0; i < UPRV_LENGTHOF(gAvailableLocaleNames); i++) {
uprv_free(gAvailableLocaleNames[i]);
gAvailableLocaleNames[i] = nullptr;
@@ -209,7 +205,7 @@ static UBool U_CALLCONV uloc_cleanup() {
// Load Installed Locales. This function will be called exactly once
// via the initOnce mechanism.
-static void U_CALLCONV loadInstalledLocales(UErrorCode& status) {
+void U_CALLCONV loadInstalledLocales(UErrorCode& status) {
ucln_common_registerCleanup(UCLN_COMMON_ULOC, uloc_cleanup);
icu::LocalUResourceBundlePointer rb(ures_openDirect(nullptr, "res_index", &status));
@@ -267,4 +263,3 @@ uloc_openAvailableByType(ULocAvailableType type, UErrorCode* status) {
}
return uenum_openFromStringEnumeration(result.orphan(), status);
}
-
diff --git a/icu4c/source/common/locbased.cpp b/icu4c/source/common/locbased.cpp
index adcf2f843..832bc3e88 100644
--- a/icu4c/source/common/locbased.cpp
+++ b/icu4c/source/common/locbased.cpp
@@ -17,7 +17,7 @@ U_NAMESPACE_BEGIN
Locale LocaleBased::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
const char* id = getLocaleID(type, status);
- return Locale((id != 0) ? id : "");
+ return Locale(id != nullptr ? id : "");
}
const char* LocaleBased::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const {
@@ -37,11 +37,11 @@ const char* LocaleBased::getLocaleID(ULocDataLocaleType type, UErrorCode& status
}
void LocaleBased::setLocaleIDs(const char* validID, const char* actualID) {
- if (validID != 0) {
+ if (validID != nullptr) {
uprv_strncpy(valid, validID, ULOC_FULLNAME_CAPACITY);
valid[ULOC_FULLNAME_CAPACITY-1] = 0; // always terminate
}
- if (actualID != 0) {
+ if (actualID != nullptr) {
uprv_strncpy(actual, actualID, ULOC_FULLNAME_CAPACITY);
actual[ULOC_FULLNAME_CAPACITY-1] = 0; // always terminate
}
diff --git a/icu4c/source/common/locdispnames.cpp b/icu4c/source/common/locdispnames.cpp
index 3ec1b81c8..0be069357 100644
--- a/icu4c/source/common/locdispnames.cpp
+++ b/icu4c/source/common/locdispnames.cpp
@@ -26,7 +26,6 @@
#include "unicode/uloc.h"
#include "unicode/ures.h"
#include "unicode/ustring.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -60,7 +59,7 @@ Locale::getDisplayLanguage(const Locale &displayLocale,
int32_t length;
buffer=result.getBuffer(ULOC_FULLNAME_CAPACITY);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -72,7 +71,7 @@ Locale::getDisplayLanguage(const Locale &displayLocale,
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
buffer=result.getBuffer(length);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -100,7 +99,7 @@ Locale::getDisplayScript(const Locale &displayLocale,
int32_t length;
buffer=result.getBuffer(ULOC_FULLNAME_CAPACITY);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -112,7 +111,7 @@ Locale::getDisplayScript(const Locale &displayLocale,
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
buffer=result.getBuffer(length);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -140,7 +139,7 @@ Locale::getDisplayCountry(const Locale &displayLocale,
int32_t length;
buffer=result.getBuffer(ULOC_FULLNAME_CAPACITY);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -152,7 +151,7 @@ Locale::getDisplayCountry(const Locale &displayLocale,
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
buffer=result.getBuffer(length);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -180,7 +179,7 @@ Locale::getDisplayVariant(const Locale &displayLocale,
int32_t length;
buffer=result.getBuffer(ULOC_FULLNAME_CAPACITY);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -192,7 +191,7 @@ Locale::getDisplayVariant(const Locale &displayLocale,
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
buffer=result.getBuffer(length);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -220,7 +219,7 @@ Locale::getDisplayName(const Locale &displayLocale,
int32_t length;
buffer=result.getBuffer(ULOC_FULLNAME_CAPACITY);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -232,7 +231,7 @@ Locale::getDisplayName(const Locale &displayLocale,
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
buffer=result.getBuffer(length);
- if(buffer==0) {
+ if (buffer == nullptr) {
result.truncate(0);
return result;
}
@@ -276,50 +275,53 @@ U_NAMESPACE_END
U_NAMESPACE_USE
+namespace {
+
/* ### Constants **************************************************/
/* These strings describe the resources we attempt to load from
the locale ResourceBundle data file.*/
-static const char _kLanguages[] = "Languages";
-static const char _kScripts[] = "Scripts";
-static const char _kScriptsStandAlone[] = "Scripts%stand-alone";
-static const char _kCountries[] = "Countries";
-static const char _kVariants[] = "Variants";
-static const char _kKeys[] = "Keys";
-static const char _kTypes[] = "Types";
-//static const char _kRootName[] = "root";
-static const char _kCurrency[] = "currency";
-static const char _kCurrencies[] = "Currencies";
-static const char _kLocaleDisplayPattern[] = "localeDisplayPattern";
-static const char _kPattern[] = "pattern";
-static const char _kSeparator[] = "separator";
+constexpr char _kLanguages[] = "Languages";
+constexpr char _kScripts[] = "Scripts";
+constexpr char _kScriptsStandAlone[] = "Scripts%stand-alone";
+constexpr char _kCountries[] = "Countries";
+constexpr char _kVariants[] = "Variants";
+constexpr char _kKeys[] = "Keys";
+constexpr char _kTypes[] = "Types";
+//constexpr char _kRootName[] = "root";
+constexpr char _kCurrency[] = "currency";
+constexpr char _kCurrencies[] = "Currencies";
+constexpr char _kLocaleDisplayPattern[] = "localeDisplayPattern";
+constexpr char _kPattern[] = "pattern";
+constexpr char _kSeparator[] = "separator";
/* ### Display name **************************************************/
-static int32_t
+int32_t
_getStringOrCopyKey(const char *path, const char *locale,
const char *tableKey,
const char* subTableKey,
const char *itemKey,
const char *substitute,
char16_t *dest, int32_t destCapacity,
- UErrorCode *pErrorCode) {
+ UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return 0; }
const char16_t *s = nullptr;
int32_t length = 0;
if(itemKey==nullptr) {
/* top-level item: normal resource bundle access */
- icu::LocalUResourceBundlePointer rb(ures_open(path, locale, pErrorCode));
+ icu::LocalUResourceBundlePointer rb(ures_open(path, locale, &errorCode));
- if(U_SUCCESS(*pErrorCode)) {
- s=ures_getStringByKey(rb.getAlias(), tableKey, &length, pErrorCode);
+ if(U_SUCCESS(errorCode)) {
+ s=ures_getStringByKey(rb.getAlias(), tableKey, &length, &errorCode);
/* see comment about closing rb near "return item;" in _res_getTableStringWithFallback() */
}
} else {
bool isLanguageCode = (uprv_strncmp(tableKey, _kLanguages, 9) == 0);
/* Language code should not be a number. If it is, set the error code. */
if (isLanguageCode && uprv_strtol(itemKey, nullptr, 10)) {
- *pErrorCode = U_MISSING_RESOURCE_ERROR;
+ errorCode = U_MISSING_RESOURCE_ERROR;
} else {
/* second-level item, use special fallback */
s=uloc_getTableStringWithFallback(path, locale,
@@ -327,22 +329,22 @@ _getStringOrCopyKey(const char *path, const char *locale,
subTableKey,
itemKey,
&length,
- pErrorCode);
- if (U_FAILURE(*pErrorCode) && isLanguageCode && itemKey != nullptr) {
+ &errorCode);
+ if (U_FAILURE(errorCode) && isLanguageCode && itemKey != nullptr) {
// convert itemKey locale code to canonical form and try again, ICU-20870
- *pErrorCode = U_ZERO_ERROR;
+ errorCode = U_ZERO_ERROR;
Locale canonKey = Locale::createCanonical(itemKey);
s=uloc_getTableStringWithFallback(path, locale,
tableKey,
subTableKey,
canonKey.getName(),
&length,
- pErrorCode);
+ &errorCode);
}
}
}
- if(U_SUCCESS(*pErrorCode)) {
+ if(U_SUCCESS(errorCode)) {
int32_t copyLength=uprv_min(length, destCapacity);
if(copyLength>0 && s != nullptr) {
u_memcpy(dest, s, copyLength);
@@ -351,67 +353,63 @@ _getStringOrCopyKey(const char *path, const char *locale,
/* no string from a resource bundle: convert the substitute */
length=(int32_t)uprv_strlen(substitute);
u_charsToUChars(substitute, dest, uprv_min(length, destCapacity));
- *pErrorCode=U_USING_DEFAULT_WARNING;
+ errorCode = U_USING_DEFAULT_WARNING;
}
- return u_terminateUChars(dest, destCapacity, length, pErrorCode);
+ return u_terminateUChars(dest, destCapacity, length, &errorCode);
}
-typedef int32_t U_CALLCONV UDisplayNameGetter(const char *, char *, int32_t, UErrorCode *);
+using UDisplayNameGetter = icu::CharString(const char*, UErrorCode&);
-static int32_t
+int32_t
_getDisplayNameForComponent(const char *locale,
const char *displayLocale,
char16_t *dest, int32_t destCapacity,
UDisplayNameGetter *getter,
const char *tag,
- UErrorCode *pErrorCode) {
- char localeBuffer[ULOC_FULLNAME_CAPACITY*4];
- int32_t length;
+ UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return 0; }
UErrorCode localStatus;
const char* root = nullptr;
- /* argument checking */
- if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
- return 0;
- }
-
if(destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
- *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
localStatus = U_ZERO_ERROR;
- length=(*getter)(locale, localeBuffer, sizeof(localeBuffer), &localStatus);
- if(U_FAILURE(localStatus) || localStatus==U_STRING_NOT_TERMINATED_WARNING) {
- *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+ icu::CharString localeBuffer = (*getter)(locale, localStatus);
+ if (U_FAILURE(localStatus)) {
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- if(length==0) {
+ if (localeBuffer.isEmpty()) {
// For the display name, we treat this as unknown language (ICU-20273).
- if (getter == uloc_getLanguage) {
- uprv_strcpy(localeBuffer, "und");
+ if (getter == ulocimp_getLanguage) {
+ localeBuffer.append("und", errorCode);
} else {
- return u_terminateUChars(dest, destCapacity, 0, pErrorCode);
+ return u_terminateUChars(dest, destCapacity, 0, &errorCode);
}
}
root = tag == _kCountries ? U_ICUDATA_REGION : U_ICUDATA_LANG;
return _getStringOrCopyKey(root, displayLocale,
- tag, nullptr, localeBuffer,
- localeBuffer,
+ tag, nullptr, localeBuffer.data(),
+ localeBuffer.data(),
dest, destCapacity,
- pErrorCode);
+ errorCode);
}
+} // namespace
+
U_CAPI int32_t U_EXPORT2
uloc_getDisplayLanguage(const char *locale,
const char *displayLocale,
char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
- uloc_getLanguage, _kLanguages, pErrorCode);
+ ulocimp_getLanguage, _kLanguages, *pErrorCode);
}
U_CAPI int32_t U_EXPORT2
@@ -420,19 +418,20 @@ uloc_getDisplayScript(const char* locale,
char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode)
{
+ if (U_FAILURE(*pErrorCode)) { return 0; }
UErrorCode err = U_ZERO_ERROR;
int32_t res = _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
- uloc_getScript, _kScriptsStandAlone, &err);
+ ulocimp_getScript, _kScriptsStandAlone, err);
if (destCapacity == 0 && err == U_BUFFER_OVERFLOW_ERROR) {
// For preflight, return the max of the value and the fallback.
int32_t fallback_res = _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
- uloc_getScript, _kScripts, pErrorCode);
+ ulocimp_getScript, _kScripts, *pErrorCode);
return (fallback_res > res) ? fallback_res : res;
}
if ( err == U_USING_DEFAULT_WARNING ) {
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
- uloc_getScript, _kScripts, pErrorCode);
+ ulocimp_getScript, _kScripts, *pErrorCode);
} else {
*pErrorCode = err;
return res;
@@ -446,7 +445,7 @@ uloc_getDisplayScriptInContext(const char* locale,
UErrorCode *pErrorCode)
{
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
- uloc_getScript, _kScripts, pErrorCode);
+ ulocimp_getScript, _kScripts, *pErrorCode);
}
U_CAPI int32_t U_EXPORT2
@@ -455,7 +454,7 @@ uloc_getDisplayCountry(const char *locale,
char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
- uloc_getCountry, _kCountries, pErrorCode);
+ ulocimp_getRegion, _kCountries, *pErrorCode);
}
/*
@@ -469,7 +468,7 @@ uloc_getDisplayVariant(const char *locale,
char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
- uloc_getVariant, _kVariants, pErrorCode);
+ ulocimp_getVariant, _kVariants, *pErrorCode);
}
/* Instead of having a separate pass for 'special' patterns, reintegrate the two
@@ -809,7 +808,7 @@ uloc_getDisplayKeyword(const char* keyword,
keyword,
keyword,
dest, destCapacity,
- status);
+ *status);
}
@@ -836,11 +835,7 @@ uloc_getDisplayKeywordValue( const char* locale,
}
/* get the keyword value */
- CharString keywordValue;
- {
- CharStringByteSink sink(&keywordValue);
- ulocimp_getKeywordValue(locale, keyword, sink, status);
- }
+ CharString keywordValue = ulocimp_getKeywordValue(locale, keyword, *status);
/*
* if the keyword is equal to currency .. then to get the display name
@@ -897,6 +892,6 @@ uloc_getDisplayKeywordValue( const char* locale,
keywordValue.data(),
keywordValue.data(),
dest, destCapacity,
- status);
+ *status);
}
}
diff --git a/icu4c/source/common/locdistance.cpp b/icu4c/source/common/locdistance.cpp
index fb22fe79e..4dbfcc009 100644
--- a/icu4c/source/common/locdistance.cpp
+++ b/icu4c/source/common/locdistance.cpp
@@ -59,7 +59,7 @@ UBool U_CALLCONV cleanup() {
void U_CALLCONV LocaleDistance::initLocaleDistance(UErrorCode &errorCode) {
// This function is invoked only via umtx_initOnce().
U_ASSERT(gLocaleDistance == nullptr);
- const XLikelySubtags &likely = *XLikelySubtags::getSingleton(errorCode);
+ const LikelySubtags &likely = *LikelySubtags::getSingleton(errorCode);
if (U_FAILURE(errorCode)) { return; }
const LocaleDistanceData &data = likely.getDistanceData();
if (data.distanceTrieBytes == nullptr ||
@@ -83,7 +83,7 @@ const LocaleDistance *LocaleDistance::getSingleton(UErrorCode &errorCode) {
return gLocaleDistance;
}
-LocaleDistance::LocaleDistance(const LocaleDistanceData &data, const XLikelySubtags &likely) :
+LocaleDistance::LocaleDistance(const LocaleDistanceData &data, const LikelySubtags &likely) :
likelySubtags(likely),
trie(data.distanceTrieBytes),
regionToPartitionsIndex(data.regionToPartitions), partitionArrays(data.partitions),
@@ -119,7 +119,7 @@ int32_t LocaleDistance::getBestIndexAndDistance(
uint64_t desLangState = desLangDistance >= 0 && supportedLSRsLength > 1 ? iter.getState64() : 0;
// Index of the supported LSR with the lowest distance.
int32_t bestIndex = -1;
- // Cached lookup info from XLikelySubtags.compareLikely().
+ // Cached lookup info from LikelySubtags.compareLikely().
int32_t bestLikelyInfo = -1;
for (int32_t slIndex = 0; slIndex < supportedLSRsLength; ++slIndex) {
const LSR &supported = *supportedLSRs[slIndex];
@@ -399,7 +399,7 @@ int32_t LocaleDistance::trieNext(BytesTrie &iter, const char *s, bool wantValue)
}
}
-UBool LocaleDistance::isParadigmLSR(const LSR &lsr) const {
+bool LocaleDistance::isParadigmLSR(const LSR &lsr) const {
// Linear search for a very short list (length 6 as of 2019),
// because we look for equivalence not equality, and
// because it's easy.
diff --git a/icu4c/source/common/locdistance.h b/icu4c/source/common/locdistance.h
index 51b777e62..952f622e8 100644
--- a/icu4c/source/common/locdistance.h
+++ b/icu4c/source/common/locdistance.h
@@ -62,7 +62,7 @@ public:
ULocMatchFavorSubtag favorSubtag,
ULocMatchDirection direction) const;
- UBool isParadigmLSR(const LSR &lsr) const;
+ bool isParadigmLSR(const LSR &lsr) const;
int32_t getDefaultScriptDistance() const {
return defaultScriptDistance;
@@ -83,14 +83,14 @@ private:
// tic constexpr int32_t MAX_INDEX = 0x1fffff; // avoids sign bit
static constexpr int32_t INDEX_NEG_1 = 0xfffffc00;
- LocaleDistance(const LocaleDistanceData &data, const XLikelySubtags &likely);
+ LocaleDistance(const LocaleDistanceData &data, const LikelySubtags &likely);
LocaleDistance(const LocaleDistance &other) = delete;
LocaleDistance &operator=(const LocaleDistance &other) = delete;
static void initLocaleDistance(UErrorCode &errorCode);
- UBool isMatch(const LSR &desired, const LSR &supported,
- int32_t shiftedThreshold, ULocMatchFavorSubtag favorSubtag) const {
+ bool isMatch(const LSR &desired, const LSR &supported,
+ int32_t shiftedThreshold, ULocMatchFavorSubtag favorSubtag) const {
const LSR *pSupp = &supported;
return getBestIndexAndDistance(
desired, &pSupp, 1,
@@ -119,7 +119,7 @@ private:
return defaultRegionDistance;
}
- const XLikelySubtags &likelySubtags;
+ const LikelySubtags &likelySubtags;
// The trie maps each dlang+slang+dscript+sscript+dregion+sregion
// (encoded in ASCII with bit 7 set on the last character of each subtag) to a distance.
diff --git a/icu4c/source/common/locdspnm.cpp b/icu4c/source/common/locdspnm.cpp
index 73fe531c5..c65a349db 100644
--- a/icu4c/source/common/locdspnm.cpp
+++ b/icu4c/source/common/locdspnm.cpp
@@ -18,45 +18,17 @@
#include "unicode/udisplaycontext.h"
#include "unicode/brkiter.h"
#include "unicode/ucurr.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
#include "mutex.h"
+#include "uassert.h"
#include "ulocimp.h"
#include "umutex.h"
#include "ureslocs.h"
#include "uresimp.h"
-#include <stdarg.h>
-
-/**
- * Concatenate a number of null-terminated strings to buffer, leaving a
- * null-terminated string. The last argument should be the null pointer.
- * Return the length of the string in the buffer, not counting the trailing
- * null. Return -1 if there is an error (buffer is null, or buflen < 1).
- */
-static int32_t ncat(char *buffer, uint32_t buflen, ...) {
- va_list args;
- char *str;
- char *p = buffer;
- const char* e = buffer + buflen - 1;
-
- if (buffer == nullptr || buflen < 1) {
- return -1;
- }
-
- va_start(args, buflen);
- while ((str = va_arg(args, char *)) != 0) {
- char c;
- while (p != e && (c = *str++) != 0) {
- *p++ = c;
- }
- }
- *p = 0;
- va_end(args);
-
- return static_cast<int32_t>(p - buffer);
-}
-
U_NAMESPACE_BEGIN
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -64,12 +36,13 @@ U_NAMESPACE_BEGIN
// Access resource data for locale components.
// Wrap code in uloc.c for now.
class ICUDataTable {
- const char* path;
+ const char* const path;
Locale locale;
public:
+ // Note: path should be a pointer to a statically allocated string.
ICUDataTable(const char* path, const Locale& locale);
- ~ICUDataTable();
+ ~ICUDataTable() = default;
const Locale& getLocale();
@@ -95,23 +68,9 @@ ICUDataTable::getNoFallback(const char* tableKey, const char* itemKey, UnicodeSt
}
ICUDataTable::ICUDataTable(const char* path, const Locale& locale)
- : path(nullptr), locale(Locale::getRoot())
+ : path(path), locale(locale)
{
- if (path) {
- int32_t len = static_cast<int32_t>(uprv_strlen(path));
- this->path = (const char*) uprv_malloc(len + 1);
- if (this->path) {
- uprv_strcpy((char *)this->path, path);
- this->locale = locale;
- }
- }
-}
-
-ICUDataTable::~ICUDataTable() {
- if (path) {
- uprv_free((void*) path);
- path = nullptr;
- }
+ U_ASSERT(path != nullptr);
}
const Locale&
@@ -305,7 +264,7 @@ class LocaleDisplayNamesImpl : public LocaleDisplayNames {
};
// Capitalization transforms. For each usage type, indicates whether to titlecase for
// the context specified in capitalizationContext (which we know at construction time)
- UBool fCapitalization[kCapContextUsageCount];
+ bool fCapitalization[kCapContextUsageCount];
public:
// constructor
@@ -341,12 +300,12 @@ private:
UnicodeString& result, bool substitute) const;
UnicodeString& appendWithSep(UnicodeString& buffer, const UnicodeString& src) const;
UnicodeString& adjustForUsageAndContext(CapContextUsage usage, UnicodeString& result) const;
- UnicodeString& scriptDisplayName(const char* script, UnicodeString& result, UBool skipAdjust) const;
- UnicodeString& regionDisplayName(const char* region, UnicodeString& result, UBool skipAdjust) const;
- UnicodeString& variantDisplayName(const char* variant, UnicodeString& result, UBool skipAdjust) const;
- UnicodeString& keyDisplayName(const char* key, UnicodeString& result, UBool skipAdjust) const;
+ UnicodeString& scriptDisplayName(const char* script, UnicodeString& result, bool skipAdjust) const;
+ UnicodeString& regionDisplayName(const char* region, UnicodeString& result, bool skipAdjust) const;
+ UnicodeString& variantDisplayName(const char* variant, UnicodeString& result, bool skipAdjust) const;
+ UnicodeString& keyDisplayName(const char* key, UnicodeString& result, bool skipAdjust) const;
UnicodeString& keyValueDisplayName(const char* key, const char* value,
- UnicodeString& result, UBool skipAdjust) const;
+ UnicodeString& result, bool skipAdjust) const;
void initialize();
struct CapitalizationContextSink;
@@ -399,7 +358,7 @@ LocaleDisplayNamesImpl::LocaleDisplayNamesImpl(const Locale& locale,
}
struct LocaleDisplayNamesImpl::CapitalizationContextSink : public ResourceSink {
- UBool hasCapitalizationUsage;
+ bool hasCapitalizationUsage;
LocaleDisplayNamesImpl& parent;
CapitalizationContextSink(LocaleDisplayNamesImpl& _parent)
@@ -490,7 +449,7 @@ LocaleDisplayNamesImpl::initialize() {
#if !UCONFIG_NO_BREAK_ITERATION
// Only get the context data if we need it! This is a const object so we know now...
// Also check whether we will need a break iterator (depends on the data)
- UBool needBrkIter = false;
+ bool needBrkIter = false;
if (capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU || capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_STANDALONE) {
LocalUResourceBundlePointer resource(ures_open(nullptr, locale.getName(), &status));
if (U_FAILURE(status)) { return; }
@@ -582,36 +541,51 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc,
const char* country = loc.getCountry();
const char* variant = loc.getVariant();
- UBool hasScript = uprv_strlen(script) > 0;
- UBool hasCountry = uprv_strlen(country) > 0;
- UBool hasVariant = uprv_strlen(variant) > 0;
+ bool hasScript = uprv_strlen(script) > 0;
+ bool hasCountry = uprv_strlen(country) > 0;
+ bool hasVariant = uprv_strlen(variant) > 0;
if (dialectHandling == ULDN_DIALECT_NAMES) {
- char buffer[ULOC_FULLNAME_CAPACITY];
+ UErrorCode status = U_ZERO_ERROR;
+ CharString buffer;
do { // loop construct is so we can break early out of search
if (hasScript && hasCountry) {
- ncat(buffer, ULOC_FULLNAME_CAPACITY, lang, "_", script, "_", country, (char *)0);
- localeIdName(buffer, resultName, false);
- if (!resultName.isBogus()) {
- hasScript = false;
- hasCountry = false;
- break;
+ buffer.append(lang, status)
+ .append('_', status)
+ .append(script, status)
+ .append('_', status)
+ .append(country, status);
+ if (U_SUCCESS(status)) {
+ localeIdName(buffer.data(), resultName, false);
+ if (!resultName.isBogus()) {
+ hasScript = false;
+ hasCountry = false;
+ break;
+ }
}
}
if (hasScript) {
- ncat(buffer, ULOC_FULLNAME_CAPACITY, lang, "_", script, (char *)0);
- localeIdName(buffer, resultName, false);
- if (!resultName.isBogus()) {
- hasScript = false;
- break;
+ buffer.append(lang, status)
+ .append('_', status)
+ .append(script, status);
+ if (U_SUCCESS(status)) {
+ localeIdName(buffer.data(), resultName, false);
+ if (!resultName.isBogus()) {
+ hasScript = false;
+ break;
+ }
}
}
if (hasCountry) {
- ncat(buffer, ULOC_FULLNAME_CAPACITY, lang, "_", country, (char*)0);
- localeIdName(buffer, resultName, false);
- if (!resultName.isBogus()) {
- hasCountry = false;
- break;
+ buffer.append(lang, status)
+ .append('_', status)
+ .append(country, status);
+ if (U_SUCCESS(status)) {
+ localeIdName(buffer.data(), resultName, false);
+ if (!resultName.isBogus()) {
+ hasCountry = false;
+ break;
+ }
}
}
} while (false);
@@ -658,21 +632,19 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc,
LocalPointer<StringEnumeration> e(loc.createKeywords(status));
if (e.isValid() && U_SUCCESS(status)) {
UnicodeString temp2;
- char value[ULOC_KEYWORD_AND_VALUES_CAPACITY]; // sigh, no ULOC_VALUE_CAPACITY
const char* key;
- while ((key = e->next((int32_t *)0, status)) != nullptr) {
- value[0] = 0;
- loc.getKeywordValue(key, value, ULOC_KEYWORD_AND_VALUES_CAPACITY, status);
- if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) {
- return result;
+ while ((key = e->next((int32_t*)nullptr, status)) != nullptr) {
+ auto value = loc.getKeywordValue<CharString>(key, status);
+ if (U_FAILURE(status)) {
+ return result;
}
keyDisplayName(key, temp, true);
temp.findAndReplace(formatOpenParen, formatReplaceOpenParen);
temp.findAndReplace(formatCloseParen, formatReplaceCloseParen);
- keyValueDisplayName(key, value, temp2, true);
+ keyValueDisplayName(key, value.data(), temp2, true);
temp2.findAndReplace(formatOpenParen, formatReplaceOpenParen);
temp2.findAndReplace(formatCloseParen, formatReplaceCloseParen);
- if (temp2 != UnicodeString(value, -1, US_INV)) {
+ if (temp2 != UnicodeString(value.data(), -1, US_INV)) {
appendWithSep(resultRemainder, temp2);
} else if (temp != UnicodeString(key, -1, US_INV)) {
UnicodeString temp3;
@@ -779,7 +751,7 @@ LocaleDisplayNamesImpl::languageDisplayName(const char* lang,
UnicodeString&
LocaleDisplayNamesImpl::scriptDisplayName(const char* script,
UnicodeString& result,
- UBool skipAdjust) const {
+ bool skipAdjust) const {
if (nameLength == UDISPCTX_LENGTH_SHORT) {
langData.getNoFallback("Scripts%short", script, result);
if (!result.isBogus()) {
@@ -809,7 +781,7 @@ LocaleDisplayNamesImpl::scriptDisplayName(UScriptCode scriptCode,
UnicodeString&
LocaleDisplayNamesImpl::regionDisplayName(const char* region,
UnicodeString& result,
- UBool skipAdjust) const {
+ bool skipAdjust) const {
if (nameLength == UDISPCTX_LENGTH_SHORT) {
regionData.getNoFallback("Countries%short", region, result);
if (!result.isBogus()) {
@@ -834,7 +806,7 @@ LocaleDisplayNamesImpl::regionDisplayName(const char* region,
UnicodeString&
LocaleDisplayNamesImpl::variantDisplayName(const char* variant,
UnicodeString& result,
- UBool skipAdjust) const {
+ bool skipAdjust) const {
// don't have a resource for short variant names
if (substitute == UDISPCTX_SUBSTITUTE) {
langData.get("Variants", variant, result);
@@ -853,7 +825,7 @@ LocaleDisplayNamesImpl::variantDisplayName(const char* variant,
UnicodeString&
LocaleDisplayNamesImpl::keyDisplayName(const char* key,
UnicodeString& result,
- UBool skipAdjust) const {
+ bool skipAdjust) const {
// don't have a resource for short key names
if (substitute == UDISPCTX_SUBSTITUTE) {
langData.get("Keys", key, result);
@@ -873,7 +845,7 @@ UnicodeString&
LocaleDisplayNamesImpl::keyValueDisplayName(const char* key,
const char* value,
UnicodeString& result,
- UBool skipAdjust) const {
+ bool skipAdjust) const {
if (uprv_strcmp(key, "currency") == 0) {
// ICU4C does not have ICU4J CurrencyDisplayInfo equivalent for now.
UErrorCode sts = U_ZERO_ERROR;
@@ -939,7 +911,7 @@ uldn_open(const char * locale,
UDialectHandling dialectHandling,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
- return 0;
+ return nullptr;
}
if (locale == nullptr) {
locale = uloc_getDefault();
@@ -952,7 +924,7 @@ uldn_openForContext(const char * locale,
UDisplayContext *contexts, int32_t length,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
- return 0;
+ return nullptr;
}
if (locale == nullptr) {
locale = uloc_getDefault();
diff --git a/icu4c/source/common/locid.cpp b/icu4c/source/common/locid.cpp
index 64ff63f36..37bbe4ba9 100644
--- a/icu4c/source/common/locid.cpp
+++ b/icu4c/source/common/locid.cpp
@@ -57,10 +57,6 @@
#include "ustr_imp.h"
#include "uvector.h"
-U_CDECL_BEGIN
-static UBool U_CALLCONV locale_cleanup();
-U_CDECL_END
-
U_NAMESPACE_BEGIN
static Locale *gLocaleCache = nullptr;
@@ -106,16 +102,17 @@ typedef enum ELocalePos {
eMAX_LOCALES
} ELocalePos;
-U_CDECL_BEGIN
+namespace {
+
//
// Deleter function for Locales owned by the default Locale hash table/
//
-static void U_CALLCONV
+void U_CALLCONV
deleteLocale(void *obj) {
delete (icu::Locale *) obj;
}
-static UBool U_CALLCONV locale_cleanup()
+UBool U_CALLCONV locale_cleanup()
{
U_NAMESPACE_USE
@@ -131,8 +128,7 @@ static UBool U_CALLCONV locale_cleanup()
return true;
}
-
-static void U_CALLCONV locale_init(UErrorCode &status) {
+void U_CALLCONV locale_init(UErrorCode &status) {
U_NAMESPACE_USE
U_ASSERT(gLocaleCache == nullptr);
@@ -163,7 +159,7 @@ static void U_CALLCONV locale_init(UErrorCode &status) {
gLocaleCache[eCANADA_FRENCH] = Locale("fr", "CA");
}
-U_CDECL_END
+} // namespace
U_NAMESPACE_BEGIN
@@ -182,15 +178,8 @@ Locale *locale_set_default_internal(const char *id, UErrorCode& status) {
canonicalize = true; // always canonicalize host ID
}
- CharString localeNameBuf;
- {
- CharStringByteSink sink(&localeNameBuf);
- if (canonicalize) {
- ulocimp_canonicalize(id, sink, &status);
- } else {
- ulocimp_getName(id, sink, &status);
- }
- }
+ CharString localeNameBuf =
+ canonicalize ? ulocimp_canonicalize(id, status) : ulocimp_getName(id, status);
if (U_FAILURE(status)) {
return gDefaultLocale;
@@ -494,7 +483,7 @@ namespace {
UInitOnce gKnownCanonicalizedInitOnce {};
UHashtable *gKnownCanonicalized = nullptr;
-static const char* const KNOWN_CANONICALIZED[] = {
+constexpr const char* KNOWN_CANONICALIZED[] = {
"c",
// Commonly used locales known are already canonicalized
"af", "af_ZA", "am", "am_ET", "ar", "ar_001", "as", "as_IN", "az", "az_AZ",
@@ -518,13 +507,13 @@ static const char* const KNOWN_CANONICALIZED[] = {
"zh_Hant_TW", "zh_TW", "zu", "zu_ZA"
};
-static UBool U_CALLCONV cleanupKnownCanonicalized() {
+UBool U_CALLCONV cleanupKnownCanonicalized() {
gKnownCanonicalizedInitOnce.reset();
if (gKnownCanonicalized) { uhash_close(gKnownCanonicalized); }
return true;
}
-static void U_CALLCONV loadKnownCanonicalized(UErrorCode &status) {
+void U_CALLCONV loadKnownCanonicalized(UErrorCode &status) {
ucln_common_registerCleanup(UCLN_COMMON_LOCALE_KNOWN_CANONICALIZED,
cleanupKnownCanonicalized);
LocalUHashtablePointer newKnownCanonicalizedMap(
@@ -920,6 +909,8 @@ AliasData::loadData(UErrorCode &status)
*/
AliasData*
AliasDataBuilder::build(UErrorCode &status) {
+ if (U_FAILURE(status)) { return nullptr; }
+
LocalUResourceBundlePointer metadata(
ures_openDirect(nullptr, "metadata", &status));
LocalUResourceBundlePointer metadataAlias(
@@ -1065,7 +1056,7 @@ AliasDataBuilder::build(UErrorCode &status) {
*/
class AliasReplacer {
public:
- AliasReplacer(UErrorCode status) :
+ AliasReplacer(UErrorCode& status) :
language(nullptr), script(nullptr), region(nullptr),
extensions(nullptr),
// store value in variants only once
@@ -1130,12 +1121,12 @@ private:
}
// Gather fields and generate locale ID into out.
- CharString& outputToString(CharString& out, UErrorCode status);
+ CharString& outputToString(CharString& out, UErrorCode& status);
// Generate the lookup key.
CharString& generateKey(const char* language, const char* region,
const char* variant, CharString& out,
- UErrorCode status);
+ UErrorCode& status);
void parseLanguageReplacement(const char* replacement,
const char*& replaceLanguage,
@@ -1172,8 +1163,9 @@ private:
CharString&
AliasReplacer::generateKey(
const char* language, const char* region, const char* variant,
- CharString& out, UErrorCode status)
+ CharString& out, UErrorCode& status)
{
+ if (U_FAILURE(status)) { return out; }
out.append(language, status);
if (notEmpty(region)) {
out.append(SEP_CHAR, status)
@@ -1529,13 +1521,12 @@ AliasReplacer::replaceTransformedExtensions(
const char* tkey = ultag_getTKeyStart(str);
int32_t tlangLen = (tkey == str) ? 0 :
((tkey == nullptr) ? len : static_cast<int32_t>((tkey - str - 1)));
- CharStringByteSink sink(&output);
if (tlangLen > 0) {
Locale tlang = LocaleBuilder()
.setLanguageTag(StringPiece(str, tlangLen))
.build(status);
tlang.canonicalize(status);
- tlang.toLanguageTag(sink, status);
+ output = tlang.toLanguageTag<CharString>(status);
if (U_FAILURE(status)) {
return false;
}
@@ -1591,8 +1582,9 @@ AliasReplacer::replaceTransformedExtensions(
CharString&
AliasReplacer::outputToString(
- CharString& out, UErrorCode status)
+ CharString& out, UErrorCode& status)
{
+ if (U_FAILURE(status)) { return out; }
out.append(language, status);
if (notEmpty(script)) {
out.append(SEP_CHAR, status)
@@ -1735,9 +1727,7 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status
while ((key = iter->next(nullptr, status)) != nullptr) {
if (uprv_strcmp("sd", key) == 0 || uprv_strcmp("rg", key) == 0 ||
uprv_strcmp("t", key) == 0) {
- CharString value;
- CharStringByteSink valueSink(&value);
- locale.getKeywordValue(key, valueSink, status);
+ auto value = locale.getKeywordValue<CharString>(key, status);
if (U_FAILURE(status)) {
status = U_ZERO_ERROR;
continue;
@@ -1782,6 +1772,7 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status
bool
canonicalizeLocale(const Locale& locale, CharString& out, UErrorCode& status)
{
+ if (U_FAILURE(status)) { return false; }
AliasReplacer replacer(status);
return replacer.replace(locale, out, status);
}
@@ -1791,6 +1782,8 @@ canonicalizeLocale(const Locale& locale, CharString& out, UErrorCode& status)
bool
isKnownCanonicalizedLocale(const char* locale, UErrorCode& status)
{
+ if (U_FAILURE(status)) { return false; }
+
if ( uprv_strcmp(locale, "c") == 0 ||
uprv_strcmp(locale, "en") == 0 ||
uprv_strcmp(locale, "en_US") == 0) {
@@ -1809,24 +1802,30 @@ isKnownCanonicalizedLocale(const char* locale, UErrorCode& status)
} // namespace
+U_NAMESPACE_END
+
// Function for testing.
-U_CAPI const char* const*
-ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* length)
+U_EXPORT const char* const*
+ulocimp_getKnownCanonicalizedLocaleForTest(int32_t& length)
{
- *length = UPRV_LENGTHOF(KNOWN_CANONICALIZED);
+ U_NAMESPACE_USE
+ length = UPRV_LENGTHOF(KNOWN_CANONICALIZED);
return KNOWN_CANONICALIZED;
}
// Function for testing.
-U_CAPI bool
+U_EXPORT bool
ulocimp_isCanonicalizedLocaleForTest(const char* localeName)
{
+ U_NAMESPACE_USE
Locale l(localeName);
UErrorCode status = U_ZERO_ERROR;
CharString temp;
return !canonicalizeLocale(l, temp, status) && U_SUCCESS(status);
}
+U_NAMESPACE_BEGIN
+
/*This function initializes a Locale from a C locale ID*/
Locale& Locale::init(const char* localeID, UBool canonicalize)
{
@@ -1846,7 +1845,7 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
// without goto and without another function
do {
char *separator;
- char *field[5] = {0};
+ char *field[5] = {nullptr};
int32_t fieldLen[5] = {0};
int32_t fieldIdx;
int32_t variantField;
@@ -1871,7 +1870,7 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
U_ASSERT(baseName == nullptr);
/*Go to heap for the fullName if necessary*/
fullName = (char *)uprv_malloc(sizeof(char)*(length + 1));
- if(fullName == 0) {
+ if (fullName == nullptr) {
fullName = fullNameBuffer;
break; // error: out of memory
}
@@ -1892,7 +1891,7 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
separator = field[0] = fullName;
fieldIdx = 1;
char* at = uprv_strchr(fullName, '@');
- while ((separator = uprv_strchr(field[fieldIdx-1], SEP_CHAR)) != 0 &&
+ while ((separator = uprv_strchr(field[fieldIdx-1], SEP_CHAR)) != nullptr &&
fieldIdx < UPRV_LENGTHOF(field)-1 &&
(at == nullptr || separator < at)) {
field[fieldIdx] = separator + 1;
@@ -2074,11 +2073,7 @@ Locale::addLikelySubtags(UErrorCode& status) {
return;
}
- CharString maximizedLocaleID;
- {
- CharStringByteSink sink(&maximizedLocaleID);
- ulocimp_addLikelySubtags(fullName, sink, &status);
- }
+ CharString maximizedLocaleID = ulocimp_addLikelySubtags(fullName, status);
if (U_FAILURE(status)) {
return;
@@ -2100,11 +2095,7 @@ Locale::minimizeSubtags(bool favorScript, UErrorCode& status) {
return;
}
- CharString minimizedLocaleID;
- {
- CharStringByteSink sink(&minimizedLocaleID);
- ulocimp_minimizeSubtags(fullName, sink, favorScript, &status);
- }
+ CharString minimizedLocaleID = ulocimp_minimizeSubtags(fullName, favorScript, status);
if (U_FAILURE(status)) {
return;
@@ -2155,17 +2146,12 @@ Locale::forLanguageTag(StringPiece tag, UErrorCode& status)
// parsing. Therefore the code here explicitly calls uloc_forLanguageTag()
// and then Locale::init(), instead of just calling the normal constructor.
- CharString localeID;
int32_t parsedLength;
- {
- CharStringByteSink sink(&localeID);
- ulocimp_forLanguageTag(
- tag.data(),
- tag.length(),
- sink,
- &parsedLength,
- &status);
- }
+ CharString localeID = ulocimp_forLanguageTag(
+ tag.data(),
+ tag.length(),
+ &parsedLength,
+ status);
if (U_FAILURE(status)) {
return result;
@@ -2195,7 +2181,7 @@ Locale::toLanguageTag(ByteSink& sink, UErrorCode& status) const
return;
}
- ulocimp_toLanguageTag(fullName, sink, /*strict=*/false, &status);
+ ulocimp_toLanguageTag(fullName, sink, /*strict=*/false, status);
}
Locale U_EXPORT2
@@ -2420,33 +2406,23 @@ Locale::getLocaleCache()
class KeywordEnumeration : public StringEnumeration {
protected:
- char *keywords;
+ CharString keywords;
private:
- char *current;
- int32_t length;
- UnicodeString currUSKey;
- static const char fgClassID;/* Warning this is used beyond the typical RTTI usage. */
+ const char *current;
+ static const char fgClassID;
public:
static UClassID U_EXPORT2 getStaticClassID() { return (UClassID)&fgClassID; }
virtual UClassID getDynamicClassID() const override { return getStaticClassID(); }
public:
KeywordEnumeration(const char *keys, int32_t keywordLen, int32_t currentIndex, UErrorCode &status)
- : keywords((char *)&fgClassID), current((char *)&fgClassID), length(0) {
+ : keywords(), current(keywords.data()) {
if(U_SUCCESS(status) && keywordLen != 0) {
if(keys == nullptr || keywordLen < 0) {
status = U_ILLEGAL_ARGUMENT_ERROR;
} else {
- keywords = (char *)uprv_malloc(keywordLen+1);
- if (keywords == nullptr) {
- status = U_MEMORY_ALLOCATION_ERROR;
- }
- else {
- uprv_memcpy(keywords, keys, keywordLen);
- keywords[keywordLen] = 0;
- current = keywords + currentIndex;
- length = keywordLen;
- }
+ keywords.append(keys, keywordLen, status);
+ current = keywords.data() + currentIndex;
}
}
}
@@ -2456,11 +2432,14 @@ public:
virtual StringEnumeration * clone() const override
{
UErrorCode status = U_ZERO_ERROR;
- return new KeywordEnumeration(keywords, length, (int32_t)(current - keywords), status);
+ return new KeywordEnumeration(
+ keywords.data(), keywords.length(),
+ (int32_t)(current - keywords.data()), status);
}
- virtual int32_t count(UErrorCode &/*status*/) const override {
- char *kw = keywords;
+ virtual int32_t count(UErrorCode& status) const override {
+ if (U_FAILURE(status)) { return 0; }
+ const char *kw = keywords.data();
int32_t result = 0;
while(*kw) {
result++;
@@ -2489,21 +2468,22 @@ public:
}
virtual const UnicodeString* snext(UErrorCode& status) override {
+ if (U_FAILURE(status)) { return nullptr; }
int32_t resultLength = 0;
const char *s = next(&resultLength, status);
return setChars(s, resultLength, status);
}
- virtual void reset(UErrorCode& /*status*/) override {
- current = keywords;
+ virtual void reset(UErrorCode& status) override {
+ if (U_FAILURE(status)) { return; }
+ current = keywords.data();
}
};
const char KeywordEnumeration::fgClassID = '\0';
-KeywordEnumeration::~KeywordEnumeration() {
- uprv_free(keywords);
-}
+// Out-of-line virtual destructor to serve as the "key function".
+KeywordEnumeration::~KeywordEnumeration() = default;
// A wrapper around KeywordEnumeration that calls uloc_toUnicodeLocaleKey() in
// the next() method for each keyword before returning it.
@@ -2528,8 +2508,9 @@ public:
if (resultLength != nullptr) *resultLength = 0;
return nullptr;
}
- virtual int32_t count(UErrorCode &/*status*/) const override {
- char *kw = keywords;
+ virtual int32_t count(UErrorCode& status) const override {
+ if (U_FAILURE(status)) { return 0; }
+ const char *kw = keywords.data();
int32_t result = 0;
while(*kw) {
if (uloc_toUnicodeLocaleKey(kw) != nullptr) {
@@ -2557,9 +2538,7 @@ Locale::createKeywords(UErrorCode &status) const
const char* assignment = uprv_strchr(fullName, '=');
if(variantStart) {
if(assignment > variantStart) {
- CharString keywords;
- CharStringByteSink sink(&keywords);
- ulocimp_getKeywords(variantStart+1, '@', sink, false, &status);
+ CharString keywords = ulocimp_getKeywords(variantStart + 1, '@', false, status);
if (U_SUCCESS(status) && !keywords.isEmpty()) {
result = new KeywordEnumeration(keywords.data(), keywords.length(), 0, status);
if (!result) {
@@ -2586,9 +2565,7 @@ Locale::createUnicodeKeywords(UErrorCode &status) const
const char* assignment = uprv_strchr(fullName, '=');
if(variantStart) {
if(assignment > variantStart) {
- CharString keywords;
- CharStringByteSink sink(&keywords);
- ulocimp_getKeywords(variantStart+1, '@', sink, false, &status);
+ CharString keywords = ulocimp_getKeywords(variantStart + 1, '@', false, status);
if (U_SUCCESS(status) && !keywords.isEmpty()) {
result = new UnicodeKeywordEnumeration(keywords.data(), keywords.length(), 0, status);
if (!result) {
@@ -2625,13 +2602,17 @@ Locale::getKeywordValue(StringPiece keywordName, ByteSink& sink, UErrorCode& sta
return;
}
- ulocimp_getKeywordValue(fullName, keywordName_nul.data(), sink, &status);
+ ulocimp_getKeywordValue(fullName, keywordName_nul.data(), sink, status);
}
void
Locale::getUnicodeKeywordValue(StringPiece keywordName,
ByteSink& sink,
UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return;
+ }
+
// TODO: Remove the need for a const char* to a NUL terminated buffer.
const CharString keywordName_nul(keywordName, status);
if (U_FAILURE(status)) {
@@ -2639,17 +2620,12 @@ Locale::getUnicodeKeywordValue(StringPiece keywordName,
}
const char* legacy_key = uloc_toLegacyKey(keywordName_nul.data());
-
if (legacy_key == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- CharString legacy_value;
- {
- CharStringByteSink sink(&legacy_value);
- getKeywordValue(legacy_key, sink, status);
- }
+ auto legacy_value = getKeywordValue<CharString>(legacy_key, status);
if (U_FAILURE(status)) {
return;
@@ -2712,6 +2688,7 @@ void
Locale::setKeywordValue(StringPiece keywordName,
StringPiece keywordValue,
UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
// TODO: Remove the need for a const char* to a NUL terminated buffer.
const CharString keywordName_nul(keywordName, status);
const CharString keywordValue_nul(keywordValue, status);
@@ -2722,16 +2699,18 @@ void
Locale::setUnicodeKeywordValue(StringPiece keywordName,
StringPiece keywordValue,
UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+
// TODO: Remove the need for a const char* to a NUL terminated buffer.
const CharString keywordName_nul(keywordName, status);
const CharString keywordValue_nul(keywordValue, status);
-
if (U_FAILURE(status)) {
return;
}
const char* legacy_key = uloc_toLegacyKey(keywordName_nul.data());
-
if (legacy_key == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
diff --git a/icu4c/source/common/loclikely.cpp b/icu4c/source/common/loclikely.cpp
index eedfb8149..5aa929dc4 100644
--- a/icu4c/source/common/loclikely.cpp
+++ b/icu4c/source/common/loclikely.cpp
@@ -19,6 +19,8 @@
* that then do not depend on resource bundle code and likely-subtags data.
*/
+#include <utility>
+
#include "unicode/bytestream.h"
#include "unicode/utypes.h"
#include "unicode/locid.h"
@@ -33,72 +35,31 @@
#include "cstring.h"
#include "loclikelysubtags.h"
#include "ulocimp.h"
-#include "ustr_imp.h"
-
-/**
- * Append a tag to a buffer, adding the separator if necessary. The buffer
- * must be large enough to contain the resulting tag plus any separator
- * necessary. The tag must not be a zero-length string.
- *
- * @param tag The tag to add.
- * @param tagLength The length of the tag.
- * @param buffer The output buffer.
- * @param bufferLength The length of the output buffer. This is an input/output parameter.
- **/
-static void U_CALLCONV
-appendTag(
- const char* tag,
- int32_t tagLength,
- char* buffer,
- int32_t* bufferLength,
- UBool withSeparator) {
-
- if (withSeparator) {
- buffer[*bufferLength] = '_';
- ++(*bufferLength);
- }
-
- uprv_memmove(
- &buffer[*bufferLength],
- tag,
- tagLength);
- *bufferLength += tagLength;
-}
+namespace {
/**
* Create a tag string from the supplied parameters. The lang, script and region
* parameters may be nullptr pointers. If they are, their corresponding length parameters
* must be less than or equal to 0.
*
- * If any of the language, script or region parameters are empty, and the alternateTags
- * parameter is not nullptr, it will be parsed for potential language, script and region tags
- * to be used when constructing the new tag. If the alternateTags parameter is nullptr, or
- * it contains no language tag, the default tag for the unknown language is used.
- *
- * If the length of the new string exceeds the capacity of the output buffer,
- * the function copies as many bytes to the output buffer as it can, and returns
- * the error U_BUFFER_OVERFLOW_ERROR.
- *
* If an illegal argument is provided, the function returns the error
* U_ILLEGAL_ARGUMENT_ERROR.
*
- * Note that this function can return the warning U_STRING_NOT_TERMINATED_WARNING if
- * the tag string fits in the output buffer, but the null terminator doesn't.
- *
* @param lang The language tag to use.
* @param langLength The length of the language tag.
* @param script The script tag to use.
* @param scriptLength The length of the script tag.
* @param region The region tag to use.
* @param regionLength The length of the region tag.
+ * @param variant The region tag to use.
+ * @param variantLength The length of the region tag.
* @param trailing Any trailing data to append to the new tag.
* @param trailingLength The length of the trailing data.
- * @param alternateTags A string containing any alternate tags.
* @param sink The output sink receiving the tag string.
* @param err A pointer to a UErrorCode for error reporting.
**/
-static void U_CALLCONV
+void U_CALLCONV
createTagStringWithAlternates(
const char* lang,
int32_t langLength,
@@ -106,575 +67,240 @@ createTagStringWithAlternates(
int32_t scriptLength,
const char* region,
int32_t regionLength,
+ const char* variant,
+ int32_t variantLength,
const char* trailing,
int32_t trailingLength,
- const char* alternateTags,
icu::ByteSink& sink,
- UErrorCode* err) {
-
- if (U_FAILURE(*err)) {
- goto error;
- }
- else if (langLength >= ULOC_LANG_CAPACITY ||
- scriptLength >= ULOC_SCRIPT_CAPACITY ||
- regionLength >= ULOC_COUNTRY_CAPACITY) {
- goto error;
- }
- else {
- /**
- * ULOC_FULLNAME_CAPACITY will provide enough capacity
- * that we can build a string that contains the language,
- * script and region code without worrying about overrunning
- * the user-supplied buffer.
- **/
- char tagBuffer[ULOC_FULLNAME_CAPACITY];
- int32_t tagLength = 0;
- UBool regionAppended = false;
-
- if (langLength > 0) {
- appendTag(
- lang,
- langLength,
- tagBuffer,
- &tagLength,
- /*withSeparator=*/false);
- }
- else if (alternateTags == nullptr) {
- /*
- * Use the empty string for an unknown language, if
- * we found no language.
- */
- }
- else {
- /*
- * Parse the alternateTags string for the language.
- */
- char alternateLang[ULOC_LANG_CAPACITY];
- int32_t alternateLangLength = sizeof(alternateLang);
-
- alternateLangLength =
- uloc_getLanguage(
- alternateTags,
- alternateLang,
- alternateLangLength,
- err);
- if(U_FAILURE(*err) ||
- alternateLangLength >= ULOC_LANG_CAPACITY) {
- goto error;
- }
- else if (alternateLangLength == 0) {
- /*
- * Use the empty string for an unknown language, if
- * we found no language.
- */
- }
- else {
- appendTag(
- alternateLang,
- alternateLangLength,
- tagBuffer,
- &tagLength,
- /*withSeparator=*/false);
- }
- }
-
- if (scriptLength > 0) {
- appendTag(
- script,
- scriptLength,
- tagBuffer,
- &tagLength,
- /*withSeparator=*/true);
- }
- else if (alternateTags != nullptr) {
- /*
- * Parse the alternateTags string for the script.
- */
- char alternateScript[ULOC_SCRIPT_CAPACITY];
-
- const int32_t alternateScriptLength =
- uloc_getScript(
- alternateTags,
- alternateScript,
- sizeof(alternateScript),
- err);
-
- if (U_FAILURE(*err) ||
- alternateScriptLength >= ULOC_SCRIPT_CAPACITY) {
- goto error;
- }
- else if (alternateScriptLength > 0) {
- appendTag(
- alternateScript,
- alternateScriptLength,
- tagBuffer,
- &tagLength,
- /*withSeparator=*/true);
- }
- }
-
- if (regionLength > 0) {
- appendTag(
- region,
- regionLength,
- tagBuffer,
- &tagLength,
- /*withSeparator=*/true);
-
- regionAppended = true;
- }
- else if (alternateTags != nullptr) {
- /*
- * Parse the alternateTags string for the region.
- */
- char alternateRegion[ULOC_COUNTRY_CAPACITY];
-
- const int32_t alternateRegionLength =
- uloc_getCountry(
- alternateTags,
- alternateRegion,
- sizeof(alternateRegion),
- err);
- if (U_FAILURE(*err) ||
- alternateRegionLength >= ULOC_COUNTRY_CAPACITY) {
- goto error;
- }
- else if (alternateRegionLength > 0) {
- appendTag(
- alternateRegion,
- alternateRegionLength,
- tagBuffer,
- &tagLength,
- /*withSeparator=*/true);
-
- regionAppended = true;
- }
- }
-
- /**
- * Copy the partial tag from our internal buffer to the supplied
- * target.
- **/
- sink.Append(tagBuffer, tagLength);
-
- if (trailingLength > 0) {
- if (*trailing != '@') {
- sink.Append("_", 1);
- if (!regionAppended) {
- /* extra separator is required */
- sink.Append("_", 1);
- }
- }
-
- /*
- * Copy the trailing data into the supplied buffer.
- */
- sink.Append(trailing, trailingLength);
- }
-
+ UErrorCode& err) {
+ if (U_FAILURE(err)) {
return;
}
-error:
-
- /**
- * An overflow indicates the locale ID passed in
- * is ill-formed. If we got here, and there was
- * no previous error, it's an implicit overflow.
- **/
- if (*err == U_BUFFER_OVERFLOW_ERROR ||
- U_SUCCESS(*err)) {
- *err = U_ILLEGAL_ARGUMENT_ERROR;
+ if (langLength >= ULOC_LANG_CAPACITY ||
+ scriptLength >= ULOC_SCRIPT_CAPACITY ||
+ regionLength >= ULOC_COUNTRY_CAPACITY) {
+ err = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
-}
-/**
- * Parse the language, script, and region subtags from a tag string, and copy the
- * results into the corresponding output parameters. The buffers are null-terminated,
- * unless overflow occurs.
- *
- * The langLength, scriptLength, and regionLength parameters are input/output
- * parameters, and must contain the capacity of their corresponding buffers on
- * input. On output, they will contain the actual length of the buffers, not
- * including the null terminator.
- *
- * If the length of any of the output subtags exceeds the capacity of the corresponding
- * buffer, the function copies as many bytes to the output buffer as it can, and returns
- * the error U_BUFFER_OVERFLOW_ERROR. It will not parse any more subtags once overflow
- * occurs.
- *
- * If an illegal argument is provided, the function returns the error
- * U_ILLEGAL_ARGUMENT_ERROR.
- *
- * @param localeID The locale ID to parse.
- * @param lang The language tag buffer.
- * @param langLength The length of the language tag.
- * @param script The script tag buffer.
- * @param scriptLength The length of the script tag.
- * @param region The region tag buffer.
- * @param regionLength The length of the region tag.
- * @param err A pointer to a UErrorCode for error reporting.
- * @return The number of chars of the localeID parameter consumed.
- **/
-static int32_t U_CALLCONV
-parseTagString(
- const char* localeID,
- char* lang,
- int32_t* langLength,
- char* script,
- int32_t* scriptLength,
- char* region,
- int32_t* regionLength,
- UErrorCode* err)
-{
- const char* position = localeID;
- int32_t subtagLength = 0;
-
- if(U_FAILURE(*err) ||
- localeID == nullptr ||
- lang == nullptr ||
- langLength == nullptr ||
- script == nullptr ||
- scriptLength == nullptr ||
- region == nullptr ||
- regionLength == nullptr) {
- goto error;
+ if (langLength > 0) {
+ sink.Append(lang, langLength);
}
- subtagLength = ulocimp_getLanguage(position, &position, *err).extract(lang, *langLength, *err);
-
- /*
- * Note that we explicit consider U_STRING_NOT_TERMINATED_WARNING
- * to be an error, because it indicates the user-supplied tag is
- * not well-formed.
- */
- if(U_FAILURE(*err)) {
- goto error;
+ if (scriptLength > 0) {
+ sink.Append("_", 1);
+ sink.Append(script, scriptLength);
}
- *langLength = subtagLength;
-
- /*
- * If no language was present, use the empty string instead.
- * Otherwise, move past any separator.
- */
- if (_isIDSeparator(*position)) {
- ++position;
+ if (regionLength > 0) {
+ sink.Append("_", 1);
+ sink.Append(region, regionLength);
}
- subtagLength = ulocimp_getScript(position, &position, *err).extract(script, *scriptLength, *err);
-
- if(U_FAILURE(*err)) {
- goto error;
+ if (variantLength > 0) {
+ if (regionLength == 0) {
+ /* extra separator is required */
+ sink.Append("_", 1);
+ }
+ sink.Append("_", 1);
+ sink.Append(variant, variantLength);
}
- *scriptLength = subtagLength;
-
- if (*scriptLength > 0) {
+ if (trailingLength > 0) {
/*
- * Move past any separator.
+ * Copy the trailing data into the supplied buffer.
*/
- if (_isIDSeparator(*position)) {
- ++position;
- }
+ sink.Append(trailing, trailingLength);
}
+}
- subtagLength = ulocimp_getCountry(position, &position, *err).extract(region, *regionLength, *err);
-
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- *regionLength = subtagLength;
-
- if (*regionLength <= 0 && *position != 0 && *position != '@') {
- /* back up over consumed trailing separator */
- --position;
- }
-
-exit:
-
- return (int32_t)(position - localeID);
-
-error:
-
- /**
- * If we get here, we have no explicit error, it's the result of an
- * illegal argument.
- **/
- if (!U_FAILURE(*err)) {
- *err = U_ILLEGAL_ARGUMENT_ERROR;
+bool CHECK_TRAILING_VARIANT_SIZE(const char* variant, int32_t variantLength) {
+ int32_t count = 0;
+ for (int32_t i = 0; i < variantLength; i++) {
+ if (_isIDSeparator(variant[i])) {
+ count = 0;
+ } else if (count == 8) {
+ return false;
+ } else {
+ count++;
+ }
}
-
- goto exit;
+ return true;
}
-#define CHECK_TRAILING_VARIANT_SIZE(trailing, trailingLength) UPRV_BLOCK_MACRO_BEGIN { \
- int32_t count = 0; \
- int32_t i; \
- for (i = 0; i < trailingLength; i++) { \
- if (trailing[i] == '-' || trailing[i] == '_') { \
- count = 0; \
- if (count > 8) { \
- goto error; \
- } \
- } else if (trailing[i] == '@') { \
- break; \
- } else if (count > 8) { \
- goto error; \
- } else { \
- count++; \
- } \
- } \
-} UPRV_BLOCK_MACRO_END
-
-static UBool
+void
_uloc_addLikelySubtags(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err) {
- char lang[ULOC_LANG_CAPACITY];
- int32_t langLength = sizeof(lang);
- char script[ULOC_SCRIPT_CAPACITY];
- int32_t scriptLength = sizeof(script);
- char region[ULOC_COUNTRY_CAPACITY];
- int32_t regionLength = sizeof(region);
- const char* trailing = "";
- int32_t trailingLength = 0;
- int32_t trailingIndex = 0;
-
- if(U_FAILURE(*err)) {
- goto error;
+ UErrorCode& err) {
+ if (U_FAILURE(err)) {
+ return;
}
+
if (localeID == nullptr) {
- goto error;
+ err = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
- trailingIndex = parseTagString(
- localeID,
- lang,
- &langLength,
- script,
- &scriptLength,
- region,
- &regionLength,
- err);
- if(U_FAILURE(*err)) {
- /* Overflow indicates an illegal argument error */
- if (*err == U_BUFFER_OVERFLOW_ERROR) {
- *err = U_ILLEGAL_ARGUMENT_ERROR;
- }
-
- goto error;
- }
- if (langLength > 3) {
- goto error;
+ icu::CharString lang;
+ icu::CharString script;
+ icu::CharString region;
+ icu::CharString variant;
+ const char* trailing = nullptr;
+ ulocimp_getSubtags(localeID, &lang, &script, &region, &variant, &trailing, err);
+ if (U_FAILURE(err)) {
+ return;
}
- /* Find the length of the trailing portion. */
- while (_isIDSeparator(localeID[trailingIndex])) {
- trailingIndex++;
+ if (!CHECK_TRAILING_VARIANT_SIZE(variant.data(), variant.length())) {
+ err = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
- trailing = &localeID[trailingIndex];
- trailingLength = (int32_t)uprv_strlen(trailing);
-
- CHECK_TRAILING_VARIANT_SIZE(trailing, trailingLength);
- {
- const icu::XLikelySubtags* likelySubtags = icu::XLikelySubtags::getSingleton(*err);
- if(U_FAILURE(*err)) {
- goto error;
- }
- // We need to keep l on the stack because lsr may point into internal
- // memory of l.
- icu::Locale l = icu::Locale::createFromName(localeID);
- if (l.isBogus()) {
- goto error;
- }
- icu::LSR lsr = likelySubtags->makeMaximizedLsrFrom(l, true, *err);
- if(U_FAILURE(*err)) {
- goto error;
- }
- const char* language = lsr.language;
- if (uprv_strcmp(language, "und") == 0) {
- language = "";
- }
- createTagStringWithAlternates(
- language,
- (int32_t)uprv_strlen(language),
- lsr.script,
- (int32_t)uprv_strlen(lsr.script),
- lsr.region,
- (int32_t)uprv_strlen(lsr.region),
- trailing,
- trailingLength,
- nullptr,
- sink,
- err);
- if(U_FAILURE(*err)) {
- goto error;
+
+ if (lang.length() == 4) {
+ if (script.isEmpty()) {
+ script = std::move(lang);
+ lang.clear();
+ } else {
+ err = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
+ } else if (lang.length() > 8) {
+ err = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
- return true;
-error:
+ int32_t trailingLength = (int32_t)uprv_strlen(trailing);
- if (!U_FAILURE(*err)) {
- *err = U_ILLEGAL_ARGUMENT_ERROR;
+ const icu::LikelySubtags* likelySubtags = icu::LikelySubtags::getSingleton(err);
+ if (U_FAILURE(err)) {
+ return;
+ }
+ // We need to keep l on the stack because lsr may point into internal
+ // memory of l.
+ icu::Locale l = icu::Locale::createFromName(localeID);
+ if (l.isBogus()) {
+ err = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
- return false;
+ icu::LSR lsr = likelySubtags->makeMaximizedLsrFrom(l, true, err);
+ if (U_FAILURE(err)) {
+ return;
+ }
+ const char* language = lsr.language;
+ if (uprv_strcmp(language, "und") == 0) {
+ language = "";
+ }
+ createTagStringWithAlternates(
+ language,
+ (int32_t)uprv_strlen(language),
+ lsr.script,
+ (int32_t)uprv_strlen(lsr.script),
+ lsr.region,
+ (int32_t)uprv_strlen(lsr.region),
+ variant.data(),
+ variant.length(),
+ trailing,
+ trailingLength,
+ sink,
+ err);
}
-// Add likely subtags to the sink
-// return true if the value in the sink is produced by a match during the lookup
-// return false if the value in the sink is the same as input because there are
-// no match after the lookup.
-static UBool _ulocimp_addLikelySubtags(const char*, icu::ByteSink&, UErrorCode*);
-
-static void
+void
_uloc_minimizeSubtags(const char* localeID,
icu::ByteSink& sink,
bool favorScript,
- UErrorCode* err) {
- icu::CharString maximizedTagBuffer;
-
- char lang[ULOC_LANG_CAPACITY];
- int32_t langLength = sizeof(lang);
- char script[ULOC_SCRIPT_CAPACITY];
- int32_t scriptLength = sizeof(script);
- char region[ULOC_COUNTRY_CAPACITY];
- int32_t regionLength = sizeof(region);
- const char* trailing = "";
- int32_t trailingLength = 0;
- int32_t trailingIndex = 0;
-
- if(U_FAILURE(*err)) {
- goto error;
- }
- else if (localeID == nullptr) {
- goto error;
+ UErrorCode& err) {
+ if (U_FAILURE(err)) {
+ return;
}
- trailingIndex =
- parseTagString(
- localeID,
- lang,
- &langLength,
- script,
- &scriptLength,
- region,
- &regionLength,
- err);
- if(U_FAILURE(*err)) {
-
- /* Overflow indicates an illegal argument error */
- if (*err == U_BUFFER_OVERFLOW_ERROR) {
- *err = U_ILLEGAL_ARGUMENT_ERROR;
- }
-
- goto error;
+ if (localeID == nullptr) {
+ err = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
- /* Find the spot where the variants or the keywords begin, if any. */
- while (_isIDSeparator(localeID[trailingIndex])) {
- trailingIndex++;
+ icu::CharString lang;
+ icu::CharString script;
+ icu::CharString region;
+ icu::CharString variant;
+ const char* trailing = nullptr;
+ ulocimp_getSubtags(localeID, &lang, &script, &region, &variant, &trailing, err);
+ if (U_FAILURE(err)) {
+ return;
}
- trailing = &localeID[trailingIndex];
- trailingLength = (int32_t)uprv_strlen(trailing);
-
- CHECK_TRAILING_VARIANT_SIZE(trailing, trailingLength);
- {
- const icu::XLikelySubtags* likelySubtags = icu::XLikelySubtags::getSingleton(*err);
- if(U_FAILURE(*err)) {
- goto error;
- }
- icu::LSR lsr = likelySubtags->minimizeSubtags(
- {lang, langLength},
- {script, scriptLength},
- {region, regionLength},
- favorScript,
- *err);
- if(U_FAILURE(*err)) {
- goto error;
- }
- const char* language = lsr.language;
- if (uprv_strcmp(language, "und") == 0) {
- language = "";
- }
- createTagStringWithAlternates(
- language,
- (int32_t)uprv_strlen(language),
- lsr.script,
- (int32_t)uprv_strlen(lsr.script),
- lsr.region,
- (int32_t)uprv_strlen(lsr.region),
- trailing,
- trailingLength,
- nullptr,
- sink,
- err);
- if(U_FAILURE(*err)) {
- goto error;
- }
+ if (!CHECK_TRAILING_VARIANT_SIZE(variant.data(), variant.length())) {
+ err = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
-error:
+ int32_t trailingLength = (int32_t)uprv_strlen(trailing);
- if (!U_FAILURE(*err)) {
- *err = U_ILLEGAL_ARGUMENT_ERROR;
+ const icu::LikelySubtags* likelySubtags = icu::LikelySubtags::getSingleton(err);
+ if (U_FAILURE(err)) {
+ return;
}
+ icu::LSR lsr = likelySubtags->minimizeSubtags(
+ lang.toStringPiece(),
+ script.toStringPiece(),
+ region.toStringPiece(),
+ favorScript,
+ err);
+ if (U_FAILURE(err)) {
+ return;
+ }
+ const char* language = lsr.language;
+ if (uprv_strcmp(language, "und") == 0) {
+ language = "";
+ }
+ createTagStringWithAlternates(
+ language,
+ (int32_t)uprv_strlen(language),
+ lsr.script,
+ (int32_t)uprv_strlen(lsr.script),
+ lsr.region,
+ (int32_t)uprv_strlen(lsr.region),
+ variant.data(),
+ variant.length(),
+ trailing,
+ trailingLength,
+ sink,
+ err);
}
+} // namespace
+
U_CAPI int32_t U_EXPORT2
uloc_addLikelySubtags(const char* localeID,
char* maximizedLocaleID,
int32_t maximizedLocaleIDCapacity,
UErrorCode* status) {
- if (U_FAILURE(*status)) {
- return 0;
- }
-
- icu::CheckedArrayByteSink sink(
- maximizedLocaleID, maximizedLocaleIDCapacity);
-
- ulocimp_addLikelySubtags(localeID, sink, status);
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*status)) {
- return sink.Overflowed() ? reslen : -1;
- }
-
- if (sink.Overflowed()) {
- *status = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(
- maximizedLocaleID, maximizedLocaleIDCapacity, reslen, status);
- }
-
- return reslen;
+ return icu::ByteSinkUtil::viaByteSinkToTerminatedChars(
+ maximizedLocaleID, maximizedLocaleIDCapacity,
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ ulocimp_addLikelySubtags(localeID, sink, status);
+ },
+ *status);
}
-static UBool
-_ulocimp_addLikelySubtags(const char* localeID,
- icu::ByteSink& sink,
- UErrorCode* status) {
- icu::CharString localeBuffer;
- {
- icu::CharStringByteSink localeSink(&localeBuffer);
- ulocimp_canonicalize(localeID, localeSink, status);
- }
- if (U_SUCCESS(*status)) {
- return _uloc_addLikelySubtags(localeBuffer.data(), sink, status);
- } else {
- return false;
- }
+U_EXPORT icu::CharString
+ulocimp_addLikelySubtags(const char* localeID,
+ UErrorCode& status) {
+ return icu::ByteSinkUtil::viaByteSinkToCharString(
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ ulocimp_addLikelySubtags(localeID, sink, status);
+ },
+ status);
}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_addLikelySubtags(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* status) {
- _ulocimp_addLikelySubtags(localeID, sink, status);
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
+ icu::CharString localeBuffer = ulocimp_canonicalize(localeID, status);
+ _uloc_addLikelySubtags(localeBuffer.data(), sink, status);
}
U_CAPI int32_t U_EXPORT2
@@ -682,40 +308,32 @@ uloc_minimizeSubtags(const char* localeID,
char* minimizedLocaleID,
int32_t minimizedLocaleIDCapacity,
UErrorCode* status) {
- if (U_FAILURE(*status)) {
- return 0;
- }
-
- icu::CheckedArrayByteSink sink(
- minimizedLocaleID, minimizedLocaleIDCapacity);
-
- ulocimp_minimizeSubtags(localeID, sink, false, status);
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*status)) {
- return sink.Overflowed() ? reslen : -1;
- }
-
- if (sink.Overflowed()) {
- *status = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(
- minimizedLocaleID, minimizedLocaleIDCapacity, reslen, status);
- }
+ return icu::ByteSinkUtil::viaByteSinkToTerminatedChars(
+ minimizedLocaleID, minimizedLocaleIDCapacity,
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ ulocimp_minimizeSubtags(localeID, sink, false, status);
+ },
+ *status);
+}
- return reslen;
+U_EXPORT icu::CharString
+ulocimp_minimizeSubtags(const char* localeID,
+ bool favorScript,
+ UErrorCode& status) {
+ return icu::ByteSinkUtil::viaByteSinkToCharString(
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ ulocimp_minimizeSubtags(localeID, sink, favorScript, status);
+ },
+ status);
}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_minimizeSubtags(const char* localeID,
icu::ByteSink& sink,
bool favorScript,
- UErrorCode* status) {
- icu::CharString localeBuffer;
- {
- icu::CharStringByteSink localeSink(&localeBuffer);
- ulocimp_canonicalize(localeID, localeSink, status);
- }
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
+ icu::CharString localeBuffer = ulocimp_canonicalize(localeID, status);
_uloc_minimizeSubtags(localeBuffer.data(), sink, favorScript, status);
}
@@ -728,22 +346,16 @@ static const char LANG_DIR_STRING[] =
U_CAPI UBool U_EXPORT2
uloc_isRightToLeft(const char *locale) {
UErrorCode errorCode = U_ZERO_ERROR;
- char script[8];
- int32_t scriptLength = uloc_getScript(locale, script, UPRV_LENGTHOF(script), &errorCode);
- if (U_FAILURE(errorCode) || errorCode == U_STRING_NOT_TERMINATED_WARNING ||
- scriptLength == 0) {
+ icu::CharString lang;
+ icu::CharString script;
+ ulocimp_getSubtags(locale, &lang, &script, nullptr, nullptr, nullptr, errorCode);
+ if (U_FAILURE(errorCode) || script.isEmpty()) {
// Fastpath: We know the likely scripts and their writing direction
// for some common languages.
- errorCode = U_ZERO_ERROR;
- char lang[8];
- int32_t langLength = uloc_getLanguage(locale, lang, UPRV_LENGTHOF(lang), &errorCode);
- if (U_FAILURE(errorCode) || errorCode == U_STRING_NOT_TERMINATED_WARNING) {
- return false;
- }
- if (langLength > 0) {
- const char* langPtr = uprv_strstr(LANG_DIR_STRING, lang);
+ if (!lang.isEmpty()) {
+ const char* langPtr = uprv_strstr(LANG_DIR_STRING, lang.data());
if (langPtr != nullptr) {
- switch (langPtr[langLength]) {
+ switch (langPtr[lang.length()]) {
case '-': return false;
case '+': return true;
default: break; // partial match of a longer code
@@ -752,21 +364,16 @@ uloc_isRightToLeft(const char *locale) {
}
// Otherwise, find the likely script.
errorCode = U_ZERO_ERROR;
- icu::CharString likely;
- {
- icu::CharStringByteSink sink(&likely);
- ulocimp_addLikelySubtags(locale, sink, &errorCode);
- }
- if (U_FAILURE(errorCode) || errorCode == U_STRING_NOT_TERMINATED_WARNING) {
+ icu::CharString likely = ulocimp_addLikelySubtags(locale, errorCode);
+ if (U_FAILURE(errorCode)) {
return false;
}
- scriptLength = uloc_getScript(likely.data(), script, UPRV_LENGTHOF(script), &errorCode);
- if (U_FAILURE(errorCode) || errorCode == U_STRING_NOT_TERMINATED_WARNING ||
- scriptLength == 0) {
+ ulocimp_getSubtags(likely.data(), nullptr, &script, nullptr, nullptr, nullptr, errorCode);
+ if (U_FAILURE(errorCode) || script.isEmpty()) {
return false;
}
}
- UScriptCode scriptCode = (UScriptCode)u_getPropertyValueEnum(UCHAR_SCRIPT, script);
+ UScriptCode scriptCode = (UScriptCode)u_getPropertyValueEnum(UCHAR_SCRIPT, script.data());
return uscript_isRightToLeft(scriptCode);
}
@@ -779,65 +386,52 @@ Locale::isRightToLeft() const {
U_NAMESPACE_END
-// The following must at least allow for rg key value (6) plus terminator (1).
-#define ULOC_RG_BUFLEN 8
+namespace {
+icu::CharString
+GetRegionFromKey(const char* localeID, const char* key, UErrorCode& status) {
+ icu::CharString result;
-U_CAPI int32_t U_EXPORT2
-ulocimp_getRegionForSupplementalData(const char *localeID, UBool inferRegion,
- char *region, int32_t regionCapacity, UErrorCode* status) {
- if (U_FAILURE(*status)) {
- return 0;
- }
- char rgBuf[ULOC_RG_BUFLEN];
- UErrorCode rgStatus = U_ZERO_ERROR;
-
- // First check for rg keyword value
- icu::CharString rg;
- {
- icu::CharStringByteSink sink(&rg);
- ulocimp_getKeywordValue(localeID, "rg", sink, &rgStatus);
- }
- int32_t rgLen = rg.length();
- if (U_FAILURE(rgStatus) || rgLen < 3 || rgLen > 7) {
- rgLen = 0;
- } else {
+ // First check for keyword value
+ icu::CharString kw = ulocimp_getKeywordValue(localeID, key, status);
+ int32_t len = kw.length();
+ if (U_SUCCESS(status) && len >= 3 && len <= 7) {
// chop off the subdivision code (which will generally be "zzzz" anyway)
- const char* const data = rg.data();
+ const char* const data = kw.data();
if (uprv_isASCIILetter(data[0])) {
- rgLen = 2;
- rgBuf[0] = uprv_toupper(data[0]);
- rgBuf[1] = uprv_toupper(data[1]);
+ result.append(uprv_toupper(data[0]), status);
+ result.append(uprv_toupper(data[1]), status);
} else {
// assume three-digit region code
- rgLen = 3;
- uprv_memcpy(rgBuf, data, rgLen);
+ result.append(data, 3, status);
}
}
+ return result;
+}
+} // namespace
- if (rgLen == 0) {
+U_EXPORT icu::CharString
+ulocimp_getRegionForSupplementalData(const char *localeID, bool inferRegion,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ icu::CharString rgBuf = GetRegionFromKey(localeID, "rg", status);
+ if (U_SUCCESS(status) && rgBuf.isEmpty()) {
// No valid rg keyword value, try for unicode_region_subtag
- rgLen = uloc_getCountry(localeID, rgBuf, ULOC_RG_BUFLEN, status);
- if (U_FAILURE(*status)) {
- rgLen = 0;
- } else if (rgLen == 0 && inferRegion) {
- // no unicode_region_subtag but inferRegion true, try likely subtags
- rgStatus = U_ZERO_ERROR;
- icu::CharString locBuf;
- {
- icu::CharStringByteSink sink(&locBuf);
- ulocimp_addLikelySubtags(localeID, sink, &rgStatus);
- }
- if (U_SUCCESS(rgStatus)) {
- rgLen = uloc_getCountry(locBuf.data(), rgBuf, ULOC_RG_BUFLEN, status);
- if (U_FAILURE(*status)) {
- rgLen = 0;
+ rgBuf = ulocimp_getRegion(localeID, status);
+ if (U_SUCCESS(status) && rgBuf.isEmpty() && inferRegion) {
+ // Second check for sd keyword value
+ rgBuf = GetRegionFromKey(localeID, "sd", status);
+ if (U_SUCCESS(status) && rgBuf.isEmpty()) {
+ // no unicode_region_subtag but inferRegion true, try likely subtags
+ UErrorCode rgStatus = U_ZERO_ERROR;
+ icu::CharString locBuf = ulocimp_addLikelySubtags(localeID, rgStatus);
+ if (U_SUCCESS(rgStatus)) {
+ rgBuf = ulocimp_getRegion(locBuf.data(), status);
}
}
}
}
- rgBuf[rgLen] = 0;
- uprv_strncpy(region, rgBuf, regionCapacity);
- return u_terminateChars(region, regionCapacity, rgLen, status);
+ return rgBuf;
}
-
diff --git a/icu4c/source/common/loclikelysubtags.cpp b/icu4c/source/common/loclikelysubtags.cpp
index c2a7011b5..a750bb7b1 100644
--- a/icu4c/source/common/loclikelysubtags.cpp
+++ b/icu4c/source/common/loclikelysubtags.cpp
@@ -51,8 +51,7 @@ LocaleDistanceData::~LocaleDistanceData() {
delete[] paradigms;
}
-// TODO(ICU-20777): Rename to just LikelySubtagsData.
-struct XLikelySubtagsData {
+struct LikelySubtagsData {
UResourceBundle *langInfoBundle = nullptr;
UniqueCharStrings strings;
CharStringMap languageAliases;
@@ -63,14 +62,15 @@ struct XLikelySubtagsData {
LocaleDistanceData distanceData;
- XLikelySubtagsData(UErrorCode &errorCode) : strings(errorCode) {}
+ LikelySubtagsData(UErrorCode &errorCode) : strings(errorCode) {}
- ~XLikelySubtagsData() {
+ ~LikelySubtagsData() {
ures_close(langInfoBundle);
delete[] lsrs;
}
void load(UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return; }
langInfoBundle = ures_openDirect(nullptr, "langInfo", &errorCode);
if (U_FAILURE(errorCode)) { return; }
StackUResourceBundle stackTempBundle;
@@ -231,6 +231,7 @@ struct XLikelySubtagsData {
private:
bool readStrings(const ResourceTable &table, const char *key, ResourceValue &value,
LocalMemory<int32_t> &indexes, int32_t &length, UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return false; }
if (table.findValue(key, value)) {
ResourceArray stringArray = value.getArray(errorCode);
if (U_FAILURE(errorCode)) { return false; }
@@ -297,7 +298,7 @@ private:
}
UnicodeString toRegion(const ResourceArray& m49Array, ResourceValue &value, int encoded, UErrorCode &errorCode) {
- if (encoded == 0 || encoded == 1) {
+ if (U_FAILURE(errorCode) || encoded == 0 || encoded == 1) {
return UNICODE_STRING_SIMPLE("");
}
encoded &= 0x00ffffff;
@@ -315,6 +316,7 @@ private:
bool readLSREncodedStrings(const ResourceTable &table, const char* key, ResourceValue &value, const ResourceArray& m49Array,
LocalMemory<int32_t> &indexes, int32_t &length, UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return false; }
if (table.findValue(key, value)) {
const int32_t* vectors = value.getIntVector(length, errorCode);
if (U_FAILURE(errorCode)) { return false; }
@@ -339,7 +341,7 @@ private:
namespace {
-XLikelySubtags *gLikelySubtags = nullptr;
+LikelySubtags *gLikelySubtags = nullptr;
UVector *gMacroregions = nullptr;
UInitOnce gInitOnce {};
@@ -352,8 +354,56 @@ UBool U_CALLCONV cleanup() {
return true;
}
-static const char16_t RANGE_MARKER = 0x7E; /* '~' */
+constexpr const char16_t* MACROREGION_HARDCODE[] = {
+ u"001~3",
+ u"005",
+ u"009",
+ u"011",
+ u"013~5",
+ u"017~9",
+ u"021",
+ u"029",
+ u"030",
+ u"034~5",
+ u"039",
+ u"053~4",
+ u"057",
+ u"061",
+ u"142~3",
+ u"145",
+ u"150~1",
+ u"154~5",
+ u"202",
+ u"419",
+ u"EU",
+ u"EZ",
+ u"QO",
+ u"UN",
+};
+
+constexpr char16_t RANGE_MARKER = 0x7E; /* '~' */
+void processMacroregionRange(const UnicodeString& regionName, UVector* newMacroRegions, UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
+ int32_t rangeMarkerLocation = regionName.indexOf(RANGE_MARKER);
+ char16_t buf[6];
+ regionName.extract(buf,6,status);
+ if ( rangeMarkerLocation > 0 ) {
+ char16_t endRange = regionName.charAt(rangeMarkerLocation+1);
+ buf[rangeMarkerLocation] = 0;
+ while ( buf[rangeMarkerLocation-1] <= endRange && U_SUCCESS(status)) {
+ LocalPointer<UnicodeString> newRegion(new UnicodeString(buf), status);
+ newMacroRegions->adoptElement(newRegion.orphan(),status);
+ buf[rangeMarkerLocation-1]++;
+ }
+ } else {
+ LocalPointer<UnicodeString> newRegion(new UnicodeString(regionName), status);
+ newMacroRegions->adoptElement(newRegion.orphan(),status);
+ }
+}
+
+#if U_DEBUG
UVector* loadMacroregions(UErrorCode &status) {
+ if (U_FAILURE(status)) { return nullptr; }
LocalPointer<UVector> newMacroRegions(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
LocalUResourceBundlePointer supplementalData(ures_openDirect(nullptr,"supplementalData",&status));
@@ -365,37 +415,52 @@ UVector* loadMacroregions(UErrorCode &status) {
return nullptr;
}
- while (U_SUCCESS(status) && ures_hasNext(regionMacro.getAlias())) {
+ while (ures_hasNext(regionMacro.getAlias())) {
UnicodeString regionName = ures_getNextUnicodeString(regionMacro.getAlias(),nullptr,&status);
- int32_t rangeMarkerLocation = regionName.indexOf(RANGE_MARKER);
- char16_t buf[6];
- regionName.extract(buf,6,status);
- if ( rangeMarkerLocation > 0 ) {
- char16_t endRange = regionName.charAt(rangeMarkerLocation+1);
- buf[rangeMarkerLocation] = 0;
- while ( buf[rangeMarkerLocation-1] <= endRange && U_SUCCESS(status)) {
- LocalPointer<UnicodeString> newRegion(new UnicodeString(buf), status);
- newMacroRegions->adoptElement(newRegion.orphan(),status);
- buf[rangeMarkerLocation-1]++;
- }
- } else {
- LocalPointer<UnicodeString> newRegion(new UnicodeString(regionName), status);
- newMacroRegions->adoptElement(newRegion.orphan(),status);
+ processMacroregionRange(regionName, newMacroRegions.getAlias(), status);
+ if (U_FAILURE(status)) {
+ return nullptr;
}
}
+
+ return newMacroRegions.orphan();
+}
+#endif // U_DEBUG
+
+UVector* getStaticMacroregions(UErrorCode &status) {
+ if (U_FAILURE(status)) { return nullptr; }
+ LocalPointer<UVector> newMacroRegions(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
+
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ for (const auto *region : MACROREGION_HARDCODE) {
+ UnicodeString regionName(region);
+ processMacroregionRange(regionName, newMacroRegions.getAlias(), status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ }
+
return newMacroRegions.orphan();
}
} // namespace
-void U_CALLCONV XLikelySubtags::initLikelySubtags(UErrorCode &errorCode) {
+void U_CALLCONV LikelySubtags::initLikelySubtags(UErrorCode &errorCode) {
// This function is invoked only via umtx_initOnce().
U_ASSERT(gLikelySubtags == nullptr);
- XLikelySubtagsData data(errorCode);
+ LikelySubtagsData data(errorCode);
data.load(errorCode);
if (U_FAILURE(errorCode)) { return; }
- gLikelySubtags = new XLikelySubtags(data);
- gMacroregions = loadMacroregions(errorCode);
+ gLikelySubtags = new LikelySubtags(data);
+ gMacroregions = getStaticMacroregions(errorCode);
+#if U_DEBUG
+ auto macroregionsFromData = loadMacroregions(errorCode);
+ U_ASSERT((*gMacroregions) == (*macroregionsFromData));
+ delete macroregionsFromData;
+#endif
if (U_FAILURE(errorCode) || gLikelySubtags == nullptr || gMacroregions == nullptr) {
delete gLikelySubtags;
delete gMacroregions;
@@ -406,13 +471,13 @@ void U_CALLCONV XLikelySubtags::initLikelySubtags(UErrorCode &errorCode) {
ucln_common_registerCleanup(UCLN_COMMON_LIKELY_SUBTAGS, cleanup);
}
-const XLikelySubtags *XLikelySubtags::getSingleton(UErrorCode &errorCode) {
+const LikelySubtags *LikelySubtags::getSingleton(UErrorCode &errorCode) {
if (U_FAILURE(errorCode)) { return nullptr; }
- umtx_initOnce(gInitOnce, &XLikelySubtags::initLikelySubtags, errorCode);
+ umtx_initOnce(gInitOnce, &LikelySubtags::initLikelySubtags, errorCode);
return gLikelySubtags;
}
-XLikelySubtags::XLikelySubtags(XLikelySubtagsData &data) :
+LikelySubtags::LikelySubtags(LikelySubtagsData &data) :
langInfoBundle(data.langInfoBundle),
strings(data.strings.orphanCharStrings()),
languageAliases(std::move(data.languageAliases)),
@@ -421,7 +486,7 @@ XLikelySubtags::XLikelySubtags(XLikelySubtagsData &data) :
lsrs(data.lsrs),
#if U_DEBUG
lsrsLength(data.lsrsLength),
-#endif
+#endif // U_DEBUG
distanceData(std::move(data.distanceData)) {
data.langInfoBundle = nullptr;
data.lsrs = nullptr;
@@ -447,18 +512,19 @@ XLikelySubtags::XLikelySubtags(XLikelySubtagsData &data) :
}
}
-XLikelySubtags::~XLikelySubtags() {
+LikelySubtags::~LikelySubtags() {
ures_close(langInfoBundle);
delete strings;
delete[] lsrs;
}
-LSR XLikelySubtags::makeMaximizedLsrFrom(const Locale &locale,
+LSR LikelySubtags::makeMaximizedLsrFrom(const Locale &locale,
bool returnInputIfUnmatch,
UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return {}; }
if (locale.isBogus()) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return LSR("", "", "", LSR::EXPLICIT_LSR);
+ return {};
}
const char *name = locale.getName();
if (uprv_isAtSign(name[0]) && name[1] == 'x' && name[2] == '=') { // name.startsWith("@x=")
@@ -490,45 +556,48 @@ const char *getCanonical(const CharStringMap &aliases, const char *alias) {
} // namespace
-LSR XLikelySubtags::makeMaximizedLsr(const char *language, const char *script, const char *region,
+LSR LikelySubtags::makeMaximizedLsr(const char *language, const char *script, const char *region,
const char *variant,
bool returnInputIfUnmatch,
UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return {}; }
// Handle pseudolocales like en-XA, ar-XB, fr-PSCRACK.
// They should match only themselves,
// not other locales with what looks like the same language and script subtags.
- char c1;
- if (region[0] == 'X' && (c1 = region[1]) != 0 && region[2] == 0) {
- switch (c1) {
- case 'A':
- return LSR(PSEUDO_ACCENTS_PREFIX, language, script, region,
- LSR::EXPLICIT_LSR, errorCode);
- case 'B':
- return LSR(PSEUDO_BIDI_PREFIX, language, script, region,
- LSR::EXPLICIT_LSR, errorCode);
- case 'C':
- return LSR(PSEUDO_CRACKED_PREFIX, language, script, region,
- LSR::EXPLICIT_LSR, errorCode);
- default: // normal locale
- break;
- }
- }
-
- if (variant[0] == 'P' && variant[1] == 'S') {
- int32_t lsrFlags = *region == 0 ?
- LSR::EXPLICIT_LANGUAGE | LSR::EXPLICIT_SCRIPT : LSR::EXPLICIT_LSR;
- if (uprv_strcmp(variant, "PSACCENT") == 0) {
- return LSR(PSEUDO_ACCENTS_PREFIX, language, script,
- *region == 0 ? "XA" : region, lsrFlags, errorCode);
- } else if (uprv_strcmp(variant, "PSBIDI") == 0) {
- return LSR(PSEUDO_BIDI_PREFIX, language, script,
- *region == 0 ? "XB" : region, lsrFlags, errorCode);
- } else if (uprv_strcmp(variant, "PSCRACK") == 0) {
- return LSR(PSEUDO_CRACKED_PREFIX, language, script,
- *region == 0 ? "XC" : region, lsrFlags, errorCode);
- }
- // else normal locale
- }
+ if (!returnInputIfUnmatch) {
+ char c1;
+ if (region[0] == 'X' && (c1 = region[1]) != 0 && region[2] == 0) {
+ switch (c1) {
+ case 'A':
+ return LSR(PSEUDO_ACCENTS_PREFIX, language, script, region,
+ LSR::EXPLICIT_LSR, errorCode);
+ case 'B':
+ return LSR(PSEUDO_BIDI_PREFIX, language, script, region,
+ LSR::EXPLICIT_LSR, errorCode);
+ case 'C':
+ return LSR(PSEUDO_CRACKED_PREFIX, language, script, region,
+ LSR::EXPLICIT_LSR, errorCode);
+ default: // normal locale
+ break;
+ }
+ }
+
+ if (variant[0] == 'P' && variant[1] == 'S') {
+ int32_t lsrFlags = *region == 0 ?
+ LSR::EXPLICIT_LANGUAGE | LSR::EXPLICIT_SCRIPT : LSR::EXPLICIT_LSR;
+ if (uprv_strcmp(variant, "PSACCENT") == 0) {
+ return LSR(PSEUDO_ACCENTS_PREFIX, language, script,
+ *region == 0 ? "XA" : region, lsrFlags, errorCode);
+ } else if (uprv_strcmp(variant, "PSBIDI") == 0) {
+ return LSR(PSEUDO_BIDI_PREFIX, language, script,
+ *region == 0 ? "XB" : region, lsrFlags, errorCode);
+ } else if (uprv_strcmp(variant, "PSCRACK") == 0) {
+ return LSR(PSEUDO_CRACKED_PREFIX, language, script,
+ *region == 0 ? "XC" : region, lsrFlags, errorCode);
+ }
+ // else normal locale
+ }
+ } // end of if (!returnInputIfUnmatch)
language = getCanonical(languageAliases, language);
// (We have no script mappings.)
@@ -536,9 +605,10 @@ LSR XLikelySubtags::makeMaximizedLsr(const char *language, const char *script, c
return maximize(language, script, region, returnInputIfUnmatch, errorCode);
}
-LSR XLikelySubtags::maximize(const char *language, const char *script, const char *region,
+LSR LikelySubtags::maximize(const char *language, const char *script, const char *region,
bool returnInputIfUnmatch,
UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return {}; }
return maximize({language, (int32_t)uprv_strlen(language)},
{script, (int32_t)uprv_strlen(script)},
{region, (int32_t)uprv_strlen(region)},
@@ -546,23 +616,21 @@ LSR XLikelySubtags::maximize(const char *language, const char *script, const cha
errorCode);
}
-bool XLikelySubtags::isMacroregion(StringPiece& region, UErrorCode& errorCode) const {
+bool LikelySubtags::isMacroregion(StringPiece& region, UErrorCode& errorCode) const {
+ if (U_FAILURE(errorCode)) { return false; }
// In Java, we use Region class. In C++, since Region is under i18n,
// we read the same data used by Region into gMacroregions avoid dependency
// from common to i18n/region.cpp
- if (U_FAILURE(errorCode)) { return false; }
- umtx_initOnce(gInitOnce, &XLikelySubtags::initLikelySubtags, errorCode);
+ umtx_initOnce(gInitOnce, &LikelySubtags::initLikelySubtags, errorCode);
if (U_FAILURE(errorCode)) { return false; }
UnicodeString str(UnicodeString::fromUTF8(region));
return gMacroregions->contains((void *)&str);
}
-LSR XLikelySubtags::maximize(StringPiece language, StringPiece script, StringPiece region,
+LSR LikelySubtags::maximize(StringPiece language, StringPiece script, StringPiece region,
bool returnInputIfUnmatch,
UErrorCode &errorCode) const {
- if (U_FAILURE(errorCode)) {
- return LSR(language, script, region, LSR::EXPLICIT_LSR, errorCode);
- }
+ if (U_FAILURE(errorCode)) { return {}; }
if (language.compare("und") == 0) {
language = "";
}
@@ -681,7 +749,7 @@ LSR XLikelySubtags::maximize(StringPiece language, StringPiece script, StringPie
return LSR(language, script, region, retainMask, errorCode);
}
-int32_t XLikelySubtags::compareLikely(const LSR &lsr, const LSR &other, int32_t likelyInfo) const {
+int32_t LikelySubtags::compareLikely(const LSR &lsr, const LSR &other, int32_t likelyInfo) const {
// If likelyInfo >= 0:
// likelyInfo bit 1 is set if the previous comparison with lsr
// was for equal language and script.
@@ -723,7 +791,7 @@ int32_t XLikelySubtags::compareLikely(const LSR &lsr, const LSR &other, int32_t
}
// Subset of maximize().
-int32_t XLikelySubtags::getLikelyIndex(const char *language, const char *script) const {
+int32_t LikelySubtags::getLikelyIndex(const char *language, const char *script) const {
if (uprv_strcmp(language, "und") == 0) {
language = "";
}
@@ -781,7 +849,7 @@ int32_t XLikelySubtags::getLikelyIndex(const char *language, const char *script)
return value;
}
-int32_t XLikelySubtags::trieNext(BytesTrie &iter, const char *s, int32_t i) {
+int32_t LikelySubtags::trieNext(BytesTrie &iter, const char *s, int32_t i) {
UStringTrieResult result;
uint8_t c;
if ((c = s[i]) == 0) {
@@ -814,7 +882,7 @@ int32_t XLikelySubtags::trieNext(BytesTrie &iter, const char *s, int32_t i) {
default: return -1;
}
}
-int32_t XLikelySubtags::trieNext(BytesTrie &iter, StringPiece s, int32_t i) {
+int32_t LikelySubtags::trieNext(BytesTrie &iter, StringPiece s, int32_t i) {
UStringTrieResult result;
uint8_t c;
if (s.length() == i) {
@@ -848,14 +916,13 @@ int32_t XLikelySubtags::trieNext(BytesTrie &iter, StringPiece s, int32_t i) {
}
}
-LSR XLikelySubtags::minimizeSubtags(StringPiece language, StringPiece script,
+LSR LikelySubtags::minimizeSubtags(StringPiece language, StringPiece script,
StringPiece region,
bool favorScript,
UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return {}; }
LSR max = maximize(language, script, region, true, errorCode);
- if (U_FAILURE(errorCode)) {
- return max;
- }
+ if (U_FAILURE(errorCode)) { return {}; }
// If no match, return it.
if (uprv_strlen(max.language) == 0 &&
uprv_strlen(max.script) == 0 &&
@@ -868,9 +935,7 @@ LSR XLikelySubtags::minimizeSubtags(StringPiece language, StringPiece script,
}
// try language
LSR test = maximize(max.language, "", "", true, errorCode);
- if (U_FAILURE(errorCode)) {
- return max;
- }
+ if (U_FAILURE(errorCode)) { return {}; }
if (test.isEquivalentTo(max)) {
return LSR(max.language, "", "", LSR::DONT_CARE_FLAGS, errorCode);
}
@@ -879,27 +944,21 @@ LSR XLikelySubtags::minimizeSubtags(StringPiece language, StringPiece script,
// favor Region
// try language and region
test = maximize(max.language, "", max.region, true, errorCode);
- if (U_FAILURE(errorCode)) {
- return max;
- }
+ if (U_FAILURE(errorCode)) { return {}; }
if (test.isEquivalentTo(max)) {
return LSR(max.language, "", max.region, LSR::DONT_CARE_FLAGS, errorCode);
}
}
// try language and script
test = maximize(max.language, max.script, "", true, errorCode);
- if (U_FAILURE(errorCode)) {
- return max;
- }
+ if (U_FAILURE(errorCode)) { return {}; }
if (test.isEquivalentTo(max)) {
return LSR(max.language, max.script, "", LSR::DONT_CARE_FLAGS, errorCode);
}
if (favorScript) {
// try language and region
test = maximize(max.language, "", max.region, true, errorCode);
- if (U_FAILURE(errorCode)) {
- return max;
- }
+ if (U_FAILURE(errorCode)) { return {}; }
if (test.isEquivalentTo(max)) {
return LSR(max.language, "", max.region, LSR::DONT_CARE_FLAGS, errorCode);
}
diff --git a/icu4c/source/common/loclikelysubtags.h b/icu4c/source/common/loclikelysubtags.h
index ebd9c1530..5c51e353c 100644
--- a/icu4c/source/common/loclikelysubtags.h
+++ b/icu4c/source/common/loclikelysubtags.h
@@ -19,7 +19,7 @@
U_NAMESPACE_BEGIN
-struct XLikelySubtagsData;
+struct LikelySubtagsData;
struct LocaleDistanceData {
LocaleDistanceData() = default;
@@ -37,15 +37,14 @@ private:
LocaleDistanceData &operator=(const LocaleDistanceData &) = delete;
};
-// TODO(ICU-20777): Rename to just LikelySubtags.
-class XLikelySubtags final : public UMemory {
+class LikelySubtags final : public UMemory {
public:
- ~XLikelySubtags();
+ ~LikelySubtags();
static constexpr int32_t SKIP_SCRIPT = 1;
// VisibleForTesting
- static const XLikelySubtags *getSingleton(UErrorCode &errorCode);
+ static const LikelySubtags *getSingleton(UErrorCode &errorCode);
// VisibleForTesting
LSR makeMaximizedLsrFrom(const Locale &locale,
@@ -72,9 +71,9 @@ public:
const LocaleDistanceData &getDistanceData() const { return distanceData; }
private:
- XLikelySubtags(XLikelySubtagsData &data);
- XLikelySubtags(const XLikelySubtags &other) = delete;
- XLikelySubtags &operator=(const XLikelySubtags &other) = delete;
+ LikelySubtags(LikelySubtagsData &data);
+ LikelySubtags(const LikelySubtags &other) = delete;
+ LikelySubtags &operator=(const LikelySubtags &other) = delete;
static void initLikelySubtags(UErrorCode &errorCode);
@@ -120,7 +119,7 @@ private:
int32_t lsrsLength;
#endif
- // distance/matcher data: see comment in XLikelySubtagsData::load()
+ // distance/matcher data: see comment in LikelySubtagsData::load()
LocaleDistanceData distanceData;
};
diff --git a/icu4c/source/common/locmap.cpp b/icu4c/source/common/locmap.cpp
index e41cfd102..b95eb0442 100644
--- a/icu4c/source/common/locmap.cpp
+++ b/icu4c/source/common/locmap.cpp
@@ -28,7 +28,6 @@
*/
#include "locmap.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cstring.h"
#include "cmemory.h"
@@ -49,6 +48,8 @@
* [MS-LCID] Windows Language Code Identifier (LCID) Reference
*/
+namespace {
+
/*
////////////////////////////////////////////////
//
@@ -87,7 +88,7 @@ typedef struct ILcidPosixMap
* @param posixID posix ID of the language_TERRITORY such as 'de_CH'
*/
#define ILCID_POSIX_ELEMENT_ARRAY(hostID, languageID, posixID) \
-static const ILcidPosixElement locmap_ ## languageID [] = { \
+constexpr ILcidPosixElement locmap_ ## languageID [] = { \
{LANGUAGE_LCID(hostID), #languageID}, /* parent locale */ \
{hostID, #posixID}, \
};
@@ -97,7 +98,7 @@ static const ILcidPosixElement locmap_ ## languageID [] = { \
* @param id the POSIX ID, either a language or language_TERRITORY
*/
#define ILCID_POSIX_SUBTABLE(id) \
-static const ILcidPosixElement locmap_ ## id [] =
+constexpr ILcidPosixElement locmap_ ## id [] =
/**
@@ -796,7 +797,7 @@ ILCID_POSIX_SUBTABLE(zh) {
ILCID_POSIX_ELEMENT_ARRAY(0x0435, zu, zu_ZA)
/* This must be static and grouped by LCID. */
-static const ILcidPosixMap gPosixIDmap[] = {
+constexpr ILcidPosixMap gPosixIDmap[] = {
ILCID_POSIX_MAP(af), /* af Afrikaans 0x36 */
ILCID_POSIX_MAP(am), /* am Amharic 0x5e */
ILCID_POSIX_MAP(ar), /* ar Arabic 0x01 */
@@ -945,14 +946,14 @@ static const ILcidPosixMap gPosixIDmap[] = {
ILCID_POSIX_MAP(zu), /* zu Zulu 0x35 */
};
-static const uint32_t gLocaleCount = UPRV_LENGTHOF(gPosixIDmap);
+constexpr uint32_t gLocaleCount = UPRV_LENGTHOF(gPosixIDmap);
/**
* Do not call this function. It is called by hostID.
* The function is not private because this struct must stay as a C struct,
* and this is an internal class.
*/
-static int32_t
+int32_t
idCmp(const char* id1, const char* id2)
{
int32_t diffIdx = 0;
@@ -972,9 +973,10 @@ idCmp(const char* id1, const char* id2)
* no equivalent Windows LCID.
* @return the LCID
*/
-static uint32_t
-getHostID(const ILcidPosixMap *this_0, const char* posixID, UErrorCode* status)
+uint32_t
+getHostID(const ILcidPosixMap *this_0, const char* posixID, UErrorCode& status)
{
+ if (U_FAILURE(status)) { return locmap_root->hostID; }
int32_t bestIdx = 0;
int32_t bestIdxDiff = 0;
int32_t posixIDlen = (int32_t)uprv_strlen(posixID);
@@ -996,16 +998,16 @@ getHostID(const ILcidPosixMap *this_0, const char* posixID, UErrorCode* status)
if ((posixID[bestIdxDiff] == '_' || posixID[bestIdxDiff] == '@')
&& this_0->regionMaps[bestIdx].posixID[bestIdxDiff] == 0)
{
- *status = U_USING_FALLBACK_WARNING;
+ status = U_USING_FALLBACK_WARNING;
return this_0->regionMaps[bestIdx].hostID;
}
/*no match found */
- *status = U_ILLEGAL_ARGUMENT_ERROR;
- return this_0->regionMaps->hostID;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return locmap_root->hostID;
}
-static const char*
+const char*
getPosixID(const ILcidPosixMap *this_0, uint32_t hostID)
{
uint32_t i;
@@ -1035,19 +1037,21 @@ getPosixID(const ILcidPosixMap *this_0, uint32_t hostID)
* quz -> qu
* prs -> fa
*/
-#define FIX_LANGUAGE_ID_TAG(buffer, len) \
- if (len >= 3) { \
- if (buffer[0] == 'q' && buffer[1] == 'u' && buffer[2] == 'z') {\
- buffer[2] = 0; \
- uprv_strcat(buffer, buffer+3); \
- } else if (buffer[0] == 'p' && buffer[1] == 'r' && buffer[2] == 's') {\
- buffer[0] = 'f'; buffer[1] = 'a'; buffer[2] = 0; \
- uprv_strcat(buffer, buffer+3); \
- } \
+void FIX_LANGUAGE_ID_TAG(char* buffer, int32_t len) {
+ if (len >= 3) {
+ if (buffer[0] == 'q' && buffer[1] == 'u' && buffer[2] == 'z') {
+ buffer[2] = 0;
+ uprv_strcat(buffer, buffer+3);
+ } else if (buffer[0] == 'p' && buffer[1] == 'r' && buffer[2] == 's') {
+ buffer[0] = 'f'; buffer[1] = 'a'; buffer[2] = 0;
+ uprv_strcat(buffer, buffer+3);
+ }
}
-
+}
#endif
+} // namespace
+
U_CAPI int32_t
uprv_convertToPosix(uint32_t hostid, char *posixID, int32_t posixIDCapacity, UErrorCode* status)
{
@@ -1147,7 +1151,7 @@ uprv_convertToPosix(uint32_t hostid, char *posixID, int32_t posixIDCapacity, UEr
/* no match found */
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return -1;
+ return 0;
}
/*
@@ -1176,11 +1180,7 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status)
// Check any for keywords.
if (uprv_strchr(localeID, '@'))
{
- icu::CharString collVal;
- {
- icu::CharStringByteSink sink(&collVal);
- ulocimp_getKeywordValue(localeID, "collation", sink, status);
- }
+ icu::CharString collVal = ulocimp_getKeywordValue(localeID, "collation", *status);
if (U_SUCCESS(*status) && !collVal.isEmpty())
{
// If it contains the keyword collation, return 0 so that the LCID lookup table will be used.
@@ -1189,10 +1189,7 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status)
else
{
// If the locale ID contains keywords other than collation, just use the base name.
- {
- icu::CharStringByteSink sink(&baseName);
- ulocimp_getBaseName(localeID, sink, status);
- }
+ baseName = ulocimp_getBaseName(localeID, *status);
if (U_SUCCESS(*status) && !baseName.isEmpty())
{
mylocaleID = baseName.data();
@@ -1201,11 +1198,7 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status)
}
// this will change it from de_DE@collation=phonebook to de-DE-u-co-phonebk form
- icu::CharString asciiBCP47Tag;
- {
- icu::CharStringByteSink sink(&asciiBCP47Tag);
- ulocimp_toLanguageTag(mylocaleID, sink, false, status);
- }
+ icu::CharString asciiBCP47Tag = ulocimp_toLanguageTag(mylocaleID, false, *status);
if (U_SUCCESS(*status))
{
@@ -1253,6 +1246,14 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status)
U_CAPI uint32_t
uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status)
{
+ if (U_FAILURE(*status) ||
+ langID == nullptr ||
+ posixID == nullptr ||
+ uprv_strlen(langID) < 2 ||
+ uprv_strlen(posixID) < 2) {
+ return locmap_root->hostID;
+ }
+
// This function does the table lookup when native platform name->lcid conversion isn't available,
// or for locales that don't follow patterns the platform expects.
uint32_t low = 0;
@@ -1266,11 +1267,6 @@ uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status)
UErrorCode myStatus;
uint32_t idx;
- /* Check for incomplete id. */
- if (!langID || !posixID || uprv_strlen(langID) < 2 || uprv_strlen(posixID) < 2) {
- return 0;
- }
-
/*Binary search for the map entry for normal cases */
while (high > low) /*binary search*/{
@@ -1288,7 +1284,7 @@ uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status)
low = mid;
}
else /*we found it*/{
- return getHostID(&gPosixIDmap[mid], posixID, status);
+ return getHostID(&gPosixIDmap[mid], posixID, *status);
}
oldmid = mid;
}
@@ -1299,7 +1295,7 @@ uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status)
*/
for (idx = 0; idx < gLocaleCount; idx++ ) {
myStatus = U_ZERO_ERROR;
- value = getHostID(&gPosixIDmap[idx], posixID, &myStatus);
+ value = getHostID(&gPosixIDmap[idx], posixID, myStatus);
if (myStatus == U_ZERO_ERROR) {
return value;
}
@@ -1315,5 +1311,5 @@ uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status)
/* no match found */
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return 0; /* return international (root) */
+ return locmap_root->hostID; /* return international (root) */
}
diff --git a/icu4c/source/common/locresdata.cpp b/icu4c/source/common/locresdata.cpp
index c9d1cdddd..725e66091 100644
--- a/icu4c/source/common/locresdata.cpp
+++ b/icu4c/source/common/locresdata.cpp
@@ -24,7 +24,6 @@
#include "unicode/putil.h"
#include "unicode/uloc.h"
#include "unicode/ures.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cstring.h"
#include "ulocimp.h"
@@ -50,10 +49,10 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
int32_t *pLength,
UErrorCode *pErrorCode)
{
+ if (U_FAILURE(*pErrorCode)) { return nullptr; }
/* char localeBuffer[ULOC_FULLNAME_CAPACITY*4];*/
const char16_t *item=nullptr;
UErrorCode errorCode;
- char explicitFallbackName[ULOC_FULLNAME_CAPACITY] = {0};
/*
* open the bundle for the current locale
@@ -128,15 +127,16 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
*pErrorCode = errorCode;
break;
}
-
- u_UCharsToChars(fallbackLocale, explicitFallbackName, len);
-
+
+ icu::CharString explicitFallbackName;
+ explicitFallbackName.appendInvariantChars(fallbackLocale, len, errorCode);
+
/* guard against recursive fallback */
- if(uprv_strcmp(explicitFallbackName, locale)==0){
+ if (explicitFallbackName == locale) {
*pErrorCode = U_INTERNAL_PROGRAM_ERROR;
break;
}
- rb.adoptInstead(ures_open(path, explicitFallbackName, &errorCode));
+ rb.adoptInstead(ures_open(path, explicitFallbackName.data(), &errorCode));
if(U_FAILURE(errorCode)){
*pErrorCode = errorCode;
break;
@@ -150,63 +150,65 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
return item;
}
-static ULayoutType
+namespace {
+
+ULayoutType
_uloc_getOrientationHelper(const char* localeId,
const char* key,
- UErrorCode *status)
+ UErrorCode& status)
{
ULayoutType result = ULOC_LAYOUT_UNKNOWN;
- if (!U_FAILURE(*status)) {
- icu::CharString localeBuffer;
- {
- icu::CharStringByteSink sink(&localeBuffer);
- ulocimp_canonicalize(localeId, sink, status);
- }
+ if (U_FAILURE(status)) { return result; }
- if (!U_FAILURE(*status)) {
- int32_t length = 0;
- const char16_t* const value =
- uloc_getTableStringWithFallback(
- nullptr,
- localeBuffer.data(),
- "layout",
- nullptr,
- key,
- &length,
- status);
-
- if (!U_FAILURE(*status) && length != 0) {
- switch(value[0])
- {
- case 0x0062: /* 'b' */
- result = ULOC_LAYOUT_BTT;
- break;
- case 0x006C: /* 'l' */
- result = ULOC_LAYOUT_LTR;
- break;
- case 0x0072: /* 'r' */
- result = ULOC_LAYOUT_RTL;
- break;
- case 0x0074: /* 't' */
- result = ULOC_LAYOUT_TTB;
- break;
- default:
- *status = U_INTERNAL_PROGRAM_ERROR;
- break;
- }
- }
+ icu::CharString localeBuffer = ulocimp_canonicalize(localeId, status);
+
+ if (U_FAILURE(status)) { return result; }
+
+ int32_t length = 0;
+ const char16_t* const value =
+ uloc_getTableStringWithFallback(
+ nullptr,
+ localeBuffer.data(),
+ "layout",
+ nullptr,
+ key,
+ &length,
+ &status);
+
+ if (U_FAILURE(status)) { return result; }
+
+ if (length != 0) {
+ switch(value[0])
+ {
+ case 0x0062: /* 'b' */
+ result = ULOC_LAYOUT_BTT;
+ break;
+ case 0x006C: /* 'l' */
+ result = ULOC_LAYOUT_LTR;
+ break;
+ case 0x0072: /* 'r' */
+ result = ULOC_LAYOUT_RTL;
+ break;
+ case 0x0074: /* 't' */
+ result = ULOC_LAYOUT_TTB;
+ break;
+ default:
+ status = U_INTERNAL_PROGRAM_ERROR;
+ break;
}
}
return result;
}
+} // namespace
+
U_CAPI ULayoutType U_EXPORT2
uloc_getCharacterOrientation(const char* localeId,
UErrorCode *status)
{
- return _uloc_getOrientationHelper(localeId, "characters", status);
+ return _uloc_getOrientationHelper(localeId, "characters", *status);
}
/**
@@ -220,5 +222,5 @@ U_CAPI ULayoutType U_EXPORT2
uloc_getLineOrientation(const char* localeId,
UErrorCode *status)
{
- return _uloc_getOrientationHelper(localeId, "lines", status);
+ return _uloc_getOrientationHelper(localeId, "lines", *status);
}
diff --git a/icu4c/source/common/locutil.cpp b/icu4c/source/common/locutil.cpp
index 776d1d596..1abecef1c 100644
--- a/icu4c/source/common/locutil.cpp
+++ b/icu4c/source/common/locutil.cpp
@@ -145,9 +145,7 @@ LocaleUtility::canonicalLocaleString(const UnicodeString* id, UnicodeString& res
Locale&
LocaleUtility::initLocaleFromName(const UnicodeString& id, Locale& result)
{
- enum { BUFLEN = 128 }; // larger than ever needed
-
- if (id.isBogus() || id.length() >= BUFLEN) {
+ if (id.isBogus()) {
result.setToBogus();
} else {
/*
@@ -168,24 +166,29 @@ LocaleUtility::initLocaleFromName(const UnicodeString& id, Locale& result)
*
* There should be only at most one '@' in a locale ID.
*/
- char buffer[BUFLEN];
+ CharString buffer;
int32_t prev, i;
prev = 0;
- for(;;) {
+ UErrorCode status = U_ZERO_ERROR;
+ do {
i = id.indexOf((char16_t)0x40, prev);
if(i < 0) {
// no @ between prev and the rest of the string
- id.extract(prev, INT32_MAX, buffer + prev, BUFLEN - prev, US_INV);
+ buffer.appendInvariantChars(id.tempSubString(prev), status);
break; // done
} else {
// normal invariant-character conversion for text between @s
- id.extract(prev, i - prev, buffer + prev, BUFLEN - prev, US_INV);
+ buffer.appendInvariantChars(id.tempSubString(prev, i - prev), status);
// manually "convert" U+0040 at id[i] into '@' at buffer[i]
- buffer[i] = '@';
+ buffer.append('@', status);
prev = i + 1;
}
+ } while (U_SUCCESS(status));
+ if (U_FAILURE(status)) {
+ result.setToBogus();
+ } else {
+ result = Locale::createFromName(buffer.data());
}
- result = Locale::createFromName(buffer);
}
return result;
}
@@ -259,7 +262,7 @@ LocaleUtility::getAvailableLocaleNames(const UnicodeString& bundleID)
return htp;
}
-UBool
+bool
LocaleUtility::isFallbackOf(const UnicodeString& root, const UnicodeString& child)
{
return child.indexOf(root) == 0 &&
@@ -271,5 +274,3 @@ U_NAMESPACE_END
/* !UCONFIG_NO_SERVICE */
#endif
-
-
diff --git a/icu4c/source/common/locutil.h b/icu4c/source/common/locutil.h
index 31bfffd7a..8cf109c20 100644
--- a/icu4c/source/common/locutil.h
+++ b/icu4c/source/common/locutil.h
@@ -28,7 +28,7 @@ public:
static Locale& initLocaleFromName(const UnicodeString& id, Locale& result);
static UnicodeString& initNameFromLocale(const Locale& locale, UnicodeString& result);
static const Hashtable* getAvailableLocaleNames(const UnicodeString& bundleID);
- static UBool isFallbackOf(const UnicodeString& root, const UnicodeString& child);
+ static bool isFallbackOf(const UnicodeString& root, const UnicodeString& child);
};
U_NAMESPACE_END
diff --git a/icu4c/source/common/messagepattern.cpp b/icu4c/source/common/messagepattern.cpp
index 82cb638e4..9e318295f 100644
--- a/icu4c/source/common/messagepattern.cpp
+++ b/icu4c/source/common/messagepattern.cpp
@@ -999,7 +999,6 @@ MessagePattern::parseDouble(int32_t start, int32_t limit, UBool allowInfinity,
}
setParseError(parseError, start /*, limit*/); // Bad syntax for numeric value.
errorCode=U_PATTERN_SYNTAX_ERROR;
- return;
}
int32_t
diff --git a/icu4c/source/common/normalizer2impl.cpp b/icu4c/source/common/normalizer2impl.cpp
index cdf570d76..9c715ac3e 100644
--- a/icu4c/source/common/normalizer2impl.cpp
+++ b/icu4c/source/common/normalizer2impl.cpp
@@ -1390,8 +1390,11 @@ Normalizer2Impl::composePair(UChar32 a, UChar32 b) const {
} else if(norm16<minYesNoMappingsOnly) {
// a combines forward.
if(isJamoL(norm16)) {
+ if (b < Hangul::JAMO_V_BASE) {
+ return U_SENTINEL;
+ }
b-=Hangul::JAMO_V_BASE;
- if(0<=b && b<Hangul::JAMO_V_COUNT) {
+ if(b<Hangul::JAMO_V_COUNT) {
return
(Hangul::HANGUL_BASE+
((a-Hangul::JAMO_L_BASE)*Hangul::JAMO_V_COUNT+b)*
@@ -1400,8 +1403,11 @@ Normalizer2Impl::composePair(UChar32 a, UChar32 b) const {
return U_SENTINEL;
}
} else if(isHangulLV(norm16)) {
+ if (b <= Hangul::JAMO_T_BASE) {
+ return U_SENTINEL;
+ }
b-=Hangul::JAMO_T_BASE;
- if(0<b && b<Hangul::JAMO_T_COUNT) { // not b==0!
+ if(b<Hangul::JAMO_T_COUNT) { // not b==0!
return a+b;
} else {
return U_SENTINEL;
diff --git a/icu4c/source/common/normalizer2impl.h b/icu4c/source/common/normalizer2impl.h
index f5ede24fc..b74c2a112 100644
--- a/icu4c/source/common/normalizer2impl.h
+++ b/icu4c/source/common/normalizer2impl.h
@@ -141,12 +141,12 @@ public:
/** Constructs only; init() should be called. */
ReorderingBuffer(const Normalizer2Impl &ni, UnicodeString &dest) :
impl(ni), str(dest),
- start(NULL), reorderStart(NULL), limit(NULL),
+ start(nullptr), reorderStart(nullptr), limit(nullptr),
remainingCapacity(0), lastCC(0) {}
/** Constructs, removes the string contents, and initializes for a small initial capacity. */
ReorderingBuffer(const Normalizer2Impl &ni, UnicodeString &dest, UErrorCode &errorCode);
~ReorderingBuffer() {
- if(start!=NULL) {
+ if (start != nullptr) {
str.releaseBuffer((int32_t)(limit-start));
}
}
@@ -245,7 +245,7 @@ private:
*/
class U_COMMON_API Normalizer2Impl : public UObject {
public:
- Normalizer2Impl() : normTrie(NULL), fCanonIterData(NULL) { }
+ Normalizer2Impl() : normTrie(nullptr), fCanonIterData(nullptr) {}
virtual ~Normalizer2Impl();
void init(const int32_t *inIndexes, const UCPTrie *inTrie,
@@ -623,7 +623,7 @@ private:
const uint16_t *getMapping(uint16_t norm16) const { return extraData+(norm16>>OFFSET_SHIFT); }
const uint16_t *getCompositionsListForDecompYes(uint16_t norm16) const {
if(norm16<JAMO_L || MIN_NORMAL_MAYBE_YES<=norm16) {
- return NULL;
+ return nullptr;
} else if(norm16<minMaybeYes) {
return getMapping(norm16); // for yesYes; if Jamo L: harmless empty list
} else {
diff --git a/icu4c/source/common/propname_data.h b/icu4c/source/common/propname_data.h
index 7bdbe8ec4..579547e41 100644
--- a/icu4c/source/common/propname_data.h
+++ b/icu4c/source/common/propname_data.h
@@ -11,102 +11,104 @@
U_NAMESPACE_BEGIN
-const int32_t PropNameData::indexes[8]={0x20,0x1690,0x5337,0xae61,0xae61,0xae61,0x31,0};
+const int32_t PropNameData::indexes[8]={0x20,0x16fc,0x5471,0xb130,0xb130,0xb130,0x31,0};
-const int32_t PropNameData::valueMaps[1436]={
-6,0,0x4b,0,0xf7,0x368,0xf7,0x37e,0xf7,0x393,0xf7,0x3a9,0xf7,0x3b4,0xf7,0x3d5,
-0xf7,0x3e5,0xf7,0x3f4,0xf7,0x402,0xf7,0x426,0xf7,0x43d,0xf7,0x455,0xf7,0x46c,0xf7,0x47b,
-0xf7,0x48a,0xf7,0x49b,0xf7,0x4a9,0xf7,0x4bb,0xf7,0x4d5,0xf7,0x4f0,0xf7,0x505,0xf7,0x522,
-0xf7,0x533,0xf7,0x53e,0xf7,0x55d,0xf7,0x573,0xf7,0x584,0xf7,0x594,0xf7,0x5af,0xf7,0x5c8,
-0xf7,0x5d9,0xf7,0x5f3,0xf7,0x606,0xf7,0x616,0xf7,0x630,0xf7,0x649,0xf7,0x660,0xf7,0x674,
-0xf7,0x68a,0xf7,0x69e,0xf7,0x6b4,0xf7,0x6ce,0xf7,0x6e6,0xf7,0x702,0xf7,0x70a,0xf7,0x712,
-0xf7,0x71a,0xf7,0x722,0xf7,0x72b,0xf7,0x738,0xf7,0x74b,0xf7,0x768,0xf7,0x785,0xf7,0x7a2,
-0xf7,0x7c0,0xf7,0x7de,0xf7,0x802,0xf7,0x80f,0xf7,0x829,0xf7,0x83e,0xf7,0x859,0xf7,0x870,
-0xf7,0x887,0xf7,0x8a9,0xf7,0x8c8,0xf7,0x8e1,0xf7,0x90e,0xf7,0x947,0xf7,0x978,0xf7,0x9a7,
-0xf7,0x9d6,0xf7,0x9eb,0xf7,0xa04,0xf7,0xa2f,0xf7,0x1000,0x1019,0xa60,0x173,0xc80,0x18e,0x331c,
-0xfd,0x333b,0x2db,0x3479,0x2f1,0x34d3,0x2fb,0x3730,0x31d,0x405b,0x389,0x40cb,0x393,0x43b0,0x3c7,0x43ee,
-0x3cf,0x4f33,0x49b,0x4fb1,0x4a5,0x4fd6,0x4ab,0x4ff0,0x4b1,0x5011,0x4b8,0x502b,0xfd,0x5050,0xfd,0x5076,
-0x4bf,0x5120,0x4d5,0x5199,0x4e8,0x524b,0x503,0x5282,0x50a,0x5462,0x51e,0x58e2,0x546,0x2000,0x2001,0x5941,
-0x54e,0x3000,0x3001,0x59cd,0,0x4000,0x400e,0x59df,0,0x59e8,0,0x5a02,0,0x5a13,0,0x5a24,
-0,0x5a3a,0,0x5a43,0,0x5a60,0,0x5a7e,0,0x5a9c,0,0x5aba,0,0x5ad0,0,0x5ae4,
-0,0x5afa,0,0x7000,0x7001,0x5b13,0,0x87a,0x12,0,1,0x12,0x20,0x898,0x4a,0,
-1,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf,0x10,0x11,0x12,0x13,0x14,
-0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,
-0x54,0x5b,0x67,0x6b,0x76,0x7a,0x81,0x82,0x84,0x85,0xc8,0xca,0xd6,0xd8,0xda,0xdc,
-0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xe9,0xea,0xf0,0x2e,0x40,0x4c,0x5e,0x68,0x79,0x84,
-0x91,0x9e,0xab,0xb8,0xc5,0xd2,0xdf,0xec,0xf9,0x106,0x113,0x120,0x12d,0x13a,0x147,0x154,
-0x161,0x16e,0x17b,0x188,0x195,0x1a2,0x1af,0x1bc,0x1c9,0x1d6,0x1e3,0x1f0,0x1fd,0x20c,0x21b,0x22a,
-0x239,0x248,0x257,0x266,0x275,0x28f,0x2a3,0x2b7,0x2d2,0x2e1,0x2ea,0x2fa,0x302,0x30b,0x31a,0x323,
-0x333,0x344,0x355,0xa39,1,0,0x17,0xa6f,0xa80,0xa91,0xaa5,0xabc,0xad4,0xae6,0xafb,0xb12,
-0xb27,0xb37,0xb49,0xb66,0xb82,0xb94,0xbb1,0xbcd,0xbe9,0xbfe,0xc13,0xc2d,0xc48,0xc63,0xbdb,1,
-0,0x149,0xc8b,0xc98,0xcab,0xcd3,0xcf1,0xd0f,0xd27,0xd52,0xd7c,0xd94,0xda7,0xdba,0xdc9,0xdd8,
-0xde7,0xdf6,0xe0d,0xe1e,0xe31,0xe44,0xe51,0xe5e,0xe6d,0xe7e,0xe93,0xea4,0xeaf,0xeb8,0xec9,0xeda,
-0xeed,0xeff,0xf12,0xf25,0xf64,0xf71,0xf7e,0xf8b,0xfa0,0xfd0,0xfea,0x100b,0x1036,0x1059,0x10b7,0x10de,
-0x10f9,0x1108,0x112f,0x1157,0x117a,0x119d,0x11c7,0x11e0,0x11ff,0x1222,0x1246,0x1259,0x1273,0x129d,0x12b5,0x12dd,
-0x1306,0x1319,0x132c,0x133f,0x1366,0x1375,0x1395,0x13c3,0x13e1,0x140f,0x142b,0x1446,0x145f,0x1478,0x1499,0x14c9,
-0x14e8,0x150a,0x153e,0x156b,0x15b0,0x15d1,0x15fb,0x161c,0x1645,0x1658,0x168b,0x16a2,0x16b1,0x16c2,0x16ed,0x1704,
-0x1735,0x1763,0x17a6,0x17b1,0x17ea,0x17fb,0x180c,0x1819,0x182c,0x1866,0x188a,0x18ae,0x18e8,0x1920,0x194b,0x1963,
-0x198f,0x19bb,0x19c8,0x19d7,0x19f4,0x1a16,0x1a44,0x1a64,0x1a8b,0x1ab2,0x1ad1,0x1ae4,0x1af5,0x1b06,0x1b2b,0x1b50,
-0x1b77,0x1bab,0x1bd8,0x1bf6,0x1c09,0x1c22,0x1c5b,0x1c6a,0x1c8a,0x1cac,0x1cce,0x1ce5,0x1cfc,0x1d29,0x1d42,0x1d5b,
-0x1d8c,0x1db6,0x1dd1,0x1de4,0x1e03,0x1e0c,0x1e1f,0x1e3d,0x1e5b,0x1e6e,0x1e85,0x1e9a,0x1ecf,0x1ef3,0x1f08,0x1f17,
-0x1f2a,0x1f4e,0x1f57,0x1f7b,0x1f92,0x1fa5,0x1fb4,0x1fbf,0x1fe0,0x1ff8,0x2007,0x2016,0x2025,0x203c,0x2051,0x2066,
-0x209f,0x20b2,0x20ce,0x20d9,0x20e6,0x2114,0x2138,0x215b,0x216e,0x2190,0x21a3,0x21be,0x21e1,0x2204,0x2229,0x223a,
-0x2269,0x2296,0x22ad,0x22c8,0x22d7,0x2302,0x233a,0x2374,0x23a2,0x23b3,0x23c0,0x23e4,0x23f3,0x240f,0x2429,0x2446,
-0x247e,0x2493,0x24c0,0x24df,0x250d,0x252d,0x2561,0x2570,0x259a,0x25bd,0x25e8,0x25f3,0x2604,0x261f,0x2643,0x2650,
-0x2665,0x268c,0x26b7,0x26ee,0x2701,0x2712,0x2742,0x2753,0x2762,0x2777,0x2795,0x27a8,0x27bb,0x27d2,0x27ef,0x27fa,
-0x2803,0x2825,0x283a,0x285f,0x2876,0x289f,0x28ba,0x28cf,0x28e8,0x2909,0x293e,0x294f,0x2980,0x29a4,0x29b5,0x29ce,
-0x29d9,0x2a06,0x2a28,0x2a56,0x2a89,0x2a98,0x2aa9,0x2ac6,0x2b08,0x2b2f,0x2b3c,0x2b51,0x2b75,0x2b9b,0x2bd4,0x2be5,
-0x2c09,0x2c14,0x2c21,0x2c30,0x2c55,0x2c83,0x2c9f,0x2cbc,0x2cc9,0x2cda,0x2cf8,0x2d1b,0x2d38,0x2d45,0x2d65,0x2d82,
-0x2da3,0x2dcc,0x2ddd,0x2dfc,0x2e15,0x2e2e,0x2e3f,0x2e88,0x2e99,0x2eb2,0x2ee1,0x2f0e,0x2f33,0x2f75,0x2f91,0x2fa0,
-0x2fb7,0x2fe5,0x2ffe,0x3027,0x3041,0x307c,0x309a,0x30a9,0x30c9,0x30e4,0x3108,0x3124,0x3142,0x3160,0x3177,0x3186,
-0x3191,0x31ce,0x31e1,0x320b,0x322b,0x3259,0x327d,0x32a5,0x32ca,0x32d5,0x32ee,0x1fe5,1,0,0x12,0x3352,
-0x3362,0x3375,0x3385,0x3395,0x33a4,0x33b4,0x33c6,0x33d9,0x33eb,0x33fb,0x340b,0x341a,0x3429,0x3439,0x3446,0x3455,
-0x3469,0x20a3,1,0,6,0x348e,0x3499,0x34a6,0x34b3,0x34c0,0x34cb,0x20e7,1,0,0x1e,0x34e8,
-0x34f7,0x350c,0x3521,0x3536,0x354a,0x355b,0x356f,0x3582,0x3593,0x35ac,0x35be,0x35cf,0x35e3,0x35f6,0x360e,0x3620,
-0x362b,0x363b,0x3649,0x365e,0x3673,0x3689,0x36a3,0x36b9,0x36c9,0x36dd,0x36f1,0x3702,0x371a,0x2312,1,0,
-0x68,0x3742,0x3765,0x376e,0x377b,0x3786,0x378f,0x379a,0x37a3,0x37bc,0x37c1,0x37ca,0x37e7,0x37f0,0x37fd,0x3806,
-0x382a,0x3831,0x383a,0x384d,0x3858,0x3861,0x386c,0x3885,0x388e,0x389d,0x38a8,0x38b1,0x38bc,0x38c5,0x38cc,0x38d5,
-0x38e0,0x38e9,0x3902,0x390b,0x3918,0x3923,0x3934,0x393f,0x3954,0x396b,0x3974,0x397d,0x3996,0x39a1,0x39aa,0x39b3,
-0x39ca,0x39e7,0x39f2,0x3a03,0x3a0e,0x3a15,0x3a22,0x3a2f,0x3a5c,0x3a71,0x3a7a,0x3a95,0x3ab8,0x3ad9,0x3afa,0x3b1f,
-0x3b46,0x3b67,0x3b8a,0x3bab,0x3bd2,0x3bf3,0x3c18,0x3c37,0x3c56,0x3c75,0x3c92,0x3cb3,0x3cd4,0x3cf7,0x3d1c,0x3d3b,
-0x3d5a,0x3d7b,0x3da2,0x3dc7,0x3de6,0x3e07,0x3e2a,0x3e45,0x3e5e,0x3e79,0x3e92,0x3eaf,0x3eca,0x3ee7,0x3f06,0x3f23,
-0x3f40,0x3f5f,0x3f7c,0x3f97,0x3fb4,0x3fd1,0x4004,0x402b,0x403e,0x2675,1,0,6,0x406c,0x407b,0x408b,
-0x409b,0x40ab,0x40bc,0x26d3,1,0,0x30,0x40da,0x40e6,0x40f4,0x4103,0x4112,0x4122,0x4133,0x4147,0x415c,
-0x4172,0x4185,0x4199,0x41a9,0x41b2,0x41bd,0x41cd,0x41e9,0x41fb,0x4209,0x4218,0x4224,0x4239,0x424d,0x4260,0x426e,
-0x4282,0x4290,0x429a,0x42ac,0x42b8,0x42c6,0x42d6,0x42dd,0x42e4,0x42eb,0x42f2,0x42f9,0x430f,0x4330,0x870,0x4342,
-0x434d,0x435c,0x4365,0x4370,0x4383,0x4394,0x43a5,0x2963,1,0,4,0x43c1,0x43cc,0x43d8,0x43e2,0x2989,
-1,0,0xc8,0x43f9,0x4406,0x441b,0x4428,0x4437,0x4445,0x4454,0x4463,0x4475,0x4484,0x4492,0x44a3,0x44b2,
-0x44c1,0x44ce,0x44da,0x44e9,0x44f8,0x4502,0x450f,0x451c,0x452b,0x4539,0x4548,0x4554,0x455e,0x456a,0x457a,0x458a,
-0x4598,0x45a4,0x45b5,0x45c1,0x45cd,0x45db,0x45e8,0x45f4,0x4601,0xea4,0x460e,0x461c,0x4636,0x463f,0x464d,0x465b,
-0x4667,0x4676,0x4684,0x4692,0x469e,0x46ad,0x46bb,0x46c9,0x46d6,0x46e5,0x4700,0x470f,0x4720,0x4731,0x4744,0x4756,
-0x4765,0x4777,0x4786,0x4792,0x479d,0x1fb4,0x47aa,0x47b5,0x47c0,0x47cb,0x47d6,0x47f1,0x47fc,0x4807,0x4812,0x4825,
-0x4839,0x4844,0x4853,0x4862,0x486d,0x4878,0x4885,0x4894,0x48a2,0x48ad,0x48c8,0x48d2,0x48e3,0x48f4,0x4903,0x4914,
-0x491f,0x492a,0x4935,0x4940,0x494b,0x4956,0x4961,0x496b,0x4976,0x4986,0x4991,0x499f,0x49ac,0x49b7,0x49c6,0x49d3,
-0x49e0,0x49ef,0x49fc,0x4a0d,0x4a1f,0x4a2f,0x4a3a,0x4a4d,0x4a64,0x4a72,0x4a7f,0x4a8a,0x4a97,0x4aa8,0x4ac4,0x4ada,
-0x4ae5,0x4b02,0x4b12,0x4b21,0x4b2c,0x4b37,0x20ce,0x4b43,0x4b4e,0x4b66,0x4b76,0x4b85,0x4b93,0x4ba1,0x4bac,0x4bb7,
-0x4bcb,0x4be2,0x4bfa,0x4c0a,0x4c1a,0x4c2a,0x4c3c,0x4c47,0x4c52,0x4c5c,0x4c68,0x4c76,0x4c89,0x4c95,0x4ca2,0x4cad,
-0x4cc9,0x4cd6,0x4ce4,0x4cfd,0x29ce,0x4d0c,0x27ef,0x4d19,0x4d27,0x4d39,0x4d47,0x4d53,0x4d63,0x2c09,0x4d71,0x4d7d,
-0x4d88,0x4d93,0x4d9e,0x4db2,0x4dc0,0x4dd7,0x4de3,0x4df7,0x4e05,0x4e17,0x4e2d,0x4e3b,0x4e4d,0x4e5b,0x4e78,0x4e8a,
-0x4e97,0x4ea8,0x4eba,0x4ed4,0x4ee1,0x4ef4,0x4f05,0x3186,0x4f12,0x32ca,0x4f21,0x33e3,1,0,6,0x4f4d,
-0x4f60,0x4f70,0x4f7e,0x4f8f,0x4f9f,0x343f,0x12,0,1,0x4fc9,0x4fcf,0x344c,0x12,0,1,0x4fc9,
-0x4fcf,0x3459,1,0,3,0x4fc9,0x4fcf,0x5008,0x346f,1,0,3,0x4fc9,0x4fcf,0x5008,0x3485,
-1,0,0x12,0x5092,0x509c,0x50a8,0x50af,0x50ba,0x50bf,0x50c6,0x50cd,0x50d6,0x50db,0x50e0,0x50f0,0x870,
-0x4342,0x50fc,0x434d,0x510c,0x435c,0x352e,1,0,0xf,0x5092,0x5133,0x513d,0x5147,0x5152,0x4218,0x515c,
-0x5168,0x5170,0x5177,0x5181,0x50a8,0x50af,0x50bf,0x518b,0x35b5,1,0,0x17,0x5092,0x51a8,0x5147,0x51b4,
-0x51c1,0x51cf,0x4218,0x51da,0x50a8,0x51eb,0x50bf,0x51fa,0x5208,0x870,0x4330,0x5214,0x5225,0x4342,0x50fc,0x434d,
-0x510c,0x435c,0x5236,0x36d2,1,0,3,0x5269,0x5271,0x5279,0x36eb,1,0,0x10,0x52a2,0x52a9,
-0x52b8,0x52d9,0x52fc,0x5307,0x5326,0x533d,0x534a,0x5353,0x5372,0x53a5,0x53c0,0x53ef,0x540c,0x5431,0x3784,1,
-0,0x24,0x5480,0x548d,0x54a0,0x54ad,0x54da,0x54ff,0x5514,0x5533,0x5554,0x5581,0x55ba,0x55dd,0x5600,0x562d,
-0x5662,0x5689,0x56b2,0x56e9,0x5718,0x5739,0x575e,0x576d,0x5790,0x57a7,0x57b4,0x57c3,0x57e0,0x57f9,0x581c,0x5841,
-0x585a,0x586f,0x587e,0x588f,0x589c,0x58bd,0x3954,1,0,4,0x58fb,0x5906,0x591e,0x5936,0x3990,0x36,
-1,2,4,8,0xe,0x10,0x20,0x3e,0x40,0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,
-0x1000,0x2000,0x4000,0x7000,0x8000,0x10000,0x20000,0x40000,0x78001,0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,
-0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,0x30f80000,0x34e8,0x34f7,0x350c,0x3521,0x596f,0x3536,0x354a,0x5965,0x355b,0x356f,
-0x3582,0x5980,0x3593,0x35ac,0x35be,0x5997,0x35cf,0x35e3,0x35f6,0x59c0,0x360e,0x3620,0x362b,0x363b,0x595c,0x3649,
-0x365e,0x3673,0x3689,0x36a3,0x36b9,0x36c9,0x36dd,0x36f1,0x59b6,0x3702,0x371a,0x59a1
+const int32_t PropNameData::valueMaps[1463]={
+6,0,0x4b,0,0xfb,0x368,0xfb,0x37e,0xfb,0x393,0xfb,0x3a9,0xfb,0x3b4,0xfb,0x3d5,
+0xfb,0x3e5,0xfb,0x3f4,0xfb,0x402,0xfb,0x426,0xfb,0x43d,0xfb,0x455,0xfb,0x46c,0xfb,0x47b,
+0xfb,0x48a,0xfb,0x49b,0xfb,0x4a9,0xfb,0x4bb,0xfb,0x4d5,0xfb,0x4f0,0xfb,0x505,0xfb,0x522,
+0xfb,0x533,0xfb,0x53e,0xfb,0x55d,0xfb,0x573,0xfb,0x584,0xfb,0x594,0xfb,0x5af,0xfb,0x5c8,
+0xfb,0x5d9,0xfb,0x5f3,0xfb,0x606,0xfb,0x616,0xfb,0x630,0xfb,0x649,0xfb,0x660,0xfb,0x674,
+0xfb,0x68a,0xfb,0x69e,0xfb,0x6b4,0xfb,0x6ce,0xfb,0x6e6,0xfb,0x702,0xfb,0x70a,0xfb,0x712,
+0xfb,0x71a,0xfb,0x722,0xfb,0x72b,0xfb,0x738,0xfb,0x74b,0xfb,0x768,0xfb,0x785,0xfb,0x7a2,
+0xfb,0x7c0,0xfb,0x7de,0xfb,0x802,0xfb,0x80f,0xfb,0x829,0xfb,0x83e,0xfb,0x859,0xfb,0x870,
+0xfb,0x887,0xfb,0x8a9,0xfb,0x8c8,0xfb,0x8e1,0xfb,0x90e,0xfb,0x947,0xfb,0x978,0xfb,0x9a7,
+0xfb,0x9d6,0xfb,0x9eb,0xfb,0xa04,0xfb,0xa2f,0xfb,0x1000,0x101a,0xa60,0x177,0xc80,0x192,0x331c,
+0x101,0x333b,0x2df,0x3479,0x2f5,0x34d3,0x2ff,0x3730,0x321,0x405b,0x38d,0x40cb,0x397,0x43b0,0x3cb,0x43ee,
+0x3d3,0x4f3e,0x4a0,0x4fbc,0x4aa,0x4fe1,0x4b0,0x4ffb,0x4b6,0x501c,0x4bd,0x5036,0x101,0x505b,0x101,0x5081,
+0x4c4,0x512b,0x4da,0x51a4,0x4ed,0x5256,0x508,0x528d,0x50f,0x546d,0x523,0x58ed,0x54b,0x594c,0x553,0x2000,
+0x2001,0x5999,0x559,0x3000,0x3001,0x5a25,0,0x4000,0x400e,0x5a37,0,0x5a40,0,0x5a5a,0,0x5a6b,
+0,0x5a7c,0,0x5a92,0,0x5a9b,0,0x5ab8,0,0x5ad6,0,0x5af4,0,0x5b12,0,0x5b28,
+0,0x5b3c,0,0x5b52,0,0x7000,0x7002,0x5b6b,0,0x5b82,0x5a7,0x896,0x12,0,1,0x12,
+0x20,0x8b4,0x4a,0,1,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf,0x10,
+0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,
+0x21,0x22,0x23,0x24,0x54,0x5b,0x67,0x6b,0x76,0x7a,0x81,0x82,0x84,0x85,0xc8,0xca,
+0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xe9,0xea,0xf0,0x2e,0x40,0x4c,
+0x5e,0x68,0x79,0x84,0x91,0x9e,0xab,0xb8,0xc5,0xd2,0xdf,0xec,0xf9,0x106,0x113,0x120,
+0x12d,0x13a,0x147,0x154,0x161,0x16e,0x17b,0x188,0x195,0x1a2,0x1af,0x1bc,0x1c9,0x1d6,0x1e3,0x1f0,
+0x1fd,0x20c,0x21b,0x22a,0x239,0x248,0x257,0x266,0x275,0x28f,0x2a3,0x2b7,0x2d2,0x2e1,0x2ea,0x2fa,
+0x302,0x30b,0x31a,0x323,0x333,0x344,0x355,0xa55,1,0,0x17,0xa6f,0xa80,0xa91,0xaa5,0xabc,
+0xad4,0xae6,0xafb,0xb12,0xb27,0xb37,0xb49,0xb66,0xb82,0xb94,0xbb1,0xbcd,0xbe9,0xbfe,0xc13,0xc2d,
+0xc48,0xc63,0xbf7,1,0,0x149,0xc8b,0xc98,0xcab,0xcd3,0xcf1,0xd0f,0xd27,0xd52,0xd7c,0xd94,
+0xda7,0xdba,0xdc9,0xdd8,0xde7,0xdf6,0xe0d,0xe1e,0xe31,0xe44,0xe51,0xe5e,0xe6d,0xe7e,0xe93,0xea4,
+0xeaf,0xeb8,0xec9,0xeda,0xeed,0xeff,0xf12,0xf25,0xf64,0xf71,0xf7e,0xf8b,0xfa0,0xfd0,0xfea,0x100b,
+0x1036,0x1059,0x10b7,0x10de,0x10f9,0x1108,0x112f,0x1157,0x117a,0x119d,0x11c7,0x11e0,0x11ff,0x1222,0x1246,0x1259,
+0x1273,0x129d,0x12b5,0x12dd,0x1306,0x1319,0x132c,0x133f,0x1366,0x1375,0x1395,0x13c3,0x13e1,0x140f,0x142b,0x1446,
+0x145f,0x1478,0x1499,0x14c9,0x14e8,0x150a,0x153e,0x156b,0x15b0,0x15d1,0x15fb,0x161c,0x1645,0x1658,0x168b,0x16a2,
+0x16b1,0x16c2,0x16ed,0x1704,0x1735,0x1763,0x17a6,0x17b1,0x17ea,0x17fb,0x180c,0x1819,0x182c,0x1866,0x188a,0x18ae,
+0x18e8,0x1920,0x194b,0x1963,0x198f,0x19bb,0x19c8,0x19d7,0x19f4,0x1a16,0x1a44,0x1a64,0x1a8b,0x1ab2,0x1ad1,0x1ae4,
+0x1af5,0x1b06,0x1b2b,0x1b50,0x1b77,0x1bab,0x1bd8,0x1bf6,0x1c09,0x1c22,0x1c5b,0x1c6a,0x1c8a,0x1cac,0x1cce,0x1ce5,
+0x1cfc,0x1d29,0x1d42,0x1d5b,0x1d8c,0x1db6,0x1dd1,0x1de4,0x1e03,0x1e0c,0x1e1f,0x1e3d,0x1e5b,0x1e6e,0x1e85,0x1e9a,
+0x1ecf,0x1ef3,0x1f08,0x1f17,0x1f2a,0x1f4e,0x1f57,0x1f7b,0x1f92,0x1fa5,0x1fb4,0x1fbf,0x1fe0,0x1ff8,0x2007,0x2016,
+0x2025,0x203c,0x2051,0x2066,0x209f,0x20b2,0x20ce,0x20d9,0x20e6,0x2114,0x2138,0x215b,0x216e,0x2190,0x21a3,0x21be,
+0x21e1,0x2204,0x2229,0x223a,0x2269,0x2296,0x22ad,0x22c8,0x22d7,0x2302,0x233a,0x2374,0x23a2,0x23b3,0x23c0,0x23e4,
+0x23f3,0x240f,0x2429,0x2446,0x247e,0x2493,0x24c0,0x24df,0x250d,0x252d,0x2561,0x2570,0x259a,0x25bd,0x25e8,0x25f3,
+0x2604,0x261f,0x2643,0x2650,0x2665,0x268c,0x26b7,0x26ee,0x2701,0x2712,0x2742,0x2753,0x2762,0x2777,0x2795,0x27a8,
+0x27bb,0x27d2,0x27ef,0x27fa,0x2803,0x2825,0x283a,0x285f,0x2876,0x289f,0x28ba,0x28cf,0x28e8,0x2909,0x293e,0x294f,
+0x2980,0x29a4,0x29b5,0x29ce,0x29d9,0x2a06,0x2a28,0x2a56,0x2a89,0x2a98,0x2aa9,0x2ac6,0x2b08,0x2b2f,0x2b3c,0x2b51,
+0x2b75,0x2b9b,0x2bd4,0x2be5,0x2c09,0x2c14,0x2c21,0x2c30,0x2c55,0x2c83,0x2c9f,0x2cbc,0x2cc9,0x2cda,0x2cf8,0x2d1b,
+0x2d38,0x2d45,0x2d65,0x2d82,0x2da3,0x2dcc,0x2ddd,0x2dfc,0x2e15,0x2e2e,0x2e3f,0x2e88,0x2e99,0x2eb2,0x2ee1,0x2f0e,
+0x2f33,0x2f75,0x2f91,0x2fa0,0x2fb7,0x2fe5,0x2ffe,0x3027,0x3041,0x307c,0x309a,0x30a9,0x30c9,0x30e4,0x3108,0x3124,
+0x3142,0x3160,0x3177,0x3186,0x3191,0x31ce,0x31e1,0x320b,0x322b,0x3259,0x327d,0x32a5,0x32ca,0x32d5,0x32ee,0x2001,
+1,0,0x12,0x3352,0x3362,0x3375,0x3385,0x3395,0x33a4,0x33b4,0x33c6,0x33d9,0x33eb,0x33fb,0x340b,0x341a,
+0x3429,0x3439,0x3446,0x3455,0x3469,0x20bf,1,0,6,0x348e,0x3499,0x34a6,0x34b3,0x34c0,0x34cb,0x2103,
+1,0,0x1e,0x34e8,0x34f7,0x350c,0x3521,0x3536,0x354a,0x355b,0x356f,0x3582,0x3593,0x35ac,0x35be,0x35cf,
+0x35e3,0x35f6,0x360e,0x3620,0x362b,0x363b,0x3649,0x365e,0x3673,0x3689,0x36a3,0x36b9,0x36c9,0x36dd,0x36f1,0x3702,
+0x371a,0x232e,1,0,0x68,0x3742,0x3765,0x376e,0x377b,0x3786,0x378f,0x379a,0x37a3,0x37bc,0x37c1,0x37ca,
+0x37e7,0x37f0,0x37fd,0x3806,0x382a,0x3831,0x383a,0x384d,0x3858,0x3861,0x386c,0x3885,0x388e,0x389d,0x38a8,0x38b1,
+0x38bc,0x38c5,0x38cc,0x38d5,0x38e0,0x38e9,0x3902,0x390b,0x3918,0x3923,0x3934,0x393f,0x3954,0x396b,0x3974,0x397d,
+0x3996,0x39a1,0x39aa,0x39b3,0x39ca,0x39e7,0x39f2,0x3a03,0x3a0e,0x3a15,0x3a22,0x3a2f,0x3a5c,0x3a71,0x3a7a,0x3a95,
+0x3ab8,0x3ad9,0x3afa,0x3b1f,0x3b46,0x3b67,0x3b8a,0x3bab,0x3bd2,0x3bf3,0x3c18,0x3c37,0x3c56,0x3c75,0x3c92,0x3cb3,
+0x3cd4,0x3cf7,0x3d1c,0x3d3b,0x3d5a,0x3d7b,0x3da2,0x3dc7,0x3de6,0x3e07,0x3e2a,0x3e45,0x3e5e,0x3e79,0x3e92,0x3eaf,
+0x3eca,0x3ee7,0x3f06,0x3f23,0x3f40,0x3f5f,0x3f7c,0x3f97,0x3fb4,0x3fd1,0x4004,0x402b,0x403e,0x2691,1,0,
+6,0x406c,0x407b,0x408b,0x409b,0x40ab,0x40bc,0x26ef,1,0,0x30,0x40da,0x40e6,0x40f4,0x4103,0x4112,
+0x4122,0x4133,0x4147,0x415c,0x4172,0x4185,0x4199,0x41a9,0x41b2,0x41bd,0x41cd,0x41e9,0x41fb,0x4209,0x4218,0x4224,
+0x4239,0x424d,0x4260,0x426e,0x4282,0x4290,0x429a,0x42ac,0x42b8,0x42c6,0x42d6,0x42dd,0x42e4,0x42eb,0x42f2,0x42f9,
+0x430f,0x4330,0x870,0x4342,0x434d,0x435c,0x4365,0x4370,0x4383,0x4394,0x43a5,0x297f,1,0,4,0x43c1,
+0x43cc,0x43d8,0x43e2,0x29a5,1,0,0xc9,0x43f9,0x4406,0x441b,0x4428,0x4437,0x4445,0x4454,0x4463,0x4475,
+0x4484,0x4492,0x44a3,0x44b2,0x44c1,0x44ce,0x44da,0x44e9,0x44f8,0x4502,0x450f,0x451c,0x452b,0x4539,0x4548,0x4554,
+0x455e,0x456a,0x457a,0x458a,0x4598,0x45a4,0x45b5,0x45c1,0x45cd,0x45db,0x45e8,0x45f4,0x4601,0xea4,0x460e,0x461c,
+0x4636,0x463f,0x464d,0x465b,0x4667,0x4676,0x4684,0x4692,0x469e,0x46ad,0x46bb,0x46c9,0x46d6,0x46e5,0x4700,0x470f,
+0x4720,0x4731,0x4744,0x4756,0x4765,0x4777,0x4786,0x4792,0x479d,0x1fb4,0x47aa,0x47b5,0x47c0,0x47cb,0x47d6,0x47f1,
+0x47fc,0x4807,0x4812,0x4825,0x4839,0x4844,0x4853,0x4862,0x486d,0x4878,0x4885,0x4894,0x48a2,0x48ad,0x48c8,0x48d2,
+0x48e3,0x48f4,0x4903,0x4914,0x491f,0x492a,0x4935,0x4940,0x494b,0x4956,0x4961,0x496b,0x4976,0x4986,0x4991,0x499f,
+0x49ac,0x49b7,0x49c6,0x49d3,0x49e0,0x49ef,0x49fc,0x4a0d,0x4a1f,0x4a2f,0x4a3a,0x4a4d,0x4a64,0x4a72,0x4a7f,0x4a8a,
+0x4a97,0x4aa8,0x4ac4,0x4ada,0x4ae5,0x4b02,0x4b12,0x4b21,0x4b2c,0x4b37,0x20ce,0x4b43,0x4b4e,0x4b66,0x4b76,0x4b85,
+0x4b93,0x4ba1,0x4bac,0x4bb7,0x4bcb,0x4be2,0x4bfa,0x4c0a,0x4c1a,0x4c2a,0x4c3c,0x4c47,0x4c52,0x4c5c,0x4c68,0x4c76,
+0x4c89,0x4c95,0x4ca2,0x4cad,0x4cc9,0x4cd6,0x4ce4,0x4cfd,0x29ce,0x4d0c,0x27ef,0x4d19,0x4d27,0x4d39,0x4d47,0x4d53,
+0x4d63,0x2c09,0x4d71,0x4d7d,0x4d88,0x4d93,0x4d9e,0x4db2,0x4dc0,0x4dd7,0x4de3,0x4df7,0x4e05,0x4e17,0x4e2d,0x4e3b,
+0x4e4d,0x4e5b,0x4e78,0x4e8a,0x4e97,0x4ea8,0x4eba,0x4ed4,0x4ee1,0x4ef4,0x4f05,0x3186,0x4f12,0x32ca,0x4f21,0x4f33,
+0x3403,1,0,6,0x4f58,0x4f6b,0x4f7b,0x4f89,0x4f9a,0x4faa,0x345f,0x12,0,1,0x4fd4,0x4fda,
+0x346c,0x12,0,1,0x4fd4,0x4fda,0x3479,1,0,3,0x4fd4,0x4fda,0x5013,0x348f,1,0,
+3,0x4fd4,0x4fda,0x5013,0x34a5,1,0,0x12,0x509d,0x50a7,0x50b3,0x50ba,0x50c5,0x50ca,0x50d1,0x50d8,
+0x50e1,0x50e6,0x50eb,0x50fb,0x870,0x4342,0x5107,0x434d,0x5117,0x435c,0x354e,1,0,0xf,0x509d,0x513e,
+0x5148,0x5152,0x515d,0x4218,0x5167,0x5173,0x517b,0x5182,0x518c,0x50b3,0x50ba,0x50ca,0x5196,0x35d5,1,0,
+0x17,0x509d,0x51b3,0x5152,0x51bf,0x51cc,0x51da,0x4218,0x51e5,0x50b3,0x51f6,0x50ca,0x5205,0x5213,0x870,0x4330,
+0x521f,0x5230,0x4342,0x5107,0x434d,0x5117,0x435c,0x5241,0x36f2,1,0,3,0x5274,0x527c,0x5284,0x370b,
+1,0,0x10,0x52ad,0x52b4,0x52c3,0x52e4,0x5307,0x5312,0x5331,0x5348,0x5355,0x535e,0x537d,0x53b0,0x53cb,
+0x53fa,0x5417,0x543c,0x37a4,1,0,0x24,0x548b,0x5498,0x54ab,0x54b8,0x54e5,0x550a,0x551f,0x553e,0x555f,
+0x558c,0x55c5,0x55e8,0x560b,0x5638,0x566d,0x5694,0x56bd,0x56f4,0x5723,0x5744,0x5769,0x5778,0x579b,0x57b2,0x57bf,
+0x57ce,0x57eb,0x5804,0x5827,0x584c,0x5865,0x587a,0x5889,0x589a,0x58a7,0x58c8,0x3974,1,0,4,0x5906,
+0x5911,0x5929,0x5941,0x39b0,0x12,0,1,0x5971,0x5988,0x39c7,0x36,1,2,4,8,0xe,
+0x10,0x20,0x3e,0x40,0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,0x1000,0x2000,0x4000,0x7000,0x8000,
+0x10000,0x20000,0x40000,0x78001,0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,
+0x30f80000,0x34e8,0x34f7,0x350c,0x3521,0x59c7,0x3536,0x354a,0x59bd,0x355b,0x356f,0x3582,0x59d8,0x3593,0x35ac,0x35be,
+0x59ef,0x35cf,0x35e3,0x35f6,0x5a18,0x360e,0x3620,0x362b,0x363b,0x59b4,0x3649,0x365e,0x3673,0x3689,0x36a3,0x36b9,
+0x36c9,0x36dd,0x36f1,0x5a0e,0x3702,0x371a,0x59f9,0x3cde,1,0,0xc,0x5ba3,0x5bc0,0x5bd7,0x5bfc,0x5c0f,
+0x5c20,0x5c35,0x5c48,0x5c5d,0x5c78,0x5c91,0x5ca6
};
-const uint8_t PropNameData::bytesTries[15527]={
+const uint8_t PropNameData::bytesTries[15733]={
0,0x15,0x6d,0xc3,0xc7,0x73,0xc2,0x12,0x76,0x7a,0x76,0x6a,0x77,0xa2,0x52,0x78,
1,0x64,0x50,0x69,0x10,0x64,1,0x63,0x30,0x73,0x62,0x13,0x74,0x61,0x72,0x74,
0x63,0x60,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x61,0x13,0x69,0x67,0x69,0x74,
@@ -167,15 +169,15 @@ const uint8_t PropNameData::bytesTries[15527]={
0x30,0x77,0x10,0x73,0x77,0x11,0x79,0x6e,0x75,0x12,0x65,0x72,0x6e,1,0x73,0x38,
0x77,0x18,0x68,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x77,0x14,0x79,0x6e,0x74,
0x61,0x78,0x75,0x10,0x6d,0x9f,1,0x6d,0x3c,0x75,0x1a,0x6f,0x74,0x61,0x74,0x69,
-0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x53,0x12,0x61,0x72,0x6b,0x53,0x66,0xc2,0x2e,0x69,
-0xc1,0x72,0x69,0xa2,0x6f,0x6a,0xa4,0x3f,0x6c,4,0x62,0xc3,8,0x63,0x8c,0x65,
+0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x53,0x12,0x61,0x72,0x6b,0x53,0x66,0xc2,0x4a,0x69,
+0xc1,0x8e,0x69,0xa2,0x6f,0x6a,0xa4,0x5b,0x6c,4,0x62,0xc3,8,0x63,0x8c,0x65,
0x98,0x69,0xa2,0x56,0x6f,2,0x65,0x4b,0x67,0x4c,0x77,0x11,0x65,0x72,0x4c,0x13,
0x63,0x61,0x73,0x65,0x4c,0x16,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40,4,
0x11,0x69,0x63,0x1f,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,0x65,0x78,0x63,0x65,0x70,
0x74,0x69,0x6f,0x6e,0x4b,0xd8,0x40,4,0x11,0x63,0x63,0xc3,0x10,0x18,0x61,0x64,
0x63,0x61,0x6e,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,0x62,0x69,0x6e,
0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,0x10,0x16,0x6e,0x65,0x62,0x72,0x65,
-0x61,0x6b,0xc3,8,2,0x64,0x4a,0x6e,0xa2,0x91,0x73,1,0x63,0xd9,0x40,3,
+0x61,0x6b,0xc3,8,2,0x64,0x4a,0x6e,0xa2,0xad,0x73,1,0x63,0xd9,0x40,3,
0x6f,0x16,0x63,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0xd9,0x40,3,2,0x63,0xa2,0x44,
0x65,0xa2,0x6c,0x73,0x40,2,0x62,0x48,0x74,0x64,0x75,0xa2,0x48,0x1b,0x6e,0x61,
0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0xa3,0x48,0x44,0x1c,0x69,0x6e,
@@ -183,750 +185,752 @@ const uint8_t PropNameData::bytesTries[15527]={
0x72,0x1c,0x69,0x6e,0x61,0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x47,
0x11,0x72,0x74,0x41,0x3e,0x10,0x6f,1,0x6d,0x30,0x6e,0x14,0x74,0x69,0x6e,0x75,
0x65,0x3f,0x16,0x70,0x61,0x74,0x6d,0x61,0x74,0x68,1,0x63,0x30,0x73,0x13,0x74,
-0x61,0x72,0x74,0xa3,0x49,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0xa3,0x4a,0x10,
-0x6f,0x42,0x16,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x43,2,0x64,0x2e,0x70,0x86,
-0x73,0x10,0x63,0xc3,0x17,0x11,0x69,0x63,1,0x70,0x46,0x73,0x1e,0x79,0x6c,0x6c,
-0x61,0x62,0x69,0x63,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x17,0x10,0x6f,
-0x1f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,
-0x79,0xc3,0x16,0x10,0x63,0xc3,0x16,2,0x67,0xc3,6,0x6f,0x26,0x74,0xc3,7,
-0x11,0x69,0x6e,1,0x63,0x4a,0x69,0x11,0x6e,0x67,1,0x67,0x2e,0x74,0x12,0x79,
-0x70,0x65,0xc3,7,0x13,0x72,0x6f,0x75,0x70,0xc3,6,0x48,0x15,0x6f,0x6e,0x74,
-0x72,0x6f,0x6c,0x49,0x66,0x86,0x67,0xa2,0x4a,0x68,3,0x61,0x36,0x65,0x58,0x73,
-0x68,0x79,0x13,0x70,0x68,0x65,0x6e,0x3d,0x1f,0x6e,0x67,0x75,0x6c,0x73,0x79,0x6c,
-0x6c,0x61,0x62,0x6c,0x65,0x74,0x79,0x70,0x65,0xc3,0xb,0x10,0x78,0x3a,0x14,0x64,
-0x69,0x67,0x69,0x74,0x3b,0x10,0x74,0xc3,0xb,0x16,0x75,0x6c,0x6c,0x63,0x6f,0x6d,
-0x70,0x1f,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x78,0x63,0x6c,0x75,0x73,0x69,
-0x6f,0x6e,0x33,2,0x63,0xa2,0x44,0x65,0xa2,0x4b,0x72,3,0x61,0x34,0x62,0x84,
-0x65,0x8a,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x11,0x70,0x68,0x7c,0x12,0x65,0x6d,0x65,
-3,0x62,0x5e,0x63,0x30,0x65,0x48,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x1a,0x6c,0x75,
-0x73,0x74,0x65,0x72,0x62,0x72,0x65,0x61,0x6b,0xc3,0x12,0x14,0x78,0x74,0x65,0x6e,
-0x64,0x37,0x12,0x61,0x73,0x65,0x35,0x11,0x78,0x74,0x37,0xc2,5,1,0x62,0xc3,
-0x12,0x6d,0xd9,0x20,0,0x1c,0x6e,0x65,0x72,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,
-0x6f,0x72,0x79,0xc2,5,0x13,0x6d,0x61,0x73,0x6b,0xd9,0x20,0,0x61,0xa2,0xa2,
-0x62,0xa2,0xd0,0x63,0xa4,0x4f,0x64,0xa6,0x1c,0x65,5,0x6d,0x75,0x6d,0x6e,0x70,
-0xa2,0x6b,0x78,0x10,0x74,0x30,1,0x65,0x2c,0x70,0x12,0x69,0x63,0x74,0xa1,0x12,
-0x6e,0x64,0x65,1,0x64,0x24,0x72,0x31,0x1b,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,
-0x61,0x70,0x68,0x69,0x63,0xa1,0x10,0x6f,1,0x64,0x97,0x6a,0x10,0x69,0x92,3,
-0x63,0x44,0x6b,0x54,0x6d,0x70,0x70,0x1a,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,
-0x69,0x6f,0x6e,0x95,0x17,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x9b,0x1c,0x65,
-0x79,0x63,0x61,0x70,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0xa3,0x42,0x16,0x6f,
-0x64,0x69,0x66,0x69,0x65,0x72,0x96,0x13,0x62,0x61,0x73,0x65,0x99,0x12,0x72,0x65,
-0x73,0x95,0x61,0x30,0x62,0x4e,0x63,0x12,0x6f,0x6d,0x70,0x9b,0xc2,4,0x1b,0x73,
-0x74,0x61,0x73,0x69,0x61,0x6e,0x77,0x69,0x64,0x74,0x68,0xc3,4,0x12,0x61,0x73,
-0x65,0x99,3,0x67,0x44,0x68,0x4a,0x6c,0x4e,0x73,0x1a,0x63,0x69,0x69,0x68,0x65,
-0x78,0x64,0x69,0x67,0x69,0x74,0x23,0x10,0x65,0xd9,0x40,0,0x11,0x65,0x78,0x23,
-1,0x6e,0x38,0x70,0x11,0x68,0x61,0x20,0x14,0x62,0x65,0x74,0x69,0x63,0x21,0x11,
-0x75,0x6d,0x79,5,0x6c,0x22,0x6c,0x36,0x6d,0x52,0x70,1,0x62,0xd9,0x40,0xd,
-0x74,0xc3,0x15,2,0x61,0x32,0x6b,0xc3,1,0x6f,0x11,0x63,0x6b,0xc3,1,0x11,
-0x6e,0x6b,0x7b,0x10,0x67,0xd9,0x40,1,0x61,0xa2,0x4f,0x63,0xc3,0,0x69,0x11,
-0x64,0x69,2,0x63,0x54,0x6d,0x74,0x70,0x1b,0x61,0x69,0x72,0x65,0x64,0x62,0x72,
-0x61,0x63,0x6b,0x65,0x74,0xd8,0x40,0xd,0x13,0x74,0x79,0x70,0x65,0xc3,0x15,0x24,
-1,0x6c,0x30,0x6f,0x14,0x6e,0x74,0x72,0x6f,0x6c,0x25,0x12,0x61,0x73,0x73,0xc3,
-0,0x26,0x14,0x69,0x72,0x72,0x6f,0x72,1,0x65,0x38,0x69,0x16,0x6e,0x67,0x67,
-0x6c,0x79,0x70,0x68,0xd9,0x40,1,0x10,0x64,0x27,0x17,0x73,0x69,0x63,0x65,0x6d,
-0x6f,0x6a,0x69,0xa3,0x41,6,0x68,0x7c,0x68,0x54,0x69,0x85,0x6f,0xa2,0x6f,0x77,
-4,0x63,0x30,0x6b,0x36,0x6c,0x87,0x74,0x8b,0x75,0x89,1,0x66,0x8d,0x6d,0x8f,
-0x11,0x63,0x66,0x91,0x18,0x61,0x6e,0x67,0x65,0x73,0x77,0x68,0x65,0x6e,4,0x63,
-0x44,0x6c,0x6c,0x6e,0x7e,0x74,0x98,0x75,0x18,0x70,0x70,0x65,0x72,0x63,0x61,0x73,
-0x65,0x64,0x89,0x12,0x61,0x73,0x65,1,0x66,0x30,0x6d,0x14,0x61,0x70,0x70,0x65,
-0x64,0x8f,0x14,0x6f,0x6c,0x64,0x65,0x64,0x8d,0x18,0x6f,0x77,0x65,0x72,0x63,0x61,
-0x73,0x65,0x64,0x87,0x1c,0x66,0x6b,0x63,0x63,0x61,0x73,0x65,0x66,0x6f,0x6c,0x64,
-0x65,0x64,0x91,0x18,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x64,0x8b,0x13,0x6d,
-0x70,0x65,0x78,0x33,0x61,0x2e,0x63,0xa2,0x48,0x66,0xd9,0x40,2,1,0x6e,0x72,
-0x73,0x10,0x65,3,0x64,0x83,0x66,0x3a,0x69,0x4a,0x73,0x17,0x65,0x6e,0x73,0x69,
-0x74,0x69,0x76,0x65,0x65,0x15,0x6f,0x6c,0x64,0x69,0x6e,0x67,0xd9,0x40,2,0x17,
-0x67,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,0x85,0x13,0x6f,0x6e,0x69,0x63,0x1f,0x61,
-0x6c,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,
-2,0x10,0x63,0xc3,2,3,0x61,0x30,0x65,0x34,0x69,0xa2,0x41,0x74,0xc3,3,
-0x11,0x73,0x68,0x29,2,0x63,0x3a,0x66,0x58,0x70,0x2c,0x16,0x72,0x65,0x63,0x61,
-0x74,0x65,0x64,0x2d,0x1d,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x74,
-0x79,0x70,0x65,0xc3,3,0x15,0x61,0x75,0x6c,0x74,0x69,0x67,0x1f,0x6e,0x6f,0x72,
-0x61,0x62,0x6c,0x65,0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x2b,0x2a,0x10,
-0x61,0x2e,0x15,0x63,0x72,0x69,0x74,0x69,0x63,0x2f,3,0x66,0x34,0x6e,0x3e,0x74,
-0x42,0x79,0x22,0x11,0x65,0x73,0x23,0x20,0x13,0x61,0x6c,0x73,0x65,0x21,0x20,0x10,
-0x6f,0x21,0x22,0x12,0x72,0x75,0x65,0x23,0xb,0x6b,0x5b,0x6f,0x23,0x6f,0x3c,0x72,
-0x4c,0x76,1,0x69,0x24,0x72,0x33,0x13,0x72,0x61,0x6d,0x61,0x33,0x10,0x76,0x22,
-0x14,0x65,0x72,0x6c,0x61,0x79,0x23,0xa2,0xe2,0x13,0x69,0x67,0x68,0x74,0xa3,0xe2,
-0x6b,0x58,0x6c,0x74,0x6e,3,0x6b,0x2f,0x6f,0x30,0x72,0x21,0x75,0x12,0x6b,0x74,
-0x61,0x2f,0x19,0x74,0x72,0x65,0x6f,0x72,0x64,0x65,0x72,0x65,0x64,0x21,1,0x61,
-0x24,0x76,0x31,0x18,0x6e,0x61,0x76,0x6f,0x69,0x63,0x69,0x6e,0x67,0x31,0xa2,0xe0,
-0x12,0x65,0x66,0x74,0xa3,0xe0,0x64,0x45,0x64,0x4e,0x68,0x88,0x69,1,0x6f,0x26,
-0x73,0xa3,0xf0,0x1a,0x74,0x61,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,
-0xf0,2,0x61,0xa3,0xea,0x62,0xa3,0xe9,0x6f,0x13,0x75,0x62,0x6c,0x65,1,0x61,
-0x30,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa3,0xe9,0x13,0x62,0x6f,0x76,0x65,0xa3,0xea,
-0x12,0x61,0x6e,0x72,0x2c,0x15,0x65,0x61,0x64,0x69,0x6e,0x67,0x2d,0x61,0xa2,0x7b,
-0x62,0xa2,0xd4,0x63,0x11,0x63,0x63,4,0x31,0x3c,0x32,0xa2,0x42,0x33,0xa2,0x56,
-0x38,0xa2,0x64,0x39,0x10,0x31,0xa3,0x5b,9,0x35,0xa,0x35,0x3f,0x36,0x41,0x37,
-0x43,0x38,0x45,0x39,0x47,0x30,0x30,0x31,0x3c,0x32,0x42,0x33,0x4e,0x34,0x3d,0x34,
-1,0x33,0xa3,0x67,0x37,0xa3,0x6b,0x36,0x10,0x38,0xa3,0x76,0x38,1,0x32,0xa3,
-0x7a,0x39,0xa3,0x81,0x3a,2,0x30,0xa3,0x82,0x32,0xa3,0x84,0x33,0xa3,0x85,9,
-0x35,0xa,0x35,0x53,0x36,0x55,0x37,0x57,0x38,0x59,0x39,0x5b,0x30,0x49,0x31,0x4b,
-0x32,0x4d,0x33,0x4f,0x34,0x51,6,0x33,8,0x33,0x63,0x34,0x65,0x35,0x67,0x36,
-0x69,0x30,0x5d,0x31,0x5f,0x32,0x61,0x10,0x34,0xa3,0x54,0xa2,0xe6,3,0x62,0xa0,
-0x6c,0xa3,0xe4,0x72,0xa3,0xe8,0x74,2,0x61,0x74,0x62,0x7c,0x74,0x14,0x61,0x63,
-0x68,0x65,0x64,1,0x61,0x3e,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa2,0xca,0x13,0x6c,
-0x65,0x66,0x74,0xa3,0xc8,0x13,0x62,0x6f,0x76,0x65,0xa2,0xd6,0x14,0x72,0x69,0x67,
-0x68,0x74,0xa3,0xd8,0xa2,0xd6,0x10,0x72,0xa3,0xd8,0xa2,0xca,0x10,0x6c,0xa3,0xc8,
-0x12,0x6f,0x76,0x65,0xa2,0xe6,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,
-0xe8,0x12,0x65,0x66,0x74,0xa3,0xe4,0xa2,0xdc,2,0x65,0x2c,0x6c,0xa3,0xda,0x72,
-0xa3,0xde,0x12,0x6c,0x6f,0x77,0xa2,0xdc,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,
-0x74,0xa3,0xde,0x12,0x65,0x66,0x74,0xa3,0xda,0xb,0x6e,0xc0,0xca,0x72,0x5f,0x72,
-0x46,0x73,0xa2,0x48,0x77,1,0x68,0x24,0x73,0x33,0x17,0x69,0x74,0x65,0x73,0x70,
-0x61,0x63,0x65,0x33,0x22,1,0x69,0x30,0x6c,2,0x65,0x3d,0x69,0x4b,0x6f,0x3f,
-0x18,0x67,0x68,0x74,0x74,0x6f,0x6c,0x65,0x66,0x74,0x22,2,0x65,0x38,0x69,0x48,
-0x6f,0x16,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x3f,0x17,0x6d,0x62,0x65,0x64,0x64,
-0x69,0x6e,0x67,0x3d,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4b,0x30,0x1e,0x65,0x67,
-0x6d,0x65,0x6e,0x74,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x31,0x6e,0xa2,
-0x41,0x6f,0xa2,0x53,0x70,2,0x61,0x66,0x64,0x86,0x6f,0x1b,0x70,0x64,0x69,0x72,
-0x65,0x63,0x74,0x69,0x6f,0x6e,0x61,0x6c,1,0x66,0x32,0x69,0x15,0x73,0x6f,0x6c,
-0x61,0x74,0x65,0x4d,0x14,0x6f,0x72,0x6d,0x61,0x74,0x41,0x1f,0x72,0x61,0x67,0x72,
-0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2f,1,0x66,0x41,
-0x69,0x4d,1,0x6f,0x28,0x73,0x10,0x6d,0x43,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,
-0x6e,0x67,0x6d,0x61,0x72,0x6b,0x43,1,0x6e,0x35,0x74,0x19,0x68,0x65,0x72,0x6e,
-0x65,0x75,0x74,0x72,0x61,0x6c,0x35,0x65,0x88,0x65,0x98,0x66,0xa2,0x6a,0x6c,0x20,
-1,0x65,0x30,0x72,2,0x65,0x37,0x69,0x49,0x6f,0x39,0x18,0x66,0x74,0x74,0x6f,
-0x72,0x69,0x67,0x68,0x74,0x20,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,
-0x72,0x69,0x64,0x65,0x39,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x37,0x15,
-0x73,0x6f,0x6c,0x61,0x74,0x65,0x49,3,0x6e,0x25,0x73,0x27,0x74,0x29,0x75,0x15,
-0x72,0x6f,0x70,0x65,0x61,0x6e,2,0x6e,0x3c,0x73,0x46,0x74,0x18,0x65,0x72,0x6d,
-0x69,0x6e,0x61,0x74,0x6f,0x72,0x29,0x14,0x75,0x6d,0x62,0x65,0x72,0x25,0x17,0x65,
-0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x27,1,0x69,0x28,0x73,0x10,0x69,0x47,0x1f,
-0x72,0x73,0x74,0x73,0x74,0x72,0x6f,0x6e,0x67,0x69,0x73,0x6f,0x6c,0x61,0x74,0x65,
-0x47,0x61,0x4e,0x62,0x84,0x63,1,0x6f,0x24,0x73,0x2d,0x1c,0x6d,0x6d,0x6f,0x6e,
-0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2d,2,0x6c,0x3b,0x6e,0x2b,0x72,
-0x13,0x61,0x62,0x69,0x63,1,0x6c,0x30,0x6e,0x14,0x75,0x6d,0x62,0x65,0x72,0x2b,
-0x14,0x65,0x74,0x74,0x65,0x72,0x3b,0x2e,1,0x6e,0x45,0x6f,0x1c,0x75,0x6e,0x64,
-0x61,0x72,0x79,0x6e,0x65,0x75,0x74,0x72,0x61,0x6c,0x45,0,0x16,0x6d,0xc9,0x20,
-0x74,0xc2,0x30,0x77,0x89,0x77,0x86,0x79,0xa2,0x46,0x7a,1,0x61,0x58,0x6e,0x1a,
-0x61,0x6d,0x65,0x6e,0x6e,0x79,0x6d,0x75,0x73,0x69,0x63,0xa4,0x40,0x19,0x61,0x6c,
-0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa5,0x40,0x1c,0x6e,0x61,0x62,0x61,0x7a,
-0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa5,0x18,0x10,0x61,1,0x6e,0x36,0x72,
-0x16,0x61,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0xfc,0x12,0x63,0x68,0x6f,0xa5,0x2c,
-1,0x65,0x88,0x69,2,0x6a,0x3c,0x72,0x68,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,
-0x6c,0x65,0x73,0xa3,0x48,0x12,0x69,0x6e,0x67,0xa2,0x74,0x1e,0x68,0x65,0x78,0x61,
-0x67,0x72,0x61,0x6d,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x74,0x16,0x61,0x64,
-0x69,0x63,0x61,0x6c,0x73,0xa3,0x49,0x13,0x7a,0x69,0x64,0x69,0xa5,0x34,0x74,0xa2,
-0x65,0x75,0xa4,0x4f,0x76,3,0x61,0x3c,0x65,0x80,0x69,0xa2,0x50,0x73,0xa2,0x6c,
-0x12,0x73,0x75,0x70,0xa3,0x7d,1,0x69,0xa3,0x9f,0x72,0x1e,0x69,0x61,0x74,0x69,
-0x6f,0x6e,0x73,0x65,0x6c,0x65,0x63,0x74,0x6f,0x72,0x73,0xa2,0x6c,0x19,0x73,0x75,
-0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x7d,1,0x64,0x3c,0x72,0x19,0x74,
-0x69,0x63,0x61,0x6c,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x91,0x14,0x69,0x63,0x65,0x78,
-0x74,0xa2,0xaf,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xaf,0x15,0x74,0x68,
-0x6b,0x75,0x71,0x69,0xa5,0x3f,5,0x69,0x3f,0x69,0x5a,0x6f,0x8c,0x72,0x1c,0x61,
-0x6e,0x73,0x70,0x6f,0x72,0x74,0x61,0x6e,0x64,0x6d,0x61,0x70,0xa2,0xcf,0x16,0x73,
-0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xcf,2,0x62,0x34,0x66,0x3c,0x72,0x13,0x68,
-0x75,0x74,0x61,0xa3,0xfb,0x13,0x65,0x74,0x61,0x6e,0x57,0x14,0x69,0x6e,0x61,0x67,
-0x68,0xa3,0x90,0x11,0x74,0x6f,0xa5,0x3d,0x61,0x3e,0x65,0xa2,0xa0,0x68,0x10,0x61,
-1,0x61,0x24,0x69,0x53,0x11,0x6e,0x61,0x3d,4,0x67,0x8e,0x69,0xa2,0x49,0x6b,
-0xa2,0x72,0x6d,0xa2,0x74,0x6e,0x10,0x67,1,0x73,0x68,0x75,0x10,0x74,0xa4,0x10,
-1,0x63,0x40,0x73,0x11,0x75,0x70,0xa4,0x33,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,
-0x74,0xa5,0x33,0x18,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0xa5,0x11,0x10,
-0x61,0xa5,0x3c,2,0x61,0x2a,0x62,0x32,0x73,0xa3,0x60,0x12,0x6c,0x6f,0x67,0xa3,
-0x62,0x13,0x61,0x6e,0x77,0x61,0xa3,0x65,3,0x6c,0x52,0x74,0x56,0x76,0x5e,0x78,
-0x16,0x75,0x61,0x6e,0x6a,0x69,0x6e,0x67,0xa2,0x7c,0x16,0x73,0x79,0x6d,0x62,0x6f,
-0x6c,0x73,0xa3,0x7c,0x10,0x65,0xa3,0x70,0x12,0x68,0x61,0x6d,0xa3,0xae,0x12,0x69,
-0x65,0x74,0xa3,0xb7,0x11,0x72,0x69,0xa3,0xdc,0x11,0x69,0x6c,0x48,0x12,0x73,0x75,
-0x70,0xa4,0x2b,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x2b,0x13,0x6c,0x75,
-0x67,0x75,0x4b,2,0x63,0x8c,0x67,0xa2,0x41,0x6e,0x1f,0x69,0x66,0x69,0x65,0x64,
-0x63,0x61,0x6e,0x61,0x64,0x69,0x61,0x6e,0x61,0x62,0x6f,0x1f,0x72,0x69,0x67,0x69,
-0x6e,0x61,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x62,0x17,0x65,0x78,
-0x74,0x65,0x6e,0x64,0x65,0x64,0xa2,0xad,0x10,0x61,0xa5,0x3e,0x11,0x61,0x73,0x62,
-0x12,0x65,0x78,0x74,0xa2,0xad,0x10,0x61,0xa5,0x3e,0x15,0x61,0x72,0x69,0x74,0x69,
-0x63,0xa3,0x78,0x70,0xc3,0x4b,0x70,0xa6,0x61,0x72,0xa8,0x1d,0x73,7,0x6f,0xc1,
-0xbe,0x6f,0xa2,0x69,0x70,0xa2,0x85,0x75,0xa2,0xa4,0x79,2,0x6c,0x50,0x6d,0x62,
-0x72,0x12,0x69,0x61,0x63,0x3a,0x12,0x73,0x75,0x70,0xa4,0x17,0x16,0x70,0x6c,0x65,
-0x6d,0x65,0x6e,0x74,0xa5,0x17,0x17,0x6f,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0xa3,
-0x8f,0x13,0x62,0x6f,0x6c,0x73,1,0x61,0x4c,0x66,0x10,0x6f,0x1f,0x72,0x6c,0x65,
-0x67,0x61,0x63,0x79,0x63,0x6f,0x6d,0x70,0x75,0x74,0x69,0x6e,0x67,0xa5,0x32,0x1f,
-0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x78,0x74,
-1,0x61,0xa5,0x2a,0x65,0x14,0x6e,0x64,0x65,0x64,0x61,0xa5,0x2a,2,0x67,0x34,
-0x72,0x3e,0x79,0x13,0x6f,0x6d,0x62,0x6f,0xa5,0x16,0x13,0x64,0x69,0x61,0x6e,0xa5,
-0x23,0x17,0x61,0x73,0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0xda,1,0x61,0x32,0x65,
-0x14,0x63,0x69,0x61,0x6c,0x73,0xa3,0x56,0x12,0x63,0x69,0x6e,0x1f,0x67,0x6d,0x6f,
-0x64,0x69,0x66,0x69,0x65,0x72,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,2,0x6e,
-0x48,0x70,0x76,0x74,0x1d,0x74,0x6f,0x6e,0x73,0x69,0x67,0x6e,0x77,0x72,0x69,0x74,
-0x69,0x6e,0x67,0xa5,6,0x15,0x64,0x61,0x6e,0x65,0x73,0x65,0xa2,0x9b,0x12,0x73,
-0x75,0x70,0xa2,0xdb,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xdb,4,0x61,
-0xa2,0xa8,0x65,0x5c,0x6d,0x9e,0x70,0xa2,0x4b,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,
-0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,
-0xa5,5,0x10,0x72,1,0x61,0x4e,0x73,0x12,0x63,0x72,0x69,0x1f,0x70,0x74,0x73,
-0x61,0x6e,0x64,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x73,0x14,0x6e,
-0x64,0x73,0x75,0x62,0x73,0x1b,0x61,0x74,0x68,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,
-0x72,0x73,0xa3,0x6a,1,0x6c,0x40,0x75,1,0x61,0x6e,0x6e,0x17,0x63,0x74,0x75,
-0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x15,0x65,0x6d,0x65,0x6e,0x74,0x61,1,0x6c,
-0x50,0x72,0x1e,0x79,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0x61,0x72,
-0x65,0x61,1,0x61,0xa3,0x6d,0x62,0xa3,0x6e,3,0x61,0x5c,0x6d,0x78,0x70,0xa2,
-0x41,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,
-0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa5,5,0x14,0x72,0x72,0x6f,0x77,0x73,
-2,0x61,0xa3,0x67,0x62,0xa3,0x68,0x63,0xa3,0xfa,0x13,0x61,0x74,0x68,0x65,0x1f,
-0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,
-0xa3,0x6a,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x61,
-0x88,0x68,0xa2,0x48,0x69,0xa2,0x71,0x6d,0x12,0x61,0x6c,0x6c,1,0x66,0x46,0x6b,
-0x15,0x61,0x6e,0x61,0x65,0x78,0x74,0xa4,0x29,0x15,0x65,0x6e,0x73,0x69,0x6f,0x6e,
-0xa5,0x29,0x12,0x6f,0x72,0x6d,1,0x73,0xa3,0x54,0x76,0x16,0x61,0x72,0x69,0x61,
-0x6e,0x74,0x73,0xa3,0x54,1,0x6d,0x36,0x75,0x16,0x72,0x61,0x73,0x68,0x74,0x72,
-0x61,0xa3,0xa1,0x15,0x61,0x72,0x69,0x74,0x61,0x6e,0xa3,0xac,1,0x61,0x52,0x6f,
-0x13,0x72,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,
-0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa3,0xf7,1,0x72,0x2e,0x76,0x12,0x69,0x61,0x6e,
-0xa3,0x79,0x12,0x61,0x64,0x61,0xa3,0xd9,1,0x64,0x50,0x6e,0x13,0x68,0x61,0x6c,
-0x61,0x50,0x1d,0x61,0x72,0x63,0x68,0x61,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,
-0x73,0xa3,0xf9,0x13,0x64,0x68,0x61,0x6d,0xa3,0xf8,5,0x72,0x35,0x72,0x44,0x73,
-0x64,0x75,1,0x61,0xa3,0x4e,0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,
-0x71,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0xa2,0x4e,0x13,0x61,0x72,0x65,
-0x61,0xa3,0x4e,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,
-0xa3,0xf6,0x61,0x40,0x68,0x82,0x6c,0x19,0x61,0x79,0x69,0x6e,0x67,0x63,0x61,0x72,
-0x64,0x73,0xa3,0xcc,2,0x68,0x38,0x6c,0x4a,0x75,0x15,0x63,0x69,0x6e,0x68,0x61,
-0x75,0xa3,0xf5,0x17,0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xf3,0x15,0x6d,
-0x79,0x72,0x65,0x6e,0x65,0xa3,0xf4,1,0x61,0x8e,0x6f,1,0x65,0x74,0x6e,0x16,
-0x65,0x74,0x69,0x63,0x65,0x78,0x74,0xa2,0x72,1,0x65,0x2c,0x73,0x11,0x75,0x70,
-0xa3,0x8d,0x15,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa2,0x72,0x19,0x73,0x75,0x70,0x70,
-0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x8d,0x15,0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,
-0x97,1,0x67,0x3e,0x69,0x13,0x73,0x74,0x6f,0x73,0xa2,0xa6,0x13,0x64,0x69,0x73,
-0x63,0xa3,0xa6,0x12,0x73,0x70,0x61,0xa3,0x96,1,0x65,0x5c,0x75,1,0x6d,0x2a,
-0x6e,0x11,0x69,0x63,0x67,0x10,0x69,0xa2,0xc0,0x1d,0x6e,0x75,0x6d,0x65,0x72,0x61,
-0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xc0,0x13,0x6a,0x61,0x6e,0x67,0xa3,
-0xa3,0x6d,0xa2,0xf0,0x6e,0xa8,0x23,0x6f,6,0x70,0x63,0x70,0x56,0x72,0x8a,0x73,
-0xa2,0x4c,0x74,0x10,0x74,0x1f,0x6f,0x6d,0x61,0x6e,0x73,0x69,0x79,0x61,0x71,0x6e,
-0x75,0x6d,0x62,0x65,0x72,0x73,0xa5,0x28,0x18,0x74,0x69,0x63,0x61,0x6c,0x63,0x68,
-0x61,0x72,0x1f,0x61,0x63,0x74,0x65,0x72,0x72,0x65,0x63,0x6f,0x67,0x6e,0x69,0x74,
-0x69,0x6f,0x6e,0x85,1,0x69,0x46,0x6e,0x1e,0x61,0x6d,0x65,0x6e,0x74,0x61,0x6c,
-0x64,0x69,0x6e,0x67,0x62,0x61,0x74,0x73,0xa3,0xf2,0x11,0x79,0x61,0x47,1,0x61,
-0x30,0x6d,0x13,0x61,0x6e,0x79,0x61,0xa3,0x7a,0x11,0x67,0x65,0xa5,0xf,0x63,0xa2,
-0x7b,0x67,0xa2,0x7b,0x6c,1,0x63,0xa2,0x6c,0x64,6,0x70,0x42,0x70,0x3a,0x73,
-0x5a,0x74,0x88,0x75,0x14,0x79,0x67,0x68,0x75,0x72,0xa5,0x3b,0x11,0x65,0x72,1,
-0x6d,0x2e,0x73,0x12,0x69,0x61,0x6e,0xa3,0x8c,0x11,0x69,0x63,0xa3,0xf1,0x10,0x6f,
-1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xbb,
-0x13,0x64,0x69,0x61,0x6e,0xa5,0x22,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0xbf,0x68,
-0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,
-0xa3,0xf0,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa5,4,0x14,0x74,0x61,
-0x6c,0x69,0x63,0xa3,0x58,0x13,0x68,0x69,0x6b,0x69,0xa3,0x9d,0x10,0x72,0x85,0x12,
-0x68,0x61,0x6d,0x65,6,0x6f,0x86,0x6f,0x6c,0x72,0xa2,0x61,0x75,0xa2,0x62,0x79,
-0x14,0x61,0x6e,0x6d,0x61,0x72,0x58,0x12,0x65,0x78,0x74,2,0x61,0xa3,0xb6,0x62,
-0xa3,0xee,0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb6,0x62,0xa3,0xee,1,
-0x64,0x52,0x6e,0x15,0x67,0x6f,0x6c,0x69,0x61,0x6e,0x6a,0x12,0x73,0x75,0x70,0xa4,
-0xd,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0xd,0x10,0x69,0xa2,0xec,0x13,
-0x66,0x69,0x65,0x72,1,0x6c,0x3c,0x74,0x19,0x6f,0x6e,0x65,0x6c,0x65,0x74,0x74,
-0x65,0x72,0x73,0xa3,0x8a,0x15,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,0x10,0x6f,0xa3,
-0xed,1,0x6c,0x44,0x73,0x11,0x69,0x63,0xa2,0x5c,0x18,0x61,0x6c,0x73,0x79,0x6d,
-0x62,0x6f,0x6c,0x73,0xa3,0x5c,0x13,0x74,0x61,0x6e,0x69,0xa5,3,0x61,0xa2,0x9b,
-0x65,0xa4,0x4c,0x69,1,0x61,0xa2,0x8f,0x73,0x10,0x63,5,0x70,0x18,0x70,0xa2,
-0x71,0x73,0x36,0x74,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x15,0x79,
-0x6d,0x62,0x6f,0x6c,0x73,0x8f,0x61,0xa2,0x66,0x65,0x46,0x6d,0x19,0x61,0x74,0x68,
-0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x17,0x6c,
-0x6c,0x61,0x6e,0x65,0x6f,0x75,0x73,2,0x6d,0x3a,0x73,0x6c,0x74,0x17,0x65,0x63,
-0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x11,0x61,0x74,0x1f,0x68,0x65,0x6d,0x61,0x74,
-0x69,0x63,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,
-0xa3,0x69,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x8e,0x12,0x61,0x6e,0x64,1,0x61,
-0x3c,0x70,0x19,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa3,0xcd,0x14,
-0x72,0x72,0x6f,0x77,0x73,0xa3,0x73,0x10,0x6f,0xa3,0xd8,7,0x72,0x6f,0x72,0x44,
-0x73,0x4e,0x74,0x62,0x79,0x19,0x61,0x6e,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,
-0xa5,0x20,0x13,0x63,0x68,0x65,0x6e,0xa5,0xc,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f,
-0x6e,0x64,0x69,0xa5,0x14,0x10,0x68,2,0x61,0x3a,0x65,0x4a,0x6f,0x17,0x70,0x65,
-0x72,0x61,0x74,0x6f,0x72,0x73,0x7f,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0xa3,
-0x5d,0x16,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,1,0x61,0x36,0x6f,0x17,0x70,0x65,
-0x72,0x61,0x74,0x6f,0x72,0x73,0x7f,0x11,0x6c,0x70,0x1f,0x68,0x61,0x6e,0x75,0x6d,
-0x65,0x72,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5d,0x68,0x50,0x6b,
-0x7e,0x6c,0x88,0x6e,1,0x64,0x34,0x69,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,
-0xea,0x12,0x61,0x69,0x63,0xa3,0xc6,1,0x61,0x3e,0x6a,0x12,0x6f,0x6e,0x67,0xa2,
-0xaa,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xaa,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xe9,
-0x13,0x61,0x73,0x61,0x72,0xa5,0x1f,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x4f,3,
-0x64,0x6c,0x65,0x7e,0x6e,0xa2,0x47,0x72,0x14,0x6f,0x69,0x74,0x69,0x63,1,0x63,
-0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xd7,0x15,
-0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0xd6,0x17,0x65,0x66,0x61,0x69,0x64,0x72,0x69,
-0x6e,0xa5,0x21,0x17,0x74,0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa2,0xb8,0x12,0x65,
-0x78,0x74,0xa2,0xd5,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xd5,0x18,0x64,
-0x65,0x6b,0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0xeb,6,0x6b,0x3b,0x6b,0x56,0x6f,
-0x5a,0x75,0x64,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,
-0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa5,0x27,0x10,0x6f,0xa3,0x92,0x14,0x62,
-0x6c,0x6f,0x63,0x6b,0x21,1,0x6d,0x2c,0x73,0x11,0x68,0x75,0xa5,0x15,0x17,0x62,
-0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0x7b,0x61,0x44,0x62,0x21,0x65,0x10,0x77,1,
-0x61,0xa5,0xe,0x74,0x14,0x61,0x69,0x6c,0x75,0x65,0xa3,0x8b,2,0x62,0x3c,0x67,
-0x4a,0x6e,0x17,0x64,0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa5,0x26,0x15,0x61,0x74,
-0x61,0x65,0x61,0x6e,0xa3,0xef,0x16,0x6d,0x75,0x6e,0x64,0x61,0x72,0x69,0xa5,0x47,
-0x67,0xc4,0x5d,0x6a,0xc1,0xe4,0x6a,0xa2,0xdf,0x6b,0xa2,0xf8,0x6c,4,0x61,0x54,
-0x65,0xa2,0x6b,0x69,0xa2,0x82,0x6f,0xa2,0xc1,0x79,1,0x63,0x2e,0x64,0x12,0x69,
-0x61,0x6e,0xa3,0xa9,0x12,0x69,0x61,0x6e,0xa3,0xa7,1,0x6f,0x55,0x74,0x11,0x69,
-0x6e,1,0x31,0x96,0x65,0x11,0x78,0x74,6,0x64,0x21,0x64,0xa3,0x95,0x65,0x2c,
-0x66,0xa5,0x39,0x67,0xa5,0x3a,0xa2,0xe7,0x13,0x6e,0x64,0x65,0x64,6,0x64,0xc,
-0x64,0xa3,0x95,0x65,0xa3,0xe7,0x66,0xa5,0x39,0x67,0xa5,0x3a,0x61,0x2a,0x62,0x29,
-0x63,0xa3,0x94,0x26,0x18,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x6d,0x24,
-0x12,0x73,0x75,0x70,0x24,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x25,1,0x70,
-0x42,0x74,0x1d,0x74,0x65,0x72,0x6c,0x69,0x6b,0x65,0x73,0x79,0x6d,0x62,0x6f,0x6c,
-0x73,0x79,0x12,0x63,0x68,0x61,0xa3,0x9c,2,0x6d,0x4e,0x6e,0x54,0x73,0x10,0x75,
-0xa2,0xb0,0x12,0x73,0x75,0x70,0xa4,0x31,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
-0xa5,0x31,0x11,0x62,0x75,0xa3,0x6f,0x12,0x65,0x61,0x72,1,0x61,0xa3,0xe8,0x62,
-1,0x69,0x38,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x75,0x17,
-0x64,0x65,0x6f,0x67,0x72,0x61,0x6d,0x73,0xa3,0x76,0x1a,0x77,0x73,0x75,0x72,0x72,
-0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4d,0x10,0x61,1,0x6d,0x32,0x76,0x14,0x61,
-0x6e,0x65,0x73,0x65,0xa3,0xb5,0x10,0x6f,0x5c,0x12,0x65,0x78,0x74,1,0x61,0xa3,
-0xb4,0x62,0xa3,0xb9,1,0x61,0xa2,0x43,0x68,4,0x61,0x40,0x69,0x50,0x6d,0x6e,
-0x6f,0x86,0x75,0x15,0x64,0x61,0x77,0x61,0x64,0x69,0xa3,0xe6,0x16,0x72,0x6f,0x73,
-0x68,0x74,0x68,0x69,0xa3,0x89,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,
-0x63,0x72,0x69,0x70,0x74,0xa5,0x30,0x11,0x65,0x72,0x68,0x16,0x73,0x79,0x6d,0x62,
-0x6f,0x6c,0x73,0xa3,0x71,0x12,0x6a,0x6b,0x69,0xa3,0xe5,5,0x74,0x35,0x74,0x34,
-0x77,0x7a,0x79,0x13,0x61,0x68,0x6c,0x69,0xa3,0xa2,0x14,0x61,0x6b,0x61,0x6e,0x61,
-0x9e,1,0x65,0x4c,0x70,0x10,0x68,0x1f,0x6f,0x6e,0x65,0x74,0x69,0x63,0x65,0x78,
-0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0x6b,0x11,0x78,0x74,0xa3,0x6b,0x10,
-0x69,0xa5,0x46,0x69,0xa2,0x4e,0x6b,0xa2,0x51,0x6e,3,0x61,0x34,0x62,0x84,0x67,
-0x8a,0x6e,0x12,0x61,0x64,0x61,0x4d,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0xcb,
-0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xcb,0x11,0x78,0x74,2,0x61,0xa5,
-0x13,0x62,0xa5,0x38,0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa5,0x13,0x62,0xa5,
-0x38,0x11,0x75,0x6e,0xa3,0x42,0x11,0x78,0x69,0x96,0x17,0x72,0x61,0x64,0x69,0x63,
-0x61,0x6c,0x73,0x97,0x12,0x74,0x68,0x69,0xa3,0xc1,0x1c,0x74,0x6f,0x76,0x69,0x6b,
-0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa5,0x45,0x67,0xa2,0xb5,0x68,0xa4,0x84,
-0x69,3,0x64,0x4c,0x6d,0xa2,0x55,0x6e,0xa2,0x62,0x70,0x13,0x61,0x65,0x78,0x74,
-0x2a,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0x2b,1,0x63,0x99,0x65,0x17,0x6f,
-0x67,0x72,0x61,0x70,0x68,0x69,0x63,1,0x64,0x56,0x73,0x15,0x79,0x6d,0x62,0x6f,
-0x6c,0x73,0xa4,0xb,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
-0x69,0x6f,0x6e,0xa5,0xb,0x13,0x65,0x73,0x63,0x72,0x1f,0x69,0x70,0x74,0x69,0x6f,
-0x6e,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x99,0x1c,0x70,0x65,0x72,
-0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0xba,1,0x64,0x62,0x73,
-0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,
-0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0xbd,0x13,0x6c,0x61,0x76,0x69,0xa3,0xbe,
-0x11,0x69,0x63,1,0x6e,0x3e,0x73,0x1a,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,
-0x65,0x72,0x73,0xa5,0x1e,0x19,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,
-0xa3,0xb2,4,0x65,0x74,0x6c,0xa2,0x82,0x6f,0xa2,0x9a,0x72,0xa2,0x9e,0x75,2,
-0x6a,0x34,0x6e,0x3e,0x72,0x14,0x6d,0x75,0x6b,0x68,0x69,0x43,0x14,0x61,0x72,0x61,
-0x74,0x69,0x45,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x1c,1,
-0x6e,0xa2,0x46,0x6f,1,0x6d,0x6e,0x72,0x13,0x67,0x69,0x61,0x6e,0x5a,1,0x65,
-0x40,0x73,0x11,0x75,0x70,0xa2,0x87,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
-0x87,0x11,0x78,0x74,0xa4,0x1b,0x14,0x65,0x6e,0x64,0x65,0x64,0xa5,0x1b,0x1a,0x65,
-0x74,0x72,0x69,0x63,0x73,0x68,0x61,0x70,0x65,0x73,0x8c,0x12,0x65,0x78,0x74,0xa2,
-0xe3,0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0xe3,0x1e,0x65,0x72,0x61,0x6c,0x70,0x75,
-0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x61,0x67,0x6f,0x6c,0x69,
-0x74,0x69,0x63,0xa2,0x88,0x12,0x73,0x75,0x70,0xa4,0xa,0x16,0x70,0x6c,0x65,0x6d,
-0x65,0x6e,0x74,0xa5,0xa,0x13,0x74,0x68,0x69,0x63,0xa3,0x59,1,0x61,0x5c,0x65,
-0x11,0x65,0x6b,0x30,1,0x61,0x38,0x65,0x11,0x78,0x74,0x6e,0x14,0x65,0x6e,0x64,
-0x65,0x64,0x6f,0x17,0x6e,0x64,0x63,0x6f,0x70,0x74,0x69,0x63,0x31,0x13,0x6e,0x74,
-0x68,0x61,0xa3,0xe4,2,0x61,0xa2,0x48,0x65,0xa2,0xdf,0x69,1,0x67,0x30,0x72,
-0x14,0x61,0x67,0x61,0x6e,0x61,0x9d,0x10,0x68,1,0x70,0x3a,0x73,0x18,0x75,0x72,
-0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4b,1,0x72,0x3c,0x75,0x19,0x73,0x75,
-0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,0x11,0x69,0x76,0x1f,0x61,0x74,
-0x65,0x75,0x73,0x65,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,
-2,0x6c,0x32,0x6e,0x9a,0x74,0x12,0x72,0x61,0x6e,0xa5,2,0x10,0x66,2,0x61,
-0x58,0x6d,0x70,0x77,0x14,0x69,0x64,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x75,0x6c,
-0x6c,0x77,0x69,0x64,0x74,0x68,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x1a,0x6e,0x64,
-0x66,0x75,0x6c,0x6c,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x13,0x61,0x72,0x6b,0x73,
-0xa3,0x52,2,0x67,0x34,0x69,0xa2,0x45,0x75,0x12,0x6e,0x6f,0x6f,0xa3,0x63,0x11,
-0x75,0x6c,0xa2,0x4a,2,0x63,0x3c,0x6a,0x5e,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,
-0x6c,0x65,0x73,0xa3,0x4a,0x1f,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x69,0x6c,0x69,
-0x74,0x79,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x12,0x61,0x6d,0x6f,0x5c,0x17,0x65,0x78,
-0x74,0x65,0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,0x19,0x66,0x69,
-0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa5,0x1d,0x13,0x62,0x72,0x65,0x77,0x37,
-0x61,0xa4,0xc,0x62,0xa6,0x59,0x63,0xa8,0x2e,0x64,0xac,0xe9,0x65,5,0x6d,0xa9,
-0x6d,0x94,0x6e,0xa2,0x41,0x74,0x15,0x68,0x69,0x6f,0x70,0x69,0x63,0x5e,1,0x65,
-0x40,0x73,0x11,0x75,0x70,0xa2,0x86,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
-0x86,0x11,0x78,0x74,0xa2,0x85,2,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x65,0x13,0x6e,
-0x64,0x65,0x64,0xa2,0x85,1,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x16,0x6f,0x74,0x69,
-0x63,0x6f,0x6e,0x73,0xa3,0xce,0x15,0x63,0x6c,0x6f,0x73,0x65,0x64,2,0x61,0x5a,
-0x63,0x9e,0x69,0x1c,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x75,
-0x70,0xa2,0xc4,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc4,0x16,0x6c,0x70,
-0x68,0x61,0x6e,0x75,0x6d,0x86,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0xc3,0x13,
-0x72,0x69,0x63,0x73,0x86,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
-0xc3,0x11,0x6a,0x6b,0xa2,0x44,0x1f,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x61,0x6e,
-0x64,0x6d,0x6f,0x6e,0x74,0x68,0x73,0xa3,0x44,0x61,0x4a,0x67,0x76,0x6c,1,0x62,
-0x30,0x79,0x13,0x6d,0x61,0x69,0x63,0xa5,0x25,0x13,0x61,0x73,0x61,0x6e,0xa3,0xe2,
-0x13,0x72,0x6c,0x79,0x64,0x1f,0x79,0x6e,0x61,0x73,0x74,0x69,0x63,0x63,0x75,0x6e,
-0x65,0x69,0x66,0x6f,0x72,0x6d,0xa5,1,0x1f,0x79,0x70,0x74,0x69,0x61,0x6e,0x68,
-0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,1,0x66,0x26,0x73,0xa3,0xc2,0x1c,
-0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa5,0x24,7,
-0x6e,0xc0,0xf2,0x6e,0x3e,0x72,0xa2,0x5d,0x73,0xa2,0xe5,0x76,0x14,0x65,0x73,0x74,
-0x61,0x6e,0xa3,0xbc,1,0x61,0x92,0x63,0x13,0x69,0x65,0x6e,0x74,1,0x67,0x34,
-0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xa5,0x13,0x72,0x65,0x65,0x6b,1,
-0x6d,0x34,0x6e,0x15,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x7f,0x13,0x75,0x73,0x69,
-0x63,0xa2,0x7e,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x7e,
-0x10,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
-0x70,0x68,0x73,0xa3,0xfe,2,0x61,0x32,0x6d,0xa2,0x7e,0x72,0x12,0x6f,0x77,0x73,
-0x7d,0x12,0x62,0x69,0x63,0x38,3,0x65,0x4a,0x6d,0x80,0x70,0xa2,0x50,0x73,0x11,
-0x75,0x70,0xa2,0x80,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x80,0x11,0x78,
-0x74,3,0x61,0xa3,0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x65,0x13,0x6e,0x64,0x65,
-0x64,2,0x61,0xa3,0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x12,0x61,0x74,0x68,0xa2,
-0xd3,0x18,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x61,0x1f,0x6c,0x70,0x68,0x61,
-0x62,0x65,0x74,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd3,1,0x66,
-0x42,0x72,0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,
-0x6d,0x73,1,0x61,0xa3,0x51,0x62,0xa3,0x55,0x14,0x65,0x6e,0x69,0x61,0x6e,0x35,
-0x12,0x63,0x69,0x69,0x23,0x64,0x9e,0x65,0xa2,0x42,0x68,0xa2,0x4d,0x6c,1,0x63,
-0x62,0x70,0x17,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x70,1,0x66,0xa3,0x50,0x72,
-0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,
-0xa3,0x50,0x16,0x68,0x65,0x6d,0x69,0x63,0x61,0x6c,0xa2,0xd0,0x16,0x73,0x79,0x6d,
-0x62,0x6f,0x6c,0x73,0xa3,0xd0,0x12,0x6c,0x61,0x6d,0xa5,7,0x1a,0x67,0x65,0x61,
-0x6e,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x77,0x11,0x6f,0x6d,0xa3,0xfd,7,
-0x6f,0x71,0x6f,0x64,0x72,0xa2,0x41,0x75,0xa2,0x58,0x79,0x1b,0x7a,0x61,0x6e,0x74,
-0x69,0x6e,0x65,0x6d,0x75,0x73,0x69,0x63,0xa2,0x5b,0x18,0x61,0x6c,0x73,0x79,0x6d,
-0x62,0x6f,0x6c,0x73,0xa3,0x5b,1,0x70,0x34,0x78,0x16,0x64,0x72,0x61,0x77,0x69,
-0x6e,0x67,0x89,0x14,0x6f,0x6d,0x6f,0x66,0x6f,0xa0,0x12,0x65,0x78,0x74,0xa2,0x43,
-0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0x43,0x10,0x61,1,0x68,0x40,0x69,0x12,0x6c,
-0x6c,0x65,0x92,0x17,0x70,0x61,0x74,0x74,0x65,0x72,0x6e,0x73,0x93,0x11,0x6d,0x69,
-0xa3,0xc9,1,0x67,0x2c,0x68,0x11,0x69,0x64,0xa3,0x64,0x14,0x69,0x6e,0x65,0x73,
-0x65,0xa3,0x81,0x61,0x48,0x65,0xa2,0x4e,0x68,0xa2,0x52,0x6c,0x1a,0x6f,0x63,0x6b,
-0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x8b,3,0x6c,0x34,0x6d,0x40,0x73,0x66,
-0x74,0x11,0x61,0x6b,0xa3,0xc7,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x93,0x11,0x75,
-0x6d,0xa2,0xb1,0x12,0x73,0x75,0x70,0xa2,0xca,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,
-0x74,0xa3,0xca,1,0x69,0x30,0x73,0x13,0x61,0x76,0x61,0x68,0xa3,0xdd,0x15,0x63,
-0x6c,0x61,0x74,0x69,0x6e,0x23,0x14,0x6e,0x67,0x61,0x6c,0x69,0x41,0x16,0x61,0x69,
-0x6b,0x73,0x75,0x6b,0x69,0xa5,8,5,0x6f,0xc1,0x60,0x6f,0xa2,0x69,0x75,0xa4,
-0x24,0x79,1,0x70,0xa2,0x44,0x72,0x14,0x69,0x6c,0x6c,0x69,0x63,0x32,1,0x65,
-0x4c,0x73,0x11,0x75,0x70,0xa2,0x61,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa2,
-0x61,0x12,0x61,0x72,0x79,0xa3,0x61,0x11,0x78,0x74,4,0x61,0xa3,0x9e,0x62,0xa3,
-0xa0,0x63,0xa5,9,0x64,0xa5,0x43,0x65,0x13,0x6e,0x64,0x65,0x64,3,0x61,0xa3,
-0x9e,0x62,0xa3,0xa0,0x63,0xa5,9,0x64,0xa5,0x43,0x10,0x72,1,0x69,0x34,0x6f,
-0x15,0x6d,0x69,0x6e,0x6f,0x61,0x6e,0xa5,0x36,0x1a,0x6f,0x74,0x73,0x79,0x6c,0x6c,
-0x61,0x62,0x61,0x72,0x79,0xa3,0x7b,3,0x6d,0x5a,0x6e,0xa2,0x95,0x70,0xa2,0xa0,
-0x75,0x17,0x6e,0x74,0x69,0x6e,0x67,0x72,0x6f,0x64,0xa2,0x9a,0x17,0x6e,0x75,0x6d,
-0x65,0x72,0x61,0x6c,0x73,0xa3,0x9a,2,0x62,0x3a,0x6d,0xa2,0x5f,0x70,0x15,0x61,
-0x74,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x14,0x69,0x6e,0x69,0x6e,0x67,2,0x64,0x46,
-0x68,0x9e,0x6d,0x1d,0x61,0x72,0x6b,0x73,0x66,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,
-0x6c,0x73,0x77,0x1e,0x69,0x61,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x6d,0x61,
-0x72,0x6b,0x73,0x2e,2,0x65,0x40,0x66,0xa6,0x52,0x73,0x18,0x75,0x70,0x70,0x6c,
-0x65,0x6d,0x65,0x6e,0x74,0xa3,0x83,0x16,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,0xa3,
-0xe0,0x17,0x61,0x6c,0x66,0x6d,0x61,0x72,0x6b,0x73,0xa3,0x52,0x11,0x6f,0x6e,0x1f,
-0x69,0x6e,0x64,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,
-0xa3,0xb2,0x1b,0x74,0x72,0x6f,0x6c,0x70,0x69,0x63,0x74,0x75,0x72,0x65,0x73,0x83,
-0x12,0x74,0x69,0x63,0xa2,0x84,0x1b,0x65,0x70,0x61,0x63,0x74,0x6e,0x75,0x6d,0x62,
-0x65,0x72,0x73,0xa3,0xdf,1,0x6e,0x3e,0x72,0x1b,0x72,0x65,0x6e,0x63,0x79,0x73,
-0x79,0x6d,0x62,0x6f,0x6c,0x73,0x75,0x15,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa2,0x98,
-0x16,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa2,0x99,0x1d,0x61,0x6e,0x64,0x70,0x75,
-0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x99,0x61,0xa2,0xea,0x68,0xa4,
-0x14,0x6a,0x10,0x6b,0xa2,0x47,4,0x63,0x92,0x65,0xa2,0x83,0x72,0xa2,0xa1,0x73,
-0xa2,0xb3,0x75,0x1f,0x6e,0x69,0x66,0x69,0x65,0x64,0x69,0x64,0x65,0x6f,0x67,0x72,
-0x61,0x70,0x68,0x73,0xa2,0x47,0x18,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,
-8,0x65,0x71,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x69,
-0xa5,0x48,0x14,0x6f,0x6d,0x70,0x61,0x74,0xa2,0x45,1,0x66,0x96,0x69,1,0x62,
-0x44,0x64,0x17,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x12,0x73,0x75,
-0x70,0xa3,0x5f,0x14,0x69,0x6c,0x69,0x74,0x79,0xa2,0x45,1,0x66,0x54,0x69,0x18,
-0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x19,0x73,0x75,0x70,0x70,
-0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x5f,0x13,0x6f,0x72,0x6d,0x73,0xa3,0x53,0x11,
-0x78,0x74,8,0x65,0xf,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,
-0x42,0x69,0xa5,0x48,0x61,0xa3,0x46,0x62,0xa3,0x5e,0x63,0xa3,0xc5,0x64,0xa3,0xd1,
-0x19,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x73,0x75,0x70,0x94,0x16,0x70,0x6c,0x65,
-0x6d,0x65,0x6e,0x74,0x95,1,0x74,0x50,0x79,0x14,0x6d,0x62,0x6f,0x6c,0x73,0x9a,
-0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x9b,
-0x14,0x72,0x6f,0x6b,0x65,0x73,0xa3,0x82,2,0x6e,0x48,0x72,0x64,0x75,0x1d,0x63,
-0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,0xde,0x1d,
-0x61,0x64,0x69,0x61,0x6e,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x63,0x12,
-0x69,0x61,0x6e,0xa3,0xa8,2,0x61,0x3a,0x65,0x4c,0x6f,0x16,0x72,0x61,0x73,0x6d,
-0x69,0x61,0x6e,0xa5,0x2d,1,0x6b,0x26,0x6d,0xa3,0xa4,0x11,0x6d,0x61,0xa3,0xd4,
-1,0x72,0x38,0x73,0x17,0x73,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa5,0x19,0x13,
-0x6f,0x6b,0x65,0x65,0x60,0x12,0x73,0x75,0x70,0xa2,0xff,0x16,0x70,0x6c,0x65,0x6d,
-0x65,0x6e,0x74,0xa3,0xff,3,0x65,0x3e,0x69,0x8e,0x6f,0xa2,0x71,0x75,0x15,0x70,
-0x6c,0x6f,0x79,0x61,0x6e,0xa3,0xe1,1,0x73,0x60,0x76,0x16,0x61,0x6e,0x61,0x67,
-0x61,0x72,0x69,0x3e,0x12,0x65,0x78,0x74,0xa2,0xb3,1,0x61,0xa5,0x44,0x65,0x13,
-0x6e,0x64,0x65,0x64,0xa2,0xb3,0x10,0x61,0xa5,0x44,0x13,0x65,0x72,0x65,0x74,0xa3,
-0x5a,2,0x61,0x3a,0x6e,0x82,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa5,
-0x2f,0x18,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x73,0x2e,2,0x65,0x30,0x66,
-0x36,0x73,0x11,0x75,0x70,0xa3,0x83,0x11,0x78,0x74,0xa3,0xe0,0x18,0x6f,0x72,0x73,
-0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x14,0x67,0x62,0x61,0x74,0x73,0x91,1,0x67,
-0x3e,0x6d,0x12,0x69,0x6e,0x6f,0xa2,0xab,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xab,
-0x11,0x72,0x61,0xa5,0x1a,8,0x6d,0x5f,0x6d,0x3a,0x6e,0x48,0x73,0x7a,0x76,0xa2,
-0x4b,0x77,0x12,0x69,0x64,0x65,0x43,0x11,0x65,0x64,0x32,0x12,0x69,0x61,0x6c,0x33,
-2,0x61,0x40,0x62,0x37,0x6f,1,0x62,0x28,0x6e,0x10,0x65,0x21,0x13,0x72,0x65,
-0x61,0x6b,0x37,0x10,0x72,0x34,0x12,0x72,0x6f,0x77,0x35,2,0x6d,0x38,0x71,0x46,
-0x75,1,0x62,0x3d,0x70,0x3e,0x11,0x65,0x72,0x3f,1,0x61,0x24,0x6c,0x39,0x11,
-0x6c,0x6c,0x39,1,0x72,0x3b,0x75,0x12,0x61,0x72,0x65,0x3b,0x12,0x65,0x72,0x74,
-0x40,0x13,0x69,0x63,0x61,0x6c,0x41,0x63,0x58,0x65,0x92,0x66,0x96,0x69,1,0x6e,
-0x36,0x73,0x10,0x6f,0x30,0x14,0x6c,0x61,0x74,0x65,0x64,0x31,0x11,0x69,0x74,0x2e,
-0x12,0x69,0x61,0x6c,0x2f,2,0x61,0x36,0x69,0x48,0x6f,0x10,0x6d,0x24,0x12,0x70,
-0x61,0x74,0x25,0x10,0x6e,0x22,0x15,0x6f,0x6e,0x69,0x63,0x61,0x6c,0x23,0x13,0x72,
-0x63,0x6c,0x65,0x27,0x11,0x6e,0x63,0x27,2,0x69,0x3a,0x6f,0x44,0x72,0x10,0x61,
-0x2c,0x14,0x63,0x74,0x69,0x6f,0x6e,0x2d,0x10,0x6e,0x28,0x11,0x61,0x6c,0x29,0x11,
-0x6e,0x74,0x2b,4,0x61,0x3a,0x66,0x4c,0x68,0x5e,0x6e,0x70,0x77,0x2a,0x12,0x69,
-0x64,0x65,0x2b,0x22,0x17,0x6d,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x26,0x17,
-0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,0x27,0x24,0x17,0x61,0x6c,0x66,0x77,0x69,
-0x64,0x74,0x68,0x25,0x20,1,0x61,0x30,0x65,0x14,0x75,0x74,0x72,0x61,0x6c,0x21,
-0x28,0x13,0x72,0x72,0x6f,0x77,0x29,0xd,0x6e,0xc0,0xfb,0x73,0x6d,0x73,0x3a,0x74,
-0x98,0x75,0xa2,0x49,0x7a,2,0x6c,0x3b,0x70,0x3d,0x73,0x39,5,0x6f,0x28,0x6f,
-0x57,0x70,0x34,0x75,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x45,0x11,0x61,0x63,
-1,0x65,0x32,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x31,0x18,0x73,0x65,0x70,
-0x61,0x72,0x61,0x74,0x6f,0x72,0x39,0x63,0x53,0x6b,0x55,0x6d,0x51,0x1d,0x69,0x74,
-0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x27,1,0x6e,0x40,
-0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x23,
-0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x21,0x6e,0x8a,0x6f,0xa2,0x47,0x70,
-8,0x66,0x14,0x66,0x5b,0x69,0x59,0x6f,0x4f,0x72,0x24,0x73,0x49,0x17,0x69,0x76,
-0x61,0x74,0x65,0x75,0x73,0x65,0x43,0x61,0x2c,0x63,0x4d,0x64,0x47,0x65,0x4b,0x1f,
-0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,
-0x3d,2,0x64,0x33,0x6c,0x35,0x6f,0x36,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,
-0x67,0x6d,0x61,0x72,0x6b,0x2d,1,0x70,0x7c,0x74,0x12,0x68,0x65,0x72,3,0x6c,
-0x38,0x6e,0x42,0x70,0x4c,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x57,0x14,0x65,0x74,
-0x74,0x65,0x72,0x2b,0x14,0x75,0x6d,0x62,0x65,0x72,0x37,0x19,0x75,0x6e,0x63,0x74,
-0x75,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,
-0x61,0x74,0x69,0x6f,0x6e,0x49,0x66,0x9e,0x66,0x88,0x69,0xa2,0x4b,0x6c,0xa2,0x5c,
-0x6d,4,0x61,0x60,0x63,0x31,0x65,0x2f,0x6e,0x2d,0x6f,0x15,0x64,0x69,0x66,0x69,
-0x65,0x72,1,0x6c,0x30,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x55,0x14,0x65,0x74,
-0x74,0x65,0x72,0x29,0x17,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x51,1,0x69,
-0x2e,0x6f,0x13,0x72,0x6d,0x61,0x74,0x41,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,
-0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,
-0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,6,0x6d,0x18,0x6d,
-0x29,0x6f,0x28,0x74,0x27,0x75,0x23,0x2a,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,
-0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x65,0x28,0x69,0x3c,0x6c,0x25,0x19,0x74,0x74,
-0x65,0x72,0x6e,0x75,0x6d,0x62,0x65,0x72,0x35,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,
-0x72,0x61,0x74,0x6f,0x72,0x3b,0x63,0x44,0x64,0xa2,0x60,0x65,0x1b,0x6e,0x63,0x6c,
-0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x2f,6,0x6e,0x39,0x6e,0x46,0x6f,
-0x4e,0x73,0x45,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,
-0x6c,0x53,0x20,0x12,0x74,0x72,0x6c,0x3f,0x42,0x10,0x6e,1,0x6e,0x2c,0x74,0x12,
-0x72,0x6f,0x6c,0x3f,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,
-0x61,0x74,0x69,0x6f,0x6e,0x4d,0x63,0x3f,0x66,0x41,0x6c,0x1d,0x6f,0x73,0x65,0x70,
-0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4b,2,0x61,0x30,0x65,0x4a,
-0x69,0x12,0x67,0x69,0x74,0x33,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,
-0x74,0x69,0x6f,0x6e,0x47,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,
-0x72,0x33,0,0x13,0x6e,0xc1,0xf,0x74,0x76,0x74,0x4c,0x76,0x9a,0x77,0xa2,0x48,
-0x79,0xa2,0x49,0x7a,1,0x61,0x2c,0x68,0x12,0x61,0x69,0x6e,0x8b,0x11,0x69,0x6e,
-0x85,2,0x61,0x36,0x65,0x3c,0x68,0x14,0x69,0x6e,0x79,0x65,0x68,0xa3,0x66,1,
-0x68,0x71,0x77,0x73,1,0x68,0x28,0x74,0x10,0x68,0x77,0x16,0x6d,0x61,0x72,0x62,
-0x75,0x74,0x61,0x74,0x13,0x67,0x6f,0x61,0x6c,0x3d,0x1a,0x65,0x72,0x74,0x69,0x63,
-0x61,0x6c,0x74,0x61,0x69,0x6c,0xa3,0x67,0x11,0x61,0x77,0x79,1,0x65,0x32,0x75,
-0x11,0x64,0x68,0x80,0x11,0x68,0x65,0x83,0x10,0x68,0x7a,1,0x62,0x34,0x77,0x16,
-0x69,0x74,0x68,0x74,0x61,0x69,0x6c,0x7f,0x14,0x61,0x72,0x72,0x65,0x65,0x7d,0x6e,
-0xa2,0x4c,0x70,0xa2,0x69,0x71,0xa2,0x69,0x72,0xa2,0x6f,0x73,5,0x74,0x22,0x74,
-0x38,0x77,0x4c,0x79,0x16,0x72,0x69,0x61,0x63,0x77,0x61,0x77,0x6f,0x18,0x72,0x61,
-0x69,0x67,0x68,0x74,0x77,0x61,0x77,0xa3,0x55,0x15,0x61,0x73,0x68,0x6b,0x61,0x66,
-0x6d,0x61,0x2e,0x65,0x38,0x68,0x11,0x69,0x6e,0x6b,0x10,0x64,0x62,0x11,0x68,0x65,
-0x65,1,0x65,0x2e,0x6d,0x13,0x6b,0x61,0x74,0x68,0x69,0x10,0x6e,0x67,2,0x6f,
-0x2c,0x75,0x50,0x79,0x10,0x61,0x91,1,0x6a,0x28,0x6f,0x10,0x6e,0x55,0x1a,0x6f,
-0x69,0x6e,0x69,0x6e,0x67,0x67,0x72,0x6f,0x75,0x70,0x21,0x10,0x6e,0x57,0x10,0x65,
-0x59,0x10,0x61,1,0x66,0x5b,0x70,0x10,0x68,0x5d,1,0x65,0x38,0x6f,0x18,0x68,
-0x69,0x6e,0x67,0x79,0x61,0x79,0x65,0x68,0x93,1,0x68,0x5f,0x76,0x16,0x65,0x72,
-0x73,0x65,0x64,0x70,0x65,0x61,0x67,0xc1,0xc7,0x67,0xa4,0x52,0x68,0xa4,0x59,0x6b,
-0xa4,0x99,0x6c,0xa4,0xb2,0x6d,2,0x61,0x2e,0x65,0xa4,0x3e,0x69,0x10,0x6d,0x53,
-1,0x6c,0xa2,0xe7,0x6e,0x16,0x69,0x63,0x68,0x61,0x65,0x61,0x6e,0,0x12,0x6e,
-0x76,0x73,0x51,0x73,0x3e,0x74,0x5c,0x77,0xa0,0x79,0xa2,0x42,0x7a,0x13,0x61,0x79,
-0x69,0x6e,0xa3,0x54,0x10,0x61,1,0x64,0x2e,0x6d,0x12,0x65,0x6b,0x68,0xa3,0x4c,
-0x11,0x68,0x65,0xa3,0x4b,3,0x61,0x38,0x65,0x3c,0x68,0x4a,0x77,0x13,0x65,0x6e,
-0x74,0x79,0xa3,0x51,0x10,0x77,0xa3,0x4d,1,0x6e,0xa3,0x4e,0x74,0x10,0x68,0xa3,
-0x4f,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x50,0x11,0x61,0x77,0xa3,0x52,0x12,0x6f,
-0x64,0x68,0xa3,0x53,0x6e,0x3a,0x6f,0x40,0x70,0x46,0x71,0x4a,0x72,0x12,0x65,0x73,
-0x68,0xa3,0x4a,0x11,0x75,0x6e,0xa3,0x46,0x11,0x6e,0x65,0xa3,0x47,0x10,0x65,0xa3,
-0x48,0x12,0x6f,0x70,0x68,0xa3,0x49,0x67,0x33,0x67,0x38,0x68,0x40,0x6b,0x5e,0x6c,
-0x66,0x6d,0x11,0x65,0x6d,0xa3,0x45,0x13,0x69,0x6d,0x65,0x6c,0xa1,1,0x65,0x32,
-0x75,0x14,0x6e,0x64,0x72,0x65,0x64,0xa3,0x42,0x11,0x74,0x68,0xa3,0x41,0x12,0x61,
-0x70,0x68,0xa3,0x43,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x44,0x61,0x34,0x62,0x4a,
-0x64,0x50,0x66,0x12,0x69,0x76,0x65,0x9f,1,0x6c,0x2a,0x79,0x11,0x69,0x6e,0x97,
-0x12,0x65,0x70,0x68,0x95,0x12,0x65,0x74,0x68,0x99,1,0x61,0x30,0x68,0x14,0x61,
-0x6d,0x65,0x64,0x68,0x9d,0x13,0x6c,0x65,0x74,0x68,0x9b,0x15,0x61,0x79,0x61,0x6c,
-0x61,0x6d,6,0x6e,0x2c,0x6e,0x34,0x72,0x5e,0x73,0x62,0x74,0x11,0x74,0x61,0xa3,
-0x63,2,0x67,0x2e,0x6e,0x32,0x79,0x10,0x61,0xa3,0x60,0x10,0x61,0xa3,0x5d,1,
-0x61,0xa3,0x5e,0x6e,0x10,0x61,0xa3,0x5f,0x10,0x61,0xa3,0x61,0x11,0x73,0x61,0xa3,
-0x62,0x62,0x3c,0x6a,0x42,0x6c,0x10,0x6c,1,0x61,0xa3,0x5b,0x6c,0x10,0x61,0xa3,
-0x5c,0x11,0x68,0x61,0xa3,0x59,0x10,0x61,0xa3,0x5a,0x11,0x65,0x6d,0x51,0x10,0x61,
-1,0x66,0x37,0x6d,0x11,0x61,0x6c,0x39,1,0x61,0x40,0x65,0x3e,1,0x68,0x28,
-0x74,0x10,0x68,0x45,0x40,0x13,0x67,0x6f,0x61,0x6c,0x43,2,0x68,0x3b,0x6d,0x5c,
-0x6e,0x1a,0x69,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,1,0x6b,0x2a,
-0x70,0x10,0x61,0xa3,0x65,0x15,0x69,0x6e,0x6e,0x61,0x79,0x61,0xa3,0x64,0x1a,0x7a,
-0x61,0x6f,0x6e,0x68,0x65,0x68,0x67,0x6f,0x61,0x6c,0x3d,2,0x61,0x3a,0x68,0x44,
-0x6e,0x17,0x6f,0x74,0x74,0x65,0x64,0x68,0x65,0x68,0x4b,1,0x66,0x47,0x70,0x10,
-0x68,0x49,0x12,0x61,0x70,0x68,0x89,0x11,0x61,0x6d,0x4c,0x12,0x61,0x64,0x68,0x4f,
-0x61,0x6e,0x62,0xa2,0x54,0x64,0xa2,0x70,0x65,0x31,0x66,2,0x61,0x3e,0x65,0x4a,
-0x69,0x19,0x6e,0x61,0x6c,0x73,0x65,0x6d,0x6b,0x61,0x74,0x68,0x35,0x15,0x72,0x73,
-0x69,0x79,0x65,0x68,0x8f,0x86,0x10,0x68,0x33,2,0x66,0x3c,0x69,0x70,0x6c,1,
-0x61,0x28,0x65,0x10,0x66,0x27,0x11,0x70,0x68,0x25,0x14,0x72,0x69,0x63,0x61,0x6e,
-2,0x66,0x30,0x6e,0x36,0x71,0x11,0x61,0x66,0xa3,0x58,0x11,0x65,0x68,0xa3,0x56,
-0x12,0x6f,0x6f,0x6e,0xa3,0x57,0x10,0x6e,0x23,1,0x65,0x4a,0x75,0x10,0x72,0x1f,
-0x75,0x73,0x68,0x61,0x73,0x6b,0x69,0x79,0x65,0x68,0x62,0x61,0x72,0x72,0x65,0x65,
-0x8d,1,0x68,0x29,0x74,0x10,0x68,0x2b,0x11,0x61,0x6c,0x2c,0x16,0x61,0x74,0x68,
-0x72,0x69,0x73,0x68,0x2f,7,0x6e,0x2e,0x6e,0x2c,0x72,0x3e,0x74,0x56,0x75,0x21,
-0x18,0x6f,0x6e,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x21,0x28,0x1a,0x69,0x67,0x68,
-0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x29,0x2a,0x19,0x72,0x61,0x6e,0x73,0x70,
-0x61,0x72,0x65,0x6e,0x74,0x2b,0x63,0x23,0x64,0x40,0x6a,0x56,0x6c,0x26,0x19,0x65,
-0x66,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x27,0x24,0x19,0x75,0x61,0x6c,0x6a,
-0x6f,0x69,0x6e,0x69,0x6e,0x67,0x25,0x19,0x6f,0x69,0x6e,0x63,0x61,0x75,0x73,0x69,
-0x6e,0x67,0x23,0,0x14,0x6e,0xc0,0xe5,0x73,0x5e,0x77,0x23,0x77,0x40,0x78,0x58,
-0x7a,0x10,0x77,0x58,1,0x6a,0x75,0x73,0x13,0x70,0x61,0x63,0x65,0x59,1,0x6a,
-0x5d,0x6f,0x17,0x72,0x64,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x5d,0x10,0x78,0x21,0x73,
-0x4a,0x75,0x7a,0x76,1,0x66,0x7d,0x69,0x7e,0x13,0x72,0x61,0x6d,0x61,0x7e,0x14,
-0x66,0x69,0x6e,0x61,0x6c,0x7d,4,0x61,0x51,0x67,0x53,0x70,0x28,0x75,0x30,0x79,
-0x57,0x54,0x12,0x61,0x63,0x65,0x55,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x53,
-0x15,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x21,0x6e,0x60,0x6f,0xa2,0x41,0x70,0xa2,0x50,
-0x71,0xa2,0x6e,0x72,1,0x65,0x24,0x69,0x6f,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,
-0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x6f,4,0x65,0x3e,0x6c,0x5b,0x6f,
-0x46,0x73,0x45,0x75,0x46,0x14,0x6d,0x65,0x72,0x69,0x63,0x47,0x15,0x78,0x74,0x6c,
-0x69,0x6e,0x65,0x5b,0x17,0x6e,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x45,0x10,0x70,
-0x48,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,
-1,0x6f,0x3e,0x72,0x4c,0x1a,0x65,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,
-0x63,0x4d,0x4a,0x1b,0x73,0x74,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,
-0x4b,0x10,0x75,0x4e,0x16,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x68,0x7b,0x68,
-0x50,0x69,0x86,0x6a,0xa2,0x61,0x6c,0xa2,0x65,0x6d,0x1c,0x61,0x6e,0x64,0x61,0x74,
-0x6f,0x72,0x79,0x62,0x72,0x65,0x61,0x6b,0x2d,4,0x32,0x5f,0x33,0x61,0x65,0x34,
-0x6c,0x6d,0x79,0x3a,0x13,0x70,0x68,0x65,0x6e,0x3b,0x19,0x62,0x72,0x65,0x77,0x6c,
-0x65,0x74,0x74,0x65,0x72,0x6d,2,0x64,0x28,0x6e,0x3c,0x73,0x41,0x3c,0x18,0x65,
-0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x3d,0x3e,1,0x66,0x3e,0x73,0x11,0x65,
-0x70,1,0x61,0x22,0x65,0x14,0x72,0x61,0x62,0x6c,0x65,0x3f,0x18,0x69,0x78,0x6e,
-0x75,0x6d,0x65,0x72,0x69,0x63,0x41,2,0x6c,0x63,0x74,0x65,0x76,0x67,1,0x66,
-0x43,0x69,0x15,0x6e,0x65,0x66,0x65,0x65,0x64,0x43,0x61,0x42,0x62,0xa2,0x49,0x63,
-0xa2,0x76,0x65,0xa2,0xfc,0x67,0x10,0x6c,0x38,0x11,0x75,0x65,0x39,5,0x6d,0xf,
-0x6d,0x28,0x70,0x79,0x73,0x7b,0x16,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x69,
-0x23,0x6b,0x38,0x6c,0x24,0x17,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x25,0x76,
-0x13,0x73,0x61,0x72,0x61,0x76,1,0x70,0x2e,0x73,0x13,0x74,0x61,0x72,0x74,0x7b,
-0x15,0x72,0x65,0x62,0x61,0x73,0x65,0x79,4,0x32,0x27,0x61,0x29,0x62,0x2b,0x6b,
-0x2d,0x72,0x12,0x65,0x61,0x6b,2,0x61,0x36,0x62,0x3e,0x73,0x15,0x79,0x6d,0x62,
-0x6f,0x6c,0x73,0x57,0x13,0x66,0x74,0x65,0x72,0x29,1,0x65,0x2a,0x6f,0x11,0x74,
-0x68,0x27,0x13,0x66,0x6f,0x72,0x65,0x2b,7,0x6d,0x51,0x6d,0x33,0x6f,0x28,0x70,
-0x69,0x72,0x35,1,0x6d,0x76,0x6e,1,0x64,0x3c,0x74,0x1a,0x69,0x6e,0x67,0x65,
-0x6e,0x74,0x62,0x72,0x65,0x61,0x6b,0x2f,0x15,0x69,0x74,0x69,0x6f,0x6e,0x61,0x1f,
-0x6c,0x6a,0x61,0x70,0x61,0x6e,0x65,0x73,0x65,0x73,0x74,0x61,0x72,0x74,0x65,0x72,
-0x6b,1,0x62,0x3a,0x70,0x19,0x6c,0x65,0x78,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,
-0x51,0x18,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x33,0x61,0x6a,0x62,0x2f,
-0x6a,0x6b,0x6c,0x30,0x13,0x6f,0x73,0x65,0x70,1,0x61,0x38,0x75,0x18,0x6e,0x63,
-0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x31,0x18,0x72,0x65,0x6e,0x74,0x68,0x65,0x73,
-0x69,0x73,0x69,0x1b,0x72,0x72,0x69,0x61,0x67,0x65,0x72,0x65,0x74,0x75,0x72,0x6e,
-0x35,2,0x62,0x3e,0x6d,0x46,0x78,0x36,0x18,0x63,0x6c,0x61,0x6d,0x61,0x74,0x69,
-0x6f,0x6e,0x37,0x70,0x12,0x61,0x73,0x65,0x71,0x72,0x16,0x6f,0x64,0x69,0x66,0x69,
-0x65,0x72,0x73,1,0x64,0x42,0x6e,1,0x6f,0x32,0x75,0x26,0x14,0x6d,0x65,0x72,
-0x69,0x63,0x27,0x11,0x6e,0x65,0x21,1,0x65,0x2e,0x69,0x24,0x12,0x67,0x69,0x74,
-0x25,0x22,0x14,0x63,0x69,0x6d,0x61,0x6c,0x23,0,0x18,0x6e,0xc4,0x6f,0x74,0xc1,
-0x91,0x77,0x96,0x77,0xa2,0x4c,0x78,0xa2,0x70,0x79,0xa2,0x7a,0x7a,6,0x73,0x1e,
-0x73,0x34,0x78,0x42,0x79,0x48,0x7a,0x11,0x7a,0x7a,0xa3,0x67,0x10,0x79,1,0x65,
-0xa3,0xae,0x6d,0xa3,0x81,0x11,0x78,0x78,0xa3,0x66,0x11,0x79,0x79,0x21,0x61,0x30,
-0x69,0x58,0x6d,0x11,0x74,0x68,0xa3,0x80,0x10,0x6e,1,0x61,0x26,0x62,0xa3,0xb1,
-0x1a,0x62,0x61,0x7a,0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa3,0xb1,0x11,0x6e,
-0x68,0x23,2,0x61,0x30,0x63,0x5a,0x6f,0x11,0x6c,0x65,0xa3,0x9b,1,0x6e,0x3c,
-0x72,0x10,0x61,0xa2,0x92,0x15,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0x92,0x12,0x63,
-0x68,0x6f,0xa3,0xbc,0x11,0x68,0x6f,0xa3,0xbc,1,0x70,0x2c,0x73,0x11,0x75,0x78,
-0xa3,0x65,0x11,0x65,0x6f,0x9b,1,0x65,0x2c,0x69,0x72,0x11,0x69,0x69,0x73,0x11,
-0x7a,0x69,0xa2,0xc0,0x11,0x64,0x69,0xa3,0xc0,0x74,0x66,0x75,0xa2,0xde,0x76,1,
-0x61,0x48,0x69,1,0x73,0x38,0x74,0x10,0x68,0xa2,0xc5,0x13,0x6b,0x75,0x71,0x69,
-0xa3,0xc5,0x10,0x70,0xa3,0x64,0x10,0x69,0xa2,0x63,0x10,0x69,0xa3,0x63,7,0x68,
-0x3e,0x68,0x34,0x69,0x48,0x6e,0x86,0x6f,0x11,0x74,0x6f,0xa3,0xc4,0x10,0x61,1,
-0x61,0x24,0x69,0x6d,0x6a,0x11,0x6e,0x61,0x6b,2,0x62,0x3a,0x66,0x4a,0x72,0x10,
-0x68,0xa2,0x9e,0x12,0x75,0x74,0x61,0xa3,0x9e,1,0x65,0x24,0x74,0x6f,0x12,0x74,
-0x61,0x6e,0x6f,0x14,0x69,0x6e,0x61,0x67,0x68,0x99,0x11,0x73,0x61,0xa3,0xc3,0x61,
-0x36,0x65,0xa2,0x65,0x66,0xa2,0x71,0x67,0x11,0x6c,0x67,0x75,6,0x6c,0x28,0x6c,
-0x32,0x6d,0x38,0x6e,0x44,0x76,0x10,0x74,0xa3,0x7f,1,0x65,0x89,0x75,0x97,1,
-0x69,0x24,0x6c,0x67,0x10,0x6c,0x67,0x10,0x67,0xa2,0x9a,1,0x73,0x2a,0x75,0x10,
-0x74,0xa3,0x9a,0x10,0x61,0xa3,0xc3,0x67,0x36,0x69,0x52,0x6b,0x10,0x72,0xa2,0x99,
-0x10,0x69,0xa3,0x99,1,0x61,0x30,0x62,0x7a,0x13,0x61,0x6e,0x77,0x61,0x7b,0x12,
-0x6c,0x6f,0x67,0x75,2,0x6c,0x32,0x74,0x34,0x76,0x12,0x69,0x65,0x74,0xa3,0x7f,
-0x10,0x65,0x89,0x12,0x68,0x61,0x6d,0xa3,0x6a,1,0x6c,0x2a,0x6e,0x10,0x67,0xa3,
-0x62,0x10,0x75,0x68,0x11,0x67,0x75,0x69,0x11,0x6e,0x67,0x99,1,0x67,0x32,0x6e,
-0x14,0x6b,0x6e,0x6f,0x77,0x6e,0xa3,0x67,0x11,0x61,0x72,0x8a,0x13,0x69,0x74,0x69,
-0x63,0x8b,0x71,0xc1,0x13,0x71,0xa2,0xde,0x72,0xa2,0xe3,0x73,6,0x69,0x8a,0x69,
-0x72,0x6f,0xa2,0x4c,0x75,0xa2,0x75,0x79,1,0x6c,0x46,0x72,4,0x63,0x65,0x65,
-0xa3,0x5f,0x69,0x2c,0x6a,0xa3,0x60,0x6e,0xa3,0x61,0x11,0x61,0x63,0x65,0x10,0x6f,
-0x94,0x16,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0x95,2,0x64,0x3c,0x67,0x4c,0x6e,
-1,0x64,0xa3,0x91,0x68,0x62,0x12,0x61,0x6c,0x61,0x63,0x10,0x64,0xa2,0xa6,0x12,
-0x68,0x61,0x6d,0xa3,0xa6,0x17,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa3,0x70,
-2,0x67,0x3a,0x72,0x52,0x79,0x10,0x6f,0xa2,0xb0,0x12,0x6d,0x62,0x6f,0xa3,0xb0,
-1,0x64,0x26,0x6f,0xa3,0xb8,0xa2,0xb7,0x12,0x69,0x61,0x6e,0xa3,0xb7,0x10,0x61,
-0xa2,0x98,0x16,0x73,0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0x98,0x11,0x6e,0x64,0xa2,
-0x71,0x14,0x61,0x6e,0x65,0x73,0x65,0xa3,0x71,0x61,0x5c,0x67,0xa2,0x43,0x68,1,
-0x61,0x2a,0x72,0x10,0x64,0xa3,0x97,2,0x72,0x28,0x76,0x30,0x77,0x87,0x12,0x61,
-0x64,0x61,0xa3,0x97,0x12,0x69,0x61,0x6e,0x87,2,0x6d,0x40,0x72,0x58,0x75,0x10,
-0x72,0xa2,0x6f,0x15,0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0x6f,1,0x61,0x26,0x72,
-0xa3,0x7e,0x14,0x72,0x69,0x74,0x61,0x6e,0xa3,0x7e,1,0x61,0xa3,0x5e,0x62,0xa3,
-0x85,0x11,0x6e,0x77,0xa3,0x70,0x11,0x61,0x61,1,0x63,0x2f,0x69,0x23,3,0x65,
-0x3e,0x6a,0x48,0x6f,0x4e,0x75,0x10,0x6e,1,0x69,0x24,0x72,0x61,0x10,0x63,0x61,
-0x13,0x6a,0x61,0x6e,0x67,0xa3,0x6e,0x11,0x6e,0x67,0xa3,0x6e,1,0x68,0x2a,0x72,
-0x10,0x6f,0xa3,0x5d,0x10,0x67,0xa3,0xb6,0x6e,0xa2,0x83,0x6f,0xa4,1,0x70,5,
-0x6c,0x1e,0x6c,0x44,0x72,0x4a,0x73,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,
-0x6c,0x61,0x76,0x69,0xa3,0x7b,0x11,0x72,0x64,0xa3,0x5c,0x11,0x74,0x69,0xa3,0x7d,
-0x61,0x7c,0x65,0xa2,0x54,0x68,3,0x61,0x3e,0x6c,0x4e,0x6e,0x5e,0x6f,0x16,0x65,
-0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,0x5b,0x10,0x67,0xa2,0x5a,0x12,0x73,0x70,0x61,
-0xa3,0x5a,2,0x69,0xa3,0x7a,0x70,0xa3,0x7b,0x76,0xa3,0x7c,0x10,0x78,0xa3,0x5b,
-2,0x68,0x3e,0x6c,0x50,0x75,0x10,0x63,0xa2,0xa5,0x14,0x69,0x6e,0x68,0x61,0x75,
-0xa3,0xa5,0x17,0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0x4b,0x10,0x6d,0xa2,
-0x90,0x14,0x79,0x72,0x65,0x6e,0x65,0xa3,0x90,0x11,0x72,0x6d,0xa3,0x59,6,0x6b,
-0x36,0x6b,0x56,0x73,0x6e,0x75,0x74,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,
-0x70,0x75,0x61,0x63,0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xba,1,0x67,
-0x2e,0x6f,0xa2,0x57,0x10,0x6f,0xa3,0x57,0x10,0x62,0xa3,0x84,0x11,0x68,0x75,0xa3,
-0x96,0x12,0x73,0x68,0x75,0xa3,0x96,0x61,0x42,0x62,0x9e,0x65,0x10,0x77,1,0x61,
-0xa3,0xaa,0x74,0x14,0x61,0x69,0x6c,0x75,0x65,0x97,3,0x62,0x32,0x67,0x40,0x6e,
-0x56,0x72,0x10,0x62,0xa3,0x8e,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0x8f,0x10,
-0x6d,0xa2,0xc7,0x15,0x75,0x6e,0x64,0x61,0x72,0x69,0xa3,0xc7,0x10,0x64,0xa2,0xbb,
-0x16,0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa3,0xbb,0x11,0x61,0x74,0xa3,0x8f,4,
-0x67,0x3c,0x6c,0x4e,0x72,0xa2,0x8e,0x73,0xa2,0x9c,0x75,0x11,0x67,0x72,0xa3,0xc2,
-1,0x61,0x2a,0x68,0x11,0x61,0x6d,0x5b,0x10,0x6d,0x5b,1,0x63,0xa2,0x6a,0x64,
-6,0x70,0x41,0x70,0x3a,0x73,0x58,0x74,0x86,0x75,0x14,0x79,0x67,0x68,0x75,0x72,
-0xa3,0xc2,0x11,0x65,0x72,1,0x6d,0x2c,0x73,0x12,0x69,0x61,0x6e,0x9b,0x11,0x69,
-0x63,0xa3,0x59,0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,
-0x69,0x61,0x6e,0xa3,0x85,0x13,0x64,0x69,0x61,0x6e,0xa3,0xb8,0x14,0x75,0x72,0x6b,
-0x69,0x63,0xa3,0x58,0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,
-0x61,0x62,0x69,0x61,0x6e,0xa3,0x8e,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,
-0xa3,0x4c,0x14,0x74,0x61,0x6c,0x69,0x63,0x5d,1,0x68,0x26,0x6b,0xa3,0x6d,0x12,
-0x69,0x6b,0x69,0xa3,0x6d,2,0x69,0x2c,0x6b,0x30,0x79,0x10,0x61,0x5f,0x11,0x79,
-0x61,0x5f,0x10,0x68,0xa3,0x58,2,0x61,0x36,0x67,0x3c,0x6d,0x10,0x61,0x84,0x12,
-0x6e,0x79,0x61,0x85,0x11,0x67,0x65,0xa3,0xab,0x10,0x65,0xa3,0xab,0x68,0xc3,0x15,
-0x6b,0xc2,0x2c,0x6b,0xa4,0x17,0x6c,0xa4,0xba,0x6d,8,0x6f,0x46,0x6f,0x48,0x72,
-0x74,0x74,0x80,0x75,0x86,0x79,1,0x61,0x28,0x6d,0x10,0x72,0x59,0x13,0x6e,0x6d,
-0x61,0x72,0x59,2,0x64,0x2e,0x6e,0x32,0x6f,0x10,0x6e,0xa3,0x72,0x10,0x69,0xa3,
-0xa3,0x10,0x67,0x56,0x14,0x6f,0x6c,0x69,0x61,0x6e,0x57,0x10,0x6f,0xa2,0x95,0x10,
-0x6f,0xa3,0x95,0x11,0x65,0x69,0xa3,0x73,0x11,0x6c,0x74,0xa2,0xa4,0x12,0x61,0x6e,
-0x69,0xa3,0xa4,0x61,0x36,0x65,0xa2,0x67,0x69,0xa2,0xbd,0x6c,0x11,0x79,0x6d,0x55,
-6,0x6e,0x38,0x6e,0x32,0x72,0x5c,0x73,0x6c,0x79,0x10,0x61,0xa3,0x55,1,0x64,
-0x38,0x69,0xa2,0x79,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0x79,0xa2,0x54,0x12,
-0x61,0x69,0x63,0xa3,0x54,0x10,0x63,0xa2,0xa9,0x12,0x68,0x65,0x6e,0xa3,0xa9,0x18,
-0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xaf,0x68,0x36,0x6b,0x4c,0x6c,
-0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x55,1,0x61,0x26,0x6a,0xa3,0xa0,0x13,0x6a,
-0x61,0x6e,0x69,0xa3,0xa0,0x10,0x61,0xa2,0xb4,0x12,0x73,0x61,0x72,0xa3,0xb4,3,
-0x64,0x78,0x65,0x94,0x6e,0xa2,0x42,0x72,1,0x63,0xa3,0x8d,0x6f,0xa2,0x56,0x13,
-0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
-0x70,0x68,0x73,0xa3,0x56,0x15,0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0x8d,1,0x65,
-0x26,0x66,0xa3,0xb5,0x16,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa3,0xb5,0x17,0x74,
-0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa3,0x73,0x10,0x64,0xa2,0x8c,0x17,0x65,0x6b,
-0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0x8c,0x11,0x61,0x6f,0xa3,0x5c,6,0x6e,0x1a,
-0x6e,0x34,0x6f,0x38,0x70,0x3e,0x74,0x11,0x68,0x69,0xa3,0x78,0x11,0x64,0x61,0x4b,
-0x11,0x72,0x65,0xa3,0x77,0x11,0x65,0x6c,0xa3,0x8a,0x61,0x32,0x68,0xa2,0x44,0x69,
-0x11,0x74,0x73,0xa3,0xbf,5,0x74,0x23,0x74,0x34,0x77,0x56,0x79,0x13,0x61,0x68,
-0x6c,0x69,0xa3,0x4f,0x14,0x61,0x6b,0x61,0x6e,0x61,0x4c,0x19,0x6f,0x72,0x68,0x69,
-0x72,0x61,0x67,0x61,0x6e,0x61,0x8d,0x10,0x69,0xa3,0xc6,0x69,0x38,0x6c,0x40,0x6e,
-1,0x61,0x4d,0x6e,0x12,0x61,0x64,0x61,0x4b,0x12,0x74,0x68,0x69,0xa3,0x78,0x10,
-0x69,0xa3,0x4f,4,0x61,0x40,0x69,0x52,0x6d,0x70,0x6f,0x7c,0x75,0x15,0x64,0x61,
-0x77,0x61,0x64,0x69,0xa3,0x91,0x10,0x72,0x92,0x15,0x6f,0x73,0x68,0x74,0x68,0x69,
-0x93,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,
-0xa3,0xbf,1,0x65,0x24,0x72,0x4f,0x10,0x72,0x4f,0x10,0x6a,0xa2,0x9d,0x11,0x6b,
-0x69,0xa3,0x9d,4,0x61,0x5c,0x65,0x90,0x69,0xa0,0x6f,0xa2,0x5d,0x79,1,0x63,
-0x34,0x64,0x10,0x69,0xa2,0x6c,0x11,0x61,0x6e,0xa3,0x6c,0x10,0x69,0xa2,0x6b,0x11,
-0x61,0x6e,0xa3,0x6b,2,0x6e,0x42,0x6f,0x46,0x74,3,0x66,0xa3,0x50,0x67,0xa3,
-0x51,0x69,0x24,0x6e,0x53,0x10,0x6e,0x53,0x10,0x61,0xa3,0x6a,0x50,0x10,0x6f,0x51,
-0x11,0x70,0x63,0xa2,0x52,0x11,0x68,0x61,0xa3,0x52,2,0x6d,0x2e,0x6e,0x36,0x73,
-0x10,0x75,0xa3,0x83,0x10,0x62,0x80,0x10,0x75,0x81,2,0x61,0xa3,0x53,0x62,0x83,
-0x65,0x11,0x61,0x72,1,0x61,0xa3,0x53,0x62,0x83,0x11,0x6d,0x61,0xa3,0x8b,0x68,
-0x6e,0x69,0xa2,0x95,0x6a,2,0x61,0x30,0x70,0x52,0x75,0x11,0x72,0x63,0xa3,0x94,
-1,0x6d,0x38,0x76,0x10,0x61,0xa2,0x4e,0x13,0x6e,0x65,0x73,0x65,0xa3,0x4e,0x10,
-0x6f,0xa3,0xad,0x11,0x61,0x6e,0xa3,0x69,6,0x6c,0x1e,0x6c,0x34,0x6d,0x3a,0x72,
-0x48,0x75,0x11,0x6e,0x67,0xa3,0x4c,0x11,0x75,0x77,0xa3,0x9c,0x10,0x6e,1,0x67,
-0xa3,0x4b,0x70,0xa3,0xba,0x11,0x6b,0x74,0x8d,0x61,0x3c,0x65,0xa2,0x43,0x69,0x11,
-0x72,0x61,0x48,0x13,0x67,0x61,0x6e,0x61,0x49,1,0x6e,0x34,0x74,0x10,0x72,0xa2,
-0xa2,0x11,0x61,0x6e,0xa3,0xa2,0x42,6,0x6f,0xe,0x6f,0x77,0x73,0xa3,0x49,0x74,
-0xa3,0x4a,0x75,0x12,0x6e,0x6f,0x6f,0x77,0x62,0xa3,0xac,0x67,0x3e,0x69,0x42,0x19,
-0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa3,0xb6,0x44,0x11,0x75,0x6c,
-0x45,0x11,0x62,0x72,0x46,0x11,0x65,0x77,0x47,2,0x6d,0x2e,0x6e,0x4a,0x74,0x11,
-0x61,0x6c,0x5d,0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,
-0x63,0xa3,0x74,2,0x64,0x66,0x68,0x6a,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,
-0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,
-0xa3,0x7d,0x13,0x6c,0x61,0x76,0x69,0xa3,0x7a,0x10,0x73,0xa3,0x4d,0x15,0x65,0x72,
-0x69,0x74,0x65,0x64,0x23,0x64,0xc1,0xd,0x64,0xa2,0x7a,0x65,0xa2,0xc1,0x67,4,
-0x65,0x82,0x6c,0x9a,0x6f,0xa2,0x46,0x72,0xa2,0x55,0x75,2,0x6a,0x3c,0x6e,0x4e,
-0x72,1,0x6d,0x24,0x75,0x41,0x13,0x75,0x6b,0x68,0x69,0x41,1,0x61,0x24,0x72,
-0x3f,0x13,0x72,0x61,0x74,0x69,0x3f,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,
-0x69,0xa3,0xb3,0x10,0x6f,1,0x6b,0xa3,0x48,0x72,0x38,0x13,0x67,0x69,0x61,0x6e,
-0x39,0x11,0x61,0x67,0x90,0x15,0x6f,0x6c,0x69,0x74,0x69,0x63,0x91,1,0x6e,0x30,
-0x74,0x10,0x68,0x3a,0x11,0x69,0x63,0x3b,1,0x67,0xa3,0xb3,0x6d,0xa3,0xaf,1,
-0x61,0x32,0x65,1,0x65,0x24,0x6b,0x3d,0x10,0x6b,0x3d,0x10,0x6e,0xa2,0x89,0x12,
-0x74,0x68,0x61,0xa3,0x89,4,0x65,0x46,0x69,0x6c,0x6f,0x8c,0x73,0x9a,0x75,0x11,
-0x70,0x6c,0xa2,0x87,0x13,0x6f,0x79,0x61,0x6e,0xa3,0x87,1,0x73,0x38,0x76,0x10,
-0x61,0x34,0x15,0x6e,0x61,0x67,0x61,0x72,0x69,0x35,0x13,0x65,0x72,0x65,0x74,0x33,
-1,0x61,0x36,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa3,0xbe,0x10,0x6b,
-0xa3,0xbe,0x11,0x67,0x72,0xa2,0xb2,0x10,0x61,0xa3,0xb2,0x11,0x72,0x74,0x33,2,
-0x67,0x3a,0x6c,0x72,0x74,0x11,0x68,0x69,0x36,0x13,0x6f,0x70,0x69,0x63,0x37,0x10,
-0x79,2,0x64,0xa3,0x45,0x68,0xa3,0x46,0x70,0xa2,0x47,0x1e,0x74,0x69,0x61,0x6e,
-0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x47,1,0x62,0x36,
-0x79,0x10,0x6d,0xa2,0xb9,0x12,0x61,0x69,0x63,0xa3,0xb9,0x10,0x61,0xa2,0x88,0x12,
-0x73,0x61,0x6e,0xa3,0x88,0x61,0xa2,0xc9,0x62,0xa4,0x2e,0x63,6,0x6f,0x52,0x6f,
-0x76,0x70,0x92,0x75,0xa2,0x41,0x79,1,0x70,0x3e,0x72,2,0x69,0x2a,0x6c,0x31,
-0x73,0xa3,0x44,0x13,0x6c,0x6c,0x69,0x63,0x31,0x10,0x72,1,0x69,0x34,0x6f,0x15,
-0x6d,0x69,0x6e,0x6f,0x61,0x6e,0xa3,0xc1,0x11,0x6f,0x74,0x7f,1,0x6d,0x30,0x70,
-0x10,0x74,0x2e,0x11,0x69,0x63,0x2f,0x12,0x6d,0x6f,0x6e,0x21,1,0x6d,0x28,0x72,
-0x10,0x74,0x7f,0x10,0x6e,0xa3,0xc1,0x16,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa3,
-0x65,0x61,0x32,0x68,0xa2,0x41,0x69,0x11,0x72,0x74,0xa3,0x43,3,0x6b,0x4c,0x6e,
-0x50,0x72,0x76,0x75,0x1d,0x63,0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,
-0x69,0x61,0x6e,0xa3,0x9f,0x10,0x6d,0xa3,0x76,1,0x61,0x24,0x73,0x71,0x1d,0x64,
-0x69,0x61,0x6e,0x61,0x62,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x71,0x10,0x69,
-0xa2,0x68,0x11,0x61,0x6e,0xa3,0x68,3,0x61,0x32,0x65,0x44,0x6f,0x52,0x72,0x10,
-0x73,0xa3,0xbd,1,0x6b,0x26,0x6d,0xa3,0x42,0x11,0x6d,0x61,0xa3,0x76,0x10,0x72,
-0x2c,0x13,0x6f,0x6b,0x65,0x65,0x2d,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa3,
-0xbd,6,0x68,0x4a,0x68,0x48,0x6e,0x4e,0x72,0x76,0x76,1,0x65,0x2a,0x73,0x10,
-0x74,0xa3,0x75,0x13,0x73,0x74,0x61,0x6e,0xa3,0x75,0x11,0x6f,0x6d,0xa3,0xa1,0x11,
-0x61,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
-0x70,0x68,0x73,0xa3,0x9c,1,0x61,0x3e,0x6d,2,0x65,0x2a,0x69,0xa3,0x74,0x6e,
-0x27,0x13,0x6e,0x69,0x61,0x6e,0x27,0x10,0x62,0x24,0x11,0x69,0x63,0x25,0x64,0x30,
+0x61,0x72,0x74,0xa3,0x49,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0xa3,0x4a,1,
+0x6e,0x36,0x6f,0x42,0x16,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x43,0x15,0x74,0x69,
+0x66,0x69,0x65,0x72,1,0x73,0x30,0x74,0x12,0x79,0x70,0x65,0xd9,0x70,1,0x14,
+0x74,0x61,0x74,0x75,0x73,0xc3,0x19,2,0x64,0x2e,0x70,0x86,0x73,0x10,0x63,0xc3,
+0x17,0x11,0x69,0x63,1,0x70,0x46,0x73,0x1e,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,
+0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x17,0x10,0x6f,0x1f,0x73,0x69,0x74,
+0x69,0x6f,0x6e,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x16,0x10,
+0x63,0xc3,0x16,2,0x67,0xc3,6,0x6f,0x26,0x74,0xc3,7,0x11,0x69,0x6e,1,
+0x63,0x4a,0x69,0x11,0x6e,0x67,1,0x67,0x2e,0x74,0x12,0x79,0x70,0x65,0xc3,7,
+0x13,0x72,0x6f,0x75,0x70,0xc3,6,0x48,0x15,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x49,
+0x66,0x86,0x67,0xa2,0x4a,0x68,3,0x61,0x36,0x65,0x58,0x73,0x68,0x79,0x13,0x70,
+0x68,0x65,0x6e,0x3d,0x1f,0x6e,0x67,0x75,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x6c,
+0x65,0x74,0x79,0x70,0x65,0xc3,0xb,0x10,0x78,0x3a,0x14,0x64,0x69,0x67,0x69,0x74,
+0x3b,0x10,0x74,0xc3,0xb,0x16,0x75,0x6c,0x6c,0x63,0x6f,0x6d,0x70,0x1f,0x6f,0x73,
+0x69,0x74,0x69,0x6f,0x6e,0x65,0x78,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x33,2,
+0x63,0xa2,0x44,0x65,0xa2,0x4b,0x72,3,0x61,0x34,0x62,0x84,0x65,0x8a,0x6c,0x12,
+0x69,0x6e,0x6b,0x39,0x11,0x70,0x68,0x7c,0x12,0x65,0x6d,0x65,3,0x62,0x5e,0x63,
+0x30,0x65,0x48,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x1a,0x6c,0x75,0x73,0x74,0x65,0x72,
+0x62,0x72,0x65,0x61,0x6b,0xc3,0x12,0x14,0x78,0x74,0x65,0x6e,0x64,0x37,0x12,0x61,
+0x73,0x65,0x35,0x11,0x78,0x74,0x37,0xc2,5,1,0x62,0xc3,0x12,0x6d,0xd9,0x20,
+0,0x1c,0x6e,0x65,0x72,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc2,
+5,0x13,0x6d,0x61,0x73,0x6b,0xd9,0x20,0,0x61,0xa2,0xa2,0x62,0xa2,0xd0,0x63,
+0xa4,0x4f,0x64,0xa6,0x1c,0x65,5,0x6d,0x75,0x6d,0x6e,0x70,0xa2,0x6b,0x78,0x10,
+0x74,0x30,1,0x65,0x2c,0x70,0x12,0x69,0x63,0x74,0xa1,0x12,0x6e,0x64,0x65,1,
+0x64,0x24,0x72,0x31,0x1b,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,
+0x63,0xa1,0x10,0x6f,1,0x64,0x97,0x6a,0x10,0x69,0x92,3,0x63,0x44,0x6b,0x54,
+0x6d,0x70,0x70,0x1a,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x95,
+0x17,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x9b,0x1c,0x65,0x79,0x63,0x61,0x70,
+0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0xa3,0x42,0x16,0x6f,0x64,0x69,0x66,0x69,
+0x65,0x72,0x96,0x13,0x62,0x61,0x73,0x65,0x99,0x12,0x72,0x65,0x73,0x95,0x61,0x30,
+0x62,0x4e,0x63,0x12,0x6f,0x6d,0x70,0x9b,0xc2,4,0x1b,0x73,0x74,0x61,0x73,0x69,
+0x61,0x6e,0x77,0x69,0x64,0x74,0x68,0xc3,4,0x12,0x61,0x73,0x65,0x99,3,0x67,
+0x44,0x68,0x4a,0x6c,0x4e,0x73,0x1a,0x63,0x69,0x69,0x68,0x65,0x78,0x64,0x69,0x67,
+0x69,0x74,0x23,0x10,0x65,0xd9,0x40,0,0x11,0x65,0x78,0x23,1,0x6e,0x38,0x70,
+0x11,0x68,0x61,0x20,0x14,0x62,0x65,0x74,0x69,0x63,0x21,0x11,0x75,0x6d,0x79,5,
+0x6c,0x22,0x6c,0x36,0x6d,0x52,0x70,1,0x62,0xd9,0x40,0xd,0x74,0xc3,0x15,2,
+0x61,0x32,0x6b,0xc3,1,0x6f,0x11,0x63,0x6b,0xc3,1,0x11,0x6e,0x6b,0x7b,0x10,
+0x67,0xd9,0x40,1,0x61,0xa2,0x4f,0x63,0xc3,0,0x69,0x11,0x64,0x69,2,0x63,
+0x54,0x6d,0x74,0x70,0x1b,0x61,0x69,0x72,0x65,0x64,0x62,0x72,0x61,0x63,0x6b,0x65,
+0x74,0xd8,0x40,0xd,0x13,0x74,0x79,0x70,0x65,0xc3,0x15,0x24,1,0x6c,0x30,0x6f,
+0x14,0x6e,0x74,0x72,0x6f,0x6c,0x25,0x12,0x61,0x73,0x73,0xc3,0,0x26,0x14,0x69,
+0x72,0x72,0x6f,0x72,1,0x65,0x38,0x69,0x16,0x6e,0x67,0x67,0x6c,0x79,0x70,0x68,
+0xd9,0x40,1,0x10,0x64,0x27,0x17,0x73,0x69,0x63,0x65,0x6d,0x6f,0x6a,0x69,0xa3,
+0x41,6,0x68,0x7c,0x68,0x54,0x69,0x85,0x6f,0xa2,0x6f,0x77,4,0x63,0x30,0x6b,
+0x36,0x6c,0x87,0x74,0x8b,0x75,0x89,1,0x66,0x8d,0x6d,0x8f,0x11,0x63,0x66,0x91,
+0x18,0x61,0x6e,0x67,0x65,0x73,0x77,0x68,0x65,0x6e,4,0x63,0x44,0x6c,0x6c,0x6e,
+0x7e,0x74,0x98,0x75,0x18,0x70,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x89,0x12,
+0x61,0x73,0x65,1,0x66,0x30,0x6d,0x14,0x61,0x70,0x70,0x65,0x64,0x8f,0x14,0x6f,
+0x6c,0x64,0x65,0x64,0x8d,0x18,0x6f,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x87,
+0x1c,0x66,0x6b,0x63,0x63,0x61,0x73,0x65,0x66,0x6f,0x6c,0x64,0x65,0x64,0x91,0x18,
+0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x64,0x8b,0x13,0x6d,0x70,0x65,0x78,0x33,
+0x61,0x2e,0x63,0xa2,0x48,0x66,0xd9,0x40,2,1,0x6e,0x72,0x73,0x10,0x65,3,
+0x64,0x83,0x66,0x3a,0x69,0x4a,0x73,0x17,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65,
+0x65,0x15,0x6f,0x6c,0x64,0x69,0x6e,0x67,0xd9,0x40,2,0x17,0x67,0x6e,0x6f,0x72,
+0x61,0x62,0x6c,0x65,0x85,0x13,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,
+0x62,0x69,0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,2,0x10,0x63,0xc3,
+2,3,0x61,0x30,0x65,0x34,0x69,0xa2,0x41,0x74,0xc3,3,0x11,0x73,0x68,0x29,
+2,0x63,0x3a,0x66,0x58,0x70,0x2c,0x16,0x72,0x65,0x63,0x61,0x74,0x65,0x64,0x2d,
+0x1d,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x74,0x79,0x70,0x65,0xc3,
+3,0x15,0x61,0x75,0x6c,0x74,0x69,0x67,0x1f,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,
+0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x2b,0x2a,0x10,0x61,0x2e,0x15,0x63,
+0x72,0x69,0x74,0x69,0x63,0x2f,3,0x66,0x34,0x6e,0x3e,0x74,0x42,0x79,0x22,0x11,
+0x65,0x73,0x23,0x20,0x13,0x61,0x6c,0x73,0x65,0x21,0x20,0x10,0x6f,0x21,0x22,0x12,
+0x72,0x75,0x65,0x23,0xb,0x6b,0x5b,0x6f,0x23,0x6f,0x3c,0x72,0x4c,0x76,1,0x69,
+0x24,0x72,0x33,0x13,0x72,0x61,0x6d,0x61,0x33,0x10,0x76,0x22,0x14,0x65,0x72,0x6c,
+0x61,0x79,0x23,0xa2,0xe2,0x13,0x69,0x67,0x68,0x74,0xa3,0xe2,0x6b,0x58,0x6c,0x74,
+0x6e,3,0x6b,0x2f,0x6f,0x30,0x72,0x21,0x75,0x12,0x6b,0x74,0x61,0x2f,0x19,0x74,
+0x72,0x65,0x6f,0x72,0x64,0x65,0x72,0x65,0x64,0x21,1,0x61,0x24,0x76,0x31,0x18,
+0x6e,0x61,0x76,0x6f,0x69,0x63,0x69,0x6e,0x67,0x31,0xa2,0xe0,0x12,0x65,0x66,0x74,
+0xa3,0xe0,0x64,0x45,0x64,0x4e,0x68,0x88,0x69,1,0x6f,0x26,0x73,0xa3,0xf0,0x1a,
+0x74,0x61,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xf0,2,0x61,0xa3,
+0xea,0x62,0xa3,0xe9,0x6f,0x13,0x75,0x62,0x6c,0x65,1,0x61,0x30,0x62,0x13,0x65,
+0x6c,0x6f,0x77,0xa3,0xe9,0x13,0x62,0x6f,0x76,0x65,0xa3,0xea,0x12,0x61,0x6e,0x72,
+0x2c,0x15,0x65,0x61,0x64,0x69,0x6e,0x67,0x2d,0x61,0xa2,0x7b,0x62,0xa2,0xd4,0x63,
+0x11,0x63,0x63,4,0x31,0x3c,0x32,0xa2,0x42,0x33,0xa2,0x56,0x38,0xa2,0x64,0x39,
+0x10,0x31,0xa3,0x5b,9,0x35,0xa,0x35,0x3f,0x36,0x41,0x37,0x43,0x38,0x45,0x39,
+0x47,0x30,0x30,0x31,0x3c,0x32,0x42,0x33,0x4e,0x34,0x3d,0x34,1,0x33,0xa3,0x67,
+0x37,0xa3,0x6b,0x36,0x10,0x38,0xa3,0x76,0x38,1,0x32,0xa3,0x7a,0x39,0xa3,0x81,
+0x3a,2,0x30,0xa3,0x82,0x32,0xa3,0x84,0x33,0xa3,0x85,9,0x35,0xa,0x35,0x53,
+0x36,0x55,0x37,0x57,0x38,0x59,0x39,0x5b,0x30,0x49,0x31,0x4b,0x32,0x4d,0x33,0x4f,
+0x34,0x51,6,0x33,8,0x33,0x63,0x34,0x65,0x35,0x67,0x36,0x69,0x30,0x5d,0x31,
+0x5f,0x32,0x61,0x10,0x34,0xa3,0x54,0xa2,0xe6,3,0x62,0xa0,0x6c,0xa3,0xe4,0x72,
+0xa3,0xe8,0x74,2,0x61,0x74,0x62,0x7c,0x74,0x14,0x61,0x63,0x68,0x65,0x64,1,
+0x61,0x3e,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa2,0xca,0x13,0x6c,0x65,0x66,0x74,0xa3,
+0xc8,0x13,0x62,0x6f,0x76,0x65,0xa2,0xd6,0x14,0x72,0x69,0x67,0x68,0x74,0xa3,0xd8,
+0xa2,0xd6,0x10,0x72,0xa3,0xd8,0xa2,0xca,0x10,0x6c,0xa3,0xc8,0x12,0x6f,0x76,0x65,
+0xa2,0xe6,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xe8,0x12,0x65,0x66,
+0x74,0xa3,0xe4,0xa2,0xdc,2,0x65,0x2c,0x6c,0xa3,0xda,0x72,0xa3,0xde,0x12,0x6c,
+0x6f,0x77,0xa2,0xdc,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xde,0x12,
+0x65,0x66,0x74,0xa3,0xda,0xb,0x6e,0xc0,0xca,0x72,0x5f,0x72,0x46,0x73,0xa2,0x48,
+0x77,1,0x68,0x24,0x73,0x33,0x17,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x33,
+0x22,1,0x69,0x30,0x6c,2,0x65,0x3d,0x69,0x4b,0x6f,0x3f,0x18,0x67,0x68,0x74,
+0x74,0x6f,0x6c,0x65,0x66,0x74,0x22,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,
+0x72,0x72,0x69,0x64,0x65,0x3f,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x3d,
+0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4b,0x30,0x1e,0x65,0x67,0x6d,0x65,0x6e,0x74,
+0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x31,0x6e,0xa2,0x41,0x6f,0xa2,0x53,
+0x70,2,0x61,0x66,0x64,0x86,0x6f,0x1b,0x70,0x64,0x69,0x72,0x65,0x63,0x74,0x69,
+0x6f,0x6e,0x61,0x6c,1,0x66,0x32,0x69,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4d,
+0x14,0x6f,0x72,0x6d,0x61,0x74,0x41,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,
+0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2f,1,0x66,0x41,0x69,0x4d,1,0x6f,
+0x28,0x73,0x10,0x6d,0x43,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,
+0x72,0x6b,0x43,1,0x6e,0x35,0x74,0x19,0x68,0x65,0x72,0x6e,0x65,0x75,0x74,0x72,
+0x61,0x6c,0x35,0x65,0x88,0x65,0x98,0x66,0xa2,0x6a,0x6c,0x20,1,0x65,0x30,0x72,
+2,0x65,0x37,0x69,0x49,0x6f,0x39,0x18,0x66,0x74,0x74,0x6f,0x72,0x69,0x67,0x68,
+0x74,0x20,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,0x72,0x69,0x64,0x65,
+0x39,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x37,0x15,0x73,0x6f,0x6c,0x61,
+0x74,0x65,0x49,3,0x6e,0x25,0x73,0x27,0x74,0x29,0x75,0x15,0x72,0x6f,0x70,0x65,
+0x61,0x6e,2,0x6e,0x3c,0x73,0x46,0x74,0x18,0x65,0x72,0x6d,0x69,0x6e,0x61,0x74,
+0x6f,0x72,0x29,0x14,0x75,0x6d,0x62,0x65,0x72,0x25,0x17,0x65,0x70,0x61,0x72,0x61,
+0x74,0x6f,0x72,0x27,1,0x69,0x28,0x73,0x10,0x69,0x47,0x1f,0x72,0x73,0x74,0x73,
+0x74,0x72,0x6f,0x6e,0x67,0x69,0x73,0x6f,0x6c,0x61,0x74,0x65,0x47,0x61,0x4e,0x62,
+0x84,0x63,1,0x6f,0x24,0x73,0x2d,0x1c,0x6d,0x6d,0x6f,0x6e,0x73,0x65,0x70,0x61,
+0x72,0x61,0x74,0x6f,0x72,0x2d,2,0x6c,0x3b,0x6e,0x2b,0x72,0x13,0x61,0x62,0x69,
+0x63,1,0x6c,0x30,0x6e,0x14,0x75,0x6d,0x62,0x65,0x72,0x2b,0x14,0x65,0x74,0x74,
+0x65,0x72,0x3b,0x2e,1,0x6e,0x45,0x6f,0x1c,0x75,0x6e,0x64,0x61,0x72,0x79,0x6e,
+0x65,0x75,0x74,0x72,0x61,0x6c,0x45,0,0x16,0x6d,0xc9,0x20,0x74,0xc2,0x30,0x77,
+0x89,0x77,0x86,0x79,0xa2,0x46,0x7a,1,0x61,0x58,0x6e,0x1a,0x61,0x6d,0x65,0x6e,
+0x6e,0x79,0x6d,0x75,0x73,0x69,0x63,0xa4,0x40,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,
+0x74,0x69,0x6f,0x6e,0xa5,0x40,0x1c,0x6e,0x61,0x62,0x61,0x7a,0x61,0x72,0x73,0x71,
+0x75,0x61,0x72,0x65,0xa5,0x18,0x10,0x61,1,0x6e,0x36,0x72,0x16,0x61,0x6e,0x67,
+0x63,0x69,0x74,0x69,0xa3,0xfc,0x12,0x63,0x68,0x6f,0xa5,0x2c,1,0x65,0x88,0x69,
+2,0x6a,0x3c,0x72,0x68,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,
+0x48,0x12,0x69,0x6e,0x67,0xa2,0x74,0x1e,0x68,0x65,0x78,0x61,0x67,0x72,0x61,0x6d,
+0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x74,0x16,0x61,0x64,0x69,0x63,0x61,0x6c,
+0x73,0xa3,0x49,0x13,0x7a,0x69,0x64,0x69,0xa5,0x34,0x74,0xa2,0x65,0x75,0xa4,0x4f,
+0x76,3,0x61,0x3c,0x65,0x80,0x69,0xa2,0x50,0x73,0xa2,0x6c,0x12,0x73,0x75,0x70,
+0xa3,0x7d,1,0x69,0xa3,0x9f,0x72,0x1e,0x69,0x61,0x74,0x69,0x6f,0x6e,0x73,0x65,
+0x6c,0x65,0x63,0x74,0x6f,0x72,0x73,0xa2,0x6c,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,
+0x6d,0x65,0x6e,0x74,0xa3,0x7d,1,0x64,0x3c,0x72,0x19,0x74,0x69,0x63,0x61,0x6c,
+0x66,0x6f,0x72,0x6d,0x73,0xa3,0x91,0x14,0x69,0x63,0x65,0x78,0x74,0xa2,0xaf,0x16,
+0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xaf,0x15,0x74,0x68,0x6b,0x75,0x71,0x69,
+0xa5,0x3f,5,0x69,0x3f,0x69,0x5a,0x6f,0x8c,0x72,0x1c,0x61,0x6e,0x73,0x70,0x6f,
+0x72,0x74,0x61,0x6e,0x64,0x6d,0x61,0x70,0xa2,0xcf,0x16,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0xa3,0xcf,2,0x62,0x34,0x66,0x3c,0x72,0x13,0x68,0x75,0x74,0x61,0xa3,
+0xfb,0x13,0x65,0x74,0x61,0x6e,0x57,0x14,0x69,0x6e,0x61,0x67,0x68,0xa3,0x90,0x11,
+0x74,0x6f,0xa5,0x3d,0x61,0x3e,0x65,0xa2,0xa0,0x68,0x10,0x61,1,0x61,0x24,0x69,
+0x53,0x11,0x6e,0x61,0x3d,4,0x67,0x8e,0x69,0xa2,0x49,0x6b,0xa2,0x72,0x6d,0xa2,
+0x74,0x6e,0x10,0x67,1,0x73,0x68,0x75,0x10,0x74,0xa4,0x10,1,0x63,0x40,0x73,
+0x11,0x75,0x70,0xa4,0x33,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x33,0x18,
+0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0xa5,0x11,0x10,0x61,0xa5,0x3c,2,
+0x61,0x2a,0x62,0x32,0x73,0xa3,0x60,0x12,0x6c,0x6f,0x67,0xa3,0x62,0x13,0x61,0x6e,
+0x77,0x61,0xa3,0x65,3,0x6c,0x52,0x74,0x56,0x76,0x5e,0x78,0x16,0x75,0x61,0x6e,
+0x6a,0x69,0x6e,0x67,0xa2,0x7c,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x7c,
+0x10,0x65,0xa3,0x70,0x12,0x68,0x61,0x6d,0xa3,0xae,0x12,0x69,0x65,0x74,0xa3,0xb7,
+0x11,0x72,0x69,0xa3,0xdc,0x11,0x69,0x6c,0x48,0x12,0x73,0x75,0x70,0xa4,0x2b,0x16,
+0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x2b,0x13,0x6c,0x75,0x67,0x75,0x4b,2,
+0x63,0x8c,0x67,0xa2,0x41,0x6e,0x1f,0x69,0x66,0x69,0x65,0x64,0x63,0x61,0x6e,0x61,
+0x64,0x69,0x61,0x6e,0x61,0x62,0x6f,0x1f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x73,
+0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x62,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,
+0x65,0x64,0xa2,0xad,0x10,0x61,0xa5,0x3e,0x11,0x61,0x73,0x62,0x12,0x65,0x78,0x74,
+0xa2,0xad,0x10,0x61,0xa5,0x3e,0x15,0x61,0x72,0x69,0x74,0x69,0x63,0xa3,0x78,0x70,
+0xc3,0x4b,0x70,0xa6,0x61,0x72,0xa8,0x1d,0x73,7,0x6f,0xc1,0xbe,0x6f,0xa2,0x69,
+0x70,0xa2,0x85,0x75,0xa2,0xa4,0x79,2,0x6c,0x50,0x6d,0x62,0x72,0x12,0x69,0x61,
+0x63,0x3a,0x12,0x73,0x75,0x70,0xa4,0x17,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
+0xa5,0x17,0x17,0x6f,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0xa3,0x8f,0x13,0x62,0x6f,
+0x6c,0x73,1,0x61,0x4c,0x66,0x10,0x6f,0x1f,0x72,0x6c,0x65,0x67,0x61,0x63,0x79,
+0x63,0x6f,0x6d,0x70,0x75,0x74,0x69,0x6e,0x67,0xa5,0x32,0x1f,0x6e,0x64,0x70,0x69,
+0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x78,0x74,1,0x61,0xa5,0x2a,
+0x65,0x14,0x6e,0x64,0x65,0x64,0x61,0xa5,0x2a,2,0x67,0x34,0x72,0x3e,0x79,0x13,
+0x6f,0x6d,0x62,0x6f,0xa5,0x16,0x13,0x64,0x69,0x61,0x6e,0xa5,0x23,0x17,0x61,0x73,
+0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0xda,1,0x61,0x32,0x65,0x14,0x63,0x69,0x61,
+0x6c,0x73,0xa3,0x56,0x12,0x63,0x69,0x6e,0x1f,0x67,0x6d,0x6f,0x64,0x69,0x66,0x69,
+0x65,0x72,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,2,0x6e,0x48,0x70,0x76,0x74,
+0x1d,0x74,0x6f,0x6e,0x73,0x69,0x67,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa5,
+6,0x15,0x64,0x61,0x6e,0x65,0x73,0x65,0xa2,0x9b,0x12,0x73,0x75,0x70,0xa2,0xdb,
+0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xdb,4,0x61,0xa2,0xa8,0x65,0x5c,
+0x6d,0x9e,0x70,0xa2,0x4b,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,0x6c,0x73,0x61,0x6e,
+0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa5,5,0x10,0x72,
+1,0x61,0x4e,0x73,0x12,0x63,0x72,0x69,0x1f,0x70,0x74,0x73,0x61,0x6e,0x64,0x73,
+0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x73,0x14,0x6e,0x64,0x73,0x75,0x62,
+0x73,0x1b,0x61,0x74,0x68,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,0xa3,0x6a,
+1,0x6c,0x40,0x75,1,0x61,0x6e,0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,
+0x6e,0xa3,0x8e,0x15,0x65,0x6d,0x65,0x6e,0x74,0x61,1,0x6c,0x50,0x72,0x1e,0x79,
+0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0x61,0x72,0x65,0x61,1,0x61,
+0xa3,0x6d,0x62,0xa3,0x6e,3,0x61,0x5c,0x6d,0x78,0x70,0xa2,0x41,0x73,0x13,0x79,
+0x6d,0x62,0x6f,0x1f,0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,
+0x61,0x70,0x68,0x73,0xa5,5,0x14,0x72,0x72,0x6f,0x77,0x73,2,0x61,0xa3,0x67,
+0x62,0xa3,0x68,0x63,0xa3,0xfa,0x13,0x61,0x74,0x68,0x65,0x1f,0x6d,0x61,0x74,0x69,
+0x63,0x61,0x6c,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,0xa3,0x6a,0x19,0x75,
+0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x61,0x88,0x68,0xa2,0x48,
+0x69,0xa2,0x71,0x6d,0x12,0x61,0x6c,0x6c,1,0x66,0x46,0x6b,0x15,0x61,0x6e,0x61,
+0x65,0x78,0x74,0xa4,0x29,0x15,0x65,0x6e,0x73,0x69,0x6f,0x6e,0xa5,0x29,0x12,0x6f,
+0x72,0x6d,1,0x73,0xa3,0x54,0x76,0x16,0x61,0x72,0x69,0x61,0x6e,0x74,0x73,0xa3,
+0x54,1,0x6d,0x36,0x75,0x16,0x72,0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0xa1,0x15,
+0x61,0x72,0x69,0x74,0x61,0x6e,0xa3,0xac,1,0x61,0x52,0x6f,0x13,0x72,0x74,0x68,
+0x61,0x1f,0x6e,0x64,0x66,0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,
+0x6c,0x73,0xa3,0xf7,1,0x72,0x2e,0x76,0x12,0x69,0x61,0x6e,0xa3,0x79,0x12,0x61,
+0x64,0x61,0xa3,0xd9,1,0x64,0x50,0x6e,0x13,0x68,0x61,0x6c,0x61,0x50,0x1d,0x61,
+0x72,0x63,0x68,0x61,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0xf9,0x13,
+0x64,0x68,0x61,0x6d,0xa3,0xf8,5,0x72,0x35,0x72,0x44,0x73,0x64,0x75,1,0x61,
+0xa3,0x4e,0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x69,0x76,
+0x61,0x74,0x65,0x75,0x73,0x65,0xa2,0x4e,0x13,0x61,0x72,0x65,0x61,0xa3,0x4e,0x1b,
+0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,0xa3,0xf6,0x61,0x40,
+0x68,0x82,0x6c,0x19,0x61,0x79,0x69,0x6e,0x67,0x63,0x61,0x72,0x64,0x73,0xa3,0xcc,
+2,0x68,0x38,0x6c,0x4a,0x75,0x15,0x63,0x69,0x6e,0x68,0x61,0x75,0xa3,0xf5,0x17,
+0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xf3,0x15,0x6d,0x79,0x72,0x65,0x6e,
+0x65,0xa3,0xf4,1,0x61,0x8e,0x6f,1,0x65,0x74,0x6e,0x16,0x65,0x74,0x69,0x63,
+0x65,0x78,0x74,0xa2,0x72,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0x8d,0x15,0x6e,
+0x73,0x69,0x6f,0x6e,0x73,0xa2,0x72,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,
+0x6e,0x74,0xa3,0x8d,0x15,0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,0x97,1,0x67,0x3e,
+0x69,0x13,0x73,0x74,0x6f,0x73,0xa2,0xa6,0x13,0x64,0x69,0x73,0x63,0xa3,0xa6,0x12,
+0x73,0x70,0x61,0xa3,0x96,1,0x65,0x5c,0x75,1,0x6d,0x2a,0x6e,0x11,0x69,0x63,
+0x67,0x10,0x69,0xa2,0xc0,0x1d,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0x79,0x6d,
+0x62,0x6f,0x6c,0x73,0xa3,0xc0,0x13,0x6a,0x61,0x6e,0x67,0xa3,0xa3,0x6d,0xa2,0xf0,
+0x6e,0xa8,0x23,0x6f,6,0x70,0x63,0x70,0x56,0x72,0x8a,0x73,0xa2,0x4c,0x74,0x10,
+0x74,0x1f,0x6f,0x6d,0x61,0x6e,0x73,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,0x65,
+0x72,0x73,0xa5,0x28,0x18,0x74,0x69,0x63,0x61,0x6c,0x63,0x68,0x61,0x72,0x1f,0x61,
+0x63,0x74,0x65,0x72,0x72,0x65,0x63,0x6f,0x67,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x85,
+1,0x69,0x46,0x6e,0x1e,0x61,0x6d,0x65,0x6e,0x74,0x61,0x6c,0x64,0x69,0x6e,0x67,
+0x62,0x61,0x74,0x73,0xa3,0xf2,0x11,0x79,0x61,0x47,1,0x61,0x30,0x6d,0x13,0x61,
+0x6e,0x79,0x61,0xa3,0x7a,0x11,0x67,0x65,0xa5,0xf,0x63,0xa2,0x7b,0x67,0xa2,0x7b,
+0x6c,1,0x63,0xa2,0x6c,0x64,6,0x70,0x42,0x70,0x3a,0x73,0x5a,0x74,0x88,0x75,
+0x14,0x79,0x67,0x68,0x75,0x72,0xa5,0x3b,0x11,0x65,0x72,1,0x6d,0x2e,0x73,0x12,
+0x69,0x61,0x6e,0xa3,0x8c,0x11,0x69,0x63,0xa3,0xf1,0x10,0x6f,1,0x67,0x3a,0x75,
+0x18,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xbb,0x13,0x64,0x69,0x61,
+0x6e,0xa5,0x22,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0xbf,0x68,0x42,0x69,0x54,0x6e,
+0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xf0,0x17,0x75,
+0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa5,4,0x14,0x74,0x61,0x6c,0x69,0x63,0xa3,
+0x58,0x13,0x68,0x69,0x6b,0x69,0xa3,0x9d,0x10,0x72,0x85,0x12,0x68,0x61,0x6d,0x65,
+6,0x6f,0x86,0x6f,0x6c,0x72,0xa2,0x61,0x75,0xa2,0x62,0x79,0x14,0x61,0x6e,0x6d,
+0x61,0x72,0x58,0x12,0x65,0x78,0x74,2,0x61,0xa3,0xb6,0x62,0xa3,0xee,0x65,0x13,
+0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb6,0x62,0xa3,0xee,1,0x64,0x52,0x6e,0x15,
+0x67,0x6f,0x6c,0x69,0x61,0x6e,0x6a,0x12,0x73,0x75,0x70,0xa4,0xd,0x16,0x70,0x6c,
+0x65,0x6d,0x65,0x6e,0x74,0xa5,0xd,0x10,0x69,0xa2,0xec,0x13,0x66,0x69,0x65,0x72,
+1,0x6c,0x3c,0x74,0x19,0x6f,0x6e,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0xa3,
+0x8a,0x15,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,0x10,0x6f,0xa3,0xed,1,0x6c,0x44,
+0x73,0x11,0x69,0x63,0xa2,0x5c,0x18,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,
+0xa3,0x5c,0x13,0x74,0x61,0x6e,0x69,0xa5,3,0x61,0xa2,0x9b,0x65,0xa4,0x4c,0x69,
+1,0x61,0xa2,0x8f,0x73,0x10,0x63,5,0x70,0x18,0x70,0xa2,0x71,0x73,0x36,0x74,
+0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x15,0x79,0x6d,0x62,0x6f,0x6c,
+0x73,0x8f,0x61,0xa2,0x66,0x65,0x46,0x6d,0x19,0x61,0x74,0x68,0x73,0x79,0x6d,0x62,
+0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x17,0x6c,0x6c,0x61,0x6e,0x65,
+0x6f,0x75,0x73,2,0x6d,0x3a,0x73,0x6c,0x74,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,
+0x61,0x6c,0x81,0x11,0x61,0x74,0x1f,0x68,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,
+0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x15,0x79,
+0x6d,0x62,0x6f,0x6c,0x73,0x8e,0x12,0x61,0x6e,0x64,1,0x61,0x3c,0x70,0x19,0x69,
+0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa3,0xcd,0x14,0x72,0x72,0x6f,0x77,
+0x73,0xa3,0x73,0x10,0x6f,0xa3,0xd8,7,0x72,0x6f,0x72,0x44,0x73,0x4e,0x74,0x62,
+0x79,0x19,0x61,0x6e,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa5,0x20,0x13,0x63,
+0x68,0x65,0x6e,0xa5,0xc,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa5,
+0x14,0x10,0x68,2,0x61,0x3a,0x65,0x4a,0x6f,0x17,0x70,0x65,0x72,0x61,0x74,0x6f,
+0x72,0x73,0x7f,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0xa3,0x5d,0x16,0x6d,0x61,
+0x74,0x69,0x63,0x61,0x6c,1,0x61,0x36,0x6f,0x17,0x70,0x65,0x72,0x61,0x74,0x6f,
+0x72,0x73,0x7f,0x11,0x6c,0x70,0x1f,0x68,0x61,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,
+0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5d,0x68,0x50,0x6b,0x7e,0x6c,0x88,0x6e,
+1,0x64,0x34,0x69,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0xea,0x12,0x61,0x69,
+0x63,0xa3,0xc6,1,0x61,0x3e,0x6a,0x12,0x6f,0x6e,0x67,0xa2,0xaa,0x14,0x74,0x69,
+0x6c,0x65,0x73,0xa3,0xaa,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xe9,0x13,0x61,0x73,0x61,
+0x72,0xa5,0x1f,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x4f,3,0x64,0x6c,0x65,0x7e,
+0x6e,0xa2,0x47,0x72,0x14,0x6f,0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69,
+0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xd7,0x15,0x75,0x72,0x73,0x69,
+0x76,0x65,0xa3,0xd6,0x17,0x65,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa5,0x21,0x17,
+0x74,0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa2,0xb8,0x12,0x65,0x78,0x74,0xa2,0xd5,
+0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xd5,0x18,0x64,0x65,0x6b,0x69,0x6b,
+0x61,0x6b,0x75,0x69,0xa3,0xeb,6,0x6b,0x3b,0x6b,0x56,0x6f,0x5a,0x75,0x64,0x79,
+0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,0x68,0x75,0x65,0x68,
+0x6d,0x6f,0x6e,0x67,0xa5,0x27,0x10,0x6f,0xa3,0x92,0x14,0x62,0x6c,0x6f,0x63,0x6b,
+0x21,1,0x6d,0x2c,0x73,0x11,0x68,0x75,0xa5,0x15,0x17,0x62,0x65,0x72,0x66,0x6f,
+0x72,0x6d,0x73,0x7b,0x61,0x44,0x62,0x21,0x65,0x10,0x77,1,0x61,0xa5,0xe,0x74,
+0x14,0x61,0x69,0x6c,0x75,0x65,0xa3,0x8b,2,0x62,0x3c,0x67,0x4a,0x6e,0x17,0x64,
+0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa5,0x26,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,
+0xa3,0xef,0x16,0x6d,0x75,0x6e,0x64,0x61,0x72,0x69,0xa5,0x47,0x67,0xc4,0x5d,0x6a,
+0xc1,0xe4,0x6a,0xa2,0xdf,0x6b,0xa2,0xf8,0x6c,4,0x61,0x54,0x65,0xa2,0x6b,0x69,
+0xa2,0x82,0x6f,0xa2,0xc1,0x79,1,0x63,0x2e,0x64,0x12,0x69,0x61,0x6e,0xa3,0xa9,
+0x12,0x69,0x61,0x6e,0xa3,0xa7,1,0x6f,0x55,0x74,0x11,0x69,0x6e,1,0x31,0x96,
+0x65,0x11,0x78,0x74,6,0x64,0x21,0x64,0xa3,0x95,0x65,0x2c,0x66,0xa5,0x39,0x67,
+0xa5,0x3a,0xa2,0xe7,0x13,0x6e,0x64,0x65,0x64,6,0x64,0xc,0x64,0xa3,0x95,0x65,
+0xa3,0xe7,0x66,0xa5,0x39,0x67,0xa5,0x3a,0x61,0x2a,0x62,0x29,0x63,0xa3,0x94,0x26,
+0x18,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x6d,0x24,0x12,0x73,0x75,0x70,
+0x24,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x25,1,0x70,0x42,0x74,0x1d,0x74,
+0x65,0x72,0x6c,0x69,0x6b,0x65,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x79,0x12,0x63,
+0x68,0x61,0xa3,0x9c,2,0x6d,0x4e,0x6e,0x54,0x73,0x10,0x75,0xa2,0xb0,0x12,0x73,
+0x75,0x70,0xa4,0x31,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x31,0x11,0x62,
+0x75,0xa3,0x6f,0x12,0x65,0x61,0x72,1,0x61,0xa3,0xe8,0x62,1,0x69,0x38,0x73,
+0x17,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x75,0x17,0x64,0x65,0x6f,0x67,
+0x72,0x61,0x6d,0x73,0xa3,0x76,0x1a,0x77,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,
+0x65,0x73,0xa3,0x4d,0x10,0x61,1,0x6d,0x32,0x76,0x14,0x61,0x6e,0x65,0x73,0x65,
+0xa3,0xb5,0x10,0x6f,0x5c,0x12,0x65,0x78,0x74,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,
+1,0x61,0xa2,0x43,0x68,4,0x61,0x40,0x69,0x50,0x6d,0x6e,0x6f,0x86,0x75,0x15,
+0x64,0x61,0x77,0x61,0x64,0x69,0xa3,0xe6,0x16,0x72,0x6f,0x73,0x68,0x74,0x68,0x69,
+0xa3,0x89,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,
+0x74,0xa5,0x30,0x11,0x65,0x72,0x68,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,
+0x71,0x12,0x6a,0x6b,0x69,0xa3,0xe5,5,0x74,0x35,0x74,0x34,0x77,0x7a,0x79,0x13,
+0x61,0x68,0x6c,0x69,0xa3,0xa2,0x14,0x61,0x6b,0x61,0x6e,0x61,0x9e,1,0x65,0x4c,
+0x70,0x10,0x68,0x1f,0x6f,0x6e,0x65,0x74,0x69,0x63,0x65,0x78,0x74,0x65,0x6e,0x73,
+0x69,0x6f,0x6e,0x73,0xa3,0x6b,0x11,0x78,0x74,0xa3,0x6b,0x10,0x69,0xa5,0x46,0x69,
+0xa2,0x4e,0x6b,0xa2,0x51,0x6e,3,0x61,0x34,0x62,0x84,0x67,0x8a,0x6e,0x12,0x61,
+0x64,0x61,0x4d,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0xcb,0x16,0x70,0x6c,0x65,
+0x6d,0x65,0x6e,0x74,0xa3,0xcb,0x11,0x78,0x74,2,0x61,0xa5,0x13,0x62,0xa5,0x38,
+0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa5,0x13,0x62,0xa5,0x38,0x11,0x75,0x6e,
+0xa3,0x42,0x11,0x78,0x69,0x96,0x17,0x72,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x97,
+0x12,0x74,0x68,0x69,0xa3,0xc1,0x1c,0x74,0x6f,0x76,0x69,0x6b,0x6e,0x75,0x6d,0x65,
+0x72,0x61,0x6c,0x73,0xa5,0x45,0x67,0xa2,0xb5,0x68,0xa4,0x84,0x69,3,0x64,0x4c,
+0x6d,0xa2,0x55,0x6e,0xa2,0x62,0x70,0x13,0x61,0x65,0x78,0x74,0x2a,0x16,0x65,0x6e,
+0x73,0x69,0x6f,0x6e,0x73,0x2b,1,0x63,0x99,0x65,0x17,0x6f,0x67,0x72,0x61,0x70,
+0x68,0x69,0x63,1,0x64,0x56,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa4,0xb,
+0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa5,
+0xb,0x13,0x65,0x73,0x63,0x72,0x1f,0x69,0x70,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,
+0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x99,0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,
+0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0xba,1,0x64,0x62,0x73,0x1b,0x63,0x72,0x69,
+0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,
+0x69,0x61,0x6e,0xa3,0xbd,0x13,0x6c,0x61,0x76,0x69,0xa3,0xbe,0x11,0x69,0x63,1,
+0x6e,0x3e,0x73,0x1a,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa5,
+0x1e,0x19,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0xa3,0xb2,4,0x65,
+0x74,0x6c,0xa2,0x82,0x6f,0xa2,0x9a,0x72,0xa2,0x9e,0x75,2,0x6a,0x34,0x6e,0x3e,
+0x72,0x14,0x6d,0x75,0x6b,0x68,0x69,0x43,0x14,0x61,0x72,0x61,0x74,0x69,0x45,0x18,
+0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x1c,1,0x6e,0xa2,0x46,0x6f,
+1,0x6d,0x6e,0x72,0x13,0x67,0x69,0x61,0x6e,0x5a,1,0x65,0x40,0x73,0x11,0x75,
+0x70,0xa2,0x87,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x87,0x11,0x78,0x74,
+0xa4,0x1b,0x14,0x65,0x6e,0x64,0x65,0x64,0xa5,0x1b,0x1a,0x65,0x74,0x72,0x69,0x63,
+0x73,0x68,0x61,0x70,0x65,0x73,0x8c,0x12,0x65,0x78,0x74,0xa2,0xe3,0x14,0x65,0x6e,
+0x64,0x65,0x64,0xa3,0xe3,0x1e,0x65,0x72,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,
+0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x61,0x67,0x6f,0x6c,0x69,0x74,0x69,0x63,0xa2,
+0x88,0x12,0x73,0x75,0x70,0xa4,0xa,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,
+0xa,0x13,0x74,0x68,0x69,0x63,0xa3,0x59,1,0x61,0x5c,0x65,0x11,0x65,0x6b,0x30,
+1,0x61,0x38,0x65,0x11,0x78,0x74,0x6e,0x14,0x65,0x6e,0x64,0x65,0x64,0x6f,0x17,
+0x6e,0x64,0x63,0x6f,0x70,0x74,0x69,0x63,0x31,0x13,0x6e,0x74,0x68,0x61,0xa3,0xe4,
+2,0x61,0xa2,0x48,0x65,0xa2,0xdf,0x69,1,0x67,0x30,0x72,0x14,0x61,0x67,0x61,
+0x6e,0x61,0x9d,0x10,0x68,1,0x70,0x3a,0x73,0x18,0x75,0x72,0x72,0x6f,0x67,0x61,
+0x74,0x65,0x73,0xa3,0x4b,1,0x72,0x3c,0x75,0x19,0x73,0x75,0x72,0x72,0x6f,0x67,
+0x61,0x74,0x65,0x73,0xa3,0x4c,0x11,0x69,0x76,0x1f,0x61,0x74,0x65,0x75,0x73,0x65,
+0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,2,0x6c,0x32,0x6e,
+0x9a,0x74,0x12,0x72,0x61,0x6e,0xa5,2,0x10,0x66,2,0x61,0x58,0x6d,0x70,0x77,
+0x14,0x69,0x64,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x75,0x6c,0x6c,0x77,0x69,0x64,
+0x74,0x68,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x1a,0x6e,0x64,0x66,0x75,0x6c,0x6c,
+0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x13,0x61,0x72,0x6b,0x73,0xa3,0x52,2,0x67,
+0x34,0x69,0xa2,0x45,0x75,0x12,0x6e,0x6f,0x6f,0xa3,0x63,0x11,0x75,0x6c,0xa2,0x4a,
+2,0x63,0x3c,0x6a,0x5e,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,
+0x4a,0x1f,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x6a,0x61,
+0x6d,0x6f,0xa3,0x41,0x12,0x61,0x6d,0x6f,0x5c,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,
+0x65,0x64,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,0x19,0x66,0x69,0x72,0x6f,0x68,0x69,
+0x6e,0x67,0x79,0x61,0xa5,0x1d,0x13,0x62,0x72,0x65,0x77,0x37,0x61,0xa4,0xc,0x62,
+0xa6,0x59,0x63,0xa8,0x2e,0x64,0xac,0xe9,0x65,5,0x6d,0xa9,0x6d,0x94,0x6e,0xa2,
+0x41,0x74,0x15,0x68,0x69,0x6f,0x70,0x69,0x63,0x5e,1,0x65,0x40,0x73,0x11,0x75,
+0x70,0xa2,0x86,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x86,0x11,0x78,0x74,
+0xa2,0x85,2,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x65,0x13,0x6e,0x64,0x65,0x64,0xa2,
+0x85,1,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x16,0x6f,0x74,0x69,0x63,0x6f,0x6e,0x73,
+0xa3,0xce,0x15,0x63,0x6c,0x6f,0x73,0x65,0x64,2,0x61,0x5a,0x63,0x9e,0x69,0x1c,
+0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x75,0x70,0xa2,0xc4,0x16,
+0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc4,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,
+0x6d,0x86,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0xc3,0x13,0x72,0x69,0x63,0x73,
+0x86,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc3,0x11,0x6a,0x6b,
+0xa2,0x44,0x1f,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x61,0x6e,0x64,0x6d,0x6f,0x6e,
+0x74,0x68,0x73,0xa3,0x44,0x61,0x4a,0x67,0x76,0x6c,1,0x62,0x30,0x79,0x13,0x6d,
+0x61,0x69,0x63,0xa5,0x25,0x13,0x61,0x73,0x61,0x6e,0xa3,0xe2,0x13,0x72,0x6c,0x79,
+0x64,0x1f,0x79,0x6e,0x61,0x73,0x74,0x69,0x63,0x63,0x75,0x6e,0x65,0x69,0x66,0x6f,
+0x72,0x6d,0xa5,1,0x1f,0x79,0x70,0x74,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,
+0x67,0x6c,0x79,0x70,0x68,1,0x66,0x26,0x73,0xa3,0xc2,0x1c,0x6f,0x72,0x6d,0x61,
+0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa5,0x24,7,0x6e,0xc0,0xf2,0x6e,
+0x3e,0x72,0xa2,0x5d,0x73,0xa2,0xe5,0x76,0x14,0x65,0x73,0x74,0x61,0x6e,0xa3,0xbc,
+1,0x61,0x92,0x63,0x13,0x69,0x65,0x6e,0x74,1,0x67,0x34,0x73,0x15,0x79,0x6d,
+0x62,0x6f,0x6c,0x73,0xa3,0xa5,0x13,0x72,0x65,0x65,0x6b,1,0x6d,0x34,0x6e,0x15,
+0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x7f,0x13,0x75,0x73,0x69,0x63,0xa2,0x7e,0x19,
+0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x7e,0x10,0x74,0x1f,0x6f,
+0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,
+0xfe,2,0x61,0x32,0x6d,0xa2,0x7e,0x72,0x12,0x6f,0x77,0x73,0x7d,0x12,0x62,0x69,
+0x63,0x38,3,0x65,0x4a,0x6d,0x80,0x70,0xa2,0x50,0x73,0x11,0x75,0x70,0xa2,0x80,
+0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x80,0x11,0x78,0x74,3,0x61,0xa3,
+0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x65,0x13,0x6e,0x64,0x65,0x64,2,0x61,0xa3,
+0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x12,0x61,0x74,0x68,0xa2,0xd3,0x18,0x65,0x6d,
+0x61,0x74,0x69,0x63,0x61,0x6c,0x61,0x1f,0x6c,0x70,0x68,0x61,0x62,0x65,0x74,0x69,
+0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd3,1,0x66,0x42,0x72,0x1e,0x65,
+0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,1,0x61,
+0xa3,0x51,0x62,0xa3,0x55,0x14,0x65,0x6e,0x69,0x61,0x6e,0x35,0x12,0x63,0x69,0x69,
+0x23,0x64,0x9e,0x65,0xa2,0x42,0x68,0xa2,0x4d,0x6c,1,0x63,0x62,0x70,0x17,0x68,
+0x61,0x62,0x65,0x74,0x69,0x63,0x70,1,0x66,0xa3,0x50,0x72,0x1e,0x65,0x73,0x65,
+0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x50,0x16,0x68,
+0x65,0x6d,0x69,0x63,0x61,0x6c,0xa2,0xd0,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,
+0xa3,0xd0,0x12,0x6c,0x61,0x6d,0xa5,7,0x1a,0x67,0x65,0x61,0x6e,0x6e,0x75,0x6d,
+0x62,0x65,0x72,0x73,0xa3,0x77,0x11,0x6f,0x6d,0xa3,0xfd,7,0x6f,0x71,0x6f,0x64,
+0x72,0xa2,0x41,0x75,0xa2,0x58,0x79,0x1b,0x7a,0x61,0x6e,0x74,0x69,0x6e,0x65,0x6d,
+0x75,0x73,0x69,0x63,0xa2,0x5b,0x18,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,
+0xa3,0x5b,1,0x70,0x34,0x78,0x16,0x64,0x72,0x61,0x77,0x69,0x6e,0x67,0x89,0x14,
+0x6f,0x6d,0x6f,0x66,0x6f,0xa0,0x12,0x65,0x78,0x74,0xa2,0x43,0x14,0x65,0x6e,0x64,
+0x65,0x64,0xa3,0x43,0x10,0x61,1,0x68,0x40,0x69,0x12,0x6c,0x6c,0x65,0x92,0x17,
+0x70,0x61,0x74,0x74,0x65,0x72,0x6e,0x73,0x93,0x11,0x6d,0x69,0xa3,0xc9,1,0x67,
+0x2c,0x68,0x11,0x69,0x64,0xa3,0x64,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x81,0x61,
+0x48,0x65,0xa2,0x4e,0x68,0xa2,0x52,0x6c,0x1a,0x6f,0x63,0x6b,0x65,0x6c,0x65,0x6d,
+0x65,0x6e,0x74,0x73,0x8b,3,0x6c,0x34,0x6d,0x40,0x73,0x66,0x74,0x11,0x61,0x6b,
+0xa3,0xc7,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x93,0x11,0x75,0x6d,0xa2,0xb1,0x12,
+0x73,0x75,0x70,0xa2,0xca,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xca,1,
+0x69,0x30,0x73,0x13,0x61,0x76,0x61,0x68,0xa3,0xdd,0x15,0x63,0x6c,0x61,0x74,0x69,
+0x6e,0x23,0x14,0x6e,0x67,0x61,0x6c,0x69,0x41,0x16,0x61,0x69,0x6b,0x73,0x75,0x6b,
+0x69,0xa5,8,5,0x6f,0xc1,0x60,0x6f,0xa2,0x69,0x75,0xa4,0x24,0x79,1,0x70,
+0xa2,0x44,0x72,0x14,0x69,0x6c,0x6c,0x69,0x63,0x32,1,0x65,0x4c,0x73,0x11,0x75,
+0x70,0xa2,0x61,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa2,0x61,0x12,0x61,0x72,
+0x79,0xa3,0x61,0x11,0x78,0x74,4,0x61,0xa3,0x9e,0x62,0xa3,0xa0,0x63,0xa5,9,
+0x64,0xa5,0x43,0x65,0x13,0x6e,0x64,0x65,0x64,3,0x61,0xa3,0x9e,0x62,0xa3,0xa0,
+0x63,0xa5,9,0x64,0xa5,0x43,0x10,0x72,1,0x69,0x34,0x6f,0x15,0x6d,0x69,0x6e,
+0x6f,0x61,0x6e,0xa5,0x36,0x1a,0x6f,0x74,0x73,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,
+0x79,0xa3,0x7b,3,0x6d,0x5a,0x6e,0xa2,0x95,0x70,0xa2,0xa0,0x75,0x17,0x6e,0x74,
+0x69,0x6e,0x67,0x72,0x6f,0x64,0xa2,0x9a,0x17,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,
+0x73,0xa3,0x9a,2,0x62,0x3a,0x6d,0xa2,0x5f,0x70,0x15,0x61,0x74,0x6a,0x61,0x6d,
+0x6f,0xa3,0x41,0x14,0x69,0x6e,0x69,0x6e,0x67,2,0x64,0x46,0x68,0x9e,0x6d,0x1d,
+0x61,0x72,0x6b,0x73,0x66,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x1e,
+0x69,0x61,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x6d,0x61,0x72,0x6b,0x73,0x2e,
+2,0x65,0x40,0x66,0xa6,0x52,0x73,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,
+0x74,0xa3,0x83,0x16,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,0xa3,0xe0,0x17,0x61,0x6c,
+0x66,0x6d,0x61,0x72,0x6b,0x73,0xa3,0x52,0x11,0x6f,0x6e,0x1f,0x69,0x6e,0x64,0x69,
+0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0xa3,0xb2,0x1b,0x74,
+0x72,0x6f,0x6c,0x70,0x69,0x63,0x74,0x75,0x72,0x65,0x73,0x83,0x12,0x74,0x69,0x63,
+0xa2,0x84,0x1b,0x65,0x70,0x61,0x63,0x74,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,
+0xdf,1,0x6e,0x3e,0x72,0x1b,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0x75,0x15,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa2,0x98,0x16,0x6e,0x75,0x6d,
+0x62,0x65,0x72,0x73,0xa2,0x99,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,
+0x61,0x74,0x69,0x6f,0x6e,0xa3,0x99,0x61,0xa2,0xea,0x68,0xa4,0x14,0x6a,0x10,0x6b,
+0xa2,0x47,4,0x63,0x92,0x65,0xa2,0x83,0x72,0xa2,0xa1,0x73,0xa2,0xb3,0x75,0x1f,
+0x6e,0x69,0x66,0x69,0x65,0x64,0x69,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,
+0xa2,0x47,0x18,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,8,0x65,0x71,0x65,
+0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x69,0xa5,0x48,0x14,0x6f,
+0x6d,0x70,0x61,0x74,0xa2,0x45,1,0x66,0x96,0x69,1,0x62,0x44,0x64,0x17,0x65,
+0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x12,0x73,0x75,0x70,0xa3,0x5f,0x14,
+0x69,0x6c,0x69,0x74,0x79,0xa2,0x45,1,0x66,0x54,0x69,0x18,0x64,0x65,0x6f,0x67,
+0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,
+0x6e,0x74,0xa3,0x5f,0x13,0x6f,0x72,0x6d,0x73,0xa3,0x53,0x11,0x78,0x74,8,0x65,
+0xf,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x69,0xa5,0x48,
+0x61,0xa3,0x46,0x62,0xa3,0x5e,0x63,0xa3,0xc5,0x64,0xa3,0xd1,0x19,0x61,0x64,0x69,
+0x63,0x61,0x6c,0x73,0x73,0x75,0x70,0x94,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
+0x95,1,0x74,0x50,0x79,0x14,0x6d,0x62,0x6f,0x6c,0x73,0x9a,0x1d,0x61,0x6e,0x64,
+0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x9b,0x14,0x72,0x6f,0x6b,
+0x65,0x73,0xa3,0x82,2,0x6e,0x48,0x72,0x64,0x75,0x1d,0x63,0x61,0x73,0x69,0x61,
+0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,0xde,0x1d,0x61,0x64,0x69,0x61,
+0x6e,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x63,0x12,0x69,0x61,0x6e,0xa3,
+0xa8,2,0x61,0x3a,0x65,0x4c,0x6f,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa5,
+0x2d,1,0x6b,0x26,0x6d,0xa3,0xa4,0x11,0x6d,0x61,0xa3,0xd4,1,0x72,0x38,0x73,
+0x17,0x73,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa5,0x19,0x13,0x6f,0x6b,0x65,0x65,
+0x60,0x12,0x73,0x75,0x70,0xa2,0xff,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
+0xff,3,0x65,0x3e,0x69,0x8e,0x6f,0xa2,0x71,0x75,0x15,0x70,0x6c,0x6f,0x79,0x61,
+0x6e,0xa3,0xe1,1,0x73,0x60,0x76,0x16,0x61,0x6e,0x61,0x67,0x61,0x72,0x69,0x3e,
+0x12,0x65,0x78,0x74,0xa2,0xb3,1,0x61,0xa5,0x44,0x65,0x13,0x6e,0x64,0x65,0x64,
+0xa2,0xb3,0x10,0x61,0xa5,0x44,0x13,0x65,0x72,0x65,0x74,0xa3,0x5a,2,0x61,0x3a,
+0x6e,0x82,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa5,0x2f,0x18,0x63,0x72,
+0x69,0x74,0x69,0x63,0x61,0x6c,0x73,0x2e,2,0x65,0x30,0x66,0x36,0x73,0x11,0x75,
+0x70,0xa3,0x83,0x11,0x78,0x74,0xa3,0xe0,0x18,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0x77,0x14,0x67,0x62,0x61,0x74,0x73,0x91,1,0x67,0x3e,0x6d,0x12,0x69,
+0x6e,0x6f,0xa2,0xab,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xab,0x11,0x72,0x61,0xa5,
+0x1a,8,0x6d,0x5f,0x6d,0x3a,0x6e,0x48,0x73,0x7a,0x76,0xa2,0x4b,0x77,0x12,0x69,
+0x64,0x65,0x43,0x11,0x65,0x64,0x32,0x12,0x69,0x61,0x6c,0x33,2,0x61,0x40,0x62,
+0x37,0x6f,1,0x62,0x28,0x6e,0x10,0x65,0x21,0x13,0x72,0x65,0x61,0x6b,0x37,0x10,
+0x72,0x34,0x12,0x72,0x6f,0x77,0x35,2,0x6d,0x38,0x71,0x46,0x75,1,0x62,0x3d,
+0x70,0x3e,0x11,0x65,0x72,0x3f,1,0x61,0x24,0x6c,0x39,0x11,0x6c,0x6c,0x39,1,
+0x72,0x3b,0x75,0x12,0x61,0x72,0x65,0x3b,0x12,0x65,0x72,0x74,0x40,0x13,0x69,0x63,
+0x61,0x6c,0x41,0x63,0x58,0x65,0x92,0x66,0x96,0x69,1,0x6e,0x36,0x73,0x10,0x6f,
+0x30,0x14,0x6c,0x61,0x74,0x65,0x64,0x31,0x11,0x69,0x74,0x2e,0x12,0x69,0x61,0x6c,
+0x2f,2,0x61,0x36,0x69,0x48,0x6f,0x10,0x6d,0x24,0x12,0x70,0x61,0x74,0x25,0x10,
+0x6e,0x22,0x15,0x6f,0x6e,0x69,0x63,0x61,0x6c,0x23,0x13,0x72,0x63,0x6c,0x65,0x27,
+0x11,0x6e,0x63,0x27,2,0x69,0x3a,0x6f,0x44,0x72,0x10,0x61,0x2c,0x14,0x63,0x74,
+0x69,0x6f,0x6e,0x2d,0x10,0x6e,0x28,0x11,0x61,0x6c,0x29,0x11,0x6e,0x74,0x2b,4,
+0x61,0x3a,0x66,0x4c,0x68,0x5e,0x6e,0x70,0x77,0x2a,0x12,0x69,0x64,0x65,0x2b,0x22,
+0x17,0x6d,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x26,0x17,0x75,0x6c,0x6c,0x77,
+0x69,0x64,0x74,0x68,0x27,0x24,0x17,0x61,0x6c,0x66,0x77,0x69,0x64,0x74,0x68,0x25,
+0x20,1,0x61,0x30,0x65,0x14,0x75,0x74,0x72,0x61,0x6c,0x21,0x28,0x13,0x72,0x72,
+0x6f,0x77,0x29,0xd,0x6e,0xc0,0xfb,0x73,0x6d,0x73,0x3a,0x74,0x98,0x75,0xa2,0x49,
+0x7a,2,0x6c,0x3b,0x70,0x3d,0x73,0x39,5,0x6f,0x28,0x6f,0x57,0x70,0x34,0x75,
+0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x45,0x11,0x61,0x63,1,0x65,0x32,0x69,
+0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x31,0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,
+0x6f,0x72,0x39,0x63,0x53,0x6b,0x55,0x6d,0x51,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,
+0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x27,1,0x6e,0x40,0x70,0x1c,0x70,0x65,
+0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x23,0x17,0x61,0x73,0x73,
+0x69,0x67,0x6e,0x65,0x64,0x21,0x6e,0x8a,0x6f,0xa2,0x47,0x70,8,0x66,0x14,0x66,
+0x5b,0x69,0x59,0x6f,0x4f,0x72,0x24,0x73,0x49,0x17,0x69,0x76,0x61,0x74,0x65,0x75,
+0x73,0x65,0x43,0x61,0x2c,0x63,0x4d,0x64,0x47,0x65,0x4b,0x1f,0x72,0x61,0x67,0x72,
+0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x3d,2,0x64,0x33,
+0x6c,0x35,0x6f,0x36,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,
+0x6b,0x2d,1,0x70,0x7c,0x74,0x12,0x68,0x65,0x72,3,0x6c,0x38,0x6e,0x42,0x70,
+0x4c,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x57,0x14,0x65,0x74,0x74,0x65,0x72,0x2b,
+0x14,0x75,0x6d,0x62,0x65,0x72,0x37,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
+0x6f,0x6e,0x4f,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,
+0x6e,0x49,0x66,0x9e,0x66,0x88,0x69,0xa2,0x4b,0x6c,0xa2,0x5c,0x6d,4,0x61,0x60,
+0x63,0x31,0x65,0x2f,0x6e,0x2d,0x6f,0x15,0x64,0x69,0x66,0x69,0x65,0x72,1,0x6c,
+0x30,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x55,0x14,0x65,0x74,0x74,0x65,0x72,0x29,
+0x17,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x51,1,0x69,0x2e,0x6f,0x13,0x72,
+0x6d,0x61,0x74,0x41,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
+0x69,0x6f,0x6e,0x5b,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,
+0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,6,0x6d,0x18,0x6d,0x29,0x6f,0x28,0x74,
+0x27,0x75,0x23,0x2a,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,
+0x65,0x72,0x25,0x65,0x28,0x69,0x3c,0x6c,0x25,0x19,0x74,0x74,0x65,0x72,0x6e,0x75,
+0x6d,0x62,0x65,0x72,0x35,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,
+0x72,0x3b,0x63,0x44,0x64,0xa2,0x60,0x65,0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,
+0x67,0x6d,0x61,0x72,0x6b,0x2f,6,0x6e,0x39,0x6e,0x46,0x6f,0x4e,0x73,0x45,0x75,
+0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x53,0x20,0x12,
+0x74,0x72,0x6c,0x3f,0x42,0x10,0x6e,1,0x6e,0x2c,0x74,0x12,0x72,0x6f,0x6c,0x3f,
+0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,
+0x6e,0x4d,0x63,0x3f,0x66,0x41,0x6c,0x1d,0x6f,0x73,0x65,0x70,0x75,0x6e,0x63,0x74,
+0x75,0x61,0x74,0x69,0x6f,0x6e,0x4b,2,0x61,0x30,0x65,0x4a,0x69,0x12,0x67,0x69,
+0x74,0x33,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,
+0x47,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,0x72,0x33,0,0x13,
+0x6e,0xc1,0xf,0x74,0x76,0x74,0x4c,0x76,0x9a,0x77,0xa2,0x48,0x79,0xa2,0x49,0x7a,
+1,0x61,0x2c,0x68,0x12,0x61,0x69,0x6e,0x8b,0x11,0x69,0x6e,0x85,2,0x61,0x36,
+0x65,0x3c,0x68,0x14,0x69,0x6e,0x79,0x65,0x68,0xa3,0x66,1,0x68,0x71,0x77,0x73,
+1,0x68,0x28,0x74,0x10,0x68,0x77,0x16,0x6d,0x61,0x72,0x62,0x75,0x74,0x61,0x74,
+0x13,0x67,0x6f,0x61,0x6c,0x3d,0x1a,0x65,0x72,0x74,0x69,0x63,0x61,0x6c,0x74,0x61,
+0x69,0x6c,0xa3,0x67,0x11,0x61,0x77,0x79,1,0x65,0x32,0x75,0x11,0x64,0x68,0x80,
+0x11,0x68,0x65,0x83,0x10,0x68,0x7a,1,0x62,0x34,0x77,0x16,0x69,0x74,0x68,0x74,
+0x61,0x69,0x6c,0x7f,0x14,0x61,0x72,0x72,0x65,0x65,0x7d,0x6e,0xa2,0x4c,0x70,0xa2,
+0x69,0x71,0xa2,0x69,0x72,0xa2,0x6f,0x73,5,0x74,0x22,0x74,0x38,0x77,0x4c,0x79,
+0x16,0x72,0x69,0x61,0x63,0x77,0x61,0x77,0x6f,0x18,0x72,0x61,0x69,0x67,0x68,0x74,
+0x77,0x61,0x77,0xa3,0x55,0x15,0x61,0x73,0x68,0x6b,0x61,0x66,0x6d,0x61,0x2e,0x65,
+0x38,0x68,0x11,0x69,0x6e,0x6b,0x10,0x64,0x62,0x11,0x68,0x65,0x65,1,0x65,0x2e,
+0x6d,0x13,0x6b,0x61,0x74,0x68,0x69,0x10,0x6e,0x67,2,0x6f,0x2c,0x75,0x50,0x79,
+0x10,0x61,0x91,1,0x6a,0x28,0x6f,0x10,0x6e,0x55,0x1a,0x6f,0x69,0x6e,0x69,0x6e,
+0x67,0x67,0x72,0x6f,0x75,0x70,0x21,0x10,0x6e,0x57,0x10,0x65,0x59,0x10,0x61,1,
+0x66,0x5b,0x70,0x10,0x68,0x5d,1,0x65,0x38,0x6f,0x18,0x68,0x69,0x6e,0x67,0x79,
+0x61,0x79,0x65,0x68,0x93,1,0x68,0x5f,0x76,0x16,0x65,0x72,0x73,0x65,0x64,0x70,
+0x65,0x61,0x67,0xc1,0xc7,0x67,0xa4,0x52,0x68,0xa4,0x59,0x6b,0xa4,0x99,0x6c,0xa4,
+0xb2,0x6d,2,0x61,0x2e,0x65,0xa4,0x3e,0x69,0x10,0x6d,0x53,1,0x6c,0xa2,0xe7,
+0x6e,0x16,0x69,0x63,0x68,0x61,0x65,0x61,0x6e,0,0x12,0x6e,0x76,0x73,0x51,0x73,
+0x3e,0x74,0x5c,0x77,0xa0,0x79,0xa2,0x42,0x7a,0x13,0x61,0x79,0x69,0x6e,0xa3,0x54,
+0x10,0x61,1,0x64,0x2e,0x6d,0x12,0x65,0x6b,0x68,0xa3,0x4c,0x11,0x68,0x65,0xa3,
+0x4b,3,0x61,0x38,0x65,0x3c,0x68,0x4a,0x77,0x13,0x65,0x6e,0x74,0x79,0xa3,0x51,
+0x10,0x77,0xa3,0x4d,1,0x6e,0xa3,0x4e,0x74,0x10,0x68,0xa3,0x4f,0x14,0x61,0x6d,
+0x65,0x64,0x68,0xa3,0x50,0x11,0x61,0x77,0xa3,0x52,0x12,0x6f,0x64,0x68,0xa3,0x53,
+0x6e,0x3a,0x6f,0x40,0x70,0x46,0x71,0x4a,0x72,0x12,0x65,0x73,0x68,0xa3,0x4a,0x11,
+0x75,0x6e,0xa3,0x46,0x11,0x6e,0x65,0xa3,0x47,0x10,0x65,0xa3,0x48,0x12,0x6f,0x70,
+0x68,0xa3,0x49,0x67,0x33,0x67,0x38,0x68,0x40,0x6b,0x5e,0x6c,0x66,0x6d,0x11,0x65,
+0x6d,0xa3,0x45,0x13,0x69,0x6d,0x65,0x6c,0xa1,1,0x65,0x32,0x75,0x14,0x6e,0x64,
+0x72,0x65,0x64,0xa3,0x42,0x11,0x74,0x68,0xa3,0x41,0x12,0x61,0x70,0x68,0xa3,0x43,
+0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x44,0x61,0x34,0x62,0x4a,0x64,0x50,0x66,0x12,
+0x69,0x76,0x65,0x9f,1,0x6c,0x2a,0x79,0x11,0x69,0x6e,0x97,0x12,0x65,0x70,0x68,
+0x95,0x12,0x65,0x74,0x68,0x99,1,0x61,0x30,0x68,0x14,0x61,0x6d,0x65,0x64,0x68,
+0x9d,0x13,0x6c,0x65,0x74,0x68,0x9b,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,6,0x6e,
+0x2c,0x6e,0x34,0x72,0x5e,0x73,0x62,0x74,0x11,0x74,0x61,0xa3,0x63,2,0x67,0x2e,
+0x6e,0x32,0x79,0x10,0x61,0xa3,0x60,0x10,0x61,0xa3,0x5d,1,0x61,0xa3,0x5e,0x6e,
+0x10,0x61,0xa3,0x5f,0x10,0x61,0xa3,0x61,0x11,0x73,0x61,0xa3,0x62,0x62,0x3c,0x6a,
+0x42,0x6c,0x10,0x6c,1,0x61,0xa3,0x5b,0x6c,0x10,0x61,0xa3,0x5c,0x11,0x68,0x61,
+0xa3,0x59,0x10,0x61,0xa3,0x5a,0x11,0x65,0x6d,0x51,0x10,0x61,1,0x66,0x37,0x6d,
+0x11,0x61,0x6c,0x39,1,0x61,0x40,0x65,0x3e,1,0x68,0x28,0x74,0x10,0x68,0x45,
+0x40,0x13,0x67,0x6f,0x61,0x6c,0x43,2,0x68,0x3b,0x6d,0x5c,0x6e,0x1a,0x69,0x66,
+0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,1,0x6b,0x2a,0x70,0x10,0x61,0xa3,
+0x65,0x15,0x69,0x6e,0x6e,0x61,0x79,0x61,0xa3,0x64,0x1a,0x7a,0x61,0x6f,0x6e,0x68,
+0x65,0x68,0x67,0x6f,0x61,0x6c,0x3d,2,0x61,0x3a,0x68,0x44,0x6e,0x17,0x6f,0x74,
+0x74,0x65,0x64,0x68,0x65,0x68,0x4b,1,0x66,0x47,0x70,0x10,0x68,0x49,0x12,0x61,
+0x70,0x68,0x89,0x11,0x61,0x6d,0x4c,0x12,0x61,0x64,0x68,0x4f,0x61,0x6e,0x62,0xa2,
+0x54,0x64,0xa2,0x70,0x65,0x31,0x66,2,0x61,0x3e,0x65,0x4a,0x69,0x19,0x6e,0x61,
+0x6c,0x73,0x65,0x6d,0x6b,0x61,0x74,0x68,0x35,0x15,0x72,0x73,0x69,0x79,0x65,0x68,
+0x8f,0x86,0x10,0x68,0x33,2,0x66,0x3c,0x69,0x70,0x6c,1,0x61,0x28,0x65,0x10,
+0x66,0x27,0x11,0x70,0x68,0x25,0x14,0x72,0x69,0x63,0x61,0x6e,2,0x66,0x30,0x6e,
+0x36,0x71,0x11,0x61,0x66,0xa3,0x58,0x11,0x65,0x68,0xa3,0x56,0x12,0x6f,0x6f,0x6e,
+0xa3,0x57,0x10,0x6e,0x23,1,0x65,0x4a,0x75,0x10,0x72,0x1f,0x75,0x73,0x68,0x61,
+0x73,0x6b,0x69,0x79,0x65,0x68,0x62,0x61,0x72,0x72,0x65,0x65,0x8d,1,0x68,0x29,
+0x74,0x10,0x68,0x2b,0x11,0x61,0x6c,0x2c,0x16,0x61,0x74,0x68,0x72,0x69,0x73,0x68,
+0x2f,7,0x6e,0x2e,0x6e,0x2c,0x72,0x3e,0x74,0x56,0x75,0x21,0x18,0x6f,0x6e,0x6a,
+0x6f,0x69,0x6e,0x69,0x6e,0x67,0x21,0x28,0x1a,0x69,0x67,0x68,0x74,0x6a,0x6f,0x69,
+0x6e,0x69,0x6e,0x67,0x29,0x2a,0x19,0x72,0x61,0x6e,0x73,0x70,0x61,0x72,0x65,0x6e,
+0x74,0x2b,0x63,0x23,0x64,0x40,0x6a,0x56,0x6c,0x26,0x19,0x65,0x66,0x74,0x6a,0x6f,
+0x69,0x6e,0x69,0x6e,0x67,0x27,0x24,0x19,0x75,0x61,0x6c,0x6a,0x6f,0x69,0x6e,0x69,
+0x6e,0x67,0x25,0x19,0x6f,0x69,0x6e,0x63,0x61,0x75,0x73,0x69,0x6e,0x67,0x23,0,
+0x14,0x6e,0xc0,0xe5,0x73,0x5e,0x77,0x23,0x77,0x40,0x78,0x58,0x7a,0x10,0x77,0x58,
+1,0x6a,0x75,0x73,0x13,0x70,0x61,0x63,0x65,0x59,1,0x6a,0x5d,0x6f,0x17,0x72,
+0x64,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x5d,0x10,0x78,0x21,0x73,0x4a,0x75,0x7a,0x76,
+1,0x66,0x7d,0x69,0x7e,0x13,0x72,0x61,0x6d,0x61,0x7e,0x14,0x66,0x69,0x6e,0x61,
+0x6c,0x7d,4,0x61,0x51,0x67,0x53,0x70,0x28,0x75,0x30,0x79,0x57,0x54,0x12,0x61,
+0x63,0x65,0x55,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x53,0x15,0x6e,0x6b,0x6e,
+0x6f,0x77,0x6e,0x21,0x6e,0x60,0x6f,0xa2,0x41,0x70,0xa2,0x50,0x71,0xa2,0x6e,0x72,
+1,0x65,0x24,0x69,0x6f,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64,0x69,
+0x63,0x61,0x74,0x6f,0x72,0x6f,4,0x65,0x3e,0x6c,0x5b,0x6f,0x46,0x73,0x45,0x75,
+0x46,0x14,0x6d,0x65,0x72,0x69,0x63,0x47,0x15,0x78,0x74,0x6c,0x69,0x6e,0x65,0x5b,
+0x17,0x6e,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x45,0x10,0x70,0x48,0x1c,0x65,0x6e,
+0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,1,0x6f,0x3e,0x72,
+0x4c,0x1a,0x65,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x4d,0x4a,0x1b,
+0x73,0x74,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x4b,0x10,0x75,0x4e,
+0x16,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x68,0x7b,0x68,0x50,0x69,0x86,0x6a,
+0xa2,0x61,0x6c,0xa2,0x65,0x6d,0x1c,0x61,0x6e,0x64,0x61,0x74,0x6f,0x72,0x79,0x62,
+0x72,0x65,0x61,0x6b,0x2d,4,0x32,0x5f,0x33,0x61,0x65,0x34,0x6c,0x6d,0x79,0x3a,
+0x13,0x70,0x68,0x65,0x6e,0x3b,0x19,0x62,0x72,0x65,0x77,0x6c,0x65,0x74,0x74,0x65,
+0x72,0x6d,2,0x64,0x28,0x6e,0x3c,0x73,0x41,0x3c,0x18,0x65,0x6f,0x67,0x72,0x61,
+0x70,0x68,0x69,0x63,0x3d,0x3e,1,0x66,0x3e,0x73,0x11,0x65,0x70,1,0x61,0x22,
+0x65,0x14,0x72,0x61,0x62,0x6c,0x65,0x3f,0x18,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,
+0x69,0x63,0x41,2,0x6c,0x63,0x74,0x65,0x76,0x67,1,0x66,0x43,0x69,0x15,0x6e,
+0x65,0x66,0x65,0x65,0x64,0x43,0x61,0x42,0x62,0xa2,0x49,0x63,0xa2,0x76,0x65,0xa2,
+0xfc,0x67,0x10,0x6c,0x38,0x11,0x75,0x65,0x39,5,0x6d,0xf,0x6d,0x28,0x70,0x79,
+0x73,0x7b,0x16,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x69,0x23,0x6b,0x38,0x6c,
+0x24,0x17,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x25,0x76,0x13,0x73,0x61,0x72,
+0x61,0x76,1,0x70,0x2e,0x73,0x13,0x74,0x61,0x72,0x74,0x7b,0x15,0x72,0x65,0x62,
+0x61,0x73,0x65,0x79,4,0x32,0x27,0x61,0x29,0x62,0x2b,0x6b,0x2d,0x72,0x12,0x65,
+0x61,0x6b,2,0x61,0x36,0x62,0x3e,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x57,
+0x13,0x66,0x74,0x65,0x72,0x29,1,0x65,0x2a,0x6f,0x11,0x74,0x68,0x27,0x13,0x66,
+0x6f,0x72,0x65,0x2b,7,0x6d,0x51,0x6d,0x33,0x6f,0x28,0x70,0x69,0x72,0x35,1,
+0x6d,0x76,0x6e,1,0x64,0x3c,0x74,0x1a,0x69,0x6e,0x67,0x65,0x6e,0x74,0x62,0x72,
+0x65,0x61,0x6b,0x2f,0x15,0x69,0x74,0x69,0x6f,0x6e,0x61,0x1f,0x6c,0x6a,0x61,0x70,
+0x61,0x6e,0x65,0x73,0x65,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x6b,1,0x62,0x3a,
+0x70,0x19,0x6c,0x65,0x78,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x51,0x18,0x69,0x6e,
+0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x33,0x61,0x6a,0x62,0x2f,0x6a,0x6b,0x6c,0x30,
+0x13,0x6f,0x73,0x65,0x70,1,0x61,0x38,0x75,0x18,0x6e,0x63,0x74,0x75,0x61,0x74,
+0x69,0x6f,0x6e,0x31,0x18,0x72,0x65,0x6e,0x74,0x68,0x65,0x73,0x69,0x73,0x69,0x1b,
+0x72,0x72,0x69,0x61,0x67,0x65,0x72,0x65,0x74,0x75,0x72,0x6e,0x35,2,0x62,0x3e,
+0x6d,0x46,0x78,0x36,0x18,0x63,0x6c,0x61,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x37,0x70,
+0x12,0x61,0x73,0x65,0x71,0x72,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x73,1,
+0x64,0x42,0x6e,1,0x6f,0x32,0x75,0x26,0x14,0x6d,0x65,0x72,0x69,0x63,0x27,0x11,
+0x6e,0x65,0x21,1,0x65,0x2e,0x69,0x24,0x12,0x67,0x69,0x74,0x25,0x22,0x14,0x63,
+0x69,0x6d,0x61,0x6c,0x23,0,0x18,0x6e,0xc4,0x6f,0x74,0xc1,0x91,0x77,0x96,0x77,
+0xa2,0x4c,0x78,0xa2,0x70,0x79,0xa2,0x7a,0x7a,6,0x73,0x1e,0x73,0x34,0x78,0x42,
+0x79,0x48,0x7a,0x11,0x7a,0x7a,0xa3,0x67,0x10,0x79,1,0x65,0xa3,0xae,0x6d,0xa3,
+0x81,0x11,0x78,0x78,0xa3,0x66,0x11,0x79,0x79,0x21,0x61,0x30,0x69,0x58,0x6d,0x11,
+0x74,0x68,0xa3,0x80,0x10,0x6e,1,0x61,0x26,0x62,0xa3,0xb1,0x1a,0x62,0x61,0x7a,
+0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa3,0xb1,0x11,0x6e,0x68,0x23,2,0x61,
+0x30,0x63,0x5a,0x6f,0x11,0x6c,0x65,0xa3,0x9b,1,0x6e,0x3c,0x72,0x10,0x61,0xa2,
+0x92,0x15,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0x92,0x12,0x63,0x68,0x6f,0xa3,0xbc,
+0x11,0x68,0x6f,0xa3,0xbc,1,0x70,0x2c,0x73,0x11,0x75,0x78,0xa3,0x65,0x11,0x65,
+0x6f,0x9b,1,0x65,0x2c,0x69,0x72,0x11,0x69,0x69,0x73,0x11,0x7a,0x69,0xa2,0xc0,
+0x11,0x64,0x69,0xa3,0xc0,0x74,0x66,0x75,0xa2,0xde,0x76,1,0x61,0x48,0x69,1,
+0x73,0x38,0x74,0x10,0x68,0xa2,0xc5,0x13,0x6b,0x75,0x71,0x69,0xa3,0xc5,0x10,0x70,
+0xa3,0x64,0x10,0x69,0xa2,0x63,0x10,0x69,0xa3,0x63,7,0x68,0x3e,0x68,0x34,0x69,
+0x48,0x6e,0x86,0x6f,0x11,0x74,0x6f,0xa3,0xc4,0x10,0x61,1,0x61,0x24,0x69,0x6d,
+0x6a,0x11,0x6e,0x61,0x6b,2,0x62,0x3a,0x66,0x4a,0x72,0x10,0x68,0xa2,0x9e,0x12,
+0x75,0x74,0x61,0xa3,0x9e,1,0x65,0x24,0x74,0x6f,0x12,0x74,0x61,0x6e,0x6f,0x14,
+0x69,0x6e,0x61,0x67,0x68,0x99,0x11,0x73,0x61,0xa3,0xc3,0x61,0x36,0x65,0xa2,0x65,
+0x66,0xa2,0x71,0x67,0x11,0x6c,0x67,0x75,6,0x6c,0x28,0x6c,0x32,0x6d,0x38,0x6e,
+0x44,0x76,0x10,0x74,0xa3,0x7f,1,0x65,0x89,0x75,0x97,1,0x69,0x24,0x6c,0x67,
+0x10,0x6c,0x67,0x10,0x67,0xa2,0x9a,1,0x73,0x2a,0x75,0x10,0x74,0xa3,0x9a,0x10,
+0x61,0xa3,0xc3,0x67,0x36,0x69,0x52,0x6b,0x10,0x72,0xa2,0x99,0x10,0x69,0xa3,0x99,
+1,0x61,0x30,0x62,0x7a,0x13,0x61,0x6e,0x77,0x61,0x7b,0x12,0x6c,0x6f,0x67,0x75,
+2,0x6c,0x32,0x74,0x34,0x76,0x12,0x69,0x65,0x74,0xa3,0x7f,0x10,0x65,0x89,0x12,
+0x68,0x61,0x6d,0xa3,0x6a,1,0x6c,0x2a,0x6e,0x10,0x67,0xa3,0x62,0x10,0x75,0x68,
+0x11,0x67,0x75,0x69,0x11,0x6e,0x67,0x99,1,0x67,0x32,0x6e,0x14,0x6b,0x6e,0x6f,
+0x77,0x6e,0xa3,0x67,0x11,0x61,0x72,0x8a,0x13,0x69,0x74,0x69,0x63,0x8b,0x71,0xc1,
+0x13,0x71,0xa2,0xde,0x72,0xa2,0xe3,0x73,6,0x69,0x8a,0x69,0x72,0x6f,0xa2,0x4c,
+0x75,0xa2,0x75,0x79,1,0x6c,0x46,0x72,4,0x63,0x65,0x65,0xa3,0x5f,0x69,0x2c,
+0x6a,0xa3,0x60,0x6e,0xa3,0x61,0x11,0x61,0x63,0x65,0x10,0x6f,0x94,0x16,0x74,0x69,
+0x6e,0x61,0x67,0x72,0x69,0x95,2,0x64,0x3c,0x67,0x4c,0x6e,1,0x64,0xa3,0x91,
+0x68,0x62,0x12,0x61,0x6c,0x61,0x63,0x10,0x64,0xa2,0xa6,0x12,0x68,0x61,0x6d,0xa3,
+0xa6,0x17,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa3,0x70,2,0x67,0x3a,0x72,
+0x52,0x79,0x10,0x6f,0xa2,0xb0,0x12,0x6d,0x62,0x6f,0xa3,0xb0,1,0x64,0x26,0x6f,
+0xa3,0xb8,0xa2,0xb7,0x12,0x69,0x61,0x6e,0xa3,0xb7,0x10,0x61,0xa2,0x98,0x16,0x73,
+0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0x98,0x11,0x6e,0x64,0xa2,0x71,0x14,0x61,0x6e,
+0x65,0x73,0x65,0xa3,0x71,0x61,0x5c,0x67,0xa2,0x43,0x68,1,0x61,0x2a,0x72,0x10,
+0x64,0xa3,0x97,2,0x72,0x28,0x76,0x30,0x77,0x87,0x12,0x61,0x64,0x61,0xa3,0x97,
+0x12,0x69,0x61,0x6e,0x87,2,0x6d,0x40,0x72,0x58,0x75,0x10,0x72,0xa2,0x6f,0x15,
+0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0x6f,1,0x61,0x26,0x72,0xa3,0x7e,0x14,0x72,
+0x69,0x74,0x61,0x6e,0xa3,0x7e,1,0x61,0xa3,0x5e,0x62,0xa3,0x85,0x11,0x6e,0x77,
+0xa3,0x70,0x11,0x61,0x61,1,0x63,0x2f,0x69,0x23,3,0x65,0x3e,0x6a,0x48,0x6f,
+0x4e,0x75,0x10,0x6e,1,0x69,0x24,0x72,0x61,0x10,0x63,0x61,0x13,0x6a,0x61,0x6e,
+0x67,0xa3,0x6e,0x11,0x6e,0x67,0xa3,0x6e,1,0x68,0x2a,0x72,0x10,0x6f,0xa3,0x5d,
+0x10,0x67,0xa3,0xb6,0x6e,0xa2,0x83,0x6f,0xa4,1,0x70,5,0x6c,0x1e,0x6c,0x44,
+0x72,0x4a,0x73,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,
+0xa3,0x7b,0x11,0x72,0x64,0xa3,0x5c,0x11,0x74,0x69,0xa3,0x7d,0x61,0x7c,0x65,0xa2,
+0x54,0x68,3,0x61,0x3e,0x6c,0x4e,0x6e,0x5e,0x6f,0x16,0x65,0x6e,0x69,0x63,0x69,
+0x61,0x6e,0xa3,0x5b,0x10,0x67,0xa2,0x5a,0x12,0x73,0x70,0x61,0xa3,0x5a,2,0x69,
+0xa3,0x7a,0x70,0xa3,0x7b,0x76,0xa3,0x7c,0x10,0x78,0xa3,0x5b,2,0x68,0x3e,0x6c,
+0x50,0x75,0x10,0x63,0xa2,0xa5,0x14,0x69,0x6e,0x68,0x61,0x75,0xa3,0xa5,0x17,0x61,
+0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0x4b,0x10,0x6d,0xa2,0x90,0x14,0x79,0x72,
+0x65,0x6e,0x65,0xa3,0x90,0x11,0x72,0x6d,0xa3,0x59,6,0x6b,0x36,0x6b,0x56,0x73,
+0x6e,0x75,0x74,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,
+0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xba,1,0x67,0x2e,0x6f,0xa2,0x57,
+0x10,0x6f,0xa3,0x57,0x10,0x62,0xa3,0x84,0x11,0x68,0x75,0xa3,0x96,0x12,0x73,0x68,
+0x75,0xa3,0x96,0x61,0x42,0x62,0x9e,0x65,0x10,0x77,1,0x61,0xa3,0xaa,0x74,0x14,
+0x61,0x69,0x6c,0x75,0x65,0x97,3,0x62,0x32,0x67,0x40,0x6e,0x56,0x72,0x10,0x62,
+0xa3,0x8e,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0x8f,0x10,0x6d,0xa2,0xc7,0x15,
+0x75,0x6e,0x64,0x61,0x72,0x69,0xa3,0xc7,0x10,0x64,0xa2,0xbb,0x16,0x69,0x6e,0x61,
+0x67,0x61,0x72,0x69,0xa3,0xbb,0x11,0x61,0x74,0xa3,0x8f,4,0x67,0x3c,0x6c,0x4e,
+0x72,0xa2,0x8e,0x73,0xa2,0x9c,0x75,0x11,0x67,0x72,0xa3,0xc2,1,0x61,0x2a,0x68,
+0x11,0x61,0x6d,0x5b,0x10,0x6d,0x5b,1,0x63,0xa2,0x6a,0x64,6,0x70,0x41,0x70,
+0x3a,0x73,0x58,0x74,0x86,0x75,0x14,0x79,0x67,0x68,0x75,0x72,0xa3,0xc2,0x11,0x65,
+0x72,1,0x6d,0x2c,0x73,0x12,0x69,0x61,0x6e,0x9b,0x11,0x69,0x63,0xa3,0x59,0x10,
+0x6f,1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,
+0x85,0x13,0x64,0x69,0x61,0x6e,0xa3,0xb8,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0x58,
+0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,
+0x6e,0xa3,0x8e,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa3,0x4c,0x14,0x74,
+0x61,0x6c,0x69,0x63,0x5d,1,0x68,0x26,0x6b,0xa3,0x6d,0x12,0x69,0x6b,0x69,0xa3,
+0x6d,2,0x69,0x2c,0x6b,0x30,0x79,0x10,0x61,0x5f,0x11,0x79,0x61,0x5f,0x10,0x68,
+0xa3,0x58,2,0x61,0x36,0x67,0x3c,0x6d,0x10,0x61,0x84,0x12,0x6e,0x79,0x61,0x85,
+0x11,0x67,0x65,0xa3,0xab,0x10,0x65,0xa3,0xab,0x68,0xc3,0x15,0x6b,0xc2,0x2c,0x6b,
+0xa4,0x17,0x6c,0xa4,0xba,0x6d,8,0x6f,0x46,0x6f,0x48,0x72,0x74,0x74,0x80,0x75,
+0x86,0x79,1,0x61,0x28,0x6d,0x10,0x72,0x59,0x13,0x6e,0x6d,0x61,0x72,0x59,2,
+0x64,0x2e,0x6e,0x32,0x6f,0x10,0x6e,0xa3,0x72,0x10,0x69,0xa3,0xa3,0x10,0x67,0x56,
+0x14,0x6f,0x6c,0x69,0x61,0x6e,0x57,0x10,0x6f,0xa2,0x95,0x10,0x6f,0xa3,0x95,0x11,
+0x65,0x69,0xa3,0x73,0x11,0x6c,0x74,0xa2,0xa4,0x12,0x61,0x6e,0x69,0xa3,0xa4,0x61,
+0x36,0x65,0xa2,0x67,0x69,0xa2,0xbd,0x6c,0x11,0x79,0x6d,0x55,6,0x6e,0x38,0x6e,
+0x32,0x72,0x5c,0x73,0x6c,0x79,0x10,0x61,0xa3,0x55,1,0x64,0x38,0x69,0xa2,0x79,
+0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0x79,0xa2,0x54,0x12,0x61,0x69,0x63,0xa3,
+0x54,0x10,0x63,0xa2,0xa9,0x12,0x68,0x65,0x6e,0xa3,0xa9,0x18,0x61,0x72,0x61,0x6d,
+0x67,0x6f,0x6e,0x64,0x69,0xa3,0xaf,0x68,0x36,0x6b,0x4c,0x6c,0x15,0x61,0x79,0x61,
+0x6c,0x61,0x6d,0x55,1,0x61,0x26,0x6a,0xa3,0xa0,0x13,0x6a,0x61,0x6e,0x69,0xa3,
+0xa0,0x10,0x61,0xa2,0xb4,0x12,0x73,0x61,0x72,0xa3,0xb4,3,0x64,0x78,0x65,0x94,
+0x6e,0xa2,0x42,0x72,1,0x63,0xa3,0x8d,0x6f,0xa2,0x56,0x13,0x69,0x74,0x69,0x63,
+1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,
+0x56,0x15,0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0x8d,1,0x65,0x26,0x66,0xa3,0xb5,
+0x16,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa3,0xb5,0x17,0x74,0x65,0x69,0x6d,0x61,
+0x79,0x65,0x6b,0xa3,0x73,0x10,0x64,0xa2,0x8c,0x17,0x65,0x6b,0x69,0x6b,0x61,0x6b,
+0x75,0x69,0xa3,0x8c,0x11,0x61,0x6f,0xa3,0x5c,6,0x6e,0x1a,0x6e,0x34,0x6f,0x38,
+0x70,0x3e,0x74,0x11,0x68,0x69,0xa3,0x78,0x11,0x64,0x61,0x4b,0x11,0x72,0x65,0xa3,
+0x77,0x11,0x65,0x6c,0xa3,0x8a,0x61,0x32,0x68,0xa2,0x44,0x69,0x11,0x74,0x73,0xa3,
+0xbf,5,0x74,0x23,0x74,0x34,0x77,0x56,0x79,0x13,0x61,0x68,0x6c,0x69,0xa3,0x4f,
+0x14,0x61,0x6b,0x61,0x6e,0x61,0x4c,0x19,0x6f,0x72,0x68,0x69,0x72,0x61,0x67,0x61,
+0x6e,0x61,0x8d,0x10,0x69,0xa3,0xc6,0x69,0x38,0x6c,0x40,0x6e,1,0x61,0x4d,0x6e,
+0x12,0x61,0x64,0x61,0x4b,0x12,0x74,0x68,0x69,0xa3,0x78,0x10,0x69,0xa3,0x4f,4,
+0x61,0x40,0x69,0x52,0x6d,0x70,0x6f,0x7c,0x75,0x15,0x64,0x61,0x77,0x61,0x64,0x69,
+0xa3,0x91,0x10,0x72,0x92,0x15,0x6f,0x73,0x68,0x74,0x68,0x69,0x93,0x1d,0x74,0x61,
+0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xbf,1,0x65,
+0x24,0x72,0x4f,0x10,0x72,0x4f,0x10,0x6a,0xa2,0x9d,0x11,0x6b,0x69,0xa3,0x9d,4,
+0x61,0x5c,0x65,0x90,0x69,0xa0,0x6f,0xa2,0x5d,0x79,1,0x63,0x34,0x64,0x10,0x69,
+0xa2,0x6c,0x11,0x61,0x6e,0xa3,0x6c,0x10,0x69,0xa2,0x6b,0x11,0x61,0x6e,0xa3,0x6b,
+2,0x6e,0x42,0x6f,0x46,0x74,3,0x66,0xa3,0x50,0x67,0xa3,0x51,0x69,0x24,0x6e,
+0x53,0x10,0x6e,0x53,0x10,0x61,0xa3,0x6a,0x50,0x10,0x6f,0x51,0x11,0x70,0x63,0xa2,
+0x52,0x11,0x68,0x61,0xa3,0x52,2,0x6d,0x2e,0x6e,0x36,0x73,0x10,0x75,0xa3,0x83,
+0x10,0x62,0x80,0x10,0x75,0x81,2,0x61,0xa3,0x53,0x62,0x83,0x65,0x11,0x61,0x72,
+1,0x61,0xa3,0x53,0x62,0x83,0x11,0x6d,0x61,0xa3,0x8b,0x68,0x6e,0x69,0xa2,0x95,
+0x6a,2,0x61,0x30,0x70,0x52,0x75,0x11,0x72,0x63,0xa3,0x94,1,0x6d,0x38,0x76,
+0x10,0x61,0xa2,0x4e,0x13,0x6e,0x65,0x73,0x65,0xa3,0x4e,0x10,0x6f,0xa3,0xad,0x11,
+0x61,0x6e,0xa3,0x69,6,0x6c,0x1e,0x6c,0x34,0x6d,0x3a,0x72,0x48,0x75,0x11,0x6e,
+0x67,0xa3,0x4c,0x11,0x75,0x77,0xa3,0x9c,0x10,0x6e,1,0x67,0xa3,0x4b,0x70,0xa3,
+0xba,0x11,0x6b,0x74,0x8d,0x61,0x3c,0x65,0xa2,0x43,0x69,0x11,0x72,0x61,0x48,0x13,
+0x67,0x61,0x6e,0x61,0x49,1,0x6e,0x34,0x74,0x10,0x72,0xa2,0xa2,0x11,0x61,0x6e,
+0xa3,0xa2,0x42,6,0x6f,0xe,0x6f,0x77,0x73,0xa3,0x49,0x74,0xa3,0x4a,0x75,0x12,
+0x6e,0x6f,0x6f,0x77,0x62,0xa3,0xac,0x67,0x3e,0x69,0x42,0x19,0x66,0x69,0x72,0x6f,
+0x68,0x69,0x6e,0x67,0x79,0x61,0xa3,0xb6,0x44,0x11,0x75,0x6c,0x45,0x11,0x62,0x72,
+0x46,0x11,0x65,0x77,0x47,2,0x6d,0x2e,0x6e,0x4a,0x74,0x11,0x61,0x6c,0x5d,0x1c,
+0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0x74,2,
+0x64,0x66,0x68,0x6a,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,
+0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0x7d,0x13,0x6c,
+0x61,0x76,0x69,0xa3,0x7a,0x10,0x73,0xa3,0x4d,0x15,0x65,0x72,0x69,0x74,0x65,0x64,
+0x23,0x64,0xc1,0xd,0x64,0xa2,0x7a,0x65,0xa2,0xc1,0x67,4,0x65,0x82,0x6c,0x9a,
+0x6f,0xa2,0x46,0x72,0xa2,0x55,0x75,2,0x6a,0x3c,0x6e,0x4e,0x72,1,0x6d,0x24,
+0x75,0x41,0x13,0x75,0x6b,0x68,0x69,0x41,1,0x61,0x24,0x72,0x3f,0x13,0x72,0x61,
+0x74,0x69,0x3f,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xb3,0x10,
+0x6f,1,0x6b,0xa3,0x48,0x72,0x38,0x13,0x67,0x69,0x61,0x6e,0x39,0x11,0x61,0x67,
+0x90,0x15,0x6f,0x6c,0x69,0x74,0x69,0x63,0x91,1,0x6e,0x30,0x74,0x10,0x68,0x3a,
+0x11,0x69,0x63,0x3b,1,0x67,0xa3,0xb3,0x6d,0xa3,0xaf,1,0x61,0x32,0x65,1,
+0x65,0x24,0x6b,0x3d,0x10,0x6b,0x3d,0x10,0x6e,0xa2,0x89,0x12,0x74,0x68,0x61,0xa3,
+0x89,4,0x65,0x46,0x69,0x6c,0x6f,0x8c,0x73,0x9a,0x75,0x11,0x70,0x6c,0xa2,0x87,
+0x13,0x6f,0x79,0x61,0x6e,0xa3,0x87,1,0x73,0x38,0x76,0x10,0x61,0x34,0x15,0x6e,
+0x61,0x67,0x61,0x72,0x69,0x35,0x13,0x65,0x72,0x65,0x74,0x33,1,0x61,0x36,0x76,
+0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa3,0xbe,0x10,0x6b,0xa3,0xbe,0x11,0x67,
+0x72,0xa2,0xb2,0x10,0x61,0xa3,0xb2,0x11,0x72,0x74,0x33,2,0x67,0x3a,0x6c,0x72,
+0x74,0x11,0x68,0x69,0x36,0x13,0x6f,0x70,0x69,0x63,0x37,0x10,0x79,2,0x64,0xa3,
+0x45,0x68,0xa3,0x46,0x70,0xa2,0x47,0x1e,0x74,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,
+0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x47,1,0x62,0x36,0x79,0x10,0x6d,0xa2,
+0xb9,0x12,0x61,0x69,0x63,0xa3,0xb9,0x10,0x61,0xa2,0x88,0x12,0x73,0x61,0x6e,0xa3,
+0x88,0x61,0xa2,0xc9,0x62,0xa4,0x32,0x63,6,0x6f,0x52,0x6f,0x76,0x70,0x92,0x75,
+0xa2,0x41,0x79,1,0x70,0x3e,0x72,2,0x69,0x2a,0x6c,0x31,0x73,0xa3,0x44,0x13,
+0x6c,0x6c,0x69,0x63,0x31,0x10,0x72,1,0x69,0x34,0x6f,0x15,0x6d,0x69,0x6e,0x6f,
+0x61,0x6e,0xa3,0xc1,0x11,0x6f,0x74,0x7f,1,0x6d,0x30,0x70,0x10,0x74,0x2e,0x11,
+0x69,0x63,0x2f,0x12,0x6d,0x6f,0x6e,0x21,1,0x6d,0x28,0x72,0x10,0x74,0x7f,0x10,
+0x6e,0xa3,0xc1,0x16,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa3,0x65,0x61,0x32,0x68,
+0xa2,0x41,0x69,0x11,0x72,0x74,0xa3,0x43,3,0x6b,0x4c,0x6e,0x50,0x72,0x76,0x75,
+0x1d,0x63,0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,
+0x9f,0x10,0x6d,0xa3,0x76,1,0x61,0x24,0x73,0x71,0x1d,0x64,0x69,0x61,0x6e,0x61,
+0x62,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x71,0x10,0x69,0xa2,0x68,0x11,0x61,
+0x6e,0xa3,0x68,3,0x61,0x32,0x65,0x44,0x6f,0x52,0x72,0x10,0x73,0xa3,0xbd,1,
+0x6b,0x26,0x6d,0xa3,0x42,0x11,0x6d,0x61,0xa3,0x76,0x10,0x72,0x2c,0x13,0x6f,0x6b,
+0x65,0x65,0x2d,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa3,0xbd,6,0x68,0x4e,
+0x68,0x48,0x6e,0x4e,0x72,0x76,0x76,1,0x65,0x2a,0x73,0x10,0x74,0xa3,0x75,0x13,
+0x73,0x74,0x61,0x6e,0xa3,0x75,0x11,0x6f,0x6d,0xa3,0xa1,0x11,0x61,0x74,0x1f,0x6f,
+0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,
+0x9c,1,0x61,0x3e,0x6d,2,0x65,0x2a,0x69,0xa3,0x74,0x6e,0x27,0x13,0x6e,0x69,
+0x61,0x6e,0x27,1,0x62,0x26,0x6e,0xa3,0xc8,0x24,0x11,0x69,0x63,0x25,0x64,0x30,
0x66,0x44,0x67,0x11,0x68,0x62,0xa3,0x9f,0x10,0x6c,1,0x61,0x26,0x6d,0xa3,0xa7,
0x10,0x6d,0xa3,0xa7,0x11,0x61,0x6b,0xa3,0x93,6,0x6c,0x3c,0x6c,0x52,0x6f,0x56,
0x72,0x66,0x75,1,0x67,0x30,0x68,1,0x64,0x79,0x69,0x10,0x64,0x79,0x10,0x69,
@@ -1028,59 +1032,70 @@ const uint8_t PropNameData::bytesTries[15527]={
0x68,0x74,0x27,0x20,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x21,1,0x72,0x24,0x75,
0x25,0x22,0x18,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x65,0x64,1,0x72,0x32,0x75,
0x15,0x70,0x72,0x69,0x67,0x68,0x74,0x25,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x23,
-0xd,0x6e,0xc1,0x86,0x73,0xa8,0x73,0x4c,0x74,0xa2,0x76,0x75,0xa2,0x83,0x7a,0xd8,
-0x70,0,2,0x6c,0xd9,0x20,0,0x70,0xd9,0x40,0,0x73,0xc3,0,0xfe,0xf,
-0,0,0,7,0x6f,0x3c,0x6f,0xff,8,0,0,0,0x70,0x3a,0x75,0x6e,
-0x79,0x13,0x6d,0x62,0x6f,0x6c,0xff,0xf,0,0,0,0x11,0x61,0x63,1,0x65,
-0x34,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0,0x18,0x73,0x65,0x70,0x61,
-0x72,0x61,0x74,0x6f,0x72,0xc3,0,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0xe1,
-0,0,0x63,0xff,2,0,0,0,0x65,0x38,0x6b,0xff,4,0,0,0,
-0x6d,0xff,1,0,0,0,0x16,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x70,
-0,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,
-0x31,1,0x6e,0x40,0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,
-0x74,0x65,0x72,0x25,0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x23,0x6e,0xa2,
-0x69,0x6f,0xa2,0x89,0x70,0xfe,0x30,0xf8,0,0,9,0x69,0x33,0x69,0xff,0x10,
-0,0,0,0x6f,0xfd,0x80,0,0,0x72,0x54,0x73,0xf9,0,0,0x75,0x12,
-0x6e,0x63,0x74,0xfe,0x30,0xf8,0,0,0x15,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,
-0x30,0xf8,0,0,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0xdd,0,0,
-0x61,0x48,0x63,0xfd,0x40,0,0,0x64,0xe9,0,0,0x65,0xfd,0x20,0,0,
-0x66,0xff,0x20,0,0,0,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,
-0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x40,0,0xbe,0,3,0x64,0xa7,0,
-0x6c,0xab,0,0x6f,0x30,0x75,0x13,0x6d,0x62,0x65,0x72,0xbf,0,0xb2,0,0x1b,
-0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa1,1,0x70,0x92,
-0x74,0x12,0x68,0x65,0x72,0xe6,0x80,1,3,0x6c,0x40,0x6e,0x4a,0x70,0x56,0x73,
-0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,8,0,0,0,0x14,0x65,0x74,0x74,0x65,
-0x72,0x61,0x14,0x75,0x6d,0x62,0x65,0x72,0xb3,0,0x19,0x75,0x6e,0x63,0x74,0x75,
-0x61,0x74,0x69,0x6f,0x6e,0xfd,0x80,0,0,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,
-0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xf9,0,0,0x66,0xc0,0xc4,0x66,0xa2,0x47,
-0x69,0xa2,0x64,0x6c,0xa2,0x79,0x6d,0xa4,0xc0,4,0x61,0x6c,0x63,0xa5,0,0x65,
-0xa3,0x80,0x6e,0xa1,0x6f,0x15,0x64,0x69,0x66,0x69,0x65,0x72,1,0x6c,0x38,0x73,
-0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,4,0,0,0,0x14,0x65,0x74,0x74,0x65,
-0x72,0x41,1,0x72,0x3c,0x74,0x16,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,1,
-0,0,0,0x10,0x6b,0xa5,0xc0,1,0x69,0x32,0x6f,0x13,0x72,0x6d,0x61,0x74,
-0xdb,0,0,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
-0x6f,0x6e,0xff,0x20,0,0,0,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,
-0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x10,0,0,0,0x9c,
-7,0x6d,0x18,0x6d,0x41,0x6f,0x28,0x74,0x31,0x75,0x25,0x60,0x1c,0x77,0x65,0x72,
-0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x29,0x63,0x3d,0x65,0x28,0x69,
-0x42,0x6c,0x29,0x13,0x74,0x74,0x65,0x72,0x9c,0x15,0x6e,0x75,0x6d,0x62,0x65,0x72,
-0xab,0,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x20,
-0,0x63,0x46,0x64,0xa2,0x96,0x65,0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,
-0x6d,0x61,0x72,0x6b,0xa3,0x80,0xe6,0x80,1,7,0x6e,0x57,0x6e,0x52,0x6f,0x5e,
-0x73,0xe1,0,0,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,
-0x6f,0x6c,0xff,2,0,0,0,0x22,0x12,0x74,0x72,0x6c,0xd9,0x80,0,0xdc,
-0,0,1,0x6d,0x62,0x6e,1,0x6e,0x30,0x74,0x12,0x72,0x6f,0x6c,0xd9,0x80,
-0,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
-0x6f,0x6e,0xfd,0x40,0,0,0x19,0x62,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,
-0x6b,0xa5,0xc0,0x61,0x58,0x63,0xd9,0x80,0,0x66,0xdb,0,0,0x6c,0x1d,0x6f,
-0x73,0x65,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x20,0,
-0,0x18,0x73,0x65,0x64,0x6c,0x65,0x74,0x74,0x65,0x72,0x3d,2,0x61,0x32,0x65,
-0x50,0x69,0x12,0x67,0x69,0x74,0xa7,0,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,
-0x75,0x61,0x74,0x69,0x6f,0x6e,0xe9,0,0,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,
-0x75,0x6d,0x62,0x65,0x72,0xa7,0
+1,0x61,0x38,0x72,0x18,0x65,0x73,0x74,0x72,0x69,0x63,0x74,0x65,0x64,0x21,0x15,
+0x6c,0x6c,0x6f,0x77,0x65,0x64,0x23,0xd,0x6e,0xc1,0x86,0x73,0xa8,0x73,0x4c,0x74,
+0xa2,0x76,0x75,0xa2,0x83,0x7a,0xd8,0x70,0,2,0x6c,0xd9,0x20,0,0x70,0xd9,
+0x40,0,0x73,0xc3,0,0xfe,0xf,0,0,0,7,0x6f,0x3c,0x6f,0xff,8,
+0,0,0,0x70,0x3a,0x75,0x6e,0x79,0x13,0x6d,0x62,0x6f,0x6c,0xff,0xf,0,
+0,0,0x11,0x61,0x63,1,0x65,0x34,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,
+0xa5,0,0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xc3,0,0x16,0x72,
+0x72,0x6f,0x67,0x61,0x74,0x65,0xe1,0,0,0x63,0xff,2,0,0,0,0x65,
+0x38,0x6b,0xff,4,0,0,0,0x6d,0xff,1,0,0,0,0x16,0x70,0x61,
+0x72,0x61,0x74,0x6f,0x72,0xd9,0x70,0,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,
+0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x31,1,0x6e,0x40,0x70,0x1c,0x70,0x65,0x72,
+0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x17,0x61,0x73,0x73,0x69,
+0x67,0x6e,0x65,0x64,0x23,0x6e,0xa2,0x69,0x6f,0xa2,0x89,0x70,0xfe,0x30,0xf8,0,
+0,9,0x69,0x33,0x69,0xff,0x10,0,0,0,0x6f,0xfd,0x80,0,0,0x72,
+0x54,0x73,0xf9,0,0,0x75,0x12,0x6e,0x63,0x74,0xfe,0x30,0xf8,0,0,0x15,
+0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x30,0xf8,0,0,0x17,0x69,0x76,0x61,0x74,
+0x65,0x75,0x73,0x65,0xdd,0,0,0x61,0x48,0x63,0xfd,0x40,0,0,0x64,0xe9,
+0,0,0x65,0xfd,0x20,0,0,0x66,0xff,0x20,0,0,0,0x1f,0x72,0x61,
+0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x40,
+0,0xbe,0,3,0x64,0xa7,0,0x6c,0xab,0,0x6f,0x30,0x75,0x13,0x6d,0x62,
+0x65,0x72,0xbf,0,0xb2,0,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,
+0x61,0x72,0x6b,0xa1,1,0x70,0x92,0x74,0x12,0x68,0x65,0x72,0xe6,0x80,1,3,
+0x6c,0x40,0x6e,0x4a,0x70,0x56,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,8,0,
+0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x61,0x14,0x75,0x6d,0x62,0x65,0x72,0xb3,
+0,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x80,0,0,
+0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xf9,0,
+0,0x66,0xc0,0xc4,0x66,0xa2,0x47,0x69,0xa2,0x64,0x6c,0xa2,0x79,0x6d,0xa4,0xc0,
+4,0x61,0x6c,0x63,0xa5,0,0x65,0xa3,0x80,0x6e,0xa1,0x6f,0x15,0x64,0x69,0x66,
+0x69,0x65,0x72,1,0x6c,0x38,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,4,0,
+0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x41,1,0x72,0x3c,0x74,0x16,0x68,0x73,
+0x79,0x6d,0x62,0x6f,0x6c,0xff,1,0,0,0,0x10,0x6b,0xa5,0xc0,1,0x69,
+0x32,0x6f,0x13,0x72,0x6d,0x61,0x74,0xdb,0,0,0x1d,0x6e,0x61,0x6c,0x70,0x75,
+0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x20,0,0,0,0x10,0x6e,
+0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,
+0x6e,0xff,0x10,0,0,0,0x9c,7,0x6d,0x18,0x6d,0x41,0x6f,0x28,0x74,0x31,
+0x75,0x25,0x60,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,
+0x72,0x29,0x63,0x3d,0x65,0x28,0x69,0x42,0x6c,0x29,0x13,0x74,0x74,0x65,0x72,0x9c,
+0x15,0x6e,0x75,0x6d,0x62,0x65,0x72,0xab,0,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,
+0x72,0x61,0x74,0x6f,0x72,0xd9,0x20,0,0x63,0x46,0x64,0xa2,0x96,0x65,0x1b,0x6e,
+0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa3,0x80,0xe6,0x80,1,
+7,0x6e,0x57,0x6e,0x52,0x6f,0x5e,0x73,0xe1,0,0,0x75,0x1b,0x72,0x72,0x65,
+0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,2,0,0,0,0x22,0x12,
+0x74,0x72,0x6c,0xd9,0x80,0,0xdc,0,0,1,0x6d,0x62,0x6e,1,0x6e,0x30,
+0x74,0x12,0x72,0x6f,0x6c,0xd9,0x80,0,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,
+0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x40,0,0,0x19,0x62,0x69,
+0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0xc0,0x61,0x58,0x63,0xd9,0x80,0,
+0x66,0xdb,0,0,0x6c,0x1d,0x6f,0x73,0x65,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,
+0x74,0x69,0x6f,0x6e,0xfd,0x20,0,0,0x18,0x73,0x65,0x64,0x6c,0x65,0x74,0x74,
+0x65,0x72,0x3d,2,0x61,0x32,0x65,0x50,0x69,0x12,0x67,0x69,0x74,0xa7,0,0x1c,
+0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xe9,0,0,
+0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,0x72,0xa7,0,8,0x6e,
+0x50,0x6e,0x46,0x6f,0x7a,0x72,0x88,0x74,0x9c,0x75,0x19,0x6e,0x63,0x6f,0x6d,0x6d,
+0x6f,0x6e,0x75,0x73,0x65,0x31,0x11,0x6f,0x74,2,0x63,0x2e,0x6e,0x3e,0x78,0x11,
+0x69,0x64,0x29,0x17,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x21,0x12,0x66,0x6b,
+0x63,0x27,0x16,0x62,0x73,0x6f,0x6c,0x65,0x74,0x65,0x2d,0x19,0x65,0x63,0x6f,0x6d,
+0x6d,0x65,0x6e,0x64,0x65,0x64,0x37,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,
+0x2f,0x64,0x40,0x65,0x78,0x69,0x88,0x6c,0x18,0x69,0x6d,0x69,0x74,0x65,0x64,0x75,
+0x73,0x65,0x33,0x10,0x65,1,0x66,0x34,0x70,0x16,0x72,0x65,0x63,0x61,0x74,0x65,
+0x64,0x23,0x1c,0x61,0x75,0x6c,0x74,0x69,0x67,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,
+0x25,0x17,0x78,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x2b,0x17,0x6e,0x63,0x6c,0x75,
+0x73,0x69,0x6f,0x6e,0x35
};
-const char PropNameData::nameGroups[23338]={
+const char PropNameData::nameGroups[23743]={
2,'A','l','p','h','a',0,'A','l','p','h','a','b','e','t','i','c',0,
4,'N',0,'N','o',0,'F',0,'F','a','l','s','e',0,4,'Y',0,'Y','e','s',0,'T',0,'T','r','u','e',0,
2,'N','R',0,'N','o','t','_','R','e','o','r','d','e','r','e','d',0,
@@ -1878,8 +1893,8 @@ const char PropNameData::nameGroups[23338]={
2,'O','u','g','r',0,'O','l','d','_','U','y','g','h','u','r',0,
2,'T','n','s','a',0,'T','a','n','g','s','a',0,2,'V','i','t','h',0,'V','i','t','h','k','u','q','i',0,
2,'N','a','g','m',0,'N','a','g','_','M','u','n','d','a','r','i',0,
-2,'h','s','t',0,'H','a','n','g','u','l','_','S','y','l','l','a','b','l','e','_','T','y','p','e',0,
-2,'N','A',0,'N','o','t','_','A','p','p','l','i','c','a','b','l','e',0,
+2,'A','r','a','n',0,'A','r','a','n',0,2,'h','s','t',0,'H','a','n','g','u','l','_','S','y','l','l','a','b','l','e','_',
+'T','y','p','e',0,2,'N','A',0,'N','o','t','_','A','p','p','l','i','c','a','b','l','e',0,
2,'L',0,'L','e','a','d','i','n','g','_','J','a','m','o',0,
2,'V',0,'V','o','w','e','l','_','J','a','m','o',0,2,'T',0,'T','r','a','i','l','i','n','g','_','J','a','m','o',0,
2,'L','V',0,'L','V','_','S','y','l','l','a','b','l','e',0,
@@ -1975,8 +1990,12 @@ const char PropNameData::nameGroups[23338]={
'n','d','e','n','t',0,2,'v','o',0,'V','e','r','t','i','c','a','l','_','O','r','i','e','n','t','a','t','i','o','n',0,
2,'R',0,'R','o','t','a','t','e','d',0,2,'T','r',0,'T','r','a','n','s','f','o','r','m','e','d','_','R','o','t','a','t',
'e','d',0,2,'T','u',0,'T','r','a','n','s','f','o','r','m','e','d','_','U','p','r','i','g','h','t',0,
-2,'U',0,'U','p','r','i','g','h','t',0,2,'g','c','m',0,'G','e','n','e','r','a','l','_','C','a','t','e','g','o','r','y',
-'_','M','a','s','k',0,2,'C',0,'O','t','h','e','r',0,2,'L',0,'L','e','t','t','e','r',0,
+2,'U',0,'U','p','r','i','g','h','t',0,2,'I','d','e','n','t','i','f','i','e','r','_','S','t','a','t','u','s',0,
+'I','d','e','n','t','i','f','i','e','r','_','S','t','a','t','u','s',0,
+2,'R','e','s','t','r','i','c','t','e','d',0,'R','e','s','t','r','i','c','t','e','d',0,
+2,'A','l','l','o','w','e','d',0,'A','l','l','o','w','e','d',0,
+2,'g','c','m',0,'G','e','n','e','r','a','l','_','C','a','t','e','g','o','r','y','_','M','a','s','k',0,
+2,'C',0,'O','t','h','e','r',0,2,'L',0,'L','e','t','t','e','r',0,
2,'L','C',0,'C','a','s','e','d','_','L','e','t','t','e','r',0,
3,'M',0,'M','a','r','k',0,'C','o','m','b','i','n','i','n','g','_','M','a','r','k',0,
2,'N',0,'N','u','m','b','e','r',0,3,'P',0,'P','u','n','c','t','u','a','t','i','o','n',0,
@@ -1994,7 +2013,20 @@ const char PropNameData::nameGroups[23338]={
2,'n','a','1',0,'U','n','i','c','o','d','e','_','1','_','N','a','m','e',0,
2,'u','c',0,'U','p','p','e','r','c','a','s','e','_','M','a','p','p','i','n','g',0,
2,'b','p','b',0,'B','i','d','i','_','P','a','i','r','e','d','_','B','r','a','c','k','e','t',0,
-2,'s','c','x',0,'S','c','r','i','p','t','_','E','x','t','e','n','s','i','o','n','s',0
+2,'s','c','x',0,'S','c','r','i','p','t','_','E','x','t','e','n','s','i','o','n','s',0,
+2,'I','d','e','n','t','i','f','i','e','r','_','T','y','p','e',0,'I','d','e','n','t','i','f','i','e','r','_','T','y','p','e',
+0,2,'N','o','t','_','C','h','a','r','a','c','t','e','r',0,'N','o','t','_','C','h','a','r','a','c','t','e','r',0,
+2,'D','e','p','r','e','c','a','t','e','d',0,'D','e','p','r','e','c','a','t','e','d',0,
+2,'D','e','f','a','u','l','t','_','I','g','n','o','r','a','b','l','e',0,'D','e','f','a','u','l','t','_','I','g','n','o','r',
+'a','b','l','e',0,2,'N','o','t','_','N','F','K','C',0,'N','o','t','_','N','F','K','C',0,
+2,'N','o','t','_','X','I','D',0,'N','o','t','_','X','I','D',0,
+2,'E','x','c','l','u','s','i','o','n',0,'E','x','c','l','u','s','i','o','n',0,
+2,'O','b','s','o','l','e','t','e',0,'O','b','s','o','l','e','t','e',0,
+2,'T','e','c','h','n','i','c','a','l',0,'T','e','c','h','n','i','c','a','l',0,
+2,'U','n','c','o','m','m','o','n','_','U','s','e',0,'U','n','c','o','m','m','o','n','_','U','s','e',0,
+2,'L','i','m','i','t','e','d','_','U','s','e',0,'L','i','m','i','t','e','d','_','U','s','e',0,
+2,'I','n','c','l','u','s','i','o','n',0,'I','n','c','l','u','s','i','o','n',0,
+2,'R','e','c','o','m','m','e','n','d','e','d',0,'R','e','c','o','m','m','e','n','d','e','d',0
};
U_NAMESPACE_END
diff --git a/icu4c/source/common/putil.cpp b/icu4c/source/common/putil.cpp
index ab25f3b99..92c794082 100644
--- a/icu4c/source/common/putil.cpp
+++ b/icu4c/source/common/putil.cpp
@@ -1498,7 +1498,6 @@ static void U_CALLCONV dataDirectoryInitFn() {
}
u_setDataDirectory(path);
- return;
}
U_CAPI const char * U_EXPORT2
@@ -1622,7 +1621,7 @@ static const char *uprv_getPOSIXIDForCategory(int category)
* of nullptr, will modify the libc behavior.
*/
posixID = setlocale(category, nullptr);
- if ((posixID == 0)
+ if ((posixID == nullptr)
|| (uprv_strcmp("C", posixID) == 0)
|| (uprv_strcmp("POSIX", posixID) == 0))
{
@@ -1636,16 +1635,16 @@ static const char *uprv_getPOSIXIDForCategory(int category)
posixID = getenv(category == LC_MESSAGES ? "LC_MESSAGES" : "LC_CTYPE");
if ((posixID == 0) || (posixID[0] == '\0')) {
#else
- if (posixID == 0) {
+ if (posixID == nullptr) {
posixID = getenv(category == LC_MESSAGES ? "LC_MESSAGES" : "LC_CTYPE");
- if (posixID == 0) {
+ if (posixID == nullptr) {
#endif
posixID = getenv("LANG");
}
}
}
}
- if ((posixID==0)
+ if ((posixID == nullptr)
|| (uprv_strcmp("C", posixID) == 0)
|| (uprv_strcmp("POSIX", posixID) == 0))
{
@@ -1665,7 +1664,7 @@ static const char *uprv_getPOSIXIDForCategory(int category)
static const char *uprv_getPOSIXIDForDefaultLocale()
{
static const char* posixID = nullptr;
- if (posixID == 0) {
+ if (posixID == nullptr) {
posixID = uprv_getPOSIXIDForCategory(LC_MESSAGES);
}
return posixID;
diff --git a/icu4c/source/common/rbbi.cpp b/icu4c/source/common/rbbi.cpp
index 599279fb7..9c4141022 100644
--- a/icu4c/source/common/rbbi.cpp
+++ b/icu4c/source/common/rbbi.cpp
@@ -1212,7 +1212,7 @@ RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c, const char* locale) {
fLanguageBreakEngines = new UStack(status);
if (fLanguageBreakEngines == nullptr || U_FAILURE(status)) {
delete fLanguageBreakEngines;
- fLanguageBreakEngines = 0;
+ fLanguageBreakEngines = nullptr;
return nullptr;
}
}
@@ -1252,7 +1252,7 @@ RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c, const char* locale) {
U_ASSERT(!fLanguageBreakEngines->hasDeleter());
if (U_FAILURE(status)) {
delete fUnhandledBreakEngine;
- fUnhandledBreakEngine = 0;
+ fUnhandledBreakEngine = nullptr;
return nullptr;
}
}
diff --git a/icu4c/source/common/rbbi_cache.cpp b/icu4c/source/common/rbbi_cache.cpp
index f7a283f69..239345998 100644
--- a/icu4c/source/common/rbbi_cache.cpp
+++ b/icu4c/source/common/rbbi_cache.cpp
@@ -246,7 +246,6 @@ void RuleBasedBreakIterator::BreakCache::following(int32_t startPos, UErrorCode
fBI->fDone = false;
next();
}
- return;
}
@@ -265,7 +264,6 @@ void RuleBasedBreakIterator::BreakCache::preceding(int32_t startPos, UErrorCode
current();
}
}
- return;
}
@@ -277,7 +275,6 @@ void RuleBasedBreakIterator::BreakCache::nextOL() {
fBI->fDone = !populateFollowing();
fBI->fPosition = fTextIdx;
fBI->fRuleStatusIndex = fStatuses[fBufIdx];
- return;
}
@@ -297,7 +294,6 @@ void RuleBasedBreakIterator::BreakCache::previous(UErrorCode &status) {
fBI->fDone = (fBufIdx == initialBufIdx);
fBI->fPosition = fTextIdx;
fBI->fRuleStatusIndex = fStatuses[fBufIdx];
- return;
}
diff --git a/icu4c/source/common/rbbinode.cpp b/icu4c/source/common/rbbinode.cpp
index 7aa75d5ff..71407b9e6 100644
--- a/icu4c/source/common/rbbinode.cpp
+++ b/icu4c/source/common/rbbinode.cpp
@@ -123,19 +123,66 @@ RBBINode::~RBBINode() {
break;
default:
- delete fLeftChild;
+ // Avoid using a recursive implementation because of stack overflow problems.
+ // See bug ICU-22584.
+ // delete fLeftChild;
+ NRDeleteNode(fLeftChild);
fLeftChild = nullptr;
- delete fRightChild;
+ // delete fRightChild;
+ NRDeleteNode(fRightChild);
fRightChild = nullptr;
}
-
delete fFirstPosSet;
delete fLastPosSet;
delete fFollowPos;
-
}
+/**
+ * Non-recursive delete of a node + its children. Used from the node destructor
+ * instead of the more obvious recursive implementation to avoid problems with
+ * stack overflow with some perverse test rule data (from fuzzing).
+ */
+void RBBINode::NRDeleteNode(RBBINode *node) {
+ if (node == nullptr) {
+ return;
+ }
+
+ RBBINode *stopNode = node->fParent;
+ RBBINode *nextNode = node;
+ while (nextNode != stopNode && nextNode != nullptr) {
+ RBBINode *currentNode = nextNode;
+
+ if ((currentNode->fLeftChild == nullptr && currentNode->fRightChild == nullptr) ||
+ currentNode->fType == varRef || // varRef and setRef nodes do not
+ currentNode->fType == setRef) { // own their children nodes.
+ // CurrentNode is effectively a leaf node; it's safe to go ahead and delete it.
+ nextNode = currentNode->fParent;
+ if (nextNode) {
+ if (nextNode->fLeftChild == currentNode) {
+ nextNode->fLeftChild = nullptr;
+ } else if (nextNode->fRightChild == currentNode) {
+ nextNode->fRightChild = nullptr;
+ }
+ }
+ delete currentNode;
+ } else if (currentNode->fLeftChild) {
+ nextNode = currentNode->fLeftChild;
+ if (nextNode->fParent == nullptr) {
+ nextNode->fParent = currentNode;
+ // fParent isn't always set; do it now if not.
+ }
+ U_ASSERT(nextNode->fParent == currentNode);
+ } else if (currentNode->fRightChild) {
+ nextNode = currentNode->fRightChild;
+ if (nextNode->fParent == nullptr) {
+ nextNode->fParent = currentNode;
+ // fParent isn't always set; do it now if not.
+ }
+ U_ASSERT(nextNode->fParent == currentNode);
+ }
+ }
+}
//-------------------------------------------------------------------------
//
@@ -192,7 +239,17 @@ RBBINode *RBBINode::cloneTree() {
// nested references are handled by cloneTree(), not here.
//
//-------------------------------------------------------------------------
-RBBINode *RBBINode::flattenVariables() {
+constexpr int kRecursiveDepthLimit = 3500;
+RBBINode *RBBINode::flattenVariables(UErrorCode& status, int depth) {
+ if (U_FAILURE(status)) {
+ return this;
+ }
+ // If the depth of the stack is too deep, we return U_INPUT_TOO_LONG_ERROR
+ // to avoid stack overflow crash.
+ if (depth > kRecursiveDepthLimit) {
+ status = U_INPUT_TOO_LONG_ERROR;
+ return this;
+ }
if (fType == varRef) {
RBBINode *retNode = fLeftChild->cloneTree();
if (retNode != nullptr) {
@@ -204,11 +261,11 @@ RBBINode *RBBINode::flattenVariables() {
}
if (fLeftChild != nullptr) {
- fLeftChild = fLeftChild->flattenVariables();
+ fLeftChild = fLeftChild->flattenVariables(status, depth+1);
fLeftChild->fParent = this;
}
if (fRightChild != nullptr) {
- fRightChild = fRightChild->flattenVariables();
+ fRightChild = fRightChild->flattenVariables(status, depth+1);
fRightChild->fParent = this;
}
return this;
diff --git a/icu4c/source/common/rbbinode.h b/icu4c/source/common/rbbinode.h
index 4ed84d4e0..497a31b8d 100644
--- a/icu4c/source/common/rbbinode.h
+++ b/icu4c/source/common/rbbinode.h
@@ -94,9 +94,10 @@ class RBBINode : public UMemory {
RBBINode(NodeType t);
RBBINode(const RBBINode &other);
~RBBINode();
+ static void NRDeleteNode(RBBINode *node);
RBBINode *cloneTree();
- RBBINode *flattenVariables();
+ RBBINode *flattenVariables(UErrorCode &status, int depth=0);
void flattenSets();
void findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &status);
diff --git a/icu4c/source/common/rbbirb.cpp b/icu4c/source/common/rbbirb.cpp
index 92cccc1a3..1b2ee6718 100644
--- a/icu4c/source/common/rbbirb.cpp
+++ b/icu4c/source/common/rbbirb.cpp
@@ -86,7 +86,8 @@ RBBIRuleBuilder::RBBIRuleBuilder(const UnicodeString &rules,
if (U_FAILURE(status)) {
return;
}
- if(fSetBuilder == 0 || fScanner == 0 || fUSetNodes == 0 || fRuleStatusVals == 0) {
+ if (fSetBuilder == nullptr || fScanner == nullptr ||
+ fUSetNodes == nullptr || fRuleStatusVals == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -156,7 +157,7 @@ RBBIDataHeader *RBBIRuleBuilder::flattenData() {
int32_t statusTableSize = align8(fRuleStatusVals->size() * sizeof(int32_t));
int32_t rulesLengthInUTF8 = 0;
- u_strToUTF8WithSub(0, 0, &rulesLengthInUTF8,
+ u_strToUTF8WithSub(nullptr, 0, &rulesLengthInUTF8,
fStrippedRules.getBuffer(), fStrippedRules.length(),
0xfffd, nullptr, fStatus);
*fStatus = U_ZERO_ERROR;
diff --git a/icu4c/source/common/rbbiscan.cpp b/icu4c/source/common/rbbiscan.cpp
index 844b06390..f5fdba076 100644
--- a/icu4c/source/common/rbbiscan.cpp
+++ b/icu4c/source/common/rbbiscan.cpp
@@ -289,6 +289,9 @@ UBool RBBIRuleScanner::doParseActions(int32_t action)
// Terminate expression, leaves expression parse tree rooted in TOS node.
fixOpStack(RBBINode::precStart);
+ if (U_FAILURE(*fRB->fStatus)) {
+ break;
+ }
RBBINode *startExprNode = fNodeStack[fNodeStackPtr-2];
RBBINode *varRefNode = fNodeStack[fNodeStackPtr-1];
@@ -312,6 +315,11 @@ UBool RBBIRuleScanner::doParseActions(int32_t action)
UErrorCode t = *fRB->fStatus;
*fRB->fStatus = U_ZERO_ERROR;
error(t);
+ // When adding $variableRef to the symbol table fail, Delete
+ // both nodes because deleting varRefNode will not delete
+ // RHSExprNode internally.
+ delete RHSExprNode;
+ delete varRefNode;
}
// Clean up the stack.
@@ -522,7 +530,13 @@ UBool RBBIRuleScanner::doParseActions(int32_t action)
n = fNodeStack[fNodeStackPtr];
uint32_t v = u_charDigitValue(fC.fChar);
U_ASSERT(v < 10);
- n->fVal = n->fVal*10 + v;
+ int64_t updated = static_cast<int64_t>(n->fVal)*10 + v;
+ // Avoid overflow n->fVal
+ if (updated > INT32_MAX) {
+ error(U_BRK_RULE_SYNTAX);
+ break;
+ }
+ n->fVal = static_cast<int32_t>(updated);
break;
}
@@ -762,6 +776,7 @@ void RBBIRuleScanner::findSetFor(const UnicodeString &s, RBBINode *node, Unicode
RBBINode *usetNode = new RBBINode(RBBINode::uset);
if (usetNode == nullptr) {
error(U_MEMORY_ALLOCATION_ERROR);
+ delete setToAdopt;
return;
}
usetNode->fInputSet = setToAdopt;
@@ -796,8 +811,6 @@ void RBBIRuleScanner::findSetFor(const UnicodeString &s, RBBINode *node, Unicode
el->key = tkey;
el->val = usetNode;
uhash_put(fSetTable, el->key, el, fRB->fStatus);
-
- return;
}
@@ -926,6 +939,9 @@ void RBBIRuleScanner::nextChar(RBBIRuleChar &c) {
}
}
+ if (c.fChar == (UChar32)-1) {
+ return;
+ }
if (fQuoteMode) {
c.fEscaped = true;
}
@@ -1199,7 +1215,6 @@ RBBINode *RBBIRuleScanner::pushNewNode(RBBINode::NodeType t) {
//
//------------------------------------------------------------------------------
void RBBIRuleScanner::scanSet() {
- UnicodeSet *uset;
ParsePosition pos;
int startPos;
int i;
@@ -1211,12 +1226,12 @@ void RBBIRuleScanner::scanSet() {
pos.setIndex(fScanIndex);
startPos = fScanIndex;
UErrorCode localStatus = U_ZERO_ERROR;
- uset = new UnicodeSet();
- if (uset == nullptr) {
- localStatus = U_MEMORY_ALLOCATION_ERROR;
- } else {
- uset->applyPatternIgnoreSpace(fRB->fRules, pos, fSymbolTable, localStatus);
+ LocalPointer<UnicodeSet> uset(new UnicodeSet(), localStatus);
+ if (U_FAILURE(localStatus)) {
+ error(localStatus);
+ return;
}
+ uset->applyPatternIgnoreSpace(fRB->fRules, pos, fSymbolTable, localStatus);
if (U_FAILURE(localStatus)) {
// TODO: Get more accurate position of the error from UnicodeSet's return info.
// UnicodeSet appears to not be reporting correctly at this time.
@@ -1224,20 +1239,22 @@ void RBBIRuleScanner::scanSet() {
RBBIDebugPrintf("UnicodeSet parse position.ErrorIndex = %d\n", pos.getIndex());
#endif
error(localStatus);
- delete uset;
return;
}
// Verify that the set contains at least one code point.
//
- U_ASSERT(uset!=nullptr);
- if (uset->isEmpty()) {
+ U_ASSERT(uset.isValid());
+ UnicodeSet tempSet(*uset);
+ // Use tempSet to handle the case that the UnicodeSet contains
+ // only string element, such as [{ab}] and treat it as empty set.
+ tempSet.removeAllStrings();
+ if (tempSet.isEmpty()) {
// This set is empty.
// Make it an error, because it almost certainly is not what the user wanted.
// Also, avoids having to think about corner cases in the tree manipulation code
// that occurs later on.
error(U_BRK_RULE_EMPTY_SET);
- delete uset;
return;
}
@@ -1246,7 +1263,7 @@ void RBBIRuleScanner::scanSet() {
// Don't just set fScanIndex because the line/char positions maintained
// for error reporting would be thrown off.
i = pos.getIndex();
- for (;;) {
+ for (;U_SUCCESS(*fRB->fStatus);) {
if (fNextIndex >= i) {
break;
}
@@ -1269,7 +1286,7 @@ void RBBIRuleScanner::scanSet() {
// character categories for run time engine.
// - Eliminates mulitiple instances of the same set.
// - Creates a new uset node if necessary (if this isn't a duplicate.)
- findSetFor(n->fText, n, uset);
+ findSetFor(n->fText, n, uset.orphan());
}
}
diff --git a/icu4c/source/common/rbbistbl.cpp b/icu4c/source/common/rbbistbl.cpp
index 844351bd0..bfaacf642 100644
--- a/icu4c/source/common/rbbistbl.cpp
+++ b/icu4c/source/common/rbbistbl.cpp
@@ -122,7 +122,7 @@ const UnicodeFunctor *RBBISymbolTable::lookupMatcher(UChar32 ch) const
RBBISymbolTable *This = (RBBISymbolTable *)this; // cast off const
if (ch == 0xffff) {
retVal = fCachedSetLookup;
- This->fCachedSetLookup = 0;
+ This->fCachedSetLookup = nullptr;
}
return retVal;
}
diff --git a/icu4c/source/common/rbbitblb.cpp b/icu4c/source/common/rbbitblb.cpp
index 8b40136fc..96a0b0338 100644
--- a/icu4c/source/common/rbbitblb.cpp
+++ b/icu4c/source/common/rbbitblb.cpp
@@ -81,7 +81,10 @@ void RBBITableBuilder::buildForwardTable() {
// Walk through the tree, replacing any references to $variables with a copy of the
// parse tree for the substitution expression.
//
- fTree = fTree->flattenVariables();
+ fTree = fTree->flattenVariables(*fStatus, 0);
+ if (U_FAILURE(*fStatus)) {
+ return;
+ }
#ifdef RBBI_DEBUG
if (fRB->fDebugEnv && uprv_strstr(fRB->fDebugEnv, "ftree")) {
RBBIDebugPuts("\nParse tree after flattening variable references.");
diff --git a/icu4c/source/common/resbund.cpp b/icu4c/source/common/resbund.cpp
index 54383c981..41337cdc1 100644
--- a/icu4c/source/common/resbund.cpp
+++ b/icu4c/source/common/resbund.cpp
@@ -179,7 +179,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ResourceBundle)
ResourceBundle::ResourceBundle(UErrorCode &err)
:UObject(), fLocale(nullptr)
{
- fResource = ures_open(0, Locale::getDefault().getName(), &err);
+ fResource = ures_open(nullptr, Locale::getDefault().getName(), &err);
}
ResourceBundle::ResourceBundle(const ResourceBundle &other)
@@ -188,7 +188,7 @@ ResourceBundle::ResourceBundle(const ResourceBundle &other)
UErrorCode status = U_ZERO_ERROR;
if (other.fResource) {
- fResource = ures_copyResb(0, other.fResource, &status);
+ fResource = ures_copyResb(nullptr, other.fResource, &status);
} else {
/* Copying a bad resource bundle */
fResource = nullptr;
@@ -199,7 +199,7 @@ ResourceBundle::ResourceBundle(UResourceBundle *res, UErrorCode& err)
:UObject(), fLocale(nullptr)
{
if (res) {
- fResource = ures_copyResb(0, res, &err);
+ fResource = ures_copyResb(nullptr, res, &err);
} else {
/* Copying a bad resource bundle */
fResource = nullptr;
@@ -218,7 +218,7 @@ ResourceBundle& ResourceBundle::operator=(const ResourceBundle& other)
if(this == &other) {
return *this;
}
- if(fResource != 0) {
+ if (fResource != nullptr) {
ures_close(fResource);
fResource = nullptr;
}
@@ -228,7 +228,7 @@ ResourceBundle& ResourceBundle::operator=(const ResourceBundle& other)
}
UErrorCode status = U_ZERO_ERROR;
if (other.fResource) {
- fResource = ures_copyResb(0, other.fResource, &status);
+ fResource = ures_copyResb(nullptr, other.fResource, &status);
} else {
/* Copying a bad resource bundle */
fResource = nullptr;
@@ -238,12 +238,10 @@ ResourceBundle& ResourceBundle::operator=(const ResourceBundle& other)
ResourceBundle::~ResourceBundle()
{
- if(fResource != 0) {
+ if (fResource != nullptr) {
ures_close(fResource);
}
- if(fLocale != nullptr) {
- delete(fLocale);
- }
+ delete fLocale;
}
ResourceBundle *
@@ -311,7 +309,7 @@ ResourceBundle ResourceBundle::getNext(UErrorCode& status) {
UnicodeString ResourceBundle::getNextString(UErrorCode& status) {
int32_t len = 0;
- const char16_t* r = ures_getNextString(fResource, &len, 0, &status);
+ const char16_t* r = ures_getNextString(fResource, &len, nullptr, &status);
return UnicodeString(true, r, len);
}
diff --git a/icu4c/source/common/ruleiter.cpp b/icu4c/source/common/ruleiter.cpp
index 690635a90..0e665435a 100644
--- a/icu4c/source/common/ruleiter.cpp
+++ b/icu4c/source/common/ruleiter.cpp
@@ -27,12 +27,12 @@ RuleCharacterIterator::RuleCharacterIterator(const UnicodeString& theText, const
text(theText),
pos(thePos),
sym(theSym),
- buf(0),
+ buf(nullptr),
bufPos(0)
{}
UBool RuleCharacterIterator::atEnd() const {
- return buf == 0 && pos.getIndex() == text.length();
+ return buf == nullptr && pos.getIndex() == text.length();
}
UChar32 RuleCharacterIterator::next(int32_t options, UBool& isEscaped, UErrorCode& ec) {
@@ -45,8 +45,8 @@ UChar32 RuleCharacterIterator::next(int32_t options, UBool& isEscaped, UErrorCod
c = _current();
_advance(U16_LENGTH(c));
- if (c == SymbolTable::SYMBOL_REF && buf == 0 &&
- (options & PARSE_VARIABLES) != 0 && sym != 0) {
+ if (c == SymbolTable::SYMBOL_REF && buf == nullptr &&
+ (options & PARSE_VARIABLES) != 0 && sym != nullptr) {
UnicodeString name = sym->parseReference(text, pos, text.length());
// If name is empty there was an isolated SYMBOL_REF;
// return it. Caller must be prepared for this.
@@ -55,13 +55,13 @@ UChar32 RuleCharacterIterator::next(int32_t options, UBool& isEscaped, UErrorCod
}
bufPos = 0;
buf = sym->lookup(name);
- if (buf == 0) {
+ if (buf == nullptr) {
ec = U_UNDEFINED_VARIABLE;
return DONE;
}
// Handle empty variable value
if (buf->length() == 0) {
- buf = 0;
+ buf = nullptr;
}
continue;
}
@@ -114,7 +114,7 @@ UnicodeString& RuleCharacterIterator::lookahead(UnicodeString& result, int32_t m
if (maxLookAhead < 0) {
maxLookAhead = 0x7FFFFFFF;
}
- if (buf != 0) {
+ if (buf != nullptr) {
buf->extract(bufPos, maxLookAhead, result);
} else {
text.extract(pos.getIndex(), maxLookAhead, result);
@@ -135,7 +135,7 @@ UnicodeString& RuleCharacterIterator::toString(UnicodeString& result) const {
*/
UChar32 RuleCharacterIterator::_current() const {
- if (buf != 0) {
+ if (buf != nullptr) {
return buf->char32At(bufPos);
} else {
int i = pos.getIndex();
@@ -144,10 +144,10 @@ UChar32 RuleCharacterIterator::_current() const {
}
void RuleCharacterIterator::_advance(int32_t count) {
- if (buf != 0) {
+ if (buf != nullptr) {
bufPos += count;
if (bufPos == buf->length()) {
- buf = 0;
+ buf = nullptr;
}
} else {
pos.setIndex(pos.getIndex() + count);
diff --git a/icu4c/source/common/ruleiter.h b/icu4c/source/common/ruleiter.h
index 41731407d..22dec1e8c 100644
--- a/icu4c/source/common/ruleiter.h
+++ b/icu4c/source/common/ruleiter.h
@@ -224,7 +224,7 @@ private:
};
inline UBool RuleCharacterIterator::inVariable() const {
- return buf != 0;
+ return buf != nullptr;
}
U_NAMESPACE_END
diff --git a/icu4c/source/common/ubidiln.cpp b/icu4c/source/common/ubidiln.cpp
index 63c4f9190..65e1212c7 100644
--- a/icu4c/source/common/ubidiln.cpp
+++ b/icu4c/source/common/ubidiln.cpp
@@ -244,7 +244,6 @@ ubidi_setLine(const UBiDi *pParaBiDi,
}
}
pLineBiDi->pParaBiDi=pParaBiDi; /* mark successful setLine */
- return;
}
U_CAPI UBiDiLevel U_EXPORT2
diff --git a/icu4c/source/common/ubrk.cpp b/icu4c/source/common/ubrk.cpp
index 46ec0d785..712ce4971 100644
--- a/icu4c/source/common/ubrk.cpp
+++ b/icu4c/source/common/ubrk.cpp
@@ -38,9 +38,9 @@ ubrk_open(UBreakIteratorType type,
UErrorCode *status)
{
- if(U_FAILURE(*status)) return 0;
+ if (U_FAILURE(*status)) return nullptr;
- BreakIterator *result = 0;
+ BreakIterator *result = nullptr;
switch(type) {
@@ -70,11 +70,11 @@ ubrk_open(UBreakIteratorType type,
// check for allocation error
if (U_FAILURE(*status)) {
- return 0;
+ return nullptr;
}
- if(result == 0) {
+ if (result == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
@@ -102,14 +102,14 @@ ubrk_openRules( const char16_t *rules,
UErrorCode *status) {
if (status == nullptr || U_FAILURE(*status)){
- return 0;
+ return nullptr;
}
- BreakIterator *result = 0;
+ BreakIterator *result = nullptr;
UnicodeString ruleString(rules, rulesLength);
result = RBBIRuleBuilder::createRuleBasedBreakIterator(ruleString, parseErr, *status);
if(U_FAILURE(*status)) {
- return 0;
+ return nullptr;
}
UBreakIterator *uBI = (UBreakIterator *)result;
diff --git a/icu4c/source/common/ucase.h b/icu4c/source/common/ucase.h
index e03b31187..af7387360 100644
--- a/icu4c/source/common/ucase.h
+++ b/icu4c/source/common/ucase.h
@@ -357,7 +357,7 @@ enum {
/* definitions for 16-bit case properties word ------------------------------ */
U_CFUNC const UTrie2 * U_EXPORT2
-ucase_getTrie();
+ucase_getTrie(void);
/* 2-bit constants for types of cased characters */
#define UCASE_TYPE_MASK 3
diff --git a/icu4c/source/common/ucasemap.cpp b/icu4c/source/common/ucasemap.cpp
index f6a0106ae..f419f65c3 100644
--- a/icu4c/source/common/ucasemap.cpp
+++ b/icu4c/source/common/ucasemap.cpp
@@ -41,7 +41,6 @@
#include "uassert.h"
#include "ucase.h"
#include "ucasemap_imp.h"
-#include "ustr_imp.h"
U_NAMESPACE_USE
@@ -917,21 +916,20 @@ ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_P
return 0;
}
- CheckedArrayByteSink sink(dest, destCapacity);
if (edits != nullptr && (options & U_EDITS_NO_RESET) == 0) {
edits->reset();
}
- stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
- (const uint8_t *)src, srcLength, sink, edits, errorCode);
- sink.Flush();
- if (U_SUCCESS(errorCode)) {
- if (sink.Overflowed()) {
- errorCode = U_BUFFER_OVERFLOW_ERROR;
- } else if (edits != nullptr) {
- edits->copyErrorTo(errorCode);
- }
+ int32_t reslen = ByteSinkUtil::viaByteSinkToTerminatedChars(
+ dest, destCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
+ (const uint8_t *)src, srcLength, sink, edits, status);
+ },
+ errorCode);
+ if (U_SUCCESS(errorCode) && edits != nullptr) {
+ edits->copyErrorTo(errorCode);
}
- return u_terminateChars(dest, destCapacity, sink.NumberOfBytesAppended(), &errorCode);
+ return reslen;
}
/* public API functions */
diff --git a/icu4c/source/common/uchar_props_data.h b/icu4c/source/common/uchar_props_data.h
index 032422397..0cacf142a 100644
--- a/icu4c/source/common/uchar_props_data.h
+++ b/icu4c/source/common/uchar_props_data.h
@@ -1477,139 +1477,139 @@ static const UTrie2 propsTrie={
nullptr, 0, false, false, 0, nullptr
};
-static const uint16_t propsVectorsTrie_index[32764]={
+static const uint16_t propsVectorsTrie_index[32784]={
0x53e,0x546,0x54e,0x556,0x56e,0x576,0x57e,0x586,0x58e,0x596,0x59e,0x5a6,0x5ae,0x5b6,0x5be,0x5c6,
-0x5cd,0x5d5,0x5dd,0x5e5,0x5e8,0x5f0,0x5f8,0x600,0x608,0x610,0x618,0x620,0x628,0x630,0x638,0x640,
-0x648,0x650,0x657,0x65f,0x667,0x66f,0x677,0x67f,0x687,0x68f,0x694,0x69c,0x6a3,0x6ab,0x6b3,0x6bb,
-0x6c3,0x6cb,0x6d3,0x6db,0x6e2,0x6ea,0x6f2,0x6fa,0x702,0x70a,0x712,0x71a,0x722,0x72a,0x732,0x73a,
-0x1b43,0xd8f,0xe5b,0x1192,0x12d1,0x1d0b,0x1eaa,0x1d03,0x13f0,0x1400,0x13e8,0x13f8,0x80f,0x815,0x81d,0x825,
-0x82d,0x833,0x83b,0x843,0x84b,0x851,0x859,0x861,0x869,0x86f,0x877,0x87f,0x887,0x88f,0x897,0x89e,
-0x8a6,0x8ac,0x8b4,0x8bc,0x8c4,0x8ca,0x8d2,0x8da,0x8e2,0x1408,0x8ea,0x8f2,0x8fa,0x901,0x909,0x911,
-0x919,0x91d,0x925,0x92c,0x934,0x93c,0x944,0x94c,0x1723,0x172b,0x954,0x95c,0x964,0x96c,0x974,0x97b,
-0x1789,0x1779,0x1781,0x1a7e,0x1a86,0x1418,0x983,0x1410,0x166c,0x166c,0x166e,0x142c,0x142d,0x1420,0x1422,0x1424,
-0x1791,0x1793,0x98b,0x1793,0x993,0x998,0x9a0,0x1798,0x9a6,0x1793,0x9ac,0x9b4,0xc6f,0x17a0,0x17a0,0x9bc,
-0x17b0,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,
-0x17b1,0x17b1,0x17b1,0x17a8,0x9c4,0x17b9,0x17b9,0x9cc,0xb97,0xb9f,0xba7,0xbaf,0x17c9,0x17c1,0x9d4,0x9dc,
-0x9e4,0x17d3,0x17db,0x9ec,0x17d1,0x9f4,0x1b4b,0xd97,0xbb7,0xbbf,0xbc7,0xbcc,0x19e4,0xc96,0xc9d,0x1940,
-0xc47,0x1b53,0xd9f,0xda7,0xdaf,0xdb7,0xf65,0xf69,0x1a44,0x1a49,0xcd5,0xcdd,0x1aba,0x1ac2,0x1c23,0xe63,
-0x1aca,0xd23,0xd2b,0x1ad2,0x110a,0x11ba,0xf3d,0xdbf,0x1960,0x1948,0x1958,0x1950,0x19fc,0x19f4,0x19b0,0x1a3c,
-0x1435,0x1435,0x1435,0x1435,0x1438,0x1435,0x1435,0x1440,0x9fc,0x1448,0xa00,0xa08,0x1448,0xa10,0xa18,0xa20,
-0x1458,0x1450,0x1460,0xa28,0xa30,0x1468,0xa38,0xa40,0x1470,0x1478,0x1480,0x1488,0xa48,0x1490,0x1497,0x149f,
-0x14a7,0x14af,0x14b7,0x14bf,0x14c7,0x14ce,0x14d6,0x14de,0x14e6,0x14ee,0x14f1,0x14f3,0x17e3,0x18d6,0x18dc,0x1a2c,
-0x14fb,0xa50,0xa58,0x1621,0x1626,0x1629,0x162f,0x1503,0x1637,0x1637,0x1513,0x150b,0x151b,0x1523,0x152b,0x1533,
-0x153b,0x1543,0x154b,0x1553,0x18e4,0x1938,0x1a8e,0x1beb,0x1563,0x1569,0x1571,0x1579,0x155b,0x1581,0x18ec,0x18f3,
-0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x18fb,0x18fb,0x18fb,0x18fb,0x1903,0x190a,0x190c,0x1913,
-0x191b,0x191f,0x191f,0x1922,0x191f,0x191f,0x1928,0x191f,0x1968,0x1a34,0x1a96,0xbd4,0xbda,0x1d4f,0x1d57,0x1e35,
-0x19d4,0x19c8,0x19cc,0x1a51,0x19b8,0x19b8,0x19b8,0xc57,0x19c0,0xc77,0x1a14,0xcc5,0xc5f,0xc67,0xc67,0x1ada,
-0x1a04,0x1a9e,0xcad,0xcb5,0xa60,0x17f3,0x17f3,0xa68,0x17fb,0x17fb,0x17fb,0x17fb,0x17fb,0x17fb,0xa70,0x742,
-0x1654,0x1676,0xa78,0x167e,0xa80,0x1686,0x168e,0x1696,0xa88,0xa8d,0x169e,0x16a5,0xa92,0x1803,0x1a24,0xc4f,
-0xa9a,0x1700,0x1707,0x16ad,0x170f,0x1713,0x16b5,0x16b9,0x16d2,0x16d2,0x16d4,0x16c1,0x16c9,0x16c9,0x16ca,0x171b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180e,0x1970,0x1970,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16e3,0x1b3b,0x1f16,
-0x1816,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,
-0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,
-0x181c,0x181c,0x181c,0x181c,0xaa2,0x1824,0xaaa,0x1b5b,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,
-0x1ae2,0xd33,0x1af6,0x1aee,0x1af8,0x1b63,0x1b63,0xdc7,0x19dc,0x1a59,0x1aae,0x1ab2,0x1aa6,0x1c1b,0xce5,0xcec,
-0x1a0c,0xcbd,0x1a61,0xcf4,0x1b00,0x1b03,0xd3b,0x1b6b,0x1b13,0x1b0b,0xd43,0xdcf,0x1b73,0x1b77,0xdd7,0x1014,
-0x1b1b,0xd4b,0xd53,0x1b7f,0x1b8f,0x1b87,0xddf,0xf0d,0xe6b,0xe73,0x1da5,0xfc4,0x1e52,0x1e52,0x1b97,0xde7,
-0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
-0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
-0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
-0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
-0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
-0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
-0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
-0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
-0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
-0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
-0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
-0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
-0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
-0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
-0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
-0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
-0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
-0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
-0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
-0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
-0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
-0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0xab2,0xdef,0xdf2,
+0x5cd,0x5d5,0x5dd,0x5e5,0x5ed,0x5f5,0x5fd,0x605,0x60d,0x615,0x61d,0x625,0x62d,0x635,0x63d,0x645,
+0x64d,0x655,0x65c,0x664,0x66c,0x674,0x67c,0x684,0x68c,0x694,0x699,0x6a1,0x6a8,0x6b0,0x6b8,0x6c0,
+0x6c8,0x6d0,0x6d8,0x6e0,0x6e7,0x6ef,0x6f7,0x6ff,0x707,0x70f,0x717,0x71f,0x727,0x72f,0x737,0x73f,
+0x1b48,0xd94,0xe60,0x1197,0x12d6,0x1d10,0x1eaf,0x1d08,0x13f5,0x1405,0x13ed,0x13fd,0x814,0x81a,0x822,0x82a,
+0x832,0x838,0x840,0x848,0x850,0x856,0x85e,0x866,0x86e,0x874,0x87c,0x884,0x88c,0x894,0x89c,0x8a3,
+0x8ab,0x8b1,0x8b9,0x8c1,0x8c9,0x8cf,0x8d7,0x8df,0x8e7,0x140d,0x8ef,0x8f7,0x8ff,0x906,0x90e,0x916,
+0x91e,0x922,0x92a,0x931,0x939,0x941,0x949,0x951,0x1727,0x172f,0x959,0x961,0x969,0x971,0x979,0x980,
+0x178d,0x177d,0x1785,0x1a82,0x1a8a,0x141d,0x988,0x1415,0x1670,0x1670,0x1672,0x1431,0x1432,0x1425,0x1427,0x1429,
+0x1795,0x1797,0x990,0x1797,0x998,0x99d,0x9a5,0x179c,0x9ab,0x1797,0x9b1,0x9b9,0xc74,0x17a4,0x17a4,0x9c1,
+0x17b4,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,
+0x17b5,0x17b5,0x17b5,0x17ac,0x9c9,0x17bd,0x17bd,0x9d1,0xb9c,0xba4,0xbac,0xbb4,0x17cd,0x17c5,0x9d9,0x9e1,
+0x9e9,0x17d7,0x17df,0x9f1,0x17d5,0x9f9,0x1b50,0xd9c,0xbbc,0xbc4,0xbcc,0xbd1,0x19e8,0xc9b,0xca2,0x1944,
+0xc4c,0x1b58,0xda4,0xdac,0xdb4,0xdbc,0xf6a,0xf6e,0x1a48,0x1a4d,0xcda,0xce2,0x1abe,0x1ac6,0x1c28,0xe68,
+0x1ace,0xd28,0xd30,0x1ad6,0x110f,0x11bf,0xf42,0xdc4,0x1964,0x194c,0x195c,0x1954,0x1a00,0x19f8,0x19b4,0x1a40,
+0x1442,0x1442,0x1442,0x1442,0x143a,0x1442,0x1442,0x1444,0xa01,0x144c,0xa05,0xa0d,0x144c,0xa15,0xa1d,0xa25,
+0x145c,0x1454,0x1464,0xa2d,0xa35,0x146c,0xa3d,0xa45,0x1474,0x147c,0x1484,0x148c,0xa4d,0x1494,0x149b,0x14a3,
+0x14ab,0x14b3,0x14bb,0x14c3,0x14cb,0x14d2,0x14da,0x14e2,0x14ea,0x14f2,0x14f5,0x14f7,0x17e7,0x18da,0x18e0,0x1a30,
+0x14ff,0xa55,0xa5d,0x1625,0x162a,0x162d,0x1633,0x1507,0x163b,0x163b,0x1517,0x150f,0x151f,0x1527,0x152f,0x1537,
+0x153f,0x1547,0x154f,0x1557,0x18e8,0x193c,0x1a92,0x1bf0,0x1567,0x156d,0x1575,0x157d,0x155f,0x1585,0x18f0,0x18f7,
+0x17ef,0x17ef,0x17ef,0x17ef,0x17ef,0x17ef,0x17ef,0x17ef,0x18ff,0x18ff,0x18ff,0x18ff,0x1907,0x190e,0x1910,0x1917,
+0x191f,0x1923,0x1923,0x1926,0x1923,0x1923,0x192c,0x1923,0x196c,0x1a38,0x1a9a,0xbd9,0xbdf,0x1d54,0x1d5c,0x1e3a,
+0x19d8,0x19cc,0x19d0,0x1a55,0x19bc,0x19bc,0x19bc,0xc5c,0x19c4,0xc7c,0x1a18,0xcca,0xc64,0xc6c,0xc6c,0x1ade,
+0x1a08,0x1aa2,0xcb2,0xcba,0xa65,0x17f7,0x17f7,0xa6d,0x17ff,0x17ff,0x17ff,0x17ff,0x17ff,0x17ff,0xa75,0x747,
+0x1658,0x167a,0xa7d,0x1682,0xa85,0x168a,0x1692,0x169a,0xa8d,0xa92,0x16a2,0x16a9,0xa97,0x1807,0x1a28,0xc54,
+0xa9f,0x1704,0x170b,0x16b1,0x1713,0x1717,0x16b9,0x16bd,0x16d6,0x16d6,0x16d8,0x16c5,0x16cd,0x16cd,0x16ce,0x171f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x1812,0x1974,0x1974,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e7,0x1b40,0x1f1b,
+0x181a,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,
+0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,
+0x1820,0x1820,0x1820,0x1820,0xaa7,0x1828,0xaaf,0x1b60,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,
+0x1ae6,0xd38,0x1afb,0x1af3,0x1afd,0x1b68,0x1b68,0xdcc,0x19e0,0x1a5d,0x1ab2,0x1ab6,0x1aaa,0x1c20,0xcea,0xcf1,
+0x1a10,0xcc2,0x1a65,0xcf9,0x1b05,0x1b08,0xd40,0x1b70,0x1b18,0x1b10,0xd48,0xdd4,0x1b78,0x1b7c,0xddc,0x1019,
+0x1b20,0xd50,0xd58,0x1b84,0x1b94,0x1b8c,0xde4,0xf12,0xe70,0xe78,0x1daa,0xfc9,0x1e57,0x1e57,0x1b9c,0xdec,
+0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,
+0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,
+0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,
+0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,
+0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,
+0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,
+0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,
+0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,
+0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,
+0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,
+0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,
+0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,
+0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,
+0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,
+0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,
+0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,
+0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,
+0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,
+0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,
+0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,
+0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,
+0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0xab7,0xdf4,0xdf7,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
-0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,
-0x16f0,0x16f8,0x1930,0x139d,0x1a1c,0x1a1c,0x13a1,0x13a8,0xaba,0xac2,0xaca,0x15a1,0x15a8,0x15b0,0xad2,0x15b8,
-0x15f6,0x15f6,0x1589,0x1591,0x15c0,0x15ed,0x15ee,0x15fe,0x15c8,0x15cd,0x15d5,0x15dd,0xada,0x15e5,0xae2,0x1599,
-0xccd,0x1606,0xaea,0xaf2,0x160e,0x1614,0x1619,0xafa,0xb0a,0x165c,0x1664,0x1647,0x164c,0xb12,0xb1a,0xb02,
-0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,
-0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x173b,0x173b,0x173b,0x173b,
-0x1578,0x1578,0x15b8,0x15f8,0x1638,0x1678,0x16b8,0x16f8,0x1734,0x1774,0x17a0,0x17e0,0x1820,0x1860,0x18a0,0x18e0,
-0x1920,0x195c,0x199c,0x19dc,0x1a1c,0x1a50,0x1a8c,0x1acc,0x1b0c,0x1b4c,0x1b88,0x1bc8,0x1c08,0x1c48,0x1c88,0x1cc8,
+0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,
+0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,
+0x16f4,0x16fc,0x1934,0x13a2,0x1a20,0x1a20,0x13a6,0x13ad,0xabf,0xac7,0xacf,0x15a5,0x15ac,0x15b4,0xad7,0x15bc,
+0x15fa,0x15fa,0x158d,0x1595,0x15c4,0x15f1,0x15f2,0x1602,0x15cc,0x15d1,0x15d9,0x15e1,0xadf,0x15e9,0xae7,0x159d,
+0xcd2,0x160a,0xaef,0xaf7,0x1612,0x1618,0x161d,0xaff,0xb0f,0x1660,0x1668,0x164b,0x1650,0xb17,0xb1f,0xb07,
+0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,
+0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x173f,0x173f,0x173f,0x173f,
+0x1578,0x1578,0x15b8,0x15f8,0x1638,0x1678,0x16b8,0x16f8,0x1734,0x1774,0x17b4,0x17f4,0x1834,0x1874,0x18b4,0x18f4,
+0x1934,0x1970,0x19b0,0x19f0,0x1a30,0x1a64,0x1aa0,0x1ae0,0x1b20,0x1b60,0x1b9c,0x1bdc,0x1c1c,0x1c5c,0x1c9c,0x1cdc,
0xe59,0xa80,0xac0,0xb00,0xb40,0xb6b,0xf99,0xa40,0xed9,0xa40,0xa40,0xa40,0xa40,0xbab,0x13f5,0x13f5,
0xf19,0xfd9,0xa40,0xa40,0xa40,0xbeb,0xf59,0xc2b,0xa40,0xc51,0xc91,0xcd1,0xd11,0xd51,0xe99,0xdc9,
0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,
@@ -1646,1886 +1646,1887 @@ static const uint16_t propsVectorsTrie_index[32764]={
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0xc2c,0xc2f,0xdfa,0x1df5,0x101c,0x74a,0x55e,0x10b6,0xcfc,0xd7b,0x55e,0x55e,0x1d1b,0xf15,0xf1d,0x1e3d,
-0xc7f,0xc86,0xc8e,0x1b9f,0x1dd5,0x55e,0x1db5,0xfec,0x1ba7,0xe02,0xe0a,0xe12,0x1044,0x752,0x55e,0x55e,
-0x1baf,0x1baf,0x75a,0x55e,0x1e6a,0x10ce,0x1e62,0x10d6,0x1f56,0x11d0,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0xe1a,0x1fae,0x12c9,0x134b,0x134c,0x1f76,0x11f8,0x11ff,0x1206,0x1308,0x130c,0x1280,0x1216,
-0x1c2b,0x1c2d,0xe7b,0xe82,0x1bb7,0x1bbf,0xe22,0xf35,0x1d13,0xefd,0xf05,0xfe4,0x1d33,0x1d37,0x1d3f,0x1064,
-0xfb4,0x1d95,0x762,0x55e,0x10be,0x10c6,0x1d9d,0xfbc,0xf96,0xf9c,0xfa4,0xfac,0x55e,0x55e,0x55e,0x55e,
-0x1eda,0x1ed2,0x1140,0x1148,0x1e1d,0x1e15,0x108c,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e05,0x104c,0x1054,0x105c,
-0x1dcd,0x1dc5,0xffc,0x1138,0x1d47,0xf45,0x76a,0x55e,0x109c,0x10a4,0x772,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x1f4e,0x11b2,0x77a,0x55e,0x55e,0x1e2d,0x1e25,0x1094,0x1288,0x128e,0x1296,0x55e,0x55e,0x121e,0x1222,0x122a,
-0x1f0e,0x1f06,0x119a,0x1efe,0x1ef6,0x118a,0x1dfd,0x103c,0x135c,0x135f,0x135f,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x10ee,0x10f3,0x10fb,0x1102,0x112a,0x1130,0x55e,0x55e,0x116e,0x1172,0x117a,0x11c2,0x11c8,0x782,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x11e0,0x136f,0x1374,0x137c,0x55e,0x55e,0x786,0x1f96,0x1270,
-0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,
-0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a6e,0xd04,0xd0b,0xd0b,0xd0b,
-0x1a76,0x1a76,0x1a76,0xd13,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x78e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0xc31,0xc34,0xdff,0x1dfa,0x1021,0x74f,0x55e,0x10bb,0xd01,0xd80,0x55e,0x55e,0x1d20,0xf1a,0xf22,0x1e42,
+0xc84,0xc8b,0xc93,0x1ba4,0x1dda,0x55e,0x1dba,0xff1,0x1bac,0xe07,0xe0f,0xe17,0x1049,0x757,0x55e,0x55e,
+0x1bb4,0x1bb4,0x75f,0x55e,0x1e6f,0x10d3,0x1e67,0x10db,0x1f5b,0x11d5,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0xe1f,0x1fb3,0x12ce,0x1350,0x1351,0x1f7b,0x11fd,0x1204,0x120b,0x130d,0x1311,0x1285,0x121b,
+0x1c30,0x1c32,0xe80,0xe87,0x1bbc,0x1bc4,0xe27,0xf3a,0x1d18,0xf02,0xf0a,0xfe9,0x1d38,0x1d3c,0x1d44,0x1069,
+0xfb9,0x1d9a,0x767,0x55e,0x10c3,0x10cb,0x1da2,0xfc1,0xf9b,0xfa1,0xfa9,0xfb1,0x55e,0x55e,0x55e,0x55e,
+0x1edf,0x1ed7,0x1145,0x114d,0x1e22,0x1e1a,0x1091,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e0a,0x1051,0x1059,0x1061,
+0x1dd2,0x1dca,0x1001,0x113d,0x1d4c,0xf4a,0x76f,0x55e,0x10a1,0x10a9,0x777,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x1f53,0x11b7,0x77f,0x55e,0x55e,0x1e32,0x1e2a,0x1099,0x128d,0x1293,0x129b,0x55e,0x55e,0x1223,0x1227,0x122f,
+0x1f13,0x1f0b,0x119f,0x1f03,0x1efb,0x118f,0x1e02,0x1041,0x1361,0x1364,0x1364,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x10f3,0x10f8,0x1100,0x1107,0x112f,0x1135,0x55e,0x55e,0x1173,0x1177,0x117f,0x11c7,0x11cd,0x787,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x11e5,0x1374,0x1379,0x1381,0x55e,0x55e,0x78b,0x1f9b,0x1275,
+0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,
+0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a72,0xd09,0xd10,0xd10,0xd10,
+0x1a7a,0x1a7a,0x1a7a,0xd18,0x1e5f,0x1e5f,0x1e5f,0x1e5f,0x1e5f,0x1e5f,0x793,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x792,0x1fc6,0x1fc6,0x12d9,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,
-0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0xe8a,0x1004,0x100c,0x1fce,
-0x1314,0x131c,0xf4d,0x1ded,0x1de5,0x102c,0x1034,0x79a,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1f6e,0x1f66,0x11f0,
-0x55e,0x55e,0x55e,0x1d2b,0x1d2b,0xf25,0x1d23,0xf2d,0x55e,0x55e,0x1122,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x797,0x1fcb,0x1fcb,0x12de,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,
+0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0xe8f,0x1009,0x1011,0x1fd3,
+0x1319,0x1321,0xf52,0x1df2,0x1dea,0x1031,0x1039,0x79f,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1f73,0x1f6b,0x11f5,
+0x55e,0x55e,0x55e,0x1d30,0x1d30,0xf2a,0x1d28,0xf32,0x55e,0x55e,0x1127,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x79e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7a3,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1d7d,0x1d7d,0x1d7d,0xf71,0xf76,
-0x7a6,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1d82,0x1d82,0x1d82,0xf76,0xf7b,
+0x7ab,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1fde,0x133c,0x1343,0x1fd6,0x1fd6,0x1fd6,0x7ae,
-0x55e,0x1849,0x1849,0x1849,0x1849,0x1849,0x1849,0x1849,0xb30,0x1859,0xb38,0x185a,0x1851,0x1862,0x1868,0x1870,
-0xb40,0x1998,0x1998,0x7b6,0x55e,0x55e,0x55e,0x1367,0x11e8,0x1988,0x1988,0xc37,0xd1b,0x55e,0x55e,0x55e,
-0x55e,0x18a1,0x18a8,0xb48,0x18ab,0xb50,0xb58,0xb60,0x18a5,0xb68,0xb70,0xb78,0x18aa,0x18b2,0x18a1,0x18a8,
-0x18a4,0x18ab,0x18b3,0x18a2,0x18a9,0x18a5,0xb7f,0x1878,0x1880,0x1887,0x188e,0x187b,0x1883,0x188a,0x1891,0xb87,
-0x1899,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,
-0x1e82,0x1e72,0x1e75,0x1e72,0x1e7c,0x10de,0x7be,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1fe3,0x1341,0x1348,0x1fdb,0x1fdb,0x1fdb,0x7b3,
+0x55e,0x184d,0x184d,0x184d,0x184d,0x184d,0x184d,0x184d,0xb35,0x185d,0xb3d,0x185e,0x1855,0x1866,0x186c,0x1874,
+0xb45,0x199c,0x199c,0x7bb,0x55e,0x55e,0x55e,0x136c,0x11ed,0x198c,0x198c,0xc3c,0xd20,0x55e,0x55e,0x55e,
+0x55e,0x18a5,0x18ac,0xb4d,0x18af,0xb55,0xb5d,0xb65,0x18a9,0xb6d,0xb75,0xb7d,0x18ae,0x18b6,0x18a5,0x18ac,
+0x18a8,0x18af,0x18b7,0x18a6,0x18ad,0x18a9,0xb84,0x187c,0x1884,0x188b,0x1892,0x187f,0x1887,0x188e,0x1895,0xb8c,
+0x189d,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,
+0x1e87,0x1e77,0x1e7a,0x1e77,0x1e81,0x10e3,0x7c3,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x12f5,0x12fd,0x1300,0x1300,0x1300,0x1300,0x1300,
-0x1300,0x1112,0x111a,0x1fe6,0x1354,0x7c6,0x55e,0x55e,0x55e,0x1f8e,0x1232,0x7ce,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x7d2,0x1324,0x1f9e,0x1278,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7da,0x1384,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x12fa,0x1302,0x1305,0x1305,0x1305,0x1305,0x1305,
+0x1305,0x1117,0x111f,0x1feb,0x1359,0x7cb,0x55e,0x55e,0x55e,0x1f93,0x1237,0x7d3,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x7d7,0x1329,0x1fa3,0x127d,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7df,0x1389,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x12e1,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0xff4,0x55e,0x1eca,0x1ec2,0x10e6,0x55e,0x55e,0x55e,0x55e,
+0x12e6,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0xff9,0x55e,0x1ecf,0x1ec7,0x10eb,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x7e2,0x1f5e,0x11d8,0x55e,0x55e,0x123a,0x123b,0x7ea,0x55e,0x55e,0x55e,0x55e,
-0x55e,0xec2,0xeca,0xed2,0xeda,0xee2,0xeea,0xef1,0xef5,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x7e7,0x1f63,0x11dd,0x55e,0x55e,0x123f,0x1240,0x7ef,0x55e,0x55e,0x55e,0x55e,
+0x55e,0xec7,0xecf,0xed7,0xedf,0xee7,0xeef,0xef6,0xefa,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7ee,0x106c,0x1e0d,0x1072,0x1e0d,0x107a,0x107f,0x1084,
-0x1084,0x1e92,0x1eb2,0x1eba,0x1f26,0x1e9a,0x1f7e,0x1ea2,0x1f2e,0x1f86,0x1f86,0x11a2,0x11aa,0x1252,0x1258,0x1260,
-0x1268,0x1fa6,0x1fa6,0x1fa6,0x1fa6,0x12ac,0x1fa6,0x12b2,0x12b6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,
-0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,
-0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f7,0xb8f,0x18bb,0x18bb,0x18bb,0x7ff,0x7ff,0x7ff,
-0x7ff,0x1990,0x1990,0x1990,0x1990,0x1990,0x1990,0x1990,0x807,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
-0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
-0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
-0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
-0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0xbe2,0xbe9,0xbf1,0xbf9,0x1978,0x1978,0x1978,
-0xc01,0xc09,0xc0c,0x19a8,0x19a0,0xc3f,0xd5b,0xd5f,0xd63,0x55e,0x55e,0x55e,0x55e,0xd6b,0x1b23,0xd73,
-0xf5d,0x182c,0xb22,0xb28,0x1024,0xc14,0x19ec,0xca5,0x55e,0x1841,0x1834,0x1839,0x1980,0xc1c,0xc24,0x1150,
-0x1156,0x1d85,0xf7e,0x1d75,0xf55,0x132c,0x1334,0x55e,0x55e,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,
-0x1dad,0x1dad,0xfcc,0xfd4,0xfdc,0x12e9,0x12ed,0x55e,0x55e,0x1b2b,0xd83,0x1b33,0x1b33,0xd87,0xe92,0xe9a,
-0xea2,0x1bfb,0x1be3,0x1c03,0x1c0b,0x1bf3,0xe2a,0xe2e,0xe35,0xe3d,0xe41,0xe49,0xe51,0xe53,0xe53,0xe53,
-0xe53,0x1c6c,0x1c74,0x1c6c,0x1c7a,0x1c82,0x1c4d,0x1c8a,0x1c92,0x1c6c,0x1c9a,0x1ca2,0x1ca9,0x1cb1,0x1c55,0x1c6c,
-0x1cb6,0x1c5d,0x1c64,0x1cbe,0x1cc4,0x1d66,0x1d6d,0x1d5f,0x1ccb,0x1cd3,0x1cdb,0x1ce3,0x1ddd,0x1ceb,0x1cf3,0xeaa,
-0xeb2,0x1c3d,0x1c3d,0x1c3d,0xeba,0x1d8d,0x1d8d,0xf86,0xf8e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7f3,0x1071,0x1e12,0x1077,0x1e12,0x107f,0x1084,0x1089,
+0x1089,0x1e97,0x1eb7,0x1ebf,0x1f2b,0x1e9f,0x1f83,0x1ea7,0x1f33,0x1f8b,0x1f8b,0x11a7,0x11af,0x1257,0x125d,0x1265,
+0x126d,0x1fab,0x1fab,0x1fab,0x1fab,0x12b1,0x1fab,0x12b7,0x12bb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,
+0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,
+0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fc,0xb94,0x18bf,0x18bf,0x18bf,0x804,0x804,0x804,
+0x804,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x80c,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0xbe7,0xbee,0xbf6,0xbfe,0x197c,0x197c,0x197c,
+0xc06,0xc0e,0xc11,0x19ac,0x19a4,0xc44,0xd60,0xd64,0xd68,0x55e,0x55e,0x55e,0x55e,0xd70,0x1b28,0xd78,
+0xf62,0x1830,0xb27,0xb2d,0x1029,0xc19,0x19f0,0xcaa,0x55e,0x1845,0x1838,0x183d,0x1984,0xc21,0xc29,0x1155,
+0x115b,0x1d8a,0xf83,0x1d7a,0xf5a,0x1331,0x1339,0x55e,0x55e,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,
+0x1db2,0x1db2,0xfd1,0xfd9,0xfe1,0x12ee,0x12f2,0x55e,0x55e,0x1b30,0xd88,0x1b38,0x1b38,0xd8c,0xe97,0xe9f,
+0xea7,0x1c00,0x1be8,0x1c08,0x1c10,0x1bf8,0xe2f,0xe33,0xe3a,0xe42,0xe46,0xe4e,0xe56,0xe58,0xe58,0xe58,
+0xe58,0x1c71,0x1c79,0x1c71,0x1c7f,0x1c87,0x1c52,0x1c8f,0x1c97,0x1c71,0x1c9f,0x1ca7,0x1cae,0x1cb6,0x1c5a,0x1c71,
+0x1cbb,0x1c62,0x1c69,0x1cc3,0x1cc9,0x1d6b,0x1d72,0x1d64,0x1cd0,0x1cd8,0x1ce0,0x1ce8,0x1de2,0x1cf0,0x1cf8,0xeaf,
+0xeb7,0x1c42,0x1c42,0x1c42,0xebf,0x1d92,0x1d92,0xf8b,0xf93,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,
-0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e4a,0x1e45,0x1e45,0x1e45,0x10ac,0x10ae,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x115e,0x1c45,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,
-0x1f1e,0x1f3e,0x1166,0x1243,0x124a,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,
-0x1182,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,
+0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4f,0x1e4a,0x1e4a,0x1e4a,0x10b1,0x10b3,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1163,0x1c4a,0x1f23,0x1f23,0x1f23,0x1f23,0x1f23,0x1f23,
+0x1f23,0x1f43,0x116b,0x1248,0x124f,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,
+0x1187,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,
-0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc9,0x1bc7,0x1bd1,0x1bc7,0x1bc7,
-0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bd4,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bdb,0x120e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,
+0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bce,0x1bcc,0x1bd6,0x1bcc,0x1bcc,
+0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bd9,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1be0,0x1213,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,
-0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,
-0x1eee,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x129e,
-0x12a4,0x12be,0x12c1,0x12c1,0x12c1,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c6,
-0x138c,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x13d0,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,
-0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x13e0,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x18ce,0x18ce,0x18ce,0x18ce,
-0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x13b0,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138d,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1395,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138d,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x13b8,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x13c0,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x13c8,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x13d8,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x174b,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1753,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x53d,0x53d,0x53d,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,
+0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,
+0x1ef3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x12a3,
+0x12a9,0x12c3,0x12c6,0x12c6,0x12c6,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18ca,
+0x1391,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x13d5,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,
+0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x13e5,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x18d2,0x18d2,0x18d2,0x18d2,
+0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x13b5,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1392,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x139a,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1392,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x13bd,0x1d00,0x1d00,0x1d00,0x1d00,0x1d00,0x1d00,0x13c5,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x13cd,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x13dd,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x174f,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1757,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x53d,0x53d,0x53d,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
0x2e2,0x2e5,0x2ee,0x2e8,0x2e8,0x2eb,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
-0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x7da,0x7d4,0x7b9,0x79e,0x7aa,0x7a7,0x79e,0x7b6,
-0x7a4,0x7b0,0x79e,0x7cb,0x7c2,0x7b3,0x7d7,0x7ad,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,
-0x79b,0x79b,0x7bf,0x7bc,0x7c5,0x7c5,0x7c5,0x7d4,0x79e,0x7e6,0x7e6,0x7e6,0x7e6,0x7e6,0x7e6,0x7e0,
-0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,
-0x7e0,0x7e0,0x7e0,0x7a4,0x7aa,0x7b0,0x7d1,0x798,0x7ce,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7dd,
-0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,
-0x7dd,0x7dd,0x7dd,0x7a4,0x7c8,0x7a1,0x7c5,0x2e2,0,0,0,0,0,0,0,0,
+0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x828,0x822,0x804,0x7ec,0x7f8,0x7f5,0x7ec,0x807,
+0x7f2,0x7fe,0x7ec,0x819,0x80d,0x801,0x825,0x7fb,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,
+0x7e9,0x7e9,0x810,0x80a,0x813,0x813,0x813,0x822,0x7ec,0x834,0x834,0x834,0x834,0x834,0x834,0x82e,
+0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,
+0x82e,0x82e,0x82e,0x7f2,0x7f8,0x7fe,0x81f,0x7e6,0x81c,0x831,0x831,0x831,0x831,0x831,0x831,0x82b,
+0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,
+0x82b,0x82b,0x82b,0x7f2,0x816,0x7ef,0x813,0x2e2,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x300,0x2f1,0x2f1,
0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,
-0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f4,0x64b,0x7ef,0x7f2,0x651,0x7f2,0x7ec,0x645,
-0x63c,0x2fa,0x65a,0x2fd,0x7f5,0x633,0x648,0x7e9,0x64e,0x657,0x639,0x639,0x63f,0x2f7,0x645,0x642,
-0x63c,0x639,0x65a,0x2fd,0x636,0x636,0x636,0x64b,0x306,0x306,0x306,0x306,0x306,0x306,0x663,0x306,
-0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x663,0x306,0x306,0x306,0x306,0x306,0x306,0x654,
-0x663,0x306,0x306,0x306,0x306,0x306,0x663,0x65d,0x660,0x660,0x303,0x303,0x303,0x303,0x65d,0x303,
-0x660,0x660,0x660,0x303,0x660,0x660,0x303,0x303,0x65d,0x303,0x660,0x660,0x303,0x303,0x303,0x654,
-0x65d,0x660,0x660,0x303,0x660,0x303,0x65d,0x303,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,
-0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x30f,0x666,0x312,0x669,0x312,0x309,0x312,0x309,
-0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x66f,0x666,
-0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x666,0x672,0x66c,0x312,0x309,0x312,0x309,
-0x666,0x312,0x309,0x312,0x309,0x312,0x309,0x672,0x66c,0x66f,0x666,0x312,0x669,0x312,0x309,0x312,
-0x669,0x675,0x66f,0x666,0x312,0x669,0x312,0x309,0x312,0x309,0x66f,0x666,0x312,0x309,0x312,0x309,
-0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x66f,0x666,
-0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,
-0x312,0x312,0x309,0x312,0x309,0x312,0x309,0x30c,0x315,0x321,0x321,0x315,0x321,0x315,0x321,0x321,
-0x315,0x321,0x321,0x321,0x315,0x315,0x321,0x321,0x321,0x321,0x315,0x321,0x321,0x315,0x321,0x321,
-0x321,0x315,0x315,0x315,0x321,0x321,0x315,0x321,0x324,0x318,0x321,0x315,0x321,0x315,0x321,0x321,
-0x315,0x321,0x315,0x315,0x321,0x315,0x321,0x324,0x318,0x321,0x321,0x321,0x315,0x321,0x315,0x321,
-0x321,0x315,0x315,0x31e,0x321,0x315,0x315,0x315,0x31e,0x31e,0x31e,0x31e,0x327,0x327,0x31b,0x327,
-0x327,0x31b,0x327,0x327,0x31b,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,
-0x678,0x324,0x678,0x324,0x678,0x315,0x324,0x318,0x324,0x318,0x324,0x318,0x321,0x315,0x324,0x318,
-0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x318,0x327,0x327,0x31b,0x324,0x318,0x9cf,0x9cf,
-0x9d2,0x9cc,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,
-0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x9d2,0x9cc,0x9d2,0x9cc,
-0x9cf,0x9c9,0x9d2,0x9cc,0xb8e,0xc87,0x9cf,0x9c9,0x9cf,0x9c9,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,
-0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,0xc87,0xc87,0xc87,0xd80,0xd80,0xd80,0xd83,0xd83,
-0xd80,0xd83,0xd83,0xd80,0xd80,0xd83,0xec1,0xec4,0xec4,0xec4,0xec4,0xec1,0xec4,0xec1,0xec4,0xec1,
-0xec4,0xec1,0xec4,0xec1,0x32a,0x67b,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32a,0x67b,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32d,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0xc8a,0xc8a,
-0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x339,0x339,0x339,0x339,0x339,0x339,0x339,
-0x336,0x336,0x333,0x333,0x681,0x333,0x339,0x684,0x33c,0x684,0x684,0x684,0x33c,0x684,0x339,0x339,
-0x687,0x33f,0x333,0x333,0x333,0x333,0x333,0x333,0x67e,0x67e,0x67e,0x67e,0x330,0x67e,0x333,0xb04,
-0x342,0x342,0x342,0x342,0x342,0x333,0x333,0x333,0x333,0x333,0x9de,0x9de,0x9db,0x9d8,0x9db,0xc8d,
-0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68d,0x68d,0x92d,0x68d,0x68d,0x930,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xc3f,
-0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xe85,0xe85,0xe85,0xe85,0xe88,0xd4d,0xd4d,0xd4d,
-0x690,0x690,0xb0a,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,
-0xf6f,0xf6c,0xf6f,0xf6c,0x34e,0x357,0xf6f,0xf6c,9,9,0x35d,0xec7,0xec7,0xec7,0x345,0x14b8,
-9,9,9,9,0x35a,0x348,0x36c,0x34b,0x36c,0x36c,0x36c,9,0x36c,9,0x36c,0x36c,
-0x363,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,
-0x696,0x696,9,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x36c,0x36c,0x363,0x363,0x363,0x363,
-0x363,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,
-0x693,0x693,0x360,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x363,0x363,0x363,0x363,0x363,0xf6f,
-0x36f,0x36f,0x372,0x36c,0x36c,0x36f,0x366,0x9e1,0xb97,0xb94,0x369,0x9e1,0x369,0x9e1,0x369,0x9e1,
-0x369,0x9e1,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,
-0x36f,0x36f,0x366,0x360,0xb46,0xb43,0xb91,0xc93,0xc90,0xc96,0xc93,0xc90,0xd86,0xd89,0xd89,0xd89,
-0x9f0,0x6a2,0x37e,0x381,0x37e,0x37e,0x37e,0x381,0x37e,0x37e,0x37e,0x37e,0x381,0x9f0,0x381,0x37e,
-0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x6a2,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,
-0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,
-0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x69c,0x699,0x699,0x699,0x699,0x699,0x699,
-0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x9ea,0x69c,0x378,0x37b,
-0x378,0x378,0x378,0x37b,0x378,0x378,0x378,0x378,0x37b,0x9ea,0x37b,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x381,0x37b,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x375,0x939,
-0x93c,0x91e,0x91e,0x111c,0x9e4,0x9e4,0xb9d,0xb9a,0x9ed,0x9e7,0x9ed,0x9e7,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x381,0x37b,0x37e,
-0x378,0xb9d,0xb9a,0x37e,0x378,0xb9d,0xb9a,0x37e,0x378,0xb9d,0xb9a,0xeca,0x381,0x37b,0x381,0x37b,
-0x37e,0x378,0x381,0x37b,0x37e,0x378,0x381,0x37b,0x381,0x37b,0x381,0x37b,0x37e,0x378,0x381,0x37b,
-0x381,0x37b,0x381,0x37b,0x37e,0x378,0x381,0x37b,0x9f0,0x9ea,0x381,0x37b,0x381,0x37b,0x381,0x37b,
-0x381,0x37b,0xd8f,0xd8c,0x381,0x37b,0xecd,0xeca,0xecd,0xeca,0xecd,0xeca,0xc03,0xc00,0xc03,0xc00,
-0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xefa,0xef7,0xefa,0xef7,
-0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,
-0x1155,0x1152,0x132f,0x132c,0x14ee,0x14eb,0x14ee,0x14eb,0x14ee,0x14eb,0x14ee,0x14eb,0xc,0x393,0x393,0x393,
-0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,
-0x393,0x393,0x393,0x393,0x393,0x393,0x393,0xc,0xc,0x396,0x384,0x384,0x384,0x38a,0x384,0x387,
-0x18f9,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,
-0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,
-0x38d,0x38d,0x38d,0x390,0x18f9,0x399,0x9f3,0xc,0xc,0x14bb,0x14bb,0x13d7,0xf,0x960,0x960,0x960,
-0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0xd92,0x960,
-0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x39c,0x39c,0x39c,0x39c,
-0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xed0,0x39c,0x39c,0x39c,0x3a8,0x39c,0x39f,0x39c,0x39c,0x3ab,
-0x963,0xd95,0xd98,0xd95,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x3ae,0x3ae,0x3ae,0x3ae,
-0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,
-0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0xf,0xf,0xf,0xf,0x18fc,0x3ae,0x3ae,0x3ae,0x3a5,
-0x3a2,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xcab,0xcab,0xcab,0xcab,
-0x13da,0x14be,0xf78,0xf78,0xf78,0xf75,0xf75,0xd9e,0x8a6,0xca5,0xca2,0xca2,0xc99,0xc99,0xc99,0xc99,
-0xc99,0xc99,0xf72,0xf72,0xf72,0xf72,0xf72,0x8a3,0x14b5,0x1b0f,0xda1,0x8a9,0x12f6,0x3c9,0x3cc,0x3cc,
-0x3cc,0x3cc,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0x8ac,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0xb3d,
-0xb3d,0xb3d,0xc99,0xc9f,0xc9c,0xd9b,0xd9b,0xd9b,0xd9b,0xd9b,0xd9b,0x12f3,0x93f,0x93f,0x93f,0x93f,
-0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x3c3,0x3c0,0x3bd,0x3ba,0xba0,0xba0,0x921,0x3c9,0x3c9,0x3d5,
-0x3c9,0x3cf,0x3cf,0x3cf,0x3cf,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x9f9,0x9f9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x9f9,0x3cc,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x9f9,0x3c9,0x3c9,0x3c9,0x3cc,0x942,0x3c9,0x3b4,0x3b4,
-0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b1,0x3ba,0x3b7,0x3b7,0x3b4,0x3b4,0x3b4,0x3b4,0x3d2,0x3d2,0x3b4,
-0x3b4,0x3ba,0x3b7,0x3b7,0x3b7,0x3b4,0xca8,0xca8,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,
-0x3c6,0x3c6,0x9f9,0x9f9,0x9f9,0x9f6,0x9f6,0xca8,0xa0e,0xa0e,0xa0e,0xa08,0xa08,0xa08,0xa08,0xa08,
-0xa08,0xa08,0xa08,0xa05,0xa08,0xa05,0x12,0xa11,0xa0b,0x9fc,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
-0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
-0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xcae,0xcae,0xcae,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,
-0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,
-0x9ff,0x9ff,0x9ff,0x12,0x12,0xcae,0xcae,0xcae,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,
-0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,
-0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,
-0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
-0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
-0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa14,0xa14,
-0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xba3,0x15,0x15,0x15,0x15,0x15,0x15,
-0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,
-0xf12,0xf12,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,
-0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,
-0xf15,0xf15,0xf15,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf18,0xf18,0xf0c,0xf0c,
-0xf0f,0xf1e,0xf1b,0xff,0xff,0x1920,0x1923,0x1923,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xb16,0xb16,0xb19,0xb19,0xb16,0xb16,0xb16,0xb16,
-0xb16,0xb16,0xb16,0xb16,0x1c53,0x1c53,0x1c50,0x1c50,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1626,
-0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
-0x1e9,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,
-0x1248,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1bed,0x1bea,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,
-0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,
-0x1491,0x1491,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1fe,
-0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,
-0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,
-0x196e,0x196e,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1ad3,0x288,0x288,0x288,0x288,0x288,0x288,0x288,
-0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x1761,0x1761,0x1761,0x1761,0x204,0x204,0x204,0x204,
-0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
-0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x29d,0x1bd5,0x1bd5,0x1bd5,
-0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x29d,0x1bd5,0x1bd5,0x29d,0x16c5,0x16c5,0x16c5,0x16c5,0x1ec,0x1ec,0x1ec,0x1ec,
-0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x2b2,0x2b2,0x2b2,0x2b2,
-0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xdf5,0xdf5,0xdf2,0xdf2,0xdf2,0xdf5,0xd2,0xd2,
-0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x210,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
-0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x1c08,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,
-0x1a25,0x1a25,0x26d,0x26d,0x26d,0x26d,0x1a28,0x1a22,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,
-0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,
-0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x252,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
-0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,
-0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0,0,0,0,0,0,0,0,
+0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f4,0x690,0x83d,0x840,0x696,0x840,0x83a,0x68a,
+0x681,0x2fa,0x69f,0x2fd,0x843,0x678,0x68d,0x837,0x693,0x69c,0x67e,0x67e,0x684,0x2f7,0x68a,0x687,
+0x681,0x67e,0x69f,0x2fd,0x67b,0x67b,0x67b,0x690,0x306,0x306,0x306,0x306,0x306,0x306,0x6a8,0x306,
+0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x6a8,0x306,0x306,0x306,0x306,0x306,0x306,0x699,
+0x6a8,0x306,0x306,0x306,0x306,0x306,0x6a8,0x6a2,0x6a5,0x6a5,0x303,0x303,0x303,0x303,0x6a2,0x303,
+0x6a5,0x6a5,0x6a5,0x303,0x6a5,0x6a5,0x303,0x303,0x6a2,0x303,0x6a5,0x6a5,0x303,0x303,0x303,0x699,
+0x6a2,0x6a5,0x6a5,0x303,0x6a5,0x303,0x6a2,0x303,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x30f,0x6b1,0x312,0x6b4,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x6b7,0x6b1,
+0x312,0x30c,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x312,0x6b1,0x6ae,0x6ab,0x312,0x30c,0x312,0x30c,
+0x6b1,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x6ae,0x6ab,0x6b7,0x6b1,0x312,0x6b4,0x312,0x30c,0x312,
+0x6b4,0x6ba,0x6b7,0x6b1,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x6b7,0x6b1,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x6b7,0x6b1,
+0x312,0x30c,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x309,0x318,0x327,0x327,0x324,0x327,0x324,0x327,0x327,
+0x324,0x327,0x327,0x327,0x324,0x31e,0x327,0x333,0x327,0x327,0x324,0x327,0x327,0x324,0x327,0x327,
+0x327,0x324,0x324,0x324,0x327,0x327,0x324,0x327,0x336,0x330,0x327,0x324,0x327,0x324,0x327,0x327,
+0x324,0x327,0x31e,0x31e,0x327,0x324,0x327,0x336,0x330,0x327,0x327,0x327,0x324,0x327,0x324,0x327,
+0x327,0x315,0x31e,0x321,0x327,0x324,0x31e,0x315,0x31b,0x31b,0x31b,0x31b,0x32d,0x32d,0x32a,0x32d,
+0x32d,0x32a,0x32d,0x32d,0x32a,0x336,0x6bd,0x336,0x6bd,0x336,0x6bd,0x336,0x6bd,0x336,0x6bd,0x336,
+0x6bd,0x336,0x6bd,0x336,0x6bd,0x324,0x336,0x330,0x336,0x330,0x336,0x330,0x327,0x324,0x336,0x330,
+0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x330,0x32d,0x32d,0x32a,0x336,0x330,0xa29,0xa29,
+0xa35,0xa32,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,
+0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0xa35,0xa32,0xa35,0xa32,
+0xa29,0xa26,0xa35,0xa32,0xc0c,0xd08,0xa2f,0xa2c,0xa2f,0xa2c,0xa35,0xa32,0xa35,0xa32,0xa35,0xa32,
+0xa35,0xa32,0xa35,0xa32,0xa35,0xa32,0xa35,0xa32,0xd05,0xd05,0xd05,0xe01,0xe01,0xe01,0xe04,0xe04,
+0xe01,0xe04,0xe04,0xe01,0xe01,0xe04,0xf4e,0xf51,0xf51,0xf51,0xf51,0xf4e,0xf51,0xf4e,0xf51,0xf4e,
+0xf51,0xf4e,0xf51,0xf4e,0x339,0x6c0,0x339,0x342,0x342,0x339,0x342,0x342,0x339,0x345,0x339,0x342,
+0x339,0x339,0x339,0x339,0x339,0x6c0,0x339,0x342,0x339,0x339,0x339,0x339,0x342,0x342,0x339,0x339,
+0x339,0x339,0x339,0x339,0x339,0x339,0x342,0x339,0x339,0x339,0x339,0x33f,0x339,0x339,0x339,0x339,
+0x33f,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x342,0x339,0x339,
+0x339,0x339,0x339,0x339,0x339,0x339,0x342,0x339,0x33c,0x339,0x339,0x339,0x339,0x339,0x339,0x339,
+0x339,0x339,0x33f,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0xa38,0xa38,0xa38,
+0xa38,0xa38,0xd0b,0xd0b,0x35d,0x35d,0x35d,0x35d,0x35d,0x35d,0x35d,0x35d,0x35d,0x351,0x351,0x357,
+0x357,0x351,0x351,0x351,0x34e,0x34e,0x348,0x348,0x6c3,0x348,0x351,0x6c9,0x354,0x6c9,0x6c9,0x6c9,
+0x354,0x6c9,0x351,0x351,0x6cc,0x35a,0x348,0x348,0x348,0x348,0x348,0x348,0x6c6,0x6c6,0x6c6,0x6c6,
+0x34b,0x6c6,0x348,0xb82,0x35d,0x35d,0x35d,0x35d,0x35d,0x348,0x348,0x348,0x348,0x348,0xa44,0xa44,
+0xa41,0xa3b,0xa3e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
+0xd0e,0xd0e,0xd0e,0xd0e,0x6db,0x6db,0x6db,0x6db,0x6db,0x6d5,0x6db,0x6db,0x6db,0x6db,0x6db,0x6db,
+0x6db,0x6d5,0x6cf,0x6db,0x6db,0x6db,0x6cf,0x6db,0x6db,0x6cf,0x6d5,0x6cf,0x6cf,0x6cf,0x6cf,0x6db,
+0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6d5,0x6d5,0x6db,0x6db,0x6db,0x6db,0x6db,0x6db,0x6cf,0x6cf,0x6cf,
+0x6cf,0x6db,0x6db,0x6cf,0x6db,0x6db,0x6d5,0x6cf,0x6d5,0x6db,0x6d5,0x6cf,0x6db,0x6db,0x6cf,0x6cf,
+0x6cf,0x6cf,0x6cf,0x6cf,0x6d8,0x6d8,0x981,0x6d8,0x6d8,0x984,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,
+0xb85,0xb85,0xb85,0xcbd,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xf15,0xf0f,0xf0f,0xf0f,
+0xf12,0xdce,0xdce,0xdce,0x6d2,0x6d2,0xb88,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,
+0xd02,0xd02,0xd02,0xd02,0x100e,0x100b,0x100e,0x100b,0x369,0x375,0x100e,0x100b,9,9,0x378,0xf54,
+0xf54,0xf54,0x360,0x158a,9,9,9,9,0x372,0x363,0x38d,0x366,0x38d,0x38d,0x38d,9,
+0x38d,9,0x38d,0x38d,0x38a,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,
+0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,9,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x38d,0x38d,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,
+0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x387,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x1011,0x390,0x390,0x393,0x384,0x384,0x390,0x381,0xa4a,0xc15,0xc12,0x37b,0xa47,
+0x37b,0xa47,0x37b,0xa47,0x37b,0xa47,0x36f,0x36c,0x36f,0x36c,0x36f,0x36c,0x36f,0x36c,0x36f,0x36c,
+0x36f,0x36c,0x36f,0x36c,0x390,0x390,0x381,0x37e,0xbc4,0xbc1,0xc0f,0xd14,0xd11,0xd17,0xd14,0xd11,
+0xe07,0xe0a,0xe0a,0xe0a,0xa59,0x6ed,0x3ab,0x3ae,0x3ab,0x3ab,0x3ab,0x3ae,0x3ab,0x3ab,0x3ab,0x3ab,
+0x3ae,0xa59,0x3ae,0x3ab,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ed,0x6ea,0x6ea,
+0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,
+0x6ea,0x6ea,0x6ea,0x6ea,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e7,0x6e4,0x6e4,
+0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,
+0xa53,0x6e7,0x3a5,0x3a8,0x3a5,0x3a5,0x3a5,0x3a8,0x3a5,0x3a5,0x3a5,0x3a5,0x3a8,0xa53,0x3a8,0x3a5,
+0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,
+0x39f,0x399,0x39f,0x399,0x39f,0x399,0x3a2,0x39c,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,
+0x39f,0x399,0x396,0x98d,0x990,0x972,0x972,0x11e2,0xa4d,0xa4d,0xc1b,0xc18,0xa56,0xa50,0xa56,0xa50,
+0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,
+0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,
+0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,
+0x3ab,0x3ae,0x3a8,0x3ab,0x3a5,0xc1b,0xc18,0x3ab,0x3a5,0xc1b,0xc18,0x3ab,0x3a5,0xc1b,0xc18,0xf57,
+0x3ae,0x3a8,0x3ae,0x3a8,0x3ab,0x3a5,0x3ae,0x3a8,0x3ab,0x3a5,0x3ae,0x3a8,0x3ae,0x3a8,0x3ae,0x3a8,
+0x3ab,0x3a5,0x3ae,0x3a8,0x3ae,0x3a8,0x3ae,0x3a8,0x3ab,0x3a5,0x3ae,0x3a8,0xa59,0xa53,0x3ae,0x3a8,
+0x3ae,0x3a8,0x3ae,0x3a8,0x3ae,0x3a8,0xe10,0xe0d,0x3ae,0x3a8,0xf5a,0xf57,0xf5a,0xf57,0xf5a,0xf57,
+0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,
+0xf87,0xf84,0xf87,0xf84,0x1092,0x108f,0x1092,0x108f,0x1092,0x108f,0x1092,0x108f,0x1092,0x108f,0x1092,0x108f,
+0x1092,0x108f,0x1092,0x108f,0x121b,0x1218,0x13f8,0x13f5,0x15c6,0x15c3,0x15c0,0x15bd,0x15c0,0x15bd,0x15c6,0x15c3,
+0xc,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,
+0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0xc,0xc,0x3c3,0x3b1,0x3b1,
+0x3b1,0x3b7,0x3b1,0x3b4,0x19d7,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,
+0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,
+0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3ba,0x19d7,0x3c6,0xa5c,0xc,0xc,0x158d,0x158d,0x14a6,
+0xf,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,
+0x9b4,0x9b4,0xe13,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,
+0x3c9,0x3c9,0x3c9,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0xf5d,0x3c9,0x3c9,0x3c9,0x3d8,0x3c9,
+0x3cf,0x3c9,0x3c9,0x3db,0x9b7,0xe16,0xe1c,0xe19,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,
+0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0xf,0xf,0xf,0xf,0x19da,
+0x3de,0x3de,0x3de,0x3d5,0x3d2,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+0xd2c,0xd2c,0xd2c,0xd2c,0x14a9,0x1590,0x101a,0x101a,0x101a,0x1017,0x1017,0xe22,0x8f7,0xd26,0xd23,0xd23,
+0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0x1014,0x1014,0x1014,0x1014,0x1014,0x8f4,0x1587,0x1bfc,0xe25,0x8fa,
+0x13bf,0x3ff,0x402,0x402,0x402,0x402,0x402,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x101d,0x101d,0x101d,0x101d,0x101d,
+0x8fd,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x978,0x978,0x978,0x978,0x978,
+0x978,0x978,0x978,0xbbb,0xbbb,0xbbb,0xd1a,0xd20,0xd1d,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0x13bc,
+0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x3f3,0x3f0,0x3ed,0x3ea,0xc1e,0xc1e,
+0x975,0x3ff,0x3ff,0x408,0x3ff,0x3fc,0x3fc,0x3fc,0x3fc,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3f9,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3f9,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0xa62,0xa62,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0xa62,0x402,0x3ff,0x402,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0xa62,0x3ff,0x3ff,0x3ff,0x402,
+0x996,0x3ff,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e1,0x3ea,0x3e7,0x3e7,0x3e4,0x3e4,0x3e4,
+0x3e4,0x405,0x405,0x3e4,0x3e4,0x3ea,0x3e7,0x3e7,0x3e7,0x3e4,0xd29,0xd29,0x3f6,0x3f6,0x3f6,0x3f6,
+0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0xa62,0xa62,0xa62,0xa5f,0xa5f,0xd29,0xa77,0xa77,0xa77,0xa71,
+0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa6e,0xa71,0xa6e,0x12,0xa7a,0xa74,0xa65,0xa74,0xa74,
+0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,
+0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xd2f,0xd2f,0xd2f,0xa6b,0xa6b,0xa6b,0xa6b,
+0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa68,0xa68,0xa68,0xa68,
+0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0x12,0x12,0xd2f,0xd2f,0xd2f,0xe85,0xe85,0xe85,0xe85,
+0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,
+0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,
+0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0xa80,0xa80,0xa80,0xa80,
+0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,
+0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,
+0xa80,0xa80,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xc21,0x15,0x15,
+0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xf9f,0xf9f,0xf9f,0xf9f,
+0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,
+0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,
+0xfa2,0xfa2,0xfa2,0xfa2,0xfa5,0xfa5,0xfa5,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,
+0xfa8,0xfa8,0xf99,0xf99,0xf9c,0xfae,0xfab,0xff,0xff,0x19fe,0x1a01,0x1a01,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xb94,0xb94,0xb97,0xb97,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0x1d40,0x1d40,0x1d3d,0x1d3d,0x1dd,0x1dd,0x1dd,0x1dd,
+0x1dd,0x1dd,0x1dd,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1e9,0x1e9,0x1e9,0x1e9,
+0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1311,0x1311,0x1311,0x1311,
+0x1311,0x1311,0x1311,0x1311,0x1311,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1cda,0x1cd7,0x1bf,0x1bf,
+0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1563,0x1563,0x1563,0x1563,
+0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1c59,0x1c59,0x1c59,0x1c59,
+0x1c59,0x1c59,0x1c59,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x246,0x246,0x246,0x246,
+0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1a4f,0x1a4f,0x1a4f,0x1a4f,
+0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1bc0,0x288,0x288,0x288,
+0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x183f,0x183f,0x183f,0x183f,
+0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1cc2,0x1cc2,0x1cc2,0x1cc2,
+0x29d,0x1cc2,0x1cc2,0x1cc2,0x1cc2,0x1cc2,0x1cc2,0x1cc2,0x29d,0x1cc2,0x1cc2,0x29d,0x17a3,0x17a3,0x17a3,0x17a3,
+0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1c9e,0x1c9e,0x1c9e,0x1c9e,
+0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xe7c,0xe7c,0xe79,0xe79,
+0xe79,0xe7c,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x210,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x2b8,0x2b8,0x2b8,0x2b8,
+0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x1cf5,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1b0c,0x1b0c,0x1b0c,0x1b0c,
+0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x26d,0x26d,0x26d,0x26d,0x1b0f,0x1b09,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1c92,0x1c92,0x1c92,0x1c92,
+0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1d25,0x1d25,0x1d25,0x1d25,
+0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x252,0x1a64,0x1a64,0x1a64,
+0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x270,0x270,0x270,0x270,
+0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0x95d,0x95d,3,3,3,3,3,3,3,3,
+0,0,0,0,0,0,0,0,0,0,0x9b1,0x9b1,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,0x95d,0x95d,6,6,6,6,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,0x9b1,0x9b1,
6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,0xd53,0xd53,0xd53,0xd53,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,0x14c4,0x3f0,0x3ff,0x3ff,
-0x18,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x18,0x18,0x405,0x405,0x18,0x18,0x405,
-0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x18,0x405,0x405,
-0x405,0x405,0x405,0x405,0x405,0x18,0x405,0x18,0x18,0x18,0x405,0x405,0x405,0x405,0x18,0x18,
-0x3f3,0xcb4,0x3f0,0x3ff,0x3ff,0x3f0,0x3f0,0x3f0,0x3f0,0x18,0x18,0x3ff,0x3ff,0x18,0x18,0x402,
-0x402,0x3f6,0xda7,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3f0,0x18,0x18,0x18,0x18,
-0x408,0x408,0x18,0x408,0x405,0x405,0x3f0,0x3f0,0x18,0x18,0x948,0x948,0x948,0x948,0x948,0x948,
-0x948,0x948,0x948,0x948,0x405,0x405,0x3fc,0x3fc,0x3f9,0x3f9,0x3f9,0x3f9,0x3f9,0x3fc,0x3f9,0x112b,
-0x185a,0x1857,0x18ff,0x18,0x1b,0xcb7,0x40b,0xcba,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x1b,
-0x1b,0x1b,0x1b,0x417,0x417,0x1b,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,
-0x417,0x417,0x417,0x417,0x417,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x1b,0x417,0x41a,
-0x1b,0x417,0x41a,0x1b,0x417,0x417,0x1b,0x1b,0x40e,0x1b,0x414,0x414,0x414,0x40b,0x40b,0x1b,
-0x1b,0x1b,0x1b,0x40b,0x40b,0x1b,0x1b,0x40b,0x40b,0x411,0x1b,0x1b,0x1b,0xf84,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x41a,0x41a,0x41a,0x417,0x1b,0x41a,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x40b,0x40b,0x417,0x417,
-0x417,0xf84,0x1902,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1e,0x41d,0x41d,0x426,
-0x1e,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0xcc3,0x429,0x1e,0x429,0x429,0x429,0x1e,0x429,
-0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x1e,0x429,0x429,
-0x429,0x429,0x429,0x429,0x429,0x1e,0x429,0x429,0x1e,0x429,0x429,0x429,0x429,0x429,0x1e,0x1e,
-0x420,0x429,0x426,0x426,0x426,0x41d,0x41d,0x41d,0x41d,0x41d,0x1e,0x41d,0x41d,0x426,0x1e,0x426,
-0x426,0x423,0x1e,0x1e,0x429,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x1e,0x1e,0x1e,0x1e,0x429,0xcc3,0xcbd,0xcbd,0x1e,0x1e,0x94e,0x94e,0x94e,0x94e,0x94e,0x94e,
-0x94e,0x94e,0x94e,0x94e,0x13dd,0xcc0,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x16da,0x185d,0x185d,
-0x185d,0x1860,0x1860,0x1860,0x21,0x42c,0x43b,0x43b,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
-0x441,0x21,0x21,0x441,0x441,0x21,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
-0x441,0x441,0x441,0x441,0x441,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x21,0x441,0x441,
-0x21,0xcc6,0x441,0x441,0x441,0x441,0x21,0x21,0x42f,0x441,0x42c,0x42c,0x43b,0x42c,0x42c,0x42c,
-0xf87,0x21,0x21,0x43b,0x43e,0x21,0x21,0x43e,0x43e,0x432,0x21,0x21,0x21,0x21,0x21,0x21,
-0x21,0x1a6d,0x42c,0x42c,0x21,0x21,0x21,0x21,0x444,0x444,0x21,0x441,0x441,0x441,0xf87,0xf87,
-0x21,0x21,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x435,0xcc6,0x1302,0x1302,
-0x1302,0x1302,0x1302,0x1302,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x24,0x24,0x447,0x453,
-0x24,0x453,0x453,0x453,0x453,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x24,0x453,0x453,
-0x456,0x453,0x24,0x24,0x24,0x453,0x453,0x24,0x453,0x24,0x453,0x453,0x24,0x24,0x24,0x453,
-0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x453,0x453,0x453,
-0x453,0x453,0xdaa,0x453,0x453,0x453,0x24,0x24,0x24,0x24,0x447,0x44d,0x447,0x44d,0x44d,0x24,
-0x24,0x24,0x44d,0x44d,0x44d,0x24,0x450,0x450,0x450,0x44a,0x24,0x24,0xf8a,0x24,0x24,0x24,
-0x24,0x24,0x24,0x447,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xebe,0x954,
-0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x951,0x951,0x951,0xd7a,0xcc9,0xcc9,0xcc9,0xcc9,
-0xcc9,0xccc,0xcc9,0x24,0x24,0x24,0x24,0x24,0x14c7,0x465,0x465,0x465,0x1905,0x468,0x468,0x468,
-0x468,0x468,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x468,0x468,0x468,
-0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x468,0x468,0x468,
-0x468,0x468,0x468,0x468,0x14ca,0x468,0x468,0x468,0x468,0x468,0x27,0x27,0x1b12,0xf93,0x459,0x459,
-0x459,0x465,0x465,0x465,0x465,0x27,0x459,0x459,0x45c,0x27,0x459,0x459,0x459,0x45f,0x27,0x27,
-0x27,0x27,0x27,0x27,0x27,0x459,0x459,0x27,0xf93,0xf93,0x16dd,0x27,0x27,0x1b15,0x27,0x27,
-0x468,0x468,0xf8d,0xf8d,0x27,0x27,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,
-0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x19d1,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,
-0x179d,0x14cd,0x471,0x471,0x1908,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,
-0x477,0x2a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,
-0x477,0x2a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,0x477,
-0x477,0x477,0x2a,0x2a,0xccf,0xcd2,0x471,0x46b,0x474,0x471,0x46b,0x471,0x471,0x2a,0x46b,0x474,
-0x474,0x2a,0x474,0x474,0x46b,0x46e,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x46b,0x46b,0x2a,
-0x2a,0x2a,0x2a,0x2a,0x2a,0x1b18,0x477,0x2a,0x477,0x477,0xed6,0xed6,0x2a,0x2a,0x957,0x957,
-0x957,0x957,0x957,0x957,0x957,0x957,0x957,0x957,0x2a,0xed9,0xed9,0x1bdb,0x2a,0x2a,0x2a,0x2a,
-0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x1863,0x14d0,0x483,0x483,0x1a70,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x489,0x2d,0x489,0x489,0x489,0x2d,0x489,0x489,0x489,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x483,0x47a,0x47a,0x47a,0xf96,0x2d,0x483,0x483,
-0x483,0x2d,0x486,0x486,0x486,0x47d,0x1308,0x17a0,0x2d,0x2d,0x2d,0x2d,0x17a3,0x17a3,0x17a3,0x47a,
-0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x16e0,0x489,0x489,0xf96,0xf96,0x2d,0x2d,0x480,0x480,
-0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0x17a0,0x17a0,
-0x17a0,0xf9c,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0x30,0x1a73,0xa23,0xa23,0x30,0xa29,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,
-0x30,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0x30,0xa29,0x30,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0x30,0x30,0xa1d,0x30,
-0x30,0x30,0x30,0xa1a,0xa23,0xa23,0xa1a,0xa1a,0xa1a,0x30,0xa1a,0x30,0xa23,0xa23,0xa26,0xa23,
-0xa26,0xa26,0xa26,0xa1a,0x30,0x30,0x30,0x30,0x30,0x30,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,
-0x14d3,0x14d3,0x14d3,0x14d3,0x30,0x30,0xa23,0xa23,0xa20,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
-0x30,0x30,0x30,0x30,0x33,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,
-0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,
-0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x48f,0x4a4,0x4a1,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x495,0x33,
-0x33,0x33,0x33,0x48c,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4a4,0x4a7,0x492,0x492,0x492,0x492,0x492,
-0x492,0x48f,0x492,0x498,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49b,0x49b,
-0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+0x1596,0x426,0x435,0x435,0x18,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x18,0x18,0x43e,
+0x43e,0x18,0x18,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,
+0x43e,0x18,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x18,0x43e,0x18,0x18,0x18,0x43e,0x43e,
+0x43e,0x43e,0x18,0x18,0x429,0xd35,0x426,0x435,0x435,0x426,0x426,0x426,0x426,0x18,0x18,0x435,
+0x435,0x18,0x18,0x438,0x438,0x42c,0xe2b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x426,
+0x18,0x18,0x18,0x18,0x43b,0x43b,0x18,0x43b,0x43e,0x43e,0x426,0x426,0x18,0x18,0x99c,0x99c,
+0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x43e,0x43e,0x432,0x432,0x42f,0x42f,0x42f,0x42f,
+0x42f,0x432,0x42f,0x11f1,0x1938,0x1935,0x19dd,0x18,0x1b,0xd38,0x441,0xd3b,0x1b,0x450,0x450,0x450,
+0x450,0x450,0x450,0x1b,0x1b,0x1b,0x1b,0x450,0x450,0x1b,0x1b,0x450,0x450,0x450,0x450,0x450,
+0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x1b,0x450,0x450,0x450,0x450,0x450,0x450,
+0x450,0x1b,0x450,0x44d,0x1b,0x450,0x44d,0x1b,0x450,0x450,0x1b,0x1b,0x444,0x1b,0x44a,0x44a,
+0x44a,0x441,0x441,0x1b,0x1b,0x1b,0x1b,0x441,0x441,0x1b,0x1b,0x441,0x441,0x447,0x1b,0x1b,
+0x1b,0x1026,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x44d,0x44d,0x44d,0x450,0x1b,0x44d,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,
+0x441,0x441,0x450,0x450,0x450,0x1026,0x19e0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1e,0x453,0x453,0x45c,0x1e,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0xd44,0x45f,0x1e,0x45f,
+0x45f,0x45f,0x1e,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,
+0x45f,0x1e,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x1e,0x45f,0x45f,0x1e,0x45f,0x45f,0x45f,
+0x45f,0x45f,0x1e,0x1e,0x456,0x45f,0x45c,0x45c,0x45c,0x453,0x453,0x453,0x453,0x453,0x1e,0x453,
+0x453,0x45c,0x1e,0x45c,0x45c,0x459,0x1e,0x1e,0x45f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x45f,0xd44,0xd3e,0xd3e,0x1e,0x1e,0x9a2,0x9a2,
+0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x14ac,0xd41,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x17b8,0x193b,0x193b,0x193b,0x193e,0x193e,0x193e,0x21,0x462,0x471,0x471,0x21,0x47a,0x47a,0x47a,
+0x47a,0x47a,0x47a,0x47a,0x47a,0x21,0x21,0x47a,0x47a,0x21,0x21,0x47a,0x47a,0x47a,0x47a,0x47a,
+0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x21,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,
+0x47a,0x21,0x47a,0x47a,0x21,0xd47,0x47a,0x47a,0x47a,0x47a,0x21,0x21,0x465,0x47a,0x462,0x462,
+0x471,0x462,0x462,0x462,0x1029,0x21,0x21,0x471,0x474,0x21,0x21,0x474,0x474,0x468,0x21,0x21,
+0x21,0x21,0x21,0x21,0x21,0x1b54,0x462,0x462,0x21,0x21,0x21,0x21,0x477,0x477,0x21,0x47a,
+0x47a,0x47a,0x1029,0x1029,0x21,0x21,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,
+0x46b,0xd47,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+0x24,0x24,0x47d,0x489,0x24,0x489,0x489,0x489,0x489,0x489,0x489,0x24,0x24,0x24,0x489,0x489,
+0x489,0x24,0x489,0x489,0x48c,0x489,0x24,0x24,0x24,0x489,0x489,0x24,0x489,0x24,0x489,0x489,
+0x24,0x24,0x24,0x489,0x489,0x24,0x24,0x24,0x489,0x489,0x489,0x24,0x24,0x24,0x489,0x489,
+0x489,0x489,0x489,0x489,0x489,0x489,0xe2e,0x489,0x489,0x489,0x24,0x24,0x24,0x24,0x47d,0x483,
+0x47d,0x483,0x483,0x24,0x24,0x24,0x483,0x483,0x483,0x24,0x486,0x486,0x486,0x480,0x24,0x24,
+0x102c,0x24,0x24,0x24,0x24,0x24,0x24,0x47d,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+0x24,0x24,0xf4b,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a5,0x9a5,0x9a5,0xdfb,
+0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4d,0xd4a,0x24,0x24,0x24,0x24,0x24,0x1599,0x49b,0x49b,0x49b,
+0x19e3,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x27,0x49e,0x49e,0x49e,0x27,0x49e,0x49e,
+0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x27,0x49e,0x49e,
+0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x159c,0x49e,0x49e,0x49e,0x49e,0x49e,0x27,0x27,
+0x1bff,0x1038,0x48f,0x48f,0x48f,0x49b,0x49b,0x49b,0x49b,0x27,0x48f,0x48f,0x492,0x27,0x48f,0x48f,
+0x48f,0x495,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x48f,0x48f,0x27,0x1035,0x1035,0x17bb,0x27,
+0x27,0x1c02,0x27,0x27,0x49e,0x49e,0x102f,0x102f,0x27,0x27,0x498,0x498,0x498,0x498,0x498,0x498,
+0x498,0x498,0x498,0x498,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x1ab2,0x1032,0x1032,0x1032,0x1032,
+0x1032,0x1032,0x1032,0x1032,0x187b,0x159f,0x4a7,0x4a7,0x19e6,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
+0x4b0,0x2a,0x4b0,0x4b0,0x4b0,0x2a,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
+0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x2a,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
+0x2a,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x2a,0x2a,0xd50,0xd53,0x4a7,0x4a1,0x4aa,0x4a7,0x4a1,0x4a7,
+0x4a7,0x2a,0x4a1,0x4aa,0x4aa,0x2a,0x4aa,0x4aa,0x4a1,0x4a4,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+0x2a,0x4a1,0x4a1,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x1c05,0x4ad,0x2a,0x4b0,0x4b0,0xf63,0xf63,
+0x2a,0x2a,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x2a,0xf66,0xf66,0x1cc8,
+0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x1941,0x15a2,0x4bc,0x4bc,
+0x1b57,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x2d,0x4c2,0x4c2,0x4c2,0x2d,0x4c2,0x4c2,
+0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4bc,0x4b3,0x4b3,0x4b3,
+0x103b,0x2d,0x4bc,0x4bc,0x4bc,0x2d,0x4bf,0x4bf,0x4bf,0x4b6,0x13d1,0x187e,0x2d,0x2d,0x2d,0x2d,
+0x1881,0x1881,0x1881,0x4b3,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x17be,0x4c2,0x4c2,0x103b,0x103b,
+0x2d,0x2d,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x103e,0x103e,0x103e,0x103e,
+0x103e,0x103e,0x187e,0x187e,0x187e,0x1041,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x30,0x1b5a,0xa92,0xa92,
+0x30,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa98,0xa98,0xa9b,0xa9b,0xa9b,
+0xa9b,0xa9b,0xa9b,0x30,0x30,0x30,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa98,0xa9b,
+0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0x30,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,
+0xa9b,0xa9b,0xa9b,0xa9b,0x30,0xa9b,0x30,0x30,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0x30,
+0x30,0x30,0xa89,0x30,0x30,0x30,0x30,0xa86,0xa92,0xa92,0xa86,0xa86,0xa86,0x30,0xa86,0x30,
+0xa92,0xa92,0xa95,0xa92,0xa95,0xa95,0xa95,0xa83,0x30,0x30,0x30,0x30,0x30,0x30,0x15a5,0x15a5,
+0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x30,0x30,0xa92,0xa8f,0xa8c,0x30,0x30,0x30,
+0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x33,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,
+0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,
+0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4c8,0x4dd,0x4da,0x4c8,0x4c8,0x4c8,0x4c8,
+0x4c8,0x4c8,0x4ce,0x33,0x33,0x33,0x33,0x4c5,0x4e3,0x4e3,0x4e3,0x4e3,0x4e3,0x4dd,0x4e0,0x4cb,
+0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4c8,0x4cb,0x4d1,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,
+0x4d7,0x4d7,0x4d4,0x4d4,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
-0x36,0x4b9,0x4b9,0x36,0x4b9,0x36,0x19d7,0x4b9,0x4b9,0x19d7,0x4b9,0x36,0x19d7,0x4b9,0x19d7,0x19d7,
-0x19d7,0x19d7,0x19d7,0x19d7,0x4b9,0x4b9,0x4b9,0x4b9,0x19d7,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,
-0x19d7,0x4b9,0x4b9,0x4b9,0x36,0x4b9,0x36,0x4b9,0x19d7,0x19d7,0x4b9,0x4b9,0x19d7,0x4b9,0x4b9,0x4b9,
-0x4b9,0x4ad,0x4b9,0x4b6,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x19d4,0x4ad,0x4ad,0x4b9,0x36,0x36,
-0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x36,0x4bf,0x36,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4ad,0x1bde,0x36,
-0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x36,0x36,0x4bc,0x4bc,0x13e0,0x13e0,
-0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+0x33,0x33,0x33,0x33,0x36,0x4f5,0x4f5,0x36,0x4f5,0x36,0x1ab8,0x4f5,0x4f5,0x1ab8,0x4f5,0x36,
+0x1ab8,0x4f5,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x4f5,0x4f5,0x4f5,0x4f5,0x1ab8,0x4f5,0x4f5,0x4f5,
+0x4f5,0x4f5,0x4f5,0x4f5,0x1ab8,0x4f5,0x4f5,0x4f5,0x36,0x4f5,0x36,0x4f5,0x1ab8,0x1ab8,0x4f5,0x4f5,
+0x1ab8,0x4f5,0x4f5,0x4f5,0x4f5,0x4e6,0x4f5,0x4ef,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x1ab5,0x4e6,
+0x4e6,0x4f5,0x36,0x36,0x4fb,0x4fb,0x4fb,0x4fb,0x4fb,0x36,0x4f8,0x36,0x4e9,0x4e9,0x4e9,0x4e9,
+0x4e9,0x4e6,0x1ccb,0x36,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x36,0x36,
+0x4f2,0x4f2,0x14af,0x14af,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
-0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x39,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,
-0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,
-0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99f,0xa38,0xfab,0xfab,0x39,0x39,0x39,
-0x39,0x966,0x966,0x969,0x966,0x969,0x969,0x975,0x969,0x975,0x966,0x966,0x966,0x966,0x966,0x996,
-0x966,0x969,0x96f,0x96f,0x972,0x97b,0x96c,0x96c,0x99c,0x99c,0x99c,0x99c,0x1311,0x130b,0x130b,0x130b,
-0x966,0x966,0x966,0x969,0x966,0x966,0xa2c,0x966,0x39,0x966,0x966,0x966,0x966,0x969,0x966,0x966,
-0x966,0x966,0x969,0x966,0x966,0x966,0x966,0x969,0x966,0x966,0x966,0x966,0x969,0x966,0xa2c,0xa2c,
-0xa2c,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0xa2c,0x969,0xa2c,0xa2c,0xa2c,0x39,0xa35,0xa35,
-0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa2f,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0x39,0xfa2,0xa32,
-0xdad,0xdad,0xfa5,0xfa8,0xfa2,0x112e,0x112e,0x112e,0x112e,0x130e,0x130e,0x39,0x39,0x39,0x39,0x39,
+0x36,0x36,0x36,0x36,0x9fc,0x9fc,0x9fc,0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,0x39,0x9fc,0x9fc,0x9fc,
+0x9fc,0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,
+0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9f9,0xaaa,0x1050,
+0x1050,0x39,0x39,0x39,0x39,0x9bd,0x9bd,0x9ba,0x9bd,0x9ba,0x9ba,0x9cf,0x9ba,0x9cf,0x9bd,0x9bd,
+0x9bd,0x9bd,0x9bd,0x9f3,0x9bd,0x9ba,0x9c9,0x9c9,0x9cc,0x9d5,0x9c6,0x9c6,0x9fc,0x9fc,0x9fc,0x9fc,
+0x13da,0x13d4,0x13d4,0x13d4,0x9bd,0x9bd,0x9bd,0x9ba,0x9bd,0x9bd,0xa9e,0x9bd,0x39,0x9bd,0x9bd,0x9bd,
+0x9bd,0x9ba,0x9bd,0x9bd,0x9bd,0x9bd,0x9ba,0x9bd,0x9bd,0x9bd,0x9bd,0x9ba,0x9bd,0x9bd,0x9bd,0x9bd,
+0x9ba,0x9bd,0xa9e,0xa9e,0xa9e,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0xa9e,0x9ba,0xa9e,0xa9e,
+0xa9e,0x39,0xaa7,0xaa7,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa1,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,
+0xaa4,0x39,0x1047,0xaa4,0xe31,0xe31,0x104a,0x104d,0x1047,0x11f4,0x11f4,0x11f4,0x11f4,0x13d7,0x13d7,0x39,
0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
-0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x4c8,0x4c8,0x4c8,0x4c8,
-0x4c8,0x4c8,0x3c,0x13e6,0x3c,0x3c,0x3c,0x3c,0x3c,0x13e6,0x3c,0x3c,0x4c5,0x4c5,0x4c5,0x4c5,
-0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0x3f,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
-0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,
-0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0x1314,0x1314,0xdb6,
-0xdb9,0xa5c,0xa65,0xa59,0xa59,0xa59,0xa59,0xa65,0xa65,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,
-0xa5f,0xa5f,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0x3f,0x3f,0x3f,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa68,0xa68,0xa68,0xa68,0xa68,0x16e6,0x42,0x42,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x42,0x42,
-0xa7a,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,
-0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa77,0xa74,0x45,0x45,0x45,
-0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa80,0xa80,0xa80,0xa83,0xa83,
-0xa83,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
-0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xa86,0xaa4,0xaa4,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa8c,0xa89,0xaad,0xaad,0xa9e,0xaa7,0xa95,0xa92,0xa9b,0xa98,0xaa7,0xcd5,0x4b,0x4b,
-0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
-0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
-0xab9,0xab9,0xb31,0xb34,0xabf,0xb2e,0xabc,0xab9,0xac2,0xad1,0xac5,0xad4,0xad4,0xad4,0xab0,0x1b1b,
-0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0x190b,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xab3,0xfc9,0x4e,0x4e,0x4e,0x4e,0x4e,
-0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x51,0x51,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x4e9,0x51,0x4e9,0x51,0x4e9,0x51,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e0,0x4e6,0x4e0,
-0x4e0,0x4dd,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4dd,0x4dd,0x4dd,
-0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x51,0x4dd,0x4dd,0x4dd,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4dd,0x4dd,0x4dd,
-0x51,0x51,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e3,0x4e0,0x51,
-0xba9,0xbac,0xbac,0xbac,0xfd2,0x54,0x14b2,0x14b2,0x14b2,0x14b2,0x4f2,0x4f2,0x4f2,0x4f2,0x4f2,0x4f2,
-0x53d,0xbbe,0x57,0x57,0x6d8,0x53d,0x53d,0x53d,0x53d,0x53d,0x543,0x555,0x543,0x54f,0x549,0x6db,
-0x53a,0x6d5,0x6d5,0x6d5,0x6d5,0x53a,0x53a,0x53a,0x53a,0x53a,0x540,0x552,0x540,0x54c,0x546,0x57,
-0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x57,0x57,0x57,
-0x1b1e,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
-0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x561,0x561,0x561,
-0x561,0x564,0xae0,0xae0,0xbc4,0xbca,0xbca,0xbc7,0xbc7,0xbc7,0xbc7,0xdcb,0xedc,0xedc,0xedc,0xedc,
-0x1119,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
-0x594,0x594,0x594,0xae9,0xee5,0xfd8,0xfd8,0xfd8,0xfd8,0x1275,0x16ec,0x16ec,0x60,0x60,0x60,0x60,
-0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x5a0,0x5a0,0x59d,0x59d,0x59d,0x59d,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0xaf2,0xaf2,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+0x501,0x501,0x501,0x501,0x501,0x501,0x3c,0x14b5,0x3c,0x3c,0x3c,0x3c,0x3c,0x14b5,0x3c,0x3c,
+0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0x3f,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xe40,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0x3f,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xe40,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0x3f,0xad4,0xad4,
+0xad4,0xad4,0x3f,0x3f,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0x3f,
+0x3f,0x13dd,0x13dd,0xe3a,0xe3d,0xace,0xad7,0xacb,0xacb,0xacb,0xacb,0xad7,0xad7,0xad1,0xad1,0xad1,
+0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,
+0xac8,0x3f,0x3f,0x3f,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,
+0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0x17c4,0x42,0x42,0x17c1,0x17c1,0x17c1,0x17c1,
+0x17c1,0x17c1,0x42,0x42,0xaec,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
+0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xae9,
+0xae6,0x45,0x45,0x45,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf2,
+0xaf2,0xaf2,0xaf5,0xaf5,0xaf5,0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x48,0x48,0x48,
+0x48,0x48,0x48,0x48,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xaf8,0xb1f,0xb1f,0xb04,0xb04,0xb04,
+0xb04,0xb04,0xafe,0xafe,0xb04,0xb01,0xb07,0xafb,0xb2b,0xb2b,0xb19,0xb25,0xb13,0xb0d,0xb16,0xb10,
+0xb25,0xd56,0x4b,0x4b,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0x4b,0x4b,
+0x4b,0x4b,0x4b,0x4b,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0x4b,0x4b,
+0x4b,0x4b,0x4b,0x4b,0xb37,0xb37,0xbaf,0xbb2,0xb3d,0xbac,0xb3a,0xb37,0xb40,0xb4f,0xb43,0xb52,
+0xb52,0xb52,0xb2e,0x1c08,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0x4e,0x4e,
+0x4e,0x4e,0x4e,0x4e,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0x19e9,0x4e,0x4e,0x4e,
+0x4e,0x4e,0x4e,0x4e,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb31,0x106e,0x4e,
+0x4e,0x4e,0x4e,0x4e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
+0x124e,0x124e,0x124e,0x124e,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,
+0x52b,0x52b,0x52b,0x52b,0x528,0x528,0x528,0x528,0x528,0x528,0x51,0x51,0x52b,0x52b,0x52b,0x52b,
+0x52b,0x52b,0x51,0x51,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x51,0x52b,0x51,0x52b,
+0x51,0x52b,0x51,0x52b,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,
+0x52b,0x52b,0x52b,0x52b,0x528,0x522,0x528,0x522,0x528,0x522,0x528,0x522,0x528,0x522,0x528,0x522,
+0x528,0x522,0x51,0x51,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,
+0x52b,0x52b,0x52b,0x52b,0x528,0x528,0x528,0x528,0x528,0x51,0x528,0x528,0x52b,0x52b,0x52b,0x525,
+0x52b,0x51c,0x522,0x51c,0x51c,0x519,0x528,0x528,0x528,0x51,0x528,0x528,0x52b,0x525,0x52b,0x525,
+0x52b,0x519,0x519,0x519,0x528,0x528,0x528,0x522,0x51,0x51,0x528,0x528,0x52b,0x52b,0x52b,0x525,
+0x51,0x519,0x519,0x519,0x528,0x528,0x528,0x522,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x525,
+0x52b,0x519,0x519,0x519,0x51,0x51,0x528,0x528,0x528,0x51,0x528,0x528,0x52b,0x525,0x52b,0x525,
+0x52b,0x51f,0x51c,0x51,0xc27,0xc2a,0xc2a,0xc2a,0x107a,0x54,0x1584,0x1584,0x1584,0x1584,0x534,0x534,
+0x534,0x534,0x534,0x534,0x57f,0xc3c,0x57,0x57,0x726,0x57f,0x57f,0x57f,0x57f,0x57f,0x585,0x597,
+0x585,0x591,0x58b,0x729,0x57c,0x723,0x723,0x723,0x723,0x57c,0x57c,0x57c,0x57c,0x57c,0x582,0x594,
+0x582,0x58e,0x588,0x57,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,
+0x13e0,0x57,0x57,0x57,0x1c0b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+0x5a,0x5a,0x5a,0x5a,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,
+0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0xb5e,0xb5e,0xc42,0xc48,0xc48,0xc45,0xc45,0xc45,0xc45,0xe52,
+0xf69,0xf69,0xf69,0xf69,0x11df,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+0x5d,0x5d,0x5d,0x5d,0x5d6,0x5d6,0x5d6,0xb67,0xf72,0x1080,0x1080,0x1080,0x1080,0x133e,0x17ca,0x17ca,
+0x60,0x60,0x60,0x60,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x5e5,0x5e5,
+0x5e2,0x5e2,0x5e2,0x5e2,0x606,0x606,0x606,0x606,0x606,0xb70,0xb70,0x63,0x63,0x63,0x63,0x63,
0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
-0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x66,0x66,0x66,0x66,0x66,
+0x63,0x63,0x63,0x63,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x66,
0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0x69,0xb0d,0xb0d,0xb0d,0xb0d,0xb10,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb10,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
-0x6f,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81f,0x81c,0x81f,0x81c,
-0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,
-0x81c,0x81c,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x822,0x81c,
-0x81c,0x81c,0x81c,0x81c,0x81f,0xc63,0xc63,0x6f,0x6f,0x936,0x936,0x8fd,0x8fd,0x825,0x828,0xc60,
-0x72,0x72,0x72,0x72,0x72,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,
-0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,
-0x83a,0x1107,0x18d2,0x19bc,0x75,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x75,0x906,0x906,0x909,0x909,0x909,0x909,0x909,0x909,
-0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
-0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
-0x846,0x846,0x846,0x846,0x846,0xd5f,0xd5f,0x78,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb25,0xb25,0x7b,0x7b,0x7b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
-0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0x7e,
-0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,
-0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x9c0,0x9c0,0x9c0,0x9c0,0x81,0x81,0x81,0x81,
-0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,
-0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x84,
-0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,
-0x84,0x84,0x84,0x84,0x84,0xafe,0x5fa,0x600,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,
-0x606,0x5fd,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x84,
-0x600,0x600,0x600,0x600,0x600,0x84,0x600,0x84,0x600,0x600,0x84,0x600,0x600,0x84,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x603,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x1329,0x1329,0x1b21,0x87,0x87,0x87,0x87,0x87,
-0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x615,0x60f,0x612,0x618,0x615,
-0x60f,0x615,0x60f,0x615,0x60f,0x615,0x615,0x60f,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x612,0x60f,
-0x612,0x612,0x612,0x60f,0x612,0x612,0x612,0x612,0x87,0x87,0x612,0x612,0x612,0x612,0x60f,0x60f,
-0x612,0x60f,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x60f,0x60f,
-0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x1b21,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
-0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0x85e,0x870,0x86d,0x870,0x86d,0xc81,0xc81,0xd6b,
-0xd68,0x861,0x861,0x861,0x861,0x873,0x873,0x873,0x88b,0x88e,0x89d,0x8a,0x891,0x894,0x8a0,0x8a0,
-0x888,0x87f,0x879,0x87f,0x879,0x87f,0x879,0x87c,0x87c,0x897,0x897,0x89a,0x897,0x897,0x897,0x8a,
-0x897,0x885,0x882,0x87c,0x8a,0x8a,0x8a,0x8a,0x621,0x62d,0x621,0xbfd,0x621,0x8d,0x621,0x62d,
-0x621,0x62d,0x621,0x62d,0x621,0x62d,0x621,0x62d,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,
-0x624,0x62a,0x624,0x62a,0x624,0x8d,0x8d,0x61e,0x75f,0x762,0x777,0x77a,0x759,0x762,0x762,0x93,
-0x741,0x744,0x744,0x744,0x744,0x741,0x741,0x93,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
-0x90,0xb01,0xb01,0xb01,0x9c3,0x73b,0x630,0x630,0x93,0x789,0x768,0x759,0x762,0x75f,0x759,0x76b,
-0x75c,0x756,0x759,0x777,0x76e,0x765,0x786,0x759,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,
-0x783,0x783,0x774,0x771,0x777,0x777,0x777,0x789,0x74a,0x747,0x747,0x747,0x747,0x747,0x747,0x747,
-0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,
-0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x93,0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,
-0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,
-0x93,0x93,0x747,0x747,0x747,0x93,0x93,0x93,0xb4c,0xb4c,0xb4c,0xb4c,0x96,0x96,0x96,0x96,
-0x96,0x96,0x96,0x96,0x96,0x186f,0x186f,0x186f,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,
-0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0x99,0x99,0x99,0x99,0x99,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0x9f,0x9f,0xfe4,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x1b24,0x1b24,0x9f,0x9f,0x9f,0x9f,0x9f,
+0x66,0x66,0x66,0x66,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0x69,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8e,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8e,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+0x69,0x69,0x69,0x69,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
+0x6c,0x6c,0x6c,0x6c,0x6f,0x873,0x86d,0x873,0x86d,0x873,0x86d,0x873,0x86d,0x873,0x86d,0x86d,
+0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,
+0x870,0x86d,0x870,0x86d,0x86d,0x86d,0x86d,0x873,0x86d,0x873,0x86d,0x873,0x86d,0x86d,0x86d,0x86d,
+0x86d,0x86d,0x873,0x86d,0x86d,0x86d,0x86d,0x86d,0x870,0xce1,0xce1,0x6f,0x6f,0x98a,0x98a,0x951,
+0x951,0x876,0x879,0xcde,0x72,0x72,0x72,0x72,0x72,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,
+0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,
+0x88b,0x88b,0x88b,0x88b,0x88b,0x11cd,0x19b0,0x1a9d,0x75,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x75,0x95a,0x95a,0x95d,0x95d,
+0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x897,0x897,0x897,0x897,
+0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,
+0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0xde0,0xde0,0x78,0xba3,0xba3,0xba3,0xba3,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0x7b,0x7b,0x7b,0xba9,0xba9,0xba9,0xba9,
+0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xcea,0xba9,0xba9,
+0xba9,0xcea,0xba9,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x1275,0x1275,0x1275,0x1275,
+0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0xa1d,0xa1d,0xa1d,0xa1d,
+0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x12ea,0x12ea,0x12ea,0x12ea,
+0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x64e,0x64e,0x64e,0x64e,
+0x64e,0x64e,0x64e,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x63c,
+0x63c,0x63c,0x63c,0x63c,0x84,0x84,0x84,0x84,0x84,0xb7c,0x63f,0x645,0x64b,0x64b,0x64b,0x64b,
+0x64b,0x64b,0x64b,0x64b,0x64b,0x642,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,
+0x645,0x645,0x645,0x84,0x645,0x645,0x645,0x645,0x645,0x84,0x645,0x84,0x645,0x645,0x84,0x645,
+0x645,0x84,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x648,0x65a,0x654,0x65a,0x654,
+0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x13f2,0x13f2,0x1c0e,0x87,
+0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x65a,
+0x654,0x657,0x65d,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x65a,0x654,0x654,0x654,0x654,0x657,
+0x654,0x654,0x657,0x654,0x657,0x657,0x657,0x654,0x657,0x657,0x657,0x657,0x87,0x87,0x657,0x657,
+0x657,0x657,0x654,0x654,0x657,0x654,0x654,0x654,0x654,0x657,0x654,0x654,0x654,0x654,0x654,0x657,
+0x657,0x657,0x654,0x654,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x1c0e,0xbc7,0xbc7,0xbc7,0xbc7,
+0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0x8af,0x8c1,0x8be,0x8c1,
+0x8be,0xcff,0xcff,0xdec,0xde9,0x8b2,0x8b2,0x8b2,0x8b2,0x8c4,0x8c4,0x8c4,0x8dc,0x8df,0x8ee,0x8a,
+0x8e2,0x8e5,0x8f1,0x8f1,0x8d9,0x8d0,0x8ca,0x8d0,0x8ca,0x8d0,0x8ca,0x8cd,0x8cd,0x8e8,0x8e8,0x8eb,
+0x8e8,0x8e8,0x8e8,0x8a,0x8e8,0x8d6,0x8d3,0x8cd,0x8a,0x8a,0x8a,0x8a,0x666,0x672,0x666,0xc7b,
+0x666,0x8d,0x666,0x672,0x666,0x672,0x666,0x672,0x666,0x672,0x666,0x672,0x672,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x8d,0x8d,0x663,0x7ad,0x7b0,0x7c5,0x7c8,
+0x7a7,0x7b0,0x7b0,0x93,0x78f,0x792,0x792,0x792,0x792,0x78f,0x78f,0x93,0x90,0x90,0x90,0x90,
+0x90,0x90,0x90,0x90,0x90,0xb7f,0xb7f,0xb7f,0xa20,0x789,0x675,0x675,0x93,0x7d7,0x7b6,0x7a7,
+0x7b0,0x7ad,0x7a7,0x7b9,0x7aa,0x7a4,0x7a7,0x7c5,0x7bc,0x7b3,0x7d4,0x7a7,0x7d1,0x7d1,0x7d1,0x7d1,
+0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7c2,0x7bf,0x7c5,0x7c5,0x7c5,0x7d7,0x798,0x795,0x795,0x795,
+0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,
+0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x93,0x93,0x93,0x795,0x795,
+0x795,0x795,0x795,0x795,0x93,0x93,0x795,0x795,0x795,0x795,0x795,0x795,0x93,0x93,0x795,0x795,
+0x795,0x795,0x795,0x795,0x93,0x93,0x795,0x795,0x795,0x93,0x93,0x93,0xbca,0xbca,0xbca,0xbca,
+0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x194d,0x194d,0x194d,0xbd0,0xbd0,0xbd0,0xbd0,
+0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0x99,
+0x99,0x99,0x99,0x99,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,
+0x1713,0x1713,0x1713,0x1713,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,
+0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+0x9c,0x9c,0x9c,0x9c,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0x9f,0x9f,0x108c,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x1c11,0x1c11,0x9f,
0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xa2,0xb7f,0xb7f,
-0xa2,0xa2,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb7c,0xa2,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,
-0xb7c,0xcf3,0xb7c,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xa2,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xddd,0xddd,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb76,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xef4,0xef1,0xa2,0xa2,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xa5,0xb85,0xa5,0xa5,
+0x9f,0x9f,0x9f,0x9f,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfd,0xa2,0xbfd,0xbfd,0xa2,0xa2,0xbfd,0xa2,0xa2,0xbfd,0xbfd,0xa2,0xa2,0xbfd,0xbfd,0xbfd,
+0xbfd,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfa,0xbfa,0xbfa,0xbfa,0xa2,0xbfa,
+0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xd74,0xbfa,0xbfa,0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xa2,
+0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xa2,0xbfd,
+0xbfd,0xbfd,0xbfd,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xa2,0xbfd,0xa2,0xa2,0xa2,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xe64,0xe64,0xa2,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfa,0xbfa,0xbfa,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xf81,0xf7e,0xa2,0xa2,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xa5,0xc03,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,
0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,
-0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xc0c,0xc0c,0xc0c,0xc0c,
-0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0x1b2a,0xc0c,0xc0c,0xc0c,0xc0c,0xc06,0xc06,
-0xc09,0x1b27,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x1b2a,0xc15,0xc15,0xc15,0xc15,
-0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc0f,0xc0f,
-0xc12,0xc75,0xc75,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xc1b,0xc1b,0xc1b,0xc1b,
-0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc18,0xc18,
-0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xc21,0xc21,0xc21,0xc21,
-0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xb1,0xc21,0xc21,0xc21,0xb1,0xc1e,0xc1e,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd05,0xd05,0xd05,0xd05,
-0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,
-0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0x14f1,0x14f1,0xb4,0xcf6,0xcf6,0xcf6,0xd02,
-0xd02,0xd02,0xd02,0xcf6,0xcf6,0xd02,0xd02,0xd02,0xb4,0xb4,0xb4,0xb4,0xd02,0xd02,0xcf6,0xd02,
-0xd02,0xd02,0xd02,0xd02,0xd02,0xcf9,0xcf9,0xcf9,0xb4,0xb4,0xb4,0xb4,0xcfc,0xb4,0xb4,0xb4,
-0xd08,0xd08,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xd0b,0xd0b,0xd0b,0xd0b,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xb7,0xb7,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0xba,0xba,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0xba,0x1a76,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xbd,
-0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xbd,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
+0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0x1c17,0xc8a,0xc8a,
+0xc8a,0xc8a,0xc84,0xc84,0xc87,0x1c14,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x1c17,
+0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,
+0xc93,0xc93,0xc8d,0xc8d,0xc90,0xcf3,0xcf3,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,
+0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,
+0xc99,0xc99,0xc96,0xc96,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xb1,0xc9f,0xc9f,
+0xc9f,0xb1,0xc9c,0xc9c,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,
+0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0x15c9,0x15c9,0xb4,
+0xd77,0xd77,0xd77,0xd83,0xd83,0xd83,0xd83,0xd77,0xd77,0xd83,0xd83,0xd83,0xb4,0xb4,0xb4,0xb4,
+0xd83,0xd83,0xd77,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd7a,0xd7a,0xd7a,0xb4,0xb4,0xb4,0xb4,
+0xd7d,0xb4,0xb4,0xb4,0xd89,0xd89,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,
+0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,
+0xd8c,0xd8c,0xb7,0xb7,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,
+0xb7,0xb7,0xb7,0xb7,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0xba,0xba,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0xba,0x1b5d,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xbd,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xbd,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xbd,0xdb0,0xdb0,0xbd,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xbd,0xbd,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
-0xbd,0xbd,0xbd,0xbd,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
-0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xc0,
-0xc0,0xc0,0xc0,0xc0,0xd71,0xd71,0xd77,0xc3,0xc3,0xc3,0xc3,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,
-0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,
-0xd6e,0xd6e,0xd6e,0xd6e,0xc3,0xc3,0xc3,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,
-0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,
-0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xc6,0xd35,
-0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,
-0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xc9,0xc9,
-0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
-0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
-0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xcc,0xcc,0xd44,0xcc,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
-0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
-0xd44,0xd44,0xcc,0xd44,0xd44,0xcc,0xcc,0xcc,0xd44,0xcc,0xcc,0xd44,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0x14f7,0x14f7,0x17a9,0x17a9,0xd5,0x10e6,0x10e6,0x10e6,0x10e6,
-0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x1a85,0x126,0x126,0x126,0xe0a,0xe0a,0xe0a,0xe0a,
-0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,
-0xe0a,0xe0a,0xe0a,0xe01,0xe01,0xe07,0xe07,0xe01,0xd8,0xd8,0xe04,0xe04,0x1113,0x1113,0x1113,0x1113,
-0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0x1c56,0xc72,0xc72,0xc72,0xc72,
-0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xe1c,0xe19,0xe1c,0xe19,
-0xe19,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0x1161,0x115e,0x1161,0x115e,0x115b,0x115b,0x115b,0x13ef,0x13ec,
-0xde,0xde,0xde,0xde,0xde,0xe16,0xe13,0xe13,0xe13,0xe10,0xe16,0xe13,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1,0xe25,0xe25,0xe25,0xe25,
-0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe22,0xe22,0xe22,0xe22,
-0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe7,0x13f2,0xe7,0xe7,0xe7,0xe7,0xe7,0x13f2,0xe7,0xe7,0xe7f,0xe7f,0xe7f,0xe7f,
-0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe40,0xe34,0xe34,0xe34,
-0xea,0xe34,0xe34,0xea,0xea,0xea,0xea,0xea,0xe34,0xe34,0xe34,0xe34,0xe40,0xe40,0xe40,0xe40,
-0xea,0xe40,0xe40,0xe40,0xea,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,
-0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0x1914,0x1914,0xea,0xea,
-0xe31,0xe31,0xe31,0xea,0xea,0xea,0xea,0xe37,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,
-0x1911,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe43,0xe43,
-0xe3a,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0x1167,0x1167,0xed,0xed,0xed,0xed,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe52,0xe52,0xe52,
-0xe4f,0xe4f,0xe52,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xed,0xed,
-0xed,0xed,0xed,0xed,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0x1164,0xed,
-0xed,0xed,0xe49,0xe49,0xe58,0xe58,0xe58,0xe58,0xf0,0xf0,0xf0,0xf0,0xe58,0xe58,0xe58,0xe58,
-0xe58,0xe58,0xe58,0xe58,0xe55,0xe58,0xe58,0xe58,0xe58,0xe58,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
-0xf0,0xf0,0xf0,0xf0,0x1506,0x150c,0x1509,0x1854,0x17af,0x1878,0x1878,0x1878,0x1878,0x1878,0x191a,0x1917,
-0x191d,0x1917,0x191d,0x19dd,0x1a79,0x1a79,0x1a79,0x1b3c,0x1b3c,0x1b36,0x1b33,0x1b36,0x1b33,0x1b36,0x1b33,0x1b36,
-0x1b33,0x1b39,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
+0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,
+0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,
+0xdb3,0xdb3,0xdb3,0xc0,0xc0,0xc0,0xc0,0xc0,0xdf2,0xdf2,0xdf8,0xc3,0xc3,0xc3,0xc3,0xdef,
+0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,
+0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xc3,0xc3,0xc3,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
+0xdf5,0xdf5,0xdf5,0xdf5,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,
+0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,
+0xdb9,0xdb9,0xc6,0xdb6,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,
+0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,
+0xdc2,0xdc2,0xc9,0xc9,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xc9,0xc9,
+0xc9,0xc9,0xc9,0xc9,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,
+0x1911,0x1911,0x1911,0x1911,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xcc,0xcc,0xdc5,0xcc,0xdc5,0xdc5,
+0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,
+0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xcc,0xdc5,0xdc5,0xcc,0xcc,0xcc,0xdc5,0xcc,0xcc,0xdc5,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,
+0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0x15cf,0x15cf,0x1887,0x1887,0xd5,
+0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x1b72,0x126,0x126,0x126,
+0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,
+0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe88,0xe88,0xe8e,0xe8e,0xe88,0xd8,0xd8,0xe8b,0xe8b,
+0x11d9,0x11d9,0x11d9,0x11d9,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0x1d43,
+0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,
+0xea3,0xea0,0xea3,0xea0,0xea0,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0x122a,0x1227,0x122a,0x1227,0x1221,
+0x1224,0x1224,0x14be,0x14bb,0xde,0xde,0xde,0xde,0xde,0xe9d,0xe9a,0xe9a,0xe9a,0xe97,0xe9d,0xe9a,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,
+0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,
+0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,
+0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xe7,0x14c1,0xe7,0xe7,0xe7,0xe7,0xe7,0x14c1,0xe7,0xe7,
+0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
+0xec7,0xebb,0xebb,0xebb,0xea,0xebb,0xebb,0xea,0xea,0xea,0xea,0xea,0xebb,0xebb,0xebb,0xebb,
+0xec7,0xec7,0xec7,0xec7,0xea,0xec7,0xec7,0xec7,0xea,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,
+0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,
+0x19f2,0x19f2,0xea,0xea,0xeb8,0xeb8,0xeb8,0xea,0xea,0xea,0xea,0xebe,0xec1,0xec1,0xec1,0xec1,
+0xec1,0xec1,0xec1,0xec1,0x19ef,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xec4,0xec4,0xec4,0xec4,
+0xec4,0xec4,0xeca,0xeca,0xec1,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xed6,0xed6,0xed6,0xed6,
+0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0x1230,0x1230,0xed,0xed,0xed,0xed,0xed6,0xed6,0xed6,0xed6,
+0xed6,0xed9,0xed9,0xed9,0xed6,0xed6,0xed9,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,
+0xed6,0xed6,0xed,0xed,0xed,0xed,0xed,0xed,0xed3,0xed3,0xed3,0xed3,0xed3,0xed3,0xed3,0xed3,
+0xed3,0xed3,0x122d,0xed,0xed,0xed,0xed0,0xed0,0xedf,0xedf,0xedf,0xedf,0xf0,0xf0,0xf0,0xf0,
+0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedc,0xedf,0xedf,0xedf,0xedf,0xedf,0xf0,0xf0,
+0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x15de,0x15e4,0x15e1,0x1932,0x188d,0x1956,0x1956,0x1956,
+0x1956,0x1956,0x19f8,0x19f5,0x19fb,0x19f5,0x19fb,0x1abe,0x1b60,0x1b60,0x1b60,0x1c29,0x1c29,0x1c23,0x1c20,0x1c23,
+0x1c20,0x1c23,0x1c20,0x1c23,0x1c20,0x1c26,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
-0xf3,0xf3,0xf3,0xf3,0xe7c,0xe7c,0xe7c,0xe79,0xe79,0xe70,0xe70,0xe79,0xe76,0xe76,0xe76,0xe76,
-0x1a7c,0xf6,0xf6,0xf6,0x12cc,0x12cc,0x12cc,0x12cf,0x12cf,0x12cf,0x12d2,0x12d2,0x12d5,0x12d2,0x14a,0x14a,
-0x14a,0x14a,0x14a,0x14a,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0x13fe,0x13fe,0xf9,0xf9,0xf9,0xf9,
-0xf9,0xf9,0xf9,0xe82,0x133b,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
-0xf9,0xf9,0xf9,0x1338,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
-0xc45,0xc45,0xc45,0xc45,0xeaf,0xea0,0xe9a,0xeac,0xea9,0xea3,0xea3,0xeb2,0xe9d,0xea6,0xfc,0xfc,
-0xfc,0xfc,0xfc,0xfc,0xf36,0xf36,0xf21,0xf36,0xf39,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,
-0x1b3f,0x102,0x102,0x102,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf42,0xf42,
-0xf2a,0xf2d,0xf42,0xf42,0xf27,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf24,
-0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,
-0xf2a,0x1b42,0x1b42,0x102,0x1b4b,0x1b45,0x19e3,0x19e0,0x19e3,0x19e3,0x19e3,0x1a82,0x1a7f,0x1a82,0x1a7f,0x105,
-0x105,0x105,0x105,0x105,0x1b4b,0x1b45,0x105,0x1b45,0x105,0x1b45,0x1b4b,0x1b45,0x1b4b,0x1b45,0x105,0x105,
-0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
-0x105,0x105,0x1b48,0x1b48,0x1b48,0x1a82,0x1a7f,0x1515,0x1407,0x1407,0x133e,0x103e,0x103e,0x103e,0x103e,0x103e,
-0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
-0xf51,0xf51,0xf51,0xf51,0xf4e,0xf4e,0xf54,0xf54,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,
-0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,
-0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf57,0xf57,0xf57,0xf57,0x1170,0x1170,0x10b,0x10b,0x10b,0xf5a,
-0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,
-0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x1701,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,
+0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf06,0xf06,0xf06,0xf03,0xf03,0xefa,0xefa,0xf03,
+0xf00,0xf00,0xf00,0xf00,0x1b63,0xf6,0xf6,0xf6,0x1395,0x1395,0x1395,0x1398,0x1398,0x1398,0x139b,0x139b,
+0x139e,0x139b,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0x14d0,0x14d0,
+0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf0c,0x1404,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
+0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0x1401,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,
+0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xf3c,0xf2d,0xf27,0xf39,0xf36,0xf30,0xf30,0xf3f,
+0xf2a,0xf33,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc9,0xfc9,0xfb1,0xfc9,0xfcc,0xfcf,0xfcf,0xfcf,
+0xfcf,0xfcf,0xfcf,0xfcf,0x1c2c,0x102,0x102,0x102,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,
+0xfc3,0xfc3,0xfd5,0xfd5,0xfbd,0xfc0,0xfd5,0xfd5,0xfba,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,
+0xfbd,0xfbd,0xfbd,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfbd,0xfbd,0xfbd,0xfbd,
+0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0x1c2f,0x1c2f,0x102,0x1c38,0x1c35,0x1aca,0x1ac7,0x1aca,0x1aca,0x1aca,0x1b6f,
+0x1b6c,0x1b6f,0x1b6c,0x105,0x105,0x105,0x105,0x105,0x1c38,0x1c35,0x105,0x1c35,0x105,0x1c35,0x1c38,0x1c35,
+0x1c38,0x1c35,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
+0x105,0x105,0x105,0x105,0x105,0x105,0x1c32,0x1c32,0x1c32,0x1b69,0x1b66,0x15ed,0x14d9,0x14d9,0x140d,0x10ef,
+0x10ef,0x10ef,0x10ef,0x10ef,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,
+0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xfed,0xfed,0xff3,0xff3,0x108,0x108,0x108,0x108,
+0x108,0x108,0x108,0x108,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,
+0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xff6,0xff6,0xff6,0xff6,0x1239,0x1239,
+0x10b,0x10b,0x10b,0xff9,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,
+0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x17df,0x10e,0x10e,
0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,
-0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0xf66,0xf66,0xf66,0x1521,
-0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x111,0xf63,0xf63,0xf63,0xf63,
-0x151e,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0xf69,0xf69,0xf69,0xf69,
-0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0x192c,0x192c,
-0x192c,0x192c,0x192c,0x192c,0x192c,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x1065,0x1065,0x1065,0x1065,
-0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,
-0x1062,0x1062,0x1059,0x1056,0x117,0x117,0x117,0x1068,0x1068,0x105c,0x105c,0x105c,0x105f,0x105f,0x105f,0x105f,
-0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,0x117,0x117,0x117,0x1065,0x1065,0x1065,0x106b,0x106b,0x106b,0x106b,
-0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x1080,0x1080,0x1080,0x1080,
-0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1083,0x1083,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,
-0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x10aa,0x10aa,0x10aa,0x10aa,
-0x10a4,0x17b5,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x10b0,0x10b0,0x10a7,0x10a7,0x10a7,0x10a7,
-0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x10ce,0x10ce,0x10ce,0x10ce,
-0x10ce,0x10ce,0x10ce,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c8,0x10cb,
-0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x10c5,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10da,0x10da,0x10d1,0x10d1,0x10da,
-0x10da,0x10d1,0x10d1,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x10dd,0x10dd,0x10dd,0x10d1,
-0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10d1,0x10da,0x123,0x123,0x10d7,0x10d7,0x10d7,0x10d7,
-0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x123,0x123,0x10d4,0x10e3,0x10e3,0x10e3,0x152d,0x126,0x126,0x126,
+0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,
+0x1005,0x1005,0x1005,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x111,
+0x1002,0x1002,0x1002,0x1002,0x15f6,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,
+0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,
+0x1008,0x1008,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x114,0x114,0x114,0x114,0x114,0x114,0x114,
+0x1125,0x1125,0x1125,0x1125,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1113,0x1113,0x1113,0x1113,
+0x1113,0x1113,0x1113,0x1113,0x1122,0x1122,0x1119,0x1116,0x117,0x117,0x117,0x1128,0x1128,0x111c,0x111c,0x111c,
+0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x117,0x117,0x117,0x1125,0x1125,0x1125,
+0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,
+0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1146,0x1146,0x11a,0x11a,0x11a,0x11a,
+0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,
+0x1170,0x1170,0x1170,0x1170,0x116a,0x1893,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x1176,0x1176,
+0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,
+0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,
+0x1188,0x1188,0x118e,0x1191,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x118b,
+0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x11a0,
+0x11a0,0x1197,0x1197,0x11a0,0x11a0,0x1197,0x1197,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,
+0x11a3,0x11a3,0x11a3,0x1197,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x1197,0x11a0,0x123,0x123,
+0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x123,0x123,0x119a,0x11a9,0x11a9,0x11a9,
+0x1605,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,
0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,
-0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x10e9,0x10e9,0x10e9,0x10e9,
-0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,
-0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10ec,0x129,0x129,0x10ef,0x10ef,0x10ef,0x10ef,
-0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,
-0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x12c,0x12c,0x12c,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x12f,0x12f,0x12f,
-0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x10f8,0x10f8,0x10f8,0x10f8,
-0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,
-0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x132,0x132,0x132,0x132,0x132,0x10f5,0x10fb,0x10fb,0x10fb,0x10fb,
-0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x135,0x135,0x135,0x135,0x10fe,0x10fe,0x10fe,0x10fe,
-0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,
-0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x1176,0x1176,0x1176,0x1176,
-0x117f,0x1176,0x1176,0x1176,0x117f,0x1176,0x1176,0x1176,0x1176,0x1173,0x13b,0x13b,0x117c,0x117c,0x117c,0x117c,
-0x117c,0x117c,0x117c,0x1182,0x117c,0x1182,0x117c,0x117c,0x117c,0x1182,0x1182,0x13b,0x1185,0x1185,0x1185,0x1185,
-0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
-0x1185,0x1185,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x119d,0x1188,0x119d,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x141,0x1191,0x119a,0x1188,0x119a,
-0x119a,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x1188,
-0x1188,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x141,0x141,0x118b,0x1197,0x1197,0x1197,0x1197,
-0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x141,0x141,0x141,0x141,0x141,0x141,0x1197,0x1197,0x1197,0x1197,
-0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x141,0x141,0x141,0x141,0x141,0x141,0x1194,0x1194,0x1194,0x1194,
-0x1194,0x1194,0x1194,0x11a3,0x11a6,0x11a6,0x11a6,0x11a6,0x1194,0x1194,0x141,0x141,0x156c,0x156c,0x156c,0x156c,
-0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x1569,0x1a97,0x12e7,0x12c0,0x12de,0x12de,
-0x12de,0x12de,0x12de,0x12de,0x12de,0x12c6,0x12c3,0x12ba,0x12ba,0x12e4,0x12ba,0x12ba,0x12ba,0x12ba,0x12c9,0x14a6,
-0x14ac,0x14a9,0x14a9,0x18f3,0x16c8,0x16c8,0x1a64,0x144,0x144,0x144,0x144,0x144,0x11bb,0x11bb,0x11bb,0x11bb,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11b2,0x11b2,0x11b5,0x11be,
-0x11b8,0x11b8,0x11b8,0x11be,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x12ab,0x12ab,0x12ab,0x12ab,
-0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,
-0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x14d,0x14d,0x14d,0x11dc,0x11d0,0x11d0,0x11d0,
-0x11d0,0x11d0,0x11d0,0x11d3,0x11e2,0x11e2,0x11d0,0x11d0,0x11d0,0x11d0,0x150,0x12db,0x11d6,0x11d6,0x11d6,0x11d6,
-0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x150,0x150,0x150,0x150,0x11d0,0x11d0,0x1200,0x11f4,0x1200,0x153,
-0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,
-0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x11fd,0x11fd,0x1203,0x11f7,0x11fa,0x1218,0x1218,0x1218,0x1212,
-0x1212,0x1209,0x1212,0x1212,0x1209,0x1212,0x1212,0x121b,0x1215,0x120c,0x156,0x156,0x120f,0x120f,0x120f,0x120f,
-0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x156,0x156,0x156,0x156,0x156,0x156,0x1221,0x1221,0x1221,0x1221,
-0x1221,0x1221,0x1221,0x159,0x159,0x159,0x159,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,
-0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,
-0x121e,0x121e,0x121e,0x121e,0x159,0x159,0x159,0x159,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
-0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x15c,0x1227,
-0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,
-0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x15f,0x15f,
-0x15f,0x1233,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,
-0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x162,0x162,
-0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,
-0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x165,0x165,0x165,0x165,0x165,
-0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,
-0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,
-0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x16b,0x1263,0x1263,0x1b4e,0x16e,0x16e,0x16e,0x16e,0x16e,
-0x16e,0x16e,0x16e,0x16e,0x16e,0x1935,0x16e,0x16e,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,
-0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,
-0x1836,0x1836,0x1836,0x1836,0x1836,0x1a88,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
+0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,
+0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11b2,0x129,0x129,
+0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,
+0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x12c,0x12c,0x12c,
+0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,
+0x11b8,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,
+0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,
+0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x132,0x132,0x132,0x132,0x132,0x11bb,
+0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x135,0x135,0x135,0x135,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11c4,0x11c4,0x11c4,0x11c4,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,
+0x123f,0x123f,0x123f,0x123f,0x1248,0x123f,0x123f,0x123f,0x1248,0x123f,0x123f,0x123f,0x123f,0x123c,0x13b,0x13b,
+0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x124b,0x1245,0x124b,0x1245,0x1245,0x1245,0x124b,0x124b,0x13b,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1266,0x1251,0x1266,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x141,
+0x125a,0x1263,0x1251,0x1263,0x1263,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1266,0x1266,0x1266,
+0x1266,0x1266,0x1266,0x1251,0x1251,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x141,0x141,0x1254,
+0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x141,0x141,0x141,0x141,0x141,0x141,
+0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x141,0x141,0x141,0x141,0x141,0x141,
+0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x126c,0x126f,0x126f,0x126f,0x126f,0x125d,0x125d,0x141,0x141,
+0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1644,0x1b84,
+0x13b0,0x1389,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x138f,0x138c,0x1383,0x1383,0x13ad,0x1383,0x1383,
+0x1383,0x1383,0x1392,0x1578,0x157e,0x157b,0x157b,0x19d1,0x17a6,0x17a6,0x1b4b,0x144,0x144,0x144,0x144,0x144,
+0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,
+0x127b,0x127b,0x127e,0x1287,0x1281,0x1281,0x1281,0x1287,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,
+0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,
+0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x14d,0x14d,0x14d,
+0x12a5,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x129c,0x12ab,0x12ab,0x1299,0x1299,0x1299,0x1299,0x150,0x13a4,
+0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x150,0x150,0x150,0x150,0x1299,0x1299,
+0x12c9,0x12bd,0x12c9,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,
+0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x12c6,0x12c6,0x12cc,0x12c0,0x12c3,
+0x12e1,0x12e1,0x12e1,0x12db,0x12db,0x12d2,0x12db,0x12db,0x12d2,0x12db,0x12db,0x12e4,0x12de,0x12d5,0x156,0x156,
+0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x156,0x156,0x156,0x156,0x156,0x156,
+0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x159,0x159,0x159,0x159,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,
+0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,
+0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x159,0x159,0x159,0x159,0x12f3,0x12f3,0x12f3,0x12f3,
+0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,
+0x12f3,0x12f3,0x15c,0x12f0,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x1302,0x1302,0x1302,0x1302,
+0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,
+0x1302,0x1302,0x15f,0x15f,0x15f,0x12fc,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x1308,0x1308,0x1308,0x1308,
+0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,
+0x1308,0x1308,0x162,0x162,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x130e,0x130e,0x130e,0x130e,
+0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x165,
+0x165,0x165,0x165,0x165,0x130b,0x130b,0x130b,0x130b,0x130b,0x130b,0x130b,0x130b,0x1314,0x1314,0x1314,0x1314,
+0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,
+0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x16b,0x132c,0x132c,0x1c3b,0x16e,
+0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x1a16,0x16e,0x16e,0x1557,0x1557,0x1557,0x1557,
+0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1914,0x1914,0x1914,0x1914,
+0x1914,0x1914,0x1914,0x1914,0x1914,0x1914,0x1914,0x1914,0x1914,0x1b75,0x171,0x171,0x171,0x171,0x171,0x171,
0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
-0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,
-0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,
-0x134a,0x134a,0x134a,0x134a,0x12b4,0x13b0,0x13b0,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
-0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x1839,
-0x174,0x174,0x174,0x174,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x13d4,0x13d4,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x174,0x174,0x174,0x174,0x174,0x174,
+0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x1419,0x1419,
+0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,
+0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x137d,0x147f,0x147f,0x174,0x174,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,
+0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,
+0x147f,0x147f,0x147f,0x1917,0x174,0x174,0x174,0x174,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,
+0x1377,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x14a3,0x14a3,0x174,0x174,0x174,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x174,0x174,
0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x1353,0x1353,0x1353,0x1353,
-0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
-0x1353,0x1353,0x1353,0x1353,0x1353,0x134d,0x134d,0x134d,0x177,0x177,0x1350,0x177,0x1365,0x1365,0x1365,0x1365,
-0x1365,0x1365,0x1356,0x135f,0x1359,0x1359,0x135f,0x135f,0x135f,0x1359,0x135f,0x1359,0x1359,0x1359,0x1362,0x1362,
-0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x135c,0x135c,0x135c,0x135c,0x17d,0x1368,0x1368,0x1368,
-0x1368,0x1368,0x1368,0x17d,0x17d,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x17d,0x17d,0x1368,0x1368,0x1368,
-0x1368,0x1368,0x1368,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x1368,0x1368,0x1368,0x1368,
-0x1368,0x1368,0x1368,0x17d,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x17d,0x15cf,0x15cf,0x15cf,0x15cf,
-0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x136b,0x136b,0x136b,0x136b,
-0x136b,0x136b,0x136e,0x1383,0x1383,0x1374,0x1374,0x1374,0x1374,0x1374,0x180,0x180,0x180,0x180,0x1371,0x1371,
-0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1377,0x1377,
-0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1b54,0x1b57,0x1b57,0x1b51,0x1b51,0x1b57,0x180,0x180,
-0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x153c,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x186,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x153f,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x13b9,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,
-0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x186,0x186,
-0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x13ce,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x154b,0x154b,
-0x154b,0x154b,0x154b,0x154b,0x16bf,0x154b,0x154b,0x154b,0x1791,0x1842,0x1842,0x187b,0x187b,0x1a46,0x1af1,0x1af1,
-0x189,0x189,0x189,0x189,0x1c3e,0x1bc0,0x1bc0,0x1bc0,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,
-0x154b,0x154b,0x154b,0x16bc,0x16bc,0x189,0x189,0x189,0x154b,0x154b,0x154b,0x154b,0x1842,0x1842,0x1842,0x18de,
-0x18de,0x19c2,0x1a46,0x1af1,0x1af1,0x189,0x189,0x189,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1be4,0x1be4,0x1be4,0x18c,
-0x18c,0x18c,0x18c,0x1be4,0x1be4,0x1be4,0x1be4,0x1be4,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
-0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,
-0x18f,0x1428,0x18f,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x1428,0x18f,0x18f,0x18f,0x18f,0x1428,
-0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
-0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
-0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,
-0x18f,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x1428,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x1428,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
+0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
+0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,
+0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x141c,0x141c,0x141c,0x177,0x177,0x141f,0x177,
+0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1425,0x142e,0x1428,0x1428,0x142e,0x142e,0x142e,0x1428,0x142e,0x1428,
+0x1428,0x1428,0x1431,0x1431,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x142b,0x142b,0x142b,0x142b,
+0x17d,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,0x17d,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,
+0x17d,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,
+0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,
+0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
+0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143d,0x1452,0x1452,0x1443,0x1443,0x1443,0x1443,0x1443,0x180,0x180,
+0x180,0x180,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,
+0x1440,0x1440,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1c41,0x1c44,0x1c44,0x1c3e,
+0x1c3e,0x1c44,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x1614,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1458,0x1458,0x1458,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x186,0x186,0x1458,0x1458,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1617,0x186,0x1458,0x1458,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1488,0x186,0x1458,0x1458,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1617,0x1617,0x1617,0x1617,
+0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,
+0x1617,0x1617,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x149d,0x149a,0x149a,0x149a,
+0x149a,0x149a,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x179d,0x1623,0x1623,0x1623,0x186f,0x1920,0x1920,0x1959,
+0x1959,0x1b2d,0x1bde,0x1bde,0x189,0x189,0x189,0x189,0x1d2b,0x1cad,0x1cad,0x1cad,0x1623,0x1623,0x1623,0x1623,
+0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x179a,0x179a,0x189,0x189,0x189,0x1623,0x1623,0x1623,0x1623,
+0x1920,0x1920,0x1920,0x19bc,0x19bc,0x1aa3,0x1b2d,0x1bde,0x1bde,0x189,0x189,0x189,0x145b,0x145b,0x145b,0x145b,
+0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
+0x1cd1,0x1cd1,0x1cd1,0x18c,0x18c,0x18c,0x18c,0x1cd1,0x1cd1,0x1cd1,0x1cd1,0x1cd1,0x14fa,0x14fa,0x14fa,0x14fa,
+0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x18f,
+0x14fa,0x18f,0x18f,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,
+0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x14fa,0x18f,
+0x18f,0x18f,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x18f,
+0x14fa,0x18f,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x14fa,0x18f,
+0x14fa,0x18f,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,
+0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x18f,0x18f,0x18f,0x18f,0x14fa,0x14fa,0x14fa,
+0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
-0x18f,0x18f,0x18f,0x18f,0x1425,0x1425,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
-0x18f,0x18f,0x18f,0x18f,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x142b,0x142b,0x142b,0x142b,0x142b,
-0x143a,0x142b,0x142e,0x142e,0x142b,0x142b,0x142b,0x1431,0x1431,0x192,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,
-0x1437,0x1437,0x1437,0x1437,0x1434,0x1440,0x1440,0x1440,0x1941,0x193e,0x193e,0x1a8e,0x192,0x192,0x192,0x192,
-0x192,0x192,0x192,0x192,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,
-0x15e1,0x15e1,0x15e1,0x15e1,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x1449,
-0x1443,0x1443,0x1449,0x1449,0x1452,0x1452,0x144c,0x144f,0x144f,0x1449,0x1446,0x195,0x195,0x195,0x195,0x195,
-0x195,0x195,0x195,0x195,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
-0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x198,0x198,0x198,0x198,
-0x1716,0x1716,0x1455,0x1455,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
-0x1716,0x1716,0x1716,0x1716,0x198,0x198,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
-0x1716,0x1716,0x1716,0x1716,0x1461,0x1461,0x1461,0x1461,0x1461,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19b,
-0x19b,0x19b,0x19b,0x19e9,0x1461,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,
-0x145e,0x145e,0x145e,0x145e,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19b,0x19b,0x19b,0x19b,
-0x19b,0x19b,0x19b,0x145b,0x145b,0x145b,0x145b,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,
-0x1464,0x1464,0x1464,0x1464,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x19e,0x19e,0x19e,
-0x19e,0x19e,0x19e,0x19e,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x19e,0x19e,
-0x19e,0x19e,0x19e,0x19e,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1a1,0x1a1,0x1a1,0x1a1,
-0x1a1,0x1a1,0x1a1,0x1a1,0x12e1,0x12de,0x12e1,0x12bd,0x12de,0x12e4,0x12e4,0x12e7,0x12e4,0x12e7,0x12ea,0x12de,
-0x12e7,0x12e7,0x12de,0x12de,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x148b,
-0x1494,0x148b,0x1494,0x1494,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x1497,0x148e,0x19f2,0x1b63,0x1a4,0x1a4,
-0x1a4,0x1a4,0x1a4,0x1a4,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,
-0x155d,0x155d,0x1a7,0x1a7,0x155a,0x155a,0x155a,0x155a,0x155a,0x1560,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,
-0x1a7,0x1a7,0x1a7,0x1a7,0x1566,0x1566,0x1566,0x1566,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,
-0x1aa,0x1aa,0x1aa,0x1563,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x2af,
-0x1bae,0x1bae,0x1bae,0x1bae,0x16cb,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
-0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
-0x1ad,0x1ad,0x1ad,0x1ad,0x1a97,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,
-0x1b66,0x1b66,0x1b66,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
+0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x14f7,0x14f7,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
+0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x14fd,
+0x14fd,0x14fd,0x14fd,0x14fd,0x150c,0x14fd,0x1500,0x1500,0x14fd,0x14fd,0x14fd,0x1503,0x1503,0x192,0x1509,0x1509,
+0x1509,0x1509,0x1509,0x1509,0x1509,0x1509,0x1509,0x1509,0x1506,0x1512,0x1512,0x1512,0x1a22,0x1a1f,0x1a1f,0x1b7b,
+0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,
+0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x151e,0x151e,0x151e,0x151e,0x151e,0x151e,0x151e,0x151e,
+0x151e,0x151e,0x151e,0x151b,0x1515,0x1515,0x151b,0x151b,0x1524,0x1524,0x151e,0x1521,0x1521,0x151b,0x1518,0x195,
+0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x198,0x198,0x198,0x198,0x17f4,0x17f4,0x1527,0x1527,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x198,0x198,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x1533,0x1533,0x1533,0x1533,0x1533,0x1ad6,0x1ad6,0x1ad6,
+0x1ad6,0x1ad6,0x1ad6,0x19b,0x19b,0x19b,0x19b,0x1ad0,0x1533,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,
+0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,
+0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x152d,0x152d,0x152d,0x152d,0x1536,0x1536,0x1536,0x1536,0x1536,
+0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,
+0x1557,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,
+0x1554,0x1554,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,
+0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x13aa,0x13a7,0x13aa,0x1386,0x13a7,0x13ad,0x13ad,0x13b0,
+0x13ad,0x13b0,0x13b3,0x13a7,0x13b0,0x13b0,0x13a7,0x13a7,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x156c,0x156c,0x156c,0x155d,0x1566,0x155d,0x1566,0x1566,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x1569,0x1560,
+0x1ad9,0x1c50,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,
+0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1a7,0x1a7,0x1635,0x1635,0x1635,0x1635,0x1635,0x163b,0x1a7,0x1a7,
+0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1641,0x1641,0x1641,0x1641,0x1aa,0x1aa,0x1aa,0x1aa,
+0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x163e,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,
+0x1c9b,0x1c9b,0x1c9b,0x2af,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x17a9,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,
+0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,
+0x17a0,0x17a0,0x17a0,0x17a0,0x1ad,0x1ad,0x1ad,0x1ad,0x1b84,0x1c56,0x1c56,0x1c56,0x1c56,0x1c56,0x1c56,0x1c56,
+0x1c56,0x1c56,0x1c56,0x1c56,0x1c53,0x1c53,0x1c53,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
-0x1b0,0x1b0,0x1b0,0x1b0,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1b3,
-0x1b3,0x1b3,0x1b3,0x1b3,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1b3,0x1b3,0x1575,0x156f,0x1572,0x157b,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
-0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
-0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
-0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1944,0x1944,0x1944,
-0x1944,0x1be7,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,
-0x1a49,0x1a49,0x1a49,0x1a49,0x1b9,0x1b9,0x1b9,0x1b9,0x1bc3,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,
-0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x172b,0x16ce,0x158a,0x16d4,0x1bc,0x1596,0x1596,0x1596,
-0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x1bc,0x1596,0x1596,0x1bc,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,
-0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,
-0x1596,0x1bc,0x1596,0x1596,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x19ce,0x16d1,0x1593,0x1584,0x158a,
-0x1584,0x158a,0x158a,0x158a,0x158a,0x1bc,0x1bc,0x158a,0x158a,0x1bc,0x1bc,0x158d,0x158d,0x1590,0x1bc,0x1bc,
-0x172e,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1584,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x159c,0x1599,0x1599,
-0x1596,0x1596,0x158a,0x158a,0x1bc,0x1bc,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1bc,0x1bc,0x1bc,
-0x1587,0x1587,0x1587,0x1587,0x1587,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,
-0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
-0x15b1,0x15b1,0x1bf,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
-0x15c3,0x15c3,0x15c3,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15ba,0x15bd,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,
-0x1731,0x1731,0x1731,0x1731,0x15cf,0x15cc,0x19f5,0x19f5,0x1a9d,0x1aa0,0x1a9a,0x1a9a,0x1c5,0x1c5,0x1c5,0x1c5,
-0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,
-0x15e1,0x15e1,0x15e1,0x15d8,0x15db,0x15de,0x15e1,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,
-0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15e4,0x15e4,0x1ce,0x1ce,0x1ce,0x1ce,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,
-0x15ed,0x15ed,0x16d7,0x15ed,0x15ed,0x15ed,0x15ea,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,
-0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x1d1,0x1d1,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,
-0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
-0x15fc,0x160e,0x160e,0x1602,0x160b,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
-0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
-0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,
-0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1d7,
-0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1d7,0x1d7,0x1d7,0x1d7,0x1617,0x1617,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1620,0x1620,0x1620,0x1620,0x1620,0x161a,0x1623,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,
-0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1620,0x1620,0x1620,0x1620,0x1620,0x1da,
-0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
-0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1dd,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1632,0x1632,0x1632,0x1632,0x1632,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,
-0x164d,0x164d,0x1650,0x1650,0x1653,0x1644,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,
-0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x1e3,0x1644,0x1644,0x1644,0x1644,0x1644,
-0x1644,0x1644,0x1e3,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x164d,0x164d,0x164d,
+0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1653,0x1653,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1b3,0x1b3,0x1650,0x164a,0x164d,0x1656,0x1659,0x1659,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x1659,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x165c,0x165c,0x165c,0x165c,
0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
-0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
-0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,
-0x1665,0x1665,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1662,0x1662,0x1662,0x1662,0x1e9,0x1e9,0x1e9,
-0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1668,
-0x167a,0x167a,0x1668,0x1668,0x1668,0x1668,0x1ef,0x1ef,0x167a,0x167a,0x167d,0x167d,0x1668,0x1668,0x167a,0x166e,
-0x166b,0x1671,0x1683,0x1683,0x1674,0x1674,0x1677,0x1677,0x1677,0x1683,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
-0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x1737,0x1737,0x1737,0x1737,0x1734,0x1734,0x1ef,0x1ef,
-0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
+0x165c,0x1a25,0x1a25,0x1a25,0x1a25,0x1cd4,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b30,0x1b30,0x1b30,0x1b30,
+0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b9,0x1b9,0x1b9,0x1b9,0x1cb0,0x1b9,0x1b9,0x1b9,
+0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1809,0x17ac,0x1665,0x17b2,
+0x1bc,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1bc,0x1bc,0x1671,0x1671,0x1bc,0x1bc,0x1671,
+0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1bc,0x1671,0x1671,
+0x1671,0x1671,0x1671,0x1671,0x1671,0x1bc,0x1671,0x1671,0x1bc,0x1671,0x1671,0x1671,0x1671,0x1671,0x1bc,0x1aaf,
+0x17af,0x166e,0x165f,0x1665,0x165f,0x1665,0x1665,0x1665,0x1665,0x1bc,0x1bc,0x1665,0x1665,0x1bc,0x1bc,0x1668,
+0x1668,0x166b,0x1bc,0x1bc,0x180c,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x165f,0x1bc,0x1bc,0x1bc,0x1bc,
+0x1bc,0x1677,0x1674,0x1674,0x1671,0x1671,0x1665,0x1665,0x1bc,0x1bc,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,
+0x1662,0x1bc,0x1bc,0x1bc,0x1662,0x1662,0x1662,0x1662,0x1662,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,
+0x1bc,0x1bc,0x1bc,0x1bc,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,
+0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x1bf,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,
+0x168c,0x168c,0x168c,0x168c,0x169e,0x169e,0x169e,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1695,0x1698,0x1c2,
+0x1c2,0x1c2,0x1c2,0x1c2,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x1c2,0x1c2,
+0x1c2,0x1c2,0x1c2,0x1c2,0x180f,0x180f,0x180f,0x180f,0x16aa,0x16a7,0x1adc,0x1adc,0x1b8a,0x1b8d,0x1b87,0x1b87,
+0x1c5,0x1c5,0x1c5,0x1c5,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,
+0x183c,0x183c,0x183c,0x183c,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
+0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
+0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,
+0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16b3,0x16b6,0x16b9,0x16bc,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,
+0x1cb,0x1cb,0x1cb,0x1cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16bf,0x16bf,0x1ce,0x1ce,0x1ce,0x1ce,0x16c2,
+0x16c2,0x16c2,0x16c2,0x16c2,0x16c8,0x16c8,0x17b5,0x16c8,0x16c8,0x16c8,0x16c5,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,
+0x1ce,0x1ce,0x1ce,0x1ce,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x1d1,0x1d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,
+0x16d1,0x16d1,0x16d1,0x16d1,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
+0x1d1,0x1d1,0x1d1,0x1d1,0x16d7,0x16e9,0x16e9,0x16dd,0x16e6,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
+0x1d4,0x1d4,0x1d4,0x1d4,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x1d4,0x1d4,
+0x1d4,0x1d4,0x1d4,0x1d4,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,
+0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,
+0x16ef,0x16ef,0x16ef,0x1d7,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x1d7,0x1d7,
+0x1d7,0x1d7,0x16f2,0x16f2,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16f5,0x1701,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,
+0x16fe,0x16fe,0x16fe,0x16fe,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16fe,0x16fe,
+0x16fe,0x16fe,0x16fe,0x1da,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,
+0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,
+0x1707,0x1707,0x1707,0x1dd,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,
+0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1710,0x1710,0x1710,0x1710,0x1710,0x1e0,
+0x1e0,0x1e0,0x1e0,0x1e0,0x172b,0x172b,0x172e,0x172e,0x1731,0x1722,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,
+0x1e3,0x1e3,0x1e3,0x1e3,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1e3,0x1722,
+0x1722,0x1722,0x1722,0x1722,0x1722,0x1722,0x1e3,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x1e3,0x1e3,0x1e3,0x1e3,
+0x1e3,0x172b,0x172b,0x172b,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x1e6,0x1e6,0x1e6,
+0x1e6,0x1e6,0x1e6,0x1e6,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
+0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1740,0x1740,0x1740,
+0x1740,0x1e9,0x1e9,0x1e9,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
+0x175e,0x175e,0x175e,0x1746,0x1758,0x1758,0x1746,0x1746,0x1746,0x1746,0x1ef,0x1ef,0x1758,0x1758,0x175b,0x175b,
+0x1746,0x1746,0x1758,0x174c,0x1749,0x174f,0x1761,0x1761,0x1752,0x1752,0x1755,0x1755,0x1755,0x1761,0x1818,0x1818,
+0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1815,0x1815,0x1815,0x1815,
+0x1812,0x1812,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
-0x1f2,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
-0x1686,0x1686,0x1686,0x1686,0x1686,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1f5,0x1f5,0x1f5,0x1f5,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1f5,0x1f5,0x1aa3,0x1aa3,0x1f5,0x1f5,
-0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,
+0x1ef,0x1ef,0x1ef,0x1ef,0x1f2,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,
+0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,
+0x1f2,0x1f2,0x1f2,0x1f2,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1f5,0x1f5,0x1f5,0x1f5,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1f5,0x1f5,
+0x1b90,0x1b90,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,
0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,
-0x168c,0x169b,0x1692,0x168f,0x16a1,0x16a1,0x1695,0x16a1,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
-0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
-0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,
-0x16a4,0x16a4,0x16a4,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x16ad,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x1947,0x1fe,0x1fe,0x173d,0x173d,0x173d,
-0x1749,0x1749,0x173d,0x173d,0x173d,0x173d,0x174c,0x173d,0x173d,0x173d,0x173d,0x1740,0x1fe,0x1fe,0x1fe,0x1fe,
-0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1743,0x1743,0x1752,0x1752,0x1752,0x1743,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,
+0x1f5,0x1f5,0x1f5,0x1f5,0x176a,0x1779,0x1770,0x176d,0x177f,0x177f,0x1773,0x177f,0x1f8,0x1f8,0x1f8,0x1f8,
+0x1f8,0x1f8,0x1f8,0x1f8,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1f8,0x1f8,
+0x1f8,0x1f8,0x1f8,0x1f8,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1782,0x1782,
+0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,
+0x1fb,0x1fb,0x1fb,0x178b,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,
+0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x1a28,0x1fe,
+0x1fe,0x181b,0x181b,0x181b,0x1827,0x1827,0x181b,0x181b,0x181b,0x181b,0x182a,0x181b,0x181b,0x181b,0x181b,0x181e,
+0x1fe,0x1fe,0x1fe,0x1fe,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1821,0x1821,
+0x1830,0x1830,0x1830,0x1821,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x201,0x201,0x201,0x201,0x201,
0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,
-0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
-0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x207,0x1767,0x1767,0x207,0x207,
-0x207,0x207,0x207,0x1764,0x1764,0x1764,0x1764,0x1764,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x20a,
-0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
-0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
-0x176a,0x176d,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
-0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x20d,0x20d,0x20d,0x20d,0x20d,
-0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
-0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x20d,0x20d,0x20d,0x20d,0x20d,
-0x20d,0x20d,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x177c,0x177c,0x177c,0x177c,0x1779,0x177c,0x177c,0x177f,
-0x1782,0x177f,0x177f,0x177c,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,
-0x210,0x210,0x210,0x1779,0x1779,0x1779,0x1779,0x1779,0x17d9,0x17d9,0x17d9,0x17d9,0x17d0,0x17d0,0x17d0,0x17ca,
-0x17cd,0x17cd,0x17cd,0x19f8,0x213,0x213,0x213,0x213,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,
-0x17d6,0x17d6,0x213,0x213,0x213,0x213,0x17d3,0x17d3,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
-0x17f4,0x216,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
-0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f1,0x17df,0x17df,0x17df,0x17df,
-0x17df,0x17df,0x17df,0x216,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17f1,0x17e2,0x17f4,0x17f7,0x17f7,0x17eb,
-0x17e8,0x17e8,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x17ee,0x17ee,0x17ee,0x17ee,
-0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,
-0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x216,0x216,0x216,0x1803,0x1806,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
-0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,
-0x17fa,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
-0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x21c,
-0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,
-0x17fd,0x21c,0x21c,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x21c,0x17fd,0x17fd,0x21c,0x17fd,0x17fd,
-0x17fd,0x17fd,0x17fd,0x21c,0x21c,0x21c,0x21c,0x21c,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
-0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x184b,0x18e7,0x1a52,0x1a55,0x1afd,0x21f,0x21f,0x21f,
-0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x1afa,0x1afa,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,
-0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
-0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x222,0x222,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
-0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x222,0x1809,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
-0x1800,0x1809,0x1800,0x1800,0x1809,0x1800,0x1800,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
-0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x225,0x225,0x225,
-0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,
-0x1827,0x1827,0x1818,0x1812,0x1812,0x1827,0x1815,0x182a,0x182a,0x182a,0x182a,0x182d,0x182d,0x1821,0x181e,0x181b,
-0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1aa6,0x1821,0x228,0x181b,0x194a,0x19fb,
-0x1aa9,0x1aa9,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
+0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x1845,0x1845,0x1845,0x1845,
+0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x207,
+0x1845,0x1845,0x207,0x207,0x207,0x207,0x207,0x1842,0x1842,0x1842,0x1842,0x1842,0x1848,0x1848,0x1848,0x1848,
+0x1848,0x1848,0x1848,0x20a,0x1848,0x20a,0x1848,0x1848,0x1848,0x1848,0x20a,0x1848,0x1848,0x1848,0x1848,0x1848,
+0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x20a,0x1848,0x1848,0x1848,0x1848,0x1848,
+0x1848,0x1848,0x1848,0x1848,0x1848,0x184b,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x16a1,0x16a1,0x16a1,0x16a1,
+0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x1854,0x1854,0x1854,0x1854,
+0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x20d,
+0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x1851,0x1851,0x1851,0x1851,
+0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x20d,
+0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x185a,0x185a,0x185a,0x185a,
+0x1857,0x185a,0x185a,0x185d,0x1860,0x185d,0x185d,0x185a,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,
+0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x1857,0x1857,0x1857,0x1857,0x1857,0x18b7,0x18b7,0x18b7,0x18b7,
+0x18ae,0x18ae,0x18ae,0x18a8,0x18ab,0x18ab,0x18ab,0x1adf,0x213,0x213,0x213,0x213,0x18b4,0x18b4,0x18b4,0x18b4,
+0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x213,0x213,0x213,0x213,0x18b1,0x18b1,0x18d2,0x18d2,0x18d2,0x18d2,
+0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x216,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,
+0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18cf,
+0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x216,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18cf,0x18c0,
+0x18d2,0x18d5,0x18d5,0x18c9,0x18c6,0x18c6,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,
+0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x216,0x216,0x216,0x18e1,0x18e4,0x18ea,0x18ea,
+0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18d8,0x18d8,0x18d8,0x18d8,
+0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x1a46,0x1a46,0x1a46,0x1a46,
+0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x18db,0x18db,0x18db,0x18db,
+0x18db,0x18db,0x18db,0x21c,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
+0x18db,0x18db,0x18db,0x18db,0x18db,0x21c,0x21c,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x21c,0x18db,
+0x18db,0x21c,0x18db,0x18db,0x18db,0x18db,0x18db,0x21c,0x21c,0x21c,0x21c,0x21c,0x1cfb,0x1cfb,0x1cfb,0x1cfb,
+0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1929,0x19c5,0x1b39,0x1b3c,
+0x1bea,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x1be7,0x1be7,0x21f,0x21f,
+0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x18ea,0x18ea,0x18ea,0x18ea,
+0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x222,0x222,0x18de,0x18de,
+0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x222,0x18e7,0x18de,0x18de,
+0x18de,0x18de,0x18de,0x18de,0x18de,0x18e7,0x18de,0x18de,0x18e7,0x18de,0x18de,0x222,0x222,0x222,0x222,0x222,
+0x222,0x222,0x222,0x222,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,
+0x18ed,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,
+0x225,0x225,0x225,0x225,0x1905,0x1905,0x18f6,0x18f0,0x18f0,0x1905,0x18f3,0x1908,0x1908,0x1908,0x1908,0x190b,
+0x190b,0x18ff,0x18fc,0x18f9,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1b93,0x18ff,
+0x228,0x18f9,0x1a2b,0x1ae2,0x1b96,0x1b96,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
-0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
-0x1833,0x1833,0x1833,0x1833,0x22b,0x22b,0x22b,0x22b,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,
-0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,
-0x1830,0x1830,0x1830,0x1830,0x22b,0x22b,0x22b,0x22b,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
-0x184e,0x184e,0x184e,0x184e,0x184e,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x1a58,0x1a58,0x1a58,0x1a58,0x1a58,0x1a58,
-0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x1bcc,0x1bcc,0x1bcc,0x231,0x231,0x231,0x231,0x231,
-0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x273,0x273,0x1c41,0x273,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x234,
-0x188d,0x188d,0x234,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,
-0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x234,
-0x234,0x234,0x1881,0x234,0x1881,0x1881,0x234,0x1881,0x1881,0x1881,0x1884,0x1881,0x1887,0x1887,0x1890,0x1881,
-0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,
-0x188a,0x188a,0x234,0x234,0x234,0x234,0x234,0x234,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x237,0x237,0x237,0x237,0x189f,0x18a2,0x18a2,0x23a,0x23a,0x23a,0x23a,0x23a,
-0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,
-0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,
-0x18b1,0x18b1,0x18b1,0x23d,0x23d,0x23d,0x23d,0x23d,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,
-0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x18bd,0x18c0,0x18cf,0x18cf,0x18c0,0x18c3,0x18bd,0x18ba,
-0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x18a8,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x18a5,
-0x18a5,0x1893,0x1893,0x1893,0x18a8,0x18a8,0x18a8,0x18a8,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
-0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x243,0x243,0x243,0x243,
-0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,
-0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x243,0x243,0x1a61,0x1a61,0x1a61,0x1a61,0x1b03,0x1c47,0x1c47,0x1c47,
-0x1a61,0x1a61,0x1a61,0x1bcf,0x1bcf,0x276,0x276,0x276,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
-0x1962,0x1962,0x1962,0x1962,0x195f,0x195f,0x195f,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,
-0x195f,0x1959,0x1956,0x195c,0x246,0x246,0x246,0x246,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
-0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
-0x1965,0x1965,0x1965,0x249,0x249,0x1965,0x1965,0x1965,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x24c,0x1974,
-0x1974,0x24c,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,
-0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1971,0x1971,0x1971,0x1971,0x1971,0x24c,
-0x1968,0x1968,0x24c,0x1971,0x1971,0x1968,0x1971,0x196b,0x1974,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,
-0x197d,0x197d,0x1980,0x1980,0x1977,0x1977,0x1977,0x1977,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
-0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
-0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1986,0x1983,0x1983,0x1983,
-0x1986,0x1983,0x1983,0x1983,0x1983,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
-0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,
-0x1992,0x1992,0x198f,0x1989,0x1989,0x198c,0x198c,0x1995,0x1995,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
-0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,
-0x1998,0x1998,0x1998,0x1998,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
-0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,
-0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199e,0x19a7,0x199b,0x199b,0x25b,0x25b,0x25b,0x25b,0x25b,
-0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19ad,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,
-0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,
-0x19b6,0x19b6,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b3,0x19b3,0x19b3,
-0x19b3,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
-0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,
-0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1bf9,0x1bff,0x1bff,0x1bff,0x1bff,0x1bff,0x1bff,0x1bfc,
-0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x264,0x264,
-0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,
-0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x267,
-0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,
-0x26a,0x26a,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,
-0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a19,0x1a19,0x1a19,0x1a10,0x1a10,0x1a10,0x1a10,
-0x26a,0x26a,0x1a10,0x1a10,0x1a19,0x1a19,0x1a19,0x1a19,0x1a13,0x1a1c,0x1a16,0x1a1c,0x1a19,0x26a,0x26a,0x26a,
-0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,
-0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
-0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x26d,0x26d,0x26d,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a28,
-0x1a28,0x1a28,0x1a28,0x1a28,0x1a2b,0x1a2b,0x26d,0x26d,0x270,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,
-0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,
-0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x270,0x270,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x1a5b,0x1a5b,0x1a5b,0x273,
-0x273,0x1c44,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x1a5e,0x1a5e,0x1a5e,0x1a5e,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1a61,0x1a61,0x1a61,0x1b03,0x1b03,0x1b03,0x1b03,0x1c47,
-0x1c47,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1b03,0x1b03,
-0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x1c47,
-0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x1c47,0x276,0x1c47,
-0x1b03,0x1b03,0x1b03,0x1bd2,0x1bd2,0x1bd2,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1c47,0x1c47,
-0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x276,0x276,0x276,0x276,
-0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
-0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1c4a,0x1c4a,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
-0x1a37,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1a31,0x1a31,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x1a34,
-0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a3a,0x1a3a,0x1a3a,0x1a3a,
-0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x27c,0x27c,0x27c,0x27c,0x27c,0x1a3d,
-0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x27f,0x27f,0x27f,0x27f,
+0x228,0x228,0x228,0x228,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,
+0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x22b,0x22b,0x22b,0x22b,0x190e,0x190e,0x190e,0x190e,
+0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,
+0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x22b,0x22b,0x22b,0x22b,0x192c,0x192c,0x192c,0x192c,
+0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1b3f,0x1b3f,
+0x1b3f,0x1b3f,0x1b3f,0x1b3f,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x1cb9,0x1cb9,0x1cb9,0x231,
+0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x273,0x273,0x1d2e,0x273,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x196b,0x196b,0x196b,0x196b,
+0x196b,0x196b,0x196b,0x234,0x196b,0x196b,0x234,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,
+0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x195f,0x195f,0x195f,
+0x195f,0x195f,0x195f,0x234,0x234,0x234,0x195f,0x234,0x195f,0x195f,0x234,0x195f,0x195f,0x195f,0x1962,0x195f,
+0x1965,0x1965,0x196e,0x195f,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x1968,0x1968,0x1968,0x1968,
+0x1968,0x1968,0x1968,0x1968,0x1968,0x1968,0x234,0x234,0x234,0x234,0x234,0x234,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x237,0x237,0x237,0x237,0x197d,0x1980,0x1980,0x23a,
+0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x1c95,0x1c95,0x1c95,0x1c95,
+0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x198f,0x198f,0x198f,0x198f,
+0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x23d,0x23d,0x23d,0x23d,0x23d,0x1c62,0x1c62,0x1c62,0x1c62,
+0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x199b,0x199e,0x19ad,0x19ad,
+0x199e,0x19a1,0x199b,0x1998,0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x1986,0x1971,0x1971,0x1971,
+0x1971,0x1971,0x1971,0x1983,0x1983,0x1971,0x1971,0x1971,0x1986,0x1986,0x1986,0x1986,0x1ae8,0x1ae8,0x1ae8,0x1ae8,
+0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,
+0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x1a31,0x1a31,0x1a31,0x1a31,
+0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x243,0x243,0x1b48,0x1b48,0x1b48,0x1b48,
+0x1bf0,0x1d34,0x1d34,0x1d34,0x1b48,0x1b48,0x1b48,0x1cbc,0x1cbc,0x276,0x276,0x276,0x1a43,0x1a43,0x1a43,0x1a43,
+0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a40,0x1a40,0x1a40,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,
+0x1a34,0x1a34,0x1a34,0x1a34,0x1a40,0x1a3a,0x1a37,0x1a3d,0x246,0x246,0x246,0x246,0x1a46,0x1a46,0x1a46,0x1a46,
+0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,
+0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x249,0x249,0x1a46,0x1a46,0x1a46,0x1a55,0x1a55,0x1a55,0x1a55,
+0x1a55,0x1a55,0x24c,0x1a55,0x1a55,0x24c,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,
+0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a52,0x1a52,
+0x1a52,0x1a52,0x1a52,0x24c,0x1a49,0x1a49,0x24c,0x1a52,0x1a52,0x1a49,0x1a52,0x1a4c,0x1a55,0x24c,0x24c,0x24c,
+0x24c,0x24c,0x24c,0x24c,0x1a5e,0x1a5e,0x1a61,0x1a61,0x1a58,0x1a58,0x1a58,0x1a58,0x24f,0x24f,0x24f,0x24f,
+0x24f,0x24f,0x24f,0x24f,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x24f,0x24f,
+0x24f,0x24f,0x24f,0x24f,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,
+0x1a67,0x1a64,0x1a64,0x1a64,0x1a67,0x1a64,0x1a64,0x1a64,0x1a64,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
+0x252,0x252,0x252,0x252,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,
+0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a70,0x1a6a,0x1a6a,0x1a6d,0x1a6d,0x1a76,0x1a76,0x255,0x255,0x255,
+0x255,0x255,0x255,0x255,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,
+0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
+0x258,0x258,0x258,0x258,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,
+0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7f,0x1a88,0x1a7c,0x1a7c,0x25b,
+0x25b,0x25b,0x25b,0x25b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8e,0x25e,0x25e,0x25e,0x25e,
+0x25e,0x25e,0x25e,0x25e,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,
+0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,
+0x1a91,0x1a94,0x1a94,0x1a94,0x1a94,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x261,0x261,0x261,0x261,0x261,0x261,
+0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x1c83,0x1c83,0x1c83,0x1c83,
+0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1ce6,0x1cec,0x1cec,0x1cec,
+0x1cec,0x1cec,0x1cec,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,
+0x1ce9,0x1ce9,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x1af4,0x1af4,0x1af4,0x1af4,
+0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,
+0x1af4,0x1af4,0x1af4,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x1b03,0x1b03,0x1b03,0x1b03,
+0x1b03,0x1b03,0x1b03,0x1b03,0x26a,0x26a,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,
+0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b00,0x1b00,0x1b00,
+0x1af7,0x1af7,0x1af7,0x1af7,0x26a,0x26a,0x1af7,0x1af7,0x1b00,0x1b00,0x1b00,0x1b00,0x1afa,0x1b03,0x1afd,0x1b03,
+0x1b00,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,
+0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x1b0f,0x1b0f,0x1b0f,0x1b0f,
+0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x26d,0x26d,0x26d,0x1b06,0x1b06,0x1b06,0x1b06,
+0x1b06,0x1b06,0x1b06,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b12,0x1b12,0x26d,0x26d,0x270,0x1b15,0x1b15,0x1b15,
+0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,
+0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x270,0x270,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x1b42,0x1b42,0x1b42,0x273,0x273,0x1d31,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x1b45,0x1b45,0x1b45,0x1b45,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x1b48,0x1b48,0x1b48,0x1bf0,
+0x1bf0,0x1bf0,0x1bf0,0x1d34,0x1d34,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1b48,0x1b48,0x1b48,0x1b48,
+0x1b48,0x1b48,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1cbc,0x1cbc,0x1cbc,
+0x1cbc,0x1d34,0x1d34,0x1d34,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1d34,
+0x1d34,0x1d34,0x276,0x1d34,0x1bf0,0x1bf0,0x1bf0,0x1cbf,0x1cbf,0x1cbf,0x276,0x276,0x276,0x276,0x276,0x276,
+0x276,0x276,0x1d34,0x1d34,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1cbc,0x1cbc,0x1cbc,0x1d34,0x1d34,
+0x276,0x276,0x276,0x276,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1d34,0x276,0x276,0x276,
+0x276,0x276,0x276,0x276,0x1cbf,0x1cbf,0x1cbf,0x1cbf,0x1cbf,0x1cbf,0x1cbf,0x1d37,0x1d37,0x276,0x276,0x276,
+0x276,0x276,0x276,0x276,0x1b1e,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,
+0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,
+0x279,0x279,0x279,0x1b1b,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,
+0x1b21,0x1b21,0x1b21,0x1b21,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x27c,0x27c,
+0x27c,0x27c,0x27c,0x1b24,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,
0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,
-0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x282,0x282,0x1aca,0x282,0x282,0x1aca,0x1aca,0x1aca,0x1aca,
-0x1aca,0x1aca,0x1aca,0x1aca,0x282,0x1aca,0x1aca,0x282,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,
-0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1ab2,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x282,0x1ac1,
-0x1ac4,0x282,0x282,0x1ab2,0x1ab2,0x1ac7,0x1ab8,0x1acd,0x1ac1,0x1acd,0x1ac1,0x1ab5,0x1ad0,0x1abb,0x1ad0,0x282,
-0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,
-0x1abe,0x1abe,0x282,0x282,0x282,0x282,0x282,0x282,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
-0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x285,0x285,
+0x27f,0x27f,0x27f,0x27f,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x282,0x282,0x1bb7,0x282,0x282,
+0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x282,0x1bb7,0x1bb7,0x282,0x1bb7,0x1bb7,0x1bb7,0x1bb7,
+0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1b9f,0x1bae,0x1bae,0x1bae,
+0x1bae,0x1bae,0x282,0x1bae,0x1bb1,0x282,0x282,0x1b9f,0x1b9f,0x1bb4,0x1ba5,0x1bba,0x1bae,0x1bba,0x1bae,0x1ba2,
+0x1bbd,0x1ba8,0x1bbd,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x1bab,0x1bab,0x1bab,0x1bab,
+0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x282,0x282,0x282,0x282,0x282,0x282,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,
0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,
-0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,
-0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
-0x1ad6,0x1ad6,0x1ad6,0x28b,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
-0x1ad6,0x1ad6,0x1ad6,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
-0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,
-0x1ad9,0x1ad9,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,
-0x1b0c,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,
+0x285,0x285,0x285,0x285,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
+0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x28b,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
+0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
+0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1bc6,0x1bc6,0x1bc6,0x1bc6,
+0x1bc6,0x1bc6,0x1bc6,0x1bc6,0x1bc6,0x1bc6,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1bf9,0x1bf9,0x1bf9,0x1bf9,
+0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,
0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,
-0x28e,0x28e,0x28e,0x28e,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x291,0x1adc,
-0x1adc,0x1adf,0x291,0x291,0x1ae2,0x1ae2,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,
-0x291,0x291,0x291,0x291,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b72,0x1b75,0x1b75,0x1b75,
-0x1b75,0x1b75,0x1b75,0x294,0x1b78,0x1b78,0x294,0x294,0x294,0x294,0x294,0x294,0x1b6f,0x1b6f,0x1b6f,0x1b6f,
-0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
-0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7b,0x1b7b,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,
-0x297,0x297,0x297,0x297,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x29a,0x1b81,0x1b81,0x1b81,0x1b81,
-0x29a,0x1b81,0x1b81,0x29a,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,
-0x1b81,0x1b81,0x1b81,0x29a,0x1b84,0x1b8a,0x1b8a,0x1b87,0x1b87,0x1b87,0x2a0,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,
-0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,
-0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2a0,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2a0,
-0x2a0,0x2a0,0x2a0,0x2a0,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b90,0x1b8d,
-0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,
-0x1b8d,0x1b8d,0x1b8d,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x2a3,
-0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
+0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,
+0x1bcf,0x1bcf,0x291,0x1bc9,0x1bc9,0x1bcc,0x291,0x291,0x1bcf,0x1bcf,0x291,0x291,0x291,0x291,0x291,0x291,
+0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,
+0x1c5f,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x294,0x1c65,0x1c65,0x294,0x294,0x294,0x294,0x294,0x294,
+0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c68,0x1c68,0x297,0x297,0x297,0x297,0x297,
+0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x29a,
+0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x29a,0x1c6e,0x1c6e,0x29a,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,
+0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x29a,0x1c71,0x1c77,0x1c77,0x1c74,0x1c74,0x1c74,0x2a0,0x1c74,
+0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,
+0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x2a0,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,
+0x1c74,0x1c74,0x1c74,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,
+0x1c7a,0x1c7a,0x1c7d,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,
+0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x1cef,0x1cef,0x1cef,
+0x1cef,0x1cef,0x1cef,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
-0x1b96,0x1b96,0x1b93,0x1b93,0x1b93,0x1b93,0x1b99,0x1b99,0x1b99,0x1b99,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
+0x2a3,0x2a3,0x2a3,0x2a3,0x1c83,0x1c83,0x1c80,0x1c80,0x1c80,0x1c80,0x1c86,0x1c86,0x1c86,0x1c86,0x2a6,0x2a6,
0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
-0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x2a9,
-0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,
-0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,
-0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba2,0x2ac,
-0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,
-0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x2af,0x1bae,0x1bae,0x1bae,0x1bae,
-0x1bae,0x1bae,0x1bae,0x2af,0x1bae,0x1bae,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,
-0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,
-0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x2af,0x2af,0x2af,
-0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x2b2,0x2b2,
-0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
-0x1bb4,0x1bb4,0x1bb4,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
-0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x2b5,0x2b5,0x2b5,0x2b5,
+0x2a6,0x2a6,0x2a6,0x2a6,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,
+0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x2a9,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x2a9,0x2a9,
+0x2a9,0x2a9,0x2a9,0x2a9,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,
+0x1638,0x1638,0x1638,0x1638,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,
+0x1c92,0x1c92,0x1c8f,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,
+0x2ac,0x2ac,0x2ac,0x2ac,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x2af,
+0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x2af,0x1c9b,0x1c9b,0x2af,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,
+0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x2af,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,
+0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x2af,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x2af,0x1c98,
+0x1c98,0x2af,0x2af,0x2af,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,
+0x1ca1,0x1ca1,0x2b2,0x2b2,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,
+0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,
+0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,
0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,
-0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x1c05,0x1c05,0x1c05,
-0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0e,0x1c0e,0x1c0e,0x2b8,0x2b8,
-0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
-0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,
+0x2b5,0x1cf2,0x1cf2,0x1cf2,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cfb,
+0x1cfb,0x1cfb,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
+0x2b8,0x2b8,0x2b8,0x2b8,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x2bb,0x2bb,
0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x1c14,0x1c14,0x1c14,0x1c14,
-0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,
-0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x1c17,0x1c17,0x1c2c,0x1c23,
-0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x2c1,0x1c29,0x1c29,
-0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,
-0x1c29,0x1c29,0x1c29,0x1c29,0x1c23,0x1c23,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x2c1,0x2c1,0x2c1,0x1c23,0x1c23,
-0x1c17,0x1c26,0x1c1a,0x1c2f,0x1c2f,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,
-0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,
-0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c32,0x1c32,0x1c32,0x1c32,
-0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,
-0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
+0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,
+0x1d01,0x1d01,0x1d01,0x1d01,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,
+0x1d04,0x1d04,0x1d19,0x1d10,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,
+0x1d16,0x2c1,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,
+0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d10,0x1d10,0x1d04,0x1d04,0x1d04,0x1d04,0x1d04,0x2c1,
+0x2c1,0x2c1,0x1d10,0x1d10,0x1d04,0x1d13,0x1d07,0x1d1c,0x1d1c,0x1d0a,0x1d0a,0x1d0a,0x1d0a,0x1d0a,0x1d0a,0x1d0a,
+0x1d0a,0x1d0a,0x1d0a,0x1d0a,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x2c1,0x2c1,
+0x2c1,0x2c1,0x2c1,0x2c1,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,
+0x1d1f,0x1d1f,0x1d1f,0x1d1f,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x2c4,0x2c4,
+0x2c4,0x2c4,0x2c4,0x2c4,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
-0x2c7,0x2c7,0x95d,0x95d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
-0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
-0x2c7,0x2c7,0x2c7,0x2c7,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0x12a5,
-0x12a5,0x12a5,0x2ca,0x2ca,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
-0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0x2ca,0x2ca,
+0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x9b1,0x9b1,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,
+0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
+0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,
+0xced,0xced,0xced,0x136e,0x136e,0x136e,0x2ca,0x2ca,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,
+0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,
+0xf24,0xf24,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,
0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,
-0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,
-0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
-0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0x2cd,0x2cd,
-0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,
-0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1c3b,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0,
-0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,
-0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x2d3,0x2d3,
-0x1794,0x1794,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,
-0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
-0x18ea,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
-0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,
-0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x2df,0x2df,
-0x3e7,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3e7,0x3e7,0x3e7,0x3e7,0x3e1,0x1125,0x12fc,
-0x3ea,0x927,0x92a,0x3d8,0x3d8,0x1122,0x12f9,0x12f9,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,
-0x1122,0x3db,0x3db,0x3e7,0xcb1,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ea,0x3db,0x3db,0x8af,0x8b2,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,
-0x3e4,0xf81,0xf7e,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x14c1,0x1128,0x1128,0xed3,0xed3,0xda4,0xed3,0xed3,
-0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ed,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ed,0x3ea,0x3ea,0x3ed,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x12f9,0x12fc,0x3de,0x3ea,0x3e7,0x3e7,
-0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x1305,0x489,0x489,0x489,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x1305,0x1866,0x1866,0xf9f,0x47a,0x483,
-0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,
-0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xba6,0xba6,0xdb3,0xdb3,0x8b5,0xdb0,0x13e3,0x13e3,0x13e3,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,
-0x4ce,0x4ce,0x4ce,0x113d,0x113d,0x113d,0x113d,0x113d,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,
-0x4d1,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,
-0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,
-0x4ce,0x4ce,0x4ce,0x4ce,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d7,0x9a2,0xfcc,0xfcc,0xfcf,0xfcc,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0xfcf,0xfcc,0xfcf,0xfcc,0xfcf,0xfcc,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x6a5,0x6a5,0x6a8,0x504,0x6b4,0x6b1,0x6b1,0x6ae,0x52e,0x52e,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0xb37,
-0x6b7,0x510,0x6cf,0x6d2,0x525,0x6b7,0x513,0x513,0x504,0x51f,0x51f,0x6a5,0x52b,0x528,0x6ab,0x4fe,
-0x4f5,0x4f5,0x4f8,0x4f8,0x4f8,0x4f8,0x4f8,0x4fb,0x4f8,0x4f8,0x4f8,0x4ef,0x537,0x534,0x531,0x531,
-0x6c3,0x519,0x516,0x6c0,0x6bd,0x6ba,0x6cc,0x507,0x6c9,0x6c9,0x51c,0x51f,0x6c6,0x6c6,0x51c,0x51f,
-0x501,0x504,0x504,0x504,0x522,0x50d,0x50a,0xbbb,0xada,0xada,0xad7,0xad7,0xad7,0xad7,0xbb2,0xbb2,
-0xbb2,0xbb2,0xbb8,0xcde,0xcdb,0xdbf,0xdc2,0xbb5,0xdc2,0xdc2,0xdc2,0xdc2,0xdbf,0xdc2,0xdc2,0xbaf,
-0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x558,0x55e,0x73e,0x55b,0x9a5,0x9c6,0xadd,0xadd,0xadd,
-0xbc1,0xbc1,0xdc8,0xdc8,0xdc8,0xdc8,0x1146,0x1149,0x1149,0x131a,0x14af,0x14d9,0x14dc,0x14dc,0x16e9,0x1869,
-0x56a,0x56a,0x582,0x6e4,0x567,0x6de,0x56a,0x57f,0x567,0x6e4,0x579,0x582,0x582,0x582,0x579,0x579,
-0x582,0x582,0x582,0x6ea,0x567,0x582,0x6e7,0x567,0x576,0x582,0x582,0x582,0x582,0x582,0x567,0x567,
-0x56d,0x6de,0x6e1,0x567,0x582,0x567,0x6ed,0x567,0x582,0x570,0x588,0x6f0,0x582,0x582,0x573,0x579,
-0x582,0x582,0x585,0x582,0x579,0x57c,0x57c,0x57c,0x57c,0xae6,0xae3,0xce1,0xdd1,0xbd6,0xbd9,0xbd9,
-0xbd3,0xbd0,0xbd0,0xbd0,0xbd0,0xbd9,0xbd6,0xbd6,0xbd6,0xbd6,0xbcd,0xbd0,0xdce,0xedf,0xee2,0xfd5,
-0x114c,0x114c,0x114c,0x6f6,0x6f3,0x58b,0x58e,0x58e,0x58e,0x58e,0x58e,0x6f3,0x6f6,0x6f6,0x6f3,0x58e,
-0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x597,0x597,0x597,0x597,
-0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x591,0x591,0x591,0x591,0x591,0x591,
-0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59a,0x59d,0x59d,0x59d,0x59d,0x59d,0x5a0,0x59a,
-0x59d,0x59d,0x59a,0x59a,0x59a,0x59a,0x59d,0x59d,0x6ff,0x6ff,0x59a,0x59a,0x59d,0x59d,0x59d,0x59d,
-0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x5a0,0x5a0,0x5a0,0x59d,0x59d,0x702,0x59d,
-0x702,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59a,0x59d,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
-0x59d,0x59d,0x59a,0x6ff,0x59a,0x59a,0x59a,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,
-0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0x705,0x5a3,0x705,0x705,
-0x5a6,0x5a3,0x5a3,0x705,0x705,0x5a6,0x5a3,0x705,0x5a6,0x5a3,0x5a3,0x705,0x5a3,0x705,0x5b2,0x5af,
-0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x705,
-0x5a6,0x705,0x5a6,0x705,0x705,0x705,0x705,0x705,0x70b,0x5a9,0x705,0x5a9,0x5a9,0x5a3,0x5a3,0x5a3,
-0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x705,0x5a3,0x5a3,0x5a3,0x5a6,0x5a3,0x5a3,
-0x5a6,0x5a3,0x5a3,0x5a6,0x705,0x5a6,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x708,0x705,0x5a6,0x5a3,
-0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x705,0x705,0x5a3,0x5a6,0x708,0x708,0x5a6,0x5a6,0x5a3,0x5a3,
-0x5a6,0x5a6,0x5a3,0x5a3,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x705,0x705,
-0x5a6,0x5a6,0x705,0x705,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5ac,0x5a3,0x5a3,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,
-0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0x5b5,0xaef,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5be,0x5bb,0x5be,0x5bb,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x70e,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x5b5,0x7fe,0x7fe,0x5b5,0x5b5,0x5b5,0x5b5,0x5b8,0x5b8,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x804,0x801,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0xaef,0xbe5,0xaef,0xaef,0xaef,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x717,0x717,0x717,0x717,
-0x717,0x717,0x717,0x717,0x717,0x717,0x5c7,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,
-0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xd50,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x5ca,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x5cd,0x5cd,0x5cd,0x5cd,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x720,0x720,0x720,0x720,
-0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x5d0,0x5d0,0x720,0x720,
-0x720,0x720,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0x726,0x726,0x5d3,0x723,
-0x723,0x723,0x723,0x723,0x723,0x723,0x5d3,0x5d3,0x5d3,0x5d3,0x5d6,0x5d6,0x5d6,0x5d6,0x726,0x726,
-0x5d6,0x5d6,0x726,0x726,0x5d3,0x5d3,0x5d3,0x5d3,0x726,0x726,0x5d6,0x5d6,0x726,0x726,0x5d3,0x5d3,
-0x5d3,0x5d3,0x726,0x726,0x723,0x5d3,0x5d6,0x726,0x5d3,0x5d3,0x723,0x726,0x726,0x726,0x5d6,0x5d6,
-0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x726,0x723,
-0x726,0x723,0x5d3,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d3,0x5d3,0x723,0xaf5,0xaf5,0xaf5,0xaf5,
-0xaf5,0xaf5,0xaf5,0xaf5,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xc5a,0xc5a,0xbeb,0x5dc,0x5dc,0x5dc,0x5dc,
-0x5d9,0x72f,0x72f,0x5d9,0x5d9,0x729,0x5d9,0x5d9,0x5d9,0x5d9,0x729,0x729,0x5d9,0x5d9,0x5d9,0x5d9,
-0xd59,0xd59,0xbee,0xbee,0xdda,0xaf8,0x5dc,0x5dc,0x72c,0x5df,0x72c,0x5dc,0x5d9,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5dc,0x5dc,0x5dc,0x5d9,0x5d9,0x5d9,0x5d9,0x72f,0x5d9,0x72f,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x72f,0x72f,0x5e2,0x72f,
-0x729,0x729,0x5d9,0x729,0x72c,0x729,0x729,0x5d9,0x729,0x72f,0x5e2,0x72f,0xaf8,0xaf8,0xbf1,0xbf1,
-0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xdd7,0xe8e,0x5e5,0x5e5,0x5e5,0x5e5,
-0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,
-0x5e8,0x13a4,0x13a4,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x14e2,0x5ee,0x5ee,0x5ee,
-0x5ee,0x13a4,0x5e8,0x5e8,0x5ee,0x5ee,0x13a7,0x13a7,0x5f4,0x5f4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,
+0x2ca,0x2ca,0x2ca,0x2ca,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0x2cd,0x2cd,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
+0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1caa,0x1caa,0x1caa,0x1caa,0x1d28,0x2d0,0x2d0,
+0x2d0,0x2d0,0x2d0,0x2d0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,
+0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,
+0x14a0,0x14a0,0x2d3,0x2d3,0x1872,0x1872,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,
+0x2d6,0x2d6,0x2d6,0x2d6,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,
+0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,
+0x2d9,0x2d9,0x2d9,0x2d9,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x1d46,0x1d46,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x2dc,
+0x2dc,0x2dc,0x2dc,0x2dc,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,
+0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x2df,0x2df,0x41a,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x41a,0x41a,0x41a,
+0x41a,0x414,0x11eb,0x13c5,0x420,0x97b,0x97e,0x40b,0x40b,0x11e8,0x13c2,0x13c2,0x41d,0x41d,0x41d,0x41d,
+0x41d,0x41d,0x41d,0x41d,0x11e8,0x40e,0x40e,0x41a,0xd32,0x420,0x420,0x420,0x420,0x420,0x420,0x420,
+0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,
+0x420,0x420,0x420,0x420,0x420,0x420,0x40e,0x40e,0x900,0x903,0x999,0x999,0x999,0x999,0x999,0x999,
+0x999,0x999,0x999,0x999,0x417,0x1023,0x1020,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x1593,0x11ee,0x11ee,0xf60,
+0xf60,0xe28,0xf60,0xf60,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x423,0x420,0x420,
+0x420,0x420,0x420,0x420,0x420,0x423,0x420,0x420,0x423,0x420,0x420,0x420,0x420,0x420,0x13c2,0x13c5,
+0x411,0x420,0x41a,0x41a,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x13ce,0x4c2,0x4c2,
+0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x13ce,0x1944,
+0x1944,0x1044,0x4b3,0x4bc,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,
+0x504,0x504,0x504,0x504,0x504,0x4fe,0x4fe,0x4fe,0x4fe,0x4fe,0x4fe,0xc24,0xc24,0xe37,0xe37,0x906,
+0xe34,0x14b2,0x14b2,0x14b2,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,
+0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,
+0x501,0x501,0x501,0x501,0x50a,0x50a,0x50a,0x1203,0x1203,0x1203,0x1203,0x1203,0x507,0x507,0x507,0x507,
+0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,
+0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x1200,0x1200,
+0x1200,0x1200,0x1200,0x1200,0x50d,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,
+0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,
+0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,
+0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x513,0x513,
+0x513,0x513,0x510,0x9ff,0x1071,0x1071,0x1077,0x1071,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,
+0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,
+0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x1074,0x1071,0x1074,0x1071,0x1074,0x1071,
+0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,
+0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,
+0x6f0,0x6f0,0x6f3,0x546,0x6ff,0x6fc,0x6fc,0x702,0x570,0x570,0x52e,0x52e,0x52e,0x52e,0x52e,0xbb5,
+0x6f6,0x54f,0x71d,0x720,0x567,0x6f6,0x555,0x555,0x546,0x561,0x561,0x6f0,0x56d,0x56a,0x6f9,0x540,
+0x537,0x537,0x53a,0x53a,0x53a,0x53a,0x53a,0x53d,0x53a,0x53a,0x53a,0x531,0x579,0x576,0x573,0x573,
+0x70e,0x55b,0x558,0x70b,0x708,0x705,0x71a,0x552,0x714,0x717,0x55e,0x561,0x711,0x711,0x55e,0x561,
+0x543,0x546,0x546,0x546,0x564,0x54c,0x549,0xc39,0xb58,0xb58,0xb55,0xb55,0xb55,0xb55,0xc30,0xc30,
+0xc30,0xc30,0xc36,0xd5f,0xd5c,0xe43,0xe49,0xc33,0xe49,0xe49,0xe49,0xe49,0xe46,0xe49,0xe49,0xc2d,
+0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59a,0x5a0,0x78c,0x59d,0xa02,0xa23,0xb5b,0xb5b,0xb5b,
+0xc3f,0xc3f,0xe4f,0xe4f,0xe4f,0xe4f,0x120c,0x120f,0x120f,0x13e3,0x1581,0x15ab,0x15ae,0x15ae,0x17c7,0x1947,
+0x5af,0x5af,0x5c7,0x732,0x5a9,0x72c,0x5af,0x5c4,0x5a9,0x732,0x5be,0x5c7,0x5c7,0x5c7,0x5be,0x5be,
+0x5c7,0x5c7,0x5c7,0x738,0x5a9,0x5c7,0x735,0x5a9,0x5bb,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5a9,0x5a9,
+0x5b2,0x72c,0x72f,0x5a9,0x5c7,0x5a9,0x73b,0x5ac,0x5c7,0x5b5,0x5cd,0x73e,0x5c7,0x5c7,0x5b8,0x5be,
+0x5c7,0x5c7,0x5ca,0x5c7,0x5be,0x5c1,0x5c1,0x5c1,0x5c1,0xb64,0xb61,0xd62,0xe58,0xc54,0xc57,0xc57,
+0xc51,0xc4e,0xc4e,0xc4e,0xc4e,0xc57,0xc54,0xc54,0xc54,0xc54,0xc4b,0xc4e,0xe55,0xf6c,0xf6f,0x107d,
+0x1212,0x1212,0x1212,0x744,0x741,0x5d0,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x741,0x744,0x744,0x741,0x5d3,
+0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x5dc,0x5dc,0x5dc,0x5dc,
+0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
+0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5df,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e5,0x5df,
+0x5e2,0x5e2,0x5df,0x5df,0x5df,0x5df,0x5e2,0x5e2,0x74d,0x74d,0x5df,0x5df,0x5e2,0x5e2,0x5e2,0x5e2,
+0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e5,0x5e5,0x5e5,0x5e2,0x5e2,0x750,0x5e2,
+0x750,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5df,0x5e2,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,
+0x5e2,0x5e2,0x5df,0x74d,0x5df,0x5df,0x5df,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,
+0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0x753,0x5e8,0x753,0x753,
+0x5eb,0x5e8,0x5e8,0x753,0x753,0x5eb,0x5e8,0x753,0x5eb,0x5e8,0x5e8,0x753,0x5e8,0x753,0x5f7,0x5f1,
+0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x5e8,0x5e8,0x753,0x753,0x753,0x753,0x5e8,0x5e8,0x753,
+0x5eb,0x753,0x5eb,0x753,0x753,0x753,0x753,0x753,0x759,0x5f4,0x753,0x5f4,0x5f4,0x5e8,0x5e8,0x5e8,
+0x753,0x753,0x753,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x753,0x5e8,0x5e8,0x5e8,0x5eb,0x5e8,0x5e8,
+0x5eb,0x5e8,0x5e8,0x5eb,0x753,0x5eb,0x5e8,0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x756,0x753,0x5eb,0x5e8,
+0x753,0x753,0x753,0x753,0x5e8,0x5e8,0x753,0x753,0x5e8,0x5eb,0x756,0x756,0x5eb,0x5eb,0x5e8,0x5e8,
+0x5eb,0x5eb,0x5e8,0x5e8,0x5eb,0x5eb,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5eb,0x5eb,0x753,0x753,
+0x5eb,0x5eb,0x753,0x753,0x5eb,0x5eb,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5eb,0x5eb,0x5eb,0x5eb,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x735,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x13a4,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x13a4,0x13a4,0x5e8,0x129f,0x5e8,0x5e8,0x5e8,0x5f1,
-0x5f1,0x5f1,0x5f1,0x1326,0x1326,0x5e8,0x5eb,0x5eb,0x5ee,0x5e8,0x5e8,0x5e8,0xbf7,0xbf4,0xbf7,0xbf4,
-0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0x732,0x732,0x732,0x732,0x732,0x732,
-0x732,0x732,0x732,0x732,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x13a4,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x60c,0x60c,0x60c,0x60c,0x60c,0x60c,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
-0xb49,0xb49,0xb49,0xb49,0x615,0x615,0x95a,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x60c,0x60c,
-0xbfa,0xd7d,0x1b21,0x1b21,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x615,0x60f,0x612,0x618,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x615,0x60f,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,
-0x615,0x60f,0x615,0x60f,0x615,0x60f,0x612,0x618,0x612,0x618,0x615,0x60f,0x615,0x60f,0x615,0x60f,
-0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x612,0x615,0x60f,0x612,0x615,0x60f,0x612,0x618,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x60f,0x615,0x918,0x91b,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,
-0x1b21,0x1b21,0x1b21,0x1b21,0x612,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x60f,0x612,0x60f,0x60f,
-0x612,0x612,0x60f,0x60f,0x612,0x612,0x60f,0x612,0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x60f,0x612,
-0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x612,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x618,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x61b,0x61b,0x61b,0x61b,0xfe1,0xfe1,0xfe1,0x14e5,
-0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x16ef,0x16ef,0x864,0x86a,0x86a,0x876,0x876,0x867,0x85e,0x867,
-0x85e,0x867,0x85e,0x867,0x85e,0x867,0x85e,0x867,0x62a,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,
-0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,
-0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,
-0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
-0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
-0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,
-0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x717,0x717,0x717,0x717,
-0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x738,0x738,0x738,0x738,
-0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,
-0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0xc48,0x8c7,0x8be,0x8bb,
-0x8c1,0x8c4,0x74d,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x8cd,0x74d,0x74d,0x74d,
-0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,
-0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x8ca,0x8ca,
-0x753,0x8dc,0x8df,0x8e5,0x80a,0x816,0x8fa,0x813,0x8d3,0x8d0,0x8d3,0x8d0,0x8d9,0x8d6,0x8d9,0x8d6,
-0x8d3,0x8d0,0x810,0x8e5,0x8d3,0x8d0,0x8d3,0x8d0,0x8d3,0x8d0,0x8d3,0x8d0,0x8eb,0x8f1,0x8ee,0x8ee,
-0x759,0x795,0x795,0x795,0x795,0x795,0x795,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,
-0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x75c,0x777,0x756,0x77d,0x780,
-0x77a,0x792,0x792,0x792,0x792,0x792,0x792,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,
-0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x75c,0x777,0x756,0x777,0xc4b,
-0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
-0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
-0x7f8,0x7f8,0x1299,0x1299,0x1299,0x1299,0x1299,0x7fb,0x810,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
-0x813,0x813,0x933,0x933,0x933,0x933,0x819,0x819,0x8e8,0x8f7,0x8f7,0x8f7,0x8f7,0x8f4,0x80d,0x8e2,
-0xb1c,0xb1c,0xb1c,0xc5d,0xc7b,0xc78,0xb3a,0x8b8,0x81f,0x81c,0x81f,0x822,0x81c,0x81f,0x81c,0x81f,
-0x81c,0x81f,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,
-0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81c,0xc7e,0x831,0x82b,0x831,0x82b,0x831,0x82b,0x831,
-0x82b,0x831,0x82b,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,
-0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x831,0x82b,0x82e,0x82b,0x82e,
-0x82b,0x82e,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,
-0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82b,0x82b,0x82b,0x82b,0x831,0x82b,0x831,0x82b,0x831,
-0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x831,0x82b,0x82b,0x82b,0x82b,0x82b,0x82e,0x831,0x831,0x82e,
-0x82e,0x82e,0x82e,0x900,0x903,0x834,0x837,0xc66,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x840,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,
-0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,
-0xd62,0xd62,0xe91,0x843,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
-0xd5c,0xd5c,0xd5c,0xd5c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,
-0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,
-0x84c,0x84c,0x84c,0x1a6a,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
-0x912,0x912,0x912,0x912,0x912,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0xd65,0xd65,0xd65,0xd65,0x915,
-0x915,0x915,0x915,0x915,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,
-0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,
-0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0xd65,0xd65,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,
-0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,
-0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
-0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
-0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
-0x855,0x855,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,
-0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0x110a,0x110a,0x110a,0x110a,0x858,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x85b,0x85b,
-0x858,0x85b,0x858,0x85b,0x85b,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x85b,
-0x858,0x85b,0x858,0x85b,0x85b,0x858,0x858,0x85b,0x85b,0x85b,0x858,0x858,0x858,0x858,0x14a0,0x14a0,
-0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
-0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
-0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
-0x12d8,0x12d8,0x12d8,0x12d8,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0xd5c,0xc69,0xc69,0xc69,
-0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0x90f,0x90f,0x90f,0x90f,
-0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,
-0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0xc69,0xc69,0xc69,
-0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0x912,0x912,0x912,0x912,
-0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
-0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0xd65,0x99c,0x97e,0x97e,0x97e,
-0x97e,0x978,0x97e,0x97e,0x990,0x97e,0x97e,0x97b,0x987,0x98d,0x98d,0x98d,0x98d,0x98d,0x990,0x978,
-0x984,0x978,0x978,0x978,0x96c,0x96c,0x978,0x978,0x978,0x978,0x978,0x978,0x993,0x993,0x993,0x993,
-0x993,0x993,0x993,0x993,0x993,0x993,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
-0x97b,0x96c,0x978,0x96c,0x978,0x96c,0x98a,0x981,0x98a,0x981,0x999,0x999,0x9a8,0x9a8,0x9a8,0x9a8,
-0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,
-0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9ab,0x9ab,0x9ab,0x9ab,
-0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,
-0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ae,0x9ae,0x9ae,0x9ae,
-0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,
-0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b1,0x9b1,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9b4,0x9b4,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9bd,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9bd,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0xa4d,0xa4d,0xfc6,0xa4d,0xa4d,0xa4d,0xa50,0xa4d,0xfc6,0xa4d,0xa4d,0xfbd,
-0xa47,0xa3b,0xa3b,0xa3b,0xa3b,0xa4a,0xa3b,0xfae,0xfae,0xfae,0xa3b,0xa3e,0xa47,0xa41,0xfb4,0xfc0,
-0xfc0,0xfae,0xfae,0xfc6,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xa53,0xa53,
-0xa44,0xa44,0xa44,0xa44,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4a,0xa4a,0xa3b,0xa3b,0xfc6,0xfc6,
-0xfc6,0xfc6,0xfae,0xfae,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,
-0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,
-0xa4d,0xa4d,0xa4d,0xa4d,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6b,0xa71,0xa6e,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,
-0x1140,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa83,0xa83,0xa83,0xaa7,0xaa7,0xaa7,0xaaa,0xaaa,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
-0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xa8f,0xa8f,0xaa4,0xa86,0xa86,0xa86,0xa86,0xa86,
-0xa86,0xa86,0xaa4,0xaa4,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
-0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
-0xaa7,0xaa7,0xaa7,0xaa7,0xacb,0xacb,0xacb,0xacb,0xacb,0xab6,0xab6,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xace,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xaef,0xaef,0xaef,0xaef,
-0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
-0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xafb,0xafb,0xafb,0xafb,
-0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,
-0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb13,0xb13,0xb13,0xb13,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb1f,0xb1f,0xb1f,0xb1f,
-0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,
-0xb1f,0xb1f,0xb1f,0xb1f,0x13aa,0x13aa,0x13aa,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0xb22,0xb22,0xb22,0xb22,
-0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,
-0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0x1ae8,0x1ae8,
-0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb28,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5eb,0x5eb,0x5eb,0x5eb,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5eb,0x5eb,0x5eb,0x5eb,0x5e8,0x5ee,0x5e8,0x5e8,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,
+0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0x5fa,0xb6d,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x603,0x600,0x603,0x600,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x75c,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x5fa,0x5fa,0x84c,0x84c,0x5fa,0x5fa,0x5fa,0x5fa,0x5fd,0x5fd,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x5fa,0x852,0x84f,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0xb6d,0xc63,0xb6d,0xb6d,0xb6d,0x606,0x606,0x606,0x606,
+0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,
+0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x765,0x765,0x765,0x765,
+0x765,0x765,0x765,0x765,0x765,0x765,0x60c,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,
+0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xdd1,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,
+0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x612,0x612,0x612,0x612,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76e,0x76e,0x76e,0x76e,
+0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x615,0x615,0x76e,0x76e,
+0x76e,0x76e,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0x774,0x774,0x618,0x771,
+0x771,0x771,0x771,0x771,0x771,0x771,0x618,0x618,0x618,0x618,0x61b,0x61b,0x61b,0x61b,0x774,0x774,
+0x61b,0x61b,0x774,0x774,0x618,0x618,0x618,0x618,0x774,0x774,0x61b,0x61b,0x774,0x774,0x618,0x618,
+0x618,0x618,0x774,0x774,0x771,0x618,0x61b,0x774,0x618,0x618,0x771,0x774,0x774,0x774,0x61b,0x61b,
+0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x774,0x771,
+0x774,0x771,0x618,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x618,0x618,0x771,0xb73,0xb73,0xb73,0xb73,
+0xb73,0xb73,0xb73,0xb73,0xc69,0xc69,0xc69,0xc69,0xc69,0xcd8,0xcd8,0xc69,0x621,0x621,0x621,0x621,
+0x61e,0x77d,0x77d,0x61e,0x61e,0x777,0x61e,0x61e,0x61e,0x61e,0x777,0x777,0x61e,0x61e,0x61e,0x61e,
+0xdda,0xdda,0xc6c,0xc6c,0xe61,0xb76,0x621,0x621,0x77a,0x624,0x77a,0x621,0x61e,0x61e,0x61e,0x61e,
+0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,
+0x61e,0x61e,0x61e,0x61e,0x61e,0x621,0x621,0x621,0x61e,0x61e,0x61e,0x61e,0x77d,0x61e,0x77d,0x61e,
+0x61e,0x61e,0x61e,0x61e,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
+0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x77d,0x77d,0x627,0x77d,
+0x777,0x777,0x61e,0x777,0x77a,0x777,0x777,0x61e,0x777,0x77d,0x627,0x77d,0xb76,0xb76,0xc6f,0xc6f,
+0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xe5e,0xf1b,0x62a,0x62a,0x62a,0x62a,
+0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,
+0x62d,0x1473,0x1473,0x1473,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x15b4,0x633,0x633,0x633,
+0x633,0x1473,0x62d,0x62d,0x633,0x633,0x1476,0x1476,0x639,0x639,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x1473,0x62d,0x62d,0x62d,
+0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x62d,0x783,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x1473,0x62d,0x1473,0x62d,0x62d,0x62d,0x62d,0x1473,0x1473,0x1473,0x62d,0x1368,0x62d,0x62d,0x62d,0x636,
+0x636,0x636,0x636,0x13ef,0x13ef,0x62d,0x630,0x630,0x633,0x62d,0x62d,0x62d,0xc75,0xc72,0xc75,0xc72,
+0xc75,0xc72,0xc75,0xc72,0xc75,0xc72,0xc75,0xc72,0xc75,0xc72,0x780,0x780,0x780,0x780,0x780,0x780,
+0x780,0x780,0x780,0x780,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x62d,0x62d,0x62d,0x62d,0x1473,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x62d,0x62d,0x62d,0x1473,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x651,0x651,0x651,0x651,0x651,0x651,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x654,0x654,0x654,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,
+0xbc7,0xbc7,0xbc7,0xbc7,0x65a,0x65a,0x9ae,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x651,0x651,
+0xc78,0xdfe,0x1c0e,0x1c0e,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,
+0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,
+0x657,0x65d,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,
+0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,
+0x65a,0x654,0x657,0x65d,0x65a,0x654,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,
+0x65a,0x654,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,
+0x65a,0x654,0x65a,0x654,0x65a,0x654,0x657,0x65d,0x657,0x65d,0x65a,0x654,0x65a,0x654,0x65a,0x654,
+0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x657,0x65a,0x654,0x657,0x65a,0x654,0x657,0x65d,
+0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,
+0x654,0x65a,0x96c,0x96f,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
+0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x657,0x654,0x657,0x657,0x657,0x657,0x657,0x657,0x654,0x657,0x654,0x654,
+0x657,0x657,0x654,0x654,0x657,0x657,0x654,0x657,0x654,0x657,0x654,0x654,0x657,0x654,0x654,0x657,
+0x654,0x657,0x654,0x654,0x657,0x654,0x657,0x657,0x654,0x654,0x654,0x657,0x654,0x654,0x654,0x654,
+0x654,0x657,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x657,0x657,0x654,0x654,0x657,0x654,0x657,0x654,
+0x654,0x654,0x654,0x654,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,
+0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,
+0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x65d,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,
+0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x660,0x660,0x660,0x660,0x1089,0x1089,0x1089,0x15b7,
+0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x17cd,0x17cd,0x8b5,0x8bb,0x8bb,0x8c7,0x8c7,0x8b8,0x8af,0x8b8,
+0x8af,0x8b8,0x8af,0x8b8,0x8af,0x8b8,0x8af,0x8b8,0x66f,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x66f,
+0x669,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x66f,
+0x669,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66c,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,
+0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
+0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
+0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x768,0x768,0x768,0x768,0x768,0x768,
+0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x765,0x765,0x765,0x765,
+0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x786,0x786,0x786,0x786,
+0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,
+0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0xcc6,0x918,0x90f,0x90c,
+0x912,0x915,0x79b,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x91e,0x79b,0x79b,0x79b,
+0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,
+0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x91b,0x91b,
+0x7a1,0x92d,0x930,0x936,0x858,0x867,0x94e,0x864,0x924,0x921,0x924,0x921,0x92a,0x927,0x92a,0x927,
+0x924,0x921,0x85e,0x936,0x924,0x921,0x924,0x921,0x924,0x921,0x924,0x921,0x93c,0x942,0x945,0x93f,
+0x7a7,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,
+0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7aa,0x7c5,0x7a4,0x7cb,0x7ce,
+0x7c8,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,
+0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7aa,0x7c5,0x7a4,0x7c5,0xcc9,
+0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
+0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
+0x846,0x846,0x1362,0x1362,0x1362,0x1362,0x1362,0x849,0x85e,0x861,0x861,0x861,0x861,0x861,0x861,0x861,
+0x861,0x861,0x987,0x987,0x987,0x987,0x86a,0x86a,0x939,0x94b,0x94b,0x94b,0x94b,0x948,0x85b,0x933,
+0xb9a,0xb9a,0xb9a,0xcdb,0xcf9,0xcf6,0xbb8,0x909,0x870,0x86d,0x870,0x873,0x86d,0x870,0x86d,0x870,
+0x86d,0x870,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x870,0x870,0x86d,0x870,0x870,0x86d,0x870,0x870,
+0x86d,0x870,0x870,0x86d,0x870,0x870,0x86d,0x86d,0xcfc,0x882,0x87c,0x882,0x87c,0x882,0x87c,0x882,
+0x87c,0x882,0x87c,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,
+0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x882,0x87c,0x87f,0x87c,0x87f,
+0x87c,0x87f,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87f,0x87f,0x87c,0x87f,0x87f,0x87c,0x87f,0x87f,
+0x87c,0x87f,0x87f,0x87c,0x87f,0x87f,0x87c,0x87c,0x87c,0x87c,0x87c,0x882,0x87c,0x882,0x87c,0x882,
+0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x882,0x87c,0x87c,0x87c,0x87c,0x87c,0x87f,0x882,0x882,0x87f,
+0x87f,0x87f,0x87f,0x954,0x957,0x885,0x888,0xce4,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x891,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,
+0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,
+0xde3,0xde3,0xf1e,0x894,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,
+0xddd,0xddd,0xddd,0xddd,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,
+0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,
+0x89d,0x89d,0x89d,0x1b51,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,
+0x966,0x966,0x966,0x966,0x966,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0xde6,0xde6,0xde6,0xde6,0x969,
+0x969,0x969,0x969,0x969,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,
+0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,
+0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0xde6,0xde6,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,
+0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,
+0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,
+0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,
+0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,
+0x8a6,0x8a6,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,
+0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0x11d0,0x11d0,0x11d0,0x11d0,0x8a9,0x8a9,0x8a9,0x8a9,
+0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,
+0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8ac,0x8ac,
+0x8a9,0x8ac,0x8a9,0x8ac,0x8ac,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8ac,
+0x8a9,0x8ac,0x8a9,0x8ac,0x8ac,0x8a9,0x8a9,0x8ac,0x8ac,0x8ac,0x8a9,0x8a9,0x8a9,0x8a9,0x1572,0x1572,
+0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,
+0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,
+0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,
+0x13a1,0x13a1,0x13a1,0x13a1,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0xddd,0xce7,0xce7,0xce7,
+0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0x963,0x963,0x963,0x963,
+0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,
+0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0xce7,0xce7,0xce7,
+0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0x966,0x966,0x966,0x966,
+0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,
+0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0xde6,0x9fc,0x9d8,0x9d8,0x9d8,
+0x9d8,0x9d2,0x9d8,0x9d8,0x9ed,0x9d8,0x9d8,0x9e7,0x9e4,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ed,0x9d2,
+0x9de,0x9d2,0x9d2,0x9d2,0x9c0,0x9c0,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9f0,0x9f0,0x9f0,0x9f0,
+0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,
+0x9d5,0x9c6,0x9d2,0x9c6,0x9d2,0x9c3,0x9e1,0x9db,0x9e1,0x9db,0x9f6,0x9f6,0xa05,0xa05,0xa05,0xa05,
+0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,
+0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa08,0xa08,0xa08,0xa08,
+0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,
+0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa0b,0xa0b,0xa0b,0xa0b,
+0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
+0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa14,0xa14,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa0e,0xa0e,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa11,0xa11,0xa14,0xa14,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa1a,0xa1d,0xa1d,0xa1d,
+0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,
+0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1a,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,
+0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,
+0xa1d,0xa1d,0xa1d,0xa1d,0xabf,0xabf,0x106b,0xabf,0xabf,0xabf,0xac2,0xabf,0x106b,0xabf,0xabf,0x1062,
+0xab9,0xaad,0xaad,0xaad,0xaad,0xabc,0xaad,0x1053,0x1053,0x1053,0xaad,0xab0,0xab9,0xab3,0x1059,0x1065,
+0x1065,0x1053,0x1053,0x106b,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xac5,0xac5,
+0xab6,0xab6,0xab6,0xab6,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabc,0xabc,0xaad,0xaad,0x106b,0x106b,
+0x106b,0x106b,0x1053,0x1053,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,
+0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,
+0xabf,0xabf,0xabf,0xabf,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,
+0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,
+0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,
+0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xadd,0xae3,0xae0,
+0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,
+0x1206,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,
+0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,
+0xae0,0xae0,0xae0,0xae0,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,
+0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,
+0xaf5,0xaf5,0xaf5,0xaf5,0xb25,0xb25,0xb25,0xb28,0xb28,0xb25,0xb25,0xb25,0xb22,0xb25,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb0a,0xb0a,0xb1f,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,
+0xaf8,0xaf8,0xb1f,0xb1f,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb2b,0xb2b,0xc6c,0xc6c,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
-0xb2b,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
-0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,
-0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0x14e8,
-0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xcf0,0xcf0,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,
-0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,
-0xb55,0xb55,0xced,0xced,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
-0xd3b,0xd3b,0xd3b,0xd3b,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,
-0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,
-0xb58,0xb58,0xb58,0xb58,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb61,0xb6d,0xb73,0xb73,0xb73,0xb67,0xb67,
-0xb67,0xb70,0xb64,0xb64,0xb64,0xb64,0xb64,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb73,
-0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb73,0xb73,0xb73,0xb67,0xb67,0xb73,0xb73,0xb73,
-0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,
-0xb6a,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0x16f2,0x16f2,
-0xb7f,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb76,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
+0xb25,0xb25,0xb25,0xb25,0xb49,0xb49,0xb49,0xb49,0xb49,0xb34,0xb34,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb4c,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb6d,0xb6d,0xb6d,0xb6d,
+0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,
+0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xc63,0xc63,0xc63,0xc63,0xc63,0xb79,0xb79,0xb79,0xb79,
0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb82,0xb82,0xb82,0xb82,
-0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,
-0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb88,0xb88,0xb88,0xb88,
-0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,
-0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0x1aee,
-0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1bba,0x1bba,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb8b,0xb8b,0xb8b,0xb8b,
0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
-0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
-0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe2,0xbe5,
-0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xce4,
-0xce7,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xeeb,0xeeb,0xeeb,0xeeb,
-0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,
-0xcea,0xcea,0xdd7,0xe8b,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xfdb,0x1278,0x1278,
-0xde0,0xde0,0xde0,0xde0,0xde0,0xde6,0xde3,0xefd,0xefd,0xefd,0xefd,0x13e9,0xfed,0x13e9,0x1332,0x1332,
-0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,
-0xc24,0xc24,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0x1104,0x1101,0xff3,0xff0,0xc27,0xc27,0xc27,0xc27,
-0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc2a,0xc2a,0xc2a,0xc2a,
-0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,
-0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2d,0xc2d,0xc2d,0xc33,
-0xc30,0xc57,0xc54,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,
-0xc30,0xc33,0xc30,0xc33,0xc30,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
-0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
-0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc33,0xc30,0xc33,0xc30,0xc2d,0xc2d,0xc2d,0xc2d,
-0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
-0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc33,0xc30,0xc2d,0xc2d,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc3c,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc3c,0xc3c,0xc3c,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc39,0xc36,0xc36,0xc36,
-0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
-0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
-0xcea,0xd56,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xe8b,0xe8b,0xdd7,0xdd7,0xdd7,0xdd7,
-0xdd7,0xdd7,0xeee,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0x129c,0x129c,0x127b,
-0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
-0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
-0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd14,0xd14,0xd14,0xd14,0xd14,0xd11,0xd26,0xd26,0xd26,0xd20,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd20,0xd26,0xd26,0xd26,0xd26,
-0xd1a,0xd1a,0xd23,0xd23,0xd23,0xd23,0xd17,0xd17,0xd17,0xd17,0xd17,0xd1d,0xdec,0xdec,0xdec,0xdec,
-0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xde9,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd20,0xd26,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd1a,0xd1a,0xd1a,
-0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,
-0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,
-0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xdef,0xdef,
-0xdef,0xdef,0xdef,0xdef,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0x110d,0x110d,0xff6,0xff6,0xff6,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
-0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
-0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
-0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
-0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
-0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
-0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
-0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xebb,0xebb,0xe0d,0xe0d,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0x1002,0x1002,0x1005,0x1002,0x1002,
-0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,
-0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,
-0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0x1b30,
-0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,
-0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0x1b2d,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
-0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,
-0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xf06,0xf06,0xf06,0xf06,0x1008,0x1008,0x1008,0x1008,0x1008,
-0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,
-0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,
-0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,
-0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe5b,
-0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,
-0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe61,0xe61,0xe61,0xe61,0xe61,
-0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe67,0xe67,
-0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe64,0xe6d,0x1014,0x100e,0x101d,0x100b,0xe6a,0xe6a,0x100b,0x100b,
-0xe7c,0xe7c,0xe70,0xe7c,0xe7c,0xe7c,0xe73,0xe7c,0xe7c,0xe7c,0xe7c,0xe70,0xe7c,0xe7c,0xe7c,0xe7c,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb9d,0xb9d,0xb9d,0xb9d,
+0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
+0xb9d,0xb9d,0xb9d,0xb9d,0x1479,0x1479,0x1479,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0xba0,0xba0,0xba0,0xba0,
+0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,
+0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0x1bd5,0x1bd5,
+0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba6,0xba3,0xba3,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,
+0xba9,0xba9,0xcea,0xcea,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,
+0xba9,0xba9,0xba9,0xba9,0xcea,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,
+0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,
+0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0x15ba,
+0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xd71,0xd71,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,
+0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,
+0xbd3,0xbd3,0xd6e,0xd6e,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,
+0xdbc,0xdbc,0xdbc,0xdbc,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,
+0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,
+0xbd6,0xbd6,0xbd6,0xbd6,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,
+0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,
+0xbd9,0xbd9,0xbd9,0xbd9,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbdf,0xbeb,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,
+0xbe5,0xbee,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbf1,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe8,0xbe8,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,0xbf1,0xbf1,0xbf1,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbf1,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,
+0xbe8,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0x17d0,0x17d0,
+0xbfd,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbf4,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc06,0xc06,0xc06,0xc06,
+0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,
+0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0x1bdb,
+0x1bdb,0x1bdb,0x1bdb,0x1bdb,0x1bdb,0x1bdb,0x1ca7,0x1ca7,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,
+0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc60,0xc63,
+0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xd65,
+0xd68,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xf78,0xf78,0xf78,0xf78,
+0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
+0xd6b,0xd6b,0xe5e,0xf18,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0x1083,0x1341,0x1341,
+0xe67,0xe67,0xe67,0xe67,0xe67,0xe6d,0xe6a,0xf8a,0xf8a,0xf8a,0xf8a,0x14b8,0x1095,0x14b8,0x13fb,0x13fb,
+0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,
+0xca2,0xca2,0xccf,0xccc,0xccf,0xccc,0xccf,0xccc,0x11ca,0x11c7,0x109b,0x1098,0xca5,0xca5,0xca5,0xca5,
+0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca8,0xca8,0xca8,0xca8,
+0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,
+0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xcab,0xcab,0xcab,0xcb1,
+0xcae,0xcd5,0xcd2,0xcb1,0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcb1,
+0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcb1,0xcae,0xcb1,0xcae,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcb1,0xcae,0xcab,0xcab,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcba,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcba,0xcba,0xcba,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb7,0xcb4,0xcb4,0xcb4,
+0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,
+0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,
+0xd6b,0xdd7,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xf18,0xf18,0xe5e,0xe5e,0xe5e,0xe5e,
+0xe5e,0xe5e,0xf7b,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1365,0x1365,0x1344,
+0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,
+0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,
+0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd95,0xd95,0xd95,0xd95,0xd95,0xd92,0xda7,0xda7,0xda7,0xda1,
+0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda1,0xda7,0xda7,0xda7,0xda7,
+0xd9b,0xd9b,0xda4,0xda4,0xda4,0xda4,0xd98,0xd98,0xd98,0xd98,0xd98,0xd9e,0xe73,0xe73,0xe73,0xe73,
+0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe70,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,
+0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda1,0xda7,
+0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xd9b,0xd9b,0xd9b,
+0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,
+0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,
+0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xe76,0xe76,
+0xe76,0xe76,0xe76,0xe76,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0x11d3,0x11d3,0x109e,0x109e,0x109e,
+0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,
+0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,
+0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,
+0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,
+0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,
+0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,
+0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,
0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
-0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,
-0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,
-0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
-0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
-0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,
-0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,
-0xeeb,0xeeb,0xeeb,0xee8,0xee8,0xee8,0xee8,0xee8,0x114f,0x139b,0x139b,0x139b,0x139b,0x131d,0x131d,0x131d,
-0x139e,0x1320,0x1320,0x139e,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x17a6,0x17a6,0x17a6,0x17a6,0x186c,
-0xf00,0xf00,0xf00,0xf00,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,
-0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,
-0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
-0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fd,0x1875,0x1875,0x18f6,0x1875,0x1bd8,0x17ac,0x1335,0x1158,0xf03,0xf03,
-0xf21,0xf21,0xf21,0xf21,0xf33,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,
-0xf3c,0xf3c,0xf3f,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,
-0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf24,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf36,
-0xf21,0xf36,0xf33,0xf33,0xf48,0xf45,0xf48,0xf48,0xf48,0xf45,0xf45,0xf48,0xf45,0xf48,0xf45,0xf48,
-0xf45,0x102f,0x102f,0x102f,0x116d,0x1026,0x102f,0x1026,0xf45,0xf48,0xf45,0xf45,0x1026,0x1026,0x1026,0x1026,
-0x1029,0x102c,0x116d,0x116d,0xf4b,0xf4b,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1041,0x1038,0x1041,0x1038,0x1038,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1041,0x1038,0x1041,0x1038,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
-0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
-0xf51,0xf51,0xf51,0xf51,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,
-0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,
-0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,
-0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,
-0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,
-0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xfae,0xfc6,0xfbd,0xfc3,0xfc3,0xfc6,0xfc6,0xfbd,
-0xfbd,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc6,0xfc6,0xfc6,0xfae,0xfae,0xfae,0xfae,0xfc6,0xfc6,0xfc6,
-0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfae,0xfbd,0xfc0,0xfae,0xfae,0xfc3,
-0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfb1,0xfc6,0xfc3,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,
-0xfba,0xfba,0x1137,0x1137,0x1134,0x1131,0xfb7,0xfb7,0xfde,0xfde,0xfde,0xfde,0x129c,0x129c,0x127b,0x127b,
-0x127b,0x1278,0x1278,0x1278,0x1278,0x127b,0x13a1,0x127b,0x127b,0x127b,0x1278,0x127b,0x129c,0x1278,0x1278,0x1278,
-0x127b,0x127b,0x1278,0x1278,0x127b,0x1278,0x1278,0x127b,0xff9,0xff9,0xff9,0xff9,0xff9,0xff6,0xff6,0xff9,
-0xff9,0xff9,0xff9,0xff9,0xff9,0x14f4,0x14f4,0x14f4,0x110d,0xff6,0xff6,0xff6,0xff6,0x12a8,0x1284,0x1284,
-0x1284,0x1284,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x101a,0x101a,0x1017,0x1011,0x1017,0x1011,0x1017,0x1011,
-0x1017,0x1011,0x100e,0x100e,0x100e,0x100e,0x1023,0x1020,0x100e,0x116a,0x13f5,0x13f8,0x13f8,0x13f5,0x13f5,0x13f5,
-0x13f5,0x13f5,0x13fb,0x13fb,0x150f,0x1503,0x1503,0x1500,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1035,0x1032,0x1032,0x1041,0x1038,0x1341,0x133e,0x16fb,0x1341,0x133e,0x1404,0x1401,0x1512,0x1512,0x1518,0x1512,
-0x1518,0x1512,0x1518,0x1512,0x1518,0x1512,0x1518,0x1512,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x103b,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,
-0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1041,0x1038,0x1044,0x1044,0x104a,0x1050,0x1050,0x1050,0x1050,0x1050,
-0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
-0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x104a,0x1044,0x1044,0x1044,0x1044,0x104a,0x104a,
-0x1044,0x1044,0x104d,0x140d,0x140a,0x140a,0x1050,0x1050,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,
-0x1047,0x1047,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,
-0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,
-0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,
-0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,
-0x1071,0x1071,0x1071,0x1074,0x1071,0x1071,0x1077,0x1077,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,
-0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,
-0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
-0x1083,0x1083,0x1083,0x1083,0x1086,0x107d,0x108c,0x1089,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
-0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
-0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1347,0x1344,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
-0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109b,0x111f,0x108f,0x108f,0x108f,0x1095,0x1413,0x1413,0x1413,0x1413,
-0x1413,0x1413,0x1413,0x1413,0x1092,0x1092,0x1095,0x10a1,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
-0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
-0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x1527,0x1524,0x1527,0x1524,0x152a,0x152a,0x1704,0x1413,
-0x10aa,0x10aa,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,
-0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,
-0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10bc,0x10bc,0x10bc,0x10bc,
-0x10bc,0x10bc,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b6,0x10b6,0x10b6,0x1116,0x10bf,0x10ce,0x10ce,0x10ce,0x10ce,
-0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10b9,0x10b9,0x10b9,0x10b9,
-0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,
-0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10fb,0x10fb,0x10fb,0x10fb,
-0x1110,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,
-0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fe,0x10fe,0x10fe,0x10fe,
-0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,
-0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x110a,0x110a,0x110a,0x110a,
-0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x149d,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
-0x1785,0x1785,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x117f,0x117f,0x117f,0x117f,
-0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,
-0x117f,0x117f,0x1176,0x1176,0x1179,0x1179,0x117f,0x1176,0x1176,0x1176,0x1176,0x1176,0x1185,0x1185,0x1185,0x1185,
-0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
-0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11ac,0x11ac,0x11ac,0x11ac,
-0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,
-0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11a9,0x11af,0x11bb,0x11bb,0x11bb,0x11bb,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11c1,0x11c1,0x11c1,0x11c1,
-0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x12ed,0x11c7,0x12f0,
-0x11c7,0x11c7,0x11c7,0x11c7,0x11c4,0x11c4,0x11c4,0x11c7,0x1707,0x170a,0x1932,0x192f,0x11ca,0x11ca,0x11ca,0x11d9,
-0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,
-0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11cd,
-0x11d9,0x11d9,0x11ca,0x11ca,0x11ca,0x11ca,0x11d9,0x11d9,0x11ca,0x11ca,0x11d9,0x11d9,0x11eb,0x11eb,0x11eb,0x11eb,
-0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11ee,0x11eb,0x11eb,0x11eb,
-0x11eb,0x11eb,0x11eb,0x11e5,0x11e5,0x11e5,0x11eb,0x11e8,0x1530,0x1533,0x1536,0x1536,0x11fd,0x11fd,0x11fd,0x11fd,
-0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11f1,0x11fd,0x11f1,0x11f1,
-0x11f1,0x1206,0x1206,0x11f1,0x11f1,0x1206,0x11fd,0x1206,0x1206,0x11fd,0x11f1,0x11f4,0x11fd,0x11fd,0x11fd,0x11fd,
-0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
-0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x1218,0x1218,0x1218,0x1218,
-0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,
-0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1230,0x1230,0x1230,0x1230,
-0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,
-0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x122d,0x122d,0x122d,0x1239,0x1239,0x1239,0x1239,
-0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,
-0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1248,0x1248,0x1248,0x1248,
+0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
+0xf48,0xf48,0xe94,0xe94,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0x10ad,0x10ad,0x10b0,0x10b3,0x10ad,
+0x10a7,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,
+0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,
+0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,
+0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,
+0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,
+0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0x1c1d,
+0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,
+0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0x1c1a,
+0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,
+0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,
+0xf42,0xf42,0xf42,0xf42,0xf42,0xf42,0xf42,0xf42,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,
+0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xf93,0xf93,0xf93,0xf93,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,
+0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,
+0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,
+0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,
+0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,
+0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,
+0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee2,
+0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,
+0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee8,0xee8,0xee8,0xee8,0xee8,
+0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef1,0xef1,
+0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xeee,0xef7,0x10c2,0x10bc,0x10ce,0x10b9,0xeeb,0xeeb,0x10b9,0x10b9,
+0xf06,0xf06,0xefa,0xf06,0xf06,0xf06,0xefd,0xf06,0xf06,0xf06,0xf06,0xefa,0xf06,0xf06,0xf06,0xf06,
+0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,
+0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
+0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
+0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,
+0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,
+0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,
+0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,
+0xf78,0xf78,0xf78,0xf75,0xf75,0xf75,0xf75,0xf75,0x1215,0x146a,0x146a,0x146a,0x146a,0x13e6,0x13e6,0x13e6,
+0x146d,0x13e9,0x13e9,0x146d,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x1884,0x1884,0x1884,0x1884,0x194a,
+0xf8d,0xf8d,0xf8d,0xf8d,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,
+0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,
+0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,
+0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d5,0x1953,0x1953,0x19d4,0x1953,0x1cc5,0x188a,0x13fe,0x121e,0xf90,0xf90,
+0xfb1,0xfb1,0xfb1,0xfb1,0xfc6,0xfcf,0xfd2,0xfcf,0xfd2,0xfcf,0xfd2,0xfcf,0xfd2,0xfcf,0xfd2,0xfcf,
+0xfcf,0xfcf,0xfd2,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,
+0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfb4,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfc9,
+0xfb1,0xfc9,0xfc6,0xfc6,0xfe1,0xfde,0xfe1,0xfe1,0xfe1,0xfde,0xfde,0xfe1,0xfe4,0xfe7,0xfe4,0xfe7,
+0xfe4,0x10da,0x10da,0x10da,0x1236,0x10d7,0x10da,0x10d7,0xfd8,0xfdb,0xfd8,0xfde,0x10dd,0x10dd,0x10dd,0x10dd,
+0x10e0,0x10e3,0x1236,0x1236,0xfea,0xfea,0x10f8,0x10f5,0x10f8,0x10f5,0x10f8,0x10f5,0x10f8,0x10f5,0x10f8,0x10f5,
+0x10f8,0x10f5,0x10f8,0x10f5,0x10ec,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,
+0x10f2,0x10ec,0x10f2,0x10ec,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,
+0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,
+0xff0,0xff0,0xff0,0xff0,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,
+0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,
+0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,
+0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,
+0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,
+0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1053,0x106b,0x1062,0x1068,0x1068,0x106b,0x106b,0x1062,
+0x1062,0x1068,0x1068,0x1068,0x1068,0x1068,0x106b,0x106b,0x106b,0x1053,0x1053,0x1053,0x1053,0x106b,0x106b,0x106b,
+0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x1053,0x1062,0x1065,0x1053,0x1053,0x1068,
+0x1068,0x1068,0x1068,0x1068,0x1068,0x1056,0x106b,0x1068,0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,
+0x105f,0x105f,0x11fd,0x11fd,0x11fa,0x11f7,0x105c,0x105c,0x1086,0x1086,0x1086,0x1086,0x1365,0x1365,0x1344,0x1344,
+0x1344,0x1341,0x1341,0x1341,0x1341,0x1344,0x1470,0x1344,0x1344,0x1344,0x1341,0x1344,0x1365,0x1341,0x1341,0x1341,
+0x1344,0x1344,0x1341,0x1341,0x1344,0x1341,0x1341,0x1344,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x109e,0x109e,0x10a1,
+0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x15cc,0x15cc,0x15cc,0x11d3,0x109e,0x109e,0x109e,0x109e,0x1371,0x134d,0x134d,
+0x134d,0x134d,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x10c8,0x10c8,0x10c5,0x10bf,0x10c5,0x10bf,0x10c5,0x10bf,
+0x10c5,0x10bf,0x10cb,0x10cb,0x10cb,0x10cb,0x10d4,0x10d1,0x10cb,0x1233,0x14ca,0x14c7,0x14c7,0x14ca,0x14c4,0x14c4,
+0x14c4,0x14ca,0x14cd,0x14cd,0x15e7,0x15db,0x15db,0x15d8,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,
+0x10e9,0x10e6,0x10e6,0x10fe,0x10fb,0x1410,0x140d,0x17d9,0x140a,0x1407,0x14d6,0x14d3,0x15ea,0x15ea,0x15f0,0x15ea,
+0x15f0,0x15ea,0x15f0,0x15ea,0x15f0,0x15ea,0x15f0,0x15ea,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,
+0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,
+0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x1101,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,
+0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10f2,0x10ec,0x1104,0x1104,0x110a,0x1110,0x1110,0x1110,0x1110,0x1110,
+0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,
+0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x110a,0x1104,0x1104,0x1104,0x1104,0x110a,0x110a,
+0x1104,0x1104,0x110d,0x14df,0x14dc,0x14dc,0x1110,0x1110,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,
+0x1107,0x1107,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,
+0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,
+0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,
+0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,
+0x1131,0x1131,0x1131,0x1134,0x1131,0x1131,0x1137,0x1137,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,
+0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,
+0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,
+0x1143,0x1143,0x1143,0x1143,0x1149,0x113d,0x114f,0x114c,0x1146,0x1146,0x1146,0x1143,0x1143,0x1143,0x1143,0x1143,
+0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,
+0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1416,0x1413,0x1164,0x115e,
+0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1161,0x11e5,0x1152,0x1152,0x1152,0x115b,
+0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x1155,0x1155,0x1158,0x1167,0x1164,0x115e,0x1164,0x115e,
+0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,
+0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x15ff,0x15fc,0x15ff,0x15fc,
+0x1602,0x1602,0x17e2,0x14e5,0x1170,0x1170,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
+0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
+0x1173,0x1173,0x1173,0x1173,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,
+0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1179,0x1179,0x1179,0x1179,0x1179,0x117c,0x117c,0x117c,0x11dc,0x1185,
+0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,
+0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
+0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
+0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
+0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
+0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,
+0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,
+0x11c1,0x11c1,0x11c1,0x11c1,0x11d6,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,
+0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11d0,0x11d0,0x11d0,0x11d0,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x156f,0x1863,0x1863,0x1863,
+0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,
0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,
-0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x124e,0x124e,0x125a,0x125d,
-0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,
-0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x1260,0x125d,0x1260,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,
-0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x1260,0x125d,0x125d,0x125d,0x125d,0x125a,0x125a,0x125a,0x124e,
-0x124e,0x124e,0x124e,0x125a,0x125a,0x1254,0x1251,0x1257,0x1257,0x1266,0x1263,0x1263,0x1269,0x1269,0x1269,0x1269,
+0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x123f,0x123f,0x1242,0x1242,0x1248,0x123f,0x123f,0x123f,0x123f,0x123f,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
-0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x126f,0x126f,0x126f,0x126c,
-0x126c,0x126c,0x1269,0x1269,0x1269,0x1269,0x126c,0x1269,0x1269,0x1269,0x126f,0x126c,0x126f,0x126c,0x1269,0x1269,
0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
-0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x126f,0x126c,0x126c,0x1269,0x1269,0x1269,0x1269,
-0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1be1,0x1a07,0x1a07,0x1a07,0x1a07,
-0x1a07,0x1a07,0x1a07,0x1a0a,0x1a04,0x1bf3,0x1bf3,0x1bf3,0x1bf6,0x1bf0,0x1bf6,0x1bf0,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128d,0x128d,0x128d,0x1272,0x1938,0x1398,0x1296,0x1398,0x1398,
-0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1296,0x1398,0x1296,0x127b,0x127b,0x1323,0x1278,
-0x1323,0x1323,0x1323,0x1323,0x1278,0x1278,0x129c,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x127b,0x129c,0x129c,
-0x127b,0x129c,0x1278,0x127b,0x127b,0x127e,0x129c,0x1278,0x1278,0x129c,0x127b,0x127b,0x1395,0x1395,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1287,0x1287,0x1287,0x1287,0x13ad,0x138f,0x1290,0x13ad,0x13ad,0x13ad,
-0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x1836,0x1836,0x1836,0x1836,0x1836,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x1539,0x1539,0x1a88,0x1a88,0x1a88,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x1398,0x1398,0x1296,0x1398,
-0x1398,0x1398,0x1296,0x1398,0x1398,0x1398,0x1290,0x1290,0x1290,0x1290,0x1290,0x1392,0x1395,0x1395,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1293,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1293,0x1395,0x1395,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1416,0x1416,0x19e6,0x1a88,0x1a88,0x1a88,0x1395,0x1395,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1395,0x1395,0x1293,0x1395,0x1293,0x1293,0x1395,0x1395,0x1293,0x12b7,0x12b7,0x12b7,0x12b7,
-0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,
-0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x1341,0x133e,0x1341,0x133e,
-0x1341,0x133e,0x1341,0x133e,0x1341,0x133e,0x1404,0x1518,0x1518,0x1518,0x17b2,0x1926,0x1518,0x1518,0x16fe,0x16fe,
-0x16fe,0x16f8,0x16fe,0x16f8,0x1929,0x1926,0x19e3,0x19e0,0x19e3,0x19e0,0x19e3,0x19e0,0x1365,0x1365,0x1365,0x1365,
-0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,
-0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x137a,0x136b,0x137a,0x1380,
-0x1380,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,
-0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x136b,0x136b,0x136b,0x136b,
-0x136b,0x136b,0x136b,0x136b,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1386,0x1386,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x13b6,0x13b3,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bc,0x13bf,0x13bf,0x13bf,0x13bc,0x13bf,0x13bc,0x13bf,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bc,0x13bf,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,
-0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x1542,0x1542,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1788,0x1788,0x1788,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1788,0x1788,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1542,0x1542,0x1545,0x1545,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x16b3,0x13bf,0x13c2,
-0x13bf,0x13bf,0x13c2,0x1548,0x1548,0x1545,0x1545,0x1788,0x1788,0x1788,0x1788,0x1788,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x16b3,0x1545,0x1545,0x1545,
-0x1788,0x1788,0x1788,0x178b,0x178b,0x178b,0x178b,0x178b,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x13bf,0x1545,0x13c2,0x13c2,0x13bf,0x13bf,0x13c2,0x13c2,
-0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,
-0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,
-0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x13bf,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x16b3,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1788,0x1419,0x1419,0x1419,0x1419,0x1542,0x1542,0x1542,0x1542,
-0x1542,0x1542,0x1545,0x1788,0x1788,0x1788,0x1788,0x170d,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1548,0x1548,0x1545,0x1545,0x1545,0x1545,0x183f,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x14a3,0x13c5,0x13c5,0x13c5,
-0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x13c5,
-0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,
-0x13c5,0x13c5,0x14a3,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x14a3,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,
-0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x16b9,0x16b9,0x178e,
-0x178e,0x13c8,0x13c8,0x13c8,0x13c5,0x13c5,0x13c5,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x1638,0x1638,0x1638,0x1638,
-0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x13cb,0x13cb,0x13cb,0x13cb,
-0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,
-0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13ce,
-0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,
-0x13ce,0x13ce,0x13ce,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13d1,0x13d1,0x13d1,0x13d1,
-0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,
-0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x17bb,0x17bb,0x17b8,0x1710,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x141f,0x141f,0x141f,0x141f,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x154e,0x1422,0x1551,0x1422,0x1422,
-0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1713,
-0x1713,0x1b5d,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x1a8b,0x1a8b,0x142b,0x142b,0x142b,0x143d,
-0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,
-0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x1458,0x1458,0x1458,0x1458,
-0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,
-0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x145e,0x145e,0x145e,0x145e,
-0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,
-0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x19ec,0x1461,0x1461,0x1461,0x1461,
-0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,
-0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1467,0x1467,0x1473,0x1479,
-0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,
-0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1473,
-0x1473,0x1473,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1473,0x1476,0x1479,0x147c,0x147c,
-0x1479,0x147f,0x147f,0x146a,0x146d,0x1719,0x171c,0x171c,0x171c,0x1557,0x1a94,0x1a91,0x1470,0x1470,0x1470,0x1470,
-0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1554,0x1722,0x1725,0x171f,0x1728,0x1728,0x149a,0x149a,0x149a,0x149a,
+0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,
+0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1272,0x1278,
+0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,
+0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,
+0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x13b6,0x1290,0x13b9,0x1290,0x1290,0x1290,0x1290,0x128d,0x128d,0x128d,0x1290,0x17e5,0x17e8,0x1a13,0x1a10,
+0x1293,0x1293,0x1293,0x12a2,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,
+0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,
+0x12a8,0x12a8,0x12a8,0x1296,0x12a2,0x12a2,0x1293,0x1293,0x1293,0x1293,0x12a2,0x12a2,0x1293,0x1293,0x12a2,0x12a2,
+0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,
+0x12b7,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12ae,0x12ae,0x12ae,0x12b4,0x12b1,0x1608,0x160b,0x160e,0x160e,
+0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,
+0x12ba,0x12c6,0x12ba,0x12ba,0x12ba,0x12cf,0x12cf,0x12ba,0x12ba,0x12cf,0x12c6,0x12cf,0x12cf,0x12c6,0x12ba,0x12bd,
+0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,
+0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,
+0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,
+0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,
+0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,
+0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f6,0x12f6,0x12f6,
+0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,
+0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,
+0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,
+0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,
+0x1317,0x1317,0x1323,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,
+0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1329,0x1326,0x1329,0x1326,0x1326,0x1326,
+0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1329,0x1326,0x1326,0x1326,0x1326,
+0x1323,0x1323,0x1323,0x1317,0x1317,0x1317,0x1317,0x1323,0x1323,0x131d,0x131a,0x1320,0x1320,0x132f,0x132c,0x132c,
+0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,
+0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,
+0x1338,0x1338,0x1338,0x1335,0x1335,0x1335,0x1332,0x1332,0x1332,0x1332,0x1335,0x1332,0x1332,0x1332,0x1338,0x1335,
+0x1338,0x1335,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,
+0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1338,0x1335,0x1335,
+0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1cce,
+0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1af1,0x1aeb,0x1ce0,0x1ce0,0x1ce0,0x1ce3,0x1cdd,0x1ce3,0x1cdd,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1356,0x1356,0x1356,0x133b,0x1a19,
+0x1467,0x135f,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x135f,0x1467,0x135f,
+0x1344,0x1344,0x13ec,0x1341,0x13ec,0x13ec,0x13ec,0x13ec,0x1341,0x1341,0x1365,0x1341,0x1341,0x1341,0x1341,0x1341,
+0x1341,0x1344,0x1365,0x1365,0x1344,0x1365,0x1341,0x1344,0x1344,0x1347,0x1365,0x1341,0x1341,0x1365,0x1344,0x1344,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1350,0x1350,0x1350,0x1350,0x147c,0x145e,
+0x1359,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x1914,0x1914,0x1914,0x1914,0x1914,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1611,0x1611,0x1b75,0x1b75,0x1b75,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
+0x1467,0x1467,0x135f,0x1467,0x1467,0x1467,0x135f,0x1467,0x1467,0x1467,0x1359,0x1359,0x1359,0x1359,0x1359,0x1461,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x135c,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x135c,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x14e8,0x14e8,0x1acd,0x1b75,0x1b75,0x1b75,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x135c,0x1464,0x135c,0x135c,0x1464,0x1464,0x135c,
+0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
+0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
+0x140a,0x1407,0x140a,0x1407,0x140a,0x1407,0x140a,0x1407,0x140a,0x1407,0x14d6,0x15f0,0x15f0,0x15f0,0x1890,0x1a04,
+0x15f0,0x15f0,0x17dc,0x17dc,0x17dc,0x17d6,0x17dc,0x17d6,0x1a0a,0x1a07,0x1ac4,0x1ac1,0x1ac4,0x1ac1,0x1ac4,0x1ac1,
+0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
+0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
+0x1449,0x143a,0x1449,0x144f,0x144f,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,
+0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,
+0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
+0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
+0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x1485,0x1482,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,
+0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,
+0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148b,0x148b,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148b,0x148e,0x148e,0x148e,0x148b,0x148e,0x148b,0x148e,0x148b,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x1491,0x148e,0x148e,0x148e,0x148e,0x148b,0x148e,0x148b,0x148b,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148b,
+0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,
+0x148b,0x148b,0x161a,0x161a,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x1866,0x1866,0x1866,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x1866,0x1866,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x1491,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161a,0x161a,0x161d,0x161d,0x148e,0x148e,0x1491,0x1491,
+0x1491,0x1791,0x148e,0x1491,0x148e,0x148e,0x1491,0x1620,0x1620,0x161d,0x161d,0x1866,0x1866,0x1866,0x1866,0x1866,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x161d,0x161d,
+0x1791,0x161d,0x161d,0x161d,0x1866,0x1866,0x1866,0x1869,0x1869,0x1869,0x1869,0x1869,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x148e,0x161d,0x1491,0x1491,
+0x148e,0x148e,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x1491,0x1491,
+0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,
+0x1491,0x148e,0x148e,0x148e,0x1491,0x148e,0x148e,0x148e,0x148e,0x1491,0x1491,0x1491,0x148e,0x1491,0x1491,0x1491,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x1491,0x148e,0x1491,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x1791,0x148e,0x148e,0x148e,0x148e,0x161d,0x161d,0x1866,0x14eb,0x14eb,0x14eb,0x14eb,
+0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161d,0x1866,0x1866,0x1866,0x1866,0x17eb,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1620,0x1620,0x161d,0x161d,0x161d,0x161d,0x191d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161d,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x1575,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,
+0x1494,0x1575,0x1494,0x1494,0x1494,0x1575,0x1494,0x1575,0x1494,0x1575,0x1494,0x1575,0x1494,0x1494,0x1494,0x1575,
+0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1575,0x1575,0x1494,0x1494,0x1494,0x1494,0x1575,0x1494,0x1575,0x1575,
+0x1494,0x1494,0x1494,0x1494,0x1575,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,
+0x1494,0x1797,0x1797,0x186c,0x186c,0x1497,0x1497,0x1497,0x1494,0x1494,0x1494,0x1497,0x1497,0x1497,0x1497,0x1497,
+0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
+0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
-0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x190e,0x190e,0x190e,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x19da,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x1872,0x190e,
-0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1548,0x1545,0x1545,0x1545,0x1545,0x16b6,0x16b6,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x183c,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
-0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
-0x1566,0x1566,0x1566,0x1566,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
-0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
-0x157e,0x157e,0x157e,0x157e,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
-0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
-0x1581,0x1581,0x1581,0x1581,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
-0x15ab,0x15ab,0x15ab,0x159f,0x159f,0x159f,0x15ab,0x15ab,0x159f,0x15ae,0x15a2,0x159f,0x15b4,0x15b4,0x15a8,0x15b4,
-0x15b4,0x15a5,0x17c4,0x1bed,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15b7,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,
-0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15c9,
-0x15d2,0x15d2,0x15d2,0x15d2,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15e7,0x15f0,0x15f0,0x15f0,
-0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
-0x15f0,0x15f0,0x15f0,0x15f0,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,
-0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,
-0x15f9,0x15f9,0x15f9,0x15f9,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
-0x160b,0x160b,0x160b,0x160b,0x1608,0x1608,0x1608,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x1608,
-0x1608,0x15fc,0x1608,0x15ff,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
-0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
-0x160b,0x160b,0x160b,0x160b,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,
-0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,
-0x162f,0x162c,0x162c,0x162c,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,
-0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x163e,0x163e,0x163e,0x163b,0x163b,0x163b,
-0x1638,0x1638,0x1638,0x1638,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1653,0x1653,0x1647,0x1644,0x1644,
-0x1644,0x1644,0x1644,0x1644,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,
-0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1656,0x1656,0x1656,0x1656,0x1656,
-0x1656,0x1656,0x1656,0x1656,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
+0x149a,0x149a,0x149a,0x149d,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
+0x149a,0x149a,0x149a,0x149a,0x149d,0x149d,0x149d,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
+0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,
+0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,
+0x1899,0x1899,0x1896,0x17ee,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14ee,0x14ee,0x14ee,0x14ee,0x14ee,0x14ee,
+0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x1626,
+0x14f4,0x162c,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x1629,0x1629,0x1629,
+0x1629,0x1629,0x162c,0x17f1,0x17f1,0x1c4a,0x189f,0x189f,0x189f,0x189f,0x189f,0x189f,0x189f,0x189f,0x1b78,0x1b78,
+0x14fd,0x14fd,0x14fd,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,
+0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,
+0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,
+0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,
+0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,
+0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1ad3,
+0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,
+0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,
+0x1539,0x1539,0x1545,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,
+0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,
+0x154b,0x154b,0x154b,0x1545,0x1545,0x1545,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1545,
+0x1548,0x154b,0x154e,0x154e,0x154b,0x1551,0x1551,0x153c,0x153f,0x17f7,0x17fa,0x17fa,0x17fa,0x1632,0x1b81,0x1b7e,
+0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x162f,0x1800,0x1803,0x17fd,0x1806,0x1806,
+0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x19ec,0x19ec,0x19ec,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x1abb,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x1950,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1620,0x161d,0x161d,0x161d,
+0x161d,0x1794,0x1794,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x191a,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
-0x165c,0x165c,0x165c,0x165c,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,
-0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,
-0x1680,0x1680,0x1680,0x1680,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1689,0x1689,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
-0x16a1,0x16a1,0x16a1,0x16a1,0x168c,0x169b,0x169b,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x169b,0x168c,0x169e,
-0x169e,0x168c,0x169e,0x168c,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
+0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,
+0x168c,0x168c,0x168c,0x168c,0x1686,0x1686,0x1686,0x167a,0x167a,0x167a,0x1686,0x1686,0x167a,0x1689,0x167d,0x167a,
+0x168f,0x168f,0x1683,0x168f,0x168f,0x1680,0x18a2,0x1cda,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
-0x16a1,0x16a1,0x16a1,0x16a1,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
+0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x1692,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
-0x16aa,0x16aa,0x16aa,0x16aa,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
+0x16aa,0x16aa,0x16aa,0x16a4,0x16ad,0x16ad,0x16ad,0x16ad,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
-0x16b0,0x16b0,0x16b0,0x16b0,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,
-0x16f5,0x16f5,0x16f5,0x16f5,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,
-0x190e,0x190e,0x190e,0x19da,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
-0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
-0x1716,0x1716,0x1716,0x1716,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x175b,0x1758,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
+0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,
+0x16c2,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,
+0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,
+0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,
+0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,
+0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e3,0x16e3,0x16e3,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,
+0x16d7,0x16d7,0x16d7,0x16e3,0x16e3,0x16d7,0x16e3,0x16da,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,
+0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,
+0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,
+0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,
+0x170d,0x170d,0x170d,0x170d,0x170d,0x170a,0x170a,0x170a,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
+0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x171c,0x171c,
+0x171c,0x1719,0x1719,0x1719,0x1716,0x1716,0x1716,0x1716,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x171f,0x171f,0x171f,0x171f,0x171f,0x171f,0x171f,0x1731,
+0x1731,0x1725,0x1722,0x1722,0x1722,0x1722,0x1722,0x1722,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,
+0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1734,
+0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
-0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,
-0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,
-0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
-0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
-0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
-0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
-0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x177c,0x177c,0x177c,0x177c,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x177c,0x177c,0x177c,
-0x177c,0x177c,0x177c,0x177c,0x177c,0x1779,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,
-0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,
-0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,
-0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,
-0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,
-0x187e,0x187e,0x187e,0x187e,0x1af7,0x1a4c,0x1a4c,0x1a4f,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,
-0x179a,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x18e4,0x1797,0x1797,0x1797,0x1797,0x1797,0x1845,0x1845,0x1845,
-0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x1797,0x19c5,0x19c5,0x1a4c,0x1a4c,0x1a4c,0x1a4c,0x1a4c,
-0x1a4c,0x1a4c,0x1a4c,0x1af4,0x1bc6,0x1a4f,0x1a4f,0x1a4f,0x18e1,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,
-0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e1,0x18e1,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,
-0x1b5d,0x1b60,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x193b,0x17be,0x17be,0x17be,0x17be,
-0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1848,0x1845,
-0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x1848,0x18e4,0x18e4,0x1848,0x1848,0x1848,0x1848,0x1848,
-0x1848,0x1848,0x1845,0x17c7,0x1848,0x1848,0x1848,0x1a4c,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x17c7,0x1845,
-0x1845,0x1845,0x1845,0x1845,0x18e1,0x19c5,0x19c5,0x19c5,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,
-0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x18e1,0x17dc,0x17dc,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,
-0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,
-0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,
-0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,
-0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x1827,0x1827,0x1827,
-0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
-0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
-0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,
+0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,
+0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x176a,0x1779,0x1779,0x176a,0x176a,0x176a,0x176a,0x176a,
+0x176a,0x1779,0x176a,0x177c,0x177c,0x176a,0x177c,0x176a,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,
+0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,
+0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,
+0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,
+0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,
+0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,
+0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,
+0x19ec,0x19ec,0x19ec,0x19ec,0x17d3,0x17d3,0x17d3,0x17d3,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,
+0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x1abb,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
+0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
+0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1839,0x1836,0x1833,0x1833,0x1833,0x1833,
+0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x183c,0x183c,0x183c,0x183c,
+0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,
+0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183f,0x183f,0x183f,0x183f,
+0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,
+0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x1851,0x1851,0x1851,0x1851,
0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,
-0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,
-0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x18a8,0x18a8,0x18a8,0x18a8,0x19fe,0x19fe,0x18ab,0x18ab,
-0x18ab,0x18ab,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x18a5,
-0x1896,0x1899,0x189c,0x18ae,0x18ae,0x194d,0x189f,0x189f,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,
-0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,
-0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,
-0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18b4,0x18ba,0x18b7,0x18b7,0x18b7,
-0x18b7,0x18c6,0x18cc,0x18b7,0x18b7,0x18b7,0x18b7,0x18c3,0x18c9,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,
-0x18b7,0x18b7,0x18b7,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,
-0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,
-0x18d5,0x18d5,0x18d5,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,
-0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1bb7,0x1bb7,0x1bb7,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x18e1,0x18e1,0x18e1,0x18e1,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x1a4c,0x1af4,0x19c5,0x19c5,0x19c5,0x19c5,0x1af7,
-0x1af4,0x1bc6,0x19c5,0x1a4c,0x19c5,0x19c5,0x19c5,0x19c5,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x19c5,
-0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,
-0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
-0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
-0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,
-0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,
-0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x1bc9,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
-0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
-0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,
-0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,
-0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
-0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
-0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,
-0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,
-0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,
-0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,
-0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,
-0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,
-0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19aa,0x19aa,0x19aa,0x19c5,0x19c5,0x19c5,0x1af4,0x1af4,0x1a4c,0x1a4c,0x1a4c,
-0x1a4c,0x1a4c,0x1a4c,0x1af4,0x1af4,0x1af4,0x1a4c,0x1a4c,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c8,0x19c8,0x19c5,
-0x19c8,0x19c8,0x1a4c,0x1a4f,0x1a4c,0x1a4c,0x1a4c,0x1a4c,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
-0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
-0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
-0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
-0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a67,0x1a67,0x1a31,0x1a67,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a37,0x1a37,0x1a37,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,
+0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1854,0x1854,0x1854,0x1854,
+0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,
+0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x185a,
+0x185a,0x185a,0x185a,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x1857,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,
+0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,
+0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x1872,0x1872,0x1872,0x1872,
+0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,
+0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x195c,0x195c,0x195c,0x195c,
+0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x1be4,0x1b33,0x1b33,0x1b36,0x1875,0x1875,0x1875,0x1875,
+0x1875,0x1875,0x1875,0x1875,0x1878,0x1926,0x1926,0x1926,0x1926,0x1926,0x1926,0x19c2,0x1875,0x1875,0x1875,0x1875,
+0x1875,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x19bf,0x19bf,
+0x19bf,0x19bf,0x19bf,0x19bf,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1875,0x1aa6,0x1aa6,0x1b33,
+0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1be1,0x1cb3,0x1b36,0x1b36,0x1b36,0x19bf,0x19c2,0x19c2,0x19c2,
+0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19bf,0x19bf,0x1b78,0x1b78,0x1b78,0x1b78,
+0x1b78,0x1b78,0x1b78,0x1b78,0x1c4a,0x1c4d,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1a1c,
+0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x1923,0x1923,0x1923,0x1923,
+0x1923,0x1923,0x1926,0x1923,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x1926,0x19c2,0x19c2,0x1926,
+0x1926,0x1926,0x1926,0x1926,0x1926,0x1926,0x1923,0x18a5,0x1926,0x1926,0x1926,0x1b33,0x1923,0x1923,0x1923,0x1923,
+0x1923,0x1923,0x18a5,0x1923,0x1923,0x1923,0x1923,0x1923,0x19bf,0x1aa6,0x1aa6,0x1aa6,0x1923,0x1923,0x1923,0x1923,
+0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x19bf,0x18ba,0x18ba,0x18b7,0x18b7,
+0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,
+0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18ba,0x18ba,0x18ba,0x18ba,
+0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,
+0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x1908,0x1908,0x1908,0x1908,
+0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,
+0x1908,0x1905,0x1905,0x1905,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1908,0x1908,0x1908,0x1908,
+0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,
+0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x192c,0x192c,0x192c,0x192c,
+0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,
+0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192f,0x192f,0x192f,0x192f,
+0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,
+0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x1bed,
+0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1986,0x1986,0x1986,0x1986,
+0x1ae5,0x1ae5,0x1989,0x1989,0x1989,0x1989,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,
+0x1971,0x1971,0x1971,0x1983,0x1974,0x1977,0x197a,0x198c,0x198c,0x1a2e,0x197d,0x197d,0x1986,0x1986,0x1986,0x1986,
+0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,
+0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x19a7,0x19a7,0x19a7,0x19a7,
+0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x1992,
+0x1998,0x1995,0x1995,0x1995,0x1995,0x19a4,0x19aa,0x1995,0x1995,0x1995,0x1995,0x19a1,0x19a7,0x1995,0x1995,0x1995,
+0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,
+0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19b3,0x19b3,0x19b3,0x19b3,
+0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1bd8,0x1bd8,0x1bd8,0x1bd8,
+0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1ca4,0x1ca4,0x1ca4,0x19b9,0x19b9,0x19b9,0x19b9,
+0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,
+0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19bf,0x19bf,0x19bf,0x19bf,
+0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1b33,0x1be1,0x1aa6,
+0x1aa6,0x1aa6,0x1aa6,0x1be4,0x1be1,0x1cb3,0x1aa6,0x1b33,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x19bf,0x19bf,0x19bf,0x19bf,
+0x19bf,0x19bf,0x19bf,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,
+0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x19c8,0x19c8,0x19c8,0x19c8,
+0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,
+0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19cb,0x19cb,0x19cb,0x19cb,
+0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,
+0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x1cb6,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x1a43,0x1a43,0x1a43,0x1a43,
0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,
-0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
-0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
-0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,
-0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,
-0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,
-0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,
-0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
-0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
-0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
-0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
-0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
-0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
-0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
-0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
-0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
-0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,
-0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
-0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
-0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0,0,0,0
+0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a5e,0x1a5e,0x1a5e,0x1a5e,
+0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,
+0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a64,0x1a64,0x1a64,0x1a64,
+0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,
+0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a82,0x1a82,0x1a82,0x1a82,
+0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,
+0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a85,0x1a85,0x1a85,0x1a85,
+0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,
+0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a8e,0x1a8e,0x1a8e,0x1a8e,
+0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,
+0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8b,0x1a8b,0x1a8b,0x1aa6,0x1aa6,0x1aa6,0x1be1,
+0x1be1,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1be1,0x1be1,0x1be1,0x1b33,0x1b33,0x1aa6,0x1aa6,0x1aa6,0x1aa6,
+0x1aa6,0x1aa9,0x1aa9,0x1aa6,0x1aa9,0x1aa9,0x1b33,0x1b36,0x1b33,0x1b33,0x1b33,0x1b33,0x1ae8,0x1ae8,0x1ae8,0x1ae8,
+0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,
+0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1b0f,0x1b0f,0x1b0f,0x1b0f,
+0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,
+0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b18,0x1b18,0x1b18,0x1b18,
+0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b4e,0x1b4e,0x1b18,0x1b4e,
+0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b1e,0x1b1e,0x1b1e,0x1b2a,0x1b2a,0x1b2a,0x1b2a,
+0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,
+0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
+0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
+0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bcf,0x1bcf,0x1bcf,0x1bcf,
+0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,
+0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bf3,0x1bf3,0x1bf3,0x1bf3,
+0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,
+0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c9e,0x1c9e,0x1c9e,0x1c9e,
+0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,
+0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1ca1,0x1ca1,0x1ca1,0x1ca1,
+0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,
+0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1cfb,0x1cfb,0x1cfb,0x1cfb,
+0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cf8,0x1cf8,0x1cf8,
+0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1d3a,0x1d3a,0x1d3a,0x1d3a,
+0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,
+0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0,0,0,0
};
static const UTrie2 propsVectorsTrie={
@@ -3533,17 +3534,17 @@ static const UTrie2 propsVectorsTrie={
propsVectorsTrie_index+5368,
nullptr,
5368,
- 27396,
+ 27416,
0xa40,
0x1578,
0x0,
0x0,
0x110000,
- 0x7ff8,
+ 0x800c,
nullptr, 0, false, false, 0, nullptr
};
-static const uint32_t propsVectors[7260]={
+static const uint32_t propsVectors[7497]={
0x67,0,0,0x67,0,0xe00000,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67,
0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1167,0,0,0x1267,0,
0,0x1367,0,0,0x1467,0,0,0x1567,0,0,0x1667,0,0,0x1767,0,0,
@@ -3590,416 +3591,431 @@ static const uint32_t propsVectors[7260]={
0,0,0x14067,0,0,0x14167,0,0,0x14367,0,0,0x14467,0,0,0x14567,0,
0,0x14667,0,0,0x14767,0,0,0xa0067,0,0xe00000,0xa4f67,0,0xe00000,0xa5f67,0,0xe00000,
0xac567,0,0xe00000,0xad167,0,0xe00000,0xb0067,0,0xe00000,0xb1267,0,0xe00000,0xb2e67,0,0xe00000,0xb4867,
-0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020,0x11000100,0x40000001,0xa5a040,0x11000100,0x40000001,
-0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200,0x24000000,0x200000,0x11000200,0x24000008,0x1710000,
-0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100,0x220401,0x11000319,0x7c00100,0x220402,0x11000319,
-0x7c00100,0x250400,0x11000319,0x7c00100,0x250401,0x11000419,0x7c00100,0x220400,0x11000419,0x7c00100,0x220401,0x11000419,0x7c00100,0x220402,0x11000419,0x7c00100,
-0x230400,0x11000419,0x7c00100,0x250400,0x11000419,0x7c00100,0x250401,0x11000419,0x7c00100,0x250402,0x11000519,0x7c00100,0x220400,0x11000519,0x7c00100,0x230400,
-0x11000600,0x4000400,0x200002,0x11000600,0x4000400,0x200400,0x11000600,0x7c00500,0x220400,0x11000600,0x7c00500,0x230400,0x11000600,0x7c00500,0x530400,0x11000600,
-0x7c00d00,0x230400,0x11000619,0x7c00500,0x22040f,0x11000800,0x4000010,0x1001401,0x11000800,0x4000400,0x200001,0x11000800,0x6800010,0x201001,0x11000800,0x7c00500,
-0x230401,0x11000807,0x7c00100,0x220400,0x11000807,0x7c00100,0x250400,0x1100080e,0x4000400,0x200000,0x1100080e,0x4000400,0x200002,0x1100080e,0x7000500,0x220402,
-0x1100080e,0x7c00100,0x220400,0x1100080e,0x7c00100,0x220401,0x1100080e,0x7c00100,0x220402,0x1100080e,0x7c00100,0x250400,0x1100080e,0x7c00100,0x250401,0x1100080e,
-0x7c00120,0x220402,0x1100080e,0x7c00120,0x250402,0x11000908,0x4000000,0x200000,0x11000908,0x7c00100,0x220400,0x11000908,0x7c00100,0x220401,0x11000908,0x7c00100,
-0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200400,0x11000a03,0x4000000,0x201000,0x11000a03,0x4000000,0x270000,0x11000a03,0x7c00100,0x220400,
-0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000a03,0xc000010,0x1049400,0x11000b13,0x2802500,0x962460,0x11000b13,
-0x4000000,0x200000,0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000,0x11000b13,0x4000010,0x200000,0x11000b13,0x7c00100,
-0x2633800,0x11000c00,0x80000000,0x1329960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,
-0x11000c02,0x4000000,0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100,0x230400,0x11000c02,0x7c00100,0x230401,0x11000c02,
-0x7c00100,0x230402,0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000f01,0x2802400,0x962460,0x11000f0a,0x2802100,0x962460,0x11000f0a,0x2802400,
-0x962460,0x11000f0a,0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a,0x7c00100,0x230400,0x11000f0a,0x7c00100,0x230401,
-0x11001004,0x2802100,0x962460,0x11001004,0x2802400,0x962460,0x11001004,0x2806400,0x962460,0x11001004,0x4000000,0x200000,0x11001004,0x4000000,0x1500000,0x11001004,
-0x6800100,0x962540,0x11001004,0x6800100,0x962541,0x11001004,0x7c00100,0x230400,0x11001004,0x7c00100,0x230401,0x11001110,0x2802100,0x962460,0x11001110,0x2802400,
-0x962460,0x11001110,0x2806400,0x962460,0x11001110,0x6800100,0x962540,0x11001110,0x7c00100,0x230400,0x11001110,0x7c00100,0x230401,0x1100120f,0x2802100,0x962460,
-0x1100120f,0x2802400,0x962460,0x1100120f,0x2806400,0x962460,0x1100120f,0x6800100,0x962540,0x1100120f,0x7c00100,0x230400,0x1100131f,0x2802100,0x962460,0x1100131f,
-0x2802400,0x962460,0x1100131f,0x2806400,0x962460,0x1100131f,0x4000000,0x200000,0x1100131f,0x6800000,0x1329800,0x1100131f,0x6800100,0x962540,0x1100131f,0x6800100,
-0x962541,0x1100131f,0x7c00100,0x230400,0x1100131f,0x7c00100,0x230401,0x11001423,0x2802100,0x962460,0x11001423,0x2806400,0x962460,0x11001423,0x6800100,0x962540,
-0x11001423,0x6800100,0x962541,0x11001423,0x7c00100,0x230400,0x11001423,0x7c00100,0x230401,0x11001524,0x2802100,0x962460,0x11001524,0x2802100,0x962461,0x11001524,
-0x2806400,0x962460,0x11001524,0x6800000,0x1329800,0x11001524,0x6800100,0x962540,0x11001524,0x7c00100,0x230400,0x11001615,0x2802100,0x962460,0x11001615,0x2806400,
-0x962460,0x11001615,0x6800100,0x962540,0x11001615,0x6800100,0x962541,0x11001615,0x7c00100,0x230400,0x1100171a,0x2802100,0x962460,0x1100171a,0x2806400,0x962460,
-0x1100171a,0x6800000,0x1329800,0x1100171a,0x6800100,0x962540,0x1100171a,0x6800100,0x962541,0x1100171a,0x7c00100,0x230400,0x11001900,0x4000000,0x1600000,0x11001926,
-0x2802100,0x1862460,0x11001926,0x2802400,0x1862460,0x11001926,0x2806100,0x1862460,0x11001926,0x4000000,0x200000,0x11001926,0x4000010,0x400000,0x11001926,0x6800000,
-0x1329800,0x11001926,0x7800100,0x1830142,0x11001926,0x7c00100,0x1830000,0x11001926,0x7c00900,0x1830000,0x11001926,0x7e00100,0x1830000,0x11001a18,0x2802100,0x1862460,
-0x11001a18,0x2802400,0x1862460,0x11001a18,0x6800000,0x1329800,0x11001a18,0x7800100,0x1830142,0x11001a18,0x7c00100,0x1830000,0x11001a18,0x7c00100,0x1830002,0x11001a18,
-0x7c00900,0x1830000,0x11001a18,0x7e00100,0x1830000,0x11001d0c,0x7c00100,0x230400,0x11001d0c,0x7c00100,0x250400,0x11001e12,0x7c00100,0x2230500,0x11001e12,0x7c00100,
-0x2330520,0x11001e12,0x7c80100,0x2330520,0x11002619,0x7c00100,0x220401,0x11002619,0x7c00100,0x220402,0x11002619,0x7c00100,0x250401,0x1100270e,0x4000400,0x200001,
-0x1100270e,0x4000400,0x200002,0x1100270e,0x4000400,0x500001,0x1100270e,0x7c00100,0x220401,0x1100270e,0x7c00100,0x250401,0x11002800,0x80000,0x918820,0x11002800,
-0x80000,0x1c18020,0x11002800,0x180000,0x918820,0x11002800,0x4000001,0x445801,0x11002800,0x4000001,0x445802,0x11002800,0x4000001,0xc4000b,0x11002800,0x6800000,
-0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800,0x24000000,0x810000,0x11002800,0x24000000,0x1410000,
-0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006,0xc0000b,0x11002800,0x24000008,0x1410000,0x11002800,
-0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000,0x11002800,0x2c000010,0x1248002,0x11002800,0x40000001,
-0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x2880000,0x2a65620,0x11002801,0x2882000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,0x4000000,0x20000f,
-0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020,0x81000f,0x11002900,0x4000020,0x141000e,0x11002900,
-0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000,0x11002a00,0x4000000,0x1600000,0x11002a00,0x4000000,
-0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00,0x4000000,0x200002,0x11002c00,0x4000000,0x20000f,
-0x11002c00,0x4000020,0x200000,0x11002c00,0x7c00000,0x200000,0x11002c00,0x7c00020,0x200000,0x11002c00,0x7c00120,0x220405,0x11002c00,0x7c00120,0x230402,0x11002c00,
-0x7c00120,0x250402,0x11002c00,0x7c00120,0x250405,0x11002c19,0x7c00100,0x250400,0x11002c19,0x7c00100,0x250401,0x11002d00,0x4000000,0x100006,0x11002d00,0x4000000,
-0x200006,0x11002d19,0x7c00100,0x220402,0x11002d19,0x7c00100,0x230400,0x11002d19,0x7c00100,0x250402,0x11002e00,0x24000000,0x200000,0x11002e00,0x24000020,0x200000,
-0x11002e00,0x24000020,0x200001,0x11002f00,0x24000020,0x200000,0x11002f00,0x24000020,0x200001,0x11002f00,0x24000020,0x200002,0x11002f00,0x24000020,0xf00000,0x11002f00,
-0x24000020,0x1600000,0x11002f00,0x24000022,0x1600000,0x11003000,0x24000000,0x200000,0x11003000,0x24000020,0x200000,0x11003000,0x24000020,0x810000,0x11003000,0x24000020,
-0x1410000,0x11003100,0x24000000,0x200000,0x11003200,0x24000000,0x200000,0x11003300,0x4000000,0x100003,0x11003400,0x24000000,0x100000,0x11003400,0x24000000,0x200000,
-0x11003500,0x24000000,0x200000,0x11003600,0x24000000,0x200000,0x11003600,0x24000020,0x200000,0x11003700,0x24000000,0x200000,0x11003700,0x24000000,0xe00000,0x11003700,
-0x24000000,0x2800000,0x11003700,0x24000020,0x200000,0x11003800,0x4000000,0x100000,0x11003800,0x24000000,0x200000,0x11003800,0x24000000,0xb00000,0x11003800,0x24000000,
-0xe00000,0x11003800,0x24000000,0x1710000,0x11003800,0x24000000,0x2800000,0x11005003,0x7c00100,0x220402,0x11005013,0x2802500,0x962460,0x11005013,0x4000020,0x200005,
-0x11005013,0x7c00100,0x2633801,0x11005013,0x7c00100,0x2633802,0x11005013,0x7c00100,0x2633805,0x11005019,0x7c00100,0x220402,0x11005102,0x7000100,0x230408,0x11005102,
-0x7c00100,0x230404,0x11005102,0x7c00100,0x230407,0x11005102,0x7c00100,0x230408,0x11005102,0x7c00100,0x230409,0x11005201,0x2802400,0x962460,0x11005500,0x80000,
-0x1e18820,0x11005502,0x7000100,0x230408,0x11005502,0x7c00100,0x230404,0x11005502,0x7c00100,0x230407,0x11005502,0x7c00100,0x230408,0x11005502,0x7c00100,0x230409,
-0x11005667,0x1000,0,0x11020200,0x80004,0x418820,0x11020200,0x4000000,0x100006,0x11020200,0x4000000,0x10000f,0x11020200,0x4000400,0x100002,0x11020200,
-0x4000400,0x500002,0x11020200,0x6800c00,0x101000,0x11020200,0x24000000,0x100000,0x11020200,0x24000000,0x200000,0x11020200,0x24000000,0x1400000,0x11020200,0x24000000,
-0x1500000,0x11020200,0x24000000,0x1600000,0x11020200,0x24000020,0x100000,0x11020200,0x24000020,0x1600000,0x11020219,0x7c00100,0x12040f,0x11020219,0x7c00100,0x220400,
-0x11020219,0x7c00100,0x220401,0x11020219,0x7c00100,0x250400,0x11020319,0x7c00100,0x220400,0x11020319,0x7c00100,0x220401,0x11020319,0x7c00100,0x220402,0x11020319,
-0x7c00100,0x250400,0x11020319,0x7c00100,0x250402,0x11020319,0x7d00100,0x220402,0x11020419,0x7c00100,0x220401,0x11020519,0x7c00100,0x220400,0x11020600,0x4000400,
-0x100002,0x11020600,0x4000400,0x200400,0x11020600,0x7c00500,0x130400,0x11020600,0x7c00d00,0x130400,0x11020701,0x2802400,0x962460,0x11020701,0x2802400,0x962461,
-0x11020701,0x2802400,0xc62460,0x1102080e,0x7c00100,0x220400,0x1102080e,0x7c00100,0x250400,0x11020908,0x7c00100,0x220400,0x11020908,0x7c00100,0x220401,0x11020908,
-0x7c00100,0x250400,0x11020908,0x7c00100,0x250401,0x11022800,0x24000000,0x100000,0x11022800,0x24000000,0x200000,0x11022800,0x24000000,0x200002,0x11022800,0x24000000,
-0x401000,0x11022800,0x24000000,0xf00002,0x11022800,0x24000000,0xf0ac02,0x11022800,0x24000000,0x1500000,0x11022800,0x24000002,0x100000,0x11022800,0x24000002,0x370000,
-0x11022800,0x24000002,0x470000,0x11022800,0x24000006,0x400000,0x11022800,0x24000008,0x1710000,0x11022800,0x24000008,0x1712c00,0x11022800,0x24000020,0x100000,0x11022800,
-0x24000020,0x1500000,0x11022800,0x24000020,0x1500002,0x11022900,0x4000000,0x10000e,0x11022900,0x4000000,0x10000f,0x11022919,0x7c00100,0x12040f,0x11022c00,0x4000000,
-0x100002,0x11022c00,0x4000000,0x10000f,0x11022c00,0x4000000,0x1500002,0x11022c00,0x4000000,0x1600002,0x11022c00,0x7c00120,0x120405,0x11022c0e,0x7c00100,0x250401,
-0x11022c19,0x7c00100,0x150401,0x11022d00,0x4000000,0x100006,0x11022d00,0x4000000,0x200006,0x11022d19,0x7c00100,0x120402,0x11022d19,0x7c00100,0x150402,0x11022e00,
-0x24000000,0x200000,0x11022e00,0x24000020,0x100000,0x11022f00,0x24000020,0x100000,0x11022f00,0x24000020,0x100001,0x11022f00,0x24000020,0x100002,0x11023000,0x24000000,
-0x100000,0x11023300,0x4000000,0x100002,0x11023300,0x4000000,0x100003,0x11023300,0x4000100,0x120403,0x11023300,0x4000100,0x150403,0x11023400,0x24000000,0x100000,
-0x11023500,0x24000000,0x100000,0x11023600,0x24000000,0x100000,0x11023600,0x24000020,0x100000,0x11023700,0x24000000,0x100000,0x11023700,0x24000000,0xe00000,0x11023700,
-0x24000020,0x100000,0x11023800,0x4000000,0x100000,0x11023800,0x24000000,0x200000,0x11024e67,0,0,0x11025600,0x4000000,0x100000,0x11042a00,0x4000000,
-0x1600000,0x11045700,0x4000000,0x20000a,0x11045700,0x4000020,0x20000a,0x11045712,0x7c00100,0xe3040a,0x11045712,0x7c80100,0xe3040a,0x11045716,0x7c00100,0xe30c0a,
-0x11045716,0x7c00100,0x2530c0a,0x11063d00,0x4000001,0x445811,0x11065700,0x4000000,0x810011,0x11065700,0x4000000,0xe00011,0x11065700,0x4000000,0x1410011,0x11065700,
-0x4000000,0x1500011,0x11065700,0x4000000,0x1600011,0x11065700,0x4000006,0xe70011,0x11065700,0x4000008,0xe00011,0x11065700,0x4000008,0xe02c11,0x11065700,0x4000010,
-0x871411,0x11065700,0x4000010,0x1201411,0x11065700,0x4000010,0x1271011,0x11065700,0x4000020,0xe00011,0x11065700,0x4000400,0xe00011,0x11065700,0x4000420,0xe00011,
-0x11065700,0x6800000,0xe01c11,0x11065700,0x6800040,0xe29811,0x11065700,0xc000010,0x80ac11,0x11065700,0xc000010,0xb48011,0x11065719,0x7c00100,0xe20411,0x11065719,
-0x7c00100,0xe50411,0x11065719,0x7c00140,0xe20411,0x11065719,0x7c00140,0xe50411,0x11080100,0x6800000,0x201c00,0x11080100,0x68000c0,0x1329800,0x11080100,0x24000000,
-0x200000,0x11080100,0x24000000,0x810000,0x11080100,0x24000000,0x1410000,0x11080100,0x24000000,0x1500000,0x11080100,0x24000000,0x1600000,0x11080100,0x24000000,0x1b00000,
-0x11080100,0x24000000,0x2410000,0x11080100,0x24000006,0xd70000,0x11080100,0x24000008,0x1713c00,0x11080100,0x24000008,0x1714000,0x11080100,0x24000010,0x1001400,0x11080100,
-0x24000010,0x1071000,0x11080100,0x24000010,0x1071400,0x11080100,0x24000020,0x200000,0x11080100,0x24000020,0x400000,0x11080100,0x24000020,0x1600000,0x11080100,0x24000400,
-0x200000,0x11080100,0x24000420,0x200000,0x11080100,0x2c000010,0xb48000,0x11080100,0x2c000010,0x100ac00,0x11080100,0x44000001,0x1a45800,0x11080119,0x7c00100,0x220400,
-0x11080119,0x7c00100,0x250400,0x11080119,0x7c001c0,0x220400,0x11080119,0x7c001c0,0x250400,0x11080200,0x4000400,0x200002,0x11080200,0x24000000,0x200000,0x11080200,
-0x24000000,0x1500000,0x11080200,0x24000000,0x1600000,0x11080200,0x24000020,0x200000,0x110a1e12,0x7c00100,0x2130480,0x110a1e12,0x7c80100,0x2130480,0x110a3000,0x24000000,
-0xe00000,0x110a3000,0x24100000,0x810001,0x110a3000,0x24100000,0x1410001,0x110a3700,0x24000000,0x200000,0x110a3d00,0x4000000,0xe00000,0x110a3d00,0x4000000,0xe00002,
-0x110a3d00,0x24000000,0xe00000,0x110a3d11,0x7c00300,0xe30000,0x110a3d11,0x7c00900,0x1230400,0x110a3d12,0x2802400,0x962460,0x110a3e14,0x7c00100,0xe30000,0x110a3e14,
-0x7c00100,0xe30001,0x110a3e14,0x7c00100,0x2530000,0x110a3e14,0x7c00900,0x1230000,0x110a3e14,0x7c00900,0x1230001,0x110a3f16,0x7c00100,0xe30c00,0x110a3f16,0x7c00100,
-0xe30c01,0x110a3f16,0x7c00100,0x2530c00,0x110a3f16,0x7c00900,0x1230c00,0x110a3f16,0x7c00900,0x1230c01,0x110a4005,0x7c00100,0xe30400,0x110a4112,0x7c00100,0xe30402,
-0x110a4112,0x7c80100,0xe30402,0x110a4400,0x4000000,0xe00000,0x110a4412,0x4000000,0xe00002,0x110a4412,0x4000000,0xe00003,0x110a4416,0x4000000,0xe00c03,0x110a4500,
-0x4000000,0xe0000d,0x110a4516,0x4000000,0xe00c0d,0x110a4711,0x7c40300,0xe30000,0x110a4f11,0x7c00300,0xe30001,0x110a4f11,0x7c40300,0xe30000,0x110a5300,0x4000000,
-0x810010,0x110a5300,0x4000000,0xe00002,0x110a5300,0x4000000,0xe00010,0x110a5300,0x4000000,0x1410010,0x110a5300,0x4000002,0xe70010,0x110a5300,0x4000008,0x810010,
-0x110a5300,0x4000008,0x1410010,0x110a5300,0x6800000,0xe01c02,0x110a5300,0x6800000,0xe01c10,0x110a5400,0x4000000,0x81000c,0x110a5400,0x4000000,0xe0000c,0x110a5400,
-0x4000000,0x141000c,0x110a5400,0x4000000,0x150000c,0x110a5400,0x4000000,0x160000c,0x110a5400,0x4000002,0xe7000c,0x110a5400,0x4000010,0x87140c,0x110a5400,0x4000010,
-0xe7000c,0x110a5400,0x4000010,0x120140c,0x110a5400,0x4000010,0x127100c,0x110a5400,0x4000020,0xe0000c,0x110a5400,0x4000026,0xe7000c,0x110a5400,0xc000010,0x80ac0c,
-0x110a5400,0xc000010,0xb4800c,0x11400c0c,0x4000010,0xb00000,0x11400c0c,0x4000010,0x1071400,0x11400c17,0xc000010,0xb48000,0x11400c1e,0x7c00900,0x230400,0x11400f4b,
-0xc000010,0x448000,0x11400f5f,0xc000010,0x448000,0x11401d94,0x4000000,0x200000,0x11403dcc,0x4000000,0xe00000,0x114457c1,0x4000008,0x81000a,0x114457c1,0x4000008,
-0x141000a,0x114457c1,0x4000010,0x87000a,0x114457c1,0x6800004,0x120000a,0x114457c1,0xc000010,0x84800a,0x114457ca,0x3802500,0x126246a,0x114457ca,0x7c00d00,0x2530c0a,
-0x114a3dc1,0x24000000,0x810000,0x114a3dc1,0x24000000,0x1410000,0x114a3dc1,0x24000008,0x810000,0x114a3dc1,0x24000008,0x1410000,0x114a3dc1,0x24000010,0x870000,0x114a3dc1,
-0x2c000010,0x848000,0x114a3dc7,0x4000000,0xe00000,0x114a3dc7,0x24000000,0xe00000,0x114a3dc7,0x24000002,0xe00000,0x114a3dc7,0x24000002,0x1200000,0x114a3dc7,0x24000008,
-0x810000,0x114a3dc7,0x24000008,0x1410000,0x114a3dca,0x7c00900,0x930c00,0x114a3dca,0x7c00900,0xe30c00,0x114a3dcc,0x7c00300,0xe30000,0x114a3eca,0x7000400,0x1200c02,
-0x114a3fc1,0x6800004,0x1200000,0x114a3fca,0x7c00d00,0x2530c00,0x114a42cc,0x4000000,0xe00000,0x114a42cc,0x4000000,0xe0000f,0x114a44cc,0x4000000,0xe00002,0x114a44cc,
-0x4000000,0xe00003,0x114a45cc,0x4000000,0xe00002,0x114a45cc,0x4000000,0xe0000d,0x11505113,0x24000000,0x810000,0x11505113,0x24000000,0x1410000,0x1180090a,0x2802400,
-0x962460,0x11800c27,0x2802100,0x962460,0x11800c27,0x2802500,0x962460,0x11800f32,0x2802400,0x962460,0x11800f3f,0x2802400,0x962460,0x11820700,0x2802400,0x962460,
-0x11820700,0x2802500,0x962460,0x118a3dcd,0x2802400,0x962460,0x118a3eca,0x2802400,0x962460,0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c2c,
-0x6800000,0x1329800,0x11c00c30,0xc000010,0xb48000,0x11c00f78,0x6800000,0x1329800,0x11c0107d,0x6800000,0x1329800,0x11c01181,0x6800000,0x1329800,0x11c01285,0x6800000,
-0x1329800,0x11c01489,0x4000000,0x200000,0x11c01489,0x6800000,0x1329800,0x11c0168d,0x6800000,0x1329800,0x11d05117,0x7c00100,0x230408,0x20000067,0x1000,0,
-0x20000b13,0x2802400,0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,0x962460,0x20001b27,0x2802100,0x962461,0x20001b27,0x2802400,0x962460,0x20001b27,
-0x2802500,0x962460,0x20001b27,0x2806400,0x962460,0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,0x20001b27,0x4000000,0x400000,0x20001b27,0x4000000,
-0x500000,0x20001b27,0x4000000,0x810000,0x20001b27,0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,0x4000000,0x1410000,0x20001b27,0x4000010,0xb00000,
-0x20001b27,0x4000010,0xc00000,0x20001b27,0x6800000,0x1329800,0x20001b27,0x6800100,0x462540,0x20001b27,0x6800400,0x962540,0x20001b27,0x7c00100,0x230400,0x20001b27,
-0x7c00100,0x230401,0x20002619,0x7c00100,0x220401,0x20002a00,0x4000000,0x1600000,0x20004b67,0,0x1900000,0x20004c67,0,0x1900000,0x20004d67,0,
-0x1900000,0x20006d67,0x1000,0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,0,0,0x200a4a12,0x7c00100,0x1f304c1,
-0x200a4a12,0x7c00100,0x20304e1,0x21005600,0x4000000,0x700000,0x21022a00,0x4000000,0x1600000,0x30000419,0x7c00100,0x220400,0x30000419,0x7c00100,0x220401,0x30000419,
-0x7c00100,0x250400,0x30000419,0x7c00100,0x250401,0x30000519,0x7c00100,0x220400,0x30000600,0x4000400,0x200400,0x30000600,0x7c00500,0x230400,0x30000605,0x4000400,
-0x200400,0x3000080e,0x7c00100,0x220400,0x30000908,0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,0x7c00100,0x220401,0x30000908,0x7c00100,0x250400,
-0x30000908,0x7c00100,0x250401,0x30000a03,0x4000006,0x400400,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,0x230400,0x30000d22,0x2802100,0x962460,0x30000d22,
-0x2802400,0x962460,0x30000d22,0x2802500,0x962460,0x30000d22,0x4000000,0x200000,0x30000d22,0x4000010,0x200000,0x30000d22,0x7c00100,0x230400,0x30000d22,0xc000010,
-0x248000,0x30000d22,0x80000000,0x218560,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,0x2802100,0x962460,0x30001821,0x2806400,0x962460,
-0x30001821,0x4000000,0x200000,0x30001821,0x6800100,0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,0x230400,0x30001b27,0x2802100,0x962460,0x30001b27,
-0x2802400,0x962460,0x30001b27,0x4000000,0x200000,0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,0x30001c1c,0x2802100,0x1862460,0x30001c1c,0x2802400,
-0x1862460,0x30001c1c,0x2806400,0x1862460,0x30001c1c,0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,0x6800100,0x1862540,0x30001c1c,0x7c00100,0x1830000,
-0x30001c1c,0x7c00100,0x1830001,0x30001c1c,0xc000010,0x448000,0x30001f0b,0x4000000,0x200000,0x30001f0b,0x4000010,0x200000,0x30001f0b,0x4000010,0x400000,0x30001f0b,
-0x6800000,0x200000,0x30001f0b,0x7c00100,0x230400,0x30001f0b,0xc000010,0x248000,0x30002006,0x7c00100,0x250400,0x30002128,0x4000000,0x200000,0x30002128,0x7c00100,
-0x230400,0x30002128,0xc000010,0x248000,0x3000221d,0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,0x4000001,0x445800,0x3000221d,0x7c00100,0x230400,
-0x30002300,0x4000010,0x400000,0x30002320,0x7c00100,0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,0x1862460,0x30002417,0x2806400,0x1862460,0x30002417,
-0x2882000,0x1862460,0x30002417,0x4000000,0x200000,0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,0x30002417,0x4000010,0x400000,0x30002417,0x4000010,
-0x1200000,0x30002417,0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,0x7d00100,0x1830000,0x30002417,0xc000010,0x448000,
-0x3000251b,0x80000,0xc18820,0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,0x500000,0x3000251b,
-0x4000010,0x400000,0x3000251b,0x4000010,0xb70000,0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,0x3000251b,0x7c00900,
-0x230400,0x3000251b,0xc000010,0xb48000,0x3000251b,0x12882000,0x962460,0x30002800,0x24000000,0x200000,0x30002800,0x2c000010,0x1248002,0x30002a00,0x4000000,0x1600000,
-0x30002b01,0x2000,0x962460,0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,0x220405,0x30002d19,0x7c00100,0x250400,0x30002e00,0x24000000,0x200000,0x30003000,
-0x24000000,0x200000,0x30003100,0x24000000,0x200000,0x30003600,0x24000000,0x200000,0x30003700,0x24000000,0x200000,0x3000392e,0x24000000,0x200000,0x30005013,0x7c00100,
-0x2633801,0x30005600,0,0x918820,0x30020600,0x4000400,0x500400,0x30020701,0x2802400,0x962460,0x30020701,0x2802400,0xc62460,0x300a3a11,0x4020000,0xe00000,
-0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,0xe00000,0x300a3c00,0x4010000,0xe00000,0x300a3d11,0x7c00300,0xe30002,0x300a4305,
-0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,0x300a4829,0x7c00900,0x1230400,0x300a4929,0x4000000,0xe00000,0x3040259a,0x4000010,
-0x400000,0x3040259a,0x4000010,0xb70000,0x3040259a,0xc000010,0xb48000,0x304028bc,0x4000001,0xc41c0b,0x304a3dcc,0x4000000,0xe00000,0x30800c27,0x2802100,0x962460,
-0x30c01c92,0x6800000,0x1329800,0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x200000,0x3100581e,
-0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,0x31005b00,0x4000000,0x200000,0x31005c00,0x80000,
-0x918820,0x31005c00,0x2802000,0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,0x4000000,0x200001,0x31005c00,0x6800000,0x962540,
-0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,0x1329805,0x31005d00,0x7c00120,0x220405,0x31005d00,
-0x7c00120,0x250405,0x31006000,0x82000,0x962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,0x310a5f11,0x7c00300,0xe30001,0x32000419,0x7c00100,
-0x250400,0x3200080e,0x4000020,0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,0x7c00100,0x220400,0x32000908,0x7c00100,0x250400,
-0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,0x1e18820,0x32002800,0x80020,0x218820,0x32002800,
-0x4000001,0x445802,0x32002800,0x24000000,0x200000,0x32002800,0x24000000,0x1500002,0x32002800,0x24000020,0x200000,0x32002800,0x2c000010,0x1248002,0x32002919,0x7c00100,
-0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,0x2802020,0x962460,0x32002c00,0x4000000,0x200000,
-0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,0x250405,0x32002e00,0x24000020,0x200000,0x32002f00,
-0x24000020,0x200000,0x32003000,0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,0x32003600,0x24000020,0x200000,0x32003700,0x24000000,
-0x100000,0x32003700,0x24000000,0x200000,0x32003800,0x24000000,0x810000,0x32003800,0x24000000,0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,
-0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100,0x250400,0x3200622a,0x2802100,0x962460,0x3200622a,0x2806400,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,
-0x2802100,0x962460,0x3200632b,0x6804000,0x962540,0x3200632b,0x7c00100,0x230400,0x3200642c,0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,
-0x962460,0x3200652d,0x7c00100,0x230400,0x32006600,0x24000020,0x200000,0x32006700,0x24000020,0x200000,0x32006800,0x24000020,0x200000,0x32006900,0x24000020,0x200000,
-0x32006900,0x24000020,0x810000,0x32006900,0x24000020,0x1410000,0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,
-0x2882000,0xc62460,0x32023300,0x4000000,0x100000,0x32026c01,0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,
-0x810000,0x32086600,0x24000020,0x1410000,0x32086900,0x24000020,0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x200000,0x320a3d11,0x7c00100,0x1230400,
-0x320a3e14,0x7c00100,0xe30010,0x320a3e14,0x7c00100,0x2530000,0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,
-0x7c00300,0xe30001,0x320a6b16,0x7c00100,0x2530c00,0x32406396,0xc000010,0x448000,0x324a3dcf,0x4000000,0xe00000,0x324a3dcf,0x7c00100,0x1230400,0x324a3fca,0x4000002,
-0x1200c00,0x324a53c7,0x24000000,0xe00000,0x32820701,0x2802000,0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200400,
-0x4000080e,0x7c00100,0x220400,0x4000080e,0x7c00100,0x250400,0x4000080e,0x7c00100,0x250402,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,0x40000c02,
-0x2802500,0x962460,0x40000c02,0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000c02,0x80000000,0x1329960,0x40000d22,0x7c00100,
-0x230400,0x40000f0a,0x7c00100,0x230400,0x40001004,0x7c00100,0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,
-0x4000120f,0x4000000,0x1600000,0x4000120f,0x7c00100,0x230400,0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,
-0x2802400,0x962460,0x40001615,0x7c00100,0x230400,0x40002417,0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,
-0x200000,0x40002c00,0x4000000,0x200002,0x40003000,0x24000000,0x200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40005a09,0x7c00100,0x220400,
-0x40005a09,0x7c00100,0x250400,0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,0x40006f30,
-0x6800000,0x1329800,0x40006f30,0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,0x4000000,
-0x200000,0x40007208,0x7c00100,0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,0x220400,
-0x40007219,0x7c00500,0x220400,0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007400,0x4000000,0x200000,0x40007531,
-0x7c00100,0x230400,0x40007631,0x7c00100,0x230400,0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,0x7c00100,0x230400,0x40007a32,0x6800000,
-0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f,0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,0x962460,0x40020701,0x2802400,0xc62460,
-0x40023300,0x4000000,0x200000,0x40027d01,0x12882000,0x962460,0x400a3700,0x24000000,0x200000,0x400a3700,0x24000000,0xe00000,0x400a4400,0x4000000,0xe0000d,0x400a4412,
-0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003,0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,0x4000000,0x1410010,0x40507719,0x4000000,
-0x200000,0x4050771c,0x4000000,0x400000,0x4050771f,0x4000000,0x200000,0x4050771f,0x4000000,0x400000,0x40c01489,0x4000000,0x200000,0x40d05117,0x4000000,0x200000,
-0x41000419,0x7c00100,0x220400,0x41000419,0x7c00100,0x250400,0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,
-0x7c00100,0x250400,0x41000b13,0x2802000,0x962460,0x41000b13,0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,
-0x1500000,0x41000c02,0xc000010,0xb48000,0x41000f0a,0x7c00100,0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,
-0x41001d0c,0x7c00100,0x22040f,0x41001d0c,0x7c00100,0x230400,0x41001f0b,0x2802400,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,
-0x24000000,0x200000,0x41002800,0x24000000,0x400000,0x41002919,0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,
-0x200000,0x41002c00,0x7c00120,0x220405,0x41003000,0x24000000,0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0xe00000,0x41005d00,0x7c00120,0x220405,
-0x41006600,0x24000020,0x200000,0x41006600,0x24000020,0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,0x41007219,0x7c00100,0x220400,0x41007300,
-0x24000000,0x200000,0x41007e0e,0x2802000,0x962460,0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,0x7c00100,0x230400,0x41008002,0x7c00100,
-0x230400,0x41008137,0x2802100,0x962460,0x41008137,0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,0x230400,0x41008301,0x2802000,0x962460,
-0x41008407,0x4000000,0x200000,0x41008407,0x4000000,0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,0x41008407,0x7c00100,0x250400,0x4100850b,
-0x7c00100,0x230400,0x4100860b,0x4000000,0x200000,0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,0x7c00100,0x220400,0x41008838,0x7c00100,
-0x250400,0x41008939,0x2802000,0x962460,0x41008939,0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,0x200000,0x41008939,0x4000000,0x400000,
-0x41008939,0x7c00100,0x230400,0x41008939,0xc000010,0x448000,0x41008a00,0x4000400,0x200400,0x41008b3b,0x4000000,0x1800000,0x41008b3b,0x6800000,0x1329800,0x41008b3b,
-0x7c00100,0x1830000,0x41008b3b,0x7e00100,0x1830000,0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,0x7c00100,0x22040f,0x41008d19,0x7c00100,
-0x220400,0x41008d19,0x7c00100,0x22040f,0x41008e00,0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,0x1710000,0x41008e00,0x24000006,0x400000,
-0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000,0x962460,0x41008f3a,0x4000000,0x200000,0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,
-0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f,0x41020701,0x2802000,0x962460,0x41020701,0x2802000,0xc62460,0x410a3700,0x24000000,0x200000,0x410a3700,0x24000000,
-0xe00000,0x410a4412,0x4000000,0xe00003,0x410a4711,0x7c40300,0xe30000,0x410a4f11,0x7c00300,0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,
-0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000,0xb00010,0x410a9100,0x4000000,0xf00010,0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,
-0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010,0x41408ad2,0x4000400,0x200000,0x414a82cc,0x4000000,0xe00000,0x41808300,0x2802000,0x962460,0x41c01489,0x6800000,
-0x1329800,0x50000419,0x7c00100,0x220400,0x50000419,0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,0x220400,0x50000908,0x7c00100,0x250400,
-0x50000b13,0x2802500,0x962460,0x50000f0a,0x7c00100,0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,0x50002b01,0x2802020,0x962460,0x50002c00,
-0x4000000,0x200000,0x50002c19,0x7c00100,0x220400,0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,0x24000020,0x200000,0x50003700,0x24000000,
-0x200000,0x50005d00,0x7c00120,0x220405,0x50005d00,0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,0x250400,0x50006600,0x24000020,0x200000,
-0x50007300,0x24000000,0x200000,0x50008301,0x2802400,0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,0x50009257,0x4000000,0x200000,0x50009257,
-0x4000010,0x1071400,0x50009257,0x6800000,0x1329800,0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,0x7c00900,0x230400,0x50009257,0xc000010,
-0xb48000,0x5000933e,0x2802100,0x962460,0x5000933e,0x2802400,0x962460,0x5000933e,0x4000000,0x400000,0x5000933e,0x4000000,0xe00000,0x5000933e,0x4000010,0x400000,
-0x5000933e,0x6800000,0xe29800,0x5000933e,0x6800100,0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x2f62540,0x5000933e,0x7c00100,0x2b30400,0x5000933e,
-0x7c00100,0x2b30401,0x5000933e,0xc000010,0x448000,0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,0x4000400,0x200400,0x5000965a,0x4000000,
-0x500000,0x5000965a,0x7c00100,0x230400,0x5000965a,0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,0x400000,0x5000975b,0x7c00100,0x230400,
-0x50009865,0x7c00100,0x230400,0x50009965,0x4000010,0x400000,0x50009965,0x7c00100,0x230400,0x50409acc,0x4000000,0x200000,0x5100080e,0x7c00100,0x220400,0x5100080e,
-0x7c00100,0x250400,0x51000c02,0x2802100,0x962460,0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,0x7c00100,0x230400,0x51000f0a,0x7c00100,
-0x230400,0x51000f0a,0x7c00500,0x230400,0x51001110,0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,0x230400,0x51001524,0x2802100,0x962460,
-0x51001524,0x4000000,0x200000,0x51001524,0x7c00100,0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,0x5100171a,0x4000000,0x1500000,0x5100171a,
-0x7c00100,0x230400,0x51001b27,0x4000000,0x200000,0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,0x7c00100,0x230400,0x51001c1c,0x2802100,
-0x1862460,0x51001c1c,0x2802500,0x1862460,0x51001c1c,0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,0x1329800,0x51001c1c,0x6800100,0x1862400,
-0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800500,0x1862400,0x51001c1c,0x7c00100,0x1830000,0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,
-0x7c00100,0x250400,0x51002800,0x80020,0x218820,0x51002c00,0x4000000,0x200000,0x51002d19,0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,
-0xe00000,0x51005201,0x2802400,0x962460,0x51005c00,0x4000000,0x200000,0x51006108,0x7c00100,0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,
-0x51006600,0x24000020,0x810000,0x51006600,0x24000020,0x1410000,0x51007300,0x24000000,0x200000,0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,
-0x2802000,0x962460,0x51008301,0x2802400,0x962460,0x51008301,0x2802400,0xc62460,0x51008a00,0x7c00500,0x230400,0x51008e00,0x24000000,0x200000,0x51008e00,0x24000000,
-0x400000,0x51008e00,0x24000000,0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000,0x51008e00,0x24000000,0x1710000,0x51008e00,0x24000002,0x200000,
-0x51008e00,0x24000500,0x230400,0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419,0x7c00100,0x22040e,0x51009419,0x7c00100,0x22040f,0x51009419,
-0x7c00100,0x250400,0x51009500,0x4000400,0x200400,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100,0x220400,0x51009519,0x7c00100,0x22040f,0x51009519,0x7c00100,
-0x230400,0x51009519,0x7c00100,0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800,0x51009b71,0x6800100,0x962540,0x51009b71,0x6804400,0x962540,
-0x51009b71,0x7c00100,0x230400,0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52,0x2802d00,0x962460,0x51009c52,0x4000010,0x400000,0x51009c52,
-0x6800000,0x1329800,0x51009c52,0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010,0x448000,0x51009d6d,0x6800000,0x1329800,0x51009d6d,0x7c00100,
-0x230400,0x51009d6d,0x7c00500,0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000,0x51009e08,0x2802100,0x962460,0x51009f63,0x4000010,0x400000,
-0x51009f63,0x6800000,0x1329800,0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63,0xc000010,0x448000,0x51009f63,0xc000010,0xb48000,0x5100a008,
-0x2000,0x962460,0x5100a008,0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100,0x220400,0x5100a008,0x7c00100,0x230400,0x5100a008,0x7c00100,
-0x250400,0x5100a008,0x7c00500,0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800,0x5100a16f,0x6800100,0x962540,0x5100a16f,0x7c00100,0x230400,
-0x5100a16f,0xc000010,0x448000,0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f,0x6800000,0x1329800,0x5100a24f,0x7c00100,0x230400,0x5100a24f,
-0xc000010,0x448000,0x5100a36e,0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100,0x962540,0x5100a36e,0x6804400,0x962540,0x5100a36e,0x7c00100,
-0x230400,0x5100a442,0x2802100,0x962460,0x5100a442,0x4000000,0xe00000,0x5100a442,0x6800000,0xe29800,0x5100a442,0x6800100,0x962540,0x5100a442,0x7c00100,0x430400,
-0x5100a442,0x7c00100,0x2d30400,0x5100a442,0xc000010,0x448000,0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601,0x2802000,0x962460,0x5100a76b,
-0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000,0xe00000,0x5100ab00,0x4000000,
-0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000,0x510a7300,0x24000000,0x200000,
-0x510aaa00,0x4000000,0xe00000,0x514a82cc,0x4000000,0xe00000,0x5150a20e,0x4000400,0x400000,0x51802bbe,0x2802000,0x962460,0x51c00908,0x2802400,0x962460,0x51c0a008,
-0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000,0x1600000,0x52001b00,0x4000000,
-0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,0x1862400,0x52001c1c,0x6800500,0x1862400,0x52001e12,0x7c00100,0x2230500,0x52001e12,0x7c00100,0x2330520,
-0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00,0x4000000,0x200006,0x52003000,
-0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400,0x962460,0x52008407,0x7c00100,
-0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000,0x52009419,0x7c00100,0x250400,
-0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e,0x4000010,0x200000,0x5200ac7e,
-0x7c00100,0x230400,0x5200ac7e,0xc000010,0x248000,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,0x2802100,0x1862460,0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,
-0x1862460,0x5200ae6a,0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,0x1329800,0x5200ae6a,0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,
-0x5200ae6a,0x7c00100,0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,0x5200b083,0x4000010,0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,
-0xc000010,0x448000,0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,0x4000010,0x400000,0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,
-0x448000,0x5200b30a,0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,0x230400,0x5200b54e,0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,
-0x5200b54e,0x4000000,0xe00000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0xe29800,0x5200b54e,0x6800100,0x962540,0x5200b54e,0x6804400,0x2f62540,0x5200b54e,
-0x7c00100,0x2b30400,0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,0x6800500,0x1862400,0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,
-0x1830000,0x5200b77f,0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,0x1800000,0x5200b77f,0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,
-0x5200b77f,0x7c00500,0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,0x5200b873,0x2802100,0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,
-0x6800000,0x1329800,0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,0x7c00100,0x230400,0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,
-0x2230500,0x5200b912,0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,0x400000,0x5200ba74,0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,
-0x5200bb85,0x7c00100,0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,0x5200bc75,0x7c00100,0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,
-0x7c00100,0x230400,0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,0x7c00100,0x230400,0x5200c002,0x4000000,0x200000,0x5200c178,0x2802100,
-0x962460,0x5200c178,0x2802400,0x962460,0x5200c178,0x2806400,0x962460,0x5200c178,0x4000000,0x200000,0x5200c178,0x6800100,0x962540,0x5200c178,0x7c00100,0x230400,
-0x5200c178,0x7c00100,0x230401,0x5200c178,0xc000010,0x448000,0x5200c178,0x80000000,0x1329960,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,0x5200c247,
-0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,0x4000000,0x100006,0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,0x24000000,
-0x2800000,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,0x100000,0x5202c300,0x4000000,0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,
-0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,0x5202c300,0x4000100,0x15040d,0x520a1e12,0x7c00100,0x2130480,0x520a3700,0x24000000,0xe00000,0x520a3800,
-0x24000000,0x100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,0x7c00300,0xe30001,0x520a7300,0x24000000,0x100000,0x520ab412,0x7c00100,0x2130480,0x520ac400,0x4000000,
-0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511,0x7c40300,0xe30000,0x5240af9c,0x7c00100,0x230400,0x5240afa1,0x4000400,0x200000,
-0x5240afa3,0x6800400,0x962540,0x5240afa3,0x7c00100,0x230400,0x5240afad,0x7c00100,0x230400,0x5240afaf,0x7c00100,0x230400,0x5240b2d4,0x4000000,0x200000,0x5240b2e3,
-0x4000000,0x200000,0x5240b2f1,0x4000000,0x200000,0x5240b2fc,0x4000000,0x1500000,0x524a44cc,0x4000000,0xe00003,0x5250b511,0x7c00900,0x430400,0x5280af9c,0x2802400,
-0x962460,0x5280af9d,0x2802400,0x962460,0x5280afa3,0x2802400,0x962460,0x5280afa5,0x2802400,0x962460,0x5280afa7,0x2802400,0x962460,0x52d0b308,0x2802400,0x962460,
-0x52d0b30c,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,0x60000f0a,
-0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,0x4000000,
-0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802400,0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,0x200000,
-0x60003000,0x24000000,0xe00000,0x60003700,0x24000000,0x200000,0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,0x60006108,
-0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,0x2802400,0xc62460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,0x7c00100,
-0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x2703580,0x6000c654,0x2802000,0x962460,
-0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,0x6000c73f,
-0x6800100,0x962540,0x6000c73f,0x6804000,0x2e62540,0x6000c73f,0x7c00100,0x2d30400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,0x2806400,
-0x2f62460,0x6000c941,0x4000000,0xe00000,0x6000c941,0x4000010,0xe00000,0x6000c941,0x6800000,0x2d29800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,0x2b30400,
-0x6000c941,0x7c00100,0x2c30400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,0x6000cc00,0x4000000,0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,
-0x4000000,0x100000,0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,0x4000100,0x15040d,0x600a3000,0x24000000,0x200000,0x600a3000,0x24000000,
-0xe00000,0x600a3700,0x24000000,0x200000,0x600a3800,0x24000000,0x200000,0x600a3800,0x24000000,0x2800000,0x600a4305,0x7c00100,0xe30400,0x600ac300,0x4000000,0x100000,
-0x600ac400,0x4000000,0xe0000d,0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000,0xe00000,0x600acd00,0x4000000,0x200000,0x600acd00,
-0x4000000,0xe00000,0x600acd00,0x4000000,0x2800000,0x600ace00,0x4000000,0xe00000,0x600ace00,0x4000000,0x2800000,0x600acf00,0x4000000,0xe00000,0x600acf00,0x4000000,
-0x2800000,0x600ad111,0x7c40300,0xe30000,0x604ac4cc,0x4000000,0xe00003,0x61000a03,0x4000000,0x1600000,0x61000c02,0x80000000,0x1329960,0x6100120f,0x4000000,0x200000,
-0x61001a18,0x7c00100,0x1830000,0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,0x61006600,0x24000020,0x200000,0x61008407,0x7c00100,0x220400,0x61008407,
-0x7c00100,0x250400,0x6100870c,0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,0x24000000,0x400000,0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,
-0x230400,0x61009519,0x7c00100,0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,0x22040f,0x61009b71,0x2802100,0x962460,0x61009b71,0x2806400,0x962460,
-0x61009b71,0x7c00100,0x230400,0x6100a008,0x2802100,0x962460,0x6100c300,0x4000000,0x20000f,0x6100cd00,0x4000000,0x200000,0x6100d202,0x2802400,0x962460,0x6100d202,
-0x2802500,0x962460,0x6100d202,0x7c00100,0x230400,0x6100d302,0x4000020,0x200000,0x6100d302,0x7c00120,0x230405,0x6100d476,0x2802100,0x962460,0x6100d476,0x2802100,
-0x962461,0x6100d476,0x2806400,0x962460,0x6100d476,0x4000000,0x400000,0x6100d476,0x6800000,0x1329800,0x6100d476,0x6800100,0x962540,0x6100d476,0x7c00100,0x230400,
-0x6100d476,0xc000010,0x448000,0x6100d573,0x2802100,0x962460,0x6100d573,0x2806400,0x962460,0x6100d573,0x6800100,0x962540,0x6100d573,0x7c00100,0x230400,0x6100d573,
-0x7c00900,0x230400,0x6100d573,0xc000010,0x448000,0x6100d68d,0x7c00100,0x230400,0x6100d756,0x7c00100,0x230400,0x6100d85c,0x2802500,0x962460,0x6100d85c,0x6800100,
-0x962540,0x6100d85c,0x7c00100,0x230400,0x6100d85c,0x7c00500,0x230400,0x6100d997,0x2802100,0x962460,0x6100d997,0x4000000,0x200000,0x6100d997,0x4000000,0x400000,
-0x6100d997,0x6800000,0x1329800,0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,0x6100d997,0x7c00100,0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,
-0xc000010,0x448000,0x6100da98,0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,0x4000000,0x200000,0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,
-0x962460,0x6100dc99,0x6800000,0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,0x962540,0x6100dc99,0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,
-0x610a4f11,0x7c00300,0xe30001,0x610ace00,0x4000000,0xe00000,0x6140afa1,0x7c00100,0x230400,0x6140afa3,0x7c00100,0x230400,0x6180af9e,0x2802400,0x962460,0x62002a00,
-0x4000000,0x1600000,0x63002800,0x80000,0x918820,0x63c00c15,0x80000,0x918820,0x7000080e,0x7c00100,0x250400,0x70000a03,0x4000000,0x200000,0x70000c00,0x80000000,
-0x1329960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,0x70001524,0x2802100,0x962460,0x70001524,0x7c00100,0x230400,0x70001615,0x2802100,0x962460,
-0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,0x7c00100,0x230400,0x70002a00,0x4000000,0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,
-0x24000000,0x200000,0x70003800,0x24000000,0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,0x7c00100,0x230400,0x70006108,0x7c00100,0x220400,0x70006108,0x7c00100,
-0x250400,0x70006f30,0x7c00100,0x230400,0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,0x200000,0x70008301,0x2802100,0x962460,0x70008301,0x2802400,0x962460,
-0x70008e00,0x24000000,0x200000,0x70008e00,0x24000000,0x400000,0x70008e00,0x24000002,0x400000,0x70008e00,0x24000008,0x1410000,0x70008e00,0x24000010,0x400000,0x70008e00,
-0x2c000010,0x448000,0x70009519,0x7c00100,0x220400,0x70009519,0x7c00100,0x230400,0x70009519,0x7c00100,0x250400,0x70009865,0x7c00100,0x230400,0x70009965,0x4000010,
-0x400000,0x70009965,0x7c00100,0x230400,0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,0x250400,0x7000a008,0x7c00500,0x22040f,0x7000a50e,0x4000000,0x200000,
-0x7000b61c,0x2802500,0x1862460,0x7000b61c,0x6800500,0x1862400,0x7000b61c,0x7c00100,0x1830000,0x7000c300,0x4000000,0x100000,0x7000c941,0x2806000,0xc62460,0x7000cc00,
-0x4000000,0xe00000,0x7000cd00,0x4000000,0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x2800000,0x7000cf00,0x4000000,0xe00000,0x7000d202,0x2802100,
-0x962460,0x7000d202,0x7c00100,0x230400,0x7000d997,0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86,0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,
-0x7000dd86,0xc000010,0x448000,0x7000de9f,0x4000000,0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2400,0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,
-0x2802000,0x962460,0x7000e187,0x2802100,0x962460,0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400,0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,
-0x230400,0x7000e300,0x4000000,0x200000,0x7000e489,0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489,0x6800100,0x962540,0x7000e489,0x6800100,0x962541,
-0x7000e489,0x6804400,0x2f62540,0x7000e489,0x7c00100,0x430400,0x7000e489,0x7c00100,0x2b30400,0x7000e489,0x7c00100,0x2d30400,0x7000e489,0x7c00900,0x430400,0x7000e59d,
-0x2802100,0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,0x200000,0x7000e59d,0x4000010,0x200000,0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,
-0x962540,0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,0x7000e691,0x2802100,0x962460,0x7000e691,0x2802400,0x962460,0x7000e691,0x2806400,0x962460,
-0x7000e691,0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,0x7c00100,0x230400,0x7000e700,0x4000400,0x200400,0x7000e70e,0x7c00100,0x220400,0x7000e719,
-0x7c00100,0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,0x230400,0x7000e9a0,0x2802400,0x962460,0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,
-0x500000,0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,0x7000ea79,0x4000000,0x200000,0x7000ea79,0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,
-0x7000ea79,0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,0x4000000,0x200000,0x7000eb8c,0x7c00100,0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,
-0x2806400,0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,0x1329800,0x7000eca3,0x6800100,0x962540,0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,
-0x448000,0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,0x7000ed95,0xc000010,0x448000,0x7000ee1c,0x2802500,0x1862460,0x7000ee1c,0x6800000,0x1329800,
-0x7000ee1c,0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,0x4000000,0x200000,0x7000ef8f,0x7c00100,0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,
-0x7c00100,0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,0x230400,0x7000f200,0x4000000,0x200000,0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,
-0x1710000,0x7000f34b,0x2802400,0x962460,0x7000f34b,0x4000000,0x200000,0x7000f34b,0x4000010,0x400000,0x7000f34b,0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,
-0x7000f34b,0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,0x4000000,0x200000,0x7000f490,0x7c00100,0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,
-0x4000000,0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,0x230400,0x7000f8a6,0x2802100,0x962460,0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,
-0x962460,0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,0x7000f8a6,0x4000800,0x200000,0x7000f8a6,0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,
-0x7000f8a6,0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,0x4000000,0x200000,0x7000fa00,0x4000000,0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,
-0x2802400,0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,0x200000,0x7000fb9e,0x6800000,0x1329800,0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,
-0x962541,0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,0x7000fc92,0x6800000,0x1329800,0x7000fc92,0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,
-0x7000fc92,0x7c00100,0x250400,0x700acd00,0x4000000,0xe00000,0x700acd00,0x4000000,0x2800000,0x700ace00,0x4000000,0xe00000,0x700acf00,0x4000000,0xe00000,0x700acf00,
-0x4000000,0x2800000,0x7050df21,0x4000000,0x200000,0x7050f729,0x80000,0x918820,0x7080afa1,0x2802400,0x962460,0x7090df21,0x2802400,0x962460,0x70d0e427,0x2802100,
-0x962460,0x70d0e427,0x2802400,0x962460,0x70d0e427,0x6800100,0x962540,0x70d0ea25,0x4000010,0x400000,0x8000120f,0x7c00100,0x230400,0x80001524,0x7c00100,0x230400,
-0x8000171a,0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,0x4000000,0x200000,0x80005208,
-0x2802400,0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,0x230400,0x80009519,0x7c00100,
-0x250400,0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,0x8000cd00,0x4000000,0xe00000,
-0x8000d202,0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802000,0x962460,0x8000d997,0x2802400,0x962460,0x8000d997,
-0x4000000,0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,0x962460,0x8000e489,0x7c00100,
-0x2d30400,0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,0x8000fda1,0x2802100,0x1862460,
-0x8000fda1,0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862400,0x8000fda1,0x6800100,0x1862540,0x8000fda1,
-0x7c00100,0x1830000,0x8000fda1,0xc000010,0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,
-0x220400,0x80010165,0x7c00100,0x230400,0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,
-0x8001044c,0x4000000,0x200000,0x8001044c,0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,
-0x4000010,0x400000,0x80010670,0xc000010,0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0xe00000,0x800acd00,0x4000000,0x2902460,0x800ace00,0x4000000,
-0xe00000,0x800acf00,0x4000000,0xe00000,0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0xe00000,0x800b0500,0x4000000,0x2800000,0x90001615,0x7c00100,0x230400,
-0x9000171a,0x4000000,0x200000,0x9000171a,0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802400,0x962460,0x90008e00,
-0x24000000,0x400000,0x90009519,0x7c00100,0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0x80000000,0x1329960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,
-0x962460,0x9000d202,0x7c00100,0x230400,0x9000e59d,0x2802100,0x962460,0x90010500,0x4000000,0xe00000,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,
-0x900107a7,0x2802c00,0x962460,0x900107a7,0x4000000,0x1400000,0x900107a7,0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,
-0x2802100,0x962460,0x900108a8,0x2806400,0x962460,0x900108a8,0x4000000,0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,
-0x1329800,0x900108a8,0x6800100,0x962540,0x900108a8,0x7c00100,0x230400,0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,
-0x90010ca9,0x2802100,0x962460,0x90010ca9,0x4000000,0x500000,0x90010ca9,0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,
-0x4000000,0x500000,0x90010eaa,0x2802100,0x962460,0x90010eaa,0x2802400,0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,
-0x400000,0x90010eaa,0x4000010,0x400000,0x90010eaa,0x6800000,0x1329800,0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,
-0x90010fab,0x7c00100,0x220400,0x90010fab,0x7c00100,0x250400,0x9002c300,0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0xe00000,0x900acd00,
-0x4000000,0x2800000,0x900acf00,0x4000000,0xe00000,0x900b0500,0x4000000,0xe00000,0x900b0500,0x4000000,0x2800000,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,
-0xe30000,0x900b119a,0x7c00300,0xe30000,0x90408e06,0x24000000,0x400000,0xa0001004,0x4000000,0x200000,0xa0001004,0x7c00100,0x230400,0xa000120f,0x2802100,0x962460,
-0xa000120f,0x2802400,0x962460,0xa000171a,0x2802100,0x962460,0xa000171a,0x2806400,0x962460,0xa0002a00,0x4000000,0x1600000,0xa0003000,0x24000000,0x200000,0xa000581e,
-0x7c00100,0x230400,0xa0007300,0x24000000,0x200000,0xa0008301,0x2802400,0x962460,0xa0008e00,0x24000000,0x400000,0xa000cf00,0x4000000,0xe00000,0xa0010500,0x4000000,
-0x200000,0xa00114af,0x2802100,0x962460,0xa00114af,0x2802400,0x962460,0xa00114af,0x2806400,0x962460,0xa00114af,0x6800000,0x1329800,0xa00114af,0x7c00100,0x230400,
-0xa00114af,0x7c00100,0x230560,0xa00116b0,0x2802100,0x962460,0xa00116b0,0x2802800,0x962460,0xa00116b0,0x2806400,0x962460,0xa00116b0,0x4000000,0x400000,0xa00116b0,
-0x4000000,0x500000,0xa00116b0,0x4000010,0x400000,0xa00116b0,0x6800100,0x962540,0xa00116b0,0x7c00100,0x230400,0xa00116b0,0x7c00100,0x230560,0xa00116b0,0xc000010,
-0x448000,0xa0011722,0x7c00100,0x230400,0xa00118b1,0x2802000,0x962460,0xa00118b1,0x2802100,0x962460,0xa00118b1,0x2806400,0x962460,0xa00118b1,0x4000000,0x200000,
-0xa00118b1,0x4000000,0x400000,0xa00118b1,0x4000000,0x500000,0xa00118b1,0x6800100,0x962540,0xa00118b1,0x7c00100,0x230400,0xa00118b1,0x7c00100,0x230560,0xa00118b1,
-0xc000010,0x448000,0xa00a4005,0x7c00100,0xe30400,0xa00a4711,0x7c40300,0xe30000,0xa00ac400,0x4000000,0xe00000,0xa00acb14,0x7c00100,0xe30000,0xa00acf00,0x4000000,
-0xe00000,0xa00b0500,0x4000000,0xe00000,0xa00b0500,0x4000000,0x2800000,0xa00b0b96,0x7c00900,0x1230400,0xa00b1211,0x7c40300,0xe30000,0xa00b1314,0x7c00100,0xe30000,
-0xa00b1596,0x7c00300,0xe30000,0xa040afb9,0x6800400,0x962540,0xa08083ba,0x2802400,0x962460,0xb0000a03,0x7c00100,0x220400,0xb0000b13,0x7c00100,0x2633800,0xb0001004,
-0x2802000,0x962460,0xb0001110,0x4000000,0x200000,0xb0001524,0x2802100,0x962460,0xb0001615,0x4000000,0x500000,0xb000251b,0x7c00100,0x230400,0xb0007300,0x24000000,
-0x200000,0xb0008939,0x4000000,0x200000,0xb0008939,0x7c00100,0x230400,0xb0008e00,0x24000000,0x200000,0xb0008e00,0x24000000,0x400000,0xb0008e00,0x24000010,0x400000,
-0xb0009257,0x2802000,0x962460,0xb0009257,0x4000000,0x1600000,0xb0009519,0x7c00100,0x220400,0xb0009519,0x7c00100,0x250400,0xb0009a00,0x4000000,0x200000,0xb000b30a,
-0x2802100,0x962460,0xb000b30a,0x7c00100,0x230400,0xb000c178,0x80000000,0x1329960,0xb000c300,0x4000000,0x200000,0xb000d202,0x2802000,0x962460,0xb000d476,0x6800100,
-0x962540,0xb000d476,0x7c00100,0x230400,0xb000e300,0x4000000,0xe00000,0xb000fda1,0x7c00100,0x1830000,0xb0010eaa,0x2802000,0x962460,0xb00116b0,0x7c00100,0x230400,
-0xb0011900,0x4000000,0xe00000,0xb0011ab2,0x2802100,0x962460,0xb0011ab2,0x2802400,0x962460,0xb0011ab2,0x2806400,0x962460,0xb0011ab2,0x4000000,0x200000,0xb0011ab2,
-0x6800100,0x962540,0xb0011ab2,0x7c00100,0x230400,0xb0011b0c,0x7c00100,0x230400,0xb0011cb3,0x2802100,0x962460,0xb0011cb3,0x2806400,0x962460,0xb0011cb3,0x6800000,
-0x1329800,0xb0011cb3,0x6800100,0x962540,0xb0011cb3,0x7c00100,0x230400,0xb0011db6,0x2802500,0x962460,0xb0011db6,0x6800000,0x1329800,0xb0011db6,0x7c00100,0x230400,
-0xb0011db6,0x7c00500,0x230400,0xb0011e00,0x4000000,0x200000,0xb0011e00,0x4000000,0x1500000,0xb0011fb4,0x2802100,0x962460,0xb0011fb4,0x6800100,0x962540,0xb0011fb4,
-0x7c00100,0x430400,0xb0011fb4,0x7c00100,0x2d30400,0xb0011fb4,0xc000010,0x448000,0xb0012000,0x4000000,0x200000,0xb00121b5,0x4000000,0x200000,0xb00121b5,0x4000010,
-0x400000,0xb00121b5,0x7c00100,0x220400,0xb00121b5,0x7c00100,0x250400,0xb00121b5,0xc000010,0x448000,0xb00122b8,0x4000000,0x200000,0xb00122b8,0x7c00100,0x230400,
-0xb00123b7,0x2802400,0x962460,0xb00123b7,0x4000000,0x200000,0xb00123b7,0x7c00100,0x230400,0xb00123b7,0xc000010,0x248000,0xb00a4005,0x7c00100,0xe30400,0xb00a4711,
-0x7c40300,0xe30000,0xb00acf00,0x4000000,0xe00000,0xb00b0500,0x4000000,0xe00000,0xb00b0500,0x4000000,0x2800000,0xb00b109a,0x7c00300,0xe30000,0xb080e487,0x2802000,
-0x962460,0xc0001524,0x4000000,0x500000,0xc0001a18,0x2806400,0x1862460,0xc0001a18,0x7c00100,0x1830000,0xc0007300,0x24000000,0x200000,0xc0008e00,0x24000010,0x400000,
-0xc0009519,0x7c00100,0x220400,0xc0009519,0x7c00100,0x250400,0xc000c300,0x4000000,0x20000f,0xc000d85c,0x2802100,0x962460,0xc000d85c,0x6800100,0x962540,0xc000d85c,
-0x7c00100,0x230400,0xc000dc99,0x7c00100,0x230400,0xc000e719,0x7c00100,0x220400,0xc00107a7,0x7c00100,0x230400,0xc0010eaa,0x7c00100,0x230400,0xc00116b0,0x7c00100,
-0x230560,0xc0011900,0x4000000,0x200000,0xc0012447,0,0x818820,0xc0012447,0,0xc18820,0xc0012447,0,0x1418820,0xc00125b9,0x7c00100,0x230400,
-0xc00126bb,0x2802100,0x962460,0xc00126bb,0x2806400,0x962460,0xc00126bb,0x4000000,0x500000,0xc00126bb,0x6800100,0x962540,0xc00126bb,0x7c00100,0x230400,0xc00127ba,
-0x2802400,0x962460,0xc00127ba,0x4000000,0x200000,0xc00127ba,0x6800000,0x1329800,0xc00127ba,0x7c00100,0x230400,0xc00127ba,0x7c00900,0x230400,0xc0012800,0x4000000,
-0x200000,0xc0012b23,0x4000000,0x200000,0xc0012b23,0x4000000,0x400000,0xc0012b23,0x4000000,0x1500000,0xc0012cbc,0x2802400,0x962460,0xc0012cbc,0x4000000,0x1600000,
-0xc0012cbc,0x6800000,0x1329800,0xc0012cbc,0x7c00100,0x230400,0xc00acf00,0x4000000,0xe00000,0xc00ae300,0x4000000,0xe00000,0xc00b0500,0x4000000,0xe00000,0xc00b0500,
-0x4000000,0x2800000,0xc00b0b11,0x4000000,0x1200000,0xc00b0b11,0x7c00900,0x1230400,0xc00b109a,0x7c00300,0xe30000,0xc00b2914,0x7c00100,0x2530000,0xc00b2916,0x7c00100,
-0x2530c00,0xc00b2a00,0x4000000,0xe00000,0xc040af5e,0x7c00100,0x230400,0xc0c12b89,0x4000000,0x200000,0xc14a44cc,0x4000000,0xe0000d,0xd000131f,0x2802c00,0x962460,
-0xd000171a,0x7c00100,0x230400,0xd0001821,0x2802100,0x962460,0xd0007300,0x24000000,0x200000,0xd0008e00,0x24000000,0x200000,0xd0008f3a,0x2806000,0x962460,0xd0009519,
-0x7c00100,0x220400,0xd0009519,0x7c00100,0x250400,0xd000a500,0x4000000,0x200000,0xd000c300,0x4000000,0xe00000,0xd000d202,0x7c00100,0x230400,0xd000d476,0x7c00100,
-0x230400,0xd000d997,0x2802100,0x962460,0xd000d997,0x6800100,0x962540,0xd000e001,0x2802100,0x962460,0xd000e700,0x4000400,0x200000,0xd000e719,0x7c00100,0x220400,
-0xd000e719,0x7c00500,0x22040f,0xd000fa00,0x4000000,0xe00000,0xd0010eaa,0x4000010,0x400000,0xd0010eaa,0x7c00100,0x230400,0xd0012dbd,0x4000000,0x200000,0xd0012dbd,
-0x7c00100,0x230400,0xd0012fbe,0x2802100,0x962460,0xd0012fbe,0x2802400,0x962460,0xd0012fbe,0x2806400,0x2f62460,0xd0012fbe,0x4000000,0x400000,0xd0012fbe,0x6800000,
-0xe29800,0xd0012fbe,0x6800100,0x962540,0xd0012fbe,0x6800100,0x962541,0xd0012fbe,0x6804400,0x962540,0xd0012fbe,0x7c00100,0x2b30400,0xd0012fbe,0x7c00100,0x2c30560,
-0xd0012fbe,0xc000010,0x448000,0xd0013183,0x7c00100,0x230400,0xd0013200,0x4000000,0x200000,0xd0013200,0x6800000,0x1329805,0xd00134c0,0x2802100,0x962460,0xd00134c0,
-0x4000002,0x400000,0xd00134c0,0x7c00100,0x230400,0xd00a4305,0x7c00100,0xe30400,0xd00a4611,0x7c40300,0xe30000,0xd00a4711,0x7c40300,0xe30000,0xd00a5e11,0x7c40300,
-0xe30000,0xd00acf00,0x4000000,0xe00000,0xd00b0500,0x4000000,0xe00000,0xd00b0500,0x4000000,0x2800000,0xd00b0b11,0x6800500,0x962540,0xd00b0bbf,0x2802200,0xc62460,
-0xd00b119a,0x7c00300,0xe30000,0xd00b2a00,0x4000000,0xe00000,0xd00b2e11,0x7c40300,0xe30000,0xd00b30bf,0x7c00300,0x230000,0xd00b339a,0x7c00300,0xe30000,0xe0000c02,
-0xc000010,0xb48000,0xe0001524,0x2802400,0x962460,0xe0001524,0x7c00100,0x230400,0xe0001615,0x7c00100,0x230400,0xe000251b,0x12882000,0x962460,0xe0002a00,0x4000000,
-0x1500000,0xe0005102,0x4000000,0x200000,0xe0005c00,0x4000000,0x200000,0xe000622a,0x6804400,0x962540,0xe000622a,0x7c00100,0x230400,0xe0008838,0x7c00100,0x220400,
-0xe0008838,0x7c00100,0x250400,0xe0008e00,0x24000000,0x810000,0xe0008e00,0x24000000,0x1410000,0xe0008e00,0x24000002,0x400000,0xe0008e00,0x2c000010,0xb48000,0xe000933e,
-0x7c00100,0x2b30400,0xe000933e,0xc000010,0x448000,0xe0009519,0x7c00100,0x220400,0xe0009519,0x7c00100,0x22040f,0xe0009519,0x7c00100,0x250400,0xe000c178,0x2802100,
-0x962460,0xe000c941,0x2802100,0x962460,0xe000c941,0x2806400,0x962460,0xe000c941,0x7c00100,0x2b30400,0xe000d202,0x2802400,0x962460,0xe000d202,0x7c00100,0x230400,
-0xe000d202,0x7c00500,0x230400,0xe000dc99,0x4000000,0x200000,0xe000e001,0x2802100,0x962460,0xe000e001,0x2802400,0x962460,0xe000fda1,0x7c00100,0x1830000,0xe0013502,
-0x2802400,0x962460,0xe0013502,0x4000000,0x200000,0xe0013502,0x7c00100,0x230400,0xe0013502,0x80000000,0x1329960,0xe00136c1,0x4000000,0x200000,0xe00136c1,0x7c00100,
-0x230400,0xe001370b,0x7c00100,0x230400,0xe0013919,0x7c00500,0x220400,0xe0013919,0x7c00500,0x22040f,0xe0013919,0x7c00d00,0x23040f,0xe0013a19,0x7c00100,0x220400,
-0xe0013a19,0x7c00100,0x230400,0xe0013bc2,0x2802400,0x962460,0xe0013bc2,0x7c00100,0x230400,0xe0013bc2,0xc000010,0x248000,0xe0013cc3,0x6800000,0x1329800,0xe0013cc3,
-0x7c00100,0x230400,0xe0013dc4,0x2802400,0x962460,0xe0013dc4,0x7c00100,0x230400,0xe0013e28,0x7c00100,0x230400,0xe0013fc5,0x7c00100,0x220400,0xe0013fc5,0x7c00100,
-0x250400,0xe0014000,0x4000000,0x200000,0xe0014001,0x2802400,0x962460,0xe00a4711,0x7c40300,0xe30000,0xe00a5e11,0x7c40300,0xe30000,0xe00ac511,0x7c40300,0xe30000,
-0xe00acf00,0x4000000,0xe00000,0xe00ae300,0x4000000,0xe00000,0xe00b0500,0x4000000,0xe00000,0xe00b1314,0x7c00100,0xe30000,0xe00b1316,0x7c00100,0xe30c00,0xe00b2a00,
-0x4000000,0xe00000,0xe00b2a00,0x4000000,0x2800000,0xe00b3816,0x7c00500,0x230c00,0xe0808328,0x2802400,0x962460,0xf0001615,0x6800100,0x962540,0xf0001a18,0x2802000,
-0x1862460,0xf000c247,0x7c00100,0x1430400,0xf000d000,0x4000000,0xe00000,0xf000e300,0x4000000,0xe00000,0xf000e59d,0x2802100,0x962460,0xf000e59d,0x7c00100,0x230400,
-0xf0012447,0,0x818820,0xf0012447,0,0xc18820,0xf0012447,0,0x1418820,0xf0012447,0x2802000,0x962460,0xf0012447,0x2802400,0x962460,0xf0012447,
-0x7c00100,0x230400,0xf0013a19,0x7c00100,0x220400,0xf0014102,0x2802400,0x962460,0xf0014308,0x2802100,0x962460,0xf0014308,0x7c00500,0x22040e,0xf0014308,0x7c00500,
-0x22040f,0xf001440a,0x4000000,0x500000,0xf0014500,0x4000000,0x200000,0xf00146c6,0x2802100,0x962460,0xf00146c6,0x2806000,0x2f62460,0xf00146c6,0x4000000,0xe00000,
-0xf00146c6,0x6800000,0x2d29800,0xf00146c6,0x6800100,0x962540,0xf00146c6,0x6804000,0x962540,0xf00146c6,0x7c00100,0x2b30400,0xf00146c6,0x7c00100,0x2c30560,0xf00146c6,
-0xc000010,0x448000,0xf00147c7,0x2802000,0x962460,0xf00147c7,0x6800000,0x1329800,0xf00147c7,0x7c00100,0x230400,0xf00ac511,0x7c40300,0xe30000,0xf00acf00,0x4000000,
-0xe00000,0xf00b2914,0x7c00100,0x2530000,0xf00b2916,0x7c00100,0x2530c00,0xf00b2a00,0x4000000,0xe00000,0xf00b2a00,0x4000000,0x2800000,0xf00b4211,0x7c40300,0xe30000,
-0xf10a3c00,0x4000000,0xe00000,0xf10a3c00,0x4008000,0xe00000,0xf10a8200,0x4008000,0xe00000,0xf10b4811,0x7c40300,0xe30000};
+0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x4440020,0x11000100,0x40000001,0x4643020,0x11000100,0x40000001,0x4a5a040,0x11000100,0x40000001,
+0x516a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc8c4000b,0x11000200,0x7c00100,0xc8220402,0x11000200,0x24000000,0x4200000,0x11000200,0x24000008,0x5710000,
+0x11000200,0x40000001,0x5d3b020,0x11000219,0x7c00100,0xfc220401,0x11000219,0x7c00100,0xfc250401,0x11000319,0x7c00100,0xc8220402,0x11000319,0x7c00100,0xfc220401,0x11000319,
+0x7c00100,0xfc250400,0x11000319,0x7c00100,0xfc250401,0x11000419,0x7c00100,0x8220400,0x11000419,0x7c00100,0x10220400,0x11000419,0x7c00100,0x10230400,0x11000419,0x7c00100,
+0x18220400,0x11000419,0x7c00100,0x18230400,0x11000419,0x7c00100,0x20220400,0x11000419,0x7c00100,0x20250400,0x11000419,0x7c00100,0xc8220402,0x11000419,0x7c00100,0xc8250402,
+0x11000419,0x7c00100,0xfc220401,0x11000419,0x7c00100,0xfc250400,0x11000419,0x7c00100,0xfc250401,0x11000519,0x7c00100,0x10220400,0x11000519,0x7c00100,0x10230400,0x11000519,
+0x7c00100,0x18220400,0x11000519,0x7c00100,0x30220400,0x11000519,0x7c00100,0xfc220400,0x11000600,0x4000400,0x4200400,0x11000600,0x4000400,0xc8200002,0x11000600,0x7c00500,
+0x10220400,0x11000600,0x7c00500,0x10230400,0x11000600,0x7c00500,0x10530400,0x11000600,0x7c00500,0xfc230400,0x11000600,0x7c00d00,0x10230400,0x11000619,0x7c00500,0xc822040f,
+0x11000800,0x4000010,0xc9001401,0x11000800,0x4000400,0xc8200001,0x11000800,0x6800010,0xc8201001,0x11000800,0x7c00500,0xc8230401,0x11000807,0x7c00100,0x80220400,0x11000807,
+0x7c00100,0x80250400,0x1100080e,0x4000400,0xc8200002,0x1100080e,0x4000400,0xf8200000,0x1100080e,0x7000500,0xc8220402,0x1100080e,0x7c00100,0x8250400,0x1100080e,0x7c00100,
+0x18220400,0x1100080e,0x7c00100,0xc8220402,0x1100080e,0x7c00100,0xc8250401,0x1100080e,0x7c00100,0xfc220400,0x1100080e,0x7c00100,0xfc220401,0x1100080e,0x7c00100,0xfc250401,
+0x1100080e,0x7c00120,0xc8220402,0x1100080e,0x7c00120,0xc8250402,0x11000908,0x4000000,0xc200000,0x11000908,0x7c00100,0x8220400,0x11000908,0x7c00100,0x8220401,0x11000908,
+0x7c00100,0x8250400,0x11000908,0x7c00100,0x8250401,0x11000908,0x7c00100,0xfc220400,0x11000908,0x7c00100,0xfc220401,0x11000908,0x7c00100,0xfc250400,0x11000908,0x7c00100,
+0xfc250401,0x11000a03,0x4000000,0x4200400,0x11000a03,0x4000000,0x4201000,0x11000a03,0x4000000,0x4270000,0x11000a03,0x7c00100,0xc8220402,0x11000a03,0x7c00100,0xfc220400,
+0x11000a03,0x7c00100,0xfc250400,0x11000a03,0x7c00500,0xfc230400,0x11000a03,0xc000010,0x5049400,0x11000b13,0x2802500,0x20962460,0x11000b13,0x2802500,0xfc962460,0x11000b13,
+0x4000000,0x4200000,0x11000b13,0x4000000,0xf8201000,0x11000b13,0x4000000,0xf8230400,0x11000b13,0x4000002,0x4400000,0x11000b13,0x4000010,0x4200000,0x11000b13,0x7c00100,
+0xfe633800,0x11000c00,0x80000000,0x5329960,0x11000c02,0x2802100,0x20962460,0x11000c02,0x2802400,0x20962460,0x11000c02,0x4000000,0x4200000,0x11000c02,0x4000000,0x5329400,
+0x11000c02,0x4000000,0x5329800,0x11000c02,0x4000000,0x5500000,0x11000c02,0x6800000,0xfd329800,0x11000c02,0x7c00100,0x8230400,0x11000c02,0x7c00100,0xc8230402,0x11000c02,
+0x7c00100,0xfc230400,0x11000c02,0x7c00100,0xfc230401,0x11000c02,0x7c00500,0xfc230400,0x11000c02,0x7d00100,0xc0230400,0x11000f01,0x2802400,0x10962460,0x11000f0a,0x2802100,
+0xfc962460,0x11000f0a,0x2802400,0xfc962460,0x11000f0a,0x2806400,0xfc962460,0x11000f0a,0x4000000,0x4200000,0x11000f0a,0x6800100,0xfc962540,0x11000f0a,0x7c00100,0xc8230401,
+0x11000f0a,0x7c00100,0xfc230400,0x11000f0a,0x7c00100,0xfc230401,0x11001004,0x2802100,0xfc962460,0x11001004,0x2802400,0xfc962460,0x11001004,0x2806400,0xfc962460,0x11001004,
+0x4000000,0x4200000,0x11001004,0x4000000,0x5500000,0x11001004,0x6800100,0xfc962540,0x11001004,0x6800100,0xfc962541,0x11001004,0x7c00100,0xc8230401,0x11001004,0x7c00100,
+0xfc230400,0x11001110,0x2802100,0xfc962460,0x11001110,0x2802400,0xfc962460,0x11001110,0x2806400,0xfc962460,0x11001110,0x6800100,0xfc962540,0x11001110,0x7c00100,0xc8230401,
+0x11001110,0x7c00100,0xfc230400,0x1100120f,0x2802100,0xfc962460,0x1100120f,0x2802400,0xfc962460,0x1100120f,0x2806400,0xfc962460,0x1100120f,0x6800100,0xfc962540,0x1100120f,
+0x7c00100,0xfc230400,0x1100131f,0x2802100,0xfc962460,0x1100131f,0x2802400,0xfc962460,0x1100131f,0x2806400,0xfc962460,0x1100131f,0x4000000,0x4200000,0x1100131f,0x6800000,
+0xfd329800,0x1100131f,0x6800100,0xfc962540,0x1100131f,0x6800100,0xfc962541,0x1100131f,0x7c00100,0xc8230401,0x1100131f,0x7c00100,0xfc230400,0x11001423,0x2802100,0xfc962460,
+0x11001423,0x2806400,0xfc962460,0x11001423,0x6800100,0xfc962540,0x11001423,0x6800100,0xfc962541,0x11001423,0x7c00100,0xfc230400,0x11001423,0x7c00100,0xfc230401,0x11001524,
+0x2802100,0xfc962460,0x11001524,0x2802100,0xfc962461,0x11001524,0x2806400,0xfc962460,0x11001524,0x6800000,0xfd329800,0x11001524,0x6800100,0xfc962540,0x11001524,0x7c00100,
+0xfc230400,0x11001615,0x2802100,0xfc962460,0x11001615,0x2806400,0xfc962460,0x11001615,0x6800100,0xfc962540,0x11001615,0x6800100,0xfc962541,0x11001615,0x7c00100,0x8230400,
+0x11001615,0x7c00100,0xfc230400,0x1100171a,0x2802100,0xfc962460,0x1100171a,0x2806400,0xfc962460,0x1100171a,0x6800000,0xfd329800,0x1100171a,0x6800100,0xfc962540,0x1100171a,
+0x6800100,0xfc962541,0x1100171a,0x7c00100,0xfc230400,0x11001900,0x4000000,0x5600000,0x11001926,0x2802100,0xfd862460,0x11001926,0x2802400,0xfd862460,0x11001926,0x2806100,
+0xfd862460,0x11001926,0x4000000,0x4200000,0x11001926,0x4000010,0x4400000,0x11001926,0x6800000,0xfd329800,0x11001926,0x7800100,0xc9830142,0x11001926,0x7c00100,0xfd830000,
+0x11001926,0x7c00900,0xfd830000,0x11001926,0x7e00100,0xfd830000,0x11001a18,0x2802100,0xfd862460,0x11001a18,0x2802400,0xfd862460,0x11001a18,0x6800000,0xfd329800,0x11001a18,
+0x7800100,0xc9830142,0x11001a18,0x7c00100,0xc9830002,0x11001a18,0x7c00100,0xfd830000,0x11001a18,0x7c00900,0xfd830000,0x11001a18,0x7e00100,0xfd830000,0x11001d0c,0x7c00100,
+0x8230400,0x11001d0c,0x7c00100,0x8250400,0x11001d0c,0x7c00100,0xfc230400,0x11001e12,0x7c00100,0xa230500,0x11001e12,0x7c00100,0xa330520,0x11001e12,0x7c80100,0xc6330520,
+0x11002619,0x7c00100,0xc8220402,0x11002619,0x7c00100,0xfc220401,0x11002619,0x7c00100,0xfc250401,0x1100270e,0x4000400,0xc8200001,0x1100270e,0x4000400,0xc8200002,0x1100270e,
+0x4000400,0xc8500001,0x1100270e,0x7c00100,0xc8220401,0x1100270e,0x7c00100,0xc8250401,0x1100270e,0x7c00100,0xfc220401,0x1100270e,0x7c00100,0xfc250401,0x11002800,0x80000,
+0xc4918820,0x11002800,0x80000,0xc5c18020,0x11002800,0x180000,0xc0918820,0x11002800,0x4000001,0xc8445801,0x11002800,0x4000001,0xc8445802,0x11002800,0x4000001,0xc8c4000b,
+0x11002800,0x6800000,0x10201c00,0x11002800,0x6800020,0x10201c00,0x11002800,0x24000000,0x4200000,0x11002800,0x24000000,0x4810000,0x11002800,0x24000000,0x5410000,0x11002800,
+0x24000000,0x5500000,0x11002800,0x24000000,0xc8200002,0x11002800,0x24000000,0xc9500002,0x11002800,0x24000002,0x4400000,0x11002800,0x24000006,0xc8c0000b,0x11002800,0x24000008,
+0x5410000,0x11002800,0x24000008,0x5710000,0x11002800,0x24000020,0x5001400,0x11002800,0x24000020,0xc9500002,0x11002800,0x2c000010,0x5248000,0x11002800,0x2c000010,0xc9248002,
+0x11002800,0x40000001,0x463b020,0x11002800,0x40080000,0xc4918820,0x11002801,0x2880000,0xc6a65620,0x11002801,0x2882000,0xc4962460,0x11002900,0x4000000,0xc820000e,0x11002900,
+0x4000000,0xc820000f,0x11002900,0x4000020,0xc820000e,0x11002900,0x4000020,0xc820000f,0x11002900,0x4000020,0xc881000e,0x11002900,0x4000020,0xc881000f,0x11002900,0x4000020,
+0xc941000e,0x11002900,0x4000020,0xc941000f,0x11002900,0x4000022,0xc820000e,0x11002900,0x4000022,0xc820000f,0x11002a00,0x4000000,0x5500000,0x11002a00,0x4000000,0x5600000,
+0x11002a00,0x4000000,0xc9600002,0x11002b01,0x2000,0x14962460,0x11002b01,0x2802020,0x10962460,0x11002c00,0x4000000,0x4200000,0x11002c00,0x4000000,0xc200000,0x11002c00,
+0x4000000,0xc8200002,0x11002c00,0x4000000,0xc820000f,0x11002c00,0x4000020,0x4200000,0x11002c00,0x7c00000,0x10200000,0x11002c00,0x7c00020,0x10200000,0x11002c00,0x7c00120,
+0xc8220405,0x11002c00,0x7c00120,0xc8230402,0x11002c00,0x7c00120,0xc8250402,0x11002c00,0x7c00120,0xc8250405,0x11002c19,0x7c00100,0x8250400,0x11002c19,0x7c00100,0xc8250401,
+0x11002d00,0x4000000,0xc8100006,0x11002d00,0x4000000,0xc8200006,0x11002d19,0x7c00100,0x18230400,0x11002d19,0x7c00100,0xc8220402,0x11002d19,0x7c00100,0xc8250402,0x11002e00,
+0x24000000,0x4200000,0x11002e00,0x24000020,0x4200000,0x11002e00,0x24000020,0x4200001,0x11002f00,0x24000020,0x4200000,0x11002f00,0x24000020,0x4200001,0x11002f00,0x24000020,
+0x4f00000,0x11002f00,0x24000020,0x5600000,0x11002f00,0x24000020,0xc8200002,0x11002f00,0x24000022,0x5600000,0x11003000,0x24000000,0x4200000,0x11003000,0x24000020,0x4200000,
+0x11003000,0x24000020,0x4810000,0x11003000,0x24000020,0x5410000,0x11003100,0x24000000,0x4200000,0x11003200,0x24000000,0x4200000,0x11003300,0x4000000,0xc8100003,0x11003400,
+0x24000000,0x4100000,0x11003400,0x24000000,0x4200000,0x11003500,0x24000000,0x4200000,0x11003600,0x24000000,0x4200000,0x11003600,0x24000020,0x4200000,0x11003700,0x24000000,
+0x4200000,0x11003700,0x24000000,0x4e00000,0x11003700,0x24000000,0x6800000,0x11003700,0x24000020,0x4200000,0x11003800,0x4000000,0x4100000,0x11003800,0x24000000,0x4200000,
+0x11003800,0x24000000,0x4b00000,0x11003800,0x24000000,0x4e00000,0x11003800,0x24000000,0x5710000,0x11003800,0x24000000,0x6800000,0x11005003,0x7c00100,0xc8220402,0x11005013,
+0x2802500,0x30962460,0x11005013,0x4000020,0xc8200005,0x11005013,0x7c00100,0xca633801,0x11005013,0x7c00100,0xca633802,0x11005013,0x7c00100,0xca633805,0x11005019,0x7c00100,
+0xc8220402,0x11005102,0x7000100,0xc8230408,0x11005102,0x7c00100,0xc8230404,0x11005102,0x7c00100,0xc8230407,0x11005102,0x7c00100,0xc8230408,0x11005102,0x7c00100,0xc8230409,
+0x11005201,0x2802400,0x10962460,0x11005500,0x80000,0xc5e18820,0x11005502,0x7000100,0xc8230408,0x11005502,0x7c00100,0xc8230404,0x11005502,0x7c00100,0xc8230407,0x11005502,
+0x7c00100,0xc8230408,0x11005502,0x7c00100,0xc8230409,0x11005667,0x1000,0,0x11020200,0x80004,0xc4418820,0x11020200,0x4000000,0xc8100006,0x11020200,0x4000000,
+0xc810000f,0x11020200,0x4000400,0xc8100002,0x11020200,0x4000400,0xc8500002,0x11020200,0x6800c00,0xf8101000,0x11020200,0x24000000,0x4100000,0x11020200,0x24000000,0x4200000,
+0x11020200,0x24000000,0x5400000,0x11020200,0x24000000,0x5500000,0x11020200,0x24000000,0x5600000,0x11020200,0x24000020,0x4100000,0x11020200,0x24000020,0x5600000,0x11020219,
+0x7c00100,0xc812040f,0x11020219,0x7c00100,0xfc220400,0x11020219,0x7c00100,0xfc220401,0x11020219,0x7c00100,0xfc250400,0x11020319,0x7c00100,0xc8220402,0x11020319,0x7c00100,
+0xc8250402,0x11020319,0x7c00100,0xfc220400,0x11020319,0x7c00100,0xfc220401,0x11020319,0x7c00100,0xfc250400,0x11020319,0x7d00100,0xc0220402,0x11020419,0x7c00100,0xfc220401,
+0x11020519,0x7c00100,0x10220400,0x11020600,0x4000400,0x4200400,0x11020600,0x4000400,0xc8100002,0x11020600,0x7c00500,0x10130400,0x11020600,0x7c00d00,0x10130400,0x11020701,
+0x2802400,0x10962460,0x11020701,0x2802400,0x10c62460,0x11020701,0x2802400,0x20962460,0x11020701,0x2802400,0xc8962461,0x11020701,0x2802400,0xfc962460,0x1102080e,0x7c00100,
+0xfc220400,0x1102080e,0x7c00100,0xfc250400,0x11020908,0x7c00100,0xfc220400,0x11020908,0x7c00100,0xfc220401,0x11020908,0x7c00100,0xfc250400,0x11020908,0x7c00100,0xfc250401,
+0x11022800,0x24000000,0x4100000,0x11022800,0x24000000,0x4200000,0x11022800,0x24000000,0x5500000,0x11022800,0x24000000,0xc8200002,0x11022800,0x24000000,0xc8f00002,0x11022800,
+0x24000000,0xc8f0ac02,0x11022800,0x24000000,0xf8401000,0x11022800,0x24000002,0x4100000,0x11022800,0x24000002,0x4370000,0x11022800,0x24000002,0x4470000,0x11022800,0x24000006,
+0xf8400000,0x11022800,0x24000008,0x5710000,0x11022800,0x24000008,0x5712c00,0x11022800,0x24000008,0xf9712c00,0x11022800,0x24000020,0x4100000,0x11022800,0x24000020,0x5500000,
+0x11022800,0x24000020,0xc9500002,0x11022900,0x4000000,0xc810000e,0x11022900,0x4000000,0xc810000f,0x11022919,0x7c00100,0xc812040f,0x11022c00,0x4000000,0xc8100002,0x11022c00,
+0x4000000,0xc810000f,0x11022c00,0x4000000,0xc9500002,0x11022c00,0x4000000,0xc9600002,0x11022c00,0x7c00120,0xc8120405,0x11022c0e,0x7c00100,0xc8250401,0x11022c19,0x7c00100,
+0xc8150401,0x11022d00,0x4000000,0xc8100006,0x11022d00,0x4000000,0xc8200006,0x11022d19,0x7c00100,0xc8120402,0x11022d19,0x7c00100,0xc8150402,0x11022e00,0x24000000,0x4200000,
+0x11022e00,0x24000020,0x4100000,0x11022f00,0x24000020,0x4100000,0x11022f00,0x24000020,0x4100001,0x11022f00,0x24000020,0xc8100002,0x11023000,0x24000000,0x4100000,0x11023300,
+0x4000000,0xc8100002,0x11023300,0x4000000,0xc8100003,0x11023300,0x4000100,0xc8120403,0x11023300,0x4000100,0xc8150403,0x11023400,0x24000000,0x4100000,0x11023500,0x24000000,
+0x4100000,0x11023600,0x24000000,0x4100000,0x11023600,0x24000020,0x4100000,0x11023700,0x24000000,0x4100000,0x11023700,0x24000000,0x4e00000,0x11023700,0x24000020,0x4100000,
+0x11023800,0x4000000,0x4100000,0x11023800,0x24000000,0x4200000,0x11024e67,0,0,0x11025600,0x4000000,0x4100000,0x11042a00,0x4000000,0x5600000,0x11045700,
+0x4000000,0xc820000a,0x11045700,0x4000020,0xc820000a,0x11045712,0x7c00100,0xc8e3040a,0x11045712,0x7c80100,0xc4e3040a,0x11045716,0x7c00100,0xc8e30c0a,0x11045716,0x7c00100,
+0xca530c0a,0x11063d00,0x4000001,0xc8445811,0x11065700,0x4000000,0xc8810011,0x11065700,0x4000000,0xc8e00011,0x11065700,0x4000000,0xc9410011,0x11065700,0x4000000,0xc9500011,
+0x11065700,0x4000000,0xc9600011,0x11065700,0x4000006,0xc8e70011,0x11065700,0x4000008,0xc8e00011,0x11065700,0x4000008,0xc8e02c11,0x11065700,0x4000010,0xc8871411,0x11065700,
+0x4000010,0xc9201411,0x11065700,0x4000010,0xc9271011,0x11065700,0x4000020,0xc8e00011,0x11065700,0x4000400,0xc8e00011,0x11065700,0x4000420,0xc8e00011,0x11065700,0x6800000,
+0xc8e01c11,0x11065700,0x6800040,0xc8e29811,0x11065700,0xc000010,0xc880ac11,0x11065700,0xc000010,0xc8b48011,0x11065719,0x7c00100,0xc8e20411,0x11065719,0x7c00100,0xc8e50411,
+0x11065719,0x7c00140,0xc8e20411,0x11065719,0x7c00140,0xc8e50411,0x11080100,0x6800000,0xfc201c00,0x11080100,0x68000c0,0xfd329800,0x11080100,0x24000000,0x4200000,0x11080100,
+0x24000000,0x4810000,0x11080100,0x24000000,0x5410000,0x11080100,0x24000000,0x5500000,0x11080100,0x24000000,0x5600000,0x11080100,0x24000000,0x5b00000,0x11080100,0x24000000,
+0x6410000,0x11080100,0x24000006,0xf8d70000,0x11080100,0x24000008,0x5714000,0x11080100,0x24000008,0xf9713c00,0x11080100,0x24000010,0x5001400,0x11080100,0x24000010,0x5071400,
+0x11080100,0x24000010,0xf9071000,0x11080100,0x24000020,0x4200000,0x11080100,0x24000020,0x4400000,0x11080100,0x24000020,0x5600000,0x11080100,0x24000400,0x4200000,0x11080100,
+0x24000420,0x4200000,0x11080100,0x2c000010,0x4b48000,0x11080100,0x2c000010,0xf900ac00,0x11080100,0x44000001,0x5a45800,0x11080119,0x7c00100,0xfc220400,0x11080119,0x7c00100,
+0xfc250400,0x11080119,0x7c001c0,0xfc220400,0x11080119,0x7c001c0,0xfc250400,0x11080200,0x4000400,0xc8200002,0x11080200,0x24000000,0x4200000,0x11080200,0x24000000,0x5500000,
+0x11080200,0x24000000,0x5600000,0x11080200,0x24000020,0x4200000,0x110a1e12,0x7c00100,0xa130480,0x110a1e12,0x7c80100,0xc6130480,0x110a3000,0x24000000,0x4e00000,0x110a3000,
+0x24100000,0xc0810001,0x110a3000,0x24100000,0xc1410001,0x110a3700,0x24000000,0x4200000,0x110a3d00,0x4000000,0x4e00000,0x110a3d00,0x4000000,0xc8e00002,0x110a3d00,0x24000000,
+0x4e00000,0x110a3d11,0x7c00300,0x10e30000,0x110a3d11,0x7c00300,0xfce30000,0x110a3d11,0x7c00900,0xfd230400,0x110a3d12,0x2802400,0x18962460,0x110a3e14,0x7c00100,0xfce30000,
+0x110a3e14,0x7c00100,0xfce30001,0x110a3e14,0x7c00100,0xfe530000,0x110a3e14,0x7c00900,0xfd230000,0x110a3e14,0x7c00900,0xfd230001,0x110a3f16,0x7c00100,0xfce30c00,0x110a3f16,
+0x7c00100,0xfce30c01,0x110a3f16,0x7c00100,0xfe530c00,0x110a3f16,0x7c00900,0xfd230c00,0x110a3f16,0x7c00900,0xfd230c01,0x110a4005,0x7c00100,0xfce30400,0x110a4112,0x7c00100,
+0xc8e30402,0x110a4112,0x7c80100,0xc4e30402,0x110a4400,0x4000000,0x14e00000,0x110a4412,0x4000000,0xc8e00002,0x110a4412,0x4000000,0xc8e00003,0x110a4416,0x4000000,0xc8e00c03,
+0x110a4500,0x4000000,0xc8e0000d,0x110a4516,0x4000000,0xc8e00c0d,0x110a4711,0x7c40300,0xfce30000,0x110a4f11,0x7c00300,0xc8e30001,0x110a4f11,0x7c40300,0xfce30000,0x110a5300,
+0x4000000,0xc8810010,0x110a5300,0x4000000,0xc8e00002,0x110a5300,0x4000000,0xc8e00010,0x110a5300,0x4000000,0xc9410010,0x110a5300,0x4000002,0xc8e70010,0x110a5300,0x4000008,
+0xc8810010,0x110a5300,0x4000008,0xc9410010,0x110a5300,0x6800000,0xc8e01c02,0x110a5300,0x6800000,0xc8e01c10,0x110a5400,0x4000000,0xc881000c,0x110a5400,0x4000000,0xc8e0000c,
+0x110a5400,0x4000000,0xc941000c,0x110a5400,0x4000000,0xc950000c,0x110a5400,0x4000000,0xc960000c,0x110a5400,0x4000002,0xc8e7000c,0x110a5400,0x4000010,0xc887140c,0x110a5400,
+0x4000010,0xc8e7000c,0x110a5400,0x4000010,0xc920140c,0x110a5400,0x4000010,0xc927100c,0x110a5400,0x4000020,0xc8e0000c,0x110a5400,0x4000026,0xc8e7000c,0x110a5400,0xc000010,
+0xc880ac0c,0x110a5400,0xc000010,0xc8b4800c,0x11400c0c,0x4000010,0x4b00000,0x11400c0c,0x4000010,0x5071400,0x11400c17,0xc000010,0x4b48000,0x11400c1e,0x7c00900,0x8230400,
+0x11400f4b,0xc000010,0x4448000,0x11400f5f,0xc000010,0x4448000,0x11401d94,0x4000000,0x4200000,0x11403dcc,0x4000000,0x4e00000,0x114457c1,0x4000008,0xc881000a,0x114457c1,
+0x4000008,0xc941000a,0x114457c1,0x4000010,0xc887000a,0x114457c1,0x6800004,0xc920000a,0x114457c1,0xc000010,0xc884800a,0x114457ca,0x3802500,0xc926246a,0x114457ca,0x7c00d00,
+0xca530c0a,0x114a3dc1,0x24000000,0x4810000,0x114a3dc1,0x24000000,0x5410000,0x114a3dc1,0x24000008,0x4810000,0x114a3dc1,0x24000008,0x5410000,0x114a3dc1,0x24000010,0x4870000,
+0x114a3dc1,0x2c000010,0x4848000,0x114a3dc7,0x4000000,0x4e00000,0x114a3dc7,0x24000000,0x4e00000,0x114a3dc7,0x24000002,0x4e00000,0x114a3dc7,0x24000002,0x5200000,0x114a3dc7,
+0x24000008,0x4810000,0x114a3dc7,0x24000008,0x5410000,0x114a3dc7,0x24000008,0xc810000,0x114a3dca,0x7c00900,0x10930c00,0x114a3dca,0x7c00900,0x10e30c00,0x114a3dcc,0x7c00300,
+0xfce30000,0x114a3eca,0x7000400,0xc9200c02,0x114a3fc1,0x6800004,0xf9200000,0x114a3fca,0x7c00d00,0xfe530c00,0x114a42cc,0x4000000,0x4e00000,0x114a42cc,0x4000000,0xc8e0000f,
+0x114a44cc,0x4000000,0xc8e00002,0x114a44cc,0x4000000,0xc8e00003,0x114a45cc,0x4000000,0xc8e00002,0x114a45cc,0x4000000,0xc8e0000d,0x11505113,0x24000000,0x14810000,0x11505113,
+0x24000000,0x15410000,0x1180090a,0x2802400,0x18962460,0x11800c27,0x2802100,0xfc962460,0x11800c27,0x2802500,0xfc962460,0x11800f32,0x2802400,0x8962460,0x11800f3f,0x2802400,
+0x8962460,0x11820700,0x2802400,0xfc962460,0x11820700,0x2802500,0xfc962460,0x118a3dcd,0x2802400,0x10962460,0x118a3eca,0x2802400,0xfc962460,0x11c00904,0x2802400,0x8962460,
+0x11c00908,0x2802400,0x18962460,0x11c00c2c,0x6800000,0xfd329800,0x11c00c30,0xc000010,0x4b48000,0x11c00f78,0x6800000,0xfd329800,0x11c0107d,0x6800000,0xfd329800,0x11c01181,
+0x6800000,0xfd329800,0x11c01285,0x6800000,0xfd329800,0x11c01489,0x4000000,0x4200000,0x11c01489,0x6800000,0xfd329800,0x11c0168d,0x6800000,0xfd329800,0x11d05117,0x7c00100,
+0xc8230408,0x20000067,0x1000,0,0x20000b13,0x2802400,0x20962460,0x20000b13,0x2802500,0x20962460,0x20001b27,0x2802100,0xc8962461,0x20001b27,0x2802100,0xfc962460,
+0x20001b27,0x2802400,0x10962460,0x20001b27,0x2802400,0x20962460,0x20001b27,0x2802400,0xfc962460,0x20001b27,0x2802500,0xfc962460,0x20001b27,0x2806400,0xfc962460,0x20001b27,
+0x2902100,0xc0962462,0x20001b27,0x4000000,0x4200000,0x20001b27,0x4000000,0x4400000,0x20001b27,0x4000000,0x4500000,0x20001b27,0x4000000,0x4810000,0x20001b27,0x4000000,
+0x4b00000,0x20001b27,0x4000000,0x5410000,0x20001b27,0x4000000,0xc8c0000b,0x20001b27,0x4000000,0xf8400000,0x20001b27,0x4000010,0x4b00000,0x20001b27,0x4000010,0x4c00000,
+0x20001b27,0x6800000,0xfd329800,0x20001b27,0x6800100,0xfc462540,0x20001b27,0x6800400,0xfc962540,0x20001b27,0x7c00100,0xc8230401,0x20001b27,0x7c00100,0xfc230400,0x20002619,
+0x7c00100,0xc8220401,0x20002a00,0x4000000,0x5600000,0x20004b67,0,0x1900000,0x20004c67,0,0x1900000,0x20004d67,0,0x1900000,0x20006d67,0x1000,
+0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,0,0,0x200a4a12,0x7c00100,0xfdf304c1,0x200a4a12,0x7c00100,0xfe0304e1,
+0x21005600,0x4000000,0x4700000,0x21022a00,0x4000000,0x5600000,0x30000419,0x7c00100,0x8220400,0x30000419,0x7c00100,0x8250400,0x30000419,0x7c00100,0x20220400,0x30000419,
+0x7c00100,0x20250400,0x30000419,0x7c00100,0xfc220401,0x30000419,0x7c00100,0xfc250401,0x30000519,0x7c00100,0x10220400,0x30000600,0x4000400,0x4200400,0x30000600,0x7c00500,
+0x10230400,0x30000600,0x7c00500,0xfc230400,0x30000605,0x4000400,0x4200400,0x3000080e,0x7c00100,0x8220400,0x3000080e,0x7c00100,0x10220400,0x30000908,0x2000,0xc962460,
+0x30000908,0x7c00100,0xfc220400,0x30000908,0x7c00100,0xfc220401,0x30000908,0x7c00100,0xfc250400,0x30000908,0x7c00100,0xfc250401,0x30000a03,0x4000006,0xf8400400,0x30000c02,
+0x4000000,0xf8200000,0x30000c02,0x7c00100,0xfc230400,0x30000d22,0x2802100,0x40962460,0x30000d22,0x2802400,0x50962460,0x30000d22,0x2802500,0x40962460,0x30000d22,0x4000000,
+0x44200000,0x30000d22,0x4000010,0x44200000,0x30000d22,0x7c00100,0x40230400,0x30000d22,0xc000010,0x44248000,0x30000d22,0x80000000,0x44218560,0x30000e25,0x2802500,0xfc962460,
+0x30000e25,0x7c00100,0xfc230400,0x30001821,0x2802100,0x30962460,0x30001821,0x2802100,0xfc962460,0x30001821,0x2806400,0xfc962460,0x30001821,0x4000000,0x4200000,0x30001821,
+0x6800100,0x30962540,0x30001821,0x6800100,0xfc962540,0x30001821,0x6800100,0xfc962541,0x30001821,0x7c00100,0x30230400,0x30001821,0x7c00100,0xfc230400,0x30001b27,0x2802100,
+0xfc962460,0x30001b27,0x2802400,0xfc962460,0x30001b27,0x4000000,0x4200000,0x30001b27,0x4000000,0x4400000,0x30001b27,0x7c00100,0xfc230400,0x30001c1c,0x2802100,0xfd862460,
+0x30001c1c,0x2802400,0xfd862460,0x30001c1c,0x2806400,0xfd862460,0x30001c1c,0x4000000,0x4200000,0x30001c1c,0x6800100,0xfd862400,0x30001c1c,0x6800100,0xfd862540,0x30001c1c,
+0x7c00100,0xfd830000,0x30001c1c,0x7c00100,0xfd830001,0x30001c1c,0xc000010,0x4448000,0x30001f0b,0x4000000,0x4200000,0x30001f0b,0x4000010,0x4200000,0x30001f0b,0x4000010,
+0x4400000,0x30001f0b,0x6800000,0x8200000,0x30001f0b,0x7c00100,0xfc230400,0x30001f0b,0xc000010,0x4248000,0x30002006,0x7c00100,0x40250400,0x30002128,0x4000000,0x44200000,
+0x30002128,0x7c00100,0x40230400,0x30002128,0xc000010,0x44248000,0x3000221d,0x4000000,0x84810000,0x3000221d,0x4000000,0x85410000,0x3000221d,0x4000001,0x84445800,0x3000221d,
+0x7c00100,0x80230400,0x30002300,0x4000010,0x4400000,0x30002320,0x7c00100,0x80230400,0x30002417,0x2802100,0xfd862460,0x30002417,0x2802400,0x9862460,0x30002417,0x2802400,
+0x11862460,0x30002417,0x2802400,0x19862460,0x30002417,0x2802400,0xfd862460,0x30002417,0x2806400,0xfd862460,0x30002417,0x2882000,0xc5862460,0x30002417,0x4000000,0x4200000,
+0x30002417,0x4000000,0x5600000,0x30002417,0x4000000,0xc400000,0x30002417,0x4000010,0x4400000,0x30002417,0x4000010,0x5200000,0x30002417,0x6800000,0xfd329800,0x30002417,
+0x6800100,0xfd862540,0x30002417,0x7c00100,0x9830000,0x30002417,0x7c00100,0xfd830000,0x30002417,0x7d00100,0xc1830000,0x30002417,0xc000010,0x4448000,0x3000251b,0x80000,
+0xc4c18820,0x3000251b,0x2802100,0xa0962460,0x3000251b,0x3c02100,0x80962460,0x3000251b,0x4000000,0x84200000,0x3000251b,0x4000006,0x84500000,0x3000251b,0x4000010,0x84400000,
+0x3000251b,0x4000010,0x84b70000,0x3000251b,0x4000800,0x84200000,0x3000251b,0x6800000,0x81329800,0x3000251b,0x7c00100,0x80230400,0x3000251b,0x7c00900,0x80230400,0x3000251b,
+0xc000010,0x84b48000,0x3000251b,0x12882000,0xc4962460,0x30002800,0x24000000,0x4200000,0x30002800,0x2c000010,0xc9248002,0x30002a00,0x4000000,0x5600000,0x30002b01,0x2000,
+0x14962460,0x30002c00,0x4000000,0x4200000,0x30002c00,0x7c00100,0xc8220405,0x30002d19,0x7c00100,0x18250400,0x30002e00,0x24000000,0x4200000,0x30003000,0x24000000,0x4200000,
+0x30003100,0x24000000,0x4200000,0x30003600,0x24000000,0x4200000,0x30003700,0x24000000,0x4200000,0x3000392e,0x24000000,0x14200000,0x30005013,0x7c00100,0xca633801,0x30005600,
+0,0x4918820,0x30020600,0x4000400,0x4500400,0x30020701,0x2802400,0x10962460,0x30020701,0x2802400,0x10c62460,0x300a3a11,0x4020000,0x4e00000,0x300a3a11,0x4020000,
+0xc8e00002,0x300a3b11,0x4020000,0xc8e00002,0x300a3c00,0x4008000,0x4e00000,0x300a3c00,0x4010000,0x4e00000,0x300a3d11,0x7c00300,0xc8e30002,0x300a4305,0x7c00100,0xfce30400,
+0x300a4611,0x7c40300,0xfce30000,0x300a4829,0x7c00100,0x40e30400,0x300a4829,0x7c00900,0x41230400,0x300a4929,0x4000000,0x44e00000,0x3040259a,0x4000010,0x84400000,0x3040259a,
+0x4000010,0x84b70000,0x3040259a,0xc000010,0x84b48000,0x304028bc,0x4000001,0xc8c41c0b,0x304a3dcc,0x4000000,0x4e00000,0x30800c27,0x2802100,0xfc962460,0x30c01c92,0x6800000,
+0xfd329800,0x3100080e,0x7c00120,0xc8220402,0x3100080e,0x7c00120,0xc8250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x84200000,0x3100581e,0x7c00100,0x80230400,
+0x3100590d,0x7c00100,0x80230400,0x31005a09,0x7c00100,0x80220400,0x31005a09,0x7c00100,0x80250400,0x31005b00,0x4000000,0x14200000,0x31005c00,0x80000,0xc4918820,0x31005c00,
+0x2802000,0x10962460,0x31005c00,0x2802400,0x10962460,0x31005c00,0x4000000,0x14200000,0x31005c00,0x4000000,0xc8200001,0x31005c00,0x6800000,0x10962540,0x31005c00,0x6800400,
+0x10962540,0x31005c01,0x2802400,0x10962460,0x31005d00,0x4000020,0xc8200005,0x31005d00,0x6800020,0xc9329805,0x31005d00,0x7c00120,0xc8220405,0x31005d00,0x7c00120,0xc8250405,
+0x31006000,0x82000,0xc4962460,0x31006000,0x180000,0xc0918820,0x310a5e11,0x7c40300,0xfce30000,0x310a5f11,0x7c00300,0xc8e30001,0x32000419,0x7c00100,0x20250400,0x3200080e,
+0x4000020,0x4200000,0x3200080e,0x7c00100,0x8220400,0x3200080e,0x7c00100,0x8250400,0x32000908,0x7c00100,0xfc220400,0x32000908,0x7c00100,0xfc250400,0x32000c02,0x7c00100,
+0x8230400,0x32000e25,0x7c00100,0xfc230400,0x32001d0c,0x7c00100,0xfc230400,0x32002800,0x80000,0xc5e18820,0x32002800,0x80020,0xc4218820,0x32002800,0x4000001,0xc8445802,
+0x32002800,0x24000000,0x4200000,0x32002800,0x24000000,0xc9500002,0x32002800,0x24000020,0x4200000,0x32002800,0x2c000010,0xc9248002,0x32002919,0x7c00100,0xc822040f,0x32002a00,
+0x4000000,0x5600000,0x32002b01,0x2000,0x14962460,0x32002b01,0x2802000,0x10962460,0x32002b01,0x2802020,0x10962460,0x32002c00,0x4000000,0x4200000,0x32002c00,0x4000020,
+0x4200000,0x32002c00,0x4000020,0xc8200005,0x32002c00,0x7c00120,0xc8220405,0x32002c00,0x7c00120,0xc8250405,0x32002e00,0x24000020,0x4200000,0x32002f00,0x24000020,0x4200000,
+0x32003000,0x24000000,0x4200000,0x32003000,0x24000020,0x4200000,0x32003500,0x24000000,0x4200000,0x32003600,0x24000020,0x4200000,0x32003700,0x24000000,0x4100000,0x32003700,
+0x24000000,0x4200000,0x32003800,0x24000000,0x4810000,0x32003800,0x24000000,0x5410000,0x32005102,0x4000000,0xc9500008,0x32005502,0x7c00100,0x10230400,0x32006108,0x7c00100,
+0x8220400,0x32006108,0x7c00100,0x8250400,0x3200622a,0x2802100,0x80962460,0x3200622a,0x2806400,0x80962460,0x3200622a,0x7c00100,0x80230400,0x3200632b,0x2802100,0x80962460,
+0x3200632b,0x6804000,0x80962540,0x3200632b,0x7c00100,0x80230400,0x3200642c,0x2802100,0x80962460,0x3200642c,0x7c00100,0x80230400,0x3200652d,0x2802100,0x80962460,0x3200652d,
+0x7c00100,0x80230400,0x32006600,0x24000020,0x4200000,0x32006700,0x24000020,0x4200000,0x32006800,0x24000020,0x4200000,0x32006900,0x24000020,0x4200000,0x32006900,0x24000020,
+0x4810000,0x32006900,0x24000020,0x5410000,0x32006a00,0x24000020,0x4200000,0x32006a00,0x24000020,0xc8200001,0x32006a00,0x24000020,0xc8200002,0x32020701,0x2882000,0xc4c62460,
+0x32023300,0x4000000,0x14100000,0x32026c01,0x12882000,0xc4962460,0x32065700,0x4000000,0xc8810011,0x32065700,0x4000000,0xc9410011,0x32086600,0x24000020,0x4810000,0x32086600,
+0x24000020,0x5410000,0x32086900,0x24000020,0x4810000,0x32086900,0x24000020,0x5410000,0x320a3600,0x24000020,0x4200000,0x320a3d11,0x7c00100,0x11230400,0x320a3e14,0x7c00100,
+0xc8e30010,0x320a3e14,0x7c00100,0xfe530000,0x320a3f16,0x7c00100,0xc8e30c10,0x320a4400,0x4000000,0xc8e00003,0x320a4929,0x4000000,0x44e00000,0x320a4f11,0x7c00300,0xc8e30001,
+0x320a6b16,0x7c00100,0xa530c00,0x32406396,0xc000010,0x84448000,0x324a3dcf,0x4000000,0x4e00000,0x324a3dcf,0x7c00100,0x11230400,0x324a3fca,0x4000002,0xf9200c00,0x324a53c7,
+0x24000000,0x14e00000,0x32820701,0x2802000,0x8962460,0x40000419,0x7c00100,0x10220400,0x40000419,0x7c00100,0x20220400,0x40000519,0x7c00100,0x10220400,0x40000600,0x4000400,
+0x4200400,0x4000080e,0x7c00100,0x8220400,0x4000080e,0x7c00100,0x8250400,0x4000080e,0x7c00100,0xc8250402,0x40000c02,0x2802100,0x20962460,0x40000c02,0x2802400,0x20962460,
+0x40000c02,0x2802500,0x20962460,0x40000c02,0x4000000,0x4200000,0x40000c02,0x4000000,0x5071400,0x40000c02,0x7c00100,0xfc230400,0x40000c02,0x80000000,0x5329960,0x40000d22,
+0x7c00100,0x40230400,0x40000f0a,0x7c00100,0xfc230400,0x40001004,0x7c00100,0xfc230400,0x40001110,0x2802100,0xfc962460,0x40001110,0x6800100,0xfc962540,0x4000120f,0x2802100,
+0xfc962460,0x4000120f,0x4000000,0x5600000,0x4000120f,0x7c00100,0xfc230400,0x4000131f,0x7c00100,0xfc230400,0x40001423,0x4000000,0x4200000,0x40001423,0x4000000,0x5600000,
+0x40001615,0x2802400,0xfc962460,0x40001615,0x7c00100,0xfc230400,0x40002417,0x2802400,0x19862460,0x40002417,0x4000000,0x4200000,0x40002800,0x6800000,0x20201c00,0x40002800,
+0x24000002,0x4200000,0x40002c00,0x4000000,0xc8200002,0x40003000,0x24000000,0x4200000,0x40003000,0x24000020,0x4200000,0x40003700,0x24000000,0x4200000,0x40005a09,0x7c00100,
+0x80220400,0x40005a09,0x7c00100,0x80250400,0x40005d00,0x7c00120,0xc8220405,0x40006f30,0x2802100,0x40962460,0x40006f30,0x2802400,0x40962460,0x40006f30,0x4000000,0x44200000,
+0x40006f30,0x6800000,0x41329800,0x40006f30,0x6800100,0x40962540,0x40006f30,0x7c00100,0x40230400,0x40006f30,0xc000010,0x44b48000,0x40007034,0x7c00100,0x41830000,0x40007117,
+0x4000000,0x4200000,0x40007208,0x7c00100,0x10220400,0x4000720e,0x7c00100,0x10220400,0x4000720e,0x7c00500,0xc822040e,0x4000720e,0x7c00500,0xc822040f,0x40007219,0x7c00100,
+0x10220400,0x40007219,0x7c00500,0x10220400,0x40007219,0x7c00500,0xc822040e,0x40007219,0x7c00500,0xc822040f,0x40007300,0x24000000,0x4200000,0x40007400,0x4000000,0x14200000,
+0x40007531,0x7c00100,0x80230400,0x40007631,0x7c00100,0x80230400,0x40007835,0x4000010,0x84400000,0x40007835,0x7c00100,0x80230400,0x40007933,0x7c00100,0x80230400,0x40007a32,
+0x6800000,0x81329800,0x40007a32,0x7c00100,0x80230400,0x40007b2f,0x7c00100,0x80230400,0x40007c00,0x4000000,0x14200000,0x40020701,0x2802400,0x10962460,0x40020701,0x2802400,
+0x10c62460,0x40023300,0x4000000,0x14200000,0x40027d01,0x12882000,0xc4962460,0x400a3700,0x24000000,0x4200000,0x400a3700,0x24000000,0x4e00000,0x400a4400,0x4000000,0xc8e0000d,
+0x400a4412,0x4000000,0xc8e00002,0x400a4412,0x4000000,0xc8e00003,0x400a4500,0x4000000,0xc8e0000d,0x400a5300,0x4000000,0xc8810010,0x400a5300,0x4000000,0xc9410010,0x40507719,
+0x4000000,0x84200000,0x4050771c,0x4000000,0x84400000,0x4050771f,0x4000000,0x84200000,0x4050771f,0x4000000,0x84400000,0x40c01489,0x4000000,0x4200000,0x40d05117,0x4000000,
+0x14200000,0x41000419,0x7c00100,0x20220400,0x41000419,0x7c00100,0x20250400,0x4100080e,0x7c00100,0xfc220400,0x4100080e,0x7c00100,0xfc250400,0x41000908,0x7c00100,0xfc220400,
+0x41000908,0x7c00100,0xfc250400,0x41000b13,0x2802000,0x28962460,0x41000b13,0x2802100,0x28962460,0x41000b13,0x2802100,0x30962460,0x41000b13,0x4000000,0xcb00000,0x41000c02,
+0x2802100,0x20962460,0x41000c02,0x4000000,0x5500000,0x41000c02,0xc000010,0x4b48000,0x41000f0a,0x7c00100,0xfc230400,0x41001004,0x7c00100,0xfc230400,0x41001423,0x7c00100,
+0xfc230400,0x41001b27,0x4000000,0x4500000,0x41001d0c,0x7c00100,0xc822040f,0x41001d0c,0x7c00100,0xfc230400,0x41001f0b,0x2802400,0xfc962460,0x41001f0b,0x4000000,0x4200000,
+0x41001f0b,0x7c00100,0xfc230400,0x41002800,0x24000000,0x4200000,0x41002800,0x24000000,0xc200000,0x41002800,0x24000000,0xc400000,0x41002919,0x7c00100,0xc822040e,0x41002a00,
+0x4000000,0x5600000,0x41002b01,0x2802020,0x10962460,0x41002c00,0x4000000,0x4200000,0x41002c00,0x7c00120,0xc8220405,0x41003000,0x24000000,0x4200000,0x41003700,0x24000000,
+0x4200000,0x41003700,0x24000000,0x4e00000,0x41005d00,0x7c00120,0xc8220405,0x41006600,0x24000020,0x4200000,0x41006600,0x24000020,0x4810000,0x41006600,0x24000020,0x5410000,
+0x41007208,0x7c00100,0xc822040f,0x41007219,0x7c00100,0x10220400,0x41007300,0x24000000,0x4200000,0x41007e0e,0x2802000,0x18962460,0x41007e0e,0x4000000,0xc200000,0x41007f0e,
+0x4000000,0x4200000,0x41007f0e,0x7c00100,0x8230400,0x41008002,0x7c00100,0xfc230400,0x41008137,0x2802100,0x80962460,0x41008137,0x4000000,0x84200000,0x41008137,0x6800100,
+0x80962540,0x41008137,0x7c00100,0x80230400,0x41008301,0x2802000,0x18962460,0x41008407,0x4000000,0x84200000,0x41008407,0x4000000,0x84400000,0x41008407,0x4000000,0x84b00000,
+0x41008407,0x7c00100,0x80220400,0x41008407,0x7c00100,0x80250400,0x4100850b,0x7c00100,0xfc230400,0x4100860b,0x4000000,0x4200000,0x4100860b,0x7c00100,0xfc230400,0x4100870c,
+0x7c00100,0x8220400,0x41008838,0x7c00100,0x80220400,0x41008838,0x7c00100,0x80250400,0x41008939,0x2802000,0x80962460,0x41008939,0x2802100,0x80962460,0x41008939,0x2806000,
+0x80962460,0x41008939,0x4000000,0x84200000,0x41008939,0x4000000,0x84400000,0x41008939,0x7c00100,0x80230400,0x41008939,0xc000010,0x84448000,0x41008a00,0x4000400,0x14200400,
+0x41008b3b,0x4000000,0x45800000,0x41008b3b,0x6800000,0x41329800,0x41008b3b,0x7c00100,0x41830000,0x41008b3b,0x7e00100,0x41830000,0x41008c3d,0x4000010,0x84400000,0x41008c3d,
+0x7c00100,0x80230400,0x41008d0e,0x7c00100,0xc822040f,0x41008d19,0x7c00100,0x10220400,0x41008d19,0x7c00100,0xc822040f,0x41008e00,0x24000000,0x5710000,0x41008e00,0x24000000,
+0xc200000,0x41008e00,0x24000000,0xc400000,0x41008e00,0x24000000,0x1d710000,0x41008e00,0x24000006,0x4400000,0x41008f3a,0x2802100,0x40962460,0x41008f3a,0x2806000,0x40962460,
+0x41008f3a,0x4000000,0x44200000,0x41008f3a,0x6800100,0x40962540,0x41008f3a,0x7c00100,0x40230400,0x4100903c,0x7c00100,0x40230400,0x4100903c,0x7c00100,0xc823040f,0x41020701,
+0x2802000,0x10962460,0x41020701,0x2802000,0x10c62460,0x41020701,0x2802000,0x20962460,0x410a3700,0x24000000,0x4200000,0x410a3700,0x24000000,0x4e00000,0x410a4412,0x4000000,
+0xc8e00003,0x410a4711,0x7c40300,0xfce30000,0x410a4f11,0x7c00300,0xc8e30001,0x410a9100,0x4000000,0xc8800010,0x410a9100,0x4000000,0xc8810010,0x410a9100,0x4000000,0xc8870010,
+0x410a9100,0x4000000,0xc8b00010,0x410a9100,0x4000000,0xc8f00010,0x410a9100,0x4000000,0xc9001410,0x410a9100,0x4000000,0xc9071010,0x410a9100,0x4000000,0xc9071410,0x410a9100,
+0x4000000,0xc9410010,0x41408ad2,0x4000400,0xc200000,0x414a82cc,0x4000000,0x4e00000,0x41808300,0x2802000,0x18962460,0x41c01489,0x6800000,0xfd329800,0x50000419,0x7c00100,
+0x20220400,0x50000419,0x7c00100,0x20250400,0x5000080e,0x7c00100,0xfc220400,0x50000908,0x7c00100,0xfc220400,0x50000908,0x7c00100,0xfc250400,0x50000b13,0x2802500,0x20962460,
+0x50000f0a,0x7c00100,0xfc230400,0x50001615,0x2802100,0xfc962460,0x50001615,0x7c00100,0xfc230400,0x50002b01,0x2802020,0x10962460,0x50002c00,0x4000000,0x4200000,0x50002c19,
+0x7c00100,0x8220400,0x50002d19,0x7c00100,0x8220400,0x50003000,0x24000000,0x4200000,0x50003000,0x24000020,0x4200000,0x50003700,0x24000000,0x4200000,0x50005d00,0x7c00120,
+0xc8220405,0x50005d00,0x7c00120,0xc8250405,0x50006108,0x7c00100,0xfc220400,0x50006108,0x7c00100,0xfc250400,0x50006600,0x24000020,0x4200000,0x50007300,0x24000000,0x4200000,
+0x50008301,0x2802400,0x10962460,0x50008a00,0x7c00500,0xfc230400,0x50009257,0x2802400,0x40962460,0x50009257,0x4000000,0x44200000,0x50009257,0x4000010,0x45071400,0x50009257,
+0x6800000,0x41329800,0x50009257,0x7c00100,0x40230400,0x50009257,0x7c00100,0x48230400,0x50009257,0x7c00500,0x40230400,0x50009257,0x7c00900,0x48230400,0x50009257,0xc000010,
+0x44b48000,0x5000933e,0x2802100,0x40962460,0x5000933e,0x2802400,0x40962460,0x5000933e,0x2802400,0x50962460,0x5000933e,0x4000000,0x44400000,0x5000933e,0x4000000,0x44e00000,
+0x5000933e,0x4000010,0x44400000,0x5000933e,0x6800000,0x40e29800,0x5000933e,0x6800100,0x40962540,0x5000933e,0x6800100,0x40962541,0x5000933e,0x6804400,0x42f62540,0x5000933e,
+0x7c00100,0x42b30400,0x5000933e,0x7c00100,0x42b30401,0x5000933e,0xc000010,0x44448000,0x50009419,0x7c00100,0x8220400,0x50009419,0x7c00100,0x8250400,0x50009419,0x7c00100,
+0x10220400,0x50009419,0x7c00100,0x10250400,0x50009419,0x7c00100,0x20220400,0x50009419,0x7c00100,0x20250400,0x50009500,0x4000400,0x4200400,0x5000965a,0x4000000,0x84500000,
+0x5000965a,0x7c00100,0x80230400,0x5000965a,0xc000010,0x84b48000,0x5000975b,0x4000000,0x84200000,0x5000975b,0x4000010,0x84400000,0x5000975b,0x7c00100,0x80230400,0x50009865,
+0x7c00100,0x80230400,0x50009965,0x4000010,0x84400000,0x50009965,0x7c00100,0x80230400,0x50409acc,0x4000000,0x4200000,0x5100080e,0x7c00100,0x8220400,0x5100080e,0x7c00100,
+0x8250400,0x5100080e,0x7c00100,0x10250400,0x51000c02,0x2802100,0x20962460,0x51000c02,0x4000000,0x5500000,0x51000c02,0x4000020,0x4200000,0x51000c02,0x7c00100,0xfc230400,
+0x51000f0a,0x7c00100,0xfc230400,0x51000f0a,0x7c00500,0xfc230400,0x51001110,0x2802100,0x20962460,0x5100131f,0x2802100,0x20962460,0x51001423,0x7c00100,0xfc230400,0x51001524,
+0x2802100,0x20962460,0x51001524,0x4000000,0x4200000,0x51001524,0x7c00100,0x8230400,0x51001524,0x7c00100,0xfc230400,0x5100171a,0x2802100,0x20962460,0x5100171a,0x4000000,
+0x4200000,0x5100171a,0x4000000,0x5500000,0x5100171a,0x7c00100,0xfc230400,0x51001b27,0x4000000,0x4200000,0x51001b27,0x4000000,0x4400000,0x51001b27,0x4000000,0x4500000,
+0x51001b27,0x7c00100,0xfc230400,0x51001c1c,0x2802100,0xfd862460,0x51001c1c,0x2802500,0xfd862460,0x51001c1c,0x2806400,0xfd862460,0x51001c1c,0x4000000,0x5800000,0x51001c1c,
+0x6800000,0xfd329800,0x51001c1c,0x6800100,0xfd862400,0x51001c1c,0x6800100,0xfd862540,0x51001c1c,0x6800500,0xfd862400,0x51001c1c,0x7c00100,0xfd830000,0x5100251b,0x7c00100,
+0x80230400,0x51002619,0x7c00100,0x10220400,0x51002619,0x7c00100,0x10250400,0x51002619,0x7c00100,0xfc250400,0x51002800,0x80020,0xc4218820,0x51002c00,0x4000000,0xc200000,
+0x51002d19,0x7c00100,0x8230400,0x51003700,0x24000000,0x4200000,0x51003700,0x24000000,0x4e00000,0x51005201,0x2802400,0x10962460,0x51005c00,0x4000000,0x14200000,0x51006108,
+0x7c00100,0xfc220400,0x51006108,0x7c00100,0xfc250400,0x51006600,0x24000020,0x4200000,0x51006600,0x24000020,0x4810000,0x51006600,0x24000020,0x5410000,0x51007300,0x24000000,
+0x4200000,0x51007300,0x24000020,0x4200000,0x51008002,0x7c00100,0xfc230400,0x51008301,0x2802000,0x10962460,0x51008301,0x2802000,0x18962460,0x51008301,0x2802400,0x10962460,
+0x51008301,0x2802400,0x10c62460,0x51008301,0x2802400,0x18962460,0x51008a00,0x7c00500,0xfc230400,0x51008e00,0x24000000,0x4200000,0x51008e00,0x24000000,0x4400000,0x51008e00,
+0x24000000,0x4810000,0x51008e00,0x24000000,0x5400000,0x51008e00,0x24000000,0x5410000,0x51008e00,0x24000000,0x5710000,0x51008e00,0x24000000,0xc400000,0x51008e00,0x24000002,
+0x4200000,0x51008e00,0x24000500,0xc230400,0x51008e00,0x2c000010,0xcb48000,0x51009419,0x7c00100,0x8220400,0x51009419,0x7c00100,0x8250400,0x51009419,0x7c00100,0x10220400,
+0x51009419,0x7c00100,0xc822040e,0x51009419,0x7c00100,0xc822040f,0x51009500,0x4000400,0x4200400,0x51009500,0x7c00500,0xfc230400,0x51009519,0x7c00100,0x8220400,0x51009519,
+0x7c00100,0x8230400,0x51009519,0x7c00100,0x8250400,0x51009519,0x7c00100,0x18220400,0x51009519,0x7c00100,0x18250400,0x51009519,0x7c00100,0x20220400,0x51009519,0x7c00100,
+0x20250400,0x51009519,0x7c00100,0xc822040f,0x51009b71,0x2802100,0x40962460,0x51009b71,0x6800000,0x41329800,0x51009b71,0x6800100,0x40962540,0x51009b71,0x6804400,0x40962540,
+0x51009b71,0x7c00100,0x40230400,0x51009c52,0x2802100,0x40962460,0x51009c52,0x2802400,0x40962460,0x51009c52,0x2802d00,0x40962460,0x51009c52,0x4000010,0x44400000,0x51009c52,
+0x6800000,0x41329800,0x51009c52,0x6800100,0x40962540,0x51009c52,0x7c00100,0x40230400,0x51009c52,0xc000010,0x44448000,0x51009d6d,0x6800000,0x41329800,0x51009d6d,0x7c00100,
+0x40230400,0x51009d6d,0x7c00500,0x40230400,0x51009d6d,0x7c00d00,0x40230400,0x51009d6d,0xc000010,0x44448000,0x51009e08,0x2802100,0x8962460,0x51009f63,0x4000010,0x44400000,
+0x51009f63,0x6800000,0x41329800,0x51009f63,0x7c00100,0x40230400,0x51009f63,0x7c00100,0x48230400,0x51009f63,0x7c00900,0x40230400,0x51009f63,0xc000010,0x44448000,0x51009f63,
+0xc000010,0x44b48000,0x5100a008,0x2000,0xc962460,0x5100a008,0x2802400,0x20962460,0x5100a008,0x4000000,0x4200000,0x5100a008,0x4000000,0xc200000,0x5100a008,0x7c00100,
+0x8220400,0x5100a008,0x7c00100,0x8230400,0x5100a008,0x7c00100,0x8250400,0x5100a008,0x7c00500,0xfc230400,0x5100a16f,0x2806400,0x40962460,0x5100a16f,0x6800000,0x41329800,
+0x5100a16f,0x6800100,0x40962540,0x5100a16f,0x7c00100,0x40230400,0x5100a16f,0xc000010,0x44448000,0x5100a24f,0x2802100,0x40962460,0x5100a24f,0x2802400,0x40962460,0x5100a24f,
+0x6800000,0x41329800,0x5100a24f,0x7c00100,0x40230400,0x5100a24f,0xc000010,0x44448000,0x5100a36e,0x2802100,0x80962460,0x5100a36e,0x4000000,0x84200000,0x5100a36e,0x6800100,
+0x80962540,0x5100a36e,0x6804400,0x80962540,0x5100a36e,0x7c00100,0x80230400,0x5100a442,0x2802100,0x40962460,0x5100a442,0x4000000,0x44e00000,0x5100a442,0x6800000,0x40e29800,
+0x5100a442,0x6800100,0x40962540,0x5100a442,0x7c00100,0x40430400,0x5100a442,0x7c00100,0x42d30400,0x5100a442,0xc000010,0x44448000,0x5100a500,0x4000000,0x4200000,0x5100a600,
+0x4000000,0xc200000,0x5100a601,0x2802000,0x8962460,0x5100a76b,0x7c00100,0x80230400,0x5100a868,0x7c00100,0x80230400,0x5100a96c,0x4000000,0x84200000,0x5100a96c,0x7c00100,
+0x80230400,0x5100aa00,0x4000000,0x4e00000,0x5100ab00,0x4000000,0x4e00000,0x51086600,0x24000020,0x4810000,0x51086600,0x24000020,0x5410000,0x510a4005,0x7c00100,0xfce30400,
+0x510a4711,0x7c40300,0xfce30000,0x510a7300,0x24000000,0x4200000,0x510aaa00,0x4000000,0x4e00000,0x514a82cc,0x4000000,0x4e00000,0x5150a20e,0x4000400,0x4400000,0x51802bbe,
+0x2802000,0x10962460,0x51c00908,0x2802400,0x18962460,0x51c0a008,0x2802400,0x20962460,0x52000f0a,0x2802100,0x20962460,0x52000f0a,0x6800100,0x8962540,0x52000f0a,0x7c00100,
+0xfc230400,0x52001004,0x4000000,0x5600000,0x52001b00,0x4000000,0x4200000,0x52001c1c,0x2802100,0xfd862460,0x52001c1c,0x6800100,0xfd862400,0x52001c1c,0x6800500,0xfd862400,
+0x52001e12,0x7c00100,0xa230500,0x52001e12,0x7c00100,0xa330520,0x52002128,0x4000002,0x44400000,0x52002128,0x7c00100,0x40230400,0x52002a00,0x4000000,0x5500000,0x52002a00,
+0x4000000,0x5600000,0x52002d00,0x4000000,0xc8200006,0x52003000,0x24000000,0x4200000,0x52006108,0x7c00100,0xfc220400,0x52006108,0x7c00100,0xfc250400,0x52008301,0x2802400,
+0x10962460,0x52008407,0x2802400,0x80962460,0x52008407,0x2802400,0x90962460,0x52008407,0x7c00100,0x80220400,0x52008407,0x7c00100,0x80250400,0x52008b3b,0x6800000,0x41800000,
+0x52008b3b,0x7c00100,0x41830000,0x52008e00,0x24000000,0xc400000,0x52009419,0x7c00100,0x8250400,0x5200975b,0x4000000,0x84200000,0x5200ac7e,0x2802000,0x80962460,0x5200ac7e,
+0x2802100,0x80962460,0x5200ac7e,0x2802400,0x80962460,0x5200ac7e,0x4000010,0x84200000,0x5200ac7e,0x7c00100,0x80230400,0x5200ac7e,0xc000010,0x84248000,0x5200ad28,0x7c00100,
+0x40230400,0x5200ae6a,0x2802100,0x41862460,0x5200ae6a,0x2802400,0x40962460,0x5200ae6a,0x2802400,0x41862460,0x5200ae6a,0x2806000,0x41862460,0x5200ae6a,0x4000000,0x45800000,
+0x5200ae6a,0x6800000,0x41329800,0x5200ae6a,0x6800100,0x41862400,0x5200ae6a,0x6800100,0x41862540,0x5200ae6a,0x7c00100,0x41830000,0x5200ae6a,0x7c00900,0x41830000,0x5200ae6a,
+0xc000010,0x45848000,0x5200b083,0x4000010,0x44400000,0x5200b083,0x7c00100,0x40230400,0x5200b083,0xc000010,0x44448000,0x5200b182,0x2802400,0x40962460,0x5200b182,0x4000000,
+0x44200000,0x5200b182,0x4000010,0x44400000,0x5200b182,0x7c00100,0x40230400,0x5200b182,0xc000010,0x44448000,0x5200b30a,0x2802400,0x8962460,0x5200b30a,0x4000000,0xc200000,
+0x5200b30a,0x7c00100,0x8230400,0x5200b54e,0x2802100,0x40962460,0x5200b54e,0x2802400,0x40962460,0x5200b54e,0x4000000,0x44e00000,0x5200b54e,0x4000010,0x44400000,0x5200b54e,
+0x6800000,0x40e29800,0x5200b54e,0x6800100,0x40962540,0x5200b54e,0x6804400,0x42f62540,0x5200b54e,0x7c00100,0x42b30400,0x5200b54e,0xc000010,0x44448000,0x5200b61c,0x4000000,
+0x5800000,0x5200b61c,0x6800500,0xfd862400,0x5200b61c,0x7c00100,0xfd830000,0x5200b61c,0x7c00900,0xfd830000,0x5200b77f,0x2802100,0x41862460,0x5200b77f,0x2802400,0x41862460,
+0x5200b77f,0x4000000,0x45800000,0x5200b77f,0x4000010,0x45800000,0x5200b77f,0x7c00100,0x41830000,0x5200b77f,0x7c00500,0x41830000,0x5200b77f,0x7c00900,0x41830000,0x5200b77f,
+0x7e00100,0x41830000,0x5200b873,0x2802100,0x40962460,0x5200b873,0x2806400,0x40962460,0x5200b873,0x6800000,0x41329800,0x5200b873,0x6800100,0x40962540,0x5200b873,0x6800400,
+0x40962540,0x5200b873,0x7c00100,0x40230400,0x5200b873,0xc000010,0x44448000,0x5200b912,0x7c00100,0xa230500,0x5200b912,0x7c00100,0xa330520,0x5200ba74,0x4000000,0x84200000,
+0x5200ba74,0x4000010,0x84400000,0x5200ba74,0x7c00100,0x80230400,0x5200bb85,0x4000000,0x84200000,0x5200bb85,0x7c00100,0x80230400,0x5200bc75,0x4000000,0x84400000,0x5200bc75,
+0x4000010,0x84400000,0x5200bc75,0x7c00100,0x80230400,0x5200bd7d,0x4000000,0x84200000,0x5200bd7d,0x7c00100,0x80230400,0x5200be7a,0x4000000,0x84200000,0x5200be7a,0x7c00100,
+0x80230400,0x5200bf58,0x7c00100,0x80230400,0x5200c002,0x4000000,0x4200000,0x5200c178,0x2802100,0x80962460,0x5200c178,0x2802400,0x80962460,0x5200c178,0x2806400,0x80962460,
+0x5200c178,0x4000000,0x84200000,0x5200c178,0x6800100,0x80962540,0x5200c178,0x7c00100,0x80230400,0x5200c178,0x7c00100,0x80230401,0x5200c178,0xc000010,0x84448000,0x5200c178,
+0x80000000,0x85329960,0x5200c247,0x7c00100,0x80230400,0x5200c247,0x7c00100,0x80830400,0x5200c247,0x7c00100,0x81430400,0x5200c300,0x4000000,0xc8200003,0x52022d00,0x4000000,
+0xc8100006,0x52023700,0x24000000,0x4100000,0x52023700,0x24000000,0x4e00000,0x52023700,0x24000000,0x6800000,0x52024400,0x4000000,0x4100000,0x52027300,0x24000000,0x4100000,
+0x5202c300,0x4000000,0x4100000,0x5202c300,0x4000000,0xc8100002,0x5202c300,0x4000000,0xc8100003,0x5202c300,0x4000000,0xc810000d,0x5202c300,0x4000100,0x4150400,0x5202c300,
+0x4000100,0xc815040d,0x520a1e12,0x7c00100,0xa130480,0x520a3700,0x24000000,0x4e00000,0x520a3800,0x24000000,0x4100000,0x520a4711,0x7c40300,0xfce30000,0x520a4f11,0x7c00300,
+0xc8e30001,0x520a7300,0x24000000,0x4100000,0x520ab412,0x7c00100,0xa130480,0x520ac400,0x4000000,0xc8e00002,0x520ac400,0x4000000,0xc8e0000d,0x520ac414,0x4000000,0xc8e0000d,
+0x520ac511,0x7c40300,0xfce30000,0x5240af9c,0x7c00100,0x8230400,0x5240afa1,0x4000400,0xc200000,0x5240afa3,0x6800400,0x8962540,0x5240afa3,0x7c00100,0x8230400,0x5240afad,
+0x7c00100,0x8230400,0x5240afaf,0x7c00100,0x8230400,0x5240b2d4,0x4000000,0x4200000,0x5240b2e3,0x4000000,0x4200000,0x5240b2f1,0x4000000,0x4200000,0x5240b2fc,0x4000000,
+0x5500000,0x524a44cc,0x4000000,0xc8e00003,0x5250b511,0x7c00900,0x60430400,0x5280af9c,0x2802400,0x8962460,0x5280af9d,0x2802400,0x8962460,0x5280afa3,0x2802400,0x8962460,
+0x5280afa5,0x2802400,0x8962460,0x5280afa7,0x2802400,0x8962460,0x52d0b308,0x2802400,0x8962460,0x52d0b30c,0x7c00100,0x8230400,0x60000c02,0x2802100,0x20962460,0x60000c02,
+0x7c00100,0xfc230400,0x60000f0a,0x2802100,0xfc962460,0x60000f0a,0x6800100,0xfc962540,0x60000f0a,0x7c00100,0xfc230400,0x6000131f,0x4000000,0x4200000,0x6000171a,0x7c00100,
+0xfc230400,0x6000171a,0x7c00100,0xfc230560,0x60001b27,0x2802100,0xfc962460,0x60001b27,0x4000000,0x4c00000,0x60001b27,0x7c00100,0xfc230400,0x60001f0b,0x2802400,0xfc962460,
+0x60002919,0x7c00100,0xc822040e,0x60002a00,0x4000000,0x5600000,0x60003000,0x24000000,0x4200000,0x60003000,0x24000000,0x4e00000,0x60003700,0x24000000,0x4200000,0x60003800,
+0x24000000,0x5710000,0x60005102,0x4000000,0x14200000,0x60006108,0x7c00100,0xfc220400,0x60006108,0x7c00100,0xfc250400,0x60006600,0x24000020,0x4200000,0x60008301,0x2802400,
+0x10c62460,0x6000903c,0x2806000,0x40962460,0x6000903c,0x4000000,0x44400000,0x60009519,0x7c00100,0x8220400,0x60009519,0x7c00100,0x8250400,0x60009519,0x7c00100,0x10220400,
+0x60009519,0x7c00100,0xfc250400,0x6000a008,0x7c00100,0x8220400,0x6000a008,0x7c00100,0x8250400,0x6000c300,0x4000000,0x6703580,0x6000c654,0x2802000,0x40962460,0x6000c654,
+0x4000010,0x44200000,0x6000c654,0x7c00100,0x40230400,0x6000c73f,0x2802000,0x40962460,0x6000c73f,0x2802100,0x40962460,0x6000c73f,0x4000000,0x44200000,0x6000c73f,0x6800100,
+0x40962540,0x6000c73f,0x6804000,0x42e62540,0x6000c73f,0x7c00100,0x42d30400,0x6000c80b,0x7c00100,0xfc230400,0x6000c941,0x2802100,0x80962460,0x6000c941,0x2806400,0x82f62460,
+0x6000c941,0x4000000,0x84e00000,0x6000c941,0x4000010,0x84e00000,0x6000c941,0x6800000,0x82d29800,0x6000c941,0x6800100,0x80962540,0x6000c941,0x7c00100,0x82b30400,0x6000c941,
+0x7c00100,0x82c30400,0x6000c941,0xc000010,0x84448000,0x6000ca82,0x7c00100,0x40230400,0x6000cc00,0x4000000,0x4e00000,0x6000d000,0x4000000,0x4200000,0x6002c300,0x4000000,
+0x4100000,0x6002c300,0x4000000,0xc810000d,0x6002c300,0x4000100,0x4150400,0x6002c300,0x4000100,0xc815040d,0x600a3000,0x24000000,0x4200000,0x600a3000,0x24000000,0x4e00000,
+0x600a3700,0x24000000,0x4200000,0x600a3800,0x24000000,0x4200000,0x600a3800,0x24000000,0x6800000,0x600a4305,0x7c00100,0xfce30400,0x600ac300,0x4000000,0x4100000,0x600ac400,
+0x4000000,0xc8e0000d,0x600acb14,0x7c00100,0x8e30000,0x600acb16,0x7c00100,0x8e30c00,0x600acc00,0x4000000,0x4e00000,0x600acd00,0x4000000,0x4200000,0x600acd00,0x4000000,
+0x4e00000,0x600acd00,0x4000000,0x6800000,0x600ace00,0x4000000,0x4e00000,0x600ace00,0x4000000,0x6800000,0x600acf00,0x4000000,0x4e00000,0x600acf00,0x4000000,0x6800000,
+0x600ad111,0x7c40300,0xfce30000,0x604ac4cc,0x4000000,0xc8e00003,0x61000a03,0x4000000,0x5600000,0x61000c02,0x80000000,0x5329960,0x6100120f,0x4000000,0x4200000,0x61001a18,
+0x7c00100,0xfd830000,0x61001d0c,0x7c00100,0xfc230400,0x61001d0c,0x7c00100,0xfc250400,0x61006600,0x24000020,0x4200000,0x61008407,0x7c00100,0x80220400,0x61008407,0x7c00100,
+0x80250400,0x6100870c,0x7c00100,0xfc220400,0x61008e00,0x24000000,0x4200000,0x61008e00,0x24000000,0x4400000,0x61008e00,0x24000000,0xc200000,0x61008e00,0x24000002,0x4300000,
+0x6100903c,0x7c00100,0x40230400,0x61009519,0x7c00100,0xfc220400,0x61009519,0x7c00100,0xfc250400,0x61009519,0x7c00500,0xc822040f,0x61009b71,0x2802100,0x40962460,0x61009b71,
+0x2806400,0x40962460,0x61009b71,0x7c00100,0x40230400,0x6100a008,0x2802100,0x8962460,0x6100c300,0x4000000,0xc820000f,0x6100cd00,0x4000000,0x4200000,0x6100d202,0x2802400,
+0x20962460,0x6100d202,0x2802500,0x20962460,0x6100d202,0x7c00100,0xfc230400,0x6100d302,0x4000020,0x4200000,0x6100d302,0x7c00120,0xc8230405,0x6100d476,0x2802100,0x40962460,
+0x6100d476,0x2802100,0x40962461,0x6100d476,0x2806400,0x40962460,0x6100d476,0x4000000,0x44400000,0x6100d476,0x6800000,0x41329800,0x6100d476,0x6800100,0x40962540,0x6100d476,
+0x7c00100,0x40230400,0x6100d476,0xc000010,0x44448000,0x6100d573,0x2802100,0x40962460,0x6100d573,0x2806400,0x40962460,0x6100d573,0x6800100,0x40962540,0x6100d573,0x7c00100,
+0x40230400,0x6100d573,0x7c00900,0x40230400,0x6100d573,0xc000010,0x44448000,0x6100d68d,0x7c00100,0x80230400,0x6100d756,0x7c00100,0x80230400,0x6100d85c,0x2802500,0x40962460,
+0x6100d85c,0x6800100,0x40962540,0x6100d85c,0x7c00100,0x40230400,0x6100d85c,0x7c00500,0x40230400,0x6100d997,0x2802100,0x80962460,0x6100d997,0x4000000,0x84200000,0x6100d997,
+0x4000000,0x84400000,0x6100d997,0x6800000,0x81329800,0x6100d997,0x6800100,0x80962540,0x6100d997,0x6804400,0x80962540,0x6100d997,0x7c00100,0x80230400,0x6100d997,0x7c00100,
+0x80230560,0x6100d997,0xc000010,0x84448000,0x6100da98,0x6800000,0x81329800,0x6100da98,0x7c00100,0x80230400,0x6100db71,0x4000000,0x44200000,0x6100dc99,0x2802100,0x80962460,
+0x6100dc99,0x2802400,0x80962460,0x6100dc99,0x6800000,0x81329800,0x6100dc99,0x6800100,0x80962540,0x6100dc99,0x6804400,0x80962540,0x6100dc99,0x7c00100,0x80230400,0x610a4711,
+0x7c40300,0xfce30000,0x610a4f11,0x7c00300,0xc8e30001,0x610ace00,0x4000000,0x4e00000,0x6140afa1,0x7c00100,0x8230400,0x6140afa3,0x7c00100,0x8230400,0x6180af9e,0x2802400,
+0x8962460,0x62002a00,0x4000000,0x5600000,0x63002800,0x80000,0xc4918820,0x63c00c15,0x80000,0xc4918820,0x7000080e,0x7c00100,0x8250400,0x70000a03,0x4000000,0x4200000,
+0x70000c00,0x80000000,0x5329960,0x70000f0a,0x7c00100,0x8230400,0x70001004,0x7c00100,0x8230400,0x70001524,0x2802100,0x8962460,0x70001524,0x7c00100,0x8230400,0x70001615,
+0x2802100,0x8962460,0x7000171a,0x2802100,0x8962460,0x70001821,0x6800000,0x9329800,0x70002320,0x7c00100,0x80230400,0x70002a00,0x4000000,0x5500000,0x70002a00,0x4000000,
+0x5600000,0x70003000,0x24000000,0x4200000,0x70003800,0x24000000,0x4e00000,0x70005201,0x2802400,0x10962460,0x7000581e,0x7c00100,0x80230400,0x70006108,0x7c00100,0x8220400,
+0x70006108,0x7c00100,0x8250400,0x70006108,0x7c00100,0xfc220400,0x70006108,0x7c00100,0xfc250400,0x70006f30,0x7c00100,0x40230400,0x70007300,0x24000000,0x4200000,0x70007f0e,
+0x4000000,0x4200000,0x70008301,0x2802100,0x10962460,0x70008301,0x2802400,0x10962460,0x70008e00,0x24000000,0x4200000,0x70008e00,0x24000000,0x4400000,0x70008e00,0x24000002,
+0x4400000,0x70008e00,0x24000008,0x5410000,0x70008e00,0x24000010,0x4400000,0x70008e00,0x2c000010,0x4448000,0x70009519,0x7c00100,0x8220400,0x70009519,0x7c00100,0x8230400,
+0x70009519,0x7c00100,0x8250400,0x70009865,0x7c00100,0x80230400,0x70009965,0x4000010,0x84400000,0x70009965,0x7c00100,0x80230400,0x7000a008,0x7c00100,0x8220400,0x7000a008,
+0x7c00100,0x8250400,0x7000a008,0x7c00500,0xc822040f,0x7000a50e,0x4000000,0x4200000,0x7000b61c,0x2802500,0xfd862460,0x7000b61c,0x6800500,0xfd862400,0x7000b61c,0x7c00100,
+0xfd830000,0x7000c300,0x4000000,0x4100000,0x7000c941,0x2806000,0x80c62460,0x7000cc00,0x4000000,0x4e00000,0x7000cd00,0x4000000,0x4200000,0x7000cd00,0x4000000,0x4e00000,
+0x7000cd00,0x4000000,0x6800000,0x7000cf00,0x4000000,0x4e00000,0x7000d202,0x2802100,0x20962460,0x7000d202,0x7c00100,0x8230400,0x7000d202,0x7c00100,0xfc230400,0x7000d997,
+0x7c00100,0x80230400,0x7000d997,0xc000010,0x84248000,0x7000dd86,0x2802400,0x80962460,0x7000dd86,0x7c00100,0x80230400,0x7000dd86,0xc000010,0x84448000,0x7000de9f,0x4000000,
+0x84200000,0x7000de9f,0x7c00100,0x80230400,0x7000e001,0x2400,0x4962460,0x7000e001,0x2802400,0x8962460,0x7000e187,0x2802000,0x80962460,0x7000e187,0x2802100,0x80962460,
+0x7000e187,0x4000000,0x84200000,0x7000e187,0x7c00100,0x80230400,0x7000e187,0xc000010,0x84448000,0x7000e288,0x7c00100,0x80230400,0x7000e300,0x4000000,0x4200000,0x7000e489,
+0x2802100,0x80962460,0x7000e489,0x2802400,0x80962460,0x7000e489,0x6800100,0x80962540,0x7000e489,0x6800100,0x80962541,0x7000e489,0x6804400,0x82f62540,0x7000e489,0x7c00100,
+0x80430400,0x7000e489,0x7c00100,0x82b30400,0x7000e489,0x7c00100,0x82d30400,0x7000e489,0x7c00900,0x80430400,0x7000e59d,0x2802100,0x80962460,0x7000e59d,0x2802400,0x80962460,
+0x7000e59d,0x4000000,0x84200000,0x7000e59d,0x4000010,0x84200000,0x7000e59d,0x6800100,0x80962540,0x7000e59d,0x6804400,0x80962540,0x7000e59d,0x7c00100,0x80230400,0x7000e59d,
+0xc000010,0x84448000,0x7000e691,0x2802100,0x80962460,0x7000e691,0x2802400,0x80962460,0x7000e691,0x2806400,0x80962460,0x7000e691,0x6800000,0x81329800,0x7000e691,0x6800100,
+0x80962540,0x7000e691,0x7c00100,0x80230400,0x7000e700,0x4000400,0x4200400,0x7000e70e,0x7c00100,0x8220400,0x7000e719,0x7c00100,0x8220400,0x7000e719,0x7c00500,0xc822040f,
+0x7000e853,0x7c00100,0x80230400,0x7000e9a0,0x2802400,0x80962460,0x7000e9a0,0x4000000,0x84200000,0x7000e9a0,0x4000000,0x84500000,0x7000e9a0,0x7c00100,0x80230400,0x7000ea79,
+0x2802400,0x80962460,0x7000ea79,0x4000000,0x84200000,0x7000ea79,0x4000000,0x84f00000,0x7000ea79,0x4000010,0x84400000,0x7000ea79,0x7c00100,0x80230400,0x7000eb8c,0x2802400,
+0x80962460,0x7000eb8c,0x4000000,0x84200000,0x7000eb8c,0x7c00100,0x80230400,0x7000eca3,0x2802100,0x80962460,0x7000eca3,0x2806400,0x80962460,0x7000eca3,0x4000000,0x84200000,
+0x7000eca3,0x6800000,0x81329800,0x7000eca3,0x6800100,0x80962540,0x7000eca3,0x7c00100,0x80230400,0x7000eca3,0xc000010,0x84448000,0x7000ed95,0x6800000,0xa1329800,0x7000ed95,
+0x7c00100,0xa0230400,0x7000ed95,0xc000010,0x84448000,0x7000ee1c,0x2802500,0x9862460,0x7000ee1c,0x6800000,0xfd329800,0x7000ee1c,0x7c00100,0x9830000,0x7000ee1c,0x7c00100,
+0xfd830000,0x7000ee1c,0x7c00900,0x9830000,0x7000ef8f,0x4000000,0x84200000,0x7000ef8f,0x7c00100,0x80230400,0x7000f08e,0x4000000,0x84200000,0x7000f08e,0x7c00100,0x80230400,
+0x7000f159,0x2802100,0x80962460,0x7000f159,0x7c00100,0x80230400,0x7000f200,0x4000000,0x4200000,0x7000f200,0x4000000,0x5200000,0x7000f200,0x4000000,0x5710000,0x7000f34b,
+0x2802400,0x80962460,0x7000f34b,0x4000000,0x84200000,0x7000f34b,0x4000010,0x84400000,0x7000f34b,0x6800000,0x81329800,0x7000f34b,0x7c00100,0x80230400,0x7000f34b,0x7c00900,
+0x80230400,0x7000f34b,0xc000010,0x84448000,0x7000f490,0x4000000,0x84200000,0x7000f490,0x7c00100,0x80230400,0x7000f5a5,0x7c00100,0x80230400,0x7000f67b,0x4000000,0x84200000,
+0x7000f67b,0x4000010,0x84200000,0x7000f67b,0x7c00100,0x80230400,0x7000f8a6,0x2802100,0x80962460,0x7000f8a6,0x2802400,0x80962460,0x7000f8a6,0x2806400,0x80962460,0x7000f8a6,
+0x4000000,0x84500000,0x7000f8a6,0x4000010,0x84b00000,0x7000f8a6,0x4000800,0x84200000,0x7000f8a6,0x6800100,0x80962540,0x7000f8a6,0x6800100,0x80962541,0x7000f8a6,0x7c00100,
+0x80230400,0x7000f8a6,0xc000010,0x84448000,0x7000f921,0x4000000,0x4200000,0x7000fa00,0x4000000,0x4200000,0x7000fb9e,0x2802100,0x80962460,0x7000fb9e,0x2802400,0x80962460,
+0x7000fb9e,0x2806400,0x80962460,0x7000fb9e,0x4000000,0x84200000,0x7000fb9e,0x6800000,0x81329800,0x7000fb9e,0x6800100,0x80962540,0x7000fb9e,0x6800100,0x80962541,0x7000fb9e,
+0x7c00100,0x80230400,0x7000fc92,0x4000000,0x84200000,0x7000fc92,0x6800000,0x81329800,0x7000fc92,0x7c00100,0x80220400,0x7000fc92,0x7c00100,0x80230400,0x7000fc92,0x7c00100,
+0x80250400,0x700acd00,0x4000000,0x4e00000,0x700acd00,0x4000000,0x6800000,0x700ace00,0x4000000,0x4e00000,0x700acf00,0x4000000,0x4e00000,0x700acf00,0x4000000,0x6800000,
+0x7050df21,0x4000000,0xc200000,0x7050f729,0x80000,0xc4918820,0x7080afa1,0x2802400,0x8962460,0x7090df21,0x2802400,0x8962460,0x70d0e427,0x2802100,0xfc962460,0x70d0e427,
+0x2802400,0xfc962460,0x70d0e427,0x6800100,0xfc962540,0x70d0ea25,0x4000010,0x84400000,0x8000120f,0x7c00100,0x20230400,0x80001524,0x7c00100,0x20230400,0x8000171a,0x7c00100,
+0x8230400,0x80002006,0x7c00100,0x40220400,0x80002006,0x7c00100,0x40250400,0x80002a00,0x4000000,0x5500000,0x80002d00,0x4000000,0x24200000,0x80005208,0x2802400,0x30962460,
+0x80005c00,0x4000000,0x34200000,0x80007300,0x24000000,0x24200000,0x80009519,0x7c00100,0x20220400,0x80009519,0x7c00100,0x20230400,0x80009519,0x7c00100,0x20250400,0x80009865,
+0x7c00100,0x80230400,0x8000a008,0x2802100,0x28962460,0x8000b30a,0x4000000,0x2c500000,0x8000b30a,0x7c00100,0x28230400,0x8000cd00,0x4000000,0x24e00000,0x8000d202,0x2802500,
+0x20962460,0x8000d202,0x7c00100,0x20230400,0x8000d68d,0x4000000,0x84200000,0x8000d997,0x2802000,0x80962460,0x8000d997,0x2802400,0x80962460,0x8000d997,0x4000000,0x84400000,
+0x8000d997,0x4000000,0x84500000,0x8000d997,0x7c00100,0x80230400,0x8000d997,0xc000010,0x84448000,0x8000e489,0x2802100,0x80962460,0x8000e489,0x7c00100,0x82d30400,0x8000e719,
+0x7c00100,0x20220400,0x8000f8a6,0x2802100,0x80962460,0x8000f8a6,0x7c00100,0x80230400,0x8000f8a6,0xc000010,0x84448000,0x8000fda1,0x2802100,0x81862460,0x8000fda1,0x2806400,
+0x81862460,0x8000fda1,0x4000000,0x85800000,0x8000fda1,0x6800000,0x81329800,0x8000fda1,0x6800100,0x81862400,0x8000fda1,0x6800100,0x81862540,0x8000fda1,0x7c00100,0x81830000,
+0x8000fda1,0xc000010,0x84448000,0x8000fe9c,0x7c00100,0x80230400,0x8000fe9c,0x7c00100,0x80830400,0x8000fe9c,0x7c00100,0x81430400,0x8000ff06,0x7c00100,0x40220400,0x80010165,
+0x7c00100,0x80230400,0x800102a2,0x4000000,0x84200000,0x800102a2,0x7c00100,0x80230400,0x800103a4,0x7c00100,0x80230400,0x800103a4,0xc000010,0x84448000,0x8001044c,0x4000000,
+0x84200000,0x8001044c,0x7c00100,0x80220400,0x8001044c,0x7c00100,0x80250400,0x80010670,0x2802000,0x80962460,0x80010670,0x4000000,0x84200000,0x80010670,0x4000010,0x84400000,
+0x80010670,0xc000010,0x84448000,0x800a4711,0x7c40300,0xfce30000,0x800acd00,0x4000000,0x4e00000,0x800acd00,0x4000000,0x6902460,0x800ace00,0x4000000,0x4e00000,0x800acf00,
+0x4000000,0x4e00000,0x800b0011,0x7c40300,0xfce30000,0x800b0500,0x4000000,0x4e00000,0x800b0500,0x4000000,0x6800000,0x90001615,0x7c00100,0xfc230400,0x9000171a,0x4000000,
+0x4200000,0x9000171a,0x7c00100,0xfc230400,0x90003000,0x24000000,0x4200000,0x90007f0e,0x4000000,0x4200000,0x90008301,0x2802400,0x10962460,0x90008e00,0x24000000,0x4400000,
+0x90009519,0x7c00100,0x10250400,0x9000a16f,0x2802100,0x40962460,0x9000d200,0x80000000,0x5329960,0x9000d202,0x2802000,0x20962460,0x9000d202,0x2802100,0x20962460,0x9000d202,
+0x7c00100,0xfc230400,0x9000e59d,0x2802100,0x80962460,0x90010500,0x4000000,0x4e00000,0x900107a7,0x2802100,0x40962460,0x900107a7,0x2802400,0x40962460,0x900107a7,0x2802c00,
+0x40962460,0x900107a7,0x4000000,0x45400000,0x900107a7,0x6800000,0x41329800,0x900107a7,0x7c00100,0x40220400,0x900107a7,0x7c00100,0x40250400,0x900108a8,0x2802100,0x80962460,
+0x900108a8,0x2806400,0x80962460,0x900108a8,0x4000000,0x84200000,0x900108a8,0x4000000,0x84400000,0x900108a8,0x4000010,0x84400000,0x900108a8,0x6800000,0x81329800,0x900108a8,
+0x6800100,0x80962540,0x900108a8,0x7c00100,0x80230400,0x900108a8,0xc000010,0x84448000,0x90010908,0x7c00100,0x8220400,0x90010a38,0x2802100,0x80962460,0x90010ca9,0x2802100,
+0x80962460,0x90010ca9,0x4000000,0x84500000,0x90010ca9,0x4000010,0x84b00000,0x90010ca9,0x6800100,0x80962540,0x90010ca9,0x7c00100,0x80230400,0x90010d1b,0x4000000,0x84500000,
+0x90010eaa,0x2802100,0x40962460,0x90010eaa,0x2802400,0x40962460,0x90010eaa,0x2806400,0x40962460,0x90010eaa,0x4000000,0x44200000,0x90010eaa,0x4000000,0x44400000,0x90010eaa,
+0x4000010,0x44400000,0x90010eaa,0x6800000,0x41329800,0x90010eaa,0x6800100,0x40962540,0x90010eaa,0x7c00100,0x40230400,0x90010eaa,0xc000010,0x44448000,0x90010fab,0x7c00100,
+0x40220400,0x90010fab,0x7c00100,0x40250400,0x9002c300,0x4000000,0x4100000,0x900ac400,0x4000000,0xc8e0000d,0x900acd00,0x4000000,0x4e00000,0x900acd00,0x4000000,0x6800000,
+0x900acf00,0x4000000,0x4e00000,0x900b0500,0x4000000,0x4e00000,0x900b0500,0x4000000,0x6800000,0x900b0b9a,0x7c00900,0x81230400,0x900b109a,0x7c00300,0x80e30000,0x900b119a,
+0x7c00300,0x80e30000,0x90408e06,0x24000000,0x4400000,0xa0001004,0x4000000,0x4200000,0xa0001004,0x7c00100,0x8230400,0xa000120f,0x2802100,0xfc962460,0xa000120f,0x2802400,
+0xfc962460,0xa000171a,0x2802100,0xfc962460,0xa000171a,0x2806400,0x8962460,0xa0002a00,0x4000000,0x5600000,0xa0003000,0x24000000,0x4200000,0xa000581e,0x7c00100,0x80230400,
+0xa0007300,0x24000000,0x4200000,0xa0008301,0x2802400,0x10962460,0xa0008e00,0x24000000,0x4400000,0xa000cf00,0x4000000,0x4e00000,0xa0010500,0x4000000,0x4200000,0xa00114af,
+0x2802100,0x80962460,0xa00114af,0x2802400,0x80962460,0xa00114af,0x2806400,0x80962460,0xa00114af,0x6800000,0x81329800,0xa00114af,0x7c00100,0x80230400,0xa00114af,0x7c00100,
+0x80230560,0xa00116b0,0x2802100,0x80962460,0xa00116b0,0x2802800,0x80962460,0xa00116b0,0x2806400,0x80962460,0xa00116b0,0x4000000,0x84400000,0xa00116b0,0x4000000,0x84500000,
+0xa00116b0,0x4000010,0x84400000,0xa00116b0,0x6800100,0x80962540,0xa00116b0,0x7c00100,0x80230400,0xa00116b0,0x7c00100,0x80230560,0xa00116b0,0xc000010,0x84448000,0xa0011722,
+0x7c00100,0x40230400,0xa00118b1,0x2802000,0x80962460,0xa00118b1,0x2802100,0x80962460,0xa00118b1,0x2806400,0x80962460,0xa00118b1,0x4000000,0x84200000,0xa00118b1,0x4000000,
+0x84400000,0xa00118b1,0x4000000,0x84500000,0xa00118b1,0x6800100,0x80962540,0xa00118b1,0x7c00100,0x80230400,0xa00118b1,0x7c00100,0x80230560,0xa00118b1,0xc000010,0x84448000,
+0xa00a4005,0x7c00100,0x8e30400,0xa00a4711,0x7c40300,0xfce30000,0xa00ac400,0x4000000,0x4e00000,0xa00acb14,0x7c00100,0x8e30000,0xa00acf00,0x4000000,0x4e00000,0xa00b0500,
+0x4000000,0x4e00000,0xa00b0500,0x4000000,0x6800000,0xa00b0b96,0x7c00900,0x81230400,0xa00b1211,0x7c40300,0xfce30000,0xa00b1314,0x7c00100,0x8e30000,0xa00b1596,0x7c00300,
+0x80e30000,0xa040afb9,0x6800400,0x8962540,0xa08083ba,0x2802400,0x10962460,0xb0000a03,0x7c00100,0x10220400,0xb0000b13,0x7c00100,0xfe633800,0xb0001004,0x2802000,0xfc962460,
+0xb0001110,0x4000000,0x4200000,0xb0001524,0x2802100,0xfc962460,0xb0001615,0x4000000,0x4500000,0xb000251b,0x7c00100,0x80230400,0xb0007300,0x24000000,0x4200000,0xb0008939,
+0x4000000,0x84200000,0xb0008939,0x7c00100,0x80230400,0xb0008e00,0x24000000,0x4200000,0xb0008e00,0x24000000,0x4400000,0xb0008e00,0x24000010,0x4400000,0xb0009257,0x2802000,
+0x40962460,0xb0009257,0x4000000,0x45600000,0xb0009519,0x7c00100,0x10220400,0xb0009519,0x7c00100,0x20220400,0xb0009519,0x7c00100,0x20250400,0xb0009a00,0x4000000,0x4200000,
+0xb000b30a,0x2802100,0x8962460,0xb000b30a,0x7c00100,0x8230400,0xb000c178,0x80000000,0x85329960,0xb000c300,0x4000000,0x4200000,0xb000d202,0x2802000,0x20962460,0xb000d476,
+0x6800100,0x40962540,0xb000d476,0x7c00100,0x40230400,0xb000e300,0x4000000,0x4e00000,0xb000fda1,0x7c00100,0x81830000,0xb0010eaa,0x2802000,0x40962460,0xb00116b0,0x7c00100,
+0x80230400,0xb0011900,0x4000000,0x4e00000,0xb0011ab2,0x2802100,0x80962460,0xb0011ab2,0x2802400,0x80962460,0xb0011ab2,0x2806400,0x80962460,0xb0011ab2,0x4000000,0x84200000,
+0xb0011ab2,0x6800100,0x80962540,0xb0011ab2,0x7c00100,0x80230400,0xb0011b0c,0x7c00100,0xfc230400,0xb0011cb3,0x2802100,0x40962460,0xb0011cb3,0x2806400,0x40962460,0xb0011cb3,
+0x6800000,0x41329800,0xb0011cb3,0x6800100,0x40962540,0xb0011cb3,0x7c00100,0x40230400,0xb0011db6,0x2802500,0x40962460,0xb0011db6,0x6800000,0x41329800,0xb0011db6,0x7c00100,
+0x40230400,0xb0011db6,0x7c00500,0x40230400,0xb0011e00,0x4000000,0x4200000,0xb0011e00,0x4000000,0x5500000,0xb0011fb4,0x2802100,0x80962460,0xb0011fb4,0x6800100,0x80962540,
+0xb0011fb4,0x7c00100,0x80430400,0xb0011fb4,0x7c00100,0x82d30400,0xb0011fb4,0xc000010,0x84448000,0xb0012000,0x4000000,0x4200000,0xb00121b5,0x4000000,0x84200000,0xb00121b5,
+0x4000010,0x84400000,0xb00121b5,0x7c00100,0x80220400,0xb00121b5,0x7c00100,0x80250400,0xb00121b5,0xc000010,0x84448000,0xb00122b8,0x4000000,0x84200000,0xb00122b8,0x7c00100,
+0x80230400,0xb00123b7,0x2802400,0x80962460,0xb00123b7,0x4000000,0x84200000,0xb00123b7,0x7c00100,0x80230400,0xb00123b7,0xc000010,0x84248000,0xb00a4005,0x7c00100,0xfce30400,
+0xb00a4711,0x7c40300,0xfce30000,0xb00acf00,0x4000000,0x4e00000,0xb00b0500,0x4000000,0x4e00000,0xb00b0500,0x4000000,0x6800000,0xb00b109a,0x7c00300,0x80e30000,0xb080e487,
+0x2802000,0xfc962460,0xc0001524,0x4000000,0x4500000,0xc0001a18,0x2806400,0xfd862460,0xc0001a18,0x7c00100,0xfd830000,0xc0007300,0x24000000,0x4200000,0xc0008e00,0x24000010,
+0x4400000,0xc0009519,0x7c00100,0x10220400,0xc0009519,0x7c00100,0x10250400,0xc0009519,0x7c00100,0xfc220400,0xc0009519,0x7c00100,0xfc250400,0xc000c300,0x4000000,0xc820000f,
+0xc000d85c,0x2802100,0x40962460,0xc000d85c,0x6800100,0x40962540,0xc000d85c,0x7c00100,0x40230400,0xc000dc99,0x7c00100,0x80230400,0xc000e719,0x7c00100,0xfc220400,0xc00107a7,
+0x7c00100,0x40230400,0xc0010eaa,0x7c00100,0x40230400,0xc00116b0,0x7c00100,0x80230560,0xc0011900,0x4000000,0x4200000,0xc0012447,0,0x84818820,0xc0012447,0,
+0x84c18820,0xc0012447,0,0x85418820,0xc00125b9,0x7c00100,0x80230400,0xc00126bb,0x2802100,0x80962460,0xc00126bb,0x2806400,0x80962460,0xc00126bb,0x4000000,0x84500000,
+0xc00126bb,0x6800100,0x80962540,0xc00126bb,0x7c00100,0x80230400,0xc00127ba,0x2802400,0x40962460,0xc00127ba,0x4000000,0x44200000,0xc00127ba,0x6800000,0x41329800,0xc00127ba,
+0x7c00100,0x40230400,0xc00127ba,0x7c00900,0x40230400,0xc0012800,0x4000000,0x4200000,0xc0012b23,0x4000000,0x4200000,0xc0012b23,0x4000000,0x4400000,0xc0012b23,0x4000000,
+0x5500000,0xc0012cbc,0x2802400,0x40962460,0xc0012cbc,0x4000000,0x45600000,0xc0012cbc,0x6800000,0x41329800,0xc0012cbc,0x7c00100,0x40230400,0xc00acf00,0x4000000,0x4e00000,
+0xc00ae300,0x4000000,0x4e00000,0xc00b0500,0x4000000,0x4e00000,0xc00b0500,0x4000000,0x6800000,0xc00b0b11,0x4000000,0x5200000,0xc00b0b11,0x7c00900,0x9230400,0xc00b109a,
+0x7c00300,0x80e30000,0xc00b2914,0x7c00100,0xfe530000,0xc00b2916,0x7c00100,0xfe530c00,0xc00b2a00,0x4000000,0x4e00000,0xc040af5e,0x7c00100,0x80230400,0xc0c12b89,0x4000000,
+0x4200000,0xc14a44cc,0x4000000,0xc8e0000d,0xd000131f,0x2802c00,0xfc962460,0xd000171a,0x7c00100,0x18230400,0xd0001821,0x2802100,0x10962460,0xd0007300,0x24000000,0x4200000,
+0xd0008e00,0x24000000,0x4200000,0xd0008f3a,0x2806000,0x40962460,0xd0009519,0x7c00100,0x8220400,0xd0009519,0x7c00100,0x8250400,0xd0009519,0x7c00100,0xfc220400,0xd0009519,
+0x7c00100,0xfc250400,0xd000a500,0x4000000,0x4200000,0xd000c300,0x4000000,0x4e00000,0xd000d202,0x7c00100,0xfc230400,0xd000d476,0x7c00100,0x40230400,0xd000d997,0x2802100,
+0x80962460,0xd000d997,0x6800100,0x80962540,0xd000e001,0x2802100,0x10962460,0xd000e700,0x4000400,0x4200000,0xd000e719,0x7c00100,0x10220400,0xd000e719,0x7c00500,0xc822040f,
+0xd000fa00,0x4000000,0x4e00000,0xd0010eaa,0x4000010,0x44400000,0xd0010eaa,0x7c00100,0x40230400,0xd0012dbd,0x4000000,0x84200000,0xd0012dbd,0x7c00100,0x80230400,0xd0012fbe,
+0x2802100,0x80962460,0xd0012fbe,0x2802400,0x80962460,0xd0012fbe,0x2806400,0x82f62460,0xd0012fbe,0x4000000,0x84400000,0xd0012fbe,0x6800000,0x80e29800,0xd0012fbe,0x6800100,
+0x80962540,0xd0012fbe,0x6800100,0x80962541,0xd0012fbe,0x6804400,0x80962540,0xd0012fbe,0x7c00100,0x82b30400,0xd0012fbe,0x7c00100,0x82c30560,0xd0012fbe,0xc000010,0x84448000,
+0xd0013183,0x7c00100,0x40230400,0xd0013200,0x4000000,0x4200000,0xd0013200,0x6800000,0xc9329805,0xd00134c0,0x2802100,0x80962460,0xd00134c0,0x4000002,0x84400000,0xd00134c0,
+0x7c00100,0x80230400,0xd00a4305,0x7c00100,0xfce30400,0xd00a4611,0x7c40300,0xfce30000,0xd00a4711,0x7c40300,0xfce30000,0xd00a5e11,0x7c40300,0xfce30000,0xd00acf00,0x4000000,
+0x4e00000,0xd00b0500,0x4000000,0x4e00000,0xd00b0500,0x4000000,0x6800000,0xd00b0b11,0x6800500,0xfc962540,0xd00b0bbf,0x2802200,0x80c62460,0xd00b119a,0x7c00300,0x80e30000,
+0xd00b2a00,0x4000000,0x4e00000,0xd00b2e11,0x7c40300,0xfce30000,0xd00b30bf,0x7c00300,0x80230000,0xd00b339a,0x7c00300,0x80e30000,0xe0000c02,0xc000010,0x4b48000,0xe0001524,
+0x2802400,0xfc962460,0xe0001524,0x7c00100,0xfc230400,0xe0001615,0x7c00100,0xfc230400,0xe000251b,0x12882000,0xc4962460,0xe0002a00,0x4000000,0x5500000,0xe0005102,0x4000000,
+0x14200000,0xe0005c00,0x4000000,0x14200000,0xe000622a,0x6804400,0x80962540,0xe000622a,0x7c00100,0x80230400,0xe0008838,0x7c00100,0x80220400,0xe0008838,0x7c00100,0x80250400,
+0xe0008e00,0x24000000,0x4810000,0xe0008e00,0x24000000,0x5410000,0xe0008e00,0x24000002,0x4400000,0xe0008e00,0x2c000010,0x4b48000,0xe000933e,0x7c00100,0x42b30400,0xe000933e,
+0xc000010,0x44448000,0xe0009519,0x7c00100,0xc822040f,0xe0009519,0x7c00100,0xfc220400,0xe0009519,0x7c00100,0xfc250400,0xe000c178,0x2802100,0x80962460,0xe000c941,0x2802100,
+0x80962460,0xe000c941,0x2806400,0x80962460,0xe000c941,0x7c00100,0x82b30400,0xe000d202,0x2802400,0x20962460,0xe000d202,0x7c00100,0xfc230400,0xe000d202,0x7c00500,0xfc230400,
+0xe000dc99,0x4000000,0x84200000,0xe000e001,0x2802100,0x20962460,0xe000e001,0x2802400,0x20962460,0xe000fda1,0x7c00100,0x81830000,0xe0013502,0x2802400,0x20962460,0xe0013502,
+0x4000000,0x4200000,0xe0013502,0x7c00100,0xfc230400,0xe0013502,0x80000000,0x5329960,0xe00136c1,0x4000000,0x84200000,0xe00136c1,0x7c00100,0x80230400,0xe001370b,0x7c00100,
+0xfc230400,0xe0013919,0x7c00500,0x20220400,0xe0013919,0x7c00500,0xc822040f,0xe0013919,0x7c00d00,0xc823040f,0xe0013a19,0x7c00100,0xfc220400,0xe0013a19,0x7c00100,0xfc230400,
+0xe0013bc2,0x2802400,0x80962460,0xe0013bc2,0x7c00100,0x80230400,0xe0013bc2,0xc000010,0x84248000,0xe0013cc3,0x6800000,0x81329800,0xe0013cc3,0x7c00100,0x80230400,0xe0013dc4,
+0x2802400,0x80962460,0xe0013dc4,0x7c00100,0x80230400,0xe0013e28,0x7c00100,0x40230400,0xe0013fc5,0x7c00100,0x80220400,0xe0013fc5,0x7c00100,0x80250400,0xe0014000,0x4000000,
+0x14200000,0xe0014001,0x2802400,0x10962460,0xe00a4711,0x7c40300,0xfce30000,0xe00a5e11,0x7c40300,0xfce30000,0xe00ac511,0x7c40300,0xfce30000,0xe00acf00,0x4000000,0x4e00000,
+0xe00ae300,0x4000000,0x4e00000,0xe00b0500,0x4000000,0x4e00000,0xe00b1314,0x7c00100,0xfce30000,0xe00b1316,0x7c00100,0xfce30c00,0xe00b2a00,0x4000000,0x4e00000,0xe00b2a00,
+0x4000000,0x6800000,0xe00b3816,0x7c00500,0x20230c00,0xe0808328,0x2802400,0x50962460,0xf0001615,0x6800100,0xfc962540,0xf0001a18,0x2802000,0xfd862460,0xf000c247,0x7c00100,
+0x81430400,0xf000d000,0x4000000,0x4e00000,0xf000e300,0x4000000,0x4e00000,0xf000e59d,0x2802100,0x80962460,0xf000e59d,0x7c00100,0x80230400,0xf0012447,0,0x84818820,
+0xf0012447,0,0x84c18820,0xf0012447,0,0x85418820,0xf0012447,0x2802000,0x80962460,0xf0012447,0x2802400,0x80962460,0xf0012447,0x7c00100,0x80230400,0xf0013a19,
+0x7c00100,0xfc220400,0xf0014102,0x2802400,0x20962460,0xf0014308,0x2802100,0xfc962460,0xf0014308,0x7c00500,0xc822040e,0xf0014308,0x7c00500,0xc822040f,0xf001440a,0x4000000,
+0x4500000,0xf0014500,0x4000000,0x4200000,0xf00146c6,0x2802100,0x80962460,0xf00146c6,0x2806000,0x82f62460,0xf00146c6,0x4000000,0x84e00000,0xf00146c6,0x6800000,0x82d29800,
+0xf00146c6,0x6800100,0x80962540,0xf00146c6,0x6804000,0x80962540,0xf00146c6,0x7c00100,0x82b30400,0xf00146c6,0x7c00100,0x82c30560,0xf00146c6,0xc000010,0x84448000,0xf00147c7,
+0x2802000,0x80962460,0xf00147c7,0x6800000,0x81329800,0xf00147c7,0x7c00100,0x80230400,0xf00ac511,0x7c40300,0xfce30000,0xf00acf00,0x4000000,0x4e00000,0xf00b2914,0x7c00100,
+0xfe530000,0xf00b2916,0x7c00100,0xfe530c00,0xf00b2a00,0x4000000,0x4e00000,0xf00b2a00,0x4000000,0x6800000,0xf00b4211,0x7c40300,0xfce30000,0xf10a3c00,0x4000000,0x4e00000,
+0xf10a3c00,0x4008000,0x4e00000,0xf10a8200,0x4008000,0x4e00000,0xf10b4811,0x7c40300,0xfce30000};
-static const int32_t countPropsVectors=7260;
+static const int32_t countPropsVectors=7497;
static const int32_t propsVectorsColumns=3;
static const uint16_t scriptExtensions[298]={
0x800e,0x8019,8,0x8059,8,2,8,0x8038,8,6,8,0x8019,2,0x22,0x25,0x57,
@@ -4022,6 +4038,6 @@ static const uint16_t scriptExtensions[298]={
0x804f,0x37,0x804e,2,0x8057,2,0x8025,2,0x115,0x2f,0x31,0x8053,0x2f,0x31,0x80c1,0x2f,
0x8031,2,0x8007,0x79,0x80c2,0x79,0x123,0x89,0x87,0x8087};
-static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2d4e,0x2d4e,0x2d4e,0x2d4e,0x6d50,3,0x89ac,0x8a41,0x8a41,0x8a41,0xb48c7,0x2f75a31,0,0,0,0};
+static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2d4e,0x2d4e,0x2d4e,0x2d4e,0x6d5a,3,0x8aa3,0x8b38,0x8b38,0x8b38,0xb48c8,0x2f75a31,0,0,0,0};
#endif // INCLUDED_FROM_UCHAR_C
diff --git a/icu4c/source/common/uchriter.cpp b/icu4c/source/common/uchriter.cpp
index a7d30977e..c8b86e5d4 100644
--- a/icu4c/source/common/uchriter.cpp
+++ b/icu4c/source/common/uchriter.cpp
@@ -20,14 +20,14 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UCharCharacterIterator)
UCharCharacterIterator::UCharCharacterIterator()
: CharacterIterator(),
- text(0)
+ text(nullptr)
{
// never default construct!
}
UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
int32_t length)
- : CharacterIterator(textPtr != 0 ? (length>=0 ? length : u_strlen(textPtr)) : 0),
+ : CharacterIterator(textPtr != nullptr ? (length >= 0 ? length : u_strlen(textPtr)) : 0),
text(textPtr)
{
}
@@ -35,7 +35,7 @@ UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
int32_t length,
int32_t position)
- : CharacterIterator(textPtr != 0 ? (length>=0 ? length : u_strlen(textPtr)) : 0, position),
+ : CharacterIterator(textPtr != nullptr ? (length >= 0 ? length : u_strlen(textPtr)) : 0, position),
text(textPtr)
{
}
@@ -45,7 +45,8 @@ UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
int32_t textBegin,
int32_t textEnd,
int32_t position)
- : CharacterIterator(textPtr != 0 ? (length>=0 ? length : u_strlen(textPtr)) : 0, textBegin, textEnd, position),
+ : CharacterIterator(textPtr != nullptr ? (length >= 0 ? length : u_strlen(textPtr)) : 0,
+ textBegin, textEnd, position),
text(textPtr)
{
}
@@ -352,7 +353,7 @@ UCharCharacterIterator::move32(int32_t delta, CharacterIterator::EOrigin origin)
void UCharCharacterIterator::setText(ConstChar16Ptr newText,
int32_t newTextLength) {
text = newText;
- if(newText == 0 || newTextLength < 0) {
+ if (newText == nullptr || newTextLength < 0) {
newTextLength = 0;
}
end = textLength = newTextLength;
diff --git a/icu4c/source/common/ucnv.cpp b/icu4c/source/common/ucnv.cpp
index a7a07d65d..34a5a203d 100644
--- a/icu4c/source/common/ucnv.cpp
+++ b/icu4c/source/common/ucnv.cpp
@@ -473,8 +473,6 @@ ucnv_setSubstChars (UConverter * converter,
* we set subChar1 to 0.
*/
converter->subChar1 = 0;
-
- return;
}
U_CAPI void U_EXPORT2
@@ -1754,7 +1752,7 @@ ucnv_fromUChars(UConverter *cnv,
destLimit=dest+destCapacity;
/* perform the conversion */
- ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, true, pErrorCode);
+ ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, nullptr, true, pErrorCode);
destLength=(int32_t)(dest-originalDest);
/* if an overflow occurs, then get the preflighting length */
@@ -1765,7 +1763,7 @@ ucnv_fromUChars(UConverter *cnv,
do {
dest=buffer;
*pErrorCode=U_ZERO_ERROR;
- ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, true, pErrorCode);
+ ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, nullptr, true, pErrorCode);
destLength+=(int32_t)(dest-buffer);
} while(*pErrorCode==U_BUFFER_OVERFLOW_ERROR);
}
@@ -1810,7 +1808,7 @@ ucnv_toUChars(UConverter *cnv,
destLimit=dest+destCapacity;
/* perform the conversion */
- ucnv_toUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, true, pErrorCode);
+ ucnv_toUnicode(cnv, &dest, destLimit, &src, srcLimit, nullptr, true, pErrorCode);
destLength=(int32_t)(dest-originalDest);
/* if an overflow occurs, then get the preflighting length */
@@ -1822,7 +1820,7 @@ ucnv_toUChars(UConverter *cnv,
do {
dest=buffer;
*pErrorCode=U_ZERO_ERROR;
- ucnv_toUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, true, pErrorCode);
+ ucnv_toUnicode(cnv, &dest, destLimit, &src, srcLimit, nullptr, true, pErrorCode);
destLength+=(int32_t)(dest-buffer);
}
while(*pErrorCode==U_BUFFER_OVERFLOW_ERROR);
diff --git a/icu4c/source/common/ucnv_err.cpp b/icu4c/source/common/ucnv_err.cpp
index 761c44263..7d49a5050 100644
--- a/icu4c/source/common/ucnv_err.cpp
+++ b/icu4c/source/common/ucnv_err.cpp
@@ -109,7 +109,6 @@ UCNV_FROM_U_CALLBACK_STOP (
*err = U_ZERO_ERROR;
}
/* the caller must have set the error code accordingly */
- return;
}
@@ -125,7 +124,6 @@ UCNV_TO_U_CALLBACK_STOP (
{
/* the caller must have set the error code accordingly */
(void)context; (void)toUArgs; (void)codePoints; (void)length; (void)reason; (void)err;
- return;
}
U_CAPI void U_EXPORT2
@@ -353,8 +351,6 @@ UCNV_FROM_U_CALLBACK_ESCAPE (
*err = err2;
return;
}
-
- return;
}
diff --git a/icu4c/source/common/ucnv_u7.cpp b/icu4c/source/common/ucnv_u7.cpp
index 398b528e8..bbdaf98df 100644
--- a/icu4c/source/common/ucnv_u7.cpp
+++ b/icu4c/source/common/ucnv_u7.cpp
@@ -455,7 +455,6 @@ unicodeMode:
pArgs->source=(const char *)source;
pArgs->target=target;
pArgs->offsets=offsets;
- return;
}
static void U_CALLCONV
@@ -731,7 +730,6 @@ unicodeMode:
pArgs->source=source;
pArgs->target=(char *)target;
pArgs->offsets=offsets;
- return;
}
static const char * U_CALLCONV
@@ -1156,7 +1154,6 @@ endloop:
pArgs->source=(const char *)source;
pArgs->target=target;
pArgs->offsets=offsets;
- return;
}
static void U_CALLCONV
@@ -1443,7 +1440,6 @@ unicodeMode:
pArgs->source=source;
pArgs->target=(char *)target;
pArgs->offsets=offsets;
- return;
}
U_CDECL_END
diff --git a/icu4c/source/common/ucnvbocu.cpp b/icu4c/source/common/ucnvbocu.cpp
index 007722e47..3b736aa1e 100644
--- a/icu4c/source/common/ucnvbocu.cpp
+++ b/icu4c/source/common/ucnvbocu.cpp
@@ -1165,7 +1165,6 @@ endloop:
pArgs->source=(const char *)source;
pArgs->target=target;
pArgs->offsets=offsets;
- return;
}
/*
@@ -1363,7 +1362,6 @@ endloop:
/* write back the updated pointers */
pArgs->source=(const char *)source;
pArgs->target=target;
- return;
}
/* miscellaneous ------------------------------------------------------------ */
diff --git a/icu4c/source/common/ucnvisci.cpp b/icu4c/source/common/ucnvisci.cpp
index 507a50c89..c14dbaa08 100644
--- a/icu4c/source/common/ucnvisci.cpp
+++ b/icu4c/source/common/ucnvisci.cpp
@@ -1537,12 +1537,12 @@ _ISCII_SafeClone(const UConverter *cnv,
int32_t bufferSizeNeeded = sizeof(struct cloneISCIIStruct);
if (U_FAILURE(*status)) {
- return 0;
+ return nullptr;
}
if (*pBufferSize == 0) { /* 'preflighting' request - set needed size into *pBufferSize */
*pBufferSize = bufferSizeNeeded;
- return 0;
+ return nullptr;
}
localClone = (struct cloneISCIIStruct *)stackBuffer;
diff --git a/icu4c/source/common/ucnvscsu.cpp b/icu4c/source/common/ucnvscsu.cpp
index 2138e289c..e6f8660df 100644
--- a/icu4c/source/common/ucnvscsu.cpp
+++ b/icu4c/source/common/ucnvscsu.cpp
@@ -572,7 +572,6 @@ endloop:
pArgs->source=(const char *)source;
pArgs->target=target;
pArgs->offsets=offsets;
- return;
}
/*
@@ -864,7 +863,6 @@ endloop:
/* write back the updated pointers */
pArgs->source=(const char *)source;
pArgs->target=target;
- return;
}
U_CDECL_END
/* SCSU-from-Unicode conversion functions ----------------------------------- */
@@ -1978,12 +1976,12 @@ _SCSUSafeClone(const UConverter *cnv,
int32_t bufferSizeNeeded = sizeof(struct cloneSCSUStruct);
if (U_FAILURE(*status)){
- return 0;
+ return nullptr;
}
if (*pBufferSize == 0){ /* 'preflighting' request - set needed size into *pBufferSize */
*pBufferSize = bufferSizeNeeded;
- return 0;
+ return nullptr;
}
localClone = (struct cloneSCSUStruct *)stackBuffer;
diff --git a/icu4c/source/common/ucurr.cpp b/icu4c/source/common/ucurr.cpp
index 70b1bbf22..dbad1e501 100644
--- a/icu4c/source/common/ucurr.cpp
+++ b/icu4c/source/common/ucurr.cpp
@@ -22,7 +22,6 @@
#include "unicode/usetiter.h"
#include "unicode/utf16.h"
#include "ustr_imp.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -296,7 +295,7 @@ myUCharsToChars(char* resultOfLen4, const char16_t* currency) {
static const int32_t*
_findMetaData(const char16_t* currency, UErrorCode& ec) {
- if (currency == 0 || *currency == 0) {
+ if (currency == nullptr || *currency == 0) {
if (U_SUCCESS(ec)) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
}
@@ -349,10 +348,10 @@ _findMetaData(const char16_t* currency, UErrorCode& ec) {
// -------------------------------------
-static void
-idForLocale(const char* locale, char* countryAndVariant, int capacity, UErrorCode* ec)
+static CharString
+idForLocale(const char* locale, UErrorCode* ec)
{
- ulocimp_getRegionForSupplementalData(locale, false, countryAndVariant, capacity, ec);
+ return ulocimp_getRegionForSupplementalData(locale, false, *ec);
}
// ------------------------------------------
@@ -371,7 +370,7 @@ U_CDECL_END
struct CReg;
static UMutex gCRegLock;
-static CReg* gCRegHead = 0;
+static CReg* gCRegHead = nullptr;
struct CReg : public icu::UMemory {
CReg *next;
@@ -379,7 +378,7 @@ struct CReg : public icu::UMemory {
char id[ULOC_FULLNAME_CAPACITY];
CReg(const char16_t* _iso, const char* _id)
- : next(0)
+ : next(nullptr)
{
int32_t len = (int32_t)uprv_strlen(_id);
if (len > (int32_t)(sizeof(id)-1)) {
@@ -408,7 +407,7 @@ struct CReg : public icu::UMemory {
}
*status = U_MEMORY_ALLOCATION_ERROR;
}
- return 0;
+ return nullptr;
}
static UBool unreg(UCurrRegistryKey key) {
@@ -464,9 +463,8 @@ U_CAPI UCurrRegistryKey U_EXPORT2
ucurr_register(const char16_t* isoCode, const char* locale, UErrorCode *status)
{
if (status && U_SUCCESS(*status)) {
- char id[ULOC_FULLNAME_CAPACITY];
- idForLocale(locale, id, sizeof(id), status);
- return CReg::reg(isoCode, id, status);
+ CharString id = idForLocale(locale, status);
+ return CReg::reg(isoCode, id.data(), status);
}
return nullptr;
}
@@ -524,11 +522,7 @@ ucurr_forLocale(const char* locale,
}
UErrorCode localStatus = U_ZERO_ERROR;
- CharString currency;
- {
- CharStringByteSink sink(&currency);
- ulocimp_getKeywordValue(locale, "currency", sink, &localStatus);
- }
+ CharString currency = ulocimp_getKeywordValue(locale, "currency", localStatus);
int32_t resLen = currency.length();
if (U_SUCCESS(localStatus) && resLen == 3 && uprv_isInvariantString(currency.data(), resLen)) {
@@ -540,14 +534,13 @@ ucurr_forLocale(const char* locale,
}
// get country or country_variant in `id'
- char id[ULOC_FULLNAME_CAPACITY];
- idForLocale(locale, id, UPRV_LENGTHOF(id), ec);
+ CharString id = idForLocale(locale, ec);
if (U_FAILURE(*ec)) {
return 0;
}
#if !UCONFIG_NO_SERVICE
- const char16_t* result = CReg::get(id);
+ const char16_t* result = CReg::get(id.data());
if (result) {
if(buffCapacity > u_strlen(result)) {
u_strcpy(buff, result);
@@ -557,13 +550,13 @@ ucurr_forLocale(const char* locale,
}
#endif
// Remove variants, which is only needed for registration.
- char *idDelim = uprv_strchr(id, VAR_DELIM);
+ char *idDelim = uprv_strchr(id.data(), VAR_DELIM);
if (idDelim) {
- idDelim[0] = 0;
+ id.truncate(idDelim - id.data());
}
const char16_t* s = nullptr; // Currency code from data file.
- if (id[0] == 0) {
+ if (id.isEmpty()) {
// No point looking in the data for an empty string.
// This is what we would get.
localStatus = U_MISSING_RESOURCE_ERROR;
@@ -572,7 +565,7 @@ ucurr_forLocale(const char* locale,
localStatus = U_ZERO_ERROR;
UResourceBundle *rb = ures_openDirect(U_ICUDATA_CURR, CURRENCY_DATA, &localStatus);
UResourceBundle *cm = ures_getByKey(rb, CURRENCY_MAP, rb, &localStatus);
- UResourceBundle *countryArray = ures_getByKey(rb, id, cm, &localStatus);
+ UResourceBundle *countryArray = ures_getByKey(rb, id.data(), cm, &localStatus);
// https://unicode-org.atlassian.net/browse/ICU-21997
// Prefer to use currencies that are legal tender.
if (U_SUCCESS(localStatus)) {
@@ -602,13 +595,9 @@ ucurr_forLocale(const char* locale,
ures_close(countryArray);
}
- if ((U_FAILURE(localStatus)) && strchr(id, '_') != 0) {
+ if ((U_FAILURE(localStatus)) && strchr(id.data(), '_') != nullptr) {
// We don't know about it. Check to see if we support the variant.
- CharString parent;
- {
- CharStringByteSink sink(&parent);
- ulocimp_getParent(locale, sink, ec);
- }
+ CharString parent = ulocimp_getParent(locale, *ec);
*ec = U_USING_FALLBACK_WARNING;
// TODO: Loop over the parent rather than recursing and
// looking again for a currency keyword.
@@ -647,10 +636,7 @@ static UBool fallback(CharString& loc) {
loc.truncate(3);
loc.append("001", status);
} else {
- CharString tmp;
- CharStringByteSink sink(&tmp);
- ulocimp_getParent(loc.data(), sink, &status);
- loc = std::move(tmp);
+ loc = ulocimp_getParent(loc.data(), status);
}
/*
char *i = uprv_strrchr(loc, '_');
@@ -683,13 +669,13 @@ ucurr_getName(const char16_t* currency,
//|}
if (U_FAILURE(*ec)) {
- return 0;
+ return nullptr;
}
int32_t choice = (int32_t) nameStyle;
if (choice < 0 || choice > 4) {
*ec = U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
// In the future, resource bundles may implement multi-level
@@ -705,14 +691,10 @@ ucurr_getName(const char16_t* currency,
// this function.
UErrorCode ec2 = U_ZERO_ERROR;
- CharString loc;
- {
- CharStringByteSink sink(&loc);
- ulocimp_getName(locale, sink, &ec2);
- }
+ CharString loc = ulocimp_getName(locale, ec2);
if (U_FAILURE(ec2)) {
*ec = U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
char buf[ISO_CURRENCY_CODE_LENGTH+1];
@@ -739,7 +721,7 @@ ucurr_getName(const char16_t* currency,
break;
default:
*ec = U_UNSUPPORTED_ERROR;
- return 0;
+ return nullptr;
}
key.append("/", ec2);
key.append(buf, ec2);
@@ -800,21 +782,17 @@ ucurr_getPluralName(const char16_t* currency,
//|}
if (U_FAILURE(*ec)) {
- return 0;
+ return nullptr;
}
// Use a separate UErrorCode here that does not propagate out of
// this function.
UErrorCode ec2 = U_ZERO_ERROR;
- CharString loc;
- {
- CharStringByteSink sink(&loc);
- ulocimp_getName(locale, sink, &ec2);
- }
+ CharString loc = ulocimp_getName(locale, ec2);
if (U_FAILURE(ec2)) {
*ec = U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
char buf[ISO_CURRENCY_CODE_LENGTH+1];
@@ -1002,11 +980,7 @@ collectCurrencyNames(const char* locale,
// Look up the Currencies resource for the given locale.
UErrorCode ec2 = U_ZERO_ERROR;
- CharString loc;
- {
- CharStringByteSink sink(&loc);
- ulocimp_getName(locale, sink, &ec2);
- }
+ CharString loc = ulocimp_getName(locale, ec2);
if (U_FAILURE(ec2)) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
}
@@ -1390,7 +1364,6 @@ searchCurrencyName(const CurrencyNameStruct* currencyNames,
break;
}
}
- return;
}
//========================= currency name cache =====================
@@ -1447,7 +1420,7 @@ currency_cache_cleanup() {
for (int32_t i = 0; i < CURRENCY_NAME_CACHE_NUM; ++i) {
if (currCache[i]) {
deleteCacheEntry(currCache[i]);
- currCache[i] = 0;
+ currCache[i] = nullptr;
}
}
return true;
@@ -2030,6 +2003,7 @@ static const struct CurrencyList {
{"XBC", UCURR_UNCOMMON|UCURR_NON_DEPRECATED},
{"XBD", UCURR_UNCOMMON|UCURR_NON_DEPRECATED},
{"XCD", UCURR_COMMON|UCURR_NON_DEPRECATED},
+ {"XCG", UCURR_COMMON|UCURR_NON_DEPRECATED},
{"XDR", UCURR_UNCOMMON|UCURR_NON_DEPRECATED},
{"XEU", UCURR_UNCOMMON|UCURR_DEPRECATED},
{"XFO", UCURR_UNCOMMON|UCURR_NON_DEPRECATED},
@@ -2229,7 +2203,7 @@ static void U_CALLCONV initIsoCodes(UErrorCode &status) {
static void populateCurrSymbolsEquiv(icu::Hashtable *hash, UErrorCode &status) {
if (U_FAILURE(status)) { return; }
- for (auto& entry : unisets::kCurrencyEntries) {
+ for (const auto& entry : unisets::kCurrencyEntries) {
UnicodeString exemplar(entry.exemplar);
const UnicodeSet* set = unisets::get(entry.key);
if (set == nullptr) { return; }
@@ -2325,10 +2299,9 @@ ucurr_countCurrencies(const char* locale,
{
// local variables
UErrorCode localStatus = U_ZERO_ERROR;
- char id[ULOC_FULLNAME_CAPACITY];
// get country or country_variant in `id'
- idForLocale(locale, id, sizeof(id), ec);
+ CharString id = idForLocale(locale, ec);
if (U_FAILURE(*ec))
{
@@ -2336,10 +2309,10 @@ ucurr_countCurrencies(const char* locale,
}
// Remove variants, which is only needed for registration.
- char *idDelim = strchr(id, VAR_DELIM);
+ char *idDelim = strchr(id.data(), VAR_DELIM);
if (idDelim)
{
- idDelim[0] = 0;
+ id.truncate(idDelim - id.data());
}
// Look up the CurrencyMap element in the root bundle.
@@ -2347,7 +2320,7 @@ ucurr_countCurrencies(const char* locale,
UResourceBundle *cm = ures_getByKey(rb, CURRENCY_MAP, rb, &localStatus);
// Using the id derived from the local, get the currency data
- UResourceBundle *countryArray = ures_getByKey(rb, id, cm, &localStatus);
+ UResourceBundle *countryArray = ures_getByKey(rb, id.data(), cm, &localStatus);
// process each currency to see which one is valid for the given date
if (U_SUCCESS(localStatus))
@@ -2440,20 +2413,19 @@ ucurr_forLocaleAndDate(const char* locale,
{
// local variables
UErrorCode localStatus = U_ZERO_ERROR;
- char id[ULOC_FULLNAME_CAPACITY];
// get country or country_variant in `id'
- idForLocale(locale, id, sizeof(id), ec);
+ CharString id = idForLocale(locale, ec);
if (U_FAILURE(*ec))
{
return 0;
}
// Remove variants, which is only needed for registration.
- char *idDelim = strchr(id, VAR_DELIM);
+ char *idDelim = strchr(id.data(), VAR_DELIM);
if (idDelim)
{
- idDelim[0] = 0;
+ id.truncate(idDelim - id.data());
}
// Look up the CurrencyMap element in the root bundle.
@@ -2461,7 +2433,7 @@ ucurr_forLocaleAndDate(const char* locale,
UResourceBundle *cm = ures_getByKey(rb, CURRENCY_MAP, rb, &localStatus);
// Using the id derived from the local, get the currency data
- UResourceBundle *countryArray = ures_getByKey(rb, id, cm, &localStatus);
+ UResourceBundle *countryArray = ures_getByKey(rb, id.data(), cm, &localStatus);
// process each currency to see which one is valid for the given date
bool matchFound = false;
@@ -2587,9 +2559,8 @@ static const UEnumeration defaultKeywordValues = {
U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key, const char *locale, UBool commonlyUsed, UErrorCode* status) {
// Resolve region
- char prefRegion[ULOC_COUNTRY_CAPACITY];
- ulocimp_getRegionForSupplementalData(locale, true, prefRegion, sizeof(prefRegion), status);
-
+ CharString prefRegion = ulocimp_getRegionForSupplementalData(locale, true, *status);
+
// Read value from supplementalData
UList *values = ulist_createEmptyList(status);
UList *otherValues = ulist_createEmptyList(status);
@@ -2621,7 +2592,7 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key,
break;
}
const char *region = ures_getKey(&bundlekey);
- UBool isPrefRegion = uprv_strcmp(region, prefRegion) == 0 ? true : false;
+ UBool isPrefRegion = prefRegion == region;
if (!isPrefRegion && commonlyUsed) {
// With commonlyUsed=true, we do not put
// currencies for other regions in the
@@ -2732,7 +2703,7 @@ ucurr_getNumericCode(const char16_t* currency) {
if (currency && u_strlen(currency) == ISO_CURRENCY_CODE_LENGTH) {
UErrorCode status = U_ZERO_ERROR;
- UResourceBundle *bundle = ures_openDirect(0, "currencyNumericCodes", &status);
+ UResourceBundle *bundle = ures_openDirect(nullptr, "currencyNumericCodes", &status);
ures_getByKey(bundle, "codeMap", bundle, &status);
if (U_SUCCESS(status)) {
char alphaCode[ISO_CURRENCY_CODE_LENGTH+1];
diff --git a/icu4c/source/common/udata.cpp b/icu4c/source/common/udata.cpp
index 3f858f2ec..e5f65b342 100644
--- a/icu4c/source/common/udata.cpp
+++ b/icu4c/source/common/udata.cpp
@@ -882,12 +882,12 @@ static UBool extendICUData(UErrorCode *pErr)
UDataMemory_init(&copyPData);
if(pData != nullptr) {
UDatamemory_assign(&copyPData, pData);
- copyPData.map = 0; /* The mapping for this data is owned by the hash table */
- copyPData.mapAddr = 0; /* which will unmap it when ICU is shut down. */
- /* CommonICUData is also unmapped when ICU is shut down.*/
- /* To avoid unmapping the data twice, zero out the map */
- /* fields in the UDataMemory that we're assigning */
- /* to CommonICUData. */
+ copyPData.map = nullptr; /* The mapping for this data is owned by the hash table */
+ copyPData.mapAddr = nullptr; /* which will unmap it when ICU is shut down. */
+ /* CommonICUData is also unmapped when ICU is shut down.*/
+ /* To avoid unmapping the data twice, zero out the map */
+ /* fields in the UDataMemory that we're assigning */
+ /* to CommonICUData. */
didUpdate = /* no longer using this result */
setCommonICUData(&copyPData,/* The new common data. */
diff --git a/icu4c/source/common/udataswp.cpp b/icu4c/source/common/udataswp.cpp
index bbce1a8ec..0f194f47e 100644
--- a/icu4c/source/common/udataswp.cpp
+++ b/icu4c/source/common/udataswp.cpp
@@ -441,7 +441,7 @@ udata_openSwapperForInputData(const void *data, int32_t length,
pHeader->info.sizeofUChar!=2
) {
*pErrorCode=U_UNSUPPORTED_ERROR;
- return 0;
+ return nullptr;
}
inIsBigEndian=(UBool)pHeader->info.isBigEndian;
@@ -461,7 +461,7 @@ udata_openSwapperForInputData(const void *data, int32_t length,
(length>=0 && length<headerSize)
) {
*pErrorCode=U_UNSUPPORTED_ERROR;
- return 0;
+ return nullptr;
}
return udata_openSwapper(inIsBigEndian, inCharset, outIsBigEndian, outCharset, pErrorCode);
diff --git a/icu4c/source/common/uiter.cpp b/icu4c/source/common/uiter.cpp
index be59eab2e..6c96117e1 100644
--- a/icu4c/source/common/uiter.cpp
+++ b/icu4c/source/common/uiter.cpp
@@ -66,7 +66,7 @@ noopSetState(UCharIterator * /*iter*/, uint32_t /*state*/, UErrorCode *pErrorCod
}
static const UCharIterator noopIterator={
- 0, 0, 0, 0, 0, 0,
+ nullptr, 0, 0, 0, 0, 0,
noopGetIndex,
noopMove,
noopHasNext,
@@ -197,7 +197,7 @@ stringIteratorSetState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCo
}
static const UCharIterator stringIterator={
- 0, 0, 0, 0, 0, 0,
+ nullptr, 0, 0, 0, 0, 0,
stringIteratorGetIndex,
stringIteratorMove,
stringIteratorHasNext,
@@ -212,8 +212,8 @@ static const UCharIterator stringIterator={
U_CAPI void U_EXPORT2
uiter_setString(UCharIterator *iter, const char16_t *s, int32_t length) {
- if(iter!=0) {
- if(s!=0 && length>=-1) {
+ if (iter != nullptr) {
+ if (s != nullptr && length >= -1) {
*iter=stringIterator;
iter->context=s;
if(length>=0) {
@@ -283,7 +283,7 @@ utf16BEIteratorPrevious(UCharIterator *iter) {
}
static const UCharIterator utf16BEIterator={
- 0, 0, 0, 0, 0, 0,
+ nullptr, 0, 0, 0, 0, 0,
stringIteratorGetIndex,
stringIteratorMove,
stringIteratorHasNext,
@@ -457,7 +457,7 @@ characterIteratorSetState(UCharIterator *iter, uint32_t state, UErrorCode *pErro
}
static const UCharIterator characterIteratorWrapper={
- 0, 0, 0, 0, 0, 0,
+ nullptr, 0, 0, 0, 0, 0,
characterIteratorGetIndex,
characterIteratorMove,
characterIteratorHasNext,
@@ -472,8 +472,8 @@ static const UCharIterator characterIteratorWrapper={
U_CAPI void U_EXPORT2
uiter_setCharacterIterator(UCharIterator *iter, CharacterIterator *charIter) {
- if(iter!=0) {
- if(charIter!=0) {
+ if (iter != nullptr) {
+ if (charIter != nullptr) {
*iter=characterIteratorWrapper;
iter->context=charIter;
} else {
@@ -521,7 +521,7 @@ replaceableIteratorPrevious(UCharIterator *iter) {
}
static const UCharIterator replaceableIterator={
- 0, 0, 0, 0, 0, 0,
+ nullptr, 0, 0, 0, 0, 0,
stringIteratorGetIndex,
stringIteratorMove,
stringIteratorHasNext,
@@ -536,8 +536,8 @@ static const UCharIterator replaceableIterator={
U_CAPI void U_EXPORT2
uiter_setReplaceable(UCharIterator *iter, const Replaceable *rep) {
- if(iter!=0) {
- if(rep!=0) {
+ if (iter != nullptr) {
+ if (rep != nullptr) {
*iter=replaceableIterator;
iter->context=rep;
iter->limit=iter->length=rep->length();
@@ -987,7 +987,7 @@ utf8IteratorSetState(UCharIterator *iter,
}
static const UCharIterator utf8Iterator={
- 0, 0, 0, 0, 0, 0,
+ nullptr, 0, 0, 0, 0, 0,
utf8IteratorGetIndex,
utf8IteratorMove,
utf8IteratorHasNext,
@@ -1002,8 +1002,8 @@ static const UCharIterator utf8Iterator={
U_CAPI void U_EXPORT2
uiter_setUTF8(UCharIterator *iter, const char *s, int32_t length) {
- if(iter!=0) {
- if(s!=0 && length>=-1) {
+ if (iter != nullptr) {
+ if (s != nullptr && length >= -1) {
*iter=utf8Iterator;
iter->context=s;
if(length>=0) {
diff --git a/icu4c/source/common/uloc.cpp b/icu4c/source/common/uloc.cpp
index ce49d6c50..88fe7eaad 100644
--- a/icu4c/source/common/uloc.cpp
+++ b/icu4c/source/common/uloc.cpp
@@ -30,6 +30,8 @@
l = lang, C = ctry, M = charmap, V = variant
*/
+#include <optional>
+
#include "unicode/bytestream.h"
#include "unicode/errorcode.h"
#include "unicode/stringpiece.h"
@@ -58,6 +60,8 @@ U_NAMESPACE_USE
U_CFUNC void locale_set_default(const char *id);
U_CFUNC const char *locale_get_default();
+namespace {
+
/* ### Data tables **************************************************/
/**
@@ -94,7 +98,7 @@ U_CFUNC const char *locale_get_default();
/* Generated using org.unicode.cldr.icu.GenerateISO639LanguageTables */
/* ISO639 table version is 20150505 */
/* Subsequent hand addition of selected languages */
-static const char * const LANGUAGES[] = {
+constexpr const char* LANGUAGES[] = {
"aa", "ab", "ace", "ach", "ada", "ady", "ae", "aeb",
"af", "afh", "agq", "ain", "ak", "akk", "akz", "ale",
"aln", "alt", "am", "an", "ang", "anp", "ar", "arc",
@@ -185,10 +189,10 @@ nullptr,
nullptr
};
-static const char* const DEPRECATED_LANGUAGES[]={
+constexpr const char* DEPRECATED_LANGUAGES[]={
"in", "iw", "ji", "jw", "mo", nullptr, nullptr
};
-static const char* const REPLACEMENT_LANGUAGES[]={
+constexpr const char* REPLACEMENT_LANGUAGES[]={
"id", "he", "yi", "jv", "ro", nullptr, nullptr
};
@@ -211,7 +215,7 @@ static const char* const REPLACEMENT_LANGUAGES[]={
/* Generated using org.unicode.cldr.icu.GenerateISO639LanguageTables */
/* ISO639 table version is 20150505 */
/* Subsequent hand addition of selected languages */
-static const char * const LANGUAGES_3[] = {
+constexpr const char* LANGUAGES_3[] = {
"aar", "abk", "ace", "ach", "ada", "ady", "ave", "aeb",
"afr", "afh", "agq", "ain", "aka", "akk", "akz", "ale",
"aln", "alt", "amh", "arg", "ang", "anp", "ara", "arc",
@@ -327,7 +331,7 @@ nullptr
* RO(ROM) is now RO(ROU) according to
* http://www.iso.org/iso/en/prods-services/iso3166ma/03updates-on-iso-3166/nlv3e-rou.html
*/
-static const char * const COUNTRIES[] = {
+constexpr const char* COUNTRIES[] = {
"AD", "AE", "AF", "AG", "AI", "AL", "AM",
"AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ",
"BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI",
@@ -363,10 +367,10 @@ nullptr,
nullptr
};
-static const char* const DEPRECATED_COUNTRIES[] = {
+constexpr const char* DEPRECATED_COUNTRIES[] = {
"AN", "BU", "CS", "DD", "DY", "FX", "HV", "NH", "RH", "SU", "TP", "UK", "VD", "YD", "YU", "ZR", nullptr, nullptr /* deprecated country list */
};
-static const char* const REPLACEMENT_COUNTRIES[] = {
+constexpr const char* REPLACEMENT_COUNTRIES[] = {
/* "AN", "BU", "CS", "DD", "DY", "FX", "HV", "NH", "RH", "SU", "TP", "UK", "VD", "YD", "YU", "ZR" */
"CW", "MM", "RS", "DE", "BJ", "FR", "BF", "VU", "ZW", "RU", "TL", "GB", "VN", "YE", "RS", "CD", nullptr, nullptr /* replacement country codes */
};
@@ -384,7 +388,7 @@ static const char* const REPLACEMENT_COUNTRIES[] = {
* second list, and another nullptr entry. The two lists correspond to
* the two lists in COUNTRIES.
*/
-static const char * const COUNTRIES_3[] = {
+constexpr const char* COUNTRIES_3[] = {
/* "AD", "AE", "AF", "AG", "AI", "AL", "AM", */
"AND", "ARE", "AFG", "ATG", "AIA", "ALB", "ARM",
/* "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", */
@@ -460,7 +464,7 @@ typedef struct CanonicalizationMap {
* A map to canonicalize locale IDs. This handles a variety of
* different semantic kinds of transformations.
*/
-static const CanonicalizationMap CANONICALIZE_MAP[] = {
+constexpr CanonicalizationMap CANONICALIZE_MAP[] = {
{ "art__LOJBAN", "jbo" }, /* registered name */
{ "hy__AREVELA", "hy" }, /* Registered IANA variant */
{ "hy__AREVMDA", "hyw" }, /* Registered IANA variant */
@@ -475,15 +479,13 @@ static const CanonicalizationMap CANONICALIZE_MAP[] = {
};
/* ### BCP47 Conversion *******************************************/
-/* Test if the locale id has BCP47 u extension and does not have '@' */
-#define _hasBCP47Extension(id) (id && uprv_strstr(id, "@") == nullptr && getShortestSubtagLength(localeID) == 1)
/* Gets the size of the shortest subtag in the given localeID. */
-static int32_t getShortestSubtagLength(const char *localeID) {
+int32_t getShortestSubtagLength(const char *localeID) {
int32_t localeIDLength = static_cast<int32_t>(uprv_strlen(localeID));
int32_t length = localeIDLength;
int32_t tmpLength = 0;
int32_t i;
- UBool reset = true;
+ bool reset = true;
for (i = 0; i < localeIDLength; i++) {
if (localeID[i] != '_' && localeID[i] != '-') {
@@ -502,12 +504,18 @@ static int32_t getShortestSubtagLength(const char *localeID) {
return length;
}
+/* Test if the locale id has BCP47 u extension and does not have '@' */
+inline bool _hasBCP47Extension(const char *id) {
+ return id != nullptr && uprv_strstr(id, "@") == nullptr && getShortestSubtagLength(id) == 1;
+}
/* ### Keywords **************************************************/
-#define UPRV_ISDIGIT(c) (((c) >= '0') && ((c) <= '9'))
-#define UPRV_ISALPHANUM(c) (uprv_isASCIILetter(c) || UPRV_ISDIGIT(c) )
+inline bool UPRV_ISDIGIT(char c) { return c >= '0' && c <= '9'; }
+inline bool UPRV_ISALPHANUM(char c) { return uprv_isASCIILetter(c) || UPRV_ISDIGIT(c); }
/* Punctuation/symbols allowed in legacy key values */
-#define UPRV_OK_VALUE_PUNCTUATION(c) ((c) == '_' || (c) == '-' || (c) == '+' || (c) == '/')
+inline bool UPRV_OK_VALUE_PUNCTUATION(char c) { return c == '_' || c == '-' || c == '+' || c == '/'; }
+
+} // namespace
#define ULOC_KEYWORD_BUFFER_LEN 25
#define ULOC_MAX_NO_KEYWORDS 25
@@ -536,36 +544,31 @@ locale_getKeywordsStart(const char *localeID) {
return nullptr;
}
+namespace {
+
/**
- * @param buf buffer of size [ULOC_KEYWORD_BUFFER_LEN]
* @param keywordName incoming name to be canonicalized
* @param status return status (keyword too long)
- * @return length of the keyword name
+ * @return the keyword name
*/
-static int32_t locale_canonKeywordName(char *buf, const char *keywordName, UErrorCode *status)
+CharString locale_canonKeywordName(const char* keywordName, UErrorCode& status)
{
- int32_t keywordNameLen = 0;
+ if (U_FAILURE(status)) { return {}; }
+ CharString result;
for (; *keywordName != 0; keywordName++) {
if (!UPRV_ISALPHANUM(*keywordName)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
- return 0;
- }
- if (keywordNameLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
- buf[keywordNameLen++] = uprv_tolower(*keywordName);
- } else {
- /* keyword name too long for internal buffer */
- *status = U_INTERNAL_PROGRAM_ERROR;
- return 0;
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
+ return {};
}
+ result.append(uprv_tolower(*keywordName), status);
}
- if (keywordNameLen == 0) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name */
- return 0;
+ if (result.isEmpty()) {
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name */
+ return {};
}
- buf[keywordNameLen] = 0; /* terminate */
- return keywordNameLen;
+ return result;
}
typedef struct {
@@ -575,20 +578,41 @@ typedef struct {
int32_t valueLen;
} KeywordStruct;
-static int32_t U_CALLCONV
+int32_t U_CALLCONV
compareKeywordStructs(const void * /*context*/, const void *left, const void *right) {
const char* leftString = ((const KeywordStruct *)left)->keyword;
const char* rightString = ((const KeywordStruct *)right)->keyword;
return uprv_strcmp(leftString, rightString);
}
-U_CFUNC void
-ulocimp_getKeywords(const char *localeID,
+} // namespace
+
+U_EXPORT CharString
+ulocimp_getKeywords(const char* localeID,
+ char prev,
+ bool valuesToo,
+ UErrorCode& status)
+{
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getKeywords(localeID,
+ prev,
+ sink,
+ valuesToo,
+ status);
+ },
+ status);
+}
+
+U_EXPORT void
+ulocimp_getKeywords(const char* localeID,
char prev,
ByteSink& sink,
- UBool valuesToo,
- UErrorCode *status)
+ bool valuesToo,
+ UErrorCode& status)
{
+ if (U_FAILURE(status)) { return; }
+
KeywordStruct keywordList[ULOC_MAX_NO_KEYWORDS];
int32_t maxKeywords = ULOC_MAX_NO_KEYWORDS;
@@ -601,7 +625,7 @@ ulocimp_getKeywords(const char *localeID,
if(prev == '@') { /* start of keyword definition */
/* we will grab pairs, trim spaces, lowercase keywords, sort and return */
do {
- UBool duplicate = false;
+ bool duplicate = false;
/* skip leading spaces */
while(*pos == ' ') {
pos++;
@@ -610,7 +634,7 @@ ulocimp_getKeywords(const char *localeID,
break;
}
if(numKeywords == maxKeywords) {
- *status = U_INTERNAL_PROGRAM_ERROR;
+ status = U_INTERNAL_PROGRAM_ERROR;
return;
}
equalSign = uprv_strchr(pos, '=');
@@ -618,13 +642,13 @@ ulocimp_getKeywords(const char *localeID,
/* lack of '=' [foo@currency] is illegal */
/* ';' before '=' [foo@currency;collation=pinyin] is illegal */
if(!equalSign || (semicolon && semicolon<equalSign)) {
- *status = U_INVALID_FORMAT_ERROR;
+ status = U_INVALID_FORMAT_ERROR;
return;
}
/* need to normalize both keyword and keyword name */
if(equalSign - pos >= ULOC_KEYWORD_BUFFER_LEN) {
/* keyword name too long for internal buffer */
- *status = U_INTERNAL_PROGRAM_ERROR;
+ status = U_INTERNAL_PROGRAM_ERROR;
return;
}
for(i = 0, n = 0; i < equalSign - pos; ++i) {
@@ -635,7 +659,7 @@ ulocimp_getKeywords(const char *localeID,
/* zero-length keyword is an error. */
if (n == 0) {
- *status = U_INVALID_FORMAT_ERROR;
+ status = U_INVALID_FORMAT_ERROR;
return;
}
@@ -650,7 +674,7 @@ ulocimp_getKeywords(const char *localeID,
/* Premature end or zero-length value */
if (!*equalSign || equalSign == semicolon) {
- *status = U_INVALID_FORMAT_ERROR;
+ status = U_INVALID_FORMAT_ERROR;
return;
}
@@ -685,7 +709,7 @@ ulocimp_getKeywords(const char *localeID,
/* now we have a list of keywords */
/* we need to sort it */
- uprv_sortArray(keywordList, numKeywords, sizeof(KeywordStruct), compareKeywordStructs, nullptr, false, status);
+ uprv_sortArray(keywordList, numKeywords, sizeof(KeywordStruct), compareKeywordStructs, nullptr, false, &status);
/* Now construct the keyword part */
for(i = 0; i < numKeywords; i++) {
@@ -709,137 +733,127 @@ uloc_getKeywordValue(const char* localeID,
char* buffer, int32_t bufferCapacity,
UErrorCode* status)
{
- if (U_FAILURE(*status)) {
- return 0;
- }
-
- CheckedArrayByteSink sink(buffer, bufferCapacity);
- ulocimp_getKeywordValue(localeID, keywordName, sink, status);
-
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*status)) {
- return reslen;
- }
-
- if (sink.Overflowed()) {
- *status = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(buffer, bufferCapacity, reslen, status);
- }
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ buffer, bufferCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getKeywordValue(localeID, keywordName, sink, status);
+ },
+ *status);
+}
- return reslen;
+U_EXPORT CharString
+ulocimp_getKeywordValue(const char* localeID,
+ const char* keywordName,
+ UErrorCode& status)
+{
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getKeywordValue(localeID, keywordName, sink, status);
+ },
+ status);
}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_getKeywordValue(const char* localeID,
const char* keywordName,
icu::ByteSink& sink,
- UErrorCode* status)
+ UErrorCode& status)
{
+ if (U_FAILURE(status)) { return; }
+
+ if (localeID == nullptr || keywordName == nullptr || keywordName[0] == 0) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
const char* startSearchHere = nullptr;
const char* nextSeparator = nullptr;
- char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
- char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
- if(status && U_SUCCESS(*status) && localeID) {
- CharString tempBuffer;
- const char* tmpLocaleID;
+ CharString tempBuffer;
+ const char* tmpLocaleID;
- if (keywordName == nullptr || keywordName[0] == 0) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
- return;
- }
+ CharString canonKeywordName = locale_canonKeywordName(keywordName, status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ if (_hasBCP47Extension(localeID)) {
+ tempBuffer = ulocimp_forLanguageTag(localeID, -1, nullptr, status);
+ tmpLocaleID = U_SUCCESS(status) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeID;
+ } else {
+ tmpLocaleID=localeID;
+ }
- locale_canonKeywordName(keywordNameBuffer, keywordName, status);
- if(U_FAILURE(*status)) {
+ startSearchHere = locale_getKeywordsStart(tmpLocaleID);
+ if(startSearchHere == nullptr) {
+ /* no keywords, return at once */
return;
- }
+ }
- if (_hasBCP47Extension(localeID)) {
- CharStringByteSink sink(&tempBuffer);
- ulocimp_forLanguageTag(localeID, -1, sink, nullptr, status);
- tmpLocaleID = U_SUCCESS(*status) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeID;
- } else {
- tmpLocaleID=localeID;
- }
-
- startSearchHere = locale_getKeywordsStart(tmpLocaleID);
- if(startSearchHere == nullptr) {
- /* no keywords, return at once */
- return;
- }
-
- /* find the first keyword */
- while(startSearchHere) {
- const char* keyValueTail;
- int32_t keyValueLen;
-
- startSearchHere++; /* skip @ or ; */
- nextSeparator = uprv_strchr(startSearchHere, '=');
- if(!nextSeparator) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
- return;
- }
- /* strip leading & trailing spaces (TC decided to tolerate these) */
- while(*startSearchHere == ' ') {
- startSearchHere++;
+ /* find the first keyword */
+ while(startSearchHere) {
+ const char* keyValueTail;
+
+ startSearchHere++; /* skip @ or ; */
+ nextSeparator = uprv_strchr(startSearchHere, '=');
+ if(!nextSeparator) {
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
+ return;
+ }
+ /* strip leading & trailing spaces (TC decided to tolerate these) */
+ while(*startSearchHere == ' ') {
+ startSearchHere++;
+ }
+ keyValueTail = nextSeparator;
+ while (keyValueTail > startSearchHere && *(keyValueTail-1) == ' ') {
+ keyValueTail--;
+ }
+ /* now keyValueTail points to first char after the keyName */
+ /* copy & normalize keyName from locale */
+ if (startSearchHere == keyValueTail) {
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
+ return;
+ }
+ CharString localeKeywordName;
+ while (startSearchHere < keyValueTail) {
+ if (!UPRV_ISALPHANUM(*startSearchHere)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
+ return;
}
- keyValueTail = nextSeparator;
- while (keyValueTail > startSearchHere && *(keyValueTail-1) == ' ') {
+ localeKeywordName.append(uprv_tolower(*startSearchHere++), status);
+ }
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ startSearchHere = uprv_strchr(nextSeparator, ';');
+
+ if (canonKeywordName == localeKeywordName) {
+ /* current entry matches the keyword. */
+ nextSeparator++; /* skip '=' */
+ /* First strip leading & trailing spaces (TC decided to tolerate these) */
+ while(*nextSeparator == ' ') {
+ nextSeparator++;
+ }
+ keyValueTail = (startSearchHere)? startSearchHere: nextSeparator + uprv_strlen(nextSeparator);
+ while(keyValueTail > nextSeparator && *(keyValueTail-1) == ' ') {
keyValueTail--;
- }
- /* now keyValueTail points to first char after the keyName */
- /* copy & normalize keyName from locale */
- if (startSearchHere == keyValueTail) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
- return;
- }
- keyValueLen = 0;
- while (startSearchHere < keyValueTail) {
- if (!UPRV_ISALPHANUM(*startSearchHere)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
- return;
}
- if (keyValueLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
- localeKeywordNameBuffer[keyValueLen++] = uprv_tolower(*startSearchHere++);
- } else {
- /* keyword name too long for internal buffer */
- *status = U_INTERNAL_PROGRAM_ERROR;
+ /* Now copy the value, but check well-formedness */
+ if (nextSeparator == keyValueTail) {
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value name in passed-in locale */
return;
}
- }
- localeKeywordNameBuffer[keyValueLen] = 0; /* terminate */
-
- startSearchHere = uprv_strchr(nextSeparator, ';');
-
- if(uprv_strcmp(keywordNameBuffer, localeKeywordNameBuffer) == 0) {
- /* current entry matches the keyword. */
- nextSeparator++; /* skip '=' */
- /* First strip leading & trailing spaces (TC decided to tolerate these) */
- while(*nextSeparator == ' ') {
- nextSeparator++;
- }
- keyValueTail = (startSearchHere)? startSearchHere: nextSeparator + uprv_strlen(nextSeparator);
- while(keyValueTail > nextSeparator && *(keyValueTail-1) == ' ') {
- keyValueTail--;
- }
- /* Now copy the value, but check well-formedness */
- if (nextSeparator == keyValueTail) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value name in passed-in locale */
+ while (nextSeparator < keyValueTail) {
+ if (!UPRV_ISALPHANUM(*nextSeparator) && !UPRV_OK_VALUE_PUNCTUATION(*nextSeparator)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
return;
}
- while (nextSeparator < keyValueTail) {
- if (!UPRV_ISALPHANUM(*nextSeparator) && !UPRV_OK_VALUE_PUNCTUATION(*nextSeparator)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
- return;
- }
- /* Should we lowercase value to return here? Tests expect as-is. */
- sink.Append(nextSeparator++, 1);
- }
- return;
- }
- }
+ /* Should we lowercase value to return here? Tests expect as-is. */
+ sink.Append(nextSeparator++, 1);
+ }
+ return;
+ }
}
}
@@ -849,100 +863,136 @@ uloc_setKeywordValue(const char* keywordName,
char* buffer, int32_t bufferCapacity,
UErrorCode* status)
{
- /* TODO: sorting. removal. */
- int32_t keywordNameLen;
- int32_t keywordValueLen;
- int32_t bufLen;
- int32_t needLen = 0;
- char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
- char keywordValueBuffer[ULOC_KEYWORDS_CAPACITY+1];
- char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
- int32_t rc;
- char* nextSeparator = nullptr;
- char* nextEqualsign = nullptr;
- char* startSearchHere = nullptr;
- char* keywordStart = nullptr;
- CharString updatedKeysAndValues;
- UBool handledInputKeyAndValue = false;
- char keyValuePrefix = '@';
+ if (U_FAILURE(*status)) { return 0; }
- if(U_FAILURE(*status)) {
- return -1;
- }
- if (*status == U_STRING_NOT_TERMINATED_WARNING) {
- *status = U_ZERO_ERROR;
- }
- if (keywordName == nullptr || keywordName[0] == 0 || bufferCapacity <= 1) {
+ if (bufferCapacity <= 1) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- bufLen = (int32_t)uprv_strlen(buffer);
+
+ int32_t bufLen = (int32_t)uprv_strlen(buffer);
if(bufferCapacity<bufLen) {
/* The capacity is less than the length?! Is this NUL terminated? */
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- keywordNameLen = locale_canonKeywordName(keywordNameBuffer, keywordName, status);
- if(U_FAILURE(*status)) {
+
+ char* keywords = const_cast<char*>(locale_getKeywordsStart(buffer));
+ int32_t baseLen = keywords == nullptr ? bufLen : keywords - buffer;
+ // Remove -1 from the capacity so that this function can guarantee NUL termination.
+ CheckedArrayByteSink sink(keywords == nullptr ? buffer + bufLen : keywords,
+ bufferCapacity - baseLen - 1);
+ int32_t reslen = ulocimp_setKeywordValue(
+ keywords, keywordName, keywordValue, sink, *status);
+
+ if (U_FAILURE(*status)) {
+ return *status == U_BUFFER_OVERFLOW_ERROR ? reslen + baseLen : 0;
+ }
+
+ // See the documentation for this function, it's guaranteed to never
+ // overflow the buffer but instead abort with BUFFER_OVERFLOW_ERROR.
+ // In this case, nothing has been written to the sink, so it cannot have Overflowed().
+ U_ASSERT(!sink.Overflowed());
+ U_ASSERT(reslen >= 0);
+ return u_terminateChars(buffer, bufferCapacity, reslen + baseLen, status);
+}
+
+U_EXPORT void
+ulocimp_setKeywordValue(const char* keywordName,
+ const char* keywordValue,
+ CharString& localeID,
+ UErrorCode& status)
+{
+ if (U_FAILURE(status)) { return; }
+ // This is safe because CharString::truncate() doesn't actually erase any
+ // data, but simply sets the position for where new data will be written.
+ const char* keywords = locale_getKeywordsStart(localeID.data());
+ if (keywords != nullptr) localeID.truncate(keywords - localeID.data());
+ CharStringByteSink sink(&localeID);
+ ulocimp_setKeywordValue(keywords, keywordName, keywordValue, sink, status);
+}
+
+U_EXPORT int32_t
+ulocimp_setKeywordValue(const char* keywords,
+ const char* keywordName,
+ const char* keywordValue,
+ ByteSink& sink,
+ UErrorCode& status)
+{
+ if (U_FAILURE(status)) { return 0; }
+
+ /* TODO: sorting. removal. */
+ int32_t needLen = 0;
+ int32_t rc;
+ const char* nextSeparator = nullptr;
+ const char* nextEqualsign = nullptr;
+ const char* keywordStart = nullptr;
+ CharString updatedKeysAndValues;
+ bool handledInputKeyAndValue = false;
+ char keyValuePrefix = '@';
+
+ if (status == U_STRING_NOT_TERMINATED_WARNING) {
+ status = U_ZERO_ERROR;
+ }
+ if (keywordName == nullptr || keywordName[0] == 0) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ CharString canonKeywordName = locale_canonKeywordName(keywordName, status);
+ if (U_FAILURE(status)) {
return 0;
}
- keywordValueLen = 0;
+ CharString canonKeywordValue;
if(keywordValue) {
while (*keywordValue != 0) {
if (!UPRV_ISALPHANUM(*keywordValue) && !UPRV_OK_VALUE_PUNCTUATION(*keywordValue)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
- return 0;
- }
- if (keywordValueLen < ULOC_KEYWORDS_CAPACITY) {
- /* Should we force lowercase in value to set? */
- keywordValueBuffer[keywordValueLen++] = *keywordValue++;
- } else {
- /* keywordValue too long for internal buffer */
- *status = U_INTERNAL_PROGRAM_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
return 0;
}
+ /* Should we force lowercase in value to set? */
+ canonKeywordValue.append(*keywordValue++, status);
}
}
- keywordValueBuffer[keywordValueLen] = 0; /* terminate */
+ if (U_FAILURE(status)) {
+ return 0;
+ }
- startSearchHere = (char*)locale_getKeywordsStart(buffer);
- if(startSearchHere == nullptr || (startSearchHere[1]==0)) {
- if(keywordValueLen == 0) { /* no keywords = nothing to remove */
- U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
- return bufLen;
+ if (keywords == nullptr || keywords[1] == '\0') {
+ if (canonKeywordValue.isEmpty()) { /* no keywords = nothing to remove */
+ U_ASSERT(status != U_STRING_NOT_TERMINATED_WARNING);
+ return 0;
}
- needLen = bufLen+1+keywordNameLen+1+keywordValueLen;
- if(startSearchHere) { /* had a single @ */
- needLen--; /* already had the @ */
- /* startSearchHere points at the @ */
- } else {
- startSearchHere=buffer+bufLen;
- }
- if(needLen >= bufferCapacity) {
- *status = U_BUFFER_OVERFLOW_ERROR;
+ needLen = 1 + canonKeywordName.length() + 1 + canonKeywordValue.length();
+ int32_t capacity = 0;
+ char* buffer = sink.GetAppendBuffer(
+ needLen, needLen, nullptr, needLen, &capacity);
+ if (capacity < needLen || buffer == nullptr) {
+ status = U_BUFFER_OVERFLOW_ERROR;
return needLen; /* no change */
}
- *startSearchHere++ = '@';
- uprv_strcpy(startSearchHere, keywordNameBuffer);
- startSearchHere += keywordNameLen;
- *startSearchHere++ = '=';
- uprv_strcpy(startSearchHere, keywordValueBuffer);
- U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
+ char* it = buffer;
+
+ *it++ = '@';
+ uprv_memcpy(it, canonKeywordName.data(), canonKeywordName.length());
+ it += canonKeywordName.length();
+ *it++ = '=';
+ uprv_memcpy(it, canonKeywordValue.data(), canonKeywordValue.length());
+ sink.Append(buffer, needLen);
+ U_ASSERT(status != U_STRING_NOT_TERMINATED_WARNING);
return needLen;
} /* end shortcut - no @ */
- keywordStart = startSearchHere;
+ keywordStart = keywords;
/* search for keyword */
while(keywordStart) {
const char* keyValueTail;
- int32_t keyValueLen;
keywordStart++; /* skip @ or ; */
nextEqualsign = uprv_strchr(keywordStart, '=');
if (!nextEqualsign) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
return 0;
}
/* strip leading & trailing spaces (TC decided to tolerate these) */
@@ -956,24 +1006,20 @@ uloc_setKeywordValue(const char* keywordName,
/* now keyValueTail points to first char after the keyName */
/* copy & normalize keyName from locale */
if (keywordStart == keyValueTail) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
return 0;
}
- keyValueLen = 0;
+ CharString localeKeywordName;
while (keywordStart < keyValueTail) {
if (!UPRV_ISALPHANUM(*keywordStart)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
- return 0;
- }
- if (keyValueLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
- localeKeywordNameBuffer[keyValueLen++] = uprv_tolower(*keywordStart++);
- } else {
- /* keyword name too long for internal buffer */
- *status = U_INTERNAL_PROGRAM_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
return 0;
}
+ localeKeywordName.append(uprv_tolower(*keywordStart++), status);
+ }
+ if (U_FAILURE(status)) {
+ return 0;
}
- localeKeywordNameBuffer[keyValueLen] = 0; /* terminate */
nextSeparator = uprv_strchr(nextEqualsign, ';');
@@ -988,46 +1034,46 @@ uloc_setKeywordValue(const char* keywordName,
keyValueTail--;
}
if (nextEqualsign == keyValueTail) {
- *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value in passed-in locale */
+ status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value in passed-in locale */
return 0;
}
- rc = uprv_strcmp(keywordNameBuffer, localeKeywordNameBuffer);
+ rc = uprv_strcmp(canonKeywordName.data(), localeKeywordName.data());
if(rc == 0) {
/* Current entry matches the input keyword. Update the entry */
- if(keywordValueLen > 0) { /* updating a value */
- updatedKeysAndValues.append(keyValuePrefix, *status);
+ if (!canonKeywordValue.isEmpty()) { /* updating a value */
+ updatedKeysAndValues.append(keyValuePrefix, status);
keyValuePrefix = ';'; /* for any subsequent key-value pair */
- updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
- updatedKeysAndValues.append('=', *status);
- updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
+ updatedKeysAndValues.append(canonKeywordName, status);
+ updatedKeysAndValues.append('=', status);
+ updatedKeysAndValues.append(canonKeywordValue, status);
} /* else removing this entry, don't emit anything */
handledInputKeyAndValue = true;
} else {
/* input keyword sorts earlier than current entry, add before current entry */
- if (rc < 0 && keywordValueLen > 0 && !handledInputKeyAndValue) {
+ if (rc < 0 && !canonKeywordValue.isEmpty() && !handledInputKeyAndValue) {
/* insert new entry at this location */
- updatedKeysAndValues.append(keyValuePrefix, *status);
+ updatedKeysAndValues.append(keyValuePrefix, status);
keyValuePrefix = ';'; /* for any subsequent key-value pair */
- updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
- updatedKeysAndValues.append('=', *status);
- updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
+ updatedKeysAndValues.append(canonKeywordName, status);
+ updatedKeysAndValues.append('=', status);
+ updatedKeysAndValues.append(canonKeywordValue, status);
handledInputKeyAndValue = true;
}
/* copy the current entry */
- updatedKeysAndValues.append(keyValuePrefix, *status);
+ updatedKeysAndValues.append(keyValuePrefix, status);
keyValuePrefix = ';'; /* for any subsequent key-value pair */
- updatedKeysAndValues.append(localeKeywordNameBuffer, keyValueLen, *status);
- updatedKeysAndValues.append('=', *status);
- updatedKeysAndValues.append(nextEqualsign, static_cast<int32_t>(keyValueTail-nextEqualsign), *status);
+ updatedKeysAndValues.append(localeKeywordName, status);
+ updatedKeysAndValues.append('=', status);
+ updatedKeysAndValues.append(nextEqualsign, static_cast<int32_t>(keyValueTail-nextEqualsign), status);
}
- if (!nextSeparator && keywordValueLen > 0 && !handledInputKeyAndValue) {
+ if (!nextSeparator && !canonKeywordValue.isEmpty() && !handledInputKeyAndValue) {
/* append new entry at the end, it sorts later than existing entries */
- updatedKeysAndValues.append(keyValuePrefix, *status);
+ updatedKeysAndValues.append(keyValuePrefix, status);
/* skip keyValuePrefix update, no subsequent key-value pair */
- updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
- updatedKeysAndValues.append('=', *status);
- updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
+ updatedKeysAndValues.append(canonKeywordName, status);
+ updatedKeysAndValues.append('=', status);
+ updatedKeysAndValues.append(canonKeywordValue, status);
handledInputKeyAndValue = true;
}
keywordStart = nextSeparator;
@@ -1041,44 +1087,57 @@ uloc_setKeywordValue(const char* keywordName,
* error return but the passed-in locale is unmodified and the original bufLen is
* returned.
*/
- if (!handledInputKeyAndValue || U_FAILURE(*status)) {
+ if (!handledInputKeyAndValue || U_FAILURE(status)) {
/* if input key/value specified removal of a keyword not present in locale, or
* there was an error in CharString.append, leave original locale alone. */
- U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
- return bufLen;
+ U_ASSERT(status != U_STRING_NOT_TERMINATED_WARNING);
+ return (int32_t)uprv_strlen(keywords);
}
- // needLen = length of the part before '@'
- needLen = (int32_t)(startSearchHere - buffer);
- // Check to see can we fit the startSearchHere, if not, return
+ needLen = updatedKeysAndValues.length();
+ // Check to see can we fit the updatedKeysAndValues, if not, return
// U_BUFFER_OVERFLOW_ERROR without copy updatedKeysAndValues into it.
// We do this because this API function does not behave like most others:
// It promises never to set a U_STRING_NOT_TERMINATED_WARNING.
// When the contents fits but without the terminating NUL, in this case we need to not change
// the buffer contents and return with a buffer overflow error.
- int32_t appendLength = updatedKeysAndValues.length();
- if (appendLength >= bufferCapacity - needLen) {
- *status = U_BUFFER_OVERFLOW_ERROR;
- return needLen + appendLength;
- }
- needLen += updatedKeysAndValues.extract(
- startSearchHere, bufferCapacity - needLen, *status);
- U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
+ if (needLen > 0) {
+ int32_t capacity = 0;
+ char* buffer = sink.GetAppendBuffer(
+ needLen, needLen, nullptr, needLen, &capacity);
+ if (capacity < needLen || buffer == nullptr) {
+ status = U_BUFFER_OVERFLOW_ERROR;
+ return needLen;
+ }
+ uprv_memcpy(buffer, updatedKeysAndValues.data(), needLen);
+ sink.Append(buffer, needLen);
+ }
+ U_ASSERT(status != U_STRING_NOT_TERMINATED_WARNING);
return needLen;
}
/* ### ID parsing implementation **************************************************/
-#define _isPrefixLetter(a) ((a=='x')||(a=='X')||(a=='i')||(a=='I'))
+namespace {
+
+inline bool _isPrefixLetter(char a) { return a == 'x' || a == 'X' || a == 'i' || a == 'I'; }
/*returns true if one of the special prefixes is here (s=string)
'x-' or 'i-' */
-#define _isIDPrefix(s) (_isPrefixLetter(s[0])&&_isIDSeparator(s[1]))
+inline bool _isIDPrefix(const char *s) { return _isPrefixLetter(s[0]) && _isIDSeparator(s[1]); }
/* Dot terminates it because of POSIX form where dot precedes the codepage
* except for variant
*/
-#define _isTerminator(a) ((a==0)||(a=='.')||(a=='@'))
+inline bool _isTerminator(char a) { return a == 0 || a == '.' || a == '@'; }
+
+inline bool _isBCP47Extension(const char* p) {
+ return p[0] == '-' &&
+ (p[1] == 't' || p[1] == 'T' ||
+ p[1] == 'u' || p[1] == 'U' ||
+ p[1] == 'x' || p[1] == 'X') &&
+ p[2] == '-';
+}
/**
* Lookup 'key' in the array 'list'. The array 'list' should contain
@@ -1087,7 +1146,7 @@ uloc_setKeywordValue(const char* keywordName,
* The 'list' param should be LANGUAGES, LANGUAGES_3, COUNTRIES, or
* COUNTRIES_3.
*/
-static int16_t _findIndex(const char* const* list, const char* key)
+std::optional<int16_t> _findIndex(const char* const* list, const char* key)
{
const char* const* anchor = list;
int32_t pass = 0;
@@ -1102,38 +1161,40 @@ static int16_t _findIndex(const char* const* list, const char* key)
}
++list; /* skip final nullptr *CWB*/
}
- return -1;
+ return std::nullopt;
}
+} // namespace
+
U_CFUNC const char*
uloc_getCurrentCountryID(const char* oldID){
- int32_t offset = _findIndex(DEPRECATED_COUNTRIES, oldID);
- if (offset >= 0) {
- return REPLACEMENT_COUNTRIES[offset];
- }
- return oldID;
+ std::optional<int16_t> offset = _findIndex(DEPRECATED_COUNTRIES, oldID);
+ return offset.has_value() ? REPLACEMENT_COUNTRIES[*offset] : oldID;
}
U_CFUNC const char*
uloc_getCurrentLanguageID(const char* oldID){
- int32_t offset = _findIndex(DEPRECATED_LANGUAGES, oldID);
- if (offset >= 0) {
- return REPLACEMENT_LANGUAGES[offset];
- }
- return oldID;
+ std::optional<int16_t> offset = _findIndex(DEPRECATED_LANGUAGES, oldID);
+ return offset.has_value() ? REPLACEMENT_LANGUAGES[*offset] : oldID;
}
+
+namespace {
+
/*
- * the internal functions _getLanguage(), _getCountry(), _getVariant()
+ * the internal functions _getLanguage(), _getScript(), _getRegion(), _getVariant()
* avoid duplicating code to handle the earlier locale ID pieces
* in the functions for the later ones by
* setting the *pEnd pointer to where they stopped parsing
*
* TODO try to use this in Locale
*/
-CharString U_EXPORT2
-ulocimp_getLanguage(const char *localeID,
- const char **pEnd,
- UErrorCode &status) {
- CharString result;
+
+void
+_getLanguage(const char* localeID,
+ ByteSink* sink,
+ const char** pEnd,
+ UErrorCode& status) {
+ U_ASSERT(pEnd != nullptr);
+ *pEnd = localeID;
if (uprv_stricmp(localeID, "root") == 0) {
localeID += 4;
@@ -1145,150 +1206,381 @@ ulocimp_getLanguage(const char *localeID,
localeID += 3;
}
+ constexpr int32_t MAXLEN = ULOC_LANG_CAPACITY - 1; // Minus NUL.
+
/* if it starts with i- or x- then copy that prefix */
- if(_isIDPrefix(localeID)) {
- result.append((char)uprv_tolower(*localeID), status);
- result.append('-', status);
- localeID+=2;
+ int32_t len = _isIDPrefix(localeID) ? 2 : 0;
+ while (!_isTerminator(localeID[len]) && !_isIDSeparator(localeID[len])) {
+ if (len == MAXLEN) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ len++;
}
- /* copy the language as far as possible and count its length */
- while(!_isTerminator(*localeID) && !_isIDSeparator(*localeID)) {
- result.append((char)uprv_tolower(*localeID), status);
- localeID++;
+ *pEnd = localeID + len;
+ if (sink == nullptr || len == 0) { return; }
+
+ int32_t minCapacity = uprv_max(len, 4); // Minimum 3 letters plus NUL.
+ char scratch[MAXLEN];
+ int32_t capacity = 0;
+ char* buffer = sink->GetAppendBuffer(
+ minCapacity, minCapacity, scratch, UPRV_LENGTHOF(scratch), &capacity);
+
+ for (int32_t i = 0; i < len; ++i) {
+ buffer[i] = uprv_tolower(localeID[i]);
+ }
+ if (_isIDSeparator(localeID[1])) {
+ buffer[1] = '-';
}
- if(result.length()==3) {
+ if (len == 3) {
/* convert 3 character code to 2 character code if possible *CWB*/
- int32_t offset = _findIndex(LANGUAGES_3, result.data());
- if(offset>=0) {
- result.clear();
- result.append(LANGUAGES[offset], status);
+ U_ASSERT(capacity >= 4);
+ buffer[3] = '\0';
+ std::optional<int16_t> offset = _findIndex(LANGUAGES_3, buffer);
+ if (offset.has_value()) {
+ const char* const alias = LANGUAGES[*offset];
+ sink->Append(alias, (int32_t)uprv_strlen(alias));
+ return;
}
}
- if(pEnd!=nullptr) {
- *pEnd=localeID;
- }
-
- return result;
+ sink->Append(buffer, len);
}
-CharString U_EXPORT2
-ulocimp_getScript(const char *localeID,
- const char **pEnd,
- UErrorCode &status) {
- CharString result;
- int32_t idLen = 0;
+void
+_getScript(const char* localeID,
+ ByteSink* sink,
+ const char** pEnd) {
+ U_ASSERT(pEnd != nullptr);
+ *pEnd = localeID;
- if (pEnd != nullptr) {
- *pEnd = localeID;
- }
+ constexpr int32_t LENGTH = 4;
- /* copy the second item as far as possible and count its length */
- while(!_isTerminator(localeID[idLen]) && !_isIDSeparator(localeID[idLen])
- && uprv_isASCIILetter(localeID[idLen])) {
- idLen++;
+ int32_t len = 0;
+ while (!_isTerminator(localeID[len]) && !_isIDSeparator(localeID[len]) &&
+ uprv_isASCIILetter(localeID[len])) {
+ if (len == LENGTH) { return; }
+ len++;
}
+ if (len != LENGTH) { return; }
- /* If it's exactly 4 characters long, then it's a script and not a country. */
- if (idLen == 4) {
- int32_t i;
- if (pEnd != nullptr) {
- *pEnd = localeID+idLen;
- }
- if (idLen >= 1) {
- result.append((char)uprv_toupper(*(localeID++)), status);
- }
- for (i = 1; i < idLen; i++) {
- result.append((char)uprv_tolower(*(localeID++)), status);
- }
+ *pEnd = localeID + LENGTH;
+ if (sink == nullptr) { return; }
+
+ char scratch[LENGTH];
+ int32_t capacity = 0;
+ char* buffer = sink->GetAppendBuffer(
+ LENGTH, LENGTH, scratch, UPRV_LENGTHOF(scratch), &capacity);
+
+ buffer[0] = uprv_toupper(localeID[0]);
+ for (int32_t i = 1; i < LENGTH; ++i) {
+ buffer[i] = uprv_tolower(localeID[i]);
}
- return result;
+ sink->Append(buffer, LENGTH);
}
-CharString U_EXPORT2
-ulocimp_getCountry(const char *localeID,
- const char **pEnd,
- UErrorCode &status) {
- CharString result;
- int32_t idLen=0;
+void
+_getRegion(const char* localeID,
+ ByteSink* sink,
+ const char** pEnd) {
+ U_ASSERT(pEnd != nullptr);
+ *pEnd = localeID;
- /* copy the country as far as possible and count its length */
- while(!_isTerminator(localeID[idLen]) && !_isIDSeparator(localeID[idLen])) {
- result.append((char)uprv_toupper(localeID[idLen]), status);
- idLen++;
+ constexpr int32_t MINLEN = 2;
+ constexpr int32_t MAXLEN = ULOC_COUNTRY_CAPACITY - 1; // Minus NUL.
+
+ int32_t len = 0;
+ while (!_isTerminator(localeID[len]) && !_isIDSeparator(localeID[len])) {
+ if (len == MAXLEN) { return; }
+ len++;
}
+ if (len < MINLEN) { return; }
- /* the country should be either length 2 or 3 */
- if (idLen == 2 || idLen == 3) {
- /* convert 3 character code to 2 character code if possible *CWB*/
- if(idLen==3) {
- int32_t offset = _findIndex(COUNTRIES_3, result.data());
- if(offset>=0) {
- result.clear();
- result.append(COUNTRIES[offset], status);
- }
- }
- localeID+=idLen;
- } else {
- result.clear();
+ *pEnd = localeID + len;
+ if (sink == nullptr) { return; }
+
+ char scratch[ULOC_COUNTRY_CAPACITY];
+ int32_t capacity = 0;
+ char* buffer = sink->GetAppendBuffer(
+ ULOC_COUNTRY_CAPACITY,
+ ULOC_COUNTRY_CAPACITY,
+ scratch,
+ UPRV_LENGTHOF(scratch),
+ &capacity);
+
+ for (int32_t i = 0; i < len; ++i) {
+ buffer[i] = uprv_toupper(localeID[i]);
}
- if(pEnd!=nullptr) {
- *pEnd=localeID;
+ if (len == 3) {
+ /* convert 3 character code to 2 character code if possible *CWB*/
+ U_ASSERT(capacity >= 4);
+ buffer[3] = '\0';
+ std::optional<int16_t> offset = _findIndex(COUNTRIES_3, buffer);
+ if (offset.has_value()) {
+ const char* const alias = COUNTRIES[*offset];
+ sink->Append(alias, (int32_t)uprv_strlen(alias));
+ return;
+ }
}
- return result;
+ sink->Append(buffer, len);
}
/**
* @param needSeparator if true, then add leading '_' if any variants
* are added to 'variant'
*/
-static void
-_getVariant(const char *localeID,
+void
+_getVariant(const char* localeID,
char prev,
- ByteSink& sink,
- UBool needSeparator) {
- UBool hasVariant = false;
+ ByteSink* sink,
+ const char** pEnd,
+ bool needSeparator,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) return;
+ if (pEnd != nullptr) { *pEnd = localeID; }
+
+ // Reasonable upper limit for variants
+ // There are no strict limitation of the syntax of variant in the legacy
+ // locale format. If the locale is constructed from unicode_locale_id
+ // as defined in UTS35, then we know each unicode_variant_subtag
+ // could have max length of 8 ((alphanum{5,8} | digit alphanum{3})
+ // 179 would allow 20 unicode_variant_subtag with sep in the
+ // unicode_locale_id
+ // 8*20 + 1*(20-1) = 179
+ constexpr int32_t MAX_VARIANTS_LENGTH = 179;
/* get one or more variant tags and separate them with '_' */
- if(_isIDSeparator(prev)) {
+ int32_t index = 0;
+ if (_isIDSeparator(prev)) {
/* get a variant string after a '-' or '_' */
- while(!_isTerminator(*localeID)) {
+ for (index=0; !_isTerminator(localeID[index]); index++) {
+ if (index >= MAX_VARIANTS_LENGTH) { // same as length > MAX_VARIANTS_LENGTH
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
if (needSeparator) {
- sink.Append("_", 1);
+ if (sink != nullptr) {
+ sink->Append("_", 1);
+ }
needSeparator = false;
}
- char c = (char)uprv_toupper(*localeID);
- if (c == '-') c = '_';
- sink.Append(&c, 1);
- hasVariant = true;
- localeID++;
+ if (sink != nullptr) {
+ char c = (char)uprv_toupper(localeID[index]);
+ if (c == '-') c = '_';
+ sink->Append(&c, 1);
+ }
}
+ if (pEnd != nullptr) { *pEnd = localeID+index; }
}
/* if there is no variant tag after a '-' or '_' then look for '@' */
- if(!hasVariant) {
- if(prev=='@') {
+ if (index == 0) {
+ if (prev=='@') {
/* keep localeID */
} else if((localeID=locale_getKeywordsStart(localeID))!=nullptr) {
++localeID; /* point after the '@' */
} else {
return;
}
- while(!_isTerminator(*localeID)) {
+ for(; !_isTerminator(localeID[index]); index++) {
+ if (index >= MAX_VARIANTS_LENGTH) { // same as length > MAX_VARIANTS_LENGTH
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
if (needSeparator) {
- sink.Append("_", 1);
+ if (sink != nullptr) {
+ sink->Append("_", 1);
+ }
needSeparator = false;
}
- char c = (char)uprv_toupper(*localeID);
- if (c == '-' || c == ',') c = '_';
- sink.Append(&c, 1);
+ if (sink != nullptr) {
+ char c = (char)uprv_toupper(localeID[index]);
+ if (c == '-' || c == ',') c = '_';
+ sink->Append(&c, 1);
+ }
+ }
+ if (pEnd != nullptr) { *pEnd = localeID + index; }
+ }
+}
+
+} // namespace
+
+U_EXPORT CharString
+ulocimp_getLanguage(const char* localeID, UErrorCode& status) {
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ &sink,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ status);
+ },
+ status);
+}
+
+U_EXPORT CharString
+ulocimp_getScript(const char* localeID, UErrorCode& status) {
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ nullptr,
+ &sink,
+ nullptr,
+ nullptr,
+ nullptr,
+ status);
+ },
+ status);
+}
+
+U_EXPORT CharString
+ulocimp_getRegion(const char* localeID, UErrorCode& status) {
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ nullptr,
+ nullptr,
+ &sink,
+ nullptr,
+ nullptr,
+ status);
+ },
+ status);
+}
+
+U_EXPORT CharString
+ulocimp_getVariant(const char* localeID, UErrorCode& status) {
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ nullptr,
+ nullptr,
+ nullptr,
+ &sink,
+ nullptr,
+ status);
+ },
+ status);
+}
+
+U_EXPORT void
+ulocimp_getSubtags(
+ const char* localeID,
+ CharString* language,
+ CharString* script,
+ CharString* region,
+ CharString* variant,
+ const char** pEnd,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
+
+ std::optional<CharStringByteSink> languageSink;
+ std::optional<CharStringByteSink> scriptSink;
+ std::optional<CharStringByteSink> regionSink;
+ std::optional<CharStringByteSink> variantSink;
+
+ if (language != nullptr) { languageSink.emplace(language); }
+ if (script != nullptr) { scriptSink.emplace(script); }
+ if (region != nullptr) { regionSink.emplace(region); }
+ if (variant != nullptr) { variantSink.emplace(variant); }
+
+ ulocimp_getSubtags(
+ localeID,
+ languageSink.has_value() ? &*languageSink : nullptr,
+ scriptSink.has_value() ? &*scriptSink : nullptr,
+ regionSink.has_value() ? &*regionSink : nullptr,
+ variantSink.has_value() ? &*variantSink : nullptr,
+ pEnd,
+ status);
+}
+
+U_EXPORT void
+ulocimp_getSubtags(
+ const char* localeID,
+ ByteSink* language,
+ ByteSink* script,
+ ByteSink* region,
+ ByteSink* variant,
+ const char** pEnd,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
+
+ if (pEnd != nullptr) {
+ *pEnd = localeID;
+ } else if (language == nullptr &&
+ script == nullptr &&
+ region == nullptr &&
+ variant == nullptr) {
+ return;
+ }
+
+ bool hasRegion = false;
+
+ if (localeID == nullptr) {
+ localeID = uloc_getDefault();
+ }
+
+ _getLanguage(localeID, language, &localeID, status);
+ if (U_FAILURE(status)) { return; }
+ U_ASSERT(localeID != nullptr);
+
+ if (pEnd != nullptr) {
+ *pEnd = localeID;
+ } else if (script == nullptr &&
+ region == nullptr &&
+ variant == nullptr) {
+ return;
+ }
+
+ if (_isIDSeparator(*localeID)) {
+ const char* begin = localeID + 1;
+ const char* end = nullptr;
+ _getScript(begin, script, &end);
+ U_ASSERT(end != nullptr);
+ if (end != begin) {
+ localeID = end;
+ if (pEnd != nullptr) { *pEnd = localeID; }
+ }
+ }
+
+ if (region == nullptr && variant == nullptr && pEnd == nullptr) { return; }
+
+ if (_isIDSeparator(*localeID)) {
+ const char* begin = localeID + 1;
+ const char* end = nullptr;
+ _getRegion(begin, region, &end);
+ U_ASSERT(end != nullptr);
+ if (end != begin) {
+ hasRegion = true;
+ localeID = end;
+ if (pEnd != nullptr) { *pEnd = localeID; }
+ }
+ }
+
+ if (variant == nullptr && pEnd == nullptr) { return; }
+
+ if (_isIDSeparator(*localeID) && !_isBCP47Extension(localeID)) {
+ /* If there was no country ID, skip a possible extra IDSeparator */
+ if (!hasRegion && _isIDSeparator(localeID[1])) {
localeID++;
}
+ const char* begin = localeID + 1;
+ const char* end = nullptr;
+ _getVariant(begin, *localeID, variant, &end, false, status);
+ if (U_FAILURE(status)) { return; }
+ U_ASSERT(end != nullptr);
+ if (end != begin && pEnd != nullptr) { *pEnd = end; }
}
}
@@ -1359,12 +1651,11 @@ static const UEnumeration gKeywordsEnum = {
U_CAPI UEnumeration* U_EXPORT2
uloc_openKeywordList(const char *keywordList, int32_t keywordListSize, UErrorCode* status)
{
+ if (U_FAILURE(*status)) { return nullptr; }
+
LocalMemory<UKeywordsContext> myContext;
LocalMemory<UEnumeration> result;
- if (U_FAILURE(*status)) {
- return nullptr;
- }
myContext.adoptInstead(static_cast<UKeywordsContext *>(uprv_malloc(sizeof(UKeywordsContext))));
result.adoptInstead(static_cast<UEnumeration *>(uprv_malloc(sizeof(UEnumeration))));
if (myContext.isNull() || result.isNull()) {
@@ -1388,16 +1679,15 @@ U_CAPI UEnumeration* U_EXPORT2
uloc_openKeywords(const char* localeID,
UErrorCode* status)
{
- CharString tempBuffer;
- const char* tmpLocaleID;
-
if(status==nullptr || U_FAILURE(*status)) {
- return 0;
+ return nullptr;
}
+ CharString tempBuffer;
+ const char* tmpLocaleID;
+
if (_hasBCP47Extension(localeID)) {
- CharStringByteSink sink(&tempBuffer);
- ulocimp_forLanguageTag(localeID, -1, sink, nullptr, status);
+ tempBuffer = ulocimp_forLanguageTag(localeID, -1, nullptr, *status);
tmpLocaleID = U_SUCCESS(*status) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeID;
} else {
if (localeID==nullptr) {
@@ -1406,37 +1696,21 @@ uloc_openKeywords(const char* localeID,
tmpLocaleID=localeID;
}
- /* Skip the language */
- ulocimp_getLanguage(tmpLocaleID, &tmpLocaleID, *status);
+ ulocimp_getSubtags(
+ tmpLocaleID,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ &tmpLocaleID,
+ *status);
if (U_FAILURE(*status)) {
- return 0;
- }
-
- if(_isIDSeparator(*tmpLocaleID)) {
- const char *scriptID;
- /* Skip the script if available */
- ulocimp_getScript(tmpLocaleID+1, &scriptID, *status);
- if (U_FAILURE(*status)) {
- return 0;
- }
- if(scriptID != tmpLocaleID+1) {
- /* Found optional script */
- tmpLocaleID = scriptID;
- }
- /* Skip the Country */
- if (_isIDSeparator(*tmpLocaleID)) {
- ulocimp_getCountry(tmpLocaleID+1, &tmpLocaleID, *status);
- if (U_FAILURE(*status)) {
- return 0;
- }
- }
+ return nullptr;
}
/* keywords are located after '@' */
if((tmpLocaleID = locale_getKeywordsStart(tmpLocaleID)) != nullptr) {
- CharString keywords;
- CharStringByteSink sink(&keywords);
- ulocimp_getKeywords(tmpLocaleID+1, '@', sink, false, status);
+ CharString keywords = ulocimp_getKeywords(tmpLocaleID + 1, '@', false, *status);
if (U_FAILURE(*status)) {
return nullptr;
}
@@ -1450,10 +1724,12 @@ uloc_openKeywords(const char* localeID,
#define _ULOC_STRIP_KEYWORDS 0x2
#define _ULOC_CANONICALIZE 0x1
-#define OPTION_SET(options, mask) ((options & mask) != 0)
+namespace {
-static const char i_default[] = {'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'};
-#define I_DEFAULT_LENGTH UPRV_LENGTHOF(i_default)
+inline bool OPTION_SET(uint32_t options, uint32_t mask) { return (options & mask) != 0; }
+
+constexpr char i_default[] = {'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'};
+constexpr int32_t I_DEFAULT_LENGTH = UPRV_LENGTHOF(i_default);
/**
* Canonicalize the given localeID, to level 1 or to level 2,
@@ -1462,16 +1738,16 @@ static const char i_default[] = {'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'};
*
* This is the code underlying uloc_getName and uloc_canonicalize.
*/
-static void
+void
_canonicalize(const char* localeID,
ByteSink& sink,
uint32_t options,
- UErrorCode* err) {
- if (U_FAILURE(*err)) {
+ UErrorCode& err) {
+ if (U_FAILURE(err)) {
return;
}
- int32_t j, fieldCount=0, scriptSize=0, variantSize=0;
+ int32_t j, fieldCount=0;
CharString tempBuffer; // if localeID has a BCP47 extension, tmpLocaleID points to this
CharString localeIDWithHyphens; // if localeID has a BPC47 extension and have _, tmpLocaleID points to this
const char* origLocaleID;
@@ -1484,8 +1760,8 @@ _canonicalize(const char* localeID,
// convert all underbars to hyphens, unless the "BCP47 extension" comes at the beginning of the string
if (uprv_strchr(localeID, '_') != nullptr && localeID[1] != '-' && localeID[1] != '_') {
- localeIDWithHyphens.append(localeID, -1, *err);
- if (U_SUCCESS(*err)) {
+ localeIDWithHyphens.append(localeID, -1, err);
+ if (U_SUCCESS(err)) {
for (char* p = localeIDWithHyphens.data(); *p != '\0'; ++p) {
if (*p == '_') {
*p = '-';
@@ -1495,9 +1771,8 @@ _canonicalize(const char* localeID,
}
}
- CharStringByteSink tempSink(&tempBuffer);
- ulocimp_forLanguageTag(localeIDPtr, -1, tempSink, nullptr, err);
- tmpLocaleID = U_SUCCESS(*err) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeIDPtr;
+ tempBuffer = ulocimp_forLanguageTag(localeIDPtr, -1, nullptr, err);
+ tmpLocaleID = U_SUCCESS(err) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeIDPtr;
} else {
if (localeID==nullptr) {
localeID=uloc_getDefault();
@@ -1508,76 +1783,70 @@ _canonicalize(const char* localeID,
origLocaleID=tmpLocaleID;
/* get all pieces, one after another, and separate with '_' */
- CharString tag = ulocimp_getLanguage(tmpLocaleID, &tmpLocaleID, *err);
+ CharString tag;
+ CharString script;
+ CharString country;
+ CharString variant;
+ ulocimp_getSubtags(
+ tmpLocaleID,
+ &tag,
+ &script,
+ &country,
+ &variant,
+ &tmpLocaleID,
+ err);
+ if (U_FAILURE(err)) {
+ return;
+ }
if (tag.length() == I_DEFAULT_LENGTH &&
uprv_strncmp(origLocaleID, i_default, I_DEFAULT_LENGTH) == 0) {
tag.clear();
- tag.append(uloc_getDefault(), *err);
- } else if(_isIDSeparator(*tmpLocaleID)) {
- const char *scriptID;
-
- ++fieldCount;
- tag.append('_', *err);
-
- CharString script = ulocimp_getScript(tmpLocaleID+1, &scriptID, *err);
- tag.append(script, *err);
- scriptSize = script.length();
- if(scriptSize > 0) {
- /* Found optional script */
- tmpLocaleID = scriptID;
+ tag.append(uloc_getDefault(), err);
+ } else {
+ if (!script.isEmpty()) {
++fieldCount;
- if (_isIDSeparator(*tmpLocaleID)) {
- /* If there is something else, then we add the _ */
- tag.append('_', *err);
- }
+ tag.append('_', err);
+ tag.append(script, err);
}
-
- if (_isIDSeparator(*tmpLocaleID)) {
- const char *cntryID;
-
- CharString country = ulocimp_getCountry(tmpLocaleID+1, &cntryID, *err);
- tag.append(country, *err);
- if (!country.isEmpty()) {
- /* Found optional country */
- tmpLocaleID = cntryID;
- }
- if(_isIDSeparator(*tmpLocaleID)) {
- /* If there is something else, then we add the _ if we found country before. */
- if (!_isIDSeparator(*(tmpLocaleID+1))) {
- ++fieldCount;
- tag.append('_', *err);
- }
-
- variantSize = -tag.length();
- {
- CharStringByteSink s(&tag);
- _getVariant(tmpLocaleID+1, *tmpLocaleID, s, false);
- }
- variantSize += tag.length();
- if (variantSize > 0) {
- tmpLocaleID += variantSize + 1; /* skip '_' and variant */
- }
+ if (!country.isEmpty()) {
+ ++fieldCount;
+ tag.append('_', err);
+ tag.append(country, err);
+ }
+ if (!variant.isEmpty()) {
+ ++fieldCount;
+ if (country.isEmpty()) {
+ tag.append('_', err);
}
+ tag.append('_', err);
+ tag.append(variant, err);
}
}
/* Copy POSIX-style charset specifier, if any [mr.utf8] */
if (!OPTION_SET(options, _ULOC_CANONICALIZE) && *tmpLocaleID == '.') {
- UBool done = false;
- do {
- char c = *tmpLocaleID;
- switch (c) {
- case 0:
- case '@':
- done = true;
- break;
- default:
- tag.append(c, *err);
- ++tmpLocaleID;
- break;
- }
- } while (!done);
+ tag.append('.', err);
+ ++tmpLocaleID;
+ const char *atPos = nullptr;
+ size_t length;
+ if((atPos = uprv_strchr(tmpLocaleID, '@')) != nullptr) {
+ length = atPos - tmpLocaleID;
+ } else {
+ length = uprv_strlen(tmpLocaleID);
+ }
+ // The longest charset name we found in IANA charset registry
+ // https://www.iana.org/assignments/character-sets/ is
+ // "Extended_UNIX_Code_Packed_Format_for_Japanese" in length 45.
+ // we therefore restrict the length here to be 64 which is a power of 2
+ // number that is longer than 45.
+ constexpr size_t kMaxCharsetLength = 64;
+ if (length > kMaxCharsetLength) {
+ err = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
+ return;
+ }
+ tag.append(tmpLocaleID, static_cast<int32_t>(length), err);
+ tmpLocaleID += length;
}
/* Scan ahead to next '@' and determine if it is followed by '=' and/or ';'
@@ -1595,7 +1864,7 @@ _canonicalize(const char* localeID,
if (c == 0) {
break;
}
- tag.append(c, *err);
+ tag.append(c, err);
++tmpLocaleID;
}
}
@@ -1604,22 +1873,16 @@ _canonicalize(const char* localeID,
/* Handle @FOO variant if @ is present and not followed by = */
if (tmpLocaleID!=nullptr && keywordAssign==nullptr) {
/* Add missing '_' if needed */
- if (fieldCount < 2 || (fieldCount < 3 && scriptSize > 0)) {
+ if (fieldCount < 2 || (fieldCount < 3 && !script.isEmpty())) {
do {
- tag.append('_', *err);
+ tag.append('_', err);
++fieldCount;
} while(fieldCount<2);
}
- int32_t posixVariantSize = -tag.length();
- {
- CharStringByteSink s(&tag);
- _getVariant(tmpLocaleID+1, '@', s, (UBool)(variantSize > 0));
- }
- posixVariantSize += tag.length();
- if (posixVariantSize > 0) {
- variantSize += posixVariantSize;
- }
+ CharStringByteSink s(&tag);
+ _getVariant(tmpLocaleID+1, '@', &s, nullptr, !variant.isEmpty(), err);
+ if (U_FAILURE(err)) { return; }
}
/* Look up the ID in the canonicalization map */
@@ -1630,7 +1893,7 @@ _canonicalize(const char* localeID,
break; /* Don't remap "" if keywords present */
}
tag.clear();
- tag.append(CANONICALIZE_MAP[j].canonicalID, *err);
+ tag.append(CANONICALIZE_MAP[j].canonicalID, err);
break;
}
}
@@ -1648,6 +1911,8 @@ _canonicalize(const char* localeID,
}
}
+} // namespace
+
/* ### ID parsing API **************************************************/
U_CAPI int32_t U_EXPORT2
@@ -1656,39 +1921,35 @@ uloc_getParent(const char* localeID,
int32_t parentCapacity,
UErrorCode* err)
{
- if (U_FAILURE(*err)) {
- return 0;
- }
-
- CheckedArrayByteSink sink(parent, parentCapacity);
- ulocimp_getParent(localeID, sink, err);
-
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*err)) {
- return reslen;
- }
-
- if (sink.Overflowed()) {
- *err = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(parent, parentCapacity, reslen, err);
- }
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ parent, parentCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getParent(localeID, sink, status);
+ },
+ *err);
+}
- return reslen;
+U_EXPORT CharString
+ulocimp_getParent(const char* localeID,
+ UErrorCode& err)
+{
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getParent(localeID, sink, status);
+ },
+ err);
}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_getParent(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err)
+ UErrorCode& err)
{
+ if (U_FAILURE(err)) { return; }
+
const char *lastUnderscore;
int32_t i;
- if (U_FAILURE(*err))
- return;
-
if (localeID == nullptr)
localeID = uloc_getDefault();
@@ -1715,16 +1976,19 @@ uloc_getLanguage(const char* localeID,
UErrorCode* err)
{
/* uloc_getLanguage will return a 2 character iso-639 code if one exists. *CWB*/
-
- if (err==nullptr || U_FAILURE(*err)) {
- return 0;
- }
-
- if(localeID==nullptr) {
- localeID=uloc_getDefault();
- }
-
- return ulocimp_getLanguage(localeID, nullptr, *err).extract(language, languageCapacity, *err);
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ language, languageCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ &sink,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ status);
+ },
+ *err);
}
U_CAPI int32_t U_EXPORT2
@@ -1733,24 +1997,19 @@ uloc_getScript(const char* localeID,
int32_t scriptCapacity,
UErrorCode* err)
{
- if(err==nullptr || U_FAILURE(*err)) {
- return 0;
- }
-
- if(localeID==nullptr) {
- localeID=uloc_getDefault();
- }
-
- /* skip the language */
- ulocimp_getLanguage(localeID, &localeID, *err);
- if (U_FAILURE(*err)) {
- return 0;
- }
-
- if(_isIDSeparator(*localeID)) {
- return ulocimp_getScript(localeID+1, nullptr, *err).extract(script, scriptCapacity, *err);
- }
- return u_terminateChars(script, scriptCapacity, 0, err);
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ script, scriptCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ nullptr,
+ &sink,
+ nullptr,
+ nullptr,
+ nullptr,
+ status);
+ },
+ *err);
}
U_CAPI int32_t U_EXPORT2
@@ -1759,36 +2018,19 @@ uloc_getCountry(const char* localeID,
int32_t countryCapacity,
UErrorCode* err)
{
- if(err==nullptr || U_FAILURE(*err)) {
- return 0;
- }
-
- if(localeID==nullptr) {
- localeID=uloc_getDefault();
- }
-
- /* Skip the language */
- ulocimp_getLanguage(localeID, &localeID, *err);
- if (U_FAILURE(*err)) {
- return 0;
- }
-
- if(_isIDSeparator(*localeID)) {
- const char *scriptID;
- /* Skip the script if available */
- ulocimp_getScript(localeID+1, &scriptID, *err);
- if (U_FAILURE(*err)) {
- return 0;
- }
- if(scriptID != localeID+1) {
- /* Found optional script */
- localeID = scriptID;
- }
- if(_isIDSeparator(*localeID)) {
- return ulocimp_getCountry(localeID+1, nullptr, *err).extract(country, countryCapacity, *err);
- }
- }
- return u_terminateChars(country, countryCapacity, 0, err);
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ country, countryCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ nullptr,
+ nullptr,
+ &sink,
+ nullptr,
+ nullptr,
+ status);
+ },
+ *err);
}
U_CAPI int32_t U_EXPORT2
@@ -1797,77 +2039,19 @@ uloc_getVariant(const char* localeID,
int32_t variantCapacity,
UErrorCode* err)
{
- CharString tempBuffer;
- const char* tmpLocaleID;
- int32_t i=0;
-
- if(err==nullptr || U_FAILURE(*err)) {
- return 0;
- }
-
- if (_hasBCP47Extension(localeID)) {
- CharStringByteSink sink(&tempBuffer);
- ulocimp_forLanguageTag(localeID, -1, sink, nullptr, err);
- tmpLocaleID = U_SUCCESS(*err) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeID;
- } else {
- if (localeID==nullptr) {
- localeID=uloc_getDefault();
- }
- tmpLocaleID=localeID;
- }
-
- /* Skip the language */
- ulocimp_getLanguage(tmpLocaleID, &tmpLocaleID, *err);
- if (U_FAILURE(*err)) {
- return 0;
- }
-
- if(_isIDSeparator(*tmpLocaleID)) {
- const char *scriptID;
- /* Skip the script if available */
- ulocimp_getScript(tmpLocaleID+1, &scriptID, *err);
- if (U_FAILURE(*err)) {
- return 0;
- }
- if(scriptID != tmpLocaleID+1) {
- /* Found optional script */
- tmpLocaleID = scriptID;
- }
- /* Skip the Country */
- if (_isIDSeparator(*tmpLocaleID)) {
- const char *cntryID;
- ulocimp_getCountry(tmpLocaleID+1, &cntryID, *err);
- if (U_FAILURE(*err)) {
- return 0;
- }
- if (cntryID != tmpLocaleID+1) {
- /* Found optional country */
- tmpLocaleID = cntryID;
- }
- if(_isIDSeparator(*tmpLocaleID)) {
- /* If there was no country ID, skip a possible extra IDSeparator */
- if (tmpLocaleID != cntryID && _isIDSeparator(tmpLocaleID[1])) {
- tmpLocaleID++;
- }
-
- CheckedArrayByteSink sink(variant, variantCapacity);
- _getVariant(tmpLocaleID+1, *tmpLocaleID, sink, false);
-
- i = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*err)) {
- return i;
- }
-
- if (sink.Overflowed()) {
- *err = U_BUFFER_OVERFLOW_ERROR;
- return i;
- }
- }
- }
- }
-
- return u_terminateChars(variant, variantCapacity, i, err);
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ variant, variantCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ nullptr,
+ nullptr,
+ nullptr,
+ &sink,
+ nullptr,
+ status);
+ },
+ *err);
}
U_CAPI int32_t U_EXPORT2
@@ -1876,32 +2060,29 @@ uloc_getName(const char* localeID,
int32_t nameCapacity,
UErrorCode* err)
{
- if (U_FAILURE(*err)) {
- return 0;
- }
-
- CheckedArrayByteSink sink(name, nameCapacity);
- ulocimp_getName(localeID, sink, err);
-
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*err)) {
- return reslen;
- }
-
- if (sink.Overflowed()) {
- *err = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(name, nameCapacity, reslen, err);
- }
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ name, nameCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getName(localeID, sink, status);
+ },
+ *err);
+}
- return reslen;
+U_EXPORT CharString
+ulocimp_getName(const char* localeID,
+ UErrorCode& err)
+{
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getName(localeID, sink, status);
+ },
+ err);
}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_getName(const char* localeID,
ByteSink& sink,
- UErrorCode* err)
+ UErrorCode& err)
{
_canonicalize(localeID, sink, 0, err);
}
@@ -1912,32 +2093,29 @@ uloc_getBaseName(const char* localeID,
int32_t nameCapacity,
UErrorCode* err)
{
- if (U_FAILURE(*err)) {
- return 0;
- }
-
- CheckedArrayByteSink sink(name, nameCapacity);
- ulocimp_getBaseName(localeID, sink, err);
-
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*err)) {
- return reslen;
- }
-
- if (sink.Overflowed()) {
- *err = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(name, nameCapacity, reslen, err);
- }
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ name, nameCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getBaseName(localeID, sink, status);
+ },
+ *err);
+}
- return reslen;
+U_EXPORT CharString
+ulocimp_getBaseName(const char* localeID,
+ UErrorCode& err)
+{
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_getBaseName(localeID, sink, status);
+ },
+ err);
}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_getBaseName(const char* localeID,
ByteSink& sink,
- UErrorCode* err)
+ UErrorCode& err)
{
_canonicalize(localeID, sink, _ULOC_STRIP_KEYWORDS, err);
}
@@ -1948,32 +2126,29 @@ uloc_canonicalize(const char* localeID,
int32_t nameCapacity,
UErrorCode* err)
{
- if (U_FAILURE(*err)) {
- return 0;
- }
-
- CheckedArrayByteSink sink(name, nameCapacity);
- ulocimp_canonicalize(localeID, sink, err);
-
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*err)) {
- return reslen;
- }
-
- if (sink.Overflowed()) {
- *err = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(name, nameCapacity, reslen, err);
- }
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ name, nameCapacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_canonicalize(localeID, sink, status);
+ },
+ *err);
+}
- return reslen;
+U_EXPORT CharString
+ulocimp_canonicalize(const char* localeID,
+ UErrorCode& err)
+{
+ return ByteSinkUtil::viaByteSinkToCharString(
+ [&](ByteSink& sink, UErrorCode& status) {
+ ulocimp_canonicalize(localeID, sink, status);
+ },
+ err);
}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_canonicalize(const char* localeID,
ByteSink& sink,
- UErrorCode* err)
+ UErrorCode& err)
{
_canonicalize(localeID, sink, _ULOC_CANONICALIZE, err);
}
@@ -1981,49 +2156,39 @@ ulocimp_canonicalize(const char* localeID,
U_CAPI const char* U_EXPORT2
uloc_getISO3Language(const char* localeID)
{
- int16_t offset;
- char lang[ULOC_LANG_CAPACITY];
UErrorCode err = U_ZERO_ERROR;
if (localeID == nullptr)
{
localeID = uloc_getDefault();
}
- uloc_getLanguage(localeID, lang, ULOC_LANG_CAPACITY, &err);
+ CharString lang = ulocimp_getLanguage(localeID, err);
if (U_FAILURE(err))
return "";
- offset = _findIndex(LANGUAGES, lang);
- if (offset < 0)
- return "";
- return LANGUAGES_3[offset];
+ std::optional<int16_t> offset = _findIndex(LANGUAGES, lang.data());
+ return offset.has_value() ? LANGUAGES_3[*offset] : "";
}
U_CAPI const char* U_EXPORT2
uloc_getISO3Country(const char* localeID)
{
- int16_t offset;
- char cntry[ULOC_LANG_CAPACITY];
UErrorCode err = U_ZERO_ERROR;
if (localeID == nullptr)
{
localeID = uloc_getDefault();
}
- uloc_getCountry(localeID, cntry, ULOC_LANG_CAPACITY, &err);
+ CharString cntry = ulocimp_getRegion(localeID, err);
if (U_FAILURE(err))
return "";
- offset = _findIndex(COUNTRIES, cntry);
- if (offset < 0)
- return "";
-
- return COUNTRIES_3[offset];
+ std::optional<int16_t> offset = _findIndex(COUNTRIES, cntry.data());
+ return offset.has_value() ? COUNTRIES_3[*offset] : "";
}
U_CAPI uint32_t U_EXPORT2
uloc_getLCID(const char* localeID)
{
UErrorCode status = U_ZERO_ERROR;
- char langID[ULOC_FULLNAME_CAPACITY];
uint32_t lcid = 0;
/* Check for incomplete id. */
@@ -2042,37 +2207,20 @@ uloc_getLCID(const char* localeID)
return lcid;
}
- uloc_getLanguage(localeID, langID, sizeof(langID), &status);
- if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) {
+ CharString langID = ulocimp_getLanguage(localeID, status);
+ if (U_FAILURE(status)) {
return 0;
}
if (uprv_strchr(localeID, '@')) {
// uprv_convertToLCID does not support keywords other than collation.
// Remove all keywords except collation.
- int32_t len;
- char tmpLocaleID[ULOC_FULLNAME_CAPACITY];
-
- CharString collVal;
- {
- CharStringByteSink sink(&collVal);
- ulocimp_getKeywordValue(localeID, "collation", sink, &status);
- }
-
+ CharString collVal = ulocimp_getKeywordValue(localeID, "collation", status);
if (U_SUCCESS(status) && !collVal.isEmpty()) {
- len = uloc_getBaseName(localeID, tmpLocaleID,
- UPRV_LENGTHOF(tmpLocaleID) - 1, &status);
-
- if (U_SUCCESS(status) && len > 0) {
- tmpLocaleID[len] = 0;
-
- len = uloc_setKeywordValue("collation", collVal.data(), tmpLocaleID,
- UPRV_LENGTHOF(tmpLocaleID) - len - 1, &status);
-
- if (U_SUCCESS(status) && len > 0) {
- tmpLocaleID[len] = 0;
- return uprv_convertToLCID(langID, tmpLocaleID, &status);
- }
+ CharString tmpLocaleID = ulocimp_getBaseName(localeID, status);
+ ulocimp_setKeywordValue("collation", collVal.data(), tmpLocaleID, status);
+ if (U_SUCCESS(status)) {
+ return uprv_convertToLCID(langID.data(), tmpLocaleID.data(), &status);
}
}
@@ -2080,7 +2228,7 @@ uloc_getLCID(const char* localeID)
status = U_ZERO_ERROR;
}
- return uprv_convertToLCID(langID, localeID, &status);
+ return uprv_convertToLCID(langID.data(), localeID, &status);
}
U_CAPI int32_t U_EXPORT2
@@ -2156,7 +2304,9 @@ uloc_toUnicodeLocaleType(const char* keyword, const char* value)
return bcpType;
}
-static UBool
+namespace {
+
+bool
isWellFormedLegacyKey(const char* legacyKey)
{
const char* p = legacyKey;
@@ -2169,7 +2319,7 @@ isWellFormedLegacyKey(const char* legacyKey)
return true;
}
-static UBool
+bool
isWellFormedLegacyType(const char* legacyType)
{
const char* p = legacyType;
@@ -2190,6 +2340,8 @@ isWellFormedLegacyType(const char* legacyType)
return (alphaNumLen != 0);
}
+} // namespace
+
U_CAPI const char* U_EXPORT2
uloc_toLegacyKey(const char* keyword)
{
diff --git a/icu4c/source/common/uloc_keytype.cpp b/icu4c/source/common/uloc_keytype.cpp
index a84b86090..38694d4a1 100644
--- a/icu4c/source/common/uloc_keytype.cpp
+++ b/icu4c/source/common/uloc_keytype.cpp
@@ -74,8 +74,9 @@ uloc_key_type_cleanup() {
U_CDECL_END
+namespace {
-static void U_CALLCONV
+void U_CALLCONV
initFromResourceBundle(UErrorCode& sts) {
U_NAMESPACE_USE
ucln_common_registerCleanup(UCLN_COMMON_LOCALE_KEY_TYPE, uloc_key_type_cleanup);
@@ -141,7 +142,7 @@ initFromResourceBundle(UErrorCode& sts) {
bcpKeyId = bcpKeyIdBuf->data();
}
- UBool isTZ = uprv_strcmp(legacyKeyId, "timezone") == 0;
+ bool isTZ = uprv_strcmp(legacyKeyId, "timezone") == 0;
UHashtable* typeDataMap = uhash_open(uhash_hashIChars, uhash_compareIChars, nullptr, &sts);
if (U_FAILURE(sts)) {
@@ -351,7 +352,7 @@ initFromResourceBundle(UErrorCode& sts) {
}
}
-static UBool
+bool
init() {
UErrorCode sts = U_ZERO_ERROR;
umtx_initOnce(gLocExtKeyMapInitOnce, &initFromResourceBundle, sts);
@@ -361,7 +362,7 @@ init() {
return true;
}
-static UBool
+bool
isSpecialTypeCodepoints(const char* val) {
int32_t subtagLen = 0;
const char* p = val;
@@ -383,7 +384,7 @@ isSpecialTypeCodepoints(const char* val) {
return (subtagLen >= 4 && subtagLen <= 6);
}
-static UBool
+bool
isSpecialTypeReorderCode(const char* val) {
int32_t subtagLen = 0;
const char* p = val;
@@ -403,7 +404,7 @@ isSpecialTypeReorderCode(const char* val) {
return (subtagLen >=3 && subtagLen <=8);
}
-static UBool
+bool
isSpecialTypeRgKeyValue(const char* val) {
int32_t subtagLen = 0;
const char* p = val;
@@ -419,7 +420,9 @@ isSpecialTypeRgKeyValue(const char* val) {
return (subtagLen == 6);
}
-U_CFUNC const char*
+} // namespace
+
+U_EXPORT const char*
ulocimp_toBcpKey(const char* key) {
if (!init()) {
return nullptr;
@@ -432,7 +435,7 @@ ulocimp_toBcpKey(const char* key) {
return nullptr;
}
-U_CFUNC const char*
+U_EXPORT const char*
ulocimp_toLegacyKey(const char* key) {
if (!init()) {
return nullptr;
@@ -445,8 +448,8 @@ ulocimp_toLegacyKey(const char* key) {
return nullptr;
}
-U_CFUNC const char*
-ulocimp_toBcpType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType) {
+U_EXPORT const char*
+ulocimp_toBcpType(const char* key, const char* type, bool* isKnownKey, bool* isSpecialType) {
if (isKnownKey != nullptr) {
*isKnownKey = false;
}
@@ -468,7 +471,7 @@ ulocimp_toBcpType(const char* key, const char* type, UBool* isKnownKey, UBool* i
return t->bcpId;
}
if (keyData->specialTypes != SPECIALTYPE_NONE) {
- UBool matched = false;
+ bool matched = false;
if (keyData->specialTypes & SPECIALTYPE_CODEPOINTS) {
matched = isSpecialTypeCodepoints(type);
}
@@ -490,8 +493,8 @@ ulocimp_toBcpType(const char* key, const char* type, UBool* isKnownKey, UBool* i
}
-U_CFUNC const char*
-ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType) {
+U_EXPORT const char*
+ulocimp_toLegacyType(const char* key, const char* type, bool* isKnownKey, bool* isSpecialType) {
if (isKnownKey != nullptr) {
*isKnownKey = false;
}
@@ -513,7 +516,7 @@ ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool
return t->legacyId;
}
if (keyData->specialTypes != SPECIALTYPE_NONE) {
- UBool matched = false;
+ bool matched = false;
if (keyData->specialTypes & SPECIALTYPE_CODEPOINTS) {
matched = isSpecialTypeCodepoints(type);
}
@@ -533,4 +536,3 @@ ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool
}
return nullptr;
}
-
diff --git a/icu4c/source/common/uloc_tag.cpp b/icu4c/source/common/uloc_tag.cpp
index fe3261c75..f5ab0c36a 100644
--- a/icu4c/source/common/uloc_tag.cpp
+++ b/icu4c/source/common/uloc_tag.cpp
@@ -7,6 +7,8 @@
**********************************************************************
*/
+#include <utility>
+
#include "unicode/bytestream.h"
#include "unicode/utypes.h"
#include "unicode/ures.h"
@@ -14,7 +16,6 @@
#include "unicode/putil.h"
#include "unicode/uenum.h"
#include "unicode/uloc.h"
-#include "ustr_imp.h"
#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
@@ -24,9 +25,10 @@
#include "ulocimp.h"
#include "uassert.h"
+namespace {
/* struct holding a single variant */
-typedef struct VariantListEntry {
+typedef struct VariantListEntry : public icu::UMemory {
const char *variant;
struct VariantListEntry *next;
} VariantListEntry;
@@ -67,18 +69,18 @@ typedef struct ULanguageTag {
#define LOCALE_KEYWORD_SEP ';'
#define LOCALE_KEY_TYPE_SEP '='
-#define ISALPHA(c) uprv_isASCIILetter(c)
-#define ISNUMERIC(c) ((c)>='0' && (c)<='9')
+constexpr auto ISALPHA = uprv_isASCIILetter;
+inline bool ISNUMERIC(char c) { return c >= '0' && c <= '9'; }
-static const char EMPTY[] = "";
-static const char LANG_UND[] = "und";
-static const char PRIVATEUSE_KEY[] = "x";
-static const char _POSIX[] = "_POSIX";
-static const char POSIX_KEY[] = "va";
-static const char POSIX_VALUE[] = "posix";
-static const char LOCALE_ATTRIBUTE_KEY[] = "attribute";
-static const char PRIVUSE_VARIANT_PREFIX[] = "lvariant";
-static const char LOCALE_TYPE_YES[] = "yes";
+constexpr char EMPTY[] = "";
+constexpr char LANG_UND[] = "und";
+constexpr char PRIVATEUSE_KEY[] = "x";
+constexpr char _POSIX[] = "_POSIX";
+constexpr char POSIX_KEY[] = "va";
+constexpr char POSIX_VALUE[] = "posix";
+constexpr char LOCALE_ATTRIBUTE_KEY[] = "attribute";
+constexpr char PRIVUSE_VARIANT_PREFIX[] = "lvariant";
+constexpr char LOCALE_TYPE_YES[] = "yes";
#define LANG_UND_LEN 3
@@ -102,7 +104,7 @@ static const char LOCALE_TYPE_YES[] = "yes";
values. They may have to be removed for the strict BCP 47 compliance.
*/
-static const char* const LEGACY[] = {
+constexpr const char* LEGACY[] = {
/* legacy preferred */
"art-lojban", "jbo",
"en-gb-oed", "en-gb-oxendict",
@@ -151,7 +153,7 @@ static const char* const LEGACY[] = {
a variant tag 'hepburn-heploc' has the preferred subtag, 'alaic97'.
*/
-static const char* const REDUNDANT[] = {
+constexpr const char* REDUNDANT[] = {
// redundant preferred
"sgn-br", "bzs",
"sgn-co", "csn",
@@ -193,7 +195,7 @@ static const char* const REDUNDANT[] = {
Make sure that 2-letter language subtags come before 3-letter subtags.
*/
-static const char DEPRECATEDLANGS[][4] = {
+constexpr char DEPRECATEDLANGS[][4] = {
/* deprecated new */
"in", "id",
"iw", "he",
@@ -283,7 +285,7 @@ static const char DEPRECATEDLANGS[][4] = {
grep -B1 'Preferred' | \
awk -n '/Subtag/ {printf(" \"%s\", ", $2);} /Preferred/ {printf("\"%s\",\n", $2);}'
*/
-static const char DEPRECATEDREGIONS[][3] = {
+constexpr char DEPRECATEDREGIONS[][3] = {
/* deprecated new */
"BU", "MM",
"DD", "DE",
@@ -301,55 +303,57 @@ static const char DEPRECATEDREGIONS[][3] = {
* -------------------------------------------------
*/
-static ULanguageTag*
-ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status);
+ULanguageTag*
+ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode& status);
-static void
+void
ultag_close(ULanguageTag* langtag);
-static const char*
+const char*
ultag_getLanguage(const ULanguageTag* langtag);
#if 0
-static const char*
+const char*
ultag_getJDKLanguage(const ULanguageTag* langtag);
#endif
-static const char*
+const char*
ultag_getExtlang(const ULanguageTag* langtag, int32_t idx);
-static int32_t
+int32_t
ultag_getExtlangSize(const ULanguageTag* langtag);
-static const char*
+const char*
ultag_getScript(const ULanguageTag* langtag);
-static const char*
+const char*
ultag_getRegion(const ULanguageTag* langtag);
-static const char*
+const char*
ultag_getVariant(const ULanguageTag* langtag, int32_t idx);
-static int32_t
+int32_t
ultag_getVariantsSize(const ULanguageTag* langtag);
-static const char*
+const char*
ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx);
-static const char*
+const char*
ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx);
-static int32_t
+int32_t
ultag_getExtensionsSize(const ULanguageTag* langtag);
-static const char*
+const char*
ultag_getPrivateUse(const ULanguageTag* langtag);
#if 0
-static const char*
+const char*
ultag_getLegacy(const ULanguageTag* langtag);
#endif
+} // namespace
+
U_NAMESPACE_BEGIN
/**
@@ -373,7 +377,9 @@ U_NAMESPACE_END
* -------------------------------------------------
*/
-static UBool
+namespace {
+
+bool
_isAlphaString(const char* s, int32_t len) {
int32_t i;
for (i = 0; i < len; i++) {
@@ -384,7 +390,7 @@ _isAlphaString(const char* s, int32_t len) {
return true;
}
-static UBool
+bool
_isNumericString(const char* s, int32_t len) {
int32_t i;
for (i = 0; i < len; i++) {
@@ -395,7 +401,7 @@ _isNumericString(const char* s, int32_t len) {
return true;
}
-static UBool
+bool
_isAlphaNumericString(const char* s, int32_t len) {
int32_t i;
for (i = 0; i < len; i++) {
@@ -406,7 +412,7 @@ _isAlphaNumericString(const char* s, int32_t len) {
return true;
}
-static UBool
+bool
_isAlphaNumericStringLimitedLength(const char* s, int32_t len, int32_t min, int32_t max) {
if (len < 0) {
len = (int32_t)uprv_strlen(s);
@@ -417,7 +423,9 @@ _isAlphaNumericStringLimitedLength(const char* s, int32_t len, int32_t min, int3
return false;
}
-U_CFUNC UBool
+} // namespace
+
+bool
ultag_isLanguageSubtag(const char* s, int32_t len) {
/*
* unicode_language_subtag = alpha{2,3} | alpha{5,8};
@@ -433,7 +441,9 @@ ultag_isLanguageSubtag(const char* s, int32_t len) {
return false;
}
-static UBool
+namespace {
+
+bool
_isExtlangSubtag(const char* s, int32_t len) {
/*
* extlang = 3ALPHA ; selected ISO 639 codes
@@ -448,7 +458,9 @@ _isExtlangSubtag(const char* s, int32_t len) {
return false;
}
-U_CFUNC UBool
+} // namespace
+
+bool
ultag_isScriptSubtag(const char* s, int32_t len) {
/*
* script = 4ALPHA ; ISO 15924 code
@@ -462,7 +474,7 @@ ultag_isScriptSubtag(const char* s, int32_t len) {
return false;
}
-U_CFUNC UBool
+bool
ultag_isRegionSubtag(const char* s, int32_t len) {
/*
* region = 2ALPHA ; ISO 3166-1 code
@@ -480,7 +492,9 @@ ultag_isRegionSubtag(const char* s, int32_t len) {
return false;
}
-static UBool
+namespace {
+
+bool
_isVariantSubtag(const char* s, int32_t len) {
/*
* variant = 5*8alphanum ; registered variants
@@ -498,8 +512,8 @@ _isVariantSubtag(const char* s, int32_t len) {
return false;
}
-static UBool
-_isSepListOf(UBool (*test)(const char*, int32_t), const char* s, int32_t len) {
+bool
+_isSepListOf(bool (*test)(const char*, int32_t), const char* s, int32_t len) {
const char *p = s;
const char *pSubtag = nullptr;
@@ -527,13 +541,17 @@ _isSepListOf(UBool (*test)(const char*, int32_t), const char* s, int32_t len) {
return test(pSubtag, (int32_t)(p - pSubtag));
}
-U_CFUNC UBool
+} // namespace
+
+bool
ultag_isVariantSubtags(const char* s, int32_t len) {
return _isSepListOf(&_isVariantSubtag, s, len);
}
+namespace {
+
// This is for the ICU-specific "lvariant" handling.
-static UBool
+bool
_isPrivateuseVariantSubtag(const char* s, int32_t len) {
/*
* variant = 1*8alphanum ; registered variants
@@ -542,7 +560,7 @@ _isPrivateuseVariantSubtag(const char* s, int32_t len) {
return _isAlphaNumericStringLimitedLength(s, len , 1, 8);
}
-static UBool
+bool
_isExtensionSingleton(const char* s, int32_t len) {
/*
* extension = singleton 1*("-" (2*8alphanum))
@@ -562,7 +580,7 @@ _isExtensionSingleton(const char* s, int32_t len) {
return false;
}
-static UBool
+bool
_isExtensionSubtag(const char* s, int32_t len) {
/*
* extension = singleton 1*("-" (2*8alphanum))
@@ -570,12 +588,16 @@ _isExtensionSubtag(const char* s, int32_t len) {
return _isAlphaNumericStringLimitedLength(s, len, 2, 8);
}
-U_CFUNC UBool
+} // namespace
+
+bool
ultag_isExtensionSubtags(const char* s, int32_t len) {
return _isSepListOf(&_isExtensionSubtag, s, len);
}
-static UBool
+namespace {
+
+bool
_isPrivateuseValueSubtag(const char* s, int32_t len) {
/*
* privateuse = "x" 1*("-" (1*8alphanum))
@@ -583,12 +605,14 @@ _isPrivateuseValueSubtag(const char* s, int32_t len) {
return _isAlphaNumericStringLimitedLength(s, len, 1, 8);
}
-U_CFUNC UBool
+} // namespace
+
+bool
ultag_isPrivateuseValueSubtags(const char* s, int32_t len) {
return _isSepListOf(&_isPrivateuseValueSubtag, s, len);
}
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleAttribute(const char* s, int32_t len) {
/*
* attribute = alphanum{3,8} ;
@@ -596,12 +620,12 @@ ultag_isUnicodeLocaleAttribute(const char* s, int32_t len) {
return _isAlphaNumericStringLimitedLength(s, len , 3, 8);
}
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleAttributes(const char* s, int32_t len) {
return _isSepListOf(&ultag_isUnicodeLocaleAttribute, s, len);
}
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleKey(const char* s, int32_t len) {
/*
* key = alphanum alpha ;
@@ -615,7 +639,7 @@ ultag_isUnicodeLocaleKey(const char* s, int32_t len) {
return false;
}
-U_CFUNC UBool
+bool
_isUnicodeLocaleTypeSubtag(const char*s, int32_t len) {
/*
* alphanum{3,8}
@@ -623,7 +647,7 @@ _isUnicodeLocaleTypeSubtag(const char*s, int32_t len) {
return _isAlphaNumericStringLimitedLength(s, len , 3, 8);
}
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleType(const char*s, int32_t len) {
/*
* type = alphanum{3,8} (sep alphanum{3,8})* ;
@@ -631,7 +655,9 @@ ultag_isUnicodeLocaleType(const char*s, int32_t len) {
return _isSepListOf(&_isUnicodeLocaleTypeSubtag, s, len);
}
-static UBool
+namespace {
+
+bool
_isTKey(const char* s, int32_t len)
{
/*
@@ -646,7 +672,9 @@ _isTKey(const char* s, int32_t len)
return false;
}
-U_CAPI const char * U_EXPORT2
+} // namespace
+
+const char*
ultag_getTKeyStart(const char *localeID) {
const char *result = localeID;
const char *sep;
@@ -662,7 +690,9 @@ ultag_getTKeyStart(const char *localeID) {
return nullptr;
}
-static UBool
+namespace {
+
+bool
_isTValue(const char* s, int32_t len)
{
/*
@@ -671,7 +701,7 @@ _isTValue(const char* s, int32_t len)
return _isAlphaNumericStringLimitedLength(s, len , 3, 8);
}
-static UBool
+bool
_isTransformedExtensionSubtag(int32_t& state, const char* s, int32_t len)
{
const int32_t kStart = 0; // Start, wait for unicode_language_subtag, tkey or end
@@ -744,7 +774,7 @@ _isTransformedExtensionSubtag(int32_t& state, const char* s, int32_t len)
return false;
}
-static UBool
+bool
_isUnicodeExtensionSubtag(int32_t& state, const char* s, int32_t len)
{
const int32_t kStart = 0; // Start, wait for a key or attribute or end
@@ -783,8 +813,8 @@ _isUnicodeExtensionSubtag(int32_t& state, const char* s, int32_t len)
return false;
}
-static UBool
-_isStatefulSepListOf(UBool (*test)(int32_t&, const char*, int32_t), const char* s, int32_t len)
+bool
+_isStatefulSepListOf(bool (*test)(int32_t&, const char*, int32_t), const char* s, int32_t len)
{
int32_t state = 0;
const char* p;
@@ -813,17 +843,20 @@ _isStatefulSepListOf(UBool (*test)(int32_t&, const char*, int32_t), const char*
return false;
}
-U_CFUNC UBool
+} // namespace
+
+bool
ultag_isTransformedExtensionSubtags(const char* s, int32_t len)
{
return _isStatefulSepListOf(&_isTransformedExtensionSubtag, s, len);
}
-U_CFUNC UBool
+bool
ultag_isUnicodeExtensionSubtags(const char* s, int32_t len) {
return _isStatefulSepListOf(&_isUnicodeExtensionSubtag, s, len);
}
+namespace {
/*
* -------------------------------------------------
@@ -833,13 +866,11 @@ ultag_isUnicodeExtensionSubtags(const char* s, int32_t len) {
* -------------------------------------------------
*/
-static UBool
-_addVariantToList(VariantListEntry **first, VariantListEntry *var) {
- UBool bAdded = true;
-
+bool
+_addVariantToList(VariantListEntry **first, icu::LocalPointer<VariantListEntry> var) {
if (*first == nullptr) {
var->next = nullptr;
- *first = var;
+ *first = var.orphan();
} else {
VariantListEntry *prev, *cur;
int32_t cmp;
@@ -849,8 +880,8 @@ _addVariantToList(VariantListEntry **first, VariantListEntry *var) {
cur = *first;
while (true) {
if (cur == nullptr) {
- prev->next = var;
var->next = nullptr;
+ prev->next = var.orphan();
break;
}
@@ -858,20 +889,19 @@ _addVariantToList(VariantListEntry **first, VariantListEntry *var) {
cmp = uprv_compareInvCharsAsAscii(var->variant, cur->variant);
if (cmp == 0) {
/* duplicated variant */
- bAdded = false;
- break;
+ return false;
}
prev = cur;
cur = cur->next;
}
}
- return bAdded;
+ return true;
}
-static UBool
+bool
_addAttributeToList(AttributeListEntry **first, AttributeListEntry *attr) {
- UBool bAdded = true;
+ bool bAdded = true;
if (*first == nullptr) {
attr->next = nullptr;
@@ -912,10 +942,9 @@ _addAttributeToList(AttributeListEntry **first, AttributeListEntry *attr) {
return bAdded;
}
-
-static UBool
-_addExtensionToList(ExtensionListEntry **first, ExtensionListEntry *ext, UBool localeToBCP) {
- UBool bAdded = true;
+bool
+_addExtensionToList(ExtensionListEntry **first, ExtensionListEntry *ext, bool localeToBCP) {
+ bool bAdded = true;
if (*first == nullptr) {
ext->next = nullptr;
@@ -990,7 +1019,7 @@ _addExtensionToList(ExtensionListEntry **first, ExtensionListEntry *ext, UBool l
return bAdded;
}
-static void
+void
_initializeULanguageTag(ULanguageTag* langtag) {
int32_t i;
@@ -1011,127 +1040,120 @@ _initializeULanguageTag(ULanguageTag* langtag) {
langtag->privateuse = EMPTY;
}
-static void
-_appendLanguageToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool strict, UErrorCode* status) {
- char buf[ULOC_LANG_CAPACITY];
+void
+_appendLanguageToLanguageTag(const char* localeID, icu::ByteSink& sink, bool strict, UErrorCode& status) {
UErrorCode tmpStatus = U_ZERO_ERROR;
- int32_t len, i;
- if (U_FAILURE(*status)) {
+ if (U_FAILURE(status)) {
return;
}
- len = uloc_getLanguage(localeID, buf, sizeof(buf), &tmpStatus);
- if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+ icu::CharString buf = ulocimp_getLanguage(localeID, tmpStatus);
+ if (U_FAILURE(tmpStatus)) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- len = 0;
}
/* Note: returned language code is in lower case letters */
- if (len == 0) {
+ if (buf.isEmpty()) {
sink.Append(LANG_UND, LANG_UND_LEN);
- } else if (!ultag_isLanguageSubtag(buf, len)) {
+ } else if (!ultag_isLanguageSubtag(buf.data(), buf.length())) {
/* invalid language code */
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
sink.Append(LANG_UND, LANG_UND_LEN);
} else {
/* resolve deprecated */
- for (i = 0; i < UPRV_LENGTHOF(DEPRECATEDLANGS); i += 2) {
+ for (int32_t i = 0; i < UPRV_LENGTHOF(DEPRECATEDLANGS); i += 2) {
// 2-letter deprecated subtags are listede before 3-letter
// ones in DEPRECATEDLANGS[]. Get out of loop on coming
// across the 1st 3-letter subtag, if the input is a 2-letter code.
// to avoid continuing to try when there's no match.
- if (uprv_strlen(buf) < uprv_strlen(DEPRECATEDLANGS[i])) break;
- if (uprv_compareInvCharsAsAscii(buf, DEPRECATEDLANGS[i]) == 0) {
- uprv_strcpy(buf, DEPRECATEDLANGS[i + 1]);
- len = (int32_t)uprv_strlen(buf);
- break;
+ if (buf.length() < (int32_t)uprv_strlen(DEPRECATEDLANGS[i])) break;
+ if (uprv_compareInvCharsAsAscii(buf.data(), DEPRECATEDLANGS[i]) == 0) {
+ const char* const resolved = DEPRECATEDLANGS[i + 1];
+ sink.Append(resolved, (int32_t)uprv_strlen(resolved));
+ return;
}
}
- sink.Append(buf, len);
+ sink.Append(buf.data(), buf.length());
}
}
-static void
-_appendScriptToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool strict, UErrorCode* status) {
- char buf[ULOC_SCRIPT_CAPACITY];
+void
+_appendScriptToLanguageTag(const char* localeID, icu::ByteSink& sink, bool strict, UErrorCode& status) {
UErrorCode tmpStatus = U_ZERO_ERROR;
- int32_t len;
- if (U_FAILURE(*status)) {
+ if (U_FAILURE(status)) {
return;
}
- len = uloc_getScript(localeID, buf, sizeof(buf), &tmpStatus);
- if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+ icu::CharString buf = ulocimp_getScript(localeID, tmpStatus);
+ if (U_FAILURE(tmpStatus)) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
}
return;
}
- if (len > 0) {
- if (!ultag_isScriptSubtag(buf, len)) {
+ if (!buf.isEmpty()) {
+ if (!ultag_isScriptSubtag(buf.data(), buf.length())) {
/* invalid script code */
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
}
return;
} else {
sink.Append("-", 1);
- sink.Append(buf, len);
+ sink.Append(buf.data(), buf.length());
}
}
}
-static void
-_appendRegionToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool strict, UErrorCode* status) {
- char buf[ULOC_COUNTRY_CAPACITY];
+void
+_appendRegionToLanguageTag(const char* localeID, icu::ByteSink& sink, bool strict, UErrorCode& status) {
UErrorCode tmpStatus = U_ZERO_ERROR;
- int32_t len;
- if (U_FAILURE(*status)) {
+ if (U_FAILURE(status)) {
return;
}
- len = uloc_getCountry(localeID, buf, sizeof(buf), &tmpStatus);
- if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+ icu::CharString buf = ulocimp_getRegion(localeID, tmpStatus);
+ if (U_FAILURE(tmpStatus)) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
}
return;
}
- if (len > 0) {
- if (!ultag_isRegionSubtag(buf, len)) {
+ if (!buf.isEmpty()) {
+ if (!ultag_isRegionSubtag(buf.data(), buf.length())) {
/* invalid region code */
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
}
return;
} else {
sink.Append("-", 1);
/* resolve deprecated */
- for (int i = 0; i < UPRV_LENGTHOF(DEPRECATEDREGIONS); i += 2) {
- if (uprv_compareInvCharsAsAscii(buf, DEPRECATEDREGIONS[i]) == 0) {
- uprv_strcpy(buf, DEPRECATEDREGIONS[i + 1]);
- len = (int32_t)uprv_strlen(buf);
- break;
+ for (int32_t i = 0; i < UPRV_LENGTHOF(DEPRECATEDREGIONS); i += 2) {
+ if (uprv_compareInvCharsAsAscii(buf.data(), DEPRECATEDREGIONS[i]) == 0) {
+ const char* const resolved = DEPRECATEDREGIONS[i + 1];
+ sink.Append(resolved, (int32_t)uprv_strlen(resolved));
+ return;
}
}
- sink.Append(buf, len);
+ sink.Append(buf.data(), buf.length());
}
}
}
-static void _sortVariants(VariantListEntry* first) {
+void _sortVariants(VariantListEntry* first) {
for (VariantListEntry* var1 = first; var1 != nullptr; var1 = var1->next) {
for (VariantListEntry* var2 = var1->next; var2 != nullptr; var2 = var2->next) {
// Swap var1->variant and var2->variant.
@@ -1144,32 +1166,26 @@ static void _sortVariants(VariantListEntry* first) {
}
}
-static void
-_appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool strict, UBool *hadPosix, UErrorCode* status) {
- char buf[ULOC_FULLNAME_CAPACITY];
- UErrorCode tmpStatus = U_ZERO_ERROR;
- int32_t len, i;
-
- if (U_FAILURE(*status)) {
- return;
- }
+void
+_appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, bool strict, bool& hadPosix, UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
- len = uloc_getVariant(localeID, buf, sizeof(buf), &tmpStatus);
+ UErrorCode tmpStatus = U_ZERO_ERROR;
+ icu::CharString buf = ulocimp_getVariant(localeID, tmpStatus);
if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
}
return;
}
- if (len > 0) {
+ if (!buf.isEmpty()) {
char *p, *pVar;
- UBool bNext = true;
- VariantListEntry *var;
+ bool bNext = true;
VariantListEntry *varFirst = nullptr;
pVar = nullptr;
- p = buf;
+ p = buf.data();
while (bNext) {
if (*p == SEP || *p == LOCALE_SEP || *p == 0) {
if (*p == 0) {
@@ -1179,42 +1195,40 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
}
if (pVar == nullptr) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
/* ignore empty variant */
} else {
/* ICU uses upper case letters for variants, but
the canonical format is lowercase in BCP47 */
- for (i = 0; *(pVar + i) != 0; i++) {
+ for (int32_t i = 0; *(pVar + i) != 0; i++) {
*(pVar + i) = uprv_tolower(*(pVar + i));
}
/* validate */
if (_isVariantSubtag(pVar, -1)) {
- if (uprv_strcmp(pVar,POSIX_VALUE) || len != (int32_t)uprv_strlen(POSIX_VALUE)) {
+ if (uprv_strcmp(pVar,POSIX_VALUE) || buf.length() != (int32_t)uprv_strlen(POSIX_VALUE)) {
/* emit the variant to the list */
- var = (VariantListEntry*)uprv_malloc(sizeof(VariantListEntry));
- if (var == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ icu::LocalPointer<VariantListEntry> var(new VariantListEntry, status);
+ if (U_FAILURE(status)) {
break;
}
var->variant = pVar;
- if (!_addVariantToList(&varFirst, var)) {
+ if (!_addVariantToList(&varFirst, std::move(var))) {
/* duplicated variant */
- uprv_free(var);
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
}
} else {
/* Special handling for POSIX variant, need to remember that we had it and then */
/* treat it like an extension later. */
- *hadPosix = true;
+ hadPosix = true;
}
} else if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
} else if (_isPrivateuseValueSubtag(pVar, -1)) {
/* Handle private use subtags separately */
@@ -1229,7 +1243,7 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
p++;
}
- if (U_SUCCESS(*status)) {
+ if (U_SUCCESS(status)) {
if (varFirst != nullptr) {
int32_t varLen;
@@ -1237,7 +1251,7 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
_sortVariants(varFirst);
/* write out validated/normalized variants to the target */
- var = varFirst;
+ VariantListEntry* var = varFirst;
while (var != nullptr) {
sink.Append("-", 1);
varLen = (int32_t)uprv_strlen(var->variant);
@@ -1248,30 +1262,28 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
}
/* clean up */
- var = varFirst;
- while (var != nullptr) {
+ for (VariantListEntry* var = varFirst; var != nullptr; ) {
VariantListEntry *tmpVar = var->next;
- uprv_free(var);
+ delete var;
var = tmpVar;
}
- if (U_FAILURE(*status)) {
+ if (U_FAILURE(status)) {
return;
}
}
}
-static void
-_appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool strict, UBool hadPosix, UErrorCode* status) {
- char attrBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY] = { 0 };
- int32_t attrBufLength = 0;
+void
+_appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, bool strict, bool hadPosix, UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
icu::MemoryPool<AttributeListEntry> attrPool;
icu::MemoryPool<ExtensionListEntry> extPool;
icu::MemoryPool<icu::CharString> strPool;
- icu::LocalUEnumerationPointer keywordEnum(uloc_openKeywords(localeID, status));
- if (U_FAILURE(*status) && !hadPosix) {
+ icu::LocalUEnumerationPointer keywordEnum(uloc_openKeywords(localeID, &status));
+ if (U_FAILURE(status) && !hadPosix) {
return;
}
if (keywordEnum.isValid() || hadPosix) {
@@ -1286,28 +1298,24 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
const char *bcpKey=nullptr, *bcpValue=nullptr;
UErrorCode tmpStatus = U_ZERO_ERROR;
int32_t keylen;
- UBool isBcpUExt;
+ bool isBcpUExt;
while (true) {
- key = uenum_next(keywordEnum.getAlias(), nullptr, status);
+ key = uenum_next(keywordEnum.getAlias(), nullptr, &status);
if (key == nullptr) {
break;
}
- icu::CharString buf;
- {
- icu::CharStringByteSink sink(&buf);
- ulocimp_getKeywordValue(localeID, key, sink, &tmpStatus);
- }
+ icu::CharString buf = ulocimp_getKeywordValue(localeID, key, tmpStatus);
len = buf.length();
if (U_FAILURE(tmpStatus)) {
if (tmpStatus == U_MEMORY_ALLOCATION_ERROR) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
break;
}
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
/* ignore this keyword */
@@ -1323,51 +1331,40 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
if (len > 0) {
int32_t i = 0;
while (true) {
- attrBufLength = 0;
+ icu::CharString attrBuf;
for (; i < len; i++) {
if (buf[i] != '-') {
- if (static_cast<size_t>(attrBufLength) < sizeof(attrBuf)) {
- attrBuf[attrBufLength++] = buf[i];
- } else {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
- return;
- }
+ attrBuf.append(buf[i], status);
} else {
i++;
break;
}
}
- if (attrBufLength > 0) {
- if (static_cast<size_t>(attrBufLength) < sizeof(attrBuf)) {
- attrBuf[attrBufLength] = 0;
- } else {
- *status = U_STRING_NOT_TERMINATED_WARNING;
- }
-
- } else if (i >= len){
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (attrBuf.isEmpty() && i >= len) {
break;
}
/* create AttributeListEntry */
attr = attrPool.create();
if (attr == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
- break;
- }
- icu::CharString* attrValue =
- strPool.create(attrBuf, attrBufLength, *status);
- if (attrValue == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
break;
}
- if (U_FAILURE(*status)) {
+ if (icu::CharString* str =
+ strPool.create(std::move(attrBuf), status)) {
+ if (U_FAILURE(status)) { break; }
+ attr->attribute = str->data();
+ } else {
+ status = U_MEMORY_ALLOCATION_ERROR;
break;
}
- attr->attribute = attrValue->data();
if (!_addAttributeToList(&firstAttr, attr)) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
}
@@ -1380,7 +1377,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
bcpKey = uloc_toUnicodeLocaleKey(key);
if (bcpKey == nullptr) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
continue;
@@ -1390,7 +1387,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
bcpValue = uloc_toUnicodeLocaleType(key, buf.data());
if (bcpValue == nullptr) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
continue;
@@ -1405,11 +1402,11 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
icu::CharString* extBuf = extBufPool.create(buf, tmpStatus);
if (extBuf == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
break;
}
if (U_FAILURE(tmpStatus)) {
- *status = tmpStatus;
+ status = tmpStatus;
break;
}
@@ -1420,7 +1417,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
if (*key == PRIVATEUSE) {
if (!ultag_isPrivateuseValueSubtags(buf.data(), len)) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
continue;
@@ -1428,7 +1425,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
} else {
if (!_isExtensionSingleton(key, keylen) || !ultag_isExtensionSubtags(buf.data(), len)) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
continue;
@@ -1438,11 +1435,11 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
icu::CharString* extBuf =
extBufPool.create(buf.data(), len, tmpStatus);
if (extBuf == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
break;
}
if (U_FAILURE(tmpStatus)) {
- *status = tmpStatus;
+ status = tmpStatus;
break;
}
bcpValue = extBuf->data();
@@ -1451,7 +1448,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
/* create ExtensionListEntry */
ext = extPool.create();
if (ext == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
break;
}
ext->key = bcpKey;
@@ -1459,7 +1456,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
if (!_addExtensionToList(&firstExt, ext, true)) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
}
@@ -1470,7 +1467,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
/* create ExtensionListEntry for POSIX */
ext = extPool.create();
if (ext == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return;
}
ext->key = POSIX_KEY;
@@ -1481,8 +1478,8 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
}
}
- if (U_SUCCESS(*status) && (firstExt != nullptr || firstAttr != nullptr)) {
- UBool startLDMLExtension = false;
+ if (U_SUCCESS(status) && (firstExt != nullptr || firstAttr != nullptr)) {
+ bool startLDMLExtension = false;
for (ext = firstExt; ext; ext = ext->next) {
if (!startLDMLExtension && uprv_strlen(ext->key) > 1) {
/* first LDML u singlton extension */
@@ -1517,11 +1514,13 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
* e.g. "u-ca-gregory-co-trad" -> {calendar = gregorian} {collation = traditional}
* Note: char* buf is used for storing keywords
*/
-static void
-_appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendTo, icu::MemoryPool<ExtensionListEntry>& extPool, icu::MemoryPool<icu::CharString>& kwdBuf, UBool *posixVariant, UErrorCode *status) {
+void
+_appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendTo, icu::MemoryPool<ExtensionListEntry>& extPool, icu::MemoryPool<icu::CharString>& kwdBuf, bool& posixVariant, UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
+
const char *pTag; /* beginning of current subtag */
const char *pKwds; /* beginning of key-type pairs */
- UBool variantExists = *posixVariant;
+ bool variantExists = posixVariant;
ExtensionListEntry *kwdFirst = nullptr; /* first LDML keyword */
ExtensionListEntry *kwd, *nextKwd;
@@ -1529,7 +1528,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
int32_t len;
/* Reset the posixVariant value */
- *posixVariant = false;
+ posixVariant = false;
pTag = ldmlext;
pKwds = nullptr;
@@ -1538,9 +1537,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
AttributeListEntry *attrFirst = nullptr; /* first attribute */
AttributeListEntry *attr, *nextAttr;
- char attrBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
- int32_t attrBufIdx = 0;
-
+ icu::MemoryPool<icu::CharString> strPool;
icu::MemoryPool<AttributeListEntry> attrPool;
/* Iterate through u extension attributes */
@@ -1556,17 +1553,15 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
/* add this attribute to the list */
attr = attrPool.create();
if (attr == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- if (len < (int32_t)sizeof(attrBuf) - attrBufIdx) {
- uprv_memcpy(&attrBuf[attrBufIdx], pTag, len);
- attrBuf[attrBufIdx + len] = 0;
- attr->attribute = &attrBuf[attrBufIdx];
- attrBufIdx += (len + 1);
+ if (icu::CharString* str = strPool.create(pTag, len, status)) {
+ if (U_FAILURE(status)) { return; }
+ attr->attribute = str->data();
} else {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1586,13 +1581,13 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
kwd = extPool.create();
if (kwd == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return;
}
icu::CharString* value = kwdBuf.create();
if (value == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1601,12 +1596,12 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
while (attr != nullptr) {
nextAttr = attr->next;
if (attr != attrFirst) {
- value->append('-', *status);
+ value->append('-', status);
}
- value->append(attr->attribute, *status);
+ value->append(attr->attribute, status);
attr = nextAttr;
}
- if (U_FAILURE(*status)) {
+ if (U_FAILURE(status)) {
return;
}
@@ -1614,7 +1609,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
kwd->value = value->data();
if (!_addExtensionToList(&kwdFirst, kwd, false)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
}
@@ -1625,14 +1620,14 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
const char *pBcpType = nullptr; /* beginning of u extension type subtag(s) */
int32_t bcpKeyLen = 0;
int32_t bcpTypeLen = 0;
- UBool isDone = false;
+ bool isDone = false;
pTag = pKwds;
/* BCP47 representation of LDML key/type pairs */
while (!isDone) {
const char *pNextBcpKey = nullptr;
int32_t nextBcpKeyLen = 0;
- UBool emitKeyword = false;
+ bool emitKeyword = false;
if (*pTag) {
/* locate next separator char */
@@ -1680,7 +1675,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
if (bcpKeyLen >= (int32_t)sizeof(bcpKeyBuf)) {
/* the BCP key is invalid */
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
U_ASSERT(bcpKeyLen <= 2);
@@ -1691,7 +1686,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
/* u extension key to LDML key */
pKey = uloc_toLegacyKey(bcpKeyBuf);
if (pKey == nullptr) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
if (pKey == bcpKeyBuf) {
@@ -1700,50 +1695,44 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
We normalize the result key to lower case.
*/
T_CString_toLowerCase(bcpKeyBuf);
- icu::CharString* key = kwdBuf.create(bcpKeyBuf, bcpKeyLen, *status);
+ icu::CharString* key = kwdBuf.create(bcpKeyBuf, bcpKeyLen, status);
if (key == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- if (U_FAILURE(*status)) {
+ if (U_FAILURE(status)) {
return;
}
pKey = key->data();
}
if (pBcpType) {
- char bcpTypeBuf[128]; /* practically long enough even considering multiple subtag type */
- if (bcpTypeLen >= (int32_t)sizeof(bcpTypeBuf)) {
- /* the BCP type is too long */
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ icu::CharString bcpTypeBuf(pBcpType, bcpTypeLen, status);
+ if (U_FAILURE(status)) {
return;
}
- uprv_strncpy(bcpTypeBuf, pBcpType, bcpTypeLen);
- bcpTypeBuf[bcpTypeLen] = 0;
-
/* BCP type to locale type */
- pType = uloc_toLegacyType(pKey, bcpTypeBuf);
+ pType = uloc_toLegacyType(pKey, bcpTypeBuf.data());
if (pType == nullptr) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if (pType == bcpTypeBuf) {
+ if (pType == bcpTypeBuf.data()) {
/*
The type returned by toLegacyType points to the input buffer.
We normalize the result type to lower case.
*/
/* normalize to lower case */
- T_CString_toLowerCase(bcpTypeBuf);
- icu::CharString* type = kwdBuf.create(bcpTypeBuf, bcpTypeLen, *status);
- if (type == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
- return;
- }
- if (U_FAILURE(*status)) {
+ T_CString_toLowerCase(bcpTypeBuf.data());
+ if (icu::CharString* type =
+ kwdBuf.create(std::move(bcpTypeBuf), status)) {
+ if (U_FAILURE(status)) { return; }
+ pType = type->data();
+ } else {
+ status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- pType = type->data();
}
} else {
/* typeless - default type value is "yes" */
@@ -1753,12 +1742,12 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
/* Special handling for u-va-posix, since we want to treat this as a variant,
not as a keyword */
if (!variantExists && !uprv_strcmp(pKey, POSIX_KEY) && !uprv_strcmp(pType, POSIX_VALUE) ) {
- *posixVariant = true;
+ posixVariant = true;
} else {
/* create an ExtensionListEntry for this keyword */
kwd = extPool.create();
if (kwd == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1787,9 +1776,10 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
}
}
+void
+_appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
-static void
-_appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status) {
int32_t i, n;
int32_t len;
ExtensionListEntry *kwdFirst = nullptr;
@@ -1797,11 +1787,7 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
const char *key, *type;
icu::MemoryPool<ExtensionListEntry> extPool;
icu::MemoryPool<icu::CharString> kwdBuf;
- UBool posixVariant = false;
-
- if (U_FAILURE(*status)) {
- return;
- }
+ bool posixVariant = false;
n = ultag_getExtensionsSize(langtag);
@@ -1815,37 +1801,37 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
posixVariant = true;
}
- _appendLDMLExtensionAsKeywords(type, &kwdFirst, extPool, kwdBuf, &posixVariant, status);
- if (U_FAILURE(*status)) {
+ _appendLDMLExtensionAsKeywords(type, &kwdFirst, extPool, kwdBuf, posixVariant, status);
+ if (U_FAILURE(status)) {
break;
}
} else {
kwd = extPool.create();
if (kwd == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
break;
}
kwd->key = key;
kwd->value = type;
if (!_addExtensionToList(&kwdFirst, kwd, false)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
}
}
}
- if (U_SUCCESS(*status)) {
+ if (U_SUCCESS(status)) {
type = ultag_getPrivateUse(langtag);
if ((int32_t)uprv_strlen(type) > 0) {
/* add private use as a keyword */
kwd = extPool.create();
if (kwd == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
} else {
kwd->key = PRIVATEUSE_KEY;
kwd->value = type;
if (!_addExtensionToList(&kwdFirst, kwd, false)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
}
}
}
@@ -1853,14 +1839,14 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
/* If a POSIX variant was in the extensions, write it out before writing the keywords. */
- if (U_SUCCESS(*status) && posixVariant) {
+ if (U_SUCCESS(status) && posixVariant) {
len = (int32_t) uprv_strlen(_POSIX);
sink.Append(_POSIX, len);
}
- if (U_SUCCESS(*status) && kwdFirst != nullptr) {
+ if (U_SUCCESS(status) && kwdFirst != nullptr) {
/* write out the sorted keywords */
- UBool firstValue = true;
+ bool firstValue = true;
kwd = kwdFirst;
do {
if (firstValue) {
@@ -1884,33 +1870,27 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
}
}
-static void
-_appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool strict, UBool hadPosix, UErrorCode* status) {
- (void)hadPosix;
- char buf[ULOC_FULLNAME_CAPACITY];
- UErrorCode tmpStatus = U_ZERO_ERROR;
- int32_t len, i;
-
- if (U_FAILURE(*status)) {
- return;
- }
+void
+_appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, bool strict, bool /*hadPosix*/, UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
- len = uloc_getVariant(localeID, buf, sizeof(buf), &tmpStatus);
- if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+ UErrorCode tmpStatus = U_ZERO_ERROR;
+ icu::CharString buf = ulocimp_getVariant(localeID, tmpStatus);
+ if (U_FAILURE(tmpStatus)) {
if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
}
return;
}
- if (len > 0) {
+ if (!buf.isEmpty()) {
char *p, *pPriv;
- UBool bNext = true;
- UBool firstValue = true;
- UBool writeValue;
+ bool bNext = true;
+ bool firstValue = true;
+ bool writeValue;
pPriv = nullptr;
- p = buf;
+ p = buf.data();
while (bNext) {
writeValue = false;
if (*p == SEP || *p == LOCALE_SEP || *p == 0) {
@@ -1921,7 +1901,7 @@ _appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool
}
if (pPriv != nullptr) {
/* Private use in the canonical format is lowercase in BCP47 */
- for (i = 0; *(pPriv + i) != 0; i++) {
+ for (int32_t i = 0; *(pPriv + i) != 0; i++) {
*(pPriv + i) = uprv_tolower(*(pPriv + i));
}
@@ -1935,7 +1915,7 @@ _appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool
writeValue = true;
}
} else if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
break;
} else {
break;
@@ -1952,7 +1932,7 @@ _appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool
firstValue = false;
}
- len = (int32_t)uprv_strlen(pPriv);
+ int32_t len = (int32_t)uprv_strlen(pPriv);
sink.Append(pPriv, len);
}
}
@@ -1994,27 +1974,25 @@ _appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool
#pragma optimize( "", off )
#endif
-static ULanguageTag*
-ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status) {
+ULanguageTag*
+ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode& status) {
+ if (U_FAILURE(status)) { return nullptr; }
+
char *tagBuf;
int16_t next;
char *pSubtag, *pNext, *pLastGoodPosition;
int32_t subtagLen;
int32_t extlangIdx;
- ExtensionListEntry *pExtension;
+ icu::LocalPointer<ExtensionListEntry> pExtension;
char *pExtValueSubtag, *pExtValueSubtagEnd;
int32_t i;
- UBool privateuseVar = false;
+ bool privateuseVar = false;
int32_t legacyLen = 0;
if (parsedLen != nullptr) {
*parsedLen = 0;
}
- if (U_FAILURE(*status)) {
- return nullptr;
- }
-
if (tagLen < 0) {
tagLen = (int32_t)uprv_strlen(tag);
}
@@ -2022,7 +2000,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
/* copy the entire string */
tagBuf = (char*)uprv_malloc(tagLen + 1);
if (tagBuf == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
}
@@ -2036,7 +2014,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
(ULanguageTag*)uprv_malloc(sizeof(ULanguageTag)));
if (t.isNull()) {
uprv_free(tagBuf);
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
}
_initializeULanguageTag(t.getAlias());
@@ -2074,7 +2052,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
// the destructor of t when t is out of scope.
t->buf = tagBuf = (char*)uprv_malloc(newTagLength + 1);
if (tagBuf == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
}
tagLen = newTagLength;
@@ -2133,7 +2111,6 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
next = LANG | PRIV;
pNext = pLastGoodPosition = tagBuf;
extlangIdx = 0;
- pExtension = nullptr;
pExtValueSubtag = nullptr;
pExtValueSubtagEnd = nullptr;
@@ -2219,20 +2196,14 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
if (next & VART) {
if (_isVariantSubtag(pSubtag, subtagLen) ||
(privateuseVar && _isPrivateuseVariantSubtag(pSubtag, subtagLen))) {
- VariantListEntry *var;
- UBool isAdded;
-
- var = (VariantListEntry*)uprv_malloc(sizeof(VariantListEntry));
- if (var == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ icu::LocalPointer<VariantListEntry> var(new VariantListEntry, status);
+ if (U_FAILURE(status)) {
return nullptr;
}
*pSep = 0;
var->variant = T_CString_toUpperCase(pSubtag);
- isAdded = _addVariantToList(&(t->variants), var);
- if (!isAdded) {
+ if (!_addVariantToList(&(t->variants), std::move(var))) {
/* duplicated variant entry */
- uprv_free(var);
break;
}
pLastGoodPosition = pSep;
@@ -2242,11 +2213,10 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
}
if (next & EXTS) {
if (_isExtensionSingleton(pSubtag, subtagLen)) {
- if (pExtension != nullptr) {
+ if (pExtension.isValid()) {
if (pExtValueSubtag == nullptr || pExtValueSubtagEnd == nullptr) {
/* the previous extension is incomplete */
- uprv_free(pExtension);
- pExtension = nullptr;
+ delete pExtension.orphan();
break;
}
@@ -2255,20 +2225,19 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
/* insert the extension to the list */
- if (_addExtensionToList(&(t->extensions), pExtension, false)) {
+ if (_addExtensionToList(&(t->extensions), pExtension.getAlias(), false)) {
+ pExtension.orphan();
pLastGoodPosition = pExtValueSubtagEnd;
} else {
/* stop parsing here */
- uprv_free(pExtension);
- pExtension = nullptr;
+ delete pExtension.orphan();
break;
}
}
/* create a new extension */
- pExtension = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
- if (pExtension == nullptr) {
- *status = U_MEMORY_ALLOCATION_ERROR;
+ pExtension.adoptInsteadAndCheckErrorCode(new ExtensionListEntry, status);
+ if (U_FAILURE(status)) {
return nullptr;
}
*pSep = 0;
@@ -2305,12 +2274,11 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
if (uprv_tolower(*pSubtag) == PRIVATEUSE && subtagLen == 1) {
char *pPrivuseVal;
- if (pExtension != nullptr) {
+ if (pExtension.isValid()) {
/* Process the last extension */
if (pExtValueSubtag == nullptr || pExtValueSubtagEnd == nullptr) {
/* the previous extension is incomplete */
- uprv_free(pExtension);
- pExtension = nullptr;
+ delete pExtension.orphan();
break;
} else {
/* terminate the previous extension value */
@@ -2318,13 +2286,12 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
/* insert the extension to the list */
- if (_addExtensionToList(&(t->extensions), pExtension, false)) {
+ if (_addExtensionToList(&(t->extensions), pExtension.getAlias(), false)) {
+ pExtension.orphan();
pLastGoodPosition = pExtValueSubtagEnd;
- pExtension = nullptr;
} else {
/* stop parsing here */
- uprv_free(pExtension);
- pExtension = nullptr;
+ delete pExtension.orphan();
break;
}
}
@@ -2386,20 +2353,21 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
break;
}
- if (pExtension != nullptr) {
+ if (pExtension.isValid()) {
/* Process the last extension */
if (pExtValueSubtag == nullptr || pExtValueSubtagEnd == nullptr) {
/* the previous extension is incomplete */
- uprv_free(pExtension);
+ delete pExtension.orphan();
} else {
/* terminate the previous extension value */
*pExtValueSubtagEnd = 0;
pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
/* insert the extension to the list */
- if (_addExtensionToList(&(t->extensions), pExtension, false)) {
+ if (_addExtensionToList(&(t->extensions), pExtension.getAlias(), false)) {
+ pExtension.orphan();
pLastGoodPosition = pExtValueSubtagEnd;
} else {
- uprv_free(pExtension);
+ delete pExtension.orphan();
}
}
}
@@ -2416,7 +2384,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
#pragma optimize( "", on )
#endif
-static void
+void
ultag_close(ULanguageTag* langtag) {
if (langtag == nullptr) {
@@ -2429,7 +2397,7 @@ ultag_close(ULanguageTag* langtag) {
VariantListEntry *curVar = langtag->variants;
while (curVar) {
VariantListEntry *nextVar = curVar->next;
- uprv_free(curVar);
+ delete curVar;
curVar = nextVar;
}
}
@@ -2438,7 +2406,7 @@ ultag_close(ULanguageTag* langtag) {
ExtensionListEntry *curExt = langtag->extensions;
while (curExt) {
ExtensionListEntry *nextExt = curExt->next;
- uprv_free(curExt);
+ delete curExt;
curExt = nextExt;
}
}
@@ -2446,13 +2414,13 @@ ultag_close(ULanguageTag* langtag) {
uprv_free(langtag);
}
-static const char*
+const char*
ultag_getLanguage(const ULanguageTag* langtag) {
return langtag->language;
}
#if 0
-static const char*
+const char*
ultag_getJDKLanguage(const ULanguageTag* langtag) {
int32_t i;
for (i = 0; DEPRECATEDLANGS[i] != nullptr; i += 2) {
@@ -2464,7 +2432,7 @@ ultag_getJDKLanguage(const ULanguageTag* langtag) {
}
#endif
-static const char*
+const char*
ultag_getExtlang(const ULanguageTag* langtag, int32_t idx) {
if (idx >= 0 && idx < MAXEXTLANG) {
return langtag->extlang[idx];
@@ -2472,7 +2440,7 @@ ultag_getExtlang(const ULanguageTag* langtag, int32_t idx) {
return nullptr;
}
-static int32_t
+int32_t
ultag_getExtlangSize(const ULanguageTag* langtag) {
int32_t size = 0;
int32_t i;
@@ -2484,17 +2452,17 @@ ultag_getExtlangSize(const ULanguageTag* langtag) {
return size;
}
-static const char*
+const char*
ultag_getScript(const ULanguageTag* langtag) {
return langtag->script;
}
-static const char*
+const char*
ultag_getRegion(const ULanguageTag* langtag) {
return langtag->region;
}
-static const char*
+const char*
ultag_getVariant(const ULanguageTag* langtag, int32_t idx) {
const char *var = nullptr;
VariantListEntry *cur = langtag->variants;
@@ -2510,7 +2478,7 @@ ultag_getVariant(const ULanguageTag* langtag, int32_t idx) {
return var;
}
-static int32_t
+int32_t
ultag_getVariantsSize(const ULanguageTag* langtag) {
int32_t size = 0;
VariantListEntry *cur = langtag->variants;
@@ -2524,7 +2492,7 @@ ultag_getVariantsSize(const ULanguageTag* langtag) {
return size;
}
-static const char*
+const char*
ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) {
const char *key = nullptr;
ExtensionListEntry *cur = langtag->extensions;
@@ -2540,7 +2508,7 @@ ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) {
return key;
}
-static const char*
+const char*
ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx) {
const char *val = nullptr;
ExtensionListEntry *cur = langtag->extensions;
@@ -2556,7 +2524,7 @@ ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx) {
return val;
}
-static int32_t
+int32_t
ultag_getExtensionsSize(const ULanguageTag* langtag) {
int32_t size = 0;
ExtensionListEntry *cur = langtag->extensions;
@@ -2570,18 +2538,19 @@ ultag_getExtensionsSize(const ULanguageTag* langtag) {
return size;
}
-static const char*
+const char*
ultag_getPrivateUse(const ULanguageTag* langtag) {
return langtag->privateuse;
}
#if 0
-static const char*
+const char*
ultag_getLegacy(const ULanguageTag* langtag) {
return langtag->legacy;
}
#endif
+} // namespace
/*
* -------------------------------------------------
@@ -2596,46 +2565,40 @@ uloc_toLanguageTag(const char* localeID,
int32_t langtagCapacity,
UBool strict,
UErrorCode* status) {
- if (U_FAILURE(*status)) {
- return 0;
- }
-
- icu::CheckedArrayByteSink sink(langtag, langtagCapacity);
- ulocimp_toLanguageTag(localeID, sink, strict, status);
-
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*status)) {
- return reslen;
- }
-
- if (sink.Overflowed()) {
- *status = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(langtag, langtagCapacity, reslen, status);
- }
-
- return reslen;
+ return icu::ByteSinkUtil::viaByteSinkToTerminatedChars(
+ langtag, langtagCapacity,
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ ulocimp_toLanguageTag(localeID, sink, strict, status);
+ },
+ *status);
}
+U_EXPORT icu::CharString
+ulocimp_toLanguageTag(const char* localeID,
+ bool strict,
+ UErrorCode& status) {
+ return icu::ByteSinkUtil::viaByteSinkToCharString(
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ ulocimp_toLanguageTag(localeID, sink, strict, status);
+ },
+ status);
+}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_toLanguageTag(const char* localeID,
icu::ByteSink& sink,
- UBool strict,
- UErrorCode* status) {
- icu::CharString canonical;
+ bool strict,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
+
UErrorCode tmpStatus = U_ZERO_ERROR;
- UBool hadPosix = false;
+ bool hadPosix = false;
const char* pKeywordStart;
/* Note: uloc_canonicalize returns "en_US_POSIX" for input locale ID "". See #6835 */
- {
- icu::CharStringByteSink canonicalSink(&canonical);
- ulocimp_canonicalize(localeID, canonicalSink, &tmpStatus);
- }
+ icu::CharString canonical = ulocimp_canonicalize(localeID, tmpStatus);
if (U_FAILURE(tmpStatus)) {
- *status = tmpStatus;
+ status = tmpStatus;
return;
}
@@ -2643,7 +2606,7 @@ ulocimp_toLanguageTag(const char* localeID,
pKeywordStart = locale_getKeywordsStart(canonical.data());
if (pKeywordStart == canonical.data()) {
int kwdCnt = 0;
- UBool done = false;
+ bool done = false;
icu::LocalUEnumerationPointer kwdEnum(uloc_openKeywords(canonical.data(), &tmpStatus));
if (U_SUCCESS(tmpStatus)) {
@@ -2654,11 +2617,7 @@ ulocimp_toLanguageTag(const char* localeID,
key = uenum_next(kwdEnum.getAlias(), &len, &tmpStatus);
if (len == 1 && *key == PRIVATEUSE) {
- icu::CharString buf;
- {
- icu::CharStringByteSink sink(&buf);
- ulocimp_getKeywordValue(localeID, key, sink, &tmpStatus);
- }
+ icu::CharString buf = ulocimp_getKeywordValue(localeID, key, tmpStatus);
if (U_SUCCESS(tmpStatus)) {
if (ultag_isPrivateuseValueSubtags(buf.data(), buf.length())) {
/* return private use only tag */
@@ -2666,12 +2625,12 @@ ulocimp_toLanguageTag(const char* localeID,
sink.Append(buf.data(), buf.length());
done = true;
} else if (strict) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
done = true;
}
/* if not strict mode, then "und" will be returned */
} else {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
done = true;
}
}
@@ -2685,7 +2644,7 @@ ulocimp_toLanguageTag(const char* localeID,
_appendLanguageToLanguageTag(canonical.data(), sink, strict, status);
_appendScriptToLanguageTag(canonical.data(), sink, strict, status);
_appendRegionToLanguageTag(canonical.data(), sink, strict, status);
- _appendVariantsToLanguageTag(canonical.data(), sink, strict, &hadPosix, status);
+ _appendVariantsToLanguageTag(canonical.data(), sink, strict, hadPosix, status);
_appendKeywordsToLanguageTag(canonical.data(), sink, strict, hadPosix, status);
_appendPrivateuseToLanguageTag(canonical.data(), sink, strict, hadPosix, status);
}
@@ -2697,43 +2656,42 @@ uloc_forLanguageTag(const char* langtag,
int32_t localeIDCapacity,
int32_t* parsedLength,
UErrorCode* status) {
- if (U_FAILURE(*status)) {
- return 0;
- }
-
- icu::CheckedArrayByteSink sink(localeID, localeIDCapacity);
- ulocimp_forLanguageTag(langtag, -1, sink, parsedLength, status);
-
- int32_t reslen = sink.NumberOfBytesAppended();
-
- if (U_FAILURE(*status)) {
- return reslen;
- }
-
- if (sink.Overflowed()) {
- *status = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(localeID, localeIDCapacity, reslen, status);
- }
-
- return reslen;
+ return icu::ByteSinkUtil::viaByteSinkToTerminatedChars(
+ localeID, localeIDCapacity,
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ ulocimp_forLanguageTag(langtag, -1, sink, parsedLength, status);
+ },
+ *status);
}
+U_EXPORT icu::CharString
+ulocimp_forLanguageTag(const char* langtag,
+ int32_t tagLen,
+ int32_t* parsedLength,
+ UErrorCode& status) {
+ return icu::ByteSinkUtil::viaByteSinkToCharString(
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ ulocimp_forLanguageTag(langtag, tagLen, sink, parsedLength, status);
+ },
+ status);
+}
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_forLanguageTag(const char* langtag,
int32_t tagLen,
icu::ByteSink& sink,
int32_t* parsedLength,
- UErrorCode* status) {
- UBool isEmpty = true;
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
+
+ bool isEmpty = true;
const char *subtag, *p;
int32_t len;
int32_t i, n;
- UBool noRegion = true;
+ bool noRegion = true;
icu::LocalULanguageTagPointer lt(ultag_parse(langtag, tagLen, parsedLength, status));
- if (U_FAILURE(*status)) {
+ if (U_FAILURE(status)) {
return;
}
diff --git a/icu4c/source/common/ulocale.cpp b/icu4c/source/common/ulocale.cpp
index 471ef0ce7..aaa17954a 100644
--- a/icu4c/source/common/ulocale.cpp
+++ b/icu4c/source/common/ulocale.cpp
@@ -1,6 +1,7 @@
// © 2023 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
//
+#include "unicode/bytestream.h"
#include "unicode/errorcode.h"
#include "unicode/stringpiece.h"
#include "unicode/utypes.h"
@@ -8,9 +9,9 @@
#include "unicode/ulocale.h"
#include "unicode/locid.h"
+#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
-#include "ustr_imp.h"
U_NAMESPACE_USE
#define EXTERNAL(i) (reinterpret_cast<ULocale*>(i))
@@ -19,15 +20,17 @@ U_NAMESPACE_USE
ULocale*
ulocale_openForLocaleID(const char* localeID, int32_t length, UErrorCode* err) {
+ if (U_FAILURE(*err)) { return nullptr; }
CharString str(length < 0 ? StringPiece(localeID) : StringPiece(localeID, length), *err);
- if (U_FAILURE(*err)) return nullptr;
+ if (U_FAILURE(*err)) { return nullptr; }
return EXTERNAL(icu::Locale::createFromName(str.data()).clone());
}
ULocale*
ulocale_openForLanguageTag(const char* tag, int32_t length, UErrorCode* err) {
+ if (U_FAILURE(*err)) { return nullptr; }
Locale l = icu::Locale::forLanguageTag(length < 0 ? StringPiece(tag) : StringPiece(tag, length), *err);
- if (U_FAILURE(*err)) return nullptr;
+ if (U_FAILURE(*err)) { return nullptr; }
return EXTERNAL(l.clone());
}
@@ -53,20 +56,14 @@ int32_t ulocale_get ##N ( \
*err = U_ILLEGAL_ARGUMENT_ERROR; \
return 0; \
} \
- CheckedArrayByteSink sink(valueBuffer, bufferCapacity); \
- CONST_INTERNAL(locale)->get ## N( \
- keywordLength < 0 ? StringPiece(keyword) : StringPiece(keyword, keywordLength), \
- sink, *err); \
- int32_t reslen = sink.NumberOfBytesAppended(); \
- if (U_FAILURE(*err)) { \
- return reslen; \
- } \
- if (sink.Overflowed()) { \
- *err = U_BUFFER_OVERFLOW_ERROR; \
- } else { \
- u_terminateChars(valueBuffer, bufferCapacity, reslen, err); \
- } \
- return reslen; \
+ return ByteSinkUtil::viaByteSinkToTerminatedChars( \
+ valueBuffer, bufferCapacity, \
+ [&](ByteSink& sink, UErrorCode& status) { \
+ CONST_INTERNAL(locale)->get ## N( \
+ keywordLength < 0 ? StringPiece(keyword) : StringPiece(keyword, keywordLength), \
+ sink, status); \
+ }, \
+ *err); \
}
#define IMPL_ULOCALE_GET_KEYWORDS(N) \
diff --git a/icu4c/source/common/ulocbuilder.cpp b/icu4c/source/common/ulocbuilder.cpp
index a5af73bef..3b4664736 100644
--- a/icu4c/source/common/ulocbuilder.cpp
+++ b/icu4c/source/common/ulocbuilder.cpp
@@ -9,10 +9,10 @@
#include "unicode/stringpiece.h"
#include "unicode/umachine.h"
#include "unicode/ulocbuilder.h"
+#include "bytesinkutil.h"
#include "cstring.h"
#include "ustr_imp.h"
-using icu::CheckedArrayByteSink;
using icu::StringPiece;
#define EXTERNAL(i) (reinterpret_cast<ULocaleBuilder*>(i))
@@ -112,12 +112,13 @@ ULocale* ulocbld_buildULocale(ULocaleBuilder* builder, UErrorCode* err) {
int32_t ulocbld_buildLocaleID(ULocaleBuilder* builder,
char* buffer, int32_t bufferCapacity, UErrorCode* err) {
+ if (U_FAILURE(*err)) { return 0; }
if (builder == nullptr) {
*err = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
icu::Locale l = INTERNAL(builder)->build(*err);
- if (U_FAILURE(*err)) return 0;
+ if (U_FAILURE(*err)) { return 0; }
int32_t length = (int32_t)(uprv_strlen(l.getName()));
if (0 < length && length <= bufferCapacity) {
uprv_memcpy(buffer, l.getName(), length);
@@ -127,24 +128,18 @@ int32_t ulocbld_buildLocaleID(ULocaleBuilder* builder,
int32_t ulocbld_buildLanguageTag(ULocaleBuilder* builder,
char* buffer, int32_t bufferCapacity, UErrorCode* err) {
+ if (U_FAILURE(*err)) { return 0; }
if (builder == nullptr) {
*err = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
icu::Locale l = INTERNAL(builder)->build(*err);
- if (U_FAILURE(*err)) return 0;
- CheckedArrayByteSink sink(buffer, bufferCapacity);
- l.toLanguageTag(sink, *err);
- int32_t reslen = sink.NumberOfBytesAppended();
- if (U_FAILURE(*err)) {
- return reslen;
- }
- if (sink.Overflowed()) {
- *err = U_BUFFER_OVERFLOW_ERROR;
- } else {
- u_terminateChars(buffer, bufferCapacity, reslen, err);
- }
- return reslen;
+ return icu::ByteSinkUtil::viaByteSinkToTerminatedChars(
+ buffer, bufferCapacity,
+ [&](icu::ByteSink& sink, UErrorCode& status) {
+ l.toLanguageTag(sink, status);
+ },
+ *err);
}
UBool ulocbld_copyErrorTo(const ULocaleBuilder* builder, UErrorCode *outErrorCode) {
diff --git a/icu4c/source/common/ulocimp.h b/icu4c/source/common/ulocimp.h
index efa0fa72e..7fb640628 100644
--- a/icu4c/source/common/ulocimp.h
+++ b/icu4c/source/common/ulocimp.h
@@ -10,6 +10,8 @@
#ifndef ULOCIMP_H
#define ULOCIMP_H
+#include <cstddef>
+
#include "unicode/bytestream.h"
#include "unicode/uloc.h"
@@ -40,8 +42,10 @@ uloc_getTableStringWithFallback(
int32_t *pLength,
UErrorCode *pErrorCode);
+namespace {
/*returns true if a is an ID separator false otherwise*/
-#define _isIDSeparator(a) (a == '_' || a == '-')
+inline bool _isIDSeparator(char a) { return a == '_' || a == '-'; }
+} // namespace
U_CFUNC const char*
uloc_getCurrentCountryID(const char* oldID);
@@ -49,53 +53,134 @@ uloc_getCurrentCountryID(const char* oldID);
U_CFUNC const char*
uloc_getCurrentLanguageID(const char* oldID);
-U_CFUNC void
-ulocimp_getKeywords(const char *localeID,
- char prev,
- icu::ByteSink& sink,
- UBool valuesToo,
- UErrorCode *status);
-
-icu::CharString U_EXPORT2
-ulocimp_getLanguage(const char *localeID,
- const char **pEnd,
- UErrorCode &status);
-
-icu::CharString U_EXPORT2
-ulocimp_getScript(const char *localeID,
- const char **pEnd,
- UErrorCode &status);
-
-icu::CharString U_EXPORT2
-ulocimp_getCountry(const char *localeID,
- const char **pEnd,
- UErrorCode &status);
-
-U_CAPI void U_EXPORT2
+U_EXPORT icu::CharString
+ulocimp_getKeywords(const char* localeID,
+ char prev,
+ bool valuesToo,
+ UErrorCode& status);
+
+U_EXPORT void
+ulocimp_getKeywords(const char* localeID,
+ char prev,
+ icu::ByteSink& sink,
+ bool valuesToo,
+ UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getName(const char* localeID,
+ UErrorCode& err);
+
+U_EXPORT void
ulocimp_getName(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_getBaseName(const char* localeID,
+ UErrorCode& err);
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_getBaseName(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_canonicalize(const char* localeID,
+ UErrorCode& err);
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_canonicalize(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
-U_CAPI void U_EXPORT2
+U_EXPORT icu::CharString
+ulocimp_getKeywordValue(const char* localeID,
+ const char* keywordName,
+ UErrorCode& status);
+
+U_EXPORT void
ulocimp_getKeywordValue(const char* localeID,
const char* keywordName,
icu::ByteSink& sink,
- UErrorCode* status);
+ UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getLanguage(const char* localeID, UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getScript(const char* localeID, UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getRegion(const char* localeID, UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getVariant(const char* localeID, UErrorCode& status);
+
+U_EXPORT void
+ulocimp_setKeywordValue(const char* keywordName,
+ const char* keywordValue,
+ icu::CharString& localeID,
+ UErrorCode& status);
-U_CAPI void U_EXPORT2
+U_EXPORT int32_t
+ulocimp_setKeywordValue(const char* keywords,
+ const char* keywordName,
+ const char* keywordValue,
+ icu::ByteSink& sink,
+ UErrorCode& status);
+
+U_EXPORT void
+ulocimp_getSubtags(
+ const char* localeID,
+ icu::CharString* language,
+ icu::CharString* script,
+ icu::CharString* region,
+ icu::CharString* variant,
+ const char** pEnd,
+ UErrorCode& status);
+
+U_EXPORT void
+ulocimp_getSubtags(
+ const char* localeID,
+ icu::ByteSink* language,
+ icu::ByteSink* script,
+ icu::ByteSink* region,
+ icu::ByteSink* variant,
+ const char** pEnd,
+ UErrorCode& status);
+
+inline void
+ulocimp_getSubtags(
+ const char* localeID,
+ std::nullptr_t,
+ std::nullptr_t,
+ std::nullptr_t,
+ std::nullptr_t,
+ const char** pEnd,
+ UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ static_cast<icu::ByteSink*>(nullptr),
+ static_cast<icu::ByteSink*>(nullptr),
+ static_cast<icu::ByteSink*>(nullptr),
+ static_cast<icu::ByteSink*>(nullptr),
+ pEnd,
+ status);
+}
+
+U_EXPORT icu::CharString
+ulocimp_getParent(const char* localeID,
+ UErrorCode& err);
+
+U_EXPORT void
ulocimp_getParent(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_toLanguageTag(const char* localeID,
+ bool strict,
+ UErrorCode& status);
/**
* Writes a well-formed language tag for this locale ID.
@@ -116,11 +201,17 @@ ulocimp_getParent(const char* localeID,
*
* @internal ICU 64
*/
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_toLanguageTag(const char* localeID,
icu::ByteSink& sink,
- UBool strict,
- UErrorCode* err);
+ bool strict,
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_forLanguageTag(const char* langtag,
+ int32_t tagLen,
+ int32_t* parsedLength,
+ UErrorCode& status);
/**
* Returns a locale ID for the specified BCP47 language tag string.
@@ -148,12 +239,12 @@ ulocimp_toLanguageTag(const char* localeID,
* failed.
* @internal ICU 63
*/
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_forLanguageTag(const char* langtag,
int32_t tagLen,
icu::ByteSink& sink,
int32_t* parsedLength,
- UErrorCode* err);
+ UErrorCode& err);
/**
* Get the region to use for supplemental data lookup. Uses
@@ -161,28 +252,27 @@ ulocimp_forLanguageTag(const char* langtag,
* (2) any unicode_region_tag in the locale ID; if none then
* (3) if inferRegion is true, the region suggested by
* getLikelySubtags on the localeID.
- * If no region is found, returns length 0.
- *
+ * If no region is found, returns an empty string.
+ *
* @param localeID
* The complete locale ID (with keywords) from which
* to get the region to use for supplemental data.
* @param inferRegion
* If true, will try to infer region from localeID if
* no other region is found.
- * @param region
- * Buffer in which to put the region ID found; should
- * have a capacity at least ULOC_COUNTRY_CAPACITY.
- * @param regionCapacity
- * The actual capacity of the region buffer.
* @param status
* Pointer to in/out UErrorCode value for latest status.
* @return
- * The length of any region code found, or 0 if none.
+ * The region code found, empty if none found.
* @internal ICU 57
*/
-U_CAPI int32_t U_EXPORT2
-ulocimp_getRegionForSupplementalData(const char *localeID, UBool inferRegion,
- char *region, int32_t regionCapacity, UErrorCode* status);
+U_EXPORT icu::CharString
+ulocimp_getRegionForSupplementalData(const char *localeID, bool inferRegion,
+ UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_addLikelySubtags(const char* localeID,
+ UErrorCode& status);
/**
* Add the likely subtags for a provided locale ID, per the algorithm described
@@ -213,10 +303,15 @@ ulocimp_getRegionForSupplementalData(const char *localeID, UBool inferRegion,
* or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
* @internal ICU 64
*/
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_addLikelySubtags(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_minimizeSubtags(const char* localeID,
+ bool favorScript,
+ UErrorCode& status);
/**
* Minimize the subtags for a provided locale ID, per the algorithm described
@@ -248,70 +343,72 @@ ulocimp_addLikelySubtags(const char* localeID,
* or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
* @internal ICU 64
*/
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_minimizeSubtags(const char* localeID,
icu::ByteSink& sink,
bool favorScript,
- UErrorCode* err);
+ UErrorCode& err);
U_CAPI const char * U_EXPORT2
locale_getKeywordsStart(const char *localeID);
-U_CFUNC UBool
+bool
ultag_isExtensionSubtags(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isLanguageSubtag(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isPrivateuseValueSubtags(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isRegionSubtag(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isScriptSubtag(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isTransformedExtensionSubtags(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeExtensionSubtags(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleAttribute(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleAttributes(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleKey(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleType(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isVariantSubtags(const char* s, int32_t len);
-U_CAPI const char * U_EXPORT2
-ultag_getTKeyStart(const char *localeID);
+const char*
+ultag_getTKeyStart(const char* localeID);
-U_CFUNC const char*
+U_EXPORT const char*
ulocimp_toBcpKey(const char* key);
-U_CFUNC const char*
+U_EXPORT const char*
ulocimp_toLegacyKey(const char* key);
-U_CFUNC const char*
-ulocimp_toBcpType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType);
+U_EXPORT const char*
+ulocimp_toBcpType(const char* key, const char* type, bool* isKnownKey, bool* isSpecialType);
-U_CFUNC const char*
-ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType);
+U_EXPORT const char*
+ulocimp_toLegacyType(const char* key, const char* type, bool* isKnownKey, bool* isSpecialType);
/* Function for testing purpose */
-U_CAPI const char* const* ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* length);
+U_EXPORT const char* const*
+ulocimp_getKnownCanonicalizedLocaleForTest(int32_t& length);
// Return true if the value is already canonicalized.
-U_CAPI bool ulocimp_isCanonicalizedLocaleForTest(const char* localeName);
+U_EXPORT bool
+ulocimp_isCanonicalizedLocaleForTest(const char* localeName);
#endif
diff --git a/icu4c/source/common/umapfile.cpp b/icu4c/source/common/umapfile.cpp
index debbdff3f..554a65cfd 100644
--- a/icu4c/source/common/umapfile.cpp
+++ b/icu4c/source/common/umapfile.cpp
@@ -236,9 +236,9 @@ typedef HANDLE MemoryMap;
/* get a view of the mapping */
#if U_PLATFORM != U_PF_HPUX
- data=mmap(0, length, PROT_READ, MAP_SHARED, fd, 0);
+ data=mmap(nullptr, length, PROT_READ, MAP_SHARED, fd, 0);
#else
- data=mmap(0, length, PROT_READ, MAP_PRIVATE, fd, 0);
+ data=mmap(nullptr, length, PROT_READ, MAP_PRIVATE, fd, 0);
#endif
close(fd); /* no longer needed */
if(data==MAP_FAILED) {
@@ -263,7 +263,7 @@ typedef HANDLE MemoryMap;
if(munmap(pData->mapAddr, dataLen)==-1) {
}
pData->pHeader=nullptr;
- pData->map=0;
+ pData->map=nullptr;
pData->mapAddr=nullptr;
}
}
diff --git a/icu4c/source/common/umutex.cpp b/icu4c/source/common/umutex.cpp
index ccbee9960..0c053968d 100644
--- a/icu4c/source/common/umutex.cpp
+++ b/icu4c/source/common/umutex.cpp
@@ -189,7 +189,6 @@ u_setMutexFunctions(const void * /*context */, UMtxInitFn *, UMtxFn *,
if (U_SUCCESS(*status)) {
*status = U_UNSUPPORTED_ERROR;
}
- return;
}
@@ -200,5 +199,4 @@ u_setAtomicIncDecFunctions(const void * /*context */, UMtxAtomicFn *, UMtxAtomic
if (U_SUCCESS(*status)) {
*status = U_UNSUPPORTED_ERROR;
}
- return;
}
diff --git a/icu4c/source/common/unicode/brkiter.h b/icu4c/source/common/unicode/brkiter.h
index 1b10e6ef1..bd9662928 100644
--- a/icu4c/source/common/unicode/brkiter.h
+++ b/icu4c/source/common/unicode/brkiter.h
@@ -146,14 +146,13 @@ public:
* will return distinct unequal values.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
/**
* Return a CharacterIterator over the text being analyzed.
* @stable ICU 2.0
*/
- virtual CharacterIterator& getText(void) const = 0;
-
+ virtual CharacterIterator& getText() const = 0;
/**
* Get a UText for the text being analyzed.
@@ -228,14 +227,14 @@ public:
* @return The offset of the beginning of the text, zero.
* @stable ICU 2.0
*/
- virtual int32_t first(void) = 0;
+ virtual int32_t first() = 0;
/**
* Set the iterator position to the index immediately BEYOND the last character in the text being scanned.
* @return The index immediately BEYOND the last character in the text being scanned.
* @stable ICU 2.0
*/
- virtual int32_t last(void) = 0;
+ virtual int32_t last() = 0;
/**
* Set the iterator position to the boundary preceding the current boundary.
@@ -243,7 +242,7 @@ public:
* boundaries have been returned.
* @stable ICU 2.0
*/
- virtual int32_t previous(void) = 0;
+ virtual int32_t previous() = 0;
/**
* Advance the iterator to the boundary following the current boundary.
@@ -251,14 +250,14 @@ public:
* boundaries have been returned.
* @stable ICU 2.0
*/
- virtual int32_t next(void) = 0;
+ virtual int32_t next() = 0;
/**
* Return character index of the current iterator position within the text.
* @return The boundary most recently returned.
* @stable ICU 2.0
*/
- virtual int32_t current(void) const = 0;
+ virtual int32_t current() const = 0;
/**
* Advance the iterator to the first boundary following the specified offset.
@@ -530,7 +529,7 @@ public:
* must be closed by an explicit call to the destructor (not delete).
* @deprecated ICU 52. Always delete the BreakIterator.
*/
- inline UBool isBufferClone(void);
+ inline UBool isBufferClone();
#endif /* U_HIDE_DEPRECATED_API */
@@ -575,7 +574,7 @@ public:
* @return a StringEnumeration over the locales available at the time of the call
* @stable ICU 2.4
*/
- static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
+ static StringEnumeration* U_EXPORT2 getAvailableLocales();
#endif
/**
diff --git a/icu4c/source/common/unicode/caniter.h b/icu4c/source/common/unicode/caniter.h
index 035bd0e64..b904ef2ff 100644
--- a/icu4c/source/common/unicode/caniter.h
+++ b/icu4c/source/common/unicode/caniter.h
@@ -128,9 +128,10 @@ public:
* @param skipZeros determine if skip zeros
* @param result the results in a set.
* @param status Fill-in parameter which receives the status of this operation.
+ * @param depth depth of the call.
* @internal
*/
- static void U_EXPORT2 permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status);
+ static void U_EXPORT2 permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status, int32_t depth=0);
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -182,8 +183,8 @@ private:
// transient fields
UnicodeString buffer;
- const Normalizer2 &nfd;
- const Normalizer2Impl &nfcImpl;
+ const Normalizer2 *nfd;
+ const Normalizer2Impl *nfcImpl;
// we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
UnicodeString *getEquivalents(const UnicodeString &segment, int32_t &result_len, UErrorCode &status); //private String[] getEquivalents(String segment)
diff --git a/icu4c/source/common/unicode/chariter.h b/icu4c/source/common/unicode/chariter.h
index 45f4d984c..411825677 100644
--- a/icu4c/source/common/unicode/chariter.h
+++ b/icu4c/source/common/unicode/chariter.h
@@ -133,8 +133,8 @@ public:
* @return the hash code.
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const = 0;
-
+ virtual int32_t hashCode() const = 0;
+
/**
* Returns a UClassID for this ForwardCharacterIterator ("poor man's
* RTTI").<P> Despite the fact that this function is public,
@@ -142,8 +142,8 @@ public:
* @return a UClassID for this ForwardCharacterIterator
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
-
+ virtual UClassID getDynamicClassID() const override = 0;
+
/**
* Gets the current code unit for returning and advances to the next code unit
* in the iteration range
@@ -152,8 +152,8 @@ public:
* @return the current code unit.
* @stable ICU 2.0
*/
- virtual char16_t nextPostInc(void) = 0;
-
+ virtual char16_t nextPostInc() = 0;
+
/**
* Gets the current code point for returning and advances to the next code point
* in the iteration range
@@ -162,8 +162,8 @@ public:
* @return the current code point.
* @stable ICU 2.0
*/
- virtual UChar32 next32PostInc(void) = 0;
-
+ virtual UChar32 next32PostInc() = 0;
+
/**
* Returns false if there are no more code units or code points
* at or after the current position in the iteration range.
@@ -389,7 +389,7 @@ public:
* @return the first code unit in its iteration range.
* @stable ICU 2.0
*/
- virtual char16_t first(void) = 0;
+ virtual char16_t first() = 0;
/**
* Sets the iterator to refer to the first code unit in its
@@ -399,7 +399,7 @@ public:
* @return the first code unit in its iteration range.
* @stable ICU 2.0
*/
- virtual char16_t firstPostInc(void);
+ virtual char16_t firstPostInc();
/**
* Sets the iterator to refer to the first code point in its
@@ -410,7 +410,7 @@ public:
* @return the first code point in its iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 first32(void) = 0;
+ virtual UChar32 first32() = 0;
/**
* Sets the iterator to refer to the first code point in its
@@ -420,7 +420,7 @@ public:
* @return the first code point in its iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 first32PostInc(void);
+ virtual UChar32 first32PostInc();
/**
* Sets the iterator to refer to the first code unit or code point in its
@@ -438,8 +438,8 @@ public:
* @return the last code unit.
* @stable ICU 2.0
*/
- virtual char16_t last(void) = 0;
-
+ virtual char16_t last() = 0;
+
/**
* Sets the iterator to refer to the last code point in its
* iteration range, and returns that code unit.
@@ -447,7 +447,7 @@ public:
* @return the last code point.
* @stable ICU 2.0
*/
- virtual UChar32 last32(void) = 0;
+ virtual UChar32 last32() = 0;
/**
* Sets the iterator to the end of its iteration range, just behind
@@ -486,15 +486,15 @@ public:
* @return the current code unit.
* @stable ICU 2.0
*/
- virtual char16_t current(void) const = 0;
-
+ virtual char16_t current() const = 0;
+
/**
* Returns the code point the iterator currently refers to.
* @return the current code point.
* @stable ICU 2.0
*/
- virtual UChar32 current32(void) const = 0;
-
+ virtual UChar32 current32() const = 0;
+
/**
* Advances to the next code unit in the iteration range
* (toward endIndex()), and returns that code unit. If there are
@@ -502,8 +502,8 @@ public:
* @return the next code unit.
* @stable ICU 2.0
*/
- virtual char16_t next(void) = 0;
-
+ virtual char16_t next() = 0;
+
/**
* Advances to the next code point in the iteration range
* (toward endIndex()), and returns that code point. If there are
@@ -514,8 +514,8 @@ public:
* @return the next code point.
* @stable ICU 2.0
*/
- virtual UChar32 next32(void) = 0;
-
+ virtual UChar32 next32() = 0;
+
/**
* Advances to the previous code unit in the iteration range
* (toward startIndex()), and returns that code unit. If there are
@@ -523,7 +523,7 @@ public:
* @return the previous code unit.
* @stable ICU 2.0
*/
- virtual char16_t previous(void) = 0;
+ virtual char16_t previous() = 0;
/**
* Advances to the previous code point in the iteration range
@@ -532,7 +532,7 @@ public:
* @return the previous code point.
* @stable ICU 2.0
*/
- virtual UChar32 previous32(void) = 0;
+ virtual UChar32 previous32() = 0;
/**
* Returns false if there are no more code units or code points
@@ -555,8 +555,8 @@ public:
* object of the character returned by first().
* @stable ICU 2.0
*/
- inline int32_t startIndex(void) const;
-
+ inline int32_t startIndex() const;
+
/**
* Returns the numeric index in the underlying text-storage
* object of the position immediately BEYOND the character
@@ -566,8 +566,8 @@ public:
* returned by last().
* @stable ICU 2.0
*/
- inline int32_t endIndex(void) const;
-
+ inline int32_t endIndex() const;
+
/**
* Returns the numeric index in the underlying text-storage
* object of the character the iterator currently refers to
@@ -576,7 +576,7 @@ public:
* the character the iterator currently refers to
* @stable ICU 2.0
*/
- inline int32_t getIndex(void) const;
+ inline int32_t getIndex() const;
/**
* Returns the length of the entire text in the underlying
@@ -708,22 +708,22 @@ CharacterIterator::setToEnd() {
}
inline int32_t
-CharacterIterator::startIndex(void) const {
+CharacterIterator::startIndex() const {
return begin;
}
inline int32_t
-CharacterIterator::endIndex(void) const {
+CharacterIterator::endIndex() const {
return end;
}
inline int32_t
-CharacterIterator::getIndex(void) const {
+CharacterIterator::getIndex() const {
return pos;
}
inline int32_t
-CharacterIterator::getLength(void) const {
+CharacterIterator::getLength() const {
return textLength;
}
diff --git a/icu4c/source/common/unicode/docmain.h b/icu4c/source/common/unicode/docmain.h
index 581b2e186..fa4dbbc05 100644
--- a/icu4c/source/common/unicode/docmain.h
+++ b/icu4c/source/common/unicode/docmain.h
@@ -143,6 +143,11 @@
* <td>icu::MessageFormat</td>
* </tr>
* <tr>
+ * <td>Message Formatting 2<br/>(technology preview)</td>
+ * <td>(no C API)</td>
+ * <td>icu::message2::MessageFormatter</td>
+ * </tr>
+ * <tr>
* <td>List Formatting</td>
* <td>ulistformatter.h</td>
* <td>icu::ListFormatter</td>
diff --git a/icu4c/source/common/unicode/dtintrv.h b/icu4c/source/common/unicode/dtintrv.h
index 8c172eb7a..1fd0ba5de 100644
--- a/icu4c/source/common/unicode/dtintrv.h
+++ b/icu4c/source/common/unicode/dtintrv.h
@@ -76,7 +76,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 4.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -89,9 +89,8 @@ public:
* other classes have different class IDs.
* @stable ICU 4.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
-
/**
* Copy constructor.
* @stable ICU 4.0
diff --git a/icu4c/source/common/unicode/localematcher.h b/icu4c/source/common/unicode/localematcher.h
index 603daf723..e16f1a31c 100644
--- a/icu4c/source/common/unicode/localematcher.h
+++ b/icu4c/source/common/unicode/localematcher.h
@@ -11,6 +11,8 @@
#if U_SHOW_CPLUSPLUS_API
+#include <optional>
+
#include "unicode/locid.h"
#include "unicode/stringpiece.h"
#include "unicode/uobject.h"
@@ -133,10 +135,10 @@ U_NAMESPACE_BEGIN
struct LSR;
+class LikelySubtags;
class LocaleDistance;
class LocaleLsrIterator;
class UVector;
-class XLikelySubtags;
/**
* Immutable class that picks the best match between a user's desired locales and
@@ -678,9 +680,9 @@ private:
int32_t putIfAbsent(const LSR &lsr, int32_t i, int32_t suppLength, UErrorCode &errorCode);
- int32_t getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remainingIter, UErrorCode &errorCode) const;
+ std::optional<int32_t> getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remainingIter, UErrorCode &errorCode) const;
- const XLikelySubtags &likelySubtags;
+ const LikelySubtags &likelySubtags;
const LocaleDistance &localeDistance;
int32_t thresholdDistance;
int32_t demotionPerDesiredLocale;
diff --git a/icu4c/source/common/unicode/localpointer.h b/icu4c/source/common/unicode/localpointer.h
index b8be3d794..9c891bf30 100644
--- a/icu4c/source/common/unicode/localpointer.h
+++ b/icu4c/source/common/unicode/localpointer.h
@@ -162,11 +162,11 @@ protected:
T *ptr;
private:
// No comparison operators with other LocalPointerBases.
- bool operator==(const LocalPointerBase<T> &other);
- bool operator!=(const LocalPointerBase<T> &other);
+ bool operator==(const LocalPointerBase<T> &other) = delete;
+ bool operator!=(const LocalPointerBase<T> &other) = delete;
// No ownership sharing: No copy constructor, no assignment operator.
- LocalPointerBase(const LocalPointerBase<T> &other);
- void operator=(const LocalPointerBase<T> &other);
+ LocalPointerBase(const LocalPointerBase<T> &other) = delete;
+ void operator=(const LocalPointerBase<T> &other) = delete;
};
/**
@@ -548,46 +548,60 @@ public:
* @stable ICU 4.4
*/
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction) \
- class LocalPointerClassName : public LocalPointerBase<Type> { \
- public: \
- using LocalPointerBase<Type>::operator*; \
- using LocalPointerBase<Type>::operator->; \
- explicit LocalPointerClassName(Type *p=nullptr) : LocalPointerBase<Type>(p) {} \
- LocalPointerClassName(LocalPointerClassName &&src) noexcept \
- : LocalPointerBase<Type>(src.ptr) { \
- src.ptr=nullptr; \
- } \
- /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */ \
- explicit LocalPointerClassName(std::unique_ptr<Type, decltype(&closeFunction)> &&p) \
- : LocalPointerBase<Type>(p.release()) {} \
- ~LocalPointerClassName() { if (ptr != nullptr) { closeFunction(ptr); } } \
- LocalPointerClassName &operator=(LocalPointerClassName &&src) noexcept { \
- if (ptr != nullptr) { closeFunction(ptr); } \
- LocalPointerBase<Type>::ptr=src.ptr; \
- src.ptr=nullptr; \
- return *this; \
- } \
- /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */ \
- LocalPointerClassName &operator=(std::unique_ptr<Type, decltype(&closeFunction)> &&p) { \
- adoptInstead(p.release()); \
- return *this; \
- } \
- void swap(LocalPointerClassName &other) noexcept { \
- Type *temp=LocalPointerBase<Type>::ptr; \
- LocalPointerBase<Type>::ptr=other.ptr; \
- other.ptr=temp; \
- } \
- friend inline void swap(LocalPointerClassName &p1, LocalPointerClassName &p2) noexcept { \
- p1.swap(p2); \
- } \
- void adoptInstead(Type *p) { \
- if (ptr != nullptr) { closeFunction(ptr); } \
- ptr=p; \
- } \
- operator std::unique_ptr<Type, decltype(&closeFunction)> () && { \
- return std::unique_ptr<Type, decltype(&closeFunction)>(LocalPointerBase<Type>::orphan(), closeFunction); \
- } \
+ using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
+
+#ifndef U_IN_DOXYGEN
+namespace internal {
+/**
+ * Implementation, do not use directly: use U_DEFINE_LOCAL_OPEN_POINTER.
+ *
+ * @see U_DEFINE_LOCAL_OPEN_POINTER
+ * @internal
+ */
+template <typename Type, auto closeFunction>
+class LocalOpenPointer : public LocalPointerBase<Type> {
+ using LocalPointerBase<Type>::ptr;
+public:
+ using LocalPointerBase<Type>::operator*;
+ using LocalPointerBase<Type>::operator->;
+ explicit LocalOpenPointer(Type *p=nullptr) : LocalPointerBase<Type>(p) {}
+ LocalOpenPointer(LocalOpenPointer &&src) noexcept
+ : LocalPointerBase<Type>(src.ptr) {
+ src.ptr=nullptr;
+ }
+ /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */
+ explicit LocalOpenPointer(std::unique_ptr<Type, decltype(closeFunction)> &&p)
+ : LocalPointerBase<Type>(p.release()) {}
+ ~LocalOpenPointer() { if (ptr != nullptr) { closeFunction(ptr); } }
+ LocalOpenPointer &operator=(LocalOpenPointer &&src) noexcept {
+ if (ptr != nullptr) { closeFunction(ptr); }
+ LocalPointerBase<Type>::ptr=src.ptr;
+ src.ptr=nullptr;
+ return *this;
+ }
+ /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */
+ LocalOpenPointer &operator=(std::unique_ptr<Type, decltype(closeFunction)> &&p) {
+ adoptInstead(p.release());
+ return *this;
+ }
+ void swap(LocalOpenPointer &other) noexcept {
+ Type *temp=LocalPointerBase<Type>::ptr;
+ LocalPointerBase<Type>::ptr=other.ptr;
+ other.ptr=temp;
+ }
+ friend inline void swap(LocalOpenPointer &p1, LocalOpenPointer &p2) noexcept {
+ p1.swap(p2);
}
+ void adoptInstead(Type *p) {
+ if (ptr != nullptr) { closeFunction(ptr); }
+ ptr=p;
+ }
+ operator std::unique_ptr<Type, decltype(closeFunction)> () && {
+ return std::unique_ptr<Type, decltype(closeFunction)>(LocalPointerBase<Type>::orphan(), closeFunction);
+ }
+};
+} // namespace internal
+#endif
U_NAMESPACE_END
diff --git a/icu4c/source/common/unicode/locid.h b/icu4c/source/common/unicode/locid.h
index f0bdc7ca5..60282d623 100644
--- a/icu4c/source/common/unicode/locid.h
+++ b/icu4c/source/common/unicode/locid.h
@@ -195,51 +195,50 @@ class UnicodeString;
class U_COMMON_API Locale : public UObject {
public:
/** Useful constant for the Root locale. @stable ICU 4.4 */
- static const Locale &U_EXPORT2 getRoot(void);
+ static const Locale& U_EXPORT2 getRoot();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getEnglish(void);
+ static const Locale& U_EXPORT2 getEnglish();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getFrench(void);
+ static const Locale& U_EXPORT2 getFrench();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getGerman(void);
+ static const Locale& U_EXPORT2 getGerman();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getItalian(void);
+ static const Locale& U_EXPORT2 getItalian();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getJapanese(void);
+ static const Locale& U_EXPORT2 getJapanese();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getKorean(void);
+ static const Locale& U_EXPORT2 getKorean();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getChinese(void);
+ static const Locale& U_EXPORT2 getChinese();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getSimplifiedChinese(void);
+ static const Locale& U_EXPORT2 getSimplifiedChinese();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getTraditionalChinese(void);
+ static const Locale& U_EXPORT2 getTraditionalChinese();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getFrance(void);
+ static const Locale& U_EXPORT2 getFrance();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getGermany(void);
+ static const Locale& U_EXPORT2 getGermany();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getItaly(void);
+ static const Locale& U_EXPORT2 getItaly();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getJapan(void);
+ static const Locale& U_EXPORT2 getJapan();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getKorea(void);
+ static const Locale& U_EXPORT2 getKorea();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getChina(void);
+ static const Locale& U_EXPORT2 getChina();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getPRC(void);
+ static const Locale& U_EXPORT2 getPRC();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getTaiwan(void);
+ static const Locale& U_EXPORT2 getTaiwan();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getUK(void);
+ static const Locale& U_EXPORT2 getUK();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getUS(void);
+ static const Locale& U_EXPORT2 getUS();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getCanada(void);
+ static const Locale& U_EXPORT2 getCanada();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getCanadaFrench(void);
-
+ static const Locale& U_EXPORT2 getCanadaFrench();
/**
* Construct a default locale object, a Locale for the default locale ID.
@@ -274,10 +273,10 @@ public:
* @see uloc_getDefault
* @stable ICU 2.0
*/
- Locale( const char * language,
- const char * country = 0,
- const char * variant = 0,
- const char * keywordsAndValues = 0);
+ Locale(const char* language,
+ const char* country = nullptr,
+ const char* variant = nullptr,
+ const char* keywordsAndValues = nullptr);
/**
* Initializes a Locale object from another Locale object.
@@ -370,7 +369,7 @@ public:
* @system
* @stable ICU 2.0
*/
- static const Locale& U_EXPORT2 getDefault(void);
+ static const Locale& U_EXPORT2 getDefault();
/**
* Sets the default. Normally set once at the beginning of a process,
@@ -518,20 +517,20 @@ public:
* If this Locale is already in the maximal form, or not valid, or there is
* no data available for maximization, the Locale will be unchanged.
*
- * For example, "und-Zzzz" cannot be maximized, since there is no
+ * For example, "sh" cannot be maximized, since there is no
* reasonable maximization.
*
* Examples:
*
+ * "und_Zzzz" maximizes to "en_Latn_US"
+ *
* "en" maximizes to "en_Latn_US"
*
- * "de" maximizes to "de_Latn_US"
+ * "de" maximizes to "de_Latn_DE"
*
* "sr" maximizes to "sr_Cyrl_RS"
*
- * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
- *
- * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
+ * "zh_Hani" maximizes to "zh_Hani_CN"
*
* @param status error information if maximizing this Locale failed.
* If this Locale is not well-formed, the error code is
@@ -792,7 +791,7 @@ public:
* there is no Windows LCID value that corresponds to this locale, returns 0.
* @stable ICU 2.0
*/
- uint32_t getLCID(void) const;
+ uint32_t getLCID() const;
/**
* Returns whether this locale's script is written right-to-left.
@@ -944,7 +943,7 @@ public:
* Generates a hash code for the locale.
* @stable ICU 2.0
*/
- int32_t hashCode(void) const;
+ int32_t hashCode() const;
/**
* Sets the locale to bogus
@@ -961,7 +960,7 @@ public:
* @return false if it is a real locale, true if it is a bogus locale
* @stable ICU 2.1
*/
- inline UBool isBogus(void) const;
+ inline UBool isBogus() const;
/**
* Returns a list of all installed locales.
@@ -1147,7 +1146,7 @@ private:
/**
* Initialize the locale cache for commonly used locales
*/
- static Locale *getLocaleCache(void);
+ static Locale* getLocaleCache();
char language[ULOC_LANG_CAPACITY];
char script[ULOC_SCRIPT_CAPACITY];
@@ -1184,6 +1183,7 @@ Locale::operator!=(const Locale& other) const
template<typename StringClass> inline StringClass
Locale::toLanguageTag(UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return {}; }
StringClass result;
StringByteSink<StringClass> sink(&result);
toLanguageTag(sink, status);
@@ -1211,7 +1211,7 @@ Locale::getScript() const
inline const char *
Locale::getVariant() const
{
- return &baseName[variantBegin];
+ return fIsBogus ? "" : &baseName[variantBegin];
}
inline const char *
@@ -1223,6 +1223,7 @@ Locale::getName() const
template<typename StringClass, typename OutputIterator> inline void
Locale::getKeywords(OutputIterator iterator, UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return; }
LocalPointer<StringEnumeration> keys(createKeywords(status));
if (U_FAILURE(status) || keys.isNull()) {
return;
@@ -1240,6 +1241,7 @@ Locale::getKeywords(OutputIterator iterator, UErrorCode& status) const
template<typename StringClass, typename OutputIterator> inline void
Locale::getUnicodeKeywords(OutputIterator iterator, UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return; }
LocalPointer<StringEnumeration> keys(createUnicodeKeywords(status));
if (U_FAILURE(status) || keys.isNull()) {
return;
@@ -1257,6 +1259,7 @@ Locale::getUnicodeKeywords(OutputIterator iterator, UErrorCode& status) const
template<typename StringClass> inline StringClass
Locale::getKeywordValue(StringPiece keywordName, UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return {}; }
StringClass result;
StringByteSink<StringClass> sink(&result);
getKeywordValue(keywordName, sink, status);
@@ -1266,6 +1269,7 @@ Locale::getKeywordValue(StringPiece keywordName, UErrorCode& status) const
template<typename StringClass> inline StringClass
Locale::getUnicodeKeywordValue(StringPiece keywordName, UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return {}; }
StringClass result;
StringByteSink<StringClass> sink(&result);
getUnicodeKeywordValue(keywordName, sink, status);
@@ -1273,7 +1277,7 @@ Locale::getUnicodeKeywordValue(StringPiece keywordName, UErrorCode& status) cons
}
inline UBool
-Locale::isBogus(void) const {
+Locale::isBogus() const {
return fIsBogus;
}
diff --git a/icu4c/source/common/unicode/normlzr.h b/icu4c/source/common/unicode/normlzr.h
index 03a7aa080..0309bce53 100644
--- a/icu4c/source/common/unicode/normlzr.h
+++ b/icu4c/source/common/unicode/normlzr.h
@@ -466,7 +466,7 @@ public:
* @return the current normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 current(void);
+ UChar32 current();
/**
* Return the first character in the normalized text.
@@ -476,7 +476,7 @@ public:
* @return the first normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 first(void);
+ UChar32 first();
/**
* Return the last character in the normalized text.
@@ -486,7 +486,7 @@ public:
* @return the last normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 last(void);
+ UChar32 last();
/**
* Return the next character in the normalized text.
@@ -502,7 +502,7 @@ public:
* @return the next normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 next(void);
+ UChar32 next();
/**
* Return the previous character in the normalized text and decrement.
@@ -518,7 +518,7 @@ public:
* @return the previous normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 previous(void);
+ UChar32 previous();
/**
* Set the iteration position in the input text that is being normalized,
@@ -536,7 +536,7 @@ public:
* This is equivalent to setIndexOnly(startIndex)).
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- void reset(void);
+ void reset();
/**
* Retrieve the current iteration position in the input text that is
@@ -552,7 +552,7 @@ public:
* @return the current index in the input text
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- int32_t getIndex(void) const;
+ int32_t getIndex() const;
/**
* Retrieve the index of the start of the input text. This is the begin index
@@ -562,7 +562,7 @@ public:
* @return the smallest index in the input text where the Normalizer operates
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- int32_t startIndex(void) const;
+ int32_t startIndex() const;
/**
* Retrieve the index of the end of the input text. This is the end index
@@ -574,7 +574,7 @@ public:
* @return the first index in the input text where the Normalizer does not operate
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- int32_t endIndex(void) const;
+ int32_t endIndex() const;
/**
* Returns true when both iterators refer to the same character in the same
@@ -610,7 +610,7 @@ public:
* @return the hash code
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- int32_t hashCode(void) const;
+ int32_t hashCode() const;
//-------------------------------------------------------------------------
// Property access methods
@@ -643,7 +643,7 @@ public:
* @see #setMode
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UNormalizationMode getUMode(void) const;
+ UNormalizationMode getUMode() const;
/**
* Set options that affect this <code>Normalizer</code>'s operation.
@@ -749,7 +749,7 @@ private:
UBool previousNormalize();
void init();
- void clearBuffer(void);
+ void clearBuffer();
//-------------------------------------------------------------------------
// Private data
diff --git a/icu4c/source/common/unicode/parsepos.h b/icu4c/source/common/unicode/parsepos.h
index d33a812ad..99cdd7eda 100644
--- a/icu4c/source/common/unicode/parsepos.h
+++ b/icu4c/source/common/unicode/parsepos.h
@@ -129,7 +129,7 @@ public:
* @return the current index.
* @stable ICU 2.0
*/
- inline int32_t getIndex(void) const;
+ inline int32_t getIndex() const;
/**
* Set the current parse position.
@@ -152,7 +152,7 @@ public:
* error index has not been set.
* @stable ICU 2.0
*/
- inline int32_t getErrorIndex(void) const;
+ inline int32_t getErrorIndex() const;
/**
* ICU "poor man's RTTI", returns a UClassID for this class.
diff --git a/icu4c/source/common/unicode/platform.h b/icu4c/source/common/unicode/platform.h
index a99784366..7aca76c67 100644
--- a/icu4c/source/common/unicode/platform.h
+++ b/icu4c/source/common/unicode/platform.h
@@ -207,6 +207,17 @@
#endif
/**
+ * \def U_REAL_MSVC
+ * Defined if the compiler is the real MSVC compiler (and not something like
+ * Clang setting _MSC_VER in order to compile Windows code that requires it).
+ * Otherwise undefined.
+ * @internal
+ */
+#if (defined(_MSC_VER) && !(defined(__clang__) && __clang__)) || defined(U_IN_DOXYGEN)
+# define U_REAL_MSVC
+#endif
+
+/**
* \def CYGWINMSVC
* Defined if this is Windows with Cygwin, but using MSVC rather than gcc.
* Otherwise undefined.
@@ -302,51 +313,6 @@
# define U_PLATFORM_IS_DARWIN_BASED 0
#endif
-/**
- * \def U_HAVE_STDINT_H
- * Defines whether stdint.h is available. It is a C99 standard header.
- * We used to include inttypes.h which includes stdint.h but we usually do not need
- * the additional definitions from inttypes.h.
- * @internal
- */
-#ifdef U_HAVE_STDINT_H
- /* Use the predefined value. */
-#elif U_PLATFORM_USES_ONLY_WIN32_API
-# if defined(__BORLANDC__) || U_PLATFORM == U_PF_MINGW || (defined(_MSC_VER) && _MSC_VER>=1600)
- /* Windows Visual Studio 9 and below do not have stdint.h & inttypes.h, but VS 2010 adds them. */
-# define U_HAVE_STDINT_H 1
-# else
-# define U_HAVE_STDINT_H 0
-# endif
-#elif U_PLATFORM == U_PF_SOLARIS
- /* Solaris has inttypes.h but not stdint.h. */
-# define U_HAVE_STDINT_H 0
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
- /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-# define U_HAVE_STDINT_H 0
-#else
-# define U_HAVE_STDINT_H 1
-#endif
-
-/**
- * \def U_HAVE_INTTYPES_H
- * Defines whether inttypes.h is available. It is a C99 standard header.
- * We include inttypes.h where it is available but stdint.h is not.
- * @internal
- */
-#ifdef U_HAVE_INTTYPES_H
- /* Use the predefined value. */
-#elif U_PLATFORM == U_PF_SOLARIS
- /* Solaris has inttypes.h but not stdint.h. */
-# define U_HAVE_INTTYPES_H 1
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
- /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-# define U_HAVE_INTTYPES_H 1
-#else
- /* Most platforms have both inttypes.h and stdint.h, or neither. */
-# define U_HAVE_INTTYPES_H U_HAVE_STDINT_H
-#endif
-
/*===========================================================================*/
/** @{ Compiler and environment features */
/*===========================================================================*/
@@ -507,6 +473,8 @@
/* Otherwise use the predefined value. */
#elif !defined(__cplusplus)
# define U_CPLUSPLUS_VERSION 0
+#elif __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
+# define U_CPLUSPLUS_VERSION 17
#elif __cplusplus >= 201402L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
# define U_CPLUSPLUS_VERSION 14
#elif __cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)
@@ -754,9 +722,9 @@
/*
* Notes:
* C++11 and C11 require support for UTF-16 literals
- * TODO: Fix for plain C. Doesn't work on Mac.
+ * Doesn't work on Mac C11 (see workaround in ptypes.h).
*/
-# if U_CPLUSPLUS_VERSION >= 11 || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
+# if defined(__cplusplus) || !U_PLATFORM_IS_DARWIN_BASED
# define U_HAVE_CHAR16_T 1
# else
# define U_HAVE_CHAR16_T 0
diff --git a/icu4c/source/common/unicode/ptypes.h b/icu4c/source/common/unicode/ptypes.h
index 70324ffee..270a729cc 100644
--- a/icu4c/source/common/unicode/ptypes.h
+++ b/icu4c/source/common/unicode/ptypes.h
@@ -42,89 +42,25 @@
/* NULL, size_t, wchar_t */
#include <stddef.h>
-/*
- * If all compilers provided all of the C99 headers and types,
- * we would just unconditionally #include <stdint.h> here
- * and not need any of the stuff after including platform.h.
- */
-
-/* Find out if we have stdint.h etc. */
+/* More platform-specific definitions. */
#include "unicode/platform.h"
/*===========================================================================*/
/* Generic data types */
/*===========================================================================*/
-/* If your platform does not have the <stdint.h> header, you may
- need to edit the typedefs in the #else section below.
- Use #if...#else...#endif with predefined compiler macros if possible. */
-#if U_HAVE_STDINT_H
-
-/*
- * We mostly need <stdint.h> (which defines the standard integer types) but not <inttypes.h>.
- * <inttypes.h> includes <stdint.h> and adds the printf/scanf helpers PRId32, SCNx16 etc.
- * which we almost never use, plus stuff like imaxabs() which we never use.
- */
#include <stdint.h>
-#if U_PLATFORM == U_PF_OS390
-/* The features header is needed to get (u)int64_t sometimes. */
-#include <features.h>
-/* z/OS has <stdint.h>, but some versions are missing uint8_t (APAR PK62248). */
-#if !defined(__uint8_t)
-#define __uint8_t 1
-typedef unsigned char uint8_t;
-#endif
-#endif /* U_PLATFORM == U_PF_OS390 */
-
-#elif U_HAVE_INTTYPES_H
-
-# include <inttypes.h>
-
-#else /* neither U_HAVE_STDINT_H nor U_HAVE_INTTYPES_H */
-
-/// \cond
-#if ! U_HAVE_INT8_T
-typedef signed char int8_t;
-#endif
-
-#if ! U_HAVE_UINT8_T
-typedef unsigned char uint8_t;
-#endif
-
-#if ! U_HAVE_INT16_T
-typedef signed short int16_t;
-#endif
-
-#if ! U_HAVE_UINT16_T
-typedef unsigned short uint16_t;
-#endif
-
-#if ! U_HAVE_INT32_T
-typedef signed int int32_t;
-#endif
-
-#if ! U_HAVE_UINT32_T
-typedef unsigned int uint32_t;
+// C++11 and C11 both specify that the data type char16_t should exist, C++11
+// as a keyword and C11 as a typedef in the uchar.h header file, but not all
+// implementations (looking at you, Apple, spring 2024) actually do this, so
+// ICU4C must detect and deal with that.
+#if !defined(__cplusplus) && !defined(U_IN_DOXYGEN)
+# if U_HAVE_CHAR16_T
+# include <uchar.h>
+# else
+ typedef uint16_t char16_t;
+# endif
#endif
-#if ! U_HAVE_INT64_T
-#ifdef _MSC_VER
- typedef signed __int64 int64_t;
-#else
- typedef signed long long int64_t;
-#endif
-#endif
-
-#if ! U_HAVE_UINT64_T
-#ifdef _MSC_VER
- typedef unsigned __int64 uint64_t;
-#else
- typedef unsigned long long uint64_t;
-#endif
-#endif
-/// \endcond
-
-#endif /* U_HAVE_STDINT_H / U_HAVE_INTTYPES_H */
-
#endif /* _PTYPES_H */
diff --git a/icu4c/source/common/unicode/rbbi.h b/icu4c/source/common/unicode/rbbi.h
index 045238ac5..659e3e46b 100644
--- a/icu4c/source/common/unicode/rbbi.h
+++ b/icu4c/source/common/unicode/rbbi.h
@@ -44,7 +44,7 @@ class UnhandledEngine;
class UStack;
-#ifndef U_HIDE_DRAFT_API
+#ifndef U_HIDE_INTERNAL_API
/**
* The ExternalBreakEngine class define an abstract interface for the host environment
* to provide a low level facility to break text for unicode text in script that the text boundary
@@ -103,7 +103,7 @@ class ExternalBreakEngine : public UObject {
int32_t* foundBreaks, int32_t foundBreaksCapacity,
UErrorCode& status) const = 0;
};
-#endif /* U_HIDE_DRAFT_API */
+#endif /* U_HIDE_INTERNAL_API */
/**
@@ -388,14 +388,14 @@ public:
* @return A hash code
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const;
+ virtual int32_t hashCode() const;
/**
* Returns the description used to create this iterator
* @return the description used to create this iterator
* @stable ICU 2.0
*/
- virtual const UnicodeString& getRules(void) const;
+ virtual const UnicodeString& getRules() const;
//=======================================================================
// BreakIterator overrides
@@ -425,8 +425,7 @@ public:
* @return An iterator over the text being analyzed.
* @stable ICU 2.0
*/
- virtual CharacterIterator& getText(void) const override;
-
+ virtual CharacterIterator& getText() const override;
/**
* Get a UText for the text being analyzed.
@@ -486,14 +485,14 @@ public:
* @return The offset of the beginning of the text, zero.
* @stable ICU 2.0
*/
- virtual int32_t first(void) override;
+ virtual int32_t first() override;
/**
* Sets the current iteration position to the end of the text.
* @return The text's past-the-end offset.
* @stable ICU 2.0
*/
- virtual int32_t last(void) override;
+ virtual int32_t last() override;
/**
* Advances the iterator either forward or backward the specified number of steps.
@@ -512,14 +511,14 @@ public:
* @return The position of the first boundary after this one.
* @stable ICU 2.0
*/
- virtual int32_t next(void) override;
+ virtual int32_t next() override;
/**
* Moves the iterator backwards, to the last boundary preceding this one.
* @return The position of the last boundary position preceding this one.
* @stable ICU 2.0
*/
- virtual int32_t previous(void) override;
+ virtual int32_t previous() override;
/**
* Sets the iterator to refer to the first boundary position following
@@ -557,8 +556,7 @@ public:
* @return The current iteration position.
* @stable ICU 2.0
*/
- virtual int32_t current(void) const override;
-
+ virtual int32_t current() const override;
/**
* Return the status tag from the break rule that determined the boundary at
@@ -629,7 +627,7 @@ public:
* other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Returns the class ID for this class. This is useful only for
@@ -642,7 +640,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -799,7 +797,7 @@ private:
void dumpTables();
#endif /* U_HIDE_INTERNAL_API */
-#ifndef U_HIDE_DRAFT_API
+#ifndef U_HIDE_INTERNAL_API
/**
* Register a new external break engine. The external break engine will be adopted.
* Because ICU may choose to cache break engine internally, this must
@@ -811,7 +809,7 @@ private:
*/
static void U_EXPORT2 registerExternalBreakEngine(
ExternalBreakEngine* toAdopt, UErrorCode& status);
-#endif /* U_HIDE_DRAFT_API */
+#endif /* U_HIDE_INTERNAL_API */
};
diff --git a/icu4c/source/common/unicode/resbund.h b/icu4c/source/common/unicode/resbund.h
index 30fc2ac0a..396537172 100644
--- a/icu4c/source/common/unicode/resbund.h
+++ b/icu4c/source/common/unicode/resbund.h
@@ -209,8 +209,7 @@ public:
* @return number of resources in a given resource.
* @stable ICU 2.0
*/
- int32_t
- getSize(void) const;
+ int32_t getSize() const;
/**
* returns a string from a string resource type
@@ -289,16 +288,14 @@ public:
* @return true if there are more elements, false if there is no more elements
* @stable ICU 2.0
*/
- UBool
- hasNext(void) const;
+ UBool hasNext() const;
/**
* Resets the internal context of a resource so that iteration starts from the first element.
*
* @stable ICU 2.0
*/
- void
- resetIterator(void);
+ void resetIterator();
/**
* Returns the key associated with this resource. Not all the resources have a key - only
@@ -307,8 +304,7 @@ public:
* @return a key associated to this resource, or nullptr if it doesn't have a key
* @stable ICU 2.0
*/
- const char*
- getKey(void) const;
+ const char* getKey() const;
/**
* Gets the locale ID of the resource bundle as a string.
@@ -317,9 +313,7 @@ public:
* @return the locale ID of the resource bundle as a string
* @stable ICU 2.0
*/
- const char*
- getName(void) const;
-
+ const char* getName() const;
/**
* Returns the type of a resource. Available types are defined in enum UResType
@@ -327,8 +321,7 @@ public:
* @return type of the given resource.
* @stable ICU 2.0
*/
- UResType
- getType(void) const;
+ UResType getType() const;
/**
* Returns the next resource in a given resource or nullptr if there are no more resources
@@ -424,8 +417,7 @@ public:
* @see getVersion
* @deprecated ICU 2.8 Use getVersion instead.
*/
- const char*
- getVersionNumber(void) const;
+ const char* getVersionNumber() const;
#endif /* U_HIDE_DEPRECATED_API */
/**
@@ -445,8 +437,7 @@ public:
* @return a Locale object
* @deprecated ICU 2.8 Use getLocale(ULocDataLocaleType type, UErrorCode &status) overload instead.
*/
- const Locale&
- getLocale(void) const;
+ const Locale& getLocale() const;
#endif /* U_HIDE_DEPRECATED_API */
/**
diff --git a/icu4c/source/common/unicode/schriter.h b/icu4c/source/common/unicode/schriter.h
index a2ab17982..96f03604a 100644
--- a/icu4c/source/common/unicode/schriter.h
+++ b/icu4c/source/common/unicode/schriter.h
@@ -156,14 +156,14 @@ public:
* @return a class ID for this object.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return a class ID for this class (not really public)
* @return a class ID for this class
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
protected:
/**
diff --git a/icu4c/source/common/unicode/simpleformatter.h b/icu4c/source/common/unicode/simpleformatter.h
index 7f58106fa..33bdd6d48 100644
--- a/icu4c/source/common/unicode/simpleformatter.h
+++ b/icu4c/source/common/unicode/simpleformatter.h
@@ -25,11 +25,9 @@
U_NAMESPACE_BEGIN
// Forward declaration:
-namespace number {
-namespace impl {
+namespace number::impl {
class SimpleModifier;
}
-}
/**
* Formats simple patterns like "{1} was born in {0}".
diff --git a/icu4c/source/common/unicode/stringpiece.h b/icu4c/source/common/unicode/stringpiece.h
index df7f36089..6f2a50eaf 100644
--- a/icu4c/source/common/unicode/stringpiece.h
+++ b/icu4c/source/common/unicode/stringpiece.h
@@ -130,13 +130,13 @@ class U_COMMON_API StringPiece : public UMemory {
* @stable ICU 65
*/
template <typename T,
- typename = typename std::enable_if<
- (std::is_same<decltype(T().data()), const char*>::value
+ typename = std::enable_if_t<
+ (std::is_same_v<decltype(T().data()), const char*>
#if defined(__cpp_char8_t)
- || std::is_same<decltype(T().data()), const char8_t*>::value
+ || std::is_same_v<decltype(T().data()), const char8_t*>
#endif
) &&
- std::is_same<decltype(T().size()), size_t>::value>::type>
+ std::is_same_v<decltype(T().size()), size_t>>>
StringPiece(T str)
: ptr_(reinterpret_cast<const char*>(str.data())),
length_(static_cast<int32_t>(str.size())) {}
diff --git a/icu4c/source/common/unicode/uchar.h b/icu4c/source/common/unicode/uchar.h
index 747089133..4572230d9 100644
--- a/icu4c/source/common/unicode/uchar.h
+++ b/icu4c/source/common/unicode/uchar.h
@@ -25,6 +25,7 @@
#ifndef UCHAR_H
#define UCHAR_H
+#include <stdbool.h>
#include "unicode/utypes.h"
#include "unicode/stringoptions.h"
#include "unicode/ucpmap.h"
@@ -668,12 +669,21 @@ typedef enum UProperty {
* @stable ICU 63
*/
UCHAR_VERTICAL_ORIENTATION=0x1018,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Enumerated property Identifier_Status.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ * @draft ICU 75
+ */
+ UCHAR_IDENTIFIER_STATUS=0x1019,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for enumerated/integer Unicode properties.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_INT_LIMIT=0x1019,
+ UCHAR_INT_LIMIT=0x101A,
#endif // U_HIDE_DEPRECATED_API
/** Bitmask property General_Category_Mask.
@@ -774,12 +784,28 @@ typedef enum UProperty {
UCHAR_SCRIPT_EXTENSIONS=0x7000,
/** First constant for Unicode properties with unusual value types. @stable ICU 4.6 */
UCHAR_OTHER_PROPERTY_START=UCHAR_SCRIPT_EXTENSIONS,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Miscellaneous property Identifier_Type.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Corresponds to u_hasIDType() and u_getIDTypes().
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @see u_hasIDType
+ * @see u_getIDTypes
+ * @draft ICU 75
+ */
+ UCHAR_IDENTIFIER_TYPE=0x7001,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for Unicode properties with unusual value types.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_OTHER_PROPERTY_LIMIT=0x7001,
+ UCHAR_OTHER_PROPERTY_LIMIT=0x7002,
#endif // U_HIDE_DEPRECATED_API
/** Represents a nonexistent or invalid property or property value. @stable ICU 2.4 */
@@ -2701,6 +2727,68 @@ typedef enum UVerticalOrientation {
U_VO_UPRIGHT,
} UVerticalOrientation;
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Identifier Status constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UCHAR_IDENTIFIER_STATUS
+ * @draft ICU 75
+ */
+typedef enum UIdentifierStatus {
+ /*
+ * Note: UIdentifierStatus constants are parsed by preparseucd.py.
+ * It matches lines like
+ * U_ID_STATUS_<Unicode Identifier_Status value name>
+ */
+
+ /** @draft ICU 75 */
+ U_ID_STATUS_RESTRICTED,
+ /** @draft ICU 75 */
+ U_ID_STATUS_ALLOWED,
+} UIdentifierStatus;
+
+/**
+ * Identifier Type constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UCHAR_IDENTIFIER_TYPE
+ * @draft ICU 75
+ */
+typedef enum UIdentifierType {
+ /*
+ * Note: UIdentifierType constants are parsed by preparseucd.py.
+ * It matches lines like
+ * U_ID_TYPE_<Unicode Identifier_Type value name>
+ */
+
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_CHARACTER,
+ /** @draft ICU 75 */
+ U_ID_TYPE_DEPRECATED,
+ /** @draft ICU 75 */
+ U_ID_TYPE_DEFAULT_IGNORABLE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_NFKC,
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_XID,
+ /** @draft ICU 75 */
+ U_ID_TYPE_EXCLUSION,
+ /** @draft ICU 75 */
+ U_ID_TYPE_OBSOLETE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_TECHNICAL,
+ /** @draft ICU 75 */
+ U_ID_TYPE_UNCOMMON_USE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_LIMITED_USE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_INCLUSION,
+ /** @draft ICU 75 */
+ U_ID_TYPE_RECOMMENDED,
+} UIdentifierType;
+#endif // U_HIDE_DRAFT_API
+
/**
* Check a binary Unicode property for a code point.
*
@@ -3905,6 +3993,59 @@ u_isIDStart(UChar32 c);
U_CAPI UBool U_EXPORT2
u_isIDPart(UChar32 c);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Does the set of Identifier_Type values code point c contain the given type?
+ *
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @param c code point
+ * @param type Identifier_Type to check
+ * @return true if type is in Identifier_Type(c)
+ * @draft ICU 75
+ */
+U_CAPI bool U_EXPORT2
+u_hasIDType(UChar32 c, UIdentifierType type);
+
+/**
+ * Writes code point c's Identifier_Type as a list of UIdentifierType values
+ * to the output types array and returns the number of types.
+ *
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ * There is always at least one type.
+ * The order of output values is undefined.
+ * Each type is output at most once;
+ * there cannot be more output values than UIdentifierType constants.
+ * In addition, only some of the types can be combined with others,
+ * and usually only a small number of types occur together.
+ * Future versions might add additional types.
+ * See UTS #39 and its data files for details.
+ *
+ * If there are more than capacity types to be written, then
+ * U_BUFFER_OVERFLOW_ERROR is set and the number of types is returned.
+ * (Usual ICU buffer handling behavior.)
+ *
+ * @param c code point
+ * @param types output array
+ * @param capacity capacity of the array
+ * @param pErrorCode Standard ICU error code. Its input value must
+ * pass the U_SUCCESS() test, or else the function returns
+ * immediately. Check for U_FAILURE() on output or use with
+ * function chaining. (See User Guide for details.)
+ * @return number of values in c's Identifier_Type,
+ * written to types unless U_BUFFER_OVERFLOW_ERROR indicates insufficient capacity
+ * @draft ICU 75
+ */
+U_CAPI int32_t U_EXPORT2
+u_getIDTypes(UChar32 c, UIdentifierType *types, int32_t capacity, UErrorCode *pErrorCode);
+#endif // U_HIDE_DRAFT_API
+
/**
* Determines if the specified character should be regarded
* as an ignorable character in an identifier,
diff --git a/icu4c/source/common/unicode/uchriter.h b/icu4c/source/common/unicode/uchriter.h
index 9fae5e7de..bd2f29877 100644
--- a/icu4c/source/common/unicode/uchriter.h
+++ b/icu4c/source/common/unicode/uchriter.h
@@ -126,7 +126,7 @@ public:
* @return the hash code.
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const override;
+ virtual int32_t hashCode() const override;
/**
* Returns a new UCharCharacterIterator referring to the same
@@ -144,7 +144,7 @@ public:
* @return the first code unit in its iteration range.
* @stable ICU 2.0
*/
- virtual char16_t first(void) override;
+ virtual char16_t first() override;
/**
* Sets the iterator to refer to the first code unit in its
@@ -154,7 +154,7 @@ public:
* @return the first code unit in its iteration range
* @stable ICU 2.0
*/
- virtual char16_t firstPostInc(void) override;
+ virtual char16_t firstPostInc() override;
/**
* Sets the iterator to refer to the first code point in its
@@ -165,7 +165,7 @@ public:
* @return the first code point in its iteration range
* @stable ICU 2.0
*/
- virtual UChar32 first32(void) override;
+ virtual UChar32 first32() override;
/**
* Sets the iterator to refer to the first code point in its
@@ -175,7 +175,7 @@ public:
* @return the first code point in its iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 first32PostInc(void) override;
+ virtual UChar32 first32PostInc() override;
/**
* Sets the iterator to refer to the last code unit in its
@@ -184,7 +184,7 @@ public:
* @return the last code unit in its iteration range.
* @stable ICU 2.0
*/
- virtual char16_t last(void) override;
+ virtual char16_t last() override;
/**
* Sets the iterator to refer to the last code point in its
@@ -193,7 +193,7 @@ public:
* @return the last code point in its iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 last32(void) override;
+ virtual UChar32 last32() override;
/**
* Sets the iterator to refer to the "position"-th code unit
@@ -223,14 +223,14 @@ public:
* @return the code unit the iterator currently refers to.
* @stable ICU 2.0
*/
- virtual char16_t current(void) const override;
+ virtual char16_t current() const override;
/**
* Returns the code point the iterator currently refers to.
* @return the code point the iterator currently refers to.
* @stable ICU 2.0
*/
- virtual UChar32 current32(void) const override;
+ virtual UChar32 current32() const override;
/**
* Advances to the next code unit in the iteration range (toward
@@ -239,7 +239,7 @@ public:
* @return the next code unit in the iteration range.
* @stable ICU 2.0
*/
- virtual char16_t next(void) override;
+ virtual char16_t next() override;
/**
* Gets the current code unit for returning and advances to the next code unit
@@ -249,7 +249,7 @@ public:
* @return the current code unit.
* @stable ICU 2.0
*/
- virtual char16_t nextPostInc(void) override;
+ virtual char16_t nextPostInc() override;
/**
* Advances to the next code point in the iteration range (toward
@@ -261,7 +261,7 @@ public:
* @return the next code point in the iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 next32(void) override;
+ virtual UChar32 next32() override;
/**
* Gets the current code point for returning and advances to the next code point
@@ -271,7 +271,7 @@ public:
* @return the current point.
* @stable ICU 2.0
*/
- virtual UChar32 next32PostInc(void) override;
+ virtual UChar32 next32PostInc() override;
/**
* Returns false if there are no more code units or code points
@@ -291,7 +291,7 @@ public:
* @return the previous code unit in the iteration range.
* @stable ICU 2.0
*/
- virtual char16_t previous(void) override;
+ virtual char16_t previous() override;
/**
* Advances to the previous code point in the iteration range (toward
@@ -300,7 +300,7 @@ public:
* @return the previous code point in the iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 previous32(void) override;
+ virtual UChar32 previous32() override;
/**
* Returns false if there are no more code units or code points
@@ -363,14 +363,14 @@ public:
* @return a class ID for this class
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Return a class ID for this object (not really public)
* @return a class ID for this object.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
protected:
/**
diff --git a/icu4c/source/common/unicode/ucnv.h b/icu4c/source/common/unicode/ucnv.h
index 20c173b66..4a7972c95 100644
--- a/icu4c/source/common/unicode/ucnv.h
+++ b/icu4c/source/common/unicode/ucnv.h
@@ -344,8 +344,6 @@ ucnv_compareNames(const char *name1, const char *name2);
* other than its an alias starting with the letters "cp". Please do not
* associate any meaning to these aliases.</p>
*
- * \snippet samples/ucnv/convsamp.cpp ucnv_open
- *
* @param converterName Name of the coded character set table.
* This may have options appended to the string.
* IANA alias character set names, IBM CCSIDs starting with "ibm-",
@@ -1986,7 +1984,6 @@ ucnv_usesFallback(const UConverter *cnv);
* instead of the input signature bytes.
* <p>
* Usage:
- * \snippet samples/ucnv/convsamp.cpp ucnv_detectUnicodeSignature
*
* @param source The source string in which the signature should be detected.
* @param sourceLength Length of the input string, or -1 if terminated with a NUL byte.
diff --git a/icu4c/source/common/unicode/uconfig.h b/icu4c/source/common/unicode/uconfig.h
index 29d8b33b7..8017f3079 100644
--- a/icu4c/source/common/unicode/uconfig.h
+++ b/icu4c/source/common/unicode/uconfig.h
@@ -427,6 +427,18 @@
#endif
/**
+ * \def UCONFIG_NO_MF2
+ * This switch turns off the experimental MessageFormat 2.0 API.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+#ifndef UCONFIG_NO_MF2
+// Android patch: Disable experimental MF2 on Android.
+# define UCONFIG_NO_MF2 1
+#endif
+
+/**
* \def UCONFIG_NO_TRANSLITERATION
* This switch turns off transliteration.
*
diff --git a/icu4c/source/common/unicode/uloc.h b/icu4c/source/common/unicode/uloc.h
index 21179c1b6..9cd7f5e1b 100644
--- a/icu4c/source/common/unicode/uloc.h
+++ b/icu4c/source/common/unicode/uloc.h
@@ -399,6 +399,9 @@ uloc_setDefault(const char* localeID,
/**
* Gets the language code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the ISO language code with
* @param language the language code for localeID
* @param languageCapacity the size of the language buffer to store the
@@ -417,6 +420,9 @@ uloc_getLanguage(const char* localeID,
/**
* Gets the script code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the ISO language code with
* @param script the language code for localeID
* @param scriptCapacity the size of the language buffer to store the
@@ -435,6 +441,9 @@ uloc_getScript(const char* localeID,
/**
* Gets the country code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the country code with
* @param country the country code for localeID
* @param countryCapacity the size of the country buffer to store the
@@ -453,6 +462,9 @@ uloc_getCountry(const char* localeID,
/**
* Gets the variant code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the variant code with
* @param variant the variant code for localeID
* @param variantCapacity the size of the variant buffer to store the
@@ -471,6 +483,10 @@ uloc_getVariant(const char* localeID,
/**
* Gets the full name for the specified locale.
+ *
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* Note: This has the effect of 'canonicalizing' the ICU locale ID to
* a certain extent. Upper and lower case are set as needed.
* It does NOT map aliased names in any way.
@@ -1158,19 +1174,20 @@ uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity,
*
* If localeID is already in the maximal form, or there is no data available
* for maximization, it will be copied to the output buffer. For example,
- * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+ * "sh" cannot be maximized, since there is no reasonable maximization.
*
* Examples:
*
+ * "und_Zzzz" maximizes to "en_Latn_US"
+ *
* "en" maximizes to "en_Latn_US"
*
- * "de" maximizes to "de_Latn_US"
+ * "de" maximizes to "de_Latn_DE"
*
* "sr" maximizes to "sr_Cyrl_RS"
*
- * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
+ * "zh_Hani" maximizes to "zh_Hani_CN"
*
- * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
*
* @param localeID The locale to maximize
* @param maximizedLocaleID The maximized locale
diff --git a/icu4c/source/common/unicode/ulocbuilder.h b/icu4c/source/common/unicode/ulocbuilder.h
index f2e98612f..9b147292f 100644
--- a/icu4c/source/common/unicode/ulocbuilder.h
+++ b/icu4c/source/common/unicode/ulocbuilder.h
@@ -74,7 +74,7 @@ typedef struct ULocaleBuilder ULocaleBuilder;
* @draft ICU 74
*/
U_CAPI ULocaleBuilder* U_EXPORT2
-ulocbld_open();
+ulocbld_open(void);
/**
* Close the builder and destroy it's internal states.
diff --git a/icu4c/source/common/unicode/umachine.h b/icu4c/source/common/unicode/umachine.h
index 545abef59..c501b253b 100644
--- a/icu4c/source/common/unicode/umachine.h
+++ b/icu4c/source/common/unicode/umachine.h
@@ -370,22 +370,14 @@ typedef int8_t UBool;
#if 1
// #if 1 is normal. UChar defaults to char16_t in C++.
// For configuration testing of UChar=uint16_t temporarily change this to #if 0.
- // The intltest Makefile #defines UCHAR_TYPE=char16_t,
- // so we only #define it to uint16_t if it is undefined so far.
-#elif !defined(UCHAR_TYPE)
+#else
# define UCHAR_TYPE uint16_t
#endif
-#if defined(U_COMBINED_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION) || \
- defined(U_I18N_IMPLEMENTATION) || defined(U_IO_IMPLEMENTATION)
- // Inside the ICU library code, never configurable.
+#if defined(U_ALL_IMPLEMENTATION) || !defined(UCHAR_TYPE)
typedef char16_t UChar;
-#elif defined(UCHAR_TYPE)
- typedef UCHAR_TYPE UChar;
-#elif U_CPLUSPLUS_VERSION != 0
- typedef char16_t UChar; // C++
#else
- typedef uint16_t UChar; // C
+ typedef UCHAR_TYPE UChar;
#endif
/**
diff --git a/icu4c/source/common/unicode/unifunct.h b/icu4c/source/common/unicode/unifunct.h
index 875130249..4aeb0f5d7 100644
--- a/icu4c/source/common/unicode/unifunct.h
+++ b/icu4c/source/common/unicode/unifunct.h
@@ -83,7 +83,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID <b>polymorphically</b>. This method
@@ -100,7 +100,7 @@ public:
* different class IDs.
* @stable ICU 2.4
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
/**
* Set the data object associated with this functor. The data
diff --git a/icu4c/source/common/unicode/uniset.h b/icu4c/source/common/unicode/uniset.h
index 84774d9f3..127e4ce06 100644
--- a/icu4c/source/common/unicode/uniset.h
+++ b/icu4c/source/common/unicode/uniset.h
@@ -333,7 +333,7 @@ public:
* @see setToBogus()
* @stable ICU 4.0
*/
- inline UBool isBogus(void) const;
+ inline UBool isBogus() const;
/**
* Make this UnicodeSet object invalid.
@@ -522,7 +522,7 @@ public:
* @see Object#hashCode()
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const;
+ virtual int32_t hashCode() const;
/**
* Get a UnicodeSet pointer from a USet
@@ -792,7 +792,7 @@ public:
* @stable ICU 2.0
* @see getRangeCount
*/
- virtual int32_t size(void) const;
+ virtual int32_t size() const;
/**
* Returns <tt>true</tt> if this set contains no elements.
@@ -800,7 +800,7 @@ public:
* @return <tt>true</tt> if this set contains no elements.
* @stable ICU 2.0
*/
- virtual UBool isEmpty(void) const;
+ virtual UBool isEmpty() const;
/**
* @return true if this set contains multi-character strings or the empty string.
@@ -1394,7 +1394,7 @@ public:
* A frozen set will not be modified.
* @stable ICU 2.0
*/
- virtual UnicodeSet& clear(void);
+ virtual UnicodeSet& clear();
/**
* Close this set over the given attribute. For the attribute
@@ -1440,7 +1440,7 @@ public:
* @see #getRangeEnd
* @stable ICU 2.4
*/
- virtual int32_t getRangeCount(void) const;
+ virtual int32_t getRangeCount() const;
/**
* Iteration method that returns the first character in the
@@ -1529,7 +1529,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Implement UnicodeFunctor API.
@@ -1539,9 +1539,9 @@ public:
* different class IDs.
* @stable ICU 2.4
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
-private:
+ private:
// Private API for the USet API
@@ -1602,7 +1602,7 @@ private:
bool ensureBufferCapacity(int32_t newLen);
- void swapBuffers(void);
+ void swapBuffers();
UBool allocateStrings(UErrorCode &status);
int32_t stringsSize() const;
diff --git a/icu4c/source/common/unicode/unistr.h b/icu4c/source/common/unicode/unistr.h
index 4074e8d07..a41e6358f 100644
--- a/icu4c/source/common/unicode/unistr.h
+++ b/icu4c/source/common/unicode/unistr.h
@@ -1611,9 +1611,9 @@ public:
* @stable ICU 2.0
*/
inline int32_t extract(int32_t start,
- int32_t startLength,
- char *target,
- const char *codepage = 0) const;
+ int32_t startLength,
+ char* target,
+ const char* codepage = nullptr) const;
/**
* Copy the characters in the range
@@ -1759,7 +1759,7 @@ public:
* @see countChar32
* @stable ICU 2.0
*/
- inline int32_t length(void) const;
+ inline int32_t length() const;
/**
* Count Unicode code points in the length char16_t code units of the string.
@@ -1808,7 +1808,7 @@ public:
* @return true if this string contains 0 characters, false otherwise.
* @stable ICU 2.0
*/
- inline UBool isEmpty(void) const;
+ inline UBool isEmpty() const;
/**
* Return the capacity of the internal buffer of the UnicodeString object.
@@ -1819,7 +1819,7 @@ public:
* @see getBuffer
* @stable ICU 2.0
*/
- inline int32_t getCapacity(void) const;
+ inline int32_t getCapacity() const;
/* Other operations */
@@ -1828,7 +1828,7 @@ public:
* @return The hash code of this UnicodeString.
* @stable ICU 2.0
*/
- inline int32_t hashCode(void) const;
+ inline int32_t hashCode() const;
/**
* Determine if this object contains a valid string.
@@ -1842,8 +1842,7 @@ public:
* @see setToBogus()
* @stable ICU 2.0
*/
- inline UBool isBogus(void) const;
-
+ inline UBool isBogus() const;
//========================================
// Write operations
@@ -2624,8 +2623,7 @@ public:
* @return a reference to this
* @stable ICU 2.0
*/
- UnicodeString& trim(void);
-
+ UnicodeString& trim();
/* Miscellaneous operations */
@@ -2634,7 +2632,7 @@ public:
* @return a reference to this
* @stable ICU 2.0
*/
- inline UnicodeString& reverse(void);
+ inline UnicodeString& reverse();
/**
* Reverse the range [`start`, `start + length`) in
@@ -2653,7 +2651,7 @@ public:
* @return A reference to this.
* @stable ICU 2.0
*/
- UnicodeString& toUpper(void);
+ UnicodeString& toUpper();
/**
* Convert the characters in this to UPPER CASE following the conventions of
@@ -2670,7 +2668,7 @@ public:
* @return A reference to this.
* @stable ICU 2.0
*/
- UnicodeString& toLower(void);
+ UnicodeString& toLower();
/**
* Convert the characters in this to lower case following the conventions of
@@ -3590,12 +3588,12 @@ private:
int32_t length);
// calculate hash code
- int32_t doHashCode(void) const;
+ int32_t doHashCode() const;
// get pointer to start of array
// these do not check for kOpenGetBuffer, unlike the public getBuffer() function
- inline char16_t* getArrayStart(void);
- inline const char16_t* getArrayStart(void) const;
+ inline char16_t* getArrayStart();
+ inline const char16_t* getArrayStart() const;
inline UBool hasShortLength() const;
inline int32_t getShortLength() const;
@@ -3622,7 +3620,7 @@ private:
UBool allocate(int32_t capacity);
// release the array if owned
- void releaseArray(void);
+ void releaseArray();
// turn a bogus string into an empty one
void unBogus();
@@ -3684,10 +3682,10 @@ private:
* Return false if memory could not be allocated.
*/
UBool cloneArrayIfNeeded(int32_t newCapacity = -1,
- int32_t growCapacity = -1,
- UBool doCopyArray = true,
- int32_t **pBufferToDelete = 0,
- UBool forceClone = false);
+ int32_t growCapacity = -1,
+ UBool doCopyArray = true,
+ int32_t** pBufferToDelete = nullptr,
+ UBool forceClone = false);
/**
* Common function for UnicodeString case mappings.
@@ -3702,9 +3700,9 @@ private:
UStringCaseMapper *stringCaseMapper);
// ref counting
- void addRef(void);
- int32_t removeRef(void);
- int32_t refCount(void) const;
+ void addRef();
+ int32_t removeRef();
+ int32_t refCount() const;
// constants
enum {
@@ -4510,7 +4508,7 @@ UnicodeString::extract(int32_t start,
{
// This dstSize value will be checked explicitly
- return extract(start, _length, dst, dst!=0 ? 0xffffffff : 0, codepage);
+ return extract(start, _length, dst, dst != nullptr ? 0xffffffff : 0, codepage);
}
#endif
diff --git a/icu4c/source/common/unicode/urename.h b/icu4c/source/common/unicode/urename.h
index 74f2cae51..c94592ec0 100644
--- a/icu4c/source/common/unicode/urename.h
+++ b/icu4c/source/common/unicode/urename.h
@@ -272,6 +272,7 @@
#define u_getDataVersion U_ICU_ENTRY_POINT_RENAME(u_getDataVersion)
#define u_getDefaultConverter U_ICU_ENTRY_POINT_RENAME(u_getDefaultConverter)
#define u_getFC_NFKC_Closure U_ICU_ENTRY_POINT_RENAME(u_getFC_NFKC_Closure)
+#define u_getIDTypes U_ICU_ENTRY_POINT_RENAME(u_getIDTypes)
#define u_getISOComment U_ICU_ENTRY_POINT_RENAME(u_getISOComment)
#define u_getIntPropertyMap U_ICU_ENTRY_POINT_RENAME(u_getIntPropertyMap)
#define u_getIntPropertyMaxValue U_ICU_ENTRY_POINT_RENAME(u_getIntPropertyMaxValue)
@@ -289,6 +290,7 @@
#define u_getVersion U_ICU_ENTRY_POINT_RENAME(u_getVersion)
#define u_get_stdout U_ICU_ENTRY_POINT_RENAME(u_get_stdout)
#define u_hasBinaryProperty U_ICU_ENTRY_POINT_RENAME(u_hasBinaryProperty)
+#define u_hasIDType U_ICU_ENTRY_POINT_RENAME(u_hasIDType)
#define u_init U_ICU_ENTRY_POINT_RENAME(u_init)
#define u_isIDIgnorable U_ICU_ENTRY_POINT_RENAME(u_isIDIgnorable)
#define u_isIDPart U_ICU_ENTRY_POINT_RENAME(u_isIDPart)
@@ -1192,16 +1194,20 @@
#define ulocimp_canonicalize U_ICU_ENTRY_POINT_RENAME(ulocimp_canonicalize)
#define ulocimp_forLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_forLanguageTag)
#define ulocimp_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocimp_getBaseName)
-#define ulocimp_getCountry U_ICU_ENTRY_POINT_RENAME(ulocimp_getCountry)
#define ulocimp_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywordValue)
#define ulocimp_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywords)
#define ulocimp_getKnownCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_getKnownCanonicalizedLocaleForTest)
#define ulocimp_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocimp_getLanguage)
#define ulocimp_getName U_ICU_ENTRY_POINT_RENAME(ulocimp_getName)
+#define ulocimp_getParent U_ICU_ENTRY_POINT_RENAME(ulocimp_getParent)
+#define ulocimp_getRegion U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegion)
#define ulocimp_getRegionForSupplementalData U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegionForSupplementalData)
#define ulocimp_getScript U_ICU_ENTRY_POINT_RENAME(ulocimp_getScript)
+#define ulocimp_getSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_getSubtags)
+#define ulocimp_getVariant U_ICU_ENTRY_POINT_RENAME(ulocimp_getVariant)
#define ulocimp_isCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_isCanonicalizedLocaleForTest)
#define ulocimp_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_minimizeSubtags)
+#define ulocimp_setKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_setKeywordValue)
#define ulocimp_toBcpKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpKey)
#define ulocimp_toBcpType U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpType)
#define ulocimp_toLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_toLanguageTag)
@@ -1800,6 +1806,7 @@
#define usnum_multiplyByPowerOfTen U_ICU_ENTRY_POINT_RENAME(usnum_multiplyByPowerOfTen)
#define usnum_openForInt64 U_ICU_ENTRY_POINT_RENAME(usnum_openForInt64)
#define usnum_roundTo U_ICU_ENTRY_POINT_RENAME(usnum_roundTo)
+#define usnum_setMaximumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMaximumIntegerDigits)
#define usnum_setMinimumFractionDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumFractionDigits)
#define usnum_setMinimumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumIntegerDigits)
#define usnum_setSign U_ICU_ENTRY_POINT_RENAME(usnum_setSign)
diff --git a/icu4c/source/common/unicode/uscript.h b/icu4c/source/common/unicode/uscript.h
index dc97ab2ba..2c9cee1bf 100644
--- a/icu4c/source/common/unicode/uscript.h
+++ b/icu4c/source/common/unicode/uscript.h
@@ -500,6 +500,9 @@ typedef enum UScriptCode {
/** @stable ICU 72 */
USCRIPT_NAG_MUNDARI = 199,/* Nagm */
+ /** @stable ICU 75 */
+ USCRIPT_ARABIC_NASTALIQ = 200, /* Aran */
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UScriptCode value.
@@ -507,7 +510,7 @@ typedef enum UScriptCode {
*
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- USCRIPT_CODE_LIMIT = 200
+ USCRIPT_CODE_LIMIT = 201
#endif // U_HIDE_DEPRECATED_API
} UScriptCode;
diff --git a/icu4c/source/common/unicode/uset.h b/icu4c/source/common/unicode/uset.h
index ee4e0036d..cce95ce92 100644
--- a/icu4c/source/common/unicode/uset.h
+++ b/icu4c/source/common/unicode/uset.h
@@ -109,7 +109,6 @@ enum {
*/
USET_ADD_CASE_MAPPINGS = 4,
-#ifndef U_HIDE_DRAFT_API
/**
* Enable case insensitive matching.
* Same as USET_CASE_INSENSITIVE but using only Simple_Case_Folding (scf) mappings,
@@ -120,10 +119,9 @@ enum {
* regular expression implementations where only Simple_Case_Folding mappings are used,
* such as in ECMAScript (JavaScript) regular expressions.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
USET_SIMPLE_CASE_INSENSITIVE = 6
-#endif // U_HIDE_DRAFT_API
};
/**
diff --git a/icu4c/source/common/unicode/utypes.h b/icu4c/source/common/unicode/utypes.h
index f890d5d1d..6c7cc5134 100644
--- a/icu4c/source/common/unicode/utypes.h
+++ b/icu4c/source/common/unicode/utypes.h
@@ -438,6 +438,7 @@ typedef enum UErrorCode {
U_PLUGIN_CHANGED_LEVEL_WARNING = -120, /**< A plugin caused a level change. May not be an error, but later plugins may not load. */
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UErrorCode warning value.
@@ -568,12 +569,27 @@ typedef enum UErrorCode {
U_FORMAT_INEXACT_ERROR, /**< Cannot format a number exactly and rounding mode is ROUND_UNNECESSARY @stable ICU 4.8 */
U_NUMBER_ARG_OUTOFBOUNDS_ERROR, /**< The argument to a NumberFormatter helper method was out of bounds; the bounds are usually 0 to 999. @stable ICU 61 */
U_NUMBER_SKELETON_SYNTAX_ERROR, /**< The number skeleton passed to C++ NumberFormatter or C UNumberFormatter was invalid or contained a syntax error. @stable ICU 62 */
+
+ /* MessageFormat 2.0 errors */
+ U_MF_UNRESOLVED_VARIABLE_ERROR, /**< A variable is referred to but not bound by any definition @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_SYNTAX_ERROR, /**< Includes all syntax errors @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNKNOWN_FUNCTION_ERROR, /**< An annotation refers to a function not defined by the standard or custom function registry @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_VARIANT_KEY_MISMATCH_ERROR, /**< In a match-construct, one or more variants had a different number of keys from the number of selectors @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_FORMATTING_ERROR, /**< Covers all runtime errors: for example, an internally inconsistent set of options. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_NONEXHAUSTIVE_PATTERN_ERROR, /**< In a match-construct, the variants do not cover all possible values @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_DUPLICATE_OPTION_NAME_ERROR, /**< In an annotation, the same option name appears more than once @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_SELECTOR_ERROR, /**< A selector function is applied to an operand of the wrong type @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_MISSING_SELECTOR_ANNOTATION_ERROR, /**< A selector expression evaluates to an unannotated operand. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_DUPLICATE_DECLARATION_ERROR, /**< The same variable is declared in more than one .local or .input declaration. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_OPERAND_MISMATCH_ERROR, /**< An operand provided to a function does not have the required form for that function @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNSUPPORTED_STATEMENT_ERROR, /**< A message includes a reserved statement. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNSUPPORTED_EXPRESSION_ERROR, /**< A message includes syntax reserved for future standardization or private implementation use. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal formatting API error code.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- U_FMT_PARSE_ERROR_LIMIT = 0x10114,
+ U_FMT_PARSE_ERROR_LIMIT = 0x10121,
#endif // U_HIDE_DEPRECATED_API
/*
diff --git a/icu4c/source/common/unicode/uvernum.h b/icu4c/source/common/unicode/uvernum.h
index 1cdf8912f..eb7c50f38 100644
--- a/icu4c/source/common/unicode/uvernum.h
+++ b/icu4c/source/common/unicode/uvernum.h
@@ -53,13 +53,13 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION_MAJOR_NUM 74
+#define U_ICU_VERSION_MAJOR_NUM 75
/** The current ICU minor version as an integer.
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_MINOR_NUM 2
+#define U_ICU_VERSION_MINOR_NUM 1
/** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU
@@ -79,7 +79,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SUFFIX _74
+#define U_ICU_VERSION_SUFFIX _75
/**
* \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -132,7 +132,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION "74.2"
+#define U_ICU_VERSION "75.1"
/**
* The current ICU library major version number as a string, for library name suffixes.
@@ -145,13 +145,13 @@
*
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SHORT "74"
+#define U_ICU_VERSION_SHORT "75"
#ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C.
* @internal ICU 4.4 Internal Use Only
**/
-#define U_ICU_DATA_VERSION "74.2"
+#define U_ICU_DATA_VERSION "75.1"
#endif /* U_HIDE_INTERNAL_API */
/*===========================================================================
diff --git a/icu4c/source/common/unifunct.cpp b/icu4c/source/common/unifunct.cpp
index f3995b298..5e939cb67 100644
--- a/icu4c/source/common/unifunct.cpp
+++ b/icu4c/source/common/unifunct.cpp
@@ -16,11 +16,11 @@ UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(UnicodeFunctor)
UnicodeFunctor::~UnicodeFunctor() {}
UnicodeMatcher* UnicodeFunctor::toMatcher() const {
- return 0;
+ return nullptr;
}
UnicodeReplacer* UnicodeFunctor::toReplacer() const {
- return 0;
+ return nullptr;
}
U_NAMESPACE_END
diff --git a/icu4c/source/common/uniset_props.cpp b/icu4c/source/common/uniset_props.cpp
index b3dbdf93c..e6f880c9f 100644
--- a/icu4c/source/common/uniset_props.cpp
+++ b/icu4c/source/common/uniset_props.cpp
@@ -106,7 +106,7 @@ uniset_getUnicode32Instance(UErrorCode &errorCode) {
// caseCompare(), but they also make UnicodeSet work for simple patterns when
// no Unicode properties data is available - when caseCompare() fails
-static inline UBool
+inline UBool
isPerlOpen(const UnicodeString &pattern, int32_t pos) {
char16_t c;
return pattern.charAt(pos)==u'\\' && ((c=pattern.charAt(pos+1))==u'p' || c==u'P');
@@ -117,12 +117,12 @@ isPerlClose(const UnicodeString &pattern, int32_t pos) {
return pattern.charAt(pos)==u'}';
}*/
-static inline UBool
+inline UBool
isNameOpen(const UnicodeString &pattern, int32_t pos) {
return pattern.charAt(pos)==u'\\' && pattern.charAt(pos+1)==u'N';
}
-static inline UBool
+inline UBool
isPOSIXOpen(const UnicodeString &pattern, int32_t pos) {
return pattern.charAt(pos)==u'[' && pattern.charAt(pos+1)==u':';
}
@@ -226,14 +226,14 @@ namespace {
class UnicodeSetPointer {
UnicodeSet* p;
public:
- inline UnicodeSetPointer() : p(0) {}
+ inline UnicodeSetPointer() : p(nullptr) {}
inline ~UnicodeSetPointer() { delete p; }
inline UnicodeSet* pointer() { return p; }
inline UBool allocate() {
- if (p == 0) {
+ if (p == nullptr) {
p = new UnicodeSet();
}
- return p != 0;
+ return p != nullptr;
}
};
@@ -300,7 +300,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
UChar32 c = 0;
UBool literal = false;
- UnicodeSet* nested = 0; // alias - do not delete
+ UnicodeSet* nested = nullptr; // alias - do not delete
// -------- Check for property pattern
@@ -352,9 +352,9 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
continue;
}
}
- } else if (symbols != 0) {
+ } else if (symbols != nullptr) {
const UnicodeFunctor *m = symbols->lookupMatcher(c);
- if (m != 0) {
+ if (m != nullptr) {
const UnicodeSet *ms = dynamic_cast<const UnicodeSet *>(m);
if (ms == nullptr) {
ec = U_MALFORMED_SET;
@@ -390,7 +390,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
patLocal.append(op);
}
- if (nested == 0) {
+ if (nested == nullptr) {
// lazy allocation
if (!scratch.allocate()) {
ec = U_MEMORY_ALLOCATION_ERROR;
@@ -549,7 +549,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
c = chars.next(opts, literal, ec);
if (U_FAILURE(ec)) return;
UBool anchor = (c == u']' && !literal);
- if (symbols == 0 && !anchor) {
+ if (symbols == nullptr && !anchor) {
c = SymbolTable::SYMBOL_REF;
chars.setPos(backup);
break; // literal '$'
@@ -657,16 +657,16 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
namespace {
-static UBool numericValueFilter(UChar32 ch, void* context) {
+UBool numericValueFilter(UChar32 ch, void* context) {
return u_getNumericValue(ch) == *(double*)context;
}
-static UBool generalCategoryMaskFilter(UChar32 ch, void* context) {
+UBool generalCategoryMaskFilter(UChar32 ch, void* context) {
int32_t value = *(int32_t*)context;
return (U_GET_GC_MASK((UChar32) ch) & value) != 0;
}
-static UBool versionFilter(UChar32 ch, void* context) {
+UBool versionFilter(UChar32 ch, void* context) {
static const UVersionInfo none = { 0, 0, 0, 0 };
UVersionInfo v;
u_charAge(ch, v);
@@ -679,15 +679,19 @@ typedef struct {
int32_t value;
} IntPropertyContext;
-static UBool intPropertyFilter(UChar32 ch, void* context) {
+UBool intPropertyFilter(UChar32 ch, void* context) {
IntPropertyContext* c = (IntPropertyContext*)context;
return u_getIntPropertyValue((UChar32) ch, c->prop) == c->value;
}
-static UBool scriptExtensionsFilter(UChar32 ch, void* context) {
+UBool scriptExtensionsFilter(UChar32 ch, void* context) {
return uscript_hasScript(ch, *(UScriptCode*)context);
}
+UBool idTypeFilter(UChar32 ch, void* context) {
+ return u_hasIDType(ch, *(UIdentifierType*)context);
+}
+
} // namespace
/**
@@ -744,7 +748,7 @@ void UnicodeSet::applyFilter(UnicodeSet::Filter filter,
namespace {
-static UBool mungeCharName(char* dst, const char* src, int32_t dstCapacity) {
+UBool mungeCharName(char* dst, const char* src, int32_t dstCapacity) {
/* Note: we use ' ' in compiler code page */
int32_t j = 0;
char ch;
@@ -782,6 +786,10 @@ UnicodeSet::applyIntPropertyValue(UProperty prop, int32_t value, UErrorCode& ec)
const UnicodeSet* inclusions = CharacterProperties::getInclusionsForProperty(prop, ec);
UScriptCode script = (UScriptCode)value;
applyFilter(scriptExtensionsFilter, &script, inclusions, ec);
+ } else if (prop == UCHAR_IDENTIFIER_TYPE) {
+ const UnicodeSet* inclusions = CharacterProperties::getInclusionsForProperty(prop, ec);
+ UIdentifierType idType = (UIdentifierType)value;
+ applyFilter(idTypeFilter, &idType, inclusions, ec);
} else if (0 <= prop && prop < UCHAR_BINARY_LIMIT) {
if (value == 0 || value == 1) {
const USet *set = u_getBinaryPropertySet(prop, &ec);
@@ -915,6 +923,13 @@ UnicodeSet::applyPropertyAlias(const UnicodeString& prop,
}
// fall through to calling applyIntPropertyValue()
break;
+ case UCHAR_IDENTIFIER_TYPE:
+ v = u_getPropertyValueEnum(p, vname.data());
+ if (v == UCHAR_INVALID_CODE) {
+ FAIL(ec);
+ }
+ // fall through to calling applyIntPropertyValue()
+ break;
default:
// p is a non-binary, non-enumerated property that we
// don't support (yet).
diff --git a/icu4c/source/common/unistr.cpp b/icu4c/source/common/unistr.cpp
index 04f01cfa1..ce81138c2 100644
--- a/icu4c/source/common/unistr.cpp
+++ b/icu4c/source/common/unistr.cpp
@@ -283,7 +283,7 @@ UnicodeString::UnicodeString(const char *src, int32_t length, EInvariant) {
UnicodeString::UnicodeString(const char *codepageData) {
fUnion.fFields.fLengthAndFlags = kShortString;
- if(codepageData != 0) {
+ if (codepageData != nullptr) {
setToUTF8(codepageData);
}
}
@@ -291,7 +291,7 @@ UnicodeString::UnicodeString(const char *codepageData) {
UnicodeString::UnicodeString(const char *codepageData, int32_t dataLength) {
fUnion.fFields.fLengthAndFlags = kShortString;
// if there's nothing to convert, do nothing
- if(codepageData == 0 || dataLength == 0 || dataLength < -1) {
+ if (codepageData == nullptr || dataLength == 0 || dataLength < -1) {
return;
}
if(dataLength == -1) {
@@ -393,7 +393,7 @@ UnicodeString::allocate(int32_t capacity) {
}
}
fUnion.fFields.fLengthAndFlags = kIsBogus;
- fUnion.fFields.fArray = 0;
+ fUnion.fFields.fArray = nullptr;
fUnion.fFields.fCapacity = 0;
return false;
}
@@ -564,7 +564,7 @@ UnicodeString::copyFrom(const UnicodeString &src, UBool fastCopy) {
// if src is bogus, set ourselves to bogus
// do not call setToBogus() here because fArray and flags are not consistent here
fUnion.fFields.fLengthAndFlags = kIsBogus;
- fUnion.fFields.fArray = 0;
+ fUnion.fFields.fArray = nullptr;
fUnion.fFields.fCapacity = 0;
break;
}
@@ -919,7 +919,7 @@ UnicodeString::extract(Char16Ptr dest, int32_t destCapacity,
UErrorCode &errorCode) const {
int32_t len = length();
if(U_SUCCESS(errorCode)) {
- if(isBogus() || destCapacity<0 || (destCapacity>0 && dest==0)) {
+ if (isBogus() || destCapacity < 0 || (destCapacity > 0 && dest == nullptr)) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
} else {
const char16_t *array = getArrayStart();
@@ -986,7 +986,7 @@ int32_t
UnicodeString::extract(int32_t start, int32_t len,
char *target, uint32_t dstSize) const {
// if the arguments are illegal, then do nothing
- if(/*dstSize < 0 || */(dstSize > 0 && target == 0)) {
+ if (/*dstSize < 0 || */(dstSize > 0 && target == nullptr)) {
return 0;
}
return toUTF8(start, len, target, dstSize <= 0x7fffffff ? (int32_t)dstSize : 0x7fffffff);
@@ -1071,7 +1071,7 @@ UnicodeString::indexOf(const char16_t *srcChars,
int32_t start,
int32_t length) const
{
- if(isBogus() || srcChars == 0 || srcStart < 0 || srcLength == 0) {
+ if (isBogus() || srcChars == nullptr || srcStart < 0 || srcLength == 0) {
return -1;
}
@@ -1135,7 +1135,7 @@ UnicodeString::lastIndexOf(const char16_t *srcChars,
int32_t start,
int32_t length) const
{
- if(isBogus() || srcChars == 0 || srcStart < 0 || srcLength == 0) {
+ if (isBogus() || srcChars == nullptr || srcStart < 0 || srcLength == 0) {
return -1;
}
@@ -1245,7 +1245,7 @@ UnicodeString::setToBogus()
releaseArray();
fUnion.fFields.fLengthAndFlags = kIsBogus;
- fUnion.fFields.fArray = 0;
+ fUnion.fFields.fArray = nullptr;
fUnion.fFields.fCapacity = 0;
}
@@ -1488,7 +1488,7 @@ UnicodeString::doReplace(int32_t start,
return doAppend(srcChars, srcStart, srcLength);
}
- if(srcChars == 0) {
+ if (srcChars == nullptr) {
srcLength = 0;
} else {
// Perform all remaining operations relative to srcChars + srcStart.
@@ -1537,7 +1537,7 @@ UnicodeString::doReplace(int32_t start,
}
// clone our array and allocate a bigger array if needed
- int32_t *bufferToDelete = 0;
+ int32_t *bufferToDelete = nullptr;
if(!cloneArrayIfNeeded(newLength, getGrowCapacity(newLength),
false, &bufferToDelete)
) {
@@ -1607,41 +1607,58 @@ UnicodeString::doAppend(const char16_t *srcChars, int32_t srcStart, int32_t srcL
int32_t oldLength = length();
int32_t newLength;
- if (uprv_add32_overflow(oldLength, srcLength, &newLength)) {
- setToBogus();
- return *this;
- }
- // Check for append onto ourself
- const char16_t* oldArray = getArrayStart();
- if (isBufferWritable() &&
- oldArray < srcChars + srcLength &&
- srcChars < oldArray + oldLength) {
- // Copy into a new UnicodeString and start over
- UnicodeString copy(srcChars, srcLength);
- if (copy.isBogus()) {
+ if (srcLength <= getCapacity() - oldLength && isBufferWritable()) {
+ newLength = oldLength + srcLength;
+ // Faster than a memmove
+ if (srcLength <= 4) {
+ char16_t *arr = getArrayStart();
+ arr[oldLength] = srcChars[0];
+ if (srcLength > 1) arr[oldLength+1] = srcChars[1];
+ if (srcLength > 2) arr[oldLength+2] = srcChars[2];
+ if (srcLength > 3) arr[oldLength+3] = srcChars[3];
+ setLength(newLength);
+ return *this;
+ }
+ } else {
+ if (uprv_add32_overflow(oldLength, srcLength, &newLength)) {
setToBogus();
return *this;
}
- return doAppend(copy.getArrayStart(), 0, srcLength);
- }
-
- // optimize append() onto a large-enough, owned string
- if((newLength <= getCapacity() && isBufferWritable()) ||
- cloneArrayIfNeeded(newLength, getGrowCapacity(newLength))) {
- char16_t *newArray = getArrayStart();
- // Do not copy characters when
- // char16_t *buffer=str.getAppendBuffer(...);
- // is followed by
- // str.append(buffer, length);
- // or
- // str.appendString(buffer, length)
- // or similar.
- if(srcChars != newArray + oldLength) {
- us_arrayCopy(srcChars, 0, newArray, oldLength, srcLength);
+
+ // Check for append onto ourself
+ const char16_t* oldArray = getArrayStart();
+ if (isBufferWritable() &&
+ oldArray < srcChars + srcLength &&
+ srcChars < oldArray + oldLength) {
+ // Copy into a new UnicodeString and start over
+ UnicodeString copy(srcChars, srcLength);
+ if (copy.isBogus()) {
+ setToBogus();
+ return *this;
+ }
+ return doAppend(copy.getArrayStart(), 0, srcLength);
}
- setLength(newLength);
+
+ // optimize append() onto a large-enough, owned string
+ if (!cloneArrayIfNeeded(newLength, getGrowCapacity(newLength))) {
+ return *this;
+ }
+ }
+
+ char16_t *newArray = getArrayStart();
+ // Do not copy characters when
+ // char16_t *buffer=str.getAppendBuffer(...);
+ // is followed by
+ // str.append(buffer, length);
+ // or
+ // str.appendString(buffer, length)
+ // or similar.
+ if(srcChars != newArray + oldLength) {
+ us_arrayCopy(srcChars, 0, newArray, oldLength, srcLength);
}
+ setLength(newLength);
+
return *this;
}
@@ -1913,7 +1930,7 @@ UnicodeString::cloneArrayIfNeeded(int32_t newCapacity,
// the array is refCounted; decrement and release if 0
u_atomic_int32_t *pRefCount = ((u_atomic_int32_t *)oldArray - 1);
if(umtx_atomic_dec(pRefCount) == 0) {
- if(pBufferToDelete == 0) {
+ if (pBufferToDelete == nullptr) {
// Note: cast to (void *) is needed with MSVC, where u_atomic_int32_t
// is defined as volatile. (Volatile has useful non-standard behavior
// with this compiler.)
diff --git a/icu4c/source/common/unistr_case.cpp b/icu4c/source/common/unistr_case.cpp
index 57f307c20..b04d957bd 100644
--- a/icu4c/source/common/unistr_case.cpp
+++ b/icu4c/source/common/unistr_case.cpp
@@ -193,7 +193,7 @@ UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITER
// This is very similar to how doReplace() keeps the old array pointer
// and deletes the old array itself after it is done.
// In addition, we are forcing cloneArrayIfNeeded() to always allocate a new array.
- int32_t *bufferToDelete = 0;
+ int32_t *bufferToDelete = nullptr;
if (!cloneArrayIfNeeded(newLength, newLength, false, &bufferToDelete, true)) {
return *this;
}
diff --git a/icu4c/source/common/unistr_cnv.cpp b/icu4c/source/common/unistr_cnv.cpp
index 2d649b2d5..e300a79ce 100644
--- a/icu4c/source/common/unistr_cnv.cpp
+++ b/icu4c/source/common/unistr_cnv.cpp
@@ -62,7 +62,7 @@ UnicodeString::UnicodeString(const char *codepageData,
UnicodeString::UnicodeString(const char *codepageData,
const char *codepage) {
fUnion.fFields.fLengthAndFlags = kShortString;
- if(codepageData != 0) {
+ if (codepageData != nullptr) {
doCodepageCreate(codepageData, (int32_t)uprv_strlen(codepageData), codepage);
}
}
@@ -71,7 +71,7 @@ UnicodeString::UnicodeString(const char *codepageData,
int32_t dataLength,
const char *codepage) {
fUnion.fFields.fLengthAndFlags = kShortString;
- if(codepageData != 0) {
+ if (codepageData != nullptr) {
doCodepageCreate(codepageData, dataLength, codepage);
}
}
@@ -92,7 +92,7 @@ UnicodeString::UnicodeString(const char *src, int32_t srcLength,
srcLength=(int32_t)uprv_strlen(src);
}
if(srcLength>0) {
- if(cnv!=0) {
+ if (cnv != nullptr) {
// use the provided converter
ucnv_resetToUnicode(cnv);
doCodepageCreate(src, srcLength, cnv, errorCode);
@@ -136,7 +136,7 @@ UnicodeString::extract(int32_t start,
const char *codepage) const
{
// if the arguments are illegal, then do nothing
- if(/*dstSize < 0 || */(dstSize > 0 && target == 0)) {
+ if (/*dstSize < 0 || */(dstSize > 0 && target == nullptr)) {
return 0;
}
@@ -171,7 +171,7 @@ UnicodeString::extract(int32_t start,
// if the codepage is the default, use our cache
// if it is an empty string, then use the "invariant character" conversion
- if (codepage == 0) {
+ if (codepage == nullptr) {
const char *defaultName = ucnv_getDefaultName();
if(UCNV_FAST_IS_UTF8(defaultName)) {
return toUTF8(start, length, target, capacity);
@@ -194,7 +194,7 @@ UnicodeString::extract(int32_t start,
length = doExtract(start, length, target, capacity, converter, status);
// close the converter
- if (codepage == 0) {
+ if (codepage == nullptr) {
u_releaseDefaultConverter(converter);
} else {
ucnv_close(converter);
@@ -212,7 +212,7 @@ UnicodeString::extract(char *dest, int32_t destCapacity,
return 0;
}
- if(isBogus() || destCapacity<0 || (destCapacity>0 && dest==0)) {
+ if (isBogus() || destCapacity < 0 || (destCapacity > 0 && dest == nullptr)) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -224,7 +224,7 @@ UnicodeString::extract(char *dest, int32_t destCapacity,
// get the converter
UBool isDefaultConverter;
- if(cnv==0) {
+ if (cnv == nullptr) {
isDefaultConverter=true;
cnv=u_getDefaultConverter(&errorCode);
if(U_FAILURE(errorCode)) {
@@ -264,7 +264,7 @@ UnicodeString::doExtract(int32_t start, int32_t length,
const char *destLimit;
if(destCapacity==0) {
- destLimit=dest=0;
+ destLimit=dest=nullptr;
} else if(destCapacity==-1) {
// Pin the limit to U_MAX_PTR if the "magic" destCapacity is used.
destLimit=(char*)U_MAX_PTR(dest);
@@ -275,7 +275,7 @@ UnicodeString::doExtract(int32_t start, int32_t length,
}
// perform the conversion
- ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, true, &errorCode);
+ ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, nullptr, true, &errorCode);
length=(int32_t)(dest-originalDest);
// if an overflow occurs, then get the preflighting length
@@ -286,7 +286,7 @@ UnicodeString::doExtract(int32_t start, int32_t length,
do {
dest=buffer;
errorCode=U_ZERO_ERROR;
- ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, true, &errorCode);
+ ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, nullptr, true, &errorCode);
length+=(int32_t)(dest-buffer);
} while(errorCode==U_BUFFER_OVERFLOW_ERROR);
}
@@ -300,7 +300,7 @@ UnicodeString::doCodepageCreate(const char *codepageData,
const char *codepage)
{
// if there's nothing to convert, do nothing
- if(codepageData == 0 || dataLength == 0 || dataLength < -1) {
+ if (codepageData == nullptr || dataLength == 0 || dataLength < -1) {
return;
}
if(dataLength == -1) {
@@ -313,14 +313,14 @@ UnicodeString::doCodepageCreate(const char *codepageData,
// if the codepage is the default, use our cache
// if it is an empty string, then use the "invariant character" conversion
UConverter *converter;
- if (codepage == 0) {
+ if (codepage == nullptr) {
const char *defaultName = ucnv_getDefaultName();
if(UCNV_FAST_IS_UTF8(defaultName)) {
setToUTF8(StringPiece(codepageData, dataLength));
return;
}
converter = u_getDefaultConverter(&status);
- } else if(*codepage == 0) {
+ } else if (*codepage == 0) {
// use the "invariant characters" conversion
if(cloneArrayIfNeeded(dataLength, dataLength, false)) {
u_charsToUChars(codepageData, getArrayStart(), dataLength);
@@ -346,7 +346,7 @@ UnicodeString::doCodepageCreate(const char *codepageData,
}
// close the converter
- if(codepage == 0) {
+ if (codepage == nullptr) {
u_releaseDefaultConverter(converter);
} else {
ucnv_close(converter);
@@ -390,7 +390,7 @@ UnicodeString::doCodepageCreate(const char *codepageData,
array = getArrayStart();
myTarget = array + length();
ucnv_toUnicode(converter, &myTarget, array + getCapacity(),
- &mySource, mySourceEnd, 0, true, &status);
+ &mySource, mySourceEnd, nullptr, true, &status);
// update the conversion parameters
setLength((int32_t)(myTarget - array));
diff --git a/icu4c/source/common/unistr_props.cpp b/icu4c/source/common/unistr_props.cpp
index 3d05233bb..e5bbb5386 100644
--- a/icu4c/source/common/unistr_props.cpp
+++ b/icu4c/source/common/unistr_props.cpp
@@ -68,7 +68,7 @@ UnicodeString::trim()
// move string forward over leading white space
if(start > 0) {
- doReplace(0, start, 0, 0, 0);
+ doReplace(0, start, nullptr, 0, 0);
}
return *this;
diff --git a/icu4c/source/common/unormcmp.cpp b/icu4c/source/common/unormcmp.cpp
index e11e716c8..028b28643 100644
--- a/icu4c/source/common/unormcmp.cpp
+++ b/icu4c/source/common/unormcmp.cpp
@@ -403,7 +403,7 @@ unorm_cmpEquivFold(const char16_t *s1, int32_t length1,
}
if( level1<2 && (options&_COMPARE_EQUIV) &&
- 0!=(p=nfcImpl->getDecomposition((UChar32)cp1, decomp1, length))
+ nullptr != (p = nfcImpl->getDecomposition((UChar32)cp1, decomp1, length))
) {
/* cp1 decomposes into p[length] */
if(U_IS_SURROGATE(c1)) {
@@ -444,7 +444,7 @@ unorm_cmpEquivFold(const char16_t *s1, int32_t length1,
}
if( level2<2 && (options&_COMPARE_EQUIV) &&
- 0!=(p=nfcImpl->getDecomposition((UChar32)cp2, decomp2, length))
+ nullptr != (p = nfcImpl->getDecomposition((UChar32)cp2, decomp2, length))
) {
/* cp2 decomposes into p[length] */
if(U_IS_SURROGATE(c2)) {
@@ -566,7 +566,7 @@ unorm_compare(const char16_t *s1, int32_t length1,
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(s1==0 || length1<-1 || s2==0 || length2<-1) {
+ if (s1 == nullptr || length1 < -1 || s2 == nullptr || length2 < -1) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
diff --git a/icu4c/source/common/uprops.cpp b/icu4c/source/common/uprops.cpp
index 314fa6fb8..c87eeff38 100644
--- a/icu4c/source/common/uprops.cpp
+++ b/icu4c/source/common/uprops.cpp
@@ -668,6 +668,11 @@ static int32_t layoutGetMaxValue(const IntProperty &/*prop*/, UProperty which) {
}
}
+static int32_t getIDStatusValue(const IntProperty & /*prop*/, UChar32 c, UProperty /*which*/) {
+ uint32_t value = u_getUnicodeProperties(c, 2) >> UPROPS_2_ID_TYPE_SHIFT;
+ return value >= UPROPS_ID_TYPE_ALLOWED_MIN ? U_ID_STATUS_ALLOWED : U_ID_STATUS_RESTRICTED;
+}
+
static const IntProperty intProps[UCHAR_INT_LIMIT-UCHAR_INT_START]={
/*
* column, mask and shift values for int-value properties from u_getUnicodeProperties().
@@ -706,6 +711,7 @@ static const IntProperty intProps[UCHAR_INT_LIMIT-UCHAR_INT_START]={
{ UPROPS_SRC_INPC, 0, 0, getInPC, layoutGetMaxValue },
{ UPROPS_SRC_INSC, 0, 0, getInSC, layoutGetMaxValue },
{ UPROPS_SRC_VO, 0, 0, getVo, layoutGetMaxValue },
+ { UPROPS_SRC_PROPSVEC, 0, (int32_t)U_ID_STATUS_ALLOWED, getIDStatusValue, getMaxValueFromShift },
};
U_CAPI int32_t U_EXPORT2
@@ -800,6 +806,7 @@ uprops_getSource(UProperty which) {
} else {
switch(which) {
case UCHAR_SCRIPT_EXTENSIONS:
+ case UCHAR_IDENTIFIER_TYPE:
return UPROPS_SRC_PROPSVEC;
default:
return UPROPS_SRC_NONE; /* undefined */
@@ -853,6 +860,86 @@ uprops_addPropertyStarts(UPropertySource src, const USetAdder *sa, UErrorCode *p
}
}
+U_CAPI bool U_EXPORT2
+u_hasIDType(UChar32 c, UIdentifierType type) {
+ uint32_t typeIndex = type; // also guards against negative type integers
+ if (typeIndex >= UPRV_LENGTHOF(uprops_idTypeToEncoded)) {
+ return false;
+ }
+ uint32_t encodedType = uprops_idTypeToEncoded[typeIndex];
+ uint32_t value = u_getUnicodeProperties(c, 2) >> UPROPS_2_ID_TYPE_SHIFT;
+ if ((encodedType & UPROPS_ID_TYPE_BIT) != 0) {
+ return value < UPROPS_ID_TYPE_FORBIDDEN && (value & encodedType) != 0;
+ } else {
+ return value == encodedType;
+ }
+}
+
+namespace {
+
+void maybeAppendType(uint32_t value, uint32_t bit, UIdentifierType t,
+ UIdentifierType *types, int32_t &length, int32_t capacity) {
+ if ((value & bit) != 0) {
+ if (length < capacity) {
+ types[length] = t;
+ }
+ ++length;
+ }
+}
+
+} // namespace
+
+U_CAPI int32_t U_EXPORT2
+u_getIDTypes(UChar32 c, UIdentifierType *types, int32_t capacity, UErrorCode *pErrorCode) {
+ if (U_FAILURE(*pErrorCode)) { return 0; }
+ if (capacity < 0 || (capacity > 0 && types == nullptr)) {
+ *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ uint32_t value = u_getUnicodeProperties(c, 2) >> UPROPS_2_ID_TYPE_SHIFT;
+ if ((value & UPROPS_ID_TYPE_FORBIDDEN) == UPROPS_ID_TYPE_FORBIDDEN ||
+ value == UPROPS_ID_TYPE_NOT_CHARACTER) {
+ // single value
+ if (capacity > 0) {
+ UIdentifierType t;
+ switch (value) {
+ case UPROPS_ID_TYPE_NOT_CHARACTER: t = U_ID_TYPE_NOT_CHARACTER; break;
+ case UPROPS_ID_TYPE_DEPRECATED: t = U_ID_TYPE_DEPRECATED; break;
+ case UPROPS_ID_TYPE_DEFAULT_IGNORABLE: t = U_ID_TYPE_DEFAULT_IGNORABLE; break;
+ case UPROPS_ID_TYPE_NOT_NFKC: t = U_ID_TYPE_NOT_NFKC; break;
+ case UPROPS_ID_TYPE_INCLUSION: t = U_ID_TYPE_INCLUSION; break;
+ case UPROPS_ID_TYPE_RECOMMENDED: t = U_ID_TYPE_RECOMMENDED; break;
+ default:
+ *pErrorCode = U_INVALID_FORMAT_ERROR;
+ return 0;
+ }
+ types[0] = t;
+ } else {
+ *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
+ }
+ return 1;
+ } else {
+ // one or more combinable bits
+ int32_t length = 0;
+ maybeAppendType(value, UPROPS_ID_TYPE_NOT_XID, U_ID_TYPE_NOT_XID,
+ types, length, capacity);
+ maybeAppendType(value, UPROPS_ID_TYPE_EXCLUSION, U_ID_TYPE_EXCLUSION,
+ types, length, capacity);
+ maybeAppendType(value, UPROPS_ID_TYPE_OBSOLETE, U_ID_TYPE_OBSOLETE,
+ types, length, capacity);
+ maybeAppendType(value, UPROPS_ID_TYPE_TECHNICAL, U_ID_TYPE_TECHNICAL,
+ types, length, capacity);
+ maybeAppendType(value, UPROPS_ID_TYPE_UNCOMMON_USE, U_ID_TYPE_UNCOMMON_USE,
+ types, length, capacity);
+ maybeAppendType(value, UPROPS_ID_TYPE_LIMITED_USE, U_ID_TYPE_LIMITED_USE,
+ types, length, capacity);
+ if (length >= capacity) {
+ *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
+ }
+ return length;
+ }
+}
+
#if !UCONFIG_NO_NORMALIZATION
U_CAPI int32_t U_EXPORT2
diff --git a/icu4c/source/common/uprops.h b/icu4c/source/common/uprops.h
index 80347eab5..93120017f 100644
--- a/icu4c/source/common/uprops.h
+++ b/icu4c/source/common/uprops.h
@@ -224,23 +224,80 @@ enum {
/*
* Properties in vector word 2
* Bits
- * 31..26 unused since ICU 70 added uemoji.icu;
- * in ICU 57..69 stored emoji properties
+ * 31..26 ICU 75: Identifier_Type bit set
+ * ICU 70..74: unused
+ * ICU 57..69: emoji properties; moved to uemoji.icu in ICU 70
* 25..20 Line Break
* 19..15 Sentence Break
* 14..10 Word Break
* 9.. 5 Grapheme Cluster Break
* 4.. 0 Decomposition Type
*/
+
+#ifdef __cplusplus
+
+// https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type
+// The Identifier_Type maps each code point to a *set* of one or more values.
+// Some can be combined with others, some can only occur alone.
+// Exclusion & Limited_Use are combinable bits, but cannot occur together.
+// We use this forbidden combination for enumerated values.
+// We use 6 bits for all possible combinations.
+// If more combinable values are added, then we need to use more bits.
+//
+// We do not store separate data for Identifier_Status:
+// We can derive that from the encoded Identifier_Type via a simple range check.
+
+inline constexpr uint32_t UPROPS_2_ID_TYPE_MASK = 0xfc000000;
+inline constexpr int32_t UPROPS_2_ID_TYPE_SHIFT = 26;
+
enum {
- UPROPS_2_UNUSED_WAS_EXTENDED_PICTOGRAPHIC=26, // ICU 62..69
- UPROPS_2_UNUSED_WAS_EMOJI_COMPONENT, // ICU 60..69
- UPROPS_2_UNUSED_WAS_EMOJI, // ICU 57..69
- UPROPS_2_UNUSED_WAS_EMOJI_PRESENTATION, // ICU 57..69
- UPROPS_2_UNUSED_WAS_EMOJI_MODIFIER, // ICU 57..69
- UPROPS_2_UNUSED_WAS_EMOJI_MODIFIER_BASE // ICU 57..69
+ // A high bit for use in idTypeToEncoded[] but not used in the data
+ UPROPS_ID_TYPE_BIT = 0x80,
+
+ // Combinable bits
+ UPROPS_ID_TYPE_EXCLUSION = 0x20,
+ UPROPS_ID_TYPE_LIMITED_USE = 0x10,
+ UPROPS_ID_TYPE_UNCOMMON_USE = 8,
+ UPROPS_ID_TYPE_TECHNICAL = 4,
+ UPROPS_ID_TYPE_OBSOLETE = 2,
+ UPROPS_ID_TYPE_NOT_XID = 1,
+
+ // Exclusive values
+ UPROPS_ID_TYPE_NOT_CHARACTER = 0,
+
+ // Forbidden bit combination used for enumerating other exclusive values
+ UPROPS_ID_TYPE_FORBIDDEN = UPROPS_ID_TYPE_EXCLUSION | UPROPS_ID_TYPE_LIMITED_USE, // 0x30
+ UPROPS_ID_TYPE_DEPRECATED = UPROPS_ID_TYPE_FORBIDDEN, // 0x30
+ UPROPS_ID_TYPE_DEFAULT_IGNORABLE, // 0x31
+ UPROPS_ID_TYPE_NOT_NFKC, // 0x32
+
+ UPROPS_ID_TYPE_ALLOWED_MIN = UPROPS_ID_TYPE_FORBIDDEN + 0xc, // 0x3c
+ UPROPS_ID_TYPE_INCLUSION = UPROPS_ID_TYPE_FORBIDDEN + 0xe, // 0x3e
+ UPROPS_ID_TYPE_RECOMMENDED = UPROPS_ID_TYPE_FORBIDDEN + 0xf, // 0x3f
};
+/**
+ * Maps UIdentifierType to encoded bits.
+ * When UPROPS_ID_TYPE_BIT is set, then use "&" to test whether the value bit is set.
+ * When UPROPS_ID_TYPE_BIT is not set, then compare ("==") the array value with the data value.
+ */
+inline constexpr uint8_t uprops_idTypeToEncoded[] = {
+ UPROPS_ID_TYPE_NOT_CHARACTER,
+ UPROPS_ID_TYPE_DEPRECATED,
+ UPROPS_ID_TYPE_DEFAULT_IGNORABLE,
+ UPROPS_ID_TYPE_NOT_NFKC,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_NOT_XID,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_EXCLUSION,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_OBSOLETE,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_TECHNICAL,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_UNCOMMON_USE,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_LIMITED_USE,
+ UPROPS_ID_TYPE_INCLUSION,
+ UPROPS_ID_TYPE_RECOMMENDED
+};
+
+#endif // __cplusplus
+
#define UPROPS_LB_MASK 0x03f00000
#define UPROPS_LB_SHIFT 20
diff --git a/icu4c/source/common/uresbund.cpp b/icu4c/source/common/uresbund.cpp
index 5aa1c5fa2..ea4327b31 100644
--- a/icu4c/source/common/uresbund.cpp
+++ b/icu4c/source/common/uresbund.cpp
@@ -94,8 +94,16 @@ static UBool chopLocale(char *name) {
static UBool hasVariant(const char* localeID) {
UErrorCode err = U_ZERO_ERROR;
- int32_t variantLength = uloc_getVariant(localeID, nullptr, 0, &err);
- return variantLength != 0;
+ CheckedArrayByteSink sink(nullptr, 0);
+ ulocimp_getSubtags(
+ localeID,
+ nullptr,
+ nullptr,
+ nullptr,
+ &sink,
+ nullptr,
+ err);
+ return sink.NumberOfBytesAppended() != 0;
}
// This file contains the tables for doing locale fallback, which are generated
@@ -209,17 +217,11 @@ static bool getParentLocaleID(char *name, const char *origName, UResOpenType ope
}
UErrorCode err = U_ZERO_ERROR;
- const char* tempNamePtr = name;
- CharString language = ulocimp_getLanguage(tempNamePtr, &tempNamePtr, err);
- if (*tempNamePtr == '_') {
- ++tempNamePtr;
- }
- CharString script = ulocimp_getScript(tempNamePtr, &tempNamePtr, err);
- if (*tempNamePtr == '_') {
- ++tempNamePtr;
- }
- CharString region = ulocimp_getCountry(tempNamePtr, &tempNamePtr, err);
- CharString workingLocale;
+ CharString language;
+ CharString script;
+ CharString region;
+ ulocimp_getSubtags(name, &language, &script, &region, nullptr, nullptr, err);
+
if (U_FAILURE(err)) {
// hopefully this never happens...
return chopLocale(name);
@@ -238,13 +240,15 @@ static bool getParentLocaleID(char *name, const char *origName, UResOpenType ope
}
}
+ CharString workingLocale;
+
// if it's not in the parent locale table, figure out the fallback script algorithmically
// (see CLDR-15265 for an explanation of the algorithm)
if (!script.isEmpty() && !region.isEmpty()) {
// if "name" has both script and region, is the script the default script?
// - if so, remove it and keep the region
// - if not, remove the region and keep the script
- if (getDefaultScript(language, region) == script.toStringPiece()) {
+ if (getDefaultScript(language, region) == script) {
workingLocale.append(language, err).append("_", err).append(region, err);
} else {
workingLocale.append(language, err).append("_", err).append(script, err);
@@ -254,12 +258,9 @@ static bool getParentLocaleID(char *name, const char *origName, UResOpenType ope
// - if yes, replace the region with the script from the original locale ID
// - if no, replace the region with the default script for that language and region
UErrorCode err = U_ZERO_ERROR;
- tempNamePtr = origName;
- CharString origNameLanguage = ulocimp_getLanguage(tempNamePtr, &tempNamePtr, err);
- if (*tempNamePtr == '_') {
- ++tempNamePtr;
- }
- CharString origNameScript = ulocimp_getScript(origName, nullptr, err);
+ CharString origNameLanguage;
+ CharString origNameScript;
+ ulocimp_getSubtags(origName, &origNameLanguage, &origNameScript, nullptr, nullptr, nullptr, err);
if (!origNameScript.isEmpty()) {
workingLocale.append(language, err).append("_", err).append(origNameScript, err);
} else {
@@ -272,7 +273,7 @@ static bool getParentLocaleID(char *name, const char *origName, UResOpenType ope
// - if not, return false to continue up the chain
// (we don't do this for other open types for the same reason we don't look things up in the parent
// locale table for other open types-- see the reference to UTS #35 above)
- if (openType != URES_OPEN_LOCALE_DEFAULT_ROOT || getDefaultScript(language, CharString()) == script.toStringPiece()) {
+ if (openType != URES_OPEN_LOCALE_DEFAULT_ROOT || getDefaultScript(language, CharString()) == script) {
workingLocale.append(language, err);
} else {
return false;
@@ -1708,7 +1709,7 @@ U_CAPI int32_t U_EXPORT2 ures_getSize(const UResourceBundle *resB) {
static const char16_t* ures_getStringWithAlias(const UResourceBundle *resB, Resource r, int32_t sIndex, int32_t *len, UErrorCode *status) {
if(RES_GET_TYPE(r) == URES_ALIAS) {
- const char16_t* result = 0;
+ const char16_t* result = nullptr;
UResourceBundle *tempRes = ures_getByIndex(resB, sIndex, nullptr, status);
result = ures_getString(tempRes, len, status);
ures_close(tempRes);
@@ -2573,7 +2574,7 @@ U_CAPI const char16_t* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB
return res_getString({resB, key}, &dataEntry->fData, res, len);
case URES_ALIAS:
{
- const char16_t* result = 0;
+ const char16_t* result = nullptr;
UResourceBundle *tempRes = ures_getByKey(resB, inKey, nullptr, status);
result = ures_getString(tempRes, len, status);
ures_close(tempRes);
@@ -2595,7 +2596,7 @@ U_CAPI const char16_t* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB
return res_getString({resB, key}, &resB->getResData(), res, len);
case URES_ALIAS:
{
- const char16_t* result = 0;
+ const char16_t* result = nullptr;
UResourceBundle *tempRes = ures_getByKey(resB, inKey, nullptr, status);
result = ures_getString(tempRes, len, status);
ures_close(tempRes);
@@ -2717,11 +2718,7 @@ ures_openWithType(UResourceBundle *r, const char* path, const char* localeID,
UResourceDataEntry *entry;
if(openType != URES_OPEN_DIRECT) {
/* first "canonicalize" the locale ID */
- CharString canonLocaleID;
- {
- CharStringByteSink sink(&canonLocaleID);
- ulocimp_getBaseName(localeID, sink, status);
- }
+ CharString canonLocaleID = ulocimp_getBaseName(localeID, *status);
if(U_FAILURE(*status)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return nullptr;
@@ -2952,7 +2949,7 @@ ures_loc_nextLocale(UEnumeration* en,
UResourceBundle *k = nullptr;
const char *result = nullptr;
int32_t len = 0;
- if(ures_hasNext(res) && (k = ures_getNextResource(res, &ctx->curr, status)) != 0) {
+ if (ures_hasNext(res) && (k = ures_getNextResource(res, &ctx->curr, status)) != nullptr) {
result = ures_getKey(k);
len = (int32_t)uprv_strlen(result);
}
@@ -3040,25 +3037,25 @@ static UBool isLocaleInList(UEnumeration *locEnum, const char *locToSearch, UErr
static void getParentForFunctionalEquivalent(const char* localeID,
UResourceBundle* res,
UResourceBundle* bund1,
- char* parent,
- int32_t parentCapacity) {
+ CharString& parent) {
// Get parent.
// First check for a parent from %%Parent resource (Note that in resource trees
// such as collation, data may have different parents than in parentLocales).
UErrorCode subStatus = U_ZERO_ERROR;
- parent[0] = '\0';
- if (res != NULL) {
+ parent.clear();
+ if (res != nullptr) {
ures_getByKey(res, "%%Parent", bund1, &subStatus);
if (U_SUCCESS(subStatus)) {
- int32_t parentLen = parentCapacity;
- ures_getUTF8String(bund1, parent, &parentLen, true, &subStatus);
+ int32_t length16;
+ const char16_t* s16 = ures_getString(bund1, &length16, &subStatus);
+ parent.appendInvariantChars(s16, length16, subStatus);
}
}
// If none there, use normal truncation parent
- if (U_FAILURE(subStatus) || parent[0] == 0) {
+ if (U_FAILURE(subStatus) || parent.isEmpty()) {
subStatus = U_ZERO_ERROR;
- uloc_getParent(localeID, parent, parentCapacity, &subStatus);
+ parent = ulocimp_getParent(localeID, subStatus);
}
}
@@ -3067,29 +3064,21 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
const char *path, const char *resName, const char *keyword, const char *locid,
UBool *isAvailable, UBool omitDefault, UErrorCode *status)
{
- char defVal[1024] = ""; /* default value for given locale */
- char defLoc[1024] = ""; /* default value for given locale */
- CharString base; /* base locale */
- char found[1024] = "";
- char parent[1024] = "";
- char full[1024] = "";
+ CharString defVal; /* default value for given locale */
+ CharString defLoc; /* default value for given locale */
+ CharString found;
+ CharString parent;
+ CharString full;
UResourceBundle bund1, bund2;
UResourceBundle *res = nullptr;
UErrorCode subStatus = U_ZERO_ERROR;
int32_t length = 0;
if(U_FAILURE(*status)) return 0;
- CharString kwVal;
- {
- CharStringByteSink sink(&kwVal);
- ulocimp_getKeywordValue(locid, keyword, sink, &subStatus);
- }
+ CharString kwVal = ulocimp_getKeywordValue(locid, keyword, subStatus);
if(kwVal == DEFAULT_TAG) {
kwVal.clear();
}
- {
- CharStringByteSink sink(&base);
- ulocimp_getBaseName(locid, sink, &subStatus);
- }
+ CharString base = ulocimp_getBaseName(locid, subStatus);
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "getFunctionalEquivalent: \"%s\" [%s=%s] in %s - %s\n",
locid, keyword, kwVal.data(), base.data(), u_errorName(subStatus));
@@ -3097,14 +3086,14 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
ures_initStackObject(&bund1);
ures_initStackObject(&bund2);
- base.extract(parent, UPRV_LENGTHOF(parent), subStatus);
- base.extract(found, UPRV_LENGTHOF(found), subStatus);
+ parent.copyFrom(base, subStatus);
+ found.copyFrom(base, subStatus);
if(isAvailable) {
UEnumeration *locEnum = ures_openAvailableLocales(path, &subStatus);
*isAvailable = true;
if (U_SUCCESS(subStatus)) {
- *isAvailable = isLocaleInList(locEnum, parent, &subStatus);
+ *isAvailable = isLocaleInList(locEnum, parent.data(), &subStatus);
}
uenum_close(locEnum);
}
@@ -3116,7 +3105,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
do {
subStatus = U_ZERO_ERROR;
- res = ures_open(path, parent, &subStatus);
+ res = ures_open(path, parent.data(), &subStatus);
if(((subStatus == U_USING_FALLBACK_WARNING) ||
(subStatus == U_USING_DEFAULT_WARNING)) && isAvailable)
{
@@ -3125,7 +3114,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
isAvailable = nullptr; /* only want to set this the first time around */
#if defined(URES_TREE_DEBUG)
- fprintf(stderr, "%s;%s -> %s [%s]\n", path?path:"ICUDATA", parent, u_errorName(subStatus), ures_getLocale(res, &subStatus));
+ fprintf(stderr, "%s;%s -> %s [%s]\n", path?path:"ICUDATA", parent.data(), u_errorName(subStatus), ures_getLocale(res, &subStatus));
#endif
if(U_FAILURE(subStatus)) {
*status = subStatus;
@@ -3137,21 +3126,21 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
/* look for default item */
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s : loaded default -> %s\n",
- path?path:"ICUDATA", parent, u_errorName(subStatus));
+ path?path:"ICUDATA", parent.data(), u_errorName(subStatus));
#endif
defUstr = ures_getStringByKey(&bund1, DEFAULT_TAG, &defLen, &subStatus);
if(U_SUCCESS(subStatus) && defLen) {
- u_UCharsToChars(defUstr, defVal, u_strlen(defUstr));
+ defVal.clear().appendInvariantChars(defUstr, defLen, subStatus);
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> default %s=%s, %s\n",
- path?path:"ICUDATA", parent, keyword, defVal, u_errorName(subStatus));
+ path?path:"ICUDATA", parent.data(), keyword, defVal.data(), u_errorName(subStatus));
#endif
- uprv_strcpy(defLoc, parent);
+ defLoc.copyFrom(parent, subStatus);
if(kwVal.isEmpty()) {
- kwVal.append(defVal, defLen, subStatus);
+ kwVal.append(defVal, subStatus);
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> kwVal = %s\n",
- path?path:"ICUDATA", parent, keyword, kwVal.data());
+ path?path:"ICUDATA", parent.data(), keyword, kwVal.data());
#endif
}
}
@@ -3161,23 +3150,23 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
subStatus = U_ZERO_ERROR;
if (res != nullptr) {
- uprv_strcpy(found, ures_getLocaleByType(res, ULOC_VALID_LOCALE, &subStatus));
+ found.clear().append(ures_getLocaleByType(res, ULOC_VALID_LOCALE, &subStatus), subStatus);
}
- if (uprv_strcmp(found, parent) != 0) {
- uprv_strcpy(parent, found);
+ if (found != parent) {
+ parent.copyFrom(found, subStatus);
} else {
- getParentForFunctionalEquivalent(found,res,&bund1,parent,sizeof(parent));
+ getParentForFunctionalEquivalent(found.data(),res,&bund1,parent);
}
ures_close(res);
- } while(!defVal[0] && *found && uprv_strcmp(found, "root") != 0 && U_SUCCESS(*status));
+ } while(defVal.isEmpty() && !found.isEmpty() && found != "root" && U_SUCCESS(*status));
/* Now, see if we can find the kwVal collator.. start the search over.. */
- base.extract(parent, UPRV_LENGTHOF(parent), subStatus);
- base.extract(found, UPRV_LENGTHOF(found), subStatus);
+ parent.copyFrom(base, subStatus);
+ found.copyFrom(base, subStatus);
do {
- res = ures_open(path, parent, &subStatus);
+ res = ures_open(path, parent.data(), &subStatus);
if((subStatus == U_USING_FALLBACK_WARNING) && isAvailable) {
*isAvailable = false;
}
@@ -3185,7 +3174,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> %s (looking for %s)\n",
- path?path:"ICUDATA", parent, u_errorName(subStatus), kwVal.data());
+ path?path:"ICUDATA", parent.data(), u_errorName(subStatus), kwVal.data());
#endif
if(U_FAILURE(subStatus)) {
*status = subStatus;
@@ -3202,86 +3191,85 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
if(subStatus == U_ZERO_ERROR) {
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> full0 %s=%s, %s\n",
- path?path:"ICUDATA", parent, keyword, kwVal.data(), u_errorName(subStatus));
+ path?path:"ICUDATA", parent.data(), keyword, kwVal.data(), u_errorName(subStatus));
#endif
- uprv_strcpy(full, parent);
- if(*full == 0) {
- uprv_strcpy(full, "root");
+ if (parent.isEmpty()) {
+ full.clear().append("root", subStatus);
+ } else {
+ full.copyFrom(parent, subStatus);
}
/* now, recalculate default kw if need be */
- if(uprv_strlen(defLoc) > uprv_strlen(full)) {
+ if(defLoc.length() > full.length()) {
const char16_t *defUstr;
int32_t defLen;
/* look for default item */
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> recalculating Default0\n",
- path?path:"ICUDATA", full);
+ path?path:"ICUDATA", full.data());
#endif
defUstr = ures_getStringByKey(&bund1, DEFAULT_TAG, &defLen, &subStatus);
if(U_SUCCESS(subStatus) && defLen) {
- u_UCharsToChars(defUstr, defVal, u_strlen(defUstr));
+ defVal.clear().appendInvariantChars(defUstr, defLen, subStatus);
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> default0 %s=%s, %s\n",
- path?path:"ICUDATA", full, keyword, defVal, u_errorName(subStatus));
+ path?path:"ICUDATA", full.data(), keyword, defVal.data(), u_errorName(subStatus));
#endif
- uprv_strcpy(defLoc, full);
+ defLoc.copyFrom(full, subStatus);
}
} /* end of recalculate default KW */
#if defined(URES_TREE_DEBUG)
else {
- fprintf(stderr, "No trim0, %s <= %s\n", defLoc, full);
+ fprintf(stderr, "No trim0, %s <= %s\n", defLoc.data(), full.data());
}
#endif
} else {
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "err=%s in %s looking for %s\n",
- u_errorName(subStatus), parent, kwVal.data());
+ u_errorName(subStatus), parent.data(), kwVal.data());
#endif
}
}
}
+ subStatus = U_ZERO_ERROR;
UBool haveFound = false;
// At least for collations which may be aliased, we need to use the VALID locale
// as the parent instead of just truncating, as long as the VALID locale is not
// root and has a different language than the parent. Use of the VALID locale
// here is similar to the procedure used at the end of the previous do-while loop
// for all resource types.
- if (res != NULL && uprv_strcmp(resName, "collations") == 0) {
- subStatus = U_ZERO_ERROR;
+ if (res != nullptr && uprv_strcmp(resName, "collations") == 0) {
const char *validLoc = ures_getLocaleByType(res, ULOC_VALID_LOCALE, &subStatus);
- if (U_SUCCESS(subStatus) && validLoc != NULL && validLoc[0] != 0 && uprv_strcmp(validLoc, "root") != 0) {
- char validLang[ULOC_LANG_CAPACITY];
- char parentLang[ULOC_LANG_CAPACITY];
- uloc_getLanguage(validLoc, validLang, ULOC_LANG_CAPACITY, &subStatus);
- uloc_getLanguage(parent, parentLang, ULOC_LANG_CAPACITY, &subStatus);
- if (U_SUCCESS(subStatus) && uprv_strcmp(validLang, parentLang) != 0) {
+ if (U_SUCCESS(subStatus) && validLoc != nullptr && validLoc[0] != 0 && uprv_strcmp(validLoc, "root") != 0) {
+ CharString validLang = ulocimp_getLanguage(validLoc, subStatus);
+ CharString parentLang = ulocimp_getLanguage(parent.data(), subStatus);
+ if (U_SUCCESS(subStatus) && validLang != parentLang) {
// validLoc is not root and has a different language than parent, use it instead
- uprv_strcpy(found, validLoc);
+ found.clear().append(validLoc, subStatus);
haveFound = true;
}
}
subStatus = U_ZERO_ERROR;
}
if (!haveFound) {
- uprv_strcpy(found, parent);
+ found.copyFrom(parent, subStatus);
}
- getParentForFunctionalEquivalent(found,res,&bund1,parent,1023);
+ getParentForFunctionalEquivalent(found.data(),res,&bund1,parent);
ures_close(res);
subStatus = U_ZERO_ERROR;
- } while(!full[0] && *found && U_SUCCESS(*status));
+ } while(full.isEmpty() && !found.isEmpty() && U_SUCCESS(*status));
- if((full[0]==0) && kwVal != defVal) {
+ if(full.isEmpty() && kwVal != defVal) {
#if defined(URES_TREE_DEBUG)
- fprintf(stderr, "Failed to locate kw %s - try default %s\n", kwVal.data(), defVal);
+ fprintf(stderr, "Failed to locate kw %s - try default %s\n", kwVal.data(), defVal.data());
#endif
kwVal.clear().append(defVal, subStatus);
- base.extract(parent, UPRV_LENGTHOF(parent), subStatus);
- base.extract(found, UPRV_LENGTHOF(found), subStatus);
+ parent.copyFrom(base, subStatus);
+ found.copyFrom(base, subStatus);
do { /* search for 'default' named item */
- res = ures_open(path, parent, &subStatus);
+ res = ures_open(path, parent.data(), &subStatus);
if((subStatus == U_USING_FALLBACK_WARNING) && isAvailable) {
*isAvailable = false;
}
@@ -3289,7 +3277,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> %s (looking for default %s)\n",
- path?path:"ICUDATA", parent, u_errorName(subStatus), kwVal.data());
+ path?path:"ICUDATA", parent.data(), u_errorName(subStatus), kwVal.data());
#endif
if(U_FAILURE(subStatus)) {
*status = subStatus;
@@ -3300,59 +3288,61 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
if(subStatus == U_ZERO_ERROR) {
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> full1 %s=%s, %s\n", path?path:"ICUDATA",
- parent, keyword, kwVal.data(), u_errorName(subStatus));
+ parent.data(), keyword, kwVal.data(), u_errorName(subStatus));
#endif
- uprv_strcpy(full, parent);
- if(*full == 0) {
- uprv_strcpy(full, "root");
+ if (parent.isEmpty()) {
+ full.clear().append("root", subStatus);
+ } else {
+ full.copyFrom(parent, subStatus);
}
/* now, recalculate default kw if need be */
- if(uprv_strlen(defLoc) > uprv_strlen(full)) {
+ if(defLoc.length() > full.length()) {
const char16_t *defUstr;
int32_t defLen;
/* look for default item */
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> recalculating Default1\n",
- path?path:"ICUDATA", full);
+ path?path:"ICUDATA", full.data());
#endif
defUstr = ures_getStringByKey(&bund1, DEFAULT_TAG, &defLen, &subStatus);
if(U_SUCCESS(subStatus) && defLen) {
- u_UCharsToChars(defUstr, defVal, u_strlen(defUstr));
+ defVal.clear().appendInvariantChars(defUstr, defLen, subStatus);
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> default %s=%s, %s\n",
- path?path:"ICUDATA", full, keyword, defVal, u_errorName(subStatus));
+ path?path:"ICUDATA", full.data(), keyword, defVal.data(), u_errorName(subStatus));
#endif
- uprv_strcpy(defLoc, full);
+ defLoc.copyFrom(full, subStatus);
}
} /* end of recalculate default KW */
#if defined(URES_TREE_DEBUG)
else {
- fprintf(stderr, "No trim1, %s <= %s\n", defLoc, full);
+ fprintf(stderr, "No trim1, %s <= %s\n", defLoc.data(), full.data());
}
#endif
}
}
}
- uprv_strcpy(found, parent);
- getParentForFunctionalEquivalent(found,res,&bund1,parent,1023);
+ subStatus = U_ZERO_ERROR;
+ found.copyFrom(parent, subStatus);
+ getParentForFunctionalEquivalent(found.data(),res,&bund1,parent);
ures_close(res);
subStatus = U_ZERO_ERROR;
- } while(!full[0] && *found && U_SUCCESS(*status));
+ } while(full.isEmpty() && !found.isEmpty() && U_SUCCESS(*status));
}
if(U_SUCCESS(*status)) {
- if(!full[0]) {
+ if(full.isEmpty()) {
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "Still could not load keyword %s=%s\n", keyword, kwVal.data());
#endif
*status = U_MISSING_RESOURCE_ERROR;
} else if(omitDefault) {
#if defined(URES_TREE_DEBUG)
- fprintf(stderr,"Trim? full=%s, defLoc=%s, found=%s\n", full, defLoc, found);
+ fprintf(stderr,"Trim? full=%s, defLoc=%s, found=%s\n", full.data(), defLoc.data(), found.data());
#endif
- if(uprv_strlen(defLoc) <= uprv_strlen(full)) {
+ if(defLoc.length() <= full.length()) {
/* found the keyword in a *child* of where the default tag was present. */
if(kwVal == defVal) { /* if the requested kw is default, */
/* and the default is in or in an ancestor of the current locale */
@@ -3363,17 +3353,19 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
}
}
}
- uprv_strcpy(found, full);
+ found.copyFrom(full, subStatus);
if(!kwVal.isEmpty()) {
- uprv_strcat(found, "@");
- uprv_strcat(found, keyword);
- uprv_strcat(found, "=");
- uprv_strcat(found, kwVal.data());
+ found
+ .append("@", subStatus)
+ .append(keyword, subStatus)
+ .append("=", subStatus)
+ .append(kwVal, subStatus);
} else if(!omitDefault) {
- uprv_strcat(found, "@");
- uprv_strcat(found, keyword);
- uprv_strcat(found, "=");
- uprv_strcat(found, defVal);
+ found
+ .append("@", subStatus)
+ .append(keyword, subStatus)
+ .append("=", subStatus)
+ .append(defVal, subStatus);
}
}
/* we found the default locale - no need to repeat it.*/
@@ -3381,12 +3373,12 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
ures_close(&bund1);
ures_close(&bund2);
- length = (int32_t)uprv_strlen(found);
+ length = found.length();
if(U_SUCCESS(*status)) {
int32_t copyLength = uprv_min(length, resultCapacity);
if(copyLength>0) {
- uprv_strncpy(result, found, copyLength);
+ found.extract(result, copyLength, subStatus);
}
if(length == 0) {
*status = U_MISSING_RESOURCE_ERROR;
@@ -3429,8 +3421,8 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status)
valuesBuf[0]=0;
valuesBuf[1]=0;
-
- while((locale = uenum_next(locs, &locLen, status)) != 0) {
+
+ while ((locale = uenum_next(locs, &locLen, status)) != nullptr) {
UResourceBundle *bund = nullptr;
UResourceBundle *subPtr = nullptr;
UErrorCode subStatus = U_ZERO_ERROR; /* don't fail if a bundle is unopenable */
@@ -3454,8 +3446,8 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status)
bund = nullptr;
continue;
}
-
- while((subPtr = ures_getNextResource(&item,&subItem,&subStatus)) != 0
+
+ while ((subPtr = ures_getNextResource(&item, &subItem, &subStatus)) != nullptr
&& U_SUCCESS(subStatus)) {
const char *k;
int32_t i;
diff --git a/icu4c/source/common/uresdata.cpp b/icu4c/source/common/uresdata.cpp
index b219e40e2..c38e75c65 100644
--- a/icu4c/source/common/uresdata.cpp
+++ b/icu4c/source/common/uresdata.cpp
@@ -571,7 +571,7 @@ const uint8_t *ResourceDataValue::getBinary(int32_t &length, UErrorCode &errorCo
ResourceArray ResourceDataValue::getArray(UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
- return ResourceArray();
+ return {};
}
const uint16_t *items16 = nullptr;
const Resource *items32 = nullptr;
@@ -590,14 +590,14 @@ ResourceArray ResourceDataValue::getArray(UErrorCode &errorCode) const {
break;
default:
errorCode = U_RESOURCE_TYPE_MISMATCH;
- return ResourceArray();
+ return {};
}
return ResourceArray(items16, items32, length, fTraceInfo);
}
ResourceTable ResourceDataValue::getTable(UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
- return ResourceTable();
+ return {};
}
const uint16_t *keys16 = nullptr;
const int32_t *keys32 = nullptr;
@@ -627,7 +627,7 @@ ResourceTable ResourceDataValue::getTable(UErrorCode &errorCode) const {
break;
default:
errorCode = U_RESOURCE_TYPE_MISMATCH;
- return ResourceTable();
+ return {};
}
return ResourceTable(keys16, keys32, items16, items32, length, fTraceInfo);
}
diff --git a/icu4c/source/common/uscript.cpp b/icu4c/source/common/uscript.cpp
index 3cc2b6675..2e9012a98 100644
--- a/icu4c/source/common/uscript.cpp
+++ b/icu4c/source/common/uscript.cpp
@@ -18,7 +18,6 @@
#include "unicode/uchar.h"
#include "unicode/uscript.h"
#include "unicode/uloc.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -57,33 +56,25 @@ setOneCode(UScriptCode script, UScriptCode *scripts, int32_t capacity, UErrorCod
static int32_t
getCodesFromLocale(const char *locale,
UScriptCode *scripts, int32_t capacity, UErrorCode *err) {
- UErrorCode internalErrorCode = U_ZERO_ERROR;
- char lang[8] = {0};
- char script[8] = {0};
- int32_t scriptLength;
- if(U_FAILURE(*err)) { return 0; }
+ if (U_FAILURE(*err)) { return 0; }
+ icu::CharString lang;
+ icu::CharString script;
+ ulocimp_getSubtags(locale, &lang, &script, nullptr, nullptr, nullptr, *err);
+ if (U_FAILURE(*err)) { return 0; }
// Multi-script languages, equivalent to the LocaleScript data
// that we used to load from locale resource bundles.
- /*length = */ uloc_getLanguage(locale, lang, UPRV_LENGTHOF(lang), &internalErrorCode);
- if(U_FAILURE(internalErrorCode) || internalErrorCode == U_STRING_NOT_TERMINATED_WARNING) {
- return 0;
- }
- if(0 == uprv_strcmp(lang, "ja")) {
+ if (lang == "ja") {
return setCodes(JAPANESE, UPRV_LENGTHOF(JAPANESE), scripts, capacity, err);
}
- if(0 == uprv_strcmp(lang, "ko")) {
+ if (lang == "ko") {
return setCodes(KOREAN, UPRV_LENGTHOF(KOREAN), scripts, capacity, err);
}
- scriptLength = uloc_getScript(locale, script, UPRV_LENGTHOF(script), &internalErrorCode);
- if(U_FAILURE(internalErrorCode) || internalErrorCode == U_STRING_NOT_TERMINATED_WARNING) {
- return 0;
- }
- if(0 == uprv_strcmp(lang, "zh") && 0 == uprv_strcmp(script, "Hant")) {
+ if (lang == "zh" && script == "Hant") {
return setCodes(HAN_BOPO, UPRV_LENGTHOF(HAN_BOPO), scripts, capacity, err);
}
// Explicit script code.
- if(scriptLength != 0) {
- UScriptCode scriptCode = (UScriptCode)u_getPropertyValueEnum(UCHAR_SCRIPT, script);
+ if (!script.isEmpty()) {
+ UScriptCode scriptCode = (UScriptCode)u_getPropertyValueEnum(UCHAR_SCRIPT, script.data());
if(scriptCode != USCRIPT_INVALID_CODE) {
if(scriptCode == USCRIPT_SIMPLIFIED_HAN || scriptCode == USCRIPT_TRADITIONAL_HAN) {
scriptCode = USCRIPT_HAN;
@@ -140,11 +131,7 @@ uscript_getCode(const char* nameOrAbbrOrLocale,
if(U_FAILURE(*err) || length != 0) {
return length;
}
- icu::CharString likely;
- {
- icu::CharStringByteSink sink(&likely);
- ulocimp_addLikelySubtags(nameOrAbbrOrLocale, sink, &internalErrorCode);
- }
+ icu::CharString likely = ulocimp_addLikelySubtags(nameOrAbbrOrLocale, internalErrorCode);
if(U_SUCCESS(internalErrorCode) && internalErrorCode != U_STRING_NOT_TERMINATED_WARNING) {
length = getCodesFromLocale(likely.data(), fillIn, capacity, err);
if(U_FAILURE(*err) || length != 0) {
diff --git a/icu4c/source/common/uset_props.cpp b/icu4c/source/common/uset_props.cpp
index 6f6e0c550..c5efde1ff 100644
--- a/icu4c/source/common/uset_props.cpp
+++ b/icu4c/source/common/uset_props.cpp
@@ -36,9 +36,9 @@ uset_openPattern(const char16_t* pattern, int32_t patternLength,
UnicodeString pat(patternLength==-1, pattern, patternLength);
UnicodeSet* set = new UnicodeSet(pat, *ec);
/* test for nullptr */
- if(set == 0) {
+ if (set == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
if (U_FAILURE(*ec)) {
@@ -56,9 +56,9 @@ uset_openPatternOptions(const char16_t* pattern, int32_t patternLength,
UnicodeString pat(patternLength==-1, pattern, patternLength);
UnicodeSet* set = new UnicodeSet(pat, options, nullptr, *ec);
/* test for nullptr */
- if(set == 0) {
+ if (set == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
if (U_FAILURE(*ec)) {
diff --git a/icu4c/source/common/usprep.cpp b/icu4c/source/common/usprep.cpp
index fc9d0ac20..22ab0c24e 100644
--- a/icu4c/source/common/usprep.cpp
+++ b/icu4c/source/common/usprep.cpp
@@ -228,7 +228,7 @@ loadData(UStringPrepProfile* profile,
const char* type,
UErrorCode* errorCode) {
/* load Unicode SPREP data from file */
- UTrie _sprepTrie={ 0,0,0,0,0,0,0 };
+ UTrie _sprepTrie = {nullptr, nullptr, nullptr, 0, 0, 0, 0};
UDataMemory *dataMemory;
const int32_t *p=nullptr;
const uint8_t *pb;
diff --git a/icu4c/source/common/ustrcase.cpp b/icu4c/source/common/ustrcase.cpp
index e4aec8a1c..4c726d47d 100644
--- a/icu4c/source/common/ustrcase.cpp
+++ b/icu4c/source/common/ustrcase.cpp
@@ -1857,7 +1857,7 @@ u_strCaseCompare(const char16_t *s1, int32_t length1,
uint32_t options,
UErrorCode *pErrorCode) {
/* argument checking */
- if(pErrorCode==0 || U_FAILURE(*pErrorCode)) {
+ if (pErrorCode == nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
if(s1==nullptr || length1<-1 || s2==nullptr || length2<-1) {
diff --git a/icu4c/source/common/ustrenum.cpp b/icu4c/source/common/ustrenum.cpp
index a60b2208f..f4fc5906e 100644
--- a/icu4c/source/common/ustrenum.cpp
+++ b/icu4c/source/common/ustrenum.cpp
@@ -168,8 +168,8 @@ const char *UStringEnumeration::next(int32_t *resultLength, UErrorCode &status)
const UnicodeString* UStringEnumeration::snext(UErrorCode& status) {
int32_t length;
const char16_t* str = uenum_unext(uenum, &length, &status);
- if (str == 0 || U_FAILURE(status)) {
- return 0;
+ if (str == nullptr || U_FAILURE(status)) {
+ return nullptr;
}
return &unistr.setTo(str, length);
}
@@ -360,7 +360,7 @@ U_CAPI UEnumeration* U_EXPORT2
uenum_openCharStringsEnumeration(const char* const strings[], int32_t count,
UErrorCode* ec) {
UCharStringEnumeration* result = nullptr;
- if (U_SUCCESS(*ec) && count >= 0 && (count == 0 || strings != 0)) {
+ if (U_SUCCESS(*ec) && count >= 0 && (count == 0 || strings != nullptr)) {
result = (UCharStringEnumeration*) uprv_malloc(sizeof(UCharStringEnumeration));
if (result == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
@@ -379,7 +379,7 @@ U_CAPI UEnumeration* U_EXPORT2
uenum_openUCharStringsEnumeration(const char16_t* const strings[], int32_t count,
UErrorCode* ec) {
UCharStringEnumeration* result = nullptr;
- if (U_SUCCESS(*ec) && count >= 0 && (count == 0 || strings != 0)) {
+ if (U_SUCCESS(*ec) && count >= 0 && (count == 0 || strings != nullptr)) {
result = (UCharStringEnumeration*) uprv_malloc(sizeof(UCharStringEnumeration));
if (result == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
diff --git a/icu4c/source/common/util_props.cpp b/icu4c/source/common/util_props.cpp
index 5991769d0..366a555ee 100644
--- a/icu4c/source/common/util_props.cpp
+++ b/icu4c/source/common/util_props.cpp
@@ -198,12 +198,11 @@ int32_t ICU_Utility::parseNumber(const UnicodeString& text,
if (d < 0) {
break;
}
- n = radix*n + d;
- // ASSUME that when a 32-bit integer overflows it becomes
- // negative. E.g., 214748364 * 10 + 8 => negative value.
- if (n < 0) {
+ int64_t update = radix*static_cast<int64_t>(n) + d;
+ if (update > INT32_MAX) {
return -1;
}
+ n = static_cast<int32_t>(update);
++p;
}
if (p == pos) {
diff --git a/icu4c/source/common/utrie2.cpp b/icu4c/source/common/utrie2.cpp
index 74f91bc81..2c3488a4c 100644
--- a/icu4c/source/common/utrie2.cpp
+++ b/icu4c/source/common/utrie2.cpp
@@ -137,33 +137,33 @@ utrie2_openFromSerialized(UTrie2ValueBits valueBits,
UTrie2 *trie;
if(U_FAILURE(*pErrorCode)) {
- return 0;
+ return nullptr;
}
if( length<=0 || (U_POINTER_MASK_LSB(data, 3)!=0) ||
valueBits<0 || UTRIE2_COUNT_VALUE_BITS<=valueBits
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
/* enough data for a trie header? */
if(length<(int32_t)sizeof(UTrie2Header)) {
*pErrorCode=U_INVALID_FORMAT_ERROR;
- return 0;
+ return nullptr;
}
/* check the signature */
header=(const UTrie2Header *)data;
if(header->signature!=UTRIE2_SIG) {
*pErrorCode=U_INVALID_FORMAT_ERROR;
- return 0;
+ return nullptr;
}
/* get the options */
if(valueBits!=(UTrie2ValueBits)(header->options&UTRIE2_OPTIONS_VALUE_BITS_MASK)) {
*pErrorCode=U_INVALID_FORMAT_ERROR;
- return 0;
+ return nullptr;
}
/* get the length values and offsets */
@@ -188,14 +188,14 @@ utrie2_openFromSerialized(UTrie2ValueBits valueBits,
}
if(length<actualLength) {
*pErrorCode=U_INVALID_FORMAT_ERROR; /* not enough bytes */
- return 0;
+ return nullptr;
}
/* allocate the trie */
trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2));
if(trie==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
uprv_memcpy(trie, &tempTrie, sizeof(tempTrie));
trie->memory=(uint32_t *)data;
@@ -226,7 +226,7 @@ utrie2_openFromSerialized(UTrie2ValueBits valueBits,
break;
default:
*pErrorCode=U_INVALID_FORMAT_ERROR;
- return 0;
+ return nullptr;
}
if(pActualLength!=nullptr) {
@@ -247,12 +247,12 @@ utrie2_openDummy(UTrie2ValueBits valueBits,
int32_t dataMove; /* >0 if the data is moved to the end of the index array */
if(U_FAILURE(*pErrorCode)) {
- return 0;
+ return nullptr;
}
if(valueBits<0 || UTRIE2_COUNT_VALUE_BITS<=valueBits) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
/* calculate the total length of the dummy trie data */
@@ -269,14 +269,14 @@ utrie2_openDummy(UTrie2ValueBits valueBits,
trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2));
if(trie==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
uprv_memset(trie, 0, sizeof(UTrie2));
trie->memory=uprv_malloc(length);
if(trie->memory==nullptr) {
uprv_free(trie);
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
trie->length=length;
trie->isMemoryOwned=true;
@@ -364,7 +364,7 @@ utrie2_openDummy(UTrie2ValueBits valueBits,
break;
default:
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
return trie;
diff --git a/icu4c/source/common/utrie2_builder.cpp b/icu4c/source/common/utrie2_builder.cpp
index 1254e8cba..02a62e3fd 100644
--- a/icu4c/source/common/utrie2_builder.cpp
+++ b/icu4c/source/common/utrie2_builder.cpp
@@ -131,7 +131,7 @@ utrie2_open(uint32_t initialValue, uint32_t errorValue, UErrorCode *pErrorCode)
uprv_free(newTrie);
uprv_free(data);
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
uprv_memset(trie, 0, sizeof(UTrie2));
@@ -880,8 +880,6 @@ utrie2_setRange32(UTrie2 *trie,
fillBlock(newTrie->data+block, 0, rest, value, newTrie->initialValue, overwrite);
}
-
- return;
}
/* compaction --------------------------------------------------------------- */
diff --git a/icu4c/source/common/uts46.cpp b/icu4c/source/common/uts46.cpp
index 28f15f717..f0e137242 100644
--- a/icu4c/source/common/uts46.cpp
+++ b/icu4c/source/common/uts46.cpp
@@ -18,16 +18,17 @@
#if !UCONFIG_NO_IDNA
+#include "unicode/bytestream.h"
#include "unicode/idna.h"
#include "unicode/normalizer2.h"
#include "unicode/uscript.h"
#include "unicode/ustring.h"
#include "unicode/utf16.h"
+#include "bytesinkutil.h"
#include "cmemory.h"
#include "cstring.h"
#include "punycode.h"
#include "ubidi_props.h"
-#include "ustr_imp.h"
// Note about tests for UIDNA_ERROR_DOMAIN_NAME_TOO_LONG:
//
@@ -1425,11 +1426,14 @@ uidna_labelToASCII_UTF8(const UIDNA *idna,
return 0;
}
StringPiece src(label, length<0 ? static_cast<int32_t>(uprv_strlen(label)) : length);
- CheckedArrayByteSink sink(dest, capacity);
- IDNAInfo info;
- reinterpret_cast<const IDNA *>(idna)->labelToASCII_UTF8(src, sink, info, *pErrorCode);
- idnaInfoToStruct(info, pInfo);
- return u_terminateChars(dest, capacity, sink.NumberOfBytesAppended(), pErrorCode);
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ dest, capacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ IDNAInfo info;
+ reinterpret_cast<const IDNA *>(idna)->labelToASCII_UTF8(src, sink, info, status);
+ idnaInfoToStruct(info, pInfo);
+ },
+ *pErrorCode);
}
U_CAPI int32_t U_EXPORT2
@@ -1441,11 +1445,14 @@ uidna_labelToUnicodeUTF8(const UIDNA *idna,
return 0;
}
StringPiece src(label, length<0 ? static_cast<int32_t>(uprv_strlen(label)) : length);
- CheckedArrayByteSink sink(dest, capacity);
- IDNAInfo info;
- reinterpret_cast<const IDNA *>(idna)->labelToUnicodeUTF8(src, sink, info, *pErrorCode);
- idnaInfoToStruct(info, pInfo);
- return u_terminateChars(dest, capacity, sink.NumberOfBytesAppended(), pErrorCode);
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ dest, capacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ IDNAInfo info;
+ reinterpret_cast<const IDNA *>(idna)->labelToUnicodeUTF8(src, sink, info, status);
+ idnaInfoToStruct(info, pInfo);
+ },
+ *pErrorCode);
}
U_CAPI int32_t U_EXPORT2
@@ -1457,11 +1464,14 @@ uidna_nameToASCII_UTF8(const UIDNA *idna,
return 0;
}
StringPiece src(name, length<0 ? static_cast<int32_t>(uprv_strlen(name)) : length);
- CheckedArrayByteSink sink(dest, capacity);
- IDNAInfo info;
- reinterpret_cast<const IDNA *>(idna)->nameToASCII_UTF8(src, sink, info, *pErrorCode);
- idnaInfoToStruct(info, pInfo);
- return u_terminateChars(dest, capacity, sink.NumberOfBytesAppended(), pErrorCode);
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ dest, capacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ IDNAInfo info;
+ reinterpret_cast<const IDNA *>(idna)->nameToASCII_UTF8(src, sink, info, status);
+ idnaInfoToStruct(info, pInfo);
+ },
+ *pErrorCode);
}
U_CAPI int32_t U_EXPORT2
@@ -1473,11 +1483,14 @@ uidna_nameToUnicodeUTF8(const UIDNA *idna,
return 0;
}
StringPiece src(name, length<0 ? static_cast<int32_t>(uprv_strlen(name)) : length);
- CheckedArrayByteSink sink(dest, capacity);
- IDNAInfo info;
- reinterpret_cast<const IDNA *>(idna)->nameToUnicodeUTF8(src, sink, info, *pErrorCode);
- idnaInfoToStruct(info, pInfo);
- return u_terminateChars(dest, capacity, sink.NumberOfBytesAppended(), pErrorCode);
+ return ByteSinkUtil::viaByteSinkToTerminatedChars(
+ dest, capacity,
+ [&](ByteSink& sink, UErrorCode& status) {
+ IDNAInfo info;
+ reinterpret_cast<const IDNA *>(idna)->nameToUnicodeUTF8(src, sink, info, status);
+ idnaInfoToStruct(info, pInfo);
+ },
+ *pErrorCode);
}
#endif // UCONFIG_NO_IDNA
diff --git a/icu4c/source/common/utypes.cpp b/icu4c/source/common/utypes.cpp
index 63e05b124..715994d67 100644
--- a/icu4c/source/common/utypes.cpp
+++ b/icu4c/source/common/utypes.cpp
@@ -129,6 +129,19 @@ _uFmtErrorName[U_FMT_PARSE_ERROR_LIMIT - U_FMT_PARSE_ERROR_START] = {
"U_FORMAT_INEXACT_ERROR",
"U_NUMBER_ARG_OUTOFBOUNDS_ERROR",
"U_NUMBER_SKELETON_SYNTAX_ERROR",
+ "U_MF_UNRESOLVED_VARIABLE_ERROR",
+ "U_MF_SYNTAX_ERROR",
+ "U_MF_UNKNOWN_FUNCTION_ERROR",
+ "U_MF_VARIANT_KEY_MISMATCH_ERROR",
+ "U_MF_FORMATTING_ERROR",
+ "U_MF_NONEXHAUSTIVE_PATTERN_ERROR",
+ "U_MF_DUPLICATE_OPTION_NAME_ERROR",
+ "U_MF_SELECTOR_ERROR",
+ "U_MF_MISSING_SELECTOR_ANNOTATION_ERROR",
+ "U_MF_DUPLICATE_DECLARATION_ERROR",
+ "U_MF_OPERAND_MISMATCH_ERROR",
+ "U_MF_UNSUPPORTED_STATEMENT_ERROR",
+ "U_MF_UNSUPPORTED_EXPRESSION_ERROR"
};
static const char * const
diff --git a/icu4c/source/common/uvector.cpp b/icu4c/source/common/uvector.cpp
index f93d73a3c..85c322cea 100644
--- a/icu4c/source/common/uvector.cpp
+++ b/icu4c/source/common/uvector.cpp
@@ -183,7 +183,7 @@ void UVector::insertElementAt(int32_t elem, int32_t index, UErrorCode &status) {
}
void* UVector::elementAt(int32_t index) const {
- return (0 <= index && index < count) ? elements[index].pointer : 0;
+ return (0 <= index && index < count) ? elements[index].pointer : nullptr;
}
int32_t UVector::elementAti(int32_t index) const {
diff --git a/icu4c/source/common/uvectr32.cpp b/icu4c/source/common/uvectr32.cpp
index fb554729f..a2dc1bdbc 100644
--- a/icu4c/source/common/uvectr32.cpp
+++ b/icu4c/source/common/uvectr32.cpp
@@ -39,7 +39,7 @@ UVector32::UVector32(int32_t initialCapacity, UErrorCode &status) :
count(0),
capacity(0),
maxCapacity(0),
- elements(0)
+ elements(nullptr)
{
_init(initialCapacity, status);
}
@@ -58,7 +58,7 @@ void UVector32::_init(int32_t initialCapacity, UErrorCode &status) {
initialCapacity = uprv_min(DEFAULT_CAPACITY, maxCapacity);
}
elements = (int32_t *)uprv_malloc(sizeof(int32_t)*initialCapacity);
- if (elements == 0) {
+ if (elements == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
capacity = initialCapacity;
@@ -67,7 +67,7 @@ void UVector32::_init(int32_t initialCapacity, UErrorCode &status) {
UVector32::~UVector32() {
uprv_free(elements);
- elements = 0;
+ elements = nullptr;
}
/**
diff --git a/icu4c/source/common/uvectr64.cpp b/icu4c/source/common/uvectr64.cpp
index 05559dd83..58b0b1f8b 100644
--- a/icu4c/source/common/uvectr64.cpp
+++ b/icu4c/source/common/uvectr64.cpp
@@ -36,7 +36,7 @@ UVector64::UVector64(int32_t initialCapacity, UErrorCode &status) :
count(0),
capacity(0),
maxCapacity(0),
- elements(0)
+ elements(nullptr)
{
_init(initialCapacity, status);
}
@@ -55,7 +55,7 @@ void UVector64::_init(int32_t initialCapacity, UErrorCode &status) {
initialCapacity = uprv_min(DEFAULT_CAPACITY, maxCapacity);
}
elements = (int64_t *)uprv_malloc(sizeof(int64_t)*initialCapacity);
- if (elements == 0) {
+ if (elements == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
capacity = initialCapacity;
@@ -64,7 +64,7 @@ void UVector64::_init(int32_t initialCapacity, UErrorCode &status) {
UVector64::~UVector64() {
uprv_free(elements);
- elements = 0;
+ elements = nullptr;
}
/**
diff --git a/icu4c/source/config/dist.mk b/icu4c/source/config/dist.mk
index d82863221..6558c1647 100644
--- a/icu4c/source/config/dist.mk
+++ b/icu4c/source/config/dist.mk
@@ -66,13 +66,15 @@ $(DISTY_FILE_TGZ) $(DISTY_FILE_ZIP) $(DISTY_DATA_ZIP): $(DISTY_DAT) $(DISTY_TMP
-$(RMV) $(DISTY_FILE) $(DISTY_TMP)
$(MKINSTALLDIRS) $(DISTY_TMP)
( cd $(ICU4CTOP)/.. && git archive --format=tar --prefix=icu/ HEAD:icu4c/ ) | ( cd "$(DISTY_TMP)" && tar xf - )
+ # special handling for LICENSE file. The symlinks will be included as files by tar and zip.
+ cp -fv $(ICU4CTOP)/LICENSE "$(DISTY_TMP)/LICENSE"
( cd $(DISTY_TMP)/icu/source ; zip -rlq $(DISTY_DATA_ZIP) data )
$(MKINSTALLDIRS) $(DISTY_IN)
echo DISTY_DAT=$(DISTY_DAT)
cp $(DISTY_DAT) $(DISTY_IN)
$(RMV) $(DISTY_RMDIR)
( cd $(DISTY_TMP)/icu ; python as_is/bomlist.py > as_is/bomlist.txt || rm -f as_is/bomlist.txt )
- ( cd $(DISTY_TMP) ; tar cfpz $(DISTY_FILE_TGZ) icu )
+ ( cd $(DISTY_TMP) ; tar cfpzh $(DISTY_FILE_TGZ) icu )
( cd $(DISTY_TMP) ; zip -rlq $(DISTY_FILE_ZIP) icu )
$(RMV) $(DISTY_TMP)
ln -sf $(shell basename $(DISTY_FILE_ZIP)) $(DISTY_FILE_DIR)/icu4c-src.zip
diff --git a/icu4c/source/config/mh-solaris b/icu4c/source/config/mh-solaris
index a26b468d8..b6550dcb8 100644
--- a/icu4c/source/config/mh-solaris
+++ b/icu4c/source/config/mh-solaris
@@ -5,8 +5,8 @@
## Copyright (c) 1999-2010, International Business Machines Corporation and
## others. All Rights Reserved.
-## Flags for ICU 59+
-CXXFLAGS += -std=c++11
+## Flags for ICU 75+
+CXXFLAGS += -std=c++17
CFLAGS += -std=c11
## Flags for position independent code
diff --git a/icu4c/source/configure b/icu4c/source/configure
index f23ed7c11..6a1719bfd 100755
--- a/icu4c/source/configure
+++ b/icu4c/source/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ICU 74.2.
+# Generated by GNU Autoconf 2.69 for ICU 75.1.
#
# Report bugs to <http://icu-project.org/bugs>.
#
@@ -582,8 +582,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='ICU'
PACKAGE_TARNAME='International Components for Unicode'
-PACKAGE_VERSION='74.2'
-PACKAGE_STRING='ICU 74.2'
+PACKAGE_VERSION='75.1'
+PACKAGE_STRING='ICU 75.1'
PACKAGE_BUGREPORT='http://icu-project.org/bugs'
PACKAGE_URL='http://icu-project.org'
@@ -673,7 +673,6 @@ U_NL_LANGINFO_CODESET
U_HAVE_NL_LANGINFO_CODESET
U_IS_BIG_ENDIAN
U_HAVE_DIRENT_H
-U_HAVE_INTTYPES_H
GENCCODE_ASSEMBLY
HAVE_MMAP
LIB_THREAD
@@ -1375,7 +1374,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures ICU 74.2 to adapt to many kinds of systems.
+\`configure' configures ICU 75.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1442,7 +1441,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of ICU 74.2:";;
+ short | recursive ) echo "Configuration of ICU 75.1:";;
esac
cat <<\_ACEOF
@@ -1580,7 +1579,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-ICU configure 74.2
+ICU configure 75.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2214,119 +2213,11 @@ $as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
-
-# ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES
-# ---------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_cxx_check_type ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=no"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof ($2))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
- eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_cxx_check_type
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=no"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof ($2))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by ICU $as_me 74.2, which was
+It was created by ICU $as_me 75.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2924,7 +2815,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
- for ac_prog in clang gcc cc c99 c89 xlc_r xlc cl.exe icc
+ for ac_prog in cc clang gcc c99 c89 xlc_r xlc cl.exe icc
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
@@ -2968,7 +2859,7 @@ fi
fi
if test -z "$CC"; then
ac_ct_CC=$CC
- for ac_prog in clang gcc cc c99 c89 xlc_r xlc cl.exe icc
+ for ac_prog in cc clang gcc c99 c89 xlc_r xlc cl.exe icc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -3515,8 +3406,6 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-# Make sure that we try clang++ first, which provides C++11 support.
-# The g++ compiler is less likely to support C++11.
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3527,7 +3416,7 @@ if test -z "$CXX"; then
CXX=$CCC
else
if test -n "$ac_tool_prefix"; then
- for ac_prog in clang++ g++ c++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC
+ for ac_prog in c++ clang++ g++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
@@ -3571,7 +3460,7 @@ fi
fi
if test -z "$CXX"; then
ac_ct_CXX=$CXX
- for ac_prog in clang++ g++ c++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC
+ for ac_prog in c++ clang++ g++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -3987,6 +3876,41 @@ if test "$GCC" = yes; then
CXXFLAGS="$CXXFLAGS -O2"
fi
fi
+ # if CFLAGS does not have a "-std=" setting, set it now to -std=c11,
+ # and check that the compiler still works.
+ if ! echo "$CFLAGS" | grep '\-std=' >/dev/null 2>&1; then
+ OLD_CFLAGS="${CFLAGS}"
+ CFLAGS="$CFLAGS -std=c11"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have a C11 compiler" >&5
+$as_echo_n "checking if we have a C11 compiler... " >&6; }
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ c11_okay=yes
+else
+ c11_okay=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $c11_okay" >&5
+$as_echo "$c11_okay" >&6; }
+ if [ $c11_okay = yes ]; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Adding CFLAGS option -std=c11" >&5
+$as_echo "$as_me: Adding CFLAGS option -std=c11" >&6;}
+ UCONFIG_CFLAGS="${UCONFIG_CFLAGS} -std=c11"
+ else
+ CFLAGS="$OLD_CFLAGS"
+ fi
+ fi
fi
ac_ext=c
@@ -4264,8 +4188,6 @@ fi
#AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true)
#AC_CHECK_PROG(STRIP, strip, strip, true)
-
-
# TODO(ICU-20301): Remove fallback to Python 2.
for ac_prog in python3 "py -3" python "py"
do
@@ -4481,17 +4403,6 @@ $as_echo "$ac_use_strict_options" >&6; }
then
if test "$GCC" = yes
then
- case "${host}" in
- *-*-solaris*)
- # Don't use -std=c11 on Solaris because of timezone check fails
- ;;
- *)
- # Do not use -ansi. It limits us to C90, and it breaks some platforms.
- # We use -std=c11 to disable the gnu99 defaults and its associated warnings
- CFLAGS="$CFLAGS -std=c11"
- ;;
- esac
-
CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings"
else
case "${host}" in
@@ -4523,7 +4434,6 @@ $as_echo "$ac_use_strict_options" >&6; }
# Check if we can build and use 64-bit libraries
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
if ${ac_cv_path_GREP+:} false; then :
@@ -6130,13 +6040,13 @@ $as_echo "no" >&6; }
fi
if [ "$GXX" = yes ]; then
- # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++11,
+ # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++17,
# and check that the compiler still works.
if ! echo "$CXXFLAGS" | grep '\-std=' >/dev/null 2>&1; then
OLD_CXXFLAGS="${CXXFLAGS}"
- CXXFLAGS="$CXXFLAGS -std=c++11"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have a C++11 compiler" >&5
-$as_echo_n "checking if we have a C++11 compiler... " >&6; }
+ CXXFLAGS="$CXXFLAGS -std=c++17"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have a C++17 compiler" >&5
+$as_echo_n "checking if we have a C++17 compiler... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6149,17 +6059,17 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
- cxx11_okay=yes
+ cxx17_okay=yes
else
- cxx11_okay=no
+ cxx17_okay=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cxx11_okay" >&5
-$as_echo "$cxx11_okay" >&6; }
- if [ $cxx11_okay = yes ]; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Adding CXXFLAGS option -std=c++11" >&5
-$as_echo "$as_me: Adding CXXFLAGS option -std=c++11" >&6;}
- UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -std=c++11"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cxx17_okay" >&5
+$as_echo "$cxx17_okay" >&6; }
+ if [ $cxx17_okay = yes ]; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Adding CXXFLAGS option -std=c++17" >&5
+$as_echo "$as_me: Adding CXXFLAGS option -std=c++17" >&6;}
+ UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -std=c++17"
else
CXXFLAGS="$OLD_CXXFLAGS"
fi
@@ -6499,33 +6409,6 @@ esac
$as_echo "$GENCCODE_ASSEMBLY" >&6; }
# Checks for header files
-for ac_header in inttypes.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
-if test "x$ac_cv_header_inttypes_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H 1
-_ACEOF
-
-fi
-
-done
-
-if test $ac_cv_header_inttypes_h = no; then
- U_HAVE_INTTYPES_H=0
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0"
-else
- U_HAVE_INTTYPES_H=1
-fi
-if test "$CC" = ccc; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"C compiler set to CCC ${CC}\" " >&5
-$as_echo "\"C compiler set to CCC ${CC}\" " >&6; }
- case "${host}" in
- alpha*-*-*) U_HAVE_INTTYPES_H=0;
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0"
- esac
-fi
-
for ac_header in dirent.h
@@ -7219,151 +7102,6 @@ else
fi
-# Check if C++17 std::string_view is available.
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-ac_fn_cxx_check_type "$LINENO" "std::string_view" "ac_cv_type_std__string_view" "#include <string_view>
-"
-if test "x$ac_cv_type_std__string_view" = xyes; then :
-
-fi
-
-if test "x$ac_cv_type_std__string_view" = xyes; then :
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRING_VIEW=1"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Checks for typedefs
-ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default"
-if test "x$ac_cv_type_int8_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define int8_t signed char
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "uint8_t" "ac_cv_type_uint8_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint8_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define uint8_t unsigned char
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default"
-if test "x$ac_cv_type_int16_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define int16_t signed short
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint16_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define uint16_t unsigned short
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default"
-if test "x$ac_cv_type_int32_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define int32_t signed long
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint32_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define uint32_t unsigned long
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default"
-if test "x$ac_cv_type_int64_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define int64_t signed long long
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define uint64_t unsigned long long
-_ACEOF
-
-fi
-
-
-if test $ac_cv_type_int8_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT8_T=0"
-fi
-
-if test $ac_cv_type_uint8_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT8_T=0"
-fi
-
-if test $ac_cv_type_int16_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT16_T=0"
-fi
-
-if test $ac_cv_type_uint16_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT16_T=0"
-fi
-
-if test $ac_cv_type_int32_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT32_T=0"
-fi
-
-if test $ac_cv_type_uint32_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT32_T=0"
-fi
-
-if test $ac_cv_type_int64_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT64_T=0"
-fi
-
-if test $ac_cv_type_uint64_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT64_T=0"
-fi
-
# Do various wchar_t related checks
ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default"
if test "x$ac_cv_header_wchar_h" = xyes; then :
@@ -7980,56 +7718,6 @@ fi
# Now that we're done using CPPFLAGS etc. for tests, we can change it
# for build.
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-# Silence a Clang warning about ambiguous operators with C++20 rewritten
-# expressions that possibly or maybe even probably is a mistake (ICU-20973).
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -Wambiguous-reversed-operator" >&5
-$as_echo_n "checking whether C++ compiler accepts -Wambiguous-reversed-operator... " >&6; }
-if ${ax_cv_check_cxxflags__Werror__Wambiguous_reversed_operator+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ax_check_save_flags=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS -Werror -Wambiguous-reversed-operator"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- ax_cv_check_cxxflags__Werror__Wambiguous_reversed_operator=yes
-else
- ax_cv_check_cxxflags__Werror__Wambiguous_reversed_operator=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CXXFLAGS=$ax_check_save_flags
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags__Werror__Wambiguous_reversed_operator" >&5
-$as_echo "$ax_cv_check_cxxflags__Werror__Wambiguous_reversed_operator" >&6; }
-if test "x$ax_cv_check_cxxflags__Werror__Wambiguous_reversed_operator" = xyes; then :
- CXXFLAGS+=" -Wno-ambiguous-reversed-operator"
-else
- :
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
if test "${CC}" = "clang"; then
CLANGCFLAGS="-Qunused-arguments -Wno-parentheses-equality"
else
@@ -8059,7 +7747,7 @@ echo "CXXFLAGS=$CXXFLAGS"
# output the Makefiles
-ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/icuexportdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile tools/escapesrc/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/localecanperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile test/fuzzer/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile"
+ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/icuexportdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile tools/escapesrc/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/localecanperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile test/fuzzer/Makefile samples/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -8604,7 +8292,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by ICU $as_me 74.2, which was
+This file was extended by ICU $as_me 75.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -8658,7 +8346,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-ICU config.status 74.2
+ICU config.status 75.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -8836,9 +8524,6 @@ do
"test/perf/leperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/leperf/Makefile" ;;
"test/fuzzer/Makefile") CONFIG_FILES="$CONFIG_FILES test/fuzzer/Makefile" ;;
"samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;;
- "samples/date/Makefile") CONFIG_FILES="$CONFIG_FILES samples/date/Makefile" ;;
- "samples/cal/Makefile") CONFIG_FILES="$CONFIG_FILES samples/cal/Makefile" ;;
- "samples/layout/Makefile") CONFIG_FILES="$CONFIG_FILES samples/layout/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
diff --git a/icu4c/source/configure.ac b/icu4c/source/configure.ac
index 2d7eb3001..033cab2ec 100644
--- a/icu4c/source/configure.ac
+++ b/icu4c/source/configure.ac
@@ -147,10 +147,8 @@ AC_SUBST(ENABLE_RELEASE)
: ${CXXFLAGS=""}
# Checks for compilers
-AC_PROG_CC([clang gcc cc c99 c89 xlc_r xlc cl.exe icc])
-# Make sure that we try clang++ first, which provides C++11 support.
-# The g++ compiler is less likely to support C++11.
-AC_PROG_CXX([clang++ g++ c++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC])
+AC_PROG_CC([cc clang gcc c99 c89 xlc_r xlc cl.exe icc])
+AC_PROG_CXX([c++ clang++ g++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC])
# pkg-config is needed for harfbuzz support
PKG_PROG_PKG_CONFIG([0.20])
@@ -175,6 +173,21 @@ if test "$GCC" = yes; then
CXXFLAGS="$CXXFLAGS -O2"
fi
fi
+ # if CFLAGS does not have a "-std=" setting, set it now to -std=c11,
+ # and check that the compiler still works.
+ if ! echo "$CFLAGS" | grep '\-std=' >/dev/null 2>&1; then
+ OLD_CFLAGS="${CFLAGS}"
+ CFLAGS="$CFLAGS -std=c11"
+ AC_MSG_CHECKING([[if we have a C11 compiler]])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[c11_okay=yes],[c11_okay=no])
+ AC_MSG_RESULT($c11_okay)
+ if [[ $c11_okay = yes ]]; then
+ AC_MSG_NOTICE([Adding CFLAGS option -std=c11])
+ UCONFIG_CFLAGS="${UCONFIG_CFLAGS} -std=c11"
+ else
+ CFLAGS="$OLD_CFLAGS"
+ fi
+ fi
fi
AC_PROG_CPP
@@ -199,8 +212,6 @@ fi
#AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true)
#AC_CHECK_PROG(STRIP, strip, strip, true)
-m4_ifndef([AX_CHECK_COMPILE_FLAG], [AC_MSG_ERROR(['autoconf-archive' is missing])])
-
# TODO(ICU-20301): Remove fallback to Python 2.
AC_CHECK_PROGS(PYTHON, python3 "py -3" python "py")
AC_SUBST(PYTHON)
@@ -515,17 +526,17 @@ else
fi
if [[ "$GXX" = yes ]]; then
- # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++11,
+ # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++17,
# and check that the compiler still works.
if ! echo "$CXXFLAGS" | grep '\-std=' >/dev/null 2>&1; then
OLD_CXXFLAGS="${CXXFLAGS}"
- CXXFLAGS="$CXXFLAGS -std=c++11"
- AC_MSG_CHECKING([[if we have a C++11 compiler]])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[cxx11_okay=yes],[cxx11_okay=no])
- AC_MSG_RESULT($cxx11_okay)
- if [[ $cxx11_okay = yes ]]; then
- AC_MSG_NOTICE([Adding CXXFLAGS option -std=c++11])
- UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -std=c++11"
+ CXXFLAGS="$CXXFLAGS -std=c++17"
+ AC_MSG_CHECKING([[if we have a C++17 compiler]])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[cxx17_okay=yes],[cxx17_okay=no])
+ AC_MSG_RESULT($cxx17_okay)
+ if [[ $cxx17_okay = yes ]]; then
+ AC_MSG_NOTICE([Adding CXXFLAGS option -std=c++17])
+ UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -std=c++17"
else
CXXFLAGS="$OLD_CXXFLAGS"
fi
@@ -672,22 +683,7 @@ AC_SUBST(GENCCODE_ASSEMBLY)
AC_MSG_RESULT($GENCCODE_ASSEMBLY)
# Checks for header files
-AC_CHECK_HEADERS(inttypes.h)
-if test $ac_cv_header_inttypes_h = no; then
- U_HAVE_INTTYPES_H=0
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0"
-else
- U_HAVE_INTTYPES_H=1
-fi
-if test "$CC" = ccc; then
- AC_MSG_RESULT("C compiler set to CCC ${CC}" )
- case "${host}" in
- alpha*-*-*) U_HAVE_INTTYPES_H=0;
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0"
- esac
-fi
-AC_SUBST(U_HAVE_INTTYPES_H)
AC_CHECK_HEADERS(dirent.h)
if test $ac_cv_header_dirent_h = no; then
@@ -900,56 +896,6 @@ else
fi
AC_SUBST(U_HAVE_STRTOD_L)
-# Check if C++17 std::string_view is available.
-AC_LANG_PUSH([C++])
-AC_CHECK_TYPE(std::string_view, [], [], [[#include <string_view>]])
-if test "x$ac_cv_type_std__string_view" = xyes; then :
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRING_VIEW=1"
-fi
-AC_LANG_POP([C++])
-
-# Checks for typedefs
-AC_CHECK_TYPE(int8_t,signed char)
-AC_CHECK_TYPE(uint8_t,unsigned char)
-AC_CHECK_TYPE(int16_t,signed short)
-AC_CHECK_TYPE(uint16_t,unsigned short)
-AC_CHECK_TYPE(int32_t,signed long)
-AC_CHECK_TYPE(uint32_t,unsigned long)
-AC_CHECK_TYPE(int64_t,signed long long)
-AC_CHECK_TYPE(uint64_t,unsigned long long)
-
-if test $ac_cv_type_int8_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT8_T=0"
-fi
-
-if test $ac_cv_type_uint8_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT8_T=0"
-fi
-
-if test $ac_cv_type_int16_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT16_T=0"
-fi
-
-if test $ac_cv_type_uint16_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT16_T=0"
-fi
-
-if test $ac_cv_type_int32_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT32_T=0"
-fi
-
-if test $ac_cv_type_uint32_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT32_T=0"
-fi
-
-if test $ac_cv_type_int64_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT64_T=0"
-fi
-
-if test $ac_cv_type_uint64_t = no; then
-CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT64_T=0"
-fi
-
# Do various wchar_t related checks
AC_CHECK_HEADER(wchar.h)
if test "$ac_cv_header_wchar_h" = no
@@ -1314,16 +1260,6 @@ fi
# Now that we're done using CPPFLAGS etc. for tests, we can change it
# for build.
-AC_LANG_PUSH([C++])
-# Silence a Clang warning about ambiguous operators with C++20 rewritten
-# expressions that possibly or maybe even probably is a mistake (ICU-20973).
-AX_CHECK_COMPILE_FLAG(
- [-Wambiguous-reversed-operator],
- [CXXFLAGS+=" -Wno-ambiguous-reversed-operator"],
- [],
- [-Werror])
-AC_LANG_POP([C++])
-
if test "${CC}" = "clang"; then
CLANGCFLAGS="-Qunused-arguments -Wno-parentheses-equality"
else
@@ -1419,8 +1355,7 @@ AC_CONFIG_FILES([icudefs.mk \
test/perf/utrie2perf/Makefile \
test/perf/leperf/Makefile \
test/fuzzer/Makefile \
- samples/Makefile samples/date/Makefile \
- samples/cal/Makefile samples/layout/Makefile])
+ samples/Makefile])
AC_OUTPUT
if test -z "$PYTHON";
diff --git a/icu4c/source/data/brkitr/LOCALE_DEPS.json b/icu4c/source/data/brkitr/LOCALE_DEPS.json
index f5d6928fc..6ef14fb64 100644
--- a/icu4c/source/data/brkitr/LOCALE_DEPS.json
+++ b/icu4c/source/data/brkitr/LOCALE_DEPS.json
@@ -3,5 +3,5 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1"
+ "cldrVersion": "45"
}
diff --git a/icu4c/source/data/brkitr/adaboost/jaml.txt b/icu4c/source/data/brkitr/adaboost/jaml.txt
index f93133122..be22dacb1 100644
--- a/icu4c/source/data/brkitr/adaboost/jaml.txt
+++ b/icu4c/source/data/brkitr/adaboost/jaml.txt
@@ -2,775 +2,2921 @@
// License & terms of use: http://www.unicode.org/copyright.html
jaml {
BW1Keys {
- "。・",
- "いう",
- "うな",
- "うに",
- "かし",
- "かも",
+ "のみ",
+ "以上",
+ "まま",
"から",
- "が、",
- "こと",
- "しい",
+ "たま",
+ "れた",
+ "白い",
+ "ちが",
+ "めて",
+ "ない",
"その",
- "たい",
- "たと",
- "たら",
- "だけ",
- "った",
- "てい",
- "ても",
"では",
- "でも",
- "とい",
+ "った",
+ "たと",
+ "こと",
+ "くれ",
"とか",
+ "るの",
+ "うな",
+ "たの",
+ "のは",
+ "より",
+ "でも",
"とが",
- "とき",
- "ない",
- "には",
+ "しい",
+ "かも",
+ "ック",
+ "よう",
+ "んな",
+ "とう",
+ "。・",
+ "たら",
+ "気に",
+ "ても",
+ "利用",
+ "最近",
+ "がと",
+ "この",
"にも",
- "もう",
- "より",
- "るの",
- "れた",
+ "もつ",
+ "が、",
+ "れて",
+ "りが",
+ "りと",
"んで",
- "んな",
- "同じ",
+ "まだ",
+ "には",
+ "もう",
"少し",
- "最近",
+ "とき",
+ "こそ",
+ "りも",
+ "れば",
+ "けど",
+ "同じ",
+ "ると",
+ "た.",
+ "まり",
+ "いう",
+ "は、",
+ "とい",
+ "い、",
+ "なら",
+ "思い",
+ "て、",
+ "ある",
+ "って",
+ "で、",
+ "なぜ",
+ "りに",
+ "りの",
+ "まる",
+ "れる",
+ "たい",
+ "それ",
+ "もし",
+ "の間",
+ "など",
+ "いの",
+ "うや",
+ "だけ",
+ "てい",
+ "とで",
+ "くて",
+ "んだ",
+ "ケー",
+ "いで",
+ "普段",
+ "のも",
+ "思う",
+ "えば",
+ "きな",
+ "に感",
+ "いた",
+ "、と",
+ "もの",
+ "ただ",
+ "のが",
+ "てる",
+ "大変",
+ "の後",
+ "る人",
+ "しか",
+ "でき",
+ "るで",
+ "まぁ",
+ "使い",
+ "こう",
+ "かな",
+ "買い",
+ "!!",
+ "める",
+ "に、",
+ "0円",
+ "、今",
+ "ージ",
+ "する",
+ "友達",
+ "クル",
+ "るに",
+ "やら",
+ "。あ",
+ "きり",
+ "と、",
+ "の上",
+ "ため",
+ "まで",
+ "か、",
+ "うち",
+ "なく",
+ "来て",
+ "きた",
+ "べき",
+ "じて",
+ "ぱり",
+ "んど",
+ "・・",
+ "だな",
+ "ろう",
+ "現在",
+ "。3",
+ "お店",
+ "てた",
+ "すら",
+ "いも",
+ "にか",
+ "いな",
+ "気が",
+ "たり",
+ "わら",
+ "実際",
+ "とに",
+ "も、",
+ "くさ",
+ "国人",
+ "うか",
+ "は1",
+ "とは",
}
BW1Values:intvector {
- 567,
- 529,
- 280,
- -13,
- 468,
- -533,
- 627,
- 192,
- -695,
- 423,
- -26,
- 53,
- -52,
- 13,
- 122,
- 13,
- -67,
- 39,
- -91,
- 95,
- -13,
- 784,
- -679,
- 91,
- 485,
- 109,
- 26,
- 767,
- 26,
- -407,
- 95,
- -206,
+ 3058,
+ 1223,
+ 2830,
+ 1723,
+ 2162,
+ 1494,
+ 3534,
+ -2703,
+ 969,
+ 1045,
+ -1066,
+ -518,
+ 166,
+ -948,
+ -1455,
+ 922,
+ 1688,
+ -1593,
+ 513,
+ -1543,
+ 1277,
+ 1376,
+ 667,
+ -1393,
+ 917,
+ -1290,
+ 631,
+ -1620,
+ 471,
+ 1085,
+ 2456,
+ 949,
+ -70,
+ 623,
+ 1018,
+ 1515,
+ -1545,
+ -1039,
+ 816,
+ 1694,
+ 1178,
+ -1090,
+ -96,
+ 1198,
+ -325,
+ 1343,
+ 588,
+ 1414,
+ 1375,
+ 1349,
+ 1413,
+ 1231,
+ 936,
+ 1014,
+ 1427,
+ 202,
+ 1736,
+ 1018,
+ 138,
+ 436,
+ -725,
+ -329,
+ 1251,
+ -1273,
+ 702,
+ 141,
+ -196,
+ 572,
+ 1571,
+ 356,
+ -399,
+ -429,
+ 350,
+ 242,
+ 293,
+ 1050,
+ 1155,
+ 1137,
+ -369,
+ -1096,
+ 391,
+ -522,
+ 941,
+ 680,
+ 515,
+ -781,
+ -844,
+ 655,
+ 725,
+ 57,
+ 791,
+ 687,
+ -579,
+ 310,
+ 310,
+ -538,
+ 398,
+ 482,
+ 372,
+ 401,
+ 753,
+ 626,
+ 96,
+ -364,
+ 252,
+ 444,
+ -715,
+ -591,
+ -137,
+ -698,
+ 322,
+ -429,
+ 564,
+ 304,
+ 302,
+ 789,
+ -159,
+ 625,
+ 437,
+ -442,
+ 416,
+ -619,
+ 449,
+ 245,
+ 589,
+ 524,
+ 160,
+ -255,
+ 218,
+ 149,
+ 386,
+ 236,
+ 424,
+ 254,
+ 342,
+ -303,
+ 237,
+ -302,
+ -315,
+ 281,
+ 274,
+ 199,
+ 147,
+ 190,
+ -216,
+ 180,
+ -98,
+ 115,
102,
- 438,
- 134,
- 365,
+ -71,
+ 83,
+ -20,
+ 29,
+ -24,
+ 24,
+ 12,
+ 37,
+ -4,
}
BW2Keys {
- "、と",
- "くな",
+ "たと",
+ "とお",
+ "とい",
+ "うや",
+ "ない",
+ "のみ",
"てい",
- "てお",
- "てみ",
"であ",
+ "のよ",
"です",
- "でも",
- "とい",
- "とこ",
- "とし",
- "ない",
- "など",
+ "たま",
+ "いた",
+ "の機",
+ "ので",
+ "でき",
"には",
"にも",
- "ので",
- "のよ",
+ "はじ",
+ "、そ",
+ "がと",
+ "くな",
+ "でも",
"はな",
- "もし",
+ "のは",
+ "ると",
+ "てお",
+ "など",
"帯電",
+ "でし",
+ "、と",
+ "また",
+ "ただ",
+ "くし",
+ "るよ",
+ "いも",
+ "もあ",
+ "りも",
+ "てあ",
+ "たい",
+ "てみ",
+ "そこ",
+ "もし",
+ "てく",
+ "ども",
+ "うど",
+ "の前",
+ "のだ",
+ "なく",
+ "にな",
+ "人が",
+ "んど",
+ "もの",
+ "いま",
+ "と思",
+ "れた",
+ "はい",
+ "すご",
+ "くだ",
+ "・・",
+ "てき",
+ "がっ",
+ "はあ",
+ "では",
+ "いつ",
+ "とな",
+ "時間",
+ "がし",
+ "にし",
+ "うま",
+ "たち",
+ "のお",
+ "ばい",
+ "、な",
+ "た時",
+ "のも",
+ "とか",
+ "らな",
+ "なか",
+ "のか",
+ "でな",
+ "たも",
+ "とこ",
+ "もな",
+ "した",
+ "もつ",
+ "いい",
+ "ード",
+ "とき",
+ "もち",
+ "たよ",
+ "はで",
+ "とも",
+ "いし",
+ "いよ",
+ "はず",
+ "やす",
+ "と同",
+ "よう",
+ "いな",
+ "ーな",
+ "るの",
+ "しい",
+ "、1",
+ "ても",
+ "りな",
+ "がよ",
+ "の1",
+ "うか",
+ "、清",
+ "今日",
+ "とす",
+ "つの",
+ "]京",
+ "うい",
+ "のが",
+ "い人",
+ "けど",
+ "ーで",
+ "がち",
+ "の方",
+ "らい",
+ "でい",
+ "てた",
+ "どこ",
}
BW2Values:intvector {
- -517,
- -39,
- -753,
+ 1475,
+ -3875,
+ 274,
+ -2003,
+ -2999,
+ -2622,
+ -1296,
+ -3302,
+ -838,
+ -3035,
+ -2116,
+ -1737,
+ -2082,
+ -921,
+ -2119,
+ -1012,
+ -1213,
+ -2465,
+ -1810,
+ -1022,
+ -1771,
+ -1689,
+ -331,
+ -1100,
+ -643,
+ -2518,
+ -1807,
+ -1351,
+ -1856,
-558,
- -92,
- -1495,
- -1445,
- -207,
- 515,
- -1044,
- 143,
- -1522,
+ -2737,
+ -2687,
+ -1520,
+ -944,
+ 709,
+ -935,
+ -1014,
+ -2039,
+ -1183,
+ -1524,
+ -652,
+ -490,
+ -1248,
+ -675,
+ -1684,
+ -820,
+ -873,
+ -956,
+ -362,
+ 1674,
+ -722,
+ -753,
+ -421,
+ 545,
+ -890,
+ -770,
+ -1196,
+ -1043,
+ -1221,
+ -1069,
+ -1494,
+ -1185,
+ -1027,
+ -659,
+ 159,
+ -681,
+ 280,
+ -458,
+ -1227,
+ -851,
+ 458,
+ -968,
+ -145,
+ 421,
+ -489,
+ -782,
-64,
- -426,
- -120,
- -756,
- -207,
- -26,
- -67,
- -224,
+ -299,
+ -278,
+ -1003,
+ 318,
+ -337,
+ -157,
+ -402,
+ -433,
+ -357,
+ -523,
+ -230,
+ -157,
+ -393,
+ 41,
+ -359,
+ -401,
+ -494,
+ -333,
+ -524,
+ -442,
+ -175,
+ -144,
+ 476,
+ -197,
+ -297,
+ -643,
+ -151,
+ 191,
+ 195,
+ -539,
+ -137,
+ -374,
+ -360,
+ -127,
+ 186,
+ -152,
+ -93,
+ -101,
+ 80,
+ -126,
+ 83,
+ 62,
+ 96,
+ -54,
+ -33,
+ -37,
+ -20,
}
BW3Keys {
- "ある",
- "いい",
+ "うま",
+ "もの",
+ "あり",
+ "いた",
+ "よう",
"いう",
- "かか",
- "かけ",
+ "上が",
+ "ます",
+ "はじ",
+ "とう",
+ "たま",
+ "ちが",
+ "いい",
+ "おり",
+ "のみ",
+ "可能",
+ "ちゃ",
"こと",
- "この",
- "ころ",
- "して",
- "しま",
- "そし",
- "その",
- "ため",
- "ちょ",
+ "そこ",
"でも",
+ "その",
+ "なっ",
"とい",
+ "ある",
+ "この",
"とき",
- "とこ",
+ "そう",
+ "手に",
+ "から",
+ "持っ",
+ "でき",
+ "かけ",
"とて",
- "なっ",
"なる",
- "もう",
- "もの",
- "もん",
- "よう",
+ "はし",
+ "ちょ",
+ "して",
+ "とお",
+ "もら",
"メー",
+ "ころ",
+ "そし",
+ "かか",
+ "もう",
+ "どん",
"・・",
+ "より",
+ "しま",
+ "とも",
+ "めて",
+ "もん",
+ "いろ",
+ "まぁ",
+ "だけ",
+ "した",
+ "さん",
+ "うち",
+ "きっ",
+ "よく",
+ "すご",
+ "以上",
+ "ない",
+ "ため",
+ "これ",
+ "どう",
+ "はま",
+ "す。",
+ "とっ",
+ "来た",
+ "しゃ",
+ "かっ",
+ "ただ",
+ "しい",
+ "すぐ",
+ "もと",
+ "やっ",
+ "かも",
+ "める",
+ "電車",
+ "まし",
+ "いか",
+ "パソ",
+ "わか",
+ "なく",
+ "いる",
+ "とこ",
+ "中で",
+ "さい",
+ "みた",
+ "かつ",
+ "いて",
+ "なか",
+ "なら",
+ "だい",
+ "あっ",
+ "もっ",
+ "また",
+ "いや",
+ "考え",
+ "うか",
+ "もつ",
+ "まだ",
+ "きま",
+ "まで",
+ "お茶",
+ "こそ",
+ "とり",
+ "いら",
+ "です",
+ "まり",
+ "出来",
+ "つな",
+ "ほし",
+ "たい",
+ "ここ",
+ "はい",
+ "行き",
+ "楽し",
+ "し、",
+ "めっ",
+ "んは",
+ "出て",
+ "いま",
+ "つけ",
+ "みが",
+ "まず",
+ "だろ",
+ "ルー",
+ "がち",
+ "料理",
+ "祭り",
+ "使っ",
+ "と思",
+ "ぼく",
+ "イン",
+ "逆に",
+ "で、",
+ "どこ",
+ "ずっ",
+ "つい",
+ "ませ",
+ "あの",
+ "過ぎ",
+ "始め",
+ "まっ",
+ "程度",
+ "書い",
}
BW3Values:intvector {
- -28,
+ 4971,
+ 3479,
+ 1053,
+ 712,
+ -404,
+ 719,
+ 1571,
+ -943,
+ 3173,
+ -693,
+ 1383,
+ 1979,
+ 1237,
+ -2875,
+ 3096,
+ 402,
+ -1016,
+ 899,
647,
+ 1643,
+ 1844,
+ -512,
+ -1257,
+ -339,
+ 1656,
+ 1917,
+ -1050,
+ 1242,
+ -1223,
+ 1098,
+ 980,
+ 2909,
+ 2245,
+ 481,
+ 3011,
+ 1986,
+ 278,
+ 678,
+ 2538,
+ 364,
+ -190,
+ -184,
+ 1752,
+ 2306,
+ -397,
+ -1499,
+ -1463,
+ -93,
+ 1038,
+ -1778,
+ 1078,
+ 832,
+ 1442,
+ -941,
+ 813,
+ -1566,
+ 444,
+ 727,
+ 1082,
+ 897,
+ -807,
+ 287,
+ 686,
+ 1075,
+ 296,
+ 1041,
+ -152,
+ 917,
+ 408,
+ 1283,
+ -802,
+ 1198,
+ -519,
+ 1094,
+ 1264,
+ 422,
+ -670,
+ -1304,
+ 121,
+ -670,
+ 480,
+ 589,
+ 691,
+ 348,
+ 556,
+ 742,
+ 414,
+ -672,
+ -739,
+ 821,
+ -372,
+ 198,
+ -160,
+ 680,
+ -93,
+ 626,
+ -479,
+ 732,
+ 429,
+ -268,
666,
- 456,
- 720,
- 235,
- 404,
- -333,
+ 296,
+ -514,
+ -677,
+ 627,
+ -520,
+ 539,
+ 621,
+ -239,
+ -596,
+ -428,
+ 437,
+ -350,
+ -238,
+ 552,
+ 272,
+ -218,
+ 128,
+ -136,
+ 260,
+ 438,
+ 128,
+ 85,
+ 251,
+ -374,
+ 233,
+ -357,
249,
- -13,
- -526,
- 502,
- 294,
- 316,
- 767,
- -277,
- 799,
- 1337,
- 230,
- -309,
- 13,
- 766,
- 2322,
- 39,
- -1262,
- 136,
- -39,
+ -345,
+ 8,
+ 214,
+ 109,
+ -161,
+ 329,
+ 203,
+ 246,
+ 119,
+ 46,
+ 121,
+ 62,
+ -58,
+ 71,
+ -95,
+ -28,
+ -24,
+ -24,
+ 12,
}
TW1Keys {
"という",
+ "ていく",
"ような",
"・・・",
+ "持って",
+ "しかし",
+ "てくれ",
+ "のまま",
+ "かなり",
+ "やはり",
+ "ながら",
+ "ょうど",
+ "もなく",
+ "思った",
+ "とんど",
+ "、それ",
+ "ない、",
+ "なんと",
+ "を利用",
+ "がって",
+ "ひとつ",
+ "と思う",
+ "ました",
+ "である",
+ "かなか",
+ "そして",
+ "っかり",
+ "。ただ",
+ "リーグ",
+ "きない",
+ "はその",
+ "ちろん",
+ "くさん",
+ "ること",
+ "だって",
+ "なって",
+ "すごく",
+ "ろいろ",
+ "。その",
+ "くらい",
}
TW1Values:intvector {
- 292,
- 361,
- 325,
+ 545,
+ 1686,
+ 1298,
+ 1104,
+ -1851,
+ 2079,
+ 1444,
+ 1162,
+ 2083,
+ 1728,
+ 1223,
+ 1174,
+ 947,
+ 811,
+ 1250,
+ 412,
+ -1039,
+ -691,
+ -1017,
+ -418,
+ 732,
+ 251,
+ -268,
+ 267,
+ 698,
+ 556,
+ 599,
+ 676,
+ 309,
+ 141,
+ -68,
+ 196,
+ 225,
+ -271,
+ 164,
+ -86,
+ 163,
+ 54,
+ 16,
+ 4,
}
TW2Keys {
- "ではな",
"気に入",
+ "ではな",
+ "とがあ",
+ "かもし",
+ "んでい",
+ "そもそ",
+ "うにな",
+ "してい",
+ "でもあ",
+ "ったこ",
+ "しかな",
+ "ともあ",
+ "からな",
+ "えるこ",
+ "でもな",
+ "とはい",
+ "えてい",
+ "してお",
}
TW2Values:intvector {
- -814,
- -466,
+ -4086,
+ -1086,
+ -1130,
+ -463,
+ -2306,
+ -1441,
+ -803,
+ -406,
+ -936,
+ -267,
+ 440,
+ -757,
+ -477,
+ -436,
+ -207,
+ -59,
+ 50,
+ -37,
}
TW3Keys {
+ "という",
+ "もなく",
+ "ところ",
+ "として",
"、ある",
"ている",
- "という",
+ "はない",
+ "のまま",
+ "すこと",
+ "てしま",
+ "らない",
+ "はそれ",
+ "ていく",
+ "とした",
+ "と言っ",
+ "ていう",
+ "である",
+ "、なん",
"ること",
+ "であっ",
+ "となっ",
+ "なんで",
+ "いとこ",
+ "もいい",
+ "もあり",
+ "であり",
+ "ういう",
+ "ばいい",
+ "にして",
+ "ていた",
+ "るとき",
+ "でした",
+ "うこと",
}
TW3Values:intvector {
- -200,
- -389,
- 387,
- -81,
+ 970,
+ -1899,
+ -1724,
+ 655,
+ -2756,
+ -1375,
+ -473,
+ -961,
+ 710,
+ -1361,
+ -1075,
+ -1539,
+ -289,
+ -1169,
+ -1166,
+ 769,
+ -749,
+ -293,
+ -49,
+ -812,
+ 229,
+ 574,
+ 75,
+ -408,
+ -183,
+ -535,
+ -120,
+ -137,
+ -37,
+ -66,
+ 108,
+ -54,
+ -4,
}
TW4Keys {
- "かなり",
+ "ところ",
+ "ように",
"くらい",
+ "した。",
+ "ありま",
+ "かなり",
+ "できた",
+ "ます。",
+ "ような",
"ことが",
- "ところ",
- "の京都",
+ "いた。",
+ "だから",
+ "うどん",
+ "そうで",
+ "ことに",
+ "もちろ",
+ "しかし",
+ "ことで",
+ "ない。",
+ "ことも",
+ "あり、",
+ "ちなみ",
+ "だった",
+ "すると",
+ "こと。",
+ "でも、",
+ "いろい",
+ "いかな",
"メール",
+ "ようで",
+ "なかな",
+ "なくな",
+ "しない",
+ "ソフト",
+ "ことを",
+ "わけで",
+ "まって",
+ "なんと",
+ "すごい",
+ "してき",
+ "いえば",
+ "らしい",
+ "しかも",
+ "ことは",
+ "あたり",
+ "食べて",
+ "しても",
+ "できま",
+ "なんか",
+ "なんて",
+ "いくら",
+ "観光客",
+ "いいと",
+ "いる。",
+ "ちょっ",
+ "そうい",
}
TW4Values:intvector {
- 441,
- 585,
- -51,
- 422,
- 1005,
- 26,
+ 2195,
+ -1673,
+ 1598,
+ -1569,
+ -1767,
+ 2848,
+ 2069,
+ -1366,
+ -2232,
+ -824,
+ 1066,
+ 1092,
+ 1258,
+ -925,
+ -856,
+ 1697,
+ 1383,
+ 380,
+ 191,
+ -588,
+ -595,
+ 1130,
+ -1150,
+ 406,
+ 683,
+ 628,
+ 590,
+ 651,
+ 256,
+ -896,
+ 669,
+ 253,
+ 438,
+ 512,
+ 255,
+ -234,
+ -824,
+ 481,
+ 314,
+ 278,
+ 397,
+ 424,
+ 494,
+ -232,
+ -390,
+ 140,
+ -174,
+ 52,
+ 116,
+ -102,
+ 170,
+ -75,
+ -63,
+ 37,
+ 20,
+ 16,
}
UW1Keys {
- "い",
+ "は",
+ "う",
+ "ま",
+ "お",
+ "ご",
+ "と",
"が",
- "す",
- "そ",
- "ち",
- "て",
+ "る",
+ "せ",
+ "い",
+ "ん",
+ "あ",
"で",
- "と",
- "な",
+ "学",
+ "り",
+ "浮",
"に",
- "は",
+ "甘",
+ "つ",
+ "バ",
+ "な",
+ "て",
+ "水",
+ "、",
+ "電",
+ "当",
+ "ふ",
+ "ら",
+ "れ",
+ "携",
+ "を",
+ "そ",
+ "っ",
+ "ろ",
+ "[",
+ "ー",
+ "か",
+ "間",
+ "ち",
+ "ゆ",
+ "し",
+ "外",
+ "フ",
+ "も",
+ "0",
+ "空",
+ "ス",
+ "く",
+ "自",
+ "す",
+ "用",
+ "さ",
+ "チ",
+ "ケ",
+ "入",
+ "ツ",
+ "困",
+ "利",
+ "生",
+ "機",
+ "安",
+ "画",
+ "庭",
+ "イ",
+ "3",
+ "メ",
+ "面",
+ "何",
+ "こ",
+ "問",
+ "方",
+ "白",
+ "じ",
+ "社",
+ "様",
+ "田",
+ "国",
+ "込",
+ "の",
+ "高",
+ "。",
+ "ッ",
+ "だ",
+ "新",
+ ".",
+ "ラ",
+ "使",
+ "見",
+ "?",
+ "振",
+ "!",
+ "撮",
+ "券",
+ "ざ",
+ "周",
+ "長",
+ "や",
+ "山",
+ "パ",
+ "好",
+ "ペ",
+ "着",
+ "め",
+ "み",
+ "個",
+ "上",
+ "え",
+ "連",
+ "ボ",
}
UW1Values:intvector {
- -51,
+ -273,
+ 275,
+ 128,
+ 922,
+ 890,
+ 165,
+ -385,
+ -34,
+ 210,
+ -91,
+ 289,
+ -230,
+ -127,
+ 209,
+ -102,
+ 1464,
+ -344,
+ -1424,
+ 241,
+ 511,
+ -220,
+ 60,
+ 1969,
+ -26,
+ 127,
+ -1038,
+ 1899,
+ 72,
+ -44,
+ -86,
+ -176,
+ 137,
+ 194,
+ 303,
+ -601,
+ 113,
+ -110,
+ 572,
+ 285,
+ -428,
+ -30,
+ 301,
+ -155,
+ -96,
+ 275,
+ -524,
+ -251,
+ 134,
+ 412,
+ 151,
+ 599,
+ -164,
+ 183,
+ -196,
+ 266,
+ 134,
+ 574,
+ -371,
+ 254,
+ 318,
+ -400,
-53,
- 152,
- 260,
- 112,
- 14,
- -56,
- 36,
- -148,
- -118,
- -56,
+ 619,
+ 211,
+ -258,
+ 96,
+ -306,
+ 173,
+ 64,
+ 588,
+ 124,
+ -248,
+ -49,
+ 225,
+ 365,
+ 137,
+ -382,
+ 42,
+ -31,
+ 170,
+ -17,
+ 117,
+ 63,
+ 178,
+ -72,
+ 92,
+ -79,
+ 76,
+ 113,
+ 209,
+ 65,
+ -182,
+ 79,
+ 120,
+ 137,
+ 144,
+ -42,
+ 114,
+ 63,
+ 50,
+ 126,
+ -16,
+ -12,
+ -8,
+ -79,
+ 12,
+ -8,
+ -29,
+ 16,
}
UW2Keys {
- "、",
"。",
- "う",
- "お",
- "か",
+ "、",
+ "を",
+ "に",
"が",
- "く",
- "さ",
- "し",
- "す",
- "そ",
+ "は",
+ "か",
+ "れ",
"っ",
+ "以",
"て",
+ "う",
+ "全",
+ "の",
+ "そ",
"で",
+ "だ",
+ "ゆ",
+ "さ",
+ "く",
+ "め",
"と",
- "な",
- "に",
- "の",
- "は",
- "ま",
"も",
- "よ",
- "る",
- "を",
- "ん",
+ "あ",
"一",
- "全",
- "多",
- "少",
- "最",
+ "し",
+ "ん",
+ "お",
+ "食",
+ "ご",
+ "き",
"毎",
"結",
+ "彼",
+ "少",
+ "最",
+ "ほ",
+ "わ",
+ "舞",
+ "上",
+ "よ",
+ "同",
+ "り",
+ "機",
+ "人",
+ "意",
+ "な",
+ "「",
+ "ば",
+ "関",
+ "京",
+ "本",
+ "い",
+ "大",
+ "目",
+ "多",
+ "着",
+ "つ",
+ "ケ",
+ "振",
+ "ゃ",
+ "題",
+ "手",
+ "ひ",
+ "容",
+ "水",
+ "我",
+ "る",
+ "裏",
+ "ー",
+ "ぜ",
+ "ぱ",
+ "名",
+ "フ",
+ "寺",
+ "葉",
+ "ま",
+ "夕",
+ "ぶ",
+ "絶",
+ "高",
+ "今",
+ "友",
+ "ら",
+ "ン",
+ "た",
+ "み",
+ "料",
+ "イ",
+ "電",
+ "冷",
+ "打",
+ "メ",
+ "世",
+ "パ",
+ "女",
+ "r",
+ "プ",
+ "取",
+ "^",
+ "場",
+ "こ",
+ ",",
+ "落",
+ "選",
+ "知",
+ "極",
+ "入",
+ "良",
+ "ラ",
+ "ス",
+ "遊",
+ "用",
+ "式",
+ "々",
+ "車",
+ "立",
+ "下",
+ "ル",
+ "甘",
+ "実",
+ "重",
+ "乗",
+ "当",
+ ":",
+ "]",
+ "H",
+ "的",
+ "相",
+ "三",
+ "け",
+ "格",
+ "正",
+ "[",
+ "日",
+ "公",
+ "4",
+ "ィ",
+ "ろ",
}
UW2Values:intvector {
- -1011,
- -904,
- -191,
- -235,
- 110,
- -521,
- -183,
- 416,
- 113,
+ -1401,
+ -1370,
+ -2403,
+ -1207,
+ -653,
+ -1010,
+ 18,
+ 5,
+ 269,
+ 2215,
+ -985,
+ -489,
+ 1762,
+ -695,
+ -534,
+ -810,
+ 523,
+ 1668,
+ 922,
+ -812,
+ 81,
+ -751,
+ -813,
+ -233,
+ 1197,
+ -49,
+ 344,
+ -711,
+ 981,
+ -682,
+ -556,
+ 1671,
+ 1952,
+ 754,
+ 676,
+ 445,
+ 1001,
+ -118,
+ 2257,
+ -421,
+ 577,
+ 567,
+ -479,
+ 1341,
+ 201,
+ 531,
+ -492,
+ -482,
+ -464,
+ 745,
+ -377,
+ 694,
+ -79,
+ 266,
+ -1004,
+ 387,
+ -477,
+ -423,
+ -246,
+ -1313,
+ 283,
+ 848,
+ 663,
+ -1353,
+ 956,
+ 335,
+ -1421,
+ -207,
+ -1437,
+ 274,
+ 567,
+ 396,
+ 341,
+ -264,
+ -551,
+ 787,
+ -173,
+ 826,
+ 435,
+ 1181,
+ 498,
+ 276,
+ 494,
+ -91,
+ 167,
+ -109,
+ -123,
+ 70,
+ -122,
+ 315,
+ -664,
+ 557,
+ -47,
+ -793,
+ 289,
+ -487,
+ 990,
+ -195,
+ -360,
+ 149,
+ 190,
+ 161,
+ -306,
+ -499,
+ 313,
+ -361,
+ 748,
+ -160,
+ 183,
+ -210,
+ 54,
+ -310,
+ -161,
+ 93,
+ 80,
+ 124,
+ -292,
+ 154,
31,
- -182,
- 163,
- -432,
- -493,
- -508,
- -40,
- -576,
- -434,
- -594,
- 588,
- -603,
- 257,
- -395,
- -1305,
- 255,
- 834,
- 39,
- 67,
- 571,
- 279,
- 628,
- 661,
+ 227,
+ 97,
+ 159,
+ -115,
+ 94,
+ 106,
+ -50,
+ -84,
+ 42,
+ 75,
+ 58,
+ 16,
+ 130,
+ 100,
+ -16,
+ -25,
+ -33,
+ 20,
+ -12,
+ -4,
}
UW3Keys {
- "…",
- "☆",
- "♪",
- "、",
"。",
- "々",
- "「",
- "」",
- "い",
- "う",
- "お",
- "か",
+ "に",
+ "、",
+ "の",
"が",
- "き",
+ "を",
+ "は",
+ "と",
+ "る",
"く",
- "ぐ",
- "す",
- "ず",
- "た",
- "だ",
- "っ",
- "つ",
+ "も",
+ "う",
"て",
"で",
- "と",
- "ど",
+ "た",
+ "い",
"な",
- "に",
- "の",
- "は",
- "ば",
- "へ",
- "ま",
- "も",
- "ゃ",
- "や",
+ "っ",
+ "方",
"ら",
- "り",
- "る",
- "ろ",
- "を",
"ん",
- "イ",
- "ッ",
- "・",
+ "ば",
+ "]",
+ "か",
+ ",",
+ "り",
+ "!",
"ー",
- "中",
- "京",
- "人",
+ "や",
+ "?",
+ ".",
+ "・",
+ "…",
+ "部",
+ "ど",
+ "ご",
+ ")",
+ "ッ",
+ "☆",
+ "お",
+ "上",
+ "以",
+ "つ",
+ "」",
+ "♪",
+ "電",
+ "ク",
+ "だ",
+ "へ",
+ "ろ",
+ "笑",
+ "ず",
+ "面",
+ "び",
+ "あ",
"今",
+ "ぐ",
"分",
- "度",
- "後",
- "日",
- "真",
- "笑",
- "観",
+ "感",
+ "大",
+ "京",
+ "中",
+ "人",
+ "場",
+ "イ",
+ "す",
+ "さ",
+ "ま",
+ "利",
"間",
- "電",
- "!",
- ")",
- ",",
- ".",
"0",
- "?",
- "]",
+ "ぁ",
+ "フ",
+ "ン",
+ "「",
+ "当",
+ "き",
+ "日",
+ "ス",
+ "ゃ",
+ "後",
+ "々",
+ "シ",
+ "度",
+ "観",
+ "食",
+ "行",
+ "ド",
+ "リ",
+ "え",
+ "空",
+ "夜",
+ "ア",
+ "』",
+ "1",
+ "体",
+ "秋",
+ "入",
+ "プ",
+ "昔",
+ "[",
+ "題",
+ "能",
+ "皆",
+ "む",
+ "学",
+ "態",
+ "月",
+ "係",
+ "変",
+ "超",
+ "ぶ",
+ "然",
+ "〜",
+ "れ",
+ "由",
+ "段",
+ "非",
+ "光",
+ "意",
+ "ぞ",
+ "年",
+ "べ",
+ "機",
+ "言",
+ "ち",
+ "気",
+ "み",
+ "o",
+ ">",
+ "し",
+ "け",
+ "移",
+ "見",
+ "ズ",
+ "自",
+ "果",
+ "番",
+ "色",
+ " ",
+ "ぱ",
+ "出",
+ "屋",
+ "カ",
+ "メ",
+ "指",
+ "店",
+ "一",
+ "別",
+ "頭",
+ "朝",
+ "想",
+ "味",
+ "生",
+ "語",
+ "”",
+ "着",
+ "所",
+ ":",
+ "神",
+ "応",
+ "程",
+ "不",
+ "料",
+ "寺",
+ "水",
+ "レ",
+ "パ",
+ "サ",
+ "グ",
+ "有",
}
UW3Values:intvector {
- 1798,
- 1235,
- 1035,
- 3634,
- 4347,
- 209,
- -26,
- 526,
- 964,
- 1031,
- -81,
- 1148,
- 2996,
- 40,
- 1470,
- 411,
- 251,
- 668,
- 1331,
- 424,
- -1005,
- 365,
- 1355,
- 1842,
- 2064,
- 1098,
- 1392,
- 2701,
- 2538,
- 2977,
- 1307,
+ 6699,
+ 3897,
+ 4784,
+ 3706,
+ 4162,
+ 5769,
+ 4221,
+ 2900,
+ 2971,
+ 2902,
+ 3155,
+ 2242,
+ 2447,
+ 3372,
+ 2217,
+ 1855,
+ 2357,
+ -1853,
+ 2814,
+ 1353,
+ 967,
+ 1790,
+ 2166,
+ 1899,
+ 3358,
+ 1013,
+ 3252,
+ -102,
+ 2149,
+ 3703,
+ 2093,
+ 1074,
+ 2428,
+ 1732,
+ 992,
+ -2327,
+ 2573,
+ -2137,
+ 2675,
+ -1495,
+ 428,
+ -1870,
+ 1078,
+ 1608,
+ 2714,
+ -1669,
+ 335,
+ 866,
+ 2073,
+ 1142,
+ 2335,
+ 1456,
+ 475,
+ 514,
+ 1179,
+ 1080,
+ 2053,
+ 1111,
+ 1389,
+ -1134,
+ -1396,
+ 998,
+ 486,
+ -794,
+ -568,
+ 938,
+ -599,
+ -370,
+ -681,
+ 752,
+ -870,
+ 1322,
+ -1285,
+ -284,
+ -1434,
+ -337,
+ 530,
+ 713,
+ -901,
+ 1112,
+ 1224,
+ 1435,
+ -1196,
+ 982,
+ -976,
+ -517,
+ -725,
+ -995,
+ -636,
+ 728,
+ 902,
+ 1480,
+ -700,
+ 1404,
+ -550,
+ 1000,
+ 1464,
+ -819,
+ -718,
+ 1287,
+ -960,
+ 1113,
+ -710,
+ 1294,
+ 920,
+ -552,
+ -749,
+ 584,
701,
- -238,
- 2360,
- 434,
- 1360,
- 1242,
- 972,
- 1706,
- 452,
- 4165,
- 284,
- -13,
- -52,
- 914,
- -243,
+ 328,
+ 976,
+ 672,
+ 515,
+ 489,
+ 295,
+ 680,
+ 13,
+ 768,
+ -218,
+ -477,
+ 825,
+ 344,
+ -711,
+ -463,
+ -419,
+ 363,
+ 130,
+ 275,
+ -520,
+ 588,
+ 181,
+ 159,
+ -635,
+ 160,
+ 304,
+ -352,
+ 767,
252,
- -396,
- 415,
- 324,
- 333,
- 222,
- 118,
- 287,
- 39,
- 934,
- -26,
- 493,
- -356,
- 1736,
- 2156,
- 2468,
- 1311,
- -224,
- 1719,
- 1640,
+ 469,
+ 257,
+ 454,
+ -160,
+ 338,
+ -102,
+ -136,
+ -240,
+ 203,
+ -50,
+ 285,
+ 486,
+ 270,
+ 398,
+ 101,
+ -160,
+ 159,
+ 215,
+ -149,
+ 189,
+ 94,
+ -111,
+ 149,
+ 145,
+ -93,
+ -76,
+ 50,
+ 54,
+ -54,
+ -29,
+ 33,
+ 12,
+ -16,
}
UW4Keys {
- "…",
- "、",
"。",
- "「",
- "」",
- "』",
- "い",
- "う",
- "え",
- "お",
- "か",
+ "の",
"が",
- "き",
- "く",
- "け",
- "こ",
- "さ",
- "し",
- "じ",
- "す",
- "ず",
- "せ",
- "そ",
- "た",
- "だ",
- "ち",
- "っ",
- "つ",
+ "に",
"て",
+ "る",
+ "、",
+ "は",
+ "っ",
"で",
+ "を",
+ "う",
"と",
- "ど",
- "な",
- "に",
- "の",
- "は",
- "ば",
- "ひ",
- "べ",
- "ま",
- "み",
- "め",
- "も",
- "ゃ",
- "や",
- "よ",
- "ら",
"り",
- "る",
+ "ま",
+ "た",
+ "あ",
"れ",
- "ろ",
- "わ",
- "を",
+ "な",
+ "そ",
+ "く",
+ "か",
+ "ら",
+ "ご",
+ "し",
+ "こ",
+ "だ",
+ "き",
+ "い",
"ん",
- "ッ",
- "ル",
- "ン",
- "・",
"ー",
+ "も",
+ "み",
+ "食",
+ "行",
+ "思",
+ "す",
+ "空",
+ "大",
+ "」",
+ "じ",
+ "や",
+ "け",
+ "め",
+ "さ",
+ "よ",
+ "「",
+ "表",
+ "日",
+ "広",
+ "場",
"一",
+ "時",
+ "ち",
+ "冷",
"京",
+ ",",
+ "わ",
"人",
- "今",
- "何",
- "使",
- "大",
- "帯",
- "思",
- "携",
- "時",
- "最",
- "気",
"私",
- "笑",
- "自",
- "行",
- "見",
- "食",
"!",
+ "え",
+ "ッ",
+ "当",
+ "・",
+ "ン",
+ "1",
+ "方",
+ "べ",
+ "手",
+ "来",
+ "ろ",
+ "せ",
+ "ル",
+ "ば",
+ "つ",
+ "使",
"(",
+ "持",
+ "…",
+ "ゆ",
+ "?",
")",
- ",",
+ "ぶ",
+ "何",
+ "彼",
+ "び",
+ "笑",
+ "本",
+ "ど",
+ "[",
".",
- "1",
+ "言",
+ "お",
+ "ず",
+ "イ",
+ "今",
+ "ゃ",
+ "見",
+ "自",
"2",
- "?",
+ "最",
+ "用",
+ "帯",
+ "間",
+ "携",
+ "多",
+ "リ",
+ "能",
+ "』",
"]",
+ "気",
+ "入",
+ "有",
+ "ね",
+ "白",
+ "ぁ",
+ "ぎ",
+ "中",
+ "ひ",
+ "遊",
+ "”",
+ "風",
+ "コ",
+ "ょ",
+ "水",
+ "情",
+ "0",
+ "む",
+ "合",
+ "公",
+ "ぼ",
+ "♪",
+ "小",
+ "僕",
+ "☆",
+ "〜",
+ "ド",
+ "楽",
+ "全",
+ "書",
+ "ス",
+ "二",
+ "態",
+ "少",
+ "不",
+ "返",
+ "定",
+ "ぜ",
+ "高",
+ "特",
+ "祭",
+ "他",
+ "づ",
+ "目",
+ "ぞ",
+ "話",
+ "子",
+ "ぐ",
+ "年",
+ "3",
+ "道",
+ "的",
+ "o",
+ "実",
+ "買",
+ "無",
+ "街",
+ "東",
+ "物",
+ "ュ",
+ "ほ",
+ "込",
+ "甘",
+ "タ",
+ "換",
+ "現",
+ "新",
+ "夏",
+ "フ",
+ "ト",
+ "げ",
+ "ざ",
+ "デ",
+ "券",
+ "感",
+ "秋",
+ "難",
+ "外",
+ "へ",
+ "ョ",
+ "流",
+ "舞",
+ "サ",
+ "前",
+ "店",
+ "押",
+ "開",
+ " ",
+ "^",
+ "度",
+ "5",
+ "々",
+ "写",
+ "回",
+ "ラ",
+ "関",
+ "安",
+ "相",
+ "参",
+ "百",
+ "取",
+ "ム",
+ "屋",
+ "通",
+ "勝",
+ "美",
}
UW4Values:intvector {
- -995,
- -4812,
- -4206,
- 1314,
- -1957,
- -296,
- -886,
- -1160,
- -711,
- 539,
- -1628,
- -2180,
- -1275,
- -1529,
- -1615,
- 258,
- -748,
- -1073,
- -793,
- -412,
- -321,
- -234,
- 191,
- -1056,
- -1461,
- -355,
- -2310,
- -400,
- -2403,
- -1808,
- -1442,
- -334,
- -1091,
- -2678,
- -2581,
- -2164,
- -635,
- 122,
- -596,
- -774,
- -536,
- -399,
- -1580,
- -105,
- -219,
- -450,
- -2999,
- -2405,
- -2760,
- -2105,
- -1024,
- -425,
- -2408,
- -2158,
- -149,
- -401,
- -694,
- -490,
- -1750,
- 488,
- 510,
- 522,
- 549,
- 474,
- 544,
- 396,
- -289,
- 955,
- 123,
- 305,
- 423,
- 329,
+ -7440,
+ -4018,
+ -3577,
+ -4299,
+ -3839,
+ -5462,
+ -7452,
+ -3332,
+ -4313,
+ -3120,
+ -4861,
+ -2446,
+ -2917,
+ -4081,
+ -1296,
+ -1675,
+ 501,
+ -4326,
+ -1928,
+ 456,
+ -2884,
+ -2662,
+ -4391,
+ 591,
+ -1725,
+ -517,
+ -2037,
+ -2074,
+ -1531,
+ -3821,
+ -2899,
+ -2746,
+ -1111,
+ 652,
+ 411,
+ 1386,
+ -1159,
+ 2526,
+ 788,
+ -5393,
+ -2352,
+ -1257,
+ -3441,
+ -1867,
+ -1716,
+ -643,
+ 2301,
+ 1003,
+ 695,
+ 1811,
+ 333,
+ 576,
+ 564,
+ -1762,
+ 2351,
+ 614,
+ -4205,
+ -1624,
+ 512,
+ 1957,
+ -4469,
+ -1844,
+ -2189,
+ 384,
+ -677,
+ -2078,
+ 710,
+ -816,
+ -2964,
+ 270,
+ 430,
+ -2793,
+ -1498,
+ -1178,
+ -2432,
+ -1195,
+ 1131,
+ 2399,
+ 180,
+ -2208,
+ -2265,
+ -3412,
+ -4207,
+ -2267,
+ 1291,
1247,
- -614,
- 438,
- 276,
- 433,
- 175,
- -1685,
- 748,
- -566,
- -1700,
- -813,
- 493,
- 402,
- -796,
- -52,
+ -1619,
+ -3444,
+ -1249,
+ -697,
+ 1760,
+ -2874,
+ 227,
+ 820,
+ -1966,
+ -507,
+ 1002,
+ -2441,
+ 386,
+ 792,
+ 533,
+ 1072,
+ -716,
+ -1138,
+ -393,
+ 441,
+ 1062,
+ -707,
+ -1270,
+ -3209,
+ -1427,
+ 235,
+ 412,
+ 744,
+ -1659,
+ 451,
+ -1501,
+ -1428,
+ 34,
+ 1076,
+ 1409,
+ -817,
+ 673,
+ 344,
+ -1527,
+ 286,
+ -375,
+ -374,
+ -1261,
+ -948,
+ 724,
+ -949,
+ -1513,
+ 736,
+ 856,
+ -1296,
+ -1156,
+ -76,
+ 308,
+ 475,
+ 411,
+ -218,
+ 481,
+ -582,
+ 436,
+ 505,
+ -347,
+ -356,
+ -907,
+ 229,
+ 623,
+ 413,
+ 368,
+ -776,
+ 117,
+ -935,
+ 316,
+ -233,
+ -840,
+ -625,
+ 22,
+ 181,
+ -500,
+ -489,
+ 368,
+ 366,
+ 192,
+ 443,
+ 470,
+ -204,
+ -434,
+ -176,
+ -568,
+ 383,
+ -212,
+ -278,
+ 191,
+ 150,
+ 403,
+ -157,
+ -148,
+ -455,
+ -327,
+ 174,
+ -471,
+ 28,
+ 307,
+ 179,
+ 153,
+ -247,
+ -156,
+ 254,
+ 138,
+ 75,
+ -75,
+ 101,
+ 264,
+ 61,
+ -148,
+ -256,
+ -125,
+ 52,
+ -142,
+ 159,
+ -154,
+ -56,
+ -145,
+ 63,
+ 54,
+ 45,
+ 45,
+ -45,
+ -41,
+ -8,
+ -8,
+ 4,
+ 4,
}
UW5Keys {
- "、",
"。",
- "」",
- "あ",
- "い",
- "う",
- "え",
- "か",
- "が",
+ "で",
+ "す",
+ "、",
+ "な",
+ "ま",
+ "て",
+ "っ",
+ "る",
+ "は",
"き",
- "く",
"し",
+ "お",
+ "を",
+ "く",
+ "こ",
"じ",
- "す",
- "ず",
+ "に",
"そ",
+ "能",
+ "わ",
+ "べ",
+ "え",
+ "ん",
+ "あ",
"た",
- "ち",
- "っ",
- "つ",
- "て",
- "で",
+ "み",
+ "い",
+ "・",
"と",
- "な",
- "に",
+ "よ",
"の",
- "は",
- "べ",
- "め",
- "も",
- "る",
- "れ",
"ろ",
- "わ",
- "を",
- "ん",
- "・",
- "ー",
- "分",
+ "上",
+ "か",
+ "だ",
+ "め",
"帯",
- "思",
+ "れ",
+ "ざ",
+ "ら",
+ "ず",
+ "さ",
+ "つ",
+ "ル",
+ "面",
+ "」",
+ "電",
+ "ぼ",
"日",
+ "が",
+ "び",
+ "せ",
+ "思",
+ "ち",
+ "冷",
+ "り",
+ "年",
+ "使",
+ "利",
+ "葉",
"!",
+ "]",
+ "合",
+ "ぶ",
+ "券",
+ "意",
+ "ぐ",
+ "バ",
+ "も",
+ "う",
+ "入",
+ "移",
+ "ト",
+ "体",
+ "当",
+ "々",
+ "分",
+ "イ",
+ "見",
+ "来",
+ "料",
+ "寺",
+ "ぎ",
+ "手",
+ "続",
+ "む",
+ "通",
+ ".",
+ "タ",
+ "行",
+ "?",
+ "水",
+ "先",
+ "都",
+ "一",
+ "ど",
+ "ば",
+ "ア",
+ "学",
+ "最",
+ "降",
+ "o",
+ "へ",
+ "何",
+ "効",
+ "ン",
+ "ょ",
+ "ー",
+ " ",
+ "(",
+ "種",
+ "7",
+ "的",
+ "成",
+ "ラ",
+ "N",
+ "1",
+ "有",
+ "中",
+ "場",
}
UW5Values:intvector {
- -818,
- -1455,
- -217,
- -138,
- 162,
- 161,
- 411,
- 186,
- -366,
- 801,
+ -2177,
+ -955,
+ -681,
+ -1011,
+ -608,
+ -353,
+ 169,
+ 964,
+ 175,
+ -874,
+ 1177,
+ -394,
+ 345,
+ -674,
+ 287,
+ 500,
+ 886,
+ -612,
+ -421,
+ 219,
+ 710,
+ 1871,
+ 637,
+ 1001,
+ -271,
+ 198,
+ 293,
+ 345,
+ -1082,
+ -617,
+ -587,
+ -641,
+ -360,
+ -1087,
+ 210,
+ -338,
+ 851,
+ 303,
+ 495,
+ 1494,
+ 222,
+ 1173,
+ -327,
+ 1091,
+ -472,
+ 776,
+ -1068,
+ -285,
+ 1415,
+ 342,
+ -272,
+ 826,
+ -303,
+ -891,
+ 572,
+ 1123,
+ 409,
+ 876,
+ -1390,
+ 365,
+ 791,
+ -384,
+ -470,
+ 255,
+ 15,
+ -1133,
+ 708,
+ 159,
+ -254,
+ -93,
+ 325,
+ -341,
+ -571,
+ -313,
+ -1085,
+ 401,
+ 505,
+ 173,
+ 171,
+ -272,
+ -122,
+ 579,
+ -461,
348,
+ 179,
+ -872,
+ 458,
-209,
- 432,
- -557,
- 26,
- -115,
- -26,
- 128,
- 543,
- 542,
- 103,
- -706,
- -476,
- -388,
- -413,
- -262,
- -378,
- 787,
- 263,
- -141,
- -39,
- 279,
- -81,
- 462,
- -333,
- 520,
- -851,
- 87,
- 13,
- 404,
- -98,
- 26,
+ -184,
+ 244,
+ -180,
+ -192,
+ -154,
+ -562,
+ 40,
+ -151,
+ -41,
+ 209,
+ -123,
+ 49,
+ -116,
+ 104,
+ 95,
+ -146,
+ -176,
+ 111,
+ -30,
+ 90,
+ 4,
+ -135,
-67,
+ 42,
+ -101,
+ -54,
+ 46,
+ 29,
+ 104,
+ -29,
+ -37,
+ 8,
+ 4,
}
UW6Keys {
- "。",
- "い",
- "う",
"が",
- "ご",
- "さ",
- "し",
- "た",
+ "。",
"て",
"で",
- "と",
+ "は",
+ "し",
+ "入",
+ "ど",
+ "あ",
+ "空",
"な",
- "に",
+ "す",
+ "だ",
+ "め",
+ "券",
+ "さ",
+ "ご",
"の",
- "は",
- "ぱ",
+ "性",
+ "う",
"や",
"り",
- "を",
- "ル",
+ "場",
+ "に",
+ "つ",
+ "ろ",
+ "き",
+ "っ",
+ "る",
+ "か",
+ "い",
+ "ら",
+ "そ",
+ "ば",
+ "け",
"ー",
- "寺",
+ "ん",
+ "彼",
+ "ク",
+ "ル",
"0",
+ "く",
+ "、",
+ "食",
+ "遊",
+ "寺",
+ "・",
+ ":",
+ "言",
+ "ゆ",
+ "態",
+ "込",
+ "を",
+ "的",
+ "可",
+ "タ",
+ "気",
+ "思",
+ "ぱ",
+ "ま",
+ "メ",
+ "お",
+ "ピ",
+ "カ",
+ "送",
+ "来",
+ "過",
+ "イ",
+ "効",
+ "シ",
+ "ケ",
+ "ず",
+ "ぶ",
+ "焼",
+ "れ",
+ "広",
+ "機",
+ "わ",
+ "ン",
+ "方",
+ "1",
+ "こ",
+ "店",
+ "印",
+ "び",
+ "回",
+ "ぎ",
+ "不",
+ "も",
+ "自",
+ "む",
+ "パ",
+ "周",
+ "出",
+ "参",
+ "神",
+ "着",
+ "間",
+ "練",
+ "ゃ",
}
UW6Values:intvector {
- -337,
- -48,
- -386,
- 111,
+ 320,
+ -307,
+ -16,
+ 219,
+ 307,
+ 581,
+ 621,
+ 828,
+ -496,
+ 1589,
+ 218,
+ -90,
+ 95,
+ 1415,
+ 1711,
+ 555,
+ -283,
+ 85,
+ 2064,
+ 35,
+ 819,
+ 578,
+ -864,
+ 245,
+ 506,
+ 352,
+ -17,
+ 301,
+ 71,
+ 231,
+ 365,
+ 65,
+ -101,
+ 527,
+ -213,
+ -66,
+ 324,
+ -1272,
+ -346,
+ 207,
+ 626,
+ 240,
+ 180,
+ -284,
+ -906,
+ 611,
+ -639,
+ 1217,
+ -361,
+ 755,
+ 221,
+ 679,
+ 85,
+ 479,
+ 567,
+ 380,
+ 415,
+ -111,
+ 813,
+ 170,
+ 239,
+ -18,
+ 780,
+ 292,
+ -896,
+ -261,
+ 846,
+ -244,
+ -725,
+ -130,
+ -388,
+ -403,
+ -248,
+ 643,
119,
- 237,
- 236,
- -82,
- 49,
- 102,
- -27,
- 66,
- 277,
- 48,
- 104,
- 105,
- 40,
- 74,
- 228,
- 14,
- -88,
+ -150,
+ 216,
+ 60,
+ -64,
+ -235,
+ 33,
+ 41,
+ 164,
+ 360,
+ 129,
+ -94,
+ 280,
+ 204,
+ -18,
+ 123,
+ 168,
+ -112,
+ 275,
68,
- 82,
+ 114,
+ 33,
+ -20,
+ -4,
+ 8,
+ -4,
}
}
diff --git a/icu4c/source/data/brkitr/root.txt b/icu4c/source/data/brkitr/root.txt
index 0dbd4d848..e3ca7f397 100644
--- a/icu4c/source/data/brkitr/root.txt
+++ b/icu4c/source/data/brkitr/root.txt
@@ -2,7 +2,7 @@
// License & terms of use: http://www.unicode.org/copyright.html
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
root{
- Version{"44.1"}
+ Version{"45"}
boundaries{
grapheme:process(dependency){"char.brk"}
line:process(dependency){"line.brk"}
diff --git a/icu4c/source/data/coll/LOCALE_DEPS.json b/icu4c/source/data/coll/LOCALE_DEPS.json
index 1ea963969..d94ede8fe 100644
--- a/icu4c/source/data/coll/LOCALE_DEPS.json
+++ b/icu4c/source/data/coll/LOCALE_DEPS.json
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1",
+ "cldrVersion": "45",
"aliases": {
"ars": "ar_SA",
"in": "id",
diff --git a/icu4c/source/data/coll/af.txt b/icu4c/source/data/coll/af.txt
index f8a9a35b8..2e1de5d80 100644
--- a/icu4c/source/data/coll/af.txt
+++ b/icu4c/source/data/coll/af.txt
@@ -5,7 +5,7 @@ af{
collations{
standard{
Sequence{"&N<<<ʼn"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/am.txt b/icu4c/source/data/coll/am.txt
index ea9c0086b..2b4a957dc 100644
--- a/icu4c/source/data/coll/am.txt
+++ b/icu4c/source/data/coll/am.txt
@@ -5,7 +5,7 @@ am{
collations{
standard{
Sequence{"[reorder Ethi]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ar.txt b/icu4c/source/data/coll/ar.txt
index d93f66934..971a059c5 100644
--- a/icu4c/source/data/coll/ar.txt
+++ b/icu4c/source/data/coll/ar.txt
@@ -9,7 +9,7 @@ ar{
"&ت<<ة<<<ﺔ<<<ﺓ"
"&ي<<ى<<<ﯨ<<<ﯩ<<<ﻰ<<<ﻯ<<<ﲐ<<<ﱝ"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -397,7 +397,7 @@ ar{
"‎&ۓ‎=ﮰ‎=ﮱ"
"‎&ۀ‎=ﮤ‎=ﮥ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/as.txt b/icu4c/source/data/coll/as.txt
index 4f43e3fb6..a79fb242d 100644
--- a/icu4c/source/data/coll/as.txt
+++ b/icu4c/source/data/coll/as.txt
@@ -11,7 +11,7 @@ as{
"&[before 1]ত<ৎ=ত্\u200D"
"&হ<ক্ষ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/az.txt b/icu4c/source/data/coll/az.txt
index de02ca518..6f2a4fc98 100644
--- a/icu4c/source/data/coll/az.txt
+++ b/icu4c/source/data/coll/az.txt
@@ -9,7 +9,7 @@ az{
"[import az-u-co-standard]"
"[reorder others]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -26,7 +26,7 @@ az{
"&H<x<<<X"
"&Z<w<<<W"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/be.txt b/icu4c/source/data/coll/be.txt
index 659b18eef..bc8a8b052 100644
--- a/icu4c/source/data/coll/be.txt
+++ b/icu4c/source/data/coll/be.txt
@@ -9,7 +9,7 @@ be{
"&Е<ё<<<Ё"
"&у<ў<<<Ў"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/bg.txt b/icu4c/source/data/coll/bg.txt
index d3f66f741..6e8c48715 100644
--- a/icu4c/source/data/coll/bg.txt
+++ b/icu4c/source/data/coll/bg.txt
@@ -5,7 +5,7 @@ bg{
collations{
standard{
Sequence{"[reorder Cyrl]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/bn.txt b/icu4c/source/data/coll/bn.txt
index 3df13c0bb..51d667f8d 100644
--- a/icu4c/source/data/coll/bn.txt
+++ b/icu4c/source/data/coll/bn.txt
@@ -9,7 +9,7 @@ bn{
"[reorder Beng Deva Guru Gujr Orya Taml Telu Knda Mlym Sinh]"
"&ঔ<ং<ঃ<ঁ"
}
- Version{"44.1"}
+ Version{"45"}
}
traditional{
Sequence{
@@ -629,7 +629,7 @@ bn{
"&যৌ<<<য়ৌ"
"&য্<<<য়্"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/bo.txt b/icu4c/source/data/coll/bo.txt
index 454ac546a..86558fdf9 100644
--- a/icu4c/source/data/coll/bo.txt
+++ b/icu4c/source/data/coll/bo.txt
@@ -65,7 +65,7 @@ bo{
"&ྲཱྀ=ཷ"
"&ླཱྀ=ཹ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/br.txt b/icu4c/source/data/coll/br.txt
index 4c8be95a6..4b2bd60fe 100644
--- a/icu4c/source/data/coll/br.txt
+++ b/icu4c/source/data/coll/br.txt
@@ -8,7 +8,7 @@ br{
"&C<ch<<<Ch<<<CH<c''h=c\u02BCh=c\u2019h<<<C''h=C\u02BCh=C\u2019h<<<C'"
"'H=C\u02BCH=C\u2019H"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/bs.txt b/icu4c/source/data/coll/bs.txt
index d32d5d1f0..fbcf540b9 100644
--- a/icu4c/source/data/coll/bs.txt
+++ b/icu4c/source/data/coll/bs.txt
@@ -5,11 +5,11 @@ bs{
collations{
search{
Sequence{"[import hr-u-co-search]"}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{"[import hr]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/bs_Cyrl.txt b/icu4c/source/data/coll/bs_Cyrl.txt
index 8b0066a54..4e3314a13 100644
--- a/icu4c/source/data/coll/bs_Cyrl.txt
+++ b/icu4c/source/data/coll/bs_Cyrl.txt
@@ -5,7 +5,7 @@ bs_Cyrl{
collations{
standard{
Sequence{"[import sr]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ca.txt b/icu4c/source/data/coll/ca.txt
index ecb7e6be3..3008cf6a9 100644
--- a/icu4c/source/data/coll/ca.txt
+++ b/icu4c/source/data/coll/ca.txt
@@ -8,7 +8,7 @@ ca{
"[import und-u-co-search]"
"&L<ŀ=l·<<<Ŀ=L·"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ceb.txt b/icu4c/source/data/coll/ceb.txt
index 270fa8639..e93dde3d0 100644
--- a/icu4c/source/data/coll/ceb.txt
+++ b/icu4c/source/data/coll/ceb.txt
@@ -5,7 +5,7 @@ ceb{
collations{
standard{
Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/chr.txt b/icu4c/source/data/coll/chr.txt
index 0d6cbd4d8..b1d31e19f 100644
--- a/icu4c/source/data/coll/chr.txt
+++ b/icu4c/source/data/coll/chr.txt
@@ -5,7 +5,7 @@ chr{
collations{
standard{
Sequence{"[reorder Cher]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/cs.txt b/icu4c/source/data/coll/cs.txt
index 432880be9..2bd04c77d 100644
--- a/icu4c/source/data/coll/cs.txt
+++ b/icu4c/source/data/coll/cs.txt
@@ -11,7 +11,7 @@ cs{
"&S<š<<<Š"
"&Z<ž<<<Ž"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/cy.txt b/icu4c/source/data/coll/cy.txt
index cfe207e0a..f6cbb46ae 100644
--- a/icu4c/source/data/coll/cy.txt
+++ b/icu4c/source/data/coll/cy.txt
@@ -14,7 +14,7 @@ cy{
"&R<rh<<<Rh<<<RH"
"&T<th<<<Th<<<TH"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/da.txt b/icu4c/source/data/coll/da.txt
index f6a24de0b..c52d6a32d 100644
--- a/icu4c/source/data/coll/da.txt
+++ b/icu4c/source/data/coll/da.txt
@@ -9,7 +9,7 @@ da{
"[import da-u-co-standard]"
"[caseFirst off]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -21,7 +21,7 @@ da{
"&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<å<<<Å<<<aa<<<Aa<<<AA"
"&oe<<œ<<<Œ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/de.txt b/icu4c/source/data/coll/de.txt
index ee0e21a05..e17d1d833 100644
--- a/icu4c/source/data/coll/de.txt
+++ b/icu4c/source/data/coll/de.txt
@@ -9,14 +9,14 @@ de{
"&OE<<ö<<<Ö"
"&UE<<ü<<<Ü"
}
- Version{"44.1"}
+ Version{"45"}
}
search{
Sequence{
"[import und-u-co-search]"
"[import de-u-co-phonebk]"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/de_AT.txt b/icu4c/source/data/coll/de_AT.txt
index cf310ca7f..0ca94359c 100644
--- a/icu4c/source/data/coll/de_AT.txt
+++ b/icu4c/source/data/coll/de_AT.txt
@@ -10,7 +10,7 @@ de_AT{
"&u<ü<<<Ü"
"&ss<ß<<<ẞ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/dsb.txt b/icu4c/source/data/coll/dsb.txt
index 456d725c1..db651c46e 100644
--- a/icu4c/source/data/coll/dsb.txt
+++ b/icu4c/source/data/coll/dsb.txt
@@ -14,7 +14,7 @@ dsb{
"&S<š<<<Š<ś<<<Ś"
"&Z<ž<<<Ž<ź<<<Ź"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ee.txt b/icu4c/source/data/coll/ee.txt
index 268f45dcc..01d60e114 100644
--- a/icu4c/source/data/coll/ee.txt
+++ b/icu4c/source/data/coll/ee.txt
@@ -17,7 +17,7 @@ ee{
"&T<ts<<<Ts<<<TS"
"&V<ʋ<<<Ʋ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/el.txt b/icu4c/source/data/coll/el.txt
index 979a8c033..84278ff80 100644
--- a/icu4c/source/data/coll/el.txt
+++ b/icu4c/source/data/coll/el.txt
@@ -8,7 +8,7 @@ el{
"[normalization on]"
"[reorder Grek]"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/en_US_POSIX.txt b/icu4c/source/data/coll/en_US_POSIX.txt
index 6d9fb0063..1d108e4da 100644
--- a/icu4c/source/data/coll/en_US_POSIX.txt
+++ b/icu4c/source/data/coll/en_US_POSIX.txt
@@ -8,7 +8,7 @@ en_US_POSIX{
"&A<*'\u0020'-'/'<*0-'@'<*ABCDEFGHIJKLMNOPQRSTUVWXYZ<*'['-'`'<*abcdefghijklmnopqrstuvwxyz"
"<*'{'-'\u007F'"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/eo.txt b/icu4c/source/data/coll/eo.txt
index 89813238e..011c578be 100644
--- a/icu4c/source/data/coll/eo.txt
+++ b/icu4c/source/data/coll/eo.txt
@@ -12,7 +12,7 @@ eo{
"&S<ŝ<<<Ŝ"
"&U<ŭ<<<Ŭ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/es.txt b/icu4c/source/data/coll/es.txt
index 90657e031..bb47410f2 100644
--- a/icu4c/source/data/coll/es.txt
+++ b/icu4c/source/data/coll/es.txt
@@ -8,11 +8,11 @@ es{
"[import und-u-co-search]"
"&N<ñ<<<Ñ"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{"&N<ñ<<<Ñ"}
- Version{"44.1"}
+ Version{"45"}
}
traditional{
Sequence{
@@ -20,7 +20,7 @@ es{
"&C<ch<<<Ch<<<CH"
"&l<ll<<<Ll<<<LL"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/et.txt b/icu4c/source/data/coll/et.txt
index ac02c8863..9dd117349 100644
--- a/icu4c/source/data/coll/et.txt
+++ b/icu4c/source/data/coll/et.txt
@@ -8,7 +8,7 @@ et{
"&[before 1]T<š<<<Š<z<<<Z<ž<<<Ž"
"&[before 1]X<õ<<<Õ<ä<<<Ä<ö<<<Ö<ü<<<Ü"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/fa.txt b/icu4c/source/data/coll/fa.txt
index 4bca8a006..dc82de619 100644
--- a/icu4c/source/data/coll/fa.txt
+++ b/icu4c/source/data/coll/fa.txt
@@ -16,7 +16,7 @@ fa{
"&ۏ<ه<<ە<<ہ<<ة<<ۃ<<ۀ<<ھ"
"&ی<<*ىےيېۑۍێ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/fa_AF.txt b/icu4c/source/data/coll/fa_AF.txt
index fa45f7674..ce3aa1142 100644
--- a/icu4c/source/data/coll/fa_AF.txt
+++ b/icu4c/source/data/coll/fa_AF.txt
@@ -5,7 +5,7 @@ fa_AF{
collations{
standard{
Sequence{"[import ps]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ff_Adlm.txt b/icu4c/source/data/coll/ff_Adlm.txt
index 830dc242a..70fc70b08 100644
--- a/icu4c/source/data/coll/ff_Adlm.txt
+++ b/icu4c/source/data/coll/ff_Adlm.txt
@@ -143,7 +143,7 @@ ff_Adlm{
"&𞤵<𞤵𞥅"
"&𞤵𞥅<<𞤵𞤵"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/fi.txt b/icu4c/source/data/coll/fi.txt
index dc467c638..baef4a6af 100644
--- a/icu4c/source/data/coll/fi.txt
+++ b/icu4c/source/data/coll/fi.txt
@@ -8,7 +8,7 @@ fi{
"[import und-u-co-search]"
"[import fi-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -20,7 +20,7 @@ fi{
"&Z\u0335<<ʒ<<<Ʒ"
"&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø"
}
- Version{"44.1"}
+ Version{"45"}
}
traditional{
Sequence{
@@ -31,7 +31,7 @@ fi{
"&Y<<ü<<<Ü<<ű<<<Ű"
"&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<õ<<<Õ<<œ<<<Œ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/fil.txt b/icu4c/source/data/coll/fil.txt
index 8338964e9..1541fa470 100644
--- a/icu4c/source/data/coll/fil.txt
+++ b/icu4c/source/data/coll/fil.txt
@@ -5,7 +5,7 @@ fil{
collations{
standard{
Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/fo.txt b/icu4c/source/data/coll/fo.txt
index 3cb831686..03749d330 100644
--- a/icu4c/source/data/coll/fo.txt
+++ b/icu4c/source/data/coll/fo.txt
@@ -8,7 +8,7 @@ fo{
"[import und-u-co-search]"
"[import fo-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -18,7 +18,7 @@ fo{
"&Y<<ü<<<Ü<<ű<<<Ű"
"&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<<aa<<<Aa<<<AA"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/fr_CA.txt b/icu4c/source/data/coll/fr_CA.txt
index 06e9b4821..92b2722ce 100644
--- a/icu4c/source/data/coll/fr_CA.txt
+++ b/icu4c/source/data/coll/fr_CA.txt
@@ -5,7 +5,7 @@ fr_CA{
collations{
standard{
Sequence{"[backwards 2]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/fy.txt b/icu4c/source/data/coll/fy.txt
index 20668e4ce..cf5c26165 100644
--- a/icu4c/source/data/coll/fy.txt
+++ b/icu4c/source/data/coll/fy.txt
@@ -5,7 +5,7 @@ fy{
collations{
standard{
Sequence{"&I<<y<<<Y"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/gl.txt b/icu4c/source/data/coll/gl.txt
index 19a6cc37a..ccb2008dc 100644
--- a/icu4c/source/data/coll/gl.txt
+++ b/icu4c/source/data/coll/gl.txt
@@ -5,11 +5,11 @@ gl{
collations{
search{
Sequence{"[import es-u-co-search]"}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{"[import es]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/gu.txt b/icu4c/source/data/coll/gu.txt
index 78f2c8ec5..b5e680f53 100644
--- a/icu4c/source/data/coll/gu.txt
+++ b/icu4c/source/data/coll/gu.txt
@@ -9,7 +9,7 @@ gu{
"[reorder Gujr Deva Beng Guru Orya Taml Telu Knda Mlym Sinh]"
"&ૐ<ં<<ઁ<ઃ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ha.txt b/icu4c/source/data/coll/ha.txt
index 13bd41e37..c31e6cc3e 100644
--- a/icu4c/source/data/coll/ha.txt
+++ b/icu4c/source/data/coll/ha.txt
@@ -12,7 +12,7 @@ ha{
"&T<ts<<<Ts<<<TS"
"&Y<ƴ<<<ʼy<<<''y<<<Ƴ<<<ʼY<<<''Y"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/haw.txt b/icu4c/source/data/coll/haw.txt
index d20999f21..695346412 100644
--- a/icu4c/source/data/coll/haw.txt
+++ b/icu4c/source/data/coll/haw.txt
@@ -8,7 +8,7 @@ haw{
"&a<e<<<E<i<<<I<o<<<O<u<<<U"
"&w<ʻ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/he.txt b/icu4c/source/data/coll/he.txt
index da1e54740..948e54428 100644
--- a/icu4c/source/data/coll/he.txt
+++ b/icu4c/source/data/coll/he.txt
@@ -8,7 +8,7 @@ he{
"[normalization on]"
"[reorder Hebr]"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/hi.txt b/icu4c/source/data/coll/hi.txt
index 2a6ae7547..4bd5e5718 100644
--- a/icu4c/source/data/coll/hi.txt
+++ b/icu4c/source/data/coll/hi.txt
@@ -9,7 +9,7 @@ hi{
"[reorder Deva Beng Guru Gujr Orya Taml Telu Knda Mlym Sinh]"
"&ॐ<ं<<ँ<ः"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/hr.txt b/icu4c/source/data/coll/hr.txt
index d1d985da4..6c905569f 100644
--- a/icu4c/source/data/coll/hr.txt
+++ b/icu4c/source/data/coll/hr.txt
@@ -9,7 +9,7 @@ hr{
"[import hr-u-co-standard]"
"[reorder others]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -21,7 +21,7 @@ hr{
"&S<š<<<Š"
"&Z<ž<<<Ž"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/hsb.txt b/icu4c/source/data/coll/hsb.txt
index 9aeed30e7..5fd94f504 100644
--- a/icu4c/source/data/coll/hsb.txt
+++ b/icu4c/source/data/coll/hsb.txt
@@ -13,7 +13,7 @@ hsb{
"&S<š<<<Š"
"&Z<ž<<<Ž<ź<<<Ź"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/hu.txt b/icu4c/source/data/coll/hu.txt
index a6f3efccd..745b832be 100644
--- a/icu4c/source/data/coll/hu.txt
+++ b/icu4c/source/data/coll/hu.txt
@@ -44,7 +44,7 @@ hu{
"&Zs<<<Zzs/zs"
"&ZS<<<ZZS/ZS"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/hy.txt b/icu4c/source/data/coll/hy.txt
index 96839349b..d89e6ddc7 100644
--- a/icu4c/source/data/coll/hy.txt
+++ b/icu4c/source/data/coll/hy.txt
@@ -8,7 +8,7 @@ hy{
"[reorder Armn]"
"&եվ<<<և"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ig.txt b/icu4c/source/data/coll/ig.txt
index 280f230c7..3895d133d 100644
--- a/icu4c/source/data/coll/ig.txt
+++ b/icu4c/source/data/coll/ig.txt
@@ -15,7 +15,7 @@ ig{
"&S<sh<<<Sh<<<SH"
"&U<ụ<<<Ụ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/is.txt b/icu4c/source/data/coll/is.txt
index 3aeaa4617..c9eea5036 100644
--- a/icu4c/source/data/coll/is.txt
+++ b/icu4c/source/data/coll/is.txt
@@ -8,7 +8,7 @@ is{
"[import und-u-co-search]"
"[import is-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -21,7 +21,7 @@ is{
"&[before 1]z<ý<<<Ý"
"&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ö<<<Ö<<ø<<<Ø<å<<<Å"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ja.txt b/icu4c/source/data/coll/ja.txt
index dac6942c8..6d45c7e66 100644
--- a/icu4c/source/data/coll/ja.txt
+++ b/icu4c/source/data/coll/ja.txt
@@ -412,7 +412,7 @@ ja{
"&「=「"
"&」=」"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -420,14 +420,14 @@ ja{
"[import ja-u-co-private-kana]"
"&[last regular]<*亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"
}
- Version{"44.1"}
+ Version{"45"}
}
unihan{
Sequence{
"[import und-u-co-private-unihan]"
"[import ja-u-co-private-kana]"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ka.txt b/icu4c/source/data/coll/ka.txt
index 789f8fa58..d894535bf 100644
--- a/icu4c/source/data/coll/ka.txt
+++ b/icu4c/source/data/coll/ka.txt
@@ -5,7 +5,7 @@ ka{
collations{
standard{
Sequence{"[reorder Geor]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/kk.txt b/icu4c/source/data/coll/kk.txt
index 3647a6f08..8abf489e6 100644
--- a/icu4c/source/data/coll/kk.txt
+++ b/icu4c/source/data/coll/kk.txt
@@ -10,7 +10,7 @@ kk{
"&Ұ<ү<<<Ү"
"&[before 1]ь<і<<<І"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/kl.txt b/icu4c/source/data/coll/kl.txt
index 43b73468e..fd2338fba 100644
--- a/icu4c/source/data/coll/kl.txt
+++ b/icu4c/source/data/coll/kl.txt
@@ -8,7 +8,7 @@ kl{
"[import und-u-co-search]"
"[import kl-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -19,7 +19,7 @@ kl{
"&Y<<ü<<<Ü<<ű<<<Ű"
"&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/km.txt b/icu4c/source/data/coll/km.txt
index b0bca6f28..c4505d929 100644
--- a/icu4c/source/data/coll/km.txt
+++ b/icu4c/source/data/coll/km.txt
@@ -66,7 +66,7 @@ km{
"&ឱ<<<ឲ"
"&ៅ<ុំ<ំ<ាំ<ះ<ិះ<ុះ<េះ<ោះ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/kn.txt b/icu4c/source/data/coll/kn.txt
index bc6a171a9..65715770c 100644
--- a/icu4c/source/data/coll/kn.txt
+++ b/icu4c/source/data/coll/kn.txt
@@ -9,7 +9,7 @@ kn{
"[reorder Knda Deva Beng Guru Gujr Orya Taml Telu Mlym Sinh]"
"&ಔ<ಂ<ಃ<ೱ<ೲ"
}
- Version{"44.1"}
+ Version{"45"}
}
traditional{
Sequence{
@@ -651,7 +651,7 @@ kn{
"&ಫೋ<<<ಫ಼ೋ"
"&ಫೌ<<<ಫ಼ೌ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ko.txt b/icu4c/source/data/coll/ko.txt
index e222dab18..863586653 100644
--- a/icu4c/source/data/coll/ko.txt
+++ b/icu4c/source/data/coll/ko.txt
@@ -283,7 +283,7 @@ ko{
"&ᅩᅣᅵ"
"=ᆧ"
}
- Version{"44.1"}
+ Version{"45"}
}
searchjl{
Sequence{
@@ -378,7 +378,7 @@ ko{
"&\u1109\u1109=\u110A<<<\u3146"
"&\u110C\u110C=\u110D<<<\u3149"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -862,14 +862,14 @@ ko{
"&희<<*僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲咥唏嘻悕戲暿欷燹爔豨餼"
"&힐<<*詰犵纈襭頡黠"
}
- Version{"44.1"}
+ Version{"45"}
}
unihan{
Sequence{
"[import und-u-co-private-unihan]"
"[reorder Hang Hani]"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/kok.txt b/icu4c/source/data/coll/kok.txt
index e2c3efc83..16b2d8103 100644
--- a/icu4c/source/data/coll/kok.txt
+++ b/icu4c/source/data/coll/kok.txt
@@ -11,7 +11,7 @@ kok{
"&ह<ळ"
"<क्ष"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ku.txt b/icu4c/source/data/coll/ku.txt
index 8a3f2ad5d..1c482295c 100644
--- a/icu4c/source/data/coll/ku.txt
+++ b/icu4c/source/data/coll/ku.txt
@@ -16,7 +16,7 @@ ku{
"&û<<ú<<<Ú"
"&ú<<ù<<<Ù"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ky.txt b/icu4c/source/data/coll/ky.txt
index fc01fb6a4..9c93170e3 100644
--- a/icu4c/source/data/coll/ky.txt
+++ b/icu4c/source/data/coll/ky.txt
@@ -8,7 +8,7 @@ ky{
"[reorder Cyrl]"
"&е<ё<<<Ё"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/lkt.txt b/icu4c/source/data/coll/lkt.txt
index 75972ac28..d95f05669 100644
--- a/icu4c/source/data/coll/lkt.txt
+++ b/icu4c/source/data/coll/lkt.txt
@@ -11,7 +11,7 @@ lkt{
"&S<š<<<Š"
"&Z<ž<<<Ž"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ln.txt b/icu4c/source/data/coll/ln.txt
index 0a03587a4..706cc6e05 100644
--- a/icu4c/source/data/coll/ln.txt
+++ b/icu4c/source/data/coll/ln.txt
@@ -16,14 +16,14 @@ ln{
"&S<sh<<<sH<<<Sh<<<SH"
"&T<ts<<<tS<<<Ts<<<TS"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
"&E<ɛ<<<Ɛ"
"&O<<ɔ<<<Ɔ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/lo.txt b/icu4c/source/data/coll/lo.txt
index 74dcc4e27..abadc32fa 100644
--- a/icu4c/source/data/coll/lo.txt
+++ b/icu4c/source/data/coll/lo.txt
@@ -5,7 +5,7 @@ lo{
collations{
standard{
Sequence{"[reorder Laoo]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/lt.txt b/icu4c/source/data/coll/lt.txt
index 2db2660ae..a11ad319b 100644
--- a/icu4c/source/data/coll/lt.txt
+++ b/icu4c/source/data/coll/lt.txt
@@ -16,7 +16,7 @@ lt{
"&U<<ų<<<Ų<<ū<<<Ū"
"&Z<ž<<<Ž"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/lv.txt b/icu4c/source/data/coll/lv.txt
index ff6465722..f5a460306 100644
--- a/icu4c/source/data/coll/lv.txt
+++ b/icu4c/source/data/coll/lv.txt
@@ -5,17 +5,21 @@ lv{
collations{
standard{
Sequence{
- "&[before 1]D<č<<<Č"
- "&[before 1]H<ģ<<<Ģ"
- "&I<<y<<<Y"
- "&[before 1]L<ķ<<<Ķ"
- "&[before 1]M<ļ<<<Ļ"
- "&[before 1]O<ņ<<<Ņ"
- "&[before 1]S<ŗ<<<Ŗ"
- "&[before 1]T<š<<<Š"
- "&[before 1]Ʒ<ž<<<Ž"
+ "&A<ā<<<Ā"
+ "&C<č<<<Č"
+ "&E<ē<<<Ē"
+ "&G<ģ<<<Ģ"
+ "&I<y<<<Y<ī<<<Ī"
+ "&K<ķ<<<Ķ"
+ "&L<ļ<<<Ļ"
+ "&N<ņ<<<Ņ"
+ "&O<ō<<<Ō"
+ "&R<ŗ<<<Ŗ"
+ "&S<š<<<Š"
+ "&U<ū<<<Ū"
+ "&Z<ž<<<Ž"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/mk.txt b/icu4c/source/data/coll/mk.txt
index bc1a4abf6..ab22b1203 100644
--- a/icu4c/source/data/coll/mk.txt
+++ b/icu4c/source/data/coll/mk.txt
@@ -10,7 +10,7 @@ mk{
"&ԃ<ѓ<<<Ѓ"
"&ћ<ќ<<<Ќ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ml.txt b/icu4c/source/data/coll/ml.txt
index 8839d883c..ad5233436 100644
--- a/icu4c/source/data/coll/ml.txt
+++ b/icu4c/source/data/coll/ml.txt
@@ -17,7 +17,7 @@ ml{
"&മ്<<ം"
"&ന്<<<ൻ്"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/mn.txt b/icu4c/source/data/coll/mn.txt
index b6f9ff706..9dcab3f98 100644
--- a/icu4c/source/data/coll/mn.txt
+++ b/icu4c/source/data/coll/mn.txt
@@ -5,7 +5,7 @@ mn{
collations{
standard{
Sequence{"[reorder Cyrl Mong]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/mr.txt b/icu4c/source/data/coll/mr.txt
index db02257f8..49beec70c 100644
--- a/icu4c/source/data/coll/mr.txt
+++ b/icu4c/source/data/coll/mr.txt
@@ -12,7 +12,7 @@ mr{
"<क्ष"
"<ज्ञ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/mt.txt b/icu4c/source/data/coll/mt.txt
index a4c374cf9..d8e653834 100644
--- a/icu4c/source/data/coll/mt.txt
+++ b/icu4c/source/data/coll/mt.txt
@@ -12,7 +12,7 @@ mt{
"&[before 1]i<ħ<<<Ħ"
"&[before 1]z<ż<<<Ż"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/my.txt b/icu4c/source/data/coll/my.txt
index 37db85851..f07d6a1ea 100644
--- a/icu4c/source/data/coll/my.txt
+++ b/icu4c/source/data/coll/my.txt
@@ -373,7 +373,7 @@ my{
"&ထမင်း=ထ္မင်း"
"&လက်ဘက်=လ္ဘက်"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ne.txt b/icu4c/source/data/coll/ne.txt
index 8f40927fc..d7a06da2e 100644
--- a/icu4c/source/data/coll/ne.txt
+++ b/icu4c/source/data/coll/ne.txt
@@ -5,7 +5,7 @@ ne{
collations{
standard{
Sequence{"[reorder Deva]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/no.txt b/icu4c/source/data/coll/no.txt
index 4dcddad56..1fb5167ad 100644
--- a/icu4c/source/data/coll/no.txt
+++ b/icu4c/source/data/coll/no.txt
@@ -8,7 +8,7 @@ no{
"[import und-u-co-search]"
"[import no-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -18,7 +18,7 @@ no{
"&Y<<ü<<<Ü<<ű<<<Ű"
"&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<aa<<<Aa<<<AA"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/om.txt b/icu4c/source/data/coll/om.txt
index f07c01644..fdd623961 100644
--- a/icu4c/source/data/coll/om.txt
+++ b/icu4c/source/data/coll/om.txt
@@ -8,7 +8,7 @@ om{
"&Z<ch<<<Ch<<<CH<dh<<<Dh<<<DH<kh<<<Kh<<<KH<ny<<<Ny<<<NY<ph<<<Ph<<<PH<"
"sh<<<Sh"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/or.txt b/icu4c/source/data/coll/or.txt
index a5cd08256..249836ea7 100644
--- a/icu4c/source/data/coll/or.txt
+++ b/icu4c/source/data/coll/or.txt
@@ -11,7 +11,7 @@ or{
"&ହ<କ୍ଷ"
"&ଯ<<ୟ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/pa.txt b/icu4c/source/data/coll/pa.txt
index 0fb926934..993cb9893 100644
--- a/icu4c/source/data/coll/pa.txt
+++ b/icu4c/source/data/coll/pa.txt
@@ -10,7 +10,7 @@ pa{
"&ੱ<<ੰ<<ਂ<<ਁ<<਼"
"&ੜ<੍"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/pl.txt b/icu4c/source/data/coll/pl.txt
index 46d422632..a3b65722d 100644
--- a/icu4c/source/data/coll/pl.txt
+++ b/icu4c/source/data/coll/pl.txt
@@ -14,7 +14,7 @@ pl{
"&S<ś<<<Ś"
"&Z<ź<<<Ź<ż<<<Ż"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ps.txt b/icu4c/source/data/coll/ps.txt
index c78aa5138..e690370f4 100644
--- a/icu4c/source/data/coll/ps.txt
+++ b/icu4c/source/data/coll/ps.txt
@@ -24,7 +24,7 @@ ps{
"&ی<<*ىےيېۍ<<یٔ<<<ىٔ<<<ئ"
"&\u00A0<<\u200C<<\u200D"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ro.txt b/icu4c/source/data/coll/ro.txt
index 7cff3a06f..6741222de 100644
--- a/icu4c/source/data/coll/ro.txt
+++ b/icu4c/source/data/coll/ro.txt
@@ -10,7 +10,7 @@ ro{
"&S<ş=ș<<<Ş=Ș"
"&T<ţ=ț<<<Ţ=Ț"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/root.txt b/icu4c/source/data/coll/root.txt
index 1d0d527b5..dfc39e338 100644
--- a/icu4c/source/data/coll/root.txt
+++ b/icu4c/source/data/coll/root.txt
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
root{
UCARules:process(uca_rules){"../unidata/UCARules.txt"}
- Version{"44.1"}
+ Version{"45"}
collations{
default{"standard"}
emoji{
@@ -444,7 +444,7 @@ root{
"& 👨 << 🧔 <<🧔‍♂ <<🧔🏻‍♂ <<🧔🏼‍♂ <<🧔🏽‍♂ <<🧔🏾‍♂ <<🧔🏿‍♂ <<👱‍♂ <<👱🏻‍♂ <<👱🏼‍♂ <<👱🏽‍♂ <<👱🏾‍♂ <<👱🏿‍♂"
"& 👩 << 🧔‍♀ << 🧔🏻‍♀ << 🧔🏼‍♀ << 🧔🏽‍♀ << 🧔🏾‍♀ << 🧔🏿‍♀ << 👱‍♀ << 👱🏻‍♀ << 👱🏼‍♀ << 👱🏽‍♀ << 👱🏾‍♀ << 👱🏿‍♀"
}
- Version{"44.1"}
+ Version{"45"}
}
eor{
Sequence{
@@ -984,7 +984,7 @@ root{
"&ք"
"<և"
}
- Version{"44.1"}
+ Version{"45"}
}
private-unihan{
Sequence{
@@ -1232,7 +1232,7 @@ root{
"&𪚲=\uFDD0亀"
"&龠=\uFDD0龠"
}
- Version{"44.1"}
+ Version{"45"}
}
search{
Sequence{
@@ -1350,11 +1350,11 @@ root{
"&ᅳᅵ"
"=ᅴ"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{""}
- Version{"44.1"}
+ Version{"45"}
}
}
depends:process(dependency){"ucadata.icu"}
diff --git a/icu4c/source/data/coll/ru.txt b/icu4c/source/data/coll/ru.txt
index 5a50d99da..79eeb0f91 100644
--- a/icu4c/source/data/coll/ru.txt
+++ b/icu4c/source/data/coll/ru.txt
@@ -5,7 +5,7 @@ ru{
collations{
standard{
Sequence{"[reorder Cyrl]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/se.txt b/icu4c/source/data/coll/se.txt
index e11e2ac91..0ce23bd89 100644
--- a/icu4c/source/data/coll/se.txt
+++ b/icu4c/source/data/coll/se.txt
@@ -8,7 +8,7 @@ se{
"[import und-u-co-search]"
"[import se-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -53,7 +53,7 @@ se{
"<<<Ô<<ǫ"
"<<<Ǫ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/si.txt b/icu4c/source/data/coll/si.txt
index 96fbf42ed..7636e073a 100644
--- a/icu4c/source/data/coll/si.txt
+++ b/icu4c/source/data/coll/si.txt
@@ -10,7 +10,7 @@ si{
"&ඖ<ං<ඃ"
"&ජ්ඤ<<ඥ"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -19,7 +19,7 @@ si{
"&ඖ<ං<ඃ"
"&ඥ<ඤ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/sk.txt b/icu4c/source/data/coll/sk.txt
index 291182c2e..bfde45cf5 100644
--- a/icu4c/source/data/coll/sk.txt
+++ b/icu4c/source/data/coll/sk.txt
@@ -21,7 +21,7 @@ sk{
"&Y<ý<<<Ý"
"&Z<ž<<<Ž"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -33,7 +33,7 @@ sk{
"&S<š<<<Š"
"&Z<ž<<<Ž"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/sl.txt b/icu4c/source/data/coll/sl.txt
index 3cd84e882..3927d4e66 100644
--- a/icu4c/source/data/coll/sl.txt
+++ b/icu4c/source/data/coll/sl.txt
@@ -10,7 +10,7 @@ sl{
"&S<š<<<Š"
"&Z<ž<<<Ž"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/smn.txt b/icu4c/source/data/coll/smn.txt
index 2e57726fa..ce848c247 100644
--- a/icu4c/source/data/coll/smn.txt
+++ b/icu4c/source/data/coll/smn.txt
@@ -8,7 +8,7 @@ smn{
"[import und-u-co-search]"
"[import smn-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -19,7 +19,7 @@ smn{
"&S<š<<<Š"
"&Z<ž<<<Ž<æ<<<Æ<ø<<<Ø<å<<<Å<ã<<<Ã<ä<<<Ä<á<<<Á<ö<<<Ö"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/sq.txt b/icu4c/source/data/coll/sq.txt
index a392b018b..fcc907753 100644
--- a/icu4c/source/data/coll/sq.txt
+++ b/icu4c/source/data/coll/sq.txt
@@ -17,7 +17,7 @@ sq{
"&[before 1]Y<xh<<<Xh<<<XH"
"&[before 1]Ʒ<zh<<<Zh<<<ZH"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/sr.txt b/icu4c/source/data/coll/sr.txt
index 9d821d848..efd8bc1a6 100644
--- a/icu4c/source/data/coll/sr.txt
+++ b/icu4c/source/data/coll/sr.txt
@@ -8,7 +8,7 @@ sr{
"[reorder Cyrl]"
"[suppressContractions [Ии]]"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/sr_Latn.txt b/icu4c/source/data/coll/sr_Latn.txt
index b20d1eaaf..f2d8cbcb2 100644
--- a/icu4c/source/data/coll/sr_Latn.txt
+++ b/icu4c/source/data/coll/sr_Latn.txt
@@ -5,11 +5,11 @@ sr_Latn{
collations{
search{
Sequence{"[import hr-u-co-search]"}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{"[import hr]"}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/sv.txt b/icu4c/source/data/coll/sv.txt
index 34de789c8..46a88e25d 100644
--- a/icu4c/source/data/coll/sv.txt
+++ b/icu4c/source/data/coll/sv.txt
@@ -9,7 +9,7 @@ sv{
"[import und-u-co-search]"
"[import sv-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -19,7 +19,7 @@ sv{
"&Y<<ü<<<Ü<<ű<<<Ű"
"&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"
}
- Version{"44.1"}
+ Version{"45"}
}
traditional{
Sequence{
@@ -30,7 +30,7 @@ sv{
"&Y<<ü<<<Ü<<ű<<<Ű"
"&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ta.txt b/icu4c/source/data/coll/ta.txt
index f237ad7d8..45cae4587 100644
--- a/icu4c/source/data/coll/ta.txt
+++ b/icu4c/source/data/coll/ta.txt
@@ -34,7 +34,7 @@ ta{
"&[before 1]ஹ<ஹ்"
"&[before 1]க்ஷ<க்ஷ்"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/te.txt b/icu4c/source/data/coll/te.txt
index 042c1f7a5..45408ab0d 100644
--- a/icu4c/source/data/coll/te.txt
+++ b/icu4c/source/data/coll/te.txt
@@ -9,7 +9,7 @@ te{
"[reorder Telu Deva Beng Guru Gujr Orya Taml Knda Mlym Sinh]"
"&ఔ<ఁ<ం<ః"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/th.txt b/icu4c/source/data/coll/th.txt
index 2b38167ac..4ffbe1715 100644
--- a/icu4c/source/data/coll/th.txt
+++ b/icu4c/source/data/coll/th.txt
@@ -17,7 +17,7 @@ th{
"&ๅํ<<<ํๅ"
"&ไ<ฺ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/tk.txt b/icu4c/source/data/coll/tk.txt
index 43469fcab..466378f37 100644
--- a/icu4c/source/data/coll/tk.txt
+++ b/icu4c/source/data/coll/tk.txt
@@ -14,7 +14,7 @@ tk{
"&U<ü<<<Ü"
"&Y<ý<<<Ý"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/to.txt b/icu4c/source/data/coll/to.txt
index 0de7f297a..56b0116d0 100644
--- a/icu4c/source/data/coll/to.txt
+++ b/icu4c/source/data/coll/to.txt
@@ -13,7 +13,7 @@ to{
"&o<<ó<<<Ó<<ō<<<Ō"
"&u<<ú<<<Ú<<ū<<<Ū"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/tr.txt b/icu4c/source/data/coll/tr.txt
index 2884e8f03..99a395344 100644
--- a/icu4c/source/data/coll/tr.txt
+++ b/icu4c/source/data/coll/tr.txt
@@ -8,7 +8,7 @@ tr{
"[import und-u-co-search]"
"[import tr-u-co-standard]"
}
- Version{"44.1"}
+ Version{"45"}
}
standard{
Sequence{
@@ -20,7 +20,7 @@ tr{
"&S<ş<<<Ş"
"&U<ü<<<Ü"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ug.txt b/icu4c/source/data/coll/ug.txt
index 325418114..e41ea1e04 100644
--- a/icu4c/source/data/coll/ug.txt
+++ b/icu4c/source/data/coll/ug.txt
@@ -10,7 +10,7 @@ ug{
"&ك<گ<ڭ<ل"
"&ھ<و<ۇ<ۆ<ۈ<ۋ<ې<ى<ي"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/uk.txt b/icu4c/source/data/coll/uk.txt
index 6f26d06aa..daad08c06 100644
--- a/icu4c/source/data/coll/uk.txt
+++ b/icu4c/source/data/coll/uk.txt
@@ -9,7 +9,7 @@ uk{
"&Г<ґ<<<Ґ"
"&ꙇ<ї<<<\uA676<<<Ї"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/ur.txt b/icu4c/source/data/coll/ur.txt
index 08f27ccf3..728ad73c9 100644
--- a/icu4c/source/data/coll/ur.txt
+++ b/icu4c/source/data/coll/ur.txt
@@ -12,7 +12,7 @@ ur{
"<<\u0651<<\u0658<<\u0653"
"&[last tertiary ignorable]<<<\u0610<<<\u0611<<<\u0613<<<\u0612<<<\u0614"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/uz.txt b/icu4c/source/data/coll/uz.txt
index dfb40a22f..5050a7482 100644
--- a/icu4c/source/data/coll/uz.txt
+++ b/icu4c/source/data/coll/uz.txt
@@ -10,7 +10,7 @@ uz{
"<sh<<<Sh<<<SH"
"<ch<<<Ch<<<CH"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/vi.txt b/icu4c/source/data/coll/vi.txt
index f1060d57e..abb7cdec9 100644
--- a/icu4c/source/data/coll/vi.txt
+++ b/icu4c/source/data/coll/vi.txt
@@ -13,7 +13,7 @@ vi{
"&o<ô<<<Ô<ơ<<<Ơ"
"&u<ư<<<Ư"
}
- Version{"44.1"}
+ Version{"45"}
}
traditional{
Sequence{
@@ -32,7 +32,7 @@ vi{
"&T<th<<<Th<<<TH<tr<<<Tr<<<TR"
"&u<ư<<<Ư"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/wo.txt b/icu4c/source/data/coll/wo.txt
index 0527d4c6e..9ce566eff 100644
--- a/icu4c/source/data/coll/wo.txt
+++ b/icu4c/source/data/coll/wo.txt
@@ -11,7 +11,7 @@ wo{
"&N<ñ<<<Ñ<ŋ<<<Ŋ"
"&O<ó<<<Ó"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/yi.txt b/icu4c/source/data/coll/yi.txt
index 8df636499..c7fc40780 100644
--- a/icu4c/source/data/coll/yi.txt
+++ b/icu4c/source/data/coll/yi.txt
@@ -16,7 +16,7 @@ yi{
"&ש<שׂ"
"&[before 1]ת<תּ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/yo.txt b/icu4c/source/data/coll/yo.txt
index b524af999..d60790d42 100644
--- a/icu4c/source/data/coll/yo.txt
+++ b/icu4c/source/data/coll/yo.txt
@@ -11,7 +11,7 @@ yo{
"&O<ọ<<<Ọ"
"&S<ṣ<<<Ṣ"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/coll/zh.txt b/icu4c/source/data/coll/zh.txt
index 707a2e2bd..b4f8ef49a 100644
--- a/icu4c/source/data/coll/zh.txt
+++ b/icu4c/source/data/coll/zh.txt
@@ -9,7 +9,7 @@ zh{
"[reorder Latn Hani Bopo]"
"&[last regular]<*兙兛兞兝兡兣嗧瓩糎一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲乂乜凵匚厂万丌乇亍囗屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘"
}
- Version{"44.1"}
+ Version{"45"}
}
default{"pinyin"}
gb2312han{
@@ -18,7 +18,7 @@ zh{
"[reorder Latn Hani]"
"&[last regular]<*啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座𦤑𦤎皡皥皷亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"
}
- Version{"44.1"}
+ Version{"45"}
}
pinyin{
Sequence{
@@ -1887,7 +1887,7 @@ zh{
"&弞<沈阳/阳"
"&銺<藏文/文"
}
- Version{"44.1"}
+ Version{"45"}
}
private-pinyin{
Sequence{
@@ -1901,7 +1901,7 @@ zh{
"&[before 2]u<<ū<<<Ū<<ú<<<Ú<<ǔ<<<Ǔ<<ù<<<Ù"
"&U<<ǖ<<<Ǖ<<ǘ<<<Ǘ<<ǚ<<<Ǚ<<ǜ<<<Ǜ<<ü<<<Ü"
}
- Version{"44.1"}
+ Version{"45"}
}
stroke{
Sequence{
@@ -2606,7 +2606,7 @@ zh{
"&龟<<<⻳"
"&龠<<<⿕"
}
- Version{"44.1"}
+ Version{"45"}
}
unihan{
Sequence{
@@ -2614,7 +2614,7 @@ zh{
"[import zh-u-co-private-pinyin]"
"[reorder Hani Bopo]"
}
- Version{"44.1"}
+ Version{"45"}
}
zhuyin{
Sequence{
@@ -4640,7 +4640,7 @@ zh{
"&龟<<<⻳"
"&龠<<<⿕"
}
- Version{"44.1"}
+ Version{"45"}
}
}
}
diff --git a/icu4c/source/data/curr/LOCALE_DEPS.json b/icu4c/source/data/curr/LOCALE_DEPS.json
index df3d1f620..c30ec800f 100644
--- a/icu4c/source/data/curr/LOCALE_DEPS.json
+++ b/icu4c/source/data/curr/LOCALE_DEPS.json
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1",
+ "cldrVersion": "45",
"aliases": {
"ars": "ar_SA",
"az_AZ": "az_Latn_AZ",
@@ -19,6 +19,7 @@
"iw": "he",
"iw_IL": "he_IL",
"ks_IN": "ks_Arab_IN",
+ "kxv_IN": "kxv_Latn_IN",
"mni_IN": "mni_Beng_IN",
"mo": "ro",
"no_NO": "no",
diff --git a/icu4c/source/data/curr/en.txt b/icu4c/source/data/curr/en.txt
index 51dcda169..20ab18551 100644
--- a/icu4c/source/data/curr/en.txt
+++ b/icu4c/source/data/curr/en.txt
@@ -1111,6 +1111,10 @@ en{
"EC$",
"East Caribbean Dollar",
}
+ XCG{
+ "Cg.",
+ "Caribbean guilder",
+ }
XDR{
"XDR",
"Special Drawing Rights",
@@ -2333,6 +2337,10 @@ en{
one{"East Caribbean dollar"}
other{"East Caribbean dollars"}
}
+ XCG{
+ one{"Caribbean guilder"}
+ other{"Caribbean guilders"}
+ }
XDR{
one{"special drawing rights"}
other{"special drawing rights"}
diff --git a/icu4c/source/data/curr/en_CA.txt b/icu4c/source/data/curr/en_CA.txt
index 73df7e005..39ac903ac 100644
--- a/icu4c/source/data/curr/en_CA.txt
+++ b/icu4c/source/data/curr/en_CA.txt
@@ -64,9 +64,6 @@ en_CA{
"unknown currency",
}
}
- Currencies%narrow{
- USD{"US$"}
- }
CurrencyPlurals{
AFN{
one{"Afghan afghani"}
diff --git a/icu4c/source/data/curr/es.txt b/icu4c/source/data/curr/es.txt
index 9153d259d..48678dd64 100644
--- a/icu4c/source/data/curr/es.txt
+++ b/icu4c/source/data/curr/es.txt
@@ -1031,6 +1031,10 @@ es{
"XCD",
"dólar del Caribe Oriental",
}
+ XCG{
+ "Cg.",
+ "florín caribeño",
+ }
XDR{
"XDR",
"derechos especiales de giro",
@@ -2083,6 +2087,10 @@ es{
one{"dólar del Caribe Oriental"}
other{"dólares del Caribe Oriental"}
}
+ XCG{
+ one{"florín caribeño"}
+ other{"florines caribeños"}
+ }
XEU{
one{"unidad de moneda europea"}
other{"unidades de moneda europeas"}
diff --git a/icu4c/source/data/curr/fr.txt b/icu4c/source/data/curr/fr.txt
index 6d3dae547..afd74f76e 100644
--- a/icu4c/source/data/curr/fr.txt
+++ b/icu4c/source/data/curr/fr.txt
@@ -1031,6 +1031,10 @@ fr{
"XCD",
"dollar des Caraïbes orientales",
}
+ XCG{
+ "Cg.",
+ "florin caribéen",
+ }
XDR{
"XDR",
"droit de tirage spécial",
@@ -2172,6 +2176,10 @@ fr{
one{"dollar des Caraïbes orientales"}
other{"dollars des Caraïbes orientales"}
}
+ XCG{
+ one{"florin caribéen"}
+ other{"florins caribéens"}
+ }
XDR{
one{"droit de tirage spécial"}
other{"droits de tirage spéciaux"}
diff --git a/icu4c/source/data/curr/ks.txt b/icu4c/source/data/curr/ks.txt
index 68620746e..eebc1e03f 100644
--- a/icu4c/source/data/curr/ks.txt
+++ b/icu4c/source/data/curr/ks.txt
@@ -389,11 +389,11 @@ ks{
}
ILS{
"₪",
- "اِزرٲیِلی نٔوۍ شؠقٕل",
+ "اِزرٲیِلی نٔوؠ شؠقٕل",
}
INR{
"₹",
- "ہِندُستٲنۍ رۄپَے",
+ "ہِندُستٲنؠ رۄپَے",
}
IQD{
"IQD",
@@ -665,7 +665,7 @@ ks{
}
PKR{
"PKR",
- "پاکِستٲنۍ رۄپَے",
+ "پاکِستٲنؠ رۄپَے",
}
PLN{
"PLN",
diff --git a/icu4c/source/data/curr/kxv_IN.txt b/icu4c/source/data/curr/kxv_IN.txt
new file mode 100644
index 000000000..e92770c6f
--- /dev/null
+++ b/icu4c/source/data/curr/kxv_IN.txt
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_IN{
+ "%%ALIAS"{"kxv_Latn_IN"}
+}
diff --git a/icu4c/source/data/curr/kxv_Latn.txt b/icu4c/source/data/curr/kxv_Latn.txt
new file mode 100644
index 000000000..823563224
--- /dev/null
+++ b/icu4c/source/data/curr/kxv_Latn.txt
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_Latn{
+}
diff --git a/icu4c/source/data/curr/kxv_Latn_IN.txt b/icu4c/source/data/curr/kxv_Latn_IN.txt
new file mode 100644
index 000000000..d2dd86851
--- /dev/null
+++ b/icu4c/source/data/curr/kxv_Latn_IN.txt
@@ -0,0 +1,9 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+/**
+ * generated alias target
+ */
+kxv_Latn_IN{
+ ___{""}
+}
diff --git a/icu4c/source/data/curr/nl.txt b/icu4c/source/data/curr/nl.txt
index 21195b4d8..376a1d177 100644
--- a/icu4c/source/data/curr/nl.txt
+++ b/icu4c/source/data/curr/nl.txt
@@ -1111,6 +1111,10 @@ nl{
"EC$",
"Oost-Caribische dollar",
}
+ XCG{
+ "Cg.",
+ "Caribische gulden",
+ }
XDR{
"XDR",
"Special Drawing Rights",
@@ -1228,6 +1232,7 @@ nl{
BYN{"р."}
RUR{"р."}
TWD{"NT$"}
+ XCG{"Cg"}
}
Currencies%variant{
GEL{"ლ"}
diff --git a/icu4c/source/data/curr/root.txt b/icu4c/source/data/curr/root.txt
index 8394beaa1..d91a44025 100644
--- a/icu4c/source/data/curr/root.txt
+++ b/icu4c/source/data/curr/root.txt
@@ -79,6 +79,10 @@ root{
"EC$",
"XCD",
}
+ XCG{
+ "Cg.",
+ "XCG",
+ }
XOF{
"F CFA",
"XOF",
@@ -201,7 +205,7 @@ root{
CurrencyUnitPatterns{
other{"{0} {1}"}
}
- Version{"44.1"}
+ Version{"45"}
currencySpacing{
afterCurrency{
currencyMatch{"[[:^S:]&[:^Z:]]"}
diff --git a/icu4c/source/data/curr/supplementalData.txt b/icu4c/source/data/curr/supplementalData.txt
index a08806493..57cc2bc9c 100644
--- a/icu4c/source/data/curr/supplementalData.txt
+++ b/icu4c/source/data/curr/supplementalData.txt
@@ -1199,10 +1199,21 @@ supplementalData:table(nofallback){
CW{
{
from:intvector{
+ 405,
+ -363122176,
+ }
+ id{"XCG"}
+ }
+ {
+ from:intvector{
299,
-1821388800,
}
id{"ANG"}
+ to:intvector{
+ 407,
+ -1004256769,
+ }
}
}
CX{
@@ -1946,7 +1957,7 @@ supplementalData:table(nofallback){
{
from:intvector{
389,
- 1788921856,
+ 1785321856,
}
id{"EUR"}
}
@@ -1958,7 +1969,7 @@ supplementalData:table(nofallback){
id{"HRK"}
to:intvector{
389,
- -1296445441,
+ -1300045441,
}
}
{
@@ -3949,10 +3960,21 @@ supplementalData:table(nofallback){
SX{
{
from:intvector{
+ 405,
+ -363122176,
+ }
+ id{"XCG"}
+ }
+ {
+ from:intvector{
299,
-1821388800,
}
id{"ANG"}
+ to:intvector{
+ 407,
+ -1004256769,
+ }
}
}
SY{
diff --git a/icu4c/source/data/dtd/cldr/common/dtd/ldml.dtd b/icu4c/source/data/dtd/cldr/common/dtd/ldml.dtd
index 9e89c472c..d968a6962 100644
--- a/icu4c/source/data/dtd/cldr/common/dtd/ldml.dtd
+++ b/icu4c/source/data/dtd/cldr/common/dtd/ldml.dtd
@@ -1,7 +1,7 @@
<!--
-Copyright © 1991-2023 Unicode, Inc.
+Copyright © 1991-2024 Unicode, Inc.
For terms of use, see http://www.unicode.org/copyright.html
-SPDX-License-Identifier: Unicode-DFS-2016
+SPDX-License-Identifier: Unicode-3.0
CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-->
@@ -42,7 +42,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ATTLIST version number CDATA #REQUIRED >
<!--@MATCH:regex/\$Revision.*\$-->
<!--@METADATA-->
-<!ATTLIST version cldrVersion CDATA #FIXED "44.1" >
+<!ATTLIST version cldrVersion CDATA #FIXED "45" >
<!--@MATCH:any-->
<!--@VALUE-->
<!ATTLIST version draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
diff --git a/icu4c/source/data/dtd/cldr/common/dtd/ldmlICU.dtd b/icu4c/source/data/dtd/cldr/common/dtd/ldmlICU.dtd
index e8abdedcb..c6058c4c3 100644
--- a/icu4c/source/data/dtd/cldr/common/dtd/ldmlICU.dtd
+++ b/icu4c/source/data/dtd/cldr/common/dtd/ldmlICU.dtd
@@ -1,7 +1,7 @@
<!--
Copyright © 1991-2021 Unicode, Inc.
For terms of use, see http://www.unicode.org/copyright.html
-SPDX-License-Identifier: Unicode-DFS-2016
+SPDX-License-Identifier: Unicode-3.0
CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-->
diff --git a/icu4c/source/data/icupkg.inc.in b/icu4c/source/data/icupkg.inc.in
index 819e2a6dd..641c48f24 100644
--- a/icu4c/source/data/icupkg.inc.in
+++ b/icu4c/source/data/icupkg.inc.in
@@ -47,7 +47,6 @@ host_cpu=@host_cpu@
host_vendor=@host_vendor@
host_os=@host_os@
CPP=@CPP@
-U_HAVE_INTTYPES_H=@U_HAVE_INTTYPES_H@
U_IS_BIG_ENDIAN=@U_IS_BIG_ENDIAN@
##### Add the following to source/config/Makefile.in
diff --git a/icu4c/source/data/in/pnames.icu b/icu4c/source/data/in/pnames.icu
index c04d2c129..b14571880 100644
--- a/icu4c/source/data/in/pnames.icu
+++ b/icu4c/source/data/in/pnames.icu
Binary files differ
diff --git a/icu4c/source/data/in/uprops.icu b/icu4c/source/data/in/uprops.icu
index 679c4586e..90bbbcf69 100644
--- a/icu4c/source/data/in/uprops.icu
+++ b/icu4c/source/data/in/uprops.icu
Binary files differ
diff --git a/icu4c/source/data/lang/LOCALE_DEPS.json b/icu4c/source/data/lang/LOCALE_DEPS.json
index df3d1f620..c30ec800f 100644
--- a/icu4c/source/data/lang/LOCALE_DEPS.json
+++ b/icu4c/source/data/lang/LOCALE_DEPS.json
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1",
+ "cldrVersion": "45",
"aliases": {
"ars": "ar_SA",
"az_AZ": "az_Latn_AZ",
@@ -19,6 +19,7 @@
"iw": "he",
"iw_IL": "he_IL",
"ks_IN": "ks_Arab_IN",
+ "kxv_IN": "kxv_Latn_IN",
"mni_IN": "mni_Beng_IN",
"mo": "ro",
"no_NO": "no",
diff --git a/icu4c/source/data/lang/af.txt b/icu4c/source/data/lang/af.txt
index 39ab8f6fa..a49ac9aa0 100644
--- a/icu4c/source/data/lang/af.txt
+++ b/icu4c/source/data/lang/af.txt
@@ -613,7 +613,6 @@ af{
phonebook{"Foonboek-sorteervolgorde"}
phonetic{"Fonetiese sorteerorde"}
pinyin{"Pinyin-sorteervolgorde"}
- reformed{"Gereformeerde sorteervolgorde"}
search{"Algemenedoel-soektog"}
searchjl{"Soek volgens Hangul-beginkonsonant"}
standard{"Standaard rangskikvolgorde"}
diff --git a/icu4c/source/data/lang/am.txt b/icu4c/source/data/lang/am.txt
index ea30c1e2e..9ebc7b75a 100644
--- a/icu4c/source/data/lang/am.txt
+++ b/icu4c/source/data/lang/am.txt
@@ -698,7 +698,6 @@ am{
phonebook{"የስልክ ደብተር ድርድር ቅደም ተከተል"}
phonetic{"የፎነቲክ ድርደራ ቅደም ተከተል"}
pinyin{"ፒንይን የድርድር ቅደም ተከተል"}
- reformed{"ዳግም የተፈጠረ የድርድር ቅደም ተከተል"}
search{"ለጠቅላላ ጉዳይ ፍለጋ"}
searchjl{"በሃንጉል የመጀመሪያ ተነባቢ ፈልግ"}
standard{"መደበኛ"}
diff --git a/icu4c/source/data/lang/ar.txt b/icu4c/source/data/lang/ar.txt
index e06274f8c..5c97ea2e8 100644
--- a/icu4c/source/data/lang/ar.txt
+++ b/icu4c/source/data/lang/ar.txt
@@ -806,7 +806,6 @@ ar{
phonebook{"الترتيب حسب دليل الهاتف"}
phonetic{"الترتيب حسب اللفظ"}
pinyin{"الترتيب حسب نظام بنيين الصيني"}
- reformed{"الترتيب المحسَّن"}
search{"بحث لأغراض عامة"}
searchjl{"بحث باستخدام حرف الهانغول الساكن الأول"}
standard{"ترتيب الفرز القياسي"}
diff --git a/icu4c/source/data/lang/ar_XB.txt b/icu4c/source/data/lang/ar_XB.txt
index a41dbf447..4b5b408a7 100644
--- a/icu4c/source/data/lang/ar_XB.txt
+++ b/icu4c/source/data/lang/ar_XB.txt
@@ -44,7 +44,7 @@ ar_XB{
Languages{
aa{"؜‮Afar‬؜"}
ab{"؜‮Abkhazian‬؜"}
- ace{"؜‮Achinese‬؜"}
+ ace{"؜‮Acehnese‬؜"}
ach{"؜‮Acoli‬؜"}
ada{"؜‮Adangme‬؜"}
ady{"؜‮Adyghe‬؜"}
@@ -1027,7 +1027,6 @@ ar_XB{
phonebook{"؜‮Phonebook‬؜ ؜‮Sort‬؜ ؜‮Order‬؜"}
phonetic{"؜‮Phonetic‬؜ ؜‮Sort‬؜ ؜‮Order‬؜"}
pinyin{"؜‮Pinyin‬؜ ؜‮Sort‬؜ ؜‮Order‬؜"}
- reformed{"؜‮Reformed‬؜ ؜‮Sort‬؜ ؜‮Order‬؜"}
search{"؜‮General‬؜-؜‮Purpose‬؜ ؜‮Search‬؜"}
searchjl{"؜‮Search‬؜ ؜‮By‬؜ ؜‮Hangul‬؜ ؜‮Initial‬؜ ؜‮Consonant‬؜"}
standard{"؜‮Standard‬؜ ؜‮Sort‬؜ ؜‮Order‬؜"}
diff --git a/icu4c/source/data/lang/ast.txt b/icu4c/source/data/lang/ast.txt
index 041aaac2f..8f25bdfb1 100644
--- a/icu4c/source/data/lang/ast.txt
+++ b/icu4c/source/data/lang/ast.txt
@@ -843,7 +843,6 @@ ast{
gb2312han{"orde de clasificación chinu simplificáu - GB2312"}
phonebook{"orde de clasificación de llista telefónica"}
pinyin{"orde de clasificación pinyin"}
- reformed{"orde de clasificación reformáu"}
search{"gueta xeneral"}
searchjl{"gueta por consonante Hangul d’aniciu"}
standard{"orde de clasificación estándar"}
diff --git a/icu4c/source/data/lang/bg.txt b/icu4c/source/data/lang/bg.txt
index abbeadfda..afa8f9346 100644
--- a/icu4c/source/data/lang/bg.txt
+++ b/icu4c/source/data/lang/bg.txt
@@ -784,7 +784,6 @@ bg{
phonebook{"Азбучен ред"}
phonetic{"Фонетичен ред на сортиране"}
pinyin{"Сортиране Пинин"}
- reformed{"Следреформен ред на сортиране"}
search{"търсене с общо предназначение"}
searchjl{"Търсене по първоначални съгласни в хангул"}
standard{"стандартен ред на сортиране"}
diff --git a/icu4c/source/data/lang/br.txt b/icu4c/source/data/lang/br.txt
index 56cc57e1c..da3ab4c93 100644
--- a/icu4c/source/data/lang/br.txt
+++ b/icu4c/source/data/lang/br.txt
@@ -725,7 +725,6 @@ br{
gb2312han{"urzh rummañ sinaek eeunaet - GB2312"}
phonebook{"urzh rummañ al levr-pellgomz"}
pinyin{"urzh rummañ pinyin"}
- reformed{"urzh rummañ adreizhet"}
search{"enklask hollek"}
standard{"urzh rummañ standart"}
stroke{"urzh rummañ an tresoù"}
diff --git a/icu4c/source/data/lang/bs.txt b/icu4c/source/data/lang/bs.txt
index 6e218cf63..4e543b689 100644
--- a/icu4c/source/data/lang/bs.txt
+++ b/icu4c/source/data/lang/bs.txt
@@ -871,7 +871,6 @@ bs{
phonebook{"Sortiranje kao telefonski imenik"}
phonetic{"Fonetsko sortiranje"}
pinyin{"Pinjin sortiranje"}
- reformed{"Reformirano sortiranje"}
search{"općenito pretraživanje"}
searchjl{"Pretraživanje po početnom suglasniku hangula"}
standard{"standardno sortiranje"}
diff --git a/icu4c/source/data/lang/ca.txt b/icu4c/source/data/lang/ca.txt
index 64e1b0ba9..289c6c2a5 100644
--- a/icu4c/source/data/lang/ca.txt
+++ b/icu4c/source/data/lang/ca.txt
@@ -900,7 +900,6 @@ ca{
phonebook{"ordre de la guia telefònica"}
phonetic{"ordre fonètic"}
pinyin{"ordre pinyin"}
- reformed{"ordre reformat"}
search{"cerca de propòsit general"}
searchjl{"cerca per consonant inicial del hangul"}
standard{"ordre estàndard"}
diff --git a/icu4c/source/data/lang/ccp.txt b/icu4c/source/data/lang/ccp.txt
index 493bc24e5..3cc9eca50 100644
--- a/icu4c/source/data/lang/ccp.txt
+++ b/icu4c/source/data/lang/ccp.txt
@@ -752,7 +752,6 @@ ccp{
phonebook{"𑄜𑄮𑄚𑄴𑄝𑄪𑄇𑄴 𑄥𑄎𑄚"}
phonetic{"𑄢𑄳𑄦𑄧 𑄝𑄬𑄭𑄣𑄧𑄚"}
pinyin{"𑄛𑄨𑄚𑄨𑄚𑄴 𑄥𑄎𑄚"}
- reformed{"𑄢𑄨𑄜𑄧𑄟𑄴𑄓𑄨 𑄝𑄬𑄭𑄣𑄧𑄚"}
search{"𑄃𑄧𑄎𑄧𑄃𑄧𑄌𑄴-𑄅𑄪𑄘𑄨𑄌𑄴𑄥𑄳𑄠 𑄖𑄮𑄉𑄚"}
searchjl{
"𑄦𑄋𑄴𑄉𑄪𑄣𑄴 𑄛𑄧𑄖𑄴𑄗𑄧𑄟𑄴 𑄝𑄧𑄣𑄬𑄟𑄖𑄳𑄠𑄬 𑄦𑄧𑄢𑄧𑄇𑄴 "
diff --git a/icu4c/source/data/lang/cs.txt b/icu4c/source/data/lang/cs.txt
index 6fa3dd985..b4d26f313 100644
--- a/icu4c/source/data/lang/cs.txt
+++ b/icu4c/source/data/lang/cs.txt
@@ -928,7 +928,6 @@ cs{
phonebook{"Řazení telefonního seznamu"}
phonetic{"Fonetické řazení"}
pinyin{"Řazení podle pchin-jinu"}
- reformed{"Reformované řazení"}
search{"Obecné hledání"}
searchjl{"Vyhledávat podle počáteční souhlásky písma hangul"}
standard{"Standardní řazení"}
diff --git a/icu4c/source/data/lang/cy.txt b/icu4c/source/data/lang/cy.txt
index 4f160a82e..eb499ffa4 100644
--- a/icu4c/source/data/lang/cy.txt
+++ b/icu4c/source/data/lang/cy.txt
@@ -699,7 +699,6 @@ cy{
gb2312han{"Trefn Symledig Tsieina - GB2312"}
phonebook{"Trefn Llyfr Ffôn"}
pinyin{"Trefn Pinyin"}
- reformed{"Trefn Diwygiedig"}
search{"Chwilio at Ddibenion Cyffredinol"}
standard{"Trefn Safonol"}
traditional{"Trefn Traddodiadol"}
diff --git a/icu4c/source/data/lang/da.txt b/icu4c/source/data/lang/da.txt
index afda038c3..1e0485105 100644
--- a/icu4c/source/data/lang/da.txt
+++ b/icu4c/source/data/lang/da.txt
@@ -845,7 +845,6 @@ da{
phonebook{"sorteringsrækkefølge i telefonbøger"}
phonetic{"fonetisk sorteringsrækkefølge"}
pinyin{"pinyin-baseret sorteringsrækkefølge"}
- reformed{"ny sorteringsrækkefølge"}
search{"generel søgning"}
searchjl{"sortér efter den første konsonant i hangul"}
standard{"standardsorteringsrækkefølge"}
diff --git a/icu4c/source/data/lang/de.txt b/icu4c/source/data/lang/de.txt
index ce4e3a391..7c27c6f2d 100644
--- a/icu4c/source/data/lang/de.txt
+++ b/icu4c/source/data/lang/de.txt
@@ -922,7 +922,6 @@ de{
phonebook{"Telefonbuch-Sortierung"}
phonetic{"Phonetische Sortierung"}
pinyin{"Pinyin-Sortierung"}
- reformed{"Reformierte Sortierreihenfolge"}
search{"Allgemeine Suche"}
searchjl{"Suche nach Anfangsbuchstaben des koreanischen Alphabets"}
standard{"Standard-Sortierung"}
diff --git a/icu4c/source/data/lang/ee.txt b/icu4c/source/data/lang/ee.txt
index 2d4d3722d..a0b251bf3 100644
--- a/icu4c/source/data/lang/ee.txt
+++ b/icu4c/source/data/lang/ee.txt
@@ -253,7 +253,6 @@ ee{
gb2312han{"chinagbe yeye ƒe ɖoɖomɔ nu"}
phonebook{"fonegbalẽ me ɖoɖomɔ nu"}
pinyin{"pinyin ɖoɖomɔ nu"}
- reformed{"nugbugbɔtoɖo ƒe ɖoɖomɔ nu"}
search{"nudidi hena zazã gbadza"}
stroke{"stroke ɖoɖomɔ nu"}
traditional{"blema ɖoɖomɔ nu"}
diff --git a/icu4c/source/data/lang/el.txt b/icu4c/source/data/lang/el.txt
index d700d83bc..5d0d3966a 100644
--- a/icu4c/source/data/lang/el.txt
+++ b/icu4c/source/data/lang/el.txt
@@ -820,7 +820,6 @@ el{
phonebook{"Σειρά ταξινόμησης τηλεφωνικού καταλόγου"}
phonetic{"Φωνητική σειρά ταξινόμησης"}
pinyin{"Σειρά ταξινόμησης Πινγίν"}
- reformed{"Ανασχηματισμένη σειρά ταξινόμησης"}
search{"Αναζήτηση γενικού τύπου"}
searchjl{"Αναζήτηση κατά αρχικό σύμφωνο Χανγκούλ"}
standard{"Τυπική σειρά ταξινόμησης"}
diff --git a/icu4c/source/data/lang/en.txt b/icu4c/source/data/lang/en.txt
index 8090493c8..7711f9dab 100644
--- a/icu4c/source/data/lang/en.txt
+++ b/icu4c/source/data/lang/en.txt
@@ -44,7 +44,7 @@ en{
Languages{
aa{"Afar"}
ab{"Abkhazian"}
- ace{"Achinese"}
+ ace{"Acehnese"}
ach{"Acoli"}
ada{"Adangme"}
ady{"Adyghe"}
@@ -1027,7 +1027,6 @@ en{
phonebook{"Phonebook Sort Order"}
phonetic{"Phonetic Sort Order"}
pinyin{"Pinyin Sort Order"}
- reformed{"Reformed Sort Order"}
search{"General-Purpose Search"}
searchjl{"Search By Hangul Initial Consonant"}
standard{"Standard Sort Order"}
diff --git a/icu4c/source/data/lang/en_XA.txt b/icu4c/source/data/lang/en_XA.txt
index 91b356149..a61e15f2b 100644
--- a/icu4c/source/data/lang/en_XA.txt
+++ b/icu4c/source/data/lang/en_XA.txt
@@ -44,7 +44,7 @@ en_XA{
Languages{
aa{"[Ńåŕ one]"}
ab{"[Åƀķĥåžîåñ one two]"}
- ace{"[Åçĥîñéšé one two]"}
+ ace{"[Åçéĥñéšé one two]"}
ach{"[Åçöļî one]"}
ada{"[Åðåñĝɱé one two]"}
ady{"[Åðýĝĥé one]"}
@@ -1030,7 +1030,6 @@ en_XA{
phonebook{"[Þĥöñéƀööķ Šöŕţ Öŕðéŕ one two three]"}
phonetic{"[Þĥöñéţîç Šöŕţ Öŕðéŕ one two three]"}
pinyin{"[Þîñýîñ Šöŕţ Öŕðéŕ one two three]"}
- reformed{"[Ŕéƒöŕɱéð Šöŕţ Öŕðéŕ one two three]"}
search{"[Ĝéñéŕåļ‐Þûŕþöšé Šéåŕçĥ one two three]"}
searchjl{"[Šéåŕçĥ Ɓý Ĥåñĝûļ Îñîţîåļ Çöñšöñåñţ one two three four]"}
standard{"[Šţåñðåŕð Šöŕţ Öŕðéŕ one two three]"}
diff --git a/icu4c/source/data/lang/es.txt b/icu4c/source/data/lang/es.txt
index 6218b577e..91a509393 100644
--- a/icu4c/source/data/lang/es.txt
+++ b/icu4c/source/data/lang/es.txt
@@ -814,7 +814,6 @@ es{
phonebook{"orden de listín telefónico"}
phonetic{"orden fonético"}
pinyin{"orden pinyin"}
- reformed{"orden reformado"}
search{"búsqueda de uso general"}
searchjl{"Buscar por consonante inicial de hangul"}
standard{"orden estándar"}
diff --git a/icu4c/source/data/lang/et.txt b/icu4c/source/data/lang/et.txt
index 04f940a65..da36959a1 100644
--- a/icu4c/source/data/lang/et.txt
+++ b/icu4c/source/data/lang/et.txt
@@ -963,7 +963,6 @@ et{
phonebook{"telefoniraamatu sortimisjärjestus"}
phonetic{"foneetiline sortimisjärjestus"}
pinyin{"pinyin’i sortimisjärjestus"}
- reformed{"reformitud sortimisjärjestus"}
search{"üldeesmärgiline otsing"}
searchjl{"otsing korea alguskonsonandi järgi"}
standard{"standardne järjestus"}
diff --git a/icu4c/source/data/lang/eu.txt b/icu4c/source/data/lang/eu.txt
index 03c0ca293..05956f2d7 100644
--- a/icu4c/source/data/lang/eu.txt
+++ b/icu4c/source/data/lang/eu.txt
@@ -741,7 +741,6 @@ eu{
phonebook{"Telefonoen zerrenda"}
phonetic{"Ordenatzeko irizpide fonetikoa"}
pinyin{"Pinyin hurrenkera"}
- reformed{"Erreformaren araberako hurrenkera"}
search{"Bilaketa orokorra"}
searchjl{"Bilatu hangularen lehen kontsonantearen arabera"}
standard{"Ordenatzeko irizpide estandarra"}
diff --git a/icu4c/source/data/lang/fa.txt b/icu4c/source/data/lang/fa.txt
index fabe747c3..2a5e798e5 100644
--- a/icu4c/source/data/lang/fa.txt
+++ b/icu4c/source/data/lang/fa.txt
@@ -817,7 +817,6 @@ fa{
phonebook{"ترتیب دفتر تلفن"}
phonetic{"مرتب کردن بر اساس آوایی"}
pinyin{"ترتیب پین‌یین"}
- reformed{"ترتیب اصلاح‌شده"}
search{"جستجوی عمومی"}
searchjl{"جستجو با صامت اول هانگول"}
standard{"ترتیب استاندارد"}
diff --git a/icu4c/source/data/lang/fi.txt b/icu4c/source/data/lang/fi.txt
index 99e653889..c697859ad 100644
--- a/icu4c/source/data/lang/fi.txt
+++ b/icu4c/source/data/lang/fi.txt
@@ -992,7 +992,6 @@ fi{
phonebook{"puhelinluettelojärjestys"}
phonetic{"äänteellinen järjestys"}
pinyin{"pinyin-järjestys"}
- reformed{"uudistettu järjestys"}
search{"yleishakujärjestys"}
searchjl{"haku hangul-alkukonsonantin mukaan"}
standard{"normaalijärjestys"}
diff --git a/icu4c/source/data/lang/fil.txt b/icu4c/source/data/lang/fil.txt
index 5beb3f0d2..7a51a9c6b 100644
--- a/icu4c/source/data/lang/fil.txt
+++ b/icu4c/source/data/lang/fil.txt
@@ -623,7 +623,6 @@ fil{
phonebook{"Pagkakasunud-sunod ng Pag-uuri ng Phonebook"}
phonetic{"Phonetic na Ayos ng Pag-uuri-uri"}
pinyin{"Pagkakasunud-sunod ng Pag-uuri ng Pinyin"}
- reformed{"Pagkakasunud-sunod ng Pag-uuri ng Na-reform"}
search{"Pangkalahatang Paghahanap"}
searchjl{"Maghanap Ayon sa Unang Katinig ng Hangul"}
standard{"Karaniwang Pagkakasunud-sunod ng Ayos"}
diff --git a/icu4c/source/data/lang/fr.txt b/icu4c/source/data/lang/fr.txt
index cf8177437..4b5b54292 100644
--- a/icu4c/source/data/lang/fr.txt
+++ b/icu4c/source/data/lang/fr.txt
@@ -431,7 +431,7 @@ fr{
ng{"ndonga"}
nia{"niha"}
niu{"niuéen"}
- njo{"Ao"}
+ njo{"ao"}
nl{"néerlandais"}
nl_BE{"flamand"}
nmg{"ngoumba"}
@@ -913,7 +913,6 @@ fr{
phonebook{"ordre de l’annuaire"}
phonetic{"ordre de tri phonétique"}
pinyin{"ordre pinyin"}
- reformed{"ordre réformé"}
search{"recherche générique"}
searchjl{"rechercher par consonne initiale en hangeul"}
standard{"ordre de tri standard"}
diff --git a/icu4c/source/data/lang/fr_BE.txt b/icu4c/source/data/lang/fr_BE.txt
index 7f711e262..9f3f719b0 100644
--- a/icu4c/source/data/lang/fr_BE.txt
+++ b/icu4c/source/data/lang/fr_BE.txt
@@ -6,6 +6,5 @@ fr_BE{
frp{"franco-provençal"}
goh{"ancien haut-allemand"}
gu{"gujarati"}
- njo{"ao"}
}
}
diff --git a/icu4c/source/data/lang/fr_CA.txt b/icu4c/source/data/lang/fr_CA.txt
index d7437c0a9..f8d4f64bc 100644
--- a/icu4c/source/data/lang/fr_CA.txt
+++ b/icu4c/source/data/lang/fr_CA.txt
@@ -105,7 +105,6 @@ fr_CA{
gb2312han{"ordre de tri chinois simplifié - GB2312"}
phonebook{"ordre de tri de l’annuaire"}
pinyin{"ordre de tri pinyin"}
- reformed{"ordre de tri réformé"}
searchjl{"Rechercher par consonne initiale en hangeul"}
stroke{"ordre de tri des traits"}
traditional{"ordre de tri traditionnel"}
diff --git a/icu4c/source/data/lang/ga.txt b/icu4c/source/data/lang/ga.txt
index d9bac5259..33a18c1d9 100644
--- a/icu4c/source/data/lang/ga.txt
+++ b/icu4c/source/data/lang/ga.txt
@@ -672,7 +672,6 @@ ga{
gb2312han{"Ord sórtála Síneach simplithe - GB 2312"}
phonebook{"Ord sórtála an eolaire teileafóin"}
pinyin{"Ord sórtála pinyin"}
- reformed{"Ord Sórtála Athfhoirmithe"}
search{"Cuardach Ilfhóinteach"}
searchjl{"Cuardach de réir Consan Tosaigh Hangul"}
standard{"Ord Sórtála Caighdeánach"}
diff --git a/icu4c/source/data/lang/gd.txt b/icu4c/source/data/lang/gd.txt
index dc06a6ed5..3db90761e 100644
--- a/icu4c/source/data/lang/gd.txt
+++ b/icu4c/source/data/lang/gd.txt
@@ -897,7 +897,6 @@ gd{
gb2312han{"Òrdugh seòrsachaidh na Sìnise Simplichte - GB2312"}
phonebook{"Òrdugh seòrsachaidh nan leabhraichean-fòn"}
pinyin{"Òrdugh seòrsachaidh Pinyin"}
- reformed{"Òrdugh seòrsachaidh ath-leasaichte"}
search{"Lorg coitcheann"}
searchjl{"Lorg leis a’ chiad chonnrag Hangul"}
standard{"Òrdugh seòrsachaidh stannardach"}
diff --git a/icu4c/source/data/lang/gl.txt b/icu4c/source/data/lang/gl.txt
index a6a2e5c1c..e838002d3 100644
--- a/icu4c/source/data/lang/gl.txt
+++ b/icu4c/source/data/lang/gl.txt
@@ -624,7 +624,6 @@ gl{
phonebook{"orde de clasificación da guía telefónica"}
phonetic{"Orde de clasificación fonética"}
pinyin{"Orde de clasificación pinyin"}
- reformed{"Criterio de ordenación reformado"}
search{"busca de carácter xeral"}
searchjl{"Clasificar por consonante inicial hangul"}
standard{"criterio de ordenación estándar"}
diff --git a/icu4c/source/data/lang/gu.txt b/icu4c/source/data/lang/gu.txt
index a0a20d164..066db3f30 100644
--- a/icu4c/source/data/lang/gu.txt
+++ b/icu4c/source/data/lang/gu.txt
@@ -817,7 +817,6 @@ gu{
phonebook{"ફોનબુક અનુક્મ"}
phonetic{"ધ્વન્યાત્મક સૉર્ટ ક્રમ"}
pinyin{"પિનયિન અનુક્મ"}
- reformed{"પૂનર્સ્વરૂપિત અનુક્મ"}
search{"સામાન્ય-ઉદ્દેશ શોધ"}
searchjl{"હંગુલ પ્રારંભિક વ્યંજન દ્વારા શોધો"}
standard{"માનક સૉર્ટ ક્રમ"}
diff --git a/icu4c/source/data/lang/he.txt b/icu4c/source/data/lang/he.txt
index 74e633e7c..60c82a10f 100644
--- a/icu4c/source/data/lang/he.txt
+++ b/icu4c/source/data/lang/he.txt
@@ -852,7 +852,6 @@ he{
phonebook{"מיון ספר טלפונים"}
phonetic{"סדר מיון פונטי"}
pinyin{"מיון פיניין"}
- reformed{"סדר מיון מתוקן"}
search{"חיפוש למטרה כללית"}
searchjl{"חפש לפי העיצור הראשון באותיות הנגול"}
standard{"סדר מיון רגיל"}
diff --git a/icu4c/source/data/lang/hi.txt b/icu4c/source/data/lang/hi.txt
index a2e4e7d85..8a2617802 100644
--- a/icu4c/source/data/lang/hi.txt
+++ b/icu4c/source/data/lang/hi.txt
@@ -807,7 +807,6 @@ hi{
phonebook{"फ़ोनबुक वर्गीकरण क्रम"}
phonetic{"ध्वन्यात्मक वर्गीकरण क्रम"}
pinyin{"पिनयिन वर्गीकरण क्रम"}
- reformed{"संशोधित वर्गीकरण क्रम"}
search{"सामान्य-उद्देश्य खोज"}
searchjl{"हांगुल आरंभिक व्‍यंजन द्वारा खोजें"}
standard{"मानक वर्गीकरण क्रम"}
diff --git a/icu4c/source/data/lang/hi_Latn.txt b/icu4c/source/data/lang/hi_Latn.txt
index 16f182680..c3ab08fa5 100644
--- a/icu4c/source/data/lang/hi_Latn.txt
+++ b/icu4c/source/data/lang/hi_Latn.txt
@@ -78,7 +78,6 @@ hi_Latn{
collation{
compat{"Compatibility ke liye, picchla sort order"}
dictionary{"Dictionary kaa sort order"}
- reformed{"Reform kiya gaya Sort Order"}
searchjl{"Hangul initial consonant se search karein"}
}
d0{
diff --git a/icu4c/source/data/lang/hr.txt b/icu4c/source/data/lang/hr.txt
index 0f52cdd86..5d11a8b00 100644
--- a/icu4c/source/data/lang/hr.txt
+++ b/icu4c/source/data/lang/hr.txt
@@ -851,7 +851,6 @@ hr{
phonebook{"razvrstavanje po abecedi"}
phonetic{"fonetsko razvrstavanje"}
pinyin{"pinyin razvrstavanje"}
- reformed{"reformirano razvrstavanje"}
search{"općenito pretraživanje"}
searchjl{"Pretraživanje po početnom suglasniku hangula"}
standard{"standardno razvrstavanje"}
diff --git a/icu4c/source/data/lang/hu.txt b/icu4c/source/data/lang/hu.txt
index 62b755829..aab7a8e0c 100644
--- a/icu4c/source/data/lang/hu.txt
+++ b/icu4c/source/data/lang/hu.txt
@@ -834,7 +834,6 @@ hu{
phonebook{"Telefonkönyv sorrend"}
phonetic{"Fonetikus rendezési sorrend"}
pinyin{"Pinyin sorrend"}
- reformed{"Átalakított rendezési elv"}
search{"Általános célú keresés"}
searchjl{"Keresés hangul kezdő mássalhangzó szerint"}
standard{"Normál rendezési sorrend"}
diff --git a/icu4c/source/data/lang/id.txt b/icu4c/source/data/lang/id.txt
index 7031feee4..eebf1f4f7 100644
--- a/icu4c/source/data/lang/id.txt
+++ b/icu4c/source/data/lang/id.txt
@@ -893,7 +893,6 @@ id{
phonebook{"Aturan Pengurutan Buku Telepon"}
phonetic{"Aturan Pengurutan Fonetik"}
pinyin{"Aturan Pengurutan Pinyin"}
- reformed{"Aturan Pengurutan yang Diubah Bentuknya"}
search{"Pencarian Tujuan Umum"}
searchjl{"Pencarian Menurut Konsonan Awal Hangul"}
standard{"Aturan Pengurutan Standar"}
diff --git a/icu4c/source/data/lang/is.txt b/icu4c/source/data/lang/is.txt
index 8a2b4307d..235bfba27 100644
--- a/icu4c/source/data/lang/is.txt
+++ b/icu4c/source/data/lang/is.txt
@@ -731,7 +731,6 @@ is{
phonebook{"Símaskráarröðun"}
phonetic{"Hljóðfræðileg röð"}
pinyin{"Pinyin-röðun"}
- reformed{"Endurbætt röð"}
search{"Almenn leit"}
searchjl{"Leita eftir upphafssamhljóða í Hangul"}
standard{"Stöðluð röðun"}
diff --git a/icu4c/source/data/lang/it.txt b/icu4c/source/data/lang/it.txt
index f5bde5311..6db97fd9b 100644
--- a/icu4c/source/data/lang/it.txt
+++ b/icu4c/source/data/lang/it.txt
@@ -925,7 +925,6 @@ it{
phonebook{"Ordinamento Elenco telefonico"}
phonetic{"Ordinamento fonetico"}
pinyin{"Ordinamento pinyin"}
- reformed{"Ordinamento riformato"}
search{"Ricerca generica"}
searchjl{"Cerca per consonante hangul iniziale"}
standard{"Ordinamento standard"}
diff --git a/icu4c/source/data/lang/ja.txt b/icu4c/source/data/lang/ja.txt
index fab577325..92563f087 100644
--- a/icu4c/source/data/lang/ja.txt
+++ b/icu4c/source/data/lang/ja.txt
@@ -932,7 +932,6 @@ ja{
phonebook{"電話帳順"}
phonetic{"音声順による並べ替え"}
pinyin{"ピンイン順"}
- reformed{"リフォーム"}
search{"汎用検索"}
searchjl{"ハングル語頭子音による並べ替え"}
standard{"標準並べ替え順序"}
diff --git a/icu4c/source/data/lang/kgp.txt b/icu4c/source/data/lang/kgp.txt
index e8939de0f..16f8b8b13 100644
--- a/icu4c/source/data/lang/kgp.txt
+++ b/icu4c/source/data/lang/kgp.txt
@@ -766,7 +766,6 @@ kgp{
phonebook{"Terefonĩ Risita to ke"}
phonetic{"Fonẽtika to ke kuprãg"}
pinyin{"Pin-yin to nỹtĩ"}
- reformed{"Hár tãg nỹtĩ"}
search{"Jẽnfĩn to ke Kar"}
searchjl{"Hangul kãsonỹte ve jãnfĩn"}
standard{"to ke pẽ"}
diff --git a/icu4c/source/data/lang/kn.txt b/icu4c/source/data/lang/kn.txt
index 6caffda01..feb433710 100644
--- a/icu4c/source/data/lang/kn.txt
+++ b/icu4c/source/data/lang/kn.txt
@@ -808,7 +808,6 @@ kn{
phonebook{"ಫೋನ್‌ಬುಕ್ ವಿಂಗಡಣೆ ಕ್ರಮ"}
phonetic{"ಉಚ್ಛಾರಣಾನುರೂಪವಾಗಿ ವಿಂಗಡಣೆ ಕ್ರಮ"}
pinyin{"ಪಿನ್‌ಯಿನ್ ವಿಂಗಡಣೆ ಕ್ರಮ"}
- reformed{"ಪರಿಷ್ಕೃತ ಅನುಕ್ರಮ ವಿನ್ಯಾಸ"}
search{"ಸಾಮಾನ್ಯ- ಉದ್ದೇಶ ಹುಡುಕಾಟ"}
searchjl{"ಹಂಗುಲ್ ಆದ್ಯಕ್ಷರ ವ್ಯಂಜನದ ಮೂಲಕ ಹುಡುಕಿ"}
standard{"ಪ್ರಮಾಣೀಕೃತ ವಿಂಗಡಣೆ ಕ್ರಮ"}
diff --git a/icu4c/source/data/lang/ko.txt b/icu4c/source/data/lang/ko.txt
index 93cc994b2..679ee5f48 100644
--- a/icu4c/source/data/lang/ko.txt
+++ b/icu4c/source/data/lang/ko.txt
@@ -855,7 +855,6 @@ ko{
phonebook{"전화번호부순"}
phonetic{"소리나는 대로 정렬 순서"}
pinyin{"병음순"}
- reformed{"개정 정렬순"}
search{"범용 검색"}
searchjl{"한글 자음으로 검색"}
standard{"표준 정렬 순서"}
diff --git a/icu4c/source/data/lang/ks.txt b/icu4c/source/data/lang/ks.txt
index e90cb4b74..738787191 100644
--- a/icu4c/source/data/lang/ks.txt
+++ b/icu4c/source/data/lang/ks.txt
@@ -31,7 +31,7 @@ ks{
arn{"ایرو کونِیَن"}
arp{"اَراپاہو"}
arw{"اَراوَک"}
- as{"اسٲمۍ"}
+ as{"اسٲمؠ"}
ast{"ایسٹوٗریَن"}
av{"اَوارِک"}
awa{"اَوَدی"}
@@ -51,7 +51,7 @@ ks{
bin{"بِنی"}
bla{"سِکسِکا"}
bm{"بَمبارا"}
- bn{"بَنگٲلۍ"}
+ bn{"بَنگٲلؠ"}
bo{"تِبتی"}
br{"بریٹَن"}
bra{"برج"}
@@ -107,12 +107,12 @@ ks{
eka{"ایکاجُک"}
el{"یوٗنٲنی"}
elx{"ایلامایِٹ"}
- en{"اَنگیٖزۍ"}
- en_AU{"آسٹریلیَن اَنگریٖزۍ"}
- en_CA{"کینَڈِیٲیی اَنگریٖزۍ"}
- en_GB{"بَرطانوی اَنگریٖزۍ"}
- en_US{"امریٖکی اَنٛگریٖزۍ"}
- enm{"وَسطی اَنگریٖزۍ"}
+ en{"اَنگیٖزؠ"}
+ en_AU{"آسٹریلیَن اَنگریٖزؠ"}
+ en_CA{"کینَڈِیٲیی اَنگریٖزؠ"}
+ en_GB{"بَرطانوی اَنگریٖزؠ"}
+ en_US{"امریٖکی اَنٛگریٖزؠ"}
+ enm{"وَسطی اَنگریٖزؠ"}
eo{"ایسپَرینٹو"}
es{"ہسپانوی"}
es_419{"لاطیٖنی امریٖکی ہسپانوی"}
@@ -162,7 +162,7 @@ ks{
ha{"ہاوسا"}
hai{"ہَیدا"}
haw{"ہوایِیَن"}
- he{"عبرٲنۍ"}
+ he{"عبرٲنؠ"}
hi{"ہِندی"}
hil{"ہِلیٖگینَن"}
hit{"ہِتایِت"}
@@ -188,7 +188,7 @@ ks{
is{"آیِسلینڈِک"}
it{"اِطالوی"}
iu{"اِنُکتِتوٗ"}
- ja{"جاپٲنۍ"}
+ ja{"جاپٲنؠ"}
jbo{"لوجبان"}
jpr{"جوڈیو فارسی"}
jrb{"جوڈیو عربی"}
@@ -270,7 +270,7 @@ ks{
mni{"مَنیپوٗری"}
moh{"موہاک"}
mos{"موسی"}
- mr{"مَرٲٹھۍ"}
+ mr{"مَرٲٹھؠ"}
ms{"مَلَے"}
mt{"مَلتیٖس"}
mul{"واریاہ زبان"}
@@ -284,7 +284,7 @@ ks{
nb{"ناروییَن بوکمال"}
nd{"شُمال ڈَبیل"}
nds{"بۆنِم جٔرمَن"}
- ne{"نیپٲلۍ"}
+ ne{"نیپٲلؠ"}
new{"نیواری"}
ng{"ڈونگا"}
nia{"نِیاس"}
@@ -312,7 +312,7 @@ ks{
os{"اۆسیٹِک"}
osa{"اۆسیج"}
ota{"اوٹومَن تُرکِش"}
- pa{"پَنجٲبۍ"}
+ pa{"پَنجٲبؠ"}
pag{"پَنگاسِنَن"}
pal{"پَہلَوی"}
pam{"پَمپَنگا"}
@@ -329,7 +329,7 @@ ks{
pt_BR{"برازیٖلی پُرتَگیٖز"}
pt_PT{"یوٗرپی پُرتَگیٖز"}
qu{"کُویشُوا"}
- raj{"راجِستھٲنۍ"}
+ raj{"راجِستھٲنؠ"}
rap{"رَپانوی"}
rar{"رَروٹونگَن"}
rm{"رومانش"}
@@ -415,7 +415,7 @@ ks{
uga{"اُگارتِک"}
uk{"یوٗکرینیٲیی"}
umb{"یُمبُندوٗ"}
- und{"اَنزٲنۍ یا نَہ لَگہٕہار زبان"}
+ und{"اَنزٲنؠ یا نَہ لَگہٕہار زبان"}
ur{"اُردوٗ"}
uz{"اُزبیک"}
vai{"واے"}
@@ -453,8 +453,8 @@ ks{
zh{"چیٖنی، مینڈارن"}
}
Languages%short{
- en_GB{"UK اَنٛگریٖزۍ"}
- en_US{"US اَنٛگریٖزۍ"}
+ en_GB{"UK اَنٛگریٖزؠ"}
+ en_US{"US اَنٛگریٖزؠ"}
}
Scripts{
Arab{"عربی"}
@@ -463,7 +463,7 @@ ks{
Avst{"اَویستَن"}
Bali{"بالَنیٖز"}
Batk{"باتَک"}
- Beng{"بینگٲلۍ"}
+ Beng{"بینگٲلؠ"}
Blis{"بِلِس سِمبلز"}
Bopo{"بوپوموفو"}
Brah{"براہمی"}
@@ -491,17 +491,17 @@ ks{
Goth{"گوتھِک"}
Grek{"گرَنتھا"}
Gujr{"گریٖک"}
- Guru{"گُجرٲتۍ"}
+ Guru{"گُجرٲتؠ"}
Hang{"ہانگُل"}
Hani{"ہان"}
Hano{"ہانُنوٗ"}
Hans{
"سَہل ﴿ترجمع اِشارٕ: یِم ورژن رَسم الخط ہُک ناؤ چھُ چیٖنی باپتھ زَبانٕ نا"
- "ؤ کِس مجموعَس سٕتۍ اِستعمال یِوان کرنٕہ۔﴾"
+ "ؤ کِس مجموعَس سٕتؠ اِستعمال یِوان کرنٕہ۔﴾"
}
Hant{
"رِوٲجی ﴿ترجمع اِشارٕ: یِم ورژن رَسم الخط ہُک ناؤ چھُ چیٖنی باپتھ زَبانٕ "
- "ناؤ کِس مجموعَس سٕتۍ اِستعمال یِوان کرنٕہ۔﴾"
+ "ناؤ کِس مجموعَس سٕتؠ اِستعمال یِوان کرنٕہ۔﴾"
}
Hebr{"ہِبرِو"}
Hira{"ہیٖراگانا"}
@@ -603,7 +603,7 @@ ks{
hebrew{"ہِبرِو کیلنڑَر"}
indian{"انڈین نیشنل کیلنڈر"}
iso8601{"ISO-8601 کیلنڈر"}
- japanese{"جاپٲنۍ کیلنڑَر"}
+ japanese{"جاپٲنؠ کیلنڑَر"}
roc{"جموٗریٲتی چیٖنی کیلَنڑَر"}
}
collation{
@@ -628,22 +628,22 @@ ks{
1996{"جٔرمَن عِلمہِ ہِجا ۱۹۹۶سُک"}
AREVELA{"مَشرِقی اَمریٖکا"}
BAKU1926{"جٔمع کٔرِتھ تُرکی لاطیٖنی اَچھر"}
- BISKE{"سین جارجِیو/بِلا بوٗلۍ"}
+ BISKE{"سین جارجِیو/بِلا بوٗلؠ"}
FONIPA{"آوازیات"}
FONUPA{"یوٗ پی اے آوازِیات"}
- LIPAW{"روٗسی زَبانہِ ہِنز لِپوواز بوٗلۍ"}
+ LIPAW{"روٗسی زَبانہِ ہِنز لِپوواز بوٗلؠ"}
MONOTON{"اَکٔے لہجہٕ واجؠن زَبان"}
- NEDIS{"نؠٹِسون بوٗلۍ"}
- NJIVA{"نیجِوا بوٗلۍ"}
- OSOJS{"اُشیکو/اوسوجین بوٗلۍ"}
+ NEDIS{"نؠٹِسون بوٗلؠ"}
+ NJIVA{"نیجِوا بوٗلؠ"}
+ OSOJS{"اُشیکو/اوسوجین بوٗلؠ"}
POLYTON{"واریاہ لہجہٕ واجؠن زَبان"}
POSIX{"کَمپیوٗٹَر"}
REVISED{"دُبارٕ دۄہراونہٕ آمُت عِلمہِ ہِجا"}
ROZAJ{"روٗسی"}
SAAHO{"سوہو"}
- SCOTLAND{"سُکاٹِش مَیعٲری اَنگریٖزۍ"}
+ SCOTLAND{"سُکاٹِش مَیعٲری اَنگریٖزؠ"}
SCOUSE{"سِکوس"}
- SOLBA{"ثٹولوِزا/سولبِکا بوٗلۍ"}
+ SOLBA{"ثٹولوِزا/سولبِکا بوٗلؠ"}
TARASK{"تاراسکیٖوِکا علمہ ہِجاِ"}
}
codePatterns{
diff --git a/icu4c/source/data/lang/kxv_IN.txt b/icu4c/source/data/lang/kxv_IN.txt
new file mode 100644
index 000000000..e92770c6f
--- /dev/null
+++ b/icu4c/source/data/lang/kxv_IN.txt
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_IN{
+ "%%ALIAS"{"kxv_Latn_IN"}
+}
diff --git a/icu4c/source/data/lang/kxv_Latn.txt b/icu4c/source/data/lang/kxv_Latn.txt
new file mode 100644
index 000000000..823563224
--- /dev/null
+++ b/icu4c/source/data/lang/kxv_Latn.txt
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_Latn{
+}
diff --git a/icu4c/source/data/lang/kxv_Latn_IN.txt b/icu4c/source/data/lang/kxv_Latn_IN.txt
new file mode 100644
index 000000000..d2dd86851
--- /dev/null
+++ b/icu4c/source/data/lang/kxv_Latn_IN.txt
@@ -0,0 +1,9 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+/**
+ * generated alias target
+ */
+kxv_Latn_IN{
+ ___{""}
+}
diff --git a/icu4c/source/data/lang/lb.txt b/icu4c/source/data/lang/lb.txt
index d8566720f..0b0f5351f 100644
--- a/icu4c/source/data/lang/lb.txt
+++ b/icu4c/source/data/lang/lb.txt
@@ -770,7 +770,6 @@ lb{
gb2312han{"Vereinfacht Chinesesch - GB2312"}
phonebook{"Telefonsbuch-Zortéierung"}
pinyin{"Pinyin-Zortéierregelen"}
- reformed{"Reforméiert Zortéierreiefolleg"}
search{"Allgemeng Sich"}
searchjl{"Sich no Ufanksbuschtawen aus dem koreaneschen Alphabet"}
standard{"Standard Zortéierreiefolleg"}
diff --git a/icu4c/source/data/lang/lo.txt b/icu4c/source/data/lang/lo.txt
index 9c51d9257..b0dad978c 100644
--- a/icu4c/source/data/lang/lo.txt
+++ b/icu4c/source/data/lang/lo.txt
@@ -789,7 +789,6 @@ lo{
gb2312han{"ລຽງຕາມອັກສອນຈີນປະຍຸກ"}
phonebook{"ລຽງຕາມສະໝຸດໂທລະສັບ"}
pinyin{"ລຽງຕາມການອອກສຽງພາສາຈີນ"}
- reformed{"ລຽງຕາມລຳດັບສຸດທ້າຍ"}
search{"ການຊອກຫາທົ່ວໄປ"}
searchjl{"ຄົ້ນຫາຕາມພະຍັນຊະນະຂຶ້ນຕົ້ນທີ່ເປັນຮັງກີຣ"}
standard{"ຮຽງຕາມມາດຕະຖານ"}
diff --git a/icu4c/source/data/lang/lt.txt b/icu4c/source/data/lang/lt.txt
index b6ad2088f..fc6a82f92 100644
--- a/icu4c/source/data/lang/lt.txt
+++ b/icu4c/source/data/lang/lt.txt
@@ -934,7 +934,6 @@ lt{
phonebook{"telefonų knygos rūšiavimo tvarka"}
phonetic{"Fonetinė rikiavimo tvarka"}
pinyin{"supaprastinta kiniškų hieroglifų rūšiavimo tvarka"}
- reformed{"reformuota rūšiavimo tvarka"}
search{"bendroji paieška"}
standard{"standartinis rikiavimas"}
stroke{"Įprasta kiniško požymio rūšiavimo tvarka"}
diff --git a/icu4c/source/data/lang/lv.txt b/icu4c/source/data/lang/lv.txt
index 161d3d917..b53b4354d 100644
--- a/icu4c/source/data/lang/lv.txt
+++ b/icu4c/source/data/lang/lv.txt
@@ -757,7 +757,6 @@ lv{
phonebook{"tālruņu grāmatas kārtošanas secība"}
phonetic{"Fonētiskā kārtošanas secība"}
pinyin{"piņjiņa kārtošanas secība"}
- reformed{"Reformētā kārtošanas secība"}
search{"vispārīga meklēšana"}
searchjl{"Meklēt pēc Hangul sākuma līdzskaņa"}
standard{"standarta kārtošanas secība"}
diff --git a/icu4c/source/data/lang/mn.txt b/icu4c/source/data/lang/mn.txt
index 5c002a01c..6dba00c18 100644
--- a/icu4c/source/data/lang/mn.txt
+++ b/icu4c/source/data/lang/mn.txt
@@ -690,7 +690,6 @@ mn{
gb2312han{"Хялбаршуулсан хятад Эрэмбэлэх дараалал - GB2312"}
phonebook{"Утасны дэвтрийн эрэмбэлэх дараалал"}
pinyin{"Пиньян эрэмбэлэх дараалал"}
- reformed{"Шинэчилсэн эрэмбэлэх дараалал"}
search{"ерөнхий хайлт"}
searchjl{"Хангүлээр эхний гийгүүлэгчээр хайх"}
standard{"стандарт эрэмбэлэх дараалал"}
diff --git a/icu4c/source/data/lang/mr.txt b/icu4c/source/data/lang/mr.txt
index d54d0264f..4ee374c0b 100644
--- a/icu4c/source/data/lang/mr.txt
+++ b/icu4c/source/data/lang/mr.txt
@@ -808,7 +808,6 @@ mr{
phonebook{"फोनबुक अनुक्रम"}
phonetic{"ध्वनीविचार क्रमवारी क्रम"}
pinyin{"पिनयिन अनुक्रम"}
- reformed{"पुनर्स्वरूपित अनुक्रम"}
search{"सामान्य हेतु शोध"}
searchjl{"हँगुल प्रारंभिक व्यंजनानुसार शोधा"}
standard{"प्रमाणित क्रमवारी क्रम"}
diff --git a/icu4c/source/data/lang/ms.txt b/icu4c/source/data/lang/ms.txt
index bbe7c53c0..f6a7e9c0a 100644
--- a/icu4c/source/data/lang/ms.txt
+++ b/icu4c/source/data/lang/ms.txt
@@ -769,7 +769,6 @@ ms{
phonebook{"Aturan Isih Buku Telefon"}
phonetic{"Urutan Isih Fonetik"}
pinyin{"Aturan Isih Pinyin"}
- reformed{"Aturan Isih Pembaharuan"}
search{"Carian Tujuan Umum"}
searchjl{"Cari Mengikut Konsonan Awal Hangul"}
standard{"Tertib Isih Standard"}
diff --git a/icu4c/source/data/lang/nl.txt b/icu4c/source/data/lang/nl.txt
index a29aafd3c..19a442023 100644
--- a/icu4c/source/data/lang/nl.txt
+++ b/icu4c/source/data/lang/nl.txt
@@ -953,7 +953,6 @@ nl{
phonebook{"Telefoonboeksorteervolgorde"}
phonetic{"Fonetische sorteervolgorde"}
pinyin{"Pinyinsorteervolgorde"}
- reformed{"Herziene sorteervolgorde"}
search{"algemeen zoeken"}
searchjl{"Zoeken op eerste Hangul-medeklinker"}
standard{"standaard sorteervolgorde"}
diff --git a/icu4c/source/data/lang/no.txt b/icu4c/source/data/lang/no.txt
index 4da29cc2d..bcdc331e6 100644
--- a/icu4c/source/data/lang/no.txt
+++ b/icu4c/source/data/lang/no.txt
@@ -928,7 +928,6 @@ no{
phonebook{"telefonkatalogsortering"}
phonetic{"fonetisk sortering"}
pinyin{"pinyinsortering"}
- reformed{"reformert sortering"}
search{"generelt søk"}
searchjl{"Søk etter første konsonant i hangul"}
standard{"standard sorteringsrekkefølge"}
diff --git a/icu4c/source/data/lang/pl.txt b/icu4c/source/data/lang/pl.txt
index 91951e79c..043b6e9ee 100644
--- a/icu4c/source/data/lang/pl.txt
+++ b/icu4c/source/data/lang/pl.txt
@@ -905,7 +905,6 @@ pl{
phonebook{"porządek sortowania książki telefonicznej"}
phonetic{"sortowanie fonetyczne"}
pinyin{"porządek sortowania pinyin"}
- reformed{"sortowanie zreformowane"}
search{"wyszukiwanie ogólnego zastosowania"}
searchjl{"Wyszukiwanie według początkowej spółgłoski hangul"}
standard{"standardowa kolejność sortowania"}
diff --git a/icu4c/source/data/lang/pt.txt b/icu4c/source/data/lang/pt.txt
index fc1383da8..c7238c413 100644
--- a/icu4c/source/data/lang/pt.txt
+++ b/icu4c/source/data/lang/pt.txt
@@ -809,7 +809,6 @@ pt{
phonebook{"Ordem de lista telefônica"}
phonetic{"Ordem de classificação fonética"}
pinyin{"Ordem Pin-yin"}
- reformed{"Ordem reformulada"}
search{"Pesquisa de uso geral"}
searchjl{"Pesquisar por consonante inicial hangul"}
standard{"Ordem padrão"}
diff --git a/icu4c/source/data/lang/ro.txt b/icu4c/source/data/lang/ro.txt
index 2d1b71107..6e8129f78 100644
--- a/icu4c/source/data/lang/ro.txt
+++ b/icu4c/source/data/lang/ro.txt
@@ -862,7 +862,6 @@ ro{
phonebook{"ordine de sortare după cartea de telefon"}
phonetic{"ordine de sortare fonetică"}
pinyin{"ordine de sortare pinyin"}
- reformed{"ordine de sortare reformată"}
search{"căutare cu scop general"}
searchjl{"Căutați în funcție de consoana inițială hangul"}
standard{"ordine de sortare standard"}
diff --git a/icu4c/source/data/lang/root.txt b/icu4c/source/data/lang/root.txt
index c890f6820..d30673731 100644
--- a/icu4c/source/data/lang/root.txt
+++ b/icu4c/source/data/lang/root.txt
@@ -2,7 +2,7 @@
// License & terms of use: http://www.unicode.org/copyright.html
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
root{
- Version{"44.1"}
+ Version{"45"}
characterLabelPattern{
all{"{0} — all"}
category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/ru.txt b/icu4c/source/data/lang/ru.txt
index 784d8a244..a4acfd2cc 100644
--- a/icu4c/source/data/lang/ru.txt
+++ b/icu4c/source/data/lang/ru.txt
@@ -845,7 +845,6 @@ ru{
phonebook{"порядок телефонной книги"}
phonetic{"фонетический порядок сортировки"}
pinyin{"пиньинь"}
- reformed{"реформированный порядок сортировки"}
search{"поиск"}
searchjl{"Поиск по первой согласной хангыль"}
standard{"стандартная сортировка"}
diff --git a/icu4c/source/data/lang/sc.txt b/icu4c/source/data/lang/sc.txt
index bd378c4a9..11a87f4b6 100644
--- a/icu4c/source/data/lang/sc.txt
+++ b/icu4c/source/data/lang/sc.txt
@@ -689,7 +689,6 @@ sc{
gb2312han{"ordinamentu de su tzinesu semplificadu - GB2312"}
phonebook{"ordinamentu de s’elencu telefònicu"}
pinyin{"ordinamentu pinyin"}
- reformed{"ordinamentu riformadu"}
search{"chirca genèrica"}
searchjl{"chirca pro consonante hangul initziale"}
standard{"ordinamentu istandard"}
diff --git a/icu4c/source/data/lang/sk.txt b/icu4c/source/data/lang/sk.txt
index e443b1c0b..148117955 100644
--- a/icu4c/source/data/lang/sk.txt
+++ b/icu4c/source/data/lang/sk.txt
@@ -742,7 +742,6 @@ sk{
phonebook{"lexikografické zoradenie"}
phonetic{"fonetické zoradenie"}
pinyin{"zoradenie pinyin"}
- reformed{"reformované zoradenie"}
search{"všeobecné vyhľadávanie"}
searchjl{"Hľadať podľa počiatočnej spoluhlásky písma Hangul"}
standard{"štandardné zoradenie"}
diff --git a/icu4c/source/data/lang/sl.txt b/icu4c/source/data/lang/sl.txt
index 51c2faeee..e06858f50 100644
--- a/icu4c/source/data/lang/sl.txt
+++ b/icu4c/source/data/lang/sl.txt
@@ -791,7 +791,6 @@ sl{
phonebook{"razvrščanje po sistemu telefonskega imenika"}
phonetic{"fonetično razvrščanje"}
pinyin{"razvrščanje po sistemu pinjin"}
- reformed{"reformirano razvrščanje"}
search{"Splošno iskanje"}
searchjl{"Iskanje po začetnem soglasniku hangul"}
standard{"Standardno razvrščanje"}
diff --git a/icu4c/source/data/lang/so.txt b/icu4c/source/data/lang/so.txt
index 8b9b8d071..ffbe03103 100644
--- a/icu4c/source/data/lang/so.txt
+++ b/icu4c/source/data/lang/so.txt
@@ -667,7 +667,6 @@ so{
gb2312han{"Isku hagaajinta Farta shiineeska"}
phonebook{"Isku hagaajinta foonbuuga"}
pinyin{"Isku hagaajinta Pinyin"}
- reformed{"Isku hagaajinta Reformed"}
search{"Raadinta Guud"}
searchjl{"Raadinta Shibanaha Hangul"}
standard{"Amarka Kala Soocidda Caadiga ah"}
diff --git a/icu4c/source/data/lang/sq.txt b/icu4c/source/data/lang/sq.txt
index 241932ba2..2a58555af 100644
--- a/icu4c/source/data/lang/sq.txt
+++ b/icu4c/source/data/lang/sq.txt
@@ -694,7 +694,6 @@ sq{
gb2312han{"Radhitje e kinezishtes së thjeshtësuar - GB2312"}
phonebook{"Radhitje libri telefonik"}
pinyin{"Radhitje pinini"}
- reformed{"Radhitje e reformuar"}
search{"kërkim i përgjithshëm"}
searchjl{"kërkim sipas bashkëtingëllores fillestare hangul"}
standard{"radhitje standarde"}
diff --git a/icu4c/source/data/lang/sr.txt b/icu4c/source/data/lang/sr.txt
index 7e8c61065..3d559cc36 100644
--- a/icu4c/source/data/lang/sr.txt
+++ b/icu4c/source/data/lang/sr.txt
@@ -798,7 +798,6 @@ sr{
phonebook{"сортирање као телефонски именик"}
phonetic{"фонетски редослед сортирања"}
pinyin{"пинјин сортирање"}
- reformed{"реформисани редослед сортирања"}
search{"претрага опште намене"}
searchjl{"Претрага према хангул почетном сугласнику"}
standard{"стандардни редослед сортирања"}
diff --git a/icu4c/source/data/lang/sr_Cyrl_BA.txt b/icu4c/source/data/lang/sr_Cyrl_BA.txt
index 9e69eb37e..606b3fa24 100644
--- a/icu4c/source/data/lang/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/lang/sr_Cyrl_BA.txt
@@ -30,7 +30,6 @@ sr_Cyrl_BA{
dictionary{"редослијед сортирања у рјечнику"}
ducet{"подразумијевани Unicode редослијед сортирања"}
phonetic{"фонетски редослијед сортирања"}
- reformed{"реформисани редослијед сортирања"}
search{"претрага опште намјене"}
standard{"стандардни редослијед сортирања"}
unihan{"редослијед сортирања радикалних потеза"}
diff --git a/icu4c/source/data/lang/sr_Latn.txt b/icu4c/source/data/lang/sr_Latn.txt
index d5d4f8728..edee1becf 100644
--- a/icu4c/source/data/lang/sr_Latn.txt
+++ b/icu4c/source/data/lang/sr_Latn.txt
@@ -799,7 +799,6 @@ sr_Latn{
phonebook{"sortiranje kao telefonski imenik"}
phonetic{"fonetski redosled sortiranja"}
pinyin{"pinjin sortiranje"}
- reformed{"reformisani redosled sortiranja"}
search{"pretraga opšte namene"}
searchjl{"Pretraga prema hangul početnom suglasniku"}
standard{"standardni redosled sortiranja"}
diff --git a/icu4c/source/data/lang/sr_Latn_BA.txt b/icu4c/source/data/lang/sr_Latn_BA.txt
index 6ad91aea0..5f9cf67c6 100644
--- a/icu4c/source/data/lang/sr_Latn_BA.txt
+++ b/icu4c/source/data/lang/sr_Latn_BA.txt
@@ -30,7 +30,6 @@ sr_Latn_BA{
dictionary{"redoslijed sortiranja u rječniku"}
ducet{"podrazumijevani Unicode redoslijed sortiranja"}
phonetic{"fonetski redoslijed sortiranja"}
- reformed{"reformisani redoslijed sortiranja"}
search{"pretraga opšte namjene"}
standard{"standardni redoslijed sortiranja"}
unihan{"redoslijed sortiranja radikalnih poteza"}
diff --git a/icu4c/source/data/lang/sv.txt b/icu4c/source/data/lang/sv.txt
index a45bdd649..5ab1019dd 100644
--- a/icu4c/source/data/lang/sv.txt
+++ b/icu4c/source/data/lang/sv.txt
@@ -957,7 +957,6 @@ sv{
phonebook{"telefonkatalogssorteringsordning"}
phonetic{"fonetisk sorteringsordning"}
pinyin{"pinyin-sorteringsordning"}
- reformed{"reformerad sorteringsordning"}
search{"allmän sökning"}
searchjl{"söksorteringsordning för att söka på inledande Hangul-konsonant"}
standard{"normal sorteringsordning"}
diff --git a/icu4c/source/data/lang/sw.txt b/icu4c/source/data/lang/sw.txt
index 5e84b32f1..a3ff39509 100644
--- a/icu4c/source/data/lang/sw.txt
+++ b/icu4c/source/data/lang/sw.txt
@@ -643,7 +643,6 @@ sw{
phonebook{"Mpangilio wa Orodha za Nambari za Simu"}
phonetic{"Utaratibu wa Kupanga Fonetiki"}
pinyin{"Mpangilio wa Kipinyin"}
- reformed{"Mpangilio Uliorekebishwa"}
search{"Utafutaji wa Kijumla"}
searchjl{"Tafuta kwa Konsonanti Halisi ya Hangul"}
standard{"Mpangilio wa Kawaida"}
diff --git a/icu4c/source/data/lang/ta.txt b/icu4c/source/data/lang/ta.txt
index 30de29b6b..d0b9e11e2 100644
--- a/icu4c/source/data/lang/ta.txt
+++ b/icu4c/source/data/lang/ta.txt
@@ -815,7 +815,6 @@ ta{
phonebook{"தொலைபேசி புத்தக வரிசை முறை"}
phonetic{"ஒலியியல் வரிசைப்படுத்தல் முறை"}
pinyin{"பின்யின் வரிசை முறை"}
- reformed{"சீர்திருத்தப்பட்ட வரிசை முறை"}
search{"பொதுப்படையான தேடல்"}
searchjl{"ஹங்குல் முதன்மை மெய்யெழுத்தின்படி தேடு"}
standard{"நிலையான வரிசை முறை"}
diff --git a/icu4c/source/data/lang/te.txt b/icu4c/source/data/lang/te.txt
index e98e25b6b..fe2b2e1f6 100644
--- a/icu4c/source/data/lang/te.txt
+++ b/icu4c/source/data/lang/te.txt
@@ -812,7 +812,6 @@ te{
phonebook{"ఫోన్‌బుక్ క్రమబద్ధీకరణ క్రమం"}
phonetic{"ధ్వని ఉచ్ఛారిత క్రమబద్ధీకరణ క్రమం"}
pinyin{"పిన్‌యిన్ క్రమబద్ధీకరణ క్రమం"}
- reformed{"మళ్ళీ ఆకృతీకరించబడిన క్రమబద్ధీకరణ క్రమం"}
search{"సాధారణ-ప్రయోజన శోధన"}
searchjl{"హాంగుల్ ప్రారంభ హల్లు ద్వారా శోధించు"}
standard{"ప్రామాణిక క్రమబద్ధీకరణ క్రమం"}
diff --git a/icu4c/source/data/lang/th.txt b/icu4c/source/data/lang/th.txt
index d97e4d8fd..dd993da9b 100644
--- a/icu4c/source/data/lang/th.txt
+++ b/icu4c/source/data/lang/th.txt
@@ -936,7 +936,6 @@ th{
phonebook{"ลำดับการจัดเรียงตามสมุดโทรศัพท์"}
phonetic{"ลำดับการจัดเรียงตามการออกเสียง"}
pinyin{"ลำดับการจัดเรียงตามการถอดเสียงภาษาจีน"}
- reformed{"ลำดับการจัดเรียงตามลำดับล่าสุด"}
search{"การค้นหาทั่วไป"}
searchjl{"ค้นหาตามพยัญชนะขึ้นต้นที่เป็นฮันกึล"}
standard{"ลำดับการจัดเรียงแบบมาตรฐาน"}
diff --git a/icu4c/source/data/lang/tr.txt b/icu4c/source/data/lang/tr.txt
index 9a1bf1edf..da9ff7e84 100644
--- a/icu4c/source/data/lang/tr.txt
+++ b/icu4c/source/data/lang/tr.txt
@@ -940,7 +940,6 @@ tr{
phonebook{"Telefon Defteri Sıralama Düzeni"}
phonetic{"Fonetik Sıralama Düzeni"}
pinyin{"Pinyin Sıralama Düzeni"}
- reformed{"Yeni Sıralama Düzeni"}
search{"Genel Amaçlı Arama"}
searchjl{"Hangul İlk Sessiz Harfe Göre Arama"}
standard{"Standart Sıralama Düzeni"}
diff --git a/icu4c/source/data/lang/uk.txt b/icu4c/source/data/lang/uk.txt
index 5f1a4995f..3f995aa2c 100644
--- a/icu4c/source/data/lang/uk.txt
+++ b/icu4c/source/data/lang/uk.txt
@@ -836,7 +836,6 @@ uk{
phonebook{"порядок сортування за телефонним довідником"}
phonetic{"фонетичний порядок сортування"}
pinyin{"порядок сортування піньїнь"}
- reformed{"реформований порядок сортування"}
search{"універсальний пошук"}
searchjl{"пошук за початковою приголосною хангул"}
standard{"стандартний порядок сортування"}
diff --git a/icu4c/source/data/lang/ur.txt b/icu4c/source/data/lang/ur.txt
index bce4e366f..230cbb007 100644
--- a/icu4c/source/data/lang/ur.txt
+++ b/icu4c/source/data/lang/ur.txt
@@ -625,7 +625,6 @@ ur{
phonebook{"فون بک کی چھٹنی کی ترتیب"}
phonetic{"صوتی چھٹائی کی ترتیب"}
pinyin{"پن ین کی چھٹنی کی ترتیب"}
- reformed{"دوبارہ تشکیل شدہ چھٹنی کی ترتیب"}
search{"عمومی تلاش"}
searchjl{"Hangul Initial Consonant کے لحاظ سے تلاش کریں"}
standard{"معیاری چھانٹی کی ترتیب"}
diff --git a/icu4c/source/data/lang/vi.txt b/icu4c/source/data/lang/vi.txt
index e370d4c6c..7d74151f0 100644
--- a/icu4c/source/data/lang/vi.txt
+++ b/icu4c/source/data/lang/vi.txt
@@ -869,7 +869,6 @@ vi{
phonebook{"Thứ tự sắp xếp theo danh bạ điện thoại"}
phonetic{"Thứ tự sắp xếp theo ngữ âm"}
pinyin{"Thứ tự sắp xếp theo bính âm"}
- reformed{"Thứ tự sắp xếp đã sửa đổi"}
search{"Tìm kiếm mục đích chung"}
searchjl{"Tìm kiếm theo Phụ âm Đầu Hangul"}
standard{"Thứ tự sắp xếp chuẩn"}
diff --git a/icu4c/source/data/lang/yrl.txt b/icu4c/source/data/lang/yrl.txt
index 7376e3078..993442494 100644
--- a/icu4c/source/data/lang/yrl.txt
+++ b/icu4c/source/data/lang/yrl.txt
@@ -766,7 +766,6 @@ yrl{
phonebook{"Terefuni sesewara muakaresawa"}
phonetic{"Yupurawakasawa terefuniara mukaresawa"}
pinyin{"Pin-yin mukaresawa"}
- reformed{"Muakaresawa amũrupisawaira"}
search{"Sikaisá purusawa panhérupí"}
searchjl{"Resikai kũsuãti uyupiruwa hangul rupí"}
standard{"Mukaresawa retewa"}
diff --git a/icu4c/source/data/lang/yue.txt b/icu4c/source/data/lang/yue.txt
index 97b3a1fe4..7c9d60b89 100644
--- a/icu4c/source/data/lang/yue.txt
+++ b/icu4c/source/data/lang/yue.txt
@@ -910,7 +910,6 @@ yue{
phonebook{"電話簿排序"}
phonetic{"發音排序"}
pinyin{"拼音排序"}
- reformed{"改良排序"}
search{"一般用途搜尋"}
searchjl{"韓文子音排序"}
standard{"標準排序"}
diff --git a/icu4c/source/data/lang/yue_Hans.txt b/icu4c/source/data/lang/yue_Hans.txt
index 2d9333bfb..944696f1c 100644
--- a/icu4c/source/data/lang/yue_Hans.txt
+++ b/icu4c/source/data/lang/yue_Hans.txt
@@ -911,7 +911,6 @@ yue_Hans{
phonebook{"电话簿排序"}
phonetic{"发音排序"}
pinyin{"拼音排序"}
- reformed{"改良排序"}
search{"一般用途搜寻"}
searchjl{"韩文子音排序"}
standard{"标准排序"}
diff --git a/icu4c/source/data/lang/zh.txt b/icu4c/source/data/lang/zh.txt
index eeeb25772..3aa3a4a21 100644
--- a/icu4c/source/data/lang/zh.txt
+++ b/icu4c/source/data/lang/zh.txt
@@ -892,7 +892,6 @@ zh{
phonebook{"电话簿排序"}
phonetic{"语音排序"}
pinyin{"拼音排序"}
- reformed{"改良排序"}
search{"常规搜索"}
searchjl{"按韩文字开首辅音来搜索"}
standard{"标准排序"}
diff --git a/icu4c/source/data/lang/zh_Hant.txt b/icu4c/source/data/lang/zh_Hant.txt
index bed15e7a2..45b7d7753 100644
--- a/icu4c/source/data/lang/zh_Hant.txt
+++ b/icu4c/source/data/lang/zh_Hant.txt
@@ -928,7 +928,6 @@ zh_Hant{
phonebook{"電話簿排序"}
phonetic{"發音排序"}
pinyin{"拼音排序"}
- reformed{"改良排序"}
search{"一般用途搜尋"}
searchjl{"韓文子音排序"}
standard{"標準排序"}
diff --git a/icu4c/source/data/lang/zh_Hant_HK.txt b/icu4c/source/data/lang/zh_Hant_HK.txt
index c091c360a..00c0d1a40 100644
--- a/icu4c/source/data/lang/zh_Hant_HK.txt
+++ b/icu4c/source/data/lang/zh_Hant_HK.txt
@@ -103,7 +103,6 @@ zh_Hant_HK{
big5han{"繁體中文排序 (Big5)"}
dictionary{"詞典排序"}
gb2312han{"簡體中文排序 (GB2312)"}
- reformed{"改革版排序"}
}
ms{
uksystem{"英制"}
diff --git a/icu4c/source/data/lang/zu.txt b/icu4c/source/data/lang/zu.txt
index e7bcd6a2e..901a78fe3 100644
--- a/icu4c/source/data/lang/zu.txt
+++ b/icu4c/source/data/lang/zu.txt
@@ -736,7 +736,6 @@ zu{
phonebook{"Ukuhlunga kwebhuku lefoni"}
phonetic{"Hlela Ngokwefonetiki"}
pinyin{"Ukuhlunga nge-Pinyin"}
- reformed{"Ukuhlunga okwenziwe kabusha"}
search{"Usesho olujwayelekile"}
searchjl{"Sesha nge-Hangul Ongwaqa Basekuqaleni"}
standard{"I-oda yokuhlunga ejwayelekile"}
diff --git a/icu4c/source/data/locales/LOCALE_DEPS.json b/icu4c/source/data/locales/LOCALE_DEPS.json
index df3d1f620..c30ec800f 100644
--- a/icu4c/source/data/locales/LOCALE_DEPS.json
+++ b/icu4c/source/data/locales/LOCALE_DEPS.json
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1",
+ "cldrVersion": "45",
"aliases": {
"ars": "ar_SA",
"az_AZ": "az_Latn_AZ",
@@ -19,6 +19,7 @@
"iw": "he",
"iw_IL": "he_IL",
"ks_IN": "ks_Arab_IN",
+ "kxv_IN": "kxv_Latn_IN",
"mni_IN": "mni_Beng_IN",
"mo": "ro",
"no_NO": "no",
diff --git a/icu4c/source/data/locales/en_001.txt b/icu4c/source/data/locales/en_001.txt
index 30e3789dc..04cf13528 100644
--- a/icu4c/source/data/locales/en_001.txt
+++ b/icu4c/source/data/locales/en_001.txt
@@ -274,6 +274,7 @@ en_001{
pm{"pm"}
}
narrow{
+ am{"am"}
pm{"pm"}
}
wide{
diff --git a/icu4c/source/data/locales/en_AU.txt b/icu4c/source/data/locales/en_AU.txt
index 924036bca..0fb72a58b 100644
--- a/icu4c/source/data/locales/en_AU.txt
+++ b/icu4c/source/data/locales/en_AU.txt
@@ -161,9 +161,7 @@ en_AU{
noon{"midday"}
}
narrow{
- am{"am"}
noon{"midday"}
- pm{"pm"}
}
wide{
noon{"midday"}
diff --git a/icu4c/source/data/locales/en_CA.txt b/icu4c/source/data/locales/en_CA.txt
index 907e82a6a..358b55eaa 100644
--- a/icu4c/source/data/locales/en_CA.txt
+++ b/icu4c/source/data/locales/en_CA.txt
@@ -244,7 +244,7 @@ en_CA{
}
narrow{
afternoon1{"aft"}
- am{"a.m."}
+ am{"am"}
evening1{"eve"}
midnight{"mid"}
morning1{"mor"}
diff --git a/icu4c/source/data/locales/en_GB.txt b/icu4c/source/data/locales/en_GB.txt
index 86230e076..8a076a018 100644
--- a/icu4c/source/data/locales/en_GB.txt
+++ b/icu4c/source/data/locales/en_GB.txt
@@ -86,14 +86,6 @@ en_GB{
yMMMEEEEd{"EEEE d MMM y"}
yMMMMEEEEd{"EEEE d MMMM y"}
}
- dayPeriod{
- stand-alone{
- narrow{
- am{"am"}
- pm{"pm"}
- }
- }
- }
intervalFormats{
GyMMMEEEEd{
G{"EEEE d MMM y G – EEEE d MMM y G"}
diff --git a/icu4c/source/data/locales/en_IN.txt b/icu4c/source/data/locales/en_IN.txt
index be6063763..98f204fac 100644
--- a/icu4c/source/data/locales/en_IN.txt
+++ b/icu4c/source/data/locales/en_IN.txt
@@ -12,14 +12,6 @@ en_IN{
}
patternsShort{
currencyFormat{
- 1000{
- one{"¤0T"}
- other{"¤0T"}
- }
- 10000{
- one{"¤00T"}
- other{"¤00T"}
- }
100000{
one{"¤0L"}
other{"¤0L"}
@@ -41,12 +33,12 @@ en_IN{
other{"¤000Cr"}
}
10000000000{
- one{"¤0TCr"}
- other{"¤0TCr"}
+ one{"¤0KCr"}
+ other{"¤0KCr"}
}
100000000000{
- one{"¤00TCr"}
- other{"¤00TCr"}
+ one{"¤00KCr"}
+ other{"¤00KCr"}
}
1000000000000{
one{"¤0LCr"}
@@ -62,14 +54,6 @@ en_IN{
}
}
currencyFormat%alphaNextToNumber{
- 1000{
- one{"¤ 0T"}
- other{"¤ 0T"}
- }
- 10000{
- one{"¤ 00T"}
- other{"¤ 00T"}
- }
100000{
one{"¤ 0L"}
other{"¤ 0L"}
@@ -91,12 +75,12 @@ en_IN{
other{"¤ 000Cr"}
}
10000000000{
- one{"¤ 0TCr"}
- other{"¤ 0TCr"}
+ one{"¤ 0KCr"}
+ other{"¤ 0KCr"}
}
100000000000{
- one{"¤ 00TCr"}
- other{"¤ 00TCr"}
+ one{"¤ 00KCr"}
+ other{"¤ 00KCr"}
}
1000000000000{
one{"¤ 0LCr"}
@@ -113,12 +97,12 @@ en_IN{
}
decimalFormat{
1000{
- one{"0T"}
- other{"0T"}
+ one{"0K"}
+ other{"0K"}
}
10000{
- one{"00T"}
- other{"00T"}
+ one{"00K"}
+ other{"00K"}
}
100000{
one{"0L"}
@@ -141,12 +125,12 @@ en_IN{
other{"000Cr"}
}
10000000000{
- one{"0TCr"}
- other{"0TCr"}
+ one{"0KCr"}
+ other{"0KCr"}
}
100000000000{
- one{"00TCr"}
- other{"00TCr"}
+ one{"00KCr"}
+ other{"00KCr"}
}
1000000000000{
one{"0LCr"}
@@ -314,14 +298,6 @@ en_IN{
yMMMMEEEEd{"EEEE d MMMM, y"}
yMd{"d/M/y"}
}
- dayPeriod{
- stand-alone{
- narrow{
- am{"am"}
- pm{"pm"}
- }
- }
- }
intervalFormats{
GyMMMEEEEd{
G{"EEEE d MMM y G – EEEE d MMM y G"}
diff --git a/icu4c/source/data/locales/it.txt b/icu4c/source/data/locales/it.txt
index d216893cf..ff21d547b 100644
--- a/icu4c/source/data/locales/it.txt
+++ b/icu4c/source/data/locales/it.txt
@@ -81,16 +81,16 @@ it{
other{"0"}
}
1000000{
- one{"0 Mio ¤"}
- other{"0 Mio ¤"}
+ one{"0 Mln ¤"}
+ other{"0 Mln ¤"}
}
10000000{
- one{"00 Mio ¤"}
- other{"00 Mio ¤"}
+ one{"00 Mln ¤"}
+ other{"00 Mln ¤"}
}
100000000{
- one{"000 Mio ¤"}
- other{"000 Mio ¤"}
+ one{"000 Mln ¤"}
+ other{"000 Mln ¤"}
}
1000000000{
one{"0 Mrd ¤"}
@@ -131,16 +131,16 @@ it{
other{"0"}
}
1000000{
- one{"0 Mio"}
- other{"0 Mio"}
+ one{"0 Mln"}
+ other{"0 Mln"}
}
10000000{
- one{"00 Mio"}
- other{"00 Mio"}
+ one{"00 Mln"}
+ other{"00 Mln"}
}
100000000{
- one{"000 Mio"}
- other{"000 Mio"}
+ one{"000 Mln"}
+ other{"000 Mln"}
}
1000000000{
one{"0 Mrd"}
diff --git a/icu4c/source/data/locales/ks.txt b/icu4c/source/data/locales/ks.txt
index b83d15a01..6f81a78cd 100644
--- a/icu4c/source/data/locales/ks.txt
+++ b/icu4c/source/data/locales/ks.txt
@@ -5,7 +5,7 @@ ks{
AuxExemplarCharacters{"[\u200E\u200F َ ُ ِ ٔ ٕ ٟ ٖ ٗ ئ]"}
ExemplarCharacters{
"[ء آ أ ٲ ؤ ا ب پ ت ث ٹ ج چ ح خ د ذ ڈ ر ز ڑ ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں"
- " ھ ہ و ۄ ۆ ی ۍ ؠ ے]"
+ " ھ ہ و ۄ ۆ ی ؠ ے]"
}
ExemplarCharactersNumbers{"[\u200E \\- ‑ , ٫ ٬ . % ‰ + 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"}
ExemplarCharactersPunctuation{"[\\- ‐‑ – — , ; \\: ! ? . … '‘’ \u0022“” ( ) \\[ \\] § @ * / \\& # † ‡ ′ ″]"}
@@ -53,8 +53,8 @@ ks{
"{1}, {0}",
}
DateTimePatterns%atTime{
- "{0} پٮ۪ٹھۍ {1}",
- "{0} پٮ۪ٹھۍ {1}",
+ "{0} پٮ۪ٹھؠ {1}",
+ "{0} پٮ۪ٹھؠ {1}",
"{1}, {0}",
"{1}, {0}",
}
@@ -213,8 +213,8 @@ ks{
"{1}, {0}",
}
DateTimePatterns%atTime{
- "{0} پٮ۪ٹھۍ {1}",
- "{0} پٮ۪ٹھۍ {1}",
+ "{0} پٮ۪ٹھؠ {1}",
+ "{0} پٮ۪ٹھؠ {1}",
"{1}, {0}",
"{1}, {0}",
}
@@ -547,9 +547,9 @@ ks{
month{
dn{"رؠتھ"}
relative{
- "-1"{"پٔتِم ریتھۍ"}
- "0"{"یٕہ ریتھۍ"}
- "1"{"نو ریتھۍ"}
+ "-1"{"پٔتِم ریتھؠ"}
+ "0"{"یٕہ ریتھؠ"}
+ "1"{"نو ریتھؠ"}
}
}
quarter{
diff --git a/icu4c/source/data/locales/kxv_IN.txt b/icu4c/source/data/locales/kxv_IN.txt
new file mode 100644
index 000000000..e92770c6f
--- /dev/null
+++ b/icu4c/source/data/locales/kxv_IN.txt
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_IN{
+ "%%ALIAS"{"kxv_Latn_IN"}
+}
diff --git a/icu4c/source/data/locales/lv.txt b/icu4c/source/data/locales/lv.txt
index 4d287e641..18e04d9ac 100644
--- a/icu4c/source/data/locales/lv.txt
+++ b/icu4c/source/data/locales/lv.txt
@@ -8,8 +8,8 @@ lv{
word-initial{"…{0}"}
word-medial{"{0}…{1}"}
}
- ExemplarCharacters{"[aā b c č d eē f g ģ h iī j k ķ l ļ m n ņ o p r s š t uū v z ž]"}
- ExemplarCharactersIndex{"[AĀ B C Č D EĒ F G Ģ H IĪY J K Ķ L Ļ M N Ņ O P Q R S Š T UŪ V W X Z Ž]"}
+ ExemplarCharacters{"[a ā b c č d e ē f g ģ h i ī j k ķ l ļ m n ņ o p r s š t u ū v z ž]"}
+ ExemplarCharactersIndex{"[A Ā B C Č D E Ē F G Ģ H I Y Ī J K Ķ L Ļ M N Ņ O P Q R S Š T U Ū V W X Z Ž]"}
ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
ExemplarCharactersPunctuation{
"[\\- ‐‑ – — , ; \\: ! ? . … '‘’‚ \u0022“”„ ( ) \\[ \\] § @ * / \\& # † ‡ ′ ″"
diff --git a/icu4c/source/data/locales/root.txt b/icu4c/source/data/locales/root.txt
index 79f4e8fb4..adc7e4df2 100644
--- a/icu4c/source/data/locales/root.txt
+++ b/icu4c/source/data/locales/root.txt
@@ -1119,7 +1119,7 @@ root{
symbols:alias{"/LOCALE/NumberElements/latn/symbols"}
}
}
- Version{"44.1"}
+ Version{"45"}
calendar{
buddhist{
AmPmMarkers:alias{"/LOCALE/calendar/gregorian/AmPmMarkers"}
diff --git a/icu4c/source/data/locales/ta.txt b/icu4c/source/data/locales/ta.txt
index 60e9e0116..dc8f54301 100644
--- a/icu4c/source/data/locales/ta.txt
+++ b/icu4c/source/data/locales/ta.txt
@@ -215,10 +215,10 @@ ta{
calendar{
chinese{
DateTimePatterns{
- "a h:mm:ss zzzz",
- "a h:mm:ss z",
- "a h:mm:ss",
- "a h:mm",
+ "h:mm:ss a zzzz",
+ "h:mm:ss a z",
+ "h:mm:ss a",
+ "h:mm a",
"U MMMM d, EEEE",
"U, d MMMM",
"U, d MMM",
@@ -363,10 +363,10 @@ ta{
}
generic{
DateTimePatterns{
- "a h:mm:ss zzzz",
- "a h:mm:ss z",
- "a h:mm:ss",
- "a h:mm",
+ "h:mm:ss a zzzz",
+ "h:mm:ss a z",
+ "h:mm:ss a",
+ "h:mm a",
"EEEE, d MMMM, y G",
"d MMMM, y G",
"d MMM, y G",
@@ -400,8 +400,8 @@ ta{
EBhm{"E B h:mm"}
EBhms{"E B h:mm:ss"}
Ed{"d E"}
- Ehm{"E a h:mm"}
- Ehms{"E a h:mm:ss"}
+ Ehm{"E h:mm a"}
+ Ehms{"E h:mm:ss a"}
Gy{"y G"}
GyMMM{"MMM y G"}
GyMMMEd{"E, d MMM, y G"}
@@ -413,9 +413,9 @@ ta{
MMMd{"d MMM"}
MMdd{"dd-MM"}
Md{"d/M"}
- h{"a h"}
- hm{"a h:mm"}
- hms{"a h:mm:ss"}
+ h{"h a"}
+ hm{"h:mm a"}
+ hms{"h:mm:ss a"}
y{"y G"}
yyyy{"y G"}
yyyyM{"M/y G"}
@@ -457,22 +457,22 @@ ta{
}
fallback{"{0} – {1}"}
h{
- a{"a h – a h"}
- h{"a h–h"}
+ a{"h a – h a"}
+ h{"h–h a"}
}
hm{
- a{"a h:mm – a h:mm"}
- h{"a h:mm–h:mm"}
- m{"a h:mm–h:mm"}
+ a{"h:mm a – h:mm a"}
+ h{"h:mm–h:mm a"}
+ m{"h:mm–h:mm a"}
}
hmv{
- a{"a h:mm – a h:mm v"}
- h{"a h:mm–h:mm v"}
- m{"a h:mm–h:mm v"}
+ a{"h:mm – h:mm a v"}
+ h{"h:mm–h:mm a v"}
+ m{"h:mm–h:mm a v"}
}
hv{
- a{"a h – a h v"}
- h{"a h–h v"}
+ a{"h a – h a v"}
+ h{"h–h a v"}
}
y{
y{"y – y G"}
@@ -512,19 +512,11 @@ ta{
}
}
gregorian{
- AmPmMarkersAbbr{
- "AM",
- "PM",
- }
- AmPmMarkersNarrow{
- "மு.ப",
- "பி.ப",
- }
DateTimePatterns{
- "a h:mm:ss zzzz",
- "a h:mm:ss z",
- "a h:mm:ss",
- "a h:mm",
+ "h:mm:ss a zzzz",
+ "h:mm:ss a z",
+ "h:mm:ss a",
+ "h:mm a",
"EEEE, d MMMM, y",
"d MMMM, y",
"d MMM, y",
@@ -558,8 +550,8 @@ ta{
EBhm{"E B h:mm"}
EBhms{"E B h:mm:ss"}
Ed{"d E"}
- Ehm{"E a h:mm"}
- Ehms{"E a h:mm:ss"}
+ Ehm{"E h:mm a"}
+ Ehms{"E h:mm:ss a"}
GyMd{"d/M/y G"}
MEd{"dd-MM, E"}
MMMMW{
@@ -569,11 +561,11 @@ ta{
MMMMd{"d MMMM"}
MMdd{"dd-MM"}
Md{"d/M"}
- h{"a h"}
- hm{"a h:mm"}
- hms{"a h:mm:ss"}
- hmsv{"a h:mm:ss v"}
- hmv{"a h:mm v"}
+ h{"h a"}
+ hm{"h:mm a"}
+ hms{"h:mm:ss a"}
+ hmsv{"h:mm:ss a v"}
+ hmv{"h:mm a v"}
yM{"M/y"}
yMEd{"E, d/M/y"}
yMM{"MM-y"}
@@ -657,14 +649,9 @@ ta{
}
}
stand-alone{
- abbreviated{
- am{"முற்பகல்"}
- pm{"PM"}
- }
narrow{
afternoon1{"மதி."}
afternoon2{"பிற்."}
- am{"மு.ப"}
evening1{"மா."}
evening2{"அந்தி மா."}
midnight{"நள்."}
@@ -672,11 +659,6 @@ ta{
morning2{"கா."}
night1{"இ."}
noon{"நண்."}
- pm{"பி.ப"}
- }
- wide{
- am{"முற்பகல்"}
- pm{"PM"}
}
}
}
@@ -733,22 +715,22 @@ ta{
}
fallback{"{0} – {1}"}
h{
- a{"a h – a h"}
- h{"a h–h"}
+ a{"h a – h a"}
+ h{"h–h a"}
}
hm{
- a{"a h:mm – a h:mm"}
- h{"a h:mm–h:mm"}
- m{"a h:mm–h:mm"}
+ a{"h:mm a – h:mm a"}
+ h{"h:mm–h:mm a"}
+ m{"h:mm–h:mm a"}
}
hmv{
- a{"a h:mm – a h:mm v"}
- h{"a h:mm – h:mm v"}
- m{"a h:mm – h:mm v"}
+ a{"h:mm a – h:mm a v"}
+ h{"h:mm – h:mm a v"}
+ m{"h:mm – h:mm a v"}
}
hv{
- a{"a h – a h v"}
- h{"a h – h v"}
+ a{"h a – h a v"}
+ h{"h – h a v"}
}
y{
y{"y – y"}
diff --git a/icu4c/source/data/locales/uk.txt b/icu4c/source/data/locales/uk.txt
index 7a58a9fc4..26248e62f 100644
--- a/icu4c/source/data/locales/uk.txt
+++ b/icu4c/source/data/locales/uk.txt
@@ -392,7 +392,7 @@ uk{
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
- "EEEE, d MMMM y 'р'. G",
+ "cccc, d MMMM y 'р'. G",
"d MMMM y 'р'. G",
"d MMM y 'р'. G",
"dd.MM.yy GGGGG",
@@ -572,7 +572,7 @@ uk{
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
- "EEEE, d MMMM y 'р'.",
+ "cccc, d MMMM y 'р'.",
"d MMMM y 'р'.",
"d MMM y 'р'.",
"dd.MM.yy",
diff --git a/icu4c/source/data/makedata.mak b/icu4c/source/data/makedata.mak
index 78245c2bd..2d3fb4110 100644
--- a/icu4c/source/data/makedata.mak
+++ b/icu4c/source/data/makedata.mak
@@ -12,11 +12,11 @@
##############################################################################
# Keep the following in sync with the version - see common/unicode/uvernum.h
-U_ICUDATA_NAME=icudt74
+U_ICUDATA_NAME=icudt75
##############################################################################
!IF "$(UWP)" == "UWP"
# Optionally change the name of the data file for the UWP version.
-U_ICUDATA_NAME=icudt74
+U_ICUDATA_NAME=icudt75
!ENDIF
U_ICUDATA_ENDIAN_SUFFIX=l
UNICODE_VERSION=15.1
diff --git a/icu4c/source/data/misc/icuver.txt b/icu4c/source/data/misc/icuver.txt
index b12bd03c2..0b7c406a3 100644
--- a/icu4c/source/data/misc/icuver.txt
+++ b/icu4c/source/data/misc/icuver.txt
@@ -8,7 +8,7 @@
// *
// ***************************************************************************
icuver:table(nofallback){
- CLDRVersion{"44.1"}
- DataVersion{"74.2.0.0"}
- ICUVersion{"74.2.0.0"}
+ CLDRVersion{"45"}
+ DataVersion{"75.1.0.0"}
+ ICUVersion{"75.1.0.0"}
}
diff --git a/icu4c/source/data/misc/keyTypeData.txt b/icu4c/source/data/misc/keyTypeData.txt
index 3a425a03f..7574a8b32 100644
--- a/icu4c/source/data/misc/keyTypeData.txt
+++ b/icu4c/source/data/misc/keyTypeData.txt
@@ -74,6 +74,7 @@ keyTypeData:table(nofallback){
deprecated{
co{
direct{"true"}
+ reformed{"true"}
}
}
}
@@ -445,6 +446,7 @@ keyTypeData:table(nofallback){
xbc{""}
xbd{""}
xcd{""}
+ xcg{""}
xdr{""}
xeu{""}
xfo{""}
diff --git a/icu4c/source/data/misc/langInfo.txt b/icu4c/source/data/misc/langInfo.txt
index 8e36457a6..95fc82b42 100644
--- a/icu4c/source/data/misc/langInfo.txt
+++ b/icu4c/source/data/misc/langInfo.txt
@@ -8,6 +8,7 @@ langInfo:table(nofallback){
"adp","dz",
"agp","apf",
"ais","ami",
+ "ajp","apc",
"ajt","aeb",
"aju","jrb",
"alb","sq",
@@ -106,6 +107,7 @@ langInfo:table(nofallback){
"kgc","tdf",
"kgd","ncq",
"kgh","kml",
+ "kgm","plu",
"khk","mn",
"kmr","ku",
"knc","kr",
@@ -154,6 +156,7 @@ langInfo:table(nofallback){
"nlr","nrk",
"nns","nbr",
"nnx","ngv",
+ "nom","cbr",
"noo","dtd",
"npi","ne",
"nts","pij",
@@ -168,10 +171,12 @@ langInfo:table(nofallback){
"pes","fa",
"plt","mg",
"pmc","huw",
+ "pmk","crr",
"pmu","phr",
"pnb","lah",
"ppa","bfy",
"ppr","lcq",
+ "prp","gu",
"pry","prt",
"puz","pub",
"quz","qu",
@@ -192,6 +197,7 @@ langInfo:table(nofallback){
"sul","sgd",
"sum","ulw",
"swh","sw",
+ "szd","umi",
"tdu","dtp",
"tgg","bjp",
"thc","tpo",
@@ -203,8 +209,10 @@ langInfo:table(nofallback){
"tkk","twm",
"tl","fil",
"tlw","weo",
+ "tmk","tdg",
"tmp","tyj",
"tne","kak",
+ "tpw","tpn",
"tsf","taj",
"ttq","tmh",
"tw","ak",
@@ -223,6 +231,7 @@ langInfo:table(nofallback){
"xrq","dmw",
"xsj","suj",
"xsl","den",
+ "xss","zko",
"ybd","rki",
"ydd","yi",
"yen","ynq",
@@ -233,6 +242,7 @@ langInfo:table(nofallback){
"yuu","yug",
"zai","zap",
"zir","scv",
+ "zkb","kjh",
"zsm","ms",
"zyb","za",
}
@@ -430,7 +440,7 @@ langInfo:table(nofallback){
424789550,
421307117,
430620821,
- 41734812,
+ 47217054,
325323497,
34343706,
423443087,
@@ -555,7 +565,6 @@ langInfo:table(nofallback){
432872108,
421752671,
420869150,
- 47217054,
37671528,
423469493,
421738847,
@@ -3207,7 +3216,7 @@ langInfo:table(nofallback){
176558268,
429043923,
430619292,
- 429045381,
+ 429051353,
421941276,
429047568,
421745904,
@@ -3502,7 +3511,6 @@ langInfo:table(nofallback){
433286271,
421752762,
41172277,
- 423427302,
433643508,
423999567,
423468855,
@@ -4976,7 +4984,6 @@ langInfo:table(nofallback){
175396461,
427468773,
429949560,
- 422412429,
539912719,
423477498,
421628025,
@@ -5445,14 +5452,12 @@ langInfo:table(nofallback){
421737296,
429021464,
421739483,
- 423433679,
39723570,
476935748,
427471610,
432452138,
424285880,
432455054,
- 429051353,
424013234,
424013963,
432991598,
@@ -5539,7 +5544,6 @@ langInfo:table(nofallback){
426603533,
423475394,
429125873,
- 259287727,
422415428,
429049328,
642194478,
@@ -5603,6 +5607,7 @@ langInfo:table(nofallback){
297845475,
476944847,
426613928,
+ 423430412,
432053753,
426605936,
422403117,
@@ -5775,6 +5780,7 @@ langInfo:table(nofallback){
423476854,
430625428,
144677951,
+ 423443347,
426597757,
421739701,
424872943,
@@ -6050,7 +6056,6 @@ langInfo:table(nofallback){
424006676,
429951671,
421745318,
- 43310253,
426943088,
421748963,
423482525,
@@ -6288,7 +6293,7 @@ langInfo:table(nofallback){
432973754,
421735490,
432975212,
- 432975941,
+ 432979237,
421621037,
426132089,
421744238,
@@ -6553,7 +6558,6 @@ langInfo:table(nofallback){
422369370,
431030619,
421740972,
- 176559168,
421742430,
427313448,
421743888,
@@ -6730,6 +6734,7 @@ langInfo:table(nofallback){
422677953,
420868602,
421737570,
+ 423433224,
431032320,
431525124,
421743402,
@@ -6853,7 +6858,6 @@ langInfo:table(nofallback){
427423528,
430613632,
430615819,
- 432979237,
423435898,
426605590,
429047011,
@@ -7653,7 +7657,7 @@ langInfo:table(nofallback){
423477616,
433516675,
176564437,
- 145746671,
+ 145743541,
422536477,
432065965,
432442156,
@@ -7953,8 +7957,6 @@ langInfo:table(nofallback){
433658562,
423445272,
421734363,
- 145734064,
- 145743541,
429047691,
430625976,
145751560,
@@ -8050,7 +8052,6 @@ langInfo:table(nofallback){
432458925,
432459654,
420474192,
- 423427371,
423471840,
40768480,
429951921,
@@ -8108,2281 +8109,2280 @@ langInfo:table(nofallback){
"ZR","CD",
}
trie:bin{
-001a6df0414a74dc6c77d04977a8de78
-b0fe79ba897a00176fc1ab759de15ae1
-d7bee828f5d91e84022a3e42d866e148
-11616e01e2abeff4abea0b4d26540f54
-d8668d552a5610ceabed10d3abec4dd8
-7eae502a5310d2abe802c1abe7c6abe5
-c8abe647f0669b473248d87e8f4910c4
-abe301c2abebc6abe17536795c7a01e1
-af4bead91e8f04e1d91e85e8d91e86ed
-d91e87eed91e88f9d91e8904e2d7bee7
-d91e8aea30eed91e8df0d91e8e012ad9
-1e8b4812616ee9d91e8c725f729673a2
-49740bf11af50cf5d91e81f8d91e82f9
-d91e83f1d91e7ef3d91e7ff4d91e80ed
-0cedd91e7beed91e7cf0d91e7de5d91e
-78e7d91e79ecd91e7a03eed91e71efd9
-1e72f0d91e73f3d91e7403e1d91e75ed
-d837c5f2d91e76f5d91e776f44707e71
-10e5012ad91e6f4c126174eed91e7006
-ef10efd91e51f1d91e52f2d91e53f3d9
-1e54e3d91e4fe8d91e50edd91daf0019
-ee3af41ef710f7d91e6bf8d91e6cf9d9
-1e6dfad91e6ef4d91e68f5d91e69f6d9
-1e6af10cf1d91e65f2d91e66f3d91e67
-eed91e62efd91e63f0d91e64e71eea10
-ead91e5eebd91e5fecd91e60edd91e61
-e7d91e5be8d91e5ce9d91e5de40ce4d9
-1e58e5d91e59e6d91e5ae1d91e55e2d9
-1e56e3d91e5768c1336cbe6c686da241
-6e04e1d91e49e538e7d91e4cebd91e4d
-f3d91e4e012ad91e4a41127261e2d91e
-4b04e1d91e29ea38edd91e2ceed91e2d
-f1d91e2e012ad91e2a4c126174eed91e
-2b0019ee3af41ef710f7d91e45f8d91e
-46f9d91e47fad91e48f4d91e42f5d91e
-43f6d91e44f10cf1d91e3ff2d91e40f3
-d91e41eed91e3cefd91e3df0d91e3ee7
-1eea10ead91e38ebd91e39ecd91e3aed
-d91e3be7d91e35e8d91e36e9d91e37e4
-0ce4d91e32e5d91e33e6d91e34e1d91e
-2fe2d91e30e3d91e31686a69a24c6b07
-f00ff0d91e26f4d7b8f5d91e27fad91e
-28e1d91e23e2d91e24e4b957efd91e25
-04e43ae9d91e18ee48f7d91e1bf8d7dc
-012ad91e164c126174eed91e17012ad9
-1e194812616ee9d91e1a07ee0feed91e
-20f2cf0af7d91e21fad91e22e1d91e1c
-ebd91e1decd91e1eedd91e1f643f645a
-65606705ed0cedd91e13eed91e14f2d9
-1e15e1d91e11e2d91e12e8d7ea10ead9
-1e0b03e1d91e0ce7d91e0de8d91e0eee
-012ad91e0f41127261e2d91e10613a62
-a2906301e1d91e09e8d91e0a0017ef4c
-f530f817f8d91dfff928fad91e02012a
-d91e0045127468e9d91e01f530f6d91d
-fdf7d91dfe012ad91dfb41127261e2d9
-1dfcf20cf2d91df8f3d91df9f4d91dfa
-efd91df6f0d91df2f1d91df7e71aea0c
-ead91df3ebd91df4edd91df5e7d91df0
-e8d91df1e9d91df2e40ce4d91dede5d9
-1deee6d91defe1d91deae2d91debe3d9
-1dec05f40cf4d91e06f5d91e07f7d91e
-08e1d91e03e3d91e04e5d91e0500186d
-c1f674a4782c7834793ae1d91b85efd9
-1c0f10f7d91c4f05ee0ceed91c53f2d9
-1c54f9d91c55e2d91c50e9d91c51edd9
-1c52745075967704e1d91c4ae2d91c4b
-efd91c4cf2d91c4df7d91c4e05eb16eb
-d91c3aedd91c3bf7012ad91c3c421275
-67e9d91c3de6d91c37e8d91c38e9d91c
-390bf21af60cf6d91c47f8d91c48f9d9
-1c49f2d91c44f4d91c45f5d91c46ec0c
-ecd91c41edd91c42eed91c43e1d91c3e
-e2d91c3fe4d91c407072706a72707307
-f210f2d91c33f3d91c34f5d91c35f6d9
-1c36e1d91c30e7d7aae9d91c31ebd91c
-3210e3d91c200ff022f610f6d91c2cf7
-d91c2df8d91c2efad91c2ff0d91c28f2
-d91c29f3d91c2af5d91c2beb0febd91c
-25ecd91c26edd91c27efd7f9e2d91c21
-e7d91c22e8d91c23e9d91c246da2526e
-a2996f0ee922ef10efd91c1cf2d91c1d
-f3d91c1ef7d91c1fe9d91c18ebd91c19
-edd91c1aeed91c1be41be4d91c13e5d9
-1c14e628e7d91c17012ad91c15411272
-61e2d91c16e1d91c10e2d91c11e3d91c
-120ded29f31bf3d91bfef4d91bfff728
-f8d91c02012ad91c0041127261e2d91c
-01edd91bfbeed91bfcefd91bfde410e4
-d91bf7e5d91bf8e8d91bf9e9d91bfae1
-d91bf4e2d91bf5e3d91bf60ded1cf00f
-f0d91c0cf5d91c0df7d91c0ef9b1e4ed
-d91c0aeec327efd91c0be510e5d91c06
-e7d91c07e9d91c08ebd91c09e2d91c03
-e3d91c04e4d91c0567c0e36a5b6a966b
-a2416c0bf21af60cf6d91bf1f7d91bf2
-f8d91bf3f2d91beef3d91beff5d91bf0
-e90ce9d91bebedd91becefd91bede1d9
-1be8e7d91be9e8d91bea01e1d91be1e9
-d91be204e1d91be3e4d91be4f2d91be5
-f7d91be6f9d91be767a24f68a26f6900
-10eb25f213f2d91bddf5d91bdef6d91b
-dff7c7f3f9d91be0ebd91bd9ecd91bda
-edd91bdbeed91bdce710e7d91bd5e8d9
-1bd6e9d91bd7ead91bd8e2d91bd1e3d9
-1bd2e5d91bd3e6d91bd407ef10efd91b
-caf5d91bcbf7d91bc7f9d91bcce1d91b
-c6e2d91bc7e7d91bc8e9d91bc903e1d9
-1bcde7d91bceebd91bcff5d91bd06466
-6430656a6610e7d91bc506eb10ebd91b
-b5f4d91bb6f5d91bb7f9d91bb8e4d91b
-b2e7d91bb3ead91bb40def1df310f3d9
-1bc1f4d91bc2f5d91bc3f7d91bc4efd3
-9ff0d91bbff2d91bc0e80fe8d91bbce9
-d91bbdecadcaedd91bbee3d91bb9e4d9
-1bbae7d91bbb613a62a27a6301e1d91b
-b0e9d91bb10017ee36f51af80cf8d91b
-9bf9d91b9cfad91b9df5d91b98f6d91b
-99f7d91b9af20cf2d91b95f3d91b96f4
-d91b97eed91b92f0d91b93f1d91b94e7
-1aea0cead91b8fecd91b90edd91b91e7
-d91b8ce8d91b8de9d91b8ee40ce4d91b
-89e5d91b8ae6d91b8be1d91b86e2d91b
-87e3d91b880fec36f210f2d91bacf4d9
-1badf6d91baef7d91bafec38edd91ba9
-f0d91baaf1d91bab022ad91ba6413043
-127972ecd91ba8127261e2d91ba7e810
-e8d91ba2e9d91ba3ead91ba4ebd91ba5
-e1d91b9ee2d91b9fe5d91ba0e6d91ba1
-00186ec29475c0d57847783079567a90
-e8d91c8504e2d91d28ebd91d29edd91d
-2af2d91d2bf4d91d2c06eb10ebd91d30
-ecd91d31f4d91d32f9d91d33e1d91d2d
-e2d91d2eead91d2f01e8d91d34f0d91d
-35757e76a2727709ec14ecd91d23efd9
-1d24f2d91d25f4d91d26f7d91d27e1d9
-1d1ee4d91d1fe5d91d20ead91d21ebd9
-1d2208ed1fed40eed91d15efd91d16f4
-d91d17f5d91d18012ad91d1349127461
-ecd91d14e238e4d91d10ead91d11ecd9
-1d12022ad91d0d4b304d126c79edd91d
-0f126e64e1d91d0e04e5d91d19e9d91d
-1aeed91d1befd91d1cf3d91d1d72c0cd
-72a25473a287740011ed26f414f4d91d
-08f5d91d09f6d91d0af7d91d0bf9d91d
-0cedd91d04eed91d05f0d91d06f3d91d
-07e514e5d91cffe8d91d00e9d91d01ea
-d91d02ecd91d03e1d91cfbe2d91cfce3
-d91cfde4d91cfe0bed19f20cf2d91cec
-f5d91cedf7d91ceeedd91ceaeed91ceb
-f1af7ce50ce5d91ce7e7d91ce8e9d91c
-e9e1d91ce4e2d91ce5e4d91ce60eed22
-f210f2d91cf7f3d91cf8f5d91cf9f9d9
-1cfaedd91cf3eed91cf4f0d91cf5f1d9
-1cf6e80ee8d91cf1e9d91cf2ead161ec
-af18e1d7e2e2d91cefe5d91cf06ea260
-6fa29f700014ec2ff219f70cf7d91ce1
-f8d91ce2fad91ce3f2d7e0f4d91cdff6
-d91ce0ecd91cdaedd91cdbeed91cdcef
-d91cddf1d91cdee714e7d91cd5e8d91c
-d6e9d91cd7ead91cd8ebd91cd9e1d91c
-d1e2d91cd2e4d91cd3e5bb7ae6d91cd4
-0cee26f418f4c333f5d91cc1f9c54efa
-012ad91cc241127261e2d91cc3eed91c
-bef1d91cbff2d91cc0ea0cead91cbbeb
-d91cbcedd91cbde1d7dae2d91cb9e9d9
-1cba0aed30f00cf0d91ccef2d91ccff7
-d91cd0ed2cee42efd91ccd012ad91cc9
-45127468e9d91cca012ad91ccb421272
-61e9d91ccce3d91cc4e4d91cc5e7d91c
-c6e9d91cc7ebd91cc868c1076bc0d06b
-a2606ca2bb6d0014ef2ff51af80cf8d9
-1cb6f9d91cb7fad91cb8f5d91cb3f6d9
-1cb4f7d91cb5efd91caff0d91cb0f1d9
-1cb1f2d7d2f4d91cb2e713e7d91cabe8
-d91cacead91cadedd91caeeed7cfe1d9
-1ca6e2d91ca7e3d91ca8e4d91ca9e6d9
-1caa0014f030f51af80cf8d91ca1f9d9
-1ca2fad91ca3f5d91c9ef6d91c9ff7d9
-1ca0f0d91c99f1d91c9af2d91c9bf3d9
-1c9cf4d91c9de714e7d91c95e8d91b9a
-ead91c96ecd91c97eed91c98e1d91c90
-e2d91c91e3d91c92e4d91c93e5d91c94
-03e1d91ca4e3d7cbe4d7ccf9d91ca568
-38694e6a01e2d91c8ef4d91c8f02e5d9
-1c86edd91c87f6d91c8805f20cf2d91c
-8bf3d91c8cf9d91c8de195e9d91c89ee
-d91c8a64586464658a6706e910e9d91c
-81edd91c82f5d91c83f7d91c84e2d91c
-7ee4d91c7fe7d91c8004e1d91c72ebd9
-1c73efd91c74f1d91c75f9d91c7606f2
-10f2d91c7af3d91c7bf4d91c7cf5d91c
-7de4d91c77e7d91c78edd91c79613c62
-a2526302e8ad40efd799f2d7980fef22
-f510f5d91c62f6d91c63f7d91c64f9d9
-1c65efd91c5ef2d91c5ff3d91c60f4d9
-1c61eb10ebd91c5aecd91c5bedd91c5c
-eed91c5de1d91c56e2d91c57e9d91c58
-ead91c590cea1ef010f0d91c6ef2d91c
-6ff7d91c70f9d91c71ead91c6bedd91c
-6ceed91c6de50ce5d91c68e7d91c69e9
-d91c6ae1ab97e2d91c66e4d91c670016
-6ec18b76727912792ee9b7b3efd91da7
-01f2d91de8f5d91de9765c776a7805ed
-0cedd91de5f5d91de6f9d91de7e1d91d
-e2e7d91de3ecd91de401e1d91dd7f4d9
-1dd806f126f134f2d91ddef542f7d91d
-e1012ad91ddc59126969e9d91ddd012a
-d91ddf59126969e9d91de0e1d91dd9e7
-d91ddaeed91ddb739673a26f74a28775
-0013ed2af414f4d91dd3f5d91dcaf7d9
-1dd4f8d91dd5fad91dd6edd91dceeed9
-1dcff0d91dd0f1d91dd1f2d91dd2e614
-e6d91dc9e7d91dcae9d91dcbead91dcc
-ecd91dcde1d91dc3e2d91dc4e3d91dc5
-e4d91dc6e5012a304812616ef3d91dc8
-012ad91dc74310ced91dc805f20cf2d9
-1dbef3d91dbff9d91dc0e4d91dbbeed9
-1dbcf0d91dbd01f7d91dc1f9d91dc26e
-7e6fa24f7209ed14edd91d83efd91db7
-f3d91db8f7d91db9f9d91dbae1d91db2
-e2d91db3e5d91db4ebd91db5ecd91db6
-07ec10ecd91da4f1d91d69f3d91da5f5
-d91da6e1d91da0e4d91da1e7d91da2eb
-d91da309ed14edd91dadeed91daef3d9
-1daff4d91db0f9d91db1e2d91da8e7d9
-1da9e9d91daaebd91dabecd91dac67c0
-f16b906b926ca2646d09ed13edd91d9c
-eed91d9defd91d9ef0d91d9ff4c3b8e2
-d91d96e5d91d97e7d91d98eb28ecd91d
-9b012ad91d9941127261e2d91d9a07ed
-10edd91d89efd91d8af2d91d8bf9d91d
-8ce138e7d91d86e9d91d87ebd91d8801
-2ad91d8441127261e2d91d8508e914e9
-d91d91ecd91d92f2d91d93f5d91d94f9
-d91d95e1d91d8de2d91d8ee5d91d8fe7
-d91d90678a68a255690aec1af30cf3d9
-1d81f6d91d82f9d91d83ecd91d7eedd9
-1d7ff2d91d80e1d91d79e7d91d7ae8d9
-1d7be9d91d7cead91d7d07f010f0d91d
-74f2d91d75f5d91d76f7d91d77e1d91d
-70e9d91d71ecd91d72edd91d7310e4d9
-1d7861a25062a2cb63a40d64a413650c
-ee1ef410f4d91d6cf5d91d6df6d91d6e
-f9d91d6feed91d69f2d91d6af3d91d6b
-e90ce9d91d66ead91d67ecd91d68e130
-e3d91d64e5d91d65012ad91d624b126e
-64e1d91d630018ee3af41ef710f7d91d
-4bf8d91d4cf9d91d4dfad91d4ef4d91d
-48f5d91d49f6d91d4af10cf1d91d45f2
-d91d46f3d91d47eed91d42efd91d43f0
-d91d44e724eb16ebd91d3fec26edbd34
-012ad91d4041127261e2d91d41e7d91d
-3ce9d91d3dead91d3ee40ce4d91d39e5
-d91d3ae6d91d3be1d91d36e2d91d37e3
-d91d380cea1eee10eed91d58efd91d59
-f8d91d5af9d91d5bead91d55ecd91d56
-edd91d57e517e530e8d91d53e9d91d54
-012ad91d514f127567f2d91d52e1d91d
-4fe2d91d50e4abb701ecd91d5ceed91d
-5d04e1d91d5ee4b7b3e5d91d5fe7d91d
-60ebd91d6174a4cc75b4a07600106e60
-752b753a7750e5d91b42e9d782efd91b
-7802edd91b80eed91b81f4d91b8210e1
-012ad91b834d12796df2d91b846e346f
-4a72587410efd91b7f02ebd91b75edd9
-1b76f0d91b7701f2d91b79f4d91b7a03
-e1d91b7befd91b7cf3d91b7df4d91b7e
-69c0d569a26b6ba28b6ca2c36d0015ec
-30f31af80cf8d91b72f9d91b73fad91b
-74f3d91b6ff5d91b70f7d91b71ecd91b
-6aedd91b6bf0d91b6cf1d91b6df2d91b
-6ee61ae90ce9d91b67ead91b68ebd91b
-69e6d91b64e7d91b65e8d91b66e1d91b
-5fe2d91b60e3d91b61e4d91b62e5d91b
-6307ec10ecd91b4deed91b4ef4d91b4f
-f6d91b50e3d91b49e4d91b4ae6d91b4b
-e7d91b4c0aee24f40cf4d91b5af5d91b
-5bfad91b5ceed91b56efd91b57f0012a
-d91b5844126576e1d91b59e1d91b51ea
-d91b52ebd91b53ecd91b54edd91b5501
-f0d91b5df3d91b5e613862a26965a26f
-6710f2d91b480010ed3cf22af2d91b39
-f334f5d91b3cf642f9d91b3f012ad91b
-3a4712756af2d91b3b012ad91b3d4712
-756af2d91b3eedd91b35eed91b36efd9
-1b37f0d91b38e80ee8d91b33e9d7efea
-b32eecd91b34e1d91b2fe5d91b30e6d9
-1b31e7d91b3201e2d91b40ebd91b4104
-e3d91b43edd91b44efd91b45f0d91b46
-f2d91b47002775c19de920f20ff2d504
-f3d51ef4d530f7a3c6f9d588e9d357eb
-d377ecd38aeed3baefd3d07a387a36e1
-d1abe5d30ce756e8d34106ed0cedd59c
-eed59defd59ef8d59fe8d599ead59aec
-d59b012a2e41127261e2d329012ad328
-5010cbd32975a24b76a29177a2bc78a4
-04790ff224f60cf6d595f8d596f9d597
-fad598f2d590f3d591f426f5d594012a
-d59254126176f4d593ea0cead3b1ecd5
-8deed58ef0d58fe1d589e5d58ae8d58b
-e9d58c0014ec25f314f809f8d558f9d5
-59fad55af3d555f5d556f6d557ecd550
-edd551eed552efd553f1d554e60fe6d5
-4be7d54ce8d54de9d54eead54fe1d546
-e2d547e3d548e4d549e5d54a0cee17f4
-0cf4d563f5d564f7d565f8d566eed560
-efd561f3d562eb09ebd55decd55eedd5
-5fe1d55be4bd42e5d55c0012ee20f40f
-f4d575f5d576f7d577f8d578f9d579ee
-d570efd571f0d572f1d573f2d574e619
-e6d56be7d56ce82cecd56fedd37e012a
-d56d54126176f4d56ee1d567e2d568e4
-d569e5d56a0def17f40cf4d584f5d585
-f8d586f9d587efd581f1d582f3d583e9
-0ce9d57dead57eedd57feed580e1d57a
-e5d57be7d57c6bc2fe70c16470a25871
-a2a072a2bb73a41a740015ee25f314f6
-09f6d543f7d544f9d545f3d540f4d541
-f5d542eed53cefd53df0d53ef1d3a9f2
-d53fe814eb09ebd539ecd53aedd53be8
-d536e9d537ead538e2d531e3d532e4d5
-33e5d534e6d5350012ed20f50ff5d3f6
-f6d3f7f8d3f8f9d3f9fad3faedd3f1ee
-d3f2f0d3f3f2d3f4f4d3f5e70fe7d3ec
-e9d3edead3eeebd3efecd3f0e1d3e7e3
-d3e8e526e6d3eb012ad3e94212656ee7
-d3ea08ef0fefd3fff0d500f4d501f5d5
-02f7d503e2d3fbecd3fcedd3fdeed3fe
-0017ef34f514f809f8d51bf9d51cfad5
-1df5d518f6d519f7d51af209f2d515f3
-d516f4d517efd511f026f1d514012ad5
-124212656ee7d513e814ec09ecd50eed
-d50feed510e8d50be9d50cead50de509
-e5d508e6d509e7d50ae1d505e2d506e3
-d5070011ec1df50ff5d52bf6d52cf7d5
-2df8d52efad52fecd527f0d528f2d529
-f4d52ae60fe6d1b3e7d523e8d524e9d5
-25ead526e1d51fe2d520e3d521e4d522
-6ba2586ca2936da2e86ea43d6f0015ef
-25f514f809f8d3e4f9d3e5fad3e6f5d3
-e1f6d3e2f7d3e3efd3dcf0d3ddf1d3de
-f2d3dff3d3e0e814eb09ebd3d9ecd3da
-edd3dbe8d3d6e9d3d7ead3d8e2d3d1e3
-d3d2e4d3d3e6d3d4e7d3d50011f11df5
-0ff5d385f6d386f7d387f8d388fad389
-f1d381f2d382f3d383f4d384e60fe6d3
-7ce7d37debd37eecd37ff0d380e1d378
-e2d379e4d37ae5d37b0015ee25f414f7
-09f7d39ff8d3a0f9d3a1f4d39cf5d39d
-f6d39eeed397f0d398f1d399f2d39af3
-d39be71eeb09ebd394ecd395edd396e7
-d390e926ead393012ad39143127972ec
-d392e1d38be2d38ce3d38de4d38ee6d3
-8f0017ed2af414f709f7d3b7f9d3b8fa
-d3b9f4d3b4f5d3b5f6d3b6f009f0d3b1
-f1d3b2f2d3b3edd3aeeed3afefd3b0e7
-14ea09ead3abebd3acecd3ade7d3a8e8
-d3a9e9d3aae409e4d3a5e5d3a6e6d3a7
-e1d3a2e2d3a3e3d3a40015ee25f314f7
-09f7d3cdf8d3cef9d3cff3d3caf4d3cb
-f6d3cceed3c5efd3c6f0d3c7f1d3c8f2
-d3c9e714eb09ebd3c2ecd3c3edd3c4e7
-d3bfe8d3c0e9d3c1e1d3bbe2d3bce3d3
-bde4d3bee5b90b66c150667e679a68a2
-9969a2f86a0aee14f309f3d374f5d375
-f7d376eed371efd372f0d373e1d36ce7
-d36de9d36eead36fecd37004e9d323ee
-d324efd325f2d326f4d3270015ef36f5
-14f809f8d33ef9d33ffad340f5d33bf6
-d33cf7d33defd334f0d335f1d336f3d3
-37f4022ad338482e54126167e2d33a12
-616eefd339e614e909e9d331ead332ee
-d333e6d32fe7a7efe8d330e1d32ae2d3
-2be3d32ce4d32de5d32e0011f138f52a
-f5d350f644f7cefff9d354fa012ad355
-5412666ee7d356022ad351412e541266
-6ee7d353127261e2d352f1d34cf2d34d
-f3d34ef4d34fe918e9d346ebd347ecd3
-48edd349f0012ad34a44127570ecd34b
-e4d342e5d343e6d344e8d3450015ee25
-f414f709f7d369f8d36af9d36bf4d366
-f5d367f6d368eed361efd362f0d363f1
-d364f3d365e814eb09ebd35eecd35fed
-d360e8d35be9d35cead35de2a95de3d3
-58e4b75ae6d359e7d35a61a25862a2bb
-63a41d64a463650015ef25f414f709f7
-d320f8d321f9d322f4d31df5d31ef6d3
-1fefd318f0d319f1d31af2d31bf3d31c
-e714eb09ebd315edd316eed317e7d312
-e8d313e9d314e1d30de2d30ee3d30fe4
-d310e5d3110015ef3df522f817f8d1c0
-f926fad1c4012ad1c14811616e01f3d1
-c2f4d1c3f5d1bdf6d1bef7d1bfefd1b7
-f0d1b8f12cf2d1bbf3d1bc012ad1b954
-12666ee7d1bae614eb09ebd1b4ecd1b5
-eed1b6e6d1b1e7d1b2ead1b3e1d1ace2
-d1ade3d1aee4d1afe5d1b00016ed2af5
-14f809f8d1dbf9d1dcfad1ddf5d1d8f6
-d1d9f7d1daf009f0d1d5f3d1d6f4d1d7
-edd1d2eed1d3efd1d4e726ea1bead1cd
-eb26ecd1d1022ad1ce482e4c126174ee
-d1d012616eefd1cfe7d1cae8d1cbe9d1
-cce1d1c5e3d1c6e4d1c7e5d1c8e6d1c9
-0014ed25f314f809f8d1f0f9d1f1fad1
-f2f3d1edf5d1eef7d1efedd1e8eed1e9
-efd1eaf0d1ebf1d1ece60fe6d1e3e7d1
-e4e8d1e5e9d1e6ebd1e7e1d1dee2d1df
-e3d1e0e4d1e1e5d1e20015ed25f314f6
-09f6d309f8d30af9d30bf3d307f4d308
-f5afc0edd302eed303efd304f1d305f2
-d306e714ea09ead1ffebd300ecd301e7
-d1fce8d1fde9d1fee136e258e3d1f9e4
-d1fae5d1fb022ad1f3412e4c126174ee
-d1f5127261e2d1f4022ad1f6422e4b12
-7468e9d1f812656ee7d1f7001a6fc146
-7761e72de744ebd5bef2d75ffa012a90
-41127261e2d91b2c012a2e43127972ec
-d5b2022ad5b14b2a4d10ced5b310dad5
-b2776c79727a01ee28f3d91b2e012a30
-41127261e2d91b2c022ad77f412c4310
-ced91b2d10c6d91b2c10e1d91b2a10e1
-d91b2b736c7346749475a2517602e5d9
-1b27e8d91b28ecd91b2906eb10ebd91b
-1bf0d91b1cf3d91b1df5d91b1ee1d91b
-17e8d91b18e9012ad91b194212656ee7
-d91b1a05f00cf0d91b21f2d91b22f5d9
-1b23e1d91b1fe5d91b20e8afc901ed28
-f2d91b26012ad91b2443127972ecd91b
-256fa26270a266720014ee30f51af80c
-f8d91b14f9d91b15fad91b16f5d91b11
-f6d91b12f7d91b13eed91b0cefd91b0d
-f0d91b0ef2d91b0ff4d91b10e714e7d9
-1b07e8d91b08e9d91b09ebd91b0aedd9
-1b0be1d91b02e2d91b03e3d91b04e5d9
-1b05e6d91b0601ebb121eed7ff01e9d9
-1b00f6d91b0168c0d66bbd6ba2436ca2
-666da2896e0bee25f509f5d7fcf8d7fd
-fad7feeed7f8f0d7f9f2012a2e441265
-76e1d7fb012ad7fa4e10d0d7fbe909e9
-d7f5ebd7f6edd7f7e1d5dfe5d7f3e7d7
-f40af014f609f6d5c7f7d5c8f9d5c9f0
-d5c4f1d5c5f5d5c6e1d5bfe7d5c0e8d5
-c1e9d5c2ebd5c30ae914ee09eed5d2f5
-d5d3f7d163e9d5cfebd5d0edd5d1e1d5
-cae2d5cbe3d5cce5d5cde6d5ce0bee14
-f209f2d5ddf3d5def5af16eed5daefd5
-dbf0d5dce709e7d5d7e9d5d8edd5d9e1
-d5d4e2d5d5e4d5d6682e69386a10e9d5
-bd01e1d5b9eed5ba01f3d5bbf6d5bc65
-1d6546664a6704e1d5b4e2d5b5e5d5b6
-e8d5b7efd5b810f3d5af10e9d5b0615c
-62666407ea0cead5abecd5acedd5adf5
-d5aee1d5a7e5d5a8e7d5a9e9d5aa01ed
-d5a0f2d5a104e1d5a2e9d5a3ecd5a4f2
-d5a5f5d5a670d0c670b23671bc6272be
-3d73002c77c13eeb3ff229f509f5d15a
-f6d170f7d179f22cf3d12bf4d1422203
-2acdf54db0c3522a5410d2cdf901cfcd
-f8d5cdf6ee09eecfd1efcfe7f1a3ddeb
-cf91eccfaaedcfbce336e709e7cf3de8
-cf51e9cf6de3cdf3e426e5cf20032a36
-44444b4c5312696ee4cf10012acf0d49
-10cecf0e126576e1cf0e12686feacf0f
-773878a24a79a2697aa294e1cdc10012
-f020f50ff5d187f6d188f7d189f8d18a
-f9d18bf0d182f1d183f2d184f3d185f4
-d186e90fe9d17dead17eebd17fedd180
-efd181e2d17ae6d17be7d17ce8d17906
-f216f2d18ff3d190f526f7d193012ad1
-915212756ef2d192e2d18ce5d18deed1
-8e0ced17f20cf2ad2ef3d19df7d19ef8
-d19fedd19aeed19befd19ce909e9d197
-ebd198ecd199e1d194e2d195e3d1960a
-ec14f609f6d1a8f7d1a9f9d1aaecd1a5
-eed1a6f0d1a7e1d1a0e2d1a1e3d1a2e4
-d1a3e7d1a46cc33771c1bd74c0e67476
-75a2847605e509e5d176edd177f3d178
-e12ce2d174e3d175022ad171432e4c12
-6174eed173127972ecd1720014ed2ff2
-1ef613f62cf7d158f9d159012ad15641
-127261e2d157f2d153f3d154f4d155ed
-d14eeed14fefd150f0d151f1d152e818
-e8d148e932ead14bebd14cecd14d2201
-2ad1494b10c8d14ae1d143e2d144e5d1
-45e6d146e7d1470012ed3cf421f4d169
-f632f7d16df9d16efad16f022ad16a42
-2e44126576e1d16c12656ee7d16bedd1
-63efd164f12cf2d167f3d168012ad165
-45127468e9d166e70fe7d15fe9d160ea
-d161ebd162eccf41e1d15be2d15ce3d1
-5de5d15e71a25c72a27b730013ee2af5
-0ff5d13df6d13ef8d13ff9d140fad141
-eed137efd138f1d139f326f4d13c012a
-d13a54126861e9d13be70fe7d132e8d1
-33ead134ecd135edd136e2d12ce3d12d
-e4d12ee526e6d131012ad12f41127261
-e2d13006ef16efd111f1d112f426f5d1
-15012ad1134c126174eed114e1d10ee8
-d10fedd1100016ee2af514f809f8b550
-f9d129fad12af5d126f6d127f7d128f2
-09f2d123f3d124f4d125eed120efd121
-f1d122e714eb09ebd11decd11eedd11f
-e7d11ae8d11be9d11ce1d116e2d117e3
-cdf3e5d118e6d1196ca2486da2836ea2
-c96fa41d700011ee1df20ff2d10af3d1
-0bf4d10cf6d10df9bb19eed106efd107
-f0d108f1d109e70fe7d101e9d102ebd1
-03ecd104edd105e2cffde3cffee4cfff
-e5d1000011ef1df50ff5cfb7f7cfb8f8
-cfb9f9cfbafacfbbefcf91f0cfb4f1cf
-b5f2cfb6e90fe9cfafeacfb0eccfb1ed
-cfb2eecfb3e3cfabe4cface7cfade8cf
-ae0014ee25f414f809f8cfcef9cfcffa
-cfd0f4cfcbf5cfccf7cfcdeecfc6f0cf
-c7f1cfc8f2cfc9f3cfcae70fe7cfc1e8
-cfc2eacfc3ebcfc4eccfc5e1cfbde2cf
-bee3cfbfe4bb29e6cfc00015ef25f514
-f809f8cfe5f9cfe6faa578f5cfe2f6cf
-e3f7cfe4efcfddf0cfdef1cfdff2cfe0
-f3cfe1e914ec09eccfdaedcfdbeecfdc
-e9cfd7eacfd8ebcfd9e2a918e3cfd2e5
-cfd3e6cfd4e7012acfd542127261e9cf
-d60013f020f60ff6cff8f7cff9f8cffa
-f9cffbfacffcf0cff3f1cff4f2cff5f3
-cff6f5cff7e70fe7cfeee9cfefebcff0
-eccff1efcff2e138e2cfeae3cfebe4cf
-ece5cfed012acfe854126861e9cfe966
-c1c869c0e269a25c6aa2a76b0017ef2a
-f514f809f8cfa7f9cfa8facfa9f5cfa4
-f6cfa5f7cfa6f209f2cfa1f3cfa2f4cf
-a3efcf9ef0cf9ff1cfa0e714ea09eacf
-9bedcf9ceecf9de7cf98e8cf99e9cf9a
-e409e4cf95e5cf96e6cf97e1cf92e2cf
-93e3cf940015ed25f514f809f8cf81f9
-cf82facf83f5cf7ef6cf7ff7cf80edcf
-79f0cf7af1cf7bf2cf7cf3cf7de714ea
-09eacf76ebcf77eccf78e7cf73e8cf74
-e9cf75e1cf6ee2cf6fe4cf70e5cf71e6
-cf720bed1ef409f4cf8ef5cf8ff7cf90
-edcf8af026f2cf8d012acf8b4212656e
-e7cf8ce509e5cf87e7cf88eccf89e1cf
-84e2cf85e4cf8666a27d67a284680016
-ee46f430f71bf7cf68f926facf6c022a
-cf69412e5412666ee7cf6b127261e2cf
-6af4cf64f526f6cf67012acf654c1261
-74eecf66f109f1cf61f2cf62f3cf63ee
-cf5eefcf5ff0cf60e71eea13eacf5aeb
-26edcf5d012acf5b41127261e2cf5ce7
-cf57e8cf58e9cf59e1cf52e2cf53e3cf
-54e4cf55e5cf5602e5cf3aedcf3bf7cf
-3c0011ed1df40ff4cf4cf5cf4df7cf4e
-f9cf4ffacf50edcf48f0cf49f2cf4af3
-cf4be52ae5cf42e844e9cf46eacf47ec
-012ab75143127972ecb752022acf4341
-2e4c126174eecf45127261e2cf44e1cf
-3ee2cf3fe3cf40e4cf4161a26c62a2c9
-63a42b64a4a7650017ee2af414f709f7
-cf37f9cf38facf39f4cf34f5cf35f6cf
-36f109f1cf31f2cf32f3cf33eecf2eef
-cf2ff0cf30e71eea13eacf2aeb26eccf
-2d012acf2b4312616ef3cf2ce7cf27e8
-cf28e9cf29e409e4cf24e5cf25e6cf26
-e1cf21e2cf22e3cf230015f025f514f8
-09f8cdd6f9cdd7facdd8f5cdd3f6cdd4
-f7cdd5f0a55bf1cdcff2cdd0f3cdd1f4
-cdd2e626eb1bebcdcaed26efcdce022a
-cdcb482e53127972e3cdcd126562f2cd
-cce6cdc7e8cdc8eacdc9e1cdc2e2cdc3
-e3cdc4e4cdc5e5cdc60018ee37f421f7
-0cf7cdeff8cdf0f9cdf1facdf2f4cdeb
-f526f6cdee012acdec44126576e1cded
-f109f1cde8f2cde9f3cdeaeecde5efcd
-e6f0cde7e814eb09ebcde2eccde3edcd
-e4e8cddfe9cde0eacde1e409e4cddce5
-cddde7cddee1cdd9e2cddae3cddb0012
-ee29f40ff4cf08f5cf09f6cf0af7cf0b
-f8cf0ceecf03efcf04f0cf05f2b599f3
-012acf064312616ef3cf07e717e7cdfd
-e8cdfee9cdffebcf00ec22012acf0149
-10cecf02e2cdf4e32ae56ee6cdfc2205
-5211522e53325410d2cdf910cfcdf810
-d5cdf62acdf5312a4d10c5cdf71137b2
-cdf6012acdfa41127261e2cdfb0eea1a
-f10cf1cf1cf3cf1df5cf1ef8cf1feacf
-18ebcf19eecf1aefcf1be50ce5cf14e6
-cf15e7cf16e8cf17e1cf11e2cf12e3cf
-13001d70c1b97885e93fe932eccb50f3
-c9e3f4cbc8054b1f4b324d4a54126861
-e9cb2f106801612a6d10f2cb2d10f2cb
-2c12796df2cb2e2acb29422e44126576
-e1cb2b127261e8cb2a785079547a8ee1
-012a2e41127261e2c9bc012ac9bb5010
-cbc9bc10edcbee05f513f52cf8cbf4f9
-cbf5012acbf24812616ee9cbf3e5cbef
-edcbf0eecbf101e8cbf6eecbf773a973
-6274a075a25e7707ee0ceecbeaefcbeb
-f2cbecf7cbede1cbe6e2cbe7e7cbe8ed
-cbe909ee0feecbc3f1cbc4f3cbc5f4cb
-c6f7cbc7e1cbbee5cbbfe8cbc0e9cbc1
-edcbc209f00ff0cbcef2cbcff4cbd0f5
-cbd1f6cbd2e1cbc9e8cbcae9cbcbeecb
-ccefcbcd0013ef20f50ff5cbe2f7cbe3
-f8cbe4f9cbe5facbd4efcbddf0cbdef1
-cbdff2cbe0f4cbe1e60fe6cbd8e7cbd9
-e9cbdaeacbdbedcbdce1cbd3e2cbd4e3
-cbd5e4cbd6e5cbd770a24f71a27a7200
-12ed2af419f4cbb9f5cbbaf7cbbbf826
-f9cbb9012acbbc54126962f4cbbdedcb
-b4efcbb5f0cbb6f1cbb7f2cbb8e60fe6
-cbafe7cbb0e8cbb1e9cbb2ebcbb3e1cb
-abe3cbace4cbade5cbae0cee17f10cf1
-cba6f2bdbff3cba7f4cba8eecba3efcb
-a4f0cba5eb09ebcba0eccba1edcba2e1
-a795e5cb9ee9cb9f01e1cba9edcbaa68
-c1d76cc1276ca2426da2806ea2cb6f00
-10ee1df30ff3cb99f4cb9af6cb9bf7cb
-9cf9cb9deecb95efcb96f0cb97f1cb98
-e80ce8cb91e9cb92ebcb93edcb94e3cb
-8de5cb8ee6cb8fe7cb900012ec20f40f
-f4c16ef5cb5ff6cb60f7cb61facb62ec
-cb5aeecb5befcb5cf2cb5df3cb5ee50f
-e5cb55e7cb56e8cb57eacb58ebcb59e1
-cb51e2cb52e3cb53e4cb540015ee25f4
-14f809f8cb74f9cb75facb76f4cb72f5
-cb25f7cb73eecb6defcb6ef1cb6ff2cb
-70f3cb71e614ea09eacb6aeccb6bedcb
-6ce6cb67e8cb68e9cb69e1cb63e2cb64
-e3b5c4e4cb65e5cb660016ed2af314f7
-09f7cb8af9cb8bfacb8cf3cb87f4cb88
-f6cb89f009f0cb84f1cb85f2cb86edcb
-81eecb82efcb83e714ea09eacb7eebcb
-7feccb80e7cb7be8cb7ce9cb7de1cb77
-e2bd90e3cb78e4cb79e5cb7a687c69a2
-566aa2a16b08ee0feecb4befcb4cf0cb
-4df2cb4ef5cb4fe1cb46e2cb47e7cb48
-e8012acb4944126576e1cb4a0bee14f4
-09f4cb26f6cb27f7cb28eecb23efcb24
-f2cb25eb09ebcb20eccb21edcb22e4cb
-1de7cb1ee8cb1f0015ef25f514f809f8
-cb42f9cb43facb44f5cb3ff6cb40f7cb
-41efcb3af0cb3bf2cb3cf3cb3df4cb3e
-e714ec09eccb37edcb38eecb39e7cb35
-e8cb36eaad69e1cb30e2cb31e3cb32e4
-cb33e6cb3410f4cb45648c646865a066
-a27b6708eb0febcb18eccb19eecb1af3
-cb1bf5cb1ce1cb14e4cb15e7cb16e9cb
-1705ef12efc9fdf4c9fef5012ac9ff4d
-12796df2cb00e1c9fae3c9fbeec9fc00
-11ef1df30ff3b16cf6cb0df8cb0ef9cb
-0ffacb10efcb0af0cb0bf1cb0cf2b16c
-e70fe7cb05e9cb06ebcb07eccb08edcb
-09e1cb01e2cb02e4cb03e5cb0402e1cb
-11e5cb12eccb1361a26b62a2c5630fe9
-24ee0ceec9f7f0c9f8f2a35bf7c9f9e9
-32eac9f4ebc9f5edc9f6012ac9f24f12
-7279e1c9f3e528e530e6c9ede73ce8c9
-f1012ac9eb54126861e9c9ec022ac9ee
-4b2e5412616decc9f0126e64e1c9efe1
-c9e6e2c9e7e326e4c9ea012ac9e84812
-616ee9c9e90016ef2af514f809f8c9d1
-f9c9d2fac9d3f5c9cef6c9cff7c9d0f2
-09f2c9ccf3c9cdf4bd4defc9c9f0c9ca
-f1c9cbe71eeb13ebc9c5ec26edc9c801
-2ac9c65012686cf0c9c7e7c9c2e8c9c3
-e9c9c4e2c9bde3c9bee4c9bfe5c9c0e6
-c9c10011ee1df30ff3c9e1f4c9e2f5c9
-e3f6c9e4f9c9e5eec9ddefc9def0c9df
-f2c9e0e70fe7c9d8e8c9d9e9c9daecc9
-dbedc9dce2c9d4e3c9d5e5c9d6e6c9d7
-057839782a797cf5cbf80bf014f409f4
-cd2bf5cd2cf7cd2df0cd28f1cd29f2cd
-2aec09eccd25eecd26efcd27e1cd22e3
-cd23e8cd2401e1cd2ef0cd2f757676a2
-6c7705ed1bed2cf3cd20f4cd21022acd
-1d432e5212756ef2cd1f127972eccd1e
-e1cd1ae3cd1be8cd1c0013ee20f60ff6
-cd08f7cd09f8cd0af9cd0bfacbf8eecd
-03f0cd04f1cd05f2cd06f3cd07e70fe7
-cbfee9cbffebcd00eccd01edcd02e1cb
-f9e2cbfae3cbfbe4cbfce6cbfd0ded17
-f00cf0cd16f3cd17f7cd18facd19edcd
-13eecd14efcd15e80ce8cd0fe9cd10ea
-cd11eccd12e1cd0ce3cd0de5cd0e0019
-70ad7820ee0ceecd89efc32ef5cda6f7
-cdb7782a7934edcd6f01e4cdbef7cdbf
-10f5cdc0746f745075667705ed09edcd
-bbefcdbcf2cdbde1cdb8ebcdb9eccdba
-03e3cda2e8cda3edcda4f7cda50eed2e
-f416f432f5cdb4f9cdb5facdb6012acd
-b24c126174eecdb3edc32eefcdaef026
-f1cdb1012acdaf47127265ebcdb0e60c
-e6cdaae7cdabe9cdacebcdade2cda7e3
-cda8e5cda9702e72387310ebcda101ee
-cd9cf4cd9d02e9cd9eefcd9ff4cda068
-c1176bc0e36b886da2496ea2c66f0cec
-16f00cf0cd98f2cd99f5cd9af7cd9bec
-cd96ed9eefcd97e509e5cd93e6cd94e7
-cd95e2cd90e3cd91e4cd9206e90ce9ab
-b7edcd6cf4cd6df7cd6ee1cd69e2cd6a
-e8cd6b0016ed4ef426f81bf8bf53f926
-facd88012a2e43127972eccd87012acd
-864210c7cd87f4cd83f5cd84f7cd85f0
-09f0cd81f1cd82f2b12fedcd7cee26ef
-cd80022acd7d432e47127265ebcd7f12
-7972eccd7ee61de912e9cd78ebcd79ec
-012acd7a43127972eccd7be6cd75e7cd
-76e8cd77e1cd70e2cd71e3cd72e4cd73
-e5cd7405ee09eecd8df2cd8ef7cd8fe4
-cd8ae7cd8beccd8c683a69446a02e7cd
-66e9cd67f3cd6801e7cd5cf0cd5d07ee
-0ceecd62f2cd63f4cd64f5cd65e1cd5e
-e6cd5feccd60edcd61644e6446654a67
-04e1cd57eecd58f2cd59f3cd5af5cd5b
-10e2cd490bec14f309f3cd54f4cd55f9
-cd56eccd51edcd52eecd53e713e7cd4d
-e926eacd50012acd4e5412656cf5cd4f
-e1cd4ae2cd4be5cd4c613062a2536310
-e6cd480013ed20f60ff6cd3ff7cd40f8
-cd41f9cd42facd43edcd3aeecd3befcd
-3cf0cd3df2cd3ee719e7cd35e832e9cd
-38eac3d1ebcd39012acd364c126174ee
-cd37e1cd30e2cd31e3cd32e4cd33e6cd
-3403e2cd44ebcd45eccd46f0cd476da6
-7e6eba9b6f001b70c0f97923ea0ceac9
-40edb1e0f2c986f3c995792a7a3ae3c9
-2e02e4c9b7edc9b8f9c9b910edc9ba74
-5f743c75a24976a2537701e9c9b5ecc9
-b60011f11df50ff5c9acf7c9adf8c9ae
-f9c9affac9b0f1c9a8f2c9a9f3c9aaf4
-c9abe90fe9c9a3ebc9a4ecc9a5edc9a6
-eec9a7e1c99fe2c9a0e4c9a1e5c9a203
-e2c9b1e5c9b2edc9b3eeb32e10e4c9b4
-707072967307f00cf0c99bf4c99cf5c9
-9df8c99ee1c996e32ce9c999efc99a01
-2ac9974c126174eec99805ef09efc983
-f4c984f9c985e1b5dcebc981edc9820e
-f31af70cf7c992f8c993f9c986fac994
-f3c98ef4c98ff5c990f6c991e70ce7c9
-8aeec98befc98cf2c98de1c987e3c988
-e5c98969c1146ca36c406d8c6ea2616f
-02e4c97eeec97ff2c98008ed0fedc95d
-efc95ef2c95ff4c960f5c961e132e4c9
-5ae5c95bebc95c012ac95854126962f4
-c9590cec17f20cf2c96bf4c96cf5c96d
-f7c96eecc968efc969f0c96ae709e7c9
-65e9c966ebc967e1c962e2c963e3c964
-0def21f30cf3c97af4c97bf5c97cf8c9
-7defc976f026f2c979012ac977441265
-76e1c978e90ce9c972eac973ebc974ee
-c975e1c96fe5c970e7c97169966aa242
-6b0fed1af50cf5c954f6c955f8c956fa
-c957edc950efc951f2c952f3c953e50c
-e5c94ce7c94de9c94eebc94fe1c948e2
-c949e3c94ae4c94b02e1c93de5c93eee
-c93f05f312f3c944f6c945f7012ac946
-4312616ef3c947e22ce3c943e7c94001
-2ac9414312616ef3c942642c64326648
-674c6810f4c93c03e1c932ebc933f4c9
-34f5c93510f5c93604e2c937e3c938e7
-c939efc93af5c93b613a62506302e1c9
-2fefc930f5c93103e1c922e3c923f2c9
-24f6c92507ef0cefc92af2c92bf4c92c
-f5c92de9c926ebc927ecc928edc92900
-2473c2ffe82aef0fefc32ef2c379f3b4
-07f4c3abf9ab04e8c188e9bfe1ebbfd8
-ecc1e7ee012ad83a214d126f6ee7afa5
-77c160773878a26b79a2c67aa411e7c1
-6e0017ed34f31ef609f6c506f7c507fa
-c508f3c502f426f5c505012ac5035412
-6861e9c504f009f0c500f1c501f2af30
-edc3fdeec3feefc3ffe714ea09eab32e
-ebc3fbecc3fce7c3f8e8c3f9e9c3fae4
-09e4af7ce5c3f6e6c3f7e1c3f3e2c3f4
-e3c3f50019ee2df417f70cf7c51ff8c5
-20f9c521fac522f4c51cf5c51df6c51e
-f109f1c519f2c51af3c51beec516efc5
-17f0c518e717ea0ceac512ebc513ecc5
-14edc515e7c50fe8c510e9c511e409e4
-c50ce5c50de6c50ee1c509e2c50ae3c5
-0b0013ed2af60ff6c531f7c532f8c533
-f9c534fac535ed38f0c52ef2c52ff4c3
-93f5c530012ac52c4c126174eec52de7
-0fe7c527e8c528eac529ebc52aecc52b
-e2c523e3c524e4a530e5c525e6c52600
-13ef20f50ff5c545f6c546f7c547f8c5
-48fac549efc540f0c541f1c542f2c543
-f4c544ea0feac53bebc53cecc53dedc5
-3eeec53fe1c536e4c537e5c538e8c539
-e9c53a73a25e74a2ae75a406760013f1
-29f618f6c3edf7c3eef8c3eff9c3f0fa
-012ac3f141127261e2c3f2f1c3e8f2c3
-e9f3c3eaf4c3ebf5c3eceb0febc3e3ec
-c3e4eec3e5efc3e6f0c3e7e1c3dde4c3
-dee62ce7c3e1e8c3e2012ac3df501268
-61e7c3e00016ee2af514f809f8c3a8f9
-c3a9fac3aaf5c3a5f6c3a6f7c3a7f109
-f1c3a3f3c3a4f4c393eec3a0efc3a1f0
-c3a2e814eb09ebc39decc39eedc39fe8
-c39ae9c39beac39ce2c395e3c396e5c3
-97e6c398e7c3990018ed2df317f60cf6
-c3c1f7c3c2f8c3c3f9c3c4f3c3bef4c3
-bff5c3c0f009f0c3bbf1c3bcf2c3bded
-c3b8eec3b9efc3bae714ea09eac3b5eb
-c3b6ecc3b7e7c3b2e8c3b3e9c3b4e409
-e4c3afe5c3b0e6c3b1e1c3ace2c3ade3
-c3ae0015ef38f41df812f8c3d9f9c3da
-fa012ac3db4c126174eec3dcf4c3d6f5
-c3d7f6c3d8efc3d0f0c3d1f1c3d2f226
-f3c3d5012ac3d341127261e2c3d4e714
-ea09eac3cdebc3ceedc3cfe7c3cae8c3
-cbe9c3cce1c3c5e2c3c6e3c3c7e4c3c8
-e5c3c96ac3846ec1fc6ea27c6fa2d270
-a42c71a48e720017ef33f51df809f8c3
-92f9c393fac394f5c38ef6c38ff7012a
-c39041127261e2c391f209f2c38bf3c3
-8cf4c38defc388f0c389f1c38ae814ec
-09ecc385edc386eec387e8c382eac383
-ebc384e41ae4c37de6c37ee7022ac37f
-422e44126576e1c38112656ee7c380e1
-c37ae2c37be3c37c0017ee2af514f809
-f8c32bf9c32cfac32df5c328f6c329f7
-c32af209f2c325f3c326f4c327eec322
-f0c323f1c324e815eb0aebd82e53ecc3
-20edc321e8c31de9c31eeac31fe509e5
-c31ae6c31be7c31ce1c317e2c318e4c3
-190016ef34f51ef813f8c342f926fac3
-45012ac34345127468e9c344f5c33ff6
-c340f7c341f209f2c33cf3c33df4c33e
-efc339f0c33af1c33be714ea09eac337
-ebc338edad16e7c334e8c335e9c336e1
-c32fe3c330e4c331e5c332e6c3330018
-ee2df417f70cf7c35cf8c35df9c35efa
-c35ff4c359f5c35af6c35bf109f1c356
-f2c357f3c358eec353efc354f0c355e8
-14eb09ebc350ecc351edc352e8c34de9
-c34eeac34fe413e4c349e526e7c34c01
-2ac34a45127468e9c34be1c346e2c347
-e3c3480017ee34f51ef813f82cf9c377
-fac378012ac37542127567e9c376f5c3
-72f6c373f7c374f109f1c36ff2c370f3
-c371eec36cefc36df0c36ee814eb09eb
-c369ecc36aedc36be8c366e9c367eac3
-68e509e5c363e6c364e7c365e1c360e2
-c361e3c3626aa2636ba2cb6ca4206d00
-15ef25f514f809f8c314f9c315fac316
-f5c311f6c312f7c313efc30cf0c30df1
-c30ef2c30ff4c310e614e909e9c309ed
-c30aeec30be6c306e7c307e8c308e1c1
-ffe2c300e3c301e426e5c305012ac302
-4811616e01f3c303f4c3040015ee38f5
-1ef813f82cf9c1cefac1cf012ac1cc42
-12656ee7c1cdf5c1c9f6c1caf7c1cbee
-c1c3f1c1c4f2c1c5f3c1c6f4012ac1c7
-4212656ee7c1c8e81eeb13ebc1bfec26
-edc1c2012ac1c05412616bf2c1c1e8c1
-bce9c1bdeac1bee2c1b7e3c1b8e4c1b9
-e5c1bae7c1bb0015ef25f514f809f8c1
-e4f9c1e5fac1e6f5c1e1f6c1e2f7c1e3
-efc1dcf0c1ddf2c1def3c1dff4c1e0e9
-1eec09ecc1d9edc1daeec1dbe92ceac1
-d7ebc1d8012ac1d544126576e1c1d6e1
-c1d0e2c1d1e3c1d2e5c1d3e6c1d40014
-ee2ff314f709f7c1fcf8c1fdfac1fef3
-c1f9f5c1faf6c1fbeec1f3efc1f4f0c1
-f5f126f2c1f8012ac1f641127261e2c1
-f7e80fe8c1eee9c1efeac1f0ebc1f1ec
-c1f2e1c1e8e2c1e9e3c1eae5c1ebe601
-2ac1ec4c126174eec1ed65c1fb65a262
-66a2c667a43b68a49c690017ed2af414
-f809f8c1b4f9c1b5fac1b6f4c1b1f5c1
-b2f7c1b3f009f0c1aef1c1aff2c1b0ed
-c1abeec1acefc1ade714ea09eac1a8eb
-c1a9ecc1aae7c1a5e8c1a6e9c1a7e409
-e4c1a2e5c1a3e6c1a4e1c19fe2c1a0e3
-c1a10016ee3ef41ef713f7c14ef926fa
-c151012ac14f41127261e2c150f4c14b
-f5c14cf6c14df109f1c148f2c149f3c1
-4aeec144ef26f0c147012ac145411272
-61e2c146e714eb09ebc141ecc142edc1
-43e7ad09e8c13feac140e1c13ae2c13b
-e3c13ce4c13de5c13e0018ed37f421f7
-16f7c169f82cf9c16cfac16d012ac16a
-45127468e9c16bf4c166f5c167f6c168
-f009f0c163f1c164f2c165edc160eec1
-61efc162e727ea09eac15debc15eecc1
-5fe73ee8c15ae9012ac15b4c126174ee
-c15c012ac15841127261e2c159e409e4
-c155e5c156e6c157e1c152e2c153e3c1
-540018ee2df417f70cf7c185f8b794f9
-c186fac187f4c182f5c183f6c184f109
-f1c17ff2c180f3c181eec17cefc17df0
-c17ee814eb09ebc179ecc17aedc17be8
-c176e9c177eac178e509e5c173e6c174
-e7c175e2c16fe3c170e4012ac1714112
-7261e2c1720016ee2af414f809f8c19c
-f9c19dfac19ef4c199f5c19af7c19bf1
-09f1c197f2abf3f3c198eec194efc195
-f0c196e714eb09ebc191ecc192edc193
-e7c18ee9c18feac190e2c189e3c18ae4
-c18be5c18ce6c18d61a27d62a2db63a4
-30640017ee3ef528f81df82af93cfac1
-39012ac1354c126174eec136012ac137
-4c126174eec138f5c132f6c133f7c134
-f209f2c12ff3c130f4c131eec12cf0c1
-2df1c12ee714ea09eac129ebc12aedc1
-2be7c126e8c127e9c128e413e4c122e5
-26e6c125012ac1234c126174eec124e1
-c11fe2c120e3c1210015ee38f526f812
-f8bfe9f926fabfec22012abfea4310c3
-bfebf5bfe5f6bfe6f7012abfe7411272
-61e2bfe8eed828d9efbfe1f1bfe2f3bf
-e3f4bfe4e614ea09eabfdeebbfdfedbf
-e0e6bfdbe7bfdce9bfdde1bfd6e2bfd7
-e3bfd8e4bfd9e5bfda0017ef2af514f8
-09f8c102f9c103fac104f5bffff6c100
-f7c101f209f2bffcf3bffdf4bffeefbf
-f9f0bffaf1bffbe914ec09ecbff6edbf
-f7eebff8e9bff3eabff4ebbff5e409e4
-bff0e6bff1e8bff2e1bfede2bfeee3bf
-ef0019ee2df417f70cf7c11bf8c11cf9
-c11dfac11ef4c118f5c119f6c11af109
-f1c115f2c116f3c117eec112efc113f0
-c114e717ea0ceac10eebc10fecc110ed
-c111e7c10be8c10ce9c10de409e4c108
-e5c109e6c10ae1c105e2c106e3c10700
-2473c1fce220ee0feec75fefc778f2c7
-a0f6c7e7f9c902e2c561e4c590e5c5aa
-e7c5c5ecafda77c0e5773878a24479a2
-6c7aa2bce1c54a09ed0fedc7f2efc7f3
-f2c7f4f7c7f5f8c7f6e2c7eae332e5c7
-efe7c7f0e9c7f1032ac7eb4232443a53
-126964e4c7ee127261e8c7ec126576e1
-c7ed0bee14f209f2c900f5a980f8c901
-eec7fdefc7fef1c7ffe709e7c7fae9c7
-fbecc7fce1c7f7e4c7f8e5c7f90016ed
-2af314f609f6c916f8c917f9c918f3c9
-13f4c914f5c915f009f0c910f1c911f2
-c912edc90deec90eefc90fe714ea09ea
-c90aebc90becc90ce7c907e8c908e9c9
-09e2c903e3b3cbe4c904e5c905e6c906
-08eb0febc91dedc91ef5c91ff9c920fa
-c921e1c919e2c91ae4c91be9c91c7342
-74a25775a2887602e8c7e8edc7e9efa7
-180014ee25f514f809f8c7bef9c7bffa
-c7c0f5c7bbf6c7bcf7c7bdeec7b6efc7
-b7f1c7b8f3c7b9f4c7bae60fe6c7b1e7
-c7b2e8c7b3ebc7b4edc7b5e1c7ace2c7
-ade3c7aee4c7afe5c7b00eef1af50cf5
-c7cbf8c7ccf9c7cdfac7ceefc7c8f0c7
-c9f2c7caf3ad69e90ce9c7c4eac7c5eb
-c7c6edc7c7e4c7c1e5c7c2e7c7c30017
-ef34f514f809f8c7e4f9c7e5fac7e6f5
-c7e1f6c7e2f7c7e3f209f2c7def3c7df
-f4c7e0efc7daf026f1c7dd012ac7db41
-127261e2c7dce814eb09ebc7d8edc7d9
-eea5f3e8c7d5e9c7d6eac7d7e509e5c7
-d2e6c7d3e7c7d4e1c7cfe3c7d0e4c7d1
-6ac2866ec12c6e906fa29a70a2e071a4
-03720ceb17f00cf0c7a9f5aad4f8c7aa
-fac7abebc73decc7a7edc7a8e609e6c7
-a4e7c7a5e9c7a6e1c7a1e2c7a2e5c7a3
-0018ed2df417f70cf7c775f8c5d8f9c7
-76fac777f4c772f5c773f6c774f109f1
-c770f2c771f3c573edc76deec76ef0c7
-6fe71eea09eac76aebc76becc76ce72c
-e8c768e9c769012ac7664212656ee7c7
-67e409e4c763e5c764e6c765e1c760e2
-c761e3c7620014ed25f314f609f6c78a
-f7c78bf9c78cf3c787f4c788f5c789ed
-c783eec784efafbaf0c785f1c786e70f
-e7c77ee8c77fe9c780eac781ebc782e1
-c779e3c77ae4c77be5c77ce6c77d0aee
-14f509f5c794f8c795f9c796eec791ef
-c792f3c793e2c78de7c78ee8c78fe9c5
-aaecc79008ee0feec79befc79cf1c79d
-f4c79ef9c79fe7c797ebc798ecc799ed
-c79a6aa2756ba2b66ca4106d0018ed40
-f317f60cf6c75bf7c75cf8c75dfac75e
-f3c758f4c759f5c75af009f0c755f1c7
-56f2c757ed3eeec752ef012ac7534212
-656ee7c754012ac75054126962f4c751
-e714ea09eac74debc74eecc74fe7c74a
-e8c74be9c74ce409e4c747e5c748e6c7
-49e1c744e2c745e3c7460010ee26f418
-f4c717f5c718f8c719f9c71afa012aad
-e24212656ee7ade3eec713efc714f2c7
-15f3c716e90ce9c70feac710ecc711ed
-c712e1c70be2c70ce4c70de8c70e0016
-ed2af414f709f7c730f8c731fac732f4
-c72df5c72ef6c72ff109f1c72af2c72b
-f3c72cedc727eec728efc729e61ee913
-e92ceac725ebc726012ac7234212656e
-e7c724e6c720e7c721e8c722e1c71be2
-c71ce3c71de4c71ee5c71f0011ef1df6
-0ff6c73ff7c740f8c741f9c742fac743
-efc73bf1c73cf2c73df5c73ee90fe9c7
-37eac738ebc739edc73aeea5fce1c733
-e3c734e5c735e7c73665c16965a26766
-a2ad67a2ba68a40f690016ee34f51ef8
-09f8c708f9c709fac70af5c704f626f7
-c707012ac7054c126174eec706f209f2
-c701f3c702f4c703eec5feefc5fff1c7
-00e714ea09eac5fbecc5fcedc5fde7c5
-f8e8c5f9e9c5fae1c5f3e2c5f4e4c5f5
-e5c5f6e6c5f70014ed25f414f809f8c5
-bdf9c5befac5bff4c5baf5c5bbf7c5bc
-edc5b5eec5b6efc5b7f1c5b8f2c5b9e7
-0fe7c5b0e8c5b1e9c5b2eac5b3ebc5b4
-e1c5abe2c5ace3c5ade4c5aee5c5af04
-e1c5c0e4c5c1ecc5c2f2c5c3f5c5c400
-17ee2af514f809f8c5daf9c5dbfac5dc
-f5c5d7f6c5d8f7c5d9f209f2c5d5f3c5
-d6f4bf41eec5d2f0c5d3f1c5d4e814eb
-09ebc5cfecc5d0edc5d1e8c5cce9c5cd
-eac5cee409e4c5c9e5c5cae7c5cbe1c5
-c6e2c5c7e3c5c80015ef25f514f809f8
-c5f0f9c5f1fac5f2f5c5edf6c5eef7c5
-efefc5e8f0c5e9f1c5eaf2c5ebf4c5ec
-e614eb09ebc5e5edc5e6eec5e7e6c5e2
-e7c5e3e9c5e4e1c5dde2c5dee3c5dfe4
-c5e0e5c5e161a26862a2b363a4116400
-17ee33f51df812f8c5a6f926fac5a922
-012ac5a75410c4c5a8f5c5a3f6c5a4f7
-c5a5f209f2c5a0f3c5a1f4c5a2eec59d
-f0c59ef1c59fe814eb09ebc59aecc59b
-edc59ce8c597e9c598eac599e409e4c5
-94e6c595e7c596e1c591e2c592e3c593
-0015ee25f314f809f8c55ef9c55ffac5
-60f3c55bf4c55cf7c55deec556efc557
-f0c558f1c559f2c55ae614eb09ebc553
-ecc554edc555e6c550e7c551eac552e1
-c54be2c54ce3c54de4c54ee5c54f0014
-ed2ff21ef609f6c577f7c578f9c579f2
-c573f426f5c576012ac57444126576e1
-c575edc56eeec56fefc570f0c571f1c5
-72e61de638e8c56ae9c56beac56cebc5
-6d012ac5674811616e01f3c568f4c569
-e1c562e2c563e3c564e4c565e5c56600
-15ec2ef11df509f5c58df8c58efac58f
-f1c6faf2c58af4012ac58b4212656ee7
-c58cecc586edc587eec588efc589f0b9
-5be614e909e9c583eac584ebc585e6c5
-80e7c581e8c582e1c57ae232e3c57de4
-c57ee5c57f012ac57b44126576e1c57c
-66df6969d51369ac536ab2216bb65a6c
-002272c13fe11dee0feebf5eefbf6cf4
-bfa0f5bfa8f6bfc0e1bd88e2bd9fe7bd
-ebe9bf04765a764c776878a24879a249
-7a03e8bfd2ecbfd3eebfd4fabfd504e1
-bfc1e9bfc2ebbfc3f3bfc0f5bfc408ec
-18ecbfc9edbfcaef2cf4bfcdf7bfce22
-012abfcb5a10c1bfcce1bfc5e5bfc6e7
-bfc7e8bfc810edbfcf01e1bfd0eebfd1
-72a26673a28e74a2a3750015ef36f414
-f709f7bfbef9ab46fabfbff4bfbbf5bf
-bcf6bfbdefbfb4f0bfb5f1bfb6f2bfb7
-f3012abfb84201652c721161e9bfba11
-6ee7bfb9e914ec09ecbfb1edbfb2eebf
-b3e9bfaeeabfafebbfb0e1bfa9e3bfaa
-e4bfabe5bface6bfad0bed14f409f4bf
-96f6bf97fabf98edbf93eebf94efbf95
-e909e9bf90ebbf91ecbf92e1bf8de3bf
-8ee7bf8f06e90ce9bf9cedbf9df2bf9e
-f3bf9fe1bf99e4bf9ae5bf9b06ee0cee
-bfa4efbfa5f3bfa6f5bfa7e7bfa1e8bf
-a2e9bfa369c2116dc11b6d3c6ea2676f
-a29270a2f67110f2bf8c0016ec2af214
-f709f7bf5bf8bf5cf9bf5df2bf58f5bf
-59f6bf5aef09efbf55f0bf56f1bf57ec
-bf52edbf53eebf54e61de912e9bf4eea
-bf4feb012abf504d12796df2bf51e6bf
-4be7bf4ce8bf4de1bf46e2bf47e3bf48
-e4bf49e5bf4a0cec17f30cf3bf68f5bf
-69f7bf6afabf6becbf65edbf66eebf67
-e809e8bf62e9bf63eabf64e1bf5fe2bf
-60e4bf610016ee3ef428f813f8bf82f9
-26fabf85012abf8354126962f4bf84f4
-2cf5bf80f7bf81012abf7e41127261e2
-bf7ff109f1bf7bf2bf7cf3bf7deebf78
-efbf79f0bf7ae814eb09ebbf75ecbf76
-edbf77e8bf72e9bf73eabf74e1bf6de2
-bf6ee3bf6fe5bf70e7bf7104e1bf86e5
-bf87eebf88ef26f8bf8b012abf894c12
-6973f5bf8a69a2456aa29a6ba2af6c00
-11eb1def0fefbf41f0bf42f1bf43f5bf
-44f8bf45ebbf3decbf3eedbf3feebf40
-e50fe5bf38e6bf39e7bf3ae9bf3beabf
-3ce1bf34e2bf35e3bf36e4bf370015ef
-25f514f809f8bf19f9bf1afabf1bf5bf
-16f6bf17f7bf18efbf11f0bf12f1bf13
-f2bf14f3bf15e61eea09eabf0eebbf0f
-ecbf10e62ce7bf0ce8bf0d012abf0a4c
-12696de2bf0be1bf05e2bf06e3bf07e4
-bf08e5bf0906ec0cecbf1ff0bf20f7bf
-21f8bf22e1bf1ce5bf1de9bf1e0010ec
-1df20ff2bf2ff3bf30f4bf31f5bf32f9
-bf33ecbf2bedbf2ceebf2defbf2ee50c
-e5bf27e8bf28e9bf29eabf2ae1bf23e2
-bf24e3bf25e4bf2665c0cf656466a27d
-67a28a6807ee0ceebf00f3bf01f4bf02
-f5bf03e1bdfce8bdfde9bdfeedbdff00
-19ee2df417f70cf7bde4f8bde5f9bde6
-fabde7f4bde1f5bde2f6bde3f109f1bd
-def2bddff3bde0eebddbefbddcf0bddd
-e717ea0ceabdd7ebbdd8ecbdd9edbdda
-e7b139e8bdd5e9bdd6e409e4bdd2e5bd
-d3e6bdd4e1bdcfe2bdd0e3bdd101e1bd
-e8ee012abde943127972ecbdea0eed1a
-f20cf2bdf8f4bdf9f5bdfafabdfbedbd
-f4eebdf5efbdf6f1bdf7e80ce8bdf0e9
-bdf1ebbdf2ecbdf3e1bdece2bdede701
-2abdee41127261e2bdef619062a29163
-a2f9640deb17ee0ceebdcbefbdccf0bd
-cdf1bdceebbdc8ecbdc9edbdcae70ce7
-bdc4e8bdc5e9bdc6eabdc7e1bdc1e2bd
-c2e4bdc30014ec2ff21ef713f7bd9bf8
-26fabd9e012abd9c4212656ee7bd9df2
-bd98f3bd99f5bd9aecbd93edbd94eebd
-95f0bd96f1bd97e70fe7bd8fe8bd90e9
-bd91eabd92ebbbd0e1bd89e2bd8ae3bd
-8be4bd8ce5012abd8d54126962f4bd8e
-0013ef2af60ff6bdb2f7bdb3f8bdb4f9
-bdb5fabdb6ef38f1bdaef2bdaff4bdb0
-f5bdb1012abdac4c126174eebdadea22
-ea4aeba948ecbda8edbda9ee012abdaa
-4c12616fefbdab012abda641127261e2
-bda7e2bda0e3bda1e5bda2e626e9bda5
-012abda354126962f4bda409ec0fecbd
-bcedbdbdf0bdbef1bdbff3bdc0e3bdb7
-e4bdb8e5bdb9e6bdbae8bdbb002474bf
-e520ef0fefb73bf3b5e4f4b758f5b711
-f7b76fe5b5f2e7b5fbe9b70aebb152ee
-b732782a7834793e7a4ee1b5d3e4b5e7
-01e3b774ecb77502e1b776efb777f8b7
-7803e8b779e9b16af2b77afab77b7448
-75a24876a2627703ebb770edb771efb7
-72f3b7730ff21af70cf7b765f8b766f9
-b767fab768f2b761f3b762f4b763f6b7
-64eb0cebb75decb75eedb75fefb760e2
-b759e4b75ae5b75be9b75c10ed032ab7
-6948324c3a54126861e9b76c12616ee9
-b76a12616fefb76b01e2b76df6b76e6b
-c12c6f796f9470a24171a24572a24973
-0aeb1eef09efb755f4b756f5b757eb2c
-edb753eeb754012ab75143127972ecb7
-52e1b74ce3b74de4b74ee8b74fe9b750
-02f2b73cf5b73df7b73e01e9b73fefb7
-4001f5b741f7b74207ee16eeb747f52c
-f8b74af9b74b012ab7484d126c79edb7
-49e5b743e8b744e9b745ebb7466b646c
-a2546da28e6e07ee0ceeb737efb738f0
-b739f4b73ae2b733e7b734e8b735eab7
-360bf21ef709f7b71bf8b71cfab71df2
-b717f426f6b71a012ab7184312616ef3
-b719ec09ecb714efb715f0b716e5b711
-e9b712ebb7130bed14f509f5b728f6b7
-29f7b1d2edb725efb726f0b727e91be9
-2cebb724ecb725022ab721412e431279
-72ecb723127261e2b722e1b71ee2b71f
-e7b72007f20cf2b72ef3b72ff4b730f9
-b731e9b72aecb72beeb72cefb72d666f
-6652678468a25769a2616a04e3b70ce5
-b70deab70eeeb70ff3b71007eb0cebb5
-f7edb5f8f5b5f9f9b5fae1b5f3e2b5f4
-e5b5f5e6b5f608ed19edb700eeb701ef
-b702f326f7b705012ab70347127265eb
-b704e2b5fce5b5fde7b5feecb5ff03e2
-b706e9b707f0b708f7b70910eeb70b61
-6e627e63a25a6409e90fe9b5edf2b5ee
-f3b5eff4b5f0f5b5f1e1b5e8e2b5e9e3
-b5eae4b5ebe5b5ec02e9b5d4eeb5d5f2
-b5d60ce917ee0ceeb5dff2b5e0f5b5e1
-f9b5e2e9b5dcecb5ddedb5dee509e5b5
-d9e7b5dae8b5dbe1a918e2b5d7e4b5d8
-03e1b5e3e5b5e4e8b5e5f2b5e600186e
-c0d67628e10ce1b77ce9b7b3f6b7fbf7
-b7fe763a77447902e1b900e5b901f9b9
-0201e4b7fceeb7fd10e9b7ff715b7194
-7298750fee1af40cf4b7f7f5b7f8f7b7
-f9f9b7faeeb7f3efb7f4f0b7f5f2b7f6
-e90ce9b7efebb7f0ecb7f1edb7f2e1b7
-ebe2b7ece4b7ede8b7ee10f2b7e504e1
-3ae2d84043f2b7e8f4b7e9f5b7ea012a
-b7e64b12686df2b7e76e346f967001e1
-b7e3f2b7e406e927e9b7d7ea4eecb7da
-f3022ab7db4c2e5412616bf2b7dd1261
-74eeb7dc012ab7d845127468e9b7d9e1
-b7d4e4b7d5e7b7d604e2b7dee4b7dfe7
-b7e0f2b7e1f7b7e268796b3c6b726c88
-6d0aec14f309f3b7d1f7b7d2f8b7d3ec
-b7ceeeb7cff2b7d0e1b7c9e2b7cae3b7
-cbe4b7cce9b7cd03e1b7c2edaabdefb7
-c6f5b7c710e5b7c8683469386a01e5b7
-c0f2b7c110e9b7b20bec14f509f5b7bd
-f6b7bef9b7bfecb7baedb7bbf4b7bce4
-09e4b7b7e5b7b8e7b7b9e1b7b4e2b7b5
-e3b7b66462645465866703e2b7aee52c
-ebb78aefb7b1012ab7af48126562f2b7
-b002e1b79ee7b79ff4022ab7a0482e4c
-126174eeb7a2126562f2b7a109ec0fec
-b7a9eeb7aaf2b7abf4b7acf5b7ade2b7
-a3e5b7a4e82ce9b7a7ebb7a8012ab7a5
-4c12616fefb7a6614262a2576310f401
-2ab79c4c126174eeb79d0014ed25f314
-f809f8b78ef9b78ffab790f3b78bf4b7
-8cf5b78dedb786eeb787efb788f1b789
-f2b78ae60fe6b782e8b783eab784ebb7
-85ecb5a2e1b77de2b77ee3b77fe4b780
-e5b7810aee14f409f4b799f5b79af7b7
-9beeb796efb797f2b798e5b791e9b792
-eab793ebb794edb795002875c2e6eb74
-f23ff628f6bb8af7bd23f9022a32414c
-4c126174eebd56022abd54432a5410d2
-bd5610cebd55127261e2bd55f2aecef3
-bbc0f5022aae0641ae125912657ae9bb
-3deb38ecbb0bedbb27eebb46efbb6201
-2a2e41127261e2b9ee042ab9ec413243
-36493a4d10ceb9f010c6b9ed10ceb9ee
-10d2b9ef7a617a38e1b325e7b98fe9b9
-bdeab9d40016ee2af514f809f8bd85f9
-bd86fabd87f5bd82f6bd83f7bd84f209
-f2bd80f3bd81f4afc0eebd7defbd7ef0
-bd7fe614eb09ebafaaecbd7bedbd7ce6
-bd79e9bd7aeaafc0e1bd74e2bd75e3bd
-76e4bd77e5bd7875a28976a2de77a43d
-78a495790018ed51f43bf71ef732f8bd
-71f9bd72fabd73022abd6e422e4f1272
-79e1bd7012656ee7bd6ff4bd69f526f6
-bd6d022abd6a4c2e4d12796df2bd6c12
-6174eebd6bf109f1bd66f2bd67f3bd68
-edbd63eebd64efbd65e714ea09eabd60
-ebbd61ecbd62e7bd5de8bd5ee9bd5fe4
-09e4bd5ae5bd5be6bd5ce1bd57e2bd58
-e3bd590017ee2af514f809f8bd08f9bd
-09fabd0af5bd05f6bd06f7bd07f109f1
-bd02f3bd03f4bd04eebbffefbd00f0bd
-01e814eb09ebbbfcecbbfdedbbfee8bb
-f9e9bbfaeabbfbe509e5bbf6e6bbf7e7
-bbf8e2bbf3e3bbf4e4bbf50017ee34f4
-14f809f8bd20f9bd21fabd22f4bd1df6
-bd1ef7bd1ff113f12cf2bd1cf3b30e01
-2abd1a4c126174eebd1beebd17efbd18
-f0bd19e714ea09eabd14ecbd15edbd16
-e7bd11e8bd12e9bd13e409e4bd0ee5bd
-0fe6bd10e1bd0be2bd0ce3bd0d0018ed
-2df317f60cf6bb6bf7bd39f9bd3afabd
-3bf3bd36f4bd37f5bd38f009f0bd33f1
-bd34f2bd35edbd30eebd31efbd32e714
-ea09eabd2debbd2eecbd2fe7bd2ae8bd
-2be9bd2ce409e4bd27e5bd28e6bd29e1
-bd24e2bd25e3bd260015ee25f414f809
-f8bd51f9bd52fabd53f4bd4ef6bd4ff7
-bd50eebd49efbd4af0bd4bf1bd4cf2bd
-4de61eeb09ebbd47ecbbbaedbd48e62c
-e9bd45eabd46012abd434c126174eebd
-44e1bd3ce2bd3de32ae43ce5bd42012a
-bd3e45127468e9bd3f012abd40411272
-61e2bd416bc42170c1fe70a26f71a2d8
-72a43d73a48d740018ee2df417f70cf7
-bbf0f8bbf1f9bbf2faa5a5f4bbedf5bb
-eef6bbeff109f1bbebf2afc0f3bbecee
-bbe8efbbe9f0bbeae814eb09ebbbe5ec
-bbe6edbbe7e8bbe2e9bbe3eabbe4e409
-e4bbdfe6bbe0e7bbe1e1bbdbe226e3bb
-de012abbdc4c126174eebbdd0018ee3e
-f417f70cf7bb8bf8bb8cf9bb8dfabb8e
-f4bb88f5bb89f6bb8af109f1bb85f2bb
-86f3bb87eebb83efbb84f0022ab7c342
-2e4c126174eeb7c5127261e9b7c4e814
-eb09ebbb80ecbb81edbb82e8bb7de9bb
-7eeabb7fe509e5bb7ae6bb7be7bb7ce1
-bb77e3bb78e4bb790019ee37f421f716
-f7bba5f8bba6f926fabba9012abba74c
-126174eebba8f4bba2f5bba3f6bba4f1
-09f1bb9ff2bba0f3bba1eebb9cefbb9d
-f0bb9ee717ea0ceabb98ebbb99ecbb9a
-edbb9be7bb95e8bb96e9bb97e409e4bb
-92e5bb93e6bb94e1bb8fe2bb90e3bb91
-0016ed2af514f809f8bbbdf9bbbefabb
-bff5bbbaf6bbbbf7bbbcf209f2bbb7f3
-bbb8f4bbb9eda932eebbb5f0bbb6e614
-ea09eabbb2ebbbb3ecbbb4e6bbafe8bb
-b0e9bbb1e1bbaae2bbabe3bbace4bbad
-e5bbae0018ed37f321f616f6bbd6f72c
-f8bbd9fabbda012abbd74c126174eebb
-d8f3bbd3f4bbd4f5bbd5f009f0bbd0f1
-bbd1f2bbd2edbbcdeebbceefbbcfe714
-ea09eabbcaebbbcbecbbcce7bbc7e8bb
-c8e9bbc9e409e4bbc4e5bbc5e6bbc6e1
-bbc1e2bbc2e3bbc36ba2536ca2b56da4
-196ea49d6f0014ec25f414f709f7bb74
-f9bb75fabb76f4bb71f5bb72f6bb73ec
-bb6cefbb6df0bb6ef1bb6ff3bb70e70f
-e7bb68e8bb69e9bb6aeabb6bebbb54e1
-bb63e3bb64e4bb65e5bb66e6bb670018
-ed2df417f70cf7bb07f8bb08f9bb09fa
-bb0af4bb04f5bb05f6bb06f109f1bb01
-f2bb02f3bb03edb9feefb9fff0bb00e7
-14ea09eab9fbebb9fcecb9fde7b9f8e8
-b9f9e9b9fae413e4b9f4e526e6b9f701
-2ab9f541127261e2b9f6e1b9f1e2b9f2
-e3b9f30019ee36f417f70cf7bb23f8bb
-24f9bb25fabb26f4bb20f5bb21f6bb22
-f112f1bb1cf2bb1df3012abb1e411272
-61e2bb1feebb19efbb1af0bb1be717ea
-0ceabb15ebbb16ecbb17edbb18e7bb12
-e8bb13e9bb14e409e4bb0fe5bb10e6bb
-11e1bb0ce2bb0de3bb0e0019ee4df417
-f70cf7bb42f8bb43f9bb44fabb45f4bb
-3ff5bb40f6bb41f129f1bb38f226f3bb
-3e022a32414c5912657ae9bb3d022abb
-39492a4c10c2bb3b10d2bb3a127261e2
-bb3ceebb35efbb36f0bb37e717ea0cea
-bb32ebbb33ecb996edbb34e7bb2fe8bb
-30e9bb31e409e4bb2ce5bb2de6bb2ee1
-bb28e2bb29e3012abb2a4812616ee9bb
-2b0018ee36f417f70cf7bb5ef8bb5ff9
-bb60fabb61f4bb5bf5bb5cf6bb5df112
-f1bb57f2bb58f3012abb5954126861e9
-bb5aeebb54efbb55f0bb56e71eeb13eb
-2cecbb52edbb53012abb5041127261e2
-bb51e7b98fe9bb4eeabb4fe409e4bb4b
-e5bb4ce6bb4de1bb47e2bb48e3012abb
-4941127261e2bb4a66c1e866a26267a2
-e468a43469a48e6a0015ed2ff214f509
-f5b9e9f8b9eaf9b9ebf2b9e6f3b9e7f4
-b9e8edb9e0eeb9e1efb9e2f026f1b9e5
-012ab9e354126861e9b9e4e714ea09ea
-b9ddebb9deecb9dfe7b9dae8b9dbe9b9
-dce1b9d5e2b9d6e3b9d7e4b9d8e5b9d9
-0015ee2ff31ef813f82cf9b98dfab98e
-012ab98b5412616bf2b98cf3b988f6b9
-89f7b98aeeb983efb984f0b985f1b986
-f2b987e641eb13eb2cecb981edb98201
-2ab97f5412616bf2b980e63ee8b97ce9
-012ab97d4b126e64e1b97e032ab97844
-324f3a5412656cf5b97b126576e1b979
-127279e1b97ae1b973e2b974e3b975e4
-b976e5b9770014ef25f414f709f7b9a3
-f8b9a4f9b9a5f4b9a0f5b9a1f6b9a2ef
-b99bf0b99cf1b99df2b99ef3b99fe80f
-e8b996eab997ebb998ecb999edb99ae1
-b990e2b991e42ce5b994e6b995012ab9
-9254126861e9b9930016ee34f514f809
-f8b9baf9b9bbfab9bcf5b9b7f6b9b8f7
-b9b9f213f22cf3b9b5f4b9b6012ab9b3
-44126576e1b9b4eeb9b0f0b9b1f1b9b2
-e614ea09eab9aeebccb6ecb9afe6b9ab
-e7b9ace8b9ade1b9a6e2b9a7e3b9a8e4
-b9a9e5b9aa0015ef25f514f809f8b9d1
-f9b9d2fab9d3f5b9cef6b9cff7b9d0ef
-b9c9f0b9caf1b9cbf3b9ccf4b9cde614
-ea09eab9c6ecb9c7edb9c8e6b9c3e7b9
-c4e8b9c5e1b9bee2b9bfe3b9c0e4b9c1
-e5b9c261a26262a29a63a40364a45365
-0015ed2ff41ef813f82cf9b971fab972
-012ab96f4712756af2b970f4b96cf5b9
-6df7b96eedb967eeb968efb969f2b96a
-f3b96be614e909e9b964ebb965ecb966
-e6b961e7b962e8b963e1b95ce2b95de3
-b95ee4b95fe5b9600010eb1df10ff1b9
-0ff6b910f7b911f8b912f9b913ebb90b
-edb90cefb90df0b90ee70ce7b907e8b9
-08e9b909eab90ae1b903e2b904e3b905
-e4b9060017ef3ef514f809f8b92bf9b9
-2cfab92df5b928f6b929f7b92af213f2
-2cf3b926f4b927012ab92445127468e9
-b925efb920f026f1b923012ab9214212
-7261e9b922e914ec09ecb91dedb91eee
-b91fe9b91aeab91bebb91ce409e4b917
-e5b918e8b919e1b914e2b915e3b91600
-16ec2af314f609f6b942f7b943fab944
-f3b93ff4b940f5b941ef09efb93cf0b9
-3df1b93eecb939edb93aeeb93be614e9
-09e9b936eab937ebb938e6b933e7b934
-e8b935e1b92ee2b92fe3b930e4b931e5
-b9320015ed2ef414f809f8b959f9b95a
-fab95bf4b956f6b957f7b958edb950ee
-b951f0b952f1b953f2012ab954431279
-72ecb955e714ea09eab94debb94eecb9
-4fe7b94ae8b94be9b94ce1b945e3b946
-e4b947e5b948e6b94966a85c67aae168
-001e72c10be51af40cf4b5abf5b5b1f9
-a568fab5d2e5b536e9b544efb586f2b5
-99763f765877747984e122032ab51237
-2e43345310c4b5131133b6b51310cdb5
-1404e3b5c8e5b5c9ebb5caeeb5cbf6b5
-cc02e1b5cde3b5ceefb5cf01e1b5d0f7
-b5d172a25973a28e74a295750014ed2e
-f514f809f8b5c5f9b5c6fab5c7f5b5c2
-f6b5c3f7b5c4edb5bcf0b5bdf2b5bef3
-b5bff4012ab5c054126962f4b5c1e70f
-e7b5b7e8b5b8e9b5b9ebb5baecb5bbe2
-b5b2e3b5b3e4b5b4e5b5b5e6b5b60cf0
-17f50cf5b5a4f7b5a5f8b5a6fab5a7f0
-b5a1f2b5a2f4b5a3eb13ebb59ded26ef
-b5a0012ab59e48126d6ee7b59fe1b59a
-e3b59be5b59c02e2b5a8eeb5a9f3b5aa
-04e9b5acefb5adf3b5aef5b5aff8b5b0
-69c1716dc0f16d366ea24c6fa2ae7010
-efb5980010f126f518f5b56df6b56ef7
-b56ff9b570fa012ab57150126c72e4b5
-72f1b569f2b56af3b56bf4b56cea0cea
-b566edb567eea464f0b568e1b562e2b5
-63e4b564e6b56509e953e9b578ea32ee
-b583efb584f3b585012a2e4c12616fef
-b57f0a4721531053d825a154d8259056
-01c4b582ceb58247d825a44c2a4d10cd
-b57b10c1b57f2ab57941d825ab42d825
-a343d8258e4601d2b57dd8b57de1b573
-e4b574e5b575e7b576e8b5770010ec1d
-f20ff2b593f4b594f6b595f7b596f9b5
-97ecb58fedb590efb591f0b592e50ce5
-b58be8b58ce9b58deab58ee1b587e2b5
-88e3b589e4b58a694e6aa2556ba2566c
-04e1b55de2b55ee4b55ff4b560f5b561
-0feb1af20cf2b552f4b553f7b554f8b5
-55ebb54eecb54fedb550efb551e716e7
-b549e8b54ae926eab54d012ab54b4412
-6576e1b54ce1b545e2b546e4b547e6b5
-4810e9b55603e1b557e5b558e826ebb5
-5c022ab559442e4c126174eeb55b1265
-76e1b55a64506440655c67a2426802e9
-b541f2b542f9b54301eeb51bf9012ab5
-344c126174eeb53505e809e8b53ce9b5
-3dedb53ee12ce4b53ae7b53b022ab537
-422e48126d6ee7b539126f70efb53801
-edb53ff7b540613062a26d6310e8b533
-0015ee36f314f809f8b52bf9b52cfab5
-2df3b528f6b529f7b52aeeb521efb522
-f0b523f1b524f2022ab525412e4c1261
-74eeb527127261e2b526e81deb09ebb5
-1eecb51fedb520e8b51ae9b51bea012a
-b51c4212656ee7b51de1b515e3b516e4
-b517e5b518e7b51904e1b52ee2b52fee
-b530efb531f5b532001771b1e614ef09
-efb19df2b1a6f9b1c4e6a26ce9b185ea
-b18e7612762a772ee1b16c10f2b1c101
-e1b1c2e5b1c371a25a72a25b750eed1a
-f40cf4b1bdf5b1bef6b1bff9b1c0edb1
-b9eeb1baf1b1bbf2b1bce524e5b1b3e6
-b1b4e826e9b1b8012a2e41127261e2b1
-b7022ab1b5422a4810d6b1b610c6b1b6
-e2b1b1e326e4b1b2012ab1804112646c
-edb18110f3b1a50aef14f209f2b1aef3
-b1aff4b1b0efb1abf0b1acf1b1ade3b1
-a7e4b1a8e5b1a6ebb1a9edb1aa6b556e
-286e2e6f3e7010e5b1a402e2b19ae7b1
-9be9b19c05ee09eeb1a1f2b1a2f3b1a3
-e4b19ee9b19fedb1a06b346c3e6d01f0
-b198f5b19901ebb18ff6b19006ec0cec
-b194eeb195f2b196f9b197e1b191e8b1
-92e9b193662b665c67666907f00cf0b1
-8af2b18bf4b18cf7b18de1b186e5b187
-e6b188ecb18901e9b182edb18310f2b1
-84613062a2466510f2b17f0012ec20f4
-0ff4a3c6f5b17bf8b17cf9b17dfab17e
-ecb176edb177eeb178f0b179f2b17ae7
-0fe7b171e8b172e9b173eab174ebb175
-e1b16de2b16ee4b16fe6b17010eca7bc
-001f71c1bc795eec0cecb364eeb37ef5
-b3ccf6b3e379327aa241e1b1c5e4b304
-0dec21ef0cefb50bf2b50cf9b50dfab5
-0eec2cedb509eeb50a012ab507451274
-68e9b508e50ce5b503e6b504e7b505e9
-b506e1aaf4e2b501e4b50202e1b50fe9
-b510eeb51175c0cf753676a26577a290
-7810f8b5000016ed2af414f709f7b3e0
-f8b3e1fab3e2f4b3def5b3dff6afe0f0
-09f0b3dbf1b3dcf2b3ddedb3d8eeb3d9
-efb3dae61ee913e9b3d4eb26ecb3d701
-2ab3d545127468e9b3d6e6b3d2e7b37e
-e8b3d3e1b3cde2b3cee3b3cfe4b3d0e5
-b3d10ced17f00cf0b3edf2b336f3b3ee
-f9b3efedb3eaeeb3ebefb3ece609e6b3
-e7eab3e8ecb3e9e1b3e4e3b3e5e5b3e6
-0fea1af40cf4b3fcf5b3fdf7b3fef8b3
-ffeab3f8edb3f9eeb3faf2b3fbe50ce5
-b3f4e6b3f5e7b3f6e9b3f7e1b3f0e2b3
-f1e3b3f2e4b3f37140725073a2737402
-e1b3cae9b3cbf5b33702e1b3aeeeb3af
-f2b3b00012ed29f60ff6b3c0f7b3c1f8
-b3c2f9b3c3fab3c4edb3baf1b3bbf3b3
-bcf4b3bdf5012ab3be4c126174eeb3bf
-e50fe5b11be7b3b6e8b3b7e9b3b8eab3
-b9e130e2b1f2e33ce4b3b5012ab3b147
-12756af2b3b2012ab3b34c12696ee2b3
-b404ecb3c5eeb3c6efb3c7f0b3c8f7b3
-c969c1976dc0f06d426ea2466fa28770
-02e1b3abe5b3aceeb3ad0cee21f616f6
-32f8b37bf9b37cfab37d012ab3794c12
-6174eeb37aeeb376f2b377f5b378e709
-e7b373e8b374edb375e1b370e2b371e4
-b3720013ec20f20ff2b38ef4b38ff5b3
-90f7b391fab392ecb389edb38aeeb38b
-efb38cf1b38de70fe7b384e8b385e9b3
-86eab387ebb388e1b37fe2b380e3b381
-e4b382e5b3830017ee2af414f709f7b3
-a8f8b3a9f9b3aaf4b3a5f5b3a6f6b3a7
-f109f1b3a2f2b3a3f3b3a4eeb38cefb3
-a0f0b3a1e714eb09ebb39decb39eedb3
-9fe7b39ae8b39be9b39ce412e4b396e5
-b397e6012ab3984c126174eeb399e1b3
-93e2b394e3b39569846aa26d6ba2846c
-0beb14f209f2b36df5b36ef7b36febb3
-6aecb36befb36ce809e8b368e9afaaea
-b369e2b365e3b366e4b3670011ee1df3
-0ff3b352f4b353f8b354f9b355fab356
-eeb34ef0b34ff1b350f2b351e50fe5b3
-49e7b34ae8b34becb34cedb34de1b345
-e2b346e3b347e4b34804ebb357edb358
-ee2cf2b35bf5b35c012ab35941127261
-e2b35a06ee0ceeb360efb361f0b362f5
-b363e1b35de4b35ee5b35f65af658866
-a27567a2796807ee0ceeb341f2b342f3
-b343f4b344e132e3b33ee5b33febb340
-022ab33b4c2e5412666ee7b33d126174
-eeb33c0013ec20f60ff6b328f7b329f8
-b32af9b32bfab32cecb324efb325f1b3
-26f2af0df3b327e70fe7b31fe8b320e9
-b321eab322ebb323e1b31ae2b31be3b3
-1ce4b31de6b31e01ebb32df8b32e0cec
-17f20cf2b337f4b338f5b339f7b33aec
-b335eeb336efb14fe509e5b332e7b333
-ebb334e1b32fe2b330e4b33161a25c62
-a2ca63a43f640012eb2af10ff1b315f2
-b316f4b317f5b318f8b319ebb30fec32
-edb312eeb313efb314012ab310451274
-68e9b311e60fe6b30ae7b30be8b30ce9
-b30deab30ee232e3b307e4b308e5b309
-012ab3055412656cf5b3060019ee37f4
-21f716f7b1dcf82cf9b1dffab1e0012a
-b1dd45127468e9b1def4b1daf5b1dbf6
-af1df109f1b1d7f2b1d8f3b1d9eeb1d4
-efb1d5f0b1d6e717ea0ceab1d0ebb1d1
-ecb1d2edb1d3e7b1cde8b1cee9b1cfe4
-09e4b1cae5b1cbe6b1cce1b1c6e2b1c7
-e3012ab1c844126576e1b1c90018ed2d
-f317f70cf7b1f9f8b1faf9b1fbfab1fc
-f3b1f6f5b1f7f6b1f8f009f0b1f3f1b1
-f4f2b1f5edb1f0eeb1f1efb1f2e727ea
-1ceab1ebeb38ec012ab1ee44126576e1
-b1ef012ab1ec5412616bf2b1ede7b1e8
-e8b1e9e9b1eae409e4b1e5e5b1e6e6b1
-e7e12ce2b1e3e3b1e4012ab1e1411272
-61e2b1e206ec0cecb300eeb301f2b302
-f4b303e3b1fde4b1fee6b1ff63cc8363
-a60664b0c365001c72c0c47a29ef0cef
-b142f3b14df4b113f5a7107a44e5b101
-ecb11bee012ab13153126861f7b13201
-e1b16ae5b16b76317638776a786e7901
-e1b168efb16902e5b161e8b162ee022a
-b1634c2e4d126f6ee7b165126174eeb1
-6410efb16610f4b167726273947408f3
-0ff3b15cf4b15df5b15ef8b15ffab160
-e2b158eeb159efb15af2b15b07eb0ceb
-b149f2b14af4b14bf7b14ce1b145e7b1
-46e8b147e9b14808eb19ebb152edb153
-f32cf5b156f9b157012ab15443127972
-ecb155e5b14ee7b14fe8b150e9b1516a
-c0e06d916d366ea2546fa2857010e9b1
-440dee20f50cf5b12df7b12ef8b12ffa
-b130eeb129f0b12af3012ab12b431279
-72ecb12ce71ee7b124e9b125eb26edb1
-28012a2e4e126b6fefb127012ab12647
-10ceb127e1b121e2b122e5b1230eed1a
-f20cf2b13ef6b13ff7b140f8b141edb1
-3aeeb13befb13cf1b13de40ce4b136e6
-b137e8b138ecb139e1b133e2b134e3b1
-3510f4b1436a506b546c05ef09efb11f
-f0a501f5b120e5b11cebb11dedb11e10
-e1b10e0aec1df009f0b118f2b119f9b1
-1aecb114edb115ef012ab11641127261
-e2b117e1b10fe5b110e7b111e9b112eb
-b113662f663e674e686a6902f0b10bf4
-b10cf6b10d02e1b102e5b103e9b10404
-e1b105ecb106edb107efb108f9b10910
-f5b10a613462386301f2affff9b10010
-e1aff905ef09efaffcf2affdf5affee3
-affae7affbeba7fb002172c19ee127f2
-19f2ad77f3ad8ff52cf6adc1f9adca01
-2aadb147126c61e7adb2e1ab81e5abc7
-e8abd8efad5676527660777e79a2417a
-04e5ad8fe832ebadd0eeadd1f4add201
-2aadce4812616ef4adcf01e726eeadc4
-012aadc254126962f4adc305e509e5ad
-c7e7adc8f4adc9e1adc5e2adc6e4ad77
-02e1adcbe2adccefadcd729073a29274
-a2d3750dec17f40cf4adbdf5adbef6ad
-bff8adc0ecadbaefadbbf0adbce80ce8
-adb6e9adb7eaadb8ebadb9e1adb3e2ad
-b4e3adb50014ed2ff41ef813f82cf9ad
-8dfaad8e012aad8b4312616ef3ad8cf4
-ad88f6ad89f7ad8aedad83eead84efad
-85f1ad86f3ad87e819e8ad7de9ad7eea
-2cebad81ecad82012aad7f4c126174ee
-ad80e2ad78e3ad79e4ad7ae6ad7be7ad
-7c0df021f60cf6ad9cf7ad9df9ad9efa
-ad9ff02cf3ad9af4ad9b012aad984812
-616ef4ad99ea0ceaad94ebad95edad96
-efad97e1ad90e2ad91e8012aad924c12
-6174eead930eed1af30cf3adadf4adae
-f5adaffaadb0edada9eeadaaefadabf0
-adace51ee5ada3e72ce8ada7ecada802
-2aada4412e4c126174eeada6127261e2
-ada5e1ada0e3ada1e4ada269c1f86dc0
-ec6d3c6ea2426fa27a70a2bb7110e4ad
-760aec25f209f2ad1cf3ad45f4ad46ec
-ad41eea61cef012a2e4b12686df2ad44
-012aad424b10c8ad43e1ad3ce5ad3de7
-ad3ee9ad3febad400dec21f30cf3ad52
-f4ad53f7ad54f8ad55ecad4ef026f1ad
-51012aad4f4812616ef4ad50e70ce7ad
-4ae8ad4be9ad4cebad4de1ad47e2ad48
-e3ad490013ec20f40ff4ad66f5ad67f8
-ad68f9ad69faad6aecad61edad62efad
-63f0ad64f1ad65e60fe6ad5ce7ad5de8
-ad5eeaad5febad60e1ad57e2ad58e3ad
-59e4ad5ae5ad5b0aee14f509f5ad73f8
-ad74f9ad75eead70efad71f3ad72e1ad
-6be2ad6ce3ad6de7ad6ee9ad6f69a245
-6aa2846ba2c26c0eeb24f40cf4ad38f5
-ad39f7ad3af9ad3beb32ecad35edad36
-efad37012aad3354126962f4ad34e50c
-e5ad2fe8ad30e9ad31eaad32e1ad2ce3
-ad2de4ad2e0aed1ef213f2ad09f726f9
-ad0c012aad0a4312616ef3ad0bedad06
-eead07f0ad08e138e2ad02e3ad03e5ad
-04e8ad05022aabff412e4812616ee7ad
-01127261e2ad000cee2af21ff2ad16f3
-3ef6ad19f9012aad1a4812616ef4ad1b
-012aad1743127972ecad18eead13efad
-14f0ad15e909e9ad10ebad11edad12e1
-ad0de5ad0ee8ad0f0ef21af60cf6ad28
-f8ad29f9ad2afaad2bf2ad24f3ad25f4
-ad26f5ad27ed16ed32eead21efad22f1
-ad23012aad1f47126c61e7ad20e1ad1c
-e2ad1decad1e65c0f765a2b966a2ce67
-a2e1680013ee2af40ff4abfaf7abfbf8
-abfcf9abfdfaabfeee38efabf6f0abf7
-f1abf8f2abf9012aabf444127570ecab
-f5e973e938eaabf0ebabf1ecabf2edab
-f3022a3c42a2594811616e01e2abeff4
-abea0b4d2d5417542e55385610c4abed
-01c8abe9d7abea01cbabebd3abec4dd2
-1f502a5310d2abe802c6abe5c8abe6da
-abe7470e473048d2034910c4abe310c6
-abe12aabde412a4210ceabe010d5abdf
-126f70efabeee2abd9e4abdae6abdbe7
-abdce8abdd06eb0cebabcbeeabccf4ab
-cdf9abcee1abc8e2abc9e7abca03e1ab
-cfe4abd0e7abd1ed012aabd24212656e
-e7abd303e1abd4e3abd5e7abd6ebabd7
-61a25562a2af63a2f46408ea2beaabbf
-ed30ef42f2abc5faabc6012aabc04c12
-6174eeabc1022aabc2482e4c126174ee
-abc412616ef4abc3e5abb9e62ae83ce9
-abbe012aabba4212656ee7abbb012aab
-bc5412616bf2abbd0016ed2af314f809
-f8ab97f9ab98faab99f3ab94f6ab95f7
-ab96f009f0ab91f1ab92f2ab93edab8e
-eeab8fefab90e61eea09eaab8bebab8c
-ecab8de62ce7ab89e8ab8a012aab8743
-12616ef3ab88e1ab82e2ab83e3ab84e4
-ab85e5ab860011ef1df40ff4aba8f5ab
-a9f6abaaf7ababf9abacefaba4f1aba5
-f2aba6f3aba7e919e9ab9eeaab9feb2c
-ecaba2eeaba3012aaba042127261e9ab
-a1e2ab9ae3ab9be4ab9ce7ab9d0bec14
-f009f0abb6f1abb7f2abb8ecabb3edab
-b4efabb5e709e7abb0e8abb1eaabb2e3
-abade4abaee5abaf001a6fc1d4776be1
-0ce1add3e5af0df6afe1faa355774679
-907a04e1aff5e5af5de7aff6ecaff7ee
-aff808f30ff3afe7f5afd0f7afe8f9af
-e9faafeae1afe3ebafe4ecadfbf2012a
-afe545127468e9afe609ed0fedaff0ee
-aff1efaff2f5aff3f9aff4e1afebe2af
-ece4afede7afeee9afef73c0d5733474
-6c75a2667610e1afe205ee12eeafb2ef
-afb3f1012aafb441127261e2afb5e2af
-afe8afb0e9afb10def17f30cf3afc2f4
-afc3f5afc4f9afc5efafbff0afc0f2af
-c1e80ce8afbbe9afbcebafbdedafbee1
-2ce2afb9e4afba022aafb6432e481261
-6ef3afb8127972ecafb70019ee2df417
-f70cf7afddf8afdef9afdffaafe0f4af
-daf5afdbf6afdcf109f1afd7f2afd8f3
-afd9eeafd4efafd5f0afd6e721ea0cea
-afd0ebafd1ecafd2edafd3e7afcce826
-e9afcf012aafcd4712756af2afcee409
-e4afc9e5afcae6afcbe1afc6e2afc7e3
-afc86fa24770a285720def17f30cf3af
-abf4afacf5afadf9afaeefafa8f1afa9
-f2afaae81ee832e9afa6eca7e3eeafa7
-012a2e4d126f6ee7afa5012aafa44310
-ceafa5e3afa1e5afa2e7afa30012ee20
-f40ff4af9bf6af9cf7af9df8af9ef9af
-9feeaf96efaf97f0af98f2af99f3af9a
-e60fe6af92e8af93e9af29ebaf94ecaf
-95e1af8ee2af8fe3af90e5af9110f0af
-a068c17a6ba86ba2456ca25a6da2616e
-0eee1af50cf5af8af6af8bf7af8cf9af
-8deeaf86efaf87f2af88f4af89e716e7
-32e9af84eaadd8ebaf85012aaf824112
-7261e2af83e1af7fe4af80e5af8106ec
-0ceca555f2af67f3af68f8af69e1af64
-e7af65ebaf6602e7af6aedaf6beeaf6c
-0011ed1df50ff5af7af6af7bf7af7cf8
-af7df9af7eedaf76efaf77f2af78f3af
-79e50fe5af71e6af72e7af73ebaf74ec
-af75e1af6de2af6ee3af6fe4af706896
-69a2666a0feb1aef0cefaf60f2af61f5
-af62f7af63ebaf5cecaf5dedaf5eeeaf
-5fe50ce5af58e6af59e9af5aeaaf5be1
-af54e2af55e3af56e4af570cef17f50c
-f5af39f6af3af7af3bf8af3cefaf36f2
-af37f3af38ec09ecaf33edaf34eeaf35
-e4af30e7af31e9af320016ee32f414f8
-09f8af51f9af52faaf53f4af41f5af4f
-f7af50f112f1af4bf2af4cf3012aaf4d
-4212656ee7af4eee44efaf49f0af4ae7
-1eea13eaaf45eb26ecaf48012aaf4641
-127261e2af47e7af42e8af43e9af44e1
-af3de2af3ee3af3fe4af40e6af4164a8
-649e65a262670010eb1df30ff3af2bf4
-af2cf7af2df8af2efaaf2febaf27eeaf
-28efaf29f2af2ae50ce5af23e7af24e8
-af25e9af26e1af1fe2af20e3af21e4af
-220aea14f209f2af0af3af0bf7af0cea
-af07eeaf08efaf09e1af02e4af03e5af
-04e7af05e9af060fec24f216f232f3af
-1cf6af1dfaaf1e012aaf1a4c126174ee
-af1becaf16edaf17eeaf18f1af19e70c
-e7af12e8af13e9af14ebaf15e3af0ee4
-af0fe5af10e6af11613662a26a6301e3
-af00f2af010015ed2ff314f709f7ade9
-f8adeafaadebf3ade6f5ade7f6ade8ed
-ade0efade1f02cf1ade4f2ade5012aad
-e24212656ee7ade3e71eea09eaadddeb
-addeecaddfe72ce8addbe9addc012aad
-d941127261e2addae1add4e3add5e4ad
-d6e5add7e6add80012ed20f40ff4adfb
-f5adfcf6adfdf7adfef9adffedadf6ee
-adf7efadf8f0adf9f1adfae619e6adf0
-e7adf1e9adf2ea26ecadf5012aadf341
-127261e2adf4e1adece2adede4adeee5
-adef2ab63461d2bd62002373c34ce51d
-ed0feda92ceea945efa95df2a9a2f3a9
-bee5a765e7a797e8a7ade9a7cc77c182
-773878a27579a2de7aa41fe1a7030017
-ed34f414f809f8ab3bf9ab3cfaab3df4
-ab38f5ab39f7ab3af109f1ab35f2ab36
-f3ab37edab31ef26f0ab34012aab3245
-127468e9ab33e714ea09eaab2eebab2f
-ecab30e7ab2be8ab2ce9ab2de413e4ab
-27e526e6ab2a012aab284c126174eeab
-29e1ab24e2ab25e3ab260014ed48f225
-f609f6ab53f7ab54faab55f2a9f3f3ab
-4ff5022aab50432e4c126174eeab5212
-7972ecab51ed38eeab4befab4cf0ab4d
-f1ab4e022aab484c2e4d126f6ee7ab4a
-126174eeab49e80fe8ab43e9ab44eaab
-45ebab46ecab47e1ab3ee2ab3fe3ab40
-e6ab41e7ab420013ec20f30ff3ab65f6
-ab66f7ab67f8ab68faab69ecab60edab
-61eeab62f0ab63f2ab64e60fe6ab5be8
-ab5ce9ab5deaab5eebab5fe1ab56e2ab
-57e3ab58e4ab59e5ab5a0017ee2af514
-f809f8ab7ef9ab7ffaab80f5ab7bf6ab
-7cf7ab7df109f1ab78f2ab79f4ab7aee
-ab75efab76f0ab77e814eb09ebab72ec
-ab73edab74e8ab6fe9ab70eaab71e409
-e4ab6ce5ab6de6ab6ee1ab6ae2ab6be3
-a7f073a25a74a2d175a43a760016ed2a
-f514f809f8ab21f9ab22faab23f5ab1e
-f6ab1ff7ab20f109f1ab1bf2ab1cf4ab
-1dedab18eeab19efab1ae614e909e9ab
-15eaab16ebab17e6ab12e7ab13e8ab14
-e1ab0de2ab0ee3ab0fe4ab10e5ab1100
-16ee47f431f713f72cf8a9d8f9a9d901
-2aa9d645127468e9a9d7f43ef5a9d3f6
-012aa9d441127261e2a9d5012aa9d14c
-126174eea9d2f109f1a9cef2a9cff3a9
-d0eea9cbefa9ccf0a9cde81eeb13eb2c
-eca9c9eda9ca012aa9c74c126174eea9
-c8e8a9c4e9a9c5eaa9c6e1a9bfe2a9c0
-e3a9c1e5a9c2e6a9c30017ef3ef51ef8
-13f82cf9a9f1faa9f2012aa9ef421261
-74eba9f0f5a9ecf6a9edf7a9eef213f2
-a9e8f326f4a9eb012aa9e942126174eb
-a9eaefa9e5f0a9e6f1a9e7e714ea09ea
-a9e2eda9e3eea9e4e7a9dfe8a9e0e9a9
-e1e409e4a9dce5a9dde6a9dee1a9dae2
-a768e3a9db0018ee2df417f70cf7ab09
-f8ab0af9ab0bfaab0cf4ab06f5ab07f6
-ab08f109f1ab03f2ab04f3ab05eeab00
-efab01f0ab02e714ea09eaa9fdeba9fe
-eda9ffe7a9fae8a9fbe9a9fce413e42c
-e5a9f8e6a9f9012aa9f642127261e9a9
-f7e1a9f3e2a9f4e3a9f56ac35f6ec1d3
-6ea2816fa2d170a42071a470720016ed
-3cf426f809f8a9bbf9a9bcfaa9bdf4a9
-b6f526f6a9ba022aa9b74c2e54126861
-e9a9b912616fefa9b8f109f1a9b3f2a9
-b4f3a9b5eda9b0eea9b1f0a9b2e714ea
-09eaa9adeba9aeeca9afe7a9aae8a9ab
-e9a9ace1a9a3e232e3a9a7e4a9a8e6a9
-a9012aa9a44c1061016f2a7410eea9a6
-10efa9a50016ee2af514f809f8a95af9
-a95bfaa95cf5a957f6a958f7a959f109
-f1a954f2a955f3a956eea951efa952f0
-a953e614ea09eaa94eeba94feda950e6
-a94be7a94ce9a94de1a946e2a947e3a9
-48e4a949e5a94a0014ef2ef51df812f8
-a970f9a971fa012aa97241127261e2a9
-73f5a96df6a96ef7a96fefa968f0a969
-f1a96af2a96bf4a96cea0feaa963eba9
-64eca965eda966eea967e1a95ee2a95f
-e5a960e6a961e8a9620016ef2af514f8
-09f8a988f9a989faa98af5a985f6a986
-f7a987f209f2a982f3a983f4a984efa9
-7ff0a980f1a981e814eb09eba97ceca9
-7deda97ee8a979e9a97aeaa97be1a974
-e3a975e4a976e5a977e7a9780015ef25
-f414f709f7a99ff8a9a0faa9a1f4a99c
-f5a99df6a99eefa997f0a998f1a999f2
-a99af3a99be714eb09eba994eca995ed
-a996e7a991e9a992eaa993e1a98be2a9
-8ce3a98de4a98ee6012aa98f41127261
-e2a9906aa25f6ba2c16ca4166d0017ed
-2af314f709f7a942f8a943faa944f3a9
-3ff5a940f6a941f009f0a93cf1a93df2
-a93eeda939eea93aefa93be714ea09ea
-a936eba937eca938e7a933e8a934e9a9
-35e409e4a930e5a931e6a932e1a92de2
-a92ee3a92f0018ee2df417f70cf7a7f6
-f8a7f7f9a7f8faa7f9f4a7f3f5a7f4f6
-a7f5f109f1a7f0f2a7f1f3a7f2eea7ed
-efa7eef0a7efe81eeb09eba7eaeca7eb
-eda7ece8a7e6e926eaa7e9012aa7e745
-127468e9a7e8e409e4a7e3e6a7e4e7a7
-e5e1a7e0e2a7e1e3a7e20017ef2af514
-f809f8a90ff9a910faa911f5a90cf6a9
-0df7a90ef209f2a909f3a90af4a90bef
-a906f0a907f1a908e814ec09eca903ed
-a904eea905e8a900e9a901eaa902e409
-e4a7fde6a7fee7a7ffe1a7fae2a7fbe3
-a7fc0017ee3cf414f809f8a929f9a92a
-faa92bf4a926f6a927f7a928f11bf1a9
-21f226f3a925012aa9225401612c6811
-61e9a924116ce5a923eea91eefa91ff0
-a920e714ea09eaa91beba91ceda91de7
-a918e8a919e9a91ae409e4a915e5a916
-e6a917e1a912e2a913e3a91465c20265
-a25366a2b267a41a68a465690014ee25
-f414f709f7a7ddf9a7defaa7dff4a7da
-f5a7dbf6a7dceea7d6efa7d7f0a7d8f1
-a7d9f2a7cfe60fe6a7d2e7a7d3eba73c
-eca7d4eda7d5e1a7cde2a7cee3a7cfe4
-a7d0e5a7d10015ef2ff51ef813f82cf9
-a77cfaa77d012aa77a41127261e2a77b
-f5a777f6a778f7a779efa772f0a773f1
-a774f3a775f4a776e614ea09eaa76feb
-a770eda771e6a76ce8a76de9a76ee138
-e2a768e3a769e4a76ae5a76b012aa766
-4312616ef3a7670015ee38f41ef809f8
-a794f9a795faa796f4a790f526f7a793
-012aa7915412616bf2a792eea78aefa7
-8bf0a78cf1a78df3012aa78e4812616e
-e9a78fe614ea09eaa787eca788eda789
-e6a784e7a785e8a786e138e2a780e3a7
-81e4a782e5a783012aa77e41127261e2
-a77f0015f025f514f809f8a7aaf9a7ab
-faa7acf5a7a7f6a7a8f7a7a9f0a7a2f1
-a7a3f2a7a4f3a7a5f4a7a6e714ed09ed
-a737eea7a0efa7a1e7a79de9a79eeaa7
-9fe1a798e2a799e3a79ae4a79be6a79c
-0018ed3ff329f60cf6a7c8f7a7c9f9a7
-cafaa7cbf3a7c3f426f5a7c7022aa7c4
-442e4c126174eea7c6126576e1a7c5f0
-09f0a7c0f1a7c1f2a7c2eda7beeea7bf
-efa7ade726ea09eaa7bbeba7bceca7bd
-e7a7b6e826e9a7ba022aa7b7482e4c12
-6174eea7b9126562f2a7b8e41be42ce5
-a7b4e6a7b5022aa7b1412e5412616bf2
-a7b3127261e2a7b2e1a7aee2a7afe3a7
-b061a26562a2ab63a400640019ee2df4
-17f70cf7a761f8a762f9a763faa764f4
-a75ef5a75ff6a760f109f1a75bf2a75c
-f3a75deea758efa759f0a75ae717ea0c
-eaa754eba755eca756eda757e7a751e8
-a752e9a753e409e4a74ee5a74fe6a750
-e1a74be2a74ce3a74d0014ef25f514f8
-09f8a716f9a717faa718f5a713f6a714
-f7a715efa70ef0a70ff1a710f2a711f3
-a712e70fe7a709e8a70aeaa70beca70c
-eea70de1a704e2a705e3a706e5a707e6
-a7080017ee2af414f709f7a72ef8a72f
-f9a730f4a72bf5a72cf6a72df109f1a7
-28f2a729f3a72aeea725efa726f0a727
-e714eb09eba722eca723eda724e7a71f
-e9a720eaa721e409e4a71ce5a71de6a7
-1ee1a719e2a71ae3a71b0018ed37f317
-f60cf6a747f7a748f9a749faa74af3a7
-44f4a745f5a746f013f0a740f126f2a7
-43012aa7414c126174eea742eda73dee
-a73eefa73fe714ea09eaa73aeba73bec
-a73ce7a737e8a738e9a739e409e4a734
-e5a735e6a736e12ce2a733e3a70c012a
-a7314812616ee9a73200184dc28654c0
-e357375736584e59665a12616ee2d7f2
-01612c631168efc76f1172e1d7f10170
-2c731175f8a3d01165efcb0a01652c69
-1169e9b70a117ae9bb3d544455a29f56
-01612c691174e8d7f01169e9d7ef0768
-4f683669866ea2436f1174efd5811061
-01e158e9042ad34143324b364c3a5410
-c8d34110cebdbe10c8d7ec10c1d7ed01
-2aafe14d10d6afe101622a7210e8d7ee
-10f4012aa95d4210d4a3551173e1c7ba
-61346580668667116ce7d7eb056d116d
-2e6e327610f4a92610ecd1ab10e7d57c
-67346b386c01e5d1faf5b9a710e2d7e8
-10f2d7e9116cf5d30c116ee7d7ea1267
-61f2d5b450c0c450a27252a2a9530669
-4369426f6a759079016c2a7210e3ad2e
-10efd7e701643e6e01e4cf10e8012acf
-6d4c10cbcf6d10e4d7e402672e723879
-10efad3e01e4cfeeefd7e510e1d11711
-6ee4d7e6613e675e6801612a7210e4d7
-e310f7b132026d2e72327510f2cdd810
-f2cfc710e2d7e2116ef7a57904613865
-4c68526c78721174e9d7e0016c2a7510
-e3ada210eda5601172edd7de02612e6c
-326e10f8cb2310e7d7df01e9c9c6f0c9
-c71172e4b564026a306f3675116ef2c7
-84116ee7d7e11168e7cd5c4d7c4ea2a4
-4f0367426c48724e7301672a6d10e1d7
-dd10e5c9961161edcf3e1163ebcdd201
-6b2a7910e1c98610e8c9a407722e725a
-7460756679116df2032aab04492e4d32
-5410c8d7d710ceb9b610cdab04116fef
-c3881165e9d7d5116cf4d7d661426574
-6c9a6f01642a6e10e7afa510e9d7d403
-68326b366e3a7210e3d7d010ead7cd10
-e1d7ce01e4c535e9d7cf0264346e3872
-01e3d7d2efd7d310e6af7210e4d7d111
-79edc1e70461386258655e6b64731168
-f5d7dc02672e6e327210e2d7da10edd7
-d810e4d7d91161f4a55f1177e1d7db11
-6fefb12747c52a4ac44e4aa8d94ba8f2
-4c03614665a8b569a8b77901632a6410
-e9d7cc10e9d7cb026ea84d6fa84e7410
-ee001d4ac1a953c0c05723574658aeac
-594a5a03c1d789cda771d2d702d7cfd1
-01c6d786d3cfbc01d4d788d5cf51534e
-54a25555a27e5607c7c66bc7d784c9d7
-85ced782d5a7cc0012cd20d50fd5bbb4
-d6d771d8d772d9d7c8dad774cdd76cce
-d76dcfcfe7d2d76ed4d770c80fc8d76a
-c9cfaacad76bcbcf91ccbbb1c2d767c3
-d768c5d170c7d7690fce1ad40cd4d77c
-d6d55ed7d519dad179ced7c9cfd3d0d0
-d77ad2d504c7c6dac7d779cbd37fccd7
-7acdd37705d309d3b131d9d77edad77f
-c1d7cac7d77dcdd7364db04d484ea25a
-50a27a5205d3c621d3cf51d5bbb4d7cd
-b70014cf25d414d809d8d74fd9bfeada
-d750d4c3abd5c156d7d74ecfd7c6d0d7
-4ad1d74bd2d7c7d3d74dc70fc7c16ec8
-d749cbd7c5cca92ccdb905c1d7c4c3d7
-46c4d747c5cdf7c6d7480bc914d209d2
-d757d5d759dad75ac9d756ccafdacfc7
-78c6c683c6d754c7d755c8a7cc0ccd17
-d40cd4d764d7c9ced9b37edad75ccdd7
-60ced761d2d762c709c7d3edc8b189cc
-cb50c1d75cc5d75dc6d75e4a564b604c
-06d30cd3d742d4bfa0d5d743d6bfc0c3
-d73fc9d740d2d74101c5d5e3cdd73404
-c5d737c9d70ecdd7c3ced739d9d73c42
-c138468e4662478e48a2724907cf0ccf
-d732d2d7c2d3b5e4d4b758c3d72fc4b5
-e7c5d730cdd73106cd0ccdd5e1cfb19d
-d2b1a6d8b1a6c9b185cad71ccbd71d00
-11cd1dd30fd3d728d4d729d5d72ad7d7
-2bd9d72ccdd724ced725d0d726d1d727
-c60fc6d721c7d722c8a3c6c9d723ccbb
-0bc1d71ec2d71fc4d720c5d7c105d409
-d4b5abd5b5b1d6d5f5cdd72dced72ed2
-b599424e43a24f44a28d4504c1d718c3
-d719c5b113d3b14dd4d7bb0010ce1dd3
-0fd3d5fdd5b905d6d5fed7d5ffdad700
-ced5facfd5fbd1d5fcd2cbc8c90cc9cd
-89cad5f7ccd5f8cdd5f9c1a9bec2d5f3
-c5d5f4c6d5f50014cf1dd50cd8c755d8
-d711d9d7bfdaad8fcfd70ad0d70bd1d7
-0cd2d70dd3cf51c90fc9d706cbd707cc
-d708cdd709ced7bec1d701c4d702c6d7
-03c7d704c8d70508cbc76dcbadd3cdd7
-15cfd716d9d5f7dad7c0344234b0da35
-86388c410010cf12d4c77ad4d5efd5d5
-f0d7d5f1d8d5f2daa5f5c90cc9d5eacc
-a3ddcdd7bdcec9cac3d5e5c4d5e6c6d7
-bcc7d5e91133b2c9ca1139b0cf512ab1
-313140320230b0a5332a3810b0af0d10
-b0d7bb1137b2bbb410e1c77b10ef0b4c
-275414543455385601c4b582ceb58210
-c8b58110d3d7ba4c2e4d325310d2b580
-10c1bf6c10cdb57b4314432e46324710
-c6b57e10ceb57c01d2b57dd8b57d2abf
-6c412a4210d5b57b10d5b57a1170e3bd
-dd026d2e6e327310f5bf1510e2bf0b01
-e1bd8ae2b3b401613a701161ee012ab7
-7c4a10d0b77c016d2a7610e1d7b610ef
-d7b5056e1e6e306f36741168e9d7b911
-64e1bb461172e5012abb624b01d0d73a
-d2bb6261306850691174f3d7b8026c2e
-6e327710e9b91110e9b11a10e1d7b702
-612e6d326f10eacf0f10f2cbab10f201
-2abb274b10c8bb27473448a25c491274
-61ecb15d0465466c5a6f60727a75016a
-2a7210f5c9bb10f2b3cc116ff2012ab3
-254710c5b3251161e7adb2016e2a7410
-e8b3a501e7d7aaedb14f0161506510eb
-032ab11b432e47325410d2a7aa10d9d7
-1210d2b11b10eed7ab056c186c306d36
-75116ee7d7b41175f7b561106e01e7d7
-b3f0b5796130659c691172e1d7b2106e
-05ef2aefd7aef358f4042aabea433248
-364d3a5410d7abea10c1d7af10cbabe2
-10cfabe4012aabde4310ceabdee2abef
-e7d7ace9d7ad1162f2032ab536493453
-385501c1b7b3d3d7b110ccb53610c5d7
-b043c11c437444a2d5450267446c4a74
-1168e9012aa3f34501d2d71bd4a3f311
-79f0b10901622a7910edd7a910e1d7a8
-0461a27c68a28b6fa29a70a29c791172
-ec0d4d39541a5432553c58405910d5cd
-f501cad328d2d7a010c1d5be10cbd7a1
-4d2e523e5310cbd79f02c4d79dcbbfd8
-ceafa402cfd79ed3cdf5d5cda6422242
-384348474c4b01c7bd54dad73d02c1d7
-9bc7a797d9a76510d3cdf501c555d2d7
-9c2acda6382a4110ccd79a1139b0cdf5
-026b2e6e327210e9d79810edabb610f3
-b71102612e65327210f3d79910edad12
-10f2abf91170f4ad641172f4b3b30365
-3469866f8c751170ecd7a71176e10649
-1749324d364e3a5010cba9ed10ceb544
-10d5d7a410d0c5aa2ab544422a4610ca
-d7a310d4d7a21161ebd7a51167f2d7a6
-2aa25441aabf42056f1f6f3e72447501
-672a6810e4d79710e9d7961170efabee
-106101e8cb46e9d7956130655c68116b
-f3d794036c326d36733a7410ebd79310
-e9d79210f5a71610f3a9ce116ee7012a
-a9454210c4a94500204ac24d52c10f56
-4c5648577a588a598e5a03c1d789cda7
-71d2d702d7cfd107c70cc7d784c9d785
-ced782d5a7ccc1d780c3d781c4d782c5
-d78302c6d786cbd736d3cfbc10cbd787
-03c4d5e4c5d5e4d4d788d5cdf5525c53
-8254a27c5506cd0ccdd736d3b131d9d7
-7edad77fc1d5bec7d77dcbd71f05d309
-d3cdf5d5cda6d7cdb7c5d766c8cfd1cf
-c32e0015cd25d414d809d8d772d9d773
-dad774d4d770d5cda6d6d771cdd76cce
-d76dcfcfe7d2d76ed3d76fc714ca09ca
-d76bcbcf91ccbbb1c7d769c8d76ac9cf
-aac1d758c2d767c3d768c4d5e2c5d170
-0011cd1dd20fd2d504d4d77cd6d55ed7
-abeadad179cdd377ced77bcfd3d0d0d7
-7ac70fc7d779c8d341cad328cbd37fcc
-d77ac1d775c3d776c4d777c6d7784e7b
-4e344fa8e850925110c1d7650ecc1ad2
-0cd2d757d4d758d5d759dad75accafda
-cfc778d0c5aad1d5ecc60cc6d754c7d7
-55c8a7ccc9d756c1d751c3d752c5d753
-0010cd1dd40fd4d764d5d736d7c9ced9
-b37edad75ccdd760ced761d2d762d3d7
-63c70cc7d3edc8b189cbd75fcccb50c1
-d75cc3d5e1c5d75dc6d75e4aa25f4ba2
-6c4ca28f4d0017cf2ad514d809d8d74f
-d9bfeadad750d5c156d6afe1d7d74ed2
-09d2d74cd3d74dd4c3abcfabe4d0d74a
-d1d74bc814cc09cca92ccdab04ceafa4
-c8d749c9d736cbbfd8c509c5cdf7c6d7
-48c7c16ec1d745c3d746c4d74704c5d5
-e3cdd734cfd735d0b77cd4d7360ace14
-d709d7d73bd9d73cdad73dced739d0d7
-3ad2bb62c5d737c7bd54c8bb27c9d70e
-cdd7380ad214d509d5d743d6bfc0d9d7
-44d2d741d3d742d4bfa0c1bf6cc2d73e
-c3d73fc9d740cbcf6d42c18846a3467a
-47a24548a283490ace14d209d2b16cd3
-b5e4d4b758ceb544cfd732d1d733c3d7
-2fc4b5e7c5d730ccb536cdd73107cf0c
-cfb19dd1d5ecd2b1a6d8b1a6c9b185ca
-d71ccbd71dcdd5e10012cd20d30fd3d7
-28d4d729d5d72ad7d72bd9d72ccdd724
-ced725d0d726d1d727d2b11bc60fc6d7
-21c7d722c8a3c6c9d723ccbb0bc1d71e
-c2d71fc4d720c5b32506d20cd2b599d4
-b5abd5b5b1d6d5f5cbabe2cdd72dced7
-2e426443a26d44a2bd4507c80cc8d71a
-d2d71bd3b14dd4a3f3c1d718c3d719c5
-b113c7a55d0015ce25d414d709d7d5ff
-d9a765dad700d4a355d5ab04d6d5fece
-d5facfd5fbd1d5fcd2cbc8d3d5fdc714
-ca09cad5f7ccd5f8cdd5f9c7a797c8d5
-f6c9cd89c1a9bec2d5f3c4a945c5d5f4
-c6d5f50016cf2ad514d809d8d711d9d7
-12daad8fd5d70fd6d710d7c9cad209d2
-d70dd3cdf5d4d70ecfd70ad0d70bd1d7
-0cc814cc09ccd708cdd709ceabdec8d7
-05c9d706cbd707c1d701c3bfebc4d702
-c6d703c7d70408cb0fcbadd3cdd715cf
-d716d9d5f7dad717c4af0dc5af0dc7d7
-13cad714356b35a24537a24e38a25041
-0011cf1dd40fd4d5efd5d5f0d7d5f1d8
-d5f2daa5f5cfd5ebd1d5ecd2d5edd3d5
-eec70fc7d5e9c9d5eacca3ddcda568ce
-c9cac3d5e5c4d5e6c5d5e7c6d5e80133
-2a3810b2d5e110b2c9ca1133b6d5e202
-332e38323910b0cdf510b0d5e310b6d5
-e42ab13131303236341131b9d5e01137
-b2cda602302e33323810b0af0d10b0ad
-8f10b0a3f3046438673e6844724a7611
-73f4a35e116cedb1811168e2d5aa116f
-eda3a001613e6d01e9a55eee012aa568
-4110cda56810e200134c665135513c53
-40545655725901c5d5e4d4d17a10c1d7
-6503c1d758c4d5e2d3d76fd9d77304c7
-a53fc8c152cad790ced77bd2d79110cb
-d78b4c3c4d464e624f665001cbd75fd3
-d76301c2d73ed9d74404c1d745cdd78a
-ceb9f0d2d74cd5d78e10c7d78f10cdd7
-5b452f4542474c49504a664b02c8ad0d
-cdd738d7d73b01c7a55dc8d71a10c2d7
-8b03c4d78cced78dd1d733d2b16c10cf
-d7352aa55d4132423c43464410dad717
-01c5d5e7c6d5e801c8d5f6d5d78a01c3
-bfebced5b1002574c233e534f223f2a5
-5df3a574f6a5b9f9a5e1fa012a2e4112
-7261e2a5f7022aa5f549a2b45210d5a5
-f8e5a35ee6a36ceba3c6eda3f3eea50e
-78b87832795e7aa260e125e25506eb0c
-eba5ddeca5deeda5dff8a5e0e2a5dae5
-a5dbe7a5dc0013ee20f30ff3a5f0f4a5
-f1f5a5f2f8a5f3faa5f4eea5ecefa5ed
-f0a5eef1a5eff2a5e1e70fe7a5e7e8a5
-e8e9a5e9eba5eaeca5ebe1a5e2e2a5e3
-e3a5e4e4a5e5e5a5e608ed0feda5feee
-a5ffefa700f4a701faa702e274e4a5fc
-e7a5fdea012a2e41127261e2a5f7032a
-a5f5312e49345310d5a5f81137b2a5f8
-01d1a5f6d2a5f7022aa5f9432e4c1261
-74eea5fb127972eca5fa74a24875a2a7
-76a2ff770012ee20f50ff5a5d5f6a5d6
-f7a5d7f8a5d8f9a5d9eea5d0efa5d1f2
-a5d2f3a5d3f4a5d4e70fe7a5cbe8a5cc
-e9a5cdeba5ceeda5cfe1a5c7e2a5c8e3
-a5c9e5a5ca0017ef2af514f809f8a59f
-f9a5a0faa5a1f5a59cf6a59df7a59ef2
-09f2a599f3a59af4a59befa596f0a597
-f1a598e914ec09eca593eda594eea595
-e9a590eaa591eba592e409e4a58de5a5
-8ee7a58fe1a589e226e3a58c012aa58a
-4c126973f5a58b0014ed25f214f709f7
-a5b6f9a5b7faa5b8f2a5b3f4a5b4f5a5
-b5eda5aeeea5afefa5b0f0a5b1f1a5b2
-e821e8a5a7e9a5a8ea2ceba5aceca5ad
-022aa5a94c2e5412666ee7a5ab126174
-eea5aae1a5a2e3a5a3e4a5a4e5a5a5e7
-a5a60bee24f419f4a5c3f526f6a5c622
-022aa5c4372a5310c4a5c51133b6a5c5
-eea5c0efa5c1f3a5c2eb09eba5bdeca5
-beeda5bfe2a5bae4a5bbe9a5bc6ac332
-6fc16a6fa24e70a29371a2e872a40373
-0013ec20f50ff5a584f6a585f8a586f9
-a587faa588eca57feea580efa581f3a5
-82f4a583e70fe7a57ae8a57be9a57cea
-a57deba57ee1a575e2a576e3a577e4a5
-78e5a5790011eb27f219f2a537f3a538
-f42cf8a53bfaa53c012aa5394c126174
-eea53aeba533eca534eda535eea536e5
-0fe5a52ee6a52fe7a530e9a531eaa532
-e1a52ae2a52be3a52ce4a52d0017ee2a
-f514f809f8a551f9a552faa553f5a54e
-f6a54ff7a550f209f2a54bf3a54cf4a5
-4deea548efa549f0a54ae814eb09eba5
-45eca546eda547e8a542e9a543eaa544
-e509e5a540e6a389e7a541e2a53de3a5
-3ee4a53f08ed0feda558eea559f2a55a
-f4a55bfaa55ce3a554e4a555e7a556eb
-a5570014ee25f314f809f8a571f9a572
-faa573f3a56ef5a56ff7a570eea569ef
-a56af0a56bf1a56cf2a56de90fe9a564
-eaa565eba566eca567eda568e2a55de3
-32e4a561e5a562e8a563022aa55e4e2e
-5012616ceda560126261f4a55f6aa277
-6ba2a46ca2ef6da4446e0018ed3ff429
-f70cf7a526f8a527f9a528faa529f4a5
-21f526f6a525022aa522412e4c126174
-eea524127261e2a523f009f0a51ef2a5
-1ff3a520eda51beea51cefa51de714ea
-09eaa518eba519eca51ae7a515e8a516
-e9a517e409e4a512e5a513e6a514e1a5
-0fe2a510e3a51108f021f0a3c1f4a360
-f52cf7a3c4faa3c5012a2e41127261e2
-a3c3012aa3c24d10c1a3c3e1a3bde7a3
-bee9a3bfeea3c00013ef20f40ff4a3d7
-f5a3d8f6a3d9f7a3dafaa3dbefa3d2f0
-a3d3f1a3d4f2a3d5f3a3d6e70fe7a3cd
-e8a3cee9a3cfeba3d0eca3d1e238e3a3
-c9e4a3cae5a3cbe6a3cc012aa3c74212
-6174eba3c80017ee2af414f809f8a3f0
-f9a3f1faa3f2f4a3edf5a3eef7a3eff1
-09f1a3ebf2a3ecf3a3ddeea3e8efa3e9
-f0a3eae814eb09eba3e5eca3e6eda3e7
-e8a3e2e9a3e3eaa3e4e409e4a3dfe5a3
-e0e6a3e1e1a3dce2a3dde3a3de0016ef
-43f52df809f8a50bf9a50cfaa50df5a5
-05f6a506f7022aa507412e4c126174ee
-a50a107201612a6d10e9a50910e2a508
-f209f2a502f3a503f4a504efa3fff0a5
-00f1a501e714eb09eba3fceda3fdeea3
-fee7a3fae9a3b6eaa3fbe1a3f4e2a3f5
-e3a3f6e5a3f7e6012aa3f845127468e9
-a3f965c17e65a26f66a29a67a2c268a4
-27690014ed41f226f71bf72cf8a3bbf9
-a3bc022aa3b8412e45127468e9a3ba12
-7261e2a3b9f2a3b5f3a3b6f4a3b7eda3
-afee32efa3b2f0a3b3f1a3b4012aa3b0
-4c126174eea3b1e60fe6a3aae7a3abea
-a3aceba3adeca3aee1a3a5e2a3a6e3a3
-a7e4a3a8e5a3a90ced17f50cf5a368f7
-a369f9a36afaa36beda365f1a366f2a3
-67e509e5a362eba363eca364e1a35fe2
-a360e3a3610bee14f309f3a376f5a377
-faa378eea373efa374f0a375e809e8a3
-70e9a371eba372e2a36de4a36ee5a36f
-0019ee2df417f70cf7a390f8a391f9a3
-92faa393f4a38df5a38ef6a38ff109f1
-a38af2a38bf3a38ceea387efa388f0a3
-89e721ea16ea32eba384eca385eda386
-012aa38241127261e2a383e7a37fe8a3
-80e9a381e409e4a37ce5a37de6a37ee1
-a379e2a37ae3a37b0ded17f00cf0a3a1
-f2a3a2f3a3a3f4a3a4eda39eeea39fef
-a3a0e826e8a397e9a398eb26eca39d02
-2a324d4054126861e9a39c012aa39954
-10c8a39a12796df2a39be1a394e2a395
-e7a39661a25a62a2a063a2e2640014ee
-25f414f809f8a35bf9a35cfaa35df4a3
-58f5a359f7a35aeea353efa354f0a355
-f1a356f2a357e719e7a34de8a34ee92c
-eaa351eca352012aa34f54126962f4a3
-50e1a348e2a349e4a34ae5a34be6a34c
-0015ed1af30ef706f74ff851fa53f341
-f44bf54ded41ee43ef45f047f149e617
-e906e93beb3dec3fe628e737e839012a
-3341127261e235e127e229e32be42de5
-012a2f47127265eb310016ee1ef50ef8
-06f881f983fa85f57bf67df77ff206f2
-75f377f479ee6fef71f073e617e90fe9
-67ec24ed6d012a694c126174ee6be661
-e763e865e157e259e35be45de55f0012
-f12df621f6a341f7a342f8a343f926fa
-a347022aa344412e47127265eba34612
-7261e2a345f199f29bf39df49ff5a1e6
-0ae68fe891ed93ee95f097e187e289e4
-8be58d
+001a6df0414574dc6777d04477a8d978
+b0f979ba847a00176fc1a77599e15ae1
+d7b8e828f5d91e7c022a3e42d866d948
+11616e01e2abeef4abe90b4d26540f54
+d86685552a5610ceabec10d3abeb4dd8
+7ea6502a5310d2abe702c1abe6c6abe4
+c8abe547f06693473248d87e874910c4
+abe201c2abeac6abe0753679547a01e1
+af4aead91e8603e8d91e7dedd91e7eee
+d91e7ff9d91e8004e2d7b8e7d91e81ea
+30eed91e84f0d91e85012ad91e824812
+616ee9d91e83725f729673a249740bf1
+1af50cf5d91e79f8d91e7af9d91e7bf1
+d91e76f3d91e77f4d91e78ed0cedd91e
+73eed91e74f0d91e75e5d91e70e7d91e
+71ecd91e7203eed91e69efd91e6af0d9
+1e6bf3d91e6c03e1d91e6dedd837c4f2
+d91e6ef5d91e6f6f44707e7110e5012a
+d91e674c126174eed91e6806ef10efd9
+1e49f1d91e4af2d91e4bf3d91e4ce3d9
+1e47e8d91e48edd91da90019ee3af41e
+f710f7d91e63f8d91e64f9d91e65fad9
+1e66f4d91e60f5d91e61f6d91e62f10c
+f1d91e5df2d91e5ef3d91e5feed91e5a
+efd91e5bf0d91e5ce71eea10ead91e56
+ebd91e57ecd91e58edd91e59e7d91e53
+e8d91e54e9d91e55e40ce4d91e50e5d9
+1e51e6d91e52e1d91e4de2d91e4ee3d9
+1e4f68c1326cbe6c686da2416e04e1d9
+1e41e538e7d91e44ebd91e45f3d91e46
+012ad91e4241127261e2d91e4304e1d9
+1e21ea38edd91e24eed91e25f1d91e26
+012ad91e224c126174eed91e230019ee
+3af41ef710f7d91e3df8d91e3ef9d91e
+3ffad91e40f4d91e3af5d91e3bf6d91e
+3cf10cf1d91e37f2d91e38f3d91e39ee
+d91e34efd91e35f0d91e36e71eea10ea
+d91e30ebd91e31ecd91e32edd91e33e7
+d91e2de8d91e2ee9d91e2fe40ce4d91e
+2ae5d91e2be6d91e2ce1d91e27e2d91e
+28e3d91e29686869a24b6b07f00ff0d9
+1e1ef4d7b2f5d91e1ffad91e20e1d91e
+1de2b9dae4b956efd91cf204e43ae9d9
+1e12ee48f7d91e15f8d7d6012ad91e10
+4c126174eed91e11012ad91e13481261
+6ee9d91e1407ee0feed91e1af2cf06f7
+d91e1bfad91e1ce1d91e16ebd91e17ec
+d91e18edd91e19643f645a65606705ed
+0cedd91e0deed91e0ef2d91e0fe1d91e
+0be2d91e0ce8d7e410ead91e0503e1d9
+1e06e7d91e07e8d91e08ee012ad91e09
+41127261e2d91e0a613a62a2906301e1
+d91e03e8d91e040017ef4cf530f817f8
+d91df9f928fad91dfc012ad91dfa4512
+7468e9d91dfbf530f6d91df7f7d91df8
+012ad91df541127261e2d91df6f20cf2
+d91df2f3d91df3f4d91df4efd91df0f0
+d91decf1d91df1e71aea0cead91dedeb
+d91deeedd91defe7d91deae8d91debe9
+d91dece40ce4d91de7e5d91de8e6d91d
+e9e1d91de4e2d91de5e3d91de605f40c
+f4d91e00f5d91e01f7d91e02e1d91dfd
+e3d91dfee5d91dff00186dc1f674a478
+2c7834793ae1d91b7fefd91c0910f7d9
+1c4905ee0ceed91c4df2d91c4ef9d91c
+4fe2d91c4ae9d91c4bedd91c4c745075
+967704e1d91c44e2d91c45efd91c46f2
+d91c47f7d91c4805eb16ebd91c34edd9
+1c35f7012ad91c3642127567e9d91c37
+e6d91c31e8d91c32e9d91c330bf21af6
+0cf6d91c41f8d91c42f9d91c43f2d91c
+3ef4d91c3ff5d91c40ec0cecd91c3bed
+d91c3ceed91c3de1d91c38e2d91c39e4
+d91c3a7072706a72707307f210f2d91c
+2df3d91c2ef5d91c2ff6d91c30e1d91c
+2ae7d7a4e9d91c2bebd91c2c10e3d91c
+1a0ff022f610f6d91c26f7d91c27f8d9
+1c28fad91c29f0d91c22f2d91c23f3d9
+1c24f5d91c25eb0febd91c1fecd91c20
+edd91c21efd7f3e2d91c1be7d91c1ce8
+d91c1de9d91c1e6da2526ea2996f0ee9
+22ef10efd91c16f2d91c17f3d91c18f7
+d91c19e9d91c12ebd91c13edd91c14ee
+d91c15e41be4d91c0de5d91c0ee628e7
+d91c11012ad91c0f41127261e2d91c10
+e1d91c0ae2d91c0be3d91c0c0ded29f3
+1bf3d91bf8f4d91bf9f728f8d91bfc01
+2ad91bfa41127261e2d91bfbedd91bf5
+eed91bf6efd91bf7e410e4d91bf1e5d9
+1bf2e8d91bf3e9d91bf4e1d91beee2d9
+1befe3d91bf00ded1cf00ff0d91c06f5
+d91c07f7d91c08f9b1e3edd91c04eec3
+25efd91c05e510e5d91c00e7d91c01e9
+d91c02ebd91c03e2d91bfde3d91bfee4
+d91bff67c0e36a5b6a966ba2416c0bf2
+1af60cf6d91bebf7d91becf8d91bedf2
+d91be8f3d91be9f5d91beae90ce9d91b
+e5edd91be6efd91be7e1d91be2e7d91b
+e3e8d91be401e1d91bdbe9d91bdc04e1
+d91bdde4d91bdef2d91bdff7d91be0f9
+d91be167a24f68a26f690010eb25f213
+f2d91bd7f5d91bd8f6d91bd9f7c7f0f9
+d91bdaebd91bd3ecd91bd4edd91bd5ee
+d91bd6e710e7d91bcfe8d91bd0e9d91b
+d1ead91bd2e2d91bcbe3d91bcce5d91b
+cde6d91bce07ef10efd91bc4f5d91bc5
+f7d91bc1f9d91bc6e1d91bc0e2d91bc1
+e7d91bc2e9d91bc303e1d91bc7e7d91b
+c8ebd91bc9f5d91bca64666430656a66
+10e7d91bbf06eb10ebd91baff4d91bb0
+f5d91bb1f9d91bb2e4d91bace7d91bad
+ead91bae0def1df310f3d91bbbf4d91b
+bcf5d91bbdf7d91bbeefd39af0d91bb9
+f2d91bbae80fe8d91bb6e9d91bb7ecad
+c9edd91bb8e3d91bb3e4d91bb4e7d91b
+b5613a62a27a6301e1d91baae9d91bab
+0017ee36f51af80cf8d91b95f9d91b96
+fad91b97f5d91b92f6d91b93f7d91b94
+f20cf2d91b8ff3d91b90f4d91b91eed9
+1b8cf0d91b8df1d91b8ee71aea0cead9
+1b89ecd91b8aedd91b8be7d91b86e8d9
+1b87e9d91b88e40ce4d91b83e5d91b84
+e6d91b85e1d91b80e2d91b81e3d91b82
+0fec36f210f2d91ba6f4d91ba7f6d91b
+a8f7d91ba9ec38edd91ba3f0d91ba4f1
+d91ba5022ad91ba0413043127972ecd9
+1ba2127261e2d91ba1e810e8d91b9ce9
+d91b9dead91b9eebd91b9fe1d91b98e2
+d91b99e5d91b9ae6d91b9b00186ec294
+75c0d57847783079567a90e8d91c7f04
+e2d91d22ebd91d23edd91d24f2d91d25
+f4d91d2606eb10ebd91d2aecd91d2bf4
+d91d2cf9d91d2de1d91d27e2d91d28ea
+d91d2901e8d91d2ef0d91d2f757e76a2
+727709ec14ecd91d1defd91d1ef2d91d
+1ff4d91d20f7d91d21e1d91d18e4d91d
+19e5d91d1aead91d1bebd91d1c08ed1f
+ed40eed91d0fefd91d10f4d91d11f5d9
+1d12012ad91d0d49127461ecd91d0ee2
+38e4d91d0aead91d0becd91d0c022ad9
+1d074b304d126c79edd91d09126e64e1
+d91d0804e5d91d13e9d91d14eed91d15
+efd91d16f3d91d1772c0cd72a25473a2
+87740011ed26f414f4d91d02f5d91d03
+f6d91d04f7d91d05f9d91d06edd91cfe
+eed91cfff0d91d00f3d91d01e514e5d9
+1cf9e8d91cfae9d91cfbead91cfcecd9
+1cfde1d91cf5e2d91cf6e3d91cf7e4d9
+1cf80bed19f20cf2d91ce6f5d91ce7f7
+d91ce8edd91ce4eed91ce5f1af7be50c
+e5d91ce1e7d91ce2e9d91ce3e1d91cde
+e2d91cdfe4d91ce00eed22f210f2d91c
+f1f3d91cf2f5d91cf3f9d91cf4edd91c
+edeed91ceef0d91ceff1d91cf0e80ee8
+d91cebe9d91cecead15cecaf17e1d7dc
+e2d91ce9e5d91cea6ea2606fa29f7000
+14ec2ff219f70cf7d91cdbf8d91cdcfa
+d91cddf2d7daf4d91cd9f6d91cdaecd9
+1cd4edd91cd5eed91cd6efd91cd7f1d9
+1cd8e714e7d91ccfe8d91cd0e9d91cd1
+ead91cd2ebd91cd3e1d91ccbe2d91ccc
+e4d91ccde5bb79e6d91cce0cee26f418
+f4c331f5d91cbbf9c54cfa012ad91cbc
+41127261e2d91cbdeed91cb8f1d91cb9
+f2d91cbaea0cead91cb5ebd91cb6edd9
+1cb7e1d7d4e2d91cb3e9d91cb40aed30
+f00cf0d91cc8f2d91cc9f7d91ccaed2c
+ee42efd91cc7012ad91cc345127468e9
+d91cc4012ad91cc542127261e9d91cc6
+e3d91cbee4d91cbfe7d91cc0e9d91cc1
+ebd91cc268c1076bc0d06ba2606ca2bb
+6d0014ef2ff51af80cf8d91cb0f9d91c
+b1fad91cb2f5d91cadf6d91caef7d91c
+afefd91ca9f0d91caaf1d91cabf2d7cc
+f4d91cace713e7d91ca5e8d91ca6ead9
+1ca7edd91ca8eed7c9e1d91ca0e2d91c
+a1e3d91ca2e4d91ca3e6d91ca40014f0
+30f51af80cf8d91c9bf9d91c9cfad91c
+9df5d91c98f6d91c99f7d91c9af0d91c
+93f1d91c94f2d91c95f3d91c96f4d91c
+97e714e7d91c8fe8d91b94ead91c90ec
+d91c91eed91c92e1d91c8ae2d91c8be3
+d91c8ce4d91c8de5d91c8e03e1d91c9e
+e3d7c5e4d7c6f9d91c9f6838694e6a01
+e2d91c88f4d91c8902e5d91c80edd91c
+81f6d91c8205f20cf2d91c85f3d91c86
+f9d91c87e195e9d91c83eed91c846458
+6464658a6706e910e9d91c7bedd91c7c
+f5d91c7df7d91c7ee2d91c78e4d91c79
+e7d91c7a04e1d91c6cebd91c6defd91c
+6ef1d91c6ff9d91c7006f210f2d91c74
+f3d91c75f4d91c76f5d91c77e4d91c71
+e7d91c72edd91c73613c62a2526302e8
+ad3fefd793f2d7920fef22f510f5d91c
+5cf6d91c5df7d91c5ef9d91c5fefd91c
+58f2d91c59f3d91c5af4d91c5beb10eb
+d91c54ecd91c55edd91c56eed91c57e1
+d91c50e2d91c51e9d91c52ead91c530c
+ea1ef010f0d91c68f2d91c69f7d91c6a
+f9d91c6bead91c65edd91c66eed91c67
+e50ce5d91c62e7d91c63e9d91c64e1ab
+96e2d91c60e4d91c6100166ec18b7672
+7912792ee9b7b2efd91da101f2d91de2
+f5d91de3765c776a7805ed0cedd91ddf
+f5d91de0f9d91de1e1d91ddce7d91ddd
+ecd91dde01e1d91dd1f4d91dd206f126
+f134f2d91dd8f542f7d91ddb012ad91d
+d659126969e9d91dd7012ad91dd95912
+6969e9d91ddae1d91dd3e7d91dd4eed9
+1dd5739673a26f74a287750013ed2af4
+14f4d91dcdf5d91dc4f7d91dcef8d91d
+cffad91dd0edd91dc8eed91dc9f0d91d
+caf1d91dcbf2d91dcce614e6d91dc3e7
+d91dc4e9d91dc5ead91dc6ecd91dc7e1
+d91dbde2d91dbee3d91dbfe4d91dc0e5
+012a304812616ef3d91dc2012ad91dc1
+4310ced91dc205f20cf2d91db8f3d91d
+b9f9d91dbae4d91db5eed91db6f0d91d
+b701f7d91dbbf9d91dbc6e7e6fa24f72
+09ed14edd91d7defd91db1f3d91db2f7
+d91db3f9d91db4e1d91dace2d91dade5
+d91daeebd91dafecd91db007ec10ecd9
+1d9ef1d91d63f3d91d9ff5d91da0e1d9
+1d9ae4d91d9be7d91d9cebd91d9d09ed
+14edd91da7eed91da8f3d91da9f4d91d
+aaf9d91dabe2d91da2e7d91da3e9d91d
+a4ebd91da5ecd91da667c0f16b906b92
+6ca2646d09ed13edd91d96eed91d97ef
+d91d98f0d91d99f4c3b6e2d91d90e5d9
+1d91e7d91d92eb28ecd91d95012ad91d
+9341127261e2d91d9407ed10edd91d83
+efd91d84f2d91d85f9d91d86e138e7d9
+1d80e9d91d81ebd91d82012ad91d7e41
+127261e2d91d7f08e914e9d91d8becd9
+1d8cf2d91d8df5d91d8ef9d91d8fe1d9
+1d87e2d91d88e5d91d89e7d91d8a678a
+68a255690aec1af30cf3d91d7bf6d91d
+7cf9d91d7decd91d78edd91d79f2d91d
+7ae1d91d73e7d91d74e8d91d75e9d91d
+76ead91d7707f010f0d91d6ef2d91d6f
+f5d91d70f7d91d71e1d91d6ae9d91d6b
+ecd91d6cedd91d6d10e4d91d7261a250
+62a2cb63a40d64a413650cee1ef410f4
+d91d66f5d91d67f6d91d68f9d91d69ee
+d91d63f2d91d64f3d91d65e90ce9d91d
+60ead91d61ecd91d62e130e3d91d5ee5
+d91d5f012ad91d5c4b126e64e1d91d5d
+0018ee3af41ef710f7d91d45f8d91d46
+f9d91d47fad91d48f4d91d42f5d91d43
+f6d91d44f10cf1d91d3ff2d91d40f3d9
+1d41eed91d3cefd91d3df0d91d3ee724
+eb16ebd91d39ec26edbd32012ad91d3a
+41127261e2d91d3be7d91d36e9d91d37
+ead91d38e40ce4d91d33e5d91d34e6d9
+1d35e1d91d30e2d91d31e3d91d320cea
+1eee10eed91d52efd91d53f8d91d54f9
+d91d55ead91d4fecd91d50edd91d51e5
+17e530e8d91d4de9d91d4e012ad91d4b
+4f127567f2d91d4ce1d91d49e2d91d4a
+e4abb601ecd91d56eed91d5704e1d91d
+58e4b7b2e5d91d59e7d91d5aebd91d5b
+74a4cc75b4a67600106e60752b753a77
+50e5d91b3ce9d77cefd91b7202edd91b
+7aeed91b7bf4d91b7c10e1012ad91b7d
+4d12796df2d91b7e6e346f4a72587410
+efd91b7902ebd91b6fedd91b70f0d91b
+7101f2d91b73f4d91b7403e1d91b75ef
+d91b76f3d91b77f4d91b7869c0d569a2
+6b6ba28b6ca2c36d0015ec30f31af80c
+f8d91b6cf9d91b6dfad91b6ef3d91b69
+f5d91b6af7d91b6becd91b64edd91b65
+f0d91b66f1d91b67f2d91b68e61ae90c
+e9d91b61ead91b62ebd91b63e6d91b5e
+e7d91b5fe8d91b60e1d91b59e2d91b5a
+e3d91b5be4d91b5ce5d91b5d07ec10ec
+d91b47eed91b48f4d91b49f6d91b4ae3
+d91b43e4d91b44e6d91b45e7d91b460a
+ee24f40cf4d91b54f5d91b55fad91b56
+eed91b50efd91b51f0012ad91b524412
+6576e1d91b53e1d91b4bead91b4cebd9
+1b4decd91b4eedd91b4f01f0d91b57f3
+d91b58613862a26965a26f6710f2d91b
+420010ed3cf22af2d91b33f334f5d91b
+36f642f9d91b39012ad91b344712756a
+f2d91b35012ad91b374712756af2d91b
+38edd91b2feed91b30efd91b31f0d91b
+32e80ee8d91b2de9d7e9eab32decd91b
+2ee1d91b29e5d91b2ae6d91b2be7d91b
+2c01e2d91b3aebd91b3b04e3d91b3ded
+d91b3eefd91b3ff0d91b40f2d91b4100
+2775c1a0e920f20ff2d3fef3d518f4d5
+2af7a3c6f9d583e9d352ebd372ecd385
+eed3b4efd3ca7a387a36e1d1a6e5d307
+e756e8d33c06ed0cedd597eed598efd5
+99f8d59ae8d594ead595ecd596012a2e
+41127261e2d324012ad3235010cbd324
+75a24b76a29177a2bf78a407790ff224
+f60cf6d590f8d591f9d592fad593f2d5
+8bf3d58cf426f5d58f012ad58d541261
+76f4d58eea0cead3abecd588eed589f0
+d58ae1d584e5d585e8d586e9d5870014
+ec25f314f809f8d552f9d553fad554f3
+d54ff5d550f6d551ecd54aedd54beed5
+4cefd54df1d54ee60fe6d545e7d546e8
+d547e9d548ead549e1d540e2d541e3d5
+42e4d543e5d5440dee17f40cf4d55ef5
+d55ff7d560f8d561eed55befd55cf3d5
+5de90ce9d557ebd558ecd559edd55ae1
+d555e4bd40e5d5560012ee20f40ff4d5
+70f5d571f7d572f8d573f9d574eed56b
+efd56cf0d56df1d56ef2d56fe619e6d5
+66e7d567e82cecd56aedd379012ad568
+54126176f4d569e1d562e2d563e4d564
+e5d5650def17f40cf4d57ff5d580f8d5
+81f9d582efd57cf1d57df3d57ee90ce9
+d578ead579edd57aeed57be1d575e5d5
+76e7d5776bc30170c16770a25871a2a3
+72a2be73a41d740015ee25f314f609f6
+d53df7d53ef9d53ff3d53af4d53bf5d5
+3ceed536efd537f0d538f1d3a4f2d539
+e814eb09ebd533ecd534edd535e8d530
+e9d531ead532e2d52be3d52ce4d52de5
+d52ee6d52f0013ee20f60ff6d3f1f7d3
+ecf8d3f2f9d3f3fad3f4eed3ecf0d3ed
+f2d3eef4d3eff5d3f0e90fe9d3e7ead3
+e8ebd3e9ecd3eaedd3ebe1d3e1e3d3e2
+e52ce6d3e5e7d3e6012ad3e34212656e
+e7d3e408ef0fefd3f9f0d3faf4d3fbf5
+d3fcf7d3fde2d3f5ecd3f6edd3f7eed3
+f80017ef34f514f809f8d515f9d516fa
+d517f5d512f6d513f7d514f209f2d50f
+f3d510f4d511efd50bf026f1d50e012a
+d50c4212656ee7d50de814ec09ecd508
+edd509eed50ae8d505e9d506ead507e5
+09e5d502e6d503e7d504e1d3ffe2d500
+e3d5010011ec1df50ff5d525f6d526f7
+d527f8d528fad529ecd521f0d522f2d5
+23f4d524e60fe6d1aee7d51de8d51ee9
+d51fead520e1d519e2d51ae3d51be4d5
+1c6ba2586ca2936da2e86ea43d6f0015
+ef25f514f809f8d3def9d3dffad3e0f5
+d3dbf6d3dcf7d3ddefd3d6f0d3d7f1d3
+d8f2d3d9f3d3dae814eb09ebd3d3ecd3
+d4edd3d5e8d3d0e9d3d1ead3d2e2d3cb
+e3d3cce4d3cde6d3cee7d3cf0011f11d
+f50ff5d380f6d381f7d382f8d383fad3
+84f1d37cf2d37df3d37ef4d37fe60fe6
+d377e7d378ebd379ecd37af0d37be1d3
+73e2d374e4d375e5d3760015ee25f414
+f709f7d39af8d39bf9d39cf4d397f5d3
+98f6d399eed392f0d393f1d394f2d395
+f3d396e71eeb09ebd38fecd390edd391
+e7d38be926ead38e012ad38c43127972
+ecd38de1d386e2d387e3d388e4d389e6
+d38a0017ed2af414f709f7d3b1f9d3b2
+fad3b3f4d3aef5d3aff6d3b0f009f0d3
+abf1d3acf2d3adedd3a8eed3a9efd3aa
+e714ea09ead3a6ebd1f7ecd3a7e7d3a3
+e8d3a4e9d3a5e409e4d3a0e5d3a1e6d3
+a2e1d39de2d39ee3d39f0015ee25f314
+f709f7d3c7f8d3c8f9d3c9f3d3c4f4d3
+c5f6d3c6eed3bfefd3c0f0d3c1f1d3c2
+f2d3c3e714eb09ebd3bcecd3bdedd3be
+e7d3b9e8d3bae9d3bbe1d3b5e2d3b6e3
+d3b7e4d3b8e5b90a66c150667e679a68
+a29969a2f86a0aee14f309f3d36ff5d3
+70f7d371eed36cefd36df0d36ee1d367
+e7d368e9d369ead36aecd36b04e9d31e
+eed31fefd320f2d321f4d3220015ef36
+f514f809f8d339f9d33afad33bf5d336
+f6d337f7d338efd32ff0d330f1d331f3
+d332f4022ad333482e54126167e2d335
+12616eefd334e614e909e9d32cead32d
+eed32ee6d32ae7a7eee8d32be1d325e2
+d326e3d327e4d328e5d3290011f138f5
+2af5d34bf644f7cef9f9d34ffa012ad3
+505412666ee7d351022ad34c412e5412
+666ee7d34e127261e2d34df1d347f2d3
+48f3d349f4d34ae918e9d341ebd342ec
+d343edd344f0012ad34544127570ecd3
+46e4d33de5d33ee6d33fe8d3400015ee
+25f414f709f7d364f8d365f9d366f4d3
+61f5d362f6d363eed35cefd35df0d35e
+f1d35ff3d360e814eb09ebd359ecd35a
+edd35be8d356e9d357ead358e2a95ce3
+d353e4b759e6d354e7d35561a25862a2
+bb63a41d64a463650015ef25f414f709
+f7d31bf8d31cf9d31df4d318f5d319f6
+d31aefd313f0d314f1d315f2d316f3d3
+17e714eb09ebd310edd311eed312e7d3
+0de8d30ee9d30fe1d308e2d309e3d30a
+e4d30be5d30c0015ef3df522f817f8d1
+bbf926fad1bf012ad1bc4811616e01f3
+d1bdf4d1bef5d1b8f6d1b9f7d1baefd1
+b2f0d1b3f12cf2d1b6f3d1b7012ad1b4
+5412666ee7d1b5e614eb09ebd1afecd1
+b0eed1b1e6d1ace7d1adead1aee1d1a7
+e2d1a8e3d1a9e4d1aae5d1ab0016ed2a
+f514f809f8d1d6f9d1d7fad1d8f5d1d3
+f6d1d4f7d1d5f009f0d1d0f3d1d1f4d1
+d2edd1cdeed1ceefd1cfe726ea1bead1
+c8eb26ecd1cc022ad1c9482e4c126174
+eed1cb12616eefd1cae7d1c5e8d1c6e9
+d1c7e1d1c0e3d1c1e4d1c2e5d1c3e6d1
+c40014ed25f314f809f8d1ebf9d1ecfa
+d1edf3d1e8f5d1e9f7d1eaedd1e3eed1
+e4efd1e5f0d1e6f1d1e7e60fe6d1dee7
+d1dfe8d1e0e9d1e1ebd1e2e1d1d9e2d1
+dae3d1dbe4d1dce5d1dd0015ed25f314
+f609f6d304f8d305f9d306f3d302f4d3
+03f5afbfedd1fdeed1feefd1fff1d300
+f2d301e714ea09ead1faebd1fbecd1fc
+e7d1f7e8d1f8e9d1f9e136e258e3d1f4
+e4d1f5e5d1f6022ad1ee412e4c126174
+eed1f0127261e2d1ef022ad1f1422e4b
+127468e9d1f312656ee7d1f2001a6fc1
+407761e72de744ebd5b9f2d759fa012a
+9041127261e2d91b26012a2e43127972
+ecd5ad022ad5ac4b2a4d10ced5ae10da
+d5ad776c79727a01ee28f3d91b28012a
+3041127261e2d91b26022ad779412c43
+10ced91b2710c6d91b2610e1d91b2410
+e1d91b25736c7346749475a2517602e5
+d91b21e8d91b22ecd91b2306eb10ebd9
+1b15f0d91b16f3d91b17f5d91b18e1d9
+1b11e8d91b12e9012ad91b134212656e
+e7d91b1405f00cf0d91b1bf2d91b1cf5
+d91b1de1d91b19e5d91b1ae8afc801ed
+28f2d91b20012ad91b1e43127972ecd9
+1b1f6fa25e70a262720014ee30f51af8
+0cf8d91b0ef9d91b0ffad91b10f5d91b
+0bf6d91b0cf7d91b0deed91b06efd91b
+07f0d91b08f2d91b09f4d91b0ae714e7
+d91b01e8d91b02e9d91b03ebd91b04ed
+d91b05e1d7fce2d7fde3d7fee5d7ffe6
+d91b0001ebb120eed7f901e9d7faf6d7
+fb68c0d66bbd6ba2436ca2666da2896e
+0bee25f509f5d7f6f8d7f7fad7f8eed7
+f2f0d7f3f2012a2e44126576e1d7f501
+2ad7f44e10d0d7f5e909e9d7efebd7f0
+edd7f1e1d5d9e5d7ede7d7ee0af014f6
+09f6d5c2f7d5c3f9d5c4f0d5bff1d5c0
+f5d5c1e1d5bae7d5bbe8d5bce9d5bdeb
+d5be0ae914ee09eed5cdf5d5cef7d15e
+e9d5caebd5cbedd5cce1d5c5e2d5c6e3
+d5c7e5d5c8e6d5c90bee14f209f2d5d7
+f3d5d8f5af15eed5d4efd5d5f0d5d6e7
+09e7d5d2e9d19eedd5d3e1d5cfe2d5d0
+e4d5d1682e69386a10e9d5b801e1d5b4
+eed5b501f3d5b6f6d5b7651d6546664a
+6704e1d5afe2d5b0e5d5b1e8d5b2efd5
+b310f3d5aa10e9d5ab615c62666407ea
+0cead5a6ecd5a7edd5a8f5d5a9e1d5a2
+e5d5a3e7d5a4e9d5a501edd59bf2d59c
+04e1d59de9d59eecd59ff2d5a0f5d5a1
+70d0c670b23371bc5f72be3a73002c77
+c13eeb3ff229f509f5d155f6d16bf7d1
+74f22cf3d126f4d13d22032acdf14db0
+c0522a5410d2cdf501cfcdf4d5cdf2ee
+09eecfccefcfe2f1a3ddebcf8deccfa6
+edcfb7e336e709e7cf39e8cf4de9cf69
+e3cdefe426e5cf1c032a3644444b4c53
+12696ee4cf0c012acf094910cecf0a12
+6576e1cf0a12686feacf0b773878a24a
+79a2697aa294e1cdbd0012f020f50ff5
+d182f6d183f7d184f8d185f9d186f0d1
+7df1d17ef2d17ff3d180f4d181e90fe9
+d178ead179ebd17aedd17befd17ce2d1
+75e6d176e7d177e8d17406f216f2d18a
+f3d18bf526f7d18e012ad18c5212756e
+f2d18de2d187e5d188eed1890ced17f2
+0cf2ad2df3d198f7d199f8d19aedd195
+eed196efd197e909e9d192ebd193ecd1
+94e1d18fe2d190e3d1910aec14f609f6
+d1a3f7d1a4f9d1a5ecd1a0eed1a1f0d1
+a2e1d19be2d19ce3d19de4d19ee7d19f
+6cc33471c1bd74c0e6747675a2847605
+e509e5d171edd172f3d173e12ce2d16f
+e3d170022ad16c432e4c126174eed16e
+127972ecd16d0014ed2ff21ef613f62c
+f7d153f9d154012ad15141127261e2d1
+52f2d14ef3d14ff4d150edd149eed14a
+efd14bf0d14cf1d14de818e8d143e932
+ead146ebd147ecd14822012ad1444b10
+c8d145e1d13ee2d13fe5d140e6d141e7
+d1420012ed3cf421f4d164f632f7d168
+f9d169fad16a022ad165422e44126576
+e1d16712656ee7d166edd15eefd15ff1
+2cf2d162f3d163012ad16045127468e9
+d161e70fe7d15ae9d15bead15cebd15d
+eccf3de1d156e2d157e3d158e5d15971
+a25c72a27b730013ee2af50ff5d138f6
+d139f8d13af9d13bfad13ceed132efd1
+33f1d134f326f4d137012ad135541268
+61e9d136e70fe7d12de8d12eead12fec
+d130edd131e2d127e3d128e4d129e526
+e6d12c012ad12a41127261e2d12b06ef
+16efd10cf1d10df426f5d110012ad10e
+4c126174eed10fe1d109e8d10aedd10b
+0016ee2af514f809f8b54ff9d124fad1
+25f5d121f6d122f7d123f209f2d11ef3
+d11ff4d120eed11befd11cf1d11de714
+eb09ebd118ecd119edd11ae7d115e8d1
+16e9d117e1d111e2d112e3cdefe5d113
+e6d1146ca2486da2806ea2c66fa41a70
+0011ee1df20ff2d105f3d106f4d107f6
+d108f9bb18eed101efd102f0d103f1d1
+04e70fe7cffce9cffdebcffeeccfffed
+d100e2cff8e3cff9e4cffae5cffb0010
+ee1df50ff5cfb2f7cfb3f8cfb4f9cfb5
+facfb6eecfafefcf8df0cfb0f2cfb1e9
+0ce9cfabeacfaceccfadedcfaee3cfa7
+e4cfa8e7cfa9e8cfaa0014ee25f414f8
+09f8cfc9f9cfcafacfcbf4cfc6f5cfc7
+f7cfc8eecfc1f0cfc2f1cfc3f2cfc4f3
+cfc5e70fe7cfbce8cfbdeacfbeebcfbf
+eccfc0e1cfb8e2cfb9e3cfbae4bb28e6
+cfbb0015ef25f514f809f8cfe0f9cfe1
+faa577f5cfddf6cfdef7cfdfefcfd8f0
+cfd9f1cfdaf2cfdbf3cfdce914ec09ec
+cfd5edcfd6eecfd7e9cfd2eacfd3ebcf
+d4e2a917e3cfcde5cfcee6cfcfe7012a
+cfd042127261e9cfd10013f020f60ff6
+cff3f7cff4f8cff5f9cff6facff7f0cf
+eef1cfeff2cff0f3cff1f5cff2e70fe7
+cfe9e9cfeaebcfebeccfecefcfede138
+e2cfe5e3cfe6e4cfe7e5cfe8012acfe3
+54126861e9cfe466c1c869c0e269a25c
+6aa2a76b0017ef2af514f809f8cfa3f9
+cfa4facfa5f5cfa0f6cfa1f7cfa2f209
+f2cf9df3cf9ef4cf9fefcf9af0cf9bf1
+cf9ce714ea09eacf97edcf98eecf99e7
+cf94e8cf95e9cf96e409e4cf91e5cf92
+e6cf93e1cf8ee2cf8fe3cf900015ed25
+f514f809f8cf7df9cf7efacf7ff5cf7a
+f6cf7bf7cf7cedcf75f0cf76f1cf77f2
+cf78f3cf79e714ea09eacf72ebcf73ec
+cf74e7cf6fe8cf70e9cf71e1cf6ae2cf
+6be4cf6ce5cf6de6cf6e0bed1ef409f4
+cf8af5cf8bf7cf8cedcf86f026f2cf89
+012acf874212656ee7cf88e509e5cf83
+e7cf84eccf85e1cf80e2cf81e4cf8266
+a27d67a284680016ee46f430f71bf7cf
+64f926facf68022acf65412e5412666e
+e7cf67127261e2cf66f4cf60f526f6cf
+63012acf614c126174eecf62f109f1cf
+5df2cf5ef3cf5feecf5aefcf5bf0cf5c
+e71eea13eacf56eb26edcf59012acf57
+41127261e2cf58e7cf53e8cf54e9cf55
+e1cf4ee2cf4fe3cf50e4cf51e5cf5202
+e5cf36edcf37f7cf380011ed1df40ff4
+cf48f5cf49f7cf4af9cf4bfacf4cedcf
+44f0cf45f2cf46f3cf47e52ae5cf3ee8
+44e9cf42eacf43ec012ab75043127972
+ecb751022acf3f412e4c126174eecf41
+127261e2cf40e1cf3ae2cf3be3cf3ce4
+cf3d61a26c62a2c963a42b64a4a76500
+17ee2af414f709f7cf33f9cf34facf35
+f4cf30f5cf31f6cf32f109f1cf2df2cf
+2ef3cf2feecf2aefcf2bf0cf2ce71eea
+13eacf26eb26eccf29012acf27431261
+6ef3cf28e7cf23e8cf24e9cf25e409e4
+cf20e5cf21e6cf22e1cf1de2cf1ee3cf
+1f0015f025f514f809f8cdd2f9cdd3fa
+cdd4f5cdcff6cdd0f7cdd1f0a55af1cd
+cbf2cdccf3cdcdf4cdcee626eb1bebcd
+c6ed26efcdca022acdc7482e53127972
+e3cdc9126562f2cdc8e6cdc3e8cdc4ea
+cdc5e1cdbee2cdbfe3cdc0e4cdc1e5cd
+c20018ee37f421f70cf7cdebf8cdecf9
+cdedfacdeef4cde7f526f6cdea012acd
+e844126576e1cde9f109f1cde4f2cde5
+f3cde6eecde1efcde2f0cde3e814eb09
+ebcddeeccddfedcde0e8cddbe9cddcea
+cddde409e4cdd8e5cdd9e7cddae1cdd5
+e2cdd6e3cdd70012ee29f40ff4cf04f5
+cf05f6cf06f7cf07f8cf08eecdffefcf
+00f0cf01f2b598f3012acf024312616e
+f3cf03e717e7cdf9e8cdfae9cdfbebcd
+fcec22012acdfd4910cecdfee2cdf0e3
+2ae56ee6cdf822055211522e53325410
+d2cdf510cfcdf410d5cdf22acdf1312a
+4d10c5cdf31137b2cdf2012acdf64112
+7261e2cdf70eea1af10cf1cf18f3cf19
+f5cf1af8cf1beacf14ebcf15eecf16ef
+cf17e50ce5cf10e6cf11e7cf12e8cf13
+e1cf0de2cf0ee3cf0f001d70c1bc7888
+e93fe932eccb4df3c9e0f4cbc2054b1f
+4b324d4a54126861e9cb2c106801612a
+6d10f2cb2a10f2cb2912796df2cb2b2a
+cb26422e44126576e1cb28127261e8cb
+27785079547a8ee1012a2e41127261e2
+c9b9012ac9b85010cbc9b910edcbe805
+f513f52cf8cbeef9cbef012acbec4812
+616ee9cbede5cbe9edcbeaeecbeb02e5
+cbf0e8cbf1eecbf273a9736274a075a2
+5e7707ee0ceecbe4efcbe5f2cbe6f7cb
+e7e1cbe0e2cbe1e7cbe2edcbe309ee0f
+eecbbdf1cbbef3cbbff4cbc0f7cbc1e1
+cbb8e5cbb9e8cbbae9cbbbedcbbc09f0
+0ff0cbc8f2cbc9f4cbcaf5cbcbf6cbcc
+e1cbc3e8cbc4e9cbc5eecbc6efcbc700
+13ef20f50ff5cbdcf7cbddf8cbdef9cb
+dffacbceefcbd7f0cbd8f1cbd9f2cbda
+f4cbdbe60fe6cbd2e7cbd3e9cbd4eacb
+d5edcbd6e1cbcde2cbcee3cbcfe4cbd0
+e5cbd170a24f71a27a720012ed2af419
+f4cbb3f5cbb4f7cbb5f826f9cbb3012a
+cbb654126962f4cbb7edcbafefcbb0f0
+b3cbf1cbb1f2cbb2e60fe6cbaae7cbab
+e8cbace9cbadebcbaee1cba6e3cba7e4
+cba8e5cba90cee17f10cf1cba1f2bdbd
+f3cba2f4cba3eecb9eefcb9ff0cba0eb
+09ebcb9beccb9cedcb9de1a794e5cb99
+e9cb9a01e1cba4edcba568c1d46cc124
+6ca2426da27d6ea2c86f0010ee1df30f
+f3cb94f4cb95f6cb96f7cb97f9cb98ee
+cb90efcb91f0cb92f1cb93e80ce8cb8c
+e9cb8debcb8eedcb8fe3cb88e5cb89e6
+cb8ae7cb8b0011ee1df40ff4c16cf5b9
+99f6cb5bf7cb5cfacb5deecb57efcb58
+f2cb59f3cb5ae50fe5cb52e7cb53e8cb
+54ebcb55eccb56e1cb4ee2cb4fe3cb50
+e4cb510015ee25f414f809f8cb6ff9cb
+70facb71f4cb6df5cb22f7cb6eeecb68
+efcb69f1cb6af2cb6bf3cb6ce614ea09
+eacb65eccb66edcb67e6cb62e8cb63e9
+cb64e1cb5ee2cb5fe3b5c3e4cb60e5cb
+610016ed2af314f709f7cb85f9cb86fa
+cb87f3cb82f4cb83f6cb84f009f0cb7f
+f1cb80f2cb81edcb7ceecb7defcb7ee7
+14ea09eacb79ebcb7aeccb7be7cb76e8
+cb77e9cb78e1cb72e2bd8ee3cb73e4cb
+74e5cb75687c69a2566aa2a16b08ee0f
+eecb48efcb49f0cb4af2cb4bf5cb4ce1
+cb43e2cb44e7cb45e8012acb46441265
+76e1cb470bee14f409f4cb23f6cb24f7
+cb25eecb20efcb21f2cb22eb09ebcb1d
+eccb1eedcb1fe4cb1ae7cb1be8cb1c00
+15ef25f514f809f8cb3ff9cb40facb41
+f5cb3cf6cb3df7cb3eefcb37f0cb38f2
+cb39f3cb3af4cb3be714ec09eccb34ed
+cb35eecb36e7cb32e8cb33eaad68e1cb
+2de2cb2ee3cb2fe4cb30e6cb3110f4cb
+42648c646865a066a27b6708eb0febcb
+15eccb16eecb17f3cb18f5cb19e1cb11
+e4cb12e7cb13e9cb1405ef12efc9faf4
+c9fbf5012ac9fc4d12796df2c9fde1c9
+f7e3c9f8eec9f90011ef1df30ff3b16b
+f6cb0af8cb0bf9cb0cfacb0defcb07f0
+cb08f1cb09f2b16be70fe7cb02e9cb03
+ebcb04eccb05edcb06e1c9fee2c9ffe4
+cb00e5cb0102e1cb0ee5cb0feccb1061
+a26b62a2c5630fe924ee0ceec9f4f0c9
+f5f2a35bf7c9f6e932eac9f1ebc9f2ed
+c9f3012ac9ef4f127279e1c9f0e528e5
+30e6c9eae73ce8c9ee012ac9e8541268
+61e9c9e9022ac9eb4b2e5412616decc9
+ed126e64e1c9ece1c9e3e2c9e4e326e4
+c9e7012ac9e54812616ee9c9e60016ef
+2af514f809f8c9cef9c9cffac9d0f5c9
+cbf6c9ccf7c9cdf209f2c9c9f3c9caf4
+bd4befc9c6f0c9c7f1c9c8e71eeb13eb
+c9c2ec26edc9c5012ac9c35012686cf0
+c9c4e7c9bfe8c9c0e9c9c1e2c9bae3c9
+bbe4c9bce5c9bde6c9be0011ee1df30f
+f3c9def4c9dff5c9e0f6c9e1f9c9e2ee
+c9daefc9dbf0c9dcf2c9dde70fe7c9d5
+e8c9d6e9c9d7ecc9d8edc9d9e2c9d1e3
+c9d2e5c9d3e6c9d4057839782a797cf5
+cbf30bf014f409f4cd26f5cd27f7cd28
+f0cd23f1cd24f2cd25ec09eccd20eecd
+21efcd22e1cd1de3cd1ee8cd1f01e1cd
+29f0cd2a757676a26c7705ed1bed2cf3
+cd1bf4cd1c022acd18432e5212756ef2
+cd1a127972eccd19e1cd15e3cd16e8cd
+170013ee20f60ff6cd03f7cd04f8cd05
+f9cd06facbf3eecbfef0cbfff1cd00f2
+cd01f3cd02e70fe7cbf9e9cbfaebcbfb
+eccbfcedcbfde1cbf4e2cbf5e3cbf6e4
+cbf7e6cbf80ded17f00cf0cd11f3cd12
+f7cd13facd14edcd0eeecd0fefcd10e8
+0ce8cd0ae9cd0beacd0ceccd0de1cd07
+e3cd08e5cd09001970b07820ee0ceecd
+84efc32cf5cda2f7cdb3782a7934edcd
+6a01e4cdbaf7cdbb10f5cdbc746f7450
+75667705ed09edcdb7efcdb8f2cdb9e1
+cdb4ebcdb5eccdb603e3cd9ee8cd9fed
+cda0f7cda10eed2ef416f432f5cdb0f9
+cdb1facdb2012acdae4c126174eecdaf
+edc32cefcdaaf026f1cdad012acdab47
+127265ebcdace60ce6cda6e7cda7e9cd
+a8ebcda9e2cda3e3cda4e5cda5703472
+3e7301ebcd9cf7cd9d01eecd97f4cd98
+02e9cd99efcd9af4cd9b68c1176bc0e3
+6b886da2496ea2c66f0cec16f00cf0cd
+93f2cd94f5cd95f7cd96eccd91ed9eef
+cd92e509e5cd8ee6cd8fe7cd90e2cd8b
+e3cd8ce4cd8d06e90ce9abb6edcd67f4
+cd68f7cd69e1cd64e2cd65e8cd660016
+ed4ef426f81bf8bf51f926facd83012a
+2e43127972eccd82012acd814210c7cd
+82f4cd7ef5cd7ff7cd80f009f0cd7cf1
+cd7df2b12eedcd77ee26efcd7b022acd
+78432e47127265ebcd7a127972eccd79
+e61de912e9cd73ebcd74ec012acd7543
+127972eccd76e6cd70e7cd71e8cd72e1
+cd6be2cd6ce3cd6de4cd6ee5cd6f05ee
+09eecd88f2cd89f7cd8ae4cd85e7cd86
+eccd87683a69446a02e7cd61e9cd62f3
+cd6301e7cd57f0cd5807ee0ceecd5df2
+cd5ef4cd5ff5cd60e1cd59e6cd5aeccd
+5bedcd5c644e6446654a6704e1cd52ee
+cd53f2cd54f3cd55f5cd5610e2cd440b
+ec14f309f3cd4ff4cd50f9cd51eccd4c
+edcd4deecd4ee713e7cd48e926eacd4b
+012acd495412656cf5cd4ae1cd45e2cd
+46e5cd47613062a2536310e6cd430013
+ed20f60ff6cd3af7cd3bf8cd3cf9cd3d
+facd3eedcd35eecd36efcd37f0cd38f2
+cd39e719e7cd30e832e9cd33eac3cfeb
+cd34012acd314c126174eecd32e1cd2b
+e2cd2ce3cd2de4cd2ee6cd2f03e2cd3f
+ebcd40eccd41f0cd426da67e6eba9b6f
+001b70c0f97923ea0ceac93dedb1dff2
+c983f3c992792a7a3ae3c92b02e4c9b4
+edc9b5f9c9b610edc9b7745f743c75a2
+4976a2537701e9c9b2ecc9b30011f11d
+f50ff5c9a9f7c9aaf8c9abf9c9acfac9
+adf1c9a5f2c9a6f3c9a7f4c9a8e90fe9
+c9a0ebc9a1ecc9a2edc9a3eec9a4e1c9
+9ce2c99de4c99ee5c99f03e2c9aee5c9
+afedc9b0eeb32d10e4c9b17070729673
+07f00cf0c998f4c999f5c99af8c99be1
+c993e32ce9c996efc997012ac9944c12
+6174eec99505ef09efc980f4c981f9c9
+82e1b5dbebc97eedc97f0ef31af70cf7
+c98ff8c990f9c983fac991f3c98bf4c9
+8cf5c98df6c98ee70ce7c987eec988ef
+c989f2c98ae1c984e3c985e5c98669c1
+146ca36c406d8c6ea2616f02e4c97bee
+c97cf2c97d08ed0fedc95aefc95bf2c9
+5cf4c95df5c95ee132e4c957e5c958eb
+c959012ac95554126962f4c9560cec17
+f20cf2c968f4c969f5c96af7c96becc9
+65efc966f0c967e709e7c962e9c963eb
+c964e1c95fe2c960e3c9610def21f30c
+f3c977f4c978f5c979f8c97aefc973f0
+26f2c976012ac97444126576e1c975e9
+0ce9c96feac970ebc971eec972e1c96c
+e5c96de7c96e69966aa2426b0fed1af5
+0cf5c951f6c952f8c953fac954edc94d
+efc94ef2c94ff3c950e50ce5c949e7c9
+4ae9c94bebc94ce1c945e2c946e3c947
+e4c94802e1c93ae5c93beec93c05f312
+f3c941f6c942f7012ac9434312616ef3
+c944e22ce3c940e7c93d012ac93e4312
+616ef3c93f642c64326648674c6810f4
+c93903e1c92febc930f4c931f5c93210
+f5c93304e2c934e3c935e7c936efc937
+f5c938613a62506302e1c92cefc92df5
+c92e03e1c91fe3c920f2c921f6c92207
+ef0cefc927f2c928f4c929f5c92ae9c9
+23ebc924ecc925edc926002473c2ffe8
+2aef0fefc32cf2c377f3b407f4c3a9f9
+ab03e8c186e9bfdfebbfd6ecc1e5ee01
+2ad83a1e4d126f6ee7afa477c1607738
+78a26b79a2c67aa411e7c16c0017ed34
+f31ef609f6c504f7c505fac506f3c500
+f426f5c503012ac50154126861e9c502
+f009f0c3fef1c3fff2af2fedc3fbeec3
+fcefc3fde714ea09eab32debc3f9ecc3
+fae7c3f6e8c3f7e9c3f8e409e4af7be5
+c3f4e6c3f5e1c3f1e2c3f2e3c3f30019
+ee2df417f70cf7c51df8c51ef9c51ffa
+c520f4c51af5c51bf6c51cf109f1c517
+f2c518f3c519eec514efc515f0c516e7
+17ea0ceac510ebc511ecc512edc513e7
+c50de8c50ee9c50fe409e4c50ae5c50b
+e6c50ce1c507e2c508e3c5090013ed2a
+f60ff6c52ff7c530f8c531f9c532fac5
+33ed38f0c52cf2c52df4c391f5c52e01
+2ac52a4c126174eec52be70fe7c525e8
+c526eac527ebc528ecc529e2c521e3c5
+22e4a530e5c523e6c5240013ef20f50f
+f5c543f6c544f7c545f8c546fac547ef
+c53ef0c53ff1c540f2c541f4c542ea0f
+eac539ebc53aecc53bedc53ceec53de1
+c534e4c535e5c536e8c537e9c53873a2
+5e74a2ae75a406760013f129f618f6c3
+ebf7c3ecf8c3edf9c3eefa012ac3ef41
+127261e2c3f0f1c3e6f2c3e7f3c3e8f4
+c3e9f5c3eaeb0febc3e1ecc3e2eec3e3
+efc3e4f0c3e5e1c3dbe4c3dce62ce7c3
+dfe8c3e0012ac3dd50126861e7c3de00
+16ee2af514f809f8c3a6f9c3a7fac3a8
+f5c3a3f6c3a4f7c3a5f109f1c3a1f3c3
+a2f4c391eec39eefc39ff0c3a0e814eb
+09ebc39becc39cedc39de8c398e9c399
+eac39ae2c393e3c394e5c395e6c396e7
+c3970018ed2df317f60cf6c3bff7c3c0
+f8c3c1f9c3c2f3c3bcf4c3bdf5c3bef0
+09f0c3b9f1c3baf2c3bbedc3b6eec3b7
+efc3b8e714ea09eac3b3ebc3b4ecc3b5
+e7c3b0e8c3b1e9c3b2e409e4c3ade5c3
+aee6c3afe1c3aae2c3abe3c3ac0015ef
+38f41df812f8c3d7f9c3d8fa012ac3d9
+4c126174eec3daf4c3d4f5c3d5f6c3d6
+efc3cef0c3cff1c3d0f226f3c3d3012a
+c3d141127261e2c3d2e714ea09eac3cb
+ebc3ccedc3cde7c3c8e8c3c9e9c3cae1
+c3c3e2c3c4e3c3c5e4c3c6e5c3c76ac3
+846ec1fc6ea27c6fa2d270a42c71a48e
+720017ef33f51df809f8c390f9c391fa
+c392f5c38cf6c38df7012ac38e411272
+61e2c38ff209f2c389f3c38af4c38bef
+c386f0c387f1c388e814ec09ecc383ed
+c384eec385e8c380eac381ebc382e41a
+e4c37be6c37ce7022ac37d422e441265
+76e1c37f12656ee7c37ee1c378e2c379
+e3c37a0017ee2af514f809f8c329f9c3
+2afac32bf5c326f6c327f7c328f209f2
+c323f3c324f4c325eec320f0c321f1c3
+22e815eb0aebd82e50ecc31eedc31fe8
+c31be9c31ceac31de509e5c318e6c319
+e7c31ae1c315e2c316e4c3170016ef34
+f51ef813f8c340f926fac343012ac341
+45127468e9c342f5c33df6c33ef7c33f
+f209f2c33af3c33bf4c33cefc337f0c3
+38f1c339e714ea09eac335ebc336edad
+15e7c332e8c333e9c334e1c32de3c32e
+e4c32fe5c330e6c3310018ee2df417f7
+0cf7c35af8c35bf9c35cfac35df4c357
+f5c358f6c359f109f1c354f2c355f3c3
+56eec351efc352f0c353e814eb09ebc3
+4eecc34fedc350e8c34be9c34ceac34d
+e413e4c347e526e7c34a012ac3484512
+7468e9c349e1c344e2c345e3c3460017
+ee34f51ef813f82cf9c375fac376012a
+c37342127567e9c374f5c370f6c371f7
+c372f109f1c36df2c36ef3c36feec36a
+efc36bf0c36ce814eb09ebc367ecc368
+edc369e8c364e9c365eac366e509e5c3
+61e6c362e7c363e1c35ee2c35fe3c360
+6aa2636ba2cb6ca4206d0015ef25f514
+f809f8c312f9c313fac314f5c30ff6c3
+10f7c311efc30af0c30bf1c30cf2c30d
+f4c30ee614e909e9c307edc308eec309
+e6c304e7c305e8c306e1c1fde2c1fee3
+c1ffe426e5c303012ac3004811616e01
+f3c301f4c3020015ee38f51ef813f82c
+f9c1ccfac1cd012ac1ca4212656ee7c1
+cbf5c1c7f6c1c8f7c1c9eec1c1f1c1c2
+f2c1c3f3c1c4f4012ac1c54212656ee7
+c1c6e81eeb13ebc1bdec26edc1c0012a
+c1be5412616bf2c1bfe8c1bae9c1bbea
+c1bce2c1b5e3c1b6e4c1b7e5c1b8e7c1
+b90015ef25f514f809f8c1e2f9c1e3fa
+c1e4f5c1dff6c1e0f7c1e1efc1daf0c1
+dbf2c1dcf3c1ddf4c1dee91eec09ecc1
+d7edc1d8eec1d9e92ceac1d5ebc1d601
+2ac1d344126576e1c1d4e1c1cee2c1cf
+e3c1d0e5c1d1e6c1d20014ee2ff314f7
+09f7c1faf8c1fbfac1fcf3c1f7f5c1f8
+f6c1f9eec1f1efc1f2f0c1f3f126f2c1
+f6012ac1f441127261e2c1f5e80fe8c1
+ece9c1edeac1eeebc1efecc1f0e1c1e6
+e2c1e7e3c1e8e5c1e9e6012ac1ea4c12
+6174eec1eb65c1fb65a26266a2c667a4
+3b68a49c690017ed2af414f809f8c1b2
+f9c1b3fac1b4f4c1aff5c1b0f7c1b1f0
+09f0c1acf1c1adf2c1aeedc1a9eec1aa
+efc1abe714ea09eac1a6ebc1a7ecc1a8
+e7c1a3e8c1a4e9c1a5e409e4c1a0e5c1
+a1e6c1a2e1c19de2c19ee3c19f0016ee
+3ef41ef713f7c14cf926fac14f012ac1
+4d41127261e2c14ef4c149f5c14af6c1
+4bf109f1c146f2c147f3c148eec142ef
+26f0c145012ac14341127261e2c144e7
+14eb09ebc13fecc140edc141e7ad08e8
+c13deac13ee1c138e2c139e3c13ae4c1
+3be5c13c0018ed37f421f716f7c167f8
+2cf9c16afac16b012ac16845127468e9
+c169f4c164f5c165f6c166f009f0c161
+f1c162f2c163edc15eeec15fefc160e7
+27ea09eac15bebc15cecc15de73ee8c1
+58e9012ac1594c126174eec15a012ac1
+5641127261e2c157e409e4c153e5c154
+e6c155e1c150e2c151e3c1520018ee2d
+f417f70cf7c183f8b793f9c184fac185
+f4c180f5c181f6c182f109f1c17df2c1
+7ef3c17feec17aefc17bf0c17ce814eb
+09ebc177ecc178edc179e8c174e9c175
+eac176e509e5c171e6c172e7c173e2c1
+6de3c16ee4012ac16f41127261e2c170
+0016ee2af414f809f8c19af9c19bfac1
+9cf4c197f5c198f7c199f109f1c195f2
+abf2f3c196eec192efc193f0c194e714
+eb09ebc18fecc190edc191e7c18ce9c1
+8deac18ee2c187e3c188e4c189e5c18a
+e6c18b61a27d62a2db63a430640017ee
+3ef528f81df82af93cfac137012ac133
+4c126174eec134012ac1354c126174ee
+c136f5c130f6c131f7c132f209f2c12d
+f3c12ef4c12feec12af0c12bf1c12ce7
+14ea09eac127ebc128edc129e7c124e8
+c125e9c126e413e4c120e526e6c12301
+2ac1214c126174eec122e1c11de2c11e
+e3c11f0015ee38f526f812f8bfe7f926
+fabfea22012abfe84310c3bfe9f5bfe3
+f6bfe4f7012abfe541127261e2bfe6ee
+d828d6efbfdff1bfe0f3bfe1f4bfe2e6
+14ea09eabfdcebbfddedbfdee6bfd9e7
+bfdae9bfdbe1bfd4e2bfd5e3bfd6e4bf
+d7e5bfd80017ef2af514f809f8c100f9
+c101fac102f5bffdf6bffef7bffff209
+f2bffaf3bffbf4bffcefbff7f0bff8f1
+bff9e914ec09ecbff4edbff5eebff6e9
+bff1eabff2ebbff3e409e4bfeee6bfef
+e8bff0e1bfebe2bfece3bfed0019ee2d
+f417f70cf7c119f8c11af9c11bfac11c
+f4c116f5c117f6c118f109f1c113f2c1
+14f3c115eec110efc111f0c112e717ea
+0ceac10cebc10decc10eedc10fe7c109
+e8c10ae9c10be409e4c106e5c107e6c1
+08e1c103e2c104e3c105002473c1fce2
+20ee0feec75defc776f2c79df6c7e4f9
+c7ffe2c55fe4c58ee5c5a8e7c5c3ecaf
+d977c0e5773878a24479a26c7aa2bce1
+c54809ed0fedc7efefc7f0f2c7f1f7c7
+f2f8c7f3e2c7e7e332e5c7ece7c7ede9
+c7ee032ac7e84232443a53126964e4c7
+eb127261e8c7e9126576e1c7ea0bee14
+f209f2c7fdf5a97ff8c7feeec7faefc7
+fbf1c7fce709e7c7f7e9c7f8ecc7f9e1
+c7f4e4c7f5e5c7f60016ed2af314f609
+f6c913f8c914f9c915f3c910f4c911f5
+c912f009f0c90df1c90ef2c90fedc90a
+eec90befc90ce714ea09eac907ebc908
+ecc909e7c904e8c905e9c906e2c900e3
+b3cae4c901e5c902e6c90308eb0febc9
+1aedc91bf5c91cf9c91dfac91ee1c916
+e2c917e4c918e9c919734274a25775a2
+887602e8c7e5edc7e6efa7170014ee25
+f514f809f8c7bbf9c7bcfac7bdf5c7b8
+f6c7b9f7c7baeec7b3efc7b4f1c7b5f3
+c7b6f4c7b7e60fe6c7aee7c7afe8c7b0
+ebc7b1edc7b2e1c7a9e2c7aae3c7abe4
+c7ace5c7ad0eef1af50cf5c7c8f8c7c9
+f9c7cafac7cbefc7c5f0c7c6f2c7c7f3
+ad68e90ce9c7c1eac7c2ebc7c3edc7c4
+e4c7bee5c7bfe7c7c00017ef34f514f8
+09f8c7e1f9c7e2fac7e3f5c7def6c7df
+f7c7e0f209f2c7dbf3c7dcf4c7ddefc7
+d7f026f1c7da012ac7d841127261e2c7
+d9e814eb09ebc7d5edc7d6eea5f2e8c7
+d2e9c7d3eac7d4e509e5c7cfe6c7d0e7
+c7d1e1c7cce3c7cde4c7ce6ac2866ec1
+2c6e906fa29a70a2e071a403720ceb17
+f00cf0c7a6f5aad4f8c7a7fac7a8ebc7
+3becc7a4edc7a5e609e6c7a1e7c7a2e9
+c7a3e1c79ee2c79fe5c7a00018ed2df4
+17f70cf7c773f8c5d6f9c774fac775f4
+c770f5c771f6c772f109f1c76ef2c76f
+f3c571edc76beec76cf0c76de71eea09
+eac768ebc769ecc76ae72ce8c766e9c7
+67012ac7644212656ee7c765e409e4c7
+61e5c762e6c763e1c75ee2c75fe3c760
+0014ed25f314f609f6c787f7c788f9c7
+89f3c784f4c785f5c786edaba5eec781
+efafb9f0c782f1c783e70fe7c77ce8c7
+7de9c77eeac77febc780e1c777e3c778
+e4c779e5c77ae6c77b0aee14f509f5c7
+91f8c792f9c793eec78eefc78ff3c790
+e2c78ae7c78be8c78ce9c5a8ecc78d08
+ee0feec798efc799f1c79af4c79bf9c7
+9ce7c794ebc795ecc796edc7976aa275
+6ba2b66ca4106d0018ed40f317f60cf6
+c759f7c75af8c75bfac75cf3c756f4c7
+57f5c758f009f0c753f1c754f2c755ed
+3eeec750ef012ac7514212656ee7c752
+012ac74e54126962f4c74fe714ea09ea
+c74bebc74cecc74de7c748e8c749e9c7
+4ae409e4c745e5c746e6c747e1c742e2
+c743e3c7440010ee26f418f4c715f5c7
+16f8c717f9c718fa012aade14212656e
+e7ade2eec711efc712f2c713f3c714e9
+0ce9c70deac70eecc70fedc710e1c709
+e2c70ae4c70be8c70c0016ed2af414f7
+09f7c72ef8c72ffac730f4c72bf5c72c
+f6c72df109f1c728f2c729f3c72aedc7
+25eec726efc727e61ee913e92ceac723
+ebc724012ac7214212656ee7c722e6c7
+1ee7c71fe8c720e1c719e2c71ae3c71b
+e4c71ce5c71d0011ef1df60ff6c73df7
+c73ef8c73ff9c740fac741efc739f1c7
+3af2c73bf5c73ce90fe9c735eac736eb
+c737edc738eea5fbe1c731e3c732e5c7
+33e7c73465c16965a26766a2ad67a2ba
+68a40f690016ee34f51ef809f8c706f9
+c707fac708f5c702f626f7c705012ac7
+034c126174eec704f209f2c5fff3c700
+f4c701eec5fcefc5fdf1c5fee714ea09
+eac5f9ecc5faedc5fbe7c5f6e8c5f7e9
+c5f8e1c5f1e2c5f2e4c5f3e5c5f4e6c5
+f50014ed25f414f809f8c5bbf9c5bcfa
+c5bdf4c5b8f5c5b9f7c5baedc5b3eec5
+b4efc5b5f1c5b6f2c5b7e70fe7c5aee8
+c5afe9c5b0eac5b1ebc5b2e1c5a9e2c5
+aae3c5abe4c5ace5c5ad04e1c5bee4c5
+bfecc5c0f2c5c1f5c5c20017ee2af514
+f809f8c5d8f9c5d9fac5daf5c5d5f6c5
+d6f7c5d7f209f2c5d3f3c5d4f4bf3fee
+c5d0f0c5d1f1c5d2e814eb09ebc5cdec
+c5ceedc5cfe8c5cae9c5cbeac5cce409
+e4c5c7e5c5c8e7c5c9e1c5c4e2c5c5e3
+c5c60015ef25f514f809f8c5eef9c5ef
+fac5f0f5c5ebf6c5ecf7c5edefc5e6f0
+c5e7f1c5e8f2c5e9f4c5eae614eb09eb
+c5e3edc5e4eec5e5e6c5e0e7c5e1e9c5
+e2e1c5dbe2c5dce3c5dde4c5dee5c5df
+61a26862a2b363a411640017ee33f51d
+f812f8c5a4f926fac5a722012ac5a554
+10c4c5a6f5c5a1f6c5a2f7c5a3f209f2
+c59ef3c59ff4c5a0eec59bf0c59cf1c5
+9de814eb09ebc598ecc599edc59ae8c5
+95e9c596eac597e409e4c592e6c593e7
+c594e1c58fe2c590e3c5910015ee25f3
+14f809f8c55cf9c55dfac55ef3c559f4
+c55af7c55beec554efc555f0c556f1c5
+57f2c558e614eb09ebc551ecc552edc5
+53e6c54ee7c54feac550e1c549e2c54a
+e3c54be4c54ce5c54d0014ed2ff21ef6
+09f6c575f7c576f9c577f2c571f426f5
+c574012ac57244126576e1c573edc56c
+eec56defc56ef0c56ff1c570e61de638
+e8c568e9c569eac56aebc56b012ac565
+4811616e01f3c566f4c567e1c560e2c5
+61e3c562e4c563e5c5640015ec2ef11d
+f509f5c58bf8c58cfac58df1c6f7f2c5
+88f4012ac5894212656ee7c58aecc584
+edc585eec586efc587f0b95ae614e909
+e9c581eac582ebc583e6c57ee7c57fe8
+c580e1c578e232e3c57be4c57ce5c57d
+012ac57944126576e1c57a66df6669d5
+1069ac536ab2216bb65a6c002272c13f
+e11dee0feebf5cefbf6af4bf9ef5bfa6
+f6bfbee1bd86e2bd9de7bde9e9bf0276
+5a764c776878a24879a2497a03e8bfd0
+ecbfd1eebfd2fabfd304e1bfbfe9bfc0
+ebbfc1f3bfbef5bfc208ec18ecbfc7ed
+bfc8ef2cf4bfcbf7bfcc22012abfc95a
+10c1bfcae1bfc3e5bfc4e7bfc5e8bfc6
+10edbfcd01e1bfceeebfcf72a26673a2
+8e74a2a3750015ef36f414f709f7bfbc
+f9ab45fabfbdf4bfb9f5bfbaf6bfbbef
+bfb2f0bfb3f1bfb4f2bfb5f3012abfb6
+4201652c721161e9bfb8116ee7bfb7e9
+14ec09ecbfafedbfb0eebfb1e9bfacea
+bfadebbfaee1bfa7e3bfa8e4bfa9e5bf
+aae6bfab0bed14f409f4bf94f6bf95fa
+bf96edbf91eebf92efbf93e909e9bf8e
+ebbf8fecbf90e1bf8be3bf8ce7bf8d06
+e90ce9bf9aedbf9bf2bf9cf3bf9de1bf
+97e4bf98e5bf9906ee0ceebfa2efbfa3
+f3bfa4f5bfa5e7bf9fe8bfa0e9bfa169
+c2116dc11b6d3c6ea2676fa29270a2f6
+7110f2bf8a0016ec2af214f709f7bf59
+f8bf5af9bf5bf2bf56f5bf57f6bf58ef
+09efbf53f0bf54f1bf55ecbf50edbf51
+eebf52e61de912e9bf4ceabf4deb012a
+bf4e4d12796df2bf4fe6bf49e7bf4ae8
+bf4be1bf44e2bf45e3bf46e4bf47e5bf
+480cec17f30cf3bf66f5bf67f7bf68fa
+bf69ecbf63edbf64eebf65e809e8bf60
+e9bf61eabf62e1bf5de2bf5ee4bf5f00
+16ee3ef428f813f8bf80f926fabf8301
+2abf8154126962f4bf82f42cf5bf7ef7
+bf7f012abf7c41127261e2bf7df109f1
+bf79f2bf7af3bf7beebf76efbf77f0bf
+78e814eb09ebbf73ecbf74edbf75e8bf
+70e9bf71eabf72e1bf6be2bf6ce3bf6d
+e5bf6ee7bf6f04e1bf84e5bf85eebf86
+ef26f8bf89012abf874c126973f5bf88
+69a2456aa29a6ba2af6c0011eb1def0f
+efbf3ff0bf40f1bf41f5bf42f8bf43eb
+bf3becbf3cedbf3deebf3ee50fe5bf36
+e6bf37e7bf38e9bf39eabf3ae1bf32e2
+bf33e3bf34e4bf350015ef25f514f809
+f8bf17f9bf18fabf19f5bf14f6bf15f7
+bf16efbf0ff0bf10f1bf11f2bf12f3bf
+13e61eea09eabf0cebbf0decbf0ee62c
+e7bf0ae8bf0b012abf084c12696de2bf
+09e1bf03e2bf04e3bf05e4bf06e5bf07
+06ec0cecbf1df0bf1ef7bf1ff8bf20e1
+bf1ae5bf1be9bf1c0010ec1df20ff2bf
+2df3bf2ef4bf2ff5bf30f9bf31ecbf29
+edbf2aeebf2befbf2ce50ce5bf25e8bf
+26e9bf27eabf28e1bf21e2bf22e3bf23
+e4bf2465c0cf656466a27d67a28a6807
+ee0ceebdfef3bdfff4bf00f5bf01e1bd
+fae8bdfbe9bdfcedbdfd0019ee2df417
+f70cf7bde2f8bde3f9bde4fabde5f4bd
+dff5bde0f6bde1f109f1bddcf2bdddf3
+bddeeebdd9efbddaf0bddbe717ea0cea
+bdd5ebbdd6ecbdd7edbdd8e7b138e8bd
+d3e9bdd4e409e4bdd0e5bdd1e6bdd2e1
+bdcde2bdcee3bdcf01e1bde6ee012abd
+e743127972ecbde80eed1af20cf2bdf6
+f4bdf7f5bdf8fabdf9edbdf2eebdf3ef
+bdf4f1bdf5e80ce8bdeee9bdefebbdf0
+ecbdf1e1bdeae2bdebe7012abdec4112
+7261e2bded619062a29163a2f9640deb
+17ee0ceebdc9efbdcaf0bdcbf1bdcceb
+bdc6ecbdc7edbdc8e70ce7bdc2e8bdc3
+e9bdc4eabdc5e1bdbfe2bdc0e4bdc100
+14ec2ff21ef713f7bd99f826fabd9c01
+2abd9a4212656ee7bd9bf2bd96f3bd97
+f5bd98ecbd91edbd92eebd93f0bd94f1
+bd95e70fe7bd8de8bd8ee9bd8feabd90
+ebbbcee1bd87e2bd88e3bd89e4bd8ae5
+012abd8b54126962f4bd8c0013ef2af6
+0ff6bdb0f7bdb1f8bdb2f9bdb3fabdb4
+ef38f1bdacf2bdadf4bdaef5bdaf012a
+bdaa4c126174eebdabea22ea4aeba947
+ecbda6edbda7ee012abda84c12616fef
+bda9012abda441127261e2bda5e2bd9e
+e3bd9fe5bda0e626e9bda3012abda154
+126962f4bda209ec0fecbdbaedbdbbf0
+bdbcf1bdbdf3bdbee3bdb5e4bdb6e5bd
+b7e6bdb8e8bdb9002474bfe520ef0fef
+b73af3b5e3f4b757f5b710f7b76ee5b5
+f1e7b5fae9b709ebb151eeb731782a78
+34793e7a4ee1b5d2e4b5e601e3b773ec
+b77402e1b775efb776f8b77703e8b778
+e9b169f2b779fab77a744875a24876a2
+627703ebb76fedb770efb771f3b7720f
+f21af70cf7b764f8b765f9b766fab767
+f2b760f3b761f4b762f6b763eb0cebb7
+5cecb75dedb75eefb75fe2b758e4b759
+e5b75ae9b75b10ed032ab76848324c3a
+54126861e9b76b12616ee9b76912616f
+efb76a01e2b76cf6b76d6bc12c6f796f
+9470a24171a24572a249730aeb1eef09
+efb754f4b755f5b756eb2cedb752eeb7
+53012ab75043127972ecb751e1b74be3
+b74ce4b74de8b74ee9b74f02f2b73bf5
+b73cf7b73d01e9b73eefb73f01f5b740
+f7b74107ee16eeb746f52cf8b749f9b7
+4a012ab7474d126c79edb748e5b742e8
+b743e9b744ebb7456b646ca2546da28e
+6e07ee0ceeb736efb737f0b738f4b739
+e2b732e7b733e8b734eab7350bf21ef7
+09f7b71af8b71bfab71cf2b716f426f6
+b719012ab7174312616ef3b718ec09ec
+b713efb714f0b715e5b710e9b711ebb7
+120bed14f509f5b727f6b728f7b1d1ed
+b724efb725f0b726e91be92cebb723ec
+b724022ab720412e43127972ecb72212
+7261e2b721e1b71de2b71ee7b71f07f2
+0cf2b72df3b72ef4b72ff9b730e9b729
+ecb72aeeb72befb72c666f6652678468
+a25769a2616a04e3b70be5b70ceab70d
+eeb70ef3b70f07eb0cebb5f6edb5f7f5
+b5f8f9b5f9e1b5f2e2b5f3e5b5f4e6b5
+f508ed19edb5ffeeb700efb701f326f7
+b704012ab70247127265ebb703e2b5fb
+e5b5fce7b5fdecb5fe03e2b705e9b706
+f0b707f7b70810eeb70a616e627e63a2
+5a6409e90fe9b5ecf2b5edf3b5eef4b5
+eff5b5f0e1b5e7e2b5e8e3b5e9e4b5ea
+e5b5eb02e9b5d3eeb5d4f2b5d50ce917
+ee0ceeb5def2b5dff5b5e0f9b5e1e9b5
+dbecb5dcedb5dde509e5b5d8e7b5d9e8
+b5dae1a917e2b5d6e4b5d703e1b5e2e5
+b5e3e8b5e4f2b5e500186ec0d67628e1
+0ce1b77be9b7b2f6b7faf7b7fd763a77
+447902e1b7ffe5b900f9b90101e4b7fb
+eeb7fc10e9b7fe715b71947298750fee
+1af40cf4b7f6f5b7f7f7b7f8f9b7f9ee
+b7f2efb7f3f0b7f4f2b7f5e90ce9b7ee
+ebb7efecb7f0edb7f1e1b7eae2b7ebe4
+b7ece8b7ed10f2b7e404e13ae2d84040
+f2b7e7f4b7e8f5b7e9012ab7e54b1268
+6df2b7e66e346f967001e1b7e2f2b7e3
+06e927e9b7d6ea4eecb7d9f3022ab7da
+4c2e5412616bf2b7dc126174eeb7db01
+2ab7d745127468e9b7d8e1b7d3e4b7d4
+e7b7d504e2b7dde4b7dee7b7dff2b7e0
+f7b7e168796b3c6b726c886d0aec14f3
+09f3b7d0f7b7d1f8b7d2ecb7cdeeb7ce
+f2b7cfe1b7c8e2b7c9e3b7cae4b7cbe9
+b7cc03e1b7c1edaabdefb7c5f5b7c610
+e5b7c7683469386a01e5b7bff2b7c010
+e9b7b10bec14f509f5b7bcf6b7bdf9b7
+beecb7b9edb7baf4b7bbe409e4b7b6e5
+b7b7e7b7b8e1b7b3e2b7b4e3b7b56462
+645465866703e2b7ade52cebb789efb7
+b0012ab7ae48126562f2b7af02e1b79d
+e7b79ef4022ab79f482e4c126174eeb7
+a1126562f2b7a009ec0fecb7a8eeb7a9
+f2b7aaf4b7abf5b7ace2b7a2e5b7a3e8
+2ce9b7a6ebb7a7012ab7a44c12616fef
+b7a5614262a2576310f4012ab79b4c12
+6174eeb79c0014ed25f314f809f8b78d
+f9b78efab78ff3b78af4b78bf5b78ced
+b785eeb786efb787f1b788f2b789e60f
+e6b781e8b782eab783ebb784ecb5a1e1
+b77ce2b77de3b77ee4b77fe5b7800aee
+14f409f4b798f5b799f7b79aeeb795ef
+b796f2b797e5b790e9b791eab792ebb7
+93edb794002875c2e6eb74f23ff628f6
+bb89f7bd21f9022a32414c4c126174ee
+bd54022abd52432a5410d2bd5410cebd
+53127261e2bd53f2aecbf3bbbff5022a
+ae0341ae0f5912657ae9bb3ceb38ecbb
+0aedbb26eebb45efbb61012a2e411272
+61e2b9ed042ab9eb41324336493a4d10
+ceb9ef10c6b9ec10ceb9ed10d2b9ee7a
+617a38e1b324e7b98ee9b9bceab9d300
+16ee2af514f809f8bd83f9bd84fabd85
+f5bd80f6bd81f7bd82f209f2bd7ef3bd
+7ff4afbfeebd7befbd7cf0bd7de614eb
+09ebafa9ecbd79edbd7ae6bd77e9bd78
+eaafbfe1bd72e2bd73e3bd74e4bd75e5
+bd7675a28976a2de77a43d78a4957900
+18ed51f43bf71ef732f8bd6ff9bd70fa
+bd71022abd6c422e4f127279e1bd6e12
+656ee7bd6df4bd67f526f6bd6b022abd
+684c2e4d12796df2bd6a126174eebd69
+f109f1bd64f2bd65f3bd66edbd61eebd
+62efbd63e714ea09eabd5eebbd5fecbd
+60e7bd5be8bd5ce9bd5de409e4bd58e5
+bd59e6bd5ae1bd55e2bd56e3bd570017
+ee2af514f809f8bd06f9bd07fabd08f5
+bd03f6bd04f7bd05f109f1bd00f3bd01
+f4bd02eebbfdefbbfef0bbffe814eb09
+ebbbfaecbbfbedbbfce8bbf7e9bbf8ea
+bbf9e509e5bbf4e6bbf5e7bbf6e2bbf1
+e3bbf2e4bbf30017ee34f414f809f8bd
+1ef9bd1ffabd20f4bd1bf6bd1cf7bd1d
+f113f12cf2bd1af3b30d012abd184c12
+6174eebd19eebd15efbd16f0bd17e714
+ea09eabd12ecbd13edbd14e7bd0fe8bd
+10e9bd11e409e4bd0ce5bd0de6bd0ee1
+bd09e2bd0ae3bd0b0018ed2df317f60c
+f6bb6af7bd37f9bd38fabd39f3bd34f4
+bd35f5bd36f009f0bd31f1bd32f2bd33
+edbd2eeebd2fefbd30e714ea09eabd2b
+ebbd2cecbd2de7bd28e8bd29e9bd2ae4
+09e4bd25e5bd26e6bd27e1bd22e2bd23
+e3bd240015ee25f414f809f8bd4ff9bd
+50fabd51f4bd4cf6bd4df7bd4eeebd47
+efbd48f0bd49f1bd4af2bd4be61eeb09
+ebbd45ecbbb9edbd46e62ce9bd43eabd
+44012abd414c126174eebd42e1bd3ae2
+bd3be32ae43ce5bd40012abd3c451274
+68e9bd3d012abd3e41127261e2bd3f6b
+c41e70c1fb70a26f71a2d872a43d73a4
+8d740018ee2df417f70cf7bbeef8bbef
+f9bbf0faa5a4f4bbebf5bbecf6bbedf1
+09f1bbe9f2afbff3bbeaeebbe6efbbe7
+f0bbe8e814eb09ebbbe3ecbbe4edbbe5
+e8bbe0e9bbe1eabbe2e409e4bbdde6bb
+dee7bbdfe1bbd9e226e3bbdc012abbda
+4c126174eebbdb0018ee3ef417f70cf7
+bb8af8bb8bf9bb8cfabb8df4bb87f5bb
+88f6bb89f109f1bb84f2bb85f3bb86ee
+bb82efbb83f0022ab7c2422e4c126174
+eeb7c4127261e9b7c3e814eb09ebbb7f
+ecbb80edbb81e8bb7ce9bb7deabb7ee5
+09e5bb79e6bb7ae7bb7be1bb76e3bb77
+e4bb780019ee37f421f716f7bba4f8bb
+a5f926fabba8012abba64c126174eebb
+a7f4bba1f5bba2f6bba3f109f1bb9ef2
+bb9ff3bba0eebb9befbb9cf0bb9de717
+ea0ceabb97ebbb98ecbb99edbb9ae7bb
+94e8bb95e9bb96e409e4bb91e5bb92e6
+bb93e1bb8ee2bb8fe3bb900016ed2af5
+14f809f8bbbcf9bbbdfabbbef5bbb9f6
+bbbaf7bbbbf209f2bbb6f3bbb7f4bbb8
+eda931eebbb4f0bbb5e614ea09eabbb1
+ebbbb2ecbbb3e6bbaee8bbafe9bbb0e1
+bba9e2bbaae3bbabe4bbace5bbad0017
+ee34f41ef713f72cf8bbd7fabbd8012a
+bbd54c126174eebbd6f4bbd2f5bbd3f6
+bbd4f109f1bbcff2bbd0f3bbd1eebbcc
+efbbcdf0bbcee814eb09ebbbc9ecbbca
+edbbcbe8bbc6e9bbc7eabbc8e509e5bb
+c3e6bbc4e7bbc5e2bbc0e3bbc1e4bbc2
+6ba2536ca2b56da4196ea49d6f0014ec
+25f414f709f7bb73f9bb74fabb75f4bb
+70f5bb71f6bb72ecbb6befbb6cf0bb6d
+f1bb6ef3bb6fe70fe7bb67e8bb68e9bb
+69eabb6aebbb53e1bb62e3bb63e4bb64
+e5bb65e6bb660018ed2df417f70cf7bb
+06f8bb07f9bb08fabb09f4bb03f5bb04
+f6bb05f109f1bb00f2bb01f3bb02edb9
+fdefb9fef0b9ffe714ea09eab9faebb9
+fbecb9fce7b9f7e8b9f8e9b9f9e413e4
+b9f3e526e6b9f6012ab9f441127261e2
+b9f5e1b9f0e2b9f1e3b9f20019ee36f4
+17f70cf7bb22f8bb23f9bb24fabb25f4
+bb1ff5bb20f6bb21f112f1bb1bf2bb1c
+f3012abb1d41127261e2bb1eeebb18ef
+bb19f0bb1ae717ea0ceabb14ebbb15ec
+bb16edbb17e7bb11e8bb12e9bb13e409
+e4bb0ee5bb0fe6bb10e1bb0be2bb0ce3
+bb0d0019ee4df417f70cf7bb41f8bb42
+f9bb43fabb44f4bb3ef5bb3ff6bb40f1
+29f1bb37f226f3bb3d022a32414c5912
+657ae9bb3c022abb38492a4c10c2bb3a
+10d2bb39127261e2bb3beebb34efbb35
+f0bb36e717ea0ceabb31ebbb32ecb995
+edbb33e7bb2ee8bb2fe9bb30e409e4bb
+2be5bb2ce6bb2de1bb27e2bb28e3012a
+bb294812616ee9bb2a0018ee36f417f7
+0cf7bb5df8bb5ef9bb5ffabb60f4bb5a
+f5bb5bf6bb5cf112f1bb56f2bb57f301
+2abb5854126861e9bb59eebb53efbb54
+f0bb55e71eeb13eb2cecbb51edbb5201
+2abb4f41127261e2bb50e7b98ee9bb4d
+eabb4ee409e4bb4ae5bb4be6bb4ce1bb
+46e2bb47e3012abb4841127261e2bb49
+66c1e866a26267a2e468a43469a48e6a
+0015ed2ff214f509f5b9e8f8b9e9f9b9
+eaf2b9e5f3b9e6f4b9e7edb9dfeeb9e0
+efb9e1f026f1b9e4012ab9e254126861
+e9b9e3e714ea09eab9dcebb9ddecb9de
+e7b9d9e8b9dae9b9dbe1b9d4e2b9d5e3
+b9d6e4b9d7e5b9d80015ee2ff31ef813
+f82cf9b98cfab98d012ab98a5412616b
+f2b98bf3b987f6b988f7b989eeb982ef
+b983f0b984f1b985f2b986e641eb13eb
+2cecb980edb981012ab97e5412616bf2
+b97fe63ee8b97be9012ab97c4b126e64
+e1b97d032ab97744324f3a5412656cf5
+b97a126576e1b978127279e1b979e1b9
+72e2b973e3b974e4b975e5b9760014ef
+25f414f709f7b9a2f8b9a3f9b9a4f4b9
+9ff5b9a0f6b9a1efb99af0b99bf1b99c
+f2b99df3b99ee80fe8b995eab996ebb9
+97ecb998edb999e1b98fe2b990e42ce5
+b993e6b994012ab99154126861e9b992
+0016ee34f514f809f8b9b9f9b9bafab9
+bbf5b9b6f6b9b7f7b9b8f213f22cf3b9
+b4f4b9b5012ab9b244126576e1b9b3ee
+b9aff0b9b0f1b9b1e614ea09eab9adeb
+ccb6ecb9aee6b9aae7b9abe8b9ace1b9
+a5e2b9a6e3b9a7e4b9a8e5b9a90015ef
+25f514f809f8b9d0f9b9d1fab9d2f5b9
+cdf6b9cef7b9cfefb9c8f0b9c9f1b9ca
+f3b9cbf4b9cce614ea09eab9c5ecb9c6
+edb9c7e6b9c2e7b9c3e8b9c4e1b9bde2
+b9bee3b9bfe4b9c0e5b9c161a26262a2
+9a63a40364a453650015ed2ff41ef813
+f82cf9b970fab971012ab96e4712756a
+f2b96ff4b96bf5b96cf7b96dedb966ee
+b967efb968f2b969f3b96ae614e909e9
+b963ebb964ecb965e6b960e7b961e8b9
+62e1b95be2b95ce3b95de4b95ee5b95f
+0010eb1df10ff1b90ef6b90ff7b910f8
+b911f9b912ebb90aedb90befb90cf0b9
+0de70ce7b906e8b907e9b908eab909e1
+b902e2b903e3b904e4b9050017ef3ef5
+14f809f8b92af9b92bfab92cf5b927f6
+b928f7b929f213f22cf3b925f4b92601
+2ab92345127468e9b924efb91ff026f1
+b922012ab92042127261e9b921e914ec
+09ecb91cedb91deeb91ee9b919eab91a
+ebb91be409e4b916e5b917e8b918e1b9
+13e2b914e3b9150016ec2af314f609f6
+b941f7b942fab943f3b93ef4b93ff5b9
+40ef09efb93bf0b93cf1b93decb938ed
+b939eeb93ae614e909e9b935eab936eb
+b937e6b932e7b933e8b934e1b92de2b9
+2ee3b92fe4b930e5b9310015ed2ef414
+f809f8b958f9b959fab95af4b955f6b9
+56f7b957edb94feeb950f0b951f1b952
+f2012ab95343127972ecb954e714ea09
+eab94cebb94decb94ee7b949e8b94ae9
+b94be1b944e3b945e4b946e5b947e6b9
+4866a85c67aae168001e72c10be51af4
+0cf4b5aaf5b5b0f9a567fab5d1e5b535
+e9b543efb585f2b598763f7658777479
+84e122032ab511372e43345310c4b512
+1133b6b51210cdb51304e3b5c7e5b5c8
+ebb5c9eeb5caf6b5cb02e1b5cce3b5cd
+efb5ce01e1b5cff7b5d072a25973a28e
+74a295750014ed2ef514f809f8b5c4f9
+b5c5fab5c6f5b5c1f6b5c2f7b5c3edb5
+bbf0b5bcf2b5bdf3b5bef4012ab5bf54
+126962f4b5c0e70fe7b5b6e8b5b7e9b5
+b8ebb5b9ecb5bae2b5b1e3b5b2e4b5b3
+e5b5b4e6b5b50cf017f50cf5b5a3f7b5
+a4f8b5a5fab5a6f0b5a0f2b5a1f4b5a2
+eb13ebb59ced26efb59f012ab59d4812
+6d6ee7b59ee1b599e3b59ae5b59b02e2
+b5a7eeb5a8f3b5a904e9b5abefb5acf3
+b5adf5b5aef8b5af69c1716dc0f16d36
+6ea24c6fa2ae7010efb5970010f126f5
+18f5b56cf6b56df7b56ef9b56ffa012a
+b57050126c72e4b571f1b568f2b569f3
+b56af4b56bea0ceab565edb566eea464
+f0b567e1b561e2b562e4b563e6b56409
+e953e9b577ea32eeb582efb583f3b584
+012a2e4c12616fefb57e0a4721531053
+d825a154d825905601c4b581ceb58147
+d825a44c2a4d10cdb57a10c1b57e2ab5
+7841d825ab42d825a343d8258e4601d2
+b57cd8b57ce1b572e4b573e5b574e7b5
+75e8b5760010ec1df20ff2b592f4b593
+f6b594f7b595f9b596ecb58eedb58fef
+b590f0b591e50ce5b58ae8b58be9b58c
+eab58de1b586e2b587e3b588e4b58969
+4e6aa2556ba2566c04e1b55ce2b55de4
+b55ef4b55ff5b5600feb1af20cf2b551
+f4b552f7b553f8b554ebb54decb54eed
+b54fefb550e716e7b548e8b549e926ea
+b54c012ab54a44126576e1b54be1b544
+e2b545e4b546e6b54710e9b55503e1b5
+56e5b557e826ebb55b022ab558442e4c
+126174eeb55a126576e1b55964506440
+655c67a2426802e9b540f2b541f9b542
+01eeb51af9012ab5334c126174eeb534
+05e809e8b53be9b53cedb53de12ce4b5
+39e7b53a022ab536422e48126d6ee7b5
+38126f70efb53701edb53ef7b53f6130
+62a26d6310e8b5320015ee36f314f809
+f8b52af9b52bfab52cf3b527f6b528f7
+b529eeb520efb521f0b522f1b523f202
+2ab524412e4c126174eeb526127261e2
+b525e81deb09ebb51decb51eedb51fe8
+b519e9b51aea012ab51b4212656ee7b5
+1ce1b514e3b515e4b516e5b517e7b518
+04e1b52de2b52eeeb52fefb530f5b531
+001771b1e614ef09efb19cf2b1a5f9b1
+c3e6a26ce9b184eab18d7612762a772e
+e1b16b10f2b1c001e1b1c1e5b1c271a2
+5a72a25b750eed1af40cf4b1bcf5b1bd
+f6b1bef9b1bfedb1b8eeb1b9f1b1baf2
+b1bbe524e5b1b2e6b1b3e826e9b1b701
+2a2e41127261e2b1b6022ab1b4422a48
+10d6b1b510c6b1b5e2b1b0e326e4b1b1
+012ab17f4112646cedb18010f3b1a40a
+ef14f209f2b1adf3b1aef4b1afefb1aa
+f0b1abf1b1ace3b1a6e4b1a7e5b1a5eb
+b1a8edb1a96b556e286e2e6f3e7010e5
+b1a302e2b199e7b19ae9b19b05ee09ee
+b1a0f2b1a1f3b1a2e4b19de9b19eedb1
+9f6b346c3e6d01f0b197f5b19801ebb1
+8ef6b18f06ec0cecb193eeb194f2b195
+f9b196e1b190e8b191e9b192662b665c
+67666907f00cf0b189f2b18af4b18bf7
+b18ce1b185e5b186e6b187ecb18801e9
+b181edb18210f2b183613062a2466510
+f2b17e0012ec20f40ff4a3c6f5b17af8
+b17bf9b17cfab17decb175edb176eeb1
+77f0b178f2b179e70fe7b170e8b171e9
+b172eab173ebb174e1b16ce2b16de4b1
+6ee6b16f10eca7bb001f71c1bc795eec
+0cecb363eeb37df5b3cbf6b3e279327a
+a241e1b1c4e4b3030dec21ef0cefb50a
+f2b50bf9b50cfab50dec2cedb508eeb5
+09012ab50645127468e9b507e50ce5b5
+02e6b503e7b504e9b505e1aaf4e2b500
+e4b50102e1b50ee9b50feeb51075c0cf
+753676a26577a2907810f8b3ff0016ed
+2af414f709f7b3dff8b3e0fab3e1f4b3
+ddf5b3def6afdff009f0b3daf1b3dbf2
+b3dcedb3d7eeb3d8efb3d9e61ee913e9
+b3d3eb26ecb3d6012ab3d445127468e9
+b3d5e6b3d1e7b37de8b3d2e1b3cce2b3
+cde3b3cee4b3cfe5b3d00ced17f00cf0
+b3ecf2b335f3b3edf9b3eeedb3e9eeb3
+eaefb3ebe609e6b3e6eab3e7ecb3e8e1
+b3e3e3b3e4e5b3e50fea1af40cf4b3fb
+f5b3fcf7b3fdf8b3feeab3f7edb3f8ee
+b3f9f2b3fae50ce5b3f3e6b3f4e7b3f5
+e9b3f6e1b3efe2b3f0e3b3f1e4b3f271
+40725073a2737402e1b3c9e9b3caf5b3
+3602e1b3adeeb3aef2b3af0012ed29f6
+0ff6b3bff7b3c0f8b3c1f9b3c2fab3c3
+edb3b9f1b3baf3b3bbf4b3bcf5012ab3
+bd4c126174eeb3bee50fe5b11ae7b3b5
+e8b3b6e9b3b7eab3b8e130e2b1f1e33c
+e4b3b4012ab3b04712756af2b3b1012a
+b3b24c12696ee2b3b304ecb3c4eeb3c5
+efb3c6f0b3c7f7b3c869c1976dc0f06d
+426ea2466fa2877002e1b3aae5b3abee
+b3ac0cee21f616f632f8b37af9b37bfa
+b37c012ab3784c126174eeb379eeb375
+f2b376f5b377e709e7b372e8b373edb3
+74e1b36fe2b370e4b3710013ec20f20f
+f2b38df4b38ef5b38ff7b390fab391ec
+b388edb389eeb38aefb38bf1b38ce70f
+e7b383e8b384e9b385eab386ebb387e1
+b37ee2b37fe3b380e4b381e5b3820017
+ee2af414f709f7b3a7f8b3a8f9b3a9f4
+b3a4f5b3a5f6b3a6f109f1b3a1f2b3a2
+f3b3a3eeb38befb39ff0b3a0e714eb09
+ebb39cecb39dedb39ee7b399e8b39ae9
+b39be412e4b395e5b396e6012ab3974c
+126174eeb398e1b392e2b393e3b39469
+846aa26d6ba2846c0beb14f209f2b36c
+f5b36df7b36eebb369ecb36aefb36be8
+09e8b367e9afa9eab368e2b364e3b365
+e4b3660011ee1df30ff3b351f4b352f8
+b353f9b354fab355eeb34df0b34ef1b3
+4ff2b350e50fe5b348e7b349e8b34aec
+b34bedb34ce1b344e2b345e3b346e4b3
+4704ebb356edb357ee2cf2b35af5b35b
+012ab35841127261e2b35906ee0ceeb3
+5fefb360f0b361f5b362e1b35ce4b35d
+e5b35e65af658866a27567a2796807ee
+0ceeb340f2b341f3b342f4b343e132e3
+b33de5b33eebb33f022ab33a4c2e5412
+666ee7b33c126174eeb33b0013ec20f6
+0ff6b327f7b328f8b329f9b32afab32b
+ecb323efb324f1b325f2af0cf3b326e7
+0fe7b31ee8b31fe9b320eab321ebb322
+e1b319e2b31ae3b31be4b31ce6b31d01
+ebb32cf8b32d0cec17f20cf2b336f4b3
+37f5b338f7b339ecb334eeb335efb14e
+e509e5b331e7b332ebb333e1b32ee2b3
+2fe4b33061a25c62a2ca63a43f640012
+eb2af10ff1b314f2b315f4b316f5b317
+f8b318ebb30eec32edb311eeb312efb3
+13012ab30f45127468e9b310e60fe6b3
+09e7b30ae8b30be9b30ceab30de232e3
+b306e4b307e5b308012ab3045412656c
+f5b3050019ee37f421f716f7b1dbf82c
+f9b1defab1df012ab1dc45127468e9b1
+ddf4b1d9f5b1daf6af1cf109f1b1d6f2
+b1d7f3b1d8eeb1d3efb1d4f0b1d5e717
+ea0ceab1cfebb1d0ecb1d1edb1d2e7b1
+cce8b1cde9b1cee409e4b1c9e5b1cae6
+b1cbe1b1c5e2b1c6e3012ab1c7441265
+76e1b1c80018ed2df317f70cf7b1f8f8
+b1f9f9b1fafab1fbf3b1f5f5b1f6f6b1
+f7f009f0b1f2f1b1f3f2b1f4edb1efee
+b1f0efb1f1e727ea1ceab1eaeb38ec01
+2ab1ed44126576e1b1ee012ab1eb5412
+616bf2b1ece7b1e7e8b1e8e9b1e9e409
+e4b1e4e5b1e5e6b1e6e12ce2b1e2e3b1
+e3012ab1e041127261e2b1e106ec0cec
+b1ffeeb300f2b301f4b302e3b1fce4b1
+fde6b1fe63cc8363a60664b0c365001c
+72c0c47a29ef0cefb141f3b14cf4b112
+f5a70f7a44e5b100ecb11aee012ab130
+53126861f7b13101e1b169e5b16a7631
+7638776a786e7901e1b167efb16802e5
+b160e8b161ee022ab1624c2e4d126f6e
+e7b164126174eeb16310efb16510f4b1
+66726273947408f30ff3b15bf4b15cf5
+b15df8b15efab15fe2b157eeb158efb1
+59f2b15a07eb0cebb148f2b149f4b14a
+f7b14be1b144e7b145e8b146e9b14708
+eb19ebb151edb152f32cf5b155f9b156
+012ab15343127972ecb154e5b14de7b1
+4ee8b14fe9b1506ac0e06d916d366ea2
+546fa2857010e9b1430dee20f50cf5b1
+2cf7b12df8b12efab12feeb128f0b129
+f3012ab12a43127972ecb12be71ee7b1
+23e9b124eb26edb127012a2e4e126b6f
+efb126012ab1254710ceb126e1b120e2
+b121e5b1220eed1af20cf2b13df6b13e
+f7b13ff8b140edb139eeb13aefb13bf1
+b13ce40ce4b135e6b136e8b137ecb138
+e1b132e2b133e3b13410f4b1426a506b
+546c05ef09efb11ef0a501f5b11fe5b1
+1bebb11cedb11d10e1b10d0aec1df009
+f0b117f2b118f9b119ecb113edb114ef
+012ab11541127261e2b116e1b10ee5b1
+0fe7b110e9b111ebb112662f663e674e
+686a6902f0b10af4b10bf6b10c02e1b1
+01e5b102e9b10304e1b104ecb105edb1
+06efb107f9b10810f5b1096134623863
+01f2affef9afff10e1aff805ef09efaf
+fbf2affcf5affde3aff9e7affaeba7fa
+002172c19ee127f219f2ad76f3ad8ef5
+2cf6adc0f9adc9012aadb047126c61e7
+adb1e1ab80e5abc6e8abd7efad557652
+7660777e79a2417a04e5ad8ee832ebad
+cfeeadd0f4add1012aadcd4812616ef4
+adce01e726eeadc3012aadc154126962
+f4adc205e509e5adc6e7adc7f4adc8e1
+adc4e2adc5e4ad7602e1adcae2adcbef
+adcc729073a29274a2d3750dec17f40c
+f4adbcf5adbdf6adbef8adbfecadb9ef
+adbaf0adbbe80ce8adb5e9adb6eaadb7
+ebadb8e1adb2e2adb3e3adb40014ed2f
+f41ef813f82cf9ad8cfaad8d012aad8a
+4312616ef3ad8bf4ad87f6ad88f7ad89
+edad82eead83efad84f1ad85f3ad86e8
+19e8ad7ce9ad7dea2cebad80ecad8101
+2aad7e4c126174eead7fe2ad77e3ad78
+e4ad79e6ad7ae7ad7b0df021f60cf6ad
+9bf7ad9cf9ad9dfaad9ef02cf3ad99f4
+ad9a012aad974812616ef4ad98ea0cea
+ad93ebad94edad95efad96e1ad8fe2ad
+90e8012aad914c126174eead920eed1a
+f30cf3adacf4adadf5adaefaadafedad
+a8eeada9efadaaf0adabe51ee5ada2e7
+2ce8ada6ecada7022aada3412e4c1261
+74eeada5127261e2ada4e1ad9fe3ada0
+e4ada169c1f86dc0ec6d3c6ea2426fa2
+7a70a2bb7110e4ad750aec25f209f2ad
+1bf3ad44f4ad45ecad40eea61cef012a
+2e4b12686df2ad43012aad414b10c8ad
+42e1ad3be5ad3ce7ad3de9ad3eebad3f
+0dec21f30cf3ad51f4ad52f7ad53f8ad
+54ecad4df026f1ad50012aad4e481261
+6ef4ad4fe70ce7ad49e8ad4ae9ad4beb
+ad4ce1ad46e2ad47e3ad480013ec20f4
+0ff4ad65f5ad66f8ad67f9ad68faad69
+ecad60edad61efad62f0ad63f1ad64e6
+0fe6ad5be7ad5ce8ad5deaad5eebad5f
+e1ad56e2ad57e3ad58e4ad59e5ad5a0a
+ee14f509f5ad72f8ad73f9ad74eead6f
+efad70f3ad71e1ad6ae2ad6be3ad6ce7
+ad6de9ad6e69a2456aa2846ba2c26c0e
+eb24f40cf4ad37f5ad38f7ad39f9ad3a
+eb32ecad34edad35efad36012aad3254
+126962f4ad33e50ce5ad2ee8ad2fe9ad
+30eaad31e1ad2be3ad2ce4ad2d0aed1e
+f213f2ad08f726f9ad0b012aad094312
+616ef3ad0aedad05eead06f0ad07e138
+e2ad01e3ad02e5ad03e8ad04022aabfe
+412e4812616ee7ad00127261e2abff0c
+ee2af21ff2ad15f33ef6ad18f9012aad
+194812616ef4ad1a012aad1643127972
+ecad17eead12efad13f0ad14e909e9ad
+0febad10edad11e1ad0ce5ad0de8ad0e
+0ef21af60cf6ad27f8ad28f9ad29faad
+2af2ad23f3ad24f4ad25f5ad26ed16ed
+32eead20efad21f1ad22012aad1e4712
+6c61e7ad1fe1ad1be2ad1cecad1d65c0
+f765a2b966a2ce67a2e1680013ee2af4
+0ff4abf9f7abfaf8abfbf9abfcfaabfd
+ee38efabf5f0abf6f1abf7f2abf8012a
+abf344127570ecabf4e973e938eaabef
+ebabf0ecabf1edabf2022a3c42a25948
+11616e01e2abeef4abe90b4d2d541754
+2e55385610c4abec01c8abe8d7abe901
+cbabead3abeb4dd21f502a5310d2abe7
+02c6abe4c8abe5daabe6470e473048d2
+034910c4abe210c6abe02aabdd412a42
+10ceabdf10d5abde126f70efabede2ab
+d8e4abd9e6abdae7abdbe8abdc06eb0c
+ebabcaeeabcbf4abccf9abcde1abc7e2
+abc8e7abc903e1abcee4abcfe7abd0ed
+012aabd14212656ee7abd203e1abd3e3
+abd4e7abd5ebabd661a25562a2af63a2
+f46408ea2beaabbeed30ef42f2abc4fa
+abc5012aabbf4c126174eeabc0022aab
+c1482e4c126174eeabc312616ef4abc2
+e5abb8e62ae83ce9abbd012aabb94212
+656ee7abba012aabbb5412616bf2abbc
+0016ed2af314f809f8ab96f9ab97faab
+98f3ab93f6ab94f7ab95f009f0ab90f1
+ab91f2ab92edab8deeab8eefab8fe61e
+ea09eaab8aebab8becab8ce62ce7ab88
+e8ab89012aab864312616ef3ab87e1ab
+81e2ab82e3ab83e4ab84e5ab850011ef
+1df40ff4aba7f5aba8f6aba9f7abaaf9
+ababefaba3f1aba4f2aba5f3aba6e919
+e9ab9deaab9eeb2cecaba1eeaba2012a
+ab9f42127261e9aba0e2ab99e3ab9ae4
+ab9be7ab9c0bec14f009f0abb5f1abb6
+f2abb7ecabb2edabb3efabb4e709e7ab
+afe8abb0eaabb1e3abace4abade5abae
+001a6fc1d4776be10ce1add2e5af0cf6
+afe0faa355774679907a04e1aff4e5af
+5ce7aff5ecaff6eeaff708f30ff3afe6
+f5afcff7afe7f9afe8faafe9e1afe2eb
+afe3ecadfaf2012aafe445127468e9af
+e509ed0fedafefeeaff0efaff1f5aff2
+f9aff3e1afeae2afebe4afece7afede9
+afee73c0d57334746c75a2667610e1af
+e105ee12eeafb1efafb2f1012aafb341
+127261e2afb4e2afaee8afafe9afb00d
+ef17f30cf3afc1f4afc2f5afc3f9afc4
+efafbef0afbff2afc0e80ce8afbae9af
+bbebafbcedafbde12ce2afb8e4afb902
+2aafb5432e4812616ef3afb7127972ec
+afb60019ee2df417f70cf7afdcf8afdd
+f9afdefaafdff4afd9f5afdaf6afdbf1
+09f1afd6f2afd7f3afd8eeafd3efafd4
+f0afd5e721ea0ceaafcfebafd0ecafd1
+edafd2e7afcbe826e9afce012aafcc47
+12756af2afcde409e4afc8e5afc9e6af
+cae1afc5e2afc6e3afc76fa24770a285
+720def17f30cf3afaaf4afabf5afacf9
+afadefafa7f1afa8f2afa9e81ee832e9
+afa5eca7e2eeafa6012a2e4d126f6ee7
+afa4012aafa34310ceafa4e3afa0e5af
+a1e7afa20012ee20f40ff4af9af6af9b
+f7af9cf8af9df9af9eeeaf95efaf96f0
+af97f2af98f3af99e60fe6af91e8af92
+e9af28ebaf93ecaf94e1af8de2af8ee3
+af8fe5af9010f0af9f68c17a6ba86ba2
+456ca25a6da2616e0eee1af50cf5af89
+f6af8af7af8bf9af8ceeaf85efaf86f2
+af87f4af88e716e732e9af83eaadd7eb
+af84012aaf8141127261e2af82e1af7e
+e4af7fe5af8006ec0ceca554f2af66f3
+af67f8af68e1af63e7af64ebaf6502e7
+af69edaf6aeeaf6b0011ed1df50ff5af
+79f6af7af7af7bf8af7cf9af7dedaf75
+efaf76f2af77f3af78e50fe5af70e6af
+71e7af72ebaf73ecaf74e1af6ce2af6d
+e3af6ee4af6f689669a2666a0feb1aef
+0cefaf5ff2af60f5af61f7af62ebaf5b
+ecaf5cedaf5deeaf5ee50ce5af57e6af
+58e9af59eaaf5ae1af53e2af54e3af55
+e4af560cef17f50cf5af38f6af39f7af
+3af8af3befaf35f2af36f3af37ec09ec
+af32edaf33eeaf34e4af2fe7af30e9af
+310016ee32f414f809f8af50f9af51fa
+af52f4af40f5af4ef7af4ff112f1af4a
+f2af4bf3012aaf4c4212656ee7af4dee
+44efaf48f0af49e71eea13eaaf44eb26
+ecaf47012aaf4541127261e2af46e7af
+41e8af42e9af43e1af3ce2af3de3af3e
+e4af3fe6af4064a8649e65a262670010
+eb1df30ff3af2af4af2bf7af2cf8af2d
+faaf2eebaf26eeaf27efaf28f2af29e5
+0ce5af22e7af23e8af24e9af25e1af1e
+e2af1fe3af20e4af210aea14f209f2af
+09f3af0af7af0beaaf06eeaf07efaf08
+e1af01e4af02e5af03e7af04e9af050f
+ec24f216f232f3af1bf6af1cfaaf1d01
+2aaf194c126174eeaf1aecaf15edaf16
+eeaf17f1af18e70ce7af11e8af12e9af
+13ebaf14e3af0de4af0ee5af0fe6af10
+613662a26a6301e3adfff2af000015ed
+2ff314f709f7ade8f8ade9faadeaf3ad
+e5f5ade6f6ade7edaddfefade0f02cf1
+ade3f2ade4012aade14212656ee7ade2
+e71eea09eaaddcebadddecaddee72ce8
+addae9addb012aadd841127261e2add9
+e1add3e3add4e4add5e5add6e6add700
+12ed20f40ff4adfaf5adfbf6adfcf7ad
+fdf9adfeedadf5eeadf6efadf7f0adf8
+f1adf9e619e6adefe7adf0e9adf1ea26
+ecadf4012aadf241127261e2adf3e1ad
+ebe2adece4adede5adee2ab63461d2bd
+62002373c34ce51ded0feda92beea944
+efa95cf2a9a1f3a9bde5a764e7a796e8
+a7ace9a7cb77c182773878a27579a2de
+7aa41fe1a7020017ed34f414f809f8ab
+3af9ab3bfaab3cf4ab37f5ab38f7ab39
+f109f1ab34f2ab35f3ab36edab30ef26
+f0ab33012aab3145127468e9ab32e714
+ea09eaab2debab2eecab2fe7ab2ae8ab
+2be9ab2ce413e4ab26e526e6ab29012a
+ab274c126174eeab28e1ab23e2ab24e3
+ab250014ed48f225f609f6ab52f7ab53
+faab54f2a9f2f3ab4ef5022aab4f432e
+4c126174eeab51127972ecab50ed38ee
+ab4aefab4bf0ab4cf1ab4d022aab474c
+2e4d126f6ee7ab49126174eeab48e80f
+e8ab42e9ab43eaab44ebab45ecab46e1
+ab3de2ab3ee3ab3fe6ab40e7ab410013
+ec20f30ff3ab64f6ab65f7ab66f8ab67
+faab68ecab5fedab60eeab61f0ab62f2
+ab63e60fe6ab5ae8ab5be9ab5ceaab5d
+ebab5ee1ab55e2ab56e3ab57e4ab58e5
+ab590017ee2af514f809f8ab7df9ab7e
+faab7ff5ab7af6ab7bf7ab7cf109f1ab
+77f2ab78f4ab79eeab74efab75f0ab76
+e814eb09ebab71ecab72edab73e8ab6e
+e9ab6feaab70e409e4ab6be5ab6ce6ab
+6de1ab69e2ab6ae3a7ef73a25a74a2d1
+75a43a760016ed2af514f809f8ab20f9
+ab21faab22f5ab1df6ab1ef7ab1ff109
+f1ab1af2ab1bf4ab1cedab17eeab18ef
+ab19e614e909e9ab14eaab15ebab16e6
+ab11e7ab12e8ab13e1ab0ce2ab0de3ab
+0ee4ab0fe5ab100016ee47f431f713f7
+2cf8a9d7f9a9d8012aa9d545127468e9
+a9d6f43ef5a9d2f6012aa9d341127261
+e2a9d4012aa9d04c126174eea9d1f109
+f1a9cdf2a9cef3a9cfeea9caefa9cbf0
+a9cce81eeb13eb2ceca9c8eda9c9012a
+a9c64c126174eea9c7e8a9c3e9a9c4ea
+a9c5e1a9bee2a9bfe3a9c0e5a9c1e6a9
+c20017ef3ef51ef813f82cf9a9f0faa9
+f1012aa9ee42126174eba9eff5a9ebf6
+a9ecf7a9edf213f2a9e7f326f4a9ea01
+2aa9e842126174eba9e9efa9e4f0a9e5
+f1a9e6e714ea09eaa9e1eda9e2eea9e3
+e7a9dee8a9dfe9a9e0e409e4a9dbe5a9
+dce6a9dde1a9d9e2a767e3a9da0018ee
+2df417f70cf7ab08f8ab09f9ab0afaab
+0bf4ab05f5ab06f6ab07f109f1ab02f2
+ab03f3ab04eea9ffefab00f0ab01e714
+ea09eaa9fceba9fdeda9fee7a9f9e8a9
+fae9a9fbe413e42ce5a9f7e6a9f8012a
+a9f542127261e9a9f6e1a9f2e2a9f3e3
+a9f46ac35f6ec1d36ea2816fa2d170a4
+2071a470720016ed3cf426f809f8a9ba
+f9a9bbfaa9bcf4a9b5f526f6a9b9022a
+a9b64c2e54126861e9a9b812616fefa9
+b7f109f1a9b2f2a9b3f3a9b4eda9afee
+a9b0f0a9b1e714ea09eaa9aceba9adec
+a9aee7a9a9e8a9aae9a9abe1a9a2e232
+e3a9a6e4a9a7e6a9a8012aa9a34c1061
+016f2a7410eea9a510efa9a40016ee2a
+f514f809f8a959f9a95afaa95bf5a956
+f6a957f7a958f109f1a953f2a954f3a9
+55eea950efa951f0a952e614ea09eaa9
+4deba94eeda94fe6a94ae7a94be9a94c
+e1a945e2a946e3a947e4a948e5a94900
+14ef2ef51df812f8a96ff9a970fa012a
+a97141127261e2a972f5a96cf6a96df7
+a96eefa967f0a968f1a969f2a96af4a9
+6bea0feaa962eba963eca964eda965ee
+a966e1a95de2a95ee5a95fe6a960e8a9
+610016ef2af514f809f8a987f9a988fa
+a989f5a984f6a985f7a986f209f2a981
+f3a982f4a983efa97ef0a97ff1a980e8
+14eb09eba97beca97ceda97de8a978e9
+a979eaa97ae1a973e3a974e4a975e5a9
+76e7a9770015ef25f414f709f7a99ef8
+a99ffaa9a0f4a99bf5a99cf6a99defa9
+96f0a997f1a998f2a999f3a99ae714eb
+09eba993eca994eda995e7a990e9a991
+eaa992e1a98ae2a98be3a98ce4a98de6
+012aa98e41127261e2a98f6aa25f6ba2
+c16ca4166d0017ed2af314f709f7a941
+f8a942faa943f3a93ef5a93ff6a940f0
+09f0a93bf1a93cf2a93deda938eea939
+efa93ae714ea09eaa935eba936eca937
+e7a932e8a933e9a934e409e4a92fe5a9
+30e6a931e1a92ce2a92de3a92e0018ee
+2df417f70cf7a7f5f8a7f6f9a7f7faa7
+f8f4a7f2f5a7f3f6a7f4f109f1a7eff2
+a7f0f3a7f1eea7ecefa7edf0a7eee81e
+eb09eba7e9eca7eaeda7ebe8a7e5e926
+eaa7e8012aa7e645127468e9a7e7e409
+e4a7e2e6a7e3e7a7e4e1a7dfe2a7e0e3
+a7e10017ef2af514f809f8a90ef9a90f
+faa910f5a90bf6a90cf7a90df209f2a9
+08f3a909f4a90aefa905f0a906f1a907
+e814ec09eca902eda903eea904e8a7ff
+e9a900eaa901e409e4a7fce6a7fde7a7
+fee1a7f9e2a7fae3a7fb0017ee3cf414
+f809f8a928f9a929faa92af4a925f6a9
+26f7a927f11bf1a920f226f3a924012a
+a9215401612c681161e9a923116ce5a9
+22eea91defa91ef0a91fe714ea09eaa9
+1aeba91beda91ce7a917e8a918e9a919
+e409e4a914e5a915e6a916e1a911e2a9
+12e3a91365c20265a25366a2b267a41a
+68a465690014ee25f414f709f7a7dcf9
+a7ddfaa7def4a7d9f5a7daf6a7dbeea7
+d5efa7d6f0a7d7f1a7d8f2a7cee60fe6
+a7d1e7a7d2eba73beca7d3eda7d4e1a7
+cce2a7cde3a7cee4a7cfe5a7d00015ef
+2ff51ef813f82cf9a77bfaa77c012aa7
+7941127261e2a77af5a776f6a777f7a7
+78efa771f0a772f1a773f3a774f4a775
+e614ea09eaa76eeba76feda770e6a76b
+e8a76ce9a76de138e2a767e3a768e4a7
+69e5a76a012aa7654312616ef3a76600
+15ee38f41ef809f8a793f9a794faa795
+f4a78ff526f7a792012aa7905412616b
+f2a791eea789efa78af0a78bf1a78cf3
+012aa78d4812616ee9a78ee614ea09ea
+a786eca787eda788e6a783e7a784e8a7
+85e138e2a77fe3a780e4a781e5a78201
+2aa77d41127261e2a77e0015f025f514
+f809f8a7a9f9a7aafaa7abf5a7a6f6a7
+a7f7a7a8f0a7a1f1a7a2f2a7a3f3a7a4
+f4a7a5e714ed09eda736eea79fefa7a0
+e7a79ce9a79deaa79ee1a797e2a798e3
+a799e4a79ae6a79b0018ed3ff329f60c
+f6a7c7f7a7c8f9a7c9faa7caf3a7c2f4
+26f5a7c6022aa7c3442e4c126174eea7
+c5126576e1a7c4f009f0a7bff1a7c0f2
+a7c1eda7bdeea7beefa7ace726ea09ea
+a7baeba7bbeca7bce7a7b5e826e9a7b9
+022aa7b6482e4c126174eea7b8126562
+f2a7b7e41be42ce5a7b3e6a7b4022aa7
+b0412e5412616bf2a7b2127261e2a7b1
+e1a7ade2a7aee3a7af61a26562a2ab63
+a400640019ee2df417f70cf7a760f8a7
+61f9a762faa763f4a75df5a75ef6a75f
+f109f1a75af2a75bf3a75ceea757efa7
+58f0a759e717ea0ceaa753eba754eca7
+55eda756e7a750e8a751e9a752e409e4
+a74de5a74ee6a74fe1a74ae2a74be3a7
+4c0014ef25f514f809f8a715f9a716fa
+a717f5a712f6a713f7a714efa70df0a7
+0ef1a70ff2a710f3a711e70fe7a708e8
+a709eaa70aeca70beea70ce1a703e2a7
+04e3a705e5a706e6a7070017ee2af414
+f709f7a72df8a72ef9a72ff4a72af5a7
+2bf6a72cf109f1a727f2a728f3a729ee
+a724efa725f0a726e714eb09eba721ec
+a722eda723e7a71ee9a71feaa720e409
+e4a71be5a71ce6a71de1a718e2a719e3
+a71a0018ed37f317f60cf6a746f7a747
+f9a748faa749f3a743f4a744f5a745f0
+13f0a73ff126f2a742012aa7404c1261
+74eea741eda73ceea73defa73ee714ea
+09eaa739eba73aeca73be7a736e8a737
+e9a738e409e4a733e5a734e6a735e12c
+e2a732e3a70b012aa7304812616ee9a7
+3100184dc28654c0e357375736584e59
+665a12616ee2d7ec01612c631168efc7
+6d1172e1d7eb01702c731175f8a3d011
+65efcb0701652c691169e9b709117ae9
+bb3c544455a29f5601612c691174e8d7
+ea1169e9d7e907684f683669866ea243
+6f1174efd57c106101e158e9042ad33c
+43324b364c3a5410c8d33c10cebdbc10
+c8d7e610c1d7e7012aafe04d10d6afe0
+01622a7210e8d7e810f4012aa95c4210
+d4a3551173e1c7b76134658066866711
+6ce7d7e5056d116d2e6e327610f4a925
+10ecd1a610e7d57767346b386c01e5d1
+f5f5b9a610e2d7e210f2d7e3116cf5d3
+07116ee7d7e4126761f2d5af50c0c450
+a27252a2a95306694369426f6a759079
+016c2a7210e3ad2d10efd7e101643e6e
+01e4cf0ce8012acf694c10cbcf6910e4
+d7de02672e72387910efad3d01e4cfe9
+efd7df10e1d112116ee4d7e0613e675e
+6801612a7210e4d7dd10f7b131026d2e
+72327510f2cdd410f2cfc210e2d7dc11
+6ef7a578046138654c68526c78721174
+e9d7da016c2a7510e3ada110eda55f11
+72edd7d802612e6c326e10f8cb2010e7
+d7d901e9c9c3f0c9c41172e4b563026a
+306f3675116ef2c781116ee7d7db1168
+e7cd574d7c4ea2a44f0367426c48724e
+7301672a6d10e1d7d710e5c9931161ed
+cf3a1163ebcdce016b2a7910e1c98310
+e8c9a107722e725a7460756679116df2
+032aab03492e4d325410c8d7d110ceb9
+b510cdab03116fefc3861165e9d7cf11
+6cf4d7d0614265746c9a6f01642a6e10
+e7afa410e9d7ce0368326b366e3a7210
+e3d7ca10ead7c710e1d7c801e4c533e9
+d7c90264346e387201e3d7ccefd7cd10
+e6af7110e4d7cb1179edc1e504613862
+58655e6b64731168f5d7d602672e6e32
+7210e2d7d410edd7d210e4d7d31161f4
+a55e1177e1d7d5116fefb12647c52a4a
+c44e4aa8d94ba8f24c03614665a8b569
+a8b77901632a6410e9d7c610e9d7c502
+6ea84d6fa84e7410ee001d4ac1a953c0
+c05723574658aeac594a5a03c1d783cd
+a770d2d5fcd7cfcc01c6d780d3cfb701
+d4d782d5cf4d534e54a25555a27e5607
+c7c66bc7d77ec9d77fced77cd5a7cb00
+12cd20d50fd5bbb3d6d76bd8d76cd9d7
+c2dad76ecdd766ced767cfcfe2d2d768
+d4d76ac80fc8d764c9cfa6cad765cbcf
+8dccbbb0c2d761c3d762c5d16bc7d763
+0fce1ad40cd4d776d6d559d7d513dad1
+74ced7c3cfd3cad0d774d2d3fec7c6da
+c7d773cbd37accd774cdd37205d309d3
+b130d9d778dad779c1d7c4c7d777cdd7
+304db04d484ea25a50a27a5205d3c621
+d3cf4dd5bbb3d7cdb30014cf25d414d8
+09d8d749d9bfe8dad74ad4c3a9d5c154
+d7d748cfd7c0d0d744d1d745d2d7c1d3
+d747c70fc7c16cc8d743cbd7bfcca92b
+cdb904c1d7bec3d740c4d741c5cdf3c6
+d7420bc914d209d2d751d5d753dad754
+c9d750ccafd9cfc776c6c683c6d74ec7
+d74fc8a7cb0ccd17d40cd4d75ed7c9cb
+d9b37ddad756cdd75aced75bd2d75cc7
+09c7d3e7c8b188cccb4dc1d756c5d757
+c6d7584a564b604c06d30cd3d73cd4bf
+9ed5d73dd6bfbec3d739c9d73ad2d73b
+01c5d5ddcdd72e04c5d731c9d708cdd7
+bdced733d9d73642c138468e4662478e
+48a2724907cf0ccfd72cd2d7bcd3b5e3
+d4b757c3d729c4b5e6c5d72acdd72b06
+cd0ccdd5dbcfb19cd2b1a5d8b1a5c9b1
+84cad716cbd7170011cd1dd30fd3d722
+d4d723d5d724d7d725d9d726cdd71ece
+d71fd0d720d1d721c60fc6d71bc7d71c
+c8a3c6c9d71dccbb0ac1d718c2d719c4
+d71ac5d7bb05d409d4b5aad5b5b0d6d5
+efcdd727ced728d2b598424e43a24f44
+a28d4504c1d712c3d713c5b112d3b14c
+d4d7b50010ce1dd30fd3d5f7d5b904d6
+d5f8d7d5f9dad5faced5f4cfd5f5d1d5
+f6d2cbc2c90cc9cd84cad5f1ccd5f2cd
+d5f3c1a9bdc2d5edc5d5eec6d5ef0014
+cf1dd50cd8c755d8d70bd9d7b9daad8e
+cfd704d0d705d1d706d2d707d3cf4dc9
+0fc9d700cbd701ccd702cdd703ced7b8
+c1d5fbc4d5fcc6d5fdc7d5fec8d5ff08
+cbc76dcbadd2cdd70fcfd710d9d5f1da
+d7ba344234b0da3586388c410010cf12
+d4c77ad4d5e9d5d5ead7d5ebd8d5ecda
+a5f4c90cc9d5e4cca3ddcdd7b7cec9c7
+c3d5dfc4d5e0c6d7b6c7d5e31133b2c9
+c71139b0cf4d2ab1303140320230b0a5
+332a3810b0af0c10b0d7b51137b2bbb3
+10e1c77910ef0b4c2754145434553856
+01c4b581ceb58110c8b58010d3d7b44c
+2e4d325310d2b57f10c1bf6a10cdb57a
+4314432e46324710c6b57d10ceb57b01
+d2b57cd8b57c2abf6a412a4210d5b57a
+10d5b5791170e3bddb026d2e6e327310
+f5bf1310e2bf0901e1bd88e2b3b30161
+3a701161ee012ab77b4a10d0b77b016d
+2a7610e1d7b010efd7af056e1e6e306f
+36741168e9d7b31164e1bb451172e501
+2abb614b01d0d734d2bb616130685069
+1174f3d7b2026c2e6e327710e9b91010
+e9b11910e1d7b102612e6d326f10eacf
+0b10f2cba610f2012abb264b10c8bb26
+473448a25c49127461ecb15c0465466c
+5a6f60727a75016a2a7210f5c9b810f2
+b3cb116ff2012ab3244710c5b3241161
+e7adb1016e2a7410e8b3a401e7d7a4ed
+b14e0161506510eb032ab11a432e4732
+5410d2a7a910d9d70c10d2b11a10eed7
+a5056c186c306d3675116ee7d7ae1175
+f7b560106e01e7d7adf0b5786130659c
+691172e1d7ac106e05ef2aefd7a8f358
+f4042aabe9433248364d3a5410d7abe9
+10c1d7a910cbabe110cfabe3012aabdd
+4310ceabdde2abeee7d7a6e9d7a71162
+f2032ab535493453385501c1b7b2d3d7
+ab10ccb53510c5d7aa43c11c437444a2
+d5450267446c4a741168e9012aa3f345
+01d2d715d4a3f31179f0b10801622a79
+10edd7a310e1d7a20461a27c68a28b6f
+a29a70a29c791172ec0d4d39541a5432
+553c58405910d5cdf101cad323d2d79a
+10c1d5b910cbd79b4d2e523e5310cbd7
+9902c4d797cbbfd6ceafa302cfd798d3
+cdf1d5cda2422242384348474c4b01c7
+bd52dad73702c1d795c7a796d9a76410
+d3cdf101c555d2d7962acda2382a4110
+ccd7941139b0cdf1026b2e6e327210e9
+d79210edabb510f3b71002612e653272
+10f3d79310edad1110f2abf81170f4ad
+631172f4b3b203653469866f8c751170
+ecd7a11176e106491749324d364e3a50
+10cba9ec10ceb54310d5d79e10d0c5a8
+2ab543422a4610cad79d10d4d79c1161
+ebd79f1167f2d7a02aa25441aabf4205
+6f1f6f3e72447501672a6810e4d79110
+e9d7901170efabed106101e8cb43e9d7
+8f6130655c68116bf3d78e036c326d36
+733a7410ebd78d10e9d78c10f5a71510
+f3a9cd116ee7012aa9444210c4a94400
+204ac24d52c10f564c5648577a588a59
+8e5a03c1d783cda770d2d5fcd7cfcc07
+c70cc7d77ec9d77fced77cd5a7cbc1d7
+7ac3d77bc4d77cc5d77d02c6d780cbd7
+30d3cfb710cbd78103c4d5dec5d5ded4
+d782d5cdf1525c538254a27c5506cd0c
+cdd730d3b130d9d778dad779c1d5b9c7
+d777cbd71905d309d3cdf1d5cda2d7cd
+b3c5d760c8cfcccfc32c0015cd25d414
+d809d8d76cd9d76ddad76ed4d76ad5cd
+a2d6d76bcdd766ced767cfcfe2d2d768
+d3d769c714ca09cad765cbcf8dccbbb0
+c7d763c8d764c9cfa6c1d752c2d761c3
+d762c4d5dcc5d16b0011cd1dd20fd2d3
+fed4d776d6d559d7abe9dad174cdd372
+ced775cfd3cad0d774c70fc7d773c8d3
+3ccad323cbd37accd774c1d76fc3d770
+c4d771c6d7724e7b4e344fa8e8509251
+10c1d75f0ecc1ad20cd2d751d4d752d5
+d753dad754ccafd9cfc776d0c5a8d1d5
+e6c60cc6d74ec7d74fc8a7cbc9d750c1
+d74bc3d74cc5d74d0010cd1dd40fd4d7
+5ed5d730d7c9cbd9b37ddad756cdd75a
+ced75bd2d75cd3d75dc70cc7d3e7c8b1
+88cbd759cccb4dc1d756c3d5dbc5d757
+c6d7584aa25f4ba26c4ca28f4d0017cf
+2ad514d809d8d749d9bfe8dad74ad5c1
+54d6afe0d7d748d209d2d746d3d747d4
+c3a9cfabe3d0d744d1d745c814cc09cc
+a92bcdab03ceafa3c8d743c9d730cbbf
+d6c509c5cdf3c6d742c7c16cc1d73fc3
+d740c4d74104c5d5ddcdd72ecfd72fd0
+b77bd4d7300ace14d709d7d735d9d736
+dad737ced733d0d734d2bb61c5d731c7
+bd52c8bb26c9d708cdd7320ad214d509
+d5d73dd6bfbed9d73ed2d73bd3d73cd4
+bf9ec1bf6ac2d738c3d739c9d73acbcf
+6942c18846a3467a47a24548a283490a
+ce14d209d2b16bd3b5e3d4b757ceb543
+cfd72cd1d72dc3d729c4b5e6c5d72acc
+b535cdd72b07cf0ccfb19cd1d5e6d2b1
+a5d8b1a5c9b184cad716cbd717cdd5db
+0012cd20d30fd3d722d4d723d5d724d7
+d725d9d726cdd71eced71fd0d720d1d7
+21d2b11ac60fc6d71bc7d71cc8a3c6c9
+d71dccbb0ac1d718c2d719c4d71ac5b3
+2406d20cd2b598d4b5aad5b5b0d6d5ef
+cbabe1cdd727ced728426443a26d44a2
+bd4507c80cc8d714d2d715d3b14cd4a3
+f3c1d712c3d713c5b112c7a55c0015ce
+25d414d709d7d5f9d9a764dad5fad4a3
+55d5ab03d6d5f8ced5f4cfd5f5d1d5f6
+d2cbc2d3d5f7c714ca09cad5f1ccd5f2
+cdd5f3c7a796c8d5f0c9cd84c1a9bdc2
+d5edc4a944c5d5eec6d5ef0016cf2ad5
+14d809d8d70bd9d70cdaad8ed5d709d6
+d70ad7c9c7d209d2d707d3cdf1d4d708
+cfd704d0d705d1d706c814cc09ccd702
+cdd703ceabddc8d5ffc9d700cbd701c1
+d5fbc3bfe9c4d5fcc6d5fdc7d5fe08cb
+0fcbadd2cdd70fcfd710d9d5f1dad711
+c4af0cc5af0cc7d70dcad70e356b35a2
+4537a24e38a250410011cf1dd40fd4d5
+e9d5d5ead7d5ebd8d5ecdaa5f4cfd5e5
+d1d5e6d2d5e7d3d5e8c70fc7d5e3c9d5
+e4cca3ddcda567cec9c7c3d5dfc4d5e0
+c5d5e1c6d5e201332a3810b2d5db10b2
+c9c71133b6d5dc02332e38323910b0cd
+f110b0d5dd10b6d5de2ab13031303236
+341131b9d5da1137b2cda202302e3332
+3810b0af0c10b0ad8e10b0a3f3046438
+673e6844724a761173f4a35e116cedb1
+801168e2d5a5116feda3a001613e6d01
+e9a55dee012aa5674110cda56710e200
+134c665135513c5340545655725901c5
+d5ded4d17510c1d75f03c1d752c4d5dc
+d3d769d9d76d04c7a53ec8c150cad78a
+ced775d2d78b10cbd7854c3c4d464e62
+4f665001cbd759d3d75d01c2d738d9d7
+3e04c1d73fcdd784ceb9efd2d746d5d7
+8810c7d78910cdd755452f4542474c49
+504a664b02c8ad0ccdd732d7d73501c7
+a55cc8d71410c2d78503c4d786ced787
+d1d72dd2b16b10cfd72f2aa55c413242
+3c43464410dad71101c5d5e1c6d5e201
+c8d5f0d5d78401c3bfe9ced5ac002574
+c233e534f223f2a55cf3a573f6a5b8f9
+a5e0fa012a2e41127261e2a5f6022aa5
+f449a2b45210d5a5f7e5a35ee6a36ceb
+a3c6eda3f3eea50e78b87832795e7aa2
+60e125e25506eb0ceba5dceca5ddeda5
+def8a5dfe2a5d9e5a5dae7a5db0013ee
+20f30ff3a5eff4a5f0f5a5f1f8a5f2fa
+a5f3eea5ebefa5ecf0a5edf1a5eef2a5
+e0e70fe7a5e6e8a5e7e9a5e8eba5e9ec
+a5eae1a5e1e2a5e2e3a5e3e4a5e4e5a5
+e508ed0feda5fdeea5feefa5fff4a700
+faa701e274e4a5fbe7a5fcea012a2e41
+127261e2a5f6032aa5f4312e49345310
+d5a5f71137b2a5f701d1a5f5d2a5f602
+2aa5f8432e4c126174eea5fa127972ec
+a5f974a24875a2a776a2ff770012ee20
+f50ff5a5d4f6a5d5f7a5d6f8a5d7f9a5
+d8eea5cfefa5d0f2a5d1f3a5d2f4a5d3
+e70fe7a5cae8a5cbe9a5cceba5cdeda5
+cee1a5c6e2a5c7e3a5c8e5a5c90017ef
+2af514f809f8a59ef9a59ffaa5a0f5a5
+9bf6a59cf7a59df209f2a598f3a599f4
+a59aefa595f0a596f1a597e914ec09ec
+a592eda593eea594e9a58feaa590eba5
+91e409e4a58ce5a58de7a58ee1a588e2
+26e3a58b012aa5894c126973f5a58a00
+14ed25f214f709f7a5b5f9a5b6faa5b7
+f2a5b2f4a5b3f5a5b4eda5adeea5aeef
+a5aff0a5b0f1a5b1e821e8a5a6e9a5a7
+ea2ceba5abeca5ac022aa5a84c2e5412
+666ee7a5aa126174eea5a9e1a5a1e3a5
+a2e4a5a3e5a5a4e7a5a50bee24f419f4
+a5c2f526f6a5c522022aa5c3372a5310
+c4a5c41133b6a5c4eea5bfefa5c0f3a5
+c1eb09eba5bceca5bdeda5bee2a5b9e4
+a5bae9a5bb6ac3326fc16a6fa24e70a2
+9371a2e872a403730013ec20f50ff5a5
+83f6a584f8a585f9a586faa587eca57e
+eea57fefa580f3a581f4a582e70fe7a5
+79e8a57ae9a57beaa57ceba57de1a574
+e2a575e3a576e4a577e5a5780011eb27
+f219f2a537f3a538f42cf8a53bfaa53c
+012aa5394c126174eea53aeba533eca5
+34eda535eea536e50fe5a52ee6a52fe7
+a530e9a531eaa532e1a52ae2a52be3a5
+2ce4a52d0017ee2af514f809f8a550f9
+a551faa552f5a54df6a54ef7a54ff209
+f2a54af3a54bf4a54ceea547efa548f0
+a549e814eb09eba544eca545eda546e8
+a541e9a542eaa543e509e5a53fe6a389
+e7a540e2a53de3a3c1e4a53e08ed0fed
+a557eea558f2a559f4a55afaa55be3a5
+53e4a554e7a555eba5560014ee25f314
+f809f8a570f9a571faa572f3a56df5a5
+6ef7a56feea568efa569f0a56af1a56b
+f2a56ce90fe9a563eaa564eba565eca5
+66eda567e2a55ce332e4a560e5a561e8
+a562022aa55d4e2e5012616ceda55f12
+6261f4a55e6aa2776ba2a46ca2ef6da4
+446e0018ed3ff429f70cf7a526f8a527
+f9a528faa529f4a521f526f6a525022a
+a522412e4c126174eea524127261e2a5
+23f009f0a51ef2a51ff3a520eda51bee
+a51cefa51de714ea09eaa518eba519ec
+a51ae7a515e8a516e9a517e409e4a512
+e5a513e6a514e1a50fe2a510e3a51108
+f021f0a3c1f4a360f52cf7a3c4faa3c5
+012a2e41127261e2a3c3012aa3c24d10
+c1a3c3e1a3bde7a3bee9a3bfeea3c000
+13ef20f40ff4a3d7f5a3d8f6a3d9f7a3
+dafaa3dbefa3d2f0a3d3f1a3d4f2a3d5
+f3a3d6e70fe7a3cde8a3cee9a3cfeba3
+d0eca3d1e238e3a3c9e4a3cae5a3cbe6
+a3cc012aa3c742126174eba3c80017ee
+2af414f809f8a3f0f9a3f1faa3f2f4a3
+edf5a3eef7a3eff109f1a3ebf2a3ecf3
+a3ddeea3e8efa3e9f0a3eae814eb09eb
+a3e5eca3e6eda3e7e8a3e2e9a3e3eaa3
+e4e409e4a3dfe5a3e0e6a3e1e1a3dce2
+a3dde3a3de0016ef43f52df809f8a50b
+f9a50cfaa50df5a505f6a506f7022aa5
+07412e4c126174eea50a107201612a6d
+10e9a50910e2a508f209f2a502f3a503
+f4a504efa3fff0a500f1a501e714eb09
+eba3fceda3fdeea3fee7a3fae9a3b6ea
+a3fbe1a3f4e2a3f5e3a3f6e5a3f7e601
+2aa3f845127468e9a3f965c17e65a26f
+66a29a67a2c268a427690014ed41f226
+f71bf72cf8a3bbf9a3bc022aa3b8412e
+45127468e9a3ba127261e2a3b9f2a3b5
+f3a3b6f4a3b7eda3afee32efa3b2f0a3
+b3f1a3b4012aa3b04c126174eea3b1e6
+0fe6a3aae7a3abeaa3aceba3adeca3ae
+e1a3a5e2a3a6e3a3a7e4a3a8e5a3a90c
+ed17f50cf5a368f7a369f9a36afaa36b
+eda365f1a366f2a367e509e5a362eba3
+63eca364e1a35fe2a360e3a3610bee14
+f309f3a376f5a377faa378eea373efa3
+74f0a375e809e8a370e9a371eba372e2
+a36de4a36ee5a36f0019ee2df417f70c
+f7a390f8a391f9a392faa393f4a38df5
+a38ef6a38ff109f1a38af2a38bf3a38c
+eea387efa388f0a389e721ea16ea32eb
+a384eca385eda386012aa38241127261
+e2a383e7a37fe8a380e9a381e409e4a3
+7ce5a37de6a37ee1a379e2a37ae3a37b
+0ded17f00cf0a3a1f2a3a2f3a3a3f4a3
+a4eda39eeea39fefa3a0e826e8a397e9
+a398eb26eca39d022a324d4054126861
+e9a39c012aa3995410c8a39a12796df2
+a39be1a394e2a395e7a39661a25a62a2
+a063a2e2640014ee25f414f809f8a35b
+f9a35cfaa35df4a358f5a359f7a35aee
+a353efa354f0a355f1a356f2a357e719
+e7a34de8a34ee92ceaa351eca352012a
+a34f54126962f4a350e1a348e2a349e4
+a34ae5a34be6a34c0015ed1af30ef706
+f74ff851fa53f341f44bf54ded41ee43
+ef45f047f149e617e906e93beb3dec3f
+e628e737e839012a3341127261e235e1
+27e229e32be42de5012a2f47127265eb
+310016ee1ef50ef806f881f983fa85f5
+7bf67df77ff206f275f377f479ee6fef
+71f073e617e90fe967ec24ed6d012a69
+4c126174ee6be661e763e865e157e259
+e35be45de55f0012f12df621f6a341f7
+a342f8a343f926faa347022aa344412e
+47127265eba346127261e2a345f199f2
+9bf39df49ff5a1e60ae68fe891ed93ee
+95f097e187e289e48be58d
}
}
match{
@@ -10533,7 +10533,7 @@ a347022aa344412e47127265eba34612
8548344c166174ee48616ef34911616e
01e97ef41348616ef42007b30ab33eb4
3ab536b610b6292a2bb026b122b205b3
-c8b8b329b429b52905b3c8aeb329b429
+c8b7b329b429b52905b3c8adb329b429
b5291248616e01f349f44901752aef11
66f25d12f57ae835016d2ae81165ee5d
02eda241f622f7116de7350369327538
@@ -10551,7 +10551,7 @@ e7aa57e91165ee5c012a8545167468e9
366dac1c75367812f96de73512e865ee
5d01eda25ef9126b6cee35643265a2e6
6b12e76de73512f86de73505eb18ebb2
-cdf2a29afa1172f55c012a854c166174
+c8f2a29afa1172f55c012a854c166174
ee437972ec35722e7a34e7117ae84912
eb6df33512f375fa3571c16771a2b272
a44f730012e85bf12df130f234f428f5
@@ -10560,9 +10560,9 @@ a829f71165ee5d107301e829f220022a
ec4c6174ee2be836e946eb64ee22ef11
65ee5d0262ac3868227310f2291165ee
5c012a855316696ee84c6174ee351163
-f349702e70527258735ee1b220e41165
+f349702e70527258735ee1b21be41165
ee5c012a8541167261e24c6174ee3512
-f66ff23512ef73e33501e8b025f91161
+f66ff23512ef73e33501e8b01bf91161
e1296434674068486b12e76de73501e3
22ee1173e33513e36b6cee3512f561f2
3504753a769077a26478a26df51165f3
@@ -10590,7 +10590,7 @@ ef38f91165ee5d106e01e249ef490164
75ee1165ee5d01642c6e01ee49ef2310
e13161a87c6834693a6c427312ef65ee
5d12e467ee3513f16b6cee3513e56c75
-f935046b54725ce3ae38eda2e4f21165
+f935046b54725ce3ae33eda2e4f21165
ee5c012a854f167279e14c6174ee3513
e96b6cee3502e3a6cdee22f3116df335
67c3336ac24f6aa2bc6ba4146ca4b76d
@@ -10602,7 +10602,7 @@ e9a611ec0165426d10ec20012a854c16
6174ee4d6c79ed4910ee5c012a854d16
6c79ed4c6174ee3512e66dee356e1f6e
34713a73407512e96df33512f07ae835
-12e76df33501e8acb0e9116df3356134
+12e76df33501e8acabe9116df3356134
6548664e6912ee6df33501e92af8116d
f3351168e94912ef6df33502e14ae246
e51165ee5d02612ee13af61169e44901
@@ -10614,7 +10614,7 @@ ee2b1172e10148464a127061ee2b1261
0aeb73ef36ef2ef57cf91172f55d116b
ef20022a8548464a12616def01482c4b
126f72e52b12616ee72b11616e01e722
-e9134b6f72e52b1174f25deba8c8ed6a
+e9134b6f72e52b1174f25deba8c9ed6a
ee0165426b10ee20012a854c166174ee
4b6e64e14910ee5c012a854b166e64e1
4c6174ee351165ee5c012a854b16686d
@@ -10631,7 +10631,7 @@ fa65ee5d01e922ed126c75f93513ed6c
75f935634669526b02e226ef22f3126c
75f935126c75f93501e522e6116df335
12f76df335676a68a2816905e40ae4a8
-c4e734f31165ee49642e6b36e11165ee
+bfe734f31165ee49642e6b36e11165ee
5d13e16c75f93512f469f5350a7531ec
1eeca40eeea40bf50167286810e95d10
f520012a854c166174ee47756af24975
@@ -10639,7 +10639,7 @@ f520012a854c166174ee47756af24975
61386b4c6e546f5a7312f764e52902e1
a257eea484f8116fed3513f06b70e535
12f767ee3513ed6b6feb3507e934e94e
-f26cf4a82df91172f55c012a85411672
+f26cf4a828f91172f55c012a85411672
6dee437972ec351168e920012a854c16
6174ee446576e1490162287310e82910
f32961326a4c7352e11165ee5d02e530
@@ -10659,43 +10659,43 @@ b604b029b229b429b529b6292a2bb026
b14eb204b029b229b429b529b62904b0
29b229b429b529b62901b129b3296e2e
7936e51165ee5d13e26b6cee3513ef6b
-6cee3561a26062a49e630c702ee111e1
-a2ceefa4ddf32af91165ee491173eb49
+6cee3561a26062a499630c702ee111e1
+a2cdefa4d8f32af91165ee491173eb49
703e72447a01e822ef117ae835117ae8
3512f87ae83512f366f2496a146a306b
366f12e16df33512f97ae83512e261f2
5d643065366812f265ee4912ef7ae835
-13e26669ec5d001675c0c0e692f275f2
-4af9a26cfa1172f55c012a854c166174
-ee437972ec351161f220012a5a4c1661
-74ee417261e24807b327b32ab460b522
-b605b336b329b529b6298407b313b32a
-b438b522b605b322b329b529b62910b4
-292a2bb026b122b205b30fb329b529b6
-2905b306b329b529b629b029b129b229
-1165f349e64aeba2b1ed1165ee5c012a
-8545167468e94c6174ee35116eec497a
-137a2ee134e21172f55d12e261fa3512
-7373f92975a42e763a7903e82aec26ee
-22f01161f23512ec61f23566356c1e6c
-3e70447203f12af326f922fa1161f235
-12ee73f13501e322e41161f235663069
-366a12f061f23512e261f23513e97379
-f235613e624e635a64906501e222e311
-61f23502e526ef32f41173f13501e822
-f61161f23505f709f726f822f91161f2
-35e82eed22f11161f2351165ee5d1161
-f23512e661f2350e7668ee4aee3eef82
-f2a0f30168287310e82910f229016242
-6510ee5c012a854216656ee74c6174ee
-3510ee20012a854c166174ee42656ee7
-49117ae848012a8554166962f448616e
-f3351166f24976327a3ee544e81168e9
-5d01e522f5116df33512e36de7351172
-f549682268346a3a6d4e7412ea6df335
-12f26de73501ee2af1116de735116df3
-3512ed6de735613062366512ed65ee5d
-12ec75f24912fa61f235
+13e26669ec5d001576bce692f275f24a
+f9a26cfa1172f55c012a854c166174ee
+437972ec351161f220012a5a4c166174
+ee417261e24807b327b32ab460b522b6
+05b336b329b529b6298407b313b32ab4
+38b522b605b322b329b529b62910b429
+2a2bb026b122b205b30fb329b529b629
+05b306b329b529b629b029b129b22911
+65f349e64aeba2aded1165ee5c012a85
+45167468e94c6174ee35116eec497636
+793c7a50e156e21172f55d12ec61f235
+03e82aec26ee22f01161f23512e261fa
+35127373f9296635701e7030723c7512
+fa61f23501e322e41161f23503f12af3
+26f922fa1161f235663069366c12ee73
+f13512e261f23513e97379f235613e62
+4e635a64906501e222e31161f23502e5
+26ef32f41173f13501e822f61161f235
+05f709f726f822f91161f235e82eed22
+f11161f2351165ee5d1161f23512e661
+f2350e7668ee4aee3eef82f2a0f30168
+287310e82910f2290162426510ee5c01
+2a854216656ee74c6174ee3510ee2001
+2a854c166174ee42656ee749117ae848
+012a8554166962f448616ef3351166f2
+4976327a3ee544e81168e95d01e522f5
+116df33512e36de7351172f549682268
+346a3a6d4e7412ea6df33512f26de735
+01ee2af1116de735116df33512ed6de7
+35613062366512ed65ee5d12ec75f249
+12fa61f235
}
}
}
diff --git a/icu4c/source/data/misc/metaZones.txt b/icu4c/source/data/misc/metaZones.txt
index 6e70ca783..1f59807d9 100644
--- a/icu4c/source/data/misc/metaZones.txt
+++ b/icu4c/source/data/misc/metaZones.txt
@@ -89,7 +89,6 @@ metaZones:table(nofallback){
America_Mountain{
001{"America/Denver"}
CA{"America/Edmonton"}
- MX{"America/Hermosillo"}
}
America_Pacific{
001{"America/Los_Angeles"}
@@ -476,9 +475,6 @@ metaZones:table(nofallback){
Macau{
001{"Asia/Macau"}
}
- Macquarie{
- 001{"Antarctica/Macquarie"}
- }
Magadan{
001{"Asia/Magadan"}
}
@@ -802,7 +798,6 @@ metaZones:table(nofallback){
liis{"Line_Islands"}
loho{"Lord_Howe"}
maca{"Macau"}
- macq{"Macquarie"}
maga{"Magadan"}
mais{"Marshall_Islands"}
mala{"Malaysia"}
diff --git a/icu4c/source/data/misc/metadata.txt b/icu4c/source/data/misc/metadata.txt
index adaf07cac..1a1f6a7e4 100644
--- a/icu4c/source/data/misc/metadata.txt
+++ b/icu4c/source/data/misc/metadata.txt
@@ -36,6 +36,10 @@ metadata:table(nofallback){
reason{"deprecated"}
replacement{"ami"}
}
+ ajp{
+ reason{"deprecated"}
+ replacement{"apc"}
+ }
ajt{
reason{"deprecated"}
replacement{"aeb"}
@@ -824,6 +828,10 @@ metadata:table(nofallback){
reason{"deprecated"}
replacement{"kml"}
}
+ kgm{
+ reason{"deprecated"}
+ replacement{"plu"}
+ }
khk{
reason{"macrolanguage"}
replacement{"mn"}
@@ -1184,6 +1192,10 @@ metadata:table(nofallback){
reason{"overlong"}
replacement{"nb"}
}
+ nom{
+ reason{"deprecated"}
+ replacement{"cbr"}
+ }
noo{
reason{"deprecated"}
replacement{"dtd"}
@@ -1276,6 +1288,10 @@ metadata:table(nofallback){
reason{"deprecated"}
replacement{"huw"}
}
+ pmk{
+ reason{"deprecated"}
+ replacement{"crr"}
+ }
pmu{
reason{"deprecated"}
replacement{"phr"}
@@ -1300,6 +1316,10 @@ metadata:table(nofallback){
reason{"deprecated"}
replacement{"lcq"}
}
+ prp{
+ reason{"deprecated"}
+ replacement{"gu"}
+ }
prs{
reason{"overlong"}
replacement{"fa_AF"}
@@ -1580,6 +1600,10 @@ metadata:table(nofallback){
reason{"macrolanguage"}
replacement{"sw"}
}
+ szd{
+ reason{"deprecated"}
+ replacement{"umi"}
+ }
tah{
reason{"overlong"}
replacement{"ty"}
@@ -1656,6 +1680,10 @@ metadata:table(nofallback){
reason{"deprecated"}
replacement{"weo"}
}
+ tmk{
+ reason{"deprecated"}
+ replacement{"tdg"}
+ }
tmp{
reason{"deprecated"}
replacement{"tyj"}
@@ -1672,6 +1700,10 @@ metadata:table(nofallback){
reason{"overlong"}
replacement{"to"}
}
+ tpw{
+ reason{"deprecated"}
+ replacement{"tpn"}
+ }
tsf{
reason{"deprecated"}
replacement{"taj"}
@@ -1844,6 +1876,10 @@ metadata:table(nofallback){
reason{"macrolanguage"}
replacement{"den"}
}
+ xss{
+ reason{"deprecated"}
+ replacement{"zko"}
+ }
ybd{
reason{"deprecated"}
replacement{"rki"}
@@ -1944,6 +1980,10 @@ metadata:table(nofallback){
reason{"deprecated"}
replacement{"scv"}
}
+ zkb{
+ reason{"deprecated"}
+ replacement{"kjh"}
+ }
zsm{
reason{"macrolanguage"}
replacement{"ms"}
diff --git a/icu4c/source/data/misc/supplementalData.txt b/icu4c/source/data/misc/supplementalData.txt
index 6c287df79..51736e63c 100644
--- a/icu4c/source/data/misc/supplementalData.txt
+++ b/icu4c/source/data/misc/supplementalData.txt
@@ -2176,7 +2176,7 @@ supplementalData:table(nofallback){
"islamic-tbla",
}
}
- cldrVersion{"44.1"}
+ cldrVersion{"45"}
codeMappings{
{
"AA",
@@ -4468,6 +4468,7 @@ supplementalData:table(nofallback){
"COU",
"CSD",
"CSK",
+ "CUC",
"CYP",
"DDM",
"DEM",
@@ -4606,7 +4607,6 @@ supplementalData:table(nofallback){
"CNY",
"COP",
"CRC",
- "CUC",
"CUP",
"CVE",
"CZK",
@@ -4723,6 +4723,7 @@ supplementalData:table(nofallback){
"WST",
"XAF",
"XCD",
+ "XCG",
"XOF",
"XPF",
"YER",
@@ -4737,6 +4738,7 @@ supplementalData:table(nofallback){
"adp",
"agp",
"ais",
+ "ajp",
"ajt~u",
"als",
"aoh",
@@ -4800,7 +4802,6 @@ supplementalData:table(nofallback){
"dud",
"duj",
"dwl",
- "dzd",
"ekc",
"ekk",
"elp",
@@ -4845,6 +4846,7 @@ supplementalData:table(nofallback){
"kdv",
"kgc~d",
"kgh",
+ "kgm",
"khk",
"kjf",
"kmr",
@@ -4856,6 +4858,7 @@ supplementalData:table(nofallback){
"kpp",
"kpv",
"krm",
+ "ksa",
"ktr",
"kvs",
"kwq",
@@ -4905,6 +4908,7 @@ supplementalData:table(nofallback){
"nlr",
"nns",
"nnx",
+ "nom",
"noo",
"npi",
"nts",
@@ -4920,15 +4924,18 @@ supplementalData:table(nofallback){
"pes",
"pgy",
"pii",
+ "plj",
"plp",
"plt",
"pmc",
+ "pmk",
"pmu",
"pnb",
"pod",
"ppa",
"ppr",
"prb",
+ "prp",
"prs",
"pry",
"puk",
@@ -4946,6 +4953,7 @@ supplementalData:table(nofallback){
"sgo",
"sh",
"skk",
+ "slq",
"smd",
"snb",
"snh",
@@ -4955,6 +4963,7 @@ supplementalData:table(nofallback){
"svr",
"swc",
"swh",
+ "szd",
"tbb",
"tdu",
"tgg",
@@ -4964,9 +4973,11 @@ supplementalData:table(nofallback){
"tkk",
"tl",
"tlw",
+ "tmk",
"tmp",
"tne~f",
"toe",
+ "tpw",
"tsf",
"ttq",
"tw",
@@ -4991,6 +5002,7 @@ supplementalData:table(nofallback){
"xrq",
"xsj",
"xsl",
+ "xss",
"xtz",
"ybd",
"ydd",
@@ -5005,7 +5017,9 @@ supplementalData:table(nofallback){
"yuu",
"zai",
"zir",
+ "zkb",
"zsm",
+ "zua",
"zyb",
}
private_use{
@@ -5074,7 +5088,6 @@ supplementalData:table(nofallback){
"ajg",
"aji",
"ajn",
- "ajp",
"ajs",
"ajw",
"ajz",
@@ -5343,6 +5356,7 @@ supplementalData:table(nofallback){
"cwe",
"cwg",
"cwt",
+ "cxh",
"cy",
"cya~b",
"cyo",
@@ -5440,7 +5454,7 @@ supplementalData:table(nofallback){
"dsb",
"dse",
"dsh~i",
- "dsl",
+ "dsk~l",
"dsn~o",
"dsq",
"dsz",
@@ -5468,11 +5482,12 @@ supplementalData:table(nofallback){
"dyg",
"dyi",
"dym~o",
+ "dyr",
"dyu",
"dyy",
"dz",
"dza",
- "dze",
+ "dzd~e",
"dzg",
"dzl",
"dzn",
@@ -5557,6 +5572,7 @@ supplementalData:table(nofallback){
"etx",
"etz",
"eu",
+ "eud",
"euq",
"eve",
"evh",
@@ -5889,7 +5905,7 @@ supplementalData:table(nofallback){
"ijn~o",
"ijs",
"ik",
- "iki",
+ "ikh~i",
"ikk~l",
"iko~p",
"ikr~t",
@@ -5961,6 +5977,7 @@ supplementalData:table(nofallback){
"iyo",
"iyx",
"izh",
+ "izm",
"izr",
"izz",
"ja",
@@ -6064,7 +6081,8 @@ supplementalData:table(nofallback){
"kg",
"kga~b",
"kge~g",
- "kgi~y",
+ "kgi~l",
+ "kgn~y",
"kha~j",
"khl",
"khn~z",
@@ -6106,7 +6124,7 @@ supplementalData:table(nofallback){
"krn~p",
"krr~z",
"ks",
- "ksa~z",
+ "ksb~z",
"kta~q",
"kts~z",
"ku",
@@ -6157,8 +6175,7 @@ supplementalData:table(nofallback){
"lga~b",
"lgg~i",
"lgk~o",
- "lgq~r",
- "lgt~u",
+ "lgq~u",
"lgz",
"lha",
"lhh~i",
@@ -6236,7 +6253,7 @@ supplementalData:table(nofallback){
"lv",
"lva",
"lvi",
- "lvk",
+ "lvk~l",
"lvu",
"lwa",
"lwe",
@@ -6398,7 +6415,8 @@ supplementalData:table(nofallback){
"nny~z",
"no",
"noa",
- "noc~n",
+ "noc~l",
+ "non",
"nop~q",
"nos~w",
"noy~z",
@@ -6461,7 +6479,7 @@ supplementalData:table(nofallback){
"nzi",
"nzk",
"nzm",
- "nzs",
+ "nzr~s",
"nzu",
"nzy~z",
"oaa",
@@ -6622,14 +6640,15 @@ supplementalData:table(nofallback){
"pkr~u",
"pl",
"pla~h",
- "plj~l",
+ "plk~l",
"pln~o",
"plq~s",
"plu~w",
"ply~z",
"pma~b",
"pmd~f",
- "pmh~o",
+ "pmh~j",
+ "pml~o",
"pmq~t",
"pmw~z",
"pna",
@@ -6651,7 +6670,8 @@ supplementalData:table(nofallback){
"pqw",
"pra",
"prc~i",
- "prk~r",
+ "prk~o",
+ "prq~r",
"prt~u",
"prw~x",
"prz",
@@ -6686,6 +6706,7 @@ supplementalData:table(nofallback){
"pys",
"pyu",
"pyx~y",
+ "pze",
"pzh",
"pzn",
"qu",
@@ -6779,6 +6800,7 @@ supplementalData:table(nofallback){
"rrt",
"rsb",
"rsk~n",
+ "rsw",
"rtc",
"rth",
"rtm",
@@ -6855,7 +6877,8 @@ supplementalData:table(nofallback){
"sla",
"slc~j",
"sll~n",
- "slp~u",
+ "slp",
+ "slr~u",
"slw~z",
"sm",
"sma~c",
@@ -6926,7 +6949,8 @@ supplementalData:table(nofallback){
"syk~o",
"syr~s",
"syw~y",
- "sza~e",
+ "sza~c",
+ "sze",
"szg",
"szl",
"szn",
@@ -6988,7 +7012,8 @@ supplementalData:table(nofallback){
"tla~d",
"tlf~v",
"tlx~y",
- "tma~o",
+ "tma~j",
+ "tml~o",
"tmq~w",
"tmy~z",
"tn",
@@ -7004,7 +7029,8 @@ supplementalData:table(nofallback){
"tpc",
"tpe~g",
"tpi~r",
- "tpt~z",
+ "tpt~v",
+ "tpx~z",
"tqb",
"tql~r",
"tqt~u",
@@ -7024,6 +7050,7 @@ supplementalData:table(nofallback){
"tus~z",
"tva",
"tvd~e",
+ "tvi",
"tvk~o",
"tvs~u",
"tvw~y",
@@ -7092,6 +7119,7 @@ supplementalData:table(nofallback){
"ulk~n",
"ulu",
"ulw",
+ "uly",
"uma~d",
"umg",
"umi",
@@ -7159,6 +7187,7 @@ supplementalData:table(nofallback){
"vin",
"vis~t",
"viv",
+ "vjk",
"vka",
"vkj~p",
"vkt~u",
@@ -7270,6 +7299,7 @@ supplementalData:table(nofallback){
"wsk",
"wsr~s",
"wsu~v",
+ "wtb",
"wtf",
"wth~i",
"wtk",
@@ -7387,7 +7417,7 @@ supplementalData:table(nofallback){
"xrw",
"xsa~e",
"xsh~i",
- "xsm~s",
+ "xsm~r",
"xsu~v",
"xsy",
"xta~e",
@@ -7434,6 +7464,7 @@ supplementalData:table(nofallback){
"ycl",
"ycn",
"ycp",
+ "ycr",
"yda",
"yde",
"ydg",
@@ -7463,8 +7494,7 @@ supplementalData:table(nofallback){
"yix",
"yiz",
"yka",
- "ykg",
- "yki",
+ "ykg~i",
"ykk~o",
"ykr",
"ykt~u",
@@ -7558,7 +7588,7 @@ supplementalData:table(nofallback){
"zdj",
"zea",
"zeg~h",
- "zen",
+ "zem~n",
"zga~b",
"zgh",
"zgm~n",
@@ -7573,7 +7603,7 @@ supplementalData:table(nofallback){
"zik~n",
"ziw",
"ziz",
- "zka~b",
+ "zka",
"zkd",
"zkg~h",
"zkk",
@@ -7587,6 +7617,7 @@ supplementalData:table(nofallback){
"zlm~n",
"zlq",
"zls",
+ "zlu",
"zlw",
"zma~z",
"zna",
@@ -7616,7 +7647,6 @@ supplementalData:table(nofallback){
"zts~u",
"ztx~y",
"zu",
- "zua",
"zuh",
"zum~n",
"zuy",
@@ -7829,6 +7859,7 @@ supplementalData:table(nofallback){
"Aghb",
"Ahom",
"Arab",
+ "Aran",
"Armi",
"Armn",
"Avst",
@@ -7852,6 +7883,7 @@ supplementalData:table(nofallback){
"Cpmn",
"Cprt",
"Cyrl",
+ "Cyrs",
"Deva",
"Diak",
"Dogr",
@@ -7899,6 +7931,7 @@ supplementalData:table(nofallback){
"Kthi",
"Lana",
"Laoo",
+ "Latf~g",
"Latn",
"Lepc",
"Limb",
@@ -7964,6 +7997,9 @@ supplementalData:table(nofallback){
"Sund",
"Sylo",
"Syrc",
+ "Syre",
+ "Syrj",
+ "Syrn",
"Tagb",
"Takr",
"Tale",
@@ -7997,7 +8033,6 @@ supplementalData:table(nofallback){
"Qaaj~p",
}
special{
- "Aran",
"Qaag",
"Zinh",
"Zmth",
@@ -11896,8 +11931,11 @@ supplementalData:table(nofallback){
"barla",
"basiceng",
"bauddha",
+ "bciav",
+ "bcizbl",
"biscayan",
"biske",
+ "blasl",
"bohoric",
"boont",
"bornholm",
@@ -18691,12 +18729,6 @@ supplementalData:table(nofallback){
"1",
}
{
- "ajp",
- "ar",
- "10",
- "1",
- }
- {
"apc",
"ar",
"10",
@@ -20418,54 +20450,6 @@ supplementalData:table(nofallback){
"pt_ST",
"pt_TL",
}
- root{
- "az_Arab",
- "az_Cyrl",
- "bal_Latn",
- "blt_Latn",
- "bm_Nkoo",
- "bs_Cyrl",
- "byn_Latn",
- "cu_Glag",
- "dje_Arab",
- "dyo_Arab",
- "en_Dsrt",
- "en_Shaw",
- "ff_Adlm",
- "ff_Arab",
- "ha_Arab",
- "iu_Latn",
- "kk_Arab",
- "ks_Deva",
- "ku_Arab",
- "kxv_Deva",
- "kxv_Orya",
- "kxv_Telu",
- "ky_Arab",
- "ky_Latn",
- "ml_Arab",
- "mn_Mong",
- "mni_Mtei",
- "ms_Arab",
- "pa_Arab",
- "sat_Deva",
- "sd_Deva",
- "sd_Khoj",
- "sd_Sind",
- "shi_Latn",
- "so_Arab",
- "sr_Latn",
- "sw_Arab",
- "tg_Arab",
- "ug_Cyrl",
- "uz_Arab",
- "uz_Cyrl",
- "vai_Latn",
- "wo_Arab",
- "yo_Arab",
- "yue_Hans",
- "zh_Hant",
- }
zh_Hant_HK{"zh_Hant_MO"}
}
personNamesDefaults{
@@ -27933,9 +27917,6 @@ supplementalData:table(nofallback){
49990000,
57376941,
}
- tok{
- populationShareF:int{40100000}
- }
tr{
populationShareF:int{47100000}
}
@@ -28583,9 +28564,6 @@ supplementalData:table(nofallback){
vmf{
populationShareF:int{48600000}
}
- vo{
- populationShareF:int{0}
- }
}
DG{
en{
diff --git a/icu4c/source/data/misc/units.txt b/icu4c/source/data/misc/units.txt
index e600a1c4d..c01febe10 100644
--- a/icu4c/source/data/misc/units.txt
+++ b/icu4c/source/data/misc/units.txt
@@ -2,7 +2,7 @@
// License & terms of use: http://www.unicode.org/copyright.html
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
units:table(nofallback){
- cldrVersion{"44.1"}
+ cldrVersion{"45"}
convertUnits{
100-kilometer{
factor{"100000"}
@@ -49,6 +49,11 @@ units:table(nofallback){
systems{"ussystem"}
target{"cubic-meter"}
}
+ beaufort{
+ special{"beaufort"}
+ systems{"metric_adjacent"}
+ target{"meter-per-second"}
+ }
becquerel{
factor{"1"}
systems{"si metric prefixable"}
@@ -2207,6 +2212,132 @@ units:table(nofallback){
}
}
}
+ unitPrefixes{
+ atto{
+ power10{"-18"}
+ symbol{"a"}
+ }
+ centi{
+ power10{"-2"}
+ symbol{"c"}
+ }
+ deci{
+ power10{"-1"}
+ symbol{"d"}
+ }
+ deka{
+ power10{"1"}
+ symbol{"da"}
+ }
+ exa{
+ power10{"18"}
+ symbol{"E"}
+ }
+ exbi{
+ power2{"60"}
+ symbol{"Ei"}
+ }
+ femto{
+ power10{"-15"}
+ symbol{"f"}
+ }
+ gibi{
+ power2{"30"}
+ symbol{"Gi"}
+ }
+ giga{
+ power10{"9"}
+ symbol{"G"}
+ }
+ hecto{
+ power10{"2"}
+ symbol{"h"}
+ }
+ kibi{
+ power2{"10"}
+ symbol{"Ki"}
+ }
+ kilo{
+ power10{"3"}
+ symbol{"k"}
+ }
+ mebi{
+ power2{"20"}
+ symbol{"Mi"}
+ }
+ mega{
+ power10{"6"}
+ symbol{"M"}
+ }
+ milli{
+ power10{"-3"}
+ symbol{"m"}
+ }
+ nano{
+ power10{"-9"}
+ symbol{"n"}
+ }
+ pebi{
+ power2{"50"}
+ symbol{"Pi"}
+ }
+ peta{
+ power10{"15"}
+ symbol{"P"}
+ }
+ pico{
+ power10{"-12"}
+ symbol{"p"}
+ }
+ quecto{
+ power10{"-30"}
+ symbol{"q"}
+ }
+ quetta{
+ power10{"30"}
+ symbol{"Q"}
+ }
+ ronna{
+ power10{"27"}
+ symbol{"R"}
+ }
+ ronto{
+ power10{"-27"}
+ symbol{"r"}
+ }
+ tebi{
+ power2{"40"}
+ symbol{"Ti"}
+ }
+ tera{
+ power10{"12"}
+ symbol{"T"}
+ }
+ yobi{
+ power2{"80"}
+ symbol{"Yi"}
+ }
+ yocto{
+ power10{"-24"}
+ symbol{"y"}
+ }
+ yotta{
+ power10{"24"}
+ symbol{"Y"}
+ }
+ zebi{
+ power2{"70"}
+ symbol{"Zi"}
+ }
+ zepto{
+ power10{"-21"}
+ symbol{"z"}
+ }
+ zetta{
+ power10{"21"}
+ symbol{"Z"}
+ }
+ }
unitQuantities{
{
candela{"luminous-intensity"}
diff --git a/icu4c/source/data/misc/zoneinfo64.txt b/icu4c/source/data/misc/zoneinfo64.txt
index 4914dafeb..9838ef48e 100644
--- a/icu4c/source/data/misc/zoneinfo64.txt
+++ b/icu4c/source/data/misc/zoneinfo64.txt
@@ -3,10 +3,10 @@
// License & terms of use: http://www.unicode.org/copyright.html
//---------------------------------------------------------
// Build tool: tz2icu
-// Build date: Tue Mar 19 17:03:27 2024
+// Build date: Wed Feb 7 16:30:19 2024
// tz database: ftp://ftp.iana.org/tz/
// tz version: 2024a
-// ICU version: 74.2
+// ICU version: 75.1
//---------------------------------------------------------
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
// >> !!! >>> DO NOT EDIT <<< !!! <<
diff --git a/icu4c/source/data/rbnf/LOCALE_DEPS.json b/icu4c/source/data/rbnf/LOCALE_DEPS.json
index 6f4d1ca65..c56ea67a5 100644
--- a/icu4c/source/data/rbnf/LOCALE_DEPS.json
+++ b/icu4c/source/data/rbnf/LOCALE_DEPS.json
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1",
+ "cldrVersion": "45",
"aliases": {
"ars": "ar_SA",
"in": "id",
diff --git a/icu4c/source/data/rbnf/id.txt b/icu4c/source/data/rbnf/id.txt
index 82e1d9fac..50f034b2e 100644
--- a/icu4c/source/data/rbnf/id.txt
+++ b/icu4c/source/data/rbnf/id.txt
@@ -17,7 +17,8 @@ id{
"%spellout-cardinal:",
"-x: negatif >>;",
"x.x: << titik >>;",
- "0: kosong;",
+ "x,x: << koma >>;",
+ "0: nol;",
"1: satu;",
"2: dua;",
"3: tiga;",
@@ -44,6 +45,8 @@ id{
"-x: negatif >>;",
"x.x: =#,##0.#=;",
"0: ke=%spellout-cardinal=;",
+ "1: pertama",
+ "2: ke=%spellout-cardinal=;",
}
}
}
diff --git a/icu4c/source/data/rbnf/root.txt b/icu4c/source/data/rbnf/root.txt
index de450eaef..8bcc50a91 100644
--- a/icu4c/source/data/rbnf/root.txt
+++ b/icu4c/source/data/rbnf/root.txt
@@ -685,5 +685,5 @@ root{
"0: =#,##0.#=.;",
}
}
- Version{"44.1"}
+ Version{"45"}
}
diff --git a/icu4c/source/data/region/LOCALE_DEPS.json b/icu4c/source/data/region/LOCALE_DEPS.json
index df3d1f620..c30ec800f 100644
--- a/icu4c/source/data/region/LOCALE_DEPS.json
+++ b/icu4c/source/data/region/LOCALE_DEPS.json
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1",
+ "cldrVersion": "45",
"aliases": {
"ars": "ar_SA",
"az_AZ": "az_Latn_AZ",
@@ -19,6 +19,7 @@
"iw": "he",
"iw_IL": "he_IL",
"ks_IN": "ks_Arab_IN",
+ "kxv_IN": "kxv_Latn_IN",
"mni_IN": "mni_Beng_IN",
"mo": "ro",
"no_NO": "no",
diff --git a/icu4c/source/data/region/ff_Adlm.txt b/icu4c/source/data/region/ff_Adlm.txt
index 9e84206cf..3f2ebe2db 100644
--- a/icu4c/source/data/region/ff_Adlm.txt
+++ b/icu4c/source/data/region/ff_Adlm.txt
@@ -70,7 +70,7 @@ ff_Adlm{
BS{"𞤄𞤢𞤸𞤢𞤥𞤢𞥄𞤧"}
BT{"𞤄𞤵𞥅𞤼𞤢𞥄𞤲"}
BV{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤄𞤵𞥅𞤾𞤫𞥅"}
- BW{"‮𞤄𞤮𞤼𞤧𞤵𞤱𞤢𞥄𞤲𞤢"}
+ BW{"𞤄𞤮𞤼𞤧𞤵𞤱𞤢𞥄𞤲𞤢"}
BY{"𞤄𞤫𞤤𞤢𞤪𞤵𞥅𞤧"}
BZ{"𞤄𞤫𞤤𞤭𞥅𞥁"}
CA{"𞤑𞤢𞤲𞤢𞤣𞤢𞥄"}
diff --git a/icu4c/source/data/region/hi_Latn.txt b/icu4c/source/data/region/hi_Latn.txt
index 5586af6f8..c4cbf8a9d 100644
--- a/icu4c/source/data/region/hi_Latn.txt
+++ b/icu4c/source/data/region/hi_Latn.txt
@@ -8,6 +8,7 @@ hi_Latn{
BL{"St. Barthelemy"}
CI{"Cote d’Ivoire"}
CW{"Curacao"}
+ IN{"Bharat"}
KN{"St. Kitts & Nevis"}
LC{"St. Lucia"}
MF{"St. Martin"}
diff --git a/icu4c/source/data/region/ks.txt b/icu4c/source/data/region/ks.txt
index 0edfdab6a..18abb8b6d 100644
--- a/icu4c/source/data/region/ks.txt
+++ b/icu4c/source/data/region/ks.txt
@@ -220,7 +220,7 @@ ks{
PK{"پاکِستان"}
PL{"پولینڈ"}
PM{"سینٹ پیٖری تہٕ موکیلِیَن"}
- PN{"پِٹکیرٕنۍ جٔزیٖرٕ"}
+ PN{"پِٹکیرٕنؠ جٔزیٖرٕ"}
PR{"پٔرٹو رِکو"}
PS{"فلسطین"}
PT{"پُرتِگال"}
diff --git a/icu4c/source/data/region/kxv_IN.txt b/icu4c/source/data/region/kxv_IN.txt
new file mode 100644
index 000000000..e92770c6f
--- /dev/null
+++ b/icu4c/source/data/region/kxv_IN.txt
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_IN{
+ "%%ALIAS"{"kxv_Latn_IN"}
+}
diff --git a/icu4c/source/data/region/kxv_Latn.txt b/icu4c/source/data/region/kxv_Latn.txt
new file mode 100644
index 000000000..823563224
--- /dev/null
+++ b/icu4c/source/data/region/kxv_Latn.txt
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_Latn{
+}
diff --git a/icu4c/source/data/region/kxv_Latn_IN.txt b/icu4c/source/data/region/kxv_Latn_IN.txt
new file mode 100644
index 000000000..d2dd86851
--- /dev/null
+++ b/icu4c/source/data/region/kxv_Latn_IN.txt
@@ -0,0 +1,9 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+/**
+ * generated alias target
+ */
+kxv_Latn_IN{
+ ___{""}
+}
diff --git a/icu4c/source/data/region/root.txt b/icu4c/source/data/region/root.txt
index 6beed2fe4..c4e678b69 100644
--- a/icu4c/source/data/region/root.txt
+++ b/icu4c/source/data/region/root.txt
@@ -2,5 +2,5 @@
// License & terms of use: http://www.unicode.org/copyright.html
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
root{
- Version{"44.1"}
+ Version{"45"}
}
diff --git a/icu4c/source/data/unidata/changes.txt b/icu4c/source/data/unidata/changes.txt
index 085643774..f2ed6bcfc 100644
--- a/icu4c/source/data/unidata/changes.txt
+++ b/icu4c/source/data/unidata/changes.txt
@@ -47,6 +47,20 @@ and see the change logs below.
---------------------------------------------------------------------------- ***
+Unicode 16.0 update for ICU 76
+
+TODO
+- No more hardcoded spoof checker sets: Update change log.
+- In the Unicode Tools repo: Delete the org.unicode.text.tools.RecommendedSetGenerator.
+- In corepropsbuilder.cpp, remove the isA9CF hack.
+- Update instructions for hardcoded properties
+ IDS_Unary_Operator, ID_Compat_Math_Start & ID_Compat_Math_Continue:
+ + These are still hardcoded, but since ICU 75 they are tested in C++ intltest.
+ + No more need to check via grep.
+ + Still: If the test fails, then update the hardcoded implementation.
+
+---------------------------------------------------------------------------- ***
+
Unicode 15.1 update for ICU 74
https://www.unicode.org/versions/Unicode15.1.0/
diff --git a/icu4c/source/data/unidata/ppucd.txt b/icu4c/source/data/unidata/ppucd.txt
index 1f85380a9..889b639c6 100644
--- a/icu4c/source/data/unidata/ppucd.txt
+++ b/icu4c/source/data/unidata/ppucd.txt
@@ -58,6 +58,8 @@ property;Binary;Hyphen;Hyphen
property;Binary;IDC;ID_Continue
property;Binary;ID_Compat_Math_Continue;ID_Compat_Math_Continue
property;Binary;ID_Compat_Math_Start;ID_Compat_Math_Start
+property;Enumerated;Identifier_Status;Identifier_Status
+property;Miscellaneous;Identifier_Type;Identifier_Type
property;Binary;Ideo;Ideographic
property;Binary;IDS;ID_Start
property;Binary;IDSB;IDS_Binary_Operator
@@ -696,6 +698,20 @@ value;hst;LVT;LVT_Syllable
value;hst;NA;Not_Applicable
value;hst;T;Trailing_Jamo
value;hst;V;Vowel_Jamo
+value;Identifier_Status;Allowed;Allowed
+value;Identifier_Status;Restricted;Restricted
+value;Identifier_Type;Default_Ignorable;Default_Ignorable
+value;Identifier_Type;Deprecated;Deprecated
+value;Identifier_Type;Exclusion;Exclusion
+value;Identifier_Type;Inclusion;Inclusion
+value;Identifier_Type;Limited_Use;Limited_Use
+value;Identifier_Type;Not_Character;Not_Character
+value;Identifier_Type;Not_NFKC;Not_NFKC
+value;Identifier_Type;Not_XID;Not_XID
+value;Identifier_Type;Obsolete;Obsolete
+value;Identifier_Type;Recommended;Recommended
+value;Identifier_Type;Technical;Technical
+value;Identifier_Type;Uncommon_Use;Uncommon_Use
value;InCB;Consonant;Consonant
value;InCB;Extend;Extend
value;InCB;Linker;Linker
@@ -1002,6 +1018,7 @@ value;sc;Afak;Afak
value;sc;Aghb;Caucasian_Albanian
value;sc;Ahom;Ahom
value;sc;Arab;Arabic
+value;sc;Aran;Aran
value;sc;Armi;Imperial_Aramaic
value;sc;Armn;Armenian
value;sc;Avst;Avestan
@@ -1283,294 +1300,294 @@ value;WB;WSegSpace;WSegSpace
value;WB;XX;Other
value;WB;ZWJ;ZWJ
-defaults;0000..10FFFF;age=NA;bc=L;blk=NB;bpt=n;cf=<code point>;dm=<code point>;dt=None;ea=N;FC_NFKC=<code point>;gc=Cn;GCB=XX;gcm=Cn;hst=NA;InCB=None;InPC=NA;InSC=Other;jg=No_Joining_Group;jt=U;lb=XX;lc=<code point>;NFC_QC=Y;NFD_QC=Y;NFKC_CF=<code point>;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;nt=None;SB=XX;sc=Zzzz;scf=<code point>;scx=<script>;slc=<code point>;stc=<code point>;suc=<code point>;tc=<code point>;uc=<code point>;vo=R;WB=XX
+defaults;0000..10FFFF;age=NA;bc=L;blk=NB;bpt=n;cf=<code point>;dm=<code point>;dt=None;ea=N;FC_NFKC=<code point>;gc=Cn;GCB=XX;gcm=Cn;hst=NA;Identifier_Status=Restricted;Identifier_Type=Not_Character;InCB=None;InPC=NA;InSC=Other;jg=No_Joining_Group;jt=U;lb=XX;lc=<code point>;NFC_QC=Y;NFD_QC=Y;NFKC_CF=<code point>;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;nt=None;SB=XX;sc=Zzzz;scf=<code point>;scx=<script>;slc=<code point>;stc=<code point>;suc=<code point>;tc=<code point>;uc=<code point>;vo=R;WB=XX
-block;0000..007F;age=1.1;blk=ASCII;ea=Na;gc=Cc;Gr_Base;lb=AL;sc=Zyyy
+block;0000..007F;age=1.1;blk=ASCII;ea=Na;gc=Cc;Gr_Base;Identifier_Type=Recommended;lb=AL;sc=Zyyy
# 0000..007F C0 Controls and Basic Latin (Basic Latin)
# C0 controls
-cp;0000;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=NULL,abbreviation=NUL
-cp;0001;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=START OF HEADING,abbreviation=SOH
-cp;0002;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=START OF TEXT,abbreviation=STX
-cp;0003;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=END OF TEXT,abbreviation=ETX
-cp;0004;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=END OF TRANSMISSION,abbreviation=EOT
-cp;0005;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=ENQUIRY,abbreviation=ENQ
-cp;0006;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=ACKNOWLEDGE,abbreviation=ACK
-cp;0007;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=ALERT,abbreviation=BEL
-cp;0008;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=BACKSPACE,abbreviation=BS
-cp;0009;bc=S;ea=N;GCB=CN;-Gr_Base;lb=BA;Name_Alias=control=CHARACTER TABULATION,control=HORIZONTAL TABULATION,abbreviation=HT,abbreviation=TAB;Pat_WS;SB=SP;WSpace
-cp;000A;bc=B;ea=N;GCB=LF;-Gr_Base;lb=LF;Name_Alias=control=LINE FEED,control=NEW LINE,control=END OF LINE,abbreviation=LF,abbreviation=NL,abbreviation=EOL;Pat_WS;SB=LF;WB=LF;WSpace
-cp;000B;bc=S;ea=N;GCB=CN;-Gr_Base;lb=BK;Name_Alias=control=LINE TABULATION,control=VERTICAL TABULATION,abbreviation=VT;Pat_WS;SB=SP;WB=NL;WSpace
-cp;000C;bc=WS;ea=N;GCB=CN;-Gr_Base;lb=BK;Name_Alias=control=FORM FEED,abbreviation=FF;Pat_WS;SB=SP;WB=NL;WSpace
-cp;000D;bc=B;ea=N;GCB=CR;-Gr_Base;lb=CR;Name_Alias=control=CARRIAGE RETURN,abbreviation=CR;Pat_WS;SB=CR;WB=CR;WSpace
-cp;000E;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=SHIFT OUT,control=LOCKING-SHIFT ONE,abbreviation=SO
-cp;000F;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=SHIFT IN,control=LOCKING-SHIFT ZERO,abbreviation=SI
-cp;0010;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=DATA LINK ESCAPE,abbreviation=DLE
-cp;0011;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=DEVICE CONTROL ONE,abbreviation=DC1
-cp;0012;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=DEVICE CONTROL TWO,abbreviation=DC2
-cp;0013;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=DEVICE CONTROL THREE,abbreviation=DC3
-cp;0014;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=DEVICE CONTROL FOUR,abbreviation=DC4
-cp;0015;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=NEGATIVE ACKNOWLEDGE,abbreviation=NAK
-cp;0016;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=SYNCHRONOUS IDLE,abbreviation=SYN
-cp;0017;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=END OF TRANSMISSION BLOCK,abbreviation=ETB
-cp;0018;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=CANCEL,abbreviation=CAN
-cp;0019;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=END OF MEDIUM,abbreviation=EOM,abbreviation=EM
-cp;001A;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=SUBSTITUTE,abbreviation=SUB
-cp;001B;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=ESCAPE,abbreviation=ESC
-cp;001C;bc=B;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=INFORMATION SEPARATOR FOUR,control=FILE SEPARATOR,abbreviation=FS
-cp;001D;bc=B;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=INFORMATION SEPARATOR THREE,control=GROUP SEPARATOR,abbreviation=GS
-cp;001E;bc=B;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=INFORMATION SEPARATOR TWO,control=RECORD SEPARATOR,abbreviation=RS
-cp;001F;bc=S;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=INFORMATION SEPARATOR ONE,control=UNIT SEPARATOR,abbreviation=US
+cp;0000;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=NULL,abbreviation=NUL
+cp;0001;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=START OF HEADING,abbreviation=SOH
+cp;0002;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=START OF TEXT,abbreviation=STX
+cp;0003;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=END OF TEXT,abbreviation=ETX
+cp;0004;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=END OF TRANSMISSION,abbreviation=EOT
+cp;0005;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=ENQUIRY,abbreviation=ENQ
+cp;0006;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=ACKNOWLEDGE,abbreviation=ACK
+cp;0007;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=ALERT,abbreviation=BEL
+cp;0008;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=BACKSPACE,abbreviation=BS
+cp;0009;bc=S;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_XID;lb=BA;Name_Alias=control=CHARACTER TABULATION,control=HORIZONTAL TABULATION,abbreviation=HT,abbreviation=TAB;Pat_WS;SB=SP;WSpace
+cp;000A;bc=B;ea=N;GCB=LF;-Gr_Base;Identifier_Type=Not_XID;lb=LF;Name_Alias=control=LINE FEED,control=NEW LINE,control=END OF LINE,abbreviation=LF,abbreviation=NL,abbreviation=EOL;Pat_WS;SB=LF;WB=LF;WSpace
+cp;000B;bc=S;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_XID;lb=BK;Name_Alias=control=LINE TABULATION,control=VERTICAL TABULATION,abbreviation=VT;Pat_WS;SB=SP;WB=NL;WSpace
+cp;000C;bc=WS;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_XID;lb=BK;Name_Alias=control=FORM FEED,abbreviation=FF;Pat_WS;SB=SP;WB=NL;WSpace
+cp;000D;bc=B;ea=N;GCB=CR;-Gr_Base;Identifier_Type=Not_XID;lb=CR;Name_Alias=control=CARRIAGE RETURN,abbreviation=CR;Pat_WS;SB=CR;WB=CR;WSpace
+cp;000E;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=SHIFT OUT,control=LOCKING-SHIFT ONE,abbreviation=SO
+cp;000F;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=SHIFT IN,control=LOCKING-SHIFT ZERO,abbreviation=SI
+cp;0010;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=DATA LINK ESCAPE,abbreviation=DLE
+cp;0011;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=DEVICE CONTROL ONE,abbreviation=DC1
+cp;0012;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=DEVICE CONTROL TWO,abbreviation=DC2
+cp;0013;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=DEVICE CONTROL THREE,abbreviation=DC3
+cp;0014;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=DEVICE CONTROL FOUR,abbreviation=DC4
+cp;0015;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=NEGATIVE ACKNOWLEDGE,abbreviation=NAK
+cp;0016;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=SYNCHRONOUS IDLE,abbreviation=SYN
+cp;0017;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=END OF TRANSMISSION BLOCK,abbreviation=ETB
+cp;0018;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=CANCEL,abbreviation=CAN
+cp;0019;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=END OF MEDIUM,abbreviation=EOM,abbreviation=EM
+cp;001A;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=SUBSTITUTE,abbreviation=SUB
+cp;001B;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=ESCAPE,abbreviation=ESC
+cp;001C;bc=B;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=INFORMATION SEPARATOR FOUR,control=FILE SEPARATOR,abbreviation=FS
+cp;001D;bc=B;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=INFORMATION SEPARATOR THREE,control=GROUP SEPARATOR,abbreviation=GS
+cp;001E;bc=B;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=INFORMATION SEPARATOR TWO,control=RECORD SEPARATOR,abbreviation=RS
+cp;001F;bc=S;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=INFORMATION SEPARATOR ONE,control=UNIT SEPARATOR,abbreviation=US
# ASCII punctuation and symbols
-cp;0020;bc=WS;gc=Zs;lb=SP;na=SPACE;Name_Alias=abbreviation=SP;Pat_WS;SB=SP;WB=WSegSpace;WSpace
-cp;0021;bc=ON;gc=Po;lb=EX;na=EXCLAMATION MARK;Pat_Syn;SB=ST;STerm;Term
-cp;0022;bc=ON;gc=Po;lb=QU;na=QUOTATION MARK;Pat_Syn;QMark;SB=CL;WB=DQ
-cp;0023;bc=ET;EComp;Emoji;gc=Po;na=NUMBER SIGN;Pat_Syn
-cp;0024;bc=ET;gc=Sc;lb=PR;na=DOLLAR SIGN;Pat_Syn
-cp;0025;bc=ET;gc=Po;lb=PO;na=PERCENT SIGN;Pat_Syn
-cp;0026;bc=ON;gc=Po;na=AMPERSAND;Pat_Syn
-cp;0027;bc=ON;CI;gc=Po;lb=QU;na=APOSTROPHE;Pat_Syn;QMark;SB=CL;WB=SQ
-cp;0028;bc=ON;Bidi_M;bmg=0029;bpb=0029;bpt=o;gc=Ps;lb=OP;na=LEFT PARENTHESIS;Pat_Syn;SB=CL
-cp;0029;bc=ON;Bidi_M;bmg=0028;bpb=0028;bpt=c;gc=Pe;lb=CP;na=RIGHT PARENTHESIS;Pat_Syn;SB=CL
-cp;002A;bc=ON;EComp;Emoji;gc=Po;na=ASTERISK;Pat_Syn
+cp;0020;bc=WS;gc=Zs;Identifier_Type=Not_XID;lb=SP;na=SPACE;Name_Alias=abbreviation=SP;Pat_WS;SB=SP;WB=WSegSpace;WSpace
+cp;0021;bc=ON;gc=Po;Identifier_Type=Not_XID;lb=EX;na=EXCLAMATION MARK;Pat_Syn;SB=ST;STerm;Term
+cp;0022;bc=ON;gc=Po;Identifier_Type=Not_XID;lb=QU;na=QUOTATION MARK;Pat_Syn;QMark;SB=CL;WB=DQ
+cp;0023;bc=ET;EComp;Emoji;gc=Po;Identifier_Type=Not_XID;na=NUMBER SIGN;Pat_Syn
+cp;0024;bc=ET;gc=Sc;Identifier_Type=Not_XID;lb=PR;na=DOLLAR SIGN;Pat_Syn
+cp;0025;bc=ET;gc=Po;Identifier_Type=Not_XID;lb=PO;na=PERCENT SIGN;Pat_Syn
+cp;0026;bc=ON;gc=Po;Identifier_Type=Not_XID;na=AMPERSAND;Pat_Syn
+cp;0027;bc=ON;CI;gc=Po;Identifier_Status=Allowed;Identifier_Type=Inclusion;lb=QU;na=APOSTROPHE;Pat_Syn;QMark;SB=CL;WB=SQ
+cp;0028;bc=ON;Bidi_M;bmg=0029;bpb=0029;bpt=o;gc=Ps;Identifier_Type=Not_XID;lb=OP;na=LEFT PARENTHESIS;Pat_Syn;SB=CL
+cp;0029;bc=ON;Bidi_M;bmg=0028;bpb=0028;bpt=c;gc=Pe;Identifier_Type=Not_XID;lb=CP;na=RIGHT PARENTHESIS;Pat_Syn;SB=CL
+cp;002A;bc=ON;EComp;Emoji;gc=Po;Identifier_Type=Not_XID;na=ASTERISK;Pat_Syn
# ASCII math operator
-cp;002B;bc=ES;gc=Sm;lb=PR;Math;na=PLUS SIGN;Pat_Syn
+cp;002B;bc=ES;gc=Sm;Identifier_Type=Not_XID;lb=PR;Math;na=PLUS SIGN;Pat_Syn
# ASCII punctuation
-cp;002C;bc=CS;gc=Po;lb=IS;na=COMMA;Pat_Syn;SB=SC;Term;WB=MN
-cp;002D;bc=ES;Dash;gc=Pd;Hyphen;InSC=Consonant_Placeholder;lb=HY;na=HYPHEN-MINUS;Pat_Syn;SB=SC
-cp;002E;bc=CS;CI;gc=Po;lb=IS;na=FULL STOP;Pat_Syn;SB=AT;STerm;Term;WB=MB
-cp;002F;bc=CS;gc=Po;lb=SY;na=SOLIDUS;Pat_Syn
+cp;002C;bc=CS;gc=Po;Identifier_Type=Not_XID;lb=IS;na=COMMA;Pat_Syn;SB=SC;Term;WB=MN
+cp;002D;bc=ES;Dash;gc=Pd;Hyphen;Identifier_Status=Allowed;Identifier_Type=Inclusion;InSC=Consonant_Placeholder;lb=HY;na=HYPHEN-MINUS;Pat_Syn;SB=SC
+cp;002E;bc=CS;CI;gc=Po;Identifier_Status=Allowed;Identifier_Type=Inclusion;lb=IS;na=FULL STOP;Pat_Syn;SB=AT;STerm;Term;WB=MB
+cp;002F;bc=CS;gc=Po;Identifier_Type=Not_XID;lb=SY;na=SOLIDUS;Pat_Syn
# ASCII digits
-cp;0030;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;XIDC
-cp;0031;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;XIDC
-cp;0032;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;XIDC
-cp;0033;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;XIDC
-cp;0034;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;XIDC
-cp;0035;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;XIDC
-cp;0036;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;XIDC
-cp;0037;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;XIDC
-cp;0038;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;XIDC
-cp;0039;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;InSC=Number;lb=NU;na=DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;XIDC
+cp;0030;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;XIDC
+cp;0031;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;XIDC
+cp;0032;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;XIDC
+cp;0033;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;XIDC
+cp;0034;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;XIDC
+cp;0035;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;XIDC
+cp;0036;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;XIDC
+cp;0037;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;XIDC
+cp;0038;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;XIDC
+cp;0039;AHex;bc=EN;EComp;Emoji;gc=Nd;Hex;IDC;Identifier_Status=Allowed;InSC=Number;lb=NU;na=DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;XIDC
# ASCII punctuation
-cp;003A;bc=CS;CI;gc=Po;lb=IS;na=COLON;Pat_Syn;SB=SC;Term;WB=ML
-cp;003B;bc=ON;gc=Po;lb=IS;na=SEMICOLON;Pat_Syn;Term;WB=MN
+cp;003A;bc=CS;CI;gc=Po;Identifier_Status=Allowed;Identifier_Type=Inclusion;lb=IS;na=COLON;Pat_Syn;SB=SC;Term;WB=ML
+cp;003B;bc=ON;gc=Po;Identifier_Type=Not_XID;lb=IS;na=SEMICOLON;Pat_Syn;Term;WB=MN
# ASCII mathematical operators
-cp;003C;bc=ON;Bidi_M;bmg=003E;gc=Sm;Math;na=LESS-THAN SIGN;Pat_Syn
-cp;003D;bc=ON;gc=Sm;Math;na=EQUALS SIGN;Pat_Syn
-cp;003E;bc=ON;Bidi_M;bmg=003C;gc=Sm;Math;na=GREATER-THAN SIGN;Pat_Syn
+cp;003C;bc=ON;Bidi_M;bmg=003E;gc=Sm;Identifier_Type=Not_XID;Math;na=LESS-THAN SIGN;Pat_Syn
+cp;003D;bc=ON;gc=Sm;Identifier_Type=Not_XID;Math;na=EQUALS SIGN;Pat_Syn
+cp;003E;bc=ON;Bidi_M;bmg=003C;gc=Sm;Identifier_Type=Not_XID;Math;na=GREATER-THAN SIGN;Pat_Syn
# ASCII punctuation
-cp;003F;bc=ON;gc=Po;lb=EX;na=QUESTION MARK;Pat_Syn;SB=ST;STerm;Term
-cp;0040;bc=ON;gc=Po;na=COMMERCIAL AT;Pat_Syn
+cp;003F;bc=ON;gc=Po;Identifier_Type=Not_XID;lb=EX;na=QUESTION MARK;Pat_Syn;SB=ST;STerm;Term
+cp;0040;bc=ON;gc=Po;Identifier_Type=Not_XID;na=COMMERCIAL AT;Pat_Syn
# Uppercase Latin alphabet
-cp;0041;AHex;Alpha;Cased;cf=0061;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER A;NFKC_CF=0061;NFKC_SCF=0061;SB=UP;sc=Latn;scf=0061;slc=0061;Upper;WB=LE;XIDC;XIDS
-cp;0042;AHex;Alpha;Cased;cf=0062;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;sc=Latn;scf=0062;slc=0062;Upper;WB=LE;XIDC;XIDS
-cp;0043;AHex;Alpha;Cased;cf=0063;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;sc=Latn;scf=0063;slc=0063;Upper;WB=LE;XIDC;XIDS
-cp;0044;AHex;Alpha;Cased;cf=0064;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;sc=Latn;scf=0064;slc=0064;Upper;WB=LE;XIDC;XIDS
-cp;0045;AHex;Alpha;Cased;cf=0065;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;sc=Latn;scf=0065;slc=0065;Upper;WB=LE;XIDC;XIDS
-cp;0046;AHex;Alpha;Cased;cf=0066;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;sc=Latn;scf=0066;slc=0066;Upper;WB=LE;XIDC;XIDS
-cp;0047;Alpha;Cased;cf=0067;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;sc=Latn;scf=0067;slc=0067;Upper;WB=LE;XIDC;XIDS
-cp;0048;Alpha;Cased;cf=0068;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;sc=Latn;scf=0068;slc=0068;Upper;WB=LE;XIDC;XIDS
-cp;0049;Alpha;Cased;cf=0069;Conditional_Case_Mappings=lt More_Above:lc=0069 0307&tc=0049&uc=0049,tr Not_Before_Dot:lc=0131&tc=0049&uc=0049,az Not_Before_Dot:lc=0131&tc=0049&uc=0049;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;sc=Latn;scf=0069;slc=0069;Turkic_Case_Folding=0131;Upper;WB=LE;XIDC;XIDS
-cp;004A;Alpha;Cased;cf=006A;Conditional_Case_Mappings=lt More_Above:lc=006A 0307&tc=004A&uc=004A;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;sc=Latn;scf=006A;slc=006A;Upper;WB=LE;XIDC;XIDS
-cp;004B;Alpha;Cased;cf=006B;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;sc=Latn;scf=006B;slc=006B;Upper;WB=LE;XIDC;XIDS
-cp;004C;Alpha;Cased;cf=006C;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;sc=Latn;scf=006C;slc=006C;Upper;WB=LE;XIDC;XIDS
-cp;004D;Alpha;Cased;cf=006D;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;sc=Latn;scf=006D;slc=006D;Upper;WB=LE;XIDC;XIDS
-cp;004E;Alpha;Cased;cf=006E;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;sc=Latn;scf=006E;slc=006E;Upper;WB=LE;XIDC;XIDS
-cp;004F;Alpha;Cased;cf=006F;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;sc=Latn;scf=006F;slc=006F;Upper;WB=LE;XIDC;XIDS
-cp;0050;Alpha;Cased;cf=0070;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;sc=Latn;scf=0070;slc=0070;Upper;WB=LE;XIDC;XIDS
-cp;0051;Alpha;Cased;cf=0071;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;sc=Latn;scf=0071;slc=0071;Upper;WB=LE;XIDC;XIDS
-cp;0052;Alpha;Cased;cf=0072;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;sc=Latn;scf=0072;slc=0072;Upper;WB=LE;XIDC;XIDS
-cp;0053;Alpha;Cased;cf=0073;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;sc=Latn;scf=0073;slc=0073;Upper;WB=LE;XIDC;XIDS
-cp;0054;Alpha;Cased;cf=0074;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;sc=Latn;scf=0074;slc=0074;Upper;WB=LE;XIDC;XIDS
-cp;0055;Alpha;Cased;cf=0075;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;sc=Latn;scf=0075;slc=0075;Upper;WB=LE;XIDC;XIDS
-cp;0056;Alpha;Cased;cf=0076;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;sc=Latn;scf=0076;slc=0076;Upper;WB=LE;XIDC;XIDS
-cp;0057;Alpha;Cased;cf=0077;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;sc=Latn;scf=0077;slc=0077;Upper;WB=LE;XIDC;XIDS
-cp;0058;Alpha;Cased;cf=0078;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;sc=Latn;scf=0078;slc=0078;Upper;WB=LE;XIDC;XIDS
-cp;0059;Alpha;Cased;cf=0079;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;sc=Latn;scf=0079;slc=0079;Upper;WB=LE;XIDC;XIDS
-cp;005A;Alpha;Cased;cf=007A;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;sc=Latn;scf=007A;slc=007A;Upper;WB=LE;XIDC;XIDS
+cp;0041;AHex;Alpha;Cased;cf=0061;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER A;NFKC_CF=0061;NFKC_SCF=0061;SB=UP;sc=Latn;scf=0061;slc=0061;Upper;WB=LE;XIDC;XIDS
+cp;0042;AHex;Alpha;Cased;cf=0062;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;sc=Latn;scf=0062;slc=0062;Upper;WB=LE;XIDC;XIDS
+cp;0043;AHex;Alpha;Cased;cf=0063;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;sc=Latn;scf=0063;slc=0063;Upper;WB=LE;XIDC;XIDS
+cp;0044;AHex;Alpha;Cased;cf=0064;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;sc=Latn;scf=0064;slc=0064;Upper;WB=LE;XIDC;XIDS
+cp;0045;AHex;Alpha;Cased;cf=0065;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;sc=Latn;scf=0065;slc=0065;Upper;WB=LE;XIDC;XIDS
+cp;0046;AHex;Alpha;Cased;cf=0066;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;sc=Latn;scf=0066;slc=0066;Upper;WB=LE;XIDC;XIDS
+cp;0047;Alpha;Cased;cf=0067;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;sc=Latn;scf=0067;slc=0067;Upper;WB=LE;XIDC;XIDS
+cp;0048;Alpha;Cased;cf=0068;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;sc=Latn;scf=0068;slc=0068;Upper;WB=LE;XIDC;XIDS
+cp;0049;Alpha;Cased;cf=0069;Conditional_Case_Mappings=lt More_Above:lc=0069 0307&tc=0049&uc=0049,tr Not_Before_Dot:lc=0131&tc=0049&uc=0049,az Not_Before_Dot:lc=0131&tc=0049&uc=0049;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;sc=Latn;scf=0069;slc=0069;Turkic_Case_Folding=0131;Upper;WB=LE;XIDC;XIDS
+cp;004A;Alpha;Cased;cf=006A;Conditional_Case_Mappings=lt More_Above:lc=006A 0307&tc=004A&uc=004A;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;sc=Latn;scf=006A;slc=006A;Upper;WB=LE;XIDC;XIDS
+cp;004B;Alpha;Cased;cf=006B;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;sc=Latn;scf=006B;slc=006B;Upper;WB=LE;XIDC;XIDS
+cp;004C;Alpha;Cased;cf=006C;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;sc=Latn;scf=006C;slc=006C;Upper;WB=LE;XIDC;XIDS
+cp;004D;Alpha;Cased;cf=006D;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;sc=Latn;scf=006D;slc=006D;Upper;WB=LE;XIDC;XIDS
+cp;004E;Alpha;Cased;cf=006E;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;sc=Latn;scf=006E;slc=006E;Upper;WB=LE;XIDC;XIDS
+cp;004F;Alpha;Cased;cf=006F;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;sc=Latn;scf=006F;slc=006F;Upper;WB=LE;XIDC;XIDS
+cp;0050;Alpha;Cased;cf=0070;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;sc=Latn;scf=0070;slc=0070;Upper;WB=LE;XIDC;XIDS
+cp;0051;Alpha;Cased;cf=0071;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;sc=Latn;scf=0071;slc=0071;Upper;WB=LE;XIDC;XIDS
+cp;0052;Alpha;Cased;cf=0072;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;sc=Latn;scf=0072;slc=0072;Upper;WB=LE;XIDC;XIDS
+cp;0053;Alpha;Cased;cf=0073;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;sc=Latn;scf=0073;slc=0073;Upper;WB=LE;XIDC;XIDS
+cp;0054;Alpha;Cased;cf=0074;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;sc=Latn;scf=0074;slc=0074;Upper;WB=LE;XIDC;XIDS
+cp;0055;Alpha;Cased;cf=0075;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;sc=Latn;scf=0075;slc=0075;Upper;WB=LE;XIDC;XIDS
+cp;0056;Alpha;Cased;cf=0076;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;sc=Latn;scf=0076;slc=0076;Upper;WB=LE;XIDC;XIDS
+cp;0057;Alpha;Cased;cf=0077;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;sc=Latn;scf=0077;slc=0077;Upper;WB=LE;XIDC;XIDS
+cp;0058;Alpha;Cased;cf=0078;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;sc=Latn;scf=0078;slc=0078;Upper;WB=LE;XIDC;XIDS
+cp;0059;Alpha;Cased;cf=0079;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;sc=Latn;scf=0079;slc=0079;Upper;WB=LE;XIDC;XIDS
+cp;005A;Alpha;Cased;cf=007A;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;sc=Latn;scf=007A;slc=007A;Upper;WB=LE;XIDC;XIDS
# ASCII punctuation and symbols
-cp;005B;bc=ON;Bidi_M;bmg=005D;bpb=005D;bpt=o;gc=Ps;lb=OP;na=LEFT SQUARE BRACKET;Pat_Syn;SB=CL
-cp;005C;bc=ON;gc=Po;lb=PR;na=REVERSE SOLIDUS;Pat_Syn
-cp;005D;bc=ON;Bidi_M;bmg=005B;bpb=005B;bpt=c;gc=Pe;lb=CP;na=RIGHT SQUARE BRACKET;Pat_Syn;SB=CL
-cp;005E;bc=ON;CI;Dia;gc=Sk;Math;na=CIRCUMFLEX ACCENT;Pat_Syn
-cp;005F;bc=ON;gc=Pc;IDC;na=LOW LINE;WB=EX;XIDC
-cp;0060;bc=ON;CI;Dia;gc=Sk;na=GRAVE ACCENT;Pat_Syn
+cp;005B;bc=ON;Bidi_M;bmg=005D;bpb=005D;bpt=o;gc=Ps;Identifier_Type=Not_XID;lb=OP;na=LEFT SQUARE BRACKET;Pat_Syn;SB=CL
+cp;005C;bc=ON;gc=Po;Identifier_Type=Not_XID;lb=PR;na=REVERSE SOLIDUS;Pat_Syn
+cp;005D;bc=ON;Bidi_M;bmg=005B;bpb=005B;bpt=c;gc=Pe;Identifier_Type=Not_XID;lb=CP;na=RIGHT SQUARE BRACKET;Pat_Syn;SB=CL
+cp;005E;bc=ON;CI;Dia;gc=Sk;Identifier_Type=Not_XID;Math;na=CIRCUMFLEX ACCENT;Pat_Syn
+cp;005F;bc=ON;gc=Pc;IDC;Identifier_Status=Allowed;na=LOW LINE;WB=EX;XIDC
+cp;0060;bc=ON;CI;Dia;gc=Sk;Identifier_Type=Not_XID;na=GRAVE ACCENT;Pat_Syn
# Lowercase Latin alphabet
-cp;0061;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;IDS;Lower;na=LATIN SMALL LETTER A;SB=LO;sc=Latn;stc=0041;suc=0041;WB=LE;XIDC;XIDS
-cp;0062;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;IDS;Lower;na=LATIN SMALL LETTER B;SB=LO;sc=Latn;stc=0042;suc=0042;WB=LE;XIDC;XIDS
-cp;0063;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;IDS;Lower;na=LATIN SMALL LETTER C;SB=LO;sc=Latn;stc=0043;suc=0043;WB=LE;XIDC;XIDS
-cp;0064;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;IDS;Lower;na=LATIN SMALL LETTER D;SB=LO;sc=Latn;stc=0044;suc=0044;WB=LE;XIDC;XIDS
-cp;0065;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;IDS;Lower;na=LATIN SMALL LETTER E;SB=LO;sc=Latn;stc=0045;suc=0045;WB=LE;XIDC;XIDS
-cp;0066;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;IDS;Lower;na=LATIN SMALL LETTER F;SB=LO;sc=Latn;stc=0046;suc=0046;WB=LE;XIDC;XIDS
-cp;0067;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER G;SB=LO;sc=Latn;stc=0047;suc=0047;WB=LE;XIDC;XIDS
-cp;0068;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER H;SB=LO;sc=Latn;stc=0048;suc=0048;WB=LE;XIDC;XIDS
-cp;0069;Alpha;Cased;Conditional_Case_Mappings=tr:lc=0069&tc=0130&uc=0130,az:lc=0069&tc=0130&uc=0130;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER I;SB=LO;sc=Latn;SD;stc=0049;suc=0049;WB=LE;XIDC;XIDS
-cp;006A;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER J;SB=LO;sc=Latn;SD;stc=004A;suc=004A;WB=LE;XIDC;XIDS
-cp;006B;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER K;SB=LO;sc=Latn;stc=004B;suc=004B;WB=LE;XIDC;XIDS
-cp;006C;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER L;SB=LO;sc=Latn;stc=004C;suc=004C;WB=LE;XIDC;XIDS
-cp;006D;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER M;SB=LO;sc=Latn;stc=004D;suc=004D;WB=LE;XIDC;XIDS
-cp;006E;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER N;SB=LO;sc=Latn;stc=004E;suc=004E;WB=LE;XIDC;XIDS
-cp;006F;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER O;SB=LO;sc=Latn;stc=004F;suc=004F;WB=LE;XIDC;XIDS
-cp;0070;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER P;SB=LO;sc=Latn;stc=0050;suc=0050;WB=LE;XIDC;XIDS
-cp;0071;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER Q;SB=LO;sc=Latn;stc=0051;suc=0051;WB=LE;XIDC;XIDS
-cp;0072;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER R;SB=LO;sc=Latn;stc=0052;suc=0052;WB=LE;XIDC;XIDS
-cp;0073;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER S;SB=LO;sc=Latn;stc=0053;suc=0053;WB=LE;XIDC;XIDS
-cp;0074;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER T;SB=LO;sc=Latn;stc=0054;suc=0054;WB=LE;XIDC;XIDS
-cp;0075;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER U;SB=LO;sc=Latn;stc=0055;suc=0055;WB=LE;XIDC;XIDS
-cp;0076;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER V;SB=LO;sc=Latn;stc=0056;suc=0056;WB=LE;XIDC;XIDS
-cp;0077;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER W;SB=LO;sc=Latn;stc=0057;suc=0057;WB=LE;XIDC;XIDS
-cp;0078;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER X;SB=LO;sc=Latn;stc=0058;suc=0058;WB=LE;XIDC;XIDS
-cp;0079;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER Y;SB=LO;sc=Latn;stc=0059;suc=0059;WB=LE;XIDC;XIDS
-cp;007A;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;IDS;Lower;na=LATIN SMALL LETTER Z;SB=LO;sc=Latn;stc=005A;suc=005A;WB=LE;XIDC;XIDS
+cp;0061;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER A;SB=LO;sc=Latn;stc=0041;suc=0041;WB=LE;XIDC;XIDS
+cp;0062;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER B;SB=LO;sc=Latn;stc=0042;suc=0042;WB=LE;XIDC;XIDS
+cp;0063;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER C;SB=LO;sc=Latn;stc=0043;suc=0043;WB=LE;XIDC;XIDS
+cp;0064;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER D;SB=LO;sc=Latn;stc=0044;suc=0044;WB=LE;XIDC;XIDS
+cp;0065;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER E;SB=LO;sc=Latn;stc=0045;suc=0045;WB=LE;XIDC;XIDS
+cp;0066;AHex;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;Hex;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER F;SB=LO;sc=Latn;stc=0046;suc=0046;WB=LE;XIDC;XIDS
+cp;0067;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER G;SB=LO;sc=Latn;stc=0047;suc=0047;WB=LE;XIDC;XIDS
+cp;0068;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER H;SB=LO;sc=Latn;stc=0048;suc=0048;WB=LE;XIDC;XIDS
+cp;0069;Alpha;Cased;Conditional_Case_Mappings=tr:lc=0069&tc=0130&uc=0130,az:lc=0069&tc=0130&uc=0130;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER I;SB=LO;sc=Latn;SD;stc=0049;suc=0049;WB=LE;XIDC;XIDS
+cp;006A;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER J;SB=LO;sc=Latn;SD;stc=004A;suc=004A;WB=LE;XIDC;XIDS
+cp;006B;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER K;SB=LO;sc=Latn;stc=004B;suc=004B;WB=LE;XIDC;XIDS
+cp;006C;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER L;SB=LO;sc=Latn;stc=004C;suc=004C;WB=LE;XIDC;XIDS
+cp;006D;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER M;SB=LO;sc=Latn;stc=004D;suc=004D;WB=LE;XIDC;XIDS
+cp;006E;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER N;SB=LO;sc=Latn;stc=004E;suc=004E;WB=LE;XIDC;XIDS
+cp;006F;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER O;SB=LO;sc=Latn;stc=004F;suc=004F;WB=LE;XIDC;XIDS
+cp;0070;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER P;SB=LO;sc=Latn;stc=0050;suc=0050;WB=LE;XIDC;XIDS
+cp;0071;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER Q;SB=LO;sc=Latn;stc=0051;suc=0051;WB=LE;XIDC;XIDS
+cp;0072;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER R;SB=LO;sc=Latn;stc=0052;suc=0052;WB=LE;XIDC;XIDS
+cp;0073;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER S;SB=LO;sc=Latn;stc=0053;suc=0053;WB=LE;XIDC;XIDS
+cp;0074;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER T;SB=LO;sc=Latn;stc=0054;suc=0054;WB=LE;XIDC;XIDS
+cp;0075;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER U;SB=LO;sc=Latn;stc=0055;suc=0055;WB=LE;XIDC;XIDS
+cp;0076;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER V;SB=LO;sc=Latn;stc=0056;suc=0056;WB=LE;XIDC;XIDS
+cp;0077;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER W;SB=LO;sc=Latn;stc=0057;suc=0057;WB=LE;XIDC;XIDS
+cp;0078;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER X;SB=LO;sc=Latn;stc=0058;suc=0058;WB=LE;XIDC;XIDS
+cp;0079;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER Y;SB=LO;sc=Latn;stc=0059;suc=0059;WB=LE;XIDC;XIDS
+cp;007A;Alpha;Cased;CWCM;CWT;CWU;gc=Ll;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER Z;SB=LO;sc=Latn;stc=005A;suc=005A;WB=LE;XIDC;XIDS
# ASCII punctuation and symbols
-cp;007B;bc=ON;Bidi_M;bmg=007D;bpb=007D;bpt=o;gc=Ps;lb=OP;na=LEFT CURLY BRACKET;Pat_Syn;SB=CL
-cp;007C;bc=ON;gc=Sm;lb=BA;Math;na=VERTICAL LINE;Pat_Syn
-cp;007D;bc=ON;Bidi_M;bmg=007B;bpb=007B;bpt=c;gc=Pe;lb=CL;na=RIGHT CURLY BRACKET;Pat_Syn;SB=CL
-cp;007E;bc=ON;gc=Sm;Math;na=TILDE;Pat_Syn
+cp;007B;bc=ON;Bidi_M;bmg=007D;bpb=007D;bpt=o;gc=Ps;Identifier_Type=Not_XID;lb=OP;na=LEFT CURLY BRACKET;Pat_Syn;SB=CL
+cp;007C;bc=ON;gc=Sm;Identifier_Type=Not_XID;lb=BA;Math;na=VERTICAL LINE;Pat_Syn
+cp;007D;bc=ON;Bidi_M;bmg=007B;bpb=007B;bpt=c;gc=Pe;Identifier_Type=Not_XID;lb=CL;na=RIGHT CURLY BRACKET;Pat_Syn;SB=CL
+cp;007E;bc=ON;gc=Sm;Identifier_Type=Not_XID;Math;na=TILDE;Pat_Syn
# Control character
-cp;007F;bc=BN;ea=N;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=DELETE,abbreviation=DEL
+cp;007F;bc=BN;ea=N;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=DELETE,abbreviation=DEL
-block;0080..00FF;age=1.1;blk=Latin_1_Sup;gc=Ll;Gr_Base;lb=AL;NFKD_QC=N;sc=Latn;WB=LE
+block;0080..00FF;age=1.1;blk=Latin_1_Sup;gc=Ll;Gr_Base;Identifier_Type=Recommended;lb=AL;NFKD_QC=N;sc=Latn;WB=LE
# 0080..00FF C1 Controls and Latin-1 Supplement (Latin-1 Supplement)
# C1 controls
-cp;0080;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=figment=PADDING CHARACTER,abbreviation=PAD;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0081;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=figment=HIGH OCTET PRESET,abbreviation=HOP;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0082;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=BREAK PERMITTED HERE,abbreviation=BPH;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0083;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=NO BREAK HERE,abbreviation=NBH;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0084;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=INDEX,abbreviation=IND;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0085;bc=B;gc=Cc;GCB=CN;-Gr_Base;lb=NL;Name_Alias=control=NEXT LINE,abbreviation=NEL;NFKD_QC=Y;Pat_WS;SB=SE;sc=Zyyy;WB=NL;WSpace
-cp;0086;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=START OF SELECTED AREA,abbreviation=SSA;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0087;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=END OF SELECTED AREA,abbreviation=ESA;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0088;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=CHARACTER TABULATION SET,control=HORIZONTAL TABULATION SET,abbreviation=HTS;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0089;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=CHARACTER TABULATION WITH JUSTIFICATION,control=HORIZONTAL TABULATION WITH JUSTIFICATION,abbreviation=HTJ;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;008A;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=LINE TABULATION SET,control=VERTICAL TABULATION SET,abbreviation=VTS;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;008B;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=PARTIAL LINE FORWARD,control=PARTIAL LINE DOWN,abbreviation=PLD;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;008C;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=PARTIAL LINE BACKWARD,control=PARTIAL LINE UP,abbreviation=PLU;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;008D;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=REVERSE LINE FEED,control=REVERSE INDEX,abbreviation=RI;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;008E;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=SINGLE SHIFT TWO,control=SINGLE-SHIFT-2,abbreviation=SS2;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;008F;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=SINGLE SHIFT THREE,control=SINGLE-SHIFT-3,abbreviation=SS3;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0090;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=DEVICE CONTROL STRING,abbreviation=DCS;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0091;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=PRIVATE USE ONE,control=PRIVATE USE-1,abbreviation=PU1;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0092;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=PRIVATE USE TWO,control=PRIVATE USE-2,abbreviation=PU2;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0093;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=SET TRANSMIT STATE,abbreviation=STS;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0094;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=CANCEL CHARACTER,abbreviation=CCH;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0095;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=MESSAGE WAITING,abbreviation=MW;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0096;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=START OF GUARDED AREA,control=START OF PROTECTED AREA,abbreviation=SPA;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0097;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=END OF GUARDED AREA,control=END OF PROTECTED AREA,abbreviation=EPA;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0098;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=START OF STRING,abbreviation=SOS;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;0099;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=figment=SINGLE GRAPHIC CHARACTER INTRODUCER,abbreviation=SGC;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;009A;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=SINGLE CHARACTER INTRODUCER,abbreviation=SCI;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;009B;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=CONTROL SEQUENCE INTRODUCER,abbreviation=CSI;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;009C;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=STRING TERMINATOR,abbreviation=ST;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;009D;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=OPERATING SYSTEM COMMAND,abbreviation=OSC;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;009E;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=PRIVACY MESSAGE,abbreviation=PM;NFKD_QC=Y;sc=Zyyy;WB=XX
-cp;009F;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=APPLICATION PROGRAM COMMAND,abbreviation=APC;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0080;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=figment=PADDING CHARACTER,abbreviation=PAD;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0081;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=figment=HIGH OCTET PRESET,abbreviation=HOP;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0082;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=BREAK PERMITTED HERE,abbreviation=BPH;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0083;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=NO BREAK HERE,abbreviation=NBH;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0084;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=INDEX,abbreviation=IND;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0085;bc=B;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_XID;lb=NL;Name_Alias=control=NEXT LINE,abbreviation=NEL;NFKD_QC=Y;Pat_WS;SB=SE;sc=Zyyy;WB=NL;WSpace
+cp;0086;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=START OF SELECTED AREA,abbreviation=SSA;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0087;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=END OF SELECTED AREA,abbreviation=ESA;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0088;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=CHARACTER TABULATION SET,control=HORIZONTAL TABULATION SET,abbreviation=HTS;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0089;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=CHARACTER TABULATION WITH JUSTIFICATION,control=HORIZONTAL TABULATION WITH JUSTIFICATION,abbreviation=HTJ;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;008A;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=LINE TABULATION SET,control=VERTICAL TABULATION SET,abbreviation=VTS;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;008B;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=PARTIAL LINE FORWARD,control=PARTIAL LINE DOWN,abbreviation=PLD;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;008C;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=PARTIAL LINE BACKWARD,control=PARTIAL LINE UP,abbreviation=PLU;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;008D;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=REVERSE LINE FEED,control=REVERSE INDEX,abbreviation=RI;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;008E;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=SINGLE SHIFT TWO,control=SINGLE-SHIFT-2,abbreviation=SS2;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;008F;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=SINGLE SHIFT THREE,control=SINGLE-SHIFT-3,abbreviation=SS3;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0090;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=DEVICE CONTROL STRING,abbreviation=DCS;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0091;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=PRIVATE USE ONE,control=PRIVATE USE-1,abbreviation=PU1;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0092;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=PRIVATE USE TWO,control=PRIVATE USE-2,abbreviation=PU2;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0093;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=SET TRANSMIT STATE,abbreviation=STS;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0094;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=CANCEL CHARACTER,abbreviation=CCH;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0095;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=MESSAGE WAITING,abbreviation=MW;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0096;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=START OF GUARDED AREA,control=START OF PROTECTED AREA,abbreviation=SPA;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0097;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=END OF GUARDED AREA,control=END OF PROTECTED AREA,abbreviation=EPA;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0098;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=START OF STRING,abbreviation=SOS;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;0099;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=figment=SINGLE GRAPHIC CHARACTER INTRODUCER,abbreviation=SGC;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;009A;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=SINGLE CHARACTER INTRODUCER,abbreviation=SCI;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;009B;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=CONTROL SEQUENCE INTRODUCER,abbreviation=CSI;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;009C;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=STRING TERMINATOR,abbreviation=ST;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;009D;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=OPERATING SYSTEM COMMAND,abbreviation=OSC;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;009E;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=PRIVACY MESSAGE,abbreviation=PM;NFKD_QC=Y;sc=Zyyy;WB=XX
+cp;009F;bc=BN;gc=Cc;GCB=CN;-Gr_Base;Identifier_Type=Not_Character;lb=CM;Name_Alias=control=APPLICATION PROGRAM COMMAND,abbreviation=APC;NFKD_QC=Y;sc=Zyyy;WB=XX
# Latin-1 punctuation and symbols
-cp;00A0;bc=CS;CWKCF;dm=0020;dt=Nb;gc=Zs;InSC=Consonant_Placeholder;lb=GL;na=NO-BREAK SPACE;Name_Alias=abbreviation=NBSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;SB=SP;sc=Zyyy;WB=XX;WSpace
-cp;00A1;bc=ON;ea=A;gc=Po;lb=OP;na=INVERTED EXCLAMATION MARK;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00A2;bc=ET;ea=Na;gc=Sc;lb=PO;na=CENT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00A3;bc=ET;ea=Na;gc=Sc;lb=PR;na=POUND SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00A4;bc=ET;ea=A;gc=Sc;lb=PR;na=CURRENCY SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00A5;bc=ET;ea=Na;gc=Sc;lb=PR;na=YEN SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00A6;bc=ON;ea=Na;gc=So;na=BROKEN BAR;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00A7;bc=ON;ea=A;gc=Po;lb=AI;na=SECTION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-cp;00A8;bc=ON;CI;CWKCF;Dia;dm=0020 0308;dt=Com;ea=A;gc=Sk;lb=AI;na=DIAERESIS;NFKC_CF=0020 0308;NFKC_QC=N;NFKC_SCF=0020 0308;sc=Zyyy;WB=XX
-cp;00A9;bc=ON;Emoji;ExtPict;gc=So;na=COPYRIGHT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-cp;00AA;Alpha;Cased;CWKCF;dm=0061;dt=Sup;ea=A;gc=Lo;IDC;IDS;lb=AI;Lower;na=FEMININE ORDINAL INDICATOR;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;SB=LO;XIDC;XIDS
-cp;00AB;bc=ON;Bidi_M;bmg=00BB;gc=Pi;lb=QU;na=LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;NFKD_QC=Y;Pat_Syn;QMark;SB=CL;sc=Zyyy;WB=XX
-cp;00AC;bc=ON;ea=Na;gc=Sm;Math;na=NOT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00AD;bc=BN;CI;CWKCF;DI;ea=A;gc=Cf;GCB=CN;-Gr_Base;Hyphen;jt=T;lb=BA;na=SOFT HYPHEN;Name_Alias=abbreviation=SHY;NFKC_CF=;NFKC_SCF=;NFKD_QC=Y;SB=FO;sc=Zyyy;WB=FO
-cp;00AE;bc=ON;ea=A;Emoji;ExtPict;gc=So;na=REGISTERED SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-cp;00AF;bc=ON;CI;CWKCF;Dia;dm=0020 0304;dt=Com;ea=Na;gc=Sk;na=MACRON;NFKC_CF=0020 0304;NFKC_QC=N;NFKC_SCF=0020 0304;sc=Zyyy;WB=XX
-cp;00B0;bc=ET;ea=A;gc=So;lb=PO;na=DEGREE SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00B1;bc=ET;ea=A;gc=Sm;lb=PR;Math;na=PLUS-MINUS SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-cp;00B2;bc=EN;CWKCF;dm=0032;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT TWO;NFKC_CF=0032;NFKC_QC=N;NFKC_SCF=0032;nt=Di;nv=2;sc=Zyyy;WB=XX
-cp;00B3;bc=EN;CWKCF;dm=0033;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT THREE;NFKC_CF=0033;NFKC_QC=N;NFKC_SCF=0033;nt=Di;nv=3;sc=Zyyy;WB=XX
-cp;00B4;bc=ON;CI;CWKCF;Dia;dm=0020 0301;dt=Com;ea=A;gc=Sk;lb=BB;na=ACUTE ACCENT;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;sc=Zyyy;WB=XX
-cp;00B5;Alpha;Cased;cf=03BC;CWCF;CWCM;CWKCF;CWT;CWU;dm=03BC;dt=Com;IDC;IDS;Lower;na=MICRO SIGN;NFKC_CF=03BC;NFKC_QC=N;NFKC_SCF=03BC;SB=LO;sc=Zyyy;scf=03BC;stc=039C;suc=039C;XIDC;XIDS
-cp;00B6;bc=ON;ea=A;gc=Po;lb=AI;na=PILCROW SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00B7;bc=ON;CI;Dia;ea=A;Ext;gc=Po;IDC;lb=AI;na=MIDDLE DOT;NFKD_QC=Y;sc=Zyyy;WB=ML;XIDC
-cp;00B8;bc=ON;CI;CWKCF;Dia;dm=0020 0327;dt=Com;ea=A;gc=Sk;lb=AI;na=CEDILLA;NFKC_CF=0020 0327;NFKC_QC=N;NFKC_SCF=0020 0327;sc=Zyyy;WB=XX
-cp;00B9;bc=EN;CWKCF;dm=0031;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;lb=AI;na=SUPERSCRIPT ONE;NFKC_CF=0031;NFKC_QC=N;NFKC_SCF=0031;nt=Di;nv=1;sc=Zyyy;WB=XX
-cp;00BA;Alpha;Cased;CWKCF;dm=006F;dt=Sup;ea=A;gc=Lo;IDC;IDS;lb=AI;Lower;na=MASCULINE ORDINAL INDICATOR;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;SB=LO;XIDC;XIDS
-cp;00BB;bc=ON;Bidi_M;bmg=00AB;gc=Pf;lb=QU;na=RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;NFKD_QC=Y;Pat_Syn;QMark;SB=CL;sc=Zyyy;WB=XX
+cp;00A0;bc=CS;CWKCF;dm=0020;dt=Nb;gc=Zs;Identifier_Type=Not_NFKC;InSC=Consonant_Placeholder;lb=GL;na=NO-BREAK SPACE;Name_Alias=abbreviation=NBSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;SB=SP;sc=Zyyy;WB=XX;WSpace
+cp;00A1;bc=ON;ea=A;gc=Po;Identifier_Type=Not_XID;lb=OP;na=INVERTED EXCLAMATION MARK;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00A2;bc=ET;ea=Na;gc=Sc;Identifier_Type=Not_XID;lb=PO;na=CENT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00A3;bc=ET;ea=Na;gc=Sc;Identifier_Type=Not_XID;lb=PR;na=POUND SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00A4;bc=ET;ea=A;gc=Sc;Identifier_Type=Not_XID;lb=PR;na=CURRENCY SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00A5;bc=ET;ea=Na;gc=Sc;Identifier_Type=Not_XID;lb=PR;na=YEN SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00A6;bc=ON;ea=Na;gc=So;Identifier_Type=Not_XID;na=BROKEN BAR;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00A7;bc=ON;ea=A;gc=Po;Identifier_Type=Not_XID;lb=AI;na=SECTION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
+cp;00A8;bc=ON;CI;CWKCF;Dia;dm=0020 0308;dt=Com;ea=A;gc=Sk;Identifier_Type=Not_NFKC;lb=AI;na=DIAERESIS;NFKC_CF=0020 0308;NFKC_QC=N;NFKC_SCF=0020 0308;sc=Zyyy;WB=XX
+cp;00A9;bc=ON;Emoji;ExtPict;gc=So;Identifier_Type=Not_XID;na=COPYRIGHT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
+cp;00AA;Alpha;Cased;CWKCF;dm=0061;dt=Sup;ea=A;gc=Lo;IDC;Identifier_Type=Not_NFKC;IDS;lb=AI;Lower;na=FEMININE ORDINAL INDICATOR;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;SB=LO;XIDC;XIDS
+cp;00AB;bc=ON;Bidi_M;bmg=00BB;gc=Pi;Identifier_Type=Not_XID;lb=QU;na=LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;NFKD_QC=Y;Pat_Syn;QMark;SB=CL;sc=Zyyy;WB=XX
+cp;00AC;bc=ON;ea=Na;gc=Sm;Identifier_Type=Not_XID;Math;na=NOT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00AD;bc=BN;CI;CWKCF;DI;ea=A;gc=Cf;GCB=CN;-Gr_Base;Hyphen;Identifier_Type=Default_Ignorable;jt=T;lb=BA;na=SOFT HYPHEN;Name_Alias=abbreviation=SHY;NFKC_CF=;NFKC_SCF=;NFKD_QC=Y;SB=FO;sc=Zyyy;WB=FO
+cp;00AE;bc=ON;ea=A;Emoji;ExtPict;gc=So;Identifier_Type=Not_XID;na=REGISTERED SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
+cp;00AF;bc=ON;CI;CWKCF;Dia;dm=0020 0304;dt=Com;ea=Na;gc=Sk;Identifier_Type=Not_NFKC;na=MACRON;NFKC_CF=0020 0304;NFKC_QC=N;NFKC_SCF=0020 0304;sc=Zyyy;WB=XX
+cp;00B0;bc=ET;ea=A;gc=So;Identifier_Type=Not_XID;lb=PO;na=DEGREE SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00B1;bc=ET;ea=A;gc=Sm;Identifier_Type=Not_XID;lb=PR;Math;na=PLUS-MINUS SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
+cp;00B2;bc=EN;CWKCF;dm=0032;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;Identifier_Type=Not_NFKC;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT TWO;NFKC_CF=0032;NFKC_QC=N;NFKC_SCF=0032;nt=Di;nv=2;sc=Zyyy;WB=XX
+cp;00B3;bc=EN;CWKCF;dm=0033;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;Identifier_Type=Not_NFKC;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT THREE;NFKC_CF=0033;NFKC_QC=N;NFKC_SCF=0033;nt=Di;nv=3;sc=Zyyy;WB=XX
+cp;00B4;bc=ON;CI;CWKCF;Dia;dm=0020 0301;dt=Com;ea=A;gc=Sk;Identifier_Type=Not_NFKC;lb=BB;na=ACUTE ACCENT;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;sc=Zyyy;WB=XX
+cp;00B5;Alpha;Cased;cf=03BC;CWCF;CWCM;CWKCF;CWT;CWU;dm=03BC;dt=Com;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MICRO SIGN;NFKC_CF=03BC;NFKC_QC=N;NFKC_SCF=03BC;SB=LO;sc=Zyyy;scf=03BC;stc=039C;suc=039C;XIDC;XIDS
+cp;00B6;bc=ON;ea=A;gc=Po;Identifier_Type=Not_XID;lb=AI;na=PILCROW SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00B7;bc=ON;CI;Dia;ea=A;Ext;gc=Po;IDC;Identifier_Status=Allowed;Identifier_Type=Inclusion;lb=AI;na=MIDDLE DOT;NFKD_QC=Y;sc=Zyyy;WB=ML;XIDC
+cp;00B8;bc=ON;CI;CWKCF;Dia;dm=0020 0327;dt=Com;ea=A;gc=Sk;Identifier_Type=Not_NFKC;lb=AI;na=CEDILLA;NFKC_CF=0020 0327;NFKC_QC=N;NFKC_SCF=0020 0327;sc=Zyyy;WB=XX
+cp;00B9;bc=EN;CWKCF;dm=0031;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;Identifier_Type=Not_NFKC;lb=AI;na=SUPERSCRIPT ONE;NFKC_CF=0031;NFKC_QC=N;NFKC_SCF=0031;nt=Di;nv=1;sc=Zyyy;WB=XX
+cp;00BA;Alpha;Cased;CWKCF;dm=006F;dt=Sup;ea=A;gc=Lo;IDC;Identifier_Type=Not_NFKC;IDS;lb=AI;Lower;na=MASCULINE ORDINAL INDICATOR;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;SB=LO;XIDC;XIDS
+cp;00BB;bc=ON;Bidi_M;bmg=00AB;gc=Pf;Identifier_Type=Not_XID;lb=QU;na=RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;NFKD_QC=Y;Pat_Syn;QMark;SB=CL;sc=Zyyy;WB=XX
# Vulgar fractions
-cp;00BC;bc=ON;CWKCF;dm=0031 2044 0034;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION ONE QUARTER;NFKC_CF=0031 2044 0034;NFKC_QC=N;NFKC_SCF=0031 2044 0034;nt=Nu;nv=1/4;sc=Zyyy;vo=U;WB=XX
-cp;00BD;bc=ON;CWKCF;dm=0031 2044 0032;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION ONE HALF;NFKC_CF=0031 2044 0032;NFKC_QC=N;NFKC_SCF=0031 2044 0032;nt=Nu;nv=1/2;sc=Zyyy;vo=U;WB=XX
-cp;00BE;bc=ON;CWKCF;dm=0033 2044 0034;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION THREE QUARTERS;NFKC_CF=0033 2044 0034;NFKC_QC=N;NFKC_SCF=0033 2044 0034;nt=Nu;nv=3/4;sc=Zyyy;vo=U;WB=XX
+cp;00BC;bc=ON;CWKCF;dm=0031 2044 0034;dt=Fra;ea=A;gc=No;Identifier_Type=Not_NFKC;lb=AI;na=VULGAR FRACTION ONE QUARTER;NFKC_CF=0031 2044 0034;NFKC_QC=N;NFKC_SCF=0031 2044 0034;nt=Nu;nv=1/4;sc=Zyyy;vo=U;WB=XX
+cp;00BD;bc=ON;CWKCF;dm=0031 2044 0032;dt=Fra;ea=A;gc=No;Identifier_Type=Not_NFKC;lb=AI;na=VULGAR FRACTION ONE HALF;NFKC_CF=0031 2044 0032;NFKC_QC=N;NFKC_SCF=0031 2044 0032;nt=Nu;nv=1/2;sc=Zyyy;vo=U;WB=XX
+cp;00BE;bc=ON;CWKCF;dm=0033 2044 0034;dt=Fra;ea=A;gc=No;Identifier_Type=Not_NFKC;lb=AI;na=VULGAR FRACTION THREE QUARTERS;NFKC_CF=0033 2044 0034;NFKC_QC=N;NFKC_SCF=0033 2044 0034;nt=Nu;nv=3/4;sc=Zyyy;vo=U;WB=XX
# Punctuation
-cp;00BF;bc=ON;ea=A;gc=Po;lb=OP;na=INVERTED QUESTION MARK;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
+cp;00BF;bc=ON;ea=A;gc=Po;Identifier_Type=Not_XID;lb=OP;na=INVERTED QUESTION MARK;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
# Uppercase letters
-cp;00C0;Alpha;Cased;cf=00E0;CWCF;CWCM;CWKCF;CWL;dm=0041 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH GRAVE;NFD_QC=N;NFKC_CF=00E0;NFKC_SCF=00E0;SB=UP;scf=00E0;slc=00E0;Upper;XIDC;XIDS
-cp;00C1;Alpha;Cased;cf=00E1;CWCF;CWCM;CWKCF;CWL;dm=0041 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH ACUTE;NFD_QC=N;NFKC_CF=00E1;NFKC_SCF=00E1;SB=UP;scf=00E1;slc=00E1;Upper;XIDC;XIDS
-cp;00C2;Alpha;Cased;cf=00E2;CWCF;CWCM;CWKCF;CWL;dm=0041 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00E2;NFKC_SCF=00E2;SB=UP;scf=00E2;slc=00E2;Upper;XIDC;XIDS
-cp;00C3;Alpha;Cased;cf=00E3;CWCF;CWCM;CWKCF;CWL;dm=0041 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH TILDE;NFD_QC=N;NFKC_CF=00E3;NFKC_SCF=00E3;SB=UP;scf=00E3;slc=00E3;Upper;XIDC;XIDS
-cp;00C4;Alpha;Cased;cf=00E4;CWCF;CWCM;CWKCF;CWL;dm=0041 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH DIAERESIS;NFD_QC=N;NFKC_CF=00E4;NFKC_SCF=00E4;SB=UP;scf=00E4;slc=00E4;Upper;XIDC;XIDS
-cp;00C5;Alpha;Cased;cf=00E5;CWCF;CWCM;CWKCF;CWL;dm=0041 030A;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH RING ABOVE;NFD_QC=N;NFKC_CF=00E5;NFKC_SCF=00E5;SB=UP;scf=00E5;slc=00E5;Upper;XIDC;XIDS
-cp;00C6;Alpha;Cased;cf=00E6;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER AE;NFKC_CF=00E6;NFKC_SCF=00E6;NFKD_QC=Y;SB=UP;scf=00E6;slc=00E6;Upper;XIDC;XIDS
-cp;00C7;Alpha;Cased;cf=00E7;CWCF;CWCM;CWKCF;CWL;dm=0043 0327;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER C WITH CEDILLA;NFD_QC=N;NFKC_CF=00E7;NFKC_SCF=00E7;SB=UP;scf=00E7;slc=00E7;Upper;XIDC;XIDS
-cp;00C8;Alpha;Cased;cf=00E8;CWCF;CWCM;CWKCF;CWL;dm=0045 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH GRAVE;NFD_QC=N;NFKC_CF=00E8;NFKC_SCF=00E8;SB=UP;scf=00E8;slc=00E8;Upper;XIDC;XIDS
-cp;00C9;Alpha;Cased;cf=00E9;CWCF;CWCM;CWKCF;CWL;dm=0045 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH ACUTE;NFD_QC=N;NFKC_CF=00E9;NFKC_SCF=00E9;SB=UP;scf=00E9;slc=00E9;Upper;XIDC;XIDS
-cp;00CA;Alpha;Cased;cf=00EA;CWCF;CWCM;CWKCF;CWL;dm=0045 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00EA;NFKC_SCF=00EA;SB=UP;scf=00EA;slc=00EA;Upper;XIDC;XIDS
-cp;00CB;Alpha;Cased;cf=00EB;CWCF;CWCM;CWKCF;CWL;dm=0045 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH DIAERESIS;NFD_QC=N;NFKC_CF=00EB;NFKC_SCF=00EB;SB=UP;scf=00EB;slc=00EB;Upper;XIDC;XIDS
-cp;00CC;Alpha;Cased;cf=00EC;Conditional_Case_Mappings=lt:lc=0069 0307 0300&tc=00CC&uc=00CC;CWCF;CWCM;CWKCF;CWL;dm=0049 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH GRAVE;NFD_QC=N;NFKC_CF=00EC;NFKC_SCF=00EC;SB=UP;scf=00EC;slc=00EC;Upper;XIDC;XIDS
-cp;00CD;Alpha;Cased;cf=00ED;Conditional_Case_Mappings=lt:lc=0069 0307 0301&tc=00CD&uc=00CD;CWCF;CWCM;CWKCF;CWL;dm=0049 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH ACUTE;NFD_QC=N;NFKC_CF=00ED;NFKC_SCF=00ED;SB=UP;scf=00ED;slc=00ED;Upper;XIDC;XIDS
-cp;00CE;Alpha;Cased;cf=00EE;CWCF;CWCM;CWKCF;CWL;dm=0049 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00EE;NFKC_SCF=00EE;SB=UP;scf=00EE;slc=00EE;Upper;XIDC;XIDS
-cp;00CF;Alpha;Cased;cf=00EF;CWCF;CWCM;CWKCF;CWL;dm=0049 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH DIAERESIS;NFD_QC=N;NFKC_CF=00EF;NFKC_SCF=00EF;SB=UP;scf=00EF;slc=00EF;Upper;XIDC;XIDS
-cp;00D0;Alpha;Cased;cf=00F0;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER ETH;NFKC_CF=00F0;NFKC_SCF=00F0;NFKD_QC=Y;SB=UP;scf=00F0;slc=00F0;Upper;XIDC;XIDS
-cp;00D1;Alpha;Cased;cf=00F1;CWCF;CWCM;CWKCF;CWL;dm=004E 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER N WITH TILDE;NFD_QC=N;NFKC_CF=00F1;NFKC_SCF=00F1;SB=UP;scf=00F1;slc=00F1;Upper;XIDC;XIDS
-cp;00D2;Alpha;Cased;cf=00F2;CWCF;CWCM;CWKCF;CWL;dm=004F 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH GRAVE;NFD_QC=N;NFKC_CF=00F2;NFKC_SCF=00F2;SB=UP;scf=00F2;slc=00F2;Upper;XIDC;XIDS
-cp;00D3;Alpha;Cased;cf=00F3;CWCF;CWCM;CWKCF;CWL;dm=004F 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH ACUTE;NFD_QC=N;NFKC_CF=00F3;NFKC_SCF=00F3;SB=UP;scf=00F3;slc=00F3;Upper;XIDC;XIDS
-cp;00D4;Alpha;Cased;cf=00F4;CWCF;CWCM;CWKCF;CWL;dm=004F 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00F4;NFKC_SCF=00F4;SB=UP;scf=00F4;slc=00F4;Upper;XIDC;XIDS
-cp;00D5;Alpha;Cased;cf=00F5;CWCF;CWCM;CWKCF;CWL;dm=004F 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH TILDE;NFD_QC=N;NFKC_CF=00F5;NFKC_SCF=00F5;SB=UP;scf=00F5;slc=00F5;Upper;XIDC;XIDS
-cp;00D6;Alpha;Cased;cf=00F6;CWCF;CWCM;CWKCF;CWL;dm=004F 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH DIAERESIS;NFD_QC=N;NFKC_CF=00F6;NFKC_SCF=00F6;SB=UP;scf=00F6;slc=00F6;Upper;XIDC;XIDS
+cp;00C0;Alpha;Cased;cf=00E0;CWCF;CWCM;CWKCF;CWL;dm=0041 0300;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER A WITH GRAVE;NFD_QC=N;NFKC_CF=00E0;NFKC_SCF=00E0;SB=UP;scf=00E0;slc=00E0;Upper;XIDC;XIDS
+cp;00C1;Alpha;Cased;cf=00E1;CWCF;CWCM;CWKCF;CWL;dm=0041 0301;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER A WITH ACUTE;NFD_QC=N;NFKC_CF=00E1;NFKC_SCF=00E1;SB=UP;scf=00E1;slc=00E1;Upper;XIDC;XIDS
+cp;00C2;Alpha;Cased;cf=00E2;CWCF;CWCM;CWKCF;CWL;dm=0041 0302;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00E2;NFKC_SCF=00E2;SB=UP;scf=00E2;slc=00E2;Upper;XIDC;XIDS
+cp;00C3;Alpha;Cased;cf=00E3;CWCF;CWCM;CWKCF;CWL;dm=0041 0303;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER A WITH TILDE;NFD_QC=N;NFKC_CF=00E3;NFKC_SCF=00E3;SB=UP;scf=00E3;slc=00E3;Upper;XIDC;XIDS
+cp;00C4;Alpha;Cased;cf=00E4;CWCF;CWCM;CWKCF;CWL;dm=0041 0308;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER A WITH DIAERESIS;NFD_QC=N;NFKC_CF=00E4;NFKC_SCF=00E4;SB=UP;scf=00E4;slc=00E4;Upper;XIDC;XIDS
+cp;00C5;Alpha;Cased;cf=00E5;CWCF;CWCM;CWKCF;CWL;dm=0041 030A;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER A WITH RING ABOVE;NFD_QC=N;NFKC_CF=00E5;NFKC_SCF=00E5;SB=UP;scf=00E5;slc=00E5;Upper;XIDC;XIDS
+cp;00C6;Alpha;Cased;cf=00E6;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER AE;NFKC_CF=00E6;NFKC_SCF=00E6;NFKD_QC=Y;SB=UP;scf=00E6;slc=00E6;Upper;XIDC;XIDS
+cp;00C7;Alpha;Cased;cf=00E7;CWCF;CWCM;CWKCF;CWL;dm=0043 0327;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER C WITH CEDILLA;NFD_QC=N;NFKC_CF=00E7;NFKC_SCF=00E7;SB=UP;scf=00E7;slc=00E7;Upper;XIDC;XIDS
+cp;00C8;Alpha;Cased;cf=00E8;CWCF;CWCM;CWKCF;CWL;dm=0045 0300;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER E WITH GRAVE;NFD_QC=N;NFKC_CF=00E8;NFKC_SCF=00E8;SB=UP;scf=00E8;slc=00E8;Upper;XIDC;XIDS
+cp;00C9;Alpha;Cased;cf=00E9;CWCF;CWCM;CWKCF;CWL;dm=0045 0301;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER E WITH ACUTE;NFD_QC=N;NFKC_CF=00E9;NFKC_SCF=00E9;SB=UP;scf=00E9;slc=00E9;Upper;XIDC;XIDS
+cp;00CA;Alpha;Cased;cf=00EA;CWCF;CWCM;CWKCF;CWL;dm=0045 0302;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00EA;NFKC_SCF=00EA;SB=UP;scf=00EA;slc=00EA;Upper;XIDC;XIDS
+cp;00CB;Alpha;Cased;cf=00EB;CWCF;CWCM;CWKCF;CWL;dm=0045 0308;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER E WITH DIAERESIS;NFD_QC=N;NFKC_CF=00EB;NFKC_SCF=00EB;SB=UP;scf=00EB;slc=00EB;Upper;XIDC;XIDS
+cp;00CC;Alpha;Cased;cf=00EC;Conditional_Case_Mappings=lt:lc=0069 0307 0300&tc=00CC&uc=00CC;CWCF;CWCM;CWKCF;CWL;dm=0049 0300;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER I WITH GRAVE;NFD_QC=N;NFKC_CF=00EC;NFKC_SCF=00EC;SB=UP;scf=00EC;slc=00EC;Upper;XIDC;XIDS
+cp;00CD;Alpha;Cased;cf=00ED;Conditional_Case_Mappings=lt:lc=0069 0307 0301&tc=00CD&uc=00CD;CWCF;CWCM;CWKCF;CWL;dm=0049 0301;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER I WITH ACUTE;NFD_QC=N;NFKC_CF=00ED;NFKC_SCF=00ED;SB=UP;scf=00ED;slc=00ED;Upper;XIDC;XIDS
+cp;00CE;Alpha;Cased;cf=00EE;CWCF;CWCM;CWKCF;CWL;dm=0049 0302;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER I WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00EE;NFKC_SCF=00EE;SB=UP;scf=00EE;slc=00EE;Upper;XIDC;XIDS
+cp;00CF;Alpha;Cased;cf=00EF;CWCF;CWCM;CWKCF;CWL;dm=0049 0308;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER I WITH DIAERESIS;NFD_QC=N;NFKC_CF=00EF;NFKC_SCF=00EF;SB=UP;scf=00EF;slc=00EF;Upper;XIDC;XIDS
+cp;00D0;Alpha;Cased;cf=00F0;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER ETH;NFKC_CF=00F0;NFKC_SCF=00F0;NFKD_QC=Y;SB=UP;scf=00F0;slc=00F0;Upper;XIDC;XIDS
+cp;00D1;Alpha;Cased;cf=00F1;CWCF;CWCM;CWKCF;CWL;dm=004E 0303;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER N WITH TILDE;NFD_QC=N;NFKC_CF=00F1;NFKC_SCF=00F1;SB=UP;scf=00F1;slc=00F1;Upper;XIDC;XIDS
+cp;00D2;Alpha;Cased;cf=00F2;CWCF;CWCM;CWKCF;CWL;dm=004F 0300;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER O WITH GRAVE;NFD_QC=N;NFKC_CF=00F2;NFKC_SCF=00F2;SB=UP;scf=00F2;slc=00F2;Upper;XIDC;XIDS
+cp;00D3;Alpha;Cased;cf=00F3;CWCF;CWCM;CWKCF;CWL;dm=004F 0301;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER O WITH ACUTE;NFD_QC=N;NFKC_CF=00F3;NFKC_SCF=00F3;SB=UP;scf=00F3;slc=00F3;Upper;XIDC;XIDS
+cp;00D4;Alpha;Cased;cf=00F4;CWCF;CWCM;CWKCF;CWL;dm=004F 0302;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00F4;NFKC_SCF=00F4;SB=UP;scf=00F4;slc=00F4;Upper;XIDC;XIDS
+cp;00D5;Alpha;Cased;cf=00F5;CWCF;CWCM;CWKCF;CWL;dm=004F 0303;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER O WITH TILDE;NFD_QC=N;NFKC_CF=00F5;NFKC_SCF=00F5;SB=UP;scf=00F5;slc=00F5;Upper;XIDC;XIDS
+cp;00D6;Alpha;Cased;cf=00F6;CWCF;CWCM;CWKCF;CWL;dm=004F 0308;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER O WITH DIAERESIS;NFD_QC=N;NFKC_CF=00F6;NFKC_SCF=00F6;SB=UP;scf=00F6;slc=00F6;Upper;XIDC;XIDS
# Mathematical operator
-cp;00D7;bc=ON;ea=A;gc=Sm;InSC=Consonant_Placeholder;lb=AI;Math;na=MULTIPLICATION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
+cp;00D7;bc=ON;ea=A;gc=Sm;Identifier_Type=Not_XID;InSC=Consonant_Placeholder;lb=AI;Math;na=MULTIPLICATION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
# Uppercase letters
-cp;00D8;Alpha;Cased;cf=00F8;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH STROKE;NFKC_CF=00F8;NFKC_SCF=00F8;NFKD_QC=Y;SB=UP;scf=00F8;slc=00F8;Upper;XIDC;XIDS
-cp;00D9;Alpha;Cased;cf=00F9;CWCF;CWCM;CWKCF;CWL;dm=0055 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH GRAVE;NFD_QC=N;NFKC_CF=00F9;NFKC_SCF=00F9;SB=UP;scf=00F9;slc=00F9;Upper;XIDC;XIDS
-cp;00DA;Alpha;Cased;cf=00FA;CWCF;CWCM;CWKCF;CWL;dm=0055 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH ACUTE;NFD_QC=N;NFKC_CF=00FA;NFKC_SCF=00FA;SB=UP;scf=00FA;slc=00FA;Upper;XIDC;XIDS
-cp;00DB;Alpha;Cased;cf=00FB;CWCF;CWCM;CWKCF;CWL;dm=0055 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00FB;NFKC_SCF=00FB;SB=UP;scf=00FB;slc=00FB;Upper;XIDC;XIDS
-cp;00DC;Alpha;Cased;cf=00FC;CWCF;CWCM;CWKCF;CWL;dm=0055 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH DIAERESIS;NFD_QC=N;NFKC_CF=00FC;NFKC_SCF=00FC;SB=UP;scf=00FC;slc=00FC;Upper;XIDC;XIDS
-cp;00DD;Alpha;Cased;cf=00FD;CWCF;CWCM;CWKCF;CWL;dm=0059 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Y WITH ACUTE;NFD_QC=N;NFKC_CF=00FD;NFKC_SCF=00FD;SB=UP;scf=00FD;slc=00FD;Upper;XIDC;XIDS
-cp;00DE;Alpha;Cased;cf=00FE;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER THORN;NFKC_CF=00FE;NFKC_SCF=00FE;NFKD_QC=Y;SB=UP;scf=00FE;slc=00FE;Upper;XIDC;XIDS
+cp;00D8;Alpha;Cased;cf=00F8;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER O WITH STROKE;NFKC_CF=00F8;NFKC_SCF=00F8;NFKD_QC=Y;SB=UP;scf=00F8;slc=00F8;Upper;XIDC;XIDS
+cp;00D9;Alpha;Cased;cf=00F9;CWCF;CWCM;CWKCF;CWL;dm=0055 0300;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER U WITH GRAVE;NFD_QC=N;NFKC_CF=00F9;NFKC_SCF=00F9;SB=UP;scf=00F9;slc=00F9;Upper;XIDC;XIDS
+cp;00DA;Alpha;Cased;cf=00FA;CWCF;CWCM;CWKCF;CWL;dm=0055 0301;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER U WITH ACUTE;NFD_QC=N;NFKC_CF=00FA;NFKC_SCF=00FA;SB=UP;scf=00FA;slc=00FA;Upper;XIDC;XIDS
+cp;00DB;Alpha;Cased;cf=00FB;CWCF;CWCM;CWKCF;CWL;dm=0055 0302;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER U WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00FB;NFKC_SCF=00FB;SB=UP;scf=00FB;slc=00FB;Upper;XIDC;XIDS
+cp;00DC;Alpha;Cased;cf=00FC;CWCF;CWCM;CWKCF;CWL;dm=0055 0308;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER U WITH DIAERESIS;NFD_QC=N;NFKC_CF=00FC;NFKC_SCF=00FC;SB=UP;scf=00FC;slc=00FC;Upper;XIDC;XIDS
+cp;00DD;Alpha;Cased;cf=00FD;CWCF;CWCM;CWKCF;CWL;dm=0059 0301;dt=Can;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER Y WITH ACUTE;NFD_QC=N;NFKC_CF=00FD;NFKC_SCF=00FD;SB=UP;scf=00FD;slc=00FD;Upper;XIDC;XIDS
+cp;00DE;Alpha;Cased;cf=00FE;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;Identifier_Status=Allowed;IDS;na=LATIN CAPITAL LETTER THORN;NFKC_CF=00FE;NFKC_SCF=00FE;NFKD_QC=Y;SB=UP;scf=00FE;slc=00FE;Upper;XIDC;XIDS
# Lowercase letters
-cp;00DF;Alpha;Cased;cf=0073 0073;CWCF;CWCM;CWKCF;CWT;CWU;ea=A;IDC;IDS;lc=00DF;Lower;na=LATIN SMALL LETTER SHARP S;NFKC_CF=0073 0073;NFKD_QC=Y;SB=LO;tc=0053 0073;uc=0053 0053;XIDC;XIDS
-cp;00E0;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0300;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER A WITH GRAVE;NFD_QC=N;SB=LO;stc=00C0;suc=00C0;XIDC;XIDS
-cp;00E1;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0301;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER A WITH ACUTE;NFD_QC=N;SB=LO;stc=00C1;suc=00C1;XIDC;XIDS
-cp;00E2;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0302;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER A WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00C2;suc=00C2;XIDC;XIDS
-cp;00E3;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0303;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER A WITH TILDE;NFD_QC=N;SB=LO;stc=00C3;suc=00C3;XIDC;XIDS
-cp;00E4;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0308;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER A WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00C4;suc=00C4;XIDC;XIDS
-cp;00E5;Alpha;Cased;CWCM;CWT;CWU;dm=0061 030A;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER A WITH RING ABOVE;NFD_QC=N;SB=LO;stc=00C5;suc=00C5;XIDC;XIDS
-cp;00E6;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER AE;NFKD_QC=Y;SB=LO;stc=00C6;suc=00C6;XIDC;XIDS
-cp;00E7;Alpha;Cased;CWCM;CWT;CWU;dm=0063 0327;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER C WITH CEDILLA;NFD_QC=N;SB=LO;stc=00C7;suc=00C7;XIDC;XIDS
-cp;00E8;Alpha;Cased;CWCM;CWT;CWU;dm=0065 0300;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER E WITH GRAVE;NFD_QC=N;SB=LO;stc=00C8;suc=00C8;XIDC;XIDS
-cp;00E9;Alpha;Cased;CWCM;CWT;CWU;dm=0065 0301;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER E WITH ACUTE;NFD_QC=N;SB=LO;stc=00C9;suc=00C9;XIDC;XIDS
-cp;00EA;Alpha;Cased;CWCM;CWT;CWU;dm=0065 0302;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER E WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00CA;suc=00CA;XIDC;XIDS
-cp;00EB;Alpha;Cased;CWCM;CWT;CWU;dm=0065 0308;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER E WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00CB;suc=00CB;XIDC;XIDS
-cp;00EC;Alpha;Cased;CWCM;CWT;CWU;dm=0069 0300;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER I WITH GRAVE;NFD_QC=N;SB=LO;stc=00CC;suc=00CC;XIDC;XIDS
-cp;00ED;Alpha;Cased;CWCM;CWT;CWU;dm=0069 0301;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER I WITH ACUTE;NFD_QC=N;SB=LO;stc=00CD;suc=00CD;XIDC;XIDS
-cp;00EE;Alpha;Cased;CWCM;CWT;CWU;dm=0069 0302;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER I WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00CE;suc=00CE;XIDC;XIDS
-cp;00EF;Alpha;Cased;CWCM;CWT;CWU;dm=0069 0308;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER I WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00CF;suc=00CF;XIDC;XIDS
-cp;00F0;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER ETH;NFKD_QC=Y;SB=LO;stc=00D0;suc=00D0;XIDC;XIDS
-cp;00F1;Alpha;Cased;CWCM;CWT;CWU;dm=006E 0303;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER N WITH TILDE;NFD_QC=N;SB=LO;stc=00D1;suc=00D1;XIDC;XIDS
-cp;00F2;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0300;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER O WITH GRAVE;NFD_QC=N;SB=LO;stc=00D2;suc=00D2;XIDC;XIDS
-cp;00F3;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0301;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER O WITH ACUTE;NFD_QC=N;SB=LO;stc=00D3;suc=00D3;XIDC;XIDS
-cp;00F4;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0302;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER O WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00D4;suc=00D4;XIDC;XIDS
-cp;00F5;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0303;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER O WITH TILDE;NFD_QC=N;SB=LO;stc=00D5;suc=00D5;XIDC;XIDS
-cp;00F6;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0308;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER O WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00D6;suc=00D6;XIDC;XIDS
+cp;00DF;Alpha;Cased;cf=0073 0073;CWCF;CWCM;CWKCF;CWT;CWU;ea=A;IDC;Identifier_Status=Allowed;IDS;lc=00DF;Lower;na=LATIN SMALL LETTER SHARP S;NFKC_CF=0073 0073;NFKD_QC=Y;SB=LO;tc=0053 0073;uc=0053 0053;XIDC;XIDS
+cp;00E0;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0300;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER A WITH GRAVE;NFD_QC=N;SB=LO;stc=00C0;suc=00C0;XIDC;XIDS
+cp;00E1;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0301;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER A WITH ACUTE;NFD_QC=N;SB=LO;stc=00C1;suc=00C1;XIDC;XIDS
+cp;00E2;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0302;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER A WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00C2;suc=00C2;XIDC;XIDS
+cp;00E3;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0303;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER A WITH TILDE;NFD_QC=N;SB=LO;stc=00C3;suc=00C3;XIDC;XIDS
+cp;00E4;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0308;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER A WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00C4;suc=00C4;XIDC;XIDS
+cp;00E5;Alpha;Cased;CWCM;CWT;CWU;dm=0061 030A;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER A WITH RING ABOVE;NFD_QC=N;SB=LO;stc=00C5;suc=00C5;XIDC;XIDS
+cp;00E6;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER AE;NFKD_QC=Y;SB=LO;stc=00C6;suc=00C6;XIDC;XIDS
+cp;00E7;Alpha;Cased;CWCM;CWT;CWU;dm=0063 0327;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER C WITH CEDILLA;NFD_QC=N;SB=LO;stc=00C7;suc=00C7;XIDC;XIDS
+cp;00E8;Alpha;Cased;CWCM;CWT;CWU;dm=0065 0300;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER E WITH GRAVE;NFD_QC=N;SB=LO;stc=00C8;suc=00C8;XIDC;XIDS
+cp;00E9;Alpha;Cased;CWCM;CWT;CWU;dm=0065 0301;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER E WITH ACUTE;NFD_QC=N;SB=LO;stc=00C9;suc=00C9;XIDC;XIDS
+cp;00EA;Alpha;Cased;CWCM;CWT;CWU;dm=0065 0302;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER E WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00CA;suc=00CA;XIDC;XIDS
+cp;00EB;Alpha;Cased;CWCM;CWT;CWU;dm=0065 0308;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER E WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00CB;suc=00CB;XIDC;XIDS
+cp;00EC;Alpha;Cased;CWCM;CWT;CWU;dm=0069 0300;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER I WITH GRAVE;NFD_QC=N;SB=LO;stc=00CC;suc=00CC;XIDC;XIDS
+cp;00ED;Alpha;Cased;CWCM;CWT;CWU;dm=0069 0301;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER I WITH ACUTE;NFD_QC=N;SB=LO;stc=00CD;suc=00CD;XIDC;XIDS
+cp;00EE;Alpha;Cased;CWCM;CWT;CWU;dm=0069 0302;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER I WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00CE;suc=00CE;XIDC;XIDS
+cp;00EF;Alpha;Cased;CWCM;CWT;CWU;dm=0069 0308;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER I WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00CF;suc=00CF;XIDC;XIDS
+cp;00F0;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER ETH;NFKD_QC=Y;SB=LO;stc=00D0;suc=00D0;XIDC;XIDS
+cp;00F1;Alpha;Cased;CWCM;CWT;CWU;dm=006E 0303;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER N WITH TILDE;NFD_QC=N;SB=LO;stc=00D1;suc=00D1;XIDC;XIDS
+cp;00F2;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0300;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER O WITH GRAVE;NFD_QC=N;SB=LO;stc=00D2;suc=00D2;XIDC;XIDS
+cp;00F3;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0301;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER O WITH ACUTE;NFD_QC=N;SB=LO;stc=00D3;suc=00D3;XIDC;XIDS
+cp;00F4;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0302;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER O WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00D4;suc=00D4;XIDC;XIDS
+cp;00F5;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0303;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER O WITH TILDE;NFD_QC=N;SB=LO;stc=00D5;suc=00D5;XIDC;XIDS
+cp;00F6;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0308;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER O WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00D6;suc=00D6;XIDC;XIDS
# Mathematical operator
-cp;00F7;bc=ON;ea=A;gc=Sm;lb=AI;Math;na=DIVISION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
+cp;00F7;bc=ON;ea=A;gc=Sm;Identifier_Type=Not_XID;lb=AI;Math;na=DIVISION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
# Lowercase letters
-cp;00F8;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER O WITH STROKE;NFKD_QC=Y;SB=LO;stc=00D8;suc=00D8;XIDC;XIDS
-cp;00F9;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0300;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER U WITH GRAVE;NFD_QC=N;SB=LO;stc=00D9;suc=00D9;XIDC;XIDS
-cp;00FA;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0301;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER U WITH ACUTE;NFD_QC=N;SB=LO;stc=00DA;suc=00DA;XIDC;XIDS
-cp;00FB;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0302;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER U WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00DB;suc=00DB;XIDC;XIDS
-cp;00FC;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0308;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00DC;suc=00DC;XIDC;XIDS
-cp;00FD;Alpha;Cased;CWCM;CWT;CWU;dm=0079 0301;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER Y WITH ACUTE;NFD_QC=N;SB=LO;stc=00DD;suc=00DD;XIDC;XIDS
-cp;00FE;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER THORN;NFKD_QC=Y;SB=LO;stc=00DE;suc=00DE;XIDC;XIDS
-cp;00FF;Alpha;Cased;CWCM;CWT;CWU;dm=0079 0308;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER Y WITH DIAERESIS;NFD_QC=N;SB=LO;stc=0178;suc=0178;XIDC;XIDS
-
-block;0100..017F;age=1.1;Alpha;blk=Latin_Ext_A;Cased;CWCM;dt=Can;gc=Ll;Gr_Base;IDC;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;00F8;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER O WITH STROKE;NFKD_QC=Y;SB=LO;stc=00D8;suc=00D8;XIDC;XIDS
+cp;00F9;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0300;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER U WITH GRAVE;NFD_QC=N;SB=LO;stc=00D9;suc=00D9;XIDC;XIDS
+cp;00FA;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0301;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER U WITH ACUTE;NFD_QC=N;SB=LO;stc=00DA;suc=00DA;XIDC;XIDS
+cp;00FB;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0302;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER U WITH CIRCUMFLEX;NFD_QC=N;SB=LO;stc=00DB;suc=00DB;XIDC;XIDS
+cp;00FC;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0308;dt=Can;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00DC;suc=00DC;XIDC;XIDS
+cp;00FD;Alpha;Cased;CWCM;CWT;CWU;dm=0079 0301;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER Y WITH ACUTE;NFD_QC=N;SB=LO;stc=00DD;suc=00DD;XIDC;XIDS
+cp;00FE;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER THORN;NFKD_QC=Y;SB=LO;stc=00DE;suc=00DE;XIDC;XIDS
+cp;00FF;Alpha;Cased;CWCM;CWT;CWU;dm=0079 0308;dt=Can;IDC;Identifier_Status=Allowed;IDS;Lower;na=LATIN SMALL LETTER Y WITH DIAERESIS;NFD_QC=N;SB=LO;stc=0178;suc=0178;XIDC;XIDS
+
+block;0100..017F;age=1.1;Alpha;blk=Latin_Ext_A;Cased;CWCM;dt=Can;gc=Ll;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 0100..017F Latin Extended-A
# European Latin
cp;0100;cf=0101;CWCF;CWKCF;CWL;dm=0041 0304;gc=Lu;na=LATIN CAPITAL LETTER A WITH MACRON;NFKC_CF=0101;NFKC_SCF=0101;SB=UP;scf=0101;slc=0101;Upper
@@ -1623,8 +1640,8 @@ cp;012E;cf=012F;Conditional_Case_Mappings=lt More_Above:lc=012F 0307&tc=012E&uc=
cp;012F;CWT;CWU;dm=0069 0328;Lower;na=LATIN SMALL LETTER I WITH OGONEK;SD;stc=012E;suc=012E
cp;0130;cf=0069 0307;Conditional_Case_Mappings=tr:lc=0069&tc=0130&uc=0130,az:lc=0069&tc=0130&uc=0130;CWCF;CWKCF;CWL;dm=0049 0307;gc=Lu;lc=0069 0307;na=LATIN CAPITAL LETTER I WITH DOT ABOVE;NFKC_CF=0069 0307;SB=UP;slc=0069;tc=0130;Turkic_Case_Folding=0069;uc=0130;Upper
cp;0131;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER DOTLESS I;NFD_QC=Y;NFKD_QC=Y;stc=0049;suc=0049
-cp;0132;cf=0133;CWCF;CWKCF;CWL;dm=0049 004A;dt=Com;ea=A;gc=Lu;na=LATIN CAPITAL LIGATURE IJ;NFD_QC=Y;NFKC_CF=0069 006A;NFKC_QC=N;NFKC_SCF=0069 006A;SB=UP;scf=0133;slc=0133;Upper
-cp;0133;CWKCF;CWT;CWU;dm=0069 006A;dt=Com;ea=A;Lower;na=LATIN SMALL LIGATURE IJ;NFD_QC=Y;NFKC_CF=0069 006A;NFKC_QC=N;NFKC_SCF=0069 006A;stc=0132;suc=0132
+cp;0132;cf=0133;CWCF;CWKCF;CWL;dm=0049 004A;dt=Com;ea=A;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LIGATURE IJ;NFD_QC=Y;NFKC_CF=0069 006A;NFKC_QC=N;NFKC_SCF=0069 006A;SB=UP;scf=0133;slc=0133;Upper
+cp;0133;CWKCF;CWT;CWU;dm=0069 006A;dt=Com;ea=A;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=LATIN SMALL LIGATURE IJ;NFD_QC=Y;NFKC_CF=0069 006A;NFKC_QC=N;NFKC_SCF=0069 006A;stc=0132;suc=0132
cp;0134;cf=0135;CWCF;CWKCF;CWL;dm=004A 0302;gc=Lu;na=LATIN CAPITAL LETTER J WITH CIRCUMFLEX;NFKC_CF=0135;NFKC_SCF=0135;SB=UP;scf=0135;slc=0135;Upper
cp;0135;CWT;CWU;dm=006A 0302;Lower;na=LATIN SMALL LETTER J WITH CIRCUMFLEX;stc=0134;suc=0134
cp;0136;cf=0137;CWCF;CWKCF;CWL;dm=004B 0327;gc=Lu;na=LATIN CAPITAL LETTER K WITH CEDILLA;NFKC_CF=0137;NFKC_SCF=0137;SB=UP;scf=0137;slc=0137;Upper
@@ -1636,8 +1653,8 @@ cp;013B;cf=013C;CWCF;CWKCF;CWL;dm=004C 0327;gc=Lu;na=LATIN CAPITAL LETTER L WITH
cp;013C;CWT;CWU;dm=006C 0327;Lower;na=LATIN SMALL LETTER L WITH CEDILLA;stc=013B;suc=013B
cp;013D;cf=013E;CWCF;CWKCF;CWL;dm=004C 030C;gc=Lu;na=LATIN CAPITAL LETTER L WITH CARON;NFKC_CF=013E;NFKC_SCF=013E;SB=UP;scf=013E;slc=013E;Upper
cp;013E;CWT;CWU;dm=006C 030C;Lower;na=LATIN SMALL LETTER L WITH CARON;stc=013D;suc=013D
-cp;013F;cf=0140;CWCF;CWKCF;CWL;dm=004C 00B7;dt=Com;ea=A;gc=Lu;na=LATIN CAPITAL LETTER L WITH MIDDLE DOT;NFD_QC=Y;NFKC_CF=006C 00B7;NFKC_QC=N;NFKC_SCF=006C 00B7;SB=UP;scf=0140;slc=0140;Upper
-cp;0140;CWKCF;CWT;CWU;dm=006C 00B7;dt=Com;ea=A;Lower;na=LATIN SMALL LETTER L WITH MIDDLE DOT;NFD_QC=Y;NFKC_CF=006C 00B7;NFKC_QC=N;NFKC_SCF=006C 00B7;stc=013F;suc=013F
+cp;013F;cf=0140;CWCF;CWKCF;CWL;dm=004C 00B7;dt=Com;ea=A;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER L WITH MIDDLE DOT;NFD_QC=Y;NFKC_CF=006C 00B7;NFKC_QC=N;NFKC_SCF=006C 00B7;SB=UP;scf=0140;slc=0140;Upper
+cp;0140;CWKCF;CWT;CWU;dm=006C 00B7;dt=Com;ea=A;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=LATIN SMALL LETTER L WITH MIDDLE DOT;NFD_QC=Y;NFKC_CF=006C 00B7;NFKC_QC=N;NFKC_SCF=006C 00B7;stc=013F;suc=013F
cp;0141;cf=0142;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER L WITH STROKE;NFD_QC=Y;NFKC_CF=0142;NFKC_SCF=0142;NFKD_QC=Y;SB=UP;scf=0142;slc=0142;Upper
cp;0142;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER L WITH STROKE;NFD_QC=Y;NFKD_QC=Y;stc=0141;suc=0141
cp;0143;cf=0144;CWCF;CWKCF;CWL;dm=004E 0301;gc=Lu;na=LATIN CAPITAL LETTER N WITH ACUTE;NFKC_CF=0144;NFKC_SCF=0144;SB=UP;scf=0144;slc=0144;Upper
@@ -1647,7 +1664,7 @@ cp;0146;CWT;CWU;dm=006E 0327;Lower;na=LATIN SMALL LETTER N WITH CEDILLA;stc=0145
cp;0147;cf=0148;CWCF;CWKCF;CWL;dm=004E 030C;gc=Lu;na=LATIN CAPITAL LETTER N WITH CARON;NFKC_CF=0148;NFKC_SCF=0148;SB=UP;scf=0148;slc=0148;Upper
cp;0148;CWT;CWU;dm=006E 030C;ea=A;Lower;na=LATIN SMALL LETTER N WITH CARON;stc=0147;suc=0147
# Deprecated letter
-cp;0149;cf=02BC 006E;CWCF;CWKCF;CWT;CWU;Dep;dm=02BC 006E;dt=Com;ea=A;lc=0149;Lower;na=LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;NFD_QC=Y;NFKC_CF=02BC 006E;NFKC_QC=N;NFKC_SCF=02BC 006E;tc=02BC 004E;uc=02BC 004E
+cp;0149;cf=02BC 006E;CWCF;CWKCF;CWT;CWU;Dep;dm=02BC 006E;dt=Com;ea=A;Identifier_Status=Restricted;Identifier_Type=Deprecated;lc=0149;Lower;na=LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;NFD_QC=Y;NFKC_CF=02BC 006E;NFKC_QC=N;NFKC_SCF=02BC 006E;tc=02BC 004E;uc=02BC 004E
# European Latin
cp;014A;cf=014B;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER ENG;NFD_QC=Y;NFKC_CF=014B;NFKC_SCF=014B;NFKD_QC=Y;SB=UP;scf=014B;slc=014B;Upper
cp;014B;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER ENG;NFD_QC=Y;NFKD_QC=Y;stc=014A;suc=014A
@@ -1702,249 +1719,249 @@ cp;017B;cf=017C;CWCF;CWKCF;CWL;dm=005A 0307;gc=Lu;na=LATIN CAPITAL LETTER Z WITH
cp;017C;CWT;CWU;dm=007A 0307;Lower;na=LATIN SMALL LETTER Z WITH DOT ABOVE;stc=017B;suc=017B
cp;017D;cf=017E;CWCF;CWKCF;CWL;dm=005A 030C;gc=Lu;na=LATIN CAPITAL LETTER Z WITH CARON;NFKC_CF=017E;NFKC_SCF=017E;SB=UP;scf=017E;slc=017E;Upper
cp;017E;CWT;CWU;dm=007A 030C;Lower;na=LATIN SMALL LETTER Z WITH CARON;stc=017D;suc=017D
-cp;017F;cf=0073;CWCF;CWKCF;CWT;CWU;dm=0073;dt=Com;Lower;na=LATIN SMALL LETTER LONG S;NFD_QC=Y;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;scf=0073;stc=0053;suc=0053
+cp;017F;cf=0073;CWCF;CWKCF;CWT;CWU;dm=0073;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=LATIN SMALL LETTER LONG S;NFD_QC=Y;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;scf=0073;stc=0053;suc=0053
-block;0180..024F;age=1.1;Alpha;blk=Latin_Ext_B;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Latn;WB=LE;XIDC;XIDS
+block;0180..024F;age=1.1;Alpha;blk=Latin_Ext_B;Cased;CWCM;gc=Lu;Gr_Base;IDC;Identifier_Type=Recommended;IDS;lb=AL;SB=UP;sc=Latn;WB=LE;XIDC;XIDS
# 0180..024F Latin Extended-B
# Non-European and historic Latin
-cp;0180;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER B WITH STROKE;SB=LO;stc=0243;suc=0243
-cp;0181;cf=0253;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH HOOK;NFKC_CF=0253;NFKC_SCF=0253;scf=0253;slc=0253;Upper
-cp;0182;cf=0183;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH TOPBAR;NFKC_CF=0183;NFKC_SCF=0183;scf=0183;slc=0183;Upper
-cp;0183;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER B WITH TOPBAR;SB=LO;stc=0182;suc=0182
-cp;0184;cf=0185;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE SIX;NFKC_CF=0185;NFKC_SCF=0185;scf=0185;slc=0185;Upper
-cp;0185;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER TONE SIX;SB=LO;stc=0184;suc=0184
-cp;0186;cf=0254;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OPEN O;NFKC_CF=0254;NFKC_SCF=0254;scf=0254;slc=0254;Upper
-cp;0187;cf=0188;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER C WITH HOOK;NFKC_CF=0188;NFKC_SCF=0188;scf=0188;slc=0188;Upper
-cp;0188;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER C WITH HOOK;SB=LO;stc=0187;suc=0187
-cp;0189;cf=0256;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER AFRICAN D;NFKC_CF=0256;NFKC_SCF=0256;scf=0256;slc=0256;Upper
-cp;018A;cf=0257;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER D WITH HOOK;NFKC_CF=0257;NFKC_SCF=0257;scf=0257;slc=0257;Upper
-cp;018B;cf=018C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER D WITH TOPBAR;NFKC_CF=018C;NFKC_SCF=018C;scf=018C;slc=018C;Upper
-cp;018C;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER D WITH TOPBAR;SB=LO;stc=018B;suc=018B
-cp;018D;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER TURNED DELTA;SB=LO
-cp;018E;cf=01DD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER REVERSED E;NFKC_CF=01DD;NFKC_SCF=01DD;scf=01DD;slc=01DD;Upper
-cp;018F;cf=0259;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER SCHWA;NFKC_CF=0259;NFKC_SCF=0259;scf=0259;slc=0259;Upper
-cp;0190;cf=025B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OPEN E;NFKC_CF=025B;NFKC_SCF=025B;scf=025B;slc=025B;Upper
-cp;0191;cf=0192;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER F WITH HOOK;NFKC_CF=0192;NFKC_SCF=0192;scf=0192;slc=0192;Upper
-cp;0192;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER F WITH HOOK;SB=LO;stc=0191;suc=0191
-cp;0193;cf=0260;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER G WITH HOOK;NFKC_CF=0260;NFKC_SCF=0260;scf=0260;slc=0260;Upper
-cp;0194;cf=0263;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER GAMMA;NFKC_CF=0263;NFKC_SCF=0263;scf=0263;slc=0263;Upper
-cp;0195;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER HV;SB=LO;stc=01F6;suc=01F6
-cp;0196;cf=0269;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER IOTA;NFKC_CF=0269;NFKC_SCF=0269;scf=0269;slc=0269;Upper
-cp;0197;cf=0268;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER I WITH STROKE;NFKC_CF=0268;NFKC_SCF=0268;scf=0268;slc=0268;Upper
-cp;0198;cf=0199;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER K WITH HOOK;NFKC_CF=0199;NFKC_SCF=0199;scf=0199;slc=0199;Upper
-cp;0199;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER K WITH HOOK;SB=LO;stc=0198;suc=0198
-cp;019A;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER L WITH BAR;SB=LO;stc=023D;suc=023D
-cp;019B;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER LAMBDA WITH STROKE;SB=LO
-cp;019C;cf=026F;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TURNED M;NFKC_CF=026F;NFKC_SCF=026F;scf=026F;slc=026F;Upper
-cp;019D;cf=0272;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER N WITH LEFT HOOK;NFKC_CF=0272;NFKC_SCF=0272;scf=0272;slc=0272;Upper
-cp;019E;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER N WITH LONG RIGHT LEG;SB=LO;stc=0220;suc=0220
-cp;019F;cf=0275;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER O WITH MIDDLE TILDE;NFKC_CF=0275;NFKC_SCF=0275;scf=0275;slc=0275;Upper
-cp;01A0;cf=01A1;CWCF;CWKCF;CWL;dm=004F 031B;dt=Can;na=LATIN CAPITAL LETTER O WITH HORN;NFD_QC=N;NFKC_CF=01A1;NFKC_SCF=01A1;NFKD_QC=N;scf=01A1;slc=01A1;Upper
-cp;01A1;CWT;CWU;dm=006F 031B;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH HORN;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01A0;suc=01A0
-cp;01A2;cf=01A3;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OI;Name_Alias=correction=LATIN CAPITAL LETTER GHA;NFKC_CF=01A3;NFKC_SCF=01A3;scf=01A3;slc=01A3;Upper
-cp;01A3;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER OI;Name_Alias=correction=LATIN SMALL LETTER GHA;SB=LO;stc=01A2;suc=01A2
-cp;01A4;cf=01A5;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER P WITH HOOK;NFKC_CF=01A5;NFKC_SCF=01A5;scf=01A5;slc=01A5;Upper
-cp;01A5;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER P WITH HOOK;SB=LO;stc=01A4;suc=01A4
-cp;01A6;cf=0280;CWCF;CWKCF;CWL;na=LATIN LETTER YR;NFKC_CF=0280;NFKC_SCF=0280;scf=0280;slc=0280;Upper
-cp;01A7;cf=01A8;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE TWO;NFKC_CF=01A8;NFKC_SCF=01A8;scf=01A8;slc=01A8;Upper
-cp;01A8;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER TONE TWO;SB=LO;stc=01A7;suc=01A7
-cp;01A9;cf=0283;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER ESH;NFKC_CF=0283;NFKC_SCF=0283;scf=0283;slc=0283;Upper
-cp;01AA;-CWCM;gc=Ll;Lower;na=LATIN LETTER REVERSED ESH LOOP;SB=LO
-cp;01AB;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER T WITH PALATAL HOOK;SB=LO
-cp;01AC;cf=01AD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH HOOK;NFKC_CF=01AD;NFKC_SCF=01AD;scf=01AD;slc=01AD;Upper
-cp;01AD;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER T WITH HOOK;SB=LO;stc=01AC;suc=01AC
-cp;01AE;cf=0288;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;NFKC_CF=0288;NFKC_SCF=0288;scf=0288;slc=0288;Upper
-cp;01AF;cf=01B0;CWCF;CWKCF;CWL;dm=0055 031B;dt=Can;na=LATIN CAPITAL LETTER U WITH HORN;NFD_QC=N;NFKC_CF=01B0;NFKC_SCF=01B0;NFKD_QC=N;scf=01B0;slc=01B0;Upper
-cp;01B0;CWT;CWU;dm=0075 031B;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH HORN;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01AF;suc=01AF
-cp;01B1;cf=028A;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER UPSILON;NFKC_CF=028A;NFKC_SCF=028A;scf=028A;slc=028A;Upper
-cp;01B2;cf=028B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER V WITH HOOK;NFKC_CF=028B;NFKC_SCF=028B;scf=028B;slc=028B;Upper
-cp;01B3;cf=01B4;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Y WITH HOOK;NFKC_CF=01B4;NFKC_SCF=01B4;scf=01B4;slc=01B4;Upper
-cp;01B4;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Y WITH HOOK;SB=LO;stc=01B3;suc=01B3
-cp;01B5;cf=01B6;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Z WITH STROKE;NFKC_CF=01B6;NFKC_SCF=01B6;scf=01B6;slc=01B6;Upper
-cp;01B6;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Z WITH STROKE;SB=LO;stc=01B5;suc=01B5
-cp;01B7;cf=0292;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER EZH;NFKC_CF=0292;NFKC_SCF=0292;scf=0292;slc=0292;Upper
-cp;01B8;cf=01B9;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER EZH REVERSED;NFKC_CF=01B9;NFKC_SCF=01B9;scf=01B9;slc=01B9;Upper
-cp;01B9;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER EZH REVERSED;SB=LO;stc=01B8;suc=01B8
-cp;01BA;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER EZH WITH TAIL;SB=LO
-cp;01BB;-Cased;-CWCM;gc=Lo;na=LATIN LETTER TWO WITH STROKE;SB=LE
-cp;01BC;cf=01BD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE FIVE;NFKC_CF=01BD;NFKC_SCF=01BD;scf=01BD;slc=01BD;Upper
-cp;01BD;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER TONE FIVE;SB=LO;stc=01BC;suc=01BC
-cp;01BE;-CWCM;gc=Ll;Lower;na=LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;SB=LO
-cp;01BF;CWT;CWU;gc=Ll;Lower;na=LATIN LETTER WYNN;SB=LO;stc=01F7;suc=01F7
+cp;0180;CWT;CWU;gc=Ll;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER B WITH STROKE;SB=LO;stc=0243;suc=0243
+cp;0181;cf=0253;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER B WITH HOOK;NFKC_CF=0253;NFKC_SCF=0253;scf=0253;slc=0253;Upper
+cp;0182;cf=0183;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER B WITH TOPBAR;NFKC_CF=0183;NFKC_SCF=0183;scf=0183;slc=0183;Upper
+cp;0183;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER B WITH TOPBAR;SB=LO;stc=0182;suc=0182
+cp;0184;cf=0185;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER TONE SIX;NFKC_CF=0185;NFKC_SCF=0185;scf=0185;slc=0185;Upper
+cp;0185;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER TONE SIX;SB=LO;stc=0184;suc=0184
+cp;0186;cf=0254;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER OPEN O;NFKC_CF=0254;NFKC_SCF=0254;scf=0254;slc=0254;Upper
+cp;0187;cf=0188;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER C WITH HOOK;NFKC_CF=0188;NFKC_SCF=0188;scf=0188;slc=0188;Upper
+cp;0188;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER C WITH HOOK;SB=LO;stc=0187;suc=0187
+cp;0189;cf=0256;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER AFRICAN D;NFKC_CF=0256;NFKC_SCF=0256;scf=0256;slc=0256;Upper
+cp;018A;cf=0257;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER D WITH HOOK;NFKC_CF=0257;NFKC_SCF=0257;scf=0257;slc=0257;Upper
+cp;018B;cf=018C;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER D WITH TOPBAR;NFKC_CF=018C;NFKC_SCF=018C;scf=018C;slc=018C;Upper
+cp;018C;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER D WITH TOPBAR;SB=LO;stc=018B;suc=018B
+cp;018D;-CWCM;gc=Ll;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER TURNED DELTA;SB=LO
+cp;018E;cf=01DD;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER REVERSED E;NFKC_CF=01DD;NFKC_SCF=01DD;scf=01DD;slc=01DD;Upper
+cp;018F;cf=0259;CWCF;CWKCF;CWL;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER SCHWA;NFKC_CF=0259;NFKC_SCF=0259;scf=0259;slc=0259;Upper
+cp;0190;cf=025B;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER OPEN E;NFKC_CF=025B;NFKC_SCF=025B;scf=025B;slc=025B;Upper
+cp;0191;cf=0192;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER F WITH HOOK;NFKC_CF=0192;NFKC_SCF=0192;scf=0192;slc=0192;Upper
+cp;0192;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER F WITH HOOK;SB=LO;stc=0191;suc=0191
+cp;0193;cf=0260;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER G WITH HOOK;NFKC_CF=0260;NFKC_SCF=0260;scf=0260;slc=0260;Upper
+cp;0194;cf=0263;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER GAMMA;NFKC_CF=0263;NFKC_SCF=0263;scf=0263;slc=0263;Upper
+cp;0195;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER HV;SB=LO;stc=01F6;suc=01F6
+cp;0196;cf=0269;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER IOTA;NFKC_CF=0269;NFKC_SCF=0269;scf=0269;slc=0269;Upper
+cp;0197;cf=0268;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER I WITH STROKE;NFKC_CF=0268;NFKC_SCF=0268;scf=0268;slc=0268;Upper
+cp;0198;cf=0199;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER K WITH HOOK;NFKC_CF=0199;NFKC_SCF=0199;scf=0199;slc=0199;Upper
+cp;0199;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER K WITH HOOK;SB=LO;stc=0198;suc=0198
+cp;019A;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER L WITH BAR;SB=LO;stc=023D;suc=023D
+cp;019B;-CWCM;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER LAMBDA WITH STROKE;SB=LO
+cp;019C;cf=026F;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER TURNED M;NFKC_CF=026F;NFKC_SCF=026F;scf=026F;slc=026F;Upper
+cp;019D;cf=0272;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER N WITH LEFT HOOK;NFKC_CF=0272;NFKC_SCF=0272;scf=0272;slc=0272;Upper
+cp;019E;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER N WITH LONG RIGHT LEG;SB=LO;stc=0220;suc=0220
+cp;019F;cf=0275;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER O WITH MIDDLE TILDE;NFKC_CF=0275;NFKC_SCF=0275;scf=0275;slc=0275;Upper
+cp;01A0;cf=01A1;CWCF;CWKCF;CWL;dm=004F 031B;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH HORN;NFD_QC=N;NFKC_CF=01A1;NFKC_SCF=01A1;NFKD_QC=N;scf=01A1;slc=01A1;Upper
+cp;01A1;CWT;CWU;dm=006F 031B;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH HORN;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01A0;suc=01A0
+cp;01A2;cf=01A3;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER OI;Name_Alias=correction=LATIN CAPITAL LETTER GHA;NFKC_CF=01A3;NFKC_SCF=01A3;scf=01A3;slc=01A3;Upper
+cp;01A3;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER OI;Name_Alias=correction=LATIN SMALL LETTER GHA;SB=LO;stc=01A2;suc=01A2
+cp;01A4;cf=01A5;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER P WITH HOOK;NFKC_CF=01A5;NFKC_SCF=01A5;scf=01A5;slc=01A5;Upper
+cp;01A5;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER P WITH HOOK;SB=LO;stc=01A4;suc=01A4
+cp;01A6;cf=0280;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN LETTER YR;NFKC_CF=0280;NFKC_SCF=0280;scf=0280;slc=0280;Upper
+cp;01A7;cf=01A8;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER TONE TWO;NFKC_CF=01A8;NFKC_SCF=01A8;scf=01A8;slc=01A8;Upper
+cp;01A8;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER TONE TWO;SB=LO;stc=01A7;suc=01A7
+cp;01A9;cf=0283;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER ESH;NFKC_CF=0283;NFKC_SCF=0283;scf=0283;slc=0283;Upper
+cp;01AA;-CWCM;gc=Ll;Identifier_Type=Technical Obsolete;Lower;na=LATIN LETTER REVERSED ESH LOOP;SB=LO
+cp;01AB;-CWCM;gc=Ll;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER T WITH PALATAL HOOK;SB=LO
+cp;01AC;cf=01AD;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER T WITH HOOK;NFKC_CF=01AD;NFKC_SCF=01AD;scf=01AD;slc=01AD;Upper
+cp;01AD;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER T WITH HOOK;SB=LO;stc=01AC;suc=01AC
+cp;01AE;cf=0288;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;NFKC_CF=0288;NFKC_SCF=0288;scf=0288;slc=0288;Upper
+cp;01AF;cf=01B0;CWCF;CWKCF;CWL;dm=0055 031B;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER U WITH HORN;NFD_QC=N;NFKC_CF=01B0;NFKC_SCF=01B0;NFKD_QC=N;scf=01B0;slc=01B0;Upper
+cp;01B0;CWT;CWU;dm=0075 031B;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER U WITH HORN;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01AF;suc=01AF
+cp;01B1;cf=028A;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER UPSILON;NFKC_CF=028A;NFKC_SCF=028A;scf=028A;slc=028A;Upper
+cp;01B2;cf=028B;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER V WITH HOOK;NFKC_CF=028B;NFKC_SCF=028B;scf=028B;slc=028B;Upper
+cp;01B3;cf=01B4;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER Y WITH HOOK;NFKC_CF=01B4;NFKC_SCF=01B4;scf=01B4;slc=01B4;Upper
+cp;01B4;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER Y WITH HOOK;SB=LO;stc=01B3;suc=01B3
+cp;01B5;cf=01B6;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER Z WITH STROKE;NFKC_CF=01B6;NFKC_SCF=01B6;scf=01B6;slc=01B6;Upper
+cp;01B6;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER Z WITH STROKE;SB=LO;stc=01B5;suc=01B5
+cp;01B7;cf=0292;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER EZH;NFKC_CF=0292;NFKC_SCF=0292;scf=0292;slc=0292;Upper
+cp;01B8;cf=01B9;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER EZH REVERSED;NFKC_CF=01B9;NFKC_SCF=01B9;scf=01B9;slc=01B9;Upper
+cp;01B9;CWT;CWU;gc=Ll;Identifier_Type=Obsolete;Lower;na=LATIN SMALL LETTER EZH REVERSED;SB=LO;stc=01B8;suc=01B8
+cp;01BA;-CWCM;gc=Ll;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER EZH WITH TAIL;SB=LO
+cp;01BB;-Cased;-CWCM;gc=Lo;Identifier_Type=Technical Obsolete;na=LATIN LETTER TWO WITH STROKE;SB=LE
+cp;01BC;cf=01BD;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER TONE FIVE;NFKC_CF=01BD;NFKC_SCF=01BD;scf=01BD;slc=01BD;Upper
+cp;01BD;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER TONE FIVE;SB=LO;stc=01BC;suc=01BC
+cp;01BE;-CWCM;gc=Ll;Identifier_Type=Technical Obsolete;Lower;na=LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;SB=LO
+cp;01BF;CWT;CWU;gc=Ll;Identifier_Type=Obsolete;Lower;na=LATIN LETTER WYNN;SB=LO;stc=01F7;suc=01F7
# African letters for clicks
-cp;01C0;-Cased;-CWCM;gc=Lo;na=LATIN LETTER DENTAL CLICK;SB=LE
-cp;01C1;-Cased;-CWCM;gc=Lo;na=LATIN LETTER LATERAL CLICK;SB=LE
-cp;01C2;-Cased;-CWCM;gc=Lo;na=LATIN LETTER ALVEOLAR CLICK;SB=LE
-cp;01C3;-Cased;-CWCM;gc=Lo;na=LATIN LETTER RETROFLEX CLICK;SB=LE
+cp;01C0;-Cased;-CWCM;gc=Lo;Identifier_Type=Technical;na=LATIN LETTER DENTAL CLICK;SB=LE
+cp;01C1;-Cased;-CWCM;gc=Lo;Identifier_Type=Technical;na=LATIN LETTER LATERAL CLICK;SB=LE
+cp;01C2;-Cased;-CWCM;gc=Lo;Identifier_Type=Technical;na=LATIN LETTER ALVEOLAR CLICK;SB=LE
+cp;01C3;-Cased;-CWCM;gc=Lo;Identifier_Type=Technical;na=LATIN LETTER RETROFLEX CLICK;SB=LE
# Latin digraphs matching Serbian Cyrillic letters
-cp;01C4;cf=01C6;CWCF;CWKCF;CWL;CWT;dm=0044 017D;dt=Com;na=LATIN CAPITAL LETTER DZ WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;scf=01C6;slc=01C6;stc=01C5;Upper
-cp;01C5;cf=01C6;CWCF;CWKCF;CWL;CWU;dm=0044 017E;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;scf=01C6;slc=01C6;stc=01C5;suc=01C4
-cp;01C6;CWKCF;CWT;CWU;dm=0064 017E;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER DZ WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;SB=LO;stc=01C5;suc=01C4
-cp;01C7;cf=01C9;CWCF;CWKCF;CWL;CWT;dm=004C 004A;dt=Com;na=LATIN CAPITAL LETTER LJ;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;scf=01C9;slc=01C9;stc=01C8;Upper
-cp;01C8;cf=01C9;CWCF;CWKCF;CWL;CWU;dm=004C 006A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER L WITH SMALL LETTER J;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;scf=01C9;slc=01C9;stc=01C8;suc=01C7
-cp;01C9;CWKCF;CWT;CWU;dm=006C 006A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER LJ;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;SB=LO;stc=01C8;suc=01C7
-cp;01CA;cf=01CC;CWCF;CWKCF;CWL;CWT;dm=004E 004A;dt=Com;na=LATIN CAPITAL LETTER NJ;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;scf=01CC;slc=01CC;stc=01CB;Upper
-cp;01CB;cf=01CC;CWCF;CWKCF;CWL;CWU;dm=004E 006A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER N WITH SMALL LETTER J;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;scf=01CC;slc=01CC;stc=01CB;suc=01CA
-cp;01CC;CWKCF;CWT;CWU;dm=006E 006A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER NJ;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;SB=LO;stc=01CB;suc=01CA
+cp;01C4;cf=01C6;CWCF;CWKCF;CWL;CWT;dm=0044 017D;dt=Com;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER DZ WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;scf=01C6;slc=01C6;stc=01C5;Upper
+cp;01C5;cf=01C6;CWCF;CWKCF;CWL;CWU;dm=0044 017E;dt=Com;gc=Lt;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;scf=01C6;slc=01C6;stc=01C5;suc=01C4
+cp;01C6;CWKCF;CWT;CWU;dm=0064 017E;dt=Com;gc=Ll;Identifier_Type=Not_NFKC;Lower;na=LATIN SMALL LETTER DZ WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;SB=LO;stc=01C5;suc=01C4
+cp;01C7;cf=01C9;CWCF;CWKCF;CWL;CWT;dm=004C 004A;dt=Com;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER LJ;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;scf=01C9;slc=01C9;stc=01C8;Upper
+cp;01C8;cf=01C9;CWCF;CWKCF;CWL;CWU;dm=004C 006A;dt=Com;gc=Lt;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER L WITH SMALL LETTER J;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;scf=01C9;slc=01C9;stc=01C8;suc=01C7
+cp;01C9;CWKCF;CWT;CWU;dm=006C 006A;dt=Com;gc=Ll;Identifier_Type=Not_NFKC;Lower;na=LATIN SMALL LETTER LJ;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;SB=LO;stc=01C8;suc=01C7
+cp;01CA;cf=01CC;CWCF;CWKCF;CWL;CWT;dm=004E 004A;dt=Com;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER NJ;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;scf=01CC;slc=01CC;stc=01CB;Upper
+cp;01CB;cf=01CC;CWCF;CWKCF;CWL;CWU;dm=004E 006A;dt=Com;gc=Lt;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER N WITH SMALL LETTER J;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;scf=01CC;slc=01CC;stc=01CB;suc=01CA
+cp;01CC;CWKCF;CWT;CWU;dm=006E 006A;dt=Com;gc=Ll;Identifier_Type=Not_NFKC;Lower;na=LATIN SMALL LETTER NJ;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;SB=LO;stc=01CB;suc=01CA
# Pinyin diacritic-vowel combinations
-cp;01CD;cf=01CE;CWCF;CWKCF;CWL;dm=0041 030C;dt=Can;na=LATIN CAPITAL LETTER A WITH CARON;NFD_QC=N;NFKC_CF=01CE;NFKC_SCF=01CE;NFKD_QC=N;scf=01CE;slc=01CE;Upper
-cp;01CE;CWT;CWU;dm=0061 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01CD;suc=01CD
-cp;01CF;cf=01D0;CWCF;CWKCF;CWL;dm=0049 030C;dt=Can;na=LATIN CAPITAL LETTER I WITH CARON;NFD_QC=N;NFKC_CF=01D0;NFKC_SCF=01D0;NFKD_QC=N;scf=01D0;slc=01D0;Upper
-cp;01D0;CWT;CWU;dm=0069 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER I WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01CF;suc=01CF
-cp;01D1;cf=01D2;CWCF;CWKCF;CWL;dm=004F 030C;dt=Can;na=LATIN CAPITAL LETTER O WITH CARON;NFD_QC=N;NFKC_CF=01D2;NFKC_SCF=01D2;NFKD_QC=N;scf=01D2;slc=01D2;Upper
-cp;01D2;CWT;CWU;dm=006F 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D1;suc=01D1
-cp;01D3;cf=01D4;CWCF;CWKCF;CWL;dm=0055 030C;dt=Can;na=LATIN CAPITAL LETTER U WITH CARON;NFD_QC=N;NFKC_CF=01D4;NFKC_SCF=01D4;NFKD_QC=N;scf=01D4;slc=01D4;Upper
-cp;01D4;CWT;CWU;dm=0075 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D3;suc=01D3
-cp;01D5;cf=01D6;CWCF;CWKCF;CWL;dm=00DC 0304;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=01D6;NFKC_SCF=01D6;NFKD_QC=N;scf=01D6;slc=01D6;Upper
-cp;01D6;CWT;CWU;dm=00FC 0304;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D5;suc=01D5
-cp;01D7;cf=01D8;CWCF;CWKCF;CWL;dm=00DC 0301;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;NFD_QC=N;NFKC_CF=01D8;NFKC_SCF=01D8;NFKD_QC=N;scf=01D8;slc=01D8;Upper
-cp;01D8;CWT;CWU;dm=00FC 0301;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D7;suc=01D7
-cp;01D9;cf=01DA;CWCF;CWKCF;CWL;dm=00DC 030C;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;NFD_QC=N;NFKC_CF=01DA;NFKC_SCF=01DA;NFKD_QC=N;scf=01DA;slc=01DA;Upper
-cp;01DA;CWT;CWU;dm=00FC 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D9;suc=01D9
-cp;01DB;cf=01DC;CWCF;CWKCF;CWL;dm=00DC 0300;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;NFD_QC=N;NFKC_CF=01DC;NFKC_SCF=01DC;NFKD_QC=N;scf=01DC;slc=01DC;Upper
-cp;01DC;CWT;CWU;dm=00FC 0300;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01DB;suc=01DB
+cp;01CD;cf=01CE;CWCF;CWKCF;CWL;dm=0041 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER A WITH CARON;NFD_QC=N;NFKC_CF=01CE;NFKC_SCF=01CE;NFKD_QC=N;scf=01CE;slc=01CE;Upper
+cp;01CE;CWT;CWU;dm=0061 030C;dt=Can;ea=A;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER A WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01CD;suc=01CD
+cp;01CF;cf=01D0;CWCF;CWKCF;CWL;dm=0049 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER I WITH CARON;NFD_QC=N;NFKC_CF=01D0;NFKC_SCF=01D0;NFKD_QC=N;scf=01D0;slc=01D0;Upper
+cp;01D0;CWT;CWU;dm=0069 030C;dt=Can;ea=A;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER I WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01CF;suc=01CF
+cp;01D1;cf=01D2;CWCF;CWKCF;CWL;dm=004F 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH CARON;NFD_QC=N;NFKC_CF=01D2;NFKC_SCF=01D2;NFKD_QC=N;scf=01D2;slc=01D2;Upper
+cp;01D2;CWT;CWU;dm=006F 030C;dt=Can;ea=A;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D1;suc=01D1
+cp;01D3;cf=01D4;CWCF;CWKCF;CWL;dm=0055 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER U WITH CARON;NFD_QC=N;NFKC_CF=01D4;NFKC_SCF=01D4;NFKD_QC=N;scf=01D4;slc=01D4;Upper
+cp;01D4;CWT;CWU;dm=0075 030C;dt=Can;ea=A;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER U WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D3;suc=01D3
+cp;01D5;cf=01D6;CWCF;CWKCF;CWL;dm=00DC 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=01D6;NFKC_SCF=01D6;NFKD_QC=N;scf=01D6;slc=01D6;Upper
+cp;01D6;CWT;CWU;dm=00FC 0304;dt=Can;ea=A;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D5;suc=01D5
+cp;01D7;cf=01D8;CWCF;CWKCF;CWL;dm=00DC 0301;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;NFD_QC=N;NFKC_CF=01D8;NFKC_SCF=01D8;NFKD_QC=N;scf=01D8;slc=01D8;Upper
+cp;01D8;CWT;CWU;dm=00FC 0301;dt=Can;ea=A;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D7;suc=01D7
+cp;01D9;cf=01DA;CWCF;CWKCF;CWL;dm=00DC 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;NFD_QC=N;NFKC_CF=01DA;NFKC_SCF=01DA;NFKD_QC=N;scf=01DA;slc=01DA;Upper
+cp;01DA;CWT;CWU;dm=00FC 030C;dt=Can;ea=A;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D9;suc=01D9
+cp;01DB;cf=01DC;CWCF;CWKCF;CWL;dm=00DC 0300;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;NFD_QC=N;NFKC_CF=01DC;NFKC_SCF=01DC;NFKD_QC=N;scf=01DC;slc=01DC;Upper
+cp;01DC;CWT;CWU;dm=00FC 0300;dt=Can;ea=A;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01DB;suc=01DB
# Phonetic and historic letters
-cp;01DD;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER TURNED E;SB=LO;stc=018E;suc=018E
-cp;01DE;cf=01DF;CWCF;CWKCF;CWL;dm=00C4 0304;dt=Can;na=LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=01DF;NFKC_SCF=01DF;NFKD_QC=N;scf=01DF;slc=01DF;Upper
-cp;01DF;CWT;CWU;dm=00E4 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01DE;suc=01DE
-cp;01E0;cf=01E1;CWCF;CWKCF;CWL;dm=0226 0304;dt=Can;na=LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKC_CF=01E1;NFKC_SCF=01E1;NFKD_QC=N;scf=01E1;slc=01E1;Upper
-cp;01E1;CWT;CWU;dm=0227 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E0;suc=01E0
-cp;01E2;cf=01E3;CWCF;CWKCF;CWL;dm=00C6 0304;dt=Can;na=LATIN CAPITAL LETTER AE WITH MACRON;NFD_QC=N;NFKC_CF=01E3;NFKC_SCF=01E3;NFKD_QC=N;scf=01E3;slc=01E3;Upper
-cp;01E3;CWT;CWU;dm=00E6 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER AE WITH MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E2;suc=01E2
-cp;01E4;cf=01E5;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER G WITH STROKE;NFKC_CF=01E5;NFKC_SCF=01E5;scf=01E5;slc=01E5;Upper
-cp;01E5;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER G WITH STROKE;SB=LO;stc=01E4;suc=01E4
-cp;01E6;cf=01E7;CWCF;CWKCF;CWL;dm=0047 030C;dt=Can;na=LATIN CAPITAL LETTER G WITH CARON;NFD_QC=N;NFKC_CF=01E7;NFKC_SCF=01E7;NFKD_QC=N;scf=01E7;slc=01E7;Upper
-cp;01E7;CWT;CWU;dm=0067 030C;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER G WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E6;suc=01E6
-cp;01E8;cf=01E9;CWCF;CWKCF;CWL;dm=004B 030C;dt=Can;na=LATIN CAPITAL LETTER K WITH CARON;NFD_QC=N;NFKC_CF=01E9;NFKC_SCF=01E9;NFKD_QC=N;scf=01E9;slc=01E9;Upper
-cp;01E9;CWT;CWU;dm=006B 030C;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER K WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E8;suc=01E8
-cp;01EA;cf=01EB;CWCF;CWKCF;CWL;dm=004F 0328;dt=Can;na=LATIN CAPITAL LETTER O WITH OGONEK;NFD_QC=N;NFKC_CF=01EB;NFKC_SCF=01EB;NFKD_QC=N;scf=01EB;slc=01EB;Upper
-cp;01EB;CWT;CWU;dm=006F 0328;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH OGONEK;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EA;suc=01EA
-cp;01EC;cf=01ED;CWCF;CWKCF;CWL;dm=01EA 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;NFD_QC=N;NFKC_CF=01ED;NFKC_SCF=01ED;NFKD_QC=N;scf=01ED;slc=01ED;Upper
-cp;01ED;CWT;CWU;dm=01EB 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH OGONEK AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EC;suc=01EC
-cp;01EE;cf=01EF;CWCF;CWKCF;CWL;dm=01B7 030C;dt=Can;na=LATIN CAPITAL LETTER EZH WITH CARON;NFD_QC=N;NFKC_CF=01EF;NFKC_SCF=01EF;NFKD_QC=N;scf=01EF;slc=01EF;Upper
-cp;01EF;CWT;CWU;dm=0292 030C;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER EZH WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EE;suc=01EE
-cp;01F0;cf=006A 030C;CWT;CWU;dm=006A 030C;dt=Can;gc=Ll;lc=01F0;Lower;na=LATIN SMALL LETTER J WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;tc=004A 030C;uc=004A 030C
-cp;01F1;cf=01F3;CWCF;CWKCF;CWL;CWT;dm=0044 005A;dt=Com;na=LATIN CAPITAL LETTER DZ;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;scf=01F3;slc=01F3;stc=01F2;Upper
-cp;01F2;cf=01F3;CWCF;CWKCF;CWL;CWU;dm=0044 007A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER D WITH SMALL LETTER Z;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;scf=01F3;slc=01F3;stc=01F2;suc=01F1
-cp;01F3;CWKCF;CWT;CWU;dm=0064 007A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER DZ;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;SB=LO;stc=01F2;suc=01F1
-cp;01F4;cf=01F5;CWCF;CWKCF;CWL;dm=0047 0301;dt=Can;na=LATIN CAPITAL LETTER G WITH ACUTE;NFD_QC=N;NFKC_CF=01F5;NFKC_SCF=01F5;NFKD_QC=N;scf=01F5;slc=01F5;Upper
-cp;01F5;CWT;CWU;dm=0067 0301;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER G WITH ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01F4;suc=01F4
-cp;01F6;age=3.0;cf=0195;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER HWAIR;NFKC_CF=0195;NFKC_SCF=0195;scf=0195;slc=0195;Upper
-cp;01F7;age=3.0;cf=01BF;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER WYNN;NFKC_CF=01BF;NFKC_SCF=01BF;scf=01BF;slc=01BF;Upper
-cp;01F8;age=3.0;cf=01F9;CWCF;CWKCF;CWL;dm=004E 0300;dt=Can;na=LATIN CAPITAL LETTER N WITH GRAVE;NFD_QC=N;NFKC_CF=01F9;NFKC_SCF=01F9;NFKD_QC=N;scf=01F9;slc=01F9;Upper
-cp;01F9;age=3.0;CWT;CWU;dm=006E 0300;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER N WITH GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01F8;suc=01F8
-cp;01FA;cf=01FB;CWCF;CWKCF;CWL;dm=00C5 0301;dt=Can;na=LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;NFD_QC=N;NFKC_CF=01FB;NFKC_SCF=01FB;NFKD_QC=N;scf=01FB;slc=01FB;Upper
-cp;01FB;CWT;CWU;dm=00E5 0301;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FA;suc=01FA
-cp;01FC;cf=01FD;CWCF;CWKCF;CWL;dm=00C6 0301;dt=Can;na=LATIN CAPITAL LETTER AE WITH ACUTE;NFD_QC=N;NFKC_CF=01FD;NFKC_SCF=01FD;NFKD_QC=N;scf=01FD;slc=01FD;Upper
-cp;01FD;CWT;CWU;dm=00E6 0301;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER AE WITH ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FC;suc=01FC
-cp;01FE;cf=01FF;CWCF;CWKCF;CWL;dm=00D8 0301;dt=Can;na=LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;NFD_QC=N;NFKC_CF=01FF;NFKC_SCF=01FF;NFKD_QC=N;scf=01FF;slc=01FF;Upper
-cp;01FF;CWT;CWU;dm=00F8 0301;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH STROKE AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FE;suc=01FE
+cp;01DD;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER TURNED E;SB=LO;stc=018E;suc=018E
+cp;01DE;cf=01DF;CWCF;CWKCF;CWL;dm=00C4 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=01DF;NFKC_SCF=01DF;NFKD_QC=N;scf=01DF;slc=01DF;Upper
+cp;01DF;CWT;CWU;dm=00E4 0304;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01DE;suc=01DE
+cp;01E0;cf=01E1;CWCF;CWKCF;CWL;dm=0226 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKC_CF=01E1;NFKC_SCF=01E1;NFKD_QC=N;scf=01E1;slc=01E1;Upper
+cp;01E1;CWT;CWU;dm=0227 0304;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E0;suc=01E0
+cp;01E2;cf=01E3;CWCF;CWKCF;CWL;dm=00C6 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER AE WITH MACRON;NFD_QC=N;NFKC_CF=01E3;NFKC_SCF=01E3;NFKD_QC=N;scf=01E3;slc=01E3;Upper
+cp;01E3;CWT;CWU;dm=00E6 0304;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER AE WITH MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E2;suc=01E2
+cp;01E4;cf=01E5;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER G WITH STROKE;NFKC_CF=01E5;NFKC_SCF=01E5;scf=01E5;slc=01E5;Upper
+cp;01E5;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER G WITH STROKE;SB=LO;stc=01E4;suc=01E4
+cp;01E6;cf=01E7;CWCF;CWKCF;CWL;dm=0047 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER G WITH CARON;NFD_QC=N;NFKC_CF=01E7;NFKC_SCF=01E7;NFKD_QC=N;scf=01E7;slc=01E7;Upper
+cp;01E7;CWT;CWU;dm=0067 030C;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER G WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E6;suc=01E6
+cp;01E8;cf=01E9;CWCF;CWKCF;CWL;dm=004B 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER K WITH CARON;NFD_QC=N;NFKC_CF=01E9;NFKC_SCF=01E9;NFKD_QC=N;scf=01E9;slc=01E9;Upper
+cp;01E9;CWT;CWU;dm=006B 030C;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER K WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E8;suc=01E8
+cp;01EA;cf=01EB;CWCF;CWKCF;CWL;dm=004F 0328;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH OGONEK;NFD_QC=N;NFKC_CF=01EB;NFKC_SCF=01EB;NFKD_QC=N;scf=01EB;slc=01EB;Upper
+cp;01EB;CWT;CWU;dm=006F 0328;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH OGONEK;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EA;suc=01EA
+cp;01EC;cf=01ED;CWCF;CWKCF;CWL;dm=01EA 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;NFD_QC=N;NFKC_CF=01ED;NFKC_SCF=01ED;NFKD_QC=N;scf=01ED;slc=01ED;Upper
+cp;01ED;CWT;CWU;dm=01EB 0304;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH OGONEK AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EC;suc=01EC
+cp;01EE;cf=01EF;CWCF;CWKCF;CWL;dm=01B7 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER EZH WITH CARON;NFD_QC=N;NFKC_CF=01EF;NFKC_SCF=01EF;NFKD_QC=N;scf=01EF;slc=01EF;Upper
+cp;01EF;CWT;CWU;dm=0292 030C;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER EZH WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EE;suc=01EE
+cp;01F0;cf=006A 030C;CWT;CWU;dm=006A 030C;dt=Can;gc=Ll;Identifier_Status=Allowed;lc=01F0;Lower;na=LATIN SMALL LETTER J WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;tc=004A 030C;uc=004A 030C
+cp;01F1;cf=01F3;CWCF;CWKCF;CWL;CWT;dm=0044 005A;dt=Com;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER DZ;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;scf=01F3;slc=01F3;stc=01F2;Upper
+cp;01F2;cf=01F3;CWCF;CWKCF;CWL;CWU;dm=0044 007A;dt=Com;gc=Lt;Identifier_Type=Not_NFKC;na=LATIN CAPITAL LETTER D WITH SMALL LETTER Z;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;scf=01F3;slc=01F3;stc=01F2;suc=01F1
+cp;01F3;CWKCF;CWT;CWU;dm=0064 007A;dt=Com;gc=Ll;Identifier_Type=Not_NFKC;Lower;na=LATIN SMALL LETTER DZ;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;SB=LO;stc=01F2;suc=01F1
+cp;01F4;cf=01F5;CWCF;CWKCF;CWL;dm=0047 0301;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER G WITH ACUTE;NFD_QC=N;NFKC_CF=01F5;NFKC_SCF=01F5;NFKD_QC=N;scf=01F5;slc=01F5;Upper
+cp;01F5;CWT;CWU;dm=0067 0301;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER G WITH ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01F4;suc=01F4
+cp;01F6;age=3.0;cf=0195;CWCF;CWKCF;CWL;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER HWAIR;NFKC_CF=0195;NFKC_SCF=0195;scf=0195;slc=0195;Upper
+cp;01F7;age=3.0;cf=01BF;CWCF;CWKCF;CWL;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER WYNN;NFKC_CF=01BF;NFKC_SCF=01BF;scf=01BF;slc=01BF;Upper
+cp;01F8;age=3.0;cf=01F9;CWCF;CWKCF;CWL;dm=004E 0300;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER N WITH GRAVE;NFD_QC=N;NFKC_CF=01F9;NFKC_SCF=01F9;NFKD_QC=N;scf=01F9;slc=01F9;Upper
+cp;01F9;age=3.0;CWT;CWU;dm=006E 0300;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER N WITH GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01F8;suc=01F8
+cp;01FA;cf=01FB;CWCF;CWKCF;CWL;dm=00C5 0301;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;NFD_QC=N;NFKC_CF=01FB;NFKC_SCF=01FB;NFKD_QC=N;scf=01FB;slc=01FB;Upper
+cp;01FB;CWT;CWU;dm=00E5 0301;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FA;suc=01FA
+cp;01FC;cf=01FD;CWCF;CWKCF;CWL;dm=00C6 0301;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER AE WITH ACUTE;NFD_QC=N;NFKC_CF=01FD;NFKC_SCF=01FD;NFKD_QC=N;scf=01FD;slc=01FD;Upper
+cp;01FD;CWT;CWU;dm=00E6 0301;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER AE WITH ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FC;suc=01FC
+cp;01FE;cf=01FF;CWCF;CWKCF;CWL;dm=00D8 0301;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;NFD_QC=N;NFKC_CF=01FF;NFKC_SCF=01FF;NFKD_QC=N;scf=01FF;slc=01FF;Upper
+cp;01FF;CWT;CWU;dm=00F8 0301;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH STROKE AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FE;suc=01FE
# Additions for Slovenian
-cp;0200;cf=0201;CWCF;CWKCF;CWL;dm=0041 030F;dt=Can;na=LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0201;NFKC_SCF=0201;NFKD_QC=N;scf=0201;slc=0201;Upper
-cp;0201;CWT;CWU;dm=0061 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0200;suc=0200
-cp;0202;cf=0203;CWCF;CWKCF;CWL;dm=0041 0311;dt=Can;na=LATIN CAPITAL LETTER A WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0203;NFKC_SCF=0203;NFKD_QC=N;scf=0203;slc=0203;Upper
-cp;0203;CWT;CWU;dm=0061 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0202;suc=0202
-cp;0204;cf=0205;CWCF;CWKCF;CWL;dm=0045 030F;dt=Can;na=LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0205;NFKC_SCF=0205;NFKD_QC=N;scf=0205;slc=0205;Upper
-cp;0205;CWT;CWU;dm=0065 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0204;suc=0204
-cp;0206;cf=0207;CWCF;CWKCF;CWL;dm=0045 0311;dt=Can;na=LATIN CAPITAL LETTER E WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0207;NFKC_SCF=0207;NFKD_QC=N;scf=0207;slc=0207;Upper
-cp;0207;CWT;CWU;dm=0065 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0206;suc=0206
-cp;0208;cf=0209;CWCF;CWKCF;CWL;dm=0049 030F;dt=Can;na=LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0209;NFKC_SCF=0209;NFKD_QC=N;scf=0209;slc=0209;Upper
-cp;0209;CWT;CWU;dm=0069 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER I WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0208;suc=0208
-cp;020A;cf=020B;CWCF;CWKCF;CWL;dm=0049 0311;dt=Can;na=LATIN CAPITAL LETTER I WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=020B;NFKC_SCF=020B;NFKD_QC=N;scf=020B;slc=020B;Upper
-cp;020B;CWT;CWU;dm=0069 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER I WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020A;suc=020A
-cp;020C;cf=020D;CWCF;CWKCF;CWL;dm=004F 030F;dt=Can;na=LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=020D;NFKC_SCF=020D;NFKD_QC=N;scf=020D;slc=020D;Upper
-cp;020D;CWT;CWU;dm=006F 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020C;suc=020C
-cp;020E;cf=020F;CWCF;CWKCF;CWL;dm=004F 0311;dt=Can;na=LATIN CAPITAL LETTER O WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=020F;NFKC_SCF=020F;NFKD_QC=N;scf=020F;slc=020F;Upper
-cp;020F;CWT;CWU;dm=006F 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020E;suc=020E
-cp;0210;cf=0211;CWCF;CWKCF;CWL;dm=0052 030F;dt=Can;na=LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0211;NFKC_SCF=0211;NFKD_QC=N;scf=0211;slc=0211;Upper
-cp;0211;CWT;CWU;dm=0072 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER R WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0210;suc=0210
-cp;0212;cf=0213;CWCF;CWKCF;CWL;dm=0052 0311;dt=Can;na=LATIN CAPITAL LETTER R WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0213;NFKC_SCF=0213;NFKD_QC=N;scf=0213;slc=0213;Upper
-cp;0213;CWT;CWU;dm=0072 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER R WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0212;suc=0212
-cp;0214;cf=0215;CWCF;CWKCF;CWL;dm=0055 030F;dt=Can;na=LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0215;NFKC_SCF=0215;NFKD_QC=N;scf=0215;slc=0215;Upper
-cp;0215;CWT;CWU;dm=0075 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0214;suc=0214
-cp;0216;cf=0217;CWCF;CWKCF;CWL;dm=0055 0311;dt=Can;na=LATIN CAPITAL LETTER U WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0217;NFKC_SCF=0217;NFKD_QC=N;scf=0217;slc=0217;Upper
-cp;0217;CWT;CWU;dm=0075 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0216;suc=0216
+cp;0200;cf=0201;CWCF;CWKCF;CWL;dm=0041 030F;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0201;NFKC_SCF=0201;NFKD_QC=N;scf=0201;slc=0201;Upper
+cp;0201;CWT;CWU;dm=0061 030F;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER A WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0200;suc=0200
+cp;0202;cf=0203;CWCF;CWKCF;CWL;dm=0041 0311;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER A WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0203;NFKC_SCF=0203;NFKD_QC=N;scf=0203;slc=0203;Upper
+cp;0203;CWT;CWU;dm=0061 0311;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER A WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0202;suc=0202
+cp;0204;cf=0205;CWCF;CWKCF;CWL;dm=0045 030F;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0205;NFKC_SCF=0205;NFKD_QC=N;scf=0205;slc=0205;Upper
+cp;0205;CWT;CWU;dm=0065 030F;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER E WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0204;suc=0204
+cp;0206;cf=0207;CWCF;CWKCF;CWL;dm=0045 0311;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER E WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0207;NFKC_SCF=0207;NFKD_QC=N;scf=0207;slc=0207;Upper
+cp;0207;CWT;CWU;dm=0065 0311;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER E WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0206;suc=0206
+cp;0208;cf=0209;CWCF;CWKCF;CWL;dm=0049 030F;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0209;NFKC_SCF=0209;NFKD_QC=N;scf=0209;slc=0209;Upper
+cp;0209;CWT;CWU;dm=0069 030F;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER I WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0208;suc=0208
+cp;020A;cf=020B;CWCF;CWKCF;CWL;dm=0049 0311;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER I WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=020B;NFKC_SCF=020B;NFKD_QC=N;scf=020B;slc=020B;Upper
+cp;020B;CWT;CWU;dm=0069 0311;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER I WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020A;suc=020A
+cp;020C;cf=020D;CWCF;CWKCF;CWL;dm=004F 030F;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=020D;NFKC_SCF=020D;NFKD_QC=N;scf=020D;slc=020D;Upper
+cp;020D;CWT;CWU;dm=006F 030F;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020C;suc=020C
+cp;020E;cf=020F;CWCF;CWKCF;CWL;dm=004F 0311;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=020F;NFKC_SCF=020F;NFKD_QC=N;scf=020F;slc=020F;Upper
+cp;020F;CWT;CWU;dm=006F 0311;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020E;suc=020E
+cp;0210;cf=0211;CWCF;CWKCF;CWL;dm=0052 030F;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0211;NFKC_SCF=0211;NFKD_QC=N;scf=0211;slc=0211;Upper
+cp;0211;CWT;CWU;dm=0072 030F;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER R WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0210;suc=0210
+cp;0212;cf=0213;CWCF;CWKCF;CWL;dm=0052 0311;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER R WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0213;NFKC_SCF=0213;NFKD_QC=N;scf=0213;slc=0213;Upper
+cp;0213;CWT;CWU;dm=0072 0311;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER R WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0212;suc=0212
+cp;0214;cf=0215;CWCF;CWKCF;CWL;dm=0055 030F;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0215;NFKC_SCF=0215;NFKD_QC=N;scf=0215;slc=0215;Upper
+cp;0215;CWT;CWU;dm=0075 030F;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER U WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0214;suc=0214
+cp;0216;cf=0217;CWCF;CWKCF;CWL;dm=0055 0311;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER U WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0217;NFKC_SCF=0217;NFKD_QC=N;scf=0217;slc=0217;Upper
+cp;0217;CWT;CWU;dm=0075 0311;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER U WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0216;suc=0216
# Additions for Romanian
-cp;0218;age=3.0;cf=0219;CWCF;CWKCF;CWL;dm=0053 0326;dt=Can;na=LATIN CAPITAL LETTER S WITH COMMA BELOW;NFD_QC=N;NFKC_CF=0219;NFKC_SCF=0219;NFKD_QC=N;scf=0219;slc=0219;Upper
-cp;0219;age=3.0;CWT;CWU;dm=0073 0326;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER S WITH COMMA BELOW;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0218;suc=0218
-cp;021A;age=3.0;cf=021B;CWCF;CWKCF;CWL;dm=0054 0326;dt=Can;na=LATIN CAPITAL LETTER T WITH COMMA BELOW;NFD_QC=N;NFKC_CF=021B;NFKC_SCF=021B;NFKD_QC=N;scf=021B;slc=021B;Upper
-cp;021B;age=3.0;CWT;CWU;dm=0074 0326;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER T WITH COMMA BELOW;NFD_QC=N;NFKD_QC=N;SB=LO;stc=021A;suc=021A
+cp;0218;age=3.0;cf=0219;CWCF;CWKCF;CWL;dm=0053 0326;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER S WITH COMMA BELOW;NFD_QC=N;NFKC_CF=0219;NFKC_SCF=0219;NFKD_QC=N;scf=0219;slc=0219;Upper
+cp;0219;age=3.0;CWT;CWU;dm=0073 0326;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER S WITH COMMA BELOW;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0218;suc=0218
+cp;021A;age=3.0;cf=021B;CWCF;CWKCF;CWL;dm=0054 0326;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER T WITH COMMA BELOW;NFD_QC=N;NFKC_CF=021B;NFKC_SCF=021B;NFKD_QC=N;scf=021B;slc=021B;Upper
+cp;021B;age=3.0;CWT;CWU;dm=0074 0326;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER T WITH COMMA BELOW;NFD_QC=N;NFKD_QC=N;SB=LO;stc=021A;suc=021A
# Miscellaneous additions
-cp;021C;age=3.0;cf=021D;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER YOGH;NFKC_CF=021D;NFKC_SCF=021D;scf=021D;slc=021D;Upper
-cp;021D;age=3.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER YOGH;SB=LO;stc=021C;suc=021C
-cp;021E;age=3.0;cf=021F;CWCF;CWKCF;CWL;dm=0048 030C;dt=Can;na=LATIN CAPITAL LETTER H WITH CARON;NFD_QC=N;NFKC_CF=021F;NFKC_SCF=021F;NFKD_QC=N;scf=021F;slc=021F;Upper
-cp;021F;age=3.0;CWT;CWU;dm=0068 030C;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER H WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=021E;suc=021E
-cp;0220;age=3.2;cf=019E;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;NFKC_CF=019E;NFKC_SCF=019E;scf=019E;slc=019E;Upper
-cp;0221;age=4.0;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER D WITH CURL;SB=LO
-cp;0222;age=3.0;cf=0223;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OU;NFKC_CF=0223;NFKC_SCF=0223;scf=0223;slc=0223;Upper
-cp;0223;age=3.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER OU;SB=LO;stc=0222;suc=0222
-cp;0224;age=3.0;cf=0225;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Z WITH HOOK;NFKC_CF=0225;NFKC_SCF=0225;scf=0225;slc=0225;Upper
-cp;0225;age=3.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Z WITH HOOK;SB=LO;stc=0224;suc=0224
-cp;0226;age=3.0;cf=0227;CWCF;CWKCF;CWL;dm=0041 0307;dt=Can;na=LATIN CAPITAL LETTER A WITH DOT ABOVE;NFD_QC=N;NFKC_CF=0227;NFKC_SCF=0227;NFKD_QC=N;scf=0227;slc=0227;Upper
-cp;0227;age=3.0;CWT;CWU;dm=0061 0307;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH DOT ABOVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0226;suc=0226
-cp;0228;age=3.0;cf=0229;CWCF;CWKCF;CWL;dm=0045 0327;dt=Can;na=LATIN CAPITAL LETTER E WITH CEDILLA;NFD_QC=N;NFKC_CF=0229;NFKC_SCF=0229;NFKD_QC=N;scf=0229;slc=0229;Upper
-cp;0229;age=3.0;CWT;CWU;dm=0065 0327;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH CEDILLA;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0228;suc=0228
+cp;021C;age=3.0;cf=021D;CWCF;CWKCF;CWL;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER YOGH;NFKC_CF=021D;NFKC_SCF=021D;scf=021D;slc=021D;Upper
+cp;021D;age=3.0;CWT;CWU;gc=Ll;Identifier_Type=Obsolete;Lower;na=LATIN SMALL LETTER YOGH;SB=LO;stc=021C;suc=021C
+cp;021E;age=3.0;cf=021F;CWCF;CWKCF;CWL;dm=0048 030C;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER H WITH CARON;NFD_QC=N;NFKC_CF=021F;NFKC_SCF=021F;NFKD_QC=N;scf=021F;slc=021F;Upper
+cp;021F;age=3.0;CWT;CWU;dm=0068 030C;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER H WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=021E;suc=021E
+cp;0220;age=3.2;cf=019E;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;NFKC_CF=019E;NFKC_SCF=019E;scf=019E;slc=019E;Upper
+cp;0221;age=4.0;-CWCM;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER D WITH CURL;SB=LO
+cp;0222;age=3.0;cf=0223;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER OU;NFKC_CF=0223;NFKC_SCF=0223;scf=0223;slc=0223;Upper
+cp;0223;age=3.0;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER OU;SB=LO;stc=0222;suc=0222
+cp;0224;age=3.0;cf=0225;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER Z WITH HOOK;NFKC_CF=0225;NFKC_SCF=0225;scf=0225;slc=0225;Upper
+cp;0225;age=3.0;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER Z WITH HOOK;SB=LO;stc=0224;suc=0224
+cp;0226;age=3.0;cf=0227;CWCF;CWKCF;CWL;dm=0041 0307;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER A WITH DOT ABOVE;NFD_QC=N;NFKC_CF=0227;NFKC_SCF=0227;NFKD_QC=N;scf=0227;slc=0227;Upper
+cp;0227;age=3.0;CWT;CWU;dm=0061 0307;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER A WITH DOT ABOVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0226;suc=0226
+cp;0228;age=3.0;cf=0229;CWCF;CWKCF;CWL;dm=0045 0327;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER E WITH CEDILLA;NFD_QC=N;NFKC_CF=0229;NFKC_SCF=0229;NFKD_QC=N;scf=0229;slc=0229;Upper
+cp;0229;age=3.0;CWT;CWU;dm=0065 0327;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER E WITH CEDILLA;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0228;suc=0228
# Additions for Livonian
-cp;022A;age=3.0;cf=022B;CWCF;CWKCF;CWL;dm=00D6 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=022B;NFKC_SCF=022B;NFKD_QC=N;scf=022B;slc=022B;Upper
-cp;022B;age=3.0;CWT;CWU;dm=00F6 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022A;suc=022A
-cp;022C;age=3.0;cf=022D;CWCF;CWKCF;CWL;dm=00D5 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH TILDE AND MACRON;NFD_QC=N;NFKC_CF=022D;NFKC_SCF=022D;NFKD_QC=N;scf=022D;slc=022D;Upper
-cp;022D;age=3.0;CWT;CWU;dm=00F5 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH TILDE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022C;suc=022C
-cp;022E;age=3.0;cf=022F;CWCF;CWKCF;CWL;dm=004F 0307;dt=Can;na=LATIN CAPITAL LETTER O WITH DOT ABOVE;NFD_QC=N;NFKC_CF=022F;NFKC_SCF=022F;NFKD_QC=N;scf=022F;slc=022F;Upper
-cp;022F;age=3.0;CWT;CWU;dm=006F 0307;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH DOT ABOVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022E;suc=022E
-cp;0230;age=3.0;cf=0231;CWCF;CWKCF;CWL;dm=022E 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKC_CF=0231;NFKC_SCF=0231;NFKD_QC=N;scf=0231;slc=0231;Upper
-cp;0231;age=3.0;CWT;CWU;dm=022F 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0230;suc=0230
-cp;0232;age=3.0;cf=0233;CWCF;CWKCF;CWL;dm=0059 0304;dt=Can;na=LATIN CAPITAL LETTER Y WITH MACRON;NFD_QC=N;NFKC_CF=0233;NFKC_SCF=0233;NFKD_QC=N;scf=0233;slc=0233;Upper
-cp;0233;age=3.0;CWT;CWU;dm=0079 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER Y WITH MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0232;suc=0232
+cp;022A;age=3.0;cf=022B;CWCF;CWKCF;CWL;dm=00D6 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=022B;NFKC_SCF=022B;NFKD_QC=N;scf=022B;slc=022B;Upper
+cp;022B;age=3.0;CWT;CWU;dm=00F6 0304;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022A;suc=022A
+cp;022C;age=3.0;cf=022D;CWCF;CWKCF;CWL;dm=00D5 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH TILDE AND MACRON;NFD_QC=N;NFKC_CF=022D;NFKC_SCF=022D;NFKD_QC=N;scf=022D;slc=022D;Upper
+cp;022D;age=3.0;CWT;CWU;dm=00F5 0304;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH TILDE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022C;suc=022C
+cp;022E;age=3.0;cf=022F;CWCF;CWKCF;CWL;dm=004F 0307;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH DOT ABOVE;NFD_QC=N;NFKC_CF=022F;NFKC_SCF=022F;NFKD_QC=N;scf=022F;slc=022F;Upper
+cp;022F;age=3.0;CWT;CWU;dm=006F 0307;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH DOT ABOVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022E;suc=022E
+cp;0230;age=3.0;cf=0231;CWCF;CWKCF;CWL;dm=022E 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKC_CF=0231;NFKC_SCF=0231;NFKD_QC=N;scf=0231;slc=0231;Upper
+cp;0231;age=3.0;CWT;CWU;dm=022F 0304;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0230;suc=0230
+cp;0232;age=3.0;cf=0233;CWCF;CWKCF;CWL;dm=0059 0304;dt=Can;Identifier_Status=Allowed;na=LATIN CAPITAL LETTER Y WITH MACRON;NFD_QC=N;NFKC_CF=0233;NFKC_SCF=0233;NFKD_QC=N;scf=0233;slc=0233;Upper
+cp;0233;age=3.0;CWT;CWU;dm=0079 0304;dt=Can;gc=Ll;Identifier_Status=Allowed;Lower;na=LATIN SMALL LETTER Y WITH MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0232;suc=0232
# Additions for Sinology
-cp;0234;age=4.0;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER L WITH CURL;SB=LO
-cp;0235;age=4.0;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER N WITH CURL;SB=LO
-cp;0236;age=4.0;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER T WITH CURL;SB=LO
+cp;0234;age=4.0;-CWCM;gc=Ll;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER L WITH CURL;SB=LO
+cp;0235;age=4.0;-CWCM;gc=Ll;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER N WITH CURL;SB=LO
+cp;0236;age=4.0;-CWCM;gc=Ll;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER T WITH CURL;SB=LO
# Miscellaneous addition
-cp;0237;age=4.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER DOTLESS J;SB=LO
+cp;0237;age=4.1;-CWCM;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER DOTLESS J;SB=LO
# Additions for Africanist linguistics
-cp;0238;age=4.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER DB DIGRAPH;SB=LO
-cp;0239;age=4.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER QP DIGRAPH;SB=LO
+cp;0238;age=4.1;-CWCM;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER DB DIGRAPH;SB=LO
+cp;0239;age=4.1;-CWCM;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER QP DIGRAPH;SB=LO
# Additions for Sencoten
-cp;023A;age=4.1;cf=2C65;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER A WITH STROKE;NFKC_CF=2C65;NFKC_SCF=2C65;scf=2C65;slc=2C65;Upper
-cp;023B;age=4.1;cf=023C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER C WITH STROKE;NFKC_CF=023C;NFKC_SCF=023C;scf=023C;slc=023C;Upper
-cp;023C;age=4.1;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER C WITH STROKE;SB=LO;stc=023B;suc=023B
-cp;023D;age=4.1;cf=019A;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER L WITH BAR;NFKC_CF=019A;NFKC_SCF=019A;scf=019A;slc=019A;Upper
-cp;023E;age=4.1;cf=2C66;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;NFKC_CF=2C66;NFKC_SCF=2C66;scf=2C66;slc=2C66;Upper
+cp;023A;age=4.1;cf=2C65;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER A WITH STROKE;NFKC_CF=2C65;NFKC_SCF=2C65;scf=2C65;slc=2C65;Upper
+cp;023B;age=4.1;cf=023C;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER C WITH STROKE;NFKC_CF=023C;NFKC_SCF=023C;scf=023C;slc=023C;Upper
+cp;023C;age=4.1;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER C WITH STROKE;SB=LO;stc=023B;suc=023B
+cp;023D;age=4.1;cf=019A;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER L WITH BAR;NFKC_CF=019A;NFKC_SCF=019A;scf=019A;slc=019A;Upper
+cp;023E;age=4.1;cf=2C66;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;NFKC_CF=2C66;NFKC_SCF=2C66;scf=2C66;slc=2C66;Upper
# Additions for Africanist linguistics
-cp;023F;age=4.1;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER S WITH SWASH TAIL;SB=LO;stc=2C7E;suc=2C7E
-cp;0240;age=4.1;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Z WITH SWASH TAIL;SB=LO;stc=2C7F;suc=2C7F
+cp;023F;age=4.1;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER S WITH SWASH TAIL;SB=LO;stc=2C7E;suc=2C7E
+cp;0240;age=4.1;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER Z WITH SWASH TAIL;SB=LO;stc=2C7F;suc=2C7F
# Miscellaneous additions
-cp;0241;age=4.1;cf=0242;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER GLOTTAL STOP;NFKC_CF=0242;NFKC_SCF=0242;scf=0242;slc=0242;Upper
-cp;0242;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER GLOTTAL STOP;SB=LO;stc=0241;suc=0241
-cp;0243;age=5.0;cf=0180;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH STROKE;NFKC_CF=0180;NFKC_SCF=0180;scf=0180;slc=0180;Upper
-cp;0244;age=5.0;cf=0289;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER U BAR;NFKC_CF=0289;NFKC_SCF=0289;scf=0289;slc=0289;Upper
-cp;0245;age=5.0;cf=028C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TURNED V;NFKC_CF=028C;NFKC_SCF=028C;scf=028C;slc=028C;Upper
-cp;0246;age=5.0;cf=0247;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER E WITH STROKE;NFKC_CF=0247;NFKC_SCF=0247;scf=0247;slc=0247;Upper
-cp;0247;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH STROKE;SB=LO;stc=0246;suc=0246
-cp;0248;age=5.0;cf=0249;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER J WITH STROKE;NFKC_CF=0249;NFKC_SCF=0249;scf=0249;slc=0249;Upper
-cp;0249;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER J WITH STROKE;SB=LO;SD;stc=0248;suc=0248
-cp;024A;age=5.0;cf=024B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;NFKC_CF=024B;NFKC_SCF=024B;scf=024B;slc=024B;Upper
-cp;024B;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Q WITH HOOK TAIL;SB=LO;stc=024A;suc=024A
-cp;024C;age=5.0;cf=024D;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER R WITH STROKE;NFKC_CF=024D;NFKC_SCF=024D;scf=024D;slc=024D;Upper
-cp;024D;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER R WITH STROKE;SB=LO;stc=024C;suc=024C
-cp;024E;age=5.0;cf=024F;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Y WITH STROKE;NFKC_CF=024F;NFKC_SCF=024F;scf=024F;slc=024F;Upper
-cp;024F;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Y WITH STROKE;SB=LO;stc=024E;suc=024E
-
-block;0250..02AF;age=1.1;Alpha;blk=IPA_Ext;Cased;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;0241;age=4.1;cf=0242;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER GLOTTAL STOP;NFKC_CF=0242;NFKC_SCF=0242;scf=0242;slc=0242;Upper
+cp;0242;age=5.0;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER GLOTTAL STOP;SB=LO;stc=0241;suc=0241
+cp;0243;age=5.0;cf=0180;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER B WITH STROKE;NFKC_CF=0180;NFKC_SCF=0180;scf=0180;slc=0180;Upper
+cp;0244;age=5.0;cf=0289;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER U BAR;NFKC_CF=0289;NFKC_SCF=0289;scf=0289;slc=0289;Upper
+cp;0245;age=5.0;cf=028C;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER TURNED V;NFKC_CF=028C;NFKC_SCF=028C;scf=028C;slc=028C;Upper
+cp;0246;age=5.0;cf=0247;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER E WITH STROKE;NFKC_CF=0247;NFKC_SCF=0247;scf=0247;slc=0247;Upper
+cp;0247;age=5.0;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER E WITH STROKE;SB=LO;stc=0246;suc=0246
+cp;0248;age=5.0;cf=0249;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER J WITH STROKE;NFKC_CF=0249;NFKC_SCF=0249;scf=0249;slc=0249;Upper
+cp;0249;age=5.0;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER J WITH STROKE;SB=LO;SD;stc=0248;suc=0248
+cp;024A;age=5.0;cf=024B;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;NFKC_CF=024B;NFKC_SCF=024B;scf=024B;slc=024B;Upper
+cp;024B;age=5.0;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER Q WITH HOOK TAIL;SB=LO;stc=024A;suc=024A
+cp;024C;age=5.0;cf=024D;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER R WITH STROKE;NFKC_CF=024D;NFKC_SCF=024D;scf=024D;slc=024D;Upper
+cp;024D;age=5.0;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER R WITH STROKE;SB=LO;stc=024C;suc=024C
+cp;024E;age=5.0;cf=024F;CWCF;CWKCF;CWL;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER Y WITH STROKE;NFKC_CF=024F;NFKC_SCF=024F;scf=024F;slc=024F;Upper
+cp;024F;age=5.0;CWT;CWU;gc=Ll;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER Y WITH STROKE;SB=LO;stc=024E;suc=024E
+
+block;0250..02AF;age=1.1;Alpha;blk=IPA_Ext;Cased;gc=Ll;Gr_Base;IDC;Identifier_Type=Technical;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 0250..02AF IPA Extensions
# IPA extensions
cp;0250;CWCM;CWT;CWU;na=LATIN SMALL LETTER TURNED A;stc=2C6F;suc=2C6F
cp;0251;CWCM;CWT;CWU;ea=A;na=LATIN SMALL LETTER ALPHA;stc=2C6D;suc=2C6D
cp;0252;CWCM;CWT;CWU;na=LATIN SMALL LETTER TURNED ALPHA;stc=2C70;suc=2C70
-cp;0253;CWCM;CWT;CWU;na=LATIN SMALL LETTER B WITH HOOK;stc=0181;suc=0181
-cp;0254;CWCM;CWT;CWU;na=LATIN SMALL LETTER OPEN O;stc=0186;suc=0186
+cp;0253;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER B WITH HOOK;stc=0181;suc=0181
+cp;0254;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER OPEN O;stc=0186;suc=0186
cp;0255;na=LATIN SMALL LETTER C WITH CURL
-cp;0256;CWCM;CWT;CWU;na=LATIN SMALL LETTER D WITH TAIL;stc=0189;suc=0189
-cp;0257;CWCM;CWT;CWU;na=LATIN SMALL LETTER D WITH HOOK;stc=018A;suc=018A
+cp;0256;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER D WITH TAIL;stc=0189;suc=0189
+cp;0257;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER D WITH HOOK;stc=018A;suc=018A
cp;0258;na=LATIN SMALL LETTER REVERSED E
-cp;0259;CWCM;CWT;CWU;na=LATIN SMALL LETTER SCHWA;stc=018F;suc=018F
+cp;0259;CWCM;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN SMALL LETTER SCHWA;stc=018F;suc=018F
cp;025A;na=LATIN SMALL LETTER SCHWA WITH HOOK
-cp;025B;CWCM;CWT;CWU;na=LATIN SMALL LETTER OPEN E;stc=0190;suc=0190
+cp;025B;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER OPEN E;stc=0190;suc=0190
cp;025C;CWCM;CWT;CWU;na=LATIN SMALL LETTER REVERSED OPEN E;stc=A7AB;suc=A7AB
cp;025D;na=LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
cp;025E;na=LATIN SMALL LETTER CLOSED REVERSED OPEN E
@@ -1952,13 +1969,13 @@ cp;025F;na=LATIN SMALL LETTER DOTLESS J WITH STROKE
cp;0260;CWCM;CWT;CWU;na=LATIN SMALL LETTER G WITH HOOK;stc=0193;suc=0193
cp;0261;CWCM;CWT;CWU;ea=A;na=LATIN SMALL LETTER SCRIPT G;stc=A7AC;suc=A7AC
cp;0262;na=LATIN LETTER SMALL CAPITAL G
-cp;0263;CWCM;CWT;CWU;na=LATIN SMALL LETTER GAMMA;stc=0194;suc=0194
+cp;0263;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER GAMMA;stc=0194;suc=0194
cp;0264;na=LATIN SMALL LETTER RAMS HORN
cp;0265;CWCM;CWT;CWU;na=LATIN SMALL LETTER TURNED H;stc=A78D;suc=A78D
cp;0266;CWCM;CWT;CWU;na=LATIN SMALL LETTER H WITH HOOK;stc=A7AA;suc=A7AA
cp;0267;na=LATIN SMALL LETTER HENG WITH HOOK
-cp;0268;CWCM;CWT;CWU;na=LATIN SMALL LETTER I WITH STROKE;SD;stc=0197;suc=0197
-cp;0269;CWCM;CWT;CWU;na=LATIN SMALL LETTER IOTA;stc=0196;suc=0196
+cp;0268;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER I WITH STROKE;SD;stc=0197;suc=0197
+cp;0269;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER IOTA;stc=0196;suc=0196
cp;026A;CWCM;CWT;CWU;na=LATIN LETTER SMALL CAPITAL I;stc=A7AE;suc=A7AE
cp;026B;CWCM;CWT;CWU;na=LATIN SMALL LETTER L WITH MIDDLE TILDE;stc=2C62;suc=2C62
cp;026C;CWCM;CWT;CWU;na=LATIN SMALL LETTER L WITH BELT;stc=A7AD;suc=A7AD
@@ -1967,17 +1984,17 @@ cp;026E;na=LATIN SMALL LETTER LEZH
cp;026F;CWCM;CWT;CWU;na=LATIN SMALL LETTER TURNED M;stc=019C;suc=019C
cp;0270;na=LATIN SMALL LETTER TURNED M WITH LONG LEG
cp;0271;CWCM;CWT;CWU;na=LATIN SMALL LETTER M WITH HOOK;stc=2C6E;suc=2C6E
-cp;0272;CWCM;CWT;CWU;na=LATIN SMALL LETTER N WITH LEFT HOOK;stc=019D;suc=019D
+cp;0272;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER N WITH LEFT HOOK;stc=019D;suc=019D
cp;0273;na=LATIN SMALL LETTER N WITH RETROFLEX HOOK
cp;0274;na=LATIN LETTER SMALL CAPITAL N
cp;0275;CWCM;CWT;CWU;na=LATIN SMALL LETTER BARRED O;stc=019F;suc=019F
cp;0276;na=LATIN LETTER SMALL CAPITAL OE
-cp;0277;na=LATIN SMALL LETTER CLOSED OMEGA
+cp;0277;Identifier_Type=Technical Obsolete;na=LATIN SMALL LETTER CLOSED OMEGA
cp;0278;na=LATIN SMALL LETTER PHI
cp;0279;na=LATIN SMALL LETTER TURNED R
cp;027A;na=LATIN SMALL LETTER TURNED R WITH LONG LEG
cp;027B;na=LATIN SMALL LETTER TURNED R WITH HOOK
-cp;027C;na=LATIN SMALL LETTER R WITH LONG LEG
+cp;027C;Identifier_Type=Technical Obsolete;na=LATIN SMALL LETTER R WITH LONG LEG
cp;027D;CWCM;CWT;CWU;na=LATIN SMALL LETTER R WITH TAIL;stc=2C64;suc=2C64
cp;027E;na=LATIN SMALL LETTER R WITH FISHHOOK
cp;027F;na=LATIN SMALL LETTER REVERSED R WITH FISHHOOK
@@ -1990,7 +2007,7 @@ cp;0285;na=LATIN SMALL LETTER SQUAT REVERSED ESH
cp;0286;na=LATIN SMALL LETTER ESH WITH CURL
cp;0287;CWCM;CWT;CWU;na=LATIN SMALL LETTER TURNED T;stc=A7B1;suc=A7B1
cp;0288;CWCM;CWT;CWU;na=LATIN SMALL LETTER T WITH RETROFLEX HOOK;stc=01AE;suc=01AE
-cp;0289;CWCM;CWT;CWU;na=LATIN SMALL LETTER U BAR;stc=0244;suc=0244
+cp;0289;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER U BAR;stc=0244;suc=0244
cp;028A;CWCM;CWT;CWU;na=LATIN SMALL LETTER UPSILON;stc=01B1;suc=01B1
cp;028B;CWCM;CWT;CWU;na=LATIN SMALL LETTER V WITH HOOK;stc=01B2;suc=01B2
cp;028C;CWCM;CWT;CWU;na=LATIN SMALL LETTER TURNED V;stc=0245;suc=0245
@@ -1999,7 +2016,7 @@ cp;028E;na=LATIN SMALL LETTER TURNED Y
cp;028F;na=LATIN LETTER SMALL CAPITAL Y
cp;0290;na=LATIN SMALL LETTER Z WITH RETROFLEX HOOK
cp;0291;na=LATIN SMALL LETTER Z WITH CURL
-cp;0292;CWCM;CWT;CWU;na=LATIN SMALL LETTER EZH;stc=01B7;suc=01B7
+cp;0292;CWCM;CWT;CWU;Identifier_Type=Uncommon_Use Technical;na=LATIN SMALL LETTER EZH;stc=01B7;suc=01B7
cp;0293;na=LATIN SMALL LETTER EZH WITH CURL
cp;0294;-Cased;gc=Lo;-Lower;na=LATIN LETTER GLOTTAL STOP;SB=LE
cp;0295;na=LATIN LETTER PHARYNGEAL VOICED FRICATIVE
@@ -2011,7 +2028,7 @@ cp;029A;na=LATIN SMALL LETTER CLOSED OPEN E
cp;029B;na=LATIN LETTER SMALL CAPITAL G WITH HOOK
cp;029C;na=LATIN LETTER SMALL CAPITAL H
cp;029D;CWCM;CWT;CWU;na=LATIN SMALL LETTER J WITH CROSSED-TAIL;SD;stc=A7B2;suc=A7B2
-cp;029E;CWCM;CWT;CWU;na=LATIN SMALL LETTER TURNED K;stc=A7B0;suc=A7B0
+cp;029E;CWCM;CWT;CWU;Identifier_Type=Technical Obsolete;na=LATIN SMALL LETTER TURNED K;stc=A7B0;suc=A7B0
cp;029F;na=LATIN LETTER SMALL CAPITAL L
cp;02A0;na=LATIN SMALL LETTER Q WITH HOOK
cp;02A1;na=LATIN LETTER GLOTTAL STOP WITH STROKE
@@ -2032,44 +2049,44 @@ cp;02AD;age=3.0;na=LATIN LETTER BIDENTAL PERCUSSIVE
cp;02AE;age=4.0;na=LATIN SMALL LETTER TURNED H WITH FISHHOOK
cp;02AF;age=4.0;na=LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-block;02B0..02FF;age=1.1;bc=ON;blk=Modifier_Letters;CI;Dia;gc=Sk;Gr_Base;lb=AL;sc=Zyyy;WB=LE
+block;02B0..02FF;age=1.1;bc=ON;blk=Modifier_Letters;CI;Dia;gc=Sk;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy;WB=LE
# 02B0..02FF Spacing Modifier Letters
# Latin superscript modifier letters
-cp;02B0;Alpha;bc=L;Cased;CWKCF;dm=0068;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B1;Alpha;bc=L;Cased;CWKCF;dm=0266;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H WITH HOOK;NFKC_CF=0266;NFKC_QC=N;NFKC_SCF=0266;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B2;Alpha;bc=L;Cased;CWKCF;dm=006A;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N;SB=LO;sc=Latn;SD;XIDC;XIDS
-cp;02B3;Alpha;bc=L;Cased;CWKCF;dm=0072;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B4;Alpha;bc=L;Cased;CWKCF;dm=0279;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R;NFKC_CF=0279;NFKC_QC=N;NFKC_SCF=0279;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B5;Alpha;bc=L;Cased;CWKCF;dm=027B;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R WITH HOOK;NFKC_CF=027B;NFKC_QC=N;NFKC_SCF=027B;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B6;Alpha;bc=L;Cased;CWKCF;dm=0281;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL CAPITAL INVERTED R;NFKC_CF=0281;NFKC_QC=N;NFKC_SCF=0281;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B7;Alpha;bc=L;Cased;CWKCF;dm=0077;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B8;Alpha;bc=L;Cased;CWKCF;dm=0079;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL Y;NFKC_CF=0079;NFKC_QC=N;NFKC_SCF=0079;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B0;Alpha;bc=L;Cased;CWKCF;dm=0068;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B1;Alpha;bc=L;Cased;CWKCF;dm=0266;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL H WITH HOOK;NFKC_CF=0266;NFKC_QC=N;NFKC_SCF=0266;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B2;Alpha;bc=L;Cased;CWKCF;dm=006A;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N;SB=LO;sc=Latn;SD;XIDC;XIDS
+cp;02B3;Alpha;bc=L;Cased;CWKCF;dm=0072;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B4;Alpha;bc=L;Cased;CWKCF;dm=0279;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R;NFKC_CF=0279;NFKC_QC=N;NFKC_SCF=0279;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B5;Alpha;bc=L;Cased;CWKCF;dm=027B;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R WITH HOOK;NFKC_CF=027B;NFKC_QC=N;NFKC_SCF=027B;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B6;Alpha;bc=L;Cased;CWKCF;dm=0281;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL CAPITAL INVERTED R;NFKC_CF=0281;NFKC_QC=N;NFKC_SCF=0281;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B7;Alpha;bc=L;Cased;CWKCF;dm=0077;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B8;Alpha;bc=L;Cased;CWKCF;dm=0079;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL Y;NFKC_CF=0079;NFKC_QC=N;NFKC_SCF=0079;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
# Miscellaneous phonetic modifiers
-cp;02B9;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER PRIME;SB=LE;XIDC;XIDS
-cp;02BA;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE PRIME;SB=LE;XIDC;XIDS
-cp;02BB;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER TURNED COMMA;SB=LE;XIDC;XIDS
-cp;02BC;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER APOSTROPHE;SB=LE;XIDC;XIDS
-cp;02BD;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER REVERSED COMMA;SB=LE;XIDC;XIDS
-cp;02BE;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER RIGHT HALF RING;SB=LE;XIDC;XIDS
-cp;02BF;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER LEFT HALF RING;SB=LE;XIDC;XIDS
-cp;02C0;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER GLOTTAL STOP;SB=LO;XIDC;XIDS
-cp;02C1;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER REVERSED GLOTTAL STOP;SB=LO;XIDC;XIDS
+cp;02B9;Alpha;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER PRIME;SB=LE;XIDC;XIDS
+cp;02BA;Alpha;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER DOUBLE PRIME;SB=LE;XIDC;XIDS
+cp;02BB;Alpha;bc=L;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER TURNED COMMA;SB=LE;XIDC;XIDS
+cp;02BC;Alpha;bc=L;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER APOSTROPHE;SB=LE;XIDC;XIDS
+cp;02BD;Alpha;bc=L;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER REVERSED COMMA;SB=LE;XIDC;XIDS
+cp;02BE;Alpha;bc=L;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER RIGHT HALF RING;SB=LE;XIDC;XIDS
+cp;02BF;Alpha;bc=L;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER LEFT HALF RING;SB=LE;XIDC;XIDS
+cp;02C0;Alpha;bc=L;Cased;gc=Lm;IDC;Identifier_Type=Technical;IDS;Lower;na=MODIFIER LETTER GLOTTAL STOP;SB=LO;XIDC;XIDS
+cp;02C1;Alpha;bc=L;Cased;gc=Lm;IDC;Identifier_Type=Technical;IDS;Lower;na=MODIFIER LETTER REVERSED GLOTTAL STOP;SB=LO;XIDC;XIDS
cp;02C2;na=MODIFIER LETTER LEFT ARROWHEAD
cp;02C3;na=MODIFIER LETTER RIGHT ARROWHEAD
cp;02C4;ea=A;na=MODIFIER LETTER UP ARROWHEAD
cp;02C5;na=MODIFIER LETTER DOWN ARROWHEAD
-cp;02C6;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER CIRCUMFLEX ACCENT;SB=LE;XIDC;XIDS
-cp;02C7;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=CARON;SB=LE;XIDC;XIDS
-cp;02C8;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER VERTICAL LINE;SB=LE;XIDC;XIDS
-cp;02C9;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER MACRON;SB=LE;XIDC;XIDS
-cp;02CA;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER ACUTE ACCENT;SB=LE;XIDC;XIDS
-cp;02CB;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER GRAVE ACCENT;SB=LE;XIDC;XIDS
-cp;02CC;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER LOW VERTICAL LINE;SB=LE;XIDC;XIDS
-cp;02CD;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER LOW MACRON;SB=LE;XIDC;XIDS
-cp;02CE;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW GRAVE ACCENT;SB=LE;XIDC;XIDS
-cp;02CF;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW ACUTE ACCENT;SB=LE;XIDC;XIDS
-cp;02D0;Alpha;bc=L;ea=A;Ext;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER TRIANGULAR COLON;SB=LE;XIDC;XIDS
-cp;02D1;Alpha;bc=L;Ext;gc=Lm;IDC;IDS;na=MODIFIER LETTER HALF TRIANGULAR COLON;SB=LE;XIDC;XIDS
+cp;02C6;Alpha;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER CIRCUMFLEX ACCENT;SB=LE;XIDC;XIDS
+cp;02C7;Alpha;ea=A;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=AI;na=CARON;SB=LE;XIDC;XIDS
+cp;02C8;Alpha;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=BB;na=MODIFIER LETTER VERTICAL LINE;SB=LE;XIDC;XIDS
+cp;02C9;Alpha;ea=A;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=AI;na=MODIFIER LETTER MACRON;SB=LE;XIDC;XIDS
+cp;02CA;Alpha;ea=A;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=AI;na=MODIFIER LETTER ACUTE ACCENT;SB=LE;XIDC;XIDS
+cp;02CB;Alpha;ea=A;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=AI;na=MODIFIER LETTER GRAVE ACCENT;SB=LE;XIDC;XIDS
+cp;02CC;Alpha;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=BB;na=MODIFIER LETTER LOW VERTICAL LINE;SB=LE;XIDC;XIDS
+cp;02CD;Alpha;ea=A;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=AI;na=MODIFIER LETTER LOW MACRON;SB=LE;XIDC;XIDS
+cp;02CE;Alpha;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER LOW GRAVE ACCENT;SB=LE;XIDC;XIDS
+cp;02CF;Alpha;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER LOW ACUTE ACCENT;SB=LE;XIDC;XIDS
+cp;02D0;Alpha;bc=L;ea=A;Ext;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=AI;na=MODIFIER LETTER TRIANGULAR COLON;SB=LE;XIDC;XIDS
+cp;02D1;Alpha;bc=L;Ext;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER HALF TRIANGULAR COLON;SB=LE;XIDC;XIDS
cp;02D2;na=MODIFIER LETTER CENTRED RIGHT HALF RING
cp;02D3;na=MODIFIER LETTER CENTRED LEFT HALF RING
cp;02D4;na=MODIFIER LETTER UP TACK
@@ -2077,20 +2094,20 @@ cp;02D5;na=MODIFIER LETTER DOWN TACK
cp;02D6;na=MODIFIER LETTER PLUS SIGN
cp;02D7;na=MODIFIER LETTER MINUS SIGN
# Spacing clones of diacritics
-cp;02D8;CWKCF;dm=0020 0306;dt=Com;ea=A;lb=AI;na=BREVE;NFKC_CF=0020 0306;NFKC_QC=N;NFKC_SCF=0020 0306;NFKD_QC=N;WB=XX
-cp;02D9;CWKCF;dm=0020 0307;dt=Com;ea=A;lb=AI;na=DOT ABOVE;NFKC_CF=0020 0307;NFKC_QC=N;NFKC_SCF=0020 0307;NFKD_QC=N;WB=XX
-cp;02DA;CWKCF;dm=0020 030A;dt=Com;ea=A;lb=AI;na=RING ABOVE;NFKC_CF=0020 030A;NFKC_QC=N;NFKC_SCF=0020 030A;NFKD_QC=N;WB=XX
-cp;02DB;CWKCF;dm=0020 0328;dt=Com;ea=A;lb=AI;na=OGONEK;NFKC_CF=0020 0328;NFKC_QC=N;NFKC_SCF=0020 0328;NFKD_QC=N;WB=XX
-cp;02DC;CWKCF;dm=0020 0303;dt=Com;na=SMALL TILDE;NFKC_CF=0020 0303;NFKC_QC=N;NFKC_SCF=0020 0303;NFKD_QC=N;WB=XX
-cp;02DD;CWKCF;dm=0020 030B;dt=Com;ea=A;lb=AI;na=DOUBLE ACUTE ACCENT;NFKC_CF=0020 030B;NFKC_QC=N;NFKC_SCF=0020 030B;NFKD_QC=N;WB=XX
+cp;02D8;CWKCF;dm=0020 0306;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=AI;na=BREVE;NFKC_CF=0020 0306;NFKC_QC=N;NFKC_SCF=0020 0306;NFKD_QC=N;WB=XX
+cp;02D9;CWKCF;dm=0020 0307;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=AI;na=DOT ABOVE;NFKC_CF=0020 0307;NFKC_QC=N;NFKC_SCF=0020 0307;NFKD_QC=N;WB=XX
+cp;02DA;CWKCF;dm=0020 030A;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=AI;na=RING ABOVE;NFKC_CF=0020 030A;NFKC_QC=N;NFKC_SCF=0020 030A;NFKD_QC=N;WB=XX
+cp;02DB;CWKCF;dm=0020 0328;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=AI;na=OGONEK;NFKC_CF=0020 0328;NFKC_QC=N;NFKC_SCF=0020 0328;NFKD_QC=N;WB=XX
+cp;02DC;CWKCF;dm=0020 0303;dt=Com;Identifier_Type=Not_NFKC;na=SMALL TILDE;NFKC_CF=0020 0303;NFKC_QC=N;NFKC_SCF=0020 0303;NFKD_QC=N;WB=XX
+cp;02DD;CWKCF;dm=0020 030B;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=AI;na=DOUBLE ACUTE ACCENT;NFKC_CF=0020 030B;NFKC_QC=N;NFKC_SCF=0020 030B;NFKD_QC=N;WB=XX
# Additions based on 1989 IPA
cp;02DE;na=MODIFIER LETTER RHOTIC HOOK
cp;02DF;age=3.0;ea=A;lb=BB;na=MODIFIER LETTER CROSS ACCENT
-cp;02E0;Alpha;bc=L;Cased;CWKCF;dm=0263;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL GAMMA;NFKC_CF=0263;NFKC_QC=N;NFKC_SCF=0263;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02E1;Alpha;bc=L;Cased;CWKCF;dm=006C;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02E2;Alpha;bc=L;Cased;CWKCF;dm=0073;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL S;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02E3;Alpha;bc=L;Cased;CWKCF;dm=0078;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL X;NFKC_CF=0078;NFKC_QC=N;NFKC_SCF=0078;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02E4;Alpha;bc=L;Cased;CWKCF;dm=0295;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;NFKC_CF=0295;NFKC_QC=N;NFKC_SCF=0295;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E0;Alpha;bc=L;Cased;CWKCF;dm=0263;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL GAMMA;NFKC_CF=0263;NFKC_QC=N;NFKC_SCF=0263;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E1;Alpha;bc=L;Cased;CWKCF;dm=006C;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E2;Alpha;bc=L;Cased;CWKCF;dm=0073;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL S;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E3;Alpha;bc=L;Cased;CWKCF;dm=0078;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL X;NFKC_CF=0078;NFKC_QC=N;NFKC_SCF=0078;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E4;Alpha;bc=L;Cased;CWKCF;dm=0295;dt=Sup;gc=Lm;IDC;Identifier_Type=Not_NFKC;IDS;Lower;na=MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;NFKC_CF=0295;NFKC_QC=N;NFKC_SCF=0295;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
# Tone letters
cp;02E5;na=MODIFIER LETTER EXTRA-HIGH TONE BAR
cp;02E6;na=MODIFIER LETTER HIGH TONE BAR
@@ -2101,10 +2118,10 @@ cp;02E9;na=MODIFIER LETTER EXTRA-LOW TONE BAR
cp;02EA;age=3.0;na=MODIFIER LETTER YIN DEPARTING TONE MARK;sc=Bopo;vo=U
cp;02EB;age=3.0;na=MODIFIER LETTER YANG DEPARTING TONE MARK;sc=Bopo;vo=U
# IPA modifiers
-cp;02EC;age=3.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER VOICING;SB=LE;XIDC;XIDS
+cp;02EC;age=3.0;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER VOICING;SB=LE;XIDC;XIDS
cp;02ED;age=3.0;na=MODIFIER LETTER UNASPIRATED
# Other modifier letter
-cp;02EE;age=3.0;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE APOSTROPHE;SB=LE;XIDC;XIDS
+cp;02EE;age=3.0;Alpha;bc=L;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=MODIFIER LETTER DOUBLE APOSTROPHE;SB=LE;XIDC;XIDS
# UPA modifiers
cp;02EF;age=4.0;na=MODIFIER LETTER LOW DOWN ARROWHEAD
cp;02F0;age=4.0;na=MODIFIER LETTER LOW UP ARROWHEAD
@@ -2124,69 +2141,69 @@ cp;02FD;age=4.0;na=MODIFIER LETTER SHELF
cp;02FE;age=4.0;na=MODIFIER LETTER OPEN SHELF
cp;02FF;age=4.0;na=MODIFIER LETTER LOW LEFT ARROW
-block;0300..036F;age=1.1;bc=NSM;blk=Diacriticals;ccc=230;CI;Dia;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;0300..036F;age=1.1;bc=NSM;blk=Diacriticals;ccc=230;CI;Dia;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
# 0300..036F Combining Diacritical Marks
# Ordinary diacritics
-cp;0300;na=COMBINING GRAVE ACCENT;NFC_QC=M;NFKC_QC=M
-cp;0301;na=COMBINING ACUTE ACCENT;NFC_QC=M;NFKC_QC=M
-cp;0302;na=COMBINING CIRCUMFLEX ACCENT;NFC_QC=M;NFKC_QC=M
-cp;0303;na=COMBINING TILDE;NFC_QC=M;NFKC_QC=M
-cp;0304;na=COMBINING MACRON;NFC_QC=M;NFKC_QC=M
-cp;0305;na=COMBINING OVERLINE
-cp;0306;na=COMBINING BREVE;NFC_QC=M;NFKC_QC=M
-cp;0307;Conditional_Case_Mappings=lt After_Soft_Dotted:lc=0307&tc=&uc=,tr After_I:lc=&tc=0307&uc=0307,az After_I:lc=&tc=0307&uc=0307;na=COMBINING DOT ABOVE;NFC_QC=M;NFKC_QC=M
-cp;0308;na=COMBINING DIAERESIS;NFC_QC=M;NFKC_QC=M
-cp;0309;na=COMBINING HOOK ABOVE;NFC_QC=M;NFKC_QC=M
-cp;030A;na=COMBINING RING ABOVE;NFC_QC=M;NFKC_QC=M
-cp;030B;na=COMBINING DOUBLE ACUTE ACCENT;NFC_QC=M;NFKC_QC=M
-cp;030C;na=COMBINING CARON;NFC_QC=M;NFKC_QC=M
-cp;030D;na=COMBINING VERTICAL LINE ABOVE
+cp;0300;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING GRAVE ACCENT;NFC_QC=M;NFKC_QC=M
+cp;0301;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING ACUTE ACCENT;NFC_QC=M;NFKC_QC=M
+cp;0302;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING CIRCUMFLEX ACCENT;NFC_QC=M;NFKC_QC=M
+cp;0303;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING TILDE;NFC_QC=M;NFKC_QC=M
+cp;0304;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING MACRON;NFC_QC=M;NFKC_QC=M
+cp;0305;Identifier_Type=Uncommon_Use;na=COMBINING OVERLINE
+cp;0306;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING BREVE;NFC_QC=M;NFKC_QC=M
+cp;0307;Conditional_Case_Mappings=lt After_Soft_Dotted:lc=0307&tc=&uc=,tr After_I:lc=&tc=0307&uc=0307,az After_I:lc=&tc=0307&uc=0307;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING DOT ABOVE;NFC_QC=M;NFKC_QC=M
+cp;0308;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING DIAERESIS;NFC_QC=M;NFKC_QC=M
+cp;0309;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING HOOK ABOVE;NFC_QC=M;NFKC_QC=M
+cp;030A;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING RING ABOVE;NFC_QC=M;NFKC_QC=M
+cp;030B;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING DOUBLE ACUTE ACCENT;NFC_QC=M;NFKC_QC=M
+cp;030C;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING CARON;NFC_QC=M;NFKC_QC=M
+cp;030D;Identifier_Type=Uncommon_Use;na=COMBINING VERTICAL LINE ABOVE
cp;030E;na=COMBINING DOUBLE VERTICAL LINE ABOVE
-cp;030F;na=COMBINING DOUBLE GRAVE ACCENT;NFC_QC=M;NFKC_QC=M
-cp;0310;na=COMBINING CANDRABINDU
-cp;0311;na=COMBINING INVERTED BREVE;NFC_QC=M;NFKC_QC=M
+cp;030F;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING DOUBLE GRAVE ACCENT;NFC_QC=M;NFKC_QC=M
+cp;0310;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING CANDRABINDU
+cp;0311;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING INVERTED BREVE;NFC_QC=M;NFKC_QC=M
cp;0312;na=COMBINING TURNED COMMA ABOVE
-cp;0313;na=COMBINING COMMA ABOVE;NFC_QC=M;NFKC_QC=M
-cp;0314;na=COMBINING REVERSED COMMA ABOVE;NFC_QC=M;NFKC_QC=M
+cp;0313;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING COMMA ABOVE;NFC_QC=M;NFKC_QC=M
+cp;0314;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING REVERSED COMMA ABOVE;NFC_QC=M;NFKC_QC=M
cp;0315;ccc=232;na=COMBINING COMMA ABOVE RIGHT
-cp;0316;ccc=220;na=COMBINING GRAVE ACCENT BELOW
+cp;0316;ccc=220;Identifier_Type=Uncommon_Use;na=COMBINING GRAVE ACCENT BELOW
cp;0317;ccc=220;na=COMBINING ACUTE ACCENT BELOW
cp;0318;ccc=220;na=COMBINING LEFT TACK BELOW
cp;0319;ccc=220;na=COMBINING RIGHT TACK BELOW
cp;031A;ccc=232;na=COMBINING LEFT ANGLE ABOVE
-cp;031B;ccc=216;na=COMBINING HORN;NFC_QC=M;NFKC_QC=M
+cp;031B;ccc=216;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING HORN;NFC_QC=M;NFKC_QC=M
cp;031C;ccc=220;na=COMBINING LEFT HALF RING BELOW
cp;031D;ccc=220;na=COMBINING UP TACK BELOW
cp;031E;ccc=220;na=COMBINING DOWN TACK BELOW
cp;031F;ccc=220;na=COMBINING PLUS SIGN BELOW
cp;0320;ccc=220;na=COMBINING MINUS SIGN BELOW
-cp;0321;ccc=202;na=COMBINING PALATALIZED HOOK BELOW
-cp;0322;ccc=202;na=COMBINING RETROFLEX HOOK BELOW
-cp;0323;ccc=220;na=COMBINING DOT BELOW;NFC_QC=M;NFKC_QC=M
-cp;0324;ccc=220;na=COMBINING DIAERESIS BELOW;NFC_QC=M;NFKC_QC=M
-cp;0325;ccc=220;na=COMBINING RING BELOW;NFC_QC=M;NFKC_QC=M
-cp;0326;ccc=220;na=COMBINING COMMA BELOW;NFC_QC=M;NFKC_QC=M
-cp;0327;ccc=202;na=COMBINING CEDILLA;NFC_QC=M;NFKC_QC=M
-cp;0328;ccc=202;na=COMBINING OGONEK;NFC_QC=M;NFKC_QC=M
+cp;0321;ccc=202;Identifier_Type=Uncommon_Use;na=COMBINING PALATALIZED HOOK BELOW
+cp;0322;ccc=202;Identifier_Type=Uncommon_Use;na=COMBINING RETROFLEX HOOK BELOW
+cp;0323;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING DOT BELOW;NFC_QC=M;NFKC_QC=M
+cp;0324;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING DIAERESIS BELOW;NFC_QC=M;NFKC_QC=M
+cp;0325;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING RING BELOW;NFC_QC=M;NFKC_QC=M
+cp;0326;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING COMMA BELOW;NFC_QC=M;NFKC_QC=M
+cp;0327;ccc=202;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING CEDILLA;NFC_QC=M;NFKC_QC=M
+cp;0328;ccc=202;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING OGONEK;NFC_QC=M;NFKC_QC=M
cp;0329;ccc=220;na=COMBINING VERTICAL LINE BELOW
cp;032A;ccc=220;na=COMBINING BRIDGE BELOW
cp;032B;ccc=220;na=COMBINING INVERTED DOUBLE ARCH BELOW
cp;032C;ccc=220;na=COMBINING CARON BELOW
-cp;032D;ccc=220;na=COMBINING CIRCUMFLEX ACCENT BELOW;NFC_QC=M;NFKC_QC=M
-cp;032E;ccc=220;na=COMBINING BREVE BELOW;NFC_QC=M;NFKC_QC=M
+cp;032D;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING CIRCUMFLEX ACCENT BELOW;NFC_QC=M;NFKC_QC=M
+cp;032E;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING BREVE BELOW;NFC_QC=M;NFKC_QC=M
cp;032F;ccc=220;na=COMBINING INVERTED BREVE BELOW
-cp;0330;ccc=220;na=COMBINING TILDE BELOW;NFC_QC=M;NFKC_QC=M
-cp;0331;ccc=220;na=COMBINING MACRON BELOW;NFC_QC=M;NFKC_QC=M
-cp;0332;ccc=220;na=COMBINING LOW LINE
+cp;0330;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING TILDE BELOW;NFC_QC=M;NFKC_QC=M
+cp;0331;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING MACRON BELOW;NFC_QC=M;NFKC_QC=M
+cp;0332;ccc=220;Identifier_Type=Uncommon_Use;na=COMBINING LOW LINE
cp;0333;ccc=220;na=COMBINING DOUBLE LOW LINE
# Overstruck diacritics
-cp;0334;ccc=1;na=COMBINING TILDE OVERLAY
-cp;0335;ccc=1;na=COMBINING SHORT STROKE OVERLAY
-cp;0336;ccc=1;na=COMBINING LONG STROKE OVERLAY
+cp;0334;ccc=1;Identifier_Type=Uncommon_Use;na=COMBINING TILDE OVERLAY
+cp;0335;ccc=1;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING SHORT STROKE OVERLAY
+cp;0336;ccc=1;Identifier_Type=Uncommon_Use;na=COMBINING LONG STROKE OVERLAY
cp;0337;ccc=1;na=COMBINING SHORT SOLIDUS OVERLAY
-cp;0338;ccc=1;na=COMBINING LONG SOLIDUS OVERLAY;NFC_QC=M;NFKC_QC=M
+cp;0338;ccc=1;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING LONG SOLIDUS OVERLAY;NFC_QC=M;NFKC_QC=M
# Miscellaneous additions
-cp;0339;ccc=220;na=COMBINING RIGHT HALF RING BELOW
+cp;0339;ccc=220;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING RIGHT HALF RING BELOW
cp;033A;ccc=220;na=COMBINING INVERTED BRIDGE BELOW
cp;033B;ccc=220;na=COMBINING SQUARE BELOW
cp;033C;ccc=220;na=COMBINING SEAGULL BELOW
@@ -2194,13 +2211,13 @@ cp;033D;na=COMBINING X ABOVE
cp;033E;na=COMBINING VERTICAL TILDE
cp;033F;na=COMBINING DOUBLE OVERLINE
# Vietnamese tone marks
-cp;0340;Comp_Ex;CWKCF;dm=0300;dt=Can;na=COMBINING GRAVE TONE MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=0300;NFKC_QC=N;NFKC_SCF=0300;NFKD_QC=N
-cp;0341;Comp_Ex;CWKCF;dm=0301;dt=Can;na=COMBINING ACUTE TONE MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=0301;NFKC_QC=N;NFKC_SCF=0301;NFKD_QC=N
+cp;0340;Comp_Ex;CWKCF;dm=0300;dt=Can;Identifier_Type=Not_NFKC;na=COMBINING GRAVE TONE MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=0300;NFKC_QC=N;NFKC_SCF=0300;NFKD_QC=N
+cp;0341;Comp_Ex;CWKCF;dm=0301;dt=Can;Identifier_Type=Not_NFKC;na=COMBINING ACUTE TONE MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=0301;NFKC_QC=N;NFKC_SCF=0301;NFKD_QC=N
# Additions for Greek
-cp;0342;na=COMBINING GREEK PERISPOMENI;NFC_QC=M;NFKC_QC=M;scx=Grek
-cp;0343;Comp_Ex;CWKCF;dm=0313;dt=Can;na=COMBINING GREEK KORONIS;NFC_QC=N;NFD_QC=N;NFKC_CF=0313;NFKC_QC=N;NFKC_SCF=0313;NFKD_QC=N
-cp;0344;Comp_Ex;CWKCF;dm=0308 0301;dt=Can;na=COMBINING GREEK DIALYTIKA TONOS;NFC_QC=N;NFD_QC=N;NFKC_CF=0308 0301;NFKC_QC=N;NFKC_SCF=0308 0301;NFKD_QC=N
-cp;0345;Alpha;Cased;ccc=240;cf=03B9;CWCF;CWCM;CWKCF;CWT;CWU;Lower;na=COMBINING GREEK YPOGEGRAMMENI;NFC_QC=M;NFKC_CF=03B9;NFKC_QC=M;NFKC_SCF=03B9;scf=03B9;scx=Grek;stc=0399;suc=0399
+cp;0342;Identifier_Status=Allowed;Identifier_Type=Recommended;na=COMBINING GREEK PERISPOMENI;NFC_QC=M;NFKC_QC=M;scx=Grek
+cp;0343;Comp_Ex;CWKCF;dm=0313;dt=Can;Identifier_Type=Not_NFKC;na=COMBINING GREEK KORONIS;NFC_QC=N;NFD_QC=N;NFKC_CF=0313;NFKC_QC=N;NFKC_SCF=0313;NFKD_QC=N
+cp;0344;Comp_Ex;CWKCF;dm=0308 0301;dt=Can;Identifier_Type=Not_NFKC;na=COMBINING GREEK DIALYTIKA TONOS;NFC_QC=N;NFD_QC=N;NFKC_CF=0308 0301;NFKC_QC=N;NFKC_SCF=0308 0301;NFKD_QC=N
+cp;0345;Alpha;Cased;ccc=240;cf=03B9;CWCF;CWCM;CWKCF;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=COMBINING GREEK YPOGEGRAMMENI;NFC_QC=M;NFKC_CF=03B9;NFKC_QC=M;NFKC_SCF=03B9;scf=03B9;scx=Grek;stc=0399;suc=0399
# Additions for IPA
cp;0346;age=3.0;na=COMBINING BRIDGE ABOVE
cp;0347;age=3.0;ccc=220;na=COMBINING EQUALS SIGN BELOW
@@ -2213,7 +2230,7 @@ cp;034C;age=3.0;na=COMBINING ALMOST EQUAL TO ABOVE
cp;034D;age=3.0;ccc=220;na=COMBINING LEFT RIGHT ARROW BELOW
cp;034E;age=3.0;ccc=220;na=COMBINING UPWARDS ARROW BELOW
# Grapheme joiner
-cp;034F;age=3.2;ccc=0;CWKCF;DI;-Dia;InCB=None;lb=GL;na=COMBINING GRAPHEME JOINER;Name_Alias=abbreviation=CGJ;NFKC_CF=;NFKC_SCF=
+cp;034F;age=3.2;ccc=0;CWKCF;DI;-Dia;Identifier_Type=Default_Ignorable;InCB=None;lb=GL;na=COMBINING GRAPHEME JOINER;Name_Alias=abbreviation=CGJ;NFKC_CF=;NFKC_SCF=
# Additions for the Uralic Phonetic Alphabet
cp;0350;age=4.0;na=COMBINING RIGHT ARROWHEAD ABOVE
cp;0351;age=4.0;na=COMBINING LEFT HALF RING ABOVE
@@ -2224,7 +2241,7 @@ cp;0355;age=4.0;ccc=220;na=COMBINING RIGHT ARROWHEAD BELOW
cp;0356;age=4.0;ccc=220;na=COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
cp;0357;age=4.0;na=COMBINING RIGHT HALF RING ABOVE
# Miscellaneous additions
-cp;0358;age=4.1;ccc=232;-Dia;na=COMBINING DOT ABOVE RIGHT
+cp;0358;age=4.1;ccc=232;-Dia;Identifier_Type=Uncommon_Use;na=COMBINING DOT ABOVE RIGHT
cp;0359;age=4.1;ccc=220;-Dia;na=COMBINING ASTERISK BELOW
cp;035A;age=4.1;ccc=220;-Dia;na=COMBINING DOUBLE RING BELOW
cp;035B;age=4.1;-Dia;na=COMBINING ZIGZAG ABOVE
@@ -2237,52 +2254,52 @@ cp;0360;ccc=234;lb=GL;na=COMBINING DOUBLE TILDE
cp;0361;ccc=234;lb=GL;na=COMBINING DOUBLE INVERTED BREVE
cp;0362;age=3.0;ccc=233;lb=GL;na=COMBINING DOUBLE RIGHTWARDS ARROW BELOW
# Medieval superscript letter diacritics
-cp;0363;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER A;scx=Latn
-cp;0364;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER E;scx=Latn
-cp;0365;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER I;scx=Latn
-cp;0366;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER O;scx=Latn
-cp;0367;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER U;scx=Latn
-cp;0368;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER C;scx=Latn
-cp;0369;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER D;scx=Latn
-cp;036A;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER H;scx=Latn
-cp;036B;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER M;scx=Latn
-cp;036C;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER R;scx=Latn
-cp;036D;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER T;scx=Latn
-cp;036E;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER V;scx=Latn
-cp;036F;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER X;scx=Latn
-
-block;0370..03FF;age=1.1;Alpha;blk=Greek;Cased;CWCM;CWKCF;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Grek;WB=LE;XIDC;XIDS
+cp;0363;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER A;scx=Latn
+cp;0364;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER E;scx=Latn
+cp;0365;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER I;scx=Latn
+cp;0366;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER O;scx=Latn
+cp;0367;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER U;scx=Latn
+cp;0368;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER C;scx=Latn
+cp;0369;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER D;scx=Latn
+cp;036A;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER H;scx=Latn
+cp;036B;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER M;scx=Latn
+cp;036C;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER R;scx=Latn
+cp;036D;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER T;scx=Latn
+cp;036E;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER V;scx=Latn
+cp;036F;age=3.2;-Dia;Identifier_Type=Obsolete;na=COMBINING LATIN SMALL LETTER X;scx=Latn
+
+block;0370..03FF;age=1.1;Alpha;blk=Greek;Cased;CWCM;CWKCF;gc=Ll;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LO;sc=Grek;WB=LE;XIDC;XIDS
# 0370..03FF Greek and Coptic
# Archaic letters
-cp;0370;age=5.1;cf=0371;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER HETA;NFKC_CF=0371;NFKC_SCF=0371;SB=UP;scf=0371;slc=0371;Upper
-cp;0371;age=5.1;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER HETA;stc=0370;suc=0370
-cp;0372;age=5.1;cf=0373;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER ARCHAIC SAMPI;NFKC_CF=0373;NFKC_SCF=0373;SB=UP;scf=0373;slc=0373;Upper
-cp;0373;age=5.1;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER ARCHAIC SAMPI;stc=0372;suc=0372
+cp;0370;age=5.1;cf=0371;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK CAPITAL LETTER HETA;NFKC_CF=0371;NFKC_SCF=0371;SB=UP;scf=0371;slc=0371;Upper
+cp;0371;age=5.1;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER HETA;stc=0370;suc=0370
+cp;0372;age=5.1;cf=0373;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK CAPITAL LETTER ARCHAIC SAMPI;NFKC_CF=0373;NFKC_SCF=0373;SB=UP;scf=0373;slc=0373;Upper
+cp;0373;age=5.1;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER ARCHAIC SAMPI;stc=0372;suc=0372
# Numeral signs
-cp;0374;bc=ON;-Cased;CI;Comp_Ex;-CWCM;Dia;dm=02B9;dt=Can;gc=Lm;na=GREEK NUMERAL SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=02B9;NFKC_QC=N;NFKC_SCF=02B9;NFKD_QC=N;SB=LE;sc=Zyyy
-cp;0375;-Alpha;bc=ON;-Cased;CI;-CWCM;-CWKCF;Dia;gc=Sk;-IDC;-IDS;na=GREEK LOWER NUMERAL SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0374;bc=ON;-Cased;CI;Comp_Ex;-CWCM;Dia;dm=02B9;dt=Can;gc=Lm;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK NUMERAL SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=02B9;NFKC_QC=N;NFKC_SCF=02B9;NFKD_QC=N;SB=LE;sc=Zyyy
+cp;0375;-Alpha;bc=ON;-Cased;CI;-CWCM;-CWKCF;Dia;gc=Sk;-IDC;Identifier_Type=Inclusion;-IDS;na=GREEK LOWER NUMERAL SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Archaic letters
-cp;0376;age=5.1;cf=0377;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;NFKC_CF=0377;NFKC_SCF=0377;SB=UP;scf=0377;slc=0377;Upper
-cp;0377;age=5.1;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;stc=0376;suc=0376
+cp;0376;age=5.1;cf=0377;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;NFKC_CF=0377;NFKC_SCF=0377;SB=UP;scf=0377;slc=0377;Upper
+cp;0377;age=5.1;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;stc=0376;suc=0376
unassigned;0378..0379
# Iota subscript
-cp;037A;CI;-CWCM;Dia;dm=0020 0345;dt=Com;FC_NFKC=0020 03B9;gc=Lm;Lower;na=GREEK YPOGEGRAMMENI;NFKC_CF=0020 03B9;NFKC_QC=N;NFKC_SCF=0020 03B9;NFKD_QC=N;-XIDC;-XIDS
+cp;037A;CI;-CWCM;Dia;dm=0020 0345;dt=Com;FC_NFKC=0020 03B9;gc=Lm;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK YPOGEGRAMMENI;NFKC_CF=0020 03B9;NFKC_QC=N;NFKC_SCF=0020 03B9;NFKD_QC=N;-XIDC;-XIDS
# Lowercase of editorial symbols
cp;037B;age=5.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;stc=03FD;suc=03FD
cp;037C;age=5.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;stc=03FE;suc=03FE
cp;037D;age=5.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;stc=03FF;suc=03FF
# Punctuation
-cp;037E;-Alpha;bc=ON;-Cased;Comp_Ex;-CWCM;dm=003B;dt=Can;gc=Po;-IDC;-IDS;lb=IS;na=GREEK QUESTION MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=003B;NFKC_QC=N;NFKC_SCF=003B;NFKD_QC=N;SB=XX;sc=Zyyy;Term;WB=MN;-XIDC;-XIDS
+cp;037E;-Alpha;bc=ON;-Cased;Comp_Ex;-CWCM;dm=003B;dt=Can;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;lb=IS;na=GREEK QUESTION MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=003B;NFKC_QC=N;NFKC_SCF=003B;NFKD_QC=N;SB=XX;sc=Zyyy;Term;WB=MN;-XIDC;-XIDS
# Additional letter
-cp;037F;age=7.0;cf=03F3;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER YOT;NFKC_CF=03F3;NFKC_SCF=03F3;SB=UP;scf=03F3;slc=03F3;Upper
+cp;037F;age=7.0;cf=03F3;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK CAPITAL LETTER YOT;NFKC_CF=03F3;NFKC_SCF=03F3;SB=UP;scf=03F3;slc=03F3;Upper
unassigned;0380..0383
# Spacing accent marks
-cp;0384;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;dm=0020 0301;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK TONOS;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;NFKD_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0385;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;dm=00A8 0301;dt=Can;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA TONOS;NFD_QC=N;NFKC_CF=0020 0308 0301;NFKC_QC=N;NFKC_SCF=0020 0308 0301;NFKD_QC=N;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;0384;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;dm=0020 0301;dt=Com;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK TONOS;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;NFKD_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0385;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;dm=00A8 0301;dt=Can;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK DIALYTIKA TONOS;NFD_QC=N;NFKC_CF=0020 0308 0301;NFKC_QC=N;NFKC_SCF=0020 0308 0301;NFKD_QC=N;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
# Letter
cp;0386;cf=03AC;CWCF;CWL;dm=0391 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH TONOS;NFD_QC=N;NFKC_CF=03AC;NFKC_SCF=03AC;NFKD_QC=N;SB=UP;scf=03AC;slc=03AC;Upper
# Punctuation
-cp;0387;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCM;dm=00B7;dt=Can;gc=Po;-IDS;na=GREEK ANO TELEIA;NFC_QC=N;NFD_QC=N;NFKC_CF=00B7;NFKC_QC=N;NFKC_SCF=00B7;NFKD_QC=N;SB=XX;sc=Zyyy;Term;WB=ML;-XIDS
+cp;0387;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCM;dm=00B7;dt=Can;gc=Po;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK ANO TELEIA;NFC_QC=N;NFD_QC=N;NFKC_CF=00B7;NFKC_QC=N;NFKC_SCF=00B7;NFKD_QC=N;SB=XX;sc=Zyyy;Term;WB=ML;-XIDS
# Letters
cp;0388;cf=03AD;CWCF;CWL;dm=0395 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH TONOS;NFD_QC=N;NFKC_CF=03AD;NFKC_SCF=03AD;NFKD_QC=N;SB=UP;scf=03AD;slc=03AD;Upper
cp;0389;cf=03AE;CWCF;CWL;dm=0397 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH TONOS;NFD_QC=N;NFKC_CF=03AE;NFKC_SCF=03AE;NFKD_QC=N;SB=UP;scf=03AE;slc=03AE;Upper
@@ -2356,59 +2373,59 @@ cp;03CC;-CWKCF;CWT;CWU;dm=03BF 0301;dt=Can;Lower;na=GREEK SMALL LETTER OMICRON W
cp;03CD;-CWKCF;CWT;CWU;dm=03C5 0301;dt=Can;Lower;na=GREEK SMALL LETTER UPSILON WITH TONOS;NFD_QC=N;NFKD_QC=N;stc=038E;suc=038E
cp;03CE;-CWKCF;CWT;CWU;dm=03C9 0301;dt=Can;Lower;na=GREEK SMALL LETTER OMEGA WITH TONOS;NFD_QC=N;NFKD_QC=N;stc=038F;suc=038F
# Variant letterforms
-cp;03CF;age=5.1;cf=03D7;CWCF;CWL;gc=Lu;na=GREEK CAPITAL KAI SYMBOL;NFKC_CF=03D7;NFKC_SCF=03D7;SB=UP;scf=03D7;slc=03D7;Upper
-cp;03D0;cf=03B2;CWCF;CWT;CWU;dm=03B2;dt=Com;Lower;Math;na=GREEK BETA SYMBOL;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;scf=03B2;stc=0392;suc=0392
-cp;03D1;cf=03B8;CWCF;CWT;CWU;dm=03B8;dt=Com;Lower;Math;na=GREEK THETA SYMBOL;NFKC_CF=03B8;NFKC_QC=N;NFKC_SCF=03B8;NFKD_QC=N;scf=03B8;stc=0398;suc=0398
-cp;03D2;-CWCM;dm=03A5;dt=Com;FC_NFKC=03C5;gc=Lu;Math;na=GREEK UPSILON WITH HOOK SYMBOL;NFKC_CF=03C5;NFKC_QC=N;NFKC_SCF=03C5;NFKD_QC=N;SB=UP;Upper
-cp;03D3;-CWCM;dm=03D2 0301;dt=Can;FC_NFKC=03CD;gc=Lu;na=GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;NFD_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;NFKD_QC=N;SB=UP;Upper
-cp;03D4;-CWCM;dm=03D2 0308;dt=Can;FC_NFKC=03CB;gc=Lu;na=GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;NFD_QC=N;NFKC_CF=03CB;NFKC_QC=N;NFKC_SCF=03CB;NFKD_QC=N;SB=UP;Upper
-cp;03D5;cf=03C6;CWCF;CWT;CWU;dm=03C6;dt=Com;Lower;Math;na=GREEK PHI SYMBOL;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;scf=03C6;stc=03A6;suc=03A6
-cp;03D6;cf=03C0;CWCF;CWT;CWU;dm=03C0;dt=Com;Lower;na=GREEK PI SYMBOL;NFKC_CF=03C0;NFKC_QC=N;NFKC_SCF=03C0;NFKD_QC=N;scf=03C0;stc=03A0;suc=03A0
-cp;03D7;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK KAI SYMBOL;stc=03CF;suc=03CF
+cp;03CF;age=5.1;cf=03D7;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Technical;na=GREEK CAPITAL KAI SYMBOL;NFKC_CF=03D7;NFKC_SCF=03D7;SB=UP;scf=03D7;slc=03D7;Upper
+cp;03D0;cf=03B2;CWCF;CWT;CWU;dm=03B2;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;Math;na=GREEK BETA SYMBOL;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;scf=03B2;stc=0392;suc=0392
+cp;03D1;cf=03B8;CWCF;CWT;CWU;dm=03B8;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;Math;na=GREEK THETA SYMBOL;NFKC_CF=03B8;NFKC_QC=N;NFKC_SCF=03B8;NFKD_QC=N;scf=03B8;stc=0398;suc=0398
+cp;03D2;-CWCM;dm=03A5;dt=Com;FC_NFKC=03C5;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Math;na=GREEK UPSILON WITH HOOK SYMBOL;NFKC_CF=03C5;NFKC_QC=N;NFKC_SCF=03C5;NFKD_QC=N;SB=UP;Upper
+cp;03D3;-CWCM;dm=03D2 0301;dt=Can;FC_NFKC=03CD;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;NFD_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;NFKD_QC=N;SB=UP;Upper
+cp;03D4;-CWCM;dm=03D2 0308;dt=Can;FC_NFKC=03CB;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;NFD_QC=N;NFKC_CF=03CB;NFKC_QC=N;NFKC_SCF=03CB;NFKD_QC=N;SB=UP;Upper
+cp;03D5;cf=03C6;CWCF;CWT;CWU;dm=03C6;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;Math;na=GREEK PHI SYMBOL;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;scf=03C6;stc=03A6;suc=03A6
+cp;03D6;cf=03C0;CWCF;CWT;CWU;dm=03C0;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK PI SYMBOL;NFKC_CF=03C0;NFKC_QC=N;NFKC_SCF=03C0;NFKD_QC=N;scf=03C0;stc=03A0;suc=03A0
+cp;03D7;age=3.0;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=GREEK KAI SYMBOL;stc=03CF;suc=03CF
# Archaic letters
-cp;03D8;age=3.2;cf=03D9;CWCF;CWL;gc=Lu;na=GREEK LETTER ARCHAIC KOPPA;NFKC_CF=03D9;NFKC_SCF=03D9;SB=UP;scf=03D9;slc=03D9;Upper
-cp;03D9;age=3.2;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER ARCHAIC KOPPA;stc=03D8;suc=03D8
-cp;03DA;cf=03DB;CWCF;CWL;gc=Lu;na=GREEK LETTER STIGMA;NFKC_CF=03DB;NFKC_SCF=03DB;SB=UP;scf=03DB;slc=03DB;Upper
-cp;03DB;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER STIGMA;stc=03DA;suc=03DA
-cp;03DC;cf=03DD;CWCF;CWL;gc=Lu;na=GREEK LETTER DIGAMMA;NFKC_CF=03DD;NFKC_SCF=03DD;SB=UP;scf=03DD;slc=03DD;Upper
-cp;03DD;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER DIGAMMA;stc=03DC;suc=03DC
-cp;03DE;cf=03DF;CWCF;CWL;gc=Lu;na=GREEK LETTER KOPPA;NFKC_CF=03DF;NFKC_SCF=03DF;SB=UP;scf=03DF;slc=03DF;Upper
-cp;03DF;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER KOPPA;stc=03DE;suc=03DE
-cp;03E0;cf=03E1;CWCF;CWL;gc=Lu;na=GREEK LETTER SAMPI;NFKC_CF=03E1;NFKC_SCF=03E1;SB=UP;scf=03E1;slc=03E1;Upper
-cp;03E1;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER SAMPI;stc=03E0;suc=03E0
+cp;03D8;age=3.2;cf=03D9;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK LETTER ARCHAIC KOPPA;NFKC_CF=03D9;NFKC_SCF=03D9;SB=UP;scf=03D9;slc=03D9;Upper
+cp;03D9;age=3.2;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER ARCHAIC KOPPA;stc=03D8;suc=03D8
+cp;03DA;cf=03DB;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK LETTER STIGMA;NFKC_CF=03DB;NFKC_SCF=03DB;SB=UP;scf=03DB;slc=03DB;Upper
+cp;03DB;age=3.0;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER STIGMA;stc=03DA;suc=03DA
+cp;03DC;cf=03DD;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK LETTER DIGAMMA;NFKC_CF=03DD;NFKC_SCF=03DD;SB=UP;scf=03DD;slc=03DD;Upper
+cp;03DD;age=3.0;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER DIGAMMA;stc=03DC;suc=03DC
+cp;03DE;cf=03DF;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK LETTER KOPPA;NFKC_CF=03DF;NFKC_SCF=03DF;SB=UP;scf=03DF;slc=03DF;Upper
+cp;03DF;age=3.0;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER KOPPA;stc=03DE;suc=03DE
+cp;03E0;cf=03E1;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK LETTER SAMPI;NFKC_CF=03E1;NFKC_SCF=03E1;SB=UP;scf=03E1;slc=03E1;Upper
+cp;03E1;age=3.0;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER SAMPI;stc=03E0;suc=03E0
# Coptic letters derived from Demotic
-cp;03E2;cf=03E3;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SHEI;NFKC_CF=03E3;NFKC_SCF=03E3;SB=UP;sc=Copt;scf=03E3;slc=03E3;Upper
-cp;03E3;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER SHEI;sc=Copt;stc=03E2;suc=03E2
-cp;03E4;cf=03E5;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER FEI;NFKC_CF=03E5;NFKC_SCF=03E5;SB=UP;sc=Copt;scf=03E5;slc=03E5;Upper
-cp;03E5;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER FEI;sc=Copt;stc=03E4;suc=03E4
-cp;03E6;cf=03E7;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KHEI;NFKC_CF=03E7;NFKC_SCF=03E7;SB=UP;sc=Copt;scf=03E7;slc=03E7;Upper
-cp;03E7;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER KHEI;sc=Copt;stc=03E6;suc=03E6
-cp;03E8;cf=03E9;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER HORI;NFKC_CF=03E9;NFKC_SCF=03E9;SB=UP;sc=Copt;scf=03E9;slc=03E9;Upper
-cp;03E9;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER HORI;sc=Copt;stc=03E8;suc=03E8
-cp;03EA;cf=03EB;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER GANGIA;NFKC_CF=03EB;NFKC_SCF=03EB;SB=UP;sc=Copt;scf=03EB;slc=03EB;Upper
-cp;03EB;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER GANGIA;sc=Copt;stc=03EA;suc=03EA
-cp;03EC;cf=03ED;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SHIMA;NFKC_CF=03ED;NFKC_SCF=03ED;SB=UP;sc=Copt;scf=03ED;slc=03ED;Upper
-cp;03ED;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER SHIMA;sc=Copt;stc=03EC;suc=03EC
-cp;03EE;cf=03EF;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DEI;NFKC_CF=03EF;NFKC_SCF=03EF;SB=UP;sc=Copt;scf=03EF;slc=03EF;Upper
-cp;03EF;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER DEI;sc=Copt;stc=03EE;suc=03EE
+cp;03E2;cf=03E3;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Exclusion;na=COPTIC CAPITAL LETTER SHEI;NFKC_CF=03E3;NFKC_SCF=03E3;SB=UP;sc=Copt;scf=03E3;slc=03E3;Upper
+cp;03E3;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Exclusion;Lower;na=COPTIC SMALL LETTER SHEI;sc=Copt;stc=03E2;suc=03E2
+cp;03E4;cf=03E5;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Exclusion;na=COPTIC CAPITAL LETTER FEI;NFKC_CF=03E5;NFKC_SCF=03E5;SB=UP;sc=Copt;scf=03E5;slc=03E5;Upper
+cp;03E5;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Exclusion;Lower;na=COPTIC SMALL LETTER FEI;sc=Copt;stc=03E4;suc=03E4
+cp;03E6;cf=03E7;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Exclusion;na=COPTIC CAPITAL LETTER KHEI;NFKC_CF=03E7;NFKC_SCF=03E7;SB=UP;sc=Copt;scf=03E7;slc=03E7;Upper
+cp;03E7;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Exclusion;Lower;na=COPTIC SMALL LETTER KHEI;sc=Copt;stc=03E6;suc=03E6
+cp;03E8;cf=03E9;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Exclusion;na=COPTIC CAPITAL LETTER HORI;NFKC_CF=03E9;NFKC_SCF=03E9;SB=UP;sc=Copt;scf=03E9;slc=03E9;Upper
+cp;03E9;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Exclusion;Lower;na=COPTIC SMALL LETTER HORI;sc=Copt;stc=03E8;suc=03E8
+cp;03EA;cf=03EB;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Exclusion;na=COPTIC CAPITAL LETTER GANGIA;NFKC_CF=03EB;NFKC_SCF=03EB;SB=UP;sc=Copt;scf=03EB;slc=03EB;Upper
+cp;03EB;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Exclusion;Lower;na=COPTIC SMALL LETTER GANGIA;sc=Copt;stc=03EA;suc=03EA
+cp;03EC;cf=03ED;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Exclusion;na=COPTIC CAPITAL LETTER SHIMA;NFKC_CF=03ED;NFKC_SCF=03ED;SB=UP;sc=Copt;scf=03ED;slc=03ED;Upper
+cp;03ED;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Exclusion;Lower;na=COPTIC SMALL LETTER SHIMA;sc=Copt;stc=03EC;suc=03EC
+cp;03EE;cf=03EF;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Exclusion;na=COPTIC CAPITAL LETTER DEI;NFKC_CF=03EF;NFKC_SCF=03EF;SB=UP;sc=Copt;scf=03EF;slc=03EF;Upper
+cp;03EF;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Exclusion;Lower;na=COPTIC SMALL LETTER DEI;sc=Copt;stc=03EE;suc=03EE
# Variant letterforms
-cp;03F0;cf=03BA;CWCF;CWT;CWU;dm=03BA;dt=Com;Lower;Math;na=GREEK KAPPA SYMBOL;NFKC_CF=03BA;NFKC_QC=N;NFKC_SCF=03BA;NFKD_QC=N;scf=03BA;stc=039A;suc=039A
-cp;03F1;cf=03C1;CWCF;CWT;CWU;dm=03C1;dt=Com;Lower;Math;na=GREEK RHO SYMBOL;NFKC_CF=03C1;NFKC_QC=N;NFKC_SCF=03C1;NFKD_QC=N;scf=03C1;stc=03A1;suc=03A1
-cp;03F2;CWT;CWU;dm=03C2;dt=Com;FC_NFKC=03C3;Lower;na=GREEK LUNATE SIGMA SYMBOL;NFKC_CF=03C3;NFKC_QC=N;NFKC_SCF=03C3;NFKD_QC=N;stc=03F9;suc=03F9
+cp;03F0;cf=03BA;CWCF;CWT;CWU;dm=03BA;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;Math;na=GREEK KAPPA SYMBOL;NFKC_CF=03BA;NFKC_QC=N;NFKC_SCF=03BA;NFKD_QC=N;scf=03BA;stc=039A;suc=039A
+cp;03F1;cf=03C1;CWCF;CWT;CWU;dm=03C1;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;Math;na=GREEK RHO SYMBOL;NFKC_CF=03C1;NFKC_QC=N;NFKC_SCF=03C1;NFKD_QC=N;scf=03C1;stc=03A1;suc=03A1
+cp;03F2;CWT;CWU;dm=03C2;dt=Com;FC_NFKC=03C3;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK LUNATE SIGMA SYMBOL;NFKC_CF=03C3;NFKC_QC=N;NFKC_SCF=03C3;NFKD_QC=N;stc=03F9;suc=03F9
# Additional letter
-cp;03F3;-CWKCF;CWT;CWU;Lower;na=GREEK LETTER YOT;SD;stc=037F;suc=037F
+cp;03F3;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Technical Obsolete;Lower;na=GREEK LETTER YOT;SD;stc=037F;suc=037F
# Variant letterforms and symbols
-cp;03F4;age=3.1;cf=03B8;CWCF;CWL;dm=0398;dt=Com;gc=Lu;Math;na=GREEK CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_QC=N;NFKC_SCF=03B8;NFKD_QC=N;SB=UP;scf=03B8;slc=03B8;Upper
-cp;03F5;age=3.1;cf=03B5;CWCF;CWT;CWU;dm=03B5;dt=Com;Lower;Math;na=GREEK LUNATE EPSILON SYMBOL;NFKC_CF=03B5;NFKC_QC=N;NFKC_SCF=03B5;NFKD_QC=N;scf=03B5;stc=0395;suc=0395
-cp;03F6;age=3.2;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;gc=Sm;-IDC;-IDS;Math;na=GREEK REVERSED LUNATE EPSILON SYMBOL;SB=XX;WB=XX;-XIDC;-XIDS
+cp;03F4;age=3.1;cf=03B8;CWCF;CWL;dm=0398;dt=Com;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Math;na=GREEK CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_QC=N;NFKC_SCF=03B8;NFKD_QC=N;SB=UP;scf=03B8;slc=03B8;Upper
+cp;03F5;age=3.1;cf=03B5;CWCF;CWT;CWU;dm=03B5;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;Math;na=GREEK LUNATE EPSILON SYMBOL;NFKC_CF=03B5;NFKC_QC=N;NFKC_SCF=03B5;NFKD_QC=N;scf=03B5;stc=0395;suc=0395
+cp;03F6;age=3.2;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;gc=Sm;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;Math;na=GREEK REVERSED LUNATE EPSILON SYMBOL;SB=XX;WB=XX;-XIDC;-XIDS
# Additional archaic letters for Bactrian
-cp;03F7;age=4.0;cf=03F8;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER SHO;NFKC_CF=03F8;NFKC_SCF=03F8;SB=UP;scf=03F8;slc=03F8;Upper
-cp;03F8;age=4.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER SHO;stc=03F7;suc=03F7
+cp;03F7;age=4.0;cf=03F8;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK CAPITAL LETTER SHO;NFKC_CF=03F8;NFKC_SCF=03F8;SB=UP;scf=03F8;slc=03F8;Upper
+cp;03F8;age=4.0;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER SHO;stc=03F7;suc=03F7
# Variant letterform
-cp;03F9;age=4.0;cf=03F2;CWCF;CWL;dm=03A3;dt=Com;FC_NFKC=03C3;gc=Lu;na=GREEK CAPITAL LUNATE SIGMA SYMBOL;NFKC_CF=03C3;NFKC_QC=N;NFKC_SCF=03C3;NFKD_QC=N;SB=UP;scf=03F2;slc=03F2;Upper
+cp;03F9;age=4.0;cf=03F2;CWCF;CWL;dm=03A3;dt=Com;FC_NFKC=03C3;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK CAPITAL LUNATE SIGMA SYMBOL;NFKC_CF=03C3;NFKC_QC=N;NFKC_SCF=03C3;NFKD_QC=N;SB=UP;scf=03F2;slc=03F2;Upper
# Archaic letters
-cp;03FA;age=4.0;cf=03FB;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER SAN;NFKC_CF=03FB;NFKC_SCF=03FB;SB=UP;scf=03FB;slc=03FB;Upper
-cp;03FB;age=4.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER SAN;stc=03FA;suc=03FA
+cp;03FA;age=4.0;cf=03FB;CWCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=GREEK CAPITAL LETTER SAN;NFKC_CF=03FB;NFKC_SCF=03FB;SB=UP;scf=03FB;slc=03FB;Upper
+cp;03FB;age=4.0;-CWKCF;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=GREEK SMALL LETTER SAN;stc=03FA;suc=03FA
# Symbol
cp;03FC;age=4.1;-CWCM;-CWKCF;Lower;na=GREEK RHO WITH STROKE SYMBOL
# Editorial symbols
@@ -2416,7 +2433,7 @@ 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;NFKC_SCF=037C;SB=UP;scf=037C;slc=037C;Upper
cp;03FF;age=4.1;cf=037D;CWCF;CWL;gc=Lu;na=GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;NFKC_CF=037D;NFKC_SCF=037D;SB=UP;scf=037D;slc=037D;Upper
-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
+block;0400..04FF;age=1.1;Alpha;blk=Cyrillic;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# 0400..04FF Cyrillic
# Cyrillic extensions
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;NFKC_SCF=0450;NFKD_QC=N;SB=UP;scf=0450;slc=0450;Upper
@@ -2518,51 +2535,51 @@ cp;045D;age=3.0;CWT;CWU;dm=0438 0300;dt=Can;Lower;na=CYRILLIC SMALL LETTER I WIT
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
cp;045F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZHE;stc=040F;suc=040F
# Historic letters
-cp;0460;cf=0461;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OMEGA;NFKC_CF=0461;NFKC_SCF=0461;SB=UP;scf=0461;slc=0461;Upper
-cp;0461;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OMEGA;stc=0460;suc=0460
-cp;0462;cf=0463;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YAT;NFKC_CF=0463;NFKC_SCF=0463;SB=UP;scf=0463;slc=0463;Upper
-cp;0463;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YAT;stc=0462;suc=0462
-cp;0464;cf=0465;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED E;NFKC_CF=0465;NFKC_SCF=0465;SB=UP;scf=0465;slc=0465;Upper
-cp;0465;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED E;stc=0464;suc=0464
-cp;0466;cf=0467;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LITTLE YUS;NFKC_CF=0467;NFKC_SCF=0467;SB=UP;scf=0467;slc=0467;Upper
-cp;0467;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER LITTLE YUS;stc=0466;suc=0466
-cp;0468;cf=0469;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;NFKC_CF=0469;NFKC_SCF=0469;SB=UP;scf=0469;slc=0469;Upper
-cp;0469;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;stc=0468;suc=0468
-cp;046A;cf=046B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BIG YUS;NFKC_CF=046B;NFKC_SCF=046B;SB=UP;scf=046B;slc=046B;Upper
-cp;046B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BIG YUS;stc=046A;suc=046A
-cp;046C;cf=046D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;NFKC_CF=046D;NFKC_SCF=046D;SB=UP;scf=046D;slc=046D;Upper
-cp;046D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED BIG YUS;stc=046C;suc=046C
-cp;046E;cf=046F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KSI;NFKC_CF=046F;NFKC_SCF=046F;SB=UP;scf=046F;slc=046F;Upper
-cp;046F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KSI;stc=046E;suc=046E
-cp;0470;cf=0471;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PSI;NFKC_CF=0471;NFKC_SCF=0471;SB=UP;scf=0471;slc=0471;Upper
-cp;0471;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PSI;stc=0470;suc=0470
-cp;0472;cf=0473;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER FITA;NFKC_CF=0473;NFKC_SCF=0473;SB=UP;scf=0473;slc=0473;Upper
-cp;0473;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER FITA;stc=0472;suc=0472
-cp;0474;cf=0475;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IZHITSA;NFKC_CF=0475;NFKC_SCF=0475;SB=UP;scf=0475;slc=0475;Upper
-cp;0475;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IZHITSA;stc=0474;suc=0474
-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;NFKC_SCF=0477;NFKD_QC=N;SB=UP;scf=0477;slc=0477;Upper
-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
+cp;0460;cf=0461;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER OMEGA;NFKC_CF=0461;NFKC_SCF=0461;SB=UP;scf=0461;slc=0461;Upper
+cp;0461;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER OMEGA;stc=0460;suc=0460
+cp;0462;cf=0463;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER YAT;NFKC_CF=0463;NFKC_SCF=0463;SB=UP;scf=0463;slc=0463;Upper
+cp;0463;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER YAT;stc=0462;suc=0462
+cp;0464;cf=0465;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER IOTIFIED E;NFKC_CF=0465;NFKC_SCF=0465;SB=UP;scf=0465;slc=0465;Upper
+cp;0465;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER IOTIFIED E;stc=0464;suc=0464
+cp;0466;cf=0467;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER LITTLE YUS;NFKC_CF=0467;NFKC_SCF=0467;SB=UP;scf=0467;slc=0467;Upper
+cp;0467;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER LITTLE YUS;stc=0466;suc=0466
+cp;0468;cf=0469;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;NFKC_CF=0469;NFKC_SCF=0469;SB=UP;scf=0469;slc=0469;Upper
+cp;0469;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;stc=0468;suc=0468
+cp;046A;cf=046B;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER BIG YUS;NFKC_CF=046B;NFKC_SCF=046B;SB=UP;scf=046B;slc=046B;Upper
+cp;046B;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER BIG YUS;stc=046A;suc=046A
+cp;046C;cf=046D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;NFKC_CF=046D;NFKC_SCF=046D;SB=UP;scf=046D;slc=046D;Upper
+cp;046D;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER IOTIFIED BIG YUS;stc=046C;suc=046C
+cp;046E;cf=046F;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KSI;NFKC_CF=046F;NFKC_SCF=046F;SB=UP;scf=046F;slc=046F;Upper
+cp;046F;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KSI;stc=046E;suc=046E
+cp;0470;cf=0471;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER PSI;NFKC_CF=0471;NFKC_SCF=0471;SB=UP;scf=0471;slc=0471;Upper
+cp;0471;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER PSI;stc=0470;suc=0470
+cp;0472;cf=0473;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER FITA;NFKC_CF=0473;NFKC_SCF=0473;SB=UP;scf=0473;slc=0473;Upper
+cp;0473;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER FITA;stc=0472;suc=0472
+cp;0474;cf=0475;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER IZHITSA;NFKC_CF=0475;NFKC_SCF=0475;SB=UP;scf=0475;slc=0475;Upper
+cp;0475;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER IZHITSA;stc=0474;suc=0474
+cp;0476;cf=0477;CWCF;CWKCF;CWL;dm=0474 030F;dt=Can;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKC_CF=0477;NFKC_SCF=0477;NFKD_QC=N;SB=UP;scf=0477;slc=0477;Upper
+cp;0477;CWT;CWU;dm=0475 030F;dt=Can;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKD_QC=N;stc=0476;suc=0476
# Historic digraphs
-cp;0478;cf=0479;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER UK;NFKC_CF=0479;NFKC_SCF=0479;SB=UP;scf=0479;slc=0479;Upper
-cp;0479;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER UK;stc=0478;suc=0478
+cp;0478;cf=0479;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER UK;NFKC_CF=0479;NFKC_SCF=0479;SB=UP;scf=0479;slc=0479;Upper
+cp;0479;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER UK;stc=0478;suc=0478
# Historic letters
-cp;047A;cf=047B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ROUND OMEGA;NFKC_CF=047B;NFKC_SCF=047B;SB=UP;scf=047B;slc=047B;Upper
-cp;047B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ROUND OMEGA;stc=047A;suc=047A
-cp;047C;cf=047D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;NFKC_CF=047D;NFKC_SCF=047D;SB=UP;scf=047D;slc=047D;Upper
-cp;047D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OMEGA WITH TITLO;stc=047C;suc=047C
-cp;047E;cf=047F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OT;NFKC_CF=047F;NFKC_SCF=047F;SB=UP;scf=047F;slc=047F;Upper
-cp;047F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OT;stc=047E;suc=047E
-cp;0480;cf=0481;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOPPA;NFKC_CF=0481;NFKC_SCF=0481;SB=UP;scf=0481;slc=0481;Upper
-cp;0481;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOPPA;stc=0480;suc=0480
+cp;047A;cf=047B;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER ROUND OMEGA;NFKC_CF=047B;NFKC_SCF=047B;SB=UP;scf=047B;slc=047B;Upper
+cp;047B;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER ROUND OMEGA;stc=047A;suc=047A
+cp;047C;cf=047D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;NFKC_CF=047D;NFKC_SCF=047D;SB=UP;scf=047D;slc=047D;Upper
+cp;047D;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER OMEGA WITH TITLO;stc=047C;suc=047C
+cp;047E;cf=047F;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER OT;NFKC_CF=047F;NFKC_SCF=047F;SB=UP;scf=047F;slc=047F;Upper
+cp;047F;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER OT;stc=047E;suc=047E
+cp;0480;cf=0481;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOPPA;NFKC_CF=0481;NFKC_SCF=0481;SB=UP;scf=0481;slc=0481;Upper
+cp;0481;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOPPA;stc=0480;suc=0480
# Historic miscellaneous
-cp;0482;-Alpha;-Cased;-CWCM;gc=So;-IDC;-IDS;na=CYRILLIC THOUSANDS SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0483;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC TITLO;SB=EX;scx=Cyrl Perm;WB=Extend;-XIDS
-cp;0484;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PALATALIZATION;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
-cp;0485;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC DASIA PNEUMATA;SB=EX;sc=Zinh;scx=Cyrl Latn;WB=Extend;-XIDS
-cp;0486;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PSILI PNEUMATA;SB=EX;sc=Zinh;scx=Cyrl Latn;WB=Extend;-XIDS
-cp;0487;age=5.1;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC POKRYTIE;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
-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
-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
+cp;0482;-Alpha;-Cased;-CWCM;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Obsolete Not_XID;-IDS;na=CYRILLIC THOUSANDS SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0483;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC TITLO;SB=EX;scx=Cyrl Perm;WB=Extend;-XIDS
+cp;0484;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical Obsolete;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PALATALIZATION;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
+cp;0485;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical Obsolete;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC DASIA PNEUMATA;SB=EX;sc=Zinh;scx=Cyrl Latn;WB=Extend;-XIDS
+cp;0486;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical Obsolete;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PSILI PNEUMATA;SB=EX;sc=Zinh;scx=Cyrl Latn;WB=Extend;-XIDS
+cp;0487;age=5.1;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical Obsolete;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC POKRYTIE;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
+cp;0488;age=3.0;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;Identifier_Status=Restricted;Identifier_Type=Obsolete Not_XID;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
+cp;0489;age=3.0;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;Identifier_Status=Restricted;Identifier_Type=Obsolete Not_XID;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
# Extended Cyrillic
cp;048A;age=3.2;cf=048B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;NFKC_CF=048B;NFKC_SCF=048B;SB=UP;scf=048B;slc=048B;Upper
cp;048B;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHORT I WITH TAIL;stc=048A;suc=048A
@@ -2684,25 +2701,25 @@ cp;04FD;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HA WITH HOOK;stc=04FC;suc
cp;04FE;age=5.0;cf=04FF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH STROKE;NFKC_CF=04FF;NFKC_SCF=04FF;SB=UP;scf=04FF;slc=04FF;Upper
cp;04FF;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HA WITH STROKE;stc=04FE;suc=04FE
-block;0500..052F;age=3.2;Alpha;blk=Cyrillic_Sup;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
+block;0500..052F;age=3.2;Alpha;blk=Cyrillic_Sup;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# 0500..052F Cyrillic Supplement
# Komi letters
-cp;0500;cf=0501;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DE;NFKC_CF=0501;NFKC_SCF=0501;SB=UP;scf=0501;slc=0501;Upper
-cp;0501;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DE;stc=0500;suc=0500
-cp;0502;cf=0503;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DJE;NFKC_CF=0503;NFKC_SCF=0503;SB=UP;scf=0503;slc=0503;Upper
-cp;0503;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DJE;stc=0502;suc=0502
-cp;0504;cf=0505;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI ZJE;NFKC_CF=0505;NFKC_SCF=0505;SB=UP;scf=0505;slc=0505;Upper
-cp;0505;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI ZJE;stc=0504;suc=0504
-cp;0506;cf=0507;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DZJE;NFKC_CF=0507;NFKC_SCF=0507;SB=UP;scf=0507;slc=0507;Upper
-cp;0507;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DZJE;stc=0506;suc=0506
-cp;0508;cf=0509;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI LJE;NFKC_CF=0509;NFKC_SCF=0509;SB=UP;scf=0509;slc=0509;Upper
-cp;0509;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI LJE;stc=0508;suc=0508
-cp;050A;cf=050B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI NJE;NFKC_CF=050B;NFKC_SCF=050B;SB=UP;scf=050B;slc=050B;Upper
-cp;050B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI NJE;stc=050A;suc=050A
-cp;050C;cf=050D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI SJE;NFKC_CF=050D;NFKC_SCF=050D;SB=UP;scf=050D;slc=050D;Upper
-cp;050D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI SJE;stc=050C;suc=050C
-cp;050E;cf=050F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI TJE;NFKC_CF=050F;NFKC_SCF=050F;SB=UP;scf=050F;slc=050F;Upper
-cp;050F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI TJE;stc=050E;suc=050E
+cp;0500;cf=0501;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOMI DE;NFKC_CF=0501;NFKC_SCF=0501;SB=UP;scf=0501;slc=0501;Upper
+cp;0501;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOMI DE;stc=0500;suc=0500
+cp;0502;cf=0503;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOMI DJE;NFKC_CF=0503;NFKC_SCF=0503;SB=UP;scf=0503;slc=0503;Upper
+cp;0503;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOMI DJE;stc=0502;suc=0502
+cp;0504;cf=0505;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOMI ZJE;NFKC_CF=0505;NFKC_SCF=0505;SB=UP;scf=0505;slc=0505;Upper
+cp;0505;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOMI ZJE;stc=0504;suc=0504
+cp;0506;cf=0507;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOMI DZJE;NFKC_CF=0507;NFKC_SCF=0507;SB=UP;scf=0507;slc=0507;Upper
+cp;0507;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOMI DZJE;stc=0506;suc=0506
+cp;0508;cf=0509;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOMI LJE;NFKC_CF=0509;NFKC_SCF=0509;SB=UP;scf=0509;slc=0509;Upper
+cp;0509;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOMI LJE;stc=0508;suc=0508
+cp;050A;cf=050B;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOMI NJE;NFKC_CF=050B;NFKC_SCF=050B;SB=UP;scf=050B;slc=050B;Upper
+cp;050B;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOMI NJE;stc=050A;suc=050A
+cp;050C;cf=050D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOMI SJE;NFKC_CF=050D;NFKC_SCF=050D;SB=UP;scf=050D;slc=050D;Upper
+cp;050D;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOMI SJE;stc=050C;suc=050C
+cp;050E;cf=050F;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER KOMI TJE;NFKC_CF=050F;NFKC_SCF=050F;SB=UP;scf=050F;slc=050F;Upper
+cp;050F;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER KOMI TJE;stc=050E;suc=050E
# Khanty letters
cp;0510;age=5.0;cf=0511;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED ZE;NFKC_CF=0511;NFKC_SCF=0511;SB=UP;scf=0511;slc=0511;Upper
cp;0511;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED ZE;stc=0510;suc=0510
@@ -2739,15 +2756,15 @@ cp;0527;age=6.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHHA WITH DESCENDER;stc=0
cp;0528;age=7.0;cf=0529;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK;NFKC_CF=0529;NFKC_SCF=0529;SB=UP;scf=0529;slc=0529;Upper
cp;0529;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH LEFT HOOK;stc=0528;suc=0528
# Komi letters
-cp;052A;age=7.0;cf=052B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZZHE;NFKC_CF=052B;NFKC_SCF=052B;SB=UP;scf=052B;slc=052B;Upper
-cp;052B;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZZHE;stc=052A;suc=052A
-cp;052C;age=7.0;cf=052D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DCHE;NFKC_CF=052D;NFKC_SCF=052D;SB=UP;scf=052D;slc=052D;Upper
-cp;052D;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DCHE;stc=052C;suc=052C
+cp;052A;age=7.0;cf=052B;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER DZZHE;NFKC_CF=052B;NFKC_SCF=052B;SB=UP;scf=052B;slc=052B;Upper
+cp;052B;age=7.0;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER DZZHE;stc=052A;suc=052A
+cp;052C;age=7.0;cf=052D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=CYRILLIC CAPITAL LETTER DCHE;NFKC_CF=052D;NFKC_SCF=052D;SB=UP;scf=052D;slc=052D;Upper
+cp;052D;age=7.0;CWT;CWU;Identifier_Status=Restricted;Identifier_Type=Obsolete;Lower;na=CYRILLIC SMALL LETTER DCHE;stc=052C;suc=052C
# Khanty letters
cp;052E;age=7.0;cf=052F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH DESCENDER;NFKC_CF=052F;NFKC_SCF=052F;SB=UP;scf=052F;slc=052F;Upper
cp;052F;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH DESCENDER;stc=052E;suc=052E
-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
+block;0530..058F;age=1.1;Alpha;blk=Armenian;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LO;sc=Armn;WB=LE;XIDC;XIDS
# 0530..058F Armenian
unassigned;0530
# Uppercase letters
@@ -2792,14 +2809,14 @@ cp;0556;cf=0586;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER FEH;NFKC_CF=0586
unassigned;0557..0558
# Modifier letters
cp;0559;-Cased;CI;-CWCM;Dia;gc=Lm;na=ARMENIAN MODIFIER LETTER LEFT HALF RING;SB=LE
-cp;055A;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=ARMENIAN APOSTROPHE;SB=XX;-XIDC;-XIDS
-cp;055B;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=ARMENIAN EMPHASIS MARK;SB=XX;-XIDC;-XIDS
-cp;055C;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=ARMENIAN EXCLAMATION MARK;SB=XX;-XIDC;-XIDS
-cp;055D;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=ARMENIAN COMMA;SB=SC;WB=XX;-XIDC;-XIDS
-cp;055E;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=ARMENIAN QUESTION MARK;SB=XX;-XIDC;-XIDS
-cp;055F;-Alpha;-Cased;CI;-CWCM;gc=Po;-IDC;-IDS;na=ARMENIAN ABBREVIATION MARK;SB=XX;WB=ML;-XIDC;-XIDS
+cp;055A;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ARMENIAN APOSTROPHE;SB=XX;-XIDC;-XIDS
+cp;055B;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ARMENIAN EMPHASIS MARK;SB=XX;-XIDC;-XIDS
+cp;055C;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ARMENIAN EXCLAMATION MARK;SB=XX;-XIDC;-XIDS
+cp;055D;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ARMENIAN COMMA;SB=SC;WB=XX;-XIDC;-XIDS
+cp;055E;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ARMENIAN QUESTION MARK;SB=XX;-XIDC;-XIDS
+cp;055F;-Alpha;-Cased;CI;-CWCM;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ARMENIAN ABBREVIATION MARK;SB=XX;WB=ML;-XIDC;-XIDS
# Lowercase letters
-cp;0560;age=11.0;-CWCM;Lower;na=ARMENIAN SMALL LETTER TURNED AYB
+cp;0560;age=11.0;-CWCM;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=ARMENIAN SMALL LETTER TURNED AYB
cp;0561;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER AYB;stc=0531;suc=0531
cp;0562;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER BEN;stc=0532;suc=0532
cp;0563;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER GIM;stc=0533;suc=0533
@@ -2838,19 +2855,19 @@ cp;0583;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER PIWR;stc=0553;suc=0553
cp;0584;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER KEH;stc=0554;suc=0554
cp;0585;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER OH;stc=0555;suc=0555
cp;0586;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER FEH;stc=0556;suc=0556
-cp;0587;cf=0565 0582;CWCF;CWKCF;CWT;CWU;dm=0565 0582;dt=Com;lc=0587;Lower;na=ARMENIAN SMALL LIGATURE ECH YIWN;NFKC_CF=0565 0582;NFKC_QC=N;NFKC_SCF=0565 0582;NFKD_QC=N;tc=0535 0582;uc=0535 0552
-cp;0588;age=11.0;-CWCM;Lower;na=ARMENIAN SMALL LETTER YI WITH STROKE
+cp;0587;cf=0565 0582;CWCF;CWKCF;CWT;CWU;dm=0565 0582;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;lc=0587;Lower;na=ARMENIAN SMALL LIGATURE ECH YIWN;NFKC_CF=0565 0582;NFKC_QC=N;NFKC_SCF=0565 0582;NFKD_QC=N;tc=0535 0582;uc=0535 0552
+cp;0588;age=11.0;-CWCM;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=ARMENIAN SMALL LETTER YI WITH STROKE
# Punctuation
-cp;0589;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=IS;na=ARMENIAN FULL STOP;SB=ST;STerm;Term;WB=MN;-XIDC;-XIDS
-cp;058A;age=3.0;-Alpha;bc=ON;-Cased;-CWCM;Dash;gc=Pd;Hyphen;-IDC;-IDS;lb=BA;na=ARMENIAN HYPHEN;SB=XX;-XIDC;-XIDS
+cp;0589;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;lb=IS;na=ARMENIAN FULL STOP;SB=ST;STerm;Term;WB=MN;-XIDC;-XIDS
+cp;058A;age=3.0;-Alpha;bc=ON;-Cased;-CWCM;Dash;gc=Pd;Hyphen;-IDC;Identifier_Type=Inclusion;-IDS;lb=BA;na=ARMENIAN HYPHEN;SB=XX;-XIDC;-XIDS
unassigned;058B..058C
# Religious symbols
-cp;058D;age=7.0;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=RIGHT-FACING ARMENIAN ETERNITY SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;058E;age=7.0;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=LEFT-FACING ARMENIAN ETERNITY SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;058D;age=7.0;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=RIGHT-FACING ARMENIAN ETERNITY SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;058E;age=7.0;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=LEFT-FACING ARMENIAN ETERNITY SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Currency symbol
-cp;058F;age=6.1;-Alpha;bc=ET;-Cased;-CWCM;gc=Sc;-IDC;-IDS;lb=PR;na=ARMENIAN DRAM SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;058F;age=6.1;-Alpha;bc=ET;-Cased;-CWCM;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;lb=PR;na=ARMENIAN DRAM SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-block;0590..05FF;age=1.1;Alpha;bc=NSM;blk=Hebrew;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Hebr;WB=Extend;XIDC
+block;0590..05FF;age=1.1;Alpha;bc=NSM;blk=Hebrew;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Uncommon_Use;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Hebr;WB=Extend;XIDC
# 0590..05FF Hebrew
unassigned;0590;bc=R
# Cantillation marks
@@ -2871,7 +2888,7 @@ cp;059E;age=2.0;-Alpha;ccc=230;Dia;na=HEBREW ACCENT GERSHAYIM
cp;059F;age=2.0;-Alpha;ccc=230;Dia;na=HEBREW ACCENT QARNEY PARA
cp;05A0;age=2.0;-Alpha;ccc=230;Dia;na=HEBREW ACCENT TELISHA GEDOLA
cp;05A1;age=2.0;-Alpha;ccc=230;Dia;na=HEBREW ACCENT PAZER
-cp;05A2;age=4.1;-Alpha;ccc=220;na=HEBREW ACCENT ATNAH HAFUKH
+cp;05A2;age=4.1;-Alpha;ccc=220;Identifier_Type=Uncommon_Use Obsolete;na=HEBREW ACCENT ATNAH HAFUKH
cp;05A3;age=2.0;-Alpha;ccc=220;Dia;na=HEBREW ACCENT MUNAH
cp;05A4;age=2.0;-Alpha;ccc=220;Dia;na=HEBREW ACCENT MAHAPAKH
cp;05A5;age=2.0;-Alpha;ccc=220;Dia;na=HEBREW ACCENT MERKHA
@@ -2890,7 +2907,7 @@ cp;05B0;ccc=10;Dia;na=HEBREW POINT SHEVA
cp;05B1;ccc=11;Dia;na=HEBREW POINT HATAF SEGOL
cp;05B2;ccc=12;Dia;na=HEBREW POINT HATAF PATAH
cp;05B3;ccc=13;Dia;na=HEBREW POINT HATAF QAMATS
-cp;05B4;ccc=14;Dia;na=HEBREW POINT HIRIQ
+cp;05B4;ccc=14;Dia;Identifier_Status=Allowed;Identifier_Type=Recommended;na=HEBREW POINT HIRIQ
cp;05B5;ccc=15;Dia;na=HEBREW POINT TSERE
cp;05B6;ccc=16;Dia;na=HEBREW POINT SEGOL
cp;05B7;ccc=17;Dia;na=HEBREW POINT PATAH
@@ -2900,108 +2917,108 @@ cp;05BA;age=5.0;ccc=19;Dia;na=HEBREW POINT HOLAM HASER FOR VAV
cp;05BB;ccc=20;Dia;na=HEBREW POINT QUBUTS
cp;05BC;ccc=21;Dia;na=HEBREW POINT DAGESH OR MAPIQ
cp;05BD;ccc=22;Dia;na=HEBREW POINT METEG
-cp;05BE;-Alpha;bc=R;-CI;Dash;gc=Pd;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=BA;na=HEBREW PUNCTUATION MAQAF;SB=XX;WB=XX;-XIDC
+cp;05BE;-Alpha;bc=R;-CI;Dash;gc=Pd;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Not_XID;InCB=None;jt=U;lb=BA;na=HEBREW PUNCTUATION MAQAF;SB=XX;WB=XX;-XIDC
cp;05BF;ccc=23;Dia;na=HEBREW POINT RAFE
-cp;05C0;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION PASEQ;SB=XX;WB=XX;-XIDC
+cp;05C0;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Not_XID;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION PASEQ;SB=XX;WB=XX;-XIDC
cp;05C1;ccc=24;Dia;na=HEBREW POINT SHIN DOT
cp;05C2;ccc=25;Dia;na=HEBREW POINT SIN DOT
-cp;05C3;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION SOF PASUQ;SB=XX;Term;WB=XX;-XIDC
+cp;05C3;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Not_XID;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION SOF PASUQ;SB=XX;Term;WB=XX;-XIDC
# Puncta extraordinaria
cp;05C4;age=2.0;ccc=230;Dia;na=HEBREW MARK UPPER DOT
-cp;05C5;age=4.1;ccc=220;na=HEBREW MARK LOWER DOT
+cp;05C5;age=4.1;ccc=220;Identifier_Type=Uncommon_Use Obsolete;na=HEBREW MARK LOWER DOT
# Points and punctuation
-cp;05C6;age=4.1;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=EX;na=HEBREW PUNCTUATION NUN HAFUKHA;SB=XX;WB=XX;-XIDC
-cp;05C7;age=4.1;ccc=18;na=HEBREW POINT QAMATS QATAN
+cp;05C6;age=4.1;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Obsolete Not_XID;InCB=None;jt=U;lb=EX;na=HEBREW PUNCTUATION NUN HAFUKHA;SB=XX;WB=XX;-XIDC
+cp;05C7;age=4.1;ccc=18;Identifier_Type=Uncommon_Use Technical;na=HEBREW POINT QAMATS QATAN
unassigned;05C8..05CF;bc=R
# Based on ISO 8859-8
-cp;05D0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER ALEF;SB=LE;WB=HL;XIDS
-cp;05D1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER BET;SB=LE;WB=HL;XIDS
-cp;05D2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER GIMEL;SB=LE;WB=HL;XIDS
-cp;05D3;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER DALET;SB=LE;WB=HL;XIDS
-cp;05D4;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER HE;SB=LE;WB=HL;XIDS
-cp;05D5;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER VAV;SB=LE;WB=HL;XIDS
-cp;05D6;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER ZAYIN;SB=LE;WB=HL;XIDS
-cp;05D7;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER HET;SB=LE;WB=HL;XIDS
-cp;05D8;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TET;SB=LE;WB=HL;XIDS
-cp;05D9;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER YOD;SB=LE;WB=HL;XIDS
-cp;05DA;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL KAF;SB=LE;WB=HL;XIDS
-cp;05DB;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER KAF;SB=LE;WB=HL;XIDS
-cp;05DC;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER LAMED;SB=LE;WB=HL;XIDS
-cp;05DD;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL MEM;SB=LE;WB=HL;XIDS
-cp;05DE;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER MEM;SB=LE;WB=HL;XIDS
-cp;05DF;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL NUN;SB=LE;WB=HL;XIDS
-cp;05E0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER NUN;SB=LE;WB=HL;XIDS
-cp;05E1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER SAMEKH;SB=LE;WB=HL;XIDS
-cp;05E2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER AYIN;SB=LE;WB=HL;XIDS
-cp;05E3;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL PE;SB=LE;WB=HL;XIDS
-cp;05E4;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER PE;SB=LE;WB=HL;XIDS
-cp;05E5;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL TSADI;SB=LE;WB=HL;XIDS
-cp;05E6;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TSADI;SB=LE;WB=HL;XIDS
-cp;05E7;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER QOF;SB=LE;WB=HL;XIDS
-cp;05E8;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER RESH;SB=LE;WB=HL;XIDS
-cp;05E9;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER SHIN;SB=LE;WB=HL;XIDS
-cp;05EA;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TAV;SB=LE;WB=HL;XIDS
+cp;05D0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER ALEF;SB=LE;WB=HL;XIDS
+cp;05D1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER BET;SB=LE;WB=HL;XIDS
+cp;05D2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER GIMEL;SB=LE;WB=HL;XIDS
+cp;05D3;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER DALET;SB=LE;WB=HL;XIDS
+cp;05D4;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER HE;SB=LE;WB=HL;XIDS
+cp;05D5;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER VAV;SB=LE;WB=HL;XIDS
+cp;05D6;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER ZAYIN;SB=LE;WB=HL;XIDS
+cp;05D7;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER HET;SB=LE;WB=HL;XIDS
+cp;05D8;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TET;SB=LE;WB=HL;XIDS
+cp;05D9;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER YOD;SB=LE;WB=HL;XIDS
+cp;05DA;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL KAF;SB=LE;WB=HL;XIDS
+cp;05DB;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER KAF;SB=LE;WB=HL;XIDS
+cp;05DC;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER LAMED;SB=LE;WB=HL;XIDS
+cp;05DD;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL MEM;SB=LE;WB=HL;XIDS
+cp;05DE;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER MEM;SB=LE;WB=HL;XIDS
+cp;05DF;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL NUN;SB=LE;WB=HL;XIDS
+cp;05E0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER NUN;SB=LE;WB=HL;XIDS
+cp;05E1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER SAMEKH;SB=LE;WB=HL;XIDS
+cp;05E2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER AYIN;SB=LE;WB=HL;XIDS
+cp;05E3;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL PE;SB=LE;WB=HL;XIDS
+cp;05E4;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER PE;SB=LE;WB=HL;XIDS
+cp;05E5;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL TSADI;SB=LE;WB=HL;XIDS
+cp;05E6;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TSADI;SB=LE;WB=HL;XIDS
+cp;05E7;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER QOF;SB=LE;WB=HL;XIDS
+cp;05E8;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER RESH;SB=LE;WB=HL;XIDS
+cp;05E9;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER SHIN;SB=LE;WB=HL;XIDS
+cp;05EA;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TAV;SB=LE;WB=HL;XIDS
unassigned;05EB..05EE;bc=R
# Sign
-cp;05EF;age=11.0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW YOD TRIANGLE;SB=LE;WB=HL;XIDS
+cp;05EF;age=11.0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW YOD TRIANGLE;SB=LE;WB=HL;XIDS
# Yiddish digraphs
-cp;05F0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH DOUBLE VAV;SB=LE;WB=HL;XIDS
-cp;05F1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH VAV YOD;SB=LE;WB=HL;XIDS
-cp;05F2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH DOUBLE YOD;SB=LE;WB=HL;XIDS
+cp;05F0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH DOUBLE VAV;SB=LE;WB=HL;XIDS
+cp;05F1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH VAV YOD;SB=LE;WB=HL;XIDS
+cp;05F2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH DOUBLE YOD;SB=LE;WB=HL;XIDS
# Additional punctuation
-cp;05F3;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION GERESH;SB=LE;WB=LE;-XIDC
-cp;05F4;-Alpha;bc=R;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION GERSHAYIM;SB=XX;WB=ML;-XIDC
+cp;05F3;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Status=Allowed;Identifier_Type=Inclusion;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION GERESH;SB=LE;WB=LE;-XIDC
+cp;05F4;-Alpha;bc=R;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Status=Allowed;Identifier_Type=Inclusion;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION GERSHAYIM;SB=XX;WB=ML;-XIDC
unassigned;05F5..05FF;bc=R
-block;0600..06FF;age=1.1;Alpha;bc=AL;blk=Arabic;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
+block;0600..06FF;age=1.1;Alpha;bc=AL;blk=Arabic;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;jt=D;lb=AL;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# 0600..06FF Arabic
# Subtending marks
-cp;0600;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC NUMBER SIGN;PCM;SB=NU;WB=NU;-XIDC;-XIDS
-cp;0601;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC SIGN SANAH;PCM;SB=NU;WB=NU;-XIDC;-XIDS
-cp;0602;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC FOOTNOTE MARKER;PCM;SB=NU;WB=NU;-XIDC;-XIDS
-cp;0603;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC SIGN SAFHA;PCM;SB=NU;WB=NU;-XIDC;-XIDS
-cp;0604;age=6.1;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC SIGN SAMVAT;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0600;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC NUMBER SIGN;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0601;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC SIGN SANAH;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0602;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC FOOTNOTE MARKER;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0603;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC SIGN SAFHA;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0604;age=6.1;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC SIGN SAMVAT;PCM;SB=NU;WB=NU;-XIDC;-XIDS
# Supertending mark
-cp;0605;age=7.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC NUMBER MARK ABOVE;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC;-XIDS
+cp;0605;age=7.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC NUMBER MARK ABOVE;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC;-XIDS
# Radix symbols
-cp;0606;age=5.1;-Alpha;bc=ON;gc=Sm;-IDC;-IDS;jt=U;Math;na=ARABIC-INDIC CUBE ROOT;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0607;age=5.1;-Alpha;bc=ON;gc=Sm;-IDC;-IDS;jt=U;Math;na=ARABIC-INDIC FOURTH ROOT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0606;age=5.1;-Alpha;bc=ON;gc=Sm;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;Math;na=ARABIC-INDIC CUBE ROOT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0607;age=5.1;-Alpha;bc=ON;gc=Sm;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;Math;na=ARABIC-INDIC FOURTH ROOT;SB=XX;WB=XX;-XIDC;-XIDS
# Letterlike symbol
-cp;0608;age=5.1;-Alpha;gc=Sm;-IDC;-IDS;jt=U;Math;na=ARABIC RAY;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0608;age=5.1;-Alpha;gc=Sm;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;Math;na=ARABIC RAY;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;0609;age=5.1;-Alpha;bc=ET;gc=Po;-IDC;-IDS;jt=U;lb=PO;na=ARABIC-INDIC PER MILLE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;060A;age=5.1;-Alpha;bc=ET;gc=Po;-IDC;-IDS;jt=U;lb=PO;na=ARABIC-INDIC PER TEN THOUSAND SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0609;age=5.1;-Alpha;bc=ET;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=PO;na=ARABIC-INDIC PER MILLE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;060A;age=5.1;-Alpha;bc=ET;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=PO;na=ARABIC-INDIC PER TEN THOUSAND SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Currency symbol
-cp;060B;age=4.1;-Alpha;gc=Sc;-IDC;-IDS;jt=U;lb=PO;na=AFGHANI SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;060B;age=4.1;-Alpha;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=PO;na=AFGHANI SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;060C;-Alpha;bc=CS;gc=Po;-IDC;-IDS;jt=U;lb=IS;na=ARABIC COMMA;SB=SC;sc=Zyyy;scx=Arab Nkoo Rohg Syrc Thaa Yezi;Term;WB=MN;-XIDC;-XIDS
-cp;060D;age=4.0;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=IS;na=ARABIC DATE SEPARATOR;SB=SC;WB=MN;-XIDC;-XIDS
+cp;060C;-Alpha;bc=CS;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=IS;na=ARABIC COMMA;SB=SC;sc=Zyyy;scx=Arab Nkoo Rohg Syrc Thaa Yezi;Term;WB=MN;-XIDC;-XIDS
+cp;060D;age=4.0;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=IS;na=ARABIC DATE SEPARATOR;SB=SC;WB=MN;-XIDC;-XIDS
# Poetic marks
-cp;060E;age=4.0;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=ARABIC POETIC VERSE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;060F;age=4.0;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=ARABIC SIGN MISRA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;060E;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;na=ARABIC POETIC VERSE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;060F;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;na=ARABIC SIGN MISRA;SB=XX;WB=XX;-XIDC;-XIDS
# Honorifics
-cp;0610;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;SB=EX;WB=Extend;-XIDS
-cp;0611;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN ALAYHE ASSALLAM;SB=EX;WB=Extend;-XIDS
-cp;0612;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN RAHMATULLAH ALAYHE;SB=EX;WB=Extend;-XIDS
-cp;0613;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN RADI ALLAHOU ANHU;SB=EX;WB=Extend;-XIDS
-cp;0614;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN TAKHALLUS;SB=EX;WB=Extend;-XIDS
+cp;0610;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;SB=EX;WB=Extend;-XIDS
+cp;0611;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN ALAYHE ASSALLAM;SB=EX;WB=Extend;-XIDS
+cp;0612;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN RAHMATULLAH ALAYHE;SB=EX;WB=Extend;-XIDS
+cp;0613;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN RADI ALLAHOU ANHU;SB=EX;WB=Extend;-XIDS
+cp;0614;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN TAKHALLUS;SB=EX;WB=Extend;-XIDS
# Quranic annotation sign
-cp;0615;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH TAH;SB=EX;WB=Extend;-XIDS
+cp;0615;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH TAH;SB=EX;WB=Extend;-XIDS
# Extended Arabic mark
-cp;0616;age=5.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Name_Alias=correction=ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE;SB=EX;WB=Extend;-XIDS
+cp;0616;age=5.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Name_Alias=correction=ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE;SB=EX;WB=Extend;-XIDS
# Quranic annotation signs
-cp;0617;age=5.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH ZAIN;SB=EX;WB=Extend;-XIDS
-cp;0618;age=5.1;bc=NSM;ccc=30;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL FATHA;SB=EX;WB=Extend;-XIDS
-cp;0619;age=5.1;bc=NSM;ccc=31;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL DAMMA;SB=EX;WB=Extend;-XIDS
-cp;061A;age=5.1;bc=NSM;ccc=32;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL KASRA;SB=EX;WB=Extend;-XIDS
+cp;0617;age=5.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH ZAIN;SB=EX;WB=Extend;-XIDS
+cp;0618;age=5.1;bc=NSM;ccc=30;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL FATHA;SB=EX;WB=Extend;-XIDS
+cp;0619;age=5.1;bc=NSM;ccc=31;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL DAMMA;SB=EX;WB=Extend;-XIDS
+cp;061A;age=5.1;bc=NSM;ccc=32;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL KASRA;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;061B;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC SEMICOLON;SB=XX;sc=Zyyy;scx=Arab Nkoo Rohg Syrc Thaa Yezi;Term;WB=XX;-XIDC;-XIDS
+cp;061B;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=EX;na=ARABIC SEMICOLON;SB=XX;sc=Zyyy;scx=Arab Nkoo Rohg Syrc Thaa Yezi;Term;WB=XX;-XIDC;-XIDS
# Format character
-cp;061C;age=6.3;-Alpha;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=T;lb=CM;na=ARABIC LETTER MARK;Name_Alias=abbreviation=ALM;NFKC_CF=;NFKC_SCF=;SB=FO;scx=Arab Syrc Thaa;WB=FO;-XIDC;-XIDS
+cp;061C;age=6.3;-Alpha;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Default_Ignorable;-IDS;jt=T;lb=CM;na=ARABIC LETTER MARK;Name_Alias=abbreviation=ALM;NFKC_CF=;NFKC_SCF=;SB=FO;scx=Arab Syrc Thaa;WB=FO;-XIDC;-XIDS
# Punctuation
-cp;061D;age=14.0;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC END OF TEXT MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;061E;age=4.1;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC TRIPLE DOT PUNCTUATION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;061F;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC QUESTION MARK;SB=ST;sc=Zyyy;scx=Adlm Arab Nkoo Rohg Syrc Thaa Yezi;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;061D;age=14.0;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=EX;na=ARABIC END OF TEXT MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;061E;age=4.1;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=EX;na=ARABIC TRIPLE DOT PUNCTUATION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;061F;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=EX;na=ARABIC QUESTION MARK;SB=ST;sc=Zyyy;scx=Adlm Arab Nkoo Rohg Syrc Thaa Yezi;STerm;Term;WB=XX;-XIDC;-XIDS
# Addition for Kashmiri
cp;0620;age=6.0;jg=Yeh;na=ARABIC LETTER KASHMIRI YEH
# Based on ISO 8859-6
@@ -3038,7 +3055,7 @@ cp;063D;age=5.1;jg=Farsi_Yeh;na=ARABIC LETTER FARSI YEH WITH INVERTED V
cp;063E;age=5.1;jg=Farsi_Yeh;na=ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE
cp;063F;age=5.1;jg=Farsi_Yeh;na=ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
# Based on ISO 8859-6
-cp;0640;CI;Ext;gc=Lm;jt=C;na=ARABIC TATWEEL;sc=Zyyy;scx=Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc
+cp;0640;CI;Ext;gc=Lm;Identifier_Status=Restricted;Identifier_Type=Obsolete;jt=C;na=ARABIC TATWEEL;sc=Zyyy;scx=Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc
cp;0641;jg=Feh;na=ARABIC LETTER FEH
cp;0642;jg=Qaf;na=ARABIC LETTER QAF
cp;0643;jg=Kaf;na=ARABIC LETTER KAF
@@ -3063,16 +3080,16 @@ cp;0653;age=3.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;
cp;0654;age=3.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC HAMZA ABOVE;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
cp;0655;age=3.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC HAMZA BELOW;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
# Other combining marks
-cp;0656;age=4.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SUBSCRIPT ALEF;SB=EX;WB=Extend;-XIDS
-cp;0657;age=4.0;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC INVERTED DAMMA;SB=EX;WB=Extend;-XIDS
-cp;0658;age=4.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC MARK NOON GHUNNA;SB=EX;WB=Extend;-XIDS
-cp;0659;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC ZWARAKAY;SB=EX;WB=Extend;-XIDS
-cp;065A;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN SMALL V ABOVE;SB=EX;WB=Extend;-XIDS
-cp;065B;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;SB=EX;WB=Extend;-XIDS
-cp;065C;age=4.1;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN DOT BELOW;SB=EX;WB=Extend;-XIDS
-cp;065D;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC REVERSED DAMMA;SB=EX;WB=Extend;-XIDS
-cp;065E;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC FATHA WITH TWO DOTS;SB=EX;WB=Extend;-XIDS
-cp;065F;age=6.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC WAVY HAMZA BELOW;SB=EX;WB=Extend;-XIDS
+cp;0656;age=4.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SUBSCRIPT ALEF;SB=EX;WB=Extend;-XIDS
+cp;0657;age=4.0;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC INVERTED DAMMA;SB=EX;WB=Extend;-XIDS
+cp;0658;age=4.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC MARK NOON GHUNNA;SB=EX;WB=Extend;-XIDS
+cp;0659;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC ZWARAKAY;SB=EX;WB=Extend;-XIDS
+cp;065A;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN SMALL V ABOVE;SB=EX;WB=Extend;-XIDS
+cp;065B;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;SB=EX;WB=Extend;-XIDS
+cp;065C;age=4.1;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN DOT BELOW;SB=EX;WB=Extend;-XIDS
+cp;065D;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC REVERSED DAMMA;SB=EX;WB=Extend;-XIDS
+cp;065E;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC FATHA WITH TWO DOTS;SB=EX;WB=Extend;-XIDS
+cp;065F;age=6.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC WAVY HAMZA BELOW;SB=EX;WB=Extend;-XIDS
# Arabic-Indic digits
cp;0660;-Alpha;bc=AN;gc=Nd;-IDS;jt=U;lb=NU;na=ARABIC-INDIC DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Arab Thaa Yezi;WB=NU;-XIDS
cp;0661;-Alpha;bc=AN;gc=Nd;-IDS;jt=U;lb=NU;na=ARABIC-INDIC DIGIT ONE;nt=De;nv=1;SB=NU;scx=Arab Thaa Yezi;WB=NU;-XIDS
@@ -3085,27 +3102,27 @@ cp;0667;-Alpha;bc=AN;gc=Nd;-IDS;jt=U;lb=NU;na=ARABIC-INDIC DIGIT SEVEN;nt=De;nv=
cp;0668;-Alpha;bc=AN;gc=Nd;-IDS;jt=U;lb=NU;na=ARABIC-INDIC DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Arab Thaa Yezi;WB=NU;-XIDS
cp;0669;-Alpha;bc=AN;gc=Nd;-IDS;jt=U;lb=NU;na=ARABIC-INDIC DIGIT NINE;nt=De;nv=9;SB=NU;scx=Arab Thaa Yezi;WB=NU;-XIDS
# Punctuation
-cp;066A;-Alpha;bc=ET;gc=Po;-IDC;-IDS;jt=U;lb=PO;na=ARABIC PERCENT SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;066B;-Alpha;bc=AN;gc=Po;-IDC;-IDS;jt=U;lb=NU;na=ARABIC DECIMAL SEPARATOR;SB=NU;WB=NU;-XIDC;-XIDS
-cp;066C;-Alpha;bc=AN;gc=Po;-IDC;-IDS;jt=U;lb=NU;na=ARABIC THOUSANDS SEPARATOR;SB=NU;WB=MN;-XIDC;-XIDS
-cp;066D;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=ARABIC FIVE POINTED STAR;SB=XX;WB=XX;-XIDC;-XIDS
+cp;066A;-Alpha;bc=ET;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=PO;na=ARABIC PERCENT SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;066B;-Alpha;bc=AN;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC DECIMAL SEPARATOR;SB=NU;WB=NU;-XIDC;-XIDS
+cp;066C;-Alpha;bc=AN;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC THOUSANDS SEPARATOR;SB=NU;WB=MN;-XIDC;-XIDS
+cp;066D;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;na=ARABIC FIVE POINTED STAR;SB=XX;WB=XX;-XIDC;-XIDS
# Archaic letters
-cp;066E;age=3.2;jg=Beh;na=ARABIC LETTER DOTLESS BEH
-cp;066F;age=3.2;jg=Qaf;na=ARABIC LETTER DOTLESS QAF
+cp;066E;age=3.2;Identifier_Status=Restricted;Identifier_Type=Obsolete;jg=Beh;na=ARABIC LETTER DOTLESS BEH
+cp;066F;age=3.2;Identifier_Status=Restricted;Identifier_Type=Obsolete;jg=Qaf;na=ARABIC LETTER DOTLESS QAF
# Tashkil
cp;0670;bc=NSM;ccc=35;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC LETTER SUPERSCRIPT ALEF;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
# Extended Arabic letters
cp;0671;jg=Alef;jt=R;na=ARABIC LETTER ALEF WASLA
cp;0672;jg=Alef;jt=R;na=ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
# Deprecated letter
-cp;0673;Dep;jg=Alef;jt=R;na=ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+cp;0673;Dep;Identifier_Status=Restricted;Identifier_Type=Deprecated;jg=Alef;jt=R;na=ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
# High hamza
cp;0674;jt=U;na=ARABIC LETTER HIGH HAMZA
# Digraphic letters for Kazakh
-cp;0675;CWKCF;dm=0627 0674;dt=Com;jg=Alef;jt=R;na=ARABIC LETTER HIGH HAMZA ALEF;NFKC_CF=0627 0674;NFKC_QC=N;NFKC_SCF=0627 0674;NFKD_QC=N
-cp;0676;CWKCF;dm=0648 0674;dt=Com;jg=Waw;jt=R;na=ARABIC LETTER HIGH HAMZA WAW;NFKC_CF=0648 0674;NFKC_QC=N;NFKC_SCF=0648 0674;NFKD_QC=N
-cp;0677;CWKCF;dm=06C7 0674;dt=Com;jg=Waw;jt=R;na=ARABIC LETTER U WITH HAMZA ABOVE;NFKC_CF=06C7 0674;NFKC_QC=N;NFKC_SCF=06C7 0674;NFKD_QC=N
-cp;0678;CWKCF;dm=064A 0674;dt=Com;jg=Yeh;na=ARABIC LETTER HIGH HAMZA YEH;NFKC_CF=064A 0674;NFKC_QC=N;NFKC_SCF=064A 0674;NFKD_QC=N
+cp;0675;CWKCF;dm=0627 0674;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;jg=Alef;jt=R;na=ARABIC LETTER HIGH HAMZA ALEF;NFKC_CF=0627 0674;NFKC_QC=N;NFKC_SCF=0627 0674;NFKD_QC=N
+cp;0676;CWKCF;dm=0648 0674;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;jg=Waw;jt=R;na=ARABIC LETTER HIGH HAMZA WAW;NFKC_CF=0648 0674;NFKC_QC=N;NFKC_SCF=0648 0674;NFKD_QC=N
+cp;0677;CWKCF;dm=06C7 0674;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;jg=Waw;jt=R;na=ARABIC LETTER U WITH HAMZA ABOVE;NFKC_CF=06C7 0674;NFKC_QC=N;NFKC_SCF=06C7 0674;NFKD_QC=N
+cp;0678;CWKCF;dm=064A 0674;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;jg=Yeh;na=ARABIC LETTER HIGH HAMZA YEH;NFKC_CF=064A 0674;NFKC_QC=N;NFKC_SCF=064A 0674;NFKD_QC=N
# Extended Arabic letters
cp;0679;jg=Beh;na=ARABIC LETTER TTEH
cp;067A;jg=Beh;na=ARABIC LETTER TTEHEH
@@ -3128,7 +3145,7 @@ cp;068A;jg=Dal;jt=R;na=ARABIC LETTER DAL WITH DOT BELOW
cp;068B;jg=Dal;jt=R;na=ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
cp;068C;jg=Dal;jt=R;na=ARABIC LETTER DAHAL
cp;068D;jg=Dal;jt=R;na=ARABIC LETTER DDAHAL
-cp;068E;jg=Dal;jt=R;na=ARABIC LETTER DUL
+cp;068E;Identifier_Status=Restricted;Identifier_Type=Obsolete;jg=Dal;jt=R;na=ARABIC LETTER DUL
cp;068F;jg=Dal;jt=R;na=ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
cp;0690;jg=Dal;jt=R;na=ARABIC LETTER DAL WITH FOUR DOTS ABOVE
cp;0691;jg=Reh;jt=R;na=ARABIC LETTER RREH
@@ -3147,7 +3164,7 @@ cp;069D;jg=Sad;na=ARABIC LETTER SAD WITH TWO DOTS BELOW
cp;069E;jg=Sad;na=ARABIC LETTER SAD WITH THREE DOTS ABOVE
cp;069F;jg=Tah;na=ARABIC LETTER TAH WITH THREE DOTS ABOVE
cp;06A0;jg=Ain;na=ARABIC LETTER AIN WITH THREE DOTS ABOVE
-cp;06A1;jg=Feh;na=ARABIC LETTER DOTLESS FEH
+cp;06A1;Identifier_Status=Restricted;Identifier_Type=Obsolete;jg=Feh;na=ARABIC LETTER DOTLESS FEH
cp;06A2;jg=Feh;na=ARABIC LETTER FEH WITH DOT MOVED BELOW
cp;06A3;jg=Feh;na=ARABIC LETTER FEH WITH DOT BELOW
cp;06A4;jg=Feh;na=ARABIC LETTER VEH
@@ -3199,34 +3216,34 @@ cp;06D1;jg=Yeh;na=ARABIC LETTER YEH WITH THREE DOTS BELOW
cp;06D2;jg=Yeh_Barree;jt=R;na=ARABIC LETTER YEH BARREE
cp;06D3;dm=06D2 0654;dt=Can;jg=Yeh_Barree;jt=R;na=ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;NFD_QC=N;NFKD_QC=N
# Punctuation
-cp;06D4;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC FULL STOP;SB=ST;scx=Arab Rohg;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;06D4;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=EX;na=ARABIC FULL STOP;SB=ST;scx=Arab Rohg;STerm;Term;WB=XX;-XIDC;-XIDS
# Extended Arabic letter
cp;06D5;jg=Teh_Marbuta;jt=R;na=ARABIC LETTER AE
# Quranic annotation signs
-cp;06D6;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;SB=EX;WB=Extend;-XIDS
-cp;06D7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;SB=EX;WB=Extend;-XIDS
-cp;06D8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MEEM INITIAL FORM;SB=EX;WB=Extend;-XIDS
-cp;06D9;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LAM ALEF;SB=EX;WB=Extend;-XIDS
-cp;06DA;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH JEEM;SB=EX;WB=Extend;-XIDS
-cp;06DB;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH THREE DOTS;SB=EX;WB=Extend;-XIDS
-cp;06DC;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH SEEN;SB=EX;WB=Extend;-XIDS
-cp;06DD;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC END OF AYAH;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC;-XIDS
-cp;06DE;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=ARABIC START OF RUB EL HIZB;SB=XX;WB=XX;-XIDC;-XIDS
-cp;06DF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH ROUNDED ZERO;SB=EX;WB=Extend;-XIDS
-cp;06E0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;SB=EX;WB=Extend;-XIDS
-cp;06E1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;SB=EX;WB=Extend;-XIDS
-cp;06E2;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MEEM ISOLATED FORM;SB=EX;WB=Extend;-XIDS
-cp;06E3;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW SEEN;SB=EX;WB=Extend;-XIDS
-cp;06E4;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MADDA;SB=EX;WB=Extend;-XIDS
+cp;06D6;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;SB=EX;WB=Extend;-XIDS
+cp;06D7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;SB=EX;WB=Extend;-XIDS
+cp;06D8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MEEM INITIAL FORM;SB=EX;WB=Extend;-XIDS
+cp;06D9;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LAM ALEF;SB=EX;WB=Extend;-XIDS
+cp;06DA;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH JEEM;SB=EX;WB=Extend;-XIDS
+cp;06DB;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH THREE DOTS;SB=EX;WB=Extend;-XIDS
+cp;06DC;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH SEEN;SB=EX;WB=Extend;-XIDS
+cp;06DD;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC END OF AYAH;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC;-XIDS
+cp;06DE;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;na=ARABIC START OF RUB EL HIZB;SB=XX;WB=XX;-XIDC;-XIDS
+cp;06DF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH ROUNDED ZERO;SB=EX;WB=Extend;-XIDS
+cp;06E0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;SB=EX;WB=Extend;-XIDS
+cp;06E1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;SB=EX;WB=Extend;-XIDS
+cp;06E2;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MEEM ISOLATED FORM;SB=EX;WB=Extend;-XIDS
+cp;06E3;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW SEEN;SB=EX;WB=Extend;-XIDS
+cp;06E4;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MADDA;SB=EX;WB=Extend;-XIDS
cp;06E5;CI;Dia;gc=Lm;jt=U;na=ARABIC SMALL WAW
cp;06E6;CI;Dia;gc=Lm;jt=U;na=ARABIC SMALL YEH
-cp;06E7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH YEH;SB=EX;WB=Extend;-XIDS
-cp;06E8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH NOON;SB=EX;WB=Extend;-XIDS
-cp;06E9;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=ARABIC PLACE OF SAJDAH;SB=XX;WB=XX;-XIDC;-XIDS
-cp;06EA;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC EMPTY CENTRE LOW STOP;SB=EX;WB=Extend;-XIDS
-cp;06EB;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC EMPTY CENTRE HIGH STOP;SB=EX;WB=Extend;-XIDS
-cp;06EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;SB=EX;WB=Extend;-XIDS
-cp;06ED;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW MEEM;SB=EX;WB=Extend;-XIDS
+cp;06E7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH YEH;SB=EX;WB=Extend;-XIDS
+cp;06E8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH NOON;SB=EX;WB=Extend;-XIDS
+cp;06E9;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;na=ARABIC PLACE OF SAJDAH;SB=XX;WB=XX;-XIDC;-XIDS
+cp;06EA;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC EMPTY CENTRE LOW STOP;SB=EX;WB=Extend;-XIDS
+cp;06EB;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC EMPTY CENTRE HIGH STOP;SB=EX;WB=Extend;-XIDS
+cp;06EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;SB=EX;WB=Extend;-XIDS
+cp;06ED;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW MEEM;SB=EX;WB=Extend;-XIDS
# Extended Arabic letters for Parkari
cp;06EE;age=4.0;jg=Dal;jt=R;na=ARABIC LETTER DAL WITH INVERTED V
cp;06EF;age=4.0;jg=Reh;jt=R;na=ARABIC LETTER REH WITH INVERTED V
@@ -3246,31 +3263,31 @@ cp;06FA;age=3.0;jg=Seen;na=ARABIC LETTER SHEEN WITH DOT BELOW
cp;06FB;age=3.0;jg=Sad;na=ARABIC LETTER DAD WITH DOT BELOW
cp;06FC;age=3.0;jg=Ain;na=ARABIC LETTER GHAIN WITH DOT BELOW
# Signs for Sindhi
-cp;06FD;age=3.0;-Alpha;gc=So;-IDC;-IDS;jt=U;na=ARABIC SIGN SINDHI AMPERSAND;SB=XX;WB=XX;-XIDC;-XIDS
-cp;06FE;age=3.0;-Alpha;gc=So;-IDC;-IDS;jt=U;na=ARABIC SIGN SINDHI POSTPOSITION MEN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;06FD;age=3.0;-Alpha;gc=So;-IDC;Identifier_Type=Inclusion;-IDS;jt=U;na=ARABIC SIGN SINDHI AMPERSAND;SB=XX;WB=XX;-XIDC;-XIDS
+cp;06FE;age=3.0;-Alpha;gc=So;-IDC;Identifier_Type=Inclusion;-IDS;jt=U;na=ARABIC SIGN SINDHI POSTPOSITION MEN;SB=XX;WB=XX;-XIDC;-XIDS
# Extended Arabic letter for Parkari
cp;06FF;age=4.0;jg=Knotted_Heh;na=ARABIC LETTER HEH WITH INVERTED V
-block;0700..074F;age=3.0;Alpha;bc=AL;blk=Syriac;gc=Lo;Gr_Base;IDC;jt=T;lb=AL;SB=LE;sc=Syrc;WB=Extend;XIDC
+block;0700..074F;age=3.0;Alpha;bc=AL;blk=Syriac;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;jt=T;lb=AL;SB=LE;sc=Syrc;WB=Extend;XIDC
# 0700..074F Syriac
# Syriac punctuation and signs
-cp;0700;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC END OF PARAGRAPH;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;0701;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC SUPRALINEAR FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;0702;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC SUBLINEAR FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;0703;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC SUPRALINEAR COLON;SB=XX;Term;WB=XX;-XIDC
-cp;0704;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC SUBLINEAR COLON;SB=XX;Term;WB=XX;-XIDC
-cp;0705;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC HORIZONTAL COLON;SB=XX;Term;WB=XX;-XIDC
-cp;0706;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC COLON SKEWED LEFT;SB=XX;Term;WB=XX;-XIDC
-cp;0707;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC COLON SKEWED RIGHT;SB=XX;Term;WB=XX;-XIDC
-cp;0708;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC SUPRALINEAR COLON SKEWED LEFT;SB=XX;Term;WB=XX;-XIDC
-cp;0709;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC SUBLINEAR COLON SKEWED RIGHT;Name_Alias=correction=SYRIAC SUBLINEAR COLON SKEWED LEFT;SB=XX;Term;WB=XX;-XIDC
-cp;070A;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC CONTRACTION;SB=XX;Term;WB=XX;-XIDC
-cp;070B;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC HARKLEAN OBELUS;SB=XX;WB=XX;-XIDC
-cp;070C;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC HARKLEAN METOBELUS;SB=XX;Term;WB=XX;-XIDC
-cp;070D;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC HARKLEAN ASTERISCUS;SB=XX;WB=XX;-XIDC
+cp;0700;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC END OF PARAGRAPH;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;0701;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC SUPRALINEAR FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;0702;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC SUBLINEAR FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;0703;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC SUPRALINEAR COLON;SB=XX;Term;WB=XX;-XIDC
+cp;0704;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC SUBLINEAR COLON;SB=XX;Term;WB=XX;-XIDC
+cp;0705;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC HORIZONTAL COLON;SB=XX;Term;WB=XX;-XIDC
+cp;0706;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC COLON SKEWED LEFT;SB=XX;Term;WB=XX;-XIDC
+cp;0707;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC COLON SKEWED RIGHT;SB=XX;Term;WB=XX;-XIDC
+cp;0708;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC SUPRALINEAR COLON SKEWED LEFT;SB=XX;Term;WB=XX;-XIDC
+cp;0709;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC SUBLINEAR COLON SKEWED RIGHT;Name_Alias=correction=SYRIAC SUBLINEAR COLON SKEWED LEFT;SB=XX;Term;WB=XX;-XIDC
+cp;070A;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC CONTRACTION;SB=XX;Term;WB=XX;-XIDC
+cp;070B;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC HARKLEAN OBELUS;SB=XX;WB=XX;-XIDC
+cp;070C;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC HARKLEAN METOBELUS;SB=XX;Term;WB=XX;-XIDC
+cp;070D;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;jt=U;na=SYRIAC HARKLEAN ASTERISCUS;SB=XX;WB=XX;-XIDC
unassigned;070E;bc=AL
# Syriac format control character
-cp;070F;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;na=SYRIAC ABBREVIATION MARK;PCM;SB=FO;WB=LE;-XIDC
+cp;070F;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Type=Limited_Use Not_XID;na=SYRIAC ABBREVIATION MARK;PCM;SB=FO;WB=LE;-XIDC
# Syriac letters
cp;0710;IDS;jg=Alaph;jt=R;na=SYRIAC LETTER ALAPH;WB=LE;XIDS
cp;0711;bc=NSM;ccc=36;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC LETTER SUPERSCRIPT ALAPH;SB=EX
@@ -3323,24 +3340,24 @@ cp;073D;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=
cp;073E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC ESASA BELOW;SB=EX
cp;073F;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC RWAHA;SB=EX
# Syriac marks
-cp;0740;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC FEMININE DOT;SB=EX
-cp;0741;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC QUSHSHAYA;SB=EX
-cp;0742;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC RUKKAKHA;SB=EX
-cp;0743;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC TWO VERTICAL DOTS ABOVE;SB=EX
-cp;0744;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC TWO VERTICAL DOTS BELOW;SB=EX
-cp;0745;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC THREE DOTS ABOVE;SB=EX
-cp;0746;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC THREE DOTS BELOW;SB=EX
-cp;0747;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC OBLIQUE LINE ABOVE;SB=EX
-cp;0748;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC OBLIQUE LINE BELOW;SB=EX
-cp;0749;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC MUSIC;SB=EX
-cp;074A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC BARREKH;SB=EX
+cp;0740;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC FEMININE DOT;SB=EX
+cp;0741;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC QUSHSHAYA;SB=EX
+cp;0742;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC RUKKAKHA;SB=EX
+cp;0743;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC TWO VERTICAL DOTS ABOVE;SB=EX
+cp;0744;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC TWO VERTICAL DOTS BELOW;SB=EX
+cp;0745;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC THREE DOTS ABOVE;SB=EX
+cp;0746;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC THREE DOTS BELOW;SB=EX
+cp;0747;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC OBLIQUE LINE ABOVE;SB=EX
+cp;0748;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC OBLIQUE LINE BELOW;SB=EX
+cp;0749;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC MUSIC;SB=EX
+cp;074A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;lb=CM;na=SYRIAC BARREKH;SB=EX
unassigned;074B..074C;bc=AL
# Sogdian letters
cp;074D;age=4.0;IDS;jg=Zhain;jt=R;na=SYRIAC LETTER SOGDIAN ZHAIN;WB=LE;XIDS
cp;074E;age=4.0;IDS;jg=Khaph;jt=D;na=SYRIAC LETTER SOGDIAN KHAPH;WB=LE;XIDS
cp;074F;age=4.0;IDS;jg=Fe;jt=D;na=SYRIAC LETTER SOGDIAN FE;WB=LE;XIDS
-block;0750..077F;age=4.1;Alpha;bc=AL;blk=Arabic_Sup;gc=Lo;Gr_Base;IDC;IDS;jg=Beh;jt=D;lb=AL;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
+block;0750..077F;age=4.1;Alpha;bc=AL;blk=Arabic_Sup;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;jg=Beh;jt=D;lb=AL;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# 0750..077F Arabic Supplement
# Extended Arabic letters
cp;0750;na=ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
@@ -3396,7 +3413,7 @@ cp;077D;age=5.1;jg=Seen;na=ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT F
cp;077E;age=5.1;jg=Seen;na=ARABIC LETTER SEEN WITH INVERTED V
cp;077F;age=5.1;jg=Kaf;na=ARABIC LETTER KAF WITH TWO DOTS ABOVE
-block;0780..07BF;age=3.0;Alpha;bc=AL;blk=Thaana;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Thaa;WB=LE;XIDC;XIDS
+block;0780..07BF;age=3.0;Alpha;bc=AL;blk=Thaana;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LE;sc=Thaa;WB=LE;XIDC;XIDS
# 0780..07BF Thaana
# Basic consonants
cp;0780;na=THAANA LETTER HAA
@@ -3454,7 +3471,7 @@ cp;07B0;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=THAANA SUK
cp;07B1;age=3.2;na=THAANA LETTER NAA
unassigned;07B2..07BF;bc=AL
-block;07C0..07FF;age=5.0;Alpha;bc=R;blk=NKo;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Nkoo;WB=LE;XIDC;XIDS
+block;07C0..07FF;age=5.0;Alpha;bc=R;blk=NKo;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;jt=D;lb=AL;SB=LE;sc=Nkoo;WB=LE;XIDC;XIDS
# 07C0..07FF NKo
# Digits
cp;07C0;-Alpha;gc=Nd;-IDS;jt=U;lb=NU;na=NKO DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -3499,9 +3516,9 @@ cp;07E5;na=NKO LETTER WA
cp;07E6;na=NKO LETTER YA
cp;07E7;na=NKO LETTER NYA WOLOSO
# Archaic letters
-cp;07E8;na=NKO LETTER JONA JA
-cp;07E9;na=NKO LETTER JONA CHA
-cp;07EA;na=NKO LETTER JONA RA
+cp;07E8;Identifier_Type=Limited_Use Obsolete;na=NKO LETTER JONA JA
+cp;07E9;Identifier_Type=Limited_Use Obsolete;na=NKO LETTER JONA CHA
+cp;07EA;Identifier_Type=Limited_Use Obsolete;na=NKO LETTER JONA RA
# Tone marks
cp;07EB;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING SHORT HIGH TONE;SB=EX;WB=Extend;-XIDS
cp;07EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING SHORT LOW TONE;SB=EX;WB=Extend;-XIDS
@@ -3517,21 +3534,21 @@ cp;07F3;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Exte
cp;07F4;CI;Dia;gc=Lm;jt=U;na=NKO HIGH TONE APOSTROPHE
cp;07F5;CI;Dia;gc=Lm;jt=U;na=NKO LOW TONE APOSTROPHE
# Symbol
-cp;07F6;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=NKO SYMBOL OO DENNEN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;07F6;-Alpha;bc=ON;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;na=NKO SYMBOL OO DENNEN;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;07F7;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;na=NKO SYMBOL GBAKURUNEN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;07F8;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=IS;na=NKO COMMA;SB=SC;Term;WB=MN;-XIDC;-XIDS
-cp;07F9;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=NKO EXCLAMATION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;07F7;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;na=NKO SYMBOL GBAKURUNEN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;07F8;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;lb=IS;na=NKO COMMA;SB=SC;Term;WB=MN;-XIDC;-XIDS
+cp;07F9;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;lb=EX;na=NKO EXCLAMATION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Letter extender
-cp;07FA;CI;Ext;gc=Lm;jt=C;na=NKO LAJANYALAN
+cp;07FA;CI;Ext;gc=Lm;Identifier_Type=Limited_Use Obsolete;jt=C;na=NKO LAJANYALAN
unassigned;07FB..07FC;bc=R
# Abbreviation sign
cp;07FD;age=11.0;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO DANTAYALAN;SB=EX;WB=Extend;-XIDS
# Currency symbols
-cp;07FE;age=11.0;-Alpha;gc=Sc;-IDC;-IDS;jt=U;lb=PR;na=NKO DOROME SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;07FF;age=11.0;-Alpha;gc=Sc;-IDC;-IDS;jt=U;lb=PR;na=NKO TAMAN SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;07FE;age=11.0;-Alpha;gc=Sc;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;lb=PR;na=NKO DOROME SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;07FF;age=11.0;-Alpha;gc=Sc;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;lb=PR;na=NKO TAMAN SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-block;0800..083F;age=5.2;Alpha;bc=R;blk=Samaritan;gc=Lo;Gr_Base;IDC;lb=AL;SB=LE;sc=Samr;WB=Extend;XIDC
+block;0800..083F;age=5.2;Alpha;bc=R;blk=Samaritan;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;lb=AL;SB=LE;sc=Samr;WB=Extend;XIDC
# 0800..083F Samaritan
# Letters
cp;0800;IDS;na=SAMARITAN LETTER ALAF;WB=LE;XIDS
@@ -3585,24 +3602,24 @@ cp;082C;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na
cp;082D;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN MARK NEQUDAA;SB=EX
unassigned;082E..082F;bc=R
# Punctuation
-cp;0830;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION NEQUDAA;SB=XX;Term;WB=XX;-XIDC
-cp;0831;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION AFSAAQ;SB=XX;Term;WB=XX;-XIDC
-cp;0832;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION ANGED;SB=XX;Term;WB=XX;-XIDC
-cp;0833;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION BAU;SB=XX;Term;WB=XX;-XIDC
-cp;0834;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION ATMAAU;SB=XX;Term;WB=XX;-XIDC
-cp;0835;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION SHIYYAALAA;SB=XX;Term;WB=XX;-XIDC
-cp;0836;-Alpha;gc=Po;-IDC;na=SAMARITAN ABBREVIATION MARK;SB=XX;Term;WB=XX;-XIDC
-cp;0837;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION MELODIC QITSA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;0838;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION ZIQAA;SB=XX;Term;WB=XX;-XIDC
-cp;0839;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION QITSA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;083A;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION ZAEF;SB=XX;Term;WB=XX;-XIDC
-cp;083B;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION TURU;SB=XX;Term;WB=XX;-XIDC
-cp;083C;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION ARKAANU;SB=XX;Term;WB=XX;-XIDC
-cp;083D;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION SOF MASHFAAT;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;083E;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION ANNAAU;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;0830;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION NEQUDAA;SB=XX;Term;WB=XX;-XIDC
+cp;0831;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION AFSAAQ;SB=XX;Term;WB=XX;-XIDC
+cp;0832;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION ANGED;SB=XX;Term;WB=XX;-XIDC
+cp;0833;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION BAU;SB=XX;Term;WB=XX;-XIDC
+cp;0834;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION ATMAAU;SB=XX;Term;WB=XX;-XIDC
+cp;0835;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION SHIYYAALAA;SB=XX;Term;WB=XX;-XIDC
+cp;0836;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN ABBREVIATION MARK;SB=XX;Term;WB=XX;-XIDC
+cp;0837;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION MELODIC QITSA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;0838;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION ZIQAA;SB=XX;Term;WB=XX;-XIDC
+cp;0839;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION QITSA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;083A;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION ZAEF;SB=XX;Term;WB=XX;-XIDC
+cp;083B;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION TURU;SB=XX;Term;WB=XX;-XIDC
+cp;083C;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION ARKAANU;SB=XX;Term;WB=XX;-XIDC
+cp;083D;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION SOF MASHFAAT;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;083E;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;na=SAMARITAN PUNCTUATION ANNAAU;SB=ST;STerm;Term;WB=XX;-XIDC
unassigned;083F;bc=R
-block;0840..085F;age=6.0;Alpha;bc=R;blk=Mandaic;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Mand;WB=LE;XIDC;XIDS
+block;0840..085F;age=6.0;Alpha;bc=R;blk=Mandaic;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;jt=D;lb=AL;SB=LE;sc=Mand;WB=LE;XIDC;XIDS
# 0840..085F Mandaic
# Letters
cp;0840;jt=R;na=MANDAIC LETTER HALQA
@@ -3636,10 +3653,10 @@ cp;085A;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;j
cp;085B;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MANDAIC GEMINATION MARK;SB=EX;WB=Extend;-XIDS
unassigned;085C..085D;bc=R
# Punctuation
-cp;085E;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=MANDAIC PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;085E;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;na=MANDAIC PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
unassigned;085F;bc=R
-block;0860..086F;age=10.0;Alpha;bc=AL;blk=Syriac_Sup;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Syrc;WB=LE;XIDC;XIDS
+block;0860..086F;age=10.0;Alpha;bc=AL;blk=Syriac_Sup;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;jt=D;lb=AL;SB=LE;sc=Syrc;WB=LE;XIDC;XIDS
# 0860..086F Syriac Supplement
# Syriac letters
cp;0860;jg=Malayalam_Nga;na=SYRIAC LETTER MALAYALAM NGA
@@ -3655,7 +3672,7 @@ cp;0869;jg=Malayalam_Llla;jt=R;na=SYRIAC LETTER MALAYALAM LLLA
cp;086A;jg=Malayalam_Ssa;jt=R;na=SYRIAC LETTER MALAYALAM SSA
unassigned;086B..086F;bc=AL
-block;0870..089F;age=14.0;Alpha;bc=AL;blk=Arabic_Ext_B;gc=Lo;Gr_Base;IDC;IDS;jt=R;lb=AL;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
+block;0870..089F;age=14.0;Alpha;bc=AL;blk=Arabic_Ext_B;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;jt=R;lb=AL;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# 0870..089F Arabic Extended-B
# Additions for Quranic orthographies
cp;0870;jg=Alef;na=ARABIC LETTER ALEF WITH ATTACHED FATHA
@@ -3682,7 +3699,7 @@ cp;0884;jt=C;na=ARABIC TATWEEL WITH OVERSTRUCK WAW
cp;0885;jt=C;na=ARABIC TATWEEL WITH TWO DOTS BELOW
cp;0886;jg=Thin_Yeh;jt=D;na=ARABIC LETTER THIN YEH
cp;0887;jt=U;na=ARABIC BASELINE ROUND DOT
-cp;0888;-Alpha;CI;gc=Sk;-IDC;-IDS;jt=U;na=ARABIC RAISED ROUND DOT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0888;-Alpha;CI;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;na=ARABIC RAISED ROUND DOT;SB=XX;WB=XX;-XIDC;-XIDS
# Additions for Bosnian orthographies
cp;0889;jg=Noon;jt=D;na=ARABIC LETTER NOON WITH INVERTED SMALL V
cp;088A;jg=Hah;jt=D;na=ARABIC LETTER HAH WITH INVERTED SMALL V BELOW
@@ -3694,76 +3711,76 @@ cp;088D;jg=Gaf;jt=D;na=ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW
cp;088E;jg=Vertical_Tail;na=ARABIC VERTICAL TAIL
unassigned;088F;bc=AL
# Supertending currency symbols
-cp;0890;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC POUND MARK ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
-cp;0891;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC PIASTRE MARK ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0890;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC POUND MARK ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0891;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;jt=U;lb=NU;na=ARABIC PIASTRE MARK ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
unassigned;0892..0897;bc=AL
# Additions for Quranic orthographies
-cp;0898;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH WORD AL-JUZ;SB=EX;WB=Extend;-XIDS
-cp;0899;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD ISHMAAM;SB=EX;WB=Extend;-XIDS
-cp;089A;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD IMAALA;SB=EX;WB=Extend;-XIDS
-cp;089B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD TASHEEL;SB=EX;WB=Extend;-XIDS
-cp;089C;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC MADDA WAAJIB;SB=EX;WB=Extend;-XIDS
-cp;089D;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SUPERSCRIPT ALEF MOKHASSAS;SB=EX;WB=Extend;-XIDS
-cp;089E;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC DOUBLED MADDA;SB=EX;WB=Extend;-XIDS
-cp;089F;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC HALF MADDA OVER MADDA;SB=EX;WB=Extend;-XIDS
-
-block;08A0..08FF;age=6.1;Alpha;bc=NSM;blk=Arabic_Ext_A;ccc=230;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC
+cp;0898;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH WORD AL-JUZ;SB=EX;WB=Extend;-XIDS
+cp;0899;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD ISHMAAM;SB=EX;WB=Extend;-XIDS
+cp;089A;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD IMAALA;SB=EX;WB=Extend;-XIDS
+cp;089B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD TASHEEL;SB=EX;WB=Extend;-XIDS
+cp;089C;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC MADDA WAAJIB;SB=EX;WB=Extend;-XIDS
+cp;089D;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SUPERSCRIPT ALEF MOKHASSAS;SB=EX;WB=Extend;-XIDS
+cp;089E;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC DOUBLED MADDA;SB=EX;WB=Extend;-XIDS
+cp;089F;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC HALF MADDA OVER MADDA;SB=EX;WB=Extend;-XIDS
+
+block;08A0..08FF;age=6.1;Alpha;bc=NSM;blk=Arabic_Ext_A;ccc=230;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Uncommon_Use;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC
# 08A0..08FF Arabic Extended-A
# Arabic letters for African languages
-cp;08A0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH SMALL V BELOW;SB=LE;WB=LE;XIDS
-cp;08A1;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH HAMZA ABOVE;SB=LE;WB=LE;XIDS
-cp;08A2;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH TWO DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08A3;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Tah;jt=D;lb=AL;na=ARABIC LETTER TAH WITH TWO DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08A4;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Feh;jt=D;lb=AL;na=ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08A5;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Qaf;jt=D;lb=AL;na=ARABIC LETTER QAF WITH DOT BELOW;SB=LE;WB=LE;XIDS
-cp;08A6;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Lam;jt=D;lb=AL;na=ARABIC LETTER LAM WITH DOUBLE BAR;SB=LE;WB=LE;XIDS
-cp;08A7;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Meem;jt=D;lb=AL;na=ARABIC LETTER MEEM WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08A8;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE;SB=LE;WB=LE;XIDS
-cp;08A9;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE;SB=LE;WB=LE;XIDS
+cp;08A0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH SMALL V BELOW;SB=LE;WB=LE;XIDS
+cp;08A1;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH HAMZA ABOVE;SB=LE;WB=LE;XIDS
+cp;08A2;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH TWO DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08A3;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Tah;jt=D;lb=AL;na=ARABIC LETTER TAH WITH TWO DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08A4;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Feh;jt=D;lb=AL;na=ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08A5;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Qaf;jt=D;lb=AL;na=ARABIC LETTER QAF WITH DOT BELOW;SB=LE;WB=LE;XIDS
+cp;08A6;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Lam;jt=D;lb=AL;na=ARABIC LETTER LAM WITH DOUBLE BAR;SB=LE;WB=LE;XIDS
+cp;08A7;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Meem;jt=D;lb=AL;na=ARABIC LETTER MEEM WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08A8;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE;SB=LE;WB=LE;XIDS
+cp;08A9;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE;SB=LE;WB=LE;XIDS
# Dependent consonants for Rohingya
-cp;08AA;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER REH WITH LOOP;SB=LE;WB=LE;XIDS
-cp;08AB;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Waw;jt=R;lb=AL;na=ARABIC LETTER WAW WITH DOT WITHIN;SB=LE;WB=LE;XIDS
-cp;08AC;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Rohingya_Yeh;jt=R;lb=AL;na=ARABIC LETTER ROHINGYA YEH;SB=LE;WB=LE;XIDS
+cp;08AA;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER REH WITH LOOP;SB=LE;WB=LE;XIDS
+cp;08AB;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Waw;jt=R;lb=AL;na=ARABIC LETTER WAW WITH DOT WITHIN;SB=LE;WB=LE;XIDS
+cp;08AC;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Rohingya_Yeh;jt=R;lb=AL;na=ARABIC LETTER ROHINGYA YEH;SB=LE;WB=LE;XIDS
# Arabic letters for European and Central Asian languages
-cp;08AD;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=AL;na=ARABIC LETTER LOW ALEF;SB=LE;WB=LE;XIDS
-cp;08AE;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Dal;jt=R;lb=AL;na=ARABIC LETTER DAL WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
-cp;08AF;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Sad;jt=D;lb=AL;na=ARABIC LETTER SAD WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
-cp;08B0;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER GAF WITH INVERTED STROKE;SB=LE;WB=LE;XIDS
-cp;08B1;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Straight_Waw;jt=R;lb=AL;na=ARABIC LETTER STRAIGHT WAW;SB=LE;WB=LE;XIDS
+cp;08AD;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Type=Obsolete;IDS;InCB=None;jt=U;lb=AL;na=ARABIC LETTER LOW ALEF;SB=LE;WB=LE;XIDS
+cp;08AE;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Type=Obsolete;IDS;InCB=None;jg=Dal;jt=R;lb=AL;na=ARABIC LETTER DAL WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
+cp;08AF;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Type=Obsolete;IDS;InCB=None;jg=Sad;jt=D;lb=AL;na=ARABIC LETTER SAD WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
+cp;08B0;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Type=Obsolete;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER GAF WITH INVERTED STROKE;SB=LE;WB=LE;XIDS
+cp;08B1;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Type=Obsolete;IDS;InCB=None;jg=Straight_Waw;jt=R;lb=AL;na=ARABIC LETTER STRAIGHT WAW;SB=LE;WB=LE;XIDS
# Arabic letter for Berber
-cp;08B2;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER ZAIN WITH INVERTED V ABOVE;SB=LE;WB=LE;XIDS
+cp;08B2;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER ZAIN WITH INVERTED V ABOVE;SB=LE;WB=LE;XIDS
# Arabic letters for Arwi
cp;08B3;age=8.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Ain;jt=D;lb=AL;na=ARABIC LETTER AIN WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
cp;08B4;age=8.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Kaf;jt=D;lb=AL;na=ARABIC LETTER KAF WITH DOT BELOW;SB=LE;WB=LE;XIDS
# Early Arabic letter
-cp;08B5;age=14.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Qaf;jt=D;lb=AL;na=ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08B5;age=14.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Qaf;jt=D;lb=AL;na=ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;SB=LE;WB=LE;XIDS
# Arabic letters for Bravanese
-cp;08B6;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH SMALL MEEM ABOVE;SB=LE;WB=LE;XIDS
-cp;08B7;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER PEH WITH SMALL MEEM ABOVE;SB=LE;WB=LE;XIDS
-cp;08B8;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TEH WITH SMALL TEH ABOVE;SB=LE;WB=LE;XIDS
-cp;08B9;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER REH WITH SMALL NOON ABOVE;SB=LE;WB=LE;XIDS
-cp;08BA;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE;SB=LE;WB=LE;XIDS
+cp;08B6;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH SMALL MEEM ABOVE;SB=LE;WB=LE;XIDS
+cp;08B7;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER PEH WITH SMALL MEEM ABOVE;SB=LE;WB=LE;XIDS
+cp;08B8;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TEH WITH SMALL TEH ABOVE;SB=LE;WB=LE;XIDS
+cp;08B9;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER REH WITH SMALL NOON ABOVE;SB=LE;WB=LE;XIDS
+cp;08BA;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE;SB=LE;WB=LE;XIDS
# Arabic letters for Warsh orthography
-cp;08BB;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=African_Feh;jt=D;lb=AL;na=ARABIC LETTER AFRICAN FEH;SB=LE;WB=LE;XIDS
-cp;08BC;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=African_Qaf;jt=D;lb=AL;na=ARABIC LETTER AFRICAN QAF;SB=LE;WB=LE;XIDS
-cp;08BD;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=African_Noon;jt=D;lb=AL;na=ARABIC LETTER AFRICAN NOON;SB=LE;WB=LE;XIDS
+cp;08BB;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=African_Feh;jt=D;lb=AL;na=ARABIC LETTER AFRICAN FEH;SB=LE;WB=LE;XIDS
+cp;08BC;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=African_Qaf;jt=D;lb=AL;na=ARABIC LETTER AFRICAN QAF;SB=LE;WB=LE;XIDS
+cp;08BD;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=African_Noon;jt=D;lb=AL;na=ARABIC LETTER AFRICAN NOON;SB=LE;WB=LE;XIDS
# Arabic letters for Hindko
-cp;08BE;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER PEH WITH SMALL V;SB=LE;WB=LE;XIDS
-cp;08BF;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TEH WITH SMALL V;SB=LE;WB=LE;XIDS
-cp;08C0;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TTEH WITH SMALL V;SB=LE;WB=LE;XIDS
-cp;08C1;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER TCHEH WITH SMALL V;SB=LE;WB=LE;XIDS
-cp;08C2;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER KEHEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08BE;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER PEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08BF;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08C0;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TTEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08C1;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER TCHEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08C2;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER KEHEH WITH SMALL V;SB=LE;WB=LE;XIDS
# Arabic letters for Hausa, Wolof and other African orthographies
-cp;08C3;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Ain;jt=D;lb=AL;na=ARABIC LETTER GHAIN WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08C4;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=African_Qaf;jt=D;lb=AL;na=ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08C5;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08C6;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
+cp;08C3;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Ain;jt=D;lb=AL;na=ARABIC LETTER GHAIN WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08C4;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=African_Qaf;jt=D;lb=AL;na=ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08C5;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08C6;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
# Arabic letter for Punjabi
-cp;08C7;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Lam;jt=D;lb=AL;na=ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;SB=LE;WB=LE;XIDS
+cp;08C7;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Lam;jt=D;lb=AL;na=ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;SB=LE;WB=LE;XIDS
# Arabic letter for Balti
-cp;08C8;age=14.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER GRAF;SB=LE;WB=LE;XIDS
+cp;08C8;age=14.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER GRAF;SB=LE;WB=LE;XIDS
# Additions for Quranic orthographies
-cp;08C9;age=14.0;bc=AL;ccc=0;CI;Dia;gc=Lm;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=AL;na=ARABIC SMALL FARSI YEH;SB=LE;WB=LE;XIDS
+cp;08C9;age=14.0;bc=AL;ccc=0;CI;Dia;gc=Lm;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=None;jt=U;lb=AL;na=ARABIC SMALL FARSI YEH;SB=LE;WB=LE;XIDS
cp;08CA;age=14.0;-Alpha;CI;Dia;na=ARABIC SMALL HIGH FARSI YEH
cp;08CB;age=14.0;-Alpha;CI;Dia;na=ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW
cp;08CC;age=14.0;-Alpha;CI;Dia;na=ARABIC SMALL HIGH WORD SAH
@@ -3789,7 +3806,7 @@ cp;08DE;age=9.0;CI;na=ARABIC SMALL HIGH WORD QIF
cp;08DF;age=9.0;CI;na=ARABIC SMALL HIGH WORD WAQFA
cp;08E0;age=9.0;-Alpha;CI;na=ARABIC SMALL HIGH FOOTNOTE MARKER
cp;08E1;age=9.0;-Alpha;CI;na=ARABIC SMALL HIGH SIGN SAFHA
-cp;08E2;age=9.0;-Alpha;bc=AN;ccc=0;CI;gc=Cf;GCB=PP;-Gr_Ext;-IDC;InCB=None;jt=U;lb=NU;na=ARABIC DISPUTED END OF AYAH;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC
+cp;08E2;age=9.0;-Alpha;bc=AN;ccc=0;CI;gc=Cf;GCB=PP;-Gr_Ext;-IDC;Identifier_Type=Not_XID;InCB=None;jt=U;lb=NU;na=ARABIC DISPUTED END OF AYAH;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC
# Extended vowel sign for Arwi
cp;08E3;age=8.0;ccc=220;CI;Dia;na=ARABIC TURNED DAMMA BELOW
# Extended vowel signs for Rohingya
@@ -3826,10 +3843,10 @@ cp;08FD;CI;Dia;na=ARABIC RIGHT ARROWHEAD ABOVE WITH DOT
cp;08FE;CI;Dia;na=ARABIC DAMMA WITH DOT
cp;08FF;age=7.0;CI;na=ARABIC MARK SIDEWAYS NOON GHUNNA
-block;0900..097F;age=1.1;Alpha;blk=Devanagari;gc=Lo;Gr_Base;IDC;IDS;InCB=Consonant;InSC=Consonant;lb=AL;SB=LE;sc=Deva;WB=LE;XIDC;XIDS
+block;0900..097F;age=1.1;Alpha;blk=Devanagari;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=Consonant;InSC=Consonant;lb=AL;SB=LE;sc=Deva;WB=LE;XIDC;XIDS
# 0900..097F Devanagari
# Various signs
-cp;0900;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN INVERTED CANDRABINDU;SB=EX;WB=Extend;-XIDS
+cp;0900;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=None;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN INVERTED CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;0901;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;0902;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;0903;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Visarga;lb=CM;na=DEVANAGARI SIGN VISARGA;SB=EX;WB=Extend;-XIDS
@@ -3914,38 +3931,38 @@ cp;094C;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEV
# Virama
cp;094D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Linker;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=DEVANAGARI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Dependent vowel signs
-cp;094E;age=5.2;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;SB=EX;WB=Extend;-XIDS
+cp;094E;age=5.2;gc=Mc;GCB=SM;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InCB=None;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;SB=EX;WB=Extend;-XIDS
cp;094F;age=6.0;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN AW;SB=EX;WB=Extend;-XIDS
# Sign
cp;0950;InCB=None;InSC=Other;na=DEVANAGARI OM
# Vedic tone marks
-cp;0951;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=DEVANAGARI STRESS SIGN UDATTA;SB=EX;sc=Zinh;scx=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh;WB=Extend;-XIDS
-cp;0952;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Cantillation_Mark;jt=T;lb=CM;na=DEVANAGARI STRESS SIGN ANUDATTA;SB=EX;sc=Zinh;scx=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh;WB=Extend;-XIDS
+cp;0951;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=DEVANAGARI STRESS SIGN UDATTA;SB=EX;sc=Zinh;scx=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh;WB=Extend;-XIDS
+cp;0952;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InCB=Extend;InPC=Bottom;InSC=Cantillation_Mark;jt=T;lb=CM;na=DEVANAGARI STRESS SIGN ANUDATTA;SB=EX;sc=Zinh;scx=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh;WB=Extend;-XIDS
# Accent marks
-cp;0953;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InSC=Other;jt=T;lb=CM;na=DEVANAGARI GRAVE ACCENT;SB=EX;sc=Zinh;WB=Extend;-XIDS
-cp;0954;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InSC=Other;jt=T;lb=CM;na=DEVANAGARI ACUTE ACCENT;SB=EX;sc=Zinh;WB=Extend;-XIDS
+cp;0953;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical;-IDS;InCB=Extend;InSC=Other;jt=T;lb=CM;na=DEVANAGARI GRAVE ACCENT;SB=EX;sc=Zinh;WB=Extend;-XIDS
+cp;0954;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical;-IDS;InCB=Extend;InSC=Other;jt=T;lb=CM;na=DEVANAGARI ACUTE ACCENT;SB=EX;sc=Zinh;WB=Extend;-XIDS
# Dependent vowel sign
-cp;0955;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN CANDRA LONG E;SB=EX;WB=Extend;-XIDS
+cp;0955;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN CANDRA LONG E;SB=EX;WB=Extend;-XIDS
# Dependent vowel signs for Kashmiri
cp;0956;age=6.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN UE;SB=EX;WB=Extend;-XIDS
cp;0957;age=6.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN UUE;SB=EX;WB=Extend;-XIDS
# Additional consonants
-cp;0958;Comp_Ex;CWKCF;dm=0915 093C;dt=Can;na=DEVANAGARI LETTER QA;NFC_QC=N;NFD_QC=N;NFKC_CF=0915 093C;NFKC_QC=N;NFKC_SCF=0915 093C;NFKD_QC=N
-cp;0959;Comp_Ex;CWKCF;dm=0916 093C;dt=Can;na=DEVANAGARI LETTER KHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0916 093C;NFKC_QC=N;NFKC_SCF=0916 093C;NFKD_QC=N
-cp;095A;Comp_Ex;CWKCF;dm=0917 093C;dt=Can;na=DEVANAGARI LETTER GHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0917 093C;NFKC_QC=N;NFKC_SCF=0917 093C;NFKD_QC=N
-cp;095B;Comp_Ex;CWKCF;dm=091C 093C;dt=Can;na=DEVANAGARI LETTER ZA;NFC_QC=N;NFD_QC=N;NFKC_CF=091C 093C;NFKC_QC=N;NFKC_SCF=091C 093C;NFKD_QC=N
-cp;095C;Comp_Ex;CWKCF;dm=0921 093C;dt=Can;na=DEVANAGARI LETTER DDDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0921 093C;NFKC_QC=N;NFKC_SCF=0921 093C;NFKD_QC=N
-cp;095D;Comp_Ex;CWKCF;dm=0922 093C;dt=Can;na=DEVANAGARI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0922 093C;NFKC_QC=N;NFKC_SCF=0922 093C;NFKD_QC=N
-cp;095E;Comp_Ex;CWKCF;dm=092B 093C;dt=Can;na=DEVANAGARI LETTER FA;NFC_QC=N;NFD_QC=N;NFKC_CF=092B 093C;NFKC_QC=N;NFKC_SCF=092B 093C;NFKD_QC=N
-cp;095F;Comp_Ex;CWKCF;dm=092F 093C;dt=Can;na=DEVANAGARI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=092F 093C;NFKC_QC=N;NFKC_SCF=092F 093C;NFKD_QC=N
+cp;0958;Comp_Ex;CWKCF;dm=0915 093C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=DEVANAGARI LETTER QA;NFC_QC=N;NFD_QC=N;NFKC_CF=0915 093C;NFKC_QC=N;NFKC_SCF=0915 093C;NFKD_QC=N
+cp;0959;Comp_Ex;CWKCF;dm=0916 093C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=DEVANAGARI LETTER KHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0916 093C;NFKC_QC=N;NFKC_SCF=0916 093C;NFKD_QC=N
+cp;095A;Comp_Ex;CWKCF;dm=0917 093C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=DEVANAGARI LETTER GHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0917 093C;NFKC_QC=N;NFKC_SCF=0917 093C;NFKD_QC=N
+cp;095B;Comp_Ex;CWKCF;dm=091C 093C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=DEVANAGARI LETTER ZA;NFC_QC=N;NFD_QC=N;NFKC_CF=091C 093C;NFKC_QC=N;NFKC_SCF=091C 093C;NFKD_QC=N
+cp;095C;Comp_Ex;CWKCF;dm=0921 093C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=DEVANAGARI LETTER DDDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0921 093C;NFKC_QC=N;NFKC_SCF=0921 093C;NFKD_QC=N
+cp;095D;Comp_Ex;CWKCF;dm=0922 093C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=DEVANAGARI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0922 093C;NFKC_QC=N;NFKC_SCF=0922 093C;NFKD_QC=N
+cp;095E;Comp_Ex;CWKCF;dm=092B 093C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=DEVANAGARI LETTER FA;NFC_QC=N;NFD_QC=N;NFKC_CF=092B 093C;NFKC_QC=N;NFKC_SCF=092B 093C;NFKD_QC=N
+cp;095F;Comp_Ex;CWKCF;dm=092F 093C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=DEVANAGARI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=092F 093C;NFKC_QC=N;NFKC_SCF=092F 093C;NFKD_QC=N
# Additional vowels for Sanskrit
cp;0960;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC RR
cp;0961;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC LL
cp;0962;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
cp;0963;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
# Generic punctuation for scripts of India
-cp;0964;-Alpha;gc=Po;-IDC;-IDS;InCB=None;InSC=Other;lb=BA;na=DEVANAGARI DANDA;SB=ST;sc=Zyyy;scx=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;0965;-Alpha;gc=Po;-IDC;-IDS;InCB=None;InSC=Other;lb=BA;na=DEVANAGARI DOUBLE DANDA;SB=ST;sc=Zyyy;scx=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;0964;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;lb=BA;na=DEVANAGARI DANDA;SB=ST;sc=Zyyy;scx=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;0965;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;lb=BA;na=DEVANAGARI DOUBLE DANDA;SB=ST;sc=Zyyy;scx=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh;STerm;Term;WB=XX;-XIDC;-XIDS
# Digits
cp;0966;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
cp;0967;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT ONE;nt=De;nv=1;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
@@ -3958,7 +3975,7 @@ cp;096D;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT SEVEN;
cp;096E;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
cp;096F;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
# Additional signs
-cp;0970;-Alpha;gc=Po;-IDC;-IDS;InCB=None;InSC=Other;na=DEVANAGARI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0970;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;na=DEVANAGARI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
cp;0971;age=5.1;CI;Dia;gc=Lm;InCB=None;InSC=Other;na=DEVANAGARI SIGN HIGH SPACING DOT
# Independent vowel for Marathi
cp;0972;age=5.1;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER CANDRA A
@@ -3970,7 +3987,7 @@ cp;0975;age=6.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER AW
cp;0976;age=6.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER UE
cp;0977;age=6.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER UUE
# Additional consonants
-cp;0978;age=7.0;na=DEVANAGARI LETTER MARWARI DDA
+cp;0978;age=7.0;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=DEVANAGARI LETTER MARWARI DDA
cp;0979;age=5.2;na=DEVANAGARI LETTER ZHA
cp;097A;age=5.2;na=DEVANAGARI LETTER HEAVY YA
# Sindhi implosives
@@ -3982,10 +3999,10 @@ cp;097D;age=4.1;na=DEVANAGARI LETTER GLOTTAL STOP
cp;097E;age=5.0;na=DEVANAGARI LETTER DDDA
cp;097F;age=5.0;na=DEVANAGARI LETTER BBA
-block;0980..09FF;age=1.1;Alpha;blk=Bengali;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Beng;WB=LE;XIDC;XIDS
+block;0980..09FF;age=1.1;Alpha;blk=Bengali;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Beng;WB=LE;XIDC;XIDS
# 0980..09FF Bengali
# Various signs
-cp;0980;age=7.0;InSC=Consonant_Placeholder;na=BENGALI ANJI
+cp;0980;age=7.0;Identifier_Status=Restricted;Identifier_Type=Obsolete;InSC=Consonant_Placeholder;na=BENGALI ANJI
cp;0981;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=BENGALI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;0982;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=BENGALI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;0983;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=BENGALI SIGN VISARGA;SB=EX;WB=Extend;-XIDS
@@ -4069,10 +4086,10 @@ unassigned;09CF..09D6
cp;09D7;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
unassigned;09D8..09DB
# Additional consonants
-cp;09DC;Comp_Ex;CWKCF;dm=09A1 09BC;dt=Can;InCB=Consonant;na=BENGALI LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A1 09BC;NFKC_QC=N;NFKC_SCF=09A1 09BC;NFKD_QC=N
-cp;09DD;Comp_Ex;CWKCF;dm=09A2 09BC;dt=Can;InCB=Consonant;na=BENGALI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A2 09BC;NFKC_QC=N;NFKC_SCF=09A2 09BC;NFKD_QC=N
+cp;09DC;Comp_Ex;CWKCF;dm=09A1 09BC;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InCB=Consonant;na=BENGALI LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A1 09BC;NFKC_QC=N;NFKC_SCF=09A1 09BC;NFKD_QC=N
+cp;09DD;Comp_Ex;CWKCF;dm=09A2 09BC;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InCB=Consonant;na=BENGALI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A2 09BC;NFKC_QC=N;NFKC_SCF=09A2 09BC;NFKD_QC=N
unassigned;09DE
-cp;09DF;Comp_Ex;CWKCF;dm=09AF 09BC;dt=Can;InCB=Consonant;na=BENGALI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=09AF 09BC;NFKC_QC=N;NFKC_SCF=09AF 09BC;NFKD_QC=N
+cp;09DF;Comp_Ex;CWKCF;dm=09AF 09BC;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InCB=Consonant;na=BENGALI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=09AF 09BC;NFKC_QC=N;NFKC_SCF=09AF 09BC;NFKD_QC=N
# Additional vowels for Sanskrit
cp;09E0;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC RR
cp;09E1;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC LL
@@ -4095,26 +4112,26 @@ cp;09EF;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT NINE;nt=De;nv=9;SB=
cp;09F0;InCB=Consonant;na=BENGALI LETTER RA WITH MIDDLE DIAGONAL
cp;09F1;InCB=Consonant;na=BENGALI LETTER RA WITH LOWER DIAGONAL
# Currency symbols
-cp;09F2;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;09F3;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09F2;-Alpha;bc=ET;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09F3;-Alpha;bc=ET;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Historic symbols for fractional values
-cp;09F4;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS
-cp;09F5;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR TWO;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS
-cp;09F6;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR THREE;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS
-cp;09F7;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR FOUR;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;09F8;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;09F9;-Alpha;gc=No;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI CURRENCY DENOMINATOR SIXTEEN;nt=Nu;nv=16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09F4;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09F5;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR TWO;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09F6;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR THREE;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09F7;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR FOUR;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09F8;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09F9;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=PO;na=BENGALI CURRENCY DENOMINATOR SIXTEEN;nt=Nu;nv=16;SB=XX;WB=XX;-XIDC;-XIDS
# Sign
-cp;09FA;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=BENGALI ISSHAR;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09FA;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=BENGALI ISSHAR;SB=XX;WB=XX;-XIDC;-XIDS
# Historic currency sign
-cp;09FB;age=5.2;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=BENGALI GANDA MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09FB;age=5.2;-Alpha;bc=ET;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=PR;na=BENGALI GANDA MARK;SB=XX;WB=XX;-XIDC;-XIDS
# Signs
-cp;09FC;age=10.0;InSC=Bindu;na=BENGALI LETTER VEDIC ANUSVARA
-cp;09FD;age=10.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=BENGALI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;09FC;age=10.0;Identifier_Status=Restricted;Identifier_Type=Obsolete;InSC=Bindu;na=BENGALI LETTER VEDIC ANUSVARA
+cp;09FD;age=10.0;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=BENGALI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
cp;09FE;age=11.0;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;lb=CM;na=BENGALI SANDHI MARK;SB=EX;WB=Extend;-XIDS
unassigned;09FF
-block;0A00..0A7F;age=1.1;Alpha;blk=Gurmukhi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Guru;WB=LE;XIDC;XIDS
+block;0A00..0A7F;age=1.1;Alpha;blk=Gurmukhi;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Guru;WB=LE;XIDC;XIDS
# 0A00..0A7F Gurmukhi
unassigned;0A00
# Various signs
@@ -4166,10 +4183,10 @@ cp;0A2F;na=GURMUKHI LETTER YA
cp;0A30;na=GURMUKHI LETTER RA
unassigned;0A31
cp;0A32;na=GURMUKHI LETTER LA
-cp;0A33;Comp_Ex;CWKCF;dm=0A32 0A3C;dt=Can;na=GURMUKHI LETTER LLA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A32 0A3C;NFKC_QC=N;NFKC_SCF=0A32 0A3C;NFKD_QC=N
+cp;0A33;Comp_Ex;CWKCF;dm=0A32 0A3C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GURMUKHI LETTER LLA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A32 0A3C;NFKC_QC=N;NFKC_SCF=0A32 0A3C;NFKD_QC=N
unassigned;0A34
cp;0A35;na=GURMUKHI LETTER VA
-cp;0A36;Comp_Ex;CWKCF;dm=0A38 0A3C;dt=Can;na=GURMUKHI LETTER SHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A38 0A3C;NFKC_QC=N;NFKC_SCF=0A38 0A3C;NFKD_QC=N
+cp;0A36;Comp_Ex;CWKCF;dm=0A38 0A3C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GURMUKHI LETTER SHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A38 0A3C;NFKC_QC=N;NFKC_SCF=0A38 0A3C;NFKD_QC=N
unassigned;0A37
cp;0A38;na=GURMUKHI LETTER SA
cp;0A39;na=GURMUKHI LETTER HA
@@ -4193,15 +4210,15 @@ cp;0A4C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependen
cp;0A4D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=GURMUKHI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
unassigned;0A4E..0A50
# Sign
-cp;0A51;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Cantillation_Mark;jt=T;lb=CM;na=GURMUKHI SIGN UDAAT;SB=EX;WB=Extend;-XIDS
+cp;0A51;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InPC=Bottom;InSC=Cantillation_Mark;jt=T;lb=CM;na=GURMUKHI SIGN UDAAT;SB=EX;WB=Extend;-XIDS
unassigned;0A52..0A58
# Additional consonants
-cp;0A59;Comp_Ex;CWKCF;dm=0A16 0A3C;dt=Can;na=GURMUKHI LETTER KHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A16 0A3C;NFKC_QC=N;NFKC_SCF=0A16 0A3C;NFKD_QC=N
-cp;0A5A;Comp_Ex;CWKCF;dm=0A17 0A3C;dt=Can;na=GURMUKHI LETTER GHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A17 0A3C;NFKC_QC=N;NFKC_SCF=0A17 0A3C;NFKD_QC=N
-cp;0A5B;Comp_Ex;CWKCF;dm=0A1C 0A3C;dt=Can;na=GURMUKHI LETTER ZA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A1C 0A3C;NFKC_QC=N;NFKC_SCF=0A1C 0A3C;NFKD_QC=N
+cp;0A59;Comp_Ex;CWKCF;dm=0A16 0A3C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GURMUKHI LETTER KHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A16 0A3C;NFKC_QC=N;NFKC_SCF=0A16 0A3C;NFKD_QC=N
+cp;0A5A;Comp_Ex;CWKCF;dm=0A17 0A3C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GURMUKHI LETTER GHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A17 0A3C;NFKC_QC=N;NFKC_SCF=0A17 0A3C;NFKD_QC=N
+cp;0A5B;Comp_Ex;CWKCF;dm=0A1C 0A3C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GURMUKHI LETTER ZA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A1C 0A3C;NFKC_QC=N;NFKC_SCF=0A1C 0A3C;NFKD_QC=N
cp;0A5C;na=GURMUKHI LETTER RRA
unassigned;0A5D
-cp;0A5E;Comp_Ex;CWKCF;dm=0A2B 0A3C;dt=Can;na=GURMUKHI LETTER FA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A2B 0A3C;NFKC_QC=N;NFKC_SCF=0A2B 0A3C;NFKD_QC=N
+cp;0A5E;Comp_Ex;CWKCF;dm=0A2B 0A3C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GURMUKHI LETTER FA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A2B 0A3C;NFKC_QC=N;NFKC_SCF=0A2B 0A3C;NFKD_QC=N
unassigned;0A5F..0A63
# Reserved
unassigned;0A64..0A65
@@ -4224,11 +4241,11 @@ cp;0A72;InSC=Consonant_Placeholder;na=GURMUKHI IRI
cp;0A73;InSC=Consonant_Placeholder;na=GURMUKHI URA
# Signs
cp;0A74;InSC=Other;na=GURMUKHI EK ONKAR
-cp;0A75;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_Medial;jt=T;lb=CM;na=GURMUKHI SIGN YAKASH;SB=EX;WB=Extend;-XIDS
-cp;0A76;age=11.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=GURMUKHI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0A75;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InPC=Bottom;InSC=Consonant_Medial;jt=T;lb=CM;na=GURMUKHI SIGN YAKASH;SB=EX;WB=Extend;-XIDS
+cp;0A76;age=11.0;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=GURMUKHI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;0A77..0A7F
-block;0A80..0AFF;age=1.1;Alpha;blk=Gujarati;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Gujr;WB=LE;XIDC;XIDS
+block;0A80..0AFF;age=1.1;Alpha;blk=Gujarati;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Gujr;WB=LE;XIDC;XIDS
# 0A80..0AFF Gujarati
unassigned;0A80
# Various signs
@@ -4336,12 +4353,12 @@ cp;0AED;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=GUJARATI DIGIT SEVEN;nt=De;nv=7;S
cp;0AEE;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=GUJARATI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Gujr Khoj;WB=NU;-XIDS
cp;0AEF;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=GUJARATI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Gujr Khoj;WB=NU;-XIDS
# Abbreviation sign
-cp;0AF0;age=6.1;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=GUJARATI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0AF0;age=6.1;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=GUJARATI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Currency symbol
-cp;0AF1;age=4.0;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=GUJARATI RUPEE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0AF1;age=4.0;-Alpha;bc=ET;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=PR;na=GUJARATI RUPEE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;0AF2..0AF8
# Additional consonant
-cp;0AF9;age=8.0;InCB=Consonant;na=GUJARATI LETTER ZHA
+cp;0AF9;age=8.0;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;InCB=Consonant;na=GUJARATI LETTER ZHA
# Transliteration signs
cp;0AFA;age=10.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=GUJARATI SIGN SUKUN;SB=EX;WB=Extend;-XIDS
cp;0AFB;age=10.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Gemination_Mark;jt=T;lb=CM;na=GUJARATI SIGN SHADDA;SB=EX;WB=Extend;-XIDS
@@ -4350,7 +4367,7 @@ cp;0AFD;age=10.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top
cp;0AFE;age=10.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=GUJARATI SIGN CIRCLE NUKTA ABOVE;SB=EX;WB=Extend;-XIDS
cp;0AFF;age=10.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE;SB=EX;WB=Extend;-XIDS
-block;0B00..0B7F;age=1.1;Alpha;blk=Oriya;gc=Lo;Gr_Base;IDC;IDS;InCB=Consonant;InSC=Consonant;lb=AL;SB=LE;sc=Orya;WB=LE;XIDC;XIDS
+block;0B00..0B7F;age=1.1;Alpha;blk=Oriya;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InCB=Consonant;InSC=Consonant;lb=AL;SB=LE;sc=Orya;WB=LE;XIDC;XIDS
# 0B00..0B7F Oriya
unassigned;0B00
# Various signs
@@ -4422,7 +4439,7 @@ cp;0B40;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=ORI
cp;0B41;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
cp;0B42;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS
cp;0B43;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
-cp;0B44;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS
+cp;0B44;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS
unassigned;0B45..0B46
cp;0B47;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
cp;0B48;dm=0B47 0B56;dt=Can;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Top_And_Left;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN AI;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
@@ -4439,16 +4456,16 @@ cp;0B56;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowe
cp;0B57;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top_And_Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
unassigned;0B58..0B5B
# Additional consonants
-cp;0B5C;Comp_Ex;CWKCF;dm=0B21 0B3C;dt=Can;na=ORIYA LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=0B21 0B3C;NFKC_QC=N;NFKC_SCF=0B21 0B3C;NFKD_QC=N
-cp;0B5D;Comp_Ex;CWKCF;dm=0B22 0B3C;dt=Can;na=ORIYA LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0B22 0B3C;NFKC_QC=N;NFKC_SCF=0B22 0B3C;NFKD_QC=N
+cp;0B5C;Comp_Ex;CWKCF;dm=0B21 0B3C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=ORIYA LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=0B21 0B3C;NFKC_QC=N;NFKC_SCF=0B21 0B3C;NFKD_QC=N
+cp;0B5D;Comp_Ex;CWKCF;dm=0B22 0B3C;dt=Can;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=ORIYA LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0B22 0B3C;NFKC_QC=N;NFKC_SCF=0B22 0B3C;NFKD_QC=N
unassigned;0B5E
cp;0B5F;na=ORIYA LETTER YYA
# Additional vowels for Sanskrit
cp;0B60;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC RR
cp;0B61;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC LL
# Dependent vowels
-cp;0B62;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
-cp;0B63;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
+cp;0B62;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
+cp;0B63;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
# Reserved
unassigned;0B64..0B65
# Digits
@@ -4463,19 +4480,19 @@ cp;0B6D;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT SEVEN;nt=De
cp;0B6E;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
cp;0B6F;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Sign
-cp;0B70;-Alpha;gc=So;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA ISSHAR;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B70;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;na=ORIYA ISSHAR;SB=XX;WB=XX;-XIDC;-XIDS
# Additional consonant
cp;0B71;age=4.0;na=ORIYA LETTER WA
# Fraction signs
-cp;0B72;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE QUARTER;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B73;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B74;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION THREE QUARTERS;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B75;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE SIXTEENTH;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B76;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE EIGHTH;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B77;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION THREE SIXTEENTHS;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B72;age=6.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE QUARTER;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B73;age=6.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B74;age=6.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION THREE QUARTERS;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B75;age=6.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE SIXTEENTH;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B76;age=6.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE EIGHTH;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B77;age=6.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION THREE SIXTEENTHS;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;0B78..0B7F
-block;0B80..0BFF;age=1.1;Alpha;blk=Tamil;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Taml;WB=LE;XIDC
+block;0B80..0BFF;age=1.1;Alpha;blk=Tamil;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;InSC=Consonant;lb=AL;SB=LE;sc=Taml;WB=LE;XIDC
# 0B80..0BFF Tamil
unassigned;0B80..0B81
# Various signs
@@ -4565,27 +4582,27 @@ cp;0BED;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TAMIL DIGIT SEVEN;nt=De;nv=7;SB=NU;scx
cp;0BEE;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TAMIL DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Gran Taml;WB=NU
cp;0BEF;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TAMIL DIGIT NINE;nt=De;nv=9;SB=NU;scx=Gran Taml;WB=NU
# Tamil numerics
-cp;0BF0;-Alpha;gc=No;-IDC;InSC=Other;na=TAMIL NUMBER TEN;nt=Nu;nv=10;SB=XX;scx=Gran Taml;WB=XX;-XIDC
-cp;0BF1;-Alpha;gc=No;-IDC;InSC=Other;na=TAMIL NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;scx=Gran Taml;WB=XX;-XIDC
-cp;0BF2;-Alpha;gc=No;-IDC;InSC=Other;na=TAMIL NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;scx=Gran Taml;WB=XX;-XIDC
+cp;0BF0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL NUMBER TEN;nt=Nu;nv=10;SB=XX;scx=Gran Taml;WB=XX;-XIDC
+cp;0BF1;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;scx=Gran Taml;WB=XX;-XIDC
+cp;0BF2;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;scx=Gran Taml;WB=XX;-XIDC
# Tamil calendrical symbols
-cp;0BF3;age=4.0;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=TAMIL DAY SIGN;SB=XX;scx=Gran Taml;WB=XX;-XIDC
-cp;0BF4;age=4.0;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=TAMIL MONTH SIGN;SB=XX;WB=XX;-XIDC
-cp;0BF5;age=4.0;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=TAMIL YEAR SIGN;SB=XX;WB=XX;-XIDC
+cp;0BF3;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL DAY SIGN;SB=XX;scx=Gran Taml;WB=XX;-XIDC
+cp;0BF4;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL MONTH SIGN;SB=XX;WB=XX;-XIDC
+cp;0BF5;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL YEAR SIGN;SB=XX;WB=XX;-XIDC
# Tamil clerical symbols
-cp;0BF6;age=4.0;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=TAMIL DEBIT SIGN;SB=XX;WB=XX;-XIDC
-cp;0BF7;age=4.0;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=TAMIL CREDIT SIGN;SB=XX;WB=XX;-XIDC
-cp;0BF8;age=4.0;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=TAMIL AS ABOVE SIGN;SB=XX;WB=XX;-XIDC
+cp;0BF6;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL DEBIT SIGN;SB=XX;WB=XX;-XIDC
+cp;0BF7;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL CREDIT SIGN;SB=XX;WB=XX;-XIDC
+cp;0BF8;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL AS ABOVE SIGN;SB=XX;WB=XX;-XIDC
# Currency symbol
-cp;0BF9;age=4.0;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PR;na=TAMIL RUPEE SIGN;SB=XX;WB=XX;-XIDC
+cp;0BF9;age=4.0;-Alpha;bc=ET;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=PR;na=TAMIL RUPEE SIGN;SB=XX;WB=XX;-XIDC
# Tamil clerical symbol
-cp;0BFA;age=4.0;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=TAMIL NUMBER SIGN;SB=XX;WB=XX;-XIDC
+cp;0BFA;age=4.0;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TAMIL NUMBER SIGN;SB=XX;WB=XX;-XIDC
unassigned;0BFB..0BFF
-block;0C00..0C7F;age=1.1;Alpha;blk=Telugu;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Telu;WB=LE;XIDC;XIDS
+block;0C00..0C7F;age=1.1;Alpha;blk=Telugu;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Telu;WB=LE;XIDC;XIDS
# 0C00..0C7F Telugu
# Various signs
-cp;0C00;age=7.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TELUGU SIGN COMBINING CANDRABINDU ABOVE;SB=EX;WB=Extend;-XIDS
+cp;0C00;age=7.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TELUGU SIGN COMBINING CANDRABINDU ABOVE;SB=EX;WB=Extend;-XIDS
cp;0C01;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=TELUGU SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;0C02;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=TELUGU SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;0C03;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=TELUGU SIGN VISARGA;SB=EX;WB=Extend;-XIDS
@@ -4639,7 +4656,7 @@ cp;0C30;InCB=Consonant;na=TELUGU LETTER RA
cp;0C31;InCB=Consonant;na=TELUGU LETTER RRA
cp;0C32;InCB=Consonant;na=TELUGU LETTER LA
cp;0C33;InCB=Consonant;na=TELUGU LETTER LLA
-cp;0C34;age=7.0;InCB=Consonant;na=TELUGU LETTER LLLA
+cp;0C34;age=7.0;Identifier_Status=Restricted;Identifier_Type=Obsolete;InCB=Consonant;na=TELUGU LETTER LLLA
cp;0C35;InCB=Consonant;na=TELUGU LETTER VA
cp;0C36;InCB=Consonant;na=TELUGU LETTER SHA
cp;0C37;InCB=Consonant;na=TELUGU LETTER SSA
@@ -4674,9 +4691,9 @@ cp;0C55;bc=NSM;ccc=84;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;
cp;0C56;bc=NSM;ccc=91;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU AI LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
unassigned;0C57
# Historic phonetic variants
-cp;0C58;age=5.1;InCB=Consonant;na=TELUGU LETTER TSA
-cp;0C59;age=5.1;InCB=Consonant;na=TELUGU LETTER DZA
-cp;0C5A;age=8.0;InCB=Consonant;na=TELUGU LETTER RRRA
+cp;0C58;age=5.1;Identifier_Status=Restricted;Identifier_Type=Obsolete;InCB=Consonant;na=TELUGU LETTER TSA
+cp;0C59;age=5.1;Identifier_Status=Restricted;Identifier_Type=Obsolete;InCB=Consonant;na=TELUGU LETTER DZA
+cp;0C5A;age=8.0;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;InCB=Consonant;na=TELUGU LETTER RRRA
unassigned;0C5B..0C5C
# Consonant
cp;0C5D;age=14.0;InSC=Consonant_Dead;na=TELUGU LETTER NAKAARA POLLU
@@ -4685,8 +4702,8 @@ unassigned;0C5E..0C5F
cp;0C60;InSC=Vowel_Independent;na=TELUGU LETTER VOCALIC RR
cp;0C61;InSC=Vowel_Independent;na=TELUGU LETTER VOCALIC LL
# Dependent vowels
-cp;0C62;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
-cp;0C63;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
+cp;0C62;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
+cp;0C63;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
# Reserved
unassigned;0C64..0C65
# Digits
@@ -4702,25 +4719,25 @@ cp;0C6E;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=TELUGU DIGIT EIGHT;nt=De;nv=8;SB=
cp;0C6F;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=TELUGU DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;0C70..0C76
# Sign
-cp;0C77;age=12.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=TELUGU SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C77;age=12.0;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=BB;na=TELUGU SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
# Telugu fractions and weights
-cp;0C78;age=5.1;-Alpha;bc=ON;gc=No;-IDC;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;nt=Nu;nv=0;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0C79;age=5.1;-Alpha;bc=ON;gc=No;-IDC;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0C7A;age=5.1;-Alpha;bc=ON;gc=No;-IDC;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0C7B;age=5.1;-Alpha;bc=ON;gc=No;-IDC;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0C7C;age=5.1;-Alpha;bc=ON;gc=No;-IDC;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0C7D;age=5.1;-Alpha;bc=ON;gc=No;-IDC;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0C7E;age=5.1;-Alpha;bc=ON;gc=No;-IDC;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0C7F;age=5.1;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=TELUGU SIGN TUUMU;SB=XX;WB=XX;-XIDC;-XIDS
-
-block;0C80..0CFF;age=1.1;Alpha;blk=Kannada;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Knda;WB=LE;XIDC;XIDS
+cp;0C78;age=5.1;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;nt=Nu;nv=0;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C79;age=5.1;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C7A;age=5.1;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C7B;age=5.1;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C7C;age=5.1;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C7D;age=5.1;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C7E;age=5.1;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C7F;age=5.1;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=TELUGU SIGN TUUMU;SB=XX;WB=XX;-XIDC;-XIDS
+
+block;0C80..0CFF;age=1.1;Alpha;blk=Kannada;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Knda;WB=LE;XIDC;XIDS
# 0C80..0CFF Kannada
# Various signs
cp;0C80;age=9.0;InSC=Bindu;na=KANNADA SIGN SPACING CANDRABINDU
-cp;0C81;age=7.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=KANNADA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
+cp;0C81;age=7.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=KANNADA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;0C82;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=KANNADA SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;0C83;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=KANNADA SIGN VISARGA;SB=EX;WB=Extend;-XIDS
-cp;0C84;age=11.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=KANNADA SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0C84;age=11.0;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=BB;na=KANNADA SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
# Independent vowels
cp;0C85;InSC=Vowel_Independent;na=KANNADA LETTER A
cp;0C86;InSC=Vowel_Independent;na=KANNADA LETTER AA
@@ -4805,7 +4822,7 @@ cp;0CD6;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;
unassigned;0CD7..0CDC
# Additional consonants
cp;0CDD;age=14.0;InSC=Consonant_Dead;na=KANNADA LETTER NAKAARA POLLU
-cp;0CDE;na=KANNADA LETTER FA;Name_Alias=correction=KANNADA LETTER LLLA
+cp;0CDE;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=KANNADA LETTER FA;Name_Alias=correction=KANNADA LETTER LLLA
unassigned;0CDF
# Additional vowels for Sanskrit
cp;0CE0;InSC=Vowel_Independent;na=KANNADA LETTER VOCALIC RR
@@ -4833,14 +4850,14 @@ cp;0CF2;age=5.0;InSC=Consonant_With_Stacker;na=KANNADA SIGN UPADHMANIYA
cp;0CF3;age=15.0;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT;SB=EX;WB=Extend;-XIDS
unassigned;0CF4..0CFF
-block;0D00..0D7F;age=1.1;Alpha;blk=Malayalam;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mlym;WB=LE;XIDC;XIDS
+block;0D00..0D7F;age=1.1;Alpha;blk=Malayalam;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mlym;WB=LE;XIDC;XIDS
# 0D00..0D7F Malayalam
# Various signs
cp;0D00;age=10.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=MALAYALAM SIGN COMBINING ANUSVARA ABOVE;SB=EX;WB=Extend;-XIDS
-cp;0D01;age=7.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=MALAYALAM SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
+cp;0D01;age=7.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=MALAYALAM SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;0D02;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=MALAYALAM SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;0D03;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=MALAYALAM SIGN VISARGA;SB=EX;WB=Extend;-XIDS
-cp;0D04;age=13.0;InSC=Bindu;na=MALAYALAM LETTER VEDIC ANUSVARA
+cp;0D04;age=13.0;Identifier_Status=Restricted;Identifier_Type=Technical Obsolete;InSC=Bindu;na=MALAYALAM LETTER VEDIC ANUSVARA
# Independent vowels
cp;0D05;InSC=Vowel_Independent;na=MALAYALAM LETTER A
cp;0D06;InSC=Vowel_Independent;na=MALAYALAM LETTER AA
@@ -4898,8 +4915,8 @@ cp;0D38;InCB=Consonant;na=MALAYALAM LETTER SA
cp;0D39;InCB=Consonant;na=MALAYALAM LETTER HA
cp;0D3A;age=6.0;InCB=Consonant;na=MALAYALAM LETTER TTTA
# Variant shape viramas
-cp;0D3B;age=10.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=MALAYALAM SIGN VERTICAL BAR VIRAMA;SB=EX;WB=Extend;-XIDS
-cp;0D3C;age=10.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=MALAYALAM SIGN CIRCULAR VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0D3B;age=10.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=MALAYALAM SIGN VERTICAL BAR VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0D3C;age=10.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=MALAYALAM SIGN CIRCULAR VIRAMA;SB=EX;WB=Extend;-XIDS
# Addition for Sanskrit
cp;0D3D;age=5.1;InSC=Avagraha;na=MALAYALAM SIGN AVAGRAHA
# Dependent vowel signs
@@ -4909,7 +4926,7 @@ cp;0D40;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=MALAYALAM VOW
cp;0D41;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
cp;0D42;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS
cp;0D43;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
-cp;0D44;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS
+cp;0D44;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS
unassigned;0D45
cp;0D46;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=MALAYALAM VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
cp;0D47;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=MALAYALAM VOWEL SIGN EE;SB=EX;WB=Extend;-XIDS
@@ -4924,7 +4941,7 @@ cp;0D4D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InC
# Dot reph
cp;0D4E;age=6.0;GCB=PP;InPC=Top;InSC=Consonant_Preceding_Repha;na=MALAYALAM LETTER DOT REPH
# Measurement symbol
-cp;0D4F;age=9.0;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=MALAYALAM SIGN PARA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D4F;age=9.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM SIGN PARA;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;0D50..0D53
# Additional historic chillu letters
cp;0D54;age=9.0;InSC=Consonant_Dead;na=MALAYALAM LETTER CHILLU M
@@ -4933,21 +4950,21 @@ cp;0D56;age=9.0;InSC=Consonant_Dead;na=MALAYALAM LETTER CHILLU LLL
# Dependent vowel sign
cp;0D57;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=MALAYALAM AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
# Minor fractions
-cp;0D58;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;nt=Nu;nv=1/160;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D59;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE FORTIETH;nt=Nu;nv=1/40;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D5A;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION THREE EIGHTIETHS;nt=Nu;nv=3/80;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D5B;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE TWENTIETH;nt=Nu;nv=1/20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D5C;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE TENTH;nt=Nu;nv=1/10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D5D;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION THREE TWENTIETHS;nt=Nu;nv=3/20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D5E;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE FIFTH;nt=Nu;nv=1/5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D58;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;nt=Nu;nv=1/160;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D59;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE FORTIETH;nt=Nu;nv=1/40;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D5A;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION THREE EIGHTIETHS;nt=Nu;nv=3/80;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D5B;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE TWENTIETH;nt=Nu;nv=1/20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D5C;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE TENTH;nt=Nu;nv=1/10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D5D;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION THREE TWENTIETHS;nt=Nu;nv=3/20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D5E;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE FIFTH;nt=Nu;nv=1/5;SB=XX;WB=XX;-XIDC;-XIDS
# Additional historic vowel
-cp;0D5F;age=8.0;InSC=Vowel_Independent;na=MALAYALAM LETTER ARCHAIC II
+cp;0D5F;age=8.0;Identifier_Status=Restricted;Identifier_Type=Obsolete;InSC=Vowel_Independent;na=MALAYALAM LETTER ARCHAIC II
# Additional vowels for Sanskrit
cp;0D60;InSC=Vowel_Independent;na=MALAYALAM LETTER VOCALIC RR
cp;0D61;InSC=Vowel_Independent;na=MALAYALAM LETTER VOCALIC LL
# Dependent vowels
-cp;0D62;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
-cp;0D63;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
+cp;0D62;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
+cp;0D63;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=MALAYALAM VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
# Reserved
unassigned;0D64..0D65
# Digits
@@ -4962,18 +4979,18 @@ cp;0D6D;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MALAYALAM DIGIT SEVEN;nt=De;nv=7;
cp;0D6E;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MALAYALAM DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
cp;0D6F;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MALAYALAM DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Malayalam numerics
-cp;0D70;age=5.1;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D71;age=5.1;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D72;age=5.1;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D70;age=5.1;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D71;age=5.1;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D72;age=5.1;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
# Fractions
-cp;0D73;age=5.1;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE QUARTER;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D74;age=5.1;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D75;age=5.1;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION THREE QUARTERS;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D76;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE SIXTEENTH;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D77;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE EIGHTH;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0D78;age=9.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=MALAYALAM FRACTION THREE SIXTEENTHS;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D73;age=5.1;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE QUARTER;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D74;age=5.1;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D75;age=5.1;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION THREE QUARTERS;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D76;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE SIXTEENTH;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D77;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION ONE EIGHTH;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D78;age=9.0;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MALAYALAM FRACTION THREE SIXTEENTHS;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS
# Date mark
-cp;0D79;age=5.1;-Alpha;gc=So;-IDC;-IDS;InSC=Other;lb=PO;na=MALAYALAM DATE MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0D79;age=5.1;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=PO;na=MALAYALAM DATE MARK;SB=XX;WB=XX;-XIDC;-XIDS
# Chillu letters
cp;0D7A;age=5.1;InSC=Consonant_Dead;na=MALAYALAM LETTER CHILLU NN
cp;0D7B;age=5.1;InSC=Consonant_Dead;na=MALAYALAM LETTER CHILLU N
@@ -4982,11 +4999,11 @@ cp;0D7D;age=5.1;InSC=Consonant_Dead;na=MALAYALAM LETTER CHILLU L
cp;0D7E;age=5.1;InSC=Consonant_Dead;na=MALAYALAM LETTER CHILLU LL
cp;0D7F;age=5.1;InSC=Consonant_Dead;na=MALAYALAM LETTER CHILLU K
-block;0D80..0DFF;age=3.0;Alpha;blk=Sinhala;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Sinh;WB=LE;XIDC;XIDS
+block;0D80..0DFF;age=3.0;Alpha;blk=Sinhala;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Sinh;WB=LE;XIDC;XIDS
# 0D80..0DFF Sinhala
unassigned;0D80
# Various signs
-cp;0D81;age=13.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=SINHALA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
+cp;0D81;age=13.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=SINHALA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;0D82;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=SINHALA SIGN ANUSVARAYA;SB=EX;WB=Extend;-XIDS
cp;0D83;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=SINHALA SIGN VISARGAYA;SB=EX;WB=Extend;-XIDS
unassigned;0D84
@@ -5001,8 +5018,8 @@ cp;0D8B;InSC=Vowel_Independent;na=SINHALA LETTER UYANNA
cp;0D8C;InSC=Vowel_Independent;na=SINHALA LETTER UUYANNA
cp;0D8D;InSC=Vowel_Independent;na=SINHALA LETTER IRUYANNA
cp;0D8E;InSC=Vowel_Independent;na=SINHALA LETTER IRUUYANNA
-cp;0D8F;InSC=Vowel_Independent;na=SINHALA LETTER ILUYANNA
-cp;0D90;InSC=Vowel_Independent;na=SINHALA LETTER ILUUYANNA
+cp;0D8F;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use Technical;InSC=Vowel_Independent;na=SINHALA LETTER ILUYANNA
+cp;0D90;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use Technical;InSC=Vowel_Independent;na=SINHALA LETTER ILUUYANNA
cp;0D91;InSC=Vowel_Independent;na=SINHALA LETTER EYANNA
cp;0D92;InSC=Vowel_Independent;na=SINHALA LETTER EEYANNA
cp;0D93;InSC=Vowel_Independent;na=SINHALA LETTER AIYANNA
@@ -5023,7 +5040,7 @@ cp;0DA2;na=SINHALA LETTER ALPAPRAANA JAYANNA
cp;0DA3;na=SINHALA LETTER MAHAAPRAANA JAYANNA
cp;0DA4;na=SINHALA LETTER TAALUJA NAASIKYAYA
cp;0DA5;na=SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
-cp;0DA6;na=SINHALA LETTER SANYAKA JAYANNA
+cp;0DA6;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use Technical;na=SINHALA LETTER SANYAKA JAYANNA
cp;0DA7;na=SINHALA LETTER ALPAPRAANA TTAYANNA
cp;0DA8;na=SINHALA LETTER MAHAAPRAANA TTAYANNA
cp;0DA9;na=SINHALA LETTER ALPAPRAANA DDAYANNA
@@ -5078,28 +5095,28 @@ cp;0DDC;dm=0DD9 0DCF;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dep
cp;0DDD;dm=0DDC 0DCA;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Top_And_Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
cp;0DDE;dm=0DD9 0DDF;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
# Dependent vowel sign
-cp;0DDF;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=SINHALA VOWEL SIGN GAYANUKITTA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
+cp;0DDF;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use Technical;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=SINHALA VOWEL SIGN GAYANUKITTA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
unassigned;0DE0..0DE5
# Astrological digits
-cp;0DE6;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;0DE7;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;0DE8;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;0DE9;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;0DEA;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;0DEB;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;0DEC;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;0DED;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;0DEE;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;0DEF;age=7.0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;0DE6;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;0DE7;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;0DE8;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;0DE9;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;0DEA;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;0DEB;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;0DEC;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;0DED;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;0DEE;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;0DEF;age=7.0;-Alpha;gc=Nd;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InSC=Number;lb=NU;na=SINHALA LITH DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;0DF0..0DF1
# Additional dependent vowel signs
cp;0DF2;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=SINHALA VOWEL SIGN DIGA GAETTA-PILLA;SB=EX;WB=Extend;-XIDS
-cp;0DF3;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=SINHALA VOWEL SIGN DIGA GAYANUKITTA;SB=EX;WB=Extend;-XIDS
+cp;0DF3;gc=Mc;GCB=SM;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use Technical;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=SINHALA VOWEL SIGN DIGA GAYANUKITTA;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;0DF4;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=SINHALA PUNCTUATION KUNDDALIYA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0DF4;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=SINHALA PUNCTUATION KUNDDALIYA;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;0DF5..0DFF
-block;0E00..0E7F;age=1.1;Alpha;blk=Thai;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Thai;XIDC;XIDS
+block;0E00..0E7F;age=1.1;Alpha;blk=Thai;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Thai;XIDC;XIDS
# 0E00..0E7F Thai
unassigned;0E00
# Consonants
@@ -5155,7 +5172,7 @@ cp;0E2F;InSC=Other;na=THAI CHARACTER PAIYANNOI
cp;0E30;InPC=Right;InSC=Vowel_Dependent;na=THAI CHARACTER SARA A
cp;0E31;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER MAI HAN-AKAT;SB=EX;WB=Extend;-XIDS
cp;0E32;InPC=Right;InSC=Vowel_Dependent;na=THAI CHARACTER SARA AA
-cp;0E33;CWKCF;dm=0E4D 0E32;dt=Com;GCB=SM;InPC=Right;InSC=Vowel_Dependent;na=THAI CHARACTER SARA AM;NFKC_CF=0E4D 0E32;NFKC_QC=N;NFKC_SCF=0E4D 0E32;NFKD_QC=N;-XIDS
+cp;0E33;CWKCF;dm=0E4D 0E32;dt=Com;GCB=SM;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Right;InSC=Vowel_Dependent;na=THAI CHARACTER SARA AM;NFKC_CF=0E4D 0E32;NFKC_QC=N;NFKC_SCF=0E4D 0E32;NFKD_QC=N;-XIDS
cp;0E34;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA I;SB=EX;WB=Extend;-XIDS
cp;0E35;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA II;SB=EX;WB=Extend;-XIDS
cp;0E36;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA UE;SB=EX;WB=Extend;-XIDS
@@ -5165,7 +5182,7 @@ cp;0E39;bc=NSM;ccc=103;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bot
cp;0E3A;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;na=THAI CHARACTER PHINTHU;SB=EX;WB=Extend;-XIDS
unassigned;0E3B..0E3E
# Currency symbol
-cp;0E3F;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=THAI CURRENCY SYMBOL BAHT;SB=XX;sc=Zyyy;-XIDC;-XIDS
+cp;0E3F;-Alpha;bc=ET;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=PR;na=THAI CURRENCY SYMBOL BAHT;SB=XX;sc=Zyyy;-XIDC;-XIDS
# Vowels
cp;0E40;InPC=Visual_Order_Left;InSC=Vowel_Dependent;LOE;na=THAI CHARACTER SARA E
cp;0E41;InPC=Visual_Order_Left;InSC=Vowel_Dependent;LOE;na=THAI CHARACTER SARA AE
@@ -5187,7 +5204,7 @@ cp;0E4B;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Exte
cp;0E4C;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Consonant_Killer;jt=T;na=THAI CHARACTER THANTHAKHAT;SB=EX;WB=Extend;-XIDS
cp;0E4D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;na=THAI CHARACTER NIKHAHIT;SB=EX;WB=Extend;-XIDS
cp;0E4E;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Pure_Killer;jt=T;na=THAI CHARACTER YAMAKKAN;SB=EX;WB=Extend;-XIDS
-cp;0E4F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=THAI CHARACTER FONGMAN;SB=XX;-XIDC;-XIDS
+cp;0E4F;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=AL;na=THAI CHARACTER FONGMAN;SB=XX;-XIDC;-XIDS
# Digits
cp;0E50;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=THAI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
cp;0E51;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=THAI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
@@ -5200,11 +5217,11 @@ cp;0E57;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=THAI DIGIT SEVEN;nt=De;nv=7;SB=NU
cp;0E58;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=THAI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
cp;0E59;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=THAI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Signs
-cp;0E5A;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=THAI CHARACTER ANGKHANKHU;SB=XX;Term;-XIDC;-XIDS
-cp;0E5B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=THAI CHARACTER KHOMUT;SB=XX;Term;-XIDC;-XIDS
+cp;0E5A;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=BA;na=THAI CHARACTER ANGKHANKHU;SB=XX;Term;-XIDC;-XIDS
+cp;0E5B;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=BA;na=THAI CHARACTER KHOMUT;SB=XX;Term;-XIDC;-XIDS
unassigned;0E5C..0E7F
-block;0E80..0EFF;age=1.1;Alpha;blk=Lao;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Laoo;XIDC;XIDS
+block;0E80..0EFF;age=1.1;Alpha;blk=Lao;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Laoo;XIDC;XIDS
# 0E80..0EFF Lao
unassigned;0E80
# Consonants
@@ -5260,7 +5277,7 @@ cp;0EAF;InSC=Other;na=LAO ELLIPSIS
cp;0EB0;InPC=Right;InSC=Vowel_Dependent;na=LAO VOWEL SIGN A
cp;0EB1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN MAI KAN;SB=EX;WB=Extend;-XIDS
cp;0EB2;InPC=Right;InSC=Vowel_Dependent;na=LAO VOWEL SIGN AA
-cp;0EB3;CWKCF;dm=0ECD 0EB2;dt=Com;GCB=SM;InPC=Right;InSC=Vowel_Dependent;na=LAO VOWEL SIGN AM;NFKC_CF=0ECD 0EB2;NFKC_QC=N;NFKC_SCF=0ECD 0EB2;NFKD_QC=N;-XIDS
+cp;0EB3;CWKCF;dm=0ECD 0EB2;dt=Com;GCB=SM;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Right;InSC=Vowel_Dependent;na=LAO VOWEL SIGN AM;NFKC_CF=0ECD 0EB2;NFKC_QC=N;NFKC_SCF=0ECD 0EB2;NFKD_QC=N;-XIDS
cp;0EB4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
cp;0EB5;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN II;SB=EX;WB=Extend;-XIDS
cp;0EB6;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN Y;SB=EX;WB=Extend;-XIDS
@@ -5308,51 +5325,51 @@ cp;0ED8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=LAO DIGIT EIGHT;nt=De;nv=8;SB=NU;
cp;0ED9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=LAO DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;0EDA..0EDB
# Digraphs
-cp;0EDC;CWKCF;dm=0EAB 0E99;dt=Com;na=LAO HO NO;NFKC_CF=0EAB 0E99;NFKC_QC=N;NFKC_SCF=0EAB 0E99;NFKD_QC=N
-cp;0EDD;CWKCF;dm=0EAB 0EA1;dt=Com;na=LAO HO MO;NFKC_CF=0EAB 0EA1;NFKC_QC=N;NFKC_SCF=0EAB 0EA1;NFKD_QC=N
+cp;0EDC;CWKCF;dm=0EAB 0E99;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=LAO HO NO;NFKC_CF=0EAB 0E99;NFKC_QC=N;NFKC_SCF=0EAB 0E99;NFKD_QC=N
+cp;0EDD;CWKCF;dm=0EAB 0EA1;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=LAO HO MO;NFKC_CF=0EAB 0EA1;NFKC_QC=N;NFKC_SCF=0EAB 0EA1;NFKD_QC=N
# Consonants for Khmu
cp;0EDE;age=6.1;na=LAO LETTER KHMU GO
cp;0EDF;age=6.1;na=LAO LETTER KHMU NYO
unassigned;0EE0..0EFF
-block;0F00..0FFF;age=2.0;Alpha;blk=Tibetan;gc=Mn;Gr_Base;IDC;InSC=Consonant_Subjoined;lb=AL;SB=EX;sc=Tibt;WB=Extend;XIDC
+block;0F00..0FFF;age=2.0;Alpha;blk=Tibetan;gc=Mn;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;InSC=Consonant_Subjoined;lb=AL;SB=EX;sc=Tibt;WB=Extend;XIDC
# 0F00..0FFF Tibetan
# Syllable
cp;0F00;gc=Lo;IDS;InSC=Other;na=TIBETAN SYLLABLE OM;SB=LE;WB=LE;XIDS
# Head marks
-cp;0F01;-Alpha;gc=So;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK GTER YIG MGO TRUNCATED A;SB=XX;WB=XX;-XIDC
-cp;0F02;-Alpha;gc=So;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;SB=XX;WB=XX;-XIDC
-cp;0F03;-Alpha;gc=So;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;SB=XX;WB=XX;-XIDC
-cp;0F04;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK INITIAL YIG MGO MDUN MA;SB=XX;WB=XX;-XIDC
-cp;0F05;-Alpha;gc=Po;-IDC;InSC=Other;na=TIBETAN MARK CLOSING YIG MGO SGAB MA;SB=XX;WB=XX;-XIDC
-cp;0F06;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK CARET YIG MGO PHUR SHAD MA;SB=XX;WB=XX;-XIDC
-cp;0F07;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK YIG MGO TSHEG SHAD MA;SB=XX;WB=XX;-XIDC
+cp;0F01;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK GTER YIG MGO TRUNCATED A;SB=XX;WB=XX;-XIDC
+cp;0F02;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;SB=XX;WB=XX;-XIDC
+cp;0F03;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;SB=XX;WB=XX;-XIDC
+cp;0F04;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK INITIAL YIG MGO MDUN MA;SB=XX;WB=XX;-XIDC
+cp;0F05;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN MARK CLOSING YIG MGO SGAB MA;SB=XX;WB=XX;-XIDC
+cp;0F06;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK CARET YIG MGO PHUR SHAD MA;SB=XX;WB=XX;-XIDC
+cp;0F07;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK YIG MGO TSHEG SHAD MA;SB=XX;WB=XX;-XIDC
# Marks and signs
-cp;0F08;-Alpha;gc=Po;-IDC;InSC=Other;lb=GL;na=TIBETAN MARK SBRUL SHAD;SB=XX;Term;WB=XX;-XIDC
-cp;0F09;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK BSKUR YIG MGO;SB=XX;WB=XX;-XIDC
-cp;0F0A;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK BKA- SHOG YIG MGO;SB=XX;WB=XX;-XIDC
-cp;0F0B;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=TIBETAN MARK INTERSYLLABIC TSHEG;SB=XX;WB=XX;-XIDC
-cp;0F0C;-Alpha;CWKCF;dm=0F0B;dt=Nb;gc=Po;-IDC;InSC=Other;lb=GL;na=TIBETAN MARK DELIMITER TSHEG BSTAR;NFKC_CF=0F0B;NFKC_QC=N;NFKC_SCF=0F0B;NFKD_QC=N;SB=XX;WB=XX;-XIDC
-cp;0F0D;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK SHAD;SB=XX;Term;WB=XX;-XIDC
-cp;0F0E;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK NYIS SHAD;SB=XX;Term;WB=XX;-XIDC
-cp;0F0F;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK TSHEG SHAD;SB=XX;Term;WB=XX;-XIDC
-cp;0F10;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK NYIS TSHEG SHAD;SB=XX;Term;WB=XX;-XIDC
-cp;0F11;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK RIN CHEN SPUNGS SHAD;SB=XX;Term;WB=XX;-XIDC
-cp;0F12;-Alpha;gc=Po;-IDC;InSC=Other;lb=GL;na=TIBETAN MARK RGYA GRAM SHAD;SB=XX;Term;WB=XX;-XIDC
-cp;0F13;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;SB=XX;WB=XX;-XIDC
-cp;0F14;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK GTER TSHEG;SB=XX;WB=XX;-XIDC
+cp;0F08;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=GL;na=TIBETAN MARK SBRUL SHAD;SB=XX;Term;WB=XX;-XIDC
+cp;0F09;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK BSKUR YIG MGO;SB=XX;WB=XX;-XIDC
+cp;0F0A;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK BKA- SHOG YIG MGO;SB=XX;WB=XX;-XIDC
+cp;0F0B;-Alpha;gc=Po;-IDC;Identifier_Type=Inclusion;InSC=Other;lb=BA;na=TIBETAN MARK INTERSYLLABIC TSHEG;SB=XX;WB=XX;-XIDC
+cp;0F0C;-Alpha;CWKCF;dm=0F0B;dt=Nb;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InSC=Other;lb=GL;na=TIBETAN MARK DELIMITER TSHEG BSTAR;NFKC_CF=0F0B;NFKC_QC=N;NFKC_SCF=0F0B;NFKD_QC=N;SB=XX;WB=XX;-XIDC
+cp;0F0D;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=EX;na=TIBETAN MARK SHAD;SB=XX;Term;WB=XX;-XIDC
+cp;0F0E;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=EX;na=TIBETAN MARK NYIS SHAD;SB=XX;Term;WB=XX;-XIDC
+cp;0F0F;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=EX;na=TIBETAN MARK TSHEG SHAD;SB=XX;Term;WB=XX;-XIDC
+cp;0F10;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=EX;na=TIBETAN MARK NYIS TSHEG SHAD;SB=XX;Term;WB=XX;-XIDC
+cp;0F11;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=EX;na=TIBETAN MARK RIN CHEN SPUNGS SHAD;SB=XX;Term;WB=XX;-XIDC
+cp;0F12;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=GL;na=TIBETAN MARK RGYA GRAM SHAD;SB=XX;Term;WB=XX;-XIDC
+cp;0F13;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;SB=XX;WB=XX;-XIDC
+cp;0F14;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=EX;na=TIBETAN MARK GTER TSHEG;SB=XX;WB=XX;-XIDC
# Astrological signs
-cp;0F15;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN LOGOTYPE SIGN CHAD RTAGS;SB=XX;WB=XX;-XIDC
-cp;0F16;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN LOGOTYPE SIGN LHAG RTAGS;SB=XX;WB=XX;-XIDC
-cp;0F17;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;SB=XX;WB=XX;-XIDC
-cp;0F18;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=TIBETAN ASTROLOGICAL SIGN -KHYUD PA
-cp;0F19;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-cp;0F1A;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL DKAR GCIG;SB=XX;WB=XX;-XIDC
-cp;0F1B;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL DKAR GNYIS;SB=XX;WB=XX;-XIDC
-cp;0F1C;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL DKAR GSUM;SB=XX;WB=XX;-XIDC
-cp;0F1D;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL NAG GCIG;SB=XX;WB=XX;-XIDC
-cp;0F1E;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL NAG GNYIS;SB=XX;WB=XX;-XIDC
-cp;0F1F;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL DKAR RDEL NAG;SB=XX;WB=XX;-XIDC
+cp;0F15;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN LOGOTYPE SIGN CHAD RTAGS;SB=XX;WB=XX;-XIDC
+cp;0F16;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN LOGOTYPE SIGN LHAG RTAGS;SB=XX;WB=XX;-XIDC
+cp;0F17;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;SB=XX;WB=XX;-XIDC
+cp;0F18;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+cp;0F19;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+cp;0F1A;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SIGN RDEL DKAR GCIG;SB=XX;WB=XX;-XIDC
+cp;0F1B;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SIGN RDEL DKAR GNYIS;SB=XX;WB=XX;-XIDC
+cp;0F1C;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SIGN RDEL DKAR GSUM;SB=XX;WB=XX;-XIDC
+cp;0F1D;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SIGN RDEL NAG GCIG;SB=XX;WB=XX;-XIDC
+cp;0F1E;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SIGN RDEL NAG GNYIS;SB=XX;WB=XX;-XIDC
+cp;0F1F;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SIGN RDEL DKAR RDEL NAG;SB=XX;WB=XX;-XIDC
# Digits
cp;0F20;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TIBETAN DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
cp;0F21;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TIBETAN DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
@@ -5365,28 +5382,28 @@ cp;0F27;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TIBETAN DIGIT SEVEN;nt=De;nv=7;SB=NU;W
cp;0F28;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TIBETAN DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
cp;0F29;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TIBETAN DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
# Digits minus half
-cp;0F2A;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF ONE;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC
-cp;0F2B;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF TWO;nt=Nu;nv=3/2;SB=XX;WB=XX;-XIDC
-cp;0F2C;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF THREE;nt=Nu;nv=5/2;SB=XX;WB=XX;-XIDC
-cp;0F2D;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF FOUR;nt=Nu;nv=7/2;SB=XX;WB=XX;-XIDC
-cp;0F2E;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF FIVE;nt=Nu;nv=9/2;SB=XX;WB=XX;-XIDC
-cp;0F2F;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF SIX;nt=Nu;nv=11/2;SB=XX;WB=XX;-XIDC
-cp;0F30;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF SEVEN;nt=Nu;nv=13/2;SB=XX;WB=XX;-XIDC
-cp;0F31;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF EIGHT;nt=Nu;nv=15/2;SB=XX;WB=XX;-XIDC
-cp;0F32;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF NINE;nt=Nu;nv=17/2;SB=XX;WB=XX;-XIDC
-cp;0F33;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF ZERO;nt=Nu;nv=-1/2;SB=XX;WB=XX;-XIDC
+cp;0F2A;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF ONE;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC
+cp;0F2B;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF TWO;nt=Nu;nv=3/2;SB=XX;WB=XX;-XIDC
+cp;0F2C;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF THREE;nt=Nu;nv=5/2;SB=XX;WB=XX;-XIDC
+cp;0F2D;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF FOUR;nt=Nu;nv=7/2;SB=XX;WB=XX;-XIDC
+cp;0F2E;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF FIVE;nt=Nu;nv=9/2;SB=XX;WB=XX;-XIDC
+cp;0F2F;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF SIX;nt=Nu;nv=11/2;SB=XX;WB=XX;-XIDC
+cp;0F30;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF SEVEN;nt=Nu;nv=13/2;SB=XX;WB=XX;-XIDC
+cp;0F31;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF EIGHT;nt=Nu;nv=15/2;SB=XX;WB=XX;-XIDC
+cp;0F32;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF NINE;nt=Nu;nv=17/2;SB=XX;WB=XX;-XIDC
+cp;0F33;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Number;na=TIBETAN DIGIT HALF ZERO;nt=Nu;nv=-1/2;SB=XX;WB=XX;-XIDC
# Marks and signs
-cp;0F34;-Alpha;gc=So;-IDC;InSC=Other;lb=BA;na=TIBETAN MARK BSDUS RTAGS;SB=XX;WB=XX;-XIDC
+cp;0F34;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BA;na=TIBETAN MARK BSDUS RTAGS;SB=XX;WB=XX;-XIDC
cp;0F35;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN MARK NGAS BZUNG NYI ZLA
-cp;0F36;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;SB=XX;WB=XX;-XIDC
+cp;0F36;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;SB=XX;WB=XX;-XIDC
cp;0F37;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN MARK NGAS BZUNG SGOR RTAGS
-cp;0F38;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN MARK CHE MGO;SB=XX;WB=XX;-XIDC
-cp;0F39;-Alpha;bc=NSM;ccc=216;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=TIBETAN MARK TSA -PHRU
+cp;0F38;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN MARK CHE MGO;SB=XX;WB=XX;-XIDC
+cp;0F39;-Alpha;bc=NSM;ccc=216;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Uncommon_Use;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=TIBETAN MARK TSA -PHRU
# Paired punctuation
-cp;0F3A;-Alpha;bc=ON;Bidi_M;bmg=0F3B;bpb=0F3B;bpt=o;gc=Ps;-IDC;InSC=Other;lb=OP;na=TIBETAN MARK GUG RTAGS GYON;SB=CL;WB=XX;-XIDC
-cp;0F3B;-Alpha;bc=ON;Bidi_M;bmg=0F3A;bpb=0F3A;bpt=c;gc=Pe;-IDC;InSC=Other;lb=CL;na=TIBETAN MARK GUG RTAGS GYAS;SB=CL;WB=XX;-XIDC
-cp;0F3C;-Alpha;bc=ON;Bidi_M;bmg=0F3D;bpb=0F3D;bpt=o;gc=Ps;-IDC;InSC=Other;lb=OP;na=TIBETAN MARK ANG KHANG GYON;SB=CL;WB=XX;-XIDC
-cp;0F3D;-Alpha;bc=ON;Bidi_M;bmg=0F3C;bpb=0F3C;bpt=c;gc=Pe;-IDC;InSC=Other;lb=CL;na=TIBETAN MARK ANG KHANG GYAS;SB=CL;WB=XX;-XIDC
+cp;0F3A;-Alpha;bc=ON;Bidi_M;bmg=0F3B;bpb=0F3B;bpt=o;gc=Ps;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=OP;na=TIBETAN MARK GUG RTAGS GYON;SB=CL;WB=XX;-XIDC
+cp;0F3B;-Alpha;bc=ON;Bidi_M;bmg=0F3A;bpb=0F3A;bpt=c;gc=Pe;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=CL;na=TIBETAN MARK GUG RTAGS GYAS;SB=CL;WB=XX;-XIDC
+cp;0F3C;-Alpha;bc=ON;Bidi_M;bmg=0F3D;bpb=0F3D;bpt=o;gc=Ps;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=OP;na=TIBETAN MARK ANG KHANG GYON;SB=CL;WB=XX;-XIDC
+cp;0F3D;-Alpha;bc=ON;Bidi_M;bmg=0F3C;bpb=0F3C;bpt=c;gc=Pe;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=CL;na=TIBETAN MARK ANG KHANG GYAS;SB=CL;WB=XX;-XIDC
# Astrological signs
cp;0F3E;-Alpha;Dia;gc=Mc;GCB=SM;InPC=Right;InSC=Other;lb=CM;na=TIBETAN SIGN YAR TSHES
cp;0F3F;-Alpha;Dia;gc=Mc;GCB=SM;InPC=Left;InSC=Other;lb=CM;na=TIBETAN SIGN MAR TSHES
@@ -5394,7 +5411,7 @@ cp;0F3F;-Alpha;Dia;gc=Mc;GCB=SM;InPC=Left;InSC=Other;lb=CM;na=TIBETAN SIGN MAR T
cp;0F40;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KA;SB=LE;WB=LE;XIDS
cp;0F41;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KHA;SB=LE;WB=LE;XIDS
cp;0F42;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER GA;SB=LE;WB=LE;XIDS
-cp;0F43;Comp_Ex;CWKCF;dm=0F42 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER GHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F42 0FB7;NFKC_QC=N;NFKC_SCF=0F42 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F43;Comp_Ex;CWKCF;dm=0F42 0FB7;dt=Can;gc=Lo;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;IDS;InSC=Consonant;na=TIBETAN LETTER GHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F42 0FB7;NFKC_QC=N;NFKC_SCF=0F42 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F44;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER NGA;SB=LE;WB=LE;XIDS
cp;0F45;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER CA;SB=LE;WB=LE;XIDS
cp;0F46;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER CHA;SB=LE;WB=LE;XIDS
@@ -5404,22 +5421,22 @@ cp;0F49;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER NYA;SB=LE;WB=LE;XIDS
cp;0F4A;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TTA;SB=LE;WB=LE;XIDS
cp;0F4B;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TTHA;SB=LE;WB=LE;XIDS
cp;0F4C;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DDA;SB=LE;WB=LE;XIDS
-cp;0F4D;Comp_Ex;CWKCF;dm=0F4C 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F4C 0FB7;NFKC_QC=N;NFKC_SCF=0F4C 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F4D;Comp_Ex;CWKCF;dm=0F4C 0FB7;dt=Can;gc=Lo;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;IDS;InSC=Consonant;na=TIBETAN LETTER DDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F4C 0FB7;NFKC_QC=N;NFKC_SCF=0F4C 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F4E;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER NNA;SB=LE;WB=LE;XIDS
cp;0F4F;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TA;SB=LE;WB=LE;XIDS
cp;0F50;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER THA;SB=LE;WB=LE;XIDS
cp;0F51;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DA;SB=LE;WB=LE;XIDS
-cp;0F52;Comp_Ex;CWKCF;dm=0F51 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F51 0FB7;NFKC_QC=N;NFKC_SCF=0F51 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F52;Comp_Ex;CWKCF;dm=0F51 0FB7;dt=Can;gc=Lo;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;IDS;InSC=Consonant;na=TIBETAN LETTER DHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F51 0FB7;NFKC_QC=N;NFKC_SCF=0F51 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F53;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER NA;SB=LE;WB=LE;XIDS
cp;0F54;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER PA;SB=LE;WB=LE;XIDS
cp;0F55;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER PHA;SB=LE;WB=LE;XIDS
cp;0F56;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER BA;SB=LE;WB=LE;XIDS
-cp;0F57;Comp_Ex;CWKCF;dm=0F56 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER BHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F56 0FB7;NFKC_QC=N;NFKC_SCF=0F56 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F57;Comp_Ex;CWKCF;dm=0F56 0FB7;dt=Can;gc=Lo;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;IDS;InSC=Consonant;na=TIBETAN LETTER BHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F56 0FB7;NFKC_QC=N;NFKC_SCF=0F56 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F58;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER MA;SB=LE;WB=LE;XIDS
cp;0F59;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TSA;SB=LE;WB=LE;XIDS
cp;0F5A;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TSHA;SB=LE;WB=LE;XIDS
cp;0F5B;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DZA;SB=LE;WB=LE;XIDS
-cp;0F5C;Comp_Ex;CWKCF;dm=0F5B 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DZHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F5B 0FB7;NFKC_QC=N;NFKC_SCF=0F5B 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F5C;Comp_Ex;CWKCF;dm=0F5B 0FB7;dt=Can;gc=Lo;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;IDS;InSC=Consonant;na=TIBETAN LETTER DZHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F5B 0FB7;NFKC_QC=N;NFKC_SCF=0F5B 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F5D;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER WA;SB=LE;WB=LE;XIDS
cp;0F5E;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER ZHA;SB=LE;WB=LE;XIDS
cp;0F5F;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER ZA;SB=LE;WB=LE;XIDS
@@ -5432,7 +5449,7 @@ cp;0F65;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER SSA;SB=LE;WB=LE;XIDS
cp;0F66;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER SA;SB=LE;WB=LE;XIDS
cp;0F67;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER HA;SB=LE;WB=LE;XIDS
cp;0F68;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER A;SB=LE;WB=LE;XIDS
-cp;0F69;Comp_Ex;CWKCF;dm=0F40 0FB5;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KSSA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F40 0FB5;NFKC_QC=N;NFKC_SCF=0F40 0FB5;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F69;Comp_Ex;CWKCF;dm=0F40 0FB5;dt=Can;gc=Lo;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;IDS;InSC=Consonant;na=TIBETAN LETTER KSSA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F40 0FB5;NFKC_QC=N;NFKC_SCF=0F40 0FB5;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F6A;age=3.0;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER FIXED-FORM RA;SB=LE;WB=LE;XIDS
# Extensions for Balti
cp;0F6B;age=5.1;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KKA;SB=LE;WB=LE;XIDS
@@ -5441,13 +5458,13 @@ unassigned;0F6D..0F70
# Dependent vowel signs
cp;0F71;bc=NSM;ccc=129;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN AA
cp;0F72;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN I
-cp;0F73;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F72;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN II;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F72;NFKC_QC=N;NFKC_SCF=0F71 0F72;NFKD_QC=N
+cp;0F73;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F72;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN II;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F72;NFKC_QC=N;NFKC_SCF=0F71 0F72;NFKD_QC=N
cp;0F74;bc=NSM;ccc=132;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN U
-cp;0F75;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F74;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN UU;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F74;NFKC_QC=N;NFKC_SCF=0F71 0F74;NFKD_QC=N
-cp;0F76;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FB2 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC R;NFC_QC=N;NFD_QC=N;NFKC_CF=0FB2 0F80;NFKC_QC=N;NFKC_SCF=0FB2 0F80;NFKD_QC=N
-cp;0F77;bc=NSM;CI;CWKCF;Dep;dm=0FB2 0F81;dt=Com;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC RR;NFKC_CF=0FB2 0F71 0F80;NFKC_QC=N;NFKC_SCF=0FB2 0F71 0F80;NFKD_QC=N
-cp;0F78;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FB3 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC L;NFC_QC=N;NFD_QC=N;NFKC_CF=0FB3 0F80;NFKC_QC=N;NFKC_SCF=0FB3 0F80;NFKD_QC=N
-cp;0F79;bc=NSM;CI;CWKCF;Dep;dm=0FB3 0F81;dt=Com;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC LL;NFKC_CF=0FB3 0F71 0F80;NFKC_QC=N;NFKC_SCF=0FB3 0F71 0F80;NFKD_QC=N
+cp;0F75;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F74;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN UU;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F74;NFKC_QC=N;NFKC_SCF=0F71 0F74;NFKD_QC=N
+cp;0F76;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FB2 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC R;NFC_QC=N;NFD_QC=N;NFKC_CF=0FB2 0F80;NFKC_QC=N;NFKC_SCF=0FB2 0F80;NFKD_QC=N
+cp;0F77;bc=NSM;CI;CWKCF;Dep;dm=0FB2 0F81;dt=Com;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Deprecated;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC RR;NFKC_CF=0FB2 0F71 0F80;NFKC_QC=N;NFKC_SCF=0FB2 0F71 0F80;NFKD_QC=N
+cp;0F78;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FB3 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC L;NFC_QC=N;NFD_QC=N;NFKC_CF=0FB3 0F80;NFKC_QC=N;NFKC_SCF=0FB3 0F80;NFKD_QC=N
+cp;0F79;bc=NSM;CI;CWKCF;Dep;dm=0FB3 0F81;dt=Com;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Deprecated;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC LL;NFKC_CF=0FB3 0F71 0F80;NFKC_QC=N;NFKC_SCF=0FB3 0F71 0F80;NFKD_QC=N
cp;0F7A;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN E
cp;0F7B;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN EE
cp;0F7C;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN O
@@ -5457,12 +5474,12 @@ cp;0F7E;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIBET
cp;0F7F;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=BA;na=TIBETAN SIGN RNAM BCAD
# Dependent vowel signs
cp;0F80;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN REVERSED I
-cp;0F81;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN REVERSED II;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F80;NFKC_QC=N;NFKC_SCF=0F71 0F80;NFKD_QC=N
+cp;0F81;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN REVERSED II;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F80;NFKC_QC=N;NFKC_SCF=0F71 0F80;NFKD_QC=N
# Marks and signs
cp;0F82;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIBETAN SIGN NYI ZLA NAA DA
cp;0F83;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIBETAN SIGN SNA LDAN
cp;0F84;-Alpha;bc=NSM;ccc=9;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=TIBETAN MARK HALANTA
-cp;0F85;-Alpha;gc=Po;-IDC;InSC=Avagraha;lb=BA;na=TIBETAN MARK PALUTA;SB=XX;WB=XX;-XIDC
+cp;0F85;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Avagraha;lb=BA;na=TIBETAN MARK PALUTA;SB=XX;WB=XX;-XIDC
cp;0F86;-Alpha;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=TIBETAN SIGN LCI RTAGS
cp;0F87;-Alpha;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=TIBETAN SIGN YANG RTAGS
# Transliteration head letters
@@ -5479,7 +5496,7 @@ cp;0F8F;age=6.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBET
cp;0F90;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER KA
cp;0F91;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER KHA
cp;0F92;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER GA
-cp;0F93;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F92 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER GHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F92 0FB7;NFKC_QC=N;NFKC_SCF=0F92 0FB7;NFKD_QC=N
+cp;0F93;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F92 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER GHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F92 0FB7;NFKC_QC=N;NFKC_SCF=0F92 0FB7;NFKD_QC=N
cp;0F94;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER NGA
cp;0F95;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER CA
cp;0F96;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER CHA
@@ -5489,22 +5506,22 @@ cp;0F99;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJO
cp;0F9A;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TTA
cp;0F9B;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TTHA
cp;0F9C;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DDA
-cp;0F9D;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F9C 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F9C 0FB7;NFKC_QC=N;NFKC_SCF=0F9C 0FB7;NFKD_QC=N
+cp;0F9D;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F9C 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F9C 0FB7;NFKC_QC=N;NFKC_SCF=0F9C 0FB7;NFKD_QC=N
cp;0F9E;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER NNA
cp;0F9F;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TA
cp;0FA0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER THA
cp;0FA1;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DA
-cp;0FA2;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FA1 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FA1 0FB7;NFKC_QC=N;NFKC_SCF=0FA1 0FB7;NFKD_QC=N
+cp;0FA2;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FA1 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FA1 0FB7;NFKC_QC=N;NFKC_SCF=0FA1 0FB7;NFKD_QC=N
cp;0FA3;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER NA
cp;0FA4;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER PA
cp;0FA5;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER PHA
cp;0FA6;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER BA
-cp;0FA7;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FA6 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER BHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FA6 0FB7;NFKC_QC=N;NFKC_SCF=0FA6 0FB7;NFKD_QC=N
+cp;0FA7;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FA6 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER BHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FA6 0FB7;NFKC_QC=N;NFKC_SCF=0FA6 0FB7;NFKD_QC=N
cp;0FA8;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER MA
cp;0FA9;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TSA
cp;0FAA;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TSHA
cp;0FAB;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DZA
-cp;0FAC;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FAB 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DZHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FAB 0FB7;NFKC_QC=N;NFKC_SCF=0FAB 0FB7;NFKD_QC=N
+cp;0FAC;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FAB 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DZHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FAB 0FB7;NFKC_QC=N;NFKC_SCF=0FAB 0FB7;NFKD_QC=N
cp;0FAD;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER WA
cp;0FAE;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER ZHA
cp;0FAF;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER ZA
@@ -5517,52 +5534,52 @@ cp;0FB5;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJO
cp;0FB6;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER SA
cp;0FB7;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER HA
cp;0FB8;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER A
-cp;0FB9;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F90 0FB5;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER KSSA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F90 0FB5;NFKC_QC=N;NFKC_SCF=0F90 0FB5;NFKD_QC=N
+cp;0FB9;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F90 0FB5;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER KSSA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F90 0FB5;NFKC_QC=N;NFKC_SCF=0F90 0FB5;NFKD_QC=N
# Fixed-form subjoined consonants
cp;0FBA;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER FIXED-FORM WA
cp;0FBB;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER FIXED-FORM YA
cp;0FBC;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER FIXED-FORM RA
unassigned;0FBD
# Signs
-cp;0FBE;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;lb=BA;na=TIBETAN KU RU KHA;SB=XX;WB=XX;-XIDC
-cp;0FBF;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;lb=BA;na=TIBETAN KU RU KHA BZHI MIG CAN;SB=XX;WB=XX;-XIDC
+cp;0FBE;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BA;na=TIBETAN KU RU KHA;SB=XX;WB=XX;-XIDC
+cp;0FBF;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BA;na=TIBETAN KU RU KHA BZHI MIG CAN;SB=XX;WB=XX;-XIDC
# Cantillation signs
-cp;0FC0;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN CANTILLATION SIGN HEAVY BEAT;SB=XX;WB=XX;-XIDC
-cp;0FC1;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN CANTILLATION SIGN LIGHT BEAT;SB=XX;WB=XX;-XIDC
-cp;0FC2;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN CANTILLATION SIGN CANG TE-U;SB=XX;WB=XX;-XIDC
-cp;0FC3;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN CANTILLATION SIGN SBUB -CHAL;SB=XX;WB=XX;-XIDC
+cp;0FC0;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN CANTILLATION SIGN HEAVY BEAT;SB=XX;WB=XX;-XIDC
+cp;0FC1;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN CANTILLATION SIGN LIGHT BEAT;SB=XX;WB=XX;-XIDC
+cp;0FC2;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN CANTILLATION SIGN CANG TE-U;SB=XX;WB=XX;-XIDC
+cp;0FC3;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN CANTILLATION SIGN SBUB -CHAL;SB=XX;WB=XX;-XIDC
# Symbols
-cp;0FC4;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL DRIL BU;SB=XX;WB=XX;-XIDC
-cp;0FC5;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL RDO RJE;SB=XX;WB=XX;-XIDC
+cp;0FC4;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SYMBOL DRIL BU;SB=XX;WB=XX;-XIDC
+cp;0FC5;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SYMBOL RDO RJE;SB=XX;WB=XX;-XIDC
cp;0FC6;age=3.0;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN SYMBOL PADMA GDAN
-cp;0FC7;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL RDO RJE RGYA GRAM;SB=XX;WB=XX;-XIDC
-cp;0FC8;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL PHUR PA;SB=XX;WB=XX;-XIDC
-cp;0FC9;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL NOR BU;SB=XX;WB=XX;-XIDC
-cp;0FCA;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL NOR BU NYIS -KHYIL;SB=XX;WB=XX;-XIDC
-cp;0FCB;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL NOR BU GSUM -KHYIL;SB=XX;WB=XX;-XIDC
-cp;0FCC;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL NOR BU BZHI -KHYIL;SB=XX;WB=XX;-XIDC
+cp;0FC7;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SYMBOL RDO RJE RGYA GRAM;SB=XX;WB=XX;-XIDC
+cp;0FC8;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SYMBOL PHUR PA;SB=XX;WB=XX;-XIDC
+cp;0FC9;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SYMBOL NOR BU;SB=XX;WB=XX;-XIDC
+cp;0FCA;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SYMBOL NOR BU NYIS -KHYIL;SB=XX;WB=XX;-XIDC
+cp;0FCB;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SYMBOL NOR BU GSUM -KHYIL;SB=XX;WB=XX;-XIDC
+cp;0FCC;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SYMBOL NOR BU BZHI -KHYIL;SB=XX;WB=XX;-XIDC
unassigned;0FCD
# Astrological signs
-cp;0FCE;age=5.1;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL NAG RDEL DKAR;SB=XX;WB=XX;-XIDC
-cp;0FCF;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL NAG GSUM;SB=XX;WB=XX;-XIDC
+cp;0FCE;age=5.1;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SIGN RDEL NAG RDEL DKAR;SB=XX;WB=XX;-XIDC
+cp;0FCF;age=3.0;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN SIGN RDEL NAG GSUM;SB=XX;WB=XX;-XIDC
# Marks
-cp;0FD0;age=4.1;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Name_Alias=correction=TIBETAN MARK BKA- SHOG GI MGO RGYAN;SB=XX;WB=XX;-XIDC
-cp;0FD1;age=4.1;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK MNYAM YIG GI MGO RGYAN;SB=XX;WB=XX;-XIDC
-cp;0FD2;age=5.1;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=TIBETAN MARK NYIS TSHEG;SB=XX;WB=XX;-XIDC
+cp;0FD0;age=4.1;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Name_Alias=correction=TIBETAN MARK BKA- SHOG GI MGO RGYAN;SB=XX;WB=XX;-XIDC
+cp;0FD1;age=4.1;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK MNYAM YIG GI MGO RGYAN;SB=XX;WB=XX;-XIDC
+cp;0FD2;age=5.1;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BA;na=TIBETAN MARK NYIS TSHEG;SB=XX;WB=XX;-XIDC
# Head marks
-cp;0FD3;age=5.1;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;SB=XX;WB=XX;-XIDC
-cp;0FD4;age=5.1;-Alpha;gc=Po;-IDC;InSC=Other;na=TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;SB=XX;WB=XX;-XIDC
+cp;0FD3;age=5.1;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BB;na=TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;SB=XX;WB=XX;-XIDC
+cp;0FD4;age=5.1;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;SB=XX;WB=XX;-XIDC
# Religious symbols
-cp;0FD5;age=5.2;-Alpha;gc=So;-IDC;InSC=Other;na=RIGHT-FACING SVASTI SIGN;SB=XX;sc=Zyyy;WB=XX;-XIDC
-cp;0FD6;age=5.2;-Alpha;gc=So;-IDC;InSC=Other;na=LEFT-FACING SVASTI SIGN;SB=XX;sc=Zyyy;WB=XX;-XIDC
-cp;0FD7;age=5.2;-Alpha;gc=So;-IDC;InSC=Other;na=RIGHT-FACING SVASTI SIGN WITH DOTS;SB=XX;sc=Zyyy;WB=XX;-XIDC
-cp;0FD8;age=5.2;-Alpha;gc=So;-IDC;InSC=Other;na=LEFT-FACING SVASTI SIGN WITH DOTS;SB=XX;sc=Zyyy;WB=XX;-XIDC
+cp;0FD5;age=5.2;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=RIGHT-FACING SVASTI SIGN;SB=XX;sc=Zyyy;WB=XX;-XIDC
+cp;0FD6;age=5.2;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=LEFT-FACING SVASTI SIGN;SB=XX;sc=Zyyy;WB=XX;-XIDC
+cp;0FD7;age=5.2;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=RIGHT-FACING SVASTI SIGN WITH DOTS;SB=XX;sc=Zyyy;WB=XX;-XIDC
+cp;0FD8;age=5.2;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=LEFT-FACING SVASTI SIGN WITH DOTS;SB=XX;sc=Zyyy;WB=XX;-XIDC
# Annotation marks
-cp;0FD9;age=6.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=GL;na=TIBETAN MARK LEADING MCHAN RTAGS;SB=XX;WB=XX;-XIDC
-cp;0FDA;age=6.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=GL;na=TIBETAN MARK TRAILING MCHAN RTAGS;SB=XX;WB=XX;-XIDC
+cp;0FD9;age=6.0;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=GL;na=TIBETAN MARK LEADING MCHAN RTAGS;SB=XX;WB=XX;-XIDC
+cp;0FDA;age=6.0;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=GL;na=TIBETAN MARK TRAILING MCHAN RTAGS;SB=XX;WB=XX;-XIDC
unassigned;0FDB..0FFF
-block;1000..109F;age=3.0;Alpha;blk=Myanmar;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=SA;SB=LE;sc=Mymr;WB=Extend;XIDC
+block;1000..109F;age=3.0;Alpha;blk=Myanmar;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;InSC=Consonant;lb=SA;SB=LE;sc=Mymr;WB=Extend;XIDC
# 1000..109F Myanmar
# Consonants
cp;1000;IDS;na=MYANMAR LETTER KA;WB=XX;XIDS
@@ -5647,13 +5664,13 @@ cp;1047;-Alpha;gc=Nd;InSC=Number;lb=NU;na=MYANMAR DIGIT SEVEN;nt=De;nv=7;SB=NU;s
cp;1048;-Alpha;gc=Nd;InSC=Number;lb=NU;na=MYANMAR DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Cakm Mymr Tale;WB=NU
cp;1049;-Alpha;gc=Nd;InSC=Number;lb=NU;na=MYANMAR DIGIT NINE;nt=De;nv=9;SB=NU;scx=Cakm Mymr Tale;WB=NU
# Punctuation
-cp;104A;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=MYANMAR SIGN LITTLE SECTION;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;104B;-Alpha;gc=Po;-IDC;InSC=Consonant_Placeholder;lb=BA;na=MYANMAR SIGN SECTION;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;104A;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BA;na=MYANMAR SIGN LITTLE SECTION;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;104B;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Consonant_Placeholder;lb=BA;na=MYANMAR SIGN SECTION;SB=ST;STerm;Term;WB=XX;-XIDC
# Various signs
-cp;104C;-Alpha;gc=Po;-IDC;InSC=Other;lb=AL;na=MYANMAR SYMBOL LOCATIVE;SB=XX;WB=XX;-XIDC
-cp;104D;-Alpha;gc=Po;-IDC;InSC=Other;lb=AL;na=MYANMAR SYMBOL COMPLETED;SB=XX;WB=XX;-XIDC
-cp;104E;-Alpha;gc=Po;-IDC;InSC=Consonant_Placeholder;lb=AL;na=MYANMAR SYMBOL AFOREMENTIONED;SB=XX;WB=XX;-XIDC
-cp;104F;-Alpha;gc=Po;-IDC;InSC=Other;lb=AL;na=MYANMAR SYMBOL GENITIVE;SB=XX;WB=XX;-XIDC
+cp;104C;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=MYANMAR SYMBOL LOCATIVE;SB=XX;WB=XX;-XIDC
+cp;104D;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=MYANMAR SYMBOL COMPLETED;SB=XX;WB=XX;-XIDC
+cp;104E;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Consonant_Placeholder;lb=AL;na=MYANMAR SYMBOL AFOREMENTIONED;SB=XX;WB=XX;-XIDC
+cp;104F;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=MYANMAR SYMBOL GENITIVE;SB=XX;WB=XX;-XIDC
# Pali and Sanskrit extensions
cp;1050;IDS;na=MYANMAR LETTER SHA;WB=XX;XIDS
cp;1051;IDS;na=MYANMAR LETTER SSA;WB=XX;XIDS
@@ -5745,114 +5762,114 @@ cp;109B;age=5.2;Dia;gc=Mc;InPC=Right;InSC=Tone_Mark;na=MYANMAR SIGN KHAMTI TONE-
cp;109C;age=5.2;gc=Mc;InPC=Right;InSC=Vowel_Dependent;na=MYANMAR VOWEL SIGN AITON A;SB=EX
cp;109D;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;na=MYANMAR VOWEL SIGN AITON AI;SB=EX
# Shan symbols
-cp;109E;age=5.1;-Alpha;gc=So;-IDC;InSC=Other;na=MYANMAR SYMBOL SHAN ONE;SB=XX;WB=XX;-XIDC
-cp;109F;age=5.1;-Alpha;gc=So;-IDC;InSC=Other;na=MYANMAR SYMBOL SHAN EXCLAMATION;SB=XX;WB=XX;-XIDC
+cp;109E;age=5.1;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=MYANMAR SYMBOL SHAN ONE;SB=XX;WB=XX;-XIDC
+cp;109F;age=5.1;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;na=MYANMAR SYMBOL SHAN EXCLAMATION;SB=XX;WB=XX;-XIDC
-block;10A0..10FF;age=1.1;Alpha;blk=Georgian;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Geor;WB=LE;XIDC;XIDS
+block;10A0..10FF;age=1.1;Alpha;blk=Georgian;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Recommended;IDS;lb=AL;SB=LE;sc=Geor;WB=LE;XIDC;XIDS
# 10A0..10FF Georgian
# Capital letters (Khutsuri)
-cp;10A0;cf=2D00;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER AN;NFKC_CF=2D00;NFKC_SCF=2D00;SB=UP;scf=2D00;slc=2D00;Upper
-cp;10A1;cf=2D01;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER BAN;NFKC_CF=2D01;NFKC_SCF=2D01;SB=UP;scf=2D01;slc=2D01;Upper
-cp;10A2;cf=2D02;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER GAN;NFKC_CF=2D02;NFKC_SCF=2D02;SB=UP;scf=2D02;slc=2D02;Upper
-cp;10A3;cf=2D03;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER DON;NFKC_CF=2D03;NFKC_SCF=2D03;SB=UP;scf=2D03;slc=2D03;Upper
-cp;10A4;cf=2D04;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER EN;NFKC_CF=2D04;NFKC_SCF=2D04;SB=UP;scf=2D04;slc=2D04;Upper
-cp;10A5;cf=2D05;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER VIN;NFKC_CF=2D05;NFKC_SCF=2D05;SB=UP;scf=2D05;slc=2D05;Upper
-cp;10A6;cf=2D06;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ZEN;NFKC_CF=2D06;NFKC_SCF=2D06;SB=UP;scf=2D06;slc=2D06;Upper
-cp;10A7;cf=2D07;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER TAN;NFKC_CF=2D07;NFKC_SCF=2D07;SB=UP;scf=2D07;slc=2D07;Upper
-cp;10A8;cf=2D08;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER IN;NFKC_CF=2D08;NFKC_SCF=2D08;SB=UP;scf=2D08;slc=2D08;Upper
-cp;10A9;cf=2D09;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER KAN;NFKC_CF=2D09;NFKC_SCF=2D09;SB=UP;scf=2D09;slc=2D09;Upper
-cp;10AA;cf=2D0A;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER LAS;NFKC_CF=2D0A;NFKC_SCF=2D0A;SB=UP;scf=2D0A;slc=2D0A;Upper
-cp;10AB;cf=2D0B;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER MAN;NFKC_CF=2D0B;NFKC_SCF=2D0B;SB=UP;scf=2D0B;slc=2D0B;Upper
-cp;10AC;cf=2D0C;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER NAR;NFKC_CF=2D0C;NFKC_SCF=2D0C;SB=UP;scf=2D0C;slc=2D0C;Upper
-cp;10AD;cf=2D0D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ON;NFKC_CF=2D0D;NFKC_SCF=2D0D;SB=UP;scf=2D0D;slc=2D0D;Upper
-cp;10AE;cf=2D0E;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER PAR;NFKC_CF=2D0E;NFKC_SCF=2D0E;SB=UP;scf=2D0E;slc=2D0E;Upper
-cp;10AF;cf=2D0F;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ZHAR;NFKC_CF=2D0F;NFKC_SCF=2D0F;SB=UP;scf=2D0F;slc=2D0F;Upper
-cp;10B0;cf=2D10;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER RAE;NFKC_CF=2D10;NFKC_SCF=2D10;SB=UP;scf=2D10;slc=2D10;Upper
-cp;10B1;cf=2D11;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER SAN;NFKC_CF=2D11;NFKC_SCF=2D11;SB=UP;scf=2D11;slc=2D11;Upper
-cp;10B2;cf=2D12;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER TAR;NFKC_CF=2D12;NFKC_SCF=2D12;SB=UP;scf=2D12;slc=2D12;Upper
-cp;10B3;cf=2D13;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER UN;NFKC_CF=2D13;NFKC_SCF=2D13;SB=UP;scf=2D13;slc=2D13;Upper
-cp;10B4;cf=2D14;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER PHAR;NFKC_CF=2D14;NFKC_SCF=2D14;SB=UP;scf=2D14;slc=2D14;Upper
-cp;10B5;cf=2D15;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER KHAR;NFKC_CF=2D15;NFKC_SCF=2D15;SB=UP;scf=2D15;slc=2D15;Upper
-cp;10B6;cf=2D16;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER GHAN;NFKC_CF=2D16;NFKC_SCF=2D16;SB=UP;scf=2D16;slc=2D16;Upper
-cp;10B7;cf=2D17;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER QAR;NFKC_CF=2D17;NFKC_SCF=2D17;SB=UP;scf=2D17;slc=2D17;Upper
-cp;10B8;cf=2D18;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER SHIN;NFKC_CF=2D18;NFKC_SCF=2D18;SB=UP;scf=2D18;slc=2D18;Upper
-cp;10B9;cf=2D19;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CHIN;NFKC_CF=2D19;NFKC_SCF=2D19;SB=UP;scf=2D19;slc=2D19;Upper
-cp;10BA;cf=2D1A;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CAN;NFKC_CF=2D1A;NFKC_SCF=2D1A;SB=UP;scf=2D1A;slc=2D1A;Upper
-cp;10BB;cf=2D1B;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER JIL;NFKC_CF=2D1B;NFKC_SCF=2D1B;SB=UP;scf=2D1B;slc=2D1B;Upper
-cp;10BC;cf=2D1C;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CIL;NFKC_CF=2D1C;NFKC_SCF=2D1C;SB=UP;scf=2D1C;slc=2D1C;Upper
-cp;10BD;cf=2D1D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CHAR;NFKC_CF=2D1D;NFKC_SCF=2D1D;SB=UP;scf=2D1D;slc=2D1D;Upper
-cp;10BE;cf=2D1E;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER XAN;NFKC_CF=2D1E;NFKC_SCF=2D1E;SB=UP;scf=2D1E;slc=2D1E;Upper
-cp;10BF;cf=2D1F;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER JHAN;NFKC_CF=2D1F;NFKC_SCF=2D1F;SB=UP;scf=2D1F;slc=2D1F;Upper
-cp;10C0;cf=2D20;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HAE;NFKC_CF=2D20;NFKC_SCF=2D20;SB=UP;scf=2D20;slc=2D20;Upper
-cp;10C1;cf=2D21;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HE;NFKC_CF=2D21;NFKC_SCF=2D21;SB=UP;scf=2D21;slc=2D21;Upper
-cp;10C2;cf=2D22;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HIE;NFKC_CF=2D22;NFKC_SCF=2D22;SB=UP;scf=2D22;slc=2D22;Upper
-cp;10C3;cf=2D23;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER WE;NFKC_CF=2D23;NFKC_SCF=2D23;SB=UP;scf=2D23;slc=2D23;Upper
-cp;10C4;cf=2D24;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HAR;NFKC_CF=2D24;NFKC_SCF=2D24;SB=UP;scf=2D24;slc=2D24;Upper
-cp;10C5;cf=2D25;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HOE;NFKC_CF=2D25;NFKC_SCF=2D25;SB=UP;scf=2D25;slc=2D25;Upper
+cp;10A0;cf=2D00;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER AN;NFKC_CF=2D00;NFKC_SCF=2D00;SB=UP;scf=2D00;slc=2D00;Upper
+cp;10A1;cf=2D01;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER BAN;NFKC_CF=2D01;NFKC_SCF=2D01;SB=UP;scf=2D01;slc=2D01;Upper
+cp;10A2;cf=2D02;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER GAN;NFKC_CF=2D02;NFKC_SCF=2D02;SB=UP;scf=2D02;slc=2D02;Upper
+cp;10A3;cf=2D03;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER DON;NFKC_CF=2D03;NFKC_SCF=2D03;SB=UP;scf=2D03;slc=2D03;Upper
+cp;10A4;cf=2D04;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER EN;NFKC_CF=2D04;NFKC_SCF=2D04;SB=UP;scf=2D04;slc=2D04;Upper
+cp;10A5;cf=2D05;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER VIN;NFKC_CF=2D05;NFKC_SCF=2D05;SB=UP;scf=2D05;slc=2D05;Upper
+cp;10A6;cf=2D06;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER ZEN;NFKC_CF=2D06;NFKC_SCF=2D06;SB=UP;scf=2D06;slc=2D06;Upper
+cp;10A7;cf=2D07;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER TAN;NFKC_CF=2D07;NFKC_SCF=2D07;SB=UP;scf=2D07;slc=2D07;Upper
+cp;10A8;cf=2D08;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER IN;NFKC_CF=2D08;NFKC_SCF=2D08;SB=UP;scf=2D08;slc=2D08;Upper
+cp;10A9;cf=2D09;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER KAN;NFKC_CF=2D09;NFKC_SCF=2D09;SB=UP;scf=2D09;slc=2D09;Upper
+cp;10AA;cf=2D0A;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER LAS;NFKC_CF=2D0A;NFKC_SCF=2D0A;SB=UP;scf=2D0A;slc=2D0A;Upper
+cp;10AB;cf=2D0B;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER MAN;NFKC_CF=2D0B;NFKC_SCF=2D0B;SB=UP;scf=2D0B;slc=2D0B;Upper
+cp;10AC;cf=2D0C;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER NAR;NFKC_CF=2D0C;NFKC_SCF=2D0C;SB=UP;scf=2D0C;slc=2D0C;Upper
+cp;10AD;cf=2D0D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER ON;NFKC_CF=2D0D;NFKC_SCF=2D0D;SB=UP;scf=2D0D;slc=2D0D;Upper
+cp;10AE;cf=2D0E;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER PAR;NFKC_CF=2D0E;NFKC_SCF=2D0E;SB=UP;scf=2D0E;slc=2D0E;Upper
+cp;10AF;cf=2D0F;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER ZHAR;NFKC_CF=2D0F;NFKC_SCF=2D0F;SB=UP;scf=2D0F;slc=2D0F;Upper
+cp;10B0;cf=2D10;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER RAE;NFKC_CF=2D10;NFKC_SCF=2D10;SB=UP;scf=2D10;slc=2D10;Upper
+cp;10B1;cf=2D11;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER SAN;NFKC_CF=2D11;NFKC_SCF=2D11;SB=UP;scf=2D11;slc=2D11;Upper
+cp;10B2;cf=2D12;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER TAR;NFKC_CF=2D12;NFKC_SCF=2D12;SB=UP;scf=2D12;slc=2D12;Upper
+cp;10B3;cf=2D13;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER UN;NFKC_CF=2D13;NFKC_SCF=2D13;SB=UP;scf=2D13;slc=2D13;Upper
+cp;10B4;cf=2D14;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER PHAR;NFKC_CF=2D14;NFKC_SCF=2D14;SB=UP;scf=2D14;slc=2D14;Upper
+cp;10B5;cf=2D15;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER KHAR;NFKC_CF=2D15;NFKC_SCF=2D15;SB=UP;scf=2D15;slc=2D15;Upper
+cp;10B6;cf=2D16;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER GHAN;NFKC_CF=2D16;NFKC_SCF=2D16;SB=UP;scf=2D16;slc=2D16;Upper
+cp;10B7;cf=2D17;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER QAR;NFKC_CF=2D17;NFKC_SCF=2D17;SB=UP;scf=2D17;slc=2D17;Upper
+cp;10B8;cf=2D18;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER SHIN;NFKC_CF=2D18;NFKC_SCF=2D18;SB=UP;scf=2D18;slc=2D18;Upper
+cp;10B9;cf=2D19;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER CHIN;NFKC_CF=2D19;NFKC_SCF=2D19;SB=UP;scf=2D19;slc=2D19;Upper
+cp;10BA;cf=2D1A;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER CAN;NFKC_CF=2D1A;NFKC_SCF=2D1A;SB=UP;scf=2D1A;slc=2D1A;Upper
+cp;10BB;cf=2D1B;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER JIL;NFKC_CF=2D1B;NFKC_SCF=2D1B;SB=UP;scf=2D1B;slc=2D1B;Upper
+cp;10BC;cf=2D1C;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER CIL;NFKC_CF=2D1C;NFKC_SCF=2D1C;SB=UP;scf=2D1C;slc=2D1C;Upper
+cp;10BD;cf=2D1D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER CHAR;NFKC_CF=2D1D;NFKC_SCF=2D1D;SB=UP;scf=2D1D;slc=2D1D;Upper
+cp;10BE;cf=2D1E;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER XAN;NFKC_CF=2D1E;NFKC_SCF=2D1E;SB=UP;scf=2D1E;slc=2D1E;Upper
+cp;10BF;cf=2D1F;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER JHAN;NFKC_CF=2D1F;NFKC_SCF=2D1F;SB=UP;scf=2D1F;slc=2D1F;Upper
+cp;10C0;cf=2D20;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER HAE;NFKC_CF=2D20;NFKC_SCF=2D20;SB=UP;scf=2D20;slc=2D20;Upper
+cp;10C1;cf=2D21;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER HE;NFKC_CF=2D21;NFKC_SCF=2D21;SB=UP;scf=2D21;slc=2D21;Upper
+cp;10C2;cf=2D22;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER HIE;NFKC_CF=2D22;NFKC_SCF=2D22;SB=UP;scf=2D22;slc=2D22;Upper
+cp;10C3;cf=2D23;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER WE;NFKC_CF=2D23;NFKC_SCF=2D23;SB=UP;scf=2D23;slc=2D23;Upper
+cp;10C4;cf=2D24;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER HAR;NFKC_CF=2D24;NFKC_SCF=2D24;SB=UP;scf=2D24;slc=2D24;Upper
+cp;10C5;cf=2D25;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=GEORGIAN CAPITAL LETTER HOE;NFKC_CF=2D25;NFKC_SCF=2D25;SB=UP;scf=2D25;slc=2D25;Upper
unassigned;10C6
# Additional letter
-cp;10C7;age=6.1;cf=2D27;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER YN;NFKC_CF=2D27;NFKC_SCF=2D27;SB=UP;scf=2D27;slc=2D27;Upper
+cp;10C7;age=6.1;cf=2D27;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;na=GEORGIAN CAPITAL LETTER YN;NFKC_CF=2D27;NFKC_SCF=2D27;SB=UP;scf=2D27;slc=2D27;Upper
unassigned;10C8..10CC
# Additional letter for Ossetian
-cp;10CD;age=6.1;cf=2D2D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER AEN;NFKC_CF=2D2D;NFKC_SCF=2D2D;SB=UP;scf=2D2D;slc=2D2D;Upper
+cp;10CD;age=6.1;cf=2D2D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;na=GEORGIAN CAPITAL LETTER AEN;NFKC_CF=2D2D;NFKC_SCF=2D2D;SB=UP;scf=2D2D;slc=2D2D;Upper
unassigned;10CE..10CF
# Mkhedruli
-cp;10D0;CWU;Lower;na=GEORGIAN LETTER AN;stc=10D0;suc=1C90
-cp;10D1;CWU;Lower;na=GEORGIAN LETTER BAN;stc=10D1;suc=1C91
-cp;10D2;CWU;Lower;na=GEORGIAN LETTER GAN;stc=10D2;suc=1C92
-cp;10D3;CWU;Lower;na=GEORGIAN LETTER DON;stc=10D3;suc=1C93
-cp;10D4;CWU;Lower;na=GEORGIAN LETTER EN;stc=10D4;suc=1C94
-cp;10D5;CWU;Lower;na=GEORGIAN LETTER VIN;stc=10D5;suc=1C95
-cp;10D6;CWU;Lower;na=GEORGIAN LETTER ZEN;stc=10D6;suc=1C96
-cp;10D7;CWU;Lower;na=GEORGIAN LETTER TAN;stc=10D7;suc=1C97
-cp;10D8;CWU;Lower;na=GEORGIAN LETTER IN;stc=10D8;suc=1C98
-cp;10D9;CWU;Lower;na=GEORGIAN LETTER KAN;stc=10D9;suc=1C99
-cp;10DA;CWU;Lower;na=GEORGIAN LETTER LAS;stc=10DA;suc=1C9A
-cp;10DB;CWU;Lower;na=GEORGIAN LETTER MAN;stc=10DB;suc=1C9B
-cp;10DC;CWU;Lower;na=GEORGIAN LETTER NAR;stc=10DC;suc=1C9C
-cp;10DD;CWU;Lower;na=GEORGIAN LETTER ON;stc=10DD;suc=1C9D
-cp;10DE;CWU;Lower;na=GEORGIAN LETTER PAR;stc=10DE;suc=1C9E
-cp;10DF;CWU;Lower;na=GEORGIAN LETTER ZHAR;stc=10DF;suc=1C9F
-cp;10E0;CWU;Lower;na=GEORGIAN LETTER RAE;stc=10E0;suc=1CA0
-cp;10E1;CWU;Lower;na=GEORGIAN LETTER SAN;stc=10E1;suc=1CA1
-cp;10E2;CWU;Lower;na=GEORGIAN LETTER TAR;stc=10E2;suc=1CA2
-cp;10E3;CWU;Lower;na=GEORGIAN LETTER UN;stc=10E3;suc=1CA3
-cp;10E4;CWU;Lower;na=GEORGIAN LETTER PHAR;stc=10E4;suc=1CA4
-cp;10E5;CWU;Lower;na=GEORGIAN LETTER KHAR;stc=10E5;suc=1CA5
-cp;10E6;CWU;Lower;na=GEORGIAN LETTER GHAN;stc=10E6;suc=1CA6
-cp;10E7;CWU;Lower;na=GEORGIAN LETTER QAR;stc=10E7;suc=1CA7
-cp;10E8;CWU;Lower;na=GEORGIAN LETTER SHIN;stc=10E8;suc=1CA8
-cp;10E9;CWU;Lower;na=GEORGIAN LETTER CHIN;stc=10E9;suc=1CA9
-cp;10EA;CWU;Lower;na=GEORGIAN LETTER CAN;stc=10EA;suc=1CAA
-cp;10EB;CWU;Lower;na=GEORGIAN LETTER JIL;stc=10EB;suc=1CAB
-cp;10EC;CWU;Lower;na=GEORGIAN LETTER CIL;stc=10EC;suc=1CAC
-cp;10ED;CWU;Lower;na=GEORGIAN LETTER CHAR;stc=10ED;suc=1CAD
-cp;10EE;CWU;Lower;na=GEORGIAN LETTER XAN;stc=10EE;suc=1CAE
-cp;10EF;CWU;Lower;na=GEORGIAN LETTER JHAN;stc=10EF;suc=1CAF
-cp;10F0;CWU;Lower;na=GEORGIAN LETTER HAE;stc=10F0;suc=1CB0
+cp;10D0;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER AN;stc=10D0;suc=1C90
+cp;10D1;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER BAN;stc=10D1;suc=1C91
+cp;10D2;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER GAN;stc=10D2;suc=1C92
+cp;10D3;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER DON;stc=10D3;suc=1C93
+cp;10D4;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER EN;stc=10D4;suc=1C94
+cp;10D5;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER VIN;stc=10D5;suc=1C95
+cp;10D6;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER ZEN;stc=10D6;suc=1C96
+cp;10D7;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER TAN;stc=10D7;suc=1C97
+cp;10D8;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER IN;stc=10D8;suc=1C98
+cp;10D9;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER KAN;stc=10D9;suc=1C99
+cp;10DA;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER LAS;stc=10DA;suc=1C9A
+cp;10DB;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER MAN;stc=10DB;suc=1C9B
+cp;10DC;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER NAR;stc=10DC;suc=1C9C
+cp;10DD;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER ON;stc=10DD;suc=1C9D
+cp;10DE;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER PAR;stc=10DE;suc=1C9E
+cp;10DF;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER ZHAR;stc=10DF;suc=1C9F
+cp;10E0;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER RAE;stc=10E0;suc=1CA0
+cp;10E1;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER SAN;stc=10E1;suc=1CA1
+cp;10E2;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER TAR;stc=10E2;suc=1CA2
+cp;10E3;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER UN;stc=10E3;suc=1CA3
+cp;10E4;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER PHAR;stc=10E4;suc=1CA4
+cp;10E5;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER KHAR;stc=10E5;suc=1CA5
+cp;10E6;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER GHAN;stc=10E6;suc=1CA6
+cp;10E7;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER QAR;stc=10E7;suc=1CA7
+cp;10E8;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER SHIN;stc=10E8;suc=1CA8
+cp;10E9;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER CHIN;stc=10E9;suc=1CA9
+cp;10EA;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER CAN;stc=10EA;suc=1CAA
+cp;10EB;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER JIL;stc=10EB;suc=1CAB
+cp;10EC;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER CIL;stc=10EC;suc=1CAC
+cp;10ED;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER CHAR;stc=10ED;suc=1CAD
+cp;10EE;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER XAN;stc=10EE;suc=1CAE
+cp;10EF;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER JHAN;stc=10EF;suc=1CAF
+cp;10F0;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER HAE;stc=10F0;suc=1CB0
# Archaic letters
-cp;10F1;CWU;Lower;na=GEORGIAN LETTER HE;stc=10F1;suc=1CB1
-cp;10F2;CWU;Lower;na=GEORGIAN LETTER HIE;stc=10F2;suc=1CB2
-cp;10F3;CWU;Lower;na=GEORGIAN LETTER WE;stc=10F3;suc=1CB3
-cp;10F4;CWU;Lower;na=GEORGIAN LETTER HAR;stc=10F4;suc=1CB4
-cp;10F5;CWU;Lower;na=GEORGIAN LETTER HOE;stc=10F5;suc=1CB5
-cp;10F6;CWU;Lower;na=GEORGIAN LETTER FI;stc=10F6;suc=1CB6
+cp;10F1;CWU;Identifier_Type=Obsolete;Lower;na=GEORGIAN LETTER HE;stc=10F1;suc=1CB1
+cp;10F2;CWU;Identifier_Type=Obsolete;Lower;na=GEORGIAN LETTER HIE;stc=10F2;suc=1CB2
+cp;10F3;CWU;Identifier_Type=Obsolete;Lower;na=GEORGIAN LETTER WE;stc=10F3;suc=1CB3
+cp;10F4;CWU;Identifier_Type=Obsolete;Lower;na=GEORGIAN LETTER HAR;stc=10F4;suc=1CB4
+cp;10F5;CWU;Identifier_Type=Obsolete;Lower;na=GEORGIAN LETTER HOE;stc=10F5;suc=1CB5
+cp;10F6;CWU;Identifier_Type=Obsolete;Lower;na=GEORGIAN LETTER FI;stc=10F6;suc=1CB6
# Additional letters for Mingrelian and Svan
-cp;10F7;age=3.2;CWU;Lower;na=GEORGIAN LETTER YN;stc=10F7;suc=1CB7
-cp;10F8;age=3.2;CWU;Lower;na=GEORGIAN LETTER ELIFI;stc=10F8;suc=1CB8
+cp;10F7;age=3.2;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER YN;stc=10F7;suc=1CB7
+cp;10F8;age=3.2;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER ELIFI;stc=10F8;suc=1CB8
# Additional letters
-cp;10F9;age=4.1;CWU;Lower;na=GEORGIAN LETTER TURNED GAN;stc=10F9;suc=1CB9
-cp;10FA;age=4.1;CWU;Lower;na=GEORGIAN LETTER AIN;stc=10FA;suc=1CBA
+cp;10F9;age=4.1;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER TURNED GAN;stc=10F9;suc=1CB9
+cp;10FA;age=4.1;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER AIN;stc=10FA;suc=1CBA
# Punctuation
-cp;10FB;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=GEORGIAN PARAGRAPH SEPARATOR;SB=XX;sc=Zyyy;scx=Geor Latn;WB=XX;-XIDC;-XIDS
+cp;10FB;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Not_XID;-IDS;na=GEORGIAN PARAGRAPH SEPARATOR;SB=XX;sc=Zyyy;scx=Geor Latn;WB=XX;-XIDC;-XIDS
# Modifier letter
-cp;10FC;age=4.1;CI;-CWCM;CWKCF;dm=10DC;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER GEORGIAN NAR;NFKC_CF=10DC;NFKC_QC=N;NFKC_SCF=10DC;NFKD_QC=N;SB=LO
+cp;10FC;age=4.1;CI;-CWCM;CWKCF;dm=10DC;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER GEORGIAN NAR;NFKC_CF=10DC;NFKC_QC=N;NFKC_SCF=10DC;NFKD_QC=N;SB=LO
# Additional letters for Ossetian and Abkhaz
-cp;10FD;age=6.1;CWU;Lower;na=GEORGIAN LETTER AEN;stc=10FD;suc=1CBD
-cp;10FE;age=6.1;CWU;Lower;na=GEORGIAN LETTER HARD SIGN;stc=10FE;suc=1CBE
-cp;10FF;age=6.1;CWU;Lower;na=GEORGIAN LETTER LABIAL SIGN;stc=10FF;suc=1CBF
+cp;10FD;age=6.1;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER AEN;stc=10FD;suc=1CBD
+cp;10FE;age=6.1;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER HARD SIGN;stc=10FE;suc=1CBE
+cp;10FF;age=6.1;CWU;Identifier_Status=Allowed;Lower;na=GEORGIAN LETTER LABIAL SIGN;stc=10FF;suc=1CBF
-block;1100..11FF;age=1.1;Alpha;blk=Jamo;gc=Lo;GCB=L;Gr_Base;IDC;IDS;lb=JL;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
+block;1100..11FF;age=1.1;Alpha;blk=Jamo;gc=Lo;GCB=L;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=JL;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
# 1100..11FF Hangul Jamo
# Initial consonants
cp;1100;ea=W;na=HANGUL CHOSEONG KIYEOK
@@ -5951,9 +5968,9 @@ cp;115B;age=5.2;ea=W;na=HANGUL CHOSEONG NIEUN-SIOS
cp;115C;age=5.2;ea=W;na=HANGUL CHOSEONG NIEUN-CIEUC
cp;115D;age=5.2;ea=W;na=HANGUL CHOSEONG NIEUN-HIEUH
cp;115E;age=5.2;ea=W;na=HANGUL CHOSEONG TIKEUT-RIEUL
-cp;115F;CWKCF;DI;ea=W;na=HANGUL CHOSEONG FILLER;NFKC_CF=;NFKC_SCF=
+cp;115F;CWKCF;DI;ea=W;Identifier_Type=Default_Ignorable;na=HANGUL CHOSEONG FILLER;NFKC_CF=;NFKC_SCF=
# Medial vowels
-cp;1160;CWKCF;DI;GCB=V;lb=JV;na=HANGUL JUNGSEONG FILLER;NFKC_CF=;NFKC_SCF=
+cp;1160;CWKCF;DI;GCB=V;Identifier_Type=Default_Ignorable;lb=JV;na=HANGUL JUNGSEONG FILLER;NFKC_CF=;NFKC_SCF=
cp;1161;GCB=V;lb=JV;na=HANGUL JUNGSEONG A;NFC_QC=M;NFKC_QC=M
cp;1162;GCB=V;lb=JV;na=HANGUL JUNGSEONG AE;NFC_QC=M;NFKC_QC=M
cp;1163;GCB=V;lb=JV;na=HANGUL JUNGSEONG YA;NFC_QC=M;NFKC_QC=M
@@ -6117,7 +6134,7 @@ cp;11FD;age=5.2;GCB=T;lb=JT;na=HANGUL JONGSEONG KIYEOK-KHIEUKH
cp;11FE;age=5.2;GCB=T;lb=JT;na=HANGUL JONGSEONG KIYEOK-HIEUH
cp;11FF;age=5.2;GCB=T;lb=JT;na=HANGUL JONGSEONG SSANGNIEUN
-block;1200..137F;age=3.0;Alpha;blk=Ethiopic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
+block;1200..137F;age=3.0;Alpha;blk=Ethiopic;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
# 1200..137F Ethiopic
# Syllables
cp;1200;na=ETHIOPIC SYLLABLE HA
@@ -6467,40 +6484,40 @@ cp;135D;age=6.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;I
cp;135E;age=6.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ETHIOPIC COMBINING VOWEL LENGTH MARK;SB=EX;WB=Extend;-XIDS
cp;135F;age=4.1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ETHIOPIC COMBINING GEMINATION MARK;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;1360;age=4.1;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC SECTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1361;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=ETHIOPIC WORDSPACE;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;1362;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1363;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;1364;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC SEMICOLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;1365;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC COLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;1366;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC PREFACE COLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;1367;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1368;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC PARAGRAPH SEPARATOR;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1360;age=4.1;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC SECTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1361;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;lb=BA;na=ETHIOPIC WORDSPACE;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1362;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1363;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1364;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC SEMICOLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1365;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC COLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1366;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC PREFACE COLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1367;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1368;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC PARAGRAPH SEPARATOR;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Digits
-cp;1369;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDS
-cp;136A;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDS
-cp;136B;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT THREE;nt=Di;nv=3;SB=XX;WB=XX;-XIDS
-cp;136C;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT FOUR;nt=Di;nv=4;SB=XX;WB=XX;-XIDS
-cp;136D;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT FIVE;nt=Di;nv=5;SB=XX;WB=XX;-XIDS
-cp;136E;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT SIX;nt=Di;nv=6;SB=XX;WB=XX;-XIDS
-cp;136F;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT SEVEN;nt=Di;nv=7;SB=XX;WB=XX;-XIDS
-cp;1370;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT EIGHT;nt=Di;nv=8;SB=XX;WB=XX;-XIDS
-cp;1371;-Alpha;gc=No;-IDS;na=ETHIOPIC DIGIT NINE;nt=Di;nv=9;SB=XX;WB=XX;-XIDS
+cp;1369;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDS
+cp;136A;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDS
+cp;136B;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT THREE;nt=Di;nv=3;SB=XX;WB=XX;-XIDS
+cp;136C;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT FOUR;nt=Di;nv=4;SB=XX;WB=XX;-XIDS
+cp;136D;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT FIVE;nt=Di;nv=5;SB=XX;WB=XX;-XIDS
+cp;136E;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT SIX;nt=Di;nv=6;SB=XX;WB=XX;-XIDS
+cp;136F;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT SEVEN;nt=Di;nv=7;SB=XX;WB=XX;-XIDS
+cp;1370;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT EIGHT;nt=Di;nv=8;SB=XX;WB=XX;-XIDS
+cp;1371;-Alpha;gc=No;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;na=ETHIOPIC DIGIT NINE;nt=Di;nv=9;SB=XX;WB=XX;-XIDS
# Numbers
-cp;1372;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1373;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1374;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1375;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1376;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1377;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1378;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1379;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC;-XIDS
-cp;137A;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC;-XIDS
-cp;137B;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;137C;-Alpha;gc=No;-IDC;-IDS;na=ETHIOPIC NUMBER TEN THOUSAND;nt=Nu;nv=10000;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1372;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1373;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1374;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1375;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1376;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1377;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1378;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1379;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC;-XIDS
+cp;137A;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC;-XIDS
+cp;137B;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;137C;-Alpha;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC NUMBER TEN THOUSAND;nt=Nu;nv=10000;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;137D..137F
-block;1380..139F;age=4.1;Alpha;blk=Ethiopic_Sup;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
+block;1380..139F;age=4.1;Alpha;blk=Ethiopic_Sup;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
# 1380..139F Ethiopic Supplement
# Syllables for Gurage
cp;1380;na=ETHIOPIC SYLLABLE SEBATBEIT MWA
@@ -6520,19 +6537,19 @@ cp;138D;na=ETHIOPIC SYLLABLE PWI
cp;138E;na=ETHIOPIC SYLLABLE PWEE
cp;138F;na=ETHIOPIC SYLLABLE PWE
# Tonal marks
-cp;1390;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK YIZET;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1391;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK DERET;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1392;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK RIKRIK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1393;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK SHORT RIKRIK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1394;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK DIFAT;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1395;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK KENAT;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1396;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK CHIRET;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1397;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK HIDET;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1398;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK DERET-HIDET;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1399;-Alpha;bc=ON;gc=So;-IDC;-IDS;na=ETHIOPIC TONAL MARK KURT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1390;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK YIZET;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1391;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK DERET;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1392;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK RIKRIK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1393;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK SHORT RIKRIK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1394;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK DIFAT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1395;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK KENAT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1396;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK CHIRET;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1397;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK HIDET;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1398;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK DERET-HIDET;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1399;-Alpha;bc=ON;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;na=ETHIOPIC TONAL MARK KURT;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;139A..139F
-block;13A0..13FF;age=3.0;Alpha;blk=Cherokee;Cased;CWCM;CWL;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Cher;Upper;WB=LE;XIDC;XIDS
+block;13A0..13FF;age=3.0;Alpha;blk=Cherokee;Cased;CWCM;CWL;gc=Lu;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=UP;sc=Cher;Upper;WB=LE;XIDC;XIDS
# 13A0..13FF Cherokee
# Uppercase syllables
cp;13A0;na=CHEROKEE LETTER A;slc=AB70
@@ -6633,10 +6650,10 @@ cp;13FC;age=8.0;cf=13F4;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LE
cp;13FD;age=8.0;cf=13F5;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER MV;NFKC_CF=13F5;NFKC_SCF=13F5;SB=LO;scf=13F5;stc=13F5;suc=13F5;-Upper
unassigned;13FE..13FF
-block;1400..167F;age=3.0;Alpha;blk=UCAS;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Cans;vo=U;WB=LE;XIDC;XIDS
+block;1400..167F;age=3.0;Alpha;blk=UCAS;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Cans;vo=U;WB=LE;XIDC;XIDS
# 1400..167F Unified Canadian Aboriginal Syllabics
# Punctuation
-cp;1400;age=5.2;-Alpha;bc=ON;Dash;gc=Pd;-IDC;-IDS;lb=BA;na=CANADIAN SYLLABICS HYPHEN;SB=XX;vo=R;WB=XX;-XIDC;-XIDS
+cp;1400;age=5.2;-Alpha;bc=ON;Dash;gc=Pd;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=CANADIAN SYLLABICS HYPHEN;SB=XX;vo=R;WB=XX;-XIDC;-XIDS
# Syllables
cp;1401;na=CANADIAN SYLLABICS E
cp;1402;na=CANADIAN SYLLABICS AAI
@@ -7260,9 +7277,9 @@ cp;166A;na=CANADIAN SYLLABICS CARRIER TTSEE
cp;166B;na=CANADIAN SYLLABICS CARRIER TTSI
cp;166C;na=CANADIAN SYLLABICS CARRIER TTSA
# Symbol
-cp;166D;-Alpha;gc=So;-IDC;-IDS;na=CANADIAN SYLLABICS CHI SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;166D;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;na=CANADIAN SYLLABICS CHI SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;166E;-Alpha;gc=Po;-IDC;-IDS;na=CANADIAN SYLLABICS FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;166E;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;na=CANADIAN SYLLABICS FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Syllables
cp;166F;na=CANADIAN SYLLABICS QAI
cp;1670;na=CANADIAN SYLLABICS NGAI
@@ -7282,10 +7299,10 @@ cp;167D;age=5.2;na=CANADIAN SYLLABICS WOODS-CREE THWAA
cp;167E;age=5.2;na=CANADIAN SYLLABICS WOODS-CREE FINAL TH
cp;167F;age=5.2;na=CANADIAN SYLLABICS BLACKFOOT W
-block;1680..169F;age=3.0;Alpha;blk=Ogham;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ogam;WB=LE;XIDC;XIDS
+block;1680..169F;age=3.0;Alpha;blk=Ogham;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Ogam;WB=LE;XIDC;XIDS
# 1680..169F Ogham
# Space
-cp;1680;-Alpha;bc=WS;gc=Zs;-IDC;-IDS;lb=BA;na=OGHAM SPACE MARK;SB=SP;WB=WSegSpace;WSpace;-XIDC;-XIDS
+cp;1680;-Alpha;bc=WS;gc=Zs;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=OGHAM SPACE MARK;SB=SP;WB=WSegSpace;WSpace;-XIDC;-XIDS
# Traditional letters
cp;1681;na=OGHAM LETTER BEITH
cp;1682;na=OGHAM LETTER LUIS
@@ -7315,11 +7332,11 @@ cp;1698;na=OGHAM LETTER IFIN
cp;1699;na=OGHAM LETTER EAMHANCHOLL
cp;169A;na=OGHAM LETTER PEITH
# Punctuation
-cp;169B;-Alpha;bc=ON;Bidi_M;bmg=169C;bpb=169C;bpt=o;gc=Ps;-IDC;-IDS;lb=OP;na=OGHAM FEATHER MARK;SB=CL;WB=XX;-XIDC;-XIDS
-cp;169C;-Alpha;bc=ON;Bidi_M;bmg=169B;bpb=169B;bpt=c;gc=Pe;-IDC;-IDS;lb=CL;na=OGHAM REVERSED FEATHER MARK;SB=CL;WB=XX;-XIDC;-XIDS
+cp;169B;-Alpha;bc=ON;Bidi_M;bmg=169C;bpb=169C;bpt=o;gc=Ps;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=OP;na=OGHAM FEATHER MARK;SB=CL;WB=XX;-XIDC;-XIDS
+cp;169C;-Alpha;bc=ON;Bidi_M;bmg=169B;bpb=169B;bpt=c;gc=Pe;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=CL;na=OGHAM REVERSED FEATHER MARK;SB=CL;WB=XX;-XIDC;-XIDS
unassigned;169D..169F
-block;16A0..16FF;age=3.0;Alpha;blk=Runic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Runr;WB=LE;XIDC;XIDS
+block;16A0..16FF;age=3.0;Alpha;blk=Runic;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Runr;WB=LE;XIDC;XIDS
# 16A0..16FF Runic
# Letters
cp;16A0;na=RUNIC LETTER FEHU FEOH FE F
@@ -7398,9 +7415,9 @@ cp;16E8;na=RUNIC LETTER ICELANDIC-YR
cp;16E9;na=RUNIC LETTER Q
cp;16EA;na=RUNIC LETTER X
# Punctuation
-cp;16EB;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=RUNIC SINGLE PUNCTUATION;SB=XX;sc=Zyyy;Term;WB=XX;-XIDC;-XIDS
-cp;16EC;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=RUNIC MULTIPLE PUNCTUATION;SB=XX;sc=Zyyy;Term;WB=XX;-XIDC;-XIDS
-cp;16ED;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=RUNIC CROSS PUNCTUATION;SB=XX;sc=Zyyy;Term;WB=XX;-XIDC;-XIDS
+cp;16EB;-Alpha;gc=Po;-IDC;Identifier_Type=Not_XID;-IDS;lb=BA;na=RUNIC SINGLE PUNCTUATION;SB=XX;sc=Zyyy;Term;WB=XX;-XIDC;-XIDS
+cp;16EC;-Alpha;gc=Po;-IDC;Identifier_Type=Not_XID;-IDS;lb=BA;na=RUNIC MULTIPLE PUNCTUATION;SB=XX;sc=Zyyy;Term;WB=XX;-XIDC;-XIDS
+cp;16ED;-Alpha;gc=Po;-IDC;Identifier_Type=Not_XID;-IDS;lb=BA;na=RUNIC CROSS PUNCTUATION;SB=XX;sc=Zyyy;Term;WB=XX;-XIDC;-XIDS
# Golden number runes
cp;16EE;gc=Nl;na=RUNIC ARLAUG SYMBOL;nt=Nu;nv=17
cp;16EF;gc=Nl;na=RUNIC TVIMADUR SYMBOL;nt=Nu;nv=18
@@ -7417,7 +7434,7 @@ cp;16F7;age=7.0;na=RUNIC LETTER FRANKS CASKET AC
cp;16F8;age=7.0;na=RUNIC LETTER FRANKS CASKET AESC
unassigned;16F9..16FF
-block;1700..171F;age=3.2;Alpha;blk=Tagalog;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Tglg;WB=LE;XIDC;XIDS
+block;1700..171F;age=3.2;Alpha;blk=Tagalog;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Tglg;WB=LE;XIDC;XIDS
# 1700..171F Tagalog
# Independent vowels
cp;1700;InSC=Vowel_Independent;na=TAGALOG LETTER A
@@ -7449,7 +7466,7 @@ unassigned;1716..171E
# Archaic letter
cp;171F;age=14.0;na=TAGALOG LETTER ARCHAIC RA
-block;1720..173F;age=3.2;Alpha;blk=Hanunoo;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Hano;WB=LE;XIDC;XIDS
+block;1720..173F;age=3.2;Alpha;blk=Hanunoo;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Hano;WB=LE;XIDC;XIDS
# 1720..173F Hanunoo
# Independent vowels
cp;1720;InSC=Vowel_Independent;na=HANUNOO LETTER A
@@ -7477,11 +7494,11 @@ cp;1733;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Depen
# Virama
cp;1734;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=CM;na=HANUNOO SIGN PAMUDPOD;SB=EX;WB=Extend;-XIDS
# Generic punctuation for Philippine scripts
-cp;1735;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=PHILIPPINE SINGLE PUNCTUATION;SB=ST;sc=Zyyy;scx=Buhd Hano Tagb Tglg;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1736;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=PHILIPPINE DOUBLE PUNCTUATION;SB=ST;sc=Zyyy;scx=Buhd Hano Tagb Tglg;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1735;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=PHILIPPINE SINGLE PUNCTUATION;SB=ST;sc=Zyyy;scx=Buhd Hano Tagb Tglg;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1736;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=PHILIPPINE DOUBLE PUNCTUATION;SB=ST;sc=Zyyy;scx=Buhd Hano Tagb Tglg;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;1737..173F
-block;1740..175F;age=3.2;Alpha;blk=Buhid;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Buhd;WB=LE;XIDC;XIDS
+block;1740..175F;age=3.2;Alpha;blk=Buhid;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Buhd;WB=LE;XIDC;XIDS
# 1740..175F Buhid
# Independent vowels
cp;1740;InSC=Vowel_Independent;na=BUHID LETTER A
@@ -7508,7 +7525,7 @@ cp;1752;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependen
cp;1753;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BUHID VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
unassigned;1754..175F
-block;1760..177F;age=3.2;Alpha;blk=Tagbanwa;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Tagb;WB=LE;XIDC;XIDS
+block;1760..177F;age=3.2;Alpha;blk=Tagbanwa;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Tagb;WB=LE;XIDC;XIDS
# 1760..177F Tagbanwa
# Independent vowels
cp;1760;InSC=Vowel_Independent;na=TAGBANWA LETTER A
@@ -7535,7 +7552,7 @@ cp;1772;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependen
cp;1773;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TAGBANWA VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
unassigned;1774..177F
-block;1780..17FF;age=3.0;Alpha;blk=Khmer;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=SA;SB=LE;sc=Khmr;XIDC
+block;1780..17FF;age=3.0;Alpha;blk=Khmer;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;InSC=Consonant;lb=SA;SB=LE;sc=Khmr;XIDC
# 1780..17FF Khmer
# Consonants
cp;1780;IDS;na=KHMER LETTER KA;XIDS
@@ -7574,13 +7591,13 @@ cp;17A0;IDS;na=KHMER LETTER HA;XIDS
cp;17A1;IDS;na=KHMER LETTER LA;XIDS
cp;17A2;IDS;na=KHMER LETTER QA;XIDS
# Deprecated independent vowels for transliteration
-cp;17A3;Dep;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QAQ;XIDS
-cp;17A4;Dep;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QAA;XIDS
+cp;17A3;Dep;Identifier_Status=Restricted;Identifier_Type=Deprecated;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QAQ;XIDS
+cp;17A4;Dep;Identifier_Status=Restricted;Identifier_Type=Deprecated;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QAA;XIDS
# Independent vowels
cp;17A5;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QI;XIDS
cp;17A6;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QII;XIDS
cp;17A7;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QU;XIDS
-cp;17A8;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QUK;XIDS
+cp;17A8;Identifier_Status=Restricted;Identifier_Type=Obsolete;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QUK;XIDS
cp;17A9;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QUU;XIDS
cp;17AA;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QUUV;XIDS
cp;17AB;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL RY;XIDS
@@ -7593,8 +7610,8 @@ cp;17B1;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QOO TYPE ONE;XIDS
cp;17B2;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QOO TYPE TWO;XIDS
cp;17B3;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QAU;XIDS
# Inherent vowels
-cp;17B4;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InSC=Other;jt=T;na=KHMER VOWEL INHERENT AQ;NFKC_CF=;NFKC_SCF=;SB=EX;WB=Extend
-cp;17B5;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InSC=Other;jt=T;na=KHMER VOWEL INHERENT AA;NFKC_CF=;NFKC_SCF=;SB=EX;WB=Extend
+cp;17B4;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Default_Ignorable;InSC=Other;jt=T;na=KHMER VOWEL INHERENT AQ;NFKC_CF=;NFKC_SCF=;SB=EX;WB=Extend
+cp;17B5;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Default_Ignorable;InSC=Other;jt=T;na=KHMER VOWEL INHERENT AA;NFKC_CF=;NFKC_SCF=;SB=EX;WB=Extend
# Dependent vowel signs
cp;17B6;gc=Mc;GCB=SM;InPC=Right;InSC=Vowel_Dependent;na=KHMER VOWEL SIGN AA;SB=EX;WB=Extend
cp;17B7;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;na=KHMER VOWEL SIGN I;SB=EX;WB=Extend
@@ -7626,26 +7643,26 @@ cp;17CA;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Register
cp;17CB;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN BANTOC;SB=EX;WB=Extend
cp;17CC;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Consonant_Succeeding_Repha;jt=T;na=KHMER SIGN ROBAT;SB=EX;WB=Extend
cp;17CD;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Consonant_Killer;jt=T;na=KHMER SIGN TOANDAKHIAT;SB=EX;WB=Extend
-cp;17CE;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN KAKABAT;SB=EX;WB=Extend
-cp;17CF;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN AHSDA;SB=EX;WB=Extend
+cp;17CE;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN KAKABAT;SB=EX;WB=Extend
+cp;17CF;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN AHSDA;SB=EX;WB=Extend
cp;17D0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN SAMYOK SANNYA;SB=EX;WB=Extend
-cp;17D1;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Pure_Killer;jt=T;na=KHMER SIGN VIRIAM;SB=EX;WB=Extend
+cp;17D1;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical Obsolete;InPC=Top;InSC=Pure_Killer;jt=T;na=KHMER SIGN VIRIAM;SB=EX;WB=Extend
cp;17D2;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;na=KHMER SIGN COENG;SB=EX;WB=Extend
# Lunar date sign
-cp;17D3;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN BATHAMASAT;SB=EX;WB=Extend
+cp;17D3;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Obsolete;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN BATHAMASAT;SB=EX;WB=Extend
# Various signs
-cp;17D4;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN KHAN;SB=ST;STerm;Term;-XIDC
-cp;17D5;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN BARIYOOSAN;SB=ST;STerm;Term;-XIDC
-cp;17D6;-Alpha;gc=Po;-IDC;InSC=Other;lb=NS;na=KHMER SIGN CAMNUC PII KUUH;SB=XX;Term;-XIDC
+cp;17D4;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BA;na=KHMER SIGN KHAN;SB=ST;STerm;Term;-XIDC
+cp;17D5;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BA;na=KHMER SIGN BARIYOOSAN;SB=ST;STerm;Term;-XIDC
+cp;17D6;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=NS;na=KHMER SIGN CAMNUC PII KUUH;SB=XX;Term;-XIDC
cp;17D7;CI;gc=Lm;IDS;InSC=Other;na=KHMER SIGN LEK TOO;XIDS
-cp;17D8;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN BEYYAL;SB=XX;-XIDC
-cp;17D9;-Alpha;gc=Po;-IDC;InSC=Other;lb=AL;na=KHMER SIGN PHNAEK MUAN;SB=XX;-XIDC
-cp;17DA;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN KOOMUUT;SB=XX;Term;-XIDC
+cp;17D8;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Obsolete Not_XID;InSC=Other;lb=BA;na=KHMER SIGN BEYYAL;SB=XX;-XIDC
+cp;17D9;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SIGN PHNAEK MUAN;SB=XX;-XIDC
+cp;17DA;-Alpha;gc=Po;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=BA;na=KHMER SIGN KOOMUUT;SB=XX;Term;-XIDC
# Currency symbol
-cp;17DB;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PR;na=KHMER CURRENCY SYMBOL RIEL;SB=XX;-XIDC
+cp;17DB;-Alpha;bc=ET;gc=Sc;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=PR;na=KHMER CURRENCY SYMBOL RIEL;SB=XX;-XIDC
# Various signs
cp;17DC;IDS;InSC=Avagraha;na=KHMER SIGN AVAKRAHASANYA;XIDS
-cp;17DD;age=4.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN ATTHACAN;SB=EX;WB=Extend
+cp;17DD;age=4.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Technical Obsolete;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN ATTHACAN;SB=EX;WB=Extend
unassigned;17DE..17DF
# Digits
cp;17E0;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KHMER DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
@@ -7660,38 +7677,38 @@ cp;17E8;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KHMER DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=
cp;17E9;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KHMER DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
unassigned;17EA..17EF
# Numeric symbols for divination lore
-cp;17F0;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK SON;nt=Nu;nv=0;SB=XX;-XIDC
-cp;17F1;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK MUOY;nt=Nu;nv=1;SB=XX;-XIDC
-cp;17F2;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PII;nt=Nu;nv=2;SB=XX;-XIDC
-cp;17F3;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK BEI;nt=Nu;nv=3;SB=XX;-XIDC
-cp;17F4;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK BUON;nt=Nu;nv=4;SB=XX;-XIDC
-cp;17F5;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM;nt=Nu;nv=5;SB=XX;-XIDC
-cp;17F6;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM-MUOY;nt=Nu;nv=6;SB=XX;-XIDC
-cp;17F7;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM-PII;nt=Nu;nv=7;SB=XX;-XIDC
-cp;17F8;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM-BEI;nt=Nu;nv=8;SB=XX;-XIDC
-cp;17F9;age=4.0;-Alpha;bc=ON;gc=No;-IDC;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM-BUON;nt=Nu;nv=9;SB=XX;-XIDC
+cp;17F0;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK SON;nt=Nu;nv=0;SB=XX;-XIDC
+cp;17F1;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK MUOY;nt=Nu;nv=1;SB=XX;-XIDC
+cp;17F2;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PII;nt=Nu;nv=2;SB=XX;-XIDC
+cp;17F3;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK BEI;nt=Nu;nv=3;SB=XX;-XIDC
+cp;17F4;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK BUON;nt=Nu;nv=4;SB=XX;-XIDC
+cp;17F5;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM;nt=Nu;nv=5;SB=XX;-XIDC
+cp;17F6;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM-MUOY;nt=Nu;nv=6;SB=XX;-XIDC
+cp;17F7;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM-PII;nt=Nu;nv=7;SB=XX;-XIDC
+cp;17F8;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM-BEI;nt=Nu;nv=8;SB=XX;-XIDC
+cp;17F9;age=4.0;-Alpha;bc=ON;gc=No;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;InSC=Other;lb=AL;na=KHMER SYMBOL LEK ATTAK PRAM-BUON;nt=Nu;nv=9;SB=XX;-XIDC
unassigned;17FA..17FF
-block;1800..18AF;age=3.0;Alpha;blk=Mongolian;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Mong;WB=LE;XIDC;XIDS
+block;1800..18AF;age=3.0;Alpha;blk=Mongolian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;jt=D;lb=AL;SB=LE;sc=Mong;WB=LE;XIDC;XIDS
# 1800..18AF Mongolian
# Punctuation
-cp;1800;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;na=MONGOLIAN BIRGA;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1801;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;na=MONGOLIAN ELLIPSIS;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1802;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=MONGOLIAN COMMA;SB=SC;sc=Zyyy;scx=Mong Phag;Term;WB=XX;-XIDC;-XIDS
-cp;1803;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=MONGOLIAN FULL STOP;SB=ST;sc=Zyyy;scx=Mong Phag;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1804;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=BA;na=MONGOLIAN COLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;1805;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=BA;na=MONGOLIAN FOUR DOTS;SB=XX;sc=Zyyy;scx=Mong Phag;Term;WB=XX;-XIDC;-XIDS
-cp;1806;-Alpha;bc=ON;Dash;gc=Pd;Hyphen;-IDC;-IDS;jt=U;lb=BB;na=MONGOLIAN TODO SOFT HYPHEN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1807;-Alpha;bc=ON;gc=Po;-IDC;-IDS;na=MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1808;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=MONGOLIAN MANCHU COMMA;SB=SC;Term;WB=XX;-XIDC;-XIDS
-cp;1809;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=MONGOLIAN MANCHU FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;180A;-Alpha;bc=ON;Ext;gc=Po;-IDC;-IDS;jt=C;na=MONGOLIAN NIRUGU;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1800;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=MONGOLIAN BIRGA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1801;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=MONGOLIAN ELLIPSIS;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1802;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=EX;na=MONGOLIAN COMMA;SB=SC;sc=Zyyy;scx=Mong Phag;Term;WB=XX;-XIDC;-XIDS
+cp;1803;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=EX;na=MONGOLIAN FULL STOP;SB=ST;sc=Zyyy;scx=Mong Phag;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1804;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BA;na=MONGOLIAN COLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1805;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BA;na=MONGOLIAN FOUR DOTS;SB=XX;sc=Zyyy;scx=Mong Phag;Term;WB=XX;-XIDC;-XIDS
+cp;1806;-Alpha;bc=ON;Dash;gc=Pd;Hyphen;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BB;na=MONGOLIAN TODO SOFT HYPHEN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1807;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1808;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=EX;na=MONGOLIAN MANCHU COMMA;SB=SC;Term;WB=XX;-XIDC;-XIDS
+cp;1809;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=EX;na=MONGOLIAN MANCHU FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;180A;-Alpha;bc=ON;Ext;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=C;na=MONGOLIAN NIRUGU;SB=XX;WB=XX;-XIDC;-XIDS
# Format controls
-cp;180B;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR ONE;Name_Alias=abbreviation=FVS1;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
-cp;180C;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR TWO;Name_Alias=abbreviation=FVS2;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
-cp;180D;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR THREE;Name_Alias=abbreviation=FVS3;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
-cp;180E;-Alpha;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=U;lb=GL;na=MONGOLIAN VOWEL SEPARATOR;Name_Alias=abbreviation=MVS;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO;-XIDC;-XIDS
-cp;180F;age=14.0;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR FOUR;Name_Alias=abbreviation=FVS4;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
+cp;180B;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Default_Ignorable;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR ONE;Name_Alias=abbreviation=FVS1;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
+cp;180C;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Default_Ignorable;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR TWO;Name_Alias=abbreviation=FVS2;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
+cp;180D;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Default_Ignorable;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR THREE;Name_Alias=abbreviation=FVS3;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
+cp;180E;-Alpha;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;-IDC;Identifier_Type=Default_Ignorable;-IDS;jt=U;lb=GL;na=MONGOLIAN VOWEL SEPARATOR;Name_Alias=abbreviation=MVS;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO;-XIDC;-XIDS
+cp;180F;age=14.0;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Default_Ignorable;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR FOUR;Name_Alias=abbreviation=FVS4;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
# Digits
cp;1810;-Alpha;gc=Nd;-IDS;jt=U;lb=NU;na=MONGOLIAN DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
cp;1811;-Alpha;gc=Nd;-IDS;jt=U;lb=NU;na=MONGOLIAN DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
@@ -7841,11 +7858,11 @@ cp;18A5;na=MONGOLIAN LETTER MANCHU ALI GALI ZA
cp;18A6;na=MONGOLIAN LETTER ALI GALI HALF U
cp;18A7;na=MONGOLIAN LETTER ALI GALI HALF YA
cp;18A8;na=MONGOLIAN LETTER MANCHU ALI GALI BHA
-cp;18A9;bc=NSM;ccc=228;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MONGOLIAN LETTER ALI GALI DAGALGA;SB=EX;WB=Extend;-XIDS
+cp;18A9;bc=NSM;ccc=228;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Uncommon_Use Exclusion;-IDS;InCB=Extend;jt=T;lb=CM;na=MONGOLIAN LETTER ALI GALI DAGALGA;SB=EX;WB=Extend;-XIDS
cp;18AA;age=5.1;na=MONGOLIAN LETTER MANCHU ALI GALI LHA
unassigned;18AB..18AF
-block;18B0..18FF;age=5.2;Alpha;blk=UCAS_Ext;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Cans;vo=U;WB=LE;XIDC;XIDS
+block;18B0..18FF;age=5.2;Alpha;blk=UCAS_Ext;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Cans;vo=U;WB=LE;XIDC;XIDS
# 18B0..18FF Unified Canadian Aboriginal Syllabics Extended
# Syllables for Moose Cree
cp;18B0;na=CANADIAN SYLLABICS OY
@@ -7924,7 +7941,7 @@ cp;18F4;na=CANADIAN SYLLABICS BEAVER DENE R
cp;18F5;na=CANADIAN SYLLABICS CARRIER DENTAL S
unassigned;18F6..18FF;vo=U
-block;1900..194F;age=4.0;Alpha;blk=Limbu;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Limb;WB=Extend;XIDC
+block;1900..194F;age=4.0;Alpha;blk=Limbu;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;InSC=Consonant;lb=AL;SB=LE;sc=Limb;WB=Extend;XIDC
# 1900..194F Limbu
# Consonants
cp;1900;IDS;InSC=Consonant_Placeholder;na=LIMBU VOWEL-CARRIER LETTER;WB=LE;XIDS
@@ -7989,10 +8006,10 @@ cp;1939;-Alpha;bc=NSM;ccc=222;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;In
cp;193A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=LIMBU SIGN KEMPHRENG;SB=EX
cp;193B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=LIMBU SIGN SA-I;SB=EX
unassigned;193C..193F
-cp;1940;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=LIMBU SIGN LOO;SB=XX;WB=XX;-XIDC
+cp;1940;-Alpha;bc=ON;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=LIMBU SIGN LOO;SB=XX;WB=XX;-XIDC
unassigned;1941..1943
-cp;1944;-Alpha;bc=ON;gc=Po;-IDC;InSC=Other;lb=EX;na=LIMBU EXCLAMATION MARK;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1945;-Alpha;bc=ON;gc=Po;-IDC;InSC=Other;lb=EX;na=LIMBU QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1944;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=EX;na=LIMBU EXCLAMATION MARK;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1945;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=EX;na=LIMBU QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC
# Digits
cp;1946;-Alpha;gc=Nd;InSC=Number;lb=NU;na=LIMBU DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
cp;1947;-Alpha;gc=Nd;InSC=Number;lb=NU;na=LIMBU DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
@@ -8005,7 +8022,7 @@ cp;194D;-Alpha;gc=Nd;InSC=Number;lb=NU;na=LIMBU DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=
cp;194E;-Alpha;gc=Nd;InSC=Number;lb=NU;na=LIMBU DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
cp;194F;-Alpha;gc=Nd;InSC=Number;lb=NU;na=LIMBU DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
-block;1950..197F;age=4.0;Alpha;blk=Tai_Le;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Tale;XIDC;XIDS
+block;1950..197F;age=4.0;Alpha;blk=Tai_Le;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Tale;XIDC;XIDS
# 1950..197F Tai Le
# Consonants
cp;1950;na=TAI LE LETTER KA
@@ -8048,7 +8065,7 @@ cp;1973;InSC=Tone_Letter;na=TAI LE LETTER TONE-5
cp;1974;InSC=Tone_Letter;na=TAI LE LETTER TONE-6
unassigned;1975..197F
-block;1980..19DF;age=4.1;Alpha;blk=New_Tai_Lue;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Talu;XIDC;XIDS
+block;1980..19DF;age=4.1;Alpha;blk=New_Tai_Lue;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Talu;XIDC;XIDS
# 1980..19DF New Tai Lue
# Consonants
cp;1980;na=NEW TAI LUE LETTER HIGH QA
@@ -8140,10 +8157,10 @@ cp;19D9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=NEW TAI LUE DIGIT NINE;nt=De;nv=9
cp;19DA;age=5.2;-Alpha;gc=No;-IDS;InSC=Number;na=NEW TAI LUE THAM DIGIT ONE;nt=Di;nv=1;SB=XX;-XIDS
unassigned;19DB..19DD
# Various signs
-cp;19DE;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=NEW TAI LUE SIGN LAE;SB=XX;-XIDC;-XIDS
-cp;19DF;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=NEW TAI LUE SIGN LAEV;SB=XX;-XIDC;-XIDS
+cp;19DE;-Alpha;bc=ON;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=NEW TAI LUE SIGN LAE;SB=XX;-XIDC;-XIDS
+cp;19DF;-Alpha;bc=ON;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=NEW TAI LUE SIGN LAEV;SB=XX;-XIDC;-XIDS
-block;19E0..19FF;age=4.0;bc=ON;blk=Khmer_Symbols;gc=So;Gr_Base;lb=AL;sc=Khmr
+block;19E0..19FF;age=4.0;bc=ON;blk=Khmer_Symbols;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Khmr
# 19E0..19FF Khmer Symbols
# Lunar date symbols
cp;19E0;na=KHMER SYMBOL PATHAMASAT
@@ -8179,7 +8196,7 @@ cp;19FD;na=KHMER SYMBOL DAP-BEI ROC
cp;19FE;na=KHMER SYMBOL DAP-BUON ROC
cp;19FF;na=KHMER SYMBOL DAP-PRAM ROC
-block;1A00..1A1F;age=4.1;Alpha;blk=Buginese;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Bugi;WB=LE;XIDC;XIDS
+block;1A00..1A1F;age=4.1;Alpha;blk=Buginese;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Bugi;WB=LE;XIDC;XIDS
# 1A00..1A1F Buginese
# Consonants
cp;1A00;na=BUGINESE LETTER KA
@@ -8213,10 +8230,10 @@ cp;1A1A;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BUGINESE VOWE
cp;1A1B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BUGINESE VOWEL SIGN AE;SB=EX;WB=Extend;-XIDS
unassigned;1A1C..1A1D
# Various signs
-cp;1A1E;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=BUGINESE PALLAWA;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1A1F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=BUGINESE END OF SECTION;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1A1E;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=BUGINESE PALLAWA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1A1F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=BUGINESE END OF SECTION;SB=XX;WB=XX;-XIDC;-XIDS
-block;1A20..1AAF;age=5.2;Alpha;blk=Tai_Tham;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=SA;SB=LE;sc=Lana;XIDC
+block;1A20..1AAF;age=5.2;Alpha;blk=Tai_Tham;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;InSC=Consonant;lb=SA;SB=LE;sc=Lana;XIDC
# 1A20..1AAF Tai Tham
# Consonants
cp;1A20;IDS;na=TAI THAM LETTER HIGH KA;XIDS
@@ -8347,47 +8364,47 @@ cp;1A98;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TAI THAM THAM DIGIT EIGHT;nt=De;nv=8;S
cp;1A99;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TAI THAM THAM DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
unassigned;1A9A..1A9F
# Logographs
-cp;1AA0;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN WIANG;SB=XX;-XIDC
-cp;1AA1;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN WIANGWAAK;SB=XX;-XIDC
-cp;1AA2;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN SAWAN;SB=XX;-XIDC
+cp;1AA0;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN WIANG;SB=XX;-XIDC
+cp;1AA1;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN WIANGWAAK;SB=XX;-XIDC
+cp;1AA2;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN SAWAN;SB=XX;-XIDC
# Punctuation
-cp;1AA3;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN KEOW;SB=XX;-XIDC
-cp;1AA4;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN HOY;SB=XX;-XIDC
-cp;1AA5;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN DOKMAI;SB=XX;-XIDC
-cp;1AA6;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN REVERSED ROTATED RANA;SB=XX;-XIDC
+cp;1AA3;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN KEOW;SB=XX;-XIDC
+cp;1AA4;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN HOY;SB=XX;-XIDC
+cp;1AA5;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN DOKMAI;SB=XX;-XIDC
+cp;1AA6;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN REVERSED ROTATED RANA;SB=XX;-XIDC
# Sign
cp;1AA7;CI;Ext;gc=Lm;IDS;InSC=Other;na=TAI THAM SIGN MAI YAMOK;XIDS
# Punctuation
-cp;1AA8;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN KAAN;SB=ST;STerm;Term;-XIDC
-cp;1AA9;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN KAANKUU;SB=ST;STerm;Term;-XIDC
-cp;1AAA;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN SATKAAN;SB=ST;STerm;Term;-XIDC
-cp;1AAB;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN SATKAANKUU;SB=ST;STerm;Term;-XIDC
-cp;1AAC;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN HANG;SB=XX;-XIDC
-cp;1AAD;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN CAANG;SB=XX;-XIDC
+cp;1AA8;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN KAAN;SB=ST;STerm;Term;-XIDC
+cp;1AA9;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN KAANKUU;SB=ST;STerm;Term;-XIDC
+cp;1AAA;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN SATKAAN;SB=ST;STerm;Term;-XIDC
+cp;1AAB;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN SATKAANKUU;SB=ST;STerm;Term;-XIDC
+cp;1AAC;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN HANG;SB=XX;-XIDC
+cp;1AAD;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;na=TAI THAM SIGN CAANG;SB=XX;-XIDC
unassigned;1AAE..1AAF
-block;1AB0..1AFF;age=14.0;bc=NSM;blk=Diacriticals_Ext;ccc=230;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;1AB0..1AFF;age=14.0;bc=NSM;blk=Diacriticals_Ext;ccc=230;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Uncommon_Use;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
# 1AB0..1AFF Combining Diacritical Marks Extended
# Used in German dialectology
-cp;1AB0;age=7.0;na=COMBINING DOUBLED CIRCUMFLEX ACCENT
-cp;1AB1;age=7.0;na=COMBINING DIAERESIS-RING
-cp;1AB2;age=7.0;na=COMBINING INFINITY
-cp;1AB3;age=7.0;na=COMBINING DOWNWARDS ARROW
-cp;1AB4;age=7.0;na=COMBINING TRIPLE DOT
-cp;1AB5;age=7.0;ccc=220;na=COMBINING X-X BELOW
-cp;1AB6;age=7.0;ccc=220;na=COMBINING WIGGLY LINE BELOW
-cp;1AB7;age=7.0;ccc=220;na=COMBINING OPEN MARK BELOW
-cp;1AB8;age=7.0;ccc=220;na=COMBINING DOUBLE OPEN MARK BELOW
-cp;1AB9;age=7.0;ccc=220;na=COMBINING LIGHT CENTRALIZATION STROKE BELOW
-cp;1ABA;age=7.0;ccc=220;na=COMBINING STRONG CENTRALIZATION STROKE BELOW
+cp;1AB0;age=7.0;Identifier_Type=Obsolete;na=COMBINING DOUBLED CIRCUMFLEX ACCENT
+cp;1AB1;age=7.0;Identifier_Type=Obsolete;na=COMBINING DIAERESIS-RING
+cp;1AB2;age=7.0;Identifier_Type=Obsolete;na=COMBINING INFINITY
+cp;1AB3;age=7.0;Identifier_Type=Obsolete;na=COMBINING DOWNWARDS ARROW
+cp;1AB4;age=7.0;Identifier_Type=Obsolete;na=COMBINING TRIPLE DOT
+cp;1AB5;age=7.0;ccc=220;Identifier_Type=Obsolete;na=COMBINING X-X BELOW
+cp;1AB6;age=7.0;ccc=220;Identifier_Type=Obsolete;na=COMBINING WIGGLY LINE BELOW
+cp;1AB7;age=7.0;ccc=220;Identifier_Type=Obsolete;na=COMBINING OPEN MARK BELOW
+cp;1AB8;age=7.0;ccc=220;Identifier_Type=Obsolete;na=COMBINING DOUBLE OPEN MARK BELOW
+cp;1AB9;age=7.0;ccc=220;Identifier_Type=Obsolete;na=COMBINING LIGHT CENTRALIZATION STROKE BELOW
+cp;1ABA;age=7.0;ccc=220;Identifier_Type=Obsolete;na=COMBINING STRONG CENTRALIZATION STROKE BELOW
# Marks surrounding other diacritics or letters
-cp;1ABB;age=7.0;na=COMBINING PARENTHESES ABOVE
-cp;1ABC;age=7.0;na=COMBINING DOUBLE PARENTHESES ABOVE
-cp;1ABD;age=7.0;ccc=220;na=COMBINING PARENTHESES BELOW
-cp;1ABE;age=7.0;ccc=0;gc=Me;-IDC;InCB=None;na=COMBINING PARENTHESES OVERLAY;-XIDC
+cp;1ABB;age=7.0;Identifier_Type=Obsolete;na=COMBINING PARENTHESES ABOVE
+cp;1ABC;age=7.0;Identifier_Type=Obsolete;na=COMBINING DOUBLE PARENTHESES ABOVE
+cp;1ABD;age=7.0;ccc=220;Identifier_Type=Obsolete;na=COMBINING PARENTHESES BELOW
+cp;1ABE;age=7.0;ccc=0;gc=Me;-IDC;Identifier_Type=Not_XID;InCB=None;na=COMBINING PARENTHESES OVERLAY;-XIDC
# Used in Scots dialectology
-cp;1ABF;age=13.0;Alpha;ccc=220;-Dia;na=COMBINING LATIN SMALL LETTER W BELOW
-cp;1AC0;age=13.0;Alpha;ccc=220;-Dia;na=COMBINING LATIN SMALL LETTER TURNED W BELOW
+cp;1ABF;age=13.0;Alpha;ccc=220;-Dia;Identifier_Type=Technical;na=COMBINING LATIN SMALL LETTER W BELOW
+cp;1AC0;age=13.0;Alpha;ccc=220;-Dia;Identifier_Type=Technical;na=COMBINING LATIN SMALL LETTER TURNED W BELOW
# Marks next to or surrounding other diacritics
cp;1AC1;na=COMBINING LEFT PARENTHESIS ABOVE LEFT
cp;1AC2;na=COMBINING RIGHT PARENTHESIS ABOVE RIGHT
@@ -8408,7 +8425,7 @@ cp;1ACD;Alpha;-Dia;na=COMBINING LATIN SMALL LETTER INSULAR R
cp;1ACE;Alpha;-Dia;na=COMBINING LATIN SMALL LETTER INSULAR T
unassigned;1ACF..1AFF
-block;1B00..1B7F;age=5.0;Alpha;blk=Balinese;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AK;SB=LE;sc=Bali;WB=LE;XIDC
+block;1B00..1B7F;age=5.0;Alpha;blk=Balinese;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;InSC=Consonant;lb=AK;SB=LE;sc=Bali;WB=LE;XIDC
# 1B00..1B7F Balinese
# Various signs
cp;1B00;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=BALINESE SIGN ULU RICEM;SB=EX;WB=Extend
@@ -8507,50 +8524,50 @@ cp;1B57;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT SEVEN;nt=De;nv=7;SB=NU;
cp;1B58;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
cp;1B59;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
# Punctuation
-cp;1B5A;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PANTI;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1B5B;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PAMADA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1B5C;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BALINESE WINDU;SB=XX;WB=XX;-XIDC
-cp;1B5D;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE CARIK PAMUNGKAH;SB=XX;Term;WB=XX;-XIDC
-cp;1B5E;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE CARIK SIKI;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1B5F;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE CARIK PAREREN;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1B60;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PAMENENG;SB=XX;WB=XX;-XIDC
+cp;1B5A;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=BALINESE PANTI;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1B5B;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=BALINESE PAMADA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1B5C;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE WINDU;SB=XX;WB=XX;-XIDC
+cp;1B5D;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=BALINESE CARIK PAMUNGKAH;SB=XX;Term;WB=XX;-XIDC
+cp;1B5E;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=BALINESE CARIK SIKI;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1B5F;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=BALINESE CARIK PAREREN;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1B60;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=BALINESE PAMENENG;SB=XX;WB=XX;-XIDC
# Musical symbols for notes
-cp;1B61;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DONG;SB=XX;WB=XX;-XIDC
-cp;1B62;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DENG;SB=XX;WB=XX;-XIDC
-cp;1B63;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DUNG;SB=XX;WB=XX;-XIDC
-cp;1B64;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG;SB=XX;WB=XX;-XIDC
-cp;1B65;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG SURANG;SB=XX;WB=XX;-XIDC
-cp;1B66;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DING;SB=XX;WB=XX;-XIDC
-cp;1B67;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DAENG;SB=XX;WB=XX;-XIDC
-cp;1B68;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DEUNG;SB=XX;WB=XX;-XIDC
-cp;1B69;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DAING;SB=XX;WB=XX;-XIDC
-cp;1B6A;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG GEDE;SB=XX;WB=XX;-XIDC
+cp;1B61;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DONG;SB=XX;WB=XX;-XIDC
+cp;1B62;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DENG;SB=XX;WB=XX;-XIDC
+cp;1B63;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DUNG;SB=XX;WB=XX;-XIDC
+cp;1B64;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG;SB=XX;WB=XX;-XIDC
+cp;1B65;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG SURANG;SB=XX;WB=XX;-XIDC
+cp;1B66;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DING;SB=XX;WB=XX;-XIDC
+cp;1B67;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DAENG;SB=XX;WB=XX;-XIDC
+cp;1B68;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DEUNG;SB=XX;WB=XX;-XIDC
+cp;1B69;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DAING;SB=XX;WB=XX;-XIDC
+cp;1B6A;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG GEDE;SB=XX;WB=XX;-XIDC
# Diacritical marks for musical symbols
-cp;1B6B;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING TEGEH;SB=EX;WB=Extend
-cp;1B6C;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING ENDEP;SB=EX;WB=Extend
-cp;1B6D;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPUL;SB=EX;WB=Extend
-cp;1B6E;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPLI;SB=EX;WB=Extend
-cp;1B6F;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;SB=EX;WB=Extend
-cp;1B70;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;SB=EX;WB=Extend
-cp;1B71;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;SB=EX;WB=Extend
-cp;1B72;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING BENDE;SB=EX;WB=Extend
-cp;1B73;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING GONG;SB=EX;WB=Extend
+cp;1B6B;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING TEGEH;SB=EX;WB=Extend
+cp;1B6C;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING ENDEP;SB=EX;WB=Extend
+cp;1B6D;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPUL;SB=EX;WB=Extend
+cp;1B6E;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPLI;SB=EX;WB=Extend
+cp;1B6F;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;SB=EX;WB=Extend
+cp;1B70;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;SB=EX;WB=Extend
+cp;1B71;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;SB=EX;WB=Extend
+cp;1B72;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING BENDE;SB=EX;WB=Extend
+cp;1B73;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Limited_Use Technical;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING GONG;SB=EX;WB=Extend
# Musical symbols
-cp;1B74;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;SB=XX;WB=XX;-XIDC
-cp;1B75;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;SB=XX;WB=XX;-XIDC
-cp;1B76;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;SB=XX;WB=XX;-XIDC
-cp;1B77;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;SB=XX;WB=XX;-XIDC
-cp;1B78;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;SB=XX;WB=XX;-XIDC
-cp;1B79;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;SB=XX;WB=XX;-XIDC
-cp;1B7A;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;SB=XX;WB=XX;-XIDC
-cp;1B7B;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;SB=XX;WB=XX;-XIDC
-cp;1B7C;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;SB=XX;WB=XX;-XIDC
+cp;1B74;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;SB=XX;WB=XX;-XIDC
+cp;1B75;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;SB=XX;WB=XX;-XIDC
+cp;1B76;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;SB=XX;WB=XX;-XIDC
+cp;1B77;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;SB=XX;WB=XX;-XIDC
+cp;1B78;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;SB=XX;WB=XX;-XIDC
+cp;1B79;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;SB=XX;WB=XX;-XIDC
+cp;1B7A;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;SB=XX;WB=XX;-XIDC
+cp;1B7B;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;SB=XX;WB=XX;-XIDC
+cp;1B7C;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;SB=XX;WB=XX;-XIDC
# Punctuation
-cp;1B7D;age=14.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PANTI LANTANG;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1B7E;age=14.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PAMADA LANTANG;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1B7D;age=14.0;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=BALINESE PANTI LANTANG;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1B7E;age=14.0;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=BALINESE PAMADA LANTANG;SB=ST;STerm;Term;WB=XX;-XIDC
unassigned;1B7F
-block;1B80..1BBF;age=5.1;Alpha;blk=Sundanese;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Sund;WB=LE;XIDC;XIDS
+block;1B80..1BBF;age=5.1;Alpha;blk=Sundanese;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Sund;WB=LE;XIDC;XIDS
# 1B80..1BBF Sundanese
# Various signs
cp;1B80;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=SUNDANESE SIGN PANYECEK;SB=EX;WB=Extend;-XIDS
@@ -8628,7 +8645,7 @@ cp;1BBD;age=6.1;na=SUNDANESE LETTER BHA;Name_Alias=correction=SUNDANESE LETTER A
cp;1BBE;age=6.1;InSC=Consonant_Final;na=SUNDANESE LETTER FINAL K
cp;1BBF;age=6.1;InSC=Consonant_Final;na=SUNDANESE LETTER FINAL M
-block;1BC0..1BFF;age=6.0;Alpha;blk=Batak;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Batk;WB=LE;XIDC;XIDS
+block;1BC0..1BFF;age=6.0;Alpha;blk=Batak;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Batk;WB=LE;XIDC;XIDS
# 1BC0..1BFF Batak
# Letters
cp;1BC0;na=BATAK LETTER A
@@ -8689,12 +8706,12 @@ cp;1BF2;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=VF
cp;1BF3;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=VF;na=BATAK PANONGONAN;SB=EX;WB=Extend;-XIDS
unassigned;1BF4..1BFB
# Punctuation
-cp;1BFC;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU NA METEK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1BFD;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU PINARBORAS;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1BFE;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU JUDUL;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1BFF;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU PANGOLAT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BFC;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU NA METEK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BFD;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU PINARBORAS;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BFE;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU JUDUL;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BFF;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU PANGOLAT;SB=XX;WB=XX;-XIDC;-XIDS
-block;1C00..1C4F;age=5.1;Alpha;blk=Lepcha;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Lepc;WB=LE;XIDC
+block;1C00..1C4F;age=5.1;Alpha;blk=Lepcha;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;InSC=Consonant;lb=AL;SB=LE;sc=Lepc;WB=LE;XIDC
# 1C00..1C4F Lepcha
# Consonants
cp;1C00;IDS;na=LEPCHA LETTER KA;XIDS
@@ -8759,11 +8776,11 @@ cp;1C36;bc=NSM;CI;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Mo
cp;1C37;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=LEPCHA SIGN NUKTA;SB=EX;WB=Extend
unassigned;1C38..1C3A
# Punctuation
-cp;1C3B;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION TA-ROL;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1C3C;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION NYET THYOOM TA-ROL;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1C3D;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION CER-WA;SB=XX;Term;WB=XX;-XIDC
-cp;1C3E;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION TSHOOK CER-WA;SB=XX;Term;WB=XX;-XIDC
-cp;1C3F;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION TSHOOK;SB=XX;Term;WB=XX;-XIDC
+cp;1C3B;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION TA-ROL;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1C3C;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION NYET THYOOM TA-ROL;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;1C3D;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION CER-WA;SB=XX;Term;WB=XX;-XIDC
+cp;1C3E;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION TSHOOK CER-WA;SB=XX;Term;WB=XX;-XIDC
+cp;1C3F;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION TSHOOK;SB=XX;Term;WB=XX;-XIDC
# Digits
cp;1C40;-Alpha;gc=Nd;InSC=Number;lb=NU;na=LEPCHA DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
cp;1C41;-Alpha;gc=Nd;InSC=Number;lb=NU;na=LEPCHA DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
@@ -8781,7 +8798,7 @@ cp;1C4D;IDS;na=LEPCHA LETTER TTA;XIDS
cp;1C4E;IDS;na=LEPCHA LETTER TTHA;XIDS
cp;1C4F;IDS;na=LEPCHA LETTER DDA;XIDS
-block;1C50..1C7F;age=5.1;Alpha;blk=Ol_Chiki;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Olck;WB=LE;XIDC;XIDS
+block;1C50..1C7F;age=5.1;Alpha;blk=Ol_Chiki;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Olck;WB=LE;XIDC;XIDS
# 1C50..1C7F Ol Chiki
# Digits
cp;1C50;-Alpha;gc=Nd;-IDS;lb=NU;na=OL CHIKI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -8833,10 +8850,10 @@ cp;1C7B;CI;Dia;Ext;gc=Lm;na=OL CHIKI RELAA
cp;1C7C;CI;Dia;gc=Lm;na=OL CHIKI PHAARKAA
cp;1C7D;CI;Dia;gc=Lm;na=OL CHIKI AHAD
# Punctuation
-cp;1C7E;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=OL CHIKI PUNCTUATION MUCAAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1C7F;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=OL CHIKI PUNCTUATION DOUBLE MUCAAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1C7E;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=OL CHIKI PUNCTUATION MUCAAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1C7F;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=OL CHIKI PUNCTUATION DOUBLE MUCAAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;1C80..1C8F;age=9.0;Alpha;blk=Cyrillic_Ext_C;Cased;CWCF;CWCM;CWKCF;CWT;CWU;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;NFKC_SCF=0442;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
+block;1C80..1C8F;age=9.0;Alpha;blk=Cyrillic_Ext_C;Cased;CWCF;CWCM;CWKCF;CWT;CWU;gc=Ll;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=AL;Lower;NFKC_SCF=0442;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# 1C80..1C8F Cyrillic Extended-C
# Historic letter variants
cp;1C80;cf=0432;na=CYRILLIC SMALL LETTER ROUNDED VE;NFKC_CF=0432;NFKC_SCF=0432;scf=0432;stc=0412;suc=0412
@@ -8850,7 +8867,7 @@ cp;1C87;cf=0463;na=CYRILLIC SMALL LETTER TALL YAT;NFKC_CF=0463;NFKC_SCF=0463;scf
cp;1C88;cf=A64B;na=CYRILLIC SMALL LETTER UNBLENDED UK;NFKC_CF=A64B;NFKC_SCF=A64B;scf=A64B;stc=A64A;suc=A64A
unassigned;1C89..1C8F
-block;1C90..1CBF;age=11.0;Alpha;blk=Georgian_Ext;Cased;CWCF;CWCM;CWKCF;CWL;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Geor;Upper;WB=LE;XIDC;XIDS
+block;1C90..1CBF;age=11.0;Alpha;blk=Georgian_Ext;Cased;CWCF;CWCM;CWKCF;CWL;gc=Lu;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LE;sc=Geor;Upper;WB=LE;XIDC;XIDS
# 1C90..1CBF Georgian Extended
# Capital letters (Mtavruli)
cp;1C90;cf=10D0;na=GEORGIAN MTAVRULI CAPITAL LETTER AN;NFKC_CF=10D0;NFKC_SCF=10D0;scf=10D0;slc=10D0
@@ -8905,7 +8922,7 @@ cp;1CBD;cf=10FD;na=GEORGIAN MTAVRULI CAPITAL LETTER AEN;NFKC_CF=10FD;NFKC_SCF=10
cp;1CBE;cf=10FE;na=GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN;NFKC_CF=10FE;NFKC_SCF=10FE;scf=10FE;slc=10FE
cp;1CBF;cf=10FF;na=GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN;NFKC_CF=10FF;NFKC_SCF=10FF;scf=10FF;slc=10FF
-block;1CC0..1CCF;age=6.1;blk=Sundanese_Sup;gc=Po;Gr_Base;lb=AL;sc=Sund
+block;1CC0..1CCF;age=6.1;blk=Sundanese_Sup;gc=Po;Gr_Base;Identifier_Type=Limited_Use Not_XID;lb=AL;sc=Sund
# 1CC0..1CCF Sundanese Supplement
# Punctuation
cp;1CC0;na=SUNDANESE PUNCTUATION BINDU SURYA
@@ -8918,14 +8935,14 @@ cp;1CC6;na=SUNDANESE PUNCTUATION BINDU DA SATANGA
cp;1CC7;na=SUNDANESE PUNCTUATION BINDU BA SATANGA
unassigned;1CC8..1CCF
-block;1CD0..1CFF;age=5.2;bc=NSM;blk=Vedic_Ext;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;InSC=Cantillation_Mark;jt=T;lb=CM;SB=EX;sc=Zinh;scx=Deva;WB=Extend;XIDC
+block;1CD0..1CFF;age=5.2;bc=NSM;blk=Vedic_Ext;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Obsolete;InCB=Extend;InSC=Cantillation_Mark;jt=T;lb=CM;SB=EX;sc=Zinh;scx=Deva;WB=Extend;XIDC
# 1CD0..1CFF Vedic Extensions
# Tone marks for the Samaveda
cp;1CD0;ccc=230;InPC=Top;na=VEDIC TONE KARSHANA;scx=Beng Deva Gran Knda
cp;1CD1;ccc=230;InPC=Top;na=VEDIC TONE SHARA
cp;1CD2;ccc=230;InPC=Top;na=VEDIC TONE PRENKHA;scx=Beng Deva Gran Knda
# Breathing mark for the Samaveda
-cp;1CD3;bc=L;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN NIHSHVASA;SB=XX;sc=Zyyy;scx=Deva Gran;WB=XX;-XIDC
+cp;1CD3;bc=L;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Obsolete Not_XID;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN NIHSHVASA;SB=XX;sc=Zyyy;scx=Deva Gran;WB=XX;-XIDC
# Signs for Yajurvedic
cp;1CD4;ccc=1;InPC=Overstruck;na=VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
cp;1CD5;ccc=220;InPC=Bottom;na=VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;scx=Beng Deva
@@ -8975,10 +8992,10 @@ cp;1CF7;age=10.0;bc=L;-CI;gc=Mc;GCB=SM;Gr_Base;-Gr_Ext;InCB=None;InPC=Right;jt=U
cp;1CF8;age=7.0;ccc=230;na=VEDIC TONE RING ABOVE;scx=Deva Gran
cp;1CF9;age=7.0;ccc=230;na=VEDIC TONE DOUBLE RING ABOVE;scx=Deva Gran
# Nasalization sign
-cp;1CFA;age=12.0;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Consonant_Placeholder;jt=U;lb=AL;na=VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA;SB=LE;sc=Zyyy;scx=Nand;WB=LE;XIDS
+cp;1CFA;age=12.0;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Type=Exclusion;IDS;InCB=None;InSC=Consonant_Placeholder;jt=U;lb=AL;na=VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA;SB=LE;sc=Zyyy;scx=Nand;WB=LE;XIDS
unassigned;1CFB..1CFF
-block;1D00..1D7F;age=4.0;Alpha;blk=Phonetic_Ext;Cased;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+block;1D00..1D7F;age=4.0;Alpha;blk=Phonetic_Ext;Cased;gc=Ll;Gr_Base;IDC;Identifier_Type=Technical;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 1D00..1D7F Phonetic Extensions
# Latin letters
cp;1D00;na=LATIN LETTER SMALL CAPITAL A
@@ -9028,72 +9045,72 @@ cp;1D2A;na=GREEK LETTER SMALL CAPITAL PSI;sc=Grek
# Cyrillic letter
cp;1D2B;na=CYRILLIC LETTER SMALL CAPITAL EL;sc=Cyrl
# Latin superscript modifier letters
-cp;1D2C;CI;CWKCF;Dia;dm=0041;dt=Sup;FC_NFKC=0061;gc=Lm;na=MODIFIER LETTER CAPITAL A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N
-cp;1D2D;CI;CWKCF;Dia;dm=00C6;dt=Sup;FC_NFKC=00E6;gc=Lm;na=MODIFIER LETTER CAPITAL AE;NFKC_CF=00E6;NFKC_QC=N;NFKC_SCF=00E6;NFKD_QC=N
-cp;1D2E;CI;CWKCF;Dia;dm=0042;dt=Sup;FC_NFKC=0062;gc=Lm;na=MODIFIER LETTER CAPITAL B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N
+cp;1D2C;CI;CWKCF;Dia;dm=0041;dt=Sup;FC_NFKC=0061;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N
+cp;1D2D;CI;CWKCF;Dia;dm=00C6;dt=Sup;FC_NFKC=00E6;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL AE;NFKC_CF=00E6;NFKC_QC=N;NFKC_SCF=00E6;NFKD_QC=N
+cp;1D2E;CI;CWKCF;Dia;dm=0042;dt=Sup;FC_NFKC=0062;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N
cp;1D2F;CI;Dia;gc=Lm;na=MODIFIER LETTER CAPITAL BARRED B
-cp;1D30;CI;CWKCF;Dia;dm=0044;dt=Sup;FC_NFKC=0064;gc=Lm;na=MODIFIER LETTER CAPITAL D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N
-cp;1D31;CI;CWKCF;Dia;dm=0045;dt=Sup;FC_NFKC=0065;gc=Lm;na=MODIFIER LETTER CAPITAL E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N
-cp;1D32;CI;CWKCF;Dia;dm=018E;dt=Sup;FC_NFKC=01DD;gc=Lm;na=MODIFIER LETTER CAPITAL REVERSED E;NFKC_CF=01DD;NFKC_QC=N;NFKC_SCF=01DD;NFKD_QC=N
-cp;1D33;CI;CWKCF;Dia;dm=0047;dt=Sup;FC_NFKC=0067;gc=Lm;na=MODIFIER LETTER CAPITAL G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N
-cp;1D34;CI;CWKCF;Dia;dm=0048;dt=Sup;FC_NFKC=0068;gc=Lm;na=MODIFIER LETTER CAPITAL H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N
-cp;1D35;CI;CWKCF;Dia;dm=0049;dt=Sup;FC_NFKC=0069;gc=Lm;na=MODIFIER LETTER CAPITAL I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N
-cp;1D36;CI;CWKCF;Dia;dm=004A;dt=Sup;FC_NFKC=006A;gc=Lm;na=MODIFIER LETTER CAPITAL J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N
-cp;1D37;CI;CWKCF;Dia;dm=004B;dt=Sup;FC_NFKC=006B;gc=Lm;na=MODIFIER LETTER CAPITAL K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N
-cp;1D38;CI;CWKCF;Dia;dm=004C;dt=Sup;FC_NFKC=006C;gc=Lm;na=MODIFIER LETTER CAPITAL L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N
-cp;1D39;CI;CWKCF;Dia;dm=004D;dt=Sup;FC_NFKC=006D;gc=Lm;na=MODIFIER LETTER CAPITAL M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N
-cp;1D3A;CI;CWKCF;Dia;dm=004E;dt=Sup;FC_NFKC=006E;gc=Lm;na=MODIFIER LETTER CAPITAL N;NFKC_CF=006E;NFKC_QC=N;NFKC_SCF=006E;NFKD_QC=N
+cp;1D30;CI;CWKCF;Dia;dm=0044;dt=Sup;FC_NFKC=0064;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N
+cp;1D31;CI;CWKCF;Dia;dm=0045;dt=Sup;FC_NFKC=0065;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N
+cp;1D32;CI;CWKCF;Dia;dm=018E;dt=Sup;FC_NFKC=01DD;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL REVERSED E;NFKC_CF=01DD;NFKC_QC=N;NFKC_SCF=01DD;NFKD_QC=N
+cp;1D33;CI;CWKCF;Dia;dm=0047;dt=Sup;FC_NFKC=0067;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N
+cp;1D34;CI;CWKCF;Dia;dm=0048;dt=Sup;FC_NFKC=0068;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N
+cp;1D35;CI;CWKCF;Dia;dm=0049;dt=Sup;FC_NFKC=0069;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N
+cp;1D36;CI;CWKCF;Dia;dm=004A;dt=Sup;FC_NFKC=006A;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N
+cp;1D37;CI;CWKCF;Dia;dm=004B;dt=Sup;FC_NFKC=006B;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N
+cp;1D38;CI;CWKCF;Dia;dm=004C;dt=Sup;FC_NFKC=006C;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N
+cp;1D39;CI;CWKCF;Dia;dm=004D;dt=Sup;FC_NFKC=006D;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N
+cp;1D3A;CI;CWKCF;Dia;dm=004E;dt=Sup;FC_NFKC=006E;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL N;NFKC_CF=006E;NFKC_QC=N;NFKC_SCF=006E;NFKD_QC=N
cp;1D3B;CI;Dia;gc=Lm;na=MODIFIER LETTER CAPITAL REVERSED N
-cp;1D3C;CI;CWKCF;Dia;dm=004F;dt=Sup;FC_NFKC=006F;gc=Lm;na=MODIFIER LETTER CAPITAL O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N
-cp;1D3D;CI;CWKCF;Dia;dm=0222;dt=Sup;FC_NFKC=0223;gc=Lm;na=MODIFIER LETTER CAPITAL OU;NFKC_CF=0223;NFKC_QC=N;NFKC_SCF=0223;NFKD_QC=N
-cp;1D3E;CI;CWKCF;Dia;dm=0050;dt=Sup;FC_NFKC=0070;gc=Lm;na=MODIFIER LETTER CAPITAL P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N
-cp;1D3F;CI;CWKCF;Dia;dm=0052;dt=Sup;FC_NFKC=0072;gc=Lm;na=MODIFIER LETTER CAPITAL R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
-cp;1D40;CI;CWKCF;Dia;dm=0054;dt=Sup;FC_NFKC=0074;gc=Lm;na=MODIFIER LETTER CAPITAL T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N
-cp;1D41;CI;CWKCF;Dia;dm=0055;dt=Sup;FC_NFKC=0075;gc=Lm;na=MODIFIER LETTER CAPITAL U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
-cp;1D42;CI;CWKCF;Dia;dm=0057;dt=Sup;FC_NFKC=0077;gc=Lm;na=MODIFIER LETTER CAPITAL W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N
-cp;1D43;CI;CWKCF;Dia;dm=0061;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N
-cp;1D44;CI;CWKCF;Dia;dm=0250;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED A;NFKC_CF=0250;NFKC_QC=N;NFKC_SCF=0250;NFKD_QC=N
-cp;1D45;CI;CWKCF;Dia;dm=0251;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL ALPHA;NFKC_CF=0251;NFKC_QC=N;NFKC_SCF=0251;NFKD_QC=N
-cp;1D46;CI;CWKCF;Dia;dm=1D02;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED AE;NFKC_CF=1D02;NFKC_QC=N;NFKC_SCF=1D02;NFKD_QC=N
-cp;1D47;CI;CWKCF;Dia;dm=0062;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N
-cp;1D48;CI;CWKCF;Dia;dm=0064;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N
-cp;1D49;CI;CWKCF;Dia;dm=0065;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N
-cp;1D4A;CI;CWKCF;Dia;dm=0259;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL SCHWA;NFKC_CF=0259;NFKC_QC=N;NFKC_SCF=0259;NFKD_QC=N
-cp;1D4B;CI;CWKCF;Dia;dm=025B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL OPEN E;NFKC_CF=025B;NFKC_QC=N;NFKC_SCF=025B;NFKD_QC=N
-cp;1D4C;CI;CWKCF;Dia;dm=025C;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED OPEN E;NFKC_CF=025C;NFKC_QC=N;NFKC_SCF=025C;NFKD_QC=N
-cp;1D4D;CI;CWKCF;Dia;dm=0067;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N
+cp;1D3C;CI;CWKCF;Dia;dm=004F;dt=Sup;FC_NFKC=006F;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N
+cp;1D3D;CI;CWKCF;Dia;dm=0222;dt=Sup;FC_NFKC=0223;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL OU;NFKC_CF=0223;NFKC_QC=N;NFKC_SCF=0223;NFKD_QC=N
+cp;1D3E;CI;CWKCF;Dia;dm=0050;dt=Sup;FC_NFKC=0070;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N
+cp;1D3F;CI;CWKCF;Dia;dm=0052;dt=Sup;FC_NFKC=0072;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
+cp;1D40;CI;CWKCF;Dia;dm=0054;dt=Sup;FC_NFKC=0074;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N
+cp;1D41;CI;CWKCF;Dia;dm=0055;dt=Sup;FC_NFKC=0075;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
+cp;1D42;CI;CWKCF;Dia;dm=0057;dt=Sup;FC_NFKC=0077;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CAPITAL W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N
+cp;1D43;CI;CWKCF;Dia;dm=0061;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N
+cp;1D44;CI;CWKCF;Dia;dm=0250;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL TURNED A;NFKC_CF=0250;NFKC_QC=N;NFKC_SCF=0250;NFKD_QC=N
+cp;1D45;CI;CWKCF;Dia;dm=0251;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL ALPHA;NFKC_CF=0251;NFKC_QC=N;NFKC_SCF=0251;NFKD_QC=N
+cp;1D46;CI;CWKCF;Dia;dm=1D02;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL TURNED AE;NFKC_CF=1D02;NFKC_QC=N;NFKC_SCF=1D02;NFKD_QC=N
+cp;1D47;CI;CWKCF;Dia;dm=0062;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N
+cp;1D48;CI;CWKCF;Dia;dm=0064;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N
+cp;1D49;CI;CWKCF;Dia;dm=0065;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N
+cp;1D4A;CI;CWKCF;Dia;dm=0259;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL SCHWA;NFKC_CF=0259;NFKC_QC=N;NFKC_SCF=0259;NFKD_QC=N
+cp;1D4B;CI;CWKCF;Dia;dm=025B;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL OPEN E;NFKC_CF=025B;NFKC_QC=N;NFKC_SCF=025B;NFKD_QC=N
+cp;1D4C;CI;CWKCF;Dia;dm=025C;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL TURNED OPEN E;NFKC_CF=025C;NFKC_QC=N;NFKC_SCF=025C;NFKD_QC=N
+cp;1D4D;CI;CWKCF;Dia;dm=0067;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N
cp;1D4E;CI;Dia;gc=Lm;na=MODIFIER LETTER SMALL TURNED I
-cp;1D4F;CI;CWKCF;Dia;dm=006B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N
-cp;1D50;CI;CWKCF;Dia;dm=006D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N
-cp;1D51;CI;CWKCF;Dia;dm=014B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL ENG;NFKC_CF=014B;NFKC_QC=N;NFKC_SCF=014B;NFKD_QC=N
-cp;1D52;CI;CWKCF;Dia;dm=006F;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N
-cp;1D53;CI;CWKCF;Dia;dm=0254;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL OPEN O;NFKC_CF=0254;NFKC_QC=N;NFKC_SCF=0254;NFKD_QC=N
-cp;1D54;CI;CWKCF;Dia;dm=1D16;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TOP HALF O;NFKC_CF=1D16;NFKC_QC=N;NFKC_SCF=1D16;NFKD_QC=N
-cp;1D55;CI;CWKCF;Dia;dm=1D17;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL BOTTOM HALF O;NFKC_CF=1D17;NFKC_QC=N;NFKC_SCF=1D17;NFKD_QC=N
-cp;1D56;CI;CWKCF;Dia;dm=0070;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N
-cp;1D57;CI;CWKCF;Dia;dm=0074;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N
-cp;1D58;CI;CWKCF;Dia;dm=0075;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
-cp;1D59;CI;CWKCF;Dia;dm=1D1D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL SIDEWAYS U;NFKC_CF=1D1D;NFKC_QC=N;NFKC_SCF=1D1D;NFKD_QC=N
-cp;1D5A;CI;CWKCF;Dia;dm=026F;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED M;NFKC_CF=026F;NFKC_QC=N;NFKC_SCF=026F;NFKD_QC=N
-cp;1D5B;CI;CWKCF;Dia;dm=0076;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N
-cp;1D5C;CI;CWKCF;Dia;dm=1D25;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL AIN;NFKC_CF=1D25;NFKC_QC=N;NFKC_SCF=1D25;NFKD_QC=N
+cp;1D4F;CI;CWKCF;Dia;dm=006B;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N
+cp;1D50;CI;CWKCF;Dia;dm=006D;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N
+cp;1D51;CI;CWKCF;Dia;dm=014B;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL ENG;NFKC_CF=014B;NFKC_QC=N;NFKC_SCF=014B;NFKD_QC=N
+cp;1D52;CI;CWKCF;Dia;dm=006F;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N
+cp;1D53;CI;CWKCF;Dia;dm=0254;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL OPEN O;NFKC_CF=0254;NFKC_QC=N;NFKC_SCF=0254;NFKD_QC=N
+cp;1D54;CI;CWKCF;Dia;dm=1D16;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL TOP HALF O;NFKC_CF=1D16;NFKC_QC=N;NFKC_SCF=1D16;NFKD_QC=N
+cp;1D55;CI;CWKCF;Dia;dm=1D17;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL BOTTOM HALF O;NFKC_CF=1D17;NFKC_QC=N;NFKC_SCF=1D17;NFKD_QC=N
+cp;1D56;CI;CWKCF;Dia;dm=0070;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N
+cp;1D57;CI;CWKCF;Dia;dm=0074;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N
+cp;1D58;CI;CWKCF;Dia;dm=0075;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
+cp;1D59;CI;CWKCF;Dia;dm=1D1D;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL SIDEWAYS U;NFKC_CF=1D1D;NFKC_QC=N;NFKC_SCF=1D1D;NFKD_QC=N
+cp;1D5A;CI;CWKCF;Dia;dm=026F;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL TURNED M;NFKC_CF=026F;NFKC_QC=N;NFKC_SCF=026F;NFKD_QC=N
+cp;1D5B;CI;CWKCF;Dia;dm=0076;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N
+cp;1D5C;CI;CWKCF;Dia;dm=1D25;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL AIN;NFKC_CF=1D25;NFKC_QC=N;NFKC_SCF=1D25;NFKD_QC=N
# Greek superscript modifier letters
-cp;1D5D;CI;CWKCF;Dia;dm=03B2;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL BETA;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;sc=Grek
-cp;1D5E;CI;CWKCF;Dia;dm=03B3;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL GREEK GAMMA;NFKC_CF=03B3;NFKC_QC=N;NFKC_SCF=03B3;NFKD_QC=N;sc=Grek
-cp;1D5F;CI;CWKCF;Dia;dm=03B4;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL DELTA;NFKC_CF=03B4;NFKC_QC=N;NFKC_SCF=03B4;NFKD_QC=N;sc=Grek
-cp;1D60;CI;CWKCF;Dia;dm=03C6;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL GREEK PHI;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;sc=Grek
-cp;1D61;CI;CWKCF;Dia;dm=03C7;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL CHI;NFKC_CF=03C7;NFKC_QC=N;NFKC_SCF=03C7;NFKD_QC=N;sc=Grek
+cp;1D5D;CI;CWKCF;Dia;dm=03B2;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL BETA;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;sc=Grek
+cp;1D5E;CI;CWKCF;Dia;dm=03B3;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL GREEK GAMMA;NFKC_CF=03B3;NFKC_QC=N;NFKC_SCF=03B3;NFKD_QC=N;sc=Grek
+cp;1D5F;CI;CWKCF;Dia;dm=03B4;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL DELTA;NFKC_CF=03B4;NFKC_QC=N;NFKC_SCF=03B4;NFKD_QC=N;sc=Grek
+cp;1D60;CI;CWKCF;Dia;dm=03C6;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL GREEK PHI;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;sc=Grek
+cp;1D61;CI;CWKCF;Dia;dm=03C7;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL CHI;NFKC_CF=03C7;NFKC_QC=N;NFKC_SCF=03C7;NFKD_QC=N;sc=Grek
# Latin subscript modifier letters
-cp;1D62;CI;CWKCF;Dia;dm=0069;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N;SD
-cp;1D63;CI;CWKCF;Dia;dm=0072;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
-cp;1D64;CI;CWKCF;Dia;dm=0075;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
-cp;1D65;CI;CWKCF;Dia;dm=0076;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N
+cp;1D62;CI;CWKCF;Dia;dm=0069;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=LATIN SUBSCRIPT SMALL LETTER I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N;SD
+cp;1D63;CI;CWKCF;Dia;dm=0072;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=LATIN SUBSCRIPT SMALL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
+cp;1D64;CI;CWKCF;Dia;dm=0075;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=LATIN SUBSCRIPT SMALL LETTER U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
+cp;1D65;CI;CWKCF;Dia;dm=0076;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=LATIN SUBSCRIPT SMALL LETTER V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N
# Greek subscript modifier letters
-cp;1D66;CI;CWKCF;Dia;dm=03B2;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER BETA;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;sc=Grek
-cp;1D67;CI;CWKCF;Dia;dm=03B3;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER GAMMA;NFKC_CF=03B3;NFKC_QC=N;NFKC_SCF=03B3;NFKD_QC=N;sc=Grek
-cp;1D68;CI;CWKCF;Dia;dm=03C1;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER RHO;NFKC_CF=03C1;NFKC_QC=N;NFKC_SCF=03C1;NFKD_QC=N;sc=Grek
-cp;1D69;CI;CWKCF;Dia;dm=03C6;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER PHI;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;sc=Grek
-cp;1D6A;CI;CWKCF;Dia;dm=03C7;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER CHI;NFKC_CF=03C7;NFKC_QC=N;NFKC_SCF=03C7;NFKD_QC=N;sc=Grek
+cp;1D66;CI;CWKCF;Dia;dm=03B2;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=GREEK SUBSCRIPT SMALL LETTER BETA;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;sc=Grek
+cp;1D67;CI;CWKCF;Dia;dm=03B3;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=GREEK SUBSCRIPT SMALL LETTER GAMMA;NFKC_CF=03B3;NFKC_QC=N;NFKC_SCF=03B3;NFKD_QC=N;sc=Grek
+cp;1D68;CI;CWKCF;Dia;dm=03C1;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=GREEK SUBSCRIPT SMALL LETTER RHO;NFKC_CF=03C1;NFKC_QC=N;NFKC_SCF=03C1;NFKD_QC=N;sc=Grek
+cp;1D69;CI;CWKCF;Dia;dm=03C6;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=GREEK SUBSCRIPT SMALL LETTER PHI;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;sc=Grek
+cp;1D6A;CI;CWKCF;Dia;dm=03C7;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;na=GREEK SUBSCRIPT SMALL LETTER CHI;NFKC_CF=03C7;NFKC_QC=N;NFKC_SCF=03C7;NFKD_QC=N;sc=Grek
# Latin letter for American lexicography
cp;1D6B;na=LATIN SMALL LETTER UE
# Latin letters with middle tilde
@@ -9110,7 +9127,7 @@ cp;1D75;age=4.1;na=LATIN SMALL LETTER T WITH MIDDLE TILDE
cp;1D76;age=4.1;na=LATIN SMALL LETTER Z WITH MIDDLE TILDE
# Letters for Caucasian linguistics
cp;1D77;age=4.1;na=LATIN SMALL LETTER TURNED G
-cp;1D78;age=4.1;CI;CWKCF;dm=043D;dt=Sup;gc=Lm;na=MODIFIER LETTER CYRILLIC EN;NFKC_CF=043D;NFKC_QC=N;NFKC_SCF=043D;NFKD_QC=N;sc=Cyrl
+cp;1D78;age=4.1;CI;CWKCF;dm=043D;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER CYRILLIC EN;NFKC_CF=043D;NFKC_QC=N;NFKC_SCF=043D;NFKD_QC=N;sc=Cyrl
# Other phonetic symbols
cp;1D79;age=4.1;CWCM;CWT;CWU;na=LATIN SMALL LETTER INSULAR G;stc=A77D;suc=A77D
cp;1D7A;age=4.1;na=LATIN SMALL LETTER TH WITH STRIKETHROUGH
@@ -9120,37 +9137,37 @@ cp;1D7D;age=4.1;CWCM;CWT;CWU;na=LATIN SMALL LETTER P WITH STROKE;stc=2C63;suc=2C
cp;1D7E;age=4.1;na=LATIN SMALL CAPITAL LETTER U WITH STROKE
cp;1D7F;age=4.1;na=LATIN SMALL LETTER UPSILON WITH STROKE
-block;1D80..1DBF;age=4.1;Alpha;blk=Phonetic_Ext_Sup;Cased;CWKCF;dt=Sup;gc=Lm;Gr_Base;IDC;IDS;lb=AL;Lower;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+block;1D80..1DBF;age=4.1;Alpha;blk=Phonetic_Ext_Sup;Cased;CWKCF;dt=Sup;gc=Lm;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;Lower;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 1D80..1DBF Phonetic Extensions Supplement
# Latin letters with palatal hook
-cp;1D80;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER B WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D81;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER D WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D82;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER F WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D83;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER G WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D84;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER K WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D85;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER L WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D86;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER M WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D87;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER N WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D88;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER P WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D89;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER R WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D8A;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER S WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D8B;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER ESH WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D8C;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER V WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D8D;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER X WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D8E;CWCM;-CWKCF;CWT;CWU;dt=None;gc=Ll;na=LATIN SMALL LETTER Z WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y;stc=A7C6;suc=A7C6
+cp;1D80;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER B WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D81;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER D WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D82;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER F WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D83;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER G WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D84;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER K WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D85;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER L WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D86;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER M WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D87;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER N WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D88;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER P WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D89;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER R WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D8A;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER S WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D8B;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER ESH WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D8C;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER V WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D8D;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER X WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D8E;CWCM;-CWKCF;CWT;CWU;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER Z WITH PALATAL HOOK;NFKC_QC=Y;NFKD_QC=Y;stc=A7C6;suc=A7C6
# Latin letters with retroflex hook
-cp;1D8F;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER A WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D90;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D91;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER D WITH HOOK AND TAIL;NFKC_QC=Y;NFKD_QC=Y
-cp;1D92;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER E WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D93;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D94;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D95;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D96;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER I WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y;SD
-cp;1D97;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D98;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D99;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER U WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
-cp;1D9A;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D8F;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER A WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D90;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D91;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER D WITH HOOK AND TAIL;NFKC_QC=Y;NFKD_QC=Y
+cp;1D92;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER E WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D93;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D94;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D95;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D96;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER I WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y;SD
+cp;1D97;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D98;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D99;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER U WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
+cp;1D9A;-CWKCF;dt=None;gc=Ll;Identifier_Type=Technical;na=LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
# Modifier letters
cp;1D9B;CI;dm=0252;na=MODIFIER LETTER SMALL TURNED ALPHA;NFKC_CF=0252;NFKC_SCF=0252
cp;1D9C;CI;dm=0063;na=MODIFIER LETTER SMALL C;NFKC_CF=0063;NFKC_SCF=0063
@@ -9190,14 +9207,14 @@ cp;1DBD;CI;dm=0291;na=MODIFIER LETTER SMALL Z WITH CURL;NFKC_CF=0291;NFKC_SCF=02
cp;1DBE;CI;dm=0292;na=MODIFIER LETTER SMALL EZH;NFKC_CF=0292;NFKC_SCF=0292
cp;1DBF;CI;dm=03B8;na=MODIFIER LETTER SMALL THETA;NFKC_CF=03B8;NFKC_SCF=03B8;sc=Grek
-block;1DC0..1DFF;age=5.1;bc=NSM;blk=Diacriticals_Sup;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;1DC0..1DFF;age=5.1;bc=NSM;blk=Diacriticals_Sup;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
# 1DC0..1DFF Combining Diacritical Marks Supplement
# Used for Ancient Greek
-cp;1DC0;age=4.1;na=COMBINING DOTTED GRAVE ACCENT;scx=Grek
-cp;1DC1;age=4.1;na=COMBINING DOTTED ACUTE ACCENT;scx=Grek
+cp;1DC0;age=4.1;Identifier_Type=Technical Obsolete;na=COMBINING DOTTED GRAVE ACCENT;scx=Grek
+cp;1DC1;age=4.1;Identifier_Type=Technical Obsolete;na=COMBINING DOTTED ACUTE ACCENT;scx=Grek
# Miscellaneous marks
-cp;1DC2;age=4.1;ccc=220;na=COMBINING SNAKE BELOW
-cp;1DC3;age=4.1;na=COMBINING SUSPENSION MARK
+cp;1DC2;age=4.1;ccc=220;Identifier_Type=Technical Obsolete;na=COMBINING SNAKE BELOW
+cp;1DC3;age=4.1;Identifier_Type=Technical Obsolete;na=COMBINING SUSPENSION MARK
# Contour tone marks
cp;1DC4;age=5.0;Dia;na=COMBINING MACRON-ACUTE
cp;1DC5;age=5.0;Dia;na=COMBINING GRAVE-MACRON
@@ -9213,32 +9230,32 @@ cp;1DCC;Dia;na=COMBINING MACRON-BREVE
# Double diacritic
cp;1DCD;ccc=234;Dia;lb=GL;na=COMBINING DOUBLE CIRCUMFLEX ABOVE
# Medievalist additions
-cp;1DCE;ccc=214;Dia;na=COMBINING OGONEK ABOVE
+cp;1DCE;ccc=214;Dia;Identifier_Type=Technical Obsolete;na=COMBINING OGONEK ABOVE
cp;1DCF;ccc=220;Dia;na=COMBINING ZIGZAG BELOW
cp;1DD0;ccc=202;na=COMBINING IS BELOW
-cp;1DD1;na=COMBINING UR ABOVE
-cp;1DD2;na=COMBINING US ABOVE
+cp;1DD1;Identifier_Type=Technical Obsolete;na=COMBINING UR ABOVE
+cp;1DD2;Identifier_Type=Technical Obsolete;na=COMBINING US ABOVE
# Medieval superscript letter diacritics
-cp;1DD3;na=COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE
-cp;1DD4;na=COMBINING LATIN SMALL LETTER AE
-cp;1DD5;na=COMBINING LATIN SMALL LETTER AO
-cp;1DD6;na=COMBINING LATIN SMALL LETTER AV
-cp;1DD7;na=COMBINING LATIN SMALL LETTER C CEDILLA
-cp;1DD8;na=COMBINING LATIN SMALL LETTER INSULAR D
-cp;1DD9;na=COMBINING LATIN SMALL LETTER ETH
-cp;1DDA;na=COMBINING LATIN SMALL LETTER G
-cp;1DDB;na=COMBINING LATIN LETTER SMALL CAPITAL G
-cp;1DDC;na=COMBINING LATIN SMALL LETTER K
-cp;1DDD;na=COMBINING LATIN SMALL LETTER L
-cp;1DDE;na=COMBINING LATIN LETTER SMALL CAPITAL L
-cp;1DDF;na=COMBINING LATIN LETTER SMALL CAPITAL M
-cp;1DE0;na=COMBINING LATIN SMALL LETTER N
-cp;1DE1;na=COMBINING LATIN LETTER SMALL CAPITAL N
-cp;1DE2;na=COMBINING LATIN LETTER SMALL CAPITAL R
-cp;1DE3;na=COMBINING LATIN SMALL LETTER R ROTUNDA
-cp;1DE4;na=COMBINING LATIN SMALL LETTER S
-cp;1DE5;na=COMBINING LATIN SMALL LETTER LONG S
-cp;1DE6;na=COMBINING LATIN SMALL LETTER Z
+cp;1DD3;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE
+cp;1DD4;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER AE
+cp;1DD5;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER AO
+cp;1DD6;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER AV
+cp;1DD7;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER C CEDILLA
+cp;1DD8;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER INSULAR D
+cp;1DD9;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER ETH
+cp;1DDA;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER G
+cp;1DDB;Identifier_Type=Technical Obsolete;na=COMBINING LATIN LETTER SMALL CAPITAL G
+cp;1DDC;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER K
+cp;1DDD;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER L
+cp;1DDE;Identifier_Type=Technical Obsolete;na=COMBINING LATIN LETTER SMALL CAPITAL L
+cp;1DDF;Identifier_Type=Technical Obsolete;na=COMBINING LATIN LETTER SMALL CAPITAL M
+cp;1DE0;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER N
+cp;1DE1;Identifier_Type=Technical Obsolete;na=COMBINING LATIN LETTER SMALL CAPITAL N
+cp;1DE2;Identifier_Type=Technical Obsolete;na=COMBINING LATIN LETTER SMALL CAPITAL R
+cp;1DE3;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER R ROTUNDA
+cp;1DE4;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER S
+cp;1DE5;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER LONG S
+cp;1DE6;Identifier_Type=Technical Obsolete;na=COMBINING LATIN SMALL LETTER Z
# Superscript letter diacritics for German dialectology
cp;1DE7;age=7.0;Alpha;na=COMBINING LATIN SMALL LETTER ALPHA
cp;1DE8;age=7.0;Alpha;na=COMBINING LATIN SMALL LETTER B
@@ -9262,7 +9279,7 @@ cp;1DF7;age=10.0;ccc=228;Dia;na=COMBINING KAVYKA ABOVE LEFT
# Miscellaneous marks
cp;1DF8;age=10.0;ccc=228;Dia;na=COMBINING DOT ABOVE LEFT;scx=Cyrl Syrc
cp;1DF9;age=10.0;ccc=220;Dia;na=COMBINING WIDE INVERTED BRIDGE BELOW
-cp;1DFA;age=14.0;ccc=218;Dia;na=COMBINING DOT BELOW LEFT;scx=Syrc
+cp;1DFA;age=14.0;ccc=218;Dia;Identifier_Type=Limited_Use Technical;na=COMBINING DOT BELOW LEFT;scx=Syrc
cp;1DFB;age=9.0;Dia;InPC=Top;InSC=Syllable_Modifier;na=COMBINING DELETION MARK
# Double diacritic mark for UPA
cp;1DFC;age=6.0;ccc=233;Dia;lb=GL;na=COMBINING DOUBLE INVERTED BREVE BELOW
@@ -9272,7 +9289,7 @@ cp;1DFD;age=5.2;ccc=220;Dia;na=COMBINING ALMOST EQUAL TO BELOW
cp;1DFE;age=5.0;Dia;na=COMBINING LEFT ARROWHEAD ABOVE
cp;1DFF;age=5.0;ccc=220;Dia;na=COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
-block;1E00..1EFF;age=1.1;Alpha;blk=Latin_Ext_Additional;Cased;CWCM;dt=Can;gc=Ll;Gr_Base;IDC;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+block;1E00..1EFF;age=1.1;Alpha;blk=Latin_Ext_Additional;Cased;CWCM;dt=Can;gc=Ll;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 1E00..1EFF Latin Extended Additional
# Latin general use extensions
cp;1E00;cf=1E01;CWCF;CWKCF;CWL;dm=0041 0325;gc=Lu;na=LATIN CAPITAL LETTER A WITH RING BELOW;NFKC_CF=1E01;NFKC_SCF=1E01;SB=UP;scf=1E01;slc=1E01;Upper
@@ -9429,15 +9446,15 @@ cp;1E96;cf=0068 0331;CWT;CWU;dm=0068 0331;lc=1E96;Lower;na=LATIN SMALL LETTER H
cp;1E97;cf=0074 0308;CWT;CWU;dm=0074 0308;lc=1E97;Lower;na=LATIN SMALL LETTER T WITH DIAERESIS;tc=0054 0308;uc=0054 0308
cp;1E98;cf=0077 030A;CWT;CWU;dm=0077 030A;lc=1E98;Lower;na=LATIN SMALL LETTER W WITH RING ABOVE;tc=0057 030A;uc=0057 030A
cp;1E99;cf=0079 030A;CWT;CWU;dm=0079 030A;lc=1E99;Lower;na=LATIN SMALL LETTER Y WITH RING ABOVE;tc=0059 030A;uc=0059 030A
-cp;1E9A;cf=0061 02BE;CWCF;CWKCF;CWT;CWU;dm=0061 02BE;dt=Com;lc=1E9A;Lower;na=LATIN SMALL LETTER A WITH RIGHT HALF RING;NFD_QC=Y;NFKC_CF=0061 02BE;NFKC_QC=N;NFKC_SCF=0061 02BE;tc=0041 02BE;uc=0041 02BE
-cp;1E9B;age=2.0;cf=1E61;CWCF;CWKCF;CWT;CWU;dm=017F 0307;Lower;na=LATIN SMALL LETTER LONG S WITH DOT ABOVE;NFKC_CF=1E61;NFKC_QC=N;NFKC_SCF=1E61;scf=1E61;stc=1E60;suc=1E60
+cp;1E9A;cf=0061 02BE;CWCF;CWKCF;CWT;CWU;dm=0061 02BE;dt=Com;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;lc=1E9A;Lower;na=LATIN SMALL LETTER A WITH RIGHT HALF RING;NFD_QC=Y;NFKC_CF=0061 02BE;NFKC_QC=N;NFKC_SCF=0061 02BE;tc=0041 02BE;uc=0041 02BE
+cp;1E9B;age=2.0;cf=1E61;CWCF;CWKCF;CWT;CWU;dm=017F 0307;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=LATIN SMALL LETTER LONG S WITH DOT ABOVE;NFKC_CF=1E61;NFKC_QC=N;NFKC_SCF=1E61;scf=1E61;stc=1E60;suc=1E60
# Medievalist additions
-cp;1E9C;age=5.1;-CWCM;dt=None;Lower;na=LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;NFD_QC=Y;NFKD_QC=Y
-cp;1E9D;age=5.1;-CWCM;dt=None;Lower;na=LATIN SMALL LETTER LONG S WITH HIGH STROKE;NFD_QC=Y;NFKD_QC=Y
+cp;1E9C;age=5.1;-CWCM;dt=None;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;NFD_QC=Y;NFKD_QC=Y
+cp;1E9D;age=5.1;-CWCM;dt=None;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER LONG S WITH HIGH STROKE;NFD_QC=Y;NFKD_QC=Y
# Addition for German typography
cp;1E9E;age=5.1;cf=0073 0073;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER SHARP S;NFD_QC=Y;NFKC_CF=0073 0073;NFKC_SCF=00DF;NFKD_QC=Y;SB=UP;scf=00DF;slc=00DF;Upper
# Medievalist addition
-cp;1E9F;age=5.1;-CWCM;dt=None;Lower;na=LATIN SMALL LETTER DELTA;NFD_QC=Y;NFKD_QC=Y
+cp;1E9F;age=5.1;-CWCM;dt=None;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER DELTA;NFD_QC=Y;NFKD_QC=Y
# Latin extensions for Vietnamese
cp;1EA0;cf=1EA1;CWCF;CWKCF;CWL;dm=0041 0323;gc=Lu;na=LATIN CAPITAL LETTER A WITH DOT BELOW;NFKC_CF=1EA1;NFKC_SCF=1EA1;SB=UP;scf=1EA1;slc=1EA1;Upper
cp;1EA1;CWT;CWU;dm=0061 0323;Lower;na=LATIN SMALL LETTER A WITH DOT BELOW;stc=1EA0;suc=1EA0
@@ -9531,14 +9548,14 @@ cp;1EF7;CWT;CWU;dm=0079 0309;Lower;na=LATIN SMALL LETTER Y WITH HOOK ABOVE;stc=1
cp;1EF8;cf=1EF9;CWCF;CWKCF;CWL;dm=0059 0303;gc=Lu;na=LATIN CAPITAL LETTER Y WITH TILDE;NFKC_CF=1EF9;NFKC_SCF=1EF9;SB=UP;scf=1EF9;slc=1EF9;Upper
cp;1EF9;CWT;CWU;dm=0079 0303;Lower;na=LATIN SMALL LETTER Y WITH TILDE;stc=1EF8;suc=1EF8
# Medievalist additions
-cp;1EFA;age=5.1;cf=1EFB;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE-WELSH LL;NFD_QC=Y;NFKC_CF=1EFB;NFKC_SCF=1EFB;NFKD_QC=Y;SB=UP;scf=1EFB;slc=1EFB;Upper
-cp;1EFB;age=5.1;CWT;CWU;dt=None;Lower;na=LATIN SMALL LETTER MIDDLE-WELSH LL;NFD_QC=Y;NFKD_QC=Y;stc=1EFA;suc=1EFA
-cp;1EFC;age=5.1;cf=1EFD;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE-WELSH V;NFD_QC=Y;NFKC_CF=1EFD;NFKC_SCF=1EFD;NFKD_QC=Y;SB=UP;scf=1EFD;slc=1EFD;Upper
-cp;1EFD;age=5.1;CWT;CWU;dt=None;Lower;na=LATIN SMALL LETTER MIDDLE-WELSH V;NFD_QC=Y;NFKD_QC=Y;stc=1EFC;suc=1EFC
-cp;1EFE;age=5.1;cf=1EFF;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER Y WITH LOOP;NFD_QC=Y;NFKC_CF=1EFF;NFKC_SCF=1EFF;NFKD_QC=Y;SB=UP;scf=1EFF;slc=1EFF;Upper
-cp;1EFF;age=5.1;CWT;CWU;dt=None;Lower;na=LATIN SMALL LETTER Y WITH LOOP;NFD_QC=Y;NFKD_QC=Y;stc=1EFE;suc=1EFE
-
-block;1F00..1FFF;age=1.1;Alpha;blk=Greek_Ext;Cased;CWCF;CWCM;CWKCF;CWU;dt=Can;gc=Ll;Gr_Base;IDC;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Grek;WB=LE;XIDC;XIDS
+cp;1EFA;age=5.1;cf=1EFB;CWCF;CWKCF;CWL;dt=None;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Technical;na=LATIN CAPITAL LETTER MIDDLE-WELSH LL;NFD_QC=Y;NFKC_CF=1EFB;NFKC_SCF=1EFB;NFKD_QC=Y;SB=UP;scf=1EFB;slc=1EFB;Upper
+cp;1EFB;age=5.1;CWT;CWU;dt=None;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER MIDDLE-WELSH LL;NFD_QC=Y;NFKD_QC=Y;stc=1EFA;suc=1EFA
+cp;1EFC;age=5.1;cf=1EFD;CWCF;CWKCF;CWL;dt=None;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Technical;na=LATIN CAPITAL LETTER MIDDLE-WELSH V;NFD_QC=Y;NFKC_CF=1EFD;NFKC_SCF=1EFD;NFKD_QC=Y;SB=UP;scf=1EFD;slc=1EFD;Upper
+cp;1EFD;age=5.1;CWT;CWU;dt=None;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER MIDDLE-WELSH V;NFD_QC=Y;NFKD_QC=Y;stc=1EFC;suc=1EFC
+cp;1EFE;age=5.1;cf=1EFF;CWCF;CWKCF;CWL;dt=None;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Technical;na=LATIN CAPITAL LETTER Y WITH LOOP;NFD_QC=Y;NFKC_CF=1EFF;NFKC_SCF=1EFF;NFKD_QC=Y;SB=UP;scf=1EFF;slc=1EFF;Upper
+cp;1EFF;age=5.1;CWT;CWU;dt=None;Identifier_Status=Restricted;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER Y WITH LOOP;NFD_QC=Y;NFKD_QC=Y;stc=1EFE;suc=1EFE
+
+block;1F00..1FFF;age=1.1;Alpha;blk=Greek_Ext;Cased;CWCF;CWCM;CWKCF;CWU;dt=Can;gc=Ll;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Grek;WB=LE;XIDC;XIDS
# 1F00..1FFF Greek Extended
# Precomposed polytonic Greek
cp;1F00;-CWCF;-CWKCF;CWT;dm=03B1 0313;Lower;na=GREEK SMALL LETTER ALPHA WITH PSILI;stc=1F08;suc=1F08
@@ -9650,19 +9667,19 @@ cp;1F6D;cf=1F65;CWL;-CWU;dm=1F69 0301;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH D
cp;1F6E;cf=1F66;CWL;-CWU;dm=1F68 0342;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;NFKC_CF=1F66;NFKC_SCF=1F66;SB=UP;scf=1F66;slc=1F66;Upper
cp;1F6F;cf=1F67;CWL;-CWU;dm=1F69 0342;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;NFKC_CF=1F67;NFKC_SCF=1F67;SB=UP;scf=1F67;slc=1F67;Upper
cp;1F70;-CWCF;-CWKCF;CWT;dm=03B1 0300;Lower;na=GREEK SMALL LETTER ALPHA WITH VARIA;stc=1FBA;suc=1FBA
-cp;1F71;Comp_Ex;-CWCF;CWT;dm=03AC;Lower;na=GREEK SMALL LETTER ALPHA WITH OXIA;NFC_QC=N;NFKC_CF=03AC;NFKC_QC=N;NFKC_SCF=03AC;stc=1FBB;suc=1FBB
+cp;1F71;Comp_Ex;-CWCF;CWT;dm=03AC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK SMALL LETTER ALPHA WITH OXIA;NFC_QC=N;NFKC_CF=03AC;NFKC_QC=N;NFKC_SCF=03AC;stc=1FBB;suc=1FBB
cp;1F72;-CWCF;-CWKCF;CWT;dm=03B5 0300;Lower;na=GREEK SMALL LETTER EPSILON WITH VARIA;stc=1FC8;suc=1FC8
-cp;1F73;Comp_Ex;-CWCF;CWT;dm=03AD;Lower;na=GREEK SMALL LETTER EPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03AD;NFKC_QC=N;NFKC_SCF=03AD;stc=1FC9;suc=1FC9
+cp;1F73;Comp_Ex;-CWCF;CWT;dm=03AD;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK SMALL LETTER EPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03AD;NFKC_QC=N;NFKC_SCF=03AD;stc=1FC9;suc=1FC9
cp;1F74;-CWCF;-CWKCF;CWT;dm=03B7 0300;Lower;na=GREEK SMALL LETTER ETA WITH VARIA;stc=1FCA;suc=1FCA
-cp;1F75;Comp_Ex;-CWCF;CWT;dm=03AE;Lower;na=GREEK SMALL LETTER ETA WITH OXIA;NFC_QC=N;NFKC_CF=03AE;NFKC_QC=N;NFKC_SCF=03AE;stc=1FCB;suc=1FCB
+cp;1F75;Comp_Ex;-CWCF;CWT;dm=03AE;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK SMALL LETTER ETA WITH OXIA;NFC_QC=N;NFKC_CF=03AE;NFKC_QC=N;NFKC_SCF=03AE;stc=1FCB;suc=1FCB
cp;1F76;-CWCF;-CWKCF;CWT;dm=03B9 0300;Lower;na=GREEK SMALL LETTER IOTA WITH VARIA;stc=1FDA;suc=1FDA
-cp;1F77;Comp_Ex;-CWCF;CWT;dm=03AF;Lower;na=GREEK SMALL LETTER IOTA WITH OXIA;NFC_QC=N;NFKC_CF=03AF;NFKC_QC=N;NFKC_SCF=03AF;stc=1FDB;suc=1FDB
+cp;1F77;Comp_Ex;-CWCF;CWT;dm=03AF;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK SMALL LETTER IOTA WITH OXIA;NFC_QC=N;NFKC_CF=03AF;NFKC_QC=N;NFKC_SCF=03AF;stc=1FDB;suc=1FDB
cp;1F78;-CWCF;-CWKCF;CWT;dm=03BF 0300;Lower;na=GREEK SMALL LETTER OMICRON WITH VARIA;stc=1FF8;suc=1FF8
-cp;1F79;Comp_Ex;-CWCF;CWT;dm=03CC;Lower;na=GREEK SMALL LETTER OMICRON WITH OXIA;NFC_QC=N;NFKC_CF=03CC;NFKC_QC=N;NFKC_SCF=03CC;stc=1FF9;suc=1FF9
+cp;1F79;Comp_Ex;-CWCF;CWT;dm=03CC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK SMALL LETTER OMICRON WITH OXIA;NFC_QC=N;NFKC_CF=03CC;NFKC_QC=N;NFKC_SCF=03CC;stc=1FF9;suc=1FF9
cp;1F7A;-CWCF;-CWKCF;CWT;dm=03C5 0300;Lower;na=GREEK SMALL LETTER UPSILON WITH VARIA;stc=1FEA;suc=1FEA
-cp;1F7B;Comp_Ex;-CWCF;CWT;dm=03CD;Lower;na=GREEK SMALL LETTER UPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;stc=1FEB;suc=1FEB
+cp;1F7B;Comp_Ex;-CWCF;CWT;dm=03CD;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK SMALL LETTER UPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;stc=1FEB;suc=1FEB
cp;1F7C;-CWCF;-CWKCF;CWT;dm=03C9 0300;Lower;na=GREEK SMALL LETTER OMEGA WITH VARIA;stc=1FFA;suc=1FFA
-cp;1F7D;Comp_Ex;-CWCF;CWT;dm=03CE;Lower;na=GREEK SMALL LETTER OMEGA WITH OXIA;NFC_QC=N;NFKC_CF=03CE;NFKC_QC=N;NFKC_SCF=03CE;stc=1FFB;suc=1FFB
+cp;1F7D;Comp_Ex;-CWCF;CWT;dm=03CE;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK SMALL LETTER OMEGA WITH OXIA;NFC_QC=N;NFKC_CF=03CE;NFKC_QC=N;NFKC_SCF=03CE;stc=1FFB;suc=1FFB
unassigned;1F7E..1F7F
cp;1F80;cf=1F00 03B9;CWT;dm=1F00 0345;lc=1F80;Lower;na=GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;NFKC_CF=1F00 03B9;stc=1F88;suc=1F88;tc=1F88;uc=1F08 0399
cp;1F81;cf=1F01 03B9;CWT;dm=1F01 0345;lc=1F81;Lower;na=GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;NFKC_CF=1F01 03B9;stc=1F89;suc=1F89;tc=1F89;uc=1F09 0399
@@ -9723,13 +9740,13 @@ cp;1FB7;cf=03B1 0342 03B9;CWT;dm=1FB6 0345;lc=1FB7;Lower;na=GREEK SMALL LETTER A
cp;1FB8;cf=1FB0;CWL;-CWU;dm=0391 0306;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH VRACHY;NFKC_CF=1FB0;NFKC_SCF=1FB0;SB=UP;scf=1FB0;slc=1FB0;Upper
cp;1FB9;cf=1FB1;CWL;-CWU;dm=0391 0304;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH MACRON;NFKC_CF=1FB1;NFKC_SCF=1FB1;SB=UP;scf=1FB1;slc=1FB1;Upper
cp;1FBA;cf=1F70;CWL;-CWU;dm=0391 0300;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH VARIA;NFKC_CF=1F70;NFKC_SCF=1F70;SB=UP;scf=1F70;slc=1F70;Upper
-cp;1FBB;cf=1F71;Comp_Ex;CWL;-CWU;dm=0386;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH OXIA;NFC_QC=N;NFKC_CF=03AC;NFKC_QC=N;NFKC_SCF=03AC;SB=UP;scf=1F71;slc=1F71;Upper
+cp;1FBB;cf=1F71;Comp_Ex;CWL;-CWU;dm=0386;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK CAPITAL LETTER ALPHA WITH OXIA;NFC_QC=N;NFKC_CF=03AC;NFKC_QC=N;NFKC_SCF=03AC;SB=UP;scf=1F71;slc=1F71;Upper
cp;1FBC;cf=03B1 03B9;CWL;dm=0391 0345;gc=Lt;lc=1FB3;na=GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;NFKC_CF=03B1 03B9;NFKC_SCF=1FB3;SB=UP;scf=1FB3;slc=1FB3;tc=1FBC;uc=0391 0399
-cp;1FBD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0313;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK KORONIS;NFD_QC=Y;NFKC_CF=0020 0313;NFKC_QC=N;NFKC_SCF=0020 0313;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FBE;cf=03B9;Comp_Ex;-CWCF;CWT;dm=03B9;Lower;na=GREEK PROSGEGRAMMENI;NFC_QC=N;NFKC_CF=03B9;NFKC_QC=N;NFKC_SCF=03B9;scf=03B9;stc=0399;suc=0399
-cp;1FBF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0313;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK PSILI;NFD_QC=Y;NFKC_CF=0020 0313;NFKC_QC=N;NFKC_SCF=0020 0313;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FC0;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0342;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK PERISPOMENI;NFD_QC=Y;NFKC_CF=0020 0342;NFKC_QC=N;NFKC_SCF=0020 0342;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FC1;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=00A8 0342;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND PERISPOMENI;NFKC_CF=0020 0308 0342;NFKC_QC=N;NFKC_SCF=0020 0308 0342;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FBD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0313;dt=Com;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK KORONIS;NFD_QC=Y;NFKC_CF=0020 0313;NFKC_QC=N;NFKC_SCF=0020 0313;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FBE;cf=03B9;Comp_Ex;-CWCF;CWT;dm=03B9;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;Lower;na=GREEK PROSGEGRAMMENI;NFC_QC=N;NFKC_CF=03B9;NFKC_QC=N;NFKC_SCF=03B9;scf=03B9;stc=0399;suc=0399
+cp;1FBF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0313;dt=Com;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK PSILI;NFD_QC=Y;NFKC_CF=0020 0313;NFKC_QC=N;NFKC_SCF=0020 0313;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FC0;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0342;dt=Com;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK PERISPOMENI;NFD_QC=Y;NFKC_CF=0020 0342;NFKC_QC=N;NFKC_SCF=0020 0342;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FC1;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=00A8 0342;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK DIALYTIKA AND PERISPOMENI;NFKC_CF=0020 0308 0342;NFKC_QC=N;NFKC_SCF=0020 0308 0342;SB=XX;WB=XX;-XIDC;-XIDS
cp;1FC2;cf=1F74 03B9;CWT;dm=1F74 0345;lc=1FC2;Lower;na=GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;NFKC_CF=1F74 03B9;tc=1FCA 0345;uc=1FCA 0399
cp;1FC3;cf=03B7 03B9;CWT;dm=03B7 0345;lc=1FC3;Lower;na=GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;NFKC_CF=03B7 03B9;stc=1FCC;suc=1FCC;tc=1FCC;uc=0397 0399
cp;1FC4;cf=03AE 03B9;CWT;dm=03AE 0345;lc=1FC4;Lower;na=GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;NFKC_CF=03AE 03B9;tc=0389 0345;uc=0389 0399
@@ -9737,32 +9754,32 @@ unassigned;1FC5
cp;1FC6;cf=03B7 0342;-CWCF;-CWKCF;CWT;dm=03B7 0342;lc=1FC6;Lower;na=GREEK SMALL LETTER ETA WITH PERISPOMENI;tc=0397 0342;uc=0397 0342
cp;1FC7;cf=03B7 0342 03B9;CWT;dm=1FC6 0345;lc=1FC7;Lower;na=GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1FC6 03B9;tc=0397 0342 0345;uc=0397 0342 0399
cp;1FC8;cf=1F72;CWL;-CWU;dm=0395 0300;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH VARIA;NFKC_CF=1F72;NFKC_SCF=1F72;SB=UP;scf=1F72;slc=1F72;Upper
-cp;1FC9;cf=1F73;Comp_Ex;CWL;-CWU;dm=0388;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03AD;NFKC_QC=N;NFKC_SCF=03AD;SB=UP;scf=1F73;slc=1F73;Upper
+cp;1FC9;cf=1F73;Comp_Ex;CWL;-CWU;dm=0388;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK CAPITAL LETTER EPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03AD;NFKC_QC=N;NFKC_SCF=03AD;SB=UP;scf=1F73;slc=1F73;Upper
cp;1FCA;cf=1F74;CWL;-CWU;dm=0397 0300;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH VARIA;NFKC_CF=1F74;NFKC_SCF=1F74;SB=UP;scf=1F74;slc=1F74;Upper
-cp;1FCB;cf=1F75;Comp_Ex;CWL;-CWU;dm=0389;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH OXIA;NFC_QC=N;NFKC_CF=03AE;NFKC_QC=N;NFKC_SCF=03AE;SB=UP;scf=1F75;slc=1F75;Upper
+cp;1FCB;cf=1F75;Comp_Ex;CWL;-CWU;dm=0389;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK CAPITAL LETTER ETA WITH OXIA;NFC_QC=N;NFKC_CF=03AE;NFKC_QC=N;NFKC_SCF=03AE;SB=UP;scf=1F75;slc=1F75;Upper
cp;1FCC;cf=03B7 03B9;CWL;dm=0397 0345;gc=Lt;lc=1FC3;na=GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;NFKC_CF=03B7 03B9;NFKC_SCF=1FC3;SB=UP;scf=1FC3;slc=1FC3;tc=1FCC;uc=0397 0399
-cp;1FCD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0300;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND VARIA;NFKC_CF=0020 0313 0300;NFKC_QC=N;NFKC_SCF=0020 0313 0300;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FCE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0301;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND OXIA;NFKC_CF=0020 0313 0301;NFKC_QC=N;NFKC_SCF=0020 0313 0301;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FCF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0342;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND PERISPOMENI;NFKC_CF=0020 0313 0342;NFKC_QC=N;NFKC_SCF=0020 0313 0342;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FCD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0300;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK PSILI AND VARIA;NFKC_CF=0020 0313 0300;NFKC_QC=N;NFKC_SCF=0020 0313 0300;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FCE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0301;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK PSILI AND OXIA;NFKC_CF=0020 0313 0301;NFKC_QC=N;NFKC_SCF=0020 0313 0301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FCF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0342;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK PSILI AND PERISPOMENI;NFKC_CF=0020 0313 0342;NFKC_QC=N;NFKC_SCF=0020 0313 0342;SB=XX;WB=XX;-XIDC;-XIDS
cp;1FD0;-CWCF;-CWKCF;CWT;dm=03B9 0306;Lower;na=GREEK SMALL LETTER IOTA WITH VRACHY;stc=1FD8;suc=1FD8
cp;1FD1;-CWCF;-CWKCF;CWT;dm=03B9 0304;Lower;na=GREEK SMALL LETTER IOTA WITH MACRON;stc=1FD9;suc=1FD9
cp;1FD2;cf=03B9 0308 0300;-CWCF;-CWKCF;CWT;dm=03CA 0300;lc=1FD2;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;tc=0399 0308 0300;uc=0399 0308 0300
-cp;1FD3;cf=03B9 0308 0301;Comp_Ex;-CWCF;CWT;dm=0390;lc=1FD3;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=0390;NFKC_QC=N;NFKC_SCF=0390;scf=0390;tc=0399 0308 0301;uc=0399 0308 0301
+cp;1FD3;cf=03B9 0308 0301;Comp_Ex;-CWCF;CWT;dm=0390;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;lc=1FD3;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=0390;NFKC_QC=N;NFKC_SCF=0390;scf=0390;tc=0399 0308 0301;uc=0399 0308 0301
unassigned;1FD4..1FD5
cp;1FD6;cf=03B9 0342;-CWCF;-CWKCF;CWT;dm=03B9 0342;lc=1FD6;Lower;na=GREEK SMALL LETTER IOTA WITH PERISPOMENI;tc=0399 0342;uc=0399 0342
cp;1FD7;cf=03B9 0308 0342;-CWCF;-CWKCF;CWT;dm=03CA 0342;lc=1FD7;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;tc=0399 0308 0342;uc=0399 0308 0342
cp;1FD8;cf=1FD0;CWL;-CWU;dm=0399 0306;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH VRACHY;NFKC_CF=1FD0;NFKC_SCF=1FD0;SB=UP;scf=1FD0;slc=1FD0;Upper
cp;1FD9;cf=1FD1;CWL;-CWU;dm=0399 0304;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH MACRON;NFKC_CF=1FD1;NFKC_SCF=1FD1;SB=UP;scf=1FD1;slc=1FD1;Upper
cp;1FDA;cf=1F76;CWL;-CWU;dm=0399 0300;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH VARIA;NFKC_CF=1F76;NFKC_SCF=1F76;SB=UP;scf=1F76;slc=1F76;Upper
-cp;1FDB;cf=1F77;Comp_Ex;CWL;-CWU;dm=038A;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH OXIA;NFC_QC=N;NFKC_CF=03AF;NFKC_QC=N;NFKC_SCF=03AF;SB=UP;scf=1F77;slc=1F77;Upper
+cp;1FDB;cf=1F77;Comp_Ex;CWL;-CWU;dm=038A;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK CAPITAL LETTER IOTA WITH OXIA;NFC_QC=N;NFKC_CF=03AF;NFKC_QC=N;NFKC_SCF=03AF;SB=UP;scf=1F77;slc=1F77;Upper
unassigned;1FDC
-cp;1FDD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0300;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND VARIA;NFKC_CF=0020 0314 0300;NFKC_QC=N;NFKC_SCF=0020 0314 0300;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FDE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0301;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND OXIA;NFKC_CF=0020 0314 0301;NFKC_QC=N;NFKC_SCF=0020 0314 0301;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FDF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0342;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND PERISPOMENI;NFKC_CF=0020 0314 0342;NFKC_QC=N;NFKC_SCF=0020 0314 0342;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FDD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0300;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK DASIA AND VARIA;NFKC_CF=0020 0314 0300;NFKC_QC=N;NFKC_SCF=0020 0314 0300;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FDE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0301;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK DASIA AND OXIA;NFKC_CF=0020 0314 0301;NFKC_QC=N;NFKC_SCF=0020 0314 0301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FDF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0342;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK DASIA AND PERISPOMENI;NFKC_CF=0020 0314 0342;NFKC_QC=N;NFKC_SCF=0020 0314 0342;SB=XX;WB=XX;-XIDC;-XIDS
cp;1FE0;-CWCF;-CWKCF;CWT;dm=03C5 0306;Lower;na=GREEK SMALL LETTER UPSILON WITH VRACHY;stc=1FE8;suc=1FE8
cp;1FE1;-CWCF;-CWKCF;CWT;dm=03C5 0304;Lower;na=GREEK SMALL LETTER UPSILON WITH MACRON;stc=1FE9;suc=1FE9
cp;1FE2;cf=03C5 0308 0300;-CWCF;-CWKCF;CWT;dm=03CB 0300;lc=1FE2;Lower;na=GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;tc=03A5 0308 0300;uc=03A5 0308 0300
-cp;1FE3;cf=03C5 0308 0301;Comp_Ex;-CWCF;CWT;dm=03B0;lc=1FE3;Lower;na=GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=03B0;NFKC_QC=N;NFKC_SCF=03B0;scf=03B0;tc=03A5 0308 0301;uc=03A5 0308 0301
+cp;1FE3;cf=03C5 0308 0301;Comp_Ex;-CWCF;CWT;dm=03B0;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;lc=1FE3;Lower;na=GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=03B0;NFKC_QC=N;NFKC_SCF=03B0;scf=03B0;tc=03A5 0308 0301;uc=03A5 0308 0301
cp;1FE4;cf=03C1 0313;-CWCF;-CWKCF;CWT;dm=03C1 0313;lc=1FE4;Lower;na=GREEK SMALL LETTER RHO WITH PSILI;tc=03A1 0313;uc=03A1 0313
cp;1FE5;-CWCF;-CWKCF;CWT;dm=03C1 0314;Lower;na=GREEK SMALL LETTER RHO WITH DASIA;stc=1FEC;suc=1FEC
cp;1FE6;cf=03C5 0342;-CWCF;-CWKCF;CWT;dm=03C5 0342;lc=1FE6;Lower;na=GREEK SMALL LETTER UPSILON WITH PERISPOMENI;tc=03A5 0342;uc=03A5 0342
@@ -9770,11 +9787,11 @@ cp;1FE7;cf=03C5 0308 0342;-CWCF;-CWKCF;CWT;dm=03CB 0342;lc=1FE7;Lower;na=GREEK S
cp;1FE8;cf=1FE0;CWL;-CWU;dm=03A5 0306;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH VRACHY;NFKC_CF=1FE0;NFKC_SCF=1FE0;SB=UP;scf=1FE0;slc=1FE0;Upper
cp;1FE9;cf=1FE1;CWL;-CWU;dm=03A5 0304;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH MACRON;NFKC_CF=1FE1;NFKC_SCF=1FE1;SB=UP;scf=1FE1;slc=1FE1;Upper
cp;1FEA;cf=1F7A;CWL;-CWU;dm=03A5 0300;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH VARIA;NFKC_CF=1F7A;NFKC_SCF=1F7A;SB=UP;scf=1F7A;slc=1F7A;Upper
-cp;1FEB;cf=1F7B;Comp_Ex;CWL;-CWU;dm=038E;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;SB=UP;scf=1F7B;slc=1F7B;Upper
+cp;1FEB;cf=1F7B;Comp_Ex;CWL;-CWU;dm=038E;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK CAPITAL LETTER UPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;SB=UP;scf=1F7B;slc=1F7B;Upper
cp;1FEC;cf=1FE5;CWL;-CWU;dm=03A1 0314;gc=Lu;na=GREEK CAPITAL LETTER RHO WITH DASIA;NFKC_CF=1FE5;NFKC_SCF=1FE5;SB=UP;scf=1FE5;slc=1FE5;Upper
-cp;1FED;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=00A8 0300;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND VARIA;NFKC_CF=0020 0308 0300;NFKC_QC=N;NFKC_SCF=0020 0308 0300;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FEE;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=0385;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=0020 0308 0301;NFKC_QC=N;NFKC_SCF=0020 0308 0301;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FEF;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=0060;gc=Sk;-IDC;-IDS;na=GREEK VARIA;NFC_QC=N;NFKC_CF=0060;NFKC_QC=N;NFKC_SCF=0060;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FED;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=00A8 0300;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK DIALYTIKA AND VARIA;NFKC_CF=0020 0308 0300;NFKC_QC=N;NFKC_SCF=0020 0308 0300;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FEE;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=0385;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=0020 0308 0301;NFKC_QC=N;NFKC_SCF=0020 0308 0301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FEF;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=0060;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK VARIA;NFC_QC=N;NFKC_CF=0060;NFKC_QC=N;NFKC_SCF=0060;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1FF0..1FF1
cp;1FF2;cf=1F7C 03B9;CWT;dm=1F7C 0345;lc=1FF2;Lower;na=GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;NFKC_CF=1F7C 03B9;tc=1FFA 0345;uc=1FFA 0399
cp;1FF3;cf=03C9 03B9;CWT;dm=03C9 0345;lc=1FF3;Lower;na=GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;NFKC_CF=03C9 03B9;stc=1FFC;suc=1FFC;tc=1FFC;uc=03A9 0399
@@ -9783,47 +9800,47 @@ unassigned;1FF5
cp;1FF6;cf=03C9 0342;-CWCF;-CWKCF;CWT;dm=03C9 0342;lc=1FF6;Lower;na=GREEK SMALL LETTER OMEGA WITH PERISPOMENI;tc=03A9 0342;uc=03A9 0342
cp;1FF7;cf=03C9 0342 03B9;CWT;dm=1FF6 0345;lc=1FF7;Lower;na=GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1FF6 03B9;tc=03A9 0342 0345;uc=03A9 0342 0399
cp;1FF8;cf=1F78;CWL;-CWU;dm=039F 0300;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH VARIA;NFKC_CF=1F78;NFKC_SCF=1F78;SB=UP;scf=1F78;slc=1F78;Upper
-cp;1FF9;cf=1F79;Comp_Ex;CWL;-CWU;dm=038C;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH OXIA;NFC_QC=N;NFKC_CF=03CC;NFKC_QC=N;NFKC_SCF=03CC;SB=UP;scf=1F79;slc=1F79;Upper
+cp;1FF9;cf=1F79;Comp_Ex;CWL;-CWU;dm=038C;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK CAPITAL LETTER OMICRON WITH OXIA;NFC_QC=N;NFKC_CF=03CC;NFKC_QC=N;NFKC_SCF=03CC;SB=UP;scf=1F79;slc=1F79;Upper
cp;1FFA;cf=1F7C;CWL;-CWU;dm=03A9 0300;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH VARIA;NFKC_CF=1F7C;NFKC_SCF=1F7C;SB=UP;scf=1F7C;slc=1F7C;Upper
-cp;1FFB;cf=1F7D;Comp_Ex;CWL;-CWU;dm=038F;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH OXIA;NFC_QC=N;NFKC_CF=03CE;NFKC_QC=N;NFKC_SCF=03CE;SB=UP;scf=1F7D;slc=1F7D;Upper
+cp;1FFB;cf=1F7D;Comp_Ex;CWL;-CWU;dm=038F;gc=Lu;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=GREEK CAPITAL LETTER OMEGA WITH OXIA;NFC_QC=N;NFKC_CF=03CE;NFKC_QC=N;NFKC_SCF=03CE;SB=UP;scf=1F7D;slc=1F7D;Upper
cp;1FFC;cf=03C9 03B9;CWL;dm=03A9 0345;gc=Lt;lc=1FF3;na=GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;NFKC_CF=03C9 03B9;NFKC_SCF=1FF3;SB=UP;scf=1FF3;slc=1FF3;tc=1FFC;uc=03A9 0399
-cp;1FFD;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=00B4;gc=Sk;-IDC;-IDS;lb=BB;na=GREEK OXIA;NFC_QC=N;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FFE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0314;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK DASIA;NFD_QC=Y;NFKC_CF=0020 0314;NFKC_QC=N;NFKC_SCF=0020 0314;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FFD;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=00B4;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;lb=BB;na=GREEK OXIA;NFC_QC=N;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FFE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0314;dt=Com;gc=Sk;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;-IDS;na=GREEK DASIA;NFD_QC=Y;NFKC_CF=0020 0314;NFKC_QC=N;NFKC_SCF=0020 0314;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1FFF
-block;2000..206F;age=1.1;bc=ON;blk=Punctuation;gc=Po;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy
+block;2000..206F;age=1.1;bc=ON;blk=Punctuation;gc=Po;Gr_Base;Identifier_Type=Not_XID;lb=AL;Pat_Syn;sc=Zyyy
# 2000..206F General Punctuation
# Spaces
-cp;2000;bc=WS;Comp_Ex;CWKCF;dm=2002;dt=Can;gc=Zs;lb=BA;na=EN QUAD;NFC_QC=N;NFD_QC=N;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2001;bc=WS;Comp_Ex;CWKCF;dm=2003;dt=Can;gc=Zs;lb=BA;na=EM QUAD;NFC_QC=N;NFD_QC=N;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2002;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=EN SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2003;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2004;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=THREE-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2005;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=FOUR-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2006;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=SIX-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2007;bc=WS;CWKCF;dm=0020;dt=Nb;gc=Zs;lb=GL;na=FIGURE SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WSpace
-cp;2008;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=PUNCTUATION SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2009;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=THIN SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;200A;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=HAIR SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2000;bc=WS;Comp_Ex;CWKCF;dm=2002;dt=Can;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=EN QUAD;NFC_QC=N;NFD_QC=N;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2001;bc=WS;Comp_Ex;CWKCF;dm=2003;dt=Can;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=EM QUAD;NFC_QC=N;NFD_QC=N;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2002;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=EN SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2003;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2004;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=THREE-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2005;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=FOUR-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2006;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=SIX-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2007;bc=WS;CWKCF;dm=0020;dt=Nb;gc=Zs;Identifier_Type=Not_NFKC;lb=GL;na=FIGURE SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WSpace
+cp;2008;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=PUNCTUATION SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2009;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=THIN SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;200A;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=HAIR SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
# Format characters
-cp;200B;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=ZW;na=ZERO WIDTH SPACE;Name_Alias=abbreviation=ZWSP;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO
-cp;200C;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=EX;-Gr_Base;Gr_Ext;IDC;InSC=Non_Joiner;Join_C;lb=CM;na=ZERO WIDTH NON-JOINER;Name_Alias=abbreviation=ZWNJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;200D;bc=BN;CI;CWKCF;DI;EComp;gc=Cf;GCB=ZWJ;-Gr_Base;IDC;InCB=Extend;InSC=Joiner;Join_C;jt=C;lb=ZWJ;na=ZERO WIDTH JOINER;Name_Alias=abbreviation=ZWJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=EX;sc=Zinh;WB=ZWJ;XIDC
-cp;200E;bc=L;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT MARK;Name_Alias=abbreviation=LRM;NFKC_CF=;NFKC_SCF=;-Pat_Syn;Pat_WS;SB=FO;WB=FO
-cp;200F;bc=R;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT MARK;Name_Alias=abbreviation=RLM;NFKC_CF=;NFKC_SCF=;-Pat_Syn;Pat_WS;SB=FO;WB=FO
+cp;200B;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=ZW;na=ZERO WIDTH SPACE;Name_Alias=abbreviation=ZWSP;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO
+cp;200C;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Default_Ignorable;InSC=Non_Joiner;Join_C;lb=CM;na=ZERO WIDTH NON-JOINER;Name_Alias=abbreviation=ZWNJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;200D;bc=BN;CI;CWKCF;DI;EComp;gc=Cf;GCB=ZWJ;-Gr_Base;IDC;Identifier_Type=Default_Ignorable;InCB=Extend;InSC=Joiner;Join_C;jt=C;lb=ZWJ;na=ZERO WIDTH JOINER;Name_Alias=abbreviation=ZWJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=EX;sc=Zinh;WB=ZWJ;XIDC
+cp;200E;bc=L;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=LEFT-TO-RIGHT MARK;Name_Alias=abbreviation=LRM;NFKC_CF=;NFKC_SCF=;-Pat_Syn;Pat_WS;SB=FO;WB=FO
+cp;200F;bc=R;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=RIGHT-TO-LEFT MARK;Name_Alias=abbreviation=RLM;NFKC_CF=;NFKC_SCF=;-Pat_Syn;Pat_WS;SB=FO;WB=FO
# Dashes
-cp;2010;Dash;ea=A;gc=Pd;Hyphen;InSC=Consonant_Placeholder;lb=BA;na=HYPHEN
-cp;2011;CWKCF;Dash;dm=2010;dt=Nb;gc=Pd;Hyphen;InSC=Consonant_Placeholder;lb=GL;na=NON-BREAKING HYPHEN;NFKC_CF=2010;NFKC_QC=N;NFKC_SCF=2010;NFKD_QC=N
+cp;2010;Dash;ea=A;gc=Pd;Hyphen;Identifier_Status=Allowed;Identifier_Type=Inclusion;InSC=Consonant_Placeholder;lb=BA;na=HYPHEN
+cp;2011;CWKCF;Dash;dm=2010;dt=Nb;gc=Pd;Hyphen;Identifier_Type=Not_NFKC;InSC=Consonant_Placeholder;lb=GL;na=NON-BREAKING HYPHEN;NFKC_CF=2010;NFKC_QC=N;NFKC_SCF=2010;NFKD_QC=N
cp;2012;Dash;gc=Pd;InSC=Consonant_Placeholder;lb=BA;na=FIGURE DASH
cp;2013;Dash;ea=A;gc=Pd;InSC=Consonant_Placeholder;lb=BA;na=EN DASH;SB=SC
cp;2014;Dash;ea=A;gc=Pd;InSC=Consonant_Placeholder;lb=B2;na=EM DASH;SB=SC
cp;2015;Dash;ea=A;gc=Pd;lb=AI;na=HORIZONTAL BAR
# General punctuation
cp;2016;ea=A;lb=AI;Math;na=DOUBLE VERTICAL LINE;vo=U
-cp;2017;CWKCF;dm=0020 0333;dt=Com;na=DOUBLE LOW LINE;NFKC_CF=0020 0333;NFKC_QC=N;NFKC_SCF=0020 0333;NFKD_QC=N
+cp;2017;CWKCF;dm=0020 0333;dt=Com;Identifier_Type=Not_NFKC;na=DOUBLE LOW LINE;NFKC_CF=0020 0333;NFKC_QC=N;NFKC_SCF=0020 0333;NFKD_QC=N
# Quotation marks and apostrophe
cp;2018;CI;ea=A;gc=Pi;lb=QU;na=LEFT SINGLE QUOTATION MARK;QMark;SB=CL;WB=MB
-cp;2019;CI;ea=A;gc=Pf;lb=QU;na=RIGHT SINGLE QUOTATION MARK;QMark;SB=CL;WB=MB
+cp;2019;CI;ea=A;gc=Pf;Identifier_Status=Allowed;Identifier_Type=Inclusion;lb=QU;na=RIGHT SINGLE QUOTATION MARK;QMark;SB=CL;WB=MB
cp;201A;gc=Ps;lb=OP;na=SINGLE LOW-9 QUOTATION MARK;QMark;SB=CL
cp;201B;gc=Pi;lb=QU;na=SINGLE HIGH-REVERSED-9 QUOTATION MARK;QMark;SB=CL
cp;201C;ea=A;gc=Pi;lb=QU;na=LEFT DOUBLE QUOTATION MARK;QMark;SB=CL
@@ -9835,30 +9852,30 @@ cp;2020;ea=A;lb=AI;na=DAGGER;vo=U
cp;2021;ea=A;lb=AI;na=DOUBLE DAGGER;vo=U
cp;2022;ea=A;na=BULLET
cp;2023;na=TRIANGULAR BULLET
-cp;2024;CI;CWKCF;dm=002E;dt=Com;ea=A;lb=IN;na=ONE DOT LEADER;NFKC_CF=002E;NFKC_QC=N;NFKC_SCF=002E;NFKD_QC=N;SB=AT;WB=MB
-cp;2025;CWKCF;dm=002E 002E;dt=Com;ea=A;lb=IN;na=TWO DOT LEADER;NFKC_CF=002E 002E;NFKC_QC=N;NFKC_SCF=002E 002E;NFKD_QC=N
-cp;2026;CWKCF;dm=002E 002E 002E;dt=Com;ea=A;lb=IN;na=HORIZONTAL ELLIPSIS;NFKC_CF=002E 002E 002E;NFKC_QC=N;NFKC_SCF=002E 002E 002E;NFKD_QC=N
-cp;2027;CI;ea=A;lb=BA;na=HYPHENATION POINT;WB=ML
+cp;2024;CI;CWKCF;dm=002E;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=IN;na=ONE DOT LEADER;NFKC_CF=002E;NFKC_QC=N;NFKC_SCF=002E;NFKD_QC=N;SB=AT;WB=MB
+cp;2025;CWKCF;dm=002E 002E;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=IN;na=TWO DOT LEADER;NFKC_CF=002E 002E;NFKC_QC=N;NFKC_SCF=002E 002E;NFKD_QC=N
+cp;2026;CWKCF;dm=002E 002E 002E;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=IN;na=HORIZONTAL ELLIPSIS;NFKC_CF=002E 002E 002E;NFKC_QC=N;NFKC_SCF=002E 002E 002E;NFKD_QC=N
+cp;2027;CI;ea=A;Identifier_Status=Allowed;Identifier_Type=Inclusion;lb=BA;na=HYPHENATION POINT;WB=ML
# Separators
cp;2028;bc=WS;gc=Zl;GCB=CN;-Gr_Base;lb=BK;na=LINE SEPARATOR;-Pat_Syn;Pat_WS;SB=SE;WB=NL;WSpace
cp;2029;bc=B;gc=Zp;GCB=CN;-Gr_Base;lb=BK;na=PARAGRAPH SEPARATOR;-Pat_Syn;Pat_WS;SB=SE;WB=NL;WSpace
# Format characters
-cp;202A;bc=LRE;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT EMBEDDING;Name_Alias=abbreviation=LRE;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;202B;bc=RLE;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT EMBEDDING;Name_Alias=abbreviation=RLE;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;202C;bc=PDF;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=POP DIRECTIONAL FORMATTING;Name_Alias=abbreviation=PDF;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;202D;bc=LRO;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT OVERRIDE;Name_Alias=abbreviation=LRO;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;202E;bc=RLO;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT OVERRIDE;Name_Alias=abbreviation=RLO;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202A;bc=LRE;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=LEFT-TO-RIGHT EMBEDDING;Name_Alias=abbreviation=LRE;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202B;bc=RLE;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=RIGHT-TO-LEFT EMBEDDING;Name_Alias=abbreviation=RLE;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202C;bc=PDF;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=POP DIRECTIONAL FORMATTING;Name_Alias=abbreviation=PDF;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202D;bc=LRO;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=LEFT-TO-RIGHT OVERRIDE;Name_Alias=abbreviation=LRO;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202E;bc=RLO;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=RIGHT-TO-LEFT OVERRIDE;Name_Alias=abbreviation=RLO;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
# Space
-cp;202F;age=3.0;bc=CS;CWKCF;dm=0020;dt=Nb;gc=Zs;lb=GL;na=NARROW NO-BREAK SPACE;Name_Alias=abbreviation=NNBSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;scx=Latn Mong;WB=EX;WSpace
+cp;202F;age=3.0;bc=CS;CWKCF;dm=0020;dt=Nb;gc=Zs;Identifier_Type=Not_NFKC;lb=GL;na=NARROW NO-BREAK SPACE;Name_Alias=abbreviation=NNBSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;scx=Latn Mong;WB=EX;WSpace
# General punctuation
cp;2030;bc=ET;ea=A;lb=PO;na=PER MILLE SIGN;vo=U
cp;2031;bc=ET;lb=PO;na=PER TEN THOUSAND SIGN;vo=U
cp;2032;bc=ET;ea=A;lb=PO;Math;na=PRIME
-cp;2033;bc=ET;CWKCF;dm=2032 2032;dt=Com;ea=A;lb=PO;Math;na=DOUBLE PRIME;NFKC_CF=2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032;NFKD_QC=N
-cp;2034;bc=ET;CWKCF;dm=2032 2032 2032;dt=Com;lb=PO;Math;na=TRIPLE PRIME;NFKC_CF=2032 2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032 2032;NFKD_QC=N
+cp;2033;bc=ET;CWKCF;dm=2032 2032;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=PO;Math;na=DOUBLE PRIME;NFKC_CF=2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032;NFKD_QC=N
+cp;2034;bc=ET;CWKCF;dm=2032 2032 2032;dt=Com;Identifier_Type=Not_NFKC;lb=PO;Math;na=TRIPLE PRIME;NFKC_CF=2032 2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032 2032;NFKD_QC=N
cp;2035;ea=A;lb=PO;na=REVERSED PRIME
-cp;2036;CWKCF;dm=2035 2035;dt=Com;lb=PO;na=REVERSED DOUBLE PRIME;NFKC_CF=2035 2035;NFKC_QC=N;NFKC_SCF=2035 2035;NFKD_QC=N
-cp;2037;CWKCF;dm=2035 2035 2035;dt=Com;lb=PO;na=REVERSED TRIPLE PRIME;NFKC_CF=2035 2035 2035;NFKC_QC=N;NFKC_SCF=2035 2035 2035;NFKD_QC=N
+cp;2036;CWKCF;dm=2035 2035;dt=Com;Identifier_Type=Not_NFKC;lb=PO;na=REVERSED DOUBLE PRIME;NFKC_CF=2035 2035;NFKC_QC=N;NFKC_SCF=2035 2035;NFKD_QC=N
+cp;2037;CWKCF;dm=2035 2035 2035;dt=Com;Identifier_Type=Not_NFKC;lb=PO;na=REVERSED TRIPLE PRIME;NFKC_CF=2035 2035 2035;NFKC_QC=N;NFKC_SCF=2035 2035 2035;NFKD_QC=N
cp;2038;na=CARET
# Quotation marks
cp;2039;Bidi_M;bmg=203A;gc=Pi;lb=QU;na=SINGLE LEFT-POINTING ANGLE QUOTATION MARK;QMark;SB=CL
@@ -9866,12 +9883,12 @@ cp;203A;Bidi_M;bmg=2039;gc=Pf;lb=QU;na=SINGLE RIGHT-POINTING ANGLE QUOTATION MAR
# General punctuation
cp;203B;ea=A;lb=AI;na=REFERENCE MARK;vo=U
# Double punctuation for vertical text
-cp;203C;CWKCF;dm=0021 0021;dt=Com;Emoji;ExtPict;lb=NS;na=DOUBLE EXCLAMATION MARK;NFKC_CF=0021 0021;NFKC_QC=N;NFKC_SCF=0021 0021;NFKD_QC=N;SB=ST;STerm;Term;vo=U
+cp;203C;CWKCF;dm=0021 0021;dt=Com;Emoji;ExtPict;Identifier_Type=Not_NFKC;lb=NS;na=DOUBLE EXCLAMATION MARK;NFKC_CF=0021 0021;NFKC_QC=N;NFKC_SCF=0021 0021;NFKD_QC=N;SB=ST;STerm;Term;vo=U
# General punctuation
cp;203D;lb=NS;na=INTERROBANG;SB=ST;STerm;Term
-cp;203E;CWKCF;dm=0020 0305;dt=Com;ea=A;na=OVERLINE;NFKC_CF=0020 0305;NFKC_QC=N;NFKC_SCF=0020 0305;NFKD_QC=N
-cp;203F;gc=Pc;IDC;na=UNDERTIE;-Pat_Syn;WB=EX;XIDC
-cp;2040;gc=Pc;IDC;Math;na=CHARACTER TIE;-Pat_Syn;WB=EX;XIDC
+cp;203E;CWKCF;dm=0020 0305;dt=Com;ea=A;Identifier_Type=Not_NFKC;na=OVERLINE;NFKC_CF=0020 0305;NFKC_QC=N;NFKC_SCF=0020 0305;NFKD_QC=N
+cp;203F;gc=Pc;IDC;Identifier_Type=Technical;na=UNDERTIE;-Pat_Syn;WB=EX;XIDC
+cp;2040;gc=Pc;IDC;Identifier_Type=Technical;Math;na=CHARACTER TIE;-Pat_Syn;WB=EX;XIDC
cp;2041;na=CARET INSERTION POINT
cp;2042;na=ASTERISM;vo=U
cp;2043;na=HYPHEN BULLET
@@ -9880,9 +9897,9 @@ cp;2044;bc=CS;gc=Sm;lb=IS;Math;na=FRACTION SLASH;WB=MN
cp;2045;Bidi_M;bmg=2046;bpb=2046;bpt=o;gc=Ps;lb=OP;na=LEFT SQUARE BRACKET WITH QUILL;SB=CL
cp;2046;Bidi_M;bmg=2045;bpb=2045;bpt=c;gc=Pe;lb=CL;na=RIGHT SQUARE BRACKET WITH QUILL;SB=CL
# Double punctuation for vertical text
-cp;2047;age=3.2;CWKCF;dm=003F 003F;dt=Com;lb=NS;na=DOUBLE QUESTION MARK;NFKC_CF=003F 003F;NFKC_QC=N;NFKC_SCF=003F 003F;NFKD_QC=N;SB=ST;STerm;Term;vo=U
-cp;2048;age=3.0;CWKCF;dm=003F 0021;dt=Com;lb=NS;na=QUESTION EXCLAMATION MARK;NFKC_CF=003F 0021;NFKC_QC=N;NFKC_SCF=003F 0021;NFKD_QC=N;SB=ST;STerm;Term;vo=U
-cp;2049;age=3.0;CWKCF;dm=0021 003F;dt=Com;Emoji;ExtPict;lb=NS;na=EXCLAMATION QUESTION MARK;NFKC_CF=0021 003F;NFKC_QC=N;NFKC_SCF=0021 003F;NFKD_QC=N;SB=ST;STerm;Term;vo=U
+cp;2047;age=3.2;CWKCF;dm=003F 003F;dt=Com;Identifier_Type=Not_NFKC;lb=NS;na=DOUBLE QUESTION MARK;NFKC_CF=003F 003F;NFKC_QC=N;NFKC_SCF=003F 003F;NFKD_QC=N;SB=ST;STerm;Term;vo=U
+cp;2048;age=3.0;CWKCF;dm=003F 0021;dt=Com;Identifier_Type=Not_NFKC;lb=NS;na=QUESTION EXCLAMATION MARK;NFKC_CF=003F 0021;NFKC_QC=N;NFKC_SCF=003F 0021;NFKD_QC=N;SB=ST;STerm;Term;vo=U
+cp;2049;age=3.0;CWKCF;dm=0021 003F;dt=Com;Emoji;ExtPict;Identifier_Type=Not_NFKC;lb=NS;na=EXCLAMATION QUESTION MARK;NFKC_CF=0021 003F;NFKC_QC=N;NFKC_SCF=0021 003F;NFKD_QC=N;SB=ST;STerm;Term;vo=U
# General punctuation
cp;204A;age=3.0;na=TIRONIAN SIGN ET
cp;204B;age=3.0;na=REVERSED PILCROW SIGN
@@ -9894,44 +9911,44 @@ cp;2050;age=3.2;na=CLOSE UP
cp;2051;age=3.2;na=TWO ASTERISKS ALIGNED VERTICALLY;vo=U
cp;2052;age=3.2;gc=Sm;Math;na=COMMERCIAL MINUS SIGN
cp;2053;age=4.0;Dash;na=SWUNG DASH
-cp;2054;age=4.0;gc=Pc;IDC;na=INVERTED UNDERTIE;-Pat_Syn;WB=EX;XIDC
+cp;2054;age=4.0;gc=Pc;IDC;Identifier_Type=Uncommon_Use;na=INVERTED UNDERTIE;-Pat_Syn;WB=EX;XIDC
cp;2055;age=4.1;na=FLOWER PUNCTUATION MARK
# Archaic punctuation
-cp;2056;age=4.1;lb=BA;na=THREE DOT PUNCTUATION
+cp;2056;age=4.1;Identifier_Type=Obsolete Not_XID;lb=BA;na=THREE DOT PUNCTUATION
# General punctuation
-cp;2057;age=3.2;CWKCF;dm=2032 2032 2032 2032;dt=Com;lb=PO;na=QUADRUPLE PRIME;NFKC_CF=2032 2032 2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032 2032 2032;NFKD_QC=N
+cp;2057;age=3.2;CWKCF;dm=2032 2032 2032 2032;dt=Com;Identifier_Type=Not_NFKC;lb=PO;na=QUADRUPLE PRIME;NFKC_CF=2032 2032 2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032 2032 2032;NFKD_QC=N
# Archaic punctuation
-cp;2058;age=4.1;lb=BA;na=FOUR DOT PUNCTUATION
-cp;2059;age=4.1;lb=BA;na=FIVE DOT PUNCTUATION
-cp;205A;age=4.1;lb=BA;na=TWO DOT PUNCTUATION
-cp;205B;age=4.1;lb=BA;na=FOUR DOT MARK
-cp;205C;age=4.1;na=DOTTED CROSS
-cp;205D;age=4.1;lb=BA;na=TRICOLON
-cp;205E;age=4.1;lb=BA;na=VERTICAL FOUR DOTS
+cp;2058;age=4.1;Identifier_Type=Obsolete Not_XID;lb=BA;na=FOUR DOT PUNCTUATION
+cp;2059;age=4.1;Identifier_Type=Obsolete Not_XID;lb=BA;na=FIVE DOT PUNCTUATION
+cp;205A;age=4.1;Identifier_Type=Obsolete Not_XID;lb=BA;na=TWO DOT PUNCTUATION
+cp;205B;age=4.1;Identifier_Type=Obsolete Not_XID;lb=BA;na=FOUR DOT MARK
+cp;205C;age=4.1;Identifier_Type=Obsolete Not_XID;na=DOTTED CROSS
+cp;205D;age=4.1;Identifier_Type=Obsolete Not_XID;lb=BA;na=TRICOLON
+cp;205E;age=4.1;Identifier_Type=Obsolete Not_XID;lb=BA;na=VERTICAL FOUR DOTS
# Space
-cp;205F;age=3.2;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=MEDIUM MATHEMATICAL SPACE;Name_Alias=abbreviation=MMSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;205F;age=3.2;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=MEDIUM MATHEMATICAL SPACE;Name_Alias=abbreviation=MMSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
# Format character
-cp;2060;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=WJ;na=WORD JOINER;Name_Alias=abbreviation=WJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2060;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=WJ;na=WORD JOINER;Name_Alias=abbreviation=WJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
# Invisible operators
-cp;2061;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=FUNCTION APPLICATION;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;2062;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE TIMES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;2063;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE SEPARATOR;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;2064;age=5.1;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE PLUS;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2061;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;Math;na=FUNCTION APPLICATION;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2062;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;Math;na=INVISIBLE TIMES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2063;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;Math;na=INVISIBLE SEPARATOR;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2064;age=5.1;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;Math;na=INVISIBLE PLUS;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
unassigned;2065;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=;vo=U
# Format characters
-cp;2066;age=6.3;bc=LRI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=LEFT-TO-RIGHT ISOLATE;Name_Alias=abbreviation=LRI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;2067;age=6.3;bc=RLI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=RIGHT-TO-LEFT ISOLATE;Name_Alias=abbreviation=RLI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;2068;age=6.3;bc=FSI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=FIRST STRONG ISOLATE;Name_Alias=abbreviation=FSI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;2069;age=6.3;bc=PDI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=POP DIRECTIONAL ISOLATE;Name_Alias=abbreviation=PDI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2066;age=6.3;bc=LRI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;lb=CM;na=LEFT-TO-RIGHT ISOLATE;Name_Alias=abbreviation=LRI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2067;age=6.3;bc=RLI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;lb=CM;na=RIGHT-TO-LEFT ISOLATE;Name_Alias=abbreviation=RLI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2068;age=6.3;bc=FSI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;lb=CM;na=FIRST STRONG ISOLATE;Name_Alias=abbreviation=FSI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2069;age=6.3;bc=PDI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;lb=CM;na=POP DIRECTIONAL ISOLATE;Name_Alias=abbreviation=PDI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
# Deprecated
-cp;206A;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=INHIBIT SYMMETRIC SWAPPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;206B;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=ACTIVATE SYMMETRIC SWAPPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;206C;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=INHIBIT ARABIC FORM SHAPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;206D;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=ACTIVATE ARABIC FORM SHAPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;206E;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=NATIONAL DIGIT SHAPES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-cp;206F;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=NOMINAL DIGIT SHAPES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
-
-block;2070..209F;age=1.1;bc=EN;blk=Super_And_Sub;CWKCF;dt=Sub;gc=No;Gr_Base;ID_Compat_Math_Continue;lb=AL;NFKC_QC=N;NFKC_SCF=0028;NFKD_QC=N;sc=Zyyy
+cp;206A;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Deprecated;jt=T;lb=CM;na=INHIBIT SYMMETRIC SWAPPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206B;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Deprecated;jt=T;lb=CM;na=ACTIVATE SYMMETRIC SWAPPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206C;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Deprecated;jt=T;lb=CM;na=INHIBIT ARABIC FORM SHAPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206D;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Deprecated;jt=T;lb=CM;na=ACTIVATE ARABIC FORM SHAPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206E;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Deprecated;jt=T;lb=CM;na=NATIONAL DIGIT SHAPES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206F;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Deprecated;jt=T;lb=CM;na=NOMINAL DIGIT SHAPES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+
+block;2070..209F;age=1.1;bc=EN;blk=Super_And_Sub;CWKCF;dt=Sub;gc=No;Gr_Base;ID_Compat_Math_Continue;Identifier_Type=Not_NFKC;lb=AL;NFKC_QC=N;NFKC_SCF=0028;NFKD_QC=N;sc=Zyyy
# 2070..209F Superscripts and Subscripts
# Superscripts
cp;2070;dm=0030;dt=Sup;na=SUPERSCRIPT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=Di;nv=0
@@ -9982,7 +9999,7 @@ cp;209B;age=6.0;Alpha;bc=L;Cased;CI;dm=0073;gc=Lm;IDC;-ID_Compat_Math_Continue;I
cp;209C;age=6.0;Alpha;bc=L;Cased;CI;dm=0074;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
unassigned;209D..209F
-block;20A0..20CF;age=1.1;bc=ET;blk=Currency_Symbols;gc=Sc;Gr_Base;lb=PR;sc=Zyyy
+block;20A0..20CF;age=1.1;bc=ET;blk=Currency_Symbols;gc=Sc;Gr_Base;Identifier_Type=Not_XID;lb=PR;sc=Zyyy
# 20A0..20CF Currency Symbols
# Currency symbols
cp;20A0;na=EURO-CURRENCY SIGN
@@ -9993,7 +10010,7 @@ cp;20A4;na=LIRA SIGN
cp;20A5;na=MILL SIGN
cp;20A6;na=NAIRA SIGN
cp;20A7;lb=PO;na=PESETA SIGN
-cp;20A8;CWKCF;dm=0052 0073;dt=Com;FC_NFKC=0072 0073;na=RUPEE SIGN;NFKC_CF=0072 0073;NFKC_QC=N;NFKC_SCF=0072 0073;NFKD_QC=N
+cp;20A8;CWKCF;dm=0052 0073;dt=Com;FC_NFKC=0072 0073;Identifier_Type=Not_NFKC;na=RUPEE SIGN;NFKC_CF=0072 0073;NFKC_QC=N;NFKC_SCF=0072 0073;NFKD_QC=N
cp;20A9;ea=H;na=WON SIGN
cp;20AA;na=NEW SHEQEL SIGN
cp;20AB;age=2.0;na=DONG SIGN
@@ -10020,7 +10037,7 @@ cp;20BF;age=10.0;na=BITCOIN SIGN
cp;20C0;age=14.0;lb=PO;na=SOM SIGN
unassigned;20C1..20CF;bc=ET;lb=PR
-block;20D0..20FF;age=1.1;bc=NSM;blk=Diacriticals_For_Symbols;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;Math;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;20D0..20FF;age=1.1;bc=NSM;blk=Diacriticals_For_Symbols;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;Math;SB=EX;sc=Zinh;WB=Extend;XIDC
# 20D0..20FF Combining Diacritical Marks for Symbols
# Combining diacritical marks for symbols
cp;20D0;na=COMBINING LEFT HARPOON ABOVE
@@ -10037,16 +10054,16 @@ cp;20DA;ccc=1;na=COMBINING ANTICLOCKWISE RING OVERLAY
cp;20DB;na=COMBINING THREE DOTS ABOVE
cp;20DC;na=COMBINING FOUR DOTS ABOVE
# Enclosing diacritics
-cp;20DD;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING CIRCLE;vo=U;-XIDC
-cp;20DE;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING SQUARE;vo=U;-XIDC
-cp;20DF;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING DIAMOND;vo=U;-XIDC
-cp;20E0;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING CIRCLE BACKSLASH;vo=U;-XIDC
+cp;20DD;ccc=0;gc=Me;-IDC;Identifier_Type=Technical Not_XID;InCB=None;-Math;na=COMBINING ENCLOSING CIRCLE;vo=U;-XIDC
+cp;20DE;ccc=0;gc=Me;-IDC;Identifier_Type=Technical Not_XID;InCB=None;-Math;na=COMBINING ENCLOSING SQUARE;vo=U;-XIDC
+cp;20DF;ccc=0;gc=Me;-IDC;Identifier_Type=Technical Not_XID;InCB=None;-Math;na=COMBINING ENCLOSING DIAMOND;vo=U;-XIDC
+cp;20E0;ccc=0;gc=Me;-IDC;Identifier_Type=Technical Not_XID;InCB=None;-Math;na=COMBINING ENCLOSING CIRCLE BACKSLASH;vo=U;-XIDC
# Additional diacritical mark for symbols
cp;20E1;na=COMBINING LEFT RIGHT ARROW ABOVE
# Additional enclosing diacritics
-cp;20E2;age=3.0;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING SCREEN;vo=U;-XIDC
-cp;20E3;age=3.0;ccc=0;EComp;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING KEYCAP;vo=U;-XIDC
-cp;20E4;age=3.2;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING UPWARD POINTING TRIANGLE;vo=U;-XIDC
+cp;20E2;age=3.0;ccc=0;gc=Me;-IDC;Identifier_Type=Technical Not_XID;InCB=None;-Math;na=COMBINING ENCLOSING SCREEN;vo=U;-XIDC
+cp;20E3;age=3.0;ccc=0;EComp;gc=Me;-IDC;Identifier_Type=Technical Not_XID;InCB=None;-Math;na=COMBINING ENCLOSING KEYCAP;vo=U;-XIDC
+cp;20E4;age=3.2;ccc=0;gc=Me;-IDC;Identifier_Type=Technical Not_XID;InCB=None;-Math;na=COMBINING ENCLOSING UPWARD POINTING TRIANGLE;vo=U;-XIDC
# Additional diacritical marks for symbols
cp;20E5;age=3.2;ccc=1;na=COMBINING REVERSE SOLIDUS OVERLAY
cp;20E6;age=3.2;ccc=1;na=COMBINING DOUBLE VERTICAL STROKE OVERLAY
@@ -10062,18 +10079,18 @@ cp;20EF;age=5.0;ccc=220;na=COMBINING RIGHT ARROW BELOW
cp;20F0;age=5.1;InPC=Top;InSC=Cantillation_Mark;-Math;na=COMBINING ASTERISK ABOVE;scx=Deva Gran Latn
unassigned;20F1..20FF
-block;2100..214F;age=1.1;Alpha;blk=Letterlike_Symbols;CWKCF;dt=Font;gc=Lu;Gr_Base;IDC;IDS;lb=AL;Math;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U;WB=LE;XIDC;XIDS
+block;2100..214F;age=1.1;Alpha;blk=Letterlike_Symbols;CWKCF;dt=Font;gc=Lu;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;Math;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U;WB=LE;XIDC;XIDS
# 2100..214F Letterlike Symbols
# Letterlike symbols
cp;2100;-Alpha;bc=ON;dm=0061 002F 0063;dt=Com;gc=So;-IDC;-IDS;-Math;na=ACCOUNT OF;NFKC_CF=0061 002F 0063;NFKC_SCF=0061 002F 0063;WB=XX;-XIDC;-XIDS
cp;2101;-Alpha;bc=ON;dm=0061 002F 0073;dt=Com;gc=So;-IDC;-IDS;-Math;na=ADDRESSED TO THE SUBJECT;NFKC_CF=0061 002F 0073;NFKC_SCF=0061 002F 0073;WB=XX;-XIDC;-XIDS
cp;2102;Cased;dm=0043;FC_NFKC=0063;na=DOUBLE-STRUCK CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper;vo=R
cp;2103;-Alpha;bc=ON;dm=00B0 0043;dt=Com;ea=A;FC_NFKC=00B0 0063;gc=So;-IDC;-IDS;lb=PO;-Math;na=DEGREE CELSIUS;NFKC_CF=00B0 0063;NFKC_SCF=00B0 0063;WB=XX;-XIDC;-XIDS
-cp;2104;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=CENTRE LINE SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;2104;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=CENTRE LINE SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;2105;-Alpha;bc=ON;dm=0063 002F 006F;dt=Com;ea=A;gc=So;-IDC;-IDS;lb=AI;-Math;na=CARE OF;NFKC_CF=0063 002F 006F;NFKC_SCF=0063 002F 006F;WB=XX;-XIDC;-XIDS
cp;2106;-Alpha;bc=ON;dm=0063 002F 0075;dt=Com;gc=So;-IDC;-IDS;-Math;na=CADA UNA;NFKC_CF=0063 002F 0075;NFKC_SCF=0063 002F 0075;WB=XX;-XIDC;-XIDS
cp;2107;Cased;dm=0190;dt=Com;FC_NFKC=025B;na=EULER CONSTANT;NFKC_CF=025B;NFKC_SCF=025B;SB=UP;Upper
-cp;2108;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=SCRUPLE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;2108;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=SCRUPLE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;2109;-Alpha;bc=ON;dm=00B0 0046;dt=Com;ea=A;FC_NFKC=00B0 0066;gc=So;-IDC;-IDS;lb=PO;-Math;na=DEGREE FAHRENHEIT;NFKC_CF=00B0 0066;NFKC_SCF=00B0 0066;WB=XX;-XIDC;-XIDS
cp;210A;Cased;dm=0067;gc=Ll;Lower;na=SCRIPT SMALL G;NFKC_CF=0067;NFKC_SCF=0067;SB=LO;vo=R
cp;210B;Cased;dm=0048;FC_NFKC=0068;na=SCRIPT CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper;vo=R
@@ -10085,37 +10102,37 @@ cp;2110;Cased;dm=0049;FC_NFKC=0069;na=SCRIPT CAPITAL I;NFKC_CF=0069;NFKC_SCF=006
cp;2111;Cased;dm=0049;FC_NFKC=0069;na=BLACK-LETTER CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper;vo=R
cp;2112;Cased;dm=004C;FC_NFKC=006C;na=SCRIPT CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper;vo=R
cp;2113;Cased;dm=006C;ea=A;gc=Ll;lb=AI;Lower;na=SCRIPT SMALL L;NFKC_CF=006C;NFKC_SCF=006C;SB=LO
-cp;2114;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=L B BAR SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;2114;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=L B BAR SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;2115;Cased;dm=004E;FC_NFKC=006E;na=DOUBLE-STRUCK CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper;vo=R
cp;2116;-Alpha;bc=ON;dm=004E 006F;dt=Com;ea=A;FC_NFKC=006E 006F;gc=So;-IDC;-IDS;lb=PR;-Math;na=NUMERO SIGN;NFKC_CF=006E 006F;NFKC_SCF=006E 006F;WB=XX;-XIDC;-XIDS
-cp;2117;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=SOUND RECORDING COPYRIGHT;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;2118;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;na=SCRIPT CAPITAL P;Name_Alias=correction=WEIERSTRASS ELLIPTIC FUNCTION;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX
+cp;2117;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=SOUND RECORDING COPYRIGHT;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;2118;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;Identifier_Type=Technical;na=SCRIPT CAPITAL P;Name_Alias=correction=WEIERSTRASS ELLIPTIC FUNCTION;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX
cp;2119;Cased;dm=0050;FC_NFKC=0070;na=DOUBLE-STRUCK CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper;vo=R
cp;211A;Cased;dm=0051;FC_NFKC=0071;na=DOUBLE-STRUCK CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper;vo=R
cp;211B;Cased;dm=0052;FC_NFKC=0072;na=SCRIPT CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper;vo=R
cp;211C;Cased;dm=0052;FC_NFKC=0072;na=BLACK-LETTER CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper;vo=R
cp;211D;Cased;dm=0052;FC_NFKC=0072;na=DOUBLE-STRUCK CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper;vo=R
-cp;211E;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=PRESCRIPTION TAKE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;211F;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=RESPONSE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;211E;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=PRESCRIPTION TAKE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;211F;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=RESPONSE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;2120;-Alpha;bc=ON;dm=0053 004D;dt=Sup;FC_NFKC=0073 006D;gc=So;-IDC;-IDS;-Math;na=SERVICE MARK;NFKC_CF=0073 006D;NFKC_SCF=0073 006D;WB=XX;-XIDC;-XIDS
cp;2121;-Alpha;bc=ON;dm=0054 0045 004C;dt=Com;ea=A;FC_NFKC=0074 0065 006C;gc=So;-IDC;-IDS;lb=AI;-Math;na=TELEPHONE SIGN;NFKC_CF=0074 0065 006C;NFKC_SCF=0074 0065 006C;WB=XX;-XIDC;-XIDS
cp;2122;-Alpha;bc=ON;dm=0054 004D;dt=Sup;ea=A;Emoji;ExtPict;FC_NFKC=0074 006D;gc=So;-IDC;-IDS;lb=AI;-Math;na=TRADE MARK SIGN;NFKC_CF=0074 006D;NFKC_SCF=0074 006D;WB=XX;-XIDC;-XIDS
-cp;2123;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=VERSICLE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;2123;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=VERSICLE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;2124;Cased;dm=005A;FC_NFKC=007A;na=DOUBLE-STRUCK CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper;vo=R
-cp;2125;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=OUNCE SIGN;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;2125;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=OUNCE SIGN;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;2126;Cased;cf=03C9;Comp_Ex;CWCF;CWCM;CWL;dm=03A9;dt=Can;ea=A;-Math;na=OHM SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=03C9;NFKC_SCF=03C9;SB=UP;sc=Grek;scf=03C9;slc=03C9;Upper;vo=R
-cp;2127;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=INVERTED OHM SIGN;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;2127;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Obsolete Not_XID;-IDS;-Math;na=INVERTED OHM SIGN;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;2128;Cased;dm=005A;FC_NFKC=007A;na=BLACK-LETTER CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper;vo=R
-cp;2129;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=TURNED GREEK SMALL LETTER IOTA;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;2129;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=TURNED GREEK SMALL LETTER IOTA;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;212A;Cased;cf=006B;Comp_Ex;CWCF;CWCM;CWL;dm=004B;dt=Can;-Math;na=KELVIN SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;sc=Latn;scf=006B;slc=006B;Upper;vo=R
cp;212B;Cased;cf=00E5;Comp_Ex;CWCF;CWCM;CWL;dm=00C5;dt=Can;ea=A;lb=AI;-Math;na=ANGSTROM SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=00E5;NFKC_SCF=00E5;SB=UP;sc=Latn;scf=00E5;slc=00E5;Upper;vo=R
cp;212C;Cased;dm=0042;FC_NFKC=0062;na=SCRIPT CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper;vo=R
cp;212D;Cased;dm=0043;FC_NFKC=0063;na=BLACK-LETTER CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper;vo=R
-cp;212E;-Alpha;bc=ET;-CWKCF;dt=None;gc=So;-Math;na=ESTIMATED SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX
+cp;212E;-Alpha;bc=ET;-CWKCF;dt=None;gc=So;Identifier_Type=Technical;-Math;na=ESTIMATED SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX
cp;212F;Cased;dm=0065;gc=Ll;Lower;na=SCRIPT SMALL E;NFKC_CF=0065;NFKC_SCF=0065;SB=LO;vo=R
cp;2130;Cased;dm=0045;FC_NFKC=0065;na=SCRIPT CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper;vo=R
cp;2131;Cased;dm=0046;FC_NFKC=0066;na=SCRIPT CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper;vo=R
-cp;2132;Cased;cf=214E;CWCF;CWCM;CWL;dt=None;-Math;na=TURNED CAPITAL F;NFKC_CF=214E;NFKC_QC=Y;NFKC_SCF=214E;NFKD_QC=Y;SB=UP;sc=Latn;scf=214E;slc=214E;Upper;vo=R
+cp;2132;Cased;cf=214E;CWCF;CWCM;CWL;dt=None;Identifier_Type=Obsolete;-Math;na=TURNED CAPITAL F;NFKC_CF=214E;NFKC_QC=Y;NFKC_SCF=214E;NFKD_QC=Y;SB=UP;sc=Latn;scf=214E;slc=214E;Upper;vo=R
cp;2133;Cased;dm=004D;FC_NFKC=006D;na=SCRIPT CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper;vo=R
cp;2134;Cased;dm=006F;gc=Ll;Lower;na=SCRIPT SMALL O;NFKC_CF=006F;NFKC_SCF=006F;SB=LO;vo=R
# Hebrew letterlike math symbols
@@ -10125,7 +10142,7 @@ cp;2137;dm=05D2;dt=Com;gc=Lo;na=GIMEL SYMBOL;NFKC_CF=05D2;NFKC_SCF=05D2;SB=LE
cp;2138;dm=05D3;dt=Com;gc=Lo;na=DALET SYMBOL;NFKC_CF=05D3;NFKC_SCF=05D3;SB=LE
# Additional letterlike symbols
cp;2139;age=3.0;Cased;dm=0069;Emoji;ExtPict;gc=Ll;Lower;-Math;na=INFORMATION SOURCE;NFKC_CF=0069;NFKC_SCF=0069;SB=LO
-cp;213A;age=3.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=ROTATED CAPITAL Q;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;213A;age=3.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=ROTATED CAPITAL Q;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;213B;age=4.0;-Alpha;bc=ON;dm=0046 0041 0058;dt=Com;FC_NFKC=0066 0061 0078;gc=So;-IDC;-IDS;-Math;na=FACSIMILE SIGN;NFKC_CF=0066 0061 0078;NFKC_SCF=0066 0061 0078;WB=XX;-XIDC;-XIDS
cp;213C;age=4.1;Cased;dm=03C0;gc=Ll;Lower;na=DOUBLE-STRUCK SMALL PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=LO
cp;213D;age=3.2;Cased;dm=03B3;gc=Ll;Lower;na=DOUBLE-STRUCK SMALL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=LO
@@ -10134,10 +10151,10 @@ cp;213F;age=3.2;Cased;dm=03A0;FC_NFKC=03C0;na=DOUBLE-STRUCK CAPITAL PI;NFKC_CF=0
# Double-struck large operator
cp;2140;age=3.2;-Alpha;bc=ON;Bidi_M;dm=2211;gc=Sm;-IDC;-IDS;na=DOUBLE-STRUCK N-ARY SUMMATION;NFKC_CF=2211;NFKC_SCF=2211;vo=R;WB=XX;-XIDC;-XIDS
# Additional letterlike symbols
-cp;2141;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=TURNED SANS-SERIF CAPITAL G;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
-cp;2142;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=TURNED SANS-SERIF CAPITAL L;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
-cp;2143;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=REVERSED SANS-SERIF CAPITAL L;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
-cp;2144;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=TURNED SANS-SERIF CAPITAL Y;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
+cp;2141;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;Identifier_Type=Not_XID;-IDS;na=TURNED SANS-SERIF CAPITAL G;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
+cp;2142;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;Identifier_Type=Not_XID;-IDS;na=TURNED SANS-SERIF CAPITAL L;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
+cp;2143;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;Identifier_Type=Not_XID;-IDS;na=REVERSED SANS-SERIF CAPITAL L;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
+cp;2144;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;Identifier_Type=Not_XID;-IDS;na=TURNED SANS-SERIF CAPITAL Y;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
# Double-struck italic math symbols
cp;2145;age=3.2;Cased;dm=0044;FC_NFKC=0064;na=DOUBLE-STRUCK ITALIC CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
cp;2146;age=3.2;Cased;dm=0064;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL D;NFKC_CF=0064;NFKC_SCF=0064;SB=LO
@@ -10145,16 +10162,16 @@ cp;2147;age=3.2;Cased;dm=0065;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL E;NFKC_C
cp;2148;age=3.2;Cased;dm=0069;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SB=LO;SD
cp;2149;age=3.2;Cased;dm=006A;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SB=LO;SD
# Additional letterlike symbols
-cp;214A;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=PROPERTY LINE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;214B;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=TURNED AMPERSAND;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
-cp;214C;age=4.1;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=PER SIGN;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;214D;age=5.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=AKTIESELSKAB;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;214A;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=PROPERTY LINE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;214B;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;Identifier_Type=Not_XID;-IDS;na=TURNED AMPERSAND;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
+cp;214C;age=4.1;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=PER SIGN;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;214D;age=5.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;-Math;na=AKTIESELSKAB;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
# Lowercase Claudian letter
-cp;214E;age=5.0;Cased;CWCM;-CWKCF;CWT;CWU;dt=None;gc=Ll;Lower;-Math;na=TURNED SMALL F;NFKC_QC=Y;NFKD_QC=Y;SB=LO;sc=Latn;stc=2132;suc=2132;vo=R
+cp;214E;age=5.0;Cased;CWCM;-CWKCF;CWT;CWU;dt=None;gc=Ll;Identifier_Type=Obsolete;Lower;-Math;na=TURNED SMALL F;NFKC_QC=Y;NFKD_QC=Y;SB=LO;sc=Latn;stc=2132;suc=2132;vo=R
# Biblical editorial symbol
-cp;214F;age=5.1;-Alpha;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=SYMBOL FOR SAMARITAN SOURCE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
+cp;214F;age=5.1;-Alpha;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Obsolete Not_XID;-IDS;-Math;na=SYMBOL FOR SAMARITAN SOURCE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-block;2150..218F;age=1.1;Alpha;blk=Number_Forms;Cased;CWCM;CWKCF;dt=Com;gc=Nl;Gr_Base;IDC;IDS;lb=AL;NFKC_QC=N;NFKD_QC=N;nt=Nu;sc=Latn;vo=U;WB=LE;XIDC;XIDS
+block;2150..218F;age=1.1;Alpha;blk=Number_Forms;Cased;CWCM;CWKCF;dt=Com;gc=Nl;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;NFKC_QC=N;NFKD_QC=N;nt=Nu;sc=Latn;vo=U;WB=LE;XIDC;XIDS
# 2150..218F Number Forms
# Fractions
cp;2150;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0037;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE SEVENTH;NFKC_CF=0031 2044 0037;NFKC_SCF=0031 2044 0037;nv=1/7;sc=Zyyy;WB=XX;-XIDC;-XIDS
@@ -10207,25 +10224,25 @@ cp;217D;CWT;CWU;dm=0063;Lower;na=SMALL ROMAN NUMERAL ONE HUNDRED;NFKC_CF=0063;NF
cp;217E;CWT;CWU;dm=0064;Lower;na=SMALL ROMAN NUMERAL FIVE HUNDRED;NFKC_CF=0064;NFKC_SCF=0064;nv=500;SB=LO;stc=216E;suc=216E
cp;217F;CWT;CWU;dm=006D;Lower;na=SMALL ROMAN NUMERAL ONE THOUSAND;NFKC_CF=006D;NFKC_SCF=006D;nv=1000;SB=LO;stc=216F;suc=216F
# Archaic Roman numerals
-cp;2180;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL ONE THOUSAND C D;NFKC_QC=Y;NFKD_QC=Y;nv=1000;SB=LE
-cp;2181;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL FIVE THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=5000;SB=LE
-cp;2182;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL TEN THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=10000;SB=LE
-cp;2183;age=3.0;cf=2184;CWCF;CWL;dt=None;gc=Lu;na=ROMAN NUMERAL REVERSED ONE HUNDRED;NFKC_CF=2184;NFKC_QC=Y;NFKC_SCF=2184;NFKD_QC=Y;nt=None;SB=UP;scf=2184;slc=2184;Upper
+cp;2180;-Cased;-CWCM;-CWKCF;dt=None;Identifier_Type=Technical Obsolete;na=ROMAN NUMERAL ONE THOUSAND C D;NFKC_QC=Y;NFKD_QC=Y;nv=1000;SB=LE
+cp;2181;-Cased;-CWCM;-CWKCF;dt=None;Identifier_Type=Technical Obsolete;na=ROMAN NUMERAL FIVE THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=5000;SB=LE
+cp;2182;-Cased;-CWCM;-CWKCF;dt=None;Identifier_Type=Technical Obsolete;na=ROMAN NUMERAL TEN THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=10000;SB=LE
+cp;2183;age=3.0;cf=2184;CWCF;CWL;dt=None;gc=Lu;Identifier_Type=Technical Obsolete;na=ROMAN NUMERAL REVERSED ONE HUNDRED;NFKC_CF=2184;NFKC_QC=Y;NFKC_SCF=2184;NFKD_QC=Y;nt=None;SB=UP;scf=2184;slc=2184;Upper
# Lowercase Claudian letter
-cp;2184;age=5.0;-CWKCF;CWT;CWU;dt=None;gc=Ll;Lower;na=LATIN SMALL LETTER REVERSED C;NFKC_QC=Y;NFKD_QC=Y;nt=None;SB=LO;stc=2183;suc=2183
+cp;2184;age=5.0;-CWKCF;CWT;CWU;dt=None;gc=Ll;Identifier_Type=Obsolete;Lower;na=LATIN SMALL LETTER REVERSED C;NFKC_QC=Y;NFKD_QC=Y;nt=None;SB=LO;stc=2183;suc=2183
# Archaic Roman numerals
-cp;2185;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL SIX LATE FORM;NFKC_QC=Y;NFKD_QC=Y;nv=6;SB=LE
-cp;2186;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL FIFTY EARLY FORM;NFKC_QC=Y;NFKD_QC=Y;nv=50;SB=LE
-cp;2187;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL FIFTY THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=50000;SB=LE
-cp;2188;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL ONE HUNDRED THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=100000;SB=LE
+cp;2185;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;Identifier_Type=Obsolete;na=ROMAN NUMERAL SIX LATE FORM;NFKC_QC=Y;NFKD_QC=Y;nv=6;SB=LE
+cp;2186;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;Identifier_Type=Obsolete;na=ROMAN NUMERAL FIFTY EARLY FORM;NFKC_QC=Y;NFKD_QC=Y;nv=50;SB=LE
+cp;2187;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;Identifier_Type=Obsolete;na=ROMAN NUMERAL FIFTY THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=50000;SB=LE
+cp;2188;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;Identifier_Type=Obsolete;na=ROMAN NUMERAL ONE HUNDRED THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=100000;SB=LE
# Fraction
cp;2189;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0030 2044 0033;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION ZERO THIRDS;NFKC_CF=0030 2044 0033;NFKC_SCF=0030 2044 0033;nv=0;sc=Zyyy;WB=XX;-XIDC;-XIDS
# Turned digits
-cp;218A;age=8.0;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=TURNED DIGIT TWO;NFKC_QC=Y;NFKD_QC=Y;nt=None;sc=Zyyy;vo=R;WB=XX;-XIDC;-XIDS
-cp;218B;age=8.0;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=TURNED DIGIT THREE;NFKC_QC=Y;NFKD_QC=Y;nt=None;sc=Zyyy;vo=R;WB=XX;-XIDC;-XIDS
+cp;218A;age=8.0;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Uncommon_Use Not_XID;-IDS;na=TURNED DIGIT TWO;NFKC_QC=Y;NFKD_QC=Y;nt=None;sc=Zyyy;vo=R;WB=XX;-XIDC;-XIDS
+cp;218B;age=8.0;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Uncommon_Use Not_XID;-IDS;na=TURNED DIGIT THREE;NFKC_QC=Y;NFKD_QC=Y;nt=None;sc=Zyyy;vo=R;WB=XX;-XIDC;-XIDS
unassigned;218C..218F;vo=U
-block;2190..21FF;age=1.1;bc=ON;blk=Arrows;gc=So;Gr_Base;lb=AL;Math;Pat_Syn;sc=Zyyy
+block;2190..21FF;age=1.1;bc=ON;blk=Arrows;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;Math;Pat_Syn;sc=Zyyy
# 2190..21FF Arrows
# Simple arrows
cp;2190;ea=A;gc=Sm;lb=AI;na=LEFTWARDS ARROW
@@ -10350,7 +10367,7 @@ cp;21FD;age=3.2;gc=Sm;na=LEFTWARDS OPEN-HEADED ARROW
cp;21FE;age=3.2;gc=Sm;na=RIGHTWARDS OPEN-HEADED ARROW
cp;21FF;age=3.2;gc=Sm;na=LEFT RIGHT OPEN-HEADED ARROW
-block;2200..22FF;age=1.1;bc=ON;Bidi_M;blk=Math_Operators;gc=Sm;Gr_Base;lb=AL;Math;Pat_Syn;sc=Zyyy
+block;2200..22FF;age=1.1;bc=ON;Bidi_M;blk=Math_Operators;gc=Sm;Gr_Base;Identifier_Type=Not_XID;lb=AL;Math;Pat_Syn;sc=Zyyy
# 2200..22FF Mathematical Operators
# Miscellaneous mathematical symbols
cp;2200;-Bidi_M;ea=A;lb=AI;na=FOR ALL
@@ -10406,11 +10423,11 @@ cp;2229;-Bidi_M;ea=A;lb=AI;na=INTERSECTION
cp;222A;-Bidi_M;ea=A;lb=AI;na=UNION
# Integrals
cp;222B;ea=A;lb=AI;na=INTEGRAL
-cp;222C;CWKCF;dm=222B 222B;dt=Com;ea=A;lb=AI;na=DOUBLE INTEGRAL;NFKC_CF=222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B;NFKD_QC=N
-cp;222D;CWKCF;dm=222B 222B 222B;dt=Com;na=TRIPLE INTEGRAL;NFKC_CF=222B 222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B 222B;NFKD_QC=N
+cp;222C;CWKCF;dm=222B 222B;dt=Com;ea=A;Identifier_Type=Not_NFKC;lb=AI;na=DOUBLE INTEGRAL;NFKC_CF=222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B;NFKD_QC=N
+cp;222D;CWKCF;dm=222B 222B 222B;dt=Com;Identifier_Type=Not_NFKC;na=TRIPLE INTEGRAL;NFKC_CF=222B 222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B 222B;NFKD_QC=N
cp;222E;ea=A;lb=AI;na=CONTOUR INTEGRAL
-cp;222F;CWKCF;dm=222E 222E;dt=Com;na=SURFACE INTEGRAL;NFKC_CF=222E 222E;NFKC_QC=N;NFKC_SCF=222E 222E;NFKD_QC=N
-cp;2230;CWKCF;dm=222E 222E 222E;dt=Com;na=VOLUME INTEGRAL;NFKC_CF=222E 222E 222E;NFKC_QC=N;NFKC_SCF=222E 222E 222E;NFKD_QC=N
+cp;222F;CWKCF;dm=222E 222E;dt=Com;Identifier_Type=Not_NFKC;na=SURFACE INTEGRAL;NFKC_CF=222E 222E;NFKC_QC=N;NFKC_SCF=222E 222E;NFKD_QC=N
+cp;2230;CWKCF;dm=222E 222E 222E;dt=Com;Identifier_Type=Not_NFKC;na=VOLUME INTEGRAL;NFKC_CF=222E 222E 222E;NFKC_QC=N;NFKC_SCF=222E 222E 222E;NFKD_QC=N
cp;2231;na=CLOCKWISE INTEGRAL
cp;2232;na=CLOCKWISE CONTOUR INTEGRAL
cp;2233;na=ANTICLOCKWISE CONTOUR INTEGRAL
@@ -10646,7 +10663,7 @@ cp;22FD;age=3.2;bmg=22F6;na=CONTAINS WITH OVERBAR
cp;22FE;age=3.2;bmg=22F7;na=SMALL CONTAINS WITH OVERBAR
cp;22FF;age=3.2;na=Z NOTATION BAG MEMBERSHIP
-block;2300..23FF;age=1.1;bc=ON;blk=Misc_Technical;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy
+block;2300..23FF;age=1.1;bc=ON;blk=Misc_Technical;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;Pat_Syn;sc=Zyyy
# 2300..23FF Miscellaneous Technical
# Miscellaneous technical
cp;2300;na=DIAMETER SIGN;vo=U
@@ -10699,8 +10716,8 @@ cp;2326;na=ERASE TO THE RIGHT;vo=U
cp;2327;na=X IN A RECTANGLE BOX;vo=U
cp;2328;Emoji;ExtPict;na=KEYBOARD;vo=U
# Deprecated angle brackets
-cp;2329;Bidi_M;bmg=232A;bpb=232A;bpt=o;Comp_Ex;CWKCF;Dep;dm=3008;dt=Can;ea=W;gc=Ps;lb=OP;na=LEFT-POINTING ANGLE BRACKET;NFC_QC=N;NFD_QC=N;NFKC_CF=3008;NFKC_QC=N;NFKC_SCF=3008;NFKD_QC=N;SB=CL;vo=Tr
-cp;232A;Bidi_M;bmg=2329;bpb=2329;bpt=c;Comp_Ex;CWKCF;Dep;dm=3009;dt=Can;ea=W;gc=Pe;lb=CL;na=RIGHT-POINTING ANGLE BRACKET;NFC_QC=N;NFD_QC=N;NFKC_CF=3009;NFKC_QC=N;NFKC_SCF=3009;NFKD_QC=N;SB=CL;vo=Tr
+cp;2329;Bidi_M;bmg=232A;bpb=232A;bpt=o;Comp_Ex;CWKCF;Dep;dm=3008;dt=Can;ea=W;gc=Ps;Identifier_Type=Deprecated;lb=OP;na=LEFT-POINTING ANGLE BRACKET;NFC_QC=N;NFD_QC=N;NFKC_CF=3008;NFKC_QC=N;NFKC_SCF=3008;NFKD_QC=N;SB=CL;vo=Tr
+cp;232A;Bidi_M;bmg=2329;bpb=2329;bpt=c;Comp_Ex;CWKCF;Dep;dm=3009;dt=Can;ea=W;gc=Pe;Identifier_Type=Deprecated;lb=CL;na=RIGHT-POINTING ANGLE BRACKET;NFC_QC=N;NFD_QC=N;NFKC_CF=3009;NFKC_QC=N;NFKC_SCF=3009;NFKD_QC=N;SB=CL;vo=Tr
# Keyboard symbol
cp;232B;na=ERASE TO THE LEFT;vo=U
# Chemistry symbol
@@ -10947,7 +10964,7 @@ cp;23FE;age=9.0;na=POWER SLEEP SYMBOL;vo=U
# Miscellaneous symbol
cp;23FF;age=10.0;na=OBSERVER EYE SYMBOL;vo=U
-block;2400..243F;age=1.1;bc=ON;blk=Control_Pictures;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy;vo=U
+block;2400..243F;age=1.1;bc=ON;blk=Control_Pictures;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;Pat_Syn;sc=Zyyy;vo=U
# 2400..243F Control Pictures
# Graphic pictures for control codes
cp;2400;na=SYMBOL FOR NULL
@@ -10995,7 +11012,7 @@ cp;2425;age=3.0;na=SYMBOL FOR DELETE FORM TWO
cp;2426;age=3.0;na=SYMBOL FOR SUBSTITUTE FORM TWO
unassigned;2427..243F;Pat_Syn;vo=U
-block;2440..245F;age=1.1;bc=ON;blk=OCR;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy;vo=U
+block;2440..245F;age=1.1;bc=ON;blk=OCR;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;Pat_Syn;sc=Zyyy;vo=U
# 2440..245F Optical Character Recognition
# OCR-A
cp;2440;na=OCR HOOK
@@ -11013,7 +11030,7 @@ cp;2449;na=OCR CUSTOMER ACCOUNT NUMBER;Name_Alias=correction=MICR DASH SYMBOL
cp;244A;na=OCR DOUBLE BACKSLASH
unassigned;244B..245F;Pat_Syn;vo=U
-block;2460..24FF;age=1.1;blk=Enclosed_Alphanum;CWKCF;dt=Enc;ea=A;gc=No;Gr_Base;lb=AI;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
+block;2460..24FF;age=1.1;blk=Enclosed_Alphanum;CWKCF;dt=Enc;ea=A;gc=No;Gr_Base;Identifier_Type=Not_NFKC;lb=AI;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# 2460..24FF Enclosed Alphanumerics
# Circled numbers
cp;2460;bc=ON;dm=0031;na=CIRCLED DIGIT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=Di;nv=1
@@ -11161,31 +11178,31 @@ cp;24E9;Alpha;Cased;CWCM;CWT;CWU;dm=007A;gc=So;Lower;na=CIRCLED LATIN SMALL LETT
# Additional circled number
cp;24EA;bc=ON;dm=0030;ea=N;na=CIRCLED DIGIT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=Di;nv=0
# White on black circled numbers
-cp;24EB;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER ELEVEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=11
-cp;24EC;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER TWELVE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=12
-cp;24ED;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER THIRTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=13
-cp;24EE;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER FOURTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=14
-cp;24EF;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER FIFTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=15
-cp;24F0;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER SIXTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=16
-cp;24F1;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER SEVENTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=17
-cp;24F2;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER EIGHTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=18
-cp;24F3;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER NINETEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=19
-cp;24F4;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER TWENTY;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=20
+cp;24EB;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER ELEVEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=11
+cp;24EC;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER TWELVE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=12
+cp;24ED;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER THIRTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=13
+cp;24EE;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER FOURTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=14
+cp;24EF;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER FIFTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=15
+cp;24F0;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER SIXTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=16
+cp;24F1;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER SEVENTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=17
+cp;24F2;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER EIGHTEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=18
+cp;24F3;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER NINETEEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=19
+cp;24F4;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=NEGATIVE CIRCLED NUMBER TWENTY;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=20
# Double circled numbers
-cp;24F5;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT ONE;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=1
-cp;24F6;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT TWO;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=2
-cp;24F7;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT THREE;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=3
-cp;24F8;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT FOUR;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=4
-cp;24F9;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT FIVE;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=5
-cp;24FA;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT SIX;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=6
-cp;24FB;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT SEVEN;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=7
-cp;24FC;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT EIGHT;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=8
-cp;24FD;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED DIGIT NINE;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=9
-cp;24FE;age=3.2;bc=ON;-CWKCF;dt=None;na=DOUBLE CIRCLED NUMBER TEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=10
+cp;24F5;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT ONE;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=1
+cp;24F6;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT TWO;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=2
+cp;24F7;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT THREE;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=3
+cp;24F8;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT FOUR;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=4
+cp;24F9;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT FIVE;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=5
+cp;24FA;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT SIX;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=6
+cp;24FB;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT SEVEN;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=7
+cp;24FC;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT EIGHT;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=8
+cp;24FD;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED DIGIT NINE;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=9
+cp;24FE;age=3.2;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=DOUBLE CIRCLED NUMBER TEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=10
# Additional white on black circled number
-cp;24FF;age=4.0;bc=ON;-CWKCF;dt=None;lb=AL;na=NEGATIVE CIRCLED DIGIT ZERO;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=0
+cp;24FF;age=4.0;bc=ON;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;lb=AL;na=NEGATIVE CIRCLED DIGIT ZERO;NFKC_QC=Y;NFKD_QC=Y;nt=Di;nv=0
-block;2500..257F;age=1.1;bc=ON;blk=Box_Drawing;ea=A;gc=So;Gr_Base;lb=AI;Pat_Syn;sc=Zyyy
+block;2500..257F;age=1.1;bc=ON;blk=Box_Drawing;ea=A;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AI;Pat_Syn;sc=Zyyy
# 2500..257F Box Drawing
# Light and heavy solid lines
cp;2500;na=BOX DRAWINGS LIGHT HORIZONTAL
@@ -11326,7 +11343,7 @@ cp;257D;ea=N;lb=AL;na=BOX DRAWINGS LIGHT UP AND HEAVY DOWN
cp;257E;ea=N;lb=AL;na=BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
cp;257F;ea=N;lb=AL;na=BOX DRAWINGS HEAVY UP AND LIGHT DOWN
-block;2580..259F;age=1.1;bc=ON;blk=Block_Elements;ea=A;gc=So;Gr_Base;lb=AI;Pat_Syn;sc=Zyyy
+block;2580..259F;age=1.1;bc=ON;blk=Block_Elements;ea=A;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AI;Pat_Syn;sc=Zyyy
# 2580..259F Block Elements
# Block elements
cp;2580;na=UPPER HALF BLOCK
@@ -11365,7 +11382,7 @@ cp;259D;age=3.2;ea=N;lb=AL;na=QUADRANT UPPER RIGHT
cp;259E;age=3.2;ea=N;lb=AL;na=QUADRANT UPPER RIGHT AND LOWER LEFT
cp;259F;age=3.2;ea=N;lb=AL;na=QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
-block;25A0..25FF;age=1.1;bc=ON;blk=Geometric_Shapes;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy;vo=U
+block;25A0..25FF;age=1.1;bc=ON;blk=Geometric_Shapes;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;Pat_Syn;sc=Zyyy;vo=U
# 25A0..25FF Geometric Shapes
# Geometric shapes
cp;25A0;ea=A;lb=AI;Math;na=BLACK SQUARE
@@ -11467,7 +11484,7 @@ cp;25FD;age=3.2;ea=W;Emoji;EPres;ExtPict;gc=Sm;Math;na=WHITE MEDIUM SMALL SQUARE
cp;25FE;age=3.2;ea=W;Emoji;EPres;ExtPict;gc=Sm;Math;na=BLACK MEDIUM SMALL SQUARE
cp;25FF;age=3.2;gc=Sm;Math;na=LOWER RIGHT TRIANGLE
-block;2600..26FF;age=1.1;bc=ON;blk=Misc_Symbols;ExtPict;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy;vo=U
+block;2600..26FF;age=1.1;bc=ON;blk=Misc_Symbols;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;Pat_Syn;sc=Zyyy;vo=U
# 2600..26FF Miscellaneous Symbols
# Weather and astrological symbols
cp;2600;Emoji;lb=ID;na=BLACK SUN WITH RAYS
@@ -11774,7 +11791,7 @@ cp;26FD;age=5.2;ea=W;Emoji;EPres;lb=ID;na=FUEL PUMP
cp;26FE;age=5.2;ea=A;lb=ID;na=CUP ON BLACK SQUARE
cp;26FF;age=5.2;ea=A;lb=ID;na=WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
-block;2700..27BF;age=1.1;bc=ON;blk=Dingbats;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy;vo=U
+block;2700..27BF;age=1.1;bc=ON;blk=Dingbats;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;Pat_Syn;sc=Zyyy;vo=U
# 2700..27BF Dingbats
# Miscellaneous
cp;2700;age=7.0;ExtPict;lb=ID;na=BLACK SAFETY SCISSORS
@@ -11985,7 +12002,7 @@ cp;27BE;na=OPEN-OUTLINED RIGHTWARDS ARROW;vo=R
# Miscellaneous
cp;27BF;age=6.0;ea=W;Emoji;EPres;ExtPict;na=DOUBLE CURLY LOOP;vo=R
-block;27C0..27EF;age=3.2;bc=ON;Bidi_M;blk=Misc_Math_Symbols_A;gc=Sm;Gr_Base;lb=AL;Math;Pat_Syn;sc=Zyyy
+block;27C0..27EF;age=3.2;bc=ON;Bidi_M;blk=Misc_Math_Symbols_A;gc=Sm;Gr_Base;Identifier_Type=Not_XID;lb=AL;Math;Pat_Syn;sc=Zyyy
# 27C0..27EF Miscellaneous Mathematical Symbols-A
# Miscellaneous symbols
cp;27C0;age=4.1;na=THREE DIMENSIONAL ANGLE
@@ -12051,7 +12068,7 @@ cp;27ED;age=5.1;bmg=27EC;bpb=27EC;bpt=c;ea=Na;gc=Pe;lb=CL;na=MATHEMATICAL RIGHT
cp;27EE;age=5.1;bmg=27EF;bpb=27EF;bpt=o;gc=Ps;lb=OP;na=MATHEMATICAL LEFT FLATTENED PARENTHESIS;SB=CL
cp;27EF;age=5.1;bmg=27EE;bpb=27EE;bpt=c;gc=Pe;lb=CL;na=MATHEMATICAL RIGHT FLATTENED PARENTHESIS;SB=CL
-block;27F0..27FF;age=3.2;bc=ON;blk=Sup_Arrows_A;gc=Sm;Gr_Base;lb=AL;Math;Pat_Syn;sc=Zyyy
+block;27F0..27FF;age=3.2;bc=ON;blk=Sup_Arrows_A;gc=Sm;Gr_Base;Identifier_Type=Not_XID;lb=AL;Math;Pat_Syn;sc=Zyyy
# 27F0..27FF Supplemental Arrows-A
# Arrows
cp;27F0;na=UPWARDS QUADRUPLE ARROW
@@ -12072,7 +12089,7 @@ cp;27FD;na=LONG LEFTWARDS DOUBLE ARROW FROM BAR
cp;27FE;na=LONG RIGHTWARDS DOUBLE ARROW FROM BAR
cp;27FF;na=LONG RIGHTWARDS SQUIGGLE ARROW
-block;2800..28FF;age=3.0;blk=Braille;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Brai
+block;2800..28FF;age=3.0;blk=Braille;gc=So;Gr_Base;Identifier_Type=Technical Not_XID;lb=AL;Pat_Syn;sc=Brai
# 2800..28FF Braille Patterns
# Braille patterns
cp;2800;na=BRAILLE PATTERN BLANK
@@ -12332,7 +12349,7 @@ cp;28FD;na=BRAILLE PATTERN DOTS-1345678
cp;28FE;na=BRAILLE PATTERN DOTS-2345678
cp;28FF;na=BRAILLE PATTERN DOTS-12345678
-block;2900..297F;age=3.2;bc=ON;blk=Sup_Arrows_B;gc=Sm;Gr_Base;lb=AL;Math;Pat_Syn;sc=Zyyy
+block;2900..297F;age=3.2;bc=ON;blk=Sup_Arrows_B;gc=Sm;Gr_Base;Identifier_Type=Not_XID;lb=AL;Math;Pat_Syn;sc=Zyyy
# 2900..297F Supplemental Arrows-B
# Miscellaneous arrows
cp;2900;na=RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
@@ -12475,7 +12492,7 @@ cp;297D;na=RIGHT FISH TAIL
cp;297E;na=UP FISH TAIL
cp;297F;na=DOWN FISH TAIL
-block;2980..29FF;age=3.2;bc=ON;Bidi_M;blk=Misc_Math_Symbols_B;gc=Sm;Gr_Base;lb=AL;Math;Pat_Syn;sc=Zyyy
+block;2980..29FF;age=3.2;bc=ON;Bidi_M;blk=Misc_Math_Symbols_B;gc=Sm;Gr_Base;Identifier_Type=Not_XID;lb=AL;Math;Pat_Syn;sc=Zyyy
# 2980..29FF Miscellaneous Mathematical Symbols-B
# Miscellaneous mathematical symbols
cp;2980;-Bidi_M;na=TRIPLE VERTICAL BAR DELIMITER
@@ -12627,7 +12644,7 @@ cp;29FD;bmg=29FC;bpb=29FC;bpt=c;gc=Pe;lb=CL;na=RIGHT-POINTING CURVED ANGLE BRACK
cp;29FE;-Bidi_M;na=TINY
cp;29FF;-Bidi_M;na=MINY
-block;2A00..2AFF;age=3.2;bc=ON;Bidi_M;blk=Sup_Math_Operators;gc=Sm;Gr_Base;lb=AL;Math;Pat_Syn;sc=Zyyy
+block;2A00..2AFF;age=3.2;bc=ON;Bidi_M;blk=Sup_Math_Operators;gc=Sm;Gr_Base;Identifier_Type=Not_XID;lb=AL;Math;Pat_Syn;sc=Zyyy
# 2A00..2AFF Supplemental Mathematical Operators
# N-ary operators
cp;2A00;-Bidi_M;na=N-ARY CIRCLED DOT OPERATOR
@@ -12643,7 +12660,7 @@ cp;2A09;-Bidi_M;na=N-ARY TIMES OPERATOR
# Summations and integrals
cp;2A0A;na=MODULO TWO SUM
cp;2A0B;na=SUMMATION WITH INTEGRAL
-cp;2A0C;CWKCF;dm=222B 222B 222B 222B;dt=Com;na=QUADRUPLE INTEGRAL OPERATOR;NFKC_CF=222B 222B 222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B 222B 222B;NFKD_QC=N
+cp;2A0C;CWKCF;dm=222B 222B 222B 222B;dt=Com;Identifier_Type=Not_NFKC;na=QUADRUPLE INTEGRAL OPERATOR;NFKC_CF=222B 222B 222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B 222B 222B;NFKD_QC=N
cp;2A0D;na=FINITE PART INTEGRAL
cp;2A0E;na=INTEGRAL WITH DOUBLE STROKE
cp;2A0F;na=INTEGRAL AVERAGE WITH SLASH
@@ -12755,9 +12772,9 @@ cp;2A70;na=APPROXIMATELY EQUAL OR EQUAL TO
cp;2A71;-Bidi_M;na=EQUALS SIGN ABOVE PLUS SIGN
cp;2A72;-Bidi_M;na=PLUS SIGN ABOVE EQUALS SIGN
cp;2A73;na=EQUALS SIGN ABOVE TILDE OPERATOR
-cp;2A74;CWKCF;dm=003A 003A 003D;dt=Com;na=DOUBLE COLON EQUAL;NFKC_CF=003A 003A 003D;NFKC_QC=N;NFKC_SCF=003A 003A 003D;NFKD_QC=N
-cp;2A75;-Bidi_M;CWKCF;dm=003D 003D;dt=Com;na=TWO CONSECUTIVE EQUALS SIGNS;NFKC_CF=003D 003D;NFKC_QC=N;NFKC_SCF=003D 003D;NFKD_QC=N
-cp;2A76;-Bidi_M;CWKCF;dm=003D 003D 003D;dt=Com;na=THREE CONSECUTIVE EQUALS SIGNS;NFKC_CF=003D 003D 003D;NFKC_QC=N;NFKC_SCF=003D 003D 003D;NFKD_QC=N
+cp;2A74;CWKCF;dm=003A 003A 003D;dt=Com;Identifier_Type=Not_NFKC;na=DOUBLE COLON EQUAL;NFKC_CF=003A 003A 003D;NFKC_QC=N;NFKC_SCF=003A 003A 003D;NFKD_QC=N
+cp;2A75;-Bidi_M;CWKCF;dm=003D 003D;dt=Com;Identifier_Type=Not_NFKC;na=TWO CONSECUTIVE EQUALS SIGNS;NFKC_CF=003D 003D;NFKC_QC=N;NFKC_SCF=003D 003D;NFKD_QC=N
+cp;2A76;-Bidi_M;CWKCF;dm=003D 003D 003D;dt=Com;Identifier_Type=Not_NFKC;na=THREE CONSECUTIVE EQUALS SIGNS;NFKC_CF=003D 003D 003D;NFKC_QC=N;NFKC_SCF=003D 003D 003D;NFKD_QC=N
cp;2A77;-Bidi_M;na=EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
cp;2A78;-Bidi_M;na=EQUIVALENT WITH FOUR DOTS ABOVE
cp;2A79;bmg=2A7A;na=LESS-THAN WITH CIRCLE INSIDE
@@ -12861,7 +12878,7 @@ cp;2AD8;-Bidi_M;na=SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
cp;2AD9;-Bidi_M;na=ELEMENT OF OPENING DOWNWARDS
cp;2ADA;-Bidi_M;na=PITCHFORK WITH TEE TOP
cp;2ADB;-Bidi_M;na=TRANSVERSAL INTERSECTION
-cp;2ADC;Comp_Ex;CWKCF;dm=2ADD 0338;dt=Can;na=FORKING;NFC_QC=N;NFD_QC=N;NFKC_CF=2ADD 0338;NFKC_QC=N;NFKC_SCF=2ADD 0338;NFKD_QC=N
+cp;2ADC;Comp_Ex;CWKCF;dm=2ADD 0338;dt=Can;Identifier_Type=Not_NFKC;na=FORKING;NFC_QC=N;NFD_QC=N;NFKC_CF=2ADD 0338;NFKC_QC=N;NFKC_SCF=2ADD 0338;NFKD_QC=N
cp;2ADD;-Bidi_M;na=NONFORKING
# Tacks and turnstiles
cp;2ADE;bmg=22A6;na=SHORT LEFT TACK
@@ -12903,7 +12920,7 @@ cp;2AFD;na=DOUBLE SOLIDUS OPERATOR
cp;2AFE;-Bidi_M;na=WHITE VERTICAL BAR
cp;2AFF;-Bidi_M;na=N-ARY WHITE VERTICAL BAR
-block;2B00..2BFF;age=7.0;bc=ON;blk=Misc_Arrows;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy
+block;2B00..2BFF;age=7.0;bc=ON;blk=Misc_Arrows;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;Pat_Syn;sc=Zyyy
# 2B00..2BFF Miscellaneous Symbols and Arrows
# White and black arrows
cp;2B00;age=4.0;na=NORTH EAST WHITE ARROW
@@ -13184,10 +13201,10 @@ cp;2BE9;age=11.0;na=RIGHT HALF BLACK STAR;vo=U
cp;2BEA;age=11.0;na=STAR WITH LEFT HALF BLACK;vo=U
cp;2BEB;age=11.0;na=STAR WITH RIGHT HALF BLACK;vo=U
# Two-headed arrow symbols
-cp;2BEC;age=8.0;na=LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
-cp;2BED;age=8.0;na=UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
-cp;2BEE;age=8.0;na=RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
-cp;2BEF;age=8.0;na=DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+cp;2BEC;age=8.0;Identifier_Type=Uncommon_Use Not_XID;na=LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+cp;2BED;age=8.0;Identifier_Type=Uncommon_Use Not_XID;na=UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+cp;2BEE;age=8.0;Identifier_Type=Uncommon_Use Not_XID;na=RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+cp;2BEF;age=8.0;Identifier_Type=Uncommon_Use Not_XID;na=DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
# Astrological symbols for Eris and Sedna
cp;2BF0;age=11.0;na=ERIS FORM ONE;vo=U
cp;2BF1;age=11.0;na=ERIS FORM TWO;vo=U
@@ -13209,7 +13226,7 @@ cp;2BFE;age=11.0;Bidi_M;bmg=221F;na=REVERSED RIGHT ANGLE;vo=U
# Miscellaneous symbol
cp;2BFF;age=12.0;na=HELLSCHREIBER PAUSE SYMBOL;vo=U
-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
+block;2C00..2C5F;age=4.1;Alpha;blk=Glagolitic;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LO;sc=Glag;WB=LE;XIDC;XIDS
# 2C00..2C5F Glagolitic
# Capital letters
cp;2C00;cf=2C30;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER AZU;NFKC_CF=2C30;NFKC_SCF=2C30;SB=UP;scf=2C30;slc=2C30;Upper
@@ -13310,7 +13327,7 @@ cp;2C5D;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER TROKUTASTI A;stc=2C2D;suc=2C2D
cp;2C5E;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER LATINATE MYSLITE;stc=2C2E;suc=2C2E
cp;2C5F;age=14.0;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER CAUDATE CHRIVI;stc=2C2F;suc=2C2F
-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
+block;2C60..2C7F;age=5.0;Alpha;blk=Latin_Ext_C;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Technical;IDS;lb=AL;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 2C60..2C7F Latin Extended-C
# Orthographic Latin additions
cp;2C60;cf=2C61;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH DOUBLE BAR;NFKC_CF=2C61;NFKC_SCF=2C61;SB=UP;scf=2C61;slc=2C61;Upper
@@ -13322,36 +13339,36 @@ cp;2C65;CWT;CWU;Lower;na=LATIN SMALL LETTER A WITH STROKE;stc=023A;suc=023A
cp;2C66;CWT;CWU;Lower;na=LATIN SMALL LETTER T WITH DIAGONAL STROKE;stc=023E;suc=023E
# Additions for Uyghur
cp;2C67;cf=2C68;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER H WITH DESCENDER;NFKC_CF=2C68;NFKC_SCF=2C68;SB=UP;scf=2C68;slc=2C68;Upper
-cp;2C68;CWT;CWU;Lower;na=LATIN SMALL LETTER H WITH DESCENDER;stc=2C67;suc=2C67
-cp;2C69;cf=2C6A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH DESCENDER;NFKC_CF=2C6A;NFKC_SCF=2C6A;SB=UP;scf=2C6A;slc=2C6A;Upper
-cp;2C6A;CWT;CWU;Lower;na=LATIN SMALL LETTER K WITH DESCENDER;stc=2C69;suc=2C69
-cp;2C6B;cf=2C6C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH DESCENDER;NFKC_CF=2C6C;NFKC_SCF=2C6C;SB=UP;scf=2C6C;slc=2C6C;Upper
-cp;2C6C;CWT;CWU;Lower;na=LATIN SMALL LETTER Z WITH DESCENDER;stc=2C6B;suc=2C6B
+cp;2C68;CWT;CWU;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER H WITH DESCENDER;stc=2C67;suc=2C67
+cp;2C69;cf=2C6A;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER K WITH DESCENDER;NFKC_CF=2C6A;NFKC_SCF=2C6A;SB=UP;scf=2C6A;slc=2C6A;Upper
+cp;2C6A;CWT;CWU;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER K WITH DESCENDER;stc=2C69;suc=2C69
+cp;2C6B;cf=2C6C;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER Z WITH DESCENDER;NFKC_CF=2C6C;NFKC_SCF=2C6C;SB=UP;scf=2C6C;slc=2C6C;Upper
+cp;2C6C;CWT;CWU;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER Z WITH DESCENDER;stc=2C6B;suc=2C6B
# Miscellaneous additions
-cp;2C6D;age=5.1;cf=0251;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ALPHA;NFKC_CF=0251;NFKC_SCF=0251;SB=UP;scf=0251;slc=0251;Upper
-cp;2C6E;age=5.1;cf=0271;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER M WITH HOOK;NFKC_CF=0271;NFKC_SCF=0271;SB=UP;scf=0271;slc=0271;Upper
-cp;2C6F;age=5.1;cf=0250;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED A;NFKC_CF=0250;NFKC_SCF=0250;SB=UP;scf=0250;slc=0250;Upper
-cp;2C70;age=5.2;cf=0252;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED ALPHA;NFKC_CF=0252;NFKC_SCF=0252;SB=UP;scf=0252;slc=0252;Upper
-cp;2C71;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER V WITH RIGHT HOOK
-cp;2C72;age=5.1;cf=2C73;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER W WITH HOOK;NFKC_CF=2C73;NFKC_SCF=2C73;SB=UP;scf=2C73;slc=2C73;Upper
-cp;2C73;age=5.1;CWT;CWU;Lower;na=LATIN SMALL LETTER W WITH HOOK;stc=2C72;suc=2C72
-cp;2C74;-CWCM;Lower;na=LATIN SMALL LETTER V WITH CURL
+cp;2C6D;age=5.1;cf=0251;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER ALPHA;NFKC_CF=0251;NFKC_SCF=0251;SB=UP;scf=0251;slc=0251;Upper
+cp;2C6E;age=5.1;cf=0271;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER M WITH HOOK;NFKC_CF=0271;NFKC_SCF=0271;SB=UP;scf=0271;slc=0271;Upper
+cp;2C6F;age=5.1;cf=0250;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER TURNED A;NFKC_CF=0250;NFKC_SCF=0250;SB=UP;scf=0250;slc=0250;Upper
+cp;2C70;age=5.2;cf=0252;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER TURNED ALPHA;NFKC_CF=0252;NFKC_SCF=0252;SB=UP;scf=0252;slc=0252;Upper
+cp;2C71;age=5.1;-CWCM;Identifier_Type=Obsolete;Lower;na=LATIN SMALL LETTER V WITH RIGHT HOOK
+cp;2C72;age=5.1;cf=2C73;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER W WITH HOOK;NFKC_CF=2C73;NFKC_SCF=2C73;SB=UP;scf=2C73;slc=2C73;Upper
+cp;2C73;age=5.1;CWT;CWU;Identifier_Type=Obsolete;Lower;na=LATIN SMALL LETTER W WITH HOOK;stc=2C72;suc=2C72
+cp;2C74;-CWCM;Identifier_Type=Obsolete;Lower;na=LATIN SMALL LETTER V WITH CURL
# Claudian letters
-cp;2C75;cf=2C76;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER HALF H;NFKC_CF=2C76;NFKC_SCF=2C76;SB=UP;scf=2C76;slc=2C76;Upper
-cp;2C76;CWT;CWU;Lower;na=LATIN SMALL LETTER HALF H;stc=2C75;suc=2C75
+cp;2C75;cf=2C76;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER HALF H;NFKC_CF=2C76;NFKC_SCF=2C76;SB=UP;scf=2C76;slc=2C76;Upper
+cp;2C76;CWT;CWU;Identifier_Type=Obsolete;Lower;na=LATIN SMALL LETTER HALF H;stc=2C75;suc=2C75
# Additions for UPA
cp;2C77;-CWCM;Lower;na=LATIN SMALL LETTER TAILLESS PHI
cp;2C78;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER E WITH NOTCH
cp;2C79;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER TURNED R WITH TAIL
cp;2C7A;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER O WITH LOW RING INSIDE
cp;2C7B;age=5.1;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL TURNED E
-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;NFKC_SCF=006A;NFKD_QC=N;SD
-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;NFKC_SCF=0076;NFKD_QC=N
+cp;2C7C;age=5.1;CI;-CWCM;CWKCF;dm=006A;dt=Sub;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=LATIN SUBSCRIPT SMALL LETTER J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N;SD
+cp;2C7D;age=5.1;CI;-CWCM;CWKCF;dm=0056;dt=Sup;FC_NFKC=0076;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER CAPITAL V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N
# Additions for Shona
-cp;2C7E;age=5.2;cf=023F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH SWASH TAIL;NFKC_CF=023F;NFKC_SCF=023F;SB=UP;scf=023F;slc=023F;Upper
-cp;2C7F;age=5.2;cf=0240;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH SWASH TAIL;NFKC_CF=0240;NFKC_SCF=0240;SB=UP;scf=0240;slc=0240;Upper
+cp;2C7E;age=5.2;cf=023F;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER S WITH SWASH TAIL;NFKC_CF=023F;NFKC_SCF=023F;SB=UP;scf=023F;slc=023F;Upper
+cp;2C7F;age=5.2;cf=0240;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Obsolete;na=LATIN CAPITAL LETTER Z WITH SWASH TAIL;NFKC_CF=0240;NFKC_SCF=0240;SB=UP;scf=0240;slc=0240;Upper
-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
+block;2C80..2CFF;age=4.1;Alpha;blk=Coptic;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LO;sc=Copt;WB=LE;XIDC;XIDS
# 2C80..2CFF Coptic
# Bohairic Coptic letters
cp;2C80;cf=2C81;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER ALFA;NFKC_CF=2C81;NFKC_SCF=2C81;SB=UP;scf=2C81;slc=2C81;Upper
@@ -13458,12 +13475,12 @@ cp;2CE2;cf=2CE3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN WAU;NFK
cp;2CE3;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD NUBIAN WAU;stc=2CE2;suc=2CE2
# Symbols
cp;2CE4;-CWCM;Lower;na=COPTIC SYMBOL KAI
-cp;2CE5;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL MI RO;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CE6;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL PI RO;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CE7;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL STAUROS;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CE8;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL TAU RO;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CE9;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL KHI RO;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CEA;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL SHIMA SIMA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CE5;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=COPTIC SYMBOL MI RO;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CE6;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=COPTIC SYMBOL PI RO;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CE7;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=COPTIC SYMBOL STAUROS;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CE8;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=COPTIC SYMBOL TAU RO;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CE9;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=COPTIC SYMBOL KHI RO;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CEA;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=COPTIC SYMBOL SHIMA SIMA;SB=XX;WB=XX;-XIDC;-XIDS
# Cryptogrammic letters
cp;2CEB;age=5.2;cf=2CEC;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;NFKC_CF=2CEC;NFKC_SCF=2CEC;SB=UP;scf=2CEC;slc=2CEC;Upper
cp;2CEC;age=5.2;CWT;CWU;Lower;na=COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;stc=2CEB;suc=2CEB
@@ -13471,24 +13488,24 @@ cp;2CED;age=5.2;cf=2CEE;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAM
cp;2CEE;age=5.2;CWT;CWU;Lower;na=COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;stc=2CED;suc=2CED
# Combining marks
cp;2CEF;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COPTIC COMBINING NI ABOVE;SB=EX;WB=Extend;-XIDS
-cp;2CF0;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COPTIC COMBINING SPIRITUS ASPER;SB=EX;WB=Extend;-XIDS
-cp;2CF1;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COPTIC COMBINING SPIRITUS LENIS;SB=EX;WB=Extend;-XIDS
+cp;2CF0;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Technical Exclusion;-IDS;InCB=Extend;jt=T;lb=CM;na=COPTIC COMBINING SPIRITUS ASPER;SB=EX;WB=Extend;-XIDS
+cp;2CF1;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Technical Exclusion;-IDS;InCB=Extend;jt=T;lb=CM;na=COPTIC COMBINING SPIRITUS LENIS;SB=EX;WB=Extend;-XIDS
# Bohairic Coptic letters
cp;2CF2;age=6.1;cf=2CF3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER BOHAIRIC KHEI;NFKC_CF=2CF3;NFKC_SCF=2CF3;SB=UP;scf=2CF3;slc=2CF3;Upper
cp;2CF3;age=6.1;CWT;CWU;Lower;na=COPTIC SMALL LETTER BOHAIRIC KHEI;stc=2CF2;suc=2CF2
unassigned;2CF4..2CF8
# Old Nubian punctuation
-cp;2CF9;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=EX;na=COPTIC OLD NUBIAN FULL STOP;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CFA;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=BA;na=COPTIC OLD NUBIAN DIRECT QUESTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CFB;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=BA;na=COPTIC OLD NUBIAN INDIRECT QUESTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CFC;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=BA;na=COPTIC OLD NUBIAN VERSE DIVIDER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CF9;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=EX;na=COPTIC OLD NUBIAN FULL STOP;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CFA;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=COPTIC OLD NUBIAN DIRECT QUESTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CFB;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=COPTIC OLD NUBIAN INDIRECT QUESTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CFC;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=COPTIC OLD NUBIAN VERSE DIVIDER;SB=XX;WB=XX;-XIDC;-XIDS
# Numeric character
-cp;2CFD;-Alpha;bc=ON;-Cased;-CWCM;gc=No;-IDC;-IDS;na=COPTIC FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CFD;-Alpha;bc=ON;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=COPTIC FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;2CFE;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=EX;na=COPTIC FULL STOP;SB=XX;WB=XX;-XIDC;-XIDS
-cp;2CFF;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=BA;na=COPTIC MORPHOLOGICAL DIVIDER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CFE;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=EX;na=COPTIC FULL STOP;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2CFF;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=COPTIC MORPHOLOGICAL DIVIDER;SB=XX;WB=XX;-XIDC;-XIDS
-block;2D00..2D2F;age=4.1;Alpha;blk=Georgian_Sup;Cased;CWCM;CWT;CWU;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Geor;WB=LE;XIDC;XIDS
+block;2D00..2D2F;age=4.1;Alpha;blk=Georgian_Sup;Cased;CWCM;CWT;CWU;gc=Ll;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=AL;Lower;SB=LO;sc=Geor;WB=LE;XIDC;XIDS
# 2D00..2D2F Georgian Supplement
# Small letters (Khutsuri)
cp;2D00;na=GEORGIAN SMALL LETTER AN;stc=10A0;suc=10A0
@@ -13531,13 +13548,13 @@ cp;2D24;na=GEORGIAN SMALL LETTER HAR;stc=10C4;suc=10C4
cp;2D25;na=GEORGIAN SMALL LETTER HOE;stc=10C5;suc=10C5
unassigned;2D26
# Additional letter
-cp;2D27;age=6.1;na=GEORGIAN SMALL LETTER YN;stc=10C7;suc=10C7
+cp;2D27;age=6.1;Identifier_Status=Allowed;Identifier_Type=Recommended;na=GEORGIAN SMALL LETTER YN;stc=10C7;suc=10C7
unassigned;2D28..2D2C
# Additional letter for Ossetian
-cp;2D2D;age=6.1;na=GEORGIAN SMALL LETTER AEN;stc=10CD;suc=10CD
+cp;2D2D;age=6.1;Identifier_Status=Allowed;Identifier_Type=Recommended;na=GEORGIAN SMALL LETTER AEN;stc=10CD;suc=10CD
unassigned;2D2E..2D2F
-block;2D30..2D7F;age=4.1;Alpha;blk=Tifinagh;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Tfng;WB=LE;XIDC;XIDS
+block;2D30..2D7F;age=4.1;Alpha;blk=Tifinagh;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Tfng;WB=LE;XIDC;XIDS
# 2D30..2D7F Tifinagh
# Letters
cp;2D30;na=TIFINAGH LETTER YA
@@ -13598,14 +13615,14 @@ cp;2D66;age=6.1;na=TIFINAGH LETTER YE
cp;2D67;age=6.1;na=TIFINAGH LETTER YO
unassigned;2D68..2D6E
# Modifier letter
-cp;2D6F;CI;CWKCF;dm=2D61;dt=Sup;gc=Lm;na=TIFINAGH MODIFIER LETTER LABIALIZATION MARK;NFKC_CF=2D61;NFKC_QC=N;NFKC_SCF=2D61;NFKD_QC=N
+cp;2D6F;CI;CWKCF;dm=2D61;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=TIFINAGH MODIFIER LETTER LABIALIZATION MARK;NFKC_CF=2D61;NFKC_QC=N;NFKC_SCF=2D61;NFKD_QC=N
# Punctuation
-cp;2D70;age=6.0;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=TIFINAGH SEPARATOR MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;2D70;age=6.0;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=TIFINAGH SEPARATOR MARK;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;2D71..2D7E
# Sign
cp;2D7F;age=6.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;jt=T;lb=CM;na=TIFINAGH CONSONANT JOINER;SB=EX;WB=Extend;-XIDS
-block;2D80..2DDF;age=4.1;Alpha;blk=Ethiopic_Ext;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
+block;2D80..2DDF;age=4.1;Alpha;blk=Ethiopic_Ext;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
# 2D80..2DDF Ethiopic Extended
# Syllables for Me'en
cp;2D80;na=ETHIOPIC SYLLABLE LOA
@@ -13700,7 +13717,7 @@ cp;2DDD;na=ETHIOPIC SYLLABLE GYE
cp;2DDE;na=ETHIOPIC SYLLABLE GYO
unassigned;2DDF
-block;2DE0..2DFF;age=5.1;Alpha;bc=NSM;blk=Cyrillic_Ext_A;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Cyrl;WB=Extend;XIDC
+block;2DE0..2DFF;age=5.1;Alpha;bc=NSM;blk=Cyrillic_Ext_A;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Obsolete;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Cyrl;WB=Extend;XIDC
# 2DE0..2DFF Cyrillic Extended-A
# Old Church Slavonic combining letters
cp;2DE0;na=COMBINING CYRILLIC LETTER BE
@@ -13736,33 +13753,33 @@ cp;2DFD;na=COMBINING CYRILLIC LETTER LITTLE YUS
cp;2DFE;na=COMBINING CYRILLIC LETTER BIG YUS
cp;2DFF;na=COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
-block;2E00..2E7F;age=4.1;bc=ON;blk=Sup_Punctuation;gc=Po;Gr_Base;lb=BA;Pat_Syn;sc=Zyyy
+block;2E00..2E7F;age=4.1;bc=ON;blk=Sup_Punctuation;gc=Po;Gr_Base;Identifier_Type=Not_XID;lb=BA;Pat_Syn;sc=Zyyy
# 2E00..2E7F Supplemental Punctuation
# New Testament editorial symbols
-cp;2E00;lb=QU;na=RIGHT ANGLE SUBSTITUTION MARKER;SB=CL
-cp;2E01;lb=QU;na=RIGHT ANGLE DOTTED SUBSTITUTION MARKER;SB=CL
-cp;2E02;Bidi_M;bmg=2E03;gc=Pi;lb=QU;na=LEFT SUBSTITUTION BRACKET;SB=CL
-cp;2E03;Bidi_M;bmg=2E02;gc=Pf;lb=QU;na=RIGHT SUBSTITUTION BRACKET;SB=CL
-cp;2E04;Bidi_M;bmg=2E05;gc=Pi;lb=QU;na=LEFT DOTTED SUBSTITUTION BRACKET;SB=CL
-cp;2E05;Bidi_M;bmg=2E04;gc=Pf;lb=QU;na=RIGHT DOTTED SUBSTITUTION BRACKET;SB=CL
-cp;2E06;lb=QU;na=RAISED INTERPOLATION MARKER;SB=CL
-cp;2E07;lb=QU;na=RAISED DOTTED INTERPOLATION MARKER;SB=CL
-cp;2E08;lb=QU;na=DOTTED TRANSPOSITION MARKER;SB=CL
-cp;2E09;Bidi_M;bmg=2E0A;gc=Pi;lb=QU;na=LEFT TRANSPOSITION BRACKET;SB=CL
-cp;2E0A;Bidi_M;bmg=2E09;gc=Pf;lb=QU;na=RIGHT TRANSPOSITION BRACKET;SB=CL
-cp;2E0B;lb=QU;na=RAISED SQUARE;SB=CL
-cp;2E0C;Bidi_M;bmg=2E0D;gc=Pi;lb=QU;na=LEFT RAISED OMISSION BRACKET;SB=CL
-cp;2E0D;Bidi_M;bmg=2E0C;gc=Pf;lb=QU;na=RIGHT RAISED OMISSION BRACKET;SB=CL
+cp;2E00;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RIGHT ANGLE SUBSTITUTION MARKER;SB=CL
+cp;2E01;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RIGHT ANGLE DOTTED SUBSTITUTION MARKER;SB=CL
+cp;2E02;Bidi_M;bmg=2E03;gc=Pi;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=LEFT SUBSTITUTION BRACKET;SB=CL
+cp;2E03;Bidi_M;bmg=2E02;gc=Pf;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RIGHT SUBSTITUTION BRACKET;SB=CL
+cp;2E04;Bidi_M;bmg=2E05;gc=Pi;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=LEFT DOTTED SUBSTITUTION BRACKET;SB=CL
+cp;2E05;Bidi_M;bmg=2E04;gc=Pf;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RIGHT DOTTED SUBSTITUTION BRACKET;SB=CL
+cp;2E06;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RAISED INTERPOLATION MARKER;SB=CL
+cp;2E07;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RAISED DOTTED INTERPOLATION MARKER;SB=CL
+cp;2E08;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=DOTTED TRANSPOSITION MARKER;SB=CL
+cp;2E09;Bidi_M;bmg=2E0A;gc=Pi;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=LEFT TRANSPOSITION BRACKET;SB=CL
+cp;2E0A;Bidi_M;bmg=2E09;gc=Pf;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RIGHT TRANSPOSITION BRACKET;SB=CL
+cp;2E0B;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RAISED SQUARE;SB=CL
+cp;2E0C;Bidi_M;bmg=2E0D;gc=Pi;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=LEFT RAISED OMISSION BRACKET;SB=CL
+cp;2E0D;Bidi_M;bmg=2E0C;gc=Pf;Identifier_Type=Technical Obsolete Not_XID;lb=QU;na=RIGHT RAISED OMISSION BRACKET;SB=CL
# Ancient Greek textual symbols
-cp;2E0E;na=EDITORIAL CORONIS
-cp;2E0F;na=PARAGRAPHOS
-cp;2E10;na=FORKED PARAGRAPHOS
-cp;2E11;na=REVERSED FORKED PARAGRAPHOS
-cp;2E12;na=HYPODIASTOLE
-cp;2E13;na=DOTTED OBELOS
-cp;2E14;na=DOWNWARDS ANCORA
-cp;2E15;na=UPWARDS ANCORA
-cp;2E16;lb=AL;na=DOTTED RIGHT-POINTING ANGLE
+cp;2E0E;Identifier_Type=Obsolete Not_XID;na=EDITORIAL CORONIS
+cp;2E0F;Identifier_Type=Obsolete Not_XID;na=PARAGRAPHOS
+cp;2E10;Identifier_Type=Obsolete Not_XID;na=FORKED PARAGRAPHOS
+cp;2E11;Identifier_Type=Obsolete Not_XID;na=REVERSED FORKED PARAGRAPHOS
+cp;2E12;Identifier_Type=Obsolete Not_XID;na=HYPODIASTOLE
+cp;2E13;Identifier_Type=Obsolete Not_XID;na=DOTTED OBELOS
+cp;2E14;Identifier_Type=Obsolete Not_XID;na=DOWNWARDS ANCORA
+cp;2E15;Identifier_Type=Obsolete Not_XID;na=UPWARDS ANCORA
+cp;2E16;Identifier_Type=Obsolete Not_XID;lb=AL;na=DOTTED RIGHT-POINTING ANGLE
# Ancient Near-Eastern linguistic symbol
cp;2E17;Dash;gc=Pd;Hyphen;na=DOUBLE OBLIQUE HYPHEN
# General punctuation
@@ -13791,25 +13808,25 @@ cp;2E27;age=5.1;Bidi_M;bmg=2E26;bpb=2E26;bpt=c;gc=Pe;lb=CL;na=RIGHT SIDEWAYS U B
cp;2E28;age=5.1;Bidi_M;bmg=2E29;bpb=2E29;bpt=o;gc=Ps;lb=OP;na=LEFT DOUBLE PARENTHESIS;SB=CL
cp;2E29;age=5.1;Bidi_M;bmg=2E28;bpb=2E28;bpt=c;gc=Pe;lb=CL;na=RIGHT DOUBLE PARENTHESIS;SB=CL
# Historic punctuation
-cp;2E2A;age=5.1;na=TWO DOTS OVER ONE DOT PUNCTUATION
-cp;2E2B;age=5.1;na=ONE DOT OVER TWO DOTS PUNCTUATION
-cp;2E2C;age=5.1;na=SQUARED FOUR DOT PUNCTUATION
-cp;2E2D;age=5.1;na=FIVE DOT MARK
-cp;2E2E;age=5.1;lb=EX;na=REVERSED QUESTION MARK;SB=ST;STerm;Term
-cp;2E2F;age=5.1;Alpha;CI;Dia;gc=Lm;lb=AL;na=VERTICAL TILDE;SB=LE;WB=LE
-cp;2E30;age=5.1;na=RING POINT
-cp;2E31;age=5.2;na=WORD SEPARATOR MIDDLE DOT
+cp;2E2A;age=5.1;Identifier_Type=Obsolete Not_XID;na=TWO DOTS OVER ONE DOT PUNCTUATION
+cp;2E2B;age=5.1;Identifier_Type=Obsolete Not_XID;na=ONE DOT OVER TWO DOTS PUNCTUATION
+cp;2E2C;age=5.1;Identifier_Type=Obsolete Not_XID;na=SQUARED FOUR DOT PUNCTUATION
+cp;2E2D;age=5.1;Identifier_Type=Obsolete Not_XID;na=FIVE DOT MARK
+cp;2E2E;age=5.1;Identifier_Type=Obsolete Not_XID;lb=EX;na=REVERSED QUESTION MARK;SB=ST;STerm;Term
+cp;2E2F;age=5.1;Alpha;CI;Dia;gc=Lm;Identifier_Type=Obsolete Not_XID;lb=AL;na=VERTICAL TILDE;SB=LE;WB=LE
+cp;2E30;age=5.1;Identifier_Type=Obsolete Not_XID;na=RING POINT
+cp;2E31;age=5.2;Identifier_Type=Obsolete Not_XID;na=WORD SEPARATOR MIDDLE DOT
# Palaeotype transliteration symbol
-cp;2E32;age=6.1;lb=AL;na=TURNED COMMA
+cp;2E32;age=6.1;Identifier_Type=Obsolete Not_XID;lb=AL;na=TURNED COMMA
# Historic punctuation
cp;2E33;age=6.1;na=RAISED DOT
cp;2E34;age=6.1;na=RAISED COMMA
# Palaeotype transliteration symbols
-cp;2E35;age=6.1;lb=AL;na=TURNED SEMICOLON
+cp;2E35;age=6.1;Identifier_Type=Obsolete Not_XID;lb=AL;na=TURNED SEMICOLON
cp;2E36;age=6.1;lb=AL;na=DAGGER WITH LEFT GUARD
cp;2E37;age=6.1;lb=AL;na=DAGGER WITH RIGHT GUARD
cp;2E38;age=6.1;lb=AL;na=TURNED DAGGER
-cp;2E39;age=6.1;lb=AL;na=TOP HALF SECTION SIGN
+cp;2E39;age=6.1;Identifier_Type=Obsolete Not_XID;lb=AL;na=TOP HALF SECTION SIGN
# Dashes
cp;2E3A;age=6.1;Dash;gc=Pd;lb=B2;na=TWO-EM DASH
cp;2E3B;age=6.1;Dash;gc=Pd;lb=B2;na=THREE-EM DASH
@@ -13859,7 +13876,7 @@ cp;2E5C;age=14.0;Bidi_M;bmg=2E5B;bpb=2E5B;bpt=c;gc=Pe;lb=CL;na=BOTTOM HALF RIGHT
cp;2E5D;age=14.0;Dash;gc=Pd;na=OBLIQUE HYPHEN
unassigned;2E5E..2E7F;Pat_Syn
-block;2E80..2EFF;age=3.0;bc=ON;blk=CJK_Radicals_Sup;ea=W;gc=So;Gr_Base;lb=ID;Radical;sc=Hani;vo=U
+block;2E80..2EFF;age=3.0;bc=ON;blk=CJK_Radicals_Sup;ea=W;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;Radical;sc=Hani;vo=U
# 2E80..2EFF CJK Radicals Supplement
# CJK radicals supplement
cp;2E80;na=CJK RADICAL REPEAT
@@ -13893,7 +13910,7 @@ cp;2E9B;na=CJK RADICAL CHOKE
cp;2E9C;na=CJK RADICAL SUN
cp;2E9D;na=CJK RADICAL MOON
cp;2E9E;na=CJK RADICAL DEATH
-cp;2E9F;CWKCF;dm=6BCD;dt=Com;na=CJK RADICAL MOTHER;NFKC_CF=6BCD;NFKC_QC=N;NFKC_SCF=6BCD;NFKD_QC=N
+cp;2E9F;CWKCF;dm=6BCD;dt=Com;Identifier_Type=Not_NFKC;na=CJK RADICAL MOTHER;NFKC_CF=6BCD;NFKC_QC=N;NFKC_SCF=6BCD;NFKD_QC=N
cp;2EA0;na=CJK RADICAL CIVILIAN
cp;2EA1;na=CJK RADICAL WATER ONE
cp;2EA2;na=CJK RADICAL WATER TWO
@@ -13977,10 +13994,10 @@ cp;2EEF;na=CJK RADICAL J-SIMPLIFIED DRAGON
cp;2EF0;na=CJK RADICAL C-SIMPLIFIED DRAGON
cp;2EF1;na=CJK RADICAL TURTLE
cp;2EF2;na=CJK RADICAL J-SIMPLIFIED TURTLE
-cp;2EF3;CWKCF;dm=9F9F;dt=Com;na=CJK RADICAL C-SIMPLIFIED TURTLE;NFKC_CF=9F9F;NFKC_QC=N;NFKC_SCF=9F9F;NFKD_QC=N
+cp;2EF3;CWKCF;dm=9F9F;dt=Com;Identifier_Type=Not_NFKC;na=CJK RADICAL C-SIMPLIFIED TURTLE;NFKC_CF=9F9F;NFKC_QC=N;NFKC_SCF=9F9F;NFKD_QC=N
unassigned;2EF4..2EFF;vo=U
-block;2F00..2FDF;age=3.0;bc=ON;blk=Kangxi;CWKCF;dt=Com;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;Radical;sc=Hani;vo=U
+block;2F00..2FDF;age=3.0;bc=ON;blk=Kangxi;CWKCF;dt=Com;ea=W;gc=So;Gr_Base;Identifier_Type=Not_NFKC;lb=ID;NFKC_QC=N;NFKD_QC=N;Radical;sc=Hani;vo=U
# 2F00..2FDF Kangxi Radicals
# Kangxi radicals
cp;2F00;dm=4E00;na=KANGXI RADICAL ONE;NFKC_CF=4E00;NFKC_SCF=4E00
@@ -14202,7 +14219,7 @@ unassigned;2FD6..2FDF;vo=U
# No block
unassigned;2FE0..2FEF;vo=U
-block;2FF0..2FFF;age=3.0;bc=ON;blk=IDC;ea=W;gc=So;Gr_Base;IDSB;lb=ID;sc=Zyyy;vo=U
+block;2FF0..2FFF;age=3.0;bc=ON;blk=IDC;ea=W;gc=So;Gr_Base;Identifier_Type=Not_XID;IDSB;lb=ID;sc=Zyyy;vo=U
# 2FF0..2FFF Ideographic Description Characters
# Ideographic description characters
cp;2FF0;na=IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
@@ -14222,17 +14239,17 @@ cp;2FFD;age=15.1;na=IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT
cp;2FFE;age=15.1;-IDSB;IDSU;na=IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION
cp;2FFF;age=15.1;-IDSB;IDSU;na=IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
-block;3000..303F;age=1.1;bc=ON;blk=CJK_Symbols;ea=W;gc=Nl;Gr_Base;lb=ID;SB=LE;sc=Zyyy;scx=Bopo Hang Hani Hira Kana Yiii;vo=U
+block;3000..303F;age=1.1;bc=ON;blk=CJK_Symbols;ea=W;gc=Nl;Gr_Base;Identifier_Type=Not_XID;lb=ID;SB=LE;sc=Zyyy;scx=Bopo Hang Hani Hira Kana Yiii;vo=U
# 3000..303F CJK Symbols and Punctuation
# CJK symbols and punctuation
-cp;3000;bc=WS;CWKCF;dm=0020;dt=Wide;ea=F;gc=Zs;lb=BA;na=IDEOGRAPHIC SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;SB=SP;scx=<script>;WB=WSegSpace;WSpace
+cp;3000;bc=WS;CWKCF;dm=0020;dt=Wide;ea=F;gc=Zs;Identifier_Type=Not_NFKC;lb=BA;na=IDEOGRAPHIC SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;SB=SP;scx=<script>;WB=WSegSpace;WSpace
cp;3001;gc=Po;lb=CL;na=IDEOGRAPHIC COMMA;Pat_Syn;SB=SC;Term;vo=Tu
cp;3002;gc=Po;lb=CL;na=IDEOGRAPHIC FULL STOP;Pat_Syn;SB=ST;STerm;Term;vo=Tu
cp;3003;gc=Po;na=DITTO MARK;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
cp;3004;gc=So;na=JAPANESE INDUSTRIAL STANDARD SYMBOL;SB=XX;scx=<script>
-cp;3005;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;lb=NS;na=IDEOGRAPHIC ITERATION MARK;sc=Hani;scx=<script>;WB=LE;XIDC;XIDS
-cp;3006;Alpha;bc=L;gc=Lo;IDC;Ideo;IDS;na=IDEOGRAPHIC CLOSING MARK;scx=Hani;XIDC;XIDS
-cp;3007;Alpha;bc=L;IDC;Ideo;IDS;na=IDEOGRAPHIC NUMBER ZERO;nt=Nu;nv=0;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3005;Alpha;bc=L;CI;Ext;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=NS;na=IDEOGRAPHIC ITERATION MARK;sc=Hani;scx=<script>;WB=LE;XIDC;XIDS
+cp;3006;Alpha;bc=L;gc=Lo;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;na=IDEOGRAPHIC CLOSING MARK;scx=Hani;XIDC;XIDS
+cp;3007;Alpha;bc=L;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;na=IDEOGRAPHIC NUMBER ZERO;nt=Nu;nv=0;sc=Hani;scx=<script>;XIDC;XIDS
# CJK angle brackets
cp;3008;Bidi_M;bmg=3009;bpb=3009;bpt=o;gc=Ps;lb=OP;na=LEFT ANGLE BRACKET;Pat_Syn;SB=CL;vo=Tr
cp;3009;Bidi_M;bmg=3008;bpb=3008;bpt=c;gc=Pe;lb=CL;na=RIGHT ANGLE BRACKET;Pat_Syn;SB=CL;vo=Tr
@@ -14261,51 +14278,51 @@ cp;301B;Bidi_M;bmg=301A;bpb=301A;bpt=c;gc=Pe;lb=CL;na=RIGHT WHITE SQUARE BRACKET
# CJK punctuation
cp;301C;Dash;gc=Pd;lb=NS;na=WAVE DASH;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana;vo=Tr
cp;301D;gc=Ps;lb=OP;na=REVERSED DOUBLE PRIME QUOTATION MARK;Pat_Syn;QMark;SB=CL;scx=Bopo Hang Hani Hira Kana;vo=Tr
-cp;301E;gc=Pe;lb=CL;na=DOUBLE PRIME QUOTATION MARK;Pat_Syn;QMark;SB=CL;scx=Bopo Hang Hani Hira Kana;vo=Tr
+cp;301E;gc=Pe;Identifier_Type=Obsolete Not_XID;lb=CL;na=DOUBLE PRIME QUOTATION MARK;Pat_Syn;QMark;SB=CL;scx=Bopo Hang Hani Hira Kana;vo=Tr
cp;301F;gc=Pe;lb=CL;na=LOW DOUBLE PRIME QUOTATION MARK;Pat_Syn;QMark;SB=CL;scx=Bopo Hang Hani Hira Kana;vo=Tr
# CJK symbol
cp;3020;gc=So;na=POSTAL MARK FACE;Pat_Syn;SB=XX;scx=<script>
# Suzhou numerals
-cp;3021;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL ONE;nt=Nu;nv=1;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3022;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL TWO;nt=Nu;nv=2;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3023;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL THREE;nt=Nu;nv=3;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3024;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL FOUR;nt=Nu;nv=4;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3025;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL FIVE;nt=Nu;nv=5;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3026;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL SIX;nt=Nu;nv=6;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3027;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL SEVEN;nt=Nu;nv=7;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3028;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL EIGHT;nt=Nu;nv=8;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3029;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL NINE;nt=Nu;nv=9;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3021;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL ONE;nt=Nu;nv=1;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3022;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL TWO;nt=Nu;nv=2;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3023;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL THREE;nt=Nu;nv=3;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3024;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL FOUR;nt=Nu;nv=4;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3025;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL FIVE;nt=Nu;nv=5;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3026;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL SIX;nt=Nu;nv=6;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3027;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL SEVEN;nt=Nu;nv=7;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3028;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL EIGHT;nt=Nu;nv=8;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3029;Alpha;bc=L;IDC;Identifier_Type=Technical;Ideo;IDS;na=HANGZHOU NUMERAL NINE;nt=Nu;nv=9;sc=Hani;scx=<script>;XIDC;XIDS
# Combining tone marks
-cp;302A;bc=NSM;ccc=218;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC LEVEL TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
-cp;302B;bc=NSM;ccc=228;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC RISING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
-cp;302C;bc=NSM;ccc=232;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC DEPARTING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
-cp;302D;bc=NSM;ccc=222;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC ENTERING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
-cp;302E;bc=L;ccc=224;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=HANGUL SINGLE DOT TONE MARK;SB=EX;sc=Hang;scx=<script>;WB=Extend;XIDC
-cp;302F;bc=L;ccc=224;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=HANGUL DOUBLE DOT TONE MARK;SB=EX;sc=Hang;scx=<script>;WB=Extend;XIDC
+cp;302A;bc=NSM;ccc=218;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC LEVEL TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
+cp;302B;bc=NSM;ccc=228;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC RISING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
+cp;302C;bc=NSM;ccc=232;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC DEPARTING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
+cp;302D;bc=NSM;ccc=222;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC ENTERING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
+cp;302E;bc=L;ccc=224;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical Obsolete;InCB=Extend;lb=CM;na=HANGUL SINGLE DOT TONE MARK;SB=EX;sc=Hang;scx=<script>;WB=Extend;XIDC
+cp;302F;bc=L;ccc=224;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical Obsolete;InCB=Extend;lb=CM;na=HANGUL DOUBLE DOT TONE MARK;SB=EX;sc=Hang;scx=<script>;WB=Extend;XIDC
# Other CJK punctuation
cp;3030;Dash;Emoji;ExtPict;gc=Pd;na=WAVY DASH;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana;vo=Tr
# Kana repeat marks
-cp;3031;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;na=VERTICAL KANA REPEAT MARK;scx=Hira Kana;WB=KA;XIDC;XIDS
-cp;3032;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;na=VERTICAL KANA REPEAT WITH VOICED SOUND MARK;scx=Hira Kana;WB=KA;XIDC;XIDS
-cp;3033;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;na=VERTICAL KANA REPEAT MARK UPPER HALF;scx=Hira Kana;WB=KA;XIDC;XIDS
-cp;3034;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;na=VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;scx=Hira Kana;WB=KA;XIDC;XIDS
-cp;3035;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;lb=CM;na=VERTICAL KANA REPEAT MARK LOWER HALF;scx=Hira Kana;WB=KA;XIDC;XIDS
+cp;3031;Alpha;bc=L;CI;Ext;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=VERTICAL KANA REPEAT MARK;scx=Hira Kana;WB=KA;XIDC;XIDS
+cp;3032;Alpha;bc=L;CI;Ext;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=VERTICAL KANA REPEAT WITH VOICED SOUND MARK;scx=Hira Kana;WB=KA;XIDC;XIDS
+cp;3033;Alpha;bc=L;CI;Ext;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=VERTICAL KANA REPEAT MARK UPPER HALF;scx=Hira Kana;WB=KA;XIDC;XIDS
+cp;3034;Alpha;bc=L;CI;Ext;gc=Lm;IDC;Identifier_Type=Technical;IDS;na=VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;scx=Hira Kana;WB=KA;XIDC;XIDS
+cp;3035;Alpha;bc=L;CI;Ext;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=CM;na=VERTICAL KANA REPEAT MARK LOWER HALF;scx=Hira Kana;WB=KA;XIDC;XIDS
# Other CJK symbols
-cp;3036;CWKCF;dm=3012;dt=Com;gc=So;na=CIRCLED POSTAL MARK;NFKC_CF=3012;NFKC_QC=N;NFKC_SCF=3012;NFKD_QC=N;SB=XX;scx=<script>
+cp;3036;CWKCF;dm=3012;dt=Com;gc=So;Identifier_Type=Not_NFKC;na=CIRCLED POSTAL MARK;NFKC_CF=3012;NFKC_QC=N;NFKC_SCF=3012;NFKD_QC=N;SB=XX;scx=<script>
cp;3037;gc=So;na=IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;SB=XX;scx=Bopo Hang Hani Hira Kana
# Additional Suzhou numerals
-cp;3038;age=3.0;Alpha;bc=L;CWKCF;dm=5341;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL TEN;NFKC_CF=5341;NFKC_QC=N;NFKC_SCF=5341;NFKD_QC=N;nt=Nu;nv=10;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3039;age=3.0;Alpha;bc=L;CWKCF;dm=5344;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL TWENTY;NFKC_CF=5344;NFKC_QC=N;NFKC_SCF=5344;NFKD_QC=N;nt=Nu;nv=20;sc=Hani;scx=<script>;XIDC;XIDS
-cp;303A;age=3.0;Alpha;bc=L;CWKCF;dm=5345;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL THIRTY;NFKC_CF=5345;NFKC_QC=N;NFKC_SCF=5345;NFKD_QC=N;nt=Nu;nv=30;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3038;age=3.0;Alpha;bc=L;CWKCF;dm=5341;dt=Com;IDC;Identifier_Type=Not_NFKC;Ideo;IDS;na=HANGZHOU NUMERAL TEN;NFKC_CF=5341;NFKC_QC=N;NFKC_SCF=5341;NFKD_QC=N;nt=Nu;nv=10;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3039;age=3.0;Alpha;bc=L;CWKCF;dm=5344;dt=Com;IDC;Identifier_Type=Not_NFKC;Ideo;IDS;na=HANGZHOU NUMERAL TWENTY;NFKC_CF=5344;NFKC_QC=N;NFKC_SCF=5344;NFKD_QC=N;nt=Nu;nv=20;sc=Hani;scx=<script>;XIDC;XIDS
+cp;303A;age=3.0;Alpha;bc=L;CWKCF;dm=5345;dt=Com;IDC;Identifier_Type=Not_NFKC;Ideo;IDS;na=HANGZHOU NUMERAL THIRTY;NFKC_CF=5345;NFKC_QC=N;NFKC_SCF=5345;NFKD_QC=N;nt=Nu;nv=30;sc=Hani;scx=<script>;XIDC;XIDS
# Other CJK punctuation
-cp;303B;age=3.2;Alpha;bc=L;CI;gc=Lm;IDC;IDS;lb=NS;na=VERTICAL IDEOGRAPHIC ITERATION MARK;sc=Hani;scx=<script>;WB=LE;XIDC;XIDS
-cp;303C;age=3.2;Alpha;bc=L;gc=Lo;IDC;IDS;lb=NS;na=MASU MARK;scx=Hani Hira Kana;WB=LE;XIDC;XIDS
+cp;303B;age=3.2;Alpha;bc=L;CI;gc=Lm;IDC;Identifier_Type=Technical;IDS;lb=NS;na=VERTICAL IDEOGRAPHIC ITERATION MARK;sc=Hani;scx=<script>;WB=LE;XIDC;XIDS
+cp;303C;age=3.2;Alpha;bc=L;gc=Lo;IDC;Identifier_Type=Technical;IDS;lb=NS;na=MASU MARK;scx=Hani Hira Kana;WB=LE;XIDC;XIDS
cp;303D;age=3.2;Emoji;ExtPict;gc=Po;na=PART ALTERNATION MARK;SB=XX;scx=Hani Hira Kana
# Special CJK indicators
cp;303E;age=3.0;gc=So;na=IDEOGRAPHIC VARIATION INDICATOR;SB=XX;scx=Hani
cp;303F;ea=N;gc=So;na=IDEOGRAPHIC HALF FILL SPACE;SB=XX;scx=Hani
-block;3040..309F;age=1.1;Alpha;blk=Hiragana;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Hira;vo=U;XIDC;XIDS
+block;3040..309F;age=1.1;Alpha;blk=Hiragana;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=ID;SB=LE;sc=Hira;vo=U;XIDC;XIDS
# 3040..309F Hiragana
unassigned;3040;vo=U
# Hiragana letters
@@ -14400,18 +14417,18 @@ unassigned;3097..3098;vo=U
# Voicing marks
cp;3099;-Alpha;bc=NSM;ccc=8;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Hira Kana;WB=Extend;-XIDS
cp;309A;-Alpha;bc=NSM;ccc=8;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Hira Kana;WB=Extend;-XIDS
-cp;309B;-Alpha;bc=ON;CI;CWKCF;Dia;dm=0020 3099;dt=Com;gc=Sk;lb=NS;na=KATAKANA-HIRAGANA VOICED SOUND MARK;NFKC_CF=0020 3099;NFKC_QC=N;NFKC_SCF=0020 3099;NFKD_QC=N;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tu;WB=KA;-XIDC;-XIDS
-cp;309C;-Alpha;bc=ON;CI;CWKCF;Dia;dm=0020 309A;dt=Com;gc=Sk;lb=NS;na=KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;NFKC_CF=0020 309A;NFKC_QC=N;NFKC_SCF=0020 309A;NFKD_QC=N;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tu;WB=KA;-XIDC;-XIDS
+cp;309B;-Alpha;bc=ON;CI;CWKCF;Dia;dm=0020 3099;dt=Com;gc=Sk;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;lb=NS;na=KATAKANA-HIRAGANA VOICED SOUND MARK;NFKC_CF=0020 3099;NFKC_QC=N;NFKC_SCF=0020 3099;NFKD_QC=N;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tu;WB=KA;-XIDC;-XIDS
+cp;309C;-Alpha;bc=ON;CI;CWKCF;Dia;dm=0020 309A;dt=Com;gc=Sk;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;lb=NS;na=KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;NFKC_CF=0020 309A;NFKC_QC=N;NFKC_SCF=0020 309A;NFKD_QC=N;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tu;WB=KA;-XIDC;-XIDS
# Iteration marks
cp;309D;CI;Ext;gc=Lm;lb=NS;na=HIRAGANA ITERATION MARK
cp;309E;CI;dm=309D 3099;dt=Can;Ext;gc=Lm;lb=NS;na=HIRAGANA VOICED ITERATION MARK;NFD_QC=N;NFKD_QC=N
# Hiragana digraph
-cp;309F;age=3.2;CWKCF;dm=3088 308A;dt=Vert;na=HIRAGANA DIGRAPH YORI;NFKC_CF=3088 308A;NFKC_QC=N;NFKC_SCF=3088 308A;NFKD_QC=N
+cp;309F;age=3.2;CWKCF;dm=3088 308A;dt=Vert;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=HIRAGANA DIGRAPH YORI;NFKC_CF=3088 308A;NFKC_QC=N;NFKC_SCF=3088 308A;NFKD_QC=N
-block;30A0..30FF;age=1.1;Alpha;blk=Katakana;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Kana;vo=U;WB=KA;XIDC;XIDS
+block;30A0..30FF;age=1.1;Alpha;blk=Katakana;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=ID;SB=LE;sc=Kana;vo=U;WB=KA;XIDC;XIDS
# 30A0..30FF Katakana
# Katakana punctuation
-cp;30A0;age=3.2;-Alpha;bc=ON;Dash;gc=Pd;-IDC;-IDS;lb=NS;na=KATAKANA-HIRAGANA DOUBLE HYPHEN;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tr;-XIDC;-XIDS
+cp;30A0;age=3.2;-Alpha;bc=ON;Dash;gc=Pd;-IDC;Identifier_Type=Inclusion;-IDS;lb=NS;na=KATAKANA-HIRAGANA DOUBLE HYPHEN;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tr;-XIDC;-XIDS
# Katakana letters
cp;30A1;lb=CJ;na=KATAKANA LETTER SMALL A;vo=Tu
cp;30A2;na=KATAKANA LETTER A
@@ -14504,15 +14521,15 @@ cp;30F8;dm=30F0 3099;dt=Can;na=KATAKANA LETTER VI;NFD_QC=N;NFKD_QC=N
cp;30F9;dm=30F1 3099;dt=Can;na=KATAKANA LETTER VE;NFD_QC=N;NFKD_QC=N
cp;30FA;dm=30F2 3099;dt=Can;na=KATAKANA LETTER VO;NFD_QC=N;NFKD_QC=N
# Conjunction and length marks
-cp;30FB;-Alpha;bc=ON;gc=Po;Hyphen;-IDS;lb=NS;na=KATAKANA MIDDLE DOT;SB=XX;sc=Zyyy;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDS
+cp;30FB;-Alpha;bc=ON;gc=Po;Hyphen;Identifier_Type=Inclusion;-IDS;lb=NS;na=KATAKANA MIDDLE DOT;SB=XX;sc=Zyyy;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDS
cp;30FC;CI;Dia;Ext;gc=Lm;lb=CJ;na=KATAKANA-HIRAGANA PROLONGED SOUND MARK;sc=Zyyy;scx=Hira Kana;vo=Tr
# Iteration marks
cp;30FD;CI;Ext;gc=Lm;lb=NS;na=KATAKANA ITERATION MARK
cp;30FE;CI;dm=30FD 3099;dt=Can;Ext;gc=Lm;lb=NS;na=KATAKANA VOICED ITERATION MARK;NFD_QC=N;NFKD_QC=N
# Katakana digraph
-cp;30FF;age=3.2;CWKCF;dm=30B3 30C8;dt=Vert;na=KATAKANA DIGRAPH KOTO;NFKC_CF=30B3 30C8;NFKC_QC=N;NFKC_SCF=30B3 30C8;NFKD_QC=N
+cp;30FF;age=3.2;CWKCF;dm=30B3 30C8;dt=Vert;Identifier_Status=Restricted;Identifier_Type=Not_NFKC;na=KATAKANA DIGRAPH KOTO;NFKC_CF=30B3 30C8;NFKC_QC=N;NFKC_SCF=30B3 30C8;NFKD_QC=N
-block;3100..312F;age=1.1;Alpha;blk=Bopomofo;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Bopo;vo=U;WB=LE;XIDC;XIDS
+block;3100..312F;age=1.1;Alpha;blk=Bopomofo;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=ID;SB=LE;sc=Bopo;vo=U;WB=LE;XIDC;XIDS
# 3100..312F Bopomofo
unassigned;3100..3104;vo=U
# Based on GB 2312
@@ -14559,10 +14576,10 @@ cp;312B;na=BOPOMOFO LETTER NG
cp;312C;na=BOPOMOFO LETTER GN
# Miscellaneous additions
cp;312D;age=5.1;na=BOPOMOFO LETTER IH
-cp;312E;age=10.0;na=BOPOMOFO LETTER O WITH DOT ABOVE
+cp;312E;age=10.0;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=BOPOMOFO LETTER O WITH DOT ABOVE
cp;312F;age=11.0;na=BOPOMOFO LETTER NN
-block;3130..318F;age=1.1;Alpha;blk=Compat_Jamo;CWKCF;dt=Com;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
+block;3130..318F;age=1.1;Alpha;blk=Compat_Jamo;CWKCF;dt=Com;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=ID;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
# 3130..318F Hangul Compatibility Jamo
unassigned;3130;vo=U
# Consonant letters
@@ -14619,7 +14636,7 @@ cp;3161;dm=1173;na=HANGUL LETTER EU;NFKC_CF=1173;NFKC_SCF=1173
cp;3162;dm=1174;na=HANGUL LETTER YI;NFKC_CF=1174;NFKC_SCF=1174
cp;3163;dm=1175;na=HANGUL LETTER I;NFKC_CF=1175;NFKC_SCF=1175
# Special character
-cp;3164;DI;dm=1160;na=HANGUL FILLER;NFKC_CF=;NFKC_SCF=
+cp;3164;DI;dm=1160;Identifier_Type=Default_Ignorable;na=HANGUL FILLER;NFKC_CF=;NFKC_SCF=
# Old consonant letters
cp;3165;dm=1114;na=HANGUL LETTER SSANGNIEUN;NFKC_CF=1114;NFKC_SCF=1114
cp;3166;dm=1115;na=HANGUL LETTER NIEUN-TIKEUT;NFKC_CF=1115;NFKC_SCF=1115
@@ -14666,12 +14683,12 @@ cp;318D;dm=119E;na=HANGUL LETTER ARAEA;NFKC_CF=119E;NFKC_SCF=119E
cp;318E;dm=11A1;na=HANGUL LETTER ARAEAE;NFKC_CF=11A1;NFKC_SCF=11A1
unassigned;318F;vo=U
-block;3190..319F;age=1.1;blk=Kanbun;CWKCF;dt=Sup;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;scx=Hani;vo=U
+block;3190..319F;age=1.1;blk=Kanbun;CWKCF;dt=Sup;ea=W;gc=So;Gr_Base;Identifier_Type=Not_NFKC;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;scx=Hani;vo=U
# 3190..319F Kanbun
# Tateten
-cp;3190;-CWKCF;dt=None;na=IDEOGRAPHIC ANNOTATION LINKING MARK;NFKC_QC=Y;NFKD_QC=Y
+cp;3190;-CWKCF;dt=None;Identifier_Type=Not_XID;na=IDEOGRAPHIC ANNOTATION LINKING MARK;NFKC_QC=Y;NFKD_QC=Y
# Kaeriten
-cp;3191;-CWKCF;dt=None;na=IDEOGRAPHIC ANNOTATION REVERSE MARK;NFKC_QC=Y;NFKD_QC=Y
+cp;3191;-CWKCF;dt=None;Identifier_Type=Not_XID;na=IDEOGRAPHIC ANNOTATION REVERSE MARK;NFKC_QC=Y;NFKD_QC=Y
cp;3192;dm=4E00;gc=No;na=IDEOGRAPHIC ANNOTATION ONE MARK;NFKC_CF=4E00;NFKC_SCF=4E00;nt=Nu;nv=1
cp;3193;dm=4E8C;gc=No;na=IDEOGRAPHIC ANNOTATION TWO MARK;NFKC_CF=4E8C;NFKC_SCF=4E8C;nt=Nu;nv=2
cp;3194;dm=4E09;gc=No;na=IDEOGRAPHIC ANNOTATION THREE MARK;NFKC_CF=4E09;NFKC_SCF=4E09;nt=Nu;nv=3
@@ -14687,7 +14704,7 @@ cp;319D;dm=5929;na=IDEOGRAPHIC ANNOTATION HEAVEN MARK;NFKC_CF=5929;NFKC_SCF=5929
cp;319E;dm=5730;na=IDEOGRAPHIC ANNOTATION EARTH MARK;NFKC_CF=5730;NFKC_SCF=5730
cp;319F;dm=4EBA;na=IDEOGRAPHIC ANNOTATION MAN MARK;NFKC_CF=4EBA;NFKC_SCF=4EBA
-block;31A0..31BF;age=3.0;Alpha;blk=Bopomofo_Ext;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Bopo;vo=U;WB=LE;XIDC;XIDS
+block;31A0..31BF;age=3.0;Alpha;blk=Bopomofo_Ext;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=ID;SB=LE;sc=Bopo;vo=U;WB=LE;XIDC;XIDS
# 31A0..31BF Bopomofo Extended
# Extended Bopomofo for Minnan and Hakka
cp;31A0;na=BOPOMOFO LETTER BU
@@ -14726,7 +14743,7 @@ cp;31BD;age=13.0;na=BOPOMOFO LETTER KW
cp;31BE;age=13.0;na=BOPOMOFO LETTER OE
cp;31BF;age=13.0;na=BOPOMOFO LETTER AH
-block;31C0..31EF;age=5.1;bc=ON;blk=CJK_Strokes;ea=W;gc=So;Gr_Base;lb=ID;sc=Zyyy;scx=Hani;vo=U
+block;31C0..31EF;age=5.1;bc=ON;blk=CJK_Strokes;ea=W;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;scx=Hani;vo=U
# 31C0..31EF CJK Strokes
# CJK strokes
cp;31C0;age=4.1;na=CJK STROKE T
@@ -14769,7 +14786,7 @@ unassigned;31E4..31EE;vo=U
# Ideographic description character
cp;31EF;age=15.1;IDSB;na=IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;scx=<script>
-block;31F0..31FF;age=3.2;Alpha;blk=Katakana_Ext;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=CJ;SB=LE;sc=Kana;vo=Tu;WB=KA;XIDC;XIDS
+block;31F0..31FF;age=3.2;Alpha;blk=Katakana_Ext;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=CJ;SB=LE;sc=Kana;vo=Tu;WB=KA;XIDC;XIDS
# 31F0..31FF Katakana Phonetic Extensions
# Phonetic extensions for Ainu
cp;31F0;na=KATAKANA LETTER SMALL KU
@@ -14789,7 +14806,7 @@ cp;31FD;na=KATAKANA LETTER SMALL RU
cp;31FE;na=KATAKANA LETTER SMALL RE
cp;31FF;na=KATAKANA LETTER SMALL RO
-block;3200..32FF;age=1.1;blk=Enclosed_CJK;CWKCF;dt=Enc;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
+block;3200..32FF;age=1.1;blk=Enclosed_CJK;CWKCF;dt=Enc;ea=W;gc=So;Gr_Base;Identifier_Type=Not_NFKC;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# 3200..32FF Enclosed CJK Letters and Months
# Parenthesized Hangul letters
cp;3200;dm=0028 1100 0029;dt=Com;na=PARENTHESIZED HANGUL KIYEOK;NFKC_CF=0028 1100 0029;NFKC_SCF=0028 1100 0029;sc=Hang
@@ -14869,14 +14886,14 @@ cp;3245;age=5.2;dm=5E7C;na=CIRCLED IDEOGRAPH KINDERGARTEN;NFKC_CF=5E7C;NFKC_SCF=
cp;3246;age=5.2;dm=6587;na=CIRCLED IDEOGRAPH SCHOOL;NFKC_CF=6587;NFKC_SCF=6587;scx=Hani
cp;3247;age=5.2;dm=7B8F;na=CIRCLED IDEOGRAPH KOTO;NFKC_CF=7B8F;NFKC_SCF=7B8F;scx=Hani
# Circled numbers on black squares from ARIB STD B24
-cp;3248;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER TEN ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=10
-cp;3249;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER TWENTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=20
-cp;324A;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER THIRTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=30
-cp;324B;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER FORTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=40
-cp;324C;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER FIFTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=50
-cp;324D;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER SIXTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=60
-cp;324E;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER SEVENTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=70
-cp;324F;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER EIGHTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=80
+cp;3248;age=5.2;-CWKCF;dt=None;ea=A;gc=No;Identifier_Type=Not_XID;lb=AI;na=CIRCLED NUMBER TEN ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=10
+cp;3249;age=5.2;-CWKCF;dt=None;ea=A;gc=No;Identifier_Type=Not_XID;lb=AI;na=CIRCLED NUMBER TWENTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=20
+cp;324A;age=5.2;-CWKCF;dt=None;ea=A;gc=No;Identifier_Type=Not_XID;lb=AI;na=CIRCLED NUMBER THIRTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=30
+cp;324B;age=5.2;-CWKCF;dt=None;ea=A;gc=No;Identifier_Type=Not_XID;lb=AI;na=CIRCLED NUMBER FORTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=40
+cp;324C;age=5.2;-CWKCF;dt=None;ea=A;gc=No;Identifier_Type=Not_XID;lb=AI;na=CIRCLED NUMBER FIFTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=50
+cp;324D;age=5.2;-CWKCF;dt=None;ea=A;gc=No;Identifier_Type=Not_XID;lb=AI;na=CIRCLED NUMBER SIXTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=60
+cp;324E;age=5.2;-CWKCF;dt=None;ea=A;gc=No;Identifier_Type=Not_XID;lb=AI;na=CIRCLED NUMBER SEVENTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=70
+cp;324F;age=5.2;-CWKCF;dt=None;ea=A;gc=No;Identifier_Type=Not_XID;lb=AI;na=CIRCLED NUMBER EIGHTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=80
# Squared Latin abbreviation
cp;3250;age=4.0;bc=ON;dm=0050 0054 0045;dt=Sqr;FC_NFKC=0070 0074 0065;na=PARTNERSHIP SIGN;NFKC_CF=0070 0074 0065;NFKC_SCF=0070 0074 0065
# Circled numbers
@@ -14931,7 +14948,7 @@ cp;327D;age=4.0;bc=ON;dm=110C 116E 110B 1174;na=CIRCLED KOREAN CHARACTER JUEUI;N
# Circled Hangul syllable
cp;327E;age=4.1;bc=ON;dm=110B 116E;na=CIRCLED HANGUL IEUNG U;NFKC_CF=C6B0;NFKC_SCF=C6B0;sc=Hang
# Symbol
-cp;327F;-CWKCF;dt=None;na=KOREAN STANDARD SYMBOL;NFKC_QC=Y;NFKD_QC=Y
+cp;327F;-CWKCF;dt=None;Identifier_Type=Technical Not_XID;na=KOREAN STANDARD SYMBOL;NFKC_QC=Y;NFKD_QC=Y
# Circled ideographs
cp;3280;dm=4E00;gc=No;na=CIRCLED IDEOGRAPH ONE;NFKC_CF=4E00;NFKC_SCF=4E00;nt=Nu;nv=1;scx=Hani
cp;3281;dm=4E8C;gc=No;na=CIRCLED IDEOGRAPH TWO;NFKC_CF=4E8C;NFKC_SCF=4E8C;nt=Nu;nv=2;scx=Hani
@@ -15067,7 +15084,7 @@ cp;32FE;dm=30F2;na=CIRCLED KATAKANA WO;NFKC_CF=30F2;NFKC_SCF=30F2;sc=Kana;WB=KA
# Japanese era name
cp;32FF;age=12.1;dm=4EE4 548C;dt=Sqr;na=SQUARE ERA NAME REIWA;NFKC_CF=4EE4 548C;NFKC_SCF=4EE4 548C;scx=Hani;vo=Tu
-block;3300..33FF;age=1.1;blk=CJK_Compat;CWKCF;dt=Sqr;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKC_SCF=006B 006D;NFKD_QC=N;sc=Zyyy;vo=U
+block;3300..33FF;age=1.1;blk=CJK_Compat;CWKCF;dt=Sqr;ea=W;gc=So;Gr_Base;Identifier_Type=Not_NFKC;lb=ID;NFKC_QC=N;NFKC_SCF=006B 006D;NFKD_QC=N;sc=Zyyy;vo=U
# 3300..33FF CJK Compatibility
# Squared Katakana words
cp;3300;dm=30A2 30D1 30FC 30C8;na=SQUARE APAATO;NFKC_CF=30A2 30D1 30FC 30C8;NFKC_SCF=30A2 30D1 30FC 30C8;sc=Kana;vo=Tu;WB=KA
@@ -15336,7 +15353,7 @@ cp;33FE;dm=0033 0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-
# Squared Latin abbreviation
cp;33FF;age=4.0;bc=ON;dm=0067 0061 006C;na=SQUARE GAL;NFKC_CF=0067 0061 006C;NFKC_SCF=0067 0061 006C
-block;3400..4DBF;age=3.0;Alpha;blk=CJK_Ext_A;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;3400..4DBF;age=3.0;Alpha;blk=CJK_Ext_A;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 3400..4DBF CJK Unified Ideographs Extension A
algnamesrange;3400..4DBF;han;CJK UNIFIED IDEOGRAPH-
cp;3405;nt=Nu;nv=5
@@ -15345,7 +15362,7 @@ cp;382A;nt=Nu;nv=5
cp;3B4D;nt=Nu;nv=7
cp;4DB6..4DBF;age=13.0
-block;4DC0..4DFF;age=4.0;bc=ON;blk=Yijing;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;4DC0..4DFF;age=4.0;bc=ON;blk=Yijing;gc=So;Gr_Base;Identifier_Type=Technical Not_XID;lb=AL;sc=Zyyy;vo=U
# 4DC0..4DFF Yijing Hexagram Symbols
# Yijing hexagram symbols
cp;4DC0;na=HEXAGRAM FOR THE CREATIVE HEAVEN
@@ -15413,7 +15430,7 @@ cp;4DFD;na=HEXAGRAM FOR SMALL PREPONDERANCE
cp;4DFE;na=HEXAGRAM FOR AFTER COMPLETION
cp;4DFF;na=HEXAGRAM FOR BEFORE COMPLETION
-block;4E00..9FFF;age=1.1;Alpha;blk=CJK;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;4E00..9FFF;age=1.1;Alpha;blk=CJK;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 4E00..9FFF CJK Unified Ideographs
algnamesrange;4E00..9FFF;han;CJK UNIFIED IDEOGRAPH-
cp;4E00;nt=Nu;nv=1
@@ -15487,7 +15504,7 @@ cp;9FEB..9FEF;age=11.0
cp;9FF0..9FFC;age=13.0
cp;9FFD..9FFF;age=14.0
-block;A000..A48F;age=3.0;Alpha;blk=Yi_Syllables;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Yiii;vo=U;WB=LE;XIDC;XIDS
+block;A000..A48F;age=3.0;Alpha;blk=Yi_Syllables;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=ID;SB=LE;sc=Yiii;vo=U;WB=LE;XIDC;XIDS
# A000..A48F Yi Syllables
# Syllables
cp;A000;na=YI SYLLABLE IT
@@ -16659,7 +16676,7 @@ cp;A48B;na=YI SYLLABLE YYRX
cp;A48C;na=YI SYLLABLE YYR
unassigned;A48D..A48F;vo=U
-block;A490..A4CF;age=3.0;bc=ON;blk=Yi_Radicals;ea=W;gc=So;Gr_Base;lb=ID;sc=Yiii;vo=U
+block;A490..A4CF;age=3.0;bc=ON;blk=Yi_Radicals;ea=W;gc=So;Gr_Base;Identifier_Type=Limited_Use Not_XID;lb=ID;sc=Yiii;vo=U
# A490..A4CF Yi Radicals
# Yi radicals
cp;A490;na=YI RADICAL QOT
@@ -16719,7 +16736,7 @@ cp;A4C5;age=3.2;na=YI RADICAL NBIE
cp;A4C6;na=YI RADICAL KE
unassigned;A4C7..A4CF;vo=U
-block;A4D0..A4FF;age=5.2;Alpha;blk=Lisu;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Lisu;WB=LE;XIDC;XIDS
+block;A4D0..A4FF;age=5.2;Alpha;blk=Lisu;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Lisu;WB=LE;XIDC;XIDS
# A4D0..A4FF Lisu
# Consonants
cp;A4D0;na=LISU LETTER BA
@@ -16771,10 +16788,10 @@ cp;A4FB;CI;gc=Lm;na=LISU LETTER TONE MYA BO
cp;A4FC;CI;gc=Lm;na=LISU LETTER TONE MYA NA
cp;A4FD;CI;gc=Lm;na=LISU LETTER TONE MYA JEU
# Punctuation
-cp;A4FE;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=LISU PUNCTUATION COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;A4FF;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=LISU PUNCTUATION FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A4FE;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=LISU PUNCTUATION COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;A4FF;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=LISU PUNCTUATION FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;A500..A63F;age=5.1;Alpha;blk=Vai;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Vaii;WB=LE;XIDC;XIDS
+block;A500..A63F;age=5.1;Alpha;blk=Vai;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Vaii;WB=LE;XIDC;XIDS
# A500..A63F Vai
# Syllables in -ee
cp;A500;na=VAI SYLLABLE EE
@@ -17054,13 +17071,13 @@ cp;A60A;na=VAI SYLLABLE NYE
cp;A60B;na=VAI SYLLABLE NG
cp;A60C;CI;Ext;gc=Lm;na=VAI SYLLABLE LENGTHENER
# Punctuation
-cp;A60D;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=VAI COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;A60E;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=EX;na=VAI FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;A60F;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=VAI QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A60D;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=VAI COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;A60E;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=EX;na=VAI FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A60F;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=VAI QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Historic syllables
-cp;A610;na=VAI SYLLABLE NDOLE FA
-cp;A611;na=VAI SYLLABLE NDOLE KA
-cp;A612;na=VAI SYLLABLE NDOLE SOO
+cp;A610;Identifier_Type=Limited_Use Obsolete;na=VAI SYLLABLE NDOLE FA
+cp;A611;Identifier_Type=Limited_Use Obsolete;na=VAI SYLLABLE NDOLE KA
+cp;A612;Identifier_Type=Limited_Use Obsolete;na=VAI SYLLABLE NDOLE SOO
# Logograms
cp;A613;na=VAI SYMBOL FEENG
cp;A614;na=VAI SYMBOL KEENG
@@ -17087,11 +17104,11 @@ cp;A627;-Alpha;gc=Nd;-IDS;lb=NU;na=VAI DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
cp;A628;-Alpha;gc=Nd;-IDS;lb=NU;na=VAI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
cp;A629;-Alpha;gc=Nd;-IDS;lb=NU;na=VAI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Historic syllables
-cp;A62A;na=VAI SYLLABLE NDOLE MA
-cp;A62B;na=VAI SYLLABLE NDOLE DO
+cp;A62A;Identifier_Type=Limited_Use Obsolete;na=VAI SYLLABLE NDOLE MA
+cp;A62B;Identifier_Type=Limited_Use Obsolete;na=VAI SYLLABLE NDOLE DO
unassigned;A62C..A63F
-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
+block;A640..A69F;age=5.1;Alpha;blk=Cyrillic_Ext_B;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# A640..A69F Cyrillic Extended-B
# Letters for Old Cyrillic
cp;A640;cf=A641;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZEMLYA;NFKC_CF=A641;NFKC_SCF=A641;SB=UP;scf=A641;slc=A641;Upper
@@ -17142,13 +17159,13 @@ cp;A66C;cf=A66D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR
cp;A66D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;stc=A66C;suc=A66C
cp;A66E;-Cased;-CWCM;gc=Lo;na=CYRILLIC LETTER MULTIOCULAR O;SB=LE
# Abbreviation mark
-cp;A66F;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC VZMET;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
+cp;A66F;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC VZMET;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
# Combining numeric signs
-cp;A670;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC TEN MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
-cp;A671;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC HUNDRED MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
-cp;A672;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC THOUSAND MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
+cp;A670;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;Identifier_Type=Obsolete Not_XID;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC TEN MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
+cp;A671;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;Identifier_Type=Obsolete Not_XID;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC HUNDRED MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
+cp;A672;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;Identifier_Type=Obsolete Not_XID;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC THOUSAND MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
# Punctuation mark
-cp;A673;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=SLAVONIC ASTERISK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A673;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Obsolete Not_XID;-IDS;na=SLAVONIC ASTERISK;SB=XX;WB=XX;-XIDC;-XIDS
# Combining marks for Old Cyrillic
cp;A674;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER UKRAINIAN IE;SB=EX;WB=Extend;-XIDS
cp;A675;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER I;SB=EX;WB=Extend;-XIDS
@@ -17158,12 +17175,12 @@ cp;A678;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS
cp;A679;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER YERU;SB=EX;WB=Extend;-XIDS
cp;A67A;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER SOFT SIGN;SB=EX;WB=Extend;-XIDS
cp;A67B;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER OMEGA;SB=EX;WB=Extend;-XIDS
-cp;A67C;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC KAVYKA;SB=EX;WB=Extend;-XIDS
-cp;A67D;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PAYEROK;SB=EX;WB=Extend;-XIDS
+cp;A67C;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC KAVYKA;SB=EX;WB=Extend;-XIDS
+cp;A67D;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Uncommon_Use;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PAYEROK;SB=EX;WB=Extend;-XIDS
# Punctuation mark
-cp;A67E;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=CYRILLIC KAVYKA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A67E;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Not_XID;-IDS;na=CYRILLIC KAVYKA;SB=XX;WB=XX;-XIDC;-XIDS
# Modifier letter
-cp;A67F;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;na=CYRILLIC PAYEROK;SB=LE
+cp;A67F;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CYRILLIC PAYEROK;SB=LE
# Letters for Old Abkhasian orthography
cp;A680;cf=A681;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DWE;NFKC_CF=A681;NFKC_SCF=A681;SB=UP;scf=A681;slc=A681;Upper
cp;A681;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DWE;stc=A680;suc=A680
@@ -17195,13 +17212,13 @@ cp;A699;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DOUBLE O;stc=A698;suc=A69
cp;A69A;age=7.0;cf=A69B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CROSSED O;NFKC_CF=A69B;NFKC_SCF=A69B;SB=UP;scf=A69B;slc=A69B;Upper
cp;A69B;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CROSSED O;stc=A69A;suc=A69A
# Intonation marks for Lithuanian dialectology
-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;NFKC_SCF=044A;NFKD_QC=N
-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;NFKC_SCF=044C;NFKD_QC=N
+cp;A69C;age=7.0;CI;-CWCM;CWKCF;Dia;dm=044A;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER CYRILLIC HARD SIGN;NFKC_CF=044A;NFKC_QC=N;NFKC_SCF=044A;NFKD_QC=N
+cp;A69D;age=7.0;CI;-CWCM;CWKCF;Dia;dm=044C;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER CYRILLIC SOFT SIGN;NFKC_CF=044C;NFKC_QC=N;NFKC_SCF=044C;NFKD_QC=N
# Combining marks for Old Cyrillic
-cp;A69E;age=8.0;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER EF;SB=EX;WB=Extend;-XIDS
+cp;A69E;age=8.0;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Uncommon_Use Obsolete;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER EF;SB=EX;WB=Extend;-XIDS
cp;A69F;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER IOTIFIED E;SB=EX;WB=Extend;-XIDS
-block;A6A0..A6FF;age=5.2;Alpha;blk=Bamum;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Bamu;WB=LE;XIDC;XIDS
+block;A6A0..A6FF;age=5.2;Alpha;blk=Bamum;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Bamu;WB=LE;XIDC;XIDS
# A6A0..A6FF Bamum
# Syllables
cp;A6A0;na=BAMUM LETTER A
@@ -17288,25 +17305,25 @@ cp;A6EF;gc=Nl;na=BAMUM LETTER KOGHOM;nt=Nu;nv=0
cp;A6F0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BAMUM COMBINING MARK KOQNDON;SB=EX;WB=Extend;-XIDS
cp;A6F1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BAMUM COMBINING MARK TUKWENTIS;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;A6F2;-Alpha;gc=Po;-IDC;-IDS;na=BAMUM NJAEMLI;SB=XX;WB=XX;-XIDC;-XIDS
-cp;A6F3;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=BAMUM FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;A6F4;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=BAMUM COLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;A6F5;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=BAMUM COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;A6F6;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=BAMUM SEMICOLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;A6F7;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=BAMUM QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A6F2;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;na=BAMUM NJAEMLI;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A6F3;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=BAMUM FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A6F4;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=BAMUM COLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;A6F5;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=BAMUM COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;A6F6;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=BAMUM SEMICOLON;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;A6F7;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=BA;na=BAMUM QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;A6F8..A6FF
-block;A700..A71F;age=4.1;bc=ON;blk=Modifier_Tone_Letters;CI;Dia;gc=Sk;Gr_Base;lb=AL;sc=Zyyy;WB=LE
+block;A700..A71F;age=4.1;bc=ON;blk=Modifier_Tone_Letters;CI;Dia;gc=Sk;Gr_Base;Identifier_Type=Technical Not_XID;lb=AL;sc=Zyyy;WB=LE
# A700..A71F Modifier Tone Letters
# Corner tone marks for Chinese
-cp;A700;na=MODIFIER LETTER CHINESE TONE YIN PING;scx=Hani Latn;WB=XX
-cp;A701;na=MODIFIER LETTER CHINESE TONE YANG PING;scx=Hani Latn;WB=XX
-cp;A702;na=MODIFIER LETTER CHINESE TONE YIN SHANG;scx=Hani Latn;WB=XX
-cp;A703;na=MODIFIER LETTER CHINESE TONE YANG SHANG;scx=Hani Latn;WB=XX
-cp;A704;na=MODIFIER LETTER CHINESE TONE YIN QU;scx=Hani Latn;WB=XX
-cp;A705;na=MODIFIER LETTER CHINESE TONE YANG QU;scx=Hani Latn;WB=XX
-cp;A706;na=MODIFIER LETTER CHINESE TONE YIN RU;scx=Hani Latn;WB=XX
-cp;A707;na=MODIFIER LETTER CHINESE TONE YANG RU;scx=Hani Latn;WB=XX
+cp;A700;Identifier_Type=Obsolete Not_XID;na=MODIFIER LETTER CHINESE TONE YIN PING;scx=Hani Latn;WB=XX
+cp;A701;Identifier_Type=Obsolete Not_XID;na=MODIFIER LETTER CHINESE TONE YANG PING;scx=Hani Latn;WB=XX
+cp;A702;Identifier_Type=Obsolete Not_XID;na=MODIFIER LETTER CHINESE TONE YIN SHANG;scx=Hani Latn;WB=XX
+cp;A703;Identifier_Type=Obsolete Not_XID;na=MODIFIER LETTER CHINESE TONE YANG SHANG;scx=Hani Latn;WB=XX
+cp;A704;Identifier_Type=Obsolete Not_XID;na=MODIFIER LETTER CHINESE TONE YIN QU;scx=Hani Latn;WB=XX
+cp;A705;Identifier_Type=Obsolete Not_XID;na=MODIFIER LETTER CHINESE TONE YANG QU;scx=Hani Latn;WB=XX
+cp;A706;Identifier_Type=Obsolete Not_XID;na=MODIFIER LETTER CHINESE TONE YIN RU;scx=Hani Latn;WB=XX
+cp;A707;Identifier_Type=Obsolete Not_XID;na=MODIFIER LETTER CHINESE TONE YANG RU;scx=Hani Latn;WB=XX
# Dotted tone letters
cp;A708;na=MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
cp;A709;na=MODIFIER LETTER HIGH DOTTED TONE BAR
@@ -17325,38 +17342,38 @@ cp;A714;na=MODIFIER LETTER MID LEFT-STEM TONE BAR
cp;A715;na=MODIFIER LETTER LOW LEFT-STEM TONE BAR
cp;A716;na=MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
# Chinantec tone marks
-cp;A717;age=5.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOT VERTICAL BAR;SB=LE;XIDC;XIDS
-cp;A718;age=5.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOT SLASH;SB=LE;XIDC;XIDS
-cp;A719;age=5.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOT HORIZONTAL BAR;SB=LE;XIDC;XIDS
-cp;A71A;age=5.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOWER RIGHT CORNER ANGLE;SB=LE;XIDC;XIDS
+cp;A717;age=5.0;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER DOT VERTICAL BAR;SB=LE;XIDC;XIDS
+cp;A718;age=5.0;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER DOT SLASH;SB=LE;XIDC;XIDS
+cp;A719;age=5.0;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER DOT HORIZONTAL BAR;SB=LE;XIDC;XIDS
+cp;A71A;age=5.0;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER LOWER RIGHT CORNER ANGLE;SB=LE;XIDC;XIDS
# Africanist tone letters
-cp;A71B;age=5.1;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER RAISED UP ARROW;SB=LE;XIDC;XIDS
-cp;A71C;age=5.1;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER RAISED DOWN ARROW;SB=LE;XIDC;XIDS
-cp;A71D;age=5.1;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER RAISED EXCLAMATION MARK;SB=LE;XIDC;XIDS
-cp;A71E;age=5.1;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;SB=LE;XIDC;XIDS
-cp;A71F;age=5.1;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;SB=LE;XIDC;XIDS
+cp;A71B;age=5.1;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER RAISED UP ARROW;SB=LE;XIDC;XIDS
+cp;A71C;age=5.1;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER RAISED DOWN ARROW;SB=LE;XIDC;XIDS
+cp;A71D;age=5.1;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER RAISED EXCLAMATION MARK;SB=LE;XIDC;XIDS
+cp;A71E;age=5.1;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;SB=LE;XIDC;XIDS
+cp;A71F;age=5.1;Alpha;gc=Lm;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;na=MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;SB=LE;XIDC;XIDS
-block;A720..A7FF;age=5.1;Alpha;blk=Latin_Ext_D;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+block;A720..A7FF;age=5.1;Alpha;blk=Latin_Ext_D;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=AL;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# A720..A7FF Latin Extended-D
# Additions for UPA
-cp;A720;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND HIGH TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS
-cp;A721;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND LOW TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS
+cp;A720;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;Identifier_Type=Not_XID;-IDS;na=MODIFIER LETTER STRESS AND HIGH TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS
+cp;A721;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;Identifier_Type=Not_XID;-IDS;na=MODIFIER LETTER STRESS AND LOW TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS
# Egyptological additions
-cp;A722;cf=A723;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;NFKC_CF=A723;NFKC_SCF=A723;SB=UP;scf=A723;slc=A723;Upper
-cp;A723;CWT;CWU;Lower;na=LATIN SMALL LETTER EGYPTOLOGICAL ALEF;stc=A722;suc=A722
-cp;A724;cf=A725;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;NFKC_CF=A725;NFKC_SCF=A725;SB=UP;scf=A725;slc=A725;Upper
-cp;A725;CWT;CWU;Lower;na=LATIN SMALL LETTER EGYPTOLOGICAL AIN;stc=A724;suc=A724
+cp;A722;cf=A723;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical Obsolete;na=LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;NFKC_CF=A723;NFKC_SCF=A723;SB=UP;scf=A723;slc=A723;Upper
+cp;A723;CWT;CWU;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER EGYPTOLOGICAL ALEF;stc=A722;suc=A722
+cp;A724;cf=A725;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical Obsolete;na=LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;NFKC_CF=A725;NFKC_SCF=A725;SB=UP;scf=A725;slc=A725;Upper
+cp;A725;CWT;CWU;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER EGYPTOLOGICAL AIN;stc=A724;suc=A724
# Mayanist additions
-cp;A726;cf=A727;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER HENG;NFKC_CF=A727;NFKC_SCF=A727;SB=UP;scf=A727;slc=A727;Upper
-cp;A727;CWT;CWU;Lower;na=LATIN SMALL LETTER HENG;stc=A726;suc=A726
-cp;A728;cf=A729;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TZ;NFKC_CF=A729;NFKC_SCF=A729;SB=UP;scf=A729;slc=A729;Upper
-cp;A729;CWT;CWU;Lower;na=LATIN SMALL LETTER TZ;stc=A728;suc=A728
-cp;A72A;cf=A72B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TRESILLO;NFKC_CF=A72B;NFKC_SCF=A72B;SB=UP;scf=A72B;slc=A72B;Upper
-cp;A72B;CWT;CWU;Lower;na=LATIN SMALL LETTER TRESILLO;stc=A72A;suc=A72A
-cp;A72C;cf=A72D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CUATRILLO;NFKC_CF=A72D;NFKC_SCF=A72D;SB=UP;scf=A72D;slc=A72D;Upper
-cp;A72D;CWT;CWU;Lower;na=LATIN SMALL LETTER CUATRILLO;stc=A72C;suc=A72C
-cp;A72E;cf=A72F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CUATRILLO WITH COMMA;NFKC_CF=A72F;NFKC_SCF=A72F;SB=UP;scf=A72F;slc=A72F;Upper
-cp;A72F;CWT;CWU;Lower;na=LATIN SMALL LETTER CUATRILLO WITH COMMA;stc=A72E;suc=A72E
+cp;A726;cf=A727;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical Obsolete;na=LATIN CAPITAL LETTER HENG;NFKC_CF=A727;NFKC_SCF=A727;SB=UP;scf=A727;slc=A727;Upper
+cp;A727;CWT;CWU;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER HENG;stc=A726;suc=A726
+cp;A728;cf=A729;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical Obsolete;na=LATIN CAPITAL LETTER TZ;NFKC_CF=A729;NFKC_SCF=A729;SB=UP;scf=A729;slc=A729;Upper
+cp;A729;CWT;CWU;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER TZ;stc=A728;suc=A728
+cp;A72A;cf=A72B;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical Obsolete;na=LATIN CAPITAL LETTER TRESILLO;NFKC_CF=A72B;NFKC_SCF=A72B;SB=UP;scf=A72B;slc=A72B;Upper
+cp;A72B;CWT;CWU;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER TRESILLO;stc=A72A;suc=A72A
+cp;A72C;cf=A72D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical Obsolete;na=LATIN CAPITAL LETTER CUATRILLO;NFKC_CF=A72D;NFKC_SCF=A72D;SB=UP;scf=A72D;slc=A72D;Upper
+cp;A72D;CWT;CWU;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER CUATRILLO;stc=A72C;suc=A72C
+cp;A72E;cf=A72F;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical Obsolete;na=LATIN CAPITAL LETTER CUATRILLO WITH COMMA;NFKC_CF=A72F;NFKC_SCF=A72F;SB=UP;scf=A72F;slc=A72F;Upper
+cp;A72F;CWT;CWU;Identifier_Type=Technical Obsolete;Lower;na=LATIN SMALL LETTER CUATRILLO WITH COMMA;stc=A72E;suc=A72E
# Medievalist additions
cp;A730;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL F
cp;A731;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL S
@@ -17422,7 +17439,7 @@ cp;A76C;cf=A76D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER IS;NFKC_CF=A76D;NFK
cp;A76D;CWT;CWU;Lower;na=LATIN SMALL LETTER IS;stc=A76C;suc=A76C
cp;A76E;cf=A76F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CON;NFKC_CF=A76F;NFKC_SCF=A76F;SB=UP;scf=A76F;slc=A76F;Upper
cp;A76F;CWT;CWU;Lower;na=LATIN SMALL LETTER CON;stc=A76E;suc=A76E
-cp;A770;CI;-CWCM;CWKCF;dm=A76F;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER US;NFKC_CF=A76F;NFKC_QC=N;NFKC_SCF=A76F;NFKD_QC=N
+cp;A770;CI;-CWCM;CWKCF;dm=A76F;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER US;NFKC_CF=A76F;NFKC_QC=N;NFKC_SCF=A76F;NFKD_QC=N
cp;A771;-CWCM;Lower;na=LATIN SMALL LETTER DUM
cp;A772;-CWCM;Lower;na=LATIN SMALL LETTER LUM
cp;A773;-CWCM;Lower;na=LATIN SMALL LETTER MUM
@@ -17448,23 +17465,23 @@ cp;A785;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR S;stc=A784;suc=A784
cp;A786;cf=A787;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR T;NFKC_CF=A787;NFKC_SCF=A787;SB=UP;scf=A787;slc=A787;Upper
cp;A787;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR T;stc=A786;suc=A786
# Modifier letters
-cp;A788;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;na=MODIFIER LETTER LOW CIRCUMFLEX ACCENT;SB=LE;sc=Zyyy
-cp;A789;-Alpha;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER COLON;SB=XX;sc=Zyyy;-XIDC;-XIDS
-cp;A78A;-Alpha;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER SHORT EQUALS SIGN;SB=XX;sc=Zyyy;-XIDC;-XIDS
+cp;A788;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;Identifier_Status=Allowed;Identifier_Type=Recommended;na=MODIFIER LETTER LOW CIRCUMFLEX ACCENT;SB=LE;sc=Zyyy
+cp;A789;-Alpha;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;Identifier_Type=Not_XID;-IDS;na=MODIFIER LETTER COLON;SB=XX;sc=Zyyy;-XIDC;-XIDS
+cp;A78A;-Alpha;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;Identifier_Type=Not_XID;-IDS;na=MODIFIER LETTER SHORT EQUALS SIGN;SB=XX;sc=Zyyy;-XIDC;-XIDS
# Orthographic letters for glottals
-cp;A78B;cf=A78C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SALTILLO;NFKC_CF=A78C;NFKC_SCF=A78C;SB=UP;scf=A78C;slc=A78C;Upper
-cp;A78C;CWT;CWU;Lower;na=LATIN SMALL LETTER SALTILLO;stc=A78B;suc=A78B
+cp;A78B;cf=A78C;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER SALTILLO;NFKC_CF=A78C;NFKC_SCF=A78C;SB=UP;scf=A78C;slc=A78C;Upper
+cp;A78C;CWT;CWU;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER SALTILLO;stc=A78B;suc=A78B
# Additional letter
-cp;A78D;age=6.0;cf=0265;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED H;NFKC_CF=0265;NFKC_SCF=0265;SB=UP;scf=0265;slc=0265;Upper
+cp;A78D;age=6.0;cf=0265;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER TURNED H;NFKC_CF=0265;NFKC_SCF=0265;SB=UP;scf=0265;slc=0265;Upper
# Phonetic symbol
-cp;A78E;age=6.0;-CWCM;Lower;na=LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+cp;A78E;age=6.0;-CWCM;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
# Transliteration letter for sinology
-cp;A78F;age=8.0;-Cased;-CWCM;gc=Lo;na=LATIN LETTER SINOLOGICAL DOT;SB=LE
+cp;A78F;age=8.0;-Cased;-CWCM;gc=Lo;Identifier_Type=Uncommon_Use;na=LATIN LETTER SINOLOGICAL DOT;SB=LE
# Additional letters
cp;A790;age=6.0;cf=A791;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER N WITH DESCENDER;NFKC_CF=A791;NFKC_SCF=A791;SB=UP;scf=A791;slc=A791;Upper
cp;A791;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER N WITH DESCENDER;stc=A790;suc=A790
-cp;A792;age=6.1;cf=A793;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER C WITH BAR;NFKC_CF=A793;NFKC_SCF=A793;SB=UP;scf=A793;slc=A793;Upper
-cp;A793;age=6.1;CWT;CWU;Lower;na=LATIN SMALL LETTER C WITH BAR;stc=A792;suc=A792
+cp;A792;age=6.1;cf=A793;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER C WITH BAR;NFKC_CF=A793;NFKC_SCF=A793;SB=UP;scf=A793;slc=A793;Upper
+cp;A793;age=6.1;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER C WITH BAR;stc=A792;suc=A792
# Additions for Lithuanian dialectology
cp;A794;age=7.0;CWT;CWU;Lower;na=LATIN SMALL LETTER C WITH PALATAL HOOK;stc=A7C4;suc=A7C4
cp;A795;age=7.0;-CWCM;Lower;na=LATIN SMALL LETTER H WITH PALATAL HOOK
@@ -17493,78 +17510,78 @@ cp;A7A7;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER R WITH OBLIQUE STROKE;stc=A7
cp;A7A8;age=6.0;cf=A7A9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH OBLIQUE STROKE;NFKC_CF=A7A9;NFKC_SCF=A7A9;SB=UP;scf=A7A9;slc=A7A9;Upper
cp;A7A9;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER S WITH OBLIQUE STROKE;stc=A7A8;suc=A7A8
# Additional letters
-cp;A7AA;age=6.1;cf=0266;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER H WITH HOOK;NFKC_CF=0266;NFKC_SCF=0266;SB=UP;scf=0266;slc=0266;Upper
+cp;A7AA;age=6.1;cf=0266;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER H WITH HOOK;NFKC_CF=0266;NFKC_SCF=0266;SB=UP;scf=0266;slc=0266;Upper
cp;A7AB;age=7.0;cf=025C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER REVERSED OPEN E;NFKC_CF=025C;NFKC_SCF=025C;SB=UP;scf=025C;slc=025C;Upper
cp;A7AC;age=7.0;cf=0261;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SCRIPT G;NFKC_CF=0261;NFKC_SCF=0261;SB=UP;scf=0261;slc=0261;Upper
cp;A7AD;age=7.0;cf=026C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH BELT;NFKC_CF=026C;NFKC_SCF=026C;SB=UP;scf=026C;slc=026C;Upper
# Letter for West African languages
-cp;A7AE;age=9.0;cf=026A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SMALL CAPITAL I;NFKC_CF=026A;NFKC_SCF=026A;SB=UP;scf=026A;slc=026A;Upper
+cp;A7AE;age=9.0;cf=026A;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical;na=LATIN CAPITAL LETTER SMALL CAPITAL I;NFKC_CF=026A;NFKC_SCF=026A;SB=UP;scf=026A;slc=026A;Upper
# Letter for Japanese phonemic transcription
-cp;A7AF;age=11.0;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL Q
+cp;A7AF;age=11.0;-CWCM;Identifier_Type=Technical;Lower;na=LATIN LETTER SMALL CAPITAL Q
# Letters for Americanist orthographies
cp;A7B0;age=7.0;cf=029E;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED K;NFKC_CF=029E;NFKC_SCF=029E;SB=UP;scf=029E;slc=029E;Upper
cp;A7B1;age=7.0;cf=0287;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED T;NFKC_CF=0287;NFKC_SCF=0287;SB=UP;scf=0287;slc=0287;Upper
# Letter for African languages
-cp;A7B2;age=8.0;cf=029D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER J WITH CROSSED-TAIL;NFKC_CF=029D;NFKC_SCF=029D;SB=UP;scf=029D;slc=029D;Upper
+cp;A7B2;age=8.0;cf=029D;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER J WITH CROSSED-TAIL;NFKC_CF=029D;NFKC_SCF=029D;SB=UP;scf=029D;slc=029D;Upper
# Letter for German dialectology
-cp;A7B3;age=8.0;cf=AB53;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CHI;NFKC_CF=AB53;NFKC_SCF=AB53;SB=UP;scf=AB53;slc=AB53;Upper
+cp;A7B3;age=8.0;cf=AB53;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER CHI;NFKC_CF=AB53;NFKC_SCF=AB53;SB=UP;scf=AB53;slc=AB53;Upper
# Letters for African languages
-cp;A7B4;age=8.0;cf=A7B5;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER BETA;NFKC_CF=A7B5;NFKC_SCF=A7B5;SB=UP;scf=A7B5;slc=A7B5;Upper
-cp;A7B5;age=8.0;CWT;CWU;Lower;na=LATIN SMALL LETTER BETA;stc=A7B4;suc=A7B4
-cp;A7B6;age=8.0;cf=A7B7;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER OMEGA;NFKC_CF=A7B7;NFKC_SCF=A7B7;SB=UP;scf=A7B7;slc=A7B7;Upper
-cp;A7B7;age=8.0;CWT;CWU;Lower;na=LATIN SMALL LETTER OMEGA;stc=A7B6;suc=A7B6
+cp;A7B4;age=8.0;cf=A7B5;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER BETA;NFKC_CF=A7B5;NFKC_SCF=A7B5;SB=UP;scf=A7B5;slc=A7B5;Upper
+cp;A7B5;age=8.0;CWT;CWU;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER BETA;stc=A7B4;suc=A7B4
+cp;A7B6;age=8.0;cf=A7B7;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER OMEGA;NFKC_CF=A7B7;NFKC_SCF=A7B7;SB=UP;scf=A7B7;slc=A7B7;Upper
+cp;A7B7;age=8.0;CWT;CWU;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER OMEGA;stc=A7B6;suc=A7B6
# Letters for Mazahua (M\u00E9xico)
-cp;A7B8;age=11.0;cf=A7B9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER U WITH STROKE;NFKC_CF=A7B9;NFKC_SCF=A7B9;SB=UP;scf=A7B9;slc=A7B9;Upper
-cp;A7B9;age=11.0;CWT;CWU;Lower;na=LATIN SMALL LETTER U WITH STROKE;stc=A7B8;suc=A7B8
+cp;A7B8;age=11.0;cf=A7B9;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Uncommon_Use;na=LATIN CAPITAL LETTER U WITH STROKE;NFKC_CF=A7B9;NFKC_SCF=A7B9;SB=UP;scf=A7B9;slc=A7B9;Upper
+cp;A7B9;age=11.0;CWT;CWU;Identifier_Type=Uncommon_Use;Lower;na=LATIN SMALL LETTER U WITH STROKE;stc=A7B8;suc=A7B8
# Letters for Ugaritic and Egyptological transliteration
-cp;A7BA;age=12.0;cf=A7BB;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL A;NFKC_CF=A7BB;NFKC_SCF=A7BB;SB=UP;scf=A7BB;slc=A7BB;Upper
-cp;A7BB;age=12.0;CWT;CWU;Lower;na=LATIN SMALL LETTER GLOTTAL A;stc=A7BA;suc=A7BA
-cp;A7BC;age=12.0;cf=A7BD;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL I;NFKC_CF=A7BD;NFKC_SCF=A7BD;SB=UP;scf=A7BD;slc=A7BD;Upper
-cp;A7BD;age=12.0;CWT;CWU;Lower;na=LATIN SMALL LETTER GLOTTAL I;stc=A7BC;suc=A7BC
-cp;A7BE;age=12.0;cf=A7BF;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL U;NFKC_CF=A7BF;NFKC_SCF=A7BF;SB=UP;scf=A7BF;slc=A7BF;Upper
-cp;A7BF;age=12.0;CWT;CWU;Lower;na=LATIN SMALL LETTER GLOTTAL U;stc=A7BE;suc=A7BE
+cp;A7BA;age=12.0;cf=A7BB;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical;na=LATIN CAPITAL LETTER GLOTTAL A;NFKC_CF=A7BB;NFKC_SCF=A7BB;SB=UP;scf=A7BB;slc=A7BB;Upper
+cp;A7BB;age=12.0;CWT;CWU;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER GLOTTAL A;stc=A7BA;suc=A7BA
+cp;A7BC;age=12.0;cf=A7BD;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical;na=LATIN CAPITAL LETTER GLOTTAL I;NFKC_CF=A7BD;NFKC_SCF=A7BD;SB=UP;scf=A7BD;slc=A7BD;Upper
+cp;A7BD;age=12.0;CWT;CWU;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER GLOTTAL I;stc=A7BC;suc=A7BC
+cp;A7BE;age=12.0;cf=A7BF;CWCF;CWKCF;CWL;gc=Lu;Identifier_Type=Technical;na=LATIN CAPITAL LETTER GLOTTAL U;NFKC_CF=A7BF;NFKC_SCF=A7BF;SB=UP;scf=A7BF;slc=A7BF;Upper
+cp;A7BF;age=12.0;CWT;CWU;Identifier_Type=Technical;Lower;na=LATIN SMALL LETTER GLOTTAL U;stc=A7BE;suc=A7BE
# Additional medieval letters
-cp;A7C0;age=14.0;cf=A7C1;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER OLD POLISH O;NFKC_CF=A7C1;NFKC_SCF=A7C1;SB=UP;scf=A7C1;slc=A7C1;Upper
-cp;A7C1;age=14.0;CWT;CWU;Lower;na=LATIN SMALL LETTER OLD POLISH O;stc=A7C0;suc=A7C0
-cp;A7C2;age=12.0;cf=A7C3;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ANGLICANA W;NFKC_CF=A7C3;NFKC_SCF=A7C3;SB=UP;scf=A7C3;slc=A7C3;Upper
-cp;A7C3;age=12.0;CWT;CWU;Lower;na=LATIN SMALL LETTER ANGLICANA W;stc=A7C2;suc=A7C2
+cp;A7C0;age=14.0;cf=A7C1;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER OLD POLISH O;NFKC_CF=A7C1;NFKC_SCF=A7C1;SB=UP;scf=A7C1;slc=A7C1;Upper
+cp;A7C1;age=14.0;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER OLD POLISH O;stc=A7C0;suc=A7C0
+cp;A7C2;age=12.0;cf=A7C3;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER ANGLICANA W;NFKC_CF=A7C3;NFKC_SCF=A7C3;SB=UP;scf=A7C3;slc=A7C3;Upper
+cp;A7C3;age=12.0;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER ANGLICANA W;stc=A7C2;suc=A7C2
# Letters used in early Pinyin romanization
-cp;A7C4;age=12.0;cf=A794;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER C WITH PALATAL HOOK;NFKC_CF=A794;NFKC_SCF=A794;SB=UP;scf=A794;slc=A794;Upper
-cp;A7C5;age=12.0;cf=0282;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH HOOK;NFKC_CF=0282;NFKC_SCF=0282;SB=UP;scf=0282;slc=0282;Upper
-cp;A7C6;age=12.0;cf=1D8E;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH PALATAL HOOK;NFKC_CF=1D8E;NFKC_SCF=1D8E;SB=UP;scf=1D8E;slc=1D8E;Upper
+cp;A7C4;age=12.0;cf=A794;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER C WITH PALATAL HOOK;NFKC_CF=A794;NFKC_SCF=A794;SB=UP;scf=A794;slc=A794;Upper
+cp;A7C5;age=12.0;cf=0282;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER S WITH HOOK;NFKC_CF=0282;NFKC_SCF=0282;SB=UP;scf=0282;slc=0282;Upper
+cp;A7C6;age=12.0;cf=1D8E;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER Z WITH PALATAL HOOK;NFKC_CF=1D8E;NFKC_SCF=1D8E;SB=UP;scf=1D8E;slc=1D8E;Upper
# Additional letters for Gaulish
-cp;A7C7;age=13.0;cf=A7C8;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;NFKC_CF=A7C8;NFKC_SCF=A7C8;SB=UP;scf=A7C8;slc=A7C8;Upper
-cp;A7C8;age=13.0;CWT;CWU;Lower;na=LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;stc=A7C7;suc=A7C7
-cp;A7C9;age=13.0;cf=A7CA;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;NFKC_CF=A7CA;NFKC_SCF=A7CA;SB=UP;scf=A7CA;slc=A7CA;Upper
-cp;A7CA;age=13.0;CWT;CWU;Lower;na=LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;stc=A7C9;suc=A7C9
+cp;A7C7;age=13.0;cf=A7C8;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;NFKC_CF=A7C8;NFKC_SCF=A7C8;SB=UP;scf=A7C8;slc=A7C8;Upper
+cp;A7C8;age=13.0;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;stc=A7C7;suc=A7C7
+cp;A7C9;age=13.0;cf=A7CA;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;NFKC_CF=A7CA;NFKC_SCF=A7CA;SB=UP;scf=A7CA;slc=A7CA;Upper
+cp;A7CA;age=13.0;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;stc=A7C9;suc=A7C9
unassigned;A7CB..A7CF
# Letters used in the Middle English Ormulum
-cp;A7D0;age=14.0;cf=A7D1;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CLOSED INSULAR G;NFKC_CF=A7D1;NFKC_SCF=A7D1;SB=UP;scf=A7D1;slc=A7D1;Upper
-cp;A7D1;age=14.0;CWT;CWU;Lower;na=LATIN SMALL LETTER CLOSED INSULAR G;stc=A7D0;suc=A7D0
+cp;A7D0;age=14.0;cf=A7D1;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER CLOSED INSULAR G;NFKC_CF=A7D1;NFKC_SCF=A7D1;SB=UP;scf=A7D1;slc=A7D1;Upper
+cp;A7D1;age=14.0;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER CLOSED INSULAR G;stc=A7D0;suc=A7D0
unassigned;A7D2
-cp;A7D3;age=14.0;-CWCM;Lower;na=LATIN SMALL LETTER DOUBLE THORN
+cp;A7D3;age=14.0;-CWCM;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER DOUBLE THORN
unassigned;A7D4
-cp;A7D5;age=14.0;-CWCM;Lower;na=LATIN SMALL LETTER DOUBLE WYNN
+cp;A7D5;age=14.0;-CWCM;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER DOUBLE WYNN
# Letters used in medieval palaeography
-cp;A7D6;age=14.0;cf=A7D7;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE SCOTS S;NFKC_CF=A7D7;NFKC_SCF=A7D7;SB=UP;scf=A7D7;slc=A7D7;Upper
-cp;A7D7;age=14.0;CWT;CWU;Lower;na=LATIN SMALL LETTER MIDDLE SCOTS S;stc=A7D6;suc=A7D6
-cp;A7D8;age=14.0;cf=A7D9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SIGMOID S;NFKC_CF=A7D9;NFKC_SCF=A7D9;SB=UP;scf=A7D9;slc=A7D9;Upper
-cp;A7D9;age=14.0;CWT;CWU;Lower;na=LATIN SMALL LETTER SIGMOID S;stc=A7D8;suc=A7D8
+cp;A7D6;age=14.0;cf=A7D7;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER MIDDLE SCOTS S;NFKC_CF=A7D7;NFKC_SCF=A7D7;SB=UP;scf=A7D7;slc=A7D7;Upper
+cp;A7D7;age=14.0;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER MIDDLE SCOTS S;stc=A7D6;suc=A7D6
+cp;A7D8;age=14.0;cf=A7D9;CWCF;CWKCF;CWL;gc=Lu;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN CAPITAL LETTER SIGMOID S;NFKC_CF=A7D9;NFKC_SCF=A7D9;SB=UP;scf=A7D9;slc=A7D9;Upper
+cp;A7D9;age=14.0;CWT;CWU;Identifier_Status=Allowed;Identifier_Type=Recommended;Lower;na=LATIN SMALL LETTER SIGMOID S;stc=A7D8;suc=A7D8
unassigned;A7DA..A7F1
# Modifier letters for Chatino (M\u00E9xico)
-cp;A7F2;age=14.0;CI;-CWCM;CWKCF;dm=0043;dt=Sup;FC_NFKC=0063;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N
-cp;A7F3;age=14.0;CI;-CWCM;CWKCF;dm=0046;dt=Sup;FC_NFKC=0066;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL F;NFKC_CF=0066;NFKC_QC=N;NFKC_SCF=0066;NFKD_QC=N
+cp;A7F2;age=14.0;CI;-CWCM;CWKCF;dm=0043;dt=Sup;FC_NFKC=0063;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER CAPITAL C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N
+cp;A7F3;age=14.0;CI;-CWCM;CWKCF;dm=0046;dt=Sup;FC_NFKC=0066;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER CAPITAL F;NFKC_CF=0066;NFKC_QC=N;NFKC_SCF=0066;NFKD_QC=N
# Modifier letter for Japanese phonemic transcription
-cp;A7F4;age=14.0;CI;-CWCM;CWKCF;dm=0051;dt=Sup;FC_NFKC=0071;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL Q;NFKC_CF=0071;NFKC_QC=N;NFKC_SCF=0071;NFKD_QC=N
+cp;A7F4;age=14.0;CI;-CWCM;CWKCF;dm=0051;dt=Sup;FC_NFKC=0071;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER CAPITAL Q;NFKC_CF=0071;NFKC_QC=N;NFKC_SCF=0071;NFKD_QC=N
# Ancient Gaulish and Celtic epigraphic letters
cp;A7F5;age=13.0;cf=A7F6;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER REVERSED HALF H;NFKC_CF=A7F6;NFKC_SCF=A7F6;SB=UP;scf=A7F6;slc=A7F6;Upper
cp;A7F6;age=13.0;CWT;CWU;Lower;na=LATIN SMALL LETTER REVERSED HALF H;stc=A7F5;suc=A7F5
cp;A7F7;age=7.0;-Cased;-CWCM;gc=Lo;na=LATIN EPIGRAPHIC LETTER SIDEWAYS I;SB=LE
# Additions for Extended IPA
-cp;A7F8;age=6.1;CI;-CWCM;CWKCF;Dia;dm=0126;dt=Sup;FC_NFKC=0127;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL H WITH STROKE;NFKC_CF=0127;NFKC_QC=N;NFKC_SCF=0127;NFKD_QC=N
-cp;A7F9;age=6.1;CI;-CWCM;CWKCF;Dia;dm=0153;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER SMALL LIGATURE OE;NFKC_CF=0153;NFKC_QC=N;NFKC_SCF=0153;NFKD_QC=N
+cp;A7F8;age=6.1;CI;-CWCM;CWKCF;Dia;dm=0126;dt=Sup;FC_NFKC=0127;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER CAPITAL H WITH STROKE;NFKC_CF=0127;NFKC_QC=N;NFKC_SCF=0127;NFKD_QC=N
+cp;A7F9;age=6.1;CI;-CWCM;CWKCF;Dia;dm=0153;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;Lower;na=MODIFIER LETTER SMALL LIGATURE OE;NFKC_CF=0153;NFKC_QC=N;NFKC_SCF=0153;NFKD_QC=N
# Addition for UPA
-cp;A7FA;age=6.0;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL TURNED M
+cp;A7FA;age=6.0;-CWCM;Identifier_Type=Technical;Lower;na=LATIN LETTER SMALL CAPITAL TURNED M
# Ancient Roman epigraphic letters
cp;A7FB;-Cased;-CWCM;gc=Lo;na=LATIN EPIGRAPHIC LETTER REVERSED F;SB=LE
cp;A7FC;-Cased;-CWCM;gc=Lo;na=LATIN EPIGRAPHIC LETTER REVERSED P;SB=LE
@@ -17572,7 +17589,7 @@ cp;A7FD;-Cased;-CWCM;gc=Lo;na=LATIN EPIGRAPHIC LETTER INVERTED M;SB=LE
cp;A7FE;-Cased;-CWCM;gc=Lo;na=LATIN EPIGRAPHIC LETTER I LONGA;SB=LE
cp;A7FF;-Cased;-CWCM;gc=Lo;na=LATIN EPIGRAPHIC LETTER ARCHAIC M;SB=LE
-block;A800..A82F;age=4.1;Alpha;blk=Syloti_Nagri;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Sylo;WB=LE;XIDC;XIDS
+block;A800..A82F;age=4.1;Alpha;blk=Syloti_Nagri;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Sylo;WB=LE;XIDC;XIDS
# A800..A82F Syloti Nagri
# Independent vowels and dvisvara
cp;A800;InSC=Vowel_Independent;na=SYLOTI NAGRI LETTER A
@@ -17619,15 +17636,15 @@ cp;A825;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Depen
cp;A826;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=SYLOTI NAGRI VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
cp;A827;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=SYLOTI NAGRI VOWEL SIGN OO;SB=EX;WB=Extend;-XIDS
# Poetry marks
-cp;A828;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;A829;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;A82A;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;A82B;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A828;-Alpha;bc=ON;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A829;-Alpha;bc=ON;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A82A;-Alpha;bc=ON;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A82B;-Alpha;bc=ON;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-4;SB=XX;WB=XX;-XIDC;-XIDS
# Sign
cp;A82C;age=13.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=SYLOTI NAGRI SIGN ALTERNATE HASANTA;SB=EX;WB=Extend;-XIDS
unassigned;A82D..A82F
-block;A830..A83F;age=5.2;blk=Indic_Number_Forms;gc=No;Gr_Base;lb=AL;sc=Zyyy;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Shrd Sind Takr Tirh
+block;A830..A83F;age=5.2;blk=Indic_Number_Forms;gc=No;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Shrd Sind Takr Tirh
# A830..A83F Common Indic Number Forms
# Number forms
cp;A830;na=NORTH INDIC FRACTION ONE QUARTER;nt=Nu;nv=1/4
@@ -17645,7 +17662,7 @@ cp;A838;bc=ET;gc=Sc;lb=PO;na=NORTH INDIC RUPEE MARK;scx=Deva Dogr Gujr Guru Khoj
cp;A839;bc=ET;gc=So;na=NORTH INDIC QUANTITY MARK;scx=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh
unassigned;A83A..A83F
-block;A840..A87F;age=5.0;Alpha;blk=Phags_Pa;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;jt=D;lb=AL;SB=LE;sc=Phag;WB=LE;XIDC;XIDS
+block;A840..A87F;age=5.0;Alpha;blk=Phags_Pa;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;jt=D;lb=AL;SB=LE;sc=Phag;WB=LE;XIDC;XIDS
# A840..A87F Phags-pa
# Consonants
cp;A840;na=PHAGS-PA LETTER KA
@@ -17711,14 +17728,14 @@ cp;A872;jt=L;na=PHAGS-PA SUPERFIXED LETTER RA
# Candrabindu
cp;A873;InSC=Bindu;jt=U;na=PHAGS-PA LETTER CANDRABINDU
# Head marks for Tibetan
-cp;A874;-Alpha;bc=ON;gc=Po;-IDC;-IDS;InSC=Other;jt=U;lb=BB;na=PHAGS-PA SINGLE HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;A875;-Alpha;bc=ON;gc=Po;-IDC;-IDS;InSC=Other;jt=U;lb=BB;na=PHAGS-PA DOUBLE HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A874;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;jt=U;lb=BB;na=PHAGS-PA SINGLE HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A875;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;jt=U;lb=BB;na=PHAGS-PA DOUBLE HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation for Tibetan
-cp;A876;-Alpha;bc=ON;gc=Po;-IDC;-IDS;InSC=Other;jt=U;lb=EX;na=PHAGS-PA MARK SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;A877;-Alpha;bc=ON;gc=Po;-IDC;-IDS;InSC=Other;jt=U;lb=EX;na=PHAGS-PA MARK DOUBLE SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A876;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;jt=U;lb=EX;na=PHAGS-PA MARK SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A877;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;jt=U;lb=EX;na=PHAGS-PA MARK DOUBLE SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;A878..A87F
-block;A880..A8DF;age=5.1;Alpha;blk=Saurashtra;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Saur;WB=LE;XIDC;XIDS
+block;A880..A8DF;age=5.1;Alpha;blk=Saurashtra;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Saur;WB=LE;XIDC;XIDS
# A880..A8DF Saurashtra
# Various signs
cp;A880;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=SAURASHTRA SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
@@ -17798,8 +17815,8 @@ cp;A8C4;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InP
cp;A8C5;age=9.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=SAURASHTRA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
unassigned;A8C6..A8CD
# Punctuation
-cp;A8CE;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SAURASHTRA DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;A8CF;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SAURASHTRA DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A8CE;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=SAURASHTRA DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A8CF;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=SAURASHTRA DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Digits
cp;A8D0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SAURASHTRA DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
cp;A8D1;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SAURASHTRA DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
@@ -17813,7 +17830,7 @@ cp;A8D8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SAURASHTRA DIGIT EIGHT;nt=De;nv=8
cp;A8D9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SAURASHTRA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;A8DA..A8DF
-block;A8E0..A8FF;age=5.2;bc=NSM;blk=Devanagari_Ext;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;SB=EX;sc=Deva;WB=Extend;XIDC
+block;A8E0..A8FF;age=5.2;bc=NSM;blk=Devanagari_Ext;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Obsolete;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;SB=EX;sc=Deva;WB=Extend;XIDC
# A8E0..A8FF Devanagari Extended
# Cantillation marks (svara) for the Samaveda
cp;A8E0;Dia;na=COMBINING DEVANAGARI DIGIT ZERO
@@ -17842,18 +17859,18 @@ cp;A8F5;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;
cp;A8F6;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU THREE;SB=LE;WB=LE;XIDS
cp;A8F7;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU AVAGRAHA;SB=LE;WB=LE;XIDS
# Editorial marks
-cp;A8F8;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN PUSHPIKA;SB=XX;WB=XX;-XIDC
-cp;A8F9;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI GAP FILLER;SB=XX;WB=XX;-XIDC
-cp;A8FA;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI CARET;SB=XX;WB=XX;-XIDC
+cp;A8F8;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Obsolete Not_XID;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN PUSHPIKA;SB=XX;WB=XX;-XIDC
+cp;A8F9;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Obsolete Not_XID;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI GAP FILLER;SB=XX;WB=XX;-XIDC
+cp;A8FA;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Obsolete Not_XID;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI CARET;SB=XX;WB=XX;-XIDC
cp;A8FB;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI HEADSTROKE;SB=LE;WB=LE;XIDS
# Signs
-cp;A8FC;age=8.0;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InPC=NA;InSC=Other;jt=U;lb=BB;na=DEVANAGARI SIGN SIDDHAM;SB=XX;WB=XX;-XIDC
-cp;A8FD;age=8.0;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI JAIN OM;SB=LE;WB=LE;XIDS
+cp;A8FC;age=8.0;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;Identifier_Type=Uncommon_Use Obsolete Not_XID;InCB=None;InPC=NA;InSC=Other;jt=U;lb=BB;na=DEVANAGARI SIGN SIDDHAM;SB=XX;WB=XX;-XIDC
+cp;A8FD;age=8.0;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;Identifier_Type=Uncommon_Use Obsolete;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI JAIN OM;SB=LE;WB=LE;XIDS
# Additional vowel and vowel sign
cp;A8FE;age=11.0;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Vowel_Independent;jt=U;lb=AL;na=DEVANAGARI LETTER AY;SB=LE;WB=LE;XIDS
cp;A8FF;age=11.0;Alpha;ccc=0;InCB=None;InSC=Vowel_Dependent;na=DEVANAGARI VOWEL SIGN AY
-block;A900..A92F;age=5.1;Alpha;blk=Kayah_Li;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Kali;WB=LE;XIDC;XIDS
+block;A900..A92F;age=5.1;Alpha;blk=Kayah_Li;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Kali;WB=LE;XIDC;XIDS
# A900..A92F Kayah Li
# Digits
cp;A900;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=KAYAH LI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -17906,10 +17923,10 @@ cp;A92B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Exte
cp;A92C;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Tone_Mark;jt=T;lb=CM;na=KAYAH LI TONE CALYA;SB=EX;WB=Extend;-XIDS
cp;A92D;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Tone_Mark;jt=T;lb=CM;na=KAYAH LI TONE CALYA PLOPHU;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;A92E;-Alpha;Dia;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAYAH LI SIGN CWI;SB=XX;sc=Zyyy;scx=Kali Latn Mymr;WB=XX;-XIDC;-XIDS
-cp;A92F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAYAH LI SIGN SHYA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;A92E;-Alpha;Dia;gc=Po;-IDC;Identifier_Type=Not_XID;-IDS;InSC=Other;lb=BA;na=KAYAH LI SIGN CWI;SB=XX;sc=Zyyy;scx=Kali Latn Mymr;WB=XX;-XIDC;-XIDS
+cp;A92F;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=KAYAH LI SIGN SHYA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;A930..A95F;age=5.1;Alpha;blk=Rejang;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Rjng;WB=LE;XIDC;XIDS
+block;A930..A95F;age=5.1;Alpha;blk=Rejang;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Rjng;WB=LE;XIDC;XIDS
# A930..A95F Rejang
# Consonants
cp;A930;na=REJANG LETTER KA
@@ -17953,9 +17970,9 @@ cp;A952;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Consonant_Final;lb=CM;na=REJANG CONSON
cp;A953;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=CM;na=REJANG VIRAMA;SB=EX;WB=Extend;-XIDS
unassigned;A954..A95E
# Punctuation
-cp;A95F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=REJANG SECTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;A95F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=REJANG SECTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
-block;A960..A97F;age=5.2;Alpha;blk=Jamo_Ext_A;ea=W;gc=Lo;GCB=L;Gr_Base;IDC;IDS;lb=JL;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
+block;A960..A97F;age=5.2;Alpha;blk=Jamo_Ext_A;ea=W;gc=Lo;GCB=L;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=JL;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
# A960..A97F Hangul Jamo Extended-A
# Old initial consonants
cp;A960;na=HANGUL CHOSEONG TIKEUT-MIEUM
@@ -17989,7 +18006,7 @@ cp;A97B;na=HANGUL CHOSEONG HIEUH-SIOS
cp;A97C;na=HANGUL CHOSEONG SSANGYEORINHIEUH
unassigned;A97D..A97F;vo=U
-block;A980..A9DF;age=5.2;Alpha;blk=Javanese;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AK;SB=LE;sc=Java;WB=LE;XIDC
+block;A980..A9DF;age=5.2;Alpha;blk=Javanese;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;InSC=Consonant;lb=AK;SB=LE;sc=Java;WB=LE;XIDC
# A980..A9DF Javanese
# Various signs
cp;A980;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=JAVANESE SIGN PANYANGGA;SB=EX;WB=Extend
@@ -18063,22 +18080,22 @@ cp;A9BF;gc=Mc;GCB=SM;InPC=Bottom_And_Left;InSC=Consonant_Medial;lb=CM;na=JAVANES
# Sign
cp;A9C0;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;InPC=Bottom_And_Right;InSC=Virama;lb=VI;na=JAVANESE PANGKON;SB=EX;WB=Extend
# Punctuation
-cp;A9C1;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE LEFT RERENGGAN;SB=XX;WB=XX;-XIDC
-cp;A9C2;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE RIGHT RERENGGAN;SB=XX;WB=XX;-XIDC
-cp;A9C3;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA ANDAP;SB=XX;WB=XX;-XIDC
-cp;A9C4;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA MADYA;SB=XX;WB=XX;-XIDC
-cp;A9C5;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA LUHUR;SB=XX;WB=XX;-XIDC
-cp;A9C6;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA WINDU;SB=XX;WB=XX;-XIDC
-cp;A9C7;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=JAVANESE PADA PANGKAT;SB=XX;Term;WB=XX;-XIDC
-cp;A9C8;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=JAVANESE PADA LINGSA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;A9C9;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=JAVANESE PADA LUNGSI;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;A9CA;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA ADEG;SB=XX;WB=XX;-XIDC
-cp;A9CB;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA ADEG ADEG;SB=XX;WB=XX;-XIDC
-cp;A9CC;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA PISELEH;SB=XX;WB=XX;-XIDC
-cp;A9CD;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE TURNED PADA PISELEH;SB=XX;WB=XX;-XIDC
+cp;A9C1;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE LEFT RERENGGAN;SB=XX;WB=XX;-XIDC
+cp;A9C2;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE RIGHT RERENGGAN;SB=XX;WB=XX;-XIDC
+cp;A9C3;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA ANDAP;SB=XX;WB=XX;-XIDC
+cp;A9C4;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA MADYA;SB=XX;WB=XX;-XIDC
+cp;A9C5;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA LUHUR;SB=XX;WB=XX;-XIDC
+cp;A9C6;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA WINDU;SB=XX;WB=XX;-XIDC
+cp;A9C7;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=JAVANESE PADA PANGKAT;SB=XX;Term;WB=XX;-XIDC
+cp;A9C8;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=JAVANESE PADA LINGSA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;A9C9;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=JAVANESE PADA LUNGSI;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;A9CA;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA ADEG;SB=XX;WB=XX;-XIDC
+cp;A9CB;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA ADEG ADEG;SB=XX;WB=XX;-XIDC
+cp;A9CC;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA PISELEH;SB=XX;WB=XX;-XIDC
+cp;A9CD;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE TURNED PADA PISELEH;SB=XX;WB=XX;-XIDC
unassigned;A9CE
# Syllable reduplicator
-cp;A9CF;CI;Ext;gc=Lm;IDS;InSC=Other;lb=BA;na=JAVANESE PANGRANGKEP;sc=Zyyy;scx=Bugi Java;XIDS
+cp;A9CF;CI;Ext;gc=Lm;Identifier_Type=Limited_Use Exclusion;IDS;InSC=Other;lb=BA;na=JAVANESE PANGRANGKEP;sc=Zyyy;scx=Bugi Java;XIDS
# Digits
cp;A9D0;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
cp;A9D1;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
@@ -18092,20 +18109,20 @@ cp;A9D8;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT EIGHT;nt=De;nv=8;SB=NU;
cp;A9D9;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
unassigned;A9DA..A9DD
# Ellipsis marks
-cp;A9DE;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA TIRTA TUMETES;SB=XX;WB=XX;-XIDC
-cp;A9DF;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA ISEN-ISEN;SB=XX;WB=XX;-XIDC
+cp;A9DE;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA TIRTA TUMETES;SB=XX;WB=XX;-XIDC
+cp;A9DF;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=ID;na=JAVANESE PADA ISEN-ISEN;SB=XX;WB=XX;-XIDC
-block;A9E0..A9FF;age=7.0;Alpha;blk=Myanmar_Ext_B;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Mymr;XIDC;XIDS
+block;A9E0..A9FF;age=7.0;Alpha;blk=Myanmar_Ext_B;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Mymr;XIDC;XIDS
# A9E0..A9FF Myanmar Extended-B
# Additions for Shan Pali
-cp;A9E0;na=MYANMAR LETTER SHAN GHA
-cp;A9E1;na=MYANMAR LETTER SHAN CHA
-cp;A9E2;na=MYANMAR LETTER SHAN JHA
-cp;A9E3;na=MYANMAR LETTER SHAN NNA
-cp;A9E4;na=MYANMAR LETTER SHAN BHA
-cp;A9E5;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=MYANMAR SIGN SHAN SAW;SB=EX;WB=Extend;-XIDS
+cp;A9E0;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=MYANMAR LETTER SHAN GHA
+cp;A9E1;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=MYANMAR LETTER SHAN CHA
+cp;A9E2;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=MYANMAR LETTER SHAN JHA
+cp;A9E3;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=MYANMAR LETTER SHAN NNA
+cp;A9E4;Identifier_Status=Restricted;Identifier_Type=Obsolete;na=MYANMAR LETTER SHAN BHA
+cp;A9E5;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Restricted;Identifier_Type=Obsolete;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=MYANMAR SIGN SHAN SAW;SB=EX;WB=Extend;-XIDS
# Reduplication mark
-cp;A9E6;CI;Ext;gc=Lm;InSC=Other;na=MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+cp;A9E6;CI;Ext;gc=Lm;Identifier_Status=Restricted;Identifier_Type=Obsolete;InSC=Other;na=MYANMAR MODIFIER LETTER SHAN REDUPLICATION
# Tai Laing consonants
cp;A9E7;na=MYANMAR LETTER TAI LAING NYA
cp;A9E8;na=MYANMAR LETTER TAI LAING FA
@@ -18135,7 +18152,7 @@ cp;A9FD;na=MYANMAR LETTER TAI LAING BA
cp;A9FE;na=MYANMAR LETTER TAI LAING BHA
unassigned;A9FF
-block;AA00..AA5F;age=5.1;Alpha;blk=Cham;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Cham;WB=LE;XIDC;XIDS
+block;AA00..AA5F;age=5.1;Alpha;blk=Cham;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Cham;WB=LE;XIDC;XIDS
# AA00..AA5F Cham
# Independent vowels
cp;AA00;InSC=Vowel_Independent;na=CHAM LETTER A
@@ -18226,12 +18243,12 @@ cp;AA58;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT EIGHT;nt=De;nv=8;SB=NU
cp;AA59;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;AA5A..AA5B
# Punctuation
-cp;AA5C;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=ID;na=CHAM PUNCTUATION SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
-cp;AA5D;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;AA5E;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;AA5F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION TRIPLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;AA5C;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=ID;na=CHAM PUNCTUATION SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
+cp;AA5D;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;AA5E;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;AA5F;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION TRIPLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;AA60..AA7F;age=5.2;Alpha;blk=Myanmar_Ext_A;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Mymr;XIDC;XIDS
+block;AA60..AA7F;age=5.2;Alpha;blk=Myanmar_Ext_A;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Mymr;XIDC;XIDS
# AA60..AA7F Myanmar Extended-A
# Khamti Shan consonants
cp;AA60;na=MYANMAR LETTER KHAMTI GA
@@ -18259,9 +18276,9 @@ cp;AA74;InSC=Consonant_Placeholder;na=MYANMAR LOGOGRAM KHAMTI OAY
cp;AA75;InSC=Consonant_Placeholder;na=MYANMAR LOGOGRAM KHAMTI QN
cp;AA76;InSC=Consonant_Placeholder;na=MYANMAR LOGOGRAM KHAMTI HM
# Aiton symbols and letters
-cp;AA77;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=MYANMAR SYMBOL AITON EXCLAMATION;SB=XX;-XIDC;-XIDS
-cp;AA78;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=MYANMAR SYMBOL AITON ONE;SB=XX;-XIDC;-XIDS
-cp;AA79;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=MYANMAR SYMBOL AITON TWO;SB=XX;-XIDC;-XIDS
+cp;AA77;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MYANMAR SYMBOL AITON EXCLAMATION;SB=XX;-XIDC;-XIDS
+cp;AA78;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MYANMAR SYMBOL AITON ONE;SB=XX;-XIDC;-XIDS
+cp;AA79;-Alpha;gc=So;-IDC;Identifier_Status=Restricted;Identifier_Type=Not_XID;-IDS;InSC=Other;na=MYANMAR SYMBOL AITON TWO;SB=XX;-XIDC;-XIDS
cp;AA7A;na=MYANMAR LETTER AITON RA
# Pa'o Karen tone mark
cp;AA7B;Dia;gc=Mc;-IDS;InPC=Right;InSC=Tone_Mark;na=MYANMAR SIGN PAO KAREN TONE;SB=EX;WB=Extend;-XIDS
@@ -18272,7 +18289,7 @@ cp;AA7D;age=7.0;Dia;gc=Mc;-IDS;InPC=Right;InSC=Tone_Mark;na=MYANMAR SIGN TAI LAI
cp;AA7E;age=7.0;na=MYANMAR LETTER SHWE PALAUNG CHA
cp;AA7F;age=7.0;na=MYANMAR LETTER SHWE PALAUNG SHA
-block;AA80..AADF;age=5.2;Alpha;blk=Tai_Viet;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Tavt;XIDC;XIDS
+block;AA80..AADF;age=5.2;Alpha;blk=Tai_Viet;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Tavt;XIDC;XIDS
# AA80..AADF Tai Viet
# Consonants
cp;AA80;na=TAI VIET LETTER LOW KO
@@ -18351,10 +18368,10 @@ cp;AADC;InSC=Other;na=TAI VIET SYMBOL NUENG
# Repetition mark
cp;AADD;CI;Ext;gc=Lm;InSC=Other;na=TAI VIET SYMBOL SAM
# Punctuation
-cp;AADE;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=TAI VIET SYMBOL HO HOI;SB=XX;-XIDC;-XIDS
-cp;AADF;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=TAI VIET SYMBOL KOI KOI;SB=XX;Term;-XIDC;-XIDS
+cp;AADE;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=TAI VIET SYMBOL HO HOI;SB=XX;-XIDC;-XIDS
+cp;AADF;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=TAI VIET SYMBOL KOI KOI;SB=XX;Term;-XIDC;-XIDS
-block;AAE0..AAFF;age=6.1;Alpha;blk=Meetei_Mayek_Ext;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mtei;WB=LE;XIDC;XIDS
+block;AAE0..AAFF;age=6.1;Alpha;blk=Meetei_Mayek_Ext;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mtei;WB=LE;XIDC;XIDS
# AAE0..AAFF Meetei Mayek Extensions
# Independent vowel signs
cp;AAE0;InSC=Vowel_Independent;na=MEETEI MAYEK LETTER E
@@ -18376,8 +18393,8 @@ cp;AAED;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependen
cp;AAEE;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=MEETEI MAYEK VOWEL SIGN AU;SB=EX;WB=Extend;-XIDS
cp;AAEF;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=MEETEI MAYEK VOWEL SIGN AAU;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;AAF0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MEETEI MAYEK CHEIKHAN;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;AAF1;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MEETEI MAYEK AHANG KHUDAM;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;AAF0;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=MEETEI MAYEK CHEIKHAN;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;AAF1;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=MEETEI MAYEK AHANG KHUDAM;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Sign
cp;AAF2;InSC=Other;na=MEETEI MAYEK ANJI
# Repetition marks
@@ -18389,7 +18406,7 @@ cp;AAF5;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=MEETEI MAYEK VOWEL SI
cp;AAF6;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=MEETEI MAYEK VIRAMA;SB=EX;WB=Extend;-XIDS
unassigned;AAF7..AAFF
-block;AB00..AB2F;age=6.0;Alpha;blk=Ethiopic_Ext_A;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
+block;AB00..AB2F;age=6.0;Alpha;blk=Ethiopic_Ext_A;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
# AB00..AB2F Ethiopic Extended-A
unassigned;AB00
# Gamo-Gofa-Dawro and Basketo
@@ -18433,7 +18450,7 @@ cp;AB2D;na=ETHIOPIC SYLLABLE BBE
cp;AB2E;na=ETHIOPIC SYLLABLE BBO
unassigned;AB2F
-block;AB30..AB6F;age=7.0;Alpha;blk=Latin_Ext_E;Cased;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+block;AB30..AB6F;age=7.0;Alpha;blk=Latin_Ext_E;Cased;gc=Ll;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# AB30..AB6F Latin Extended-E
# Letters for German dialectology
cp;AB30;na=LATIN SMALL LETTER BARRED ALPHA
@@ -18480,30 +18497,30 @@ cp;AB58;na=LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING
cp;AB59;na=LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF
cp;AB5A;na=LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
# Modifier letters for German dialectology
-cp;AB5B;-Alpha;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER BREVE WITH INVERTED BREVE;SB=XX;sc=Zyyy;-XIDC;-XIDS
-cp;AB5C;CI;CWKCF;Dia;dm=A727;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL HENG;NFKC_CF=A727;NFKC_QC=N;NFKC_SCF=A727;NFKD_QC=N
-cp;AB5D;CI;CWKCF;Dia;dm=AB37;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH INVERTED LAZY S;NFKC_CF=AB37;NFKC_QC=N;NFKC_SCF=AB37;NFKD_QC=N
-cp;AB5E;CI;CWKCF;Dia;dm=026B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH MIDDLE TILDE;NFKC_CF=026B;NFKC_QC=N;NFKC_SCF=026B;NFKD_QC=N
-cp;AB5F;CI;CWKCF;Dia;dm=AB52;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL U WITH LEFT HOOK;NFKC_CF=AB52;NFKC_QC=N;NFKC_SCF=AB52;NFKD_QC=N
+cp;AB5B;-Alpha;-Cased;CI;Dia;gc=Sk;-IDC;Identifier_Type=Not_XID;-IDS;-Lower;na=MODIFIER BREVE WITH INVERTED BREVE;SB=XX;sc=Zyyy;-XIDC;-XIDS
+cp;AB5C;CI;CWKCF;Dia;dm=A727;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL HENG;NFKC_CF=A727;NFKC_QC=N;NFKC_SCF=A727;NFKD_QC=N
+cp;AB5D;CI;CWKCF;Dia;dm=AB37;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL L WITH INVERTED LAZY S;NFKC_CF=AB37;NFKC_QC=N;NFKC_SCF=AB37;NFKD_QC=N
+cp;AB5E;CI;CWKCF;Dia;dm=026B;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL L WITH MIDDLE TILDE;NFKC_CF=026B;NFKC_QC=N;NFKC_SCF=026B;NFKD_QC=N
+cp;AB5F;CI;CWKCF;Dia;dm=AB52;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL U WITH LEFT HOOK;NFKC_CF=AB52;NFKC_QC=N;NFKC_SCF=AB52;NFKD_QC=N
# Historic letters for Sakha (Yakut)
-cp;AB60;age=8.0;na=LATIN SMALL LETTER SAKHA YAT
-cp;AB61;age=8.0;na=LATIN SMALL LETTER IOTIFIED E
-cp;AB62;age=8.0;na=LATIN SMALL LETTER OPEN OE
-cp;AB63;age=8.0;na=LATIN SMALL LETTER UO
+cp;AB60;age=8.0;Identifier_Type=Uncommon_Use;na=LATIN SMALL LETTER SAKHA YAT
+cp;AB61;age=8.0;Identifier_Type=Uncommon_Use;na=LATIN SMALL LETTER IOTIFIED E
+cp;AB62;age=8.0;Identifier_Type=Uncommon_Use;na=LATIN SMALL LETTER OPEN OE
+cp;AB63;age=8.0;Identifier_Type=Uncommon_Use;na=LATIN SMALL LETTER UO
# Letters for Americanist orthographies
cp;AB64;na=LATIN SMALL LETTER INVERTED ALPHA
cp;AB65;na=GREEK LETTER SMALL CAPITAL OMEGA;sc=Grek
# Letters for sinological and Tibetanist phonetic transcription
-cp;AB66;age=12.0;na=LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK
-cp;AB67;age=12.0;na=LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK
+cp;AB66;age=12.0;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK
+cp;AB67;age=12.0;Identifier_Status=Allowed;Identifier_Type=Recommended;na=LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK
# Letters for Scots dialectology
-cp;AB68;age=13.0;na=LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
-cp;AB69;age=13.0;CI;CWKCF;Dia;dm=028D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED W;NFKC_CF=028D;NFKC_QC=N;NFKC_SCF=028D;NFKD_QC=N
-cp;AB6A;age=13.0;-Alpha;bc=ON;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER LETTER LEFT TACK;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;AB6B;age=13.0;-Alpha;bc=ON;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER LETTER RIGHT TACK;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;AB68;age=13.0;Identifier_Type=Technical;na=LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+cp;AB69;age=13.0;CI;CWKCF;Dia;dm=028D;dt=Sup;gc=Lm;Identifier_Type=Not_NFKC;na=MODIFIER LETTER SMALL TURNED W;NFKC_CF=028D;NFKC_QC=N;NFKC_SCF=028D;NFKD_QC=N
+cp;AB6A;age=13.0;-Alpha;bc=ON;-Cased;CI;Dia;gc=Sk;-IDC;Identifier_Type=Not_XID;-IDS;-Lower;na=MODIFIER LETTER LEFT TACK;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;AB6B;age=13.0;-Alpha;bc=ON;-Cased;CI;Dia;gc=Sk;-IDC;Identifier_Type=Not_XID;-IDS;-Lower;na=MODIFIER LETTER RIGHT TACK;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
unassigned;AB6C..AB6F
-block;AB70..ABBF;age=8.0;Alpha;blk=Cherokee_Sup;Cased;CWCF;CWCM;CWKCF;CWT;CWU;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Cher;WB=LE;XIDC;XIDS
+block;AB70..ABBF;age=8.0;Alpha;blk=Cherokee_Sup;Cased;CWCF;CWCM;CWKCF;CWT;CWU;gc=Ll;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;Lower;SB=LO;sc=Cher;WB=LE;XIDC;XIDS
# AB70..ABBF Cherokee Supplement
# Lowercase syllables
cp;AB70;cf=13A0;na=CHEROKEE SMALL LETTER A;NFKC_CF=13A0;NFKC_SCF=13A0;scf=13A0;stc=13A0;suc=13A0
@@ -18587,7 +18604,7 @@ cp;ABBD;cf=13ED;na=CHEROKEE SMALL LETTER WU;NFKC_CF=13ED;NFKC_SCF=13ED;scf=13ED;
cp;ABBE;cf=13EE;na=CHEROKEE SMALL LETTER WV;NFKC_CF=13EE;NFKC_SCF=13EE;scf=13EE;stc=13EE;suc=13EE
cp;ABBF;cf=13EF;na=CHEROKEE SMALL LETTER YA;NFKC_CF=13EF;NFKC_SCF=13EF;scf=13EF;stc=13EF;suc=13EF
-block;ABC0..ABFF;age=5.2;Alpha;blk=Meetei_Mayek;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mtei;WB=LE;XIDC;XIDS
+block;ABC0..ABFF;age=5.2;Alpha;blk=Meetei_Mayek;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mtei;WB=LE;XIDC;XIDS
# ABC0..ABFF Meetei Mayek
# Letters
cp;ABC0;na=MEETEI MAYEK LETTER KOK
@@ -18636,7 +18653,7 @@ cp;ABE8;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Depen
cp;ABE9;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=MEETEI MAYEK VOWEL SIGN CHEINAP;SB=EX;WB=Extend;-XIDS
cp;ABEA;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=MEETEI MAYEK VOWEL SIGN NUNG;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;ABEB;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MEETEI MAYEK CHEIKHEI;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;ABEB;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=MEETEI MAYEK CHEIKHEI;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;ABEC;-Alpha;Dia;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Tone_Mark;lb=CM;na=MEETEI MAYEK LUM IYEK;SB=EX;WB=Extend;-XIDS
cp;ABED;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=MEETEI MAYEK APUN IYEK;SB=EX;WB=Extend;-XIDS
unassigned;ABEE..ABEF
@@ -18653,7 +18670,7 @@ cp;ABF8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MEETEI MAYEK DIGIT EIGHT;nt=De;nv
cp;ABF9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MEETEI MAYEK DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;ABFA..ABFF
-block;AC00..D7AF;age=2.0;Alpha;blk=Hangul;dt=Can;ea=W;gc=Lo;GCB=LVT;Gr_Base;IDC;IDS;lb=H2;NFD_QC=N;NFKD_QC=N;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
+block;AC00..D7AF;age=2.0;Alpha;blk=Hangul;dt=Can;ea=W;gc=Lo;GCB=LVT;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=H2;NFD_QC=N;NFKD_QC=N;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
# AC00..D7A3 Hangul Syllables
algnamesrange;AC00..D7A3;hangul
cp;AC00;GCB=LV
@@ -19456,7 +19473,7 @@ cp;D788;GCB=LV
cp;D789..D7A3;lb=H3
unassigned;D7A4..D7AF;vo=U
-block;D7B0..D7FF;age=5.2;Alpha;blk=Jamo_Ext_B;gc=Lo;GCB=T;Gr_Base;IDC;IDS;lb=JT;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
+block;D7B0..D7FF;age=5.2;Alpha;blk=Jamo_Ext_B;gc=Lo;GCB=T;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=JT;SB=LE;sc=Hang;vo=U;WB=LE;XIDC;XIDS
# D7B0..D7FF Hangul Jamo Extended-B
# Old medial vowels
cp;D7B0;GCB=V;lb=JV;na=HANGUL JUNGSEONG O-YEO
@@ -19547,7 +19564,7 @@ block;DC00..DFFF;age=2.0;blk=Low_Surrogates;gc=Cs;lb=SG
block;E000..F8FF;age=1.1;blk=PUA;ea=A;gc=Co;vo=U
# E000..F8FF Private Use Area
-block;F900..FAFF;age=1.1;Alpha;blk=CJK_Compat_Ideographs;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hani;vo=U;XIDC;XIDS
+block;F900..FAFF;age=1.1;Alpha;blk=CJK_Compat_Ideographs;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Not_NFKC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hani;vo=U;XIDC;XIDS
# F900..FAFF CJK Compatibility Ideographs
# Pronunciation variants from KS X 1001:1998
cp;F900;dm=8C48;na=CJK COMPATIBILITY IDEOGRAPH-F900;NFKC_CF=8C48;NFKC_SCF=8C48
@@ -19822,13 +19839,13 @@ cp;FA0B;dm=5ED3;na=CJK COMPATIBILITY IDEOGRAPH-FA0B;NFKC_CF=5ED3;NFKC_SCF=5ED3
cp;FA0C;dm=5140;na=CJK COMPATIBILITY IDEOGRAPH-FA0C;NFKC_CF=5140;NFKC_SCF=5140
cp;FA0D;dm=55C0;na=CJK COMPATIBILITY IDEOGRAPH-FA0D;NFKC_CF=55C0;NFKC_SCF=55C0
# The IBM 32 compatibility ideographs
-cp;FA0E;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA0E;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA0F;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA0F;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA0E;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA0E;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA0F;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA0F;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA10;dm=585A;na=CJK COMPATIBILITY IDEOGRAPH-FA10;NFKC_CF=585A;NFKC_SCF=585A
-cp;FA11;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA11;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA11;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA11;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA12;dm=6674;na=CJK COMPATIBILITY IDEOGRAPH-FA12;NFKC_CF=6674;NFKC_SCF=6674
-cp;FA13;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA13;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA14;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA14;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA13;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA13;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA14;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA14;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA15;dm=51DE;na=CJK COMPATIBILITY IDEOGRAPH-FA15;NFKC_CF=51DE;NFKC_SCF=51DE
cp;FA16;dm=732A;na=CJK COMPATIBILITY IDEOGRAPH-FA16;NFKC_CF=732A;NFKC_SCF=732A
cp;FA17;dm=76CA;na=CJK COMPATIBILITY IDEOGRAPH-FA17;NFKC_CF=76CA;NFKC_SCF=76CA
@@ -19839,17 +19856,17 @@ cp;FA1B;dm=798F;na=CJK COMPATIBILITY IDEOGRAPH-FA1B;NFKC_CF=798F;NFKC_SCF=798F
cp;FA1C;dm=9756;na=CJK COMPATIBILITY IDEOGRAPH-FA1C;NFKC_CF=9756;NFKC_SCF=9756
cp;FA1D;dm=7CBE;na=CJK COMPATIBILITY IDEOGRAPH-FA1D;NFKC_CF=7CBE;NFKC_SCF=7CBE
cp;FA1E;dm=7FBD;na=CJK COMPATIBILITY IDEOGRAPH-FA1E;NFKC_CF=7FBD;NFKC_SCF=7FBD
-cp;FA1F;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA1F;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA1F;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA1F;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA20;dm=8612;na=CJK COMPATIBILITY IDEOGRAPH-FA20;NFKC_CF=8612;NFKC_SCF=8612
-cp;FA21;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA21;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA21;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA21;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA22;dm=8AF8;na=CJK COMPATIBILITY IDEOGRAPH-FA22;NFKC_CF=8AF8;NFKC_SCF=8AF8
-cp;FA23;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA23;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA24;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA24;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA23;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA23;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA24;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA24;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA25;dm=9038;na=CJK COMPATIBILITY IDEOGRAPH-FA25;NFKC_CF=9038;NFKC_SCF=9038
cp;FA26;dm=90FD;na=CJK COMPATIBILITY IDEOGRAPH-FA26;NFKC_CF=90FD;NFKC_SCF=90FD
-cp;FA27;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA27;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA28;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA28;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA29;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA29;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA27;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA27;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA28;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA28;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
+cp;FA29;-Comp_Ex;-CWKCF;dt=None;Identifier_Status=Allowed;Identifier_Type=Recommended;na=CJK COMPATIBILITY IDEOGRAPH-FA29;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA2A;dm=98EF;na=CJK COMPATIBILITY IDEOGRAPH-FA2A;NFKC_CF=98EF;NFKC_SCF=98EF
cp;FA2B;dm=98FC;na=CJK COMPATIBILITY IDEOGRAPH-FA2B;NFKC_CF=98FC;NFKC_SCF=98FC
cp;FA2C;dm=9928;na=CJK COMPATIBILITY IDEOGRAPH-FA2C;NFKC_CF=9928;NFKC_SCF=9928
@@ -20031,7 +20048,7 @@ cp;FAD8;age=4.1;dm=9F43;na=CJK COMPATIBILITY IDEOGRAPH-FAD8;NFKC_CF=9F43;NFKC_SC
cp;FAD9;age=4.1;dm=9F8E;na=CJK COMPATIBILITY IDEOGRAPH-FAD9;NFKC_CF=9F8E;NFKC_SCF=9F8E
unassigned;FADA..FAFF;ea=W;lb=ID;vo=U
-block;FB00..FB4F;age=1.1;Alpha;bc=R;blk=Alphabetic_PF;Comp_Ex;CWKCF;dt=Can;gc=Lo;Gr_Base;IDC;IDS;lb=HL;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hebr;WB=HL;XIDC;XIDS
+block;FB00..FB4F;age=1.1;Alpha;bc=R;blk=Alphabetic_PF;Comp_Ex;CWKCF;dt=Can;gc=Lo;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=HL;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hebr;WB=HL;XIDC;XIDS
# FB00..FB4F Alphabetic Presentation Forms
# Latin ligatures
cp;FB00;bc=L;Cased;cf=0066 0066;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0066;dt=Com;gc=Ll;lb=AL;lc=FB00;Lower;na=LATIN SMALL LIGATURE FF;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0066;NFKC_SCF=0066 0066;SB=LO;sc=Latn;tc=0046 0066;uc=0046 0046;WB=LE
@@ -20051,7 +20068,7 @@ cp;FB17;bc=L;Cased;cf=0574 056D;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 056D;dt=Com;g
unassigned;FB18..FB1C
# Hebrew presentation forms
cp;FB1D;age=3.0;dm=05D9 05B4;na=HEBREW LETTER YOD WITH HIRIQ;NFKC_CF=05D9 05B4;NFKC_SCF=05D9 05B4
-cp;FB1E;bc=NSM;ccc=26;CI;-Comp_Ex;-CWKCF;Dia;dt=None;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=HEBREW POINT JUDEO-SPANISH VARIKA;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;SB=EX;WB=Extend;-XIDS
+cp;FB1E;bc=NSM;ccc=26;CI;-Comp_Ex;-CWKCF;Dia;dt=None;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Type=Uncommon_Use Technical;-IDS;InCB=Extend;jt=T;lb=CM;na=HEBREW POINT JUDEO-SPANISH VARIKA;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;SB=EX;WB=Extend;-XIDS
cp;FB1F;dm=05F2 05B7;na=HEBREW LIGATURE YIDDISH YOD YOD PATAH;NFKC_CF=05F2 05B7;NFKC_SCF=05F2 05B7
cp;FB20;-Comp_Ex;dm=05E2;dt=Font;na=HEBREW LETTER ALTERNATIVE AYIN;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05E2;NFKC_SCF=05E2
cp;FB21;-Comp_Ex;dm=05D0;dt=Font;na=HEBREW LETTER WIDE ALEF;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D0;NFKC_SCF=05D0
@@ -20102,7 +20119,7 @@ cp;FB4D;dm=05DB 05BF;na=HEBREW LETTER KAF WITH RAFE;NFKC_CF=05DB 05BF;NFKC_SCF=0
cp;FB4E;dm=05E4 05BF;na=HEBREW LETTER PE WITH RAFE;NFKC_CF=05E4 05BF;NFKC_SCF=05E4 05BF
cp;FB4F;-Comp_Ex;dm=05D0 05DC;dt=Com;na=HEBREW LIGATURE ALEF LAMED;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D0 05DC;NFKC_SCF=05D0 05DC
-block;FB50..FDFF;age=1.1;Alpha;bc=AL;blk=Arabic_PF_A;CWKCF;dt=Fin;gc=Lo;Gr_Base;IDC;IDS;lb=AL;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
+block;FB50..FDFF;age=1.1;Alpha;bc=AL;blk=Arabic_PF_A;CWKCF;dt=Fin;gc=Lo;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# FB50..FDFF Arabic Presentation Forms-A
# Glyphs for contextual forms of letters for Persian, Urdu, Sindhi, etc.
cp;FB50;dm=0671;dt=Iso;na=ARABIC LETTER ALEF WASLA ISOLATED FORM;NFKC_CF=0671;NFKC_SCF=0671
@@ -20204,23 +20221,23 @@ cp;FBAF;dm=06D2;na=ARABIC LETTER YEH BARREE FINAL FORM;NFKC_CF=06D2;NFKC_SCF=06D
cp;FBB0;dm=06D3;dt=Iso;na=ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=06D3;NFKC_SCF=06D3
cp;FBB1;dm=06D3;na=ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;NFKC_CF=06D3;NFKC_SCF=06D3
# Arabic pedagogical symbols
-cp;FBB2;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL DOT ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBB3;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL DOT BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBB4;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL TWO DOTS ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBB5;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL TWO DOTS BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBB6;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL THREE DOTS ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBB7;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL THREE DOTS BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBB8;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBB9;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBBA;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL FOUR DOTS ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBBB;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL FOUR DOTS BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBBC;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBBD;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBBE;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL TWO DOTS VERTICALLY BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBBF;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL RING;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBC0;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL SMALL TAH ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBC1;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL SMALL TAH BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FBC2;age=14.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL WASLA ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBB2;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL DOT ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBB3;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL DOT BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBB4;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL TWO DOTS ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBB5;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL TWO DOTS BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBB6;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL THREE DOTS ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBB7;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL THREE DOTS BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBB8;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBB9;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBBA;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL FOUR DOTS ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBBB;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL FOUR DOTS BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBBC;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBBD;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBBE;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL TWO DOTS VERTICALLY BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBBF;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL RING;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBC0;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL SMALL TAH ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBC1;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL SMALL TAH BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FBC2;age=14.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC SYMBOL WASLA ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;FBC3..FBD2;bc=AL
# Glyphs for contextual forms of letters for Central Asian languages
cp;FBD3;dm=06AD;dt=Iso;na=ARABIC LETTER NG ISOLATED FORM;NFKC_CF=06AD;NFKC_SCF=06AD
@@ -20588,25 +20605,25 @@ cp;FD3B;dm=0638 0645;dt=Med;na=ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;NFKC_CF
cp;FD3C;dm=0627 064B;na=ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;NFKC_CF=0627 064B;NFKC_SCF=0627 064B
cp;FD3D;dm=0627 064B;dt=Iso;na=ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;NFKC_CF=0627 064B;NFKC_SCF=0627 064B
# Punctuation
-cp;FD3E;-Alpha;bc=ON;-CWKCF;dt=None;gc=Pe;-IDC;-IDS;lb=CL;na=ORNATE LEFT PARENTHESIS;NFKC_QC=Y;NFKD_QC=Y;Pat_Syn;SB=CL;sc=Zyyy;scx=Arab Nkoo;WB=XX;-XIDC;-XIDS
-cp;FD3F;-Alpha;bc=ON;-CWKCF;dt=None;gc=Ps;-IDC;-IDS;lb=OP;na=ORNATE RIGHT PARENTHESIS;NFKC_QC=Y;NFKD_QC=Y;Pat_Syn;SB=CL;sc=Zyyy;scx=Arab Nkoo;WB=XX;-XIDC;-XIDS
+cp;FD3E;-Alpha;bc=ON;-CWKCF;dt=None;gc=Pe;-IDC;Identifier_Type=Technical Not_XID;-IDS;lb=CL;na=ORNATE LEFT PARENTHESIS;NFKC_QC=Y;NFKD_QC=Y;Pat_Syn;SB=CL;sc=Zyyy;scx=Arab Nkoo;WB=XX;-XIDC;-XIDS
+cp;FD3F;-Alpha;bc=ON;-CWKCF;dt=None;gc=Ps;-IDC;Identifier_Type=Technical Not_XID;-IDS;lb=OP;na=ORNATE RIGHT PARENTHESIS;NFKC_QC=Y;NFKD_QC=Y;Pat_Syn;SB=CL;sc=Zyyy;scx=Arab Nkoo;WB=XX;-XIDC;-XIDS
# Honorific word ligatures
-cp;FD40;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE RAHIMAHU ALLAAH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD41;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD42;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANHAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD43;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANHUM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD44;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANHUMAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD45;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANHUNNA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD46;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD47;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE ALAYHI AS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD48;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE ALAYHIM AS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD49;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE ALAYHIMAA AS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD4A;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD4B;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE QUDDISA SIRRAH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD4C;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD4D;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE ALAYHAA AS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD4E;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE TABAARAKA WA-TAAALAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FD4F;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE RAHIMAHUM ALLAAH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD40;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE RAHIMAHU ALLAAH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD41;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD42;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANHAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD43;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANHUM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD44;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANHUMAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD45;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE RADI ALLAAHU ANHUNNA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD46;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD47;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE ALAYHI AS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD48;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE ALAYHIM AS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD49;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE ALAYHIMAA AS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD4A;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD4B;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE QUDDISA SIRRAH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD4C;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD4D;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE ALAYHAA AS-SALAAM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD4E;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE TABAARAKA WA-TAAALAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FD4F;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE RAHIMAHUM ALLAAH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
# Ligatures (three elements)
cp;FD50;dm=062A 062C 0645;dt=Init;na=ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=062A 062C 0645;NFKC_SCF=062A 062C 0645
cp;FD51;dm=062A 062D 062C;na=ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;NFKC_CF=062A 062D 062C;NFKC_SCF=062A 062D 062C
@@ -20729,7 +20746,7 @@ cp;FDC6;dm=0633 062E 064A;na=ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;
cp;FDC7;dm=0646 062C 064A;na=ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0646 062C 064A;NFKC_SCF=0646 062C 064A
unassigned;FDC8..FDCE;bc=AL
# Honorific word ligature
-cp;FDCF;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE SALAAMUHU ALAYNAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FDCF;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE SALAAMUHU ALAYNAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
# Noncharacters
unassigned;FDD0..FDEF;age=3.1;bc=BN;NChar
# Word ligatures
@@ -20748,11 +20765,11 @@ cp;FDFB;dm=062C 0644 0020 062C 0644 0627 0644 0647;dt=Iso;na=ARABIC LIGATURE JAL
# Currency symbol
cp;FDFC;age=3.2;-Alpha;dm=0631 06CC 0627 0644;dt=Iso;gc=Sc;-IDC;-IDS;lb=PO;na=RIAL SIGN;NFKC_CF=0631 06CC 0627 0644;NFKC_SCF=0631 06CC 0627 0644;SB=XX;WB=XX;-XIDC;-XIDS
# Honorific word ligatures
-cp;FDFD;age=4.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;scx=Arab Thaa;WB=XX;-XIDC;-XIDS
-cp;FDFE;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE SUBHAANAHU WA TAAALAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FDFF;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE AZZA WA JALL;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FDFD;age=4.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;scx=Arab Thaa;WB=XX;-XIDC;-XIDS
+cp;FDFE;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE SUBHAANAHU WA TAAALAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FDFF;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;Identifier_Type=Technical Not_XID;-IDS;na=ARABIC LIGATURE AZZA WA JALL;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-block;FE00..FE0F;age=3.2;bc=NSM;blk=VS;CI;CWKCF;DI;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zinh;VS;WB=Extend;XIDC
+block;FE00..FE0F;age=3.2;bc=NSM;blk=VS;CI;CWKCF;DI;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Default_Ignorable;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zinh;VS;WB=Extend;XIDC
# FE00..FE0F Variation Selectors
# Variation selectors
cp;FE00;na=VARIATION SELECTOR-1;Name_Alias=abbreviation=VS1
@@ -20773,7 +20790,7 @@ cp;FE0D;na=VARIATION SELECTOR-14;Name_Alias=abbreviation=VS14
cp;FE0E;na=VARIATION SELECTOR-15;Name_Alias=abbreviation=VS15
cp;FE0F;EComp;na=VARIATION SELECTOR-16;Name_Alias=abbreviation=VS16
-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
+block;FE10..FE1F;age=4.1;bc=ON;blk=Vertical_Forms;CWKCF;dt=Vert;ea=W;gc=Po;Gr_Base;Identifier_Type=Not_NFKC;lb=CL;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# FE10..FE1F Vertical Forms
# Glyphs for vertical variants
cp;FE10;dm=002C;lb=IS;na=PRESENTATION FORM FOR VERTICAL COMMA;NFKC_CF=002C;NFKC_SCF=002C;SB=SC;WB=MN
@@ -20788,7 +20805,7 @@ cp;FE18;dm=3017;gc=Pe;na=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR B
cp;FE19;dm=2026;lb=IN;na=PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;NFKC_CF=002E 002E 002E;NFKC_SCF=002E 002E 002E
unassigned;FE1A..FE1F;vo=U
-block;FE20..FE2F;age=7.0;bc=NSM;blk=Half_Marks;ccc=230;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;FE20..FE2F;age=7.0;bc=NSM;blk=Half_Marks;ccc=230;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
# FE20..FE2F Combining Half Marks
# Combining half marks
cp;FE20;age=1.1;na=COMBINING LIGATURE LEFT HALF
@@ -20808,10 +20825,10 @@ cp;FE2B;ccc=220;na=COMBINING MACRON LEFT HALF BELOW
cp;FE2C;ccc=220;na=COMBINING MACRON RIGHT HALF BELOW
cp;FE2D;ccc=220;na=COMBINING CONJOINING MACRON BELOW
# Combining half marks
-cp;FE2E;age=8.0;na=COMBINING CYRILLIC TITLO LEFT HALF;sc=Cyrl
-cp;FE2F;age=8.0;na=COMBINING CYRILLIC TITLO RIGHT HALF;sc=Cyrl
+cp;FE2E;age=8.0;Identifier_Type=Uncommon_Use Technical;na=COMBINING CYRILLIC TITLO LEFT HALF;sc=Cyrl
+cp;FE2F;age=8.0;Identifier_Type=Uncommon_Use Technical;na=COMBINING CYRILLIC TITLO RIGHT HALF;sc=Cyrl
-block;FE30..FE4F;age=1.1;bc=ON;blk=CJK_Compat_Forms;CWKCF;dt=Vert;ea=W;gc=Pe;Gr_Base;lb=ID;NFKC_QC=N;NFKC_SCF=0020 0305;NFKD_QC=N;SB=CL;sc=Zyyy;vo=U
+block;FE30..FE4F;age=1.1;bc=ON;blk=CJK_Compat_Forms;CWKCF;dt=Vert;ea=W;gc=Pe;Gr_Base;Identifier_Type=Not_NFKC;lb=ID;NFKC_QC=N;NFKC_SCF=0020 0305;NFKD_QC=N;SB=CL;sc=Zyyy;vo=U
# FE30..FE4F CJK Compatibility Forms
# Glyphs for vertical variants
cp;FE30;dm=2025;gc=Po;na=PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;NFKC_CF=002E 002E;NFKC_SCF=002E 002E;SB=XX
@@ -20836,8 +20853,8 @@ cp;FE42;dm=300D;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;NFK
cp;FE43;dm=300E;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;NFKC_CF=300E;NFKC_SCF=300E;QMark
cp;FE44;dm=300F;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;NFKC_CF=300F;NFKC_SCF=300F;QMark
# Sidelining emphasis marks
-cp;FE45;age=3.2;-CWKCF;dt=None;gc=Po;na=SESAME DOT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
-cp;FE46;age=3.2;-CWKCF;dt=None;gc=Po;na=WHITE SESAME DOT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
+cp;FE45;age=3.2;-CWKCF;dt=None;gc=Po;Identifier_Type=Technical Not_XID;na=SESAME DOT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
+cp;FE46;age=3.2;-CWKCF;dt=None;gc=Po;Identifier_Type=Technical Not_XID;na=WHITE SESAME DOT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
# Glyphs for vertical variants
cp;FE47;age=4.0;dm=005B;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;NFKC_CF=005B;NFKC_SCF=005B
cp;FE48;age=4.0;dm=005D;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;NFKC_CF=005D;NFKC_SCF=005D
@@ -20850,7 +20867,7 @@ cp;FE4D;dm=005F;dt=Com;gc=Pc;IDC;na=DASHED LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;S
cp;FE4E;dm=005F;dt=Com;gc=Pc;IDC;na=CENTRELINE LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;SB=XX;vo=R;WB=EX;XIDC
cp;FE4F;dm=005F;dt=Com;gc=Pc;IDC;na=WAVY LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;SB=XX;vo=R;WB=EX;XIDC
-block;FE50..FE6F;age=1.1;bc=ON;blk=Small_Forms;CWKCF;dt=Sml;ea=W;gc=Po;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
+block;FE50..FE6F;age=1.1;bc=ON;blk=Small_Forms;CWKCF;dt=Sml;ea=W;gc=Po;Gr_Base;Identifier_Type=Not_NFKC;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# FE50..FE6F Small Form Variants
# Small form variants
cp;FE50;bc=CS;dm=002C;lb=CL;na=SMALL COMMA;NFKC_CF=002C;NFKC_SCF=002C;SB=SC;Term;vo=Tu;WB=MN
@@ -20883,14 +20900,14 @@ cp;FE6A;bc=ET;dm=0025;lb=PO;na=SMALL PERCENT SIGN;NFKC_CF=0025;NFKC_SCF=0025
cp;FE6B;dm=0040;na=SMALL COMMERCIAL AT;NFKC_CF=0040;NFKC_SCF=0040
unassigned;FE6C..FE6F;vo=U
-block;FE70..FEFF;age=1.1;Alpha;bc=AL;blk=Arabic_PF_B;CWKCF;dt=Iso;gc=Lo;Gr_Base;IDC;IDS;lb=AL;NFKC_QC=N;NFKC_SCF=0626;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
+block;FE70..FEFF;age=1.1;Alpha;bc=AL;blk=Arabic_PF_B;CWKCF;dt=Iso;gc=Lo;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;NFKC_QC=N;NFKC_SCF=0626;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# FE70..FEFF Arabic Presentation Forms-B
# Glyphs for spacing forms of Arabic points
cp;FE70;dm=0020 064B;na=ARABIC FATHATAN ISOLATED FORM;NFKC_CF=0020 064B;NFKC_SCF=0020 064B;-XIDC;-XIDS
cp;FE71;dm=0640 064B;dt=Med;na=ARABIC TATWEEL WITH FATHATAN ABOVE;NFKC_CF=0640 064B;NFKC_SCF=0640 064B
cp;FE72;dm=0020 064C;na=ARABIC DAMMATAN ISOLATED FORM;NFKC_CF=0020 064C;NFKC_SCF=0020 064C;-XIDC;-XIDS
# Glyph part
-cp;FE73;age=3.2;-CWKCF;dt=None;na=ARABIC TAIL FRAGMENT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y
+cp;FE73;age=3.2;-CWKCF;dt=None;Identifier_Type=Technical;na=ARABIC TAIL FRAGMENT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y
# Glyphs for spacing forms of Arabic points
cp;FE74;dm=0020 064D;na=ARABIC KASRATAN ISOLATED FORM;NFKC_CF=0020 064D;NFKC_SCF=0020 064D;-XIDC;-XIDS
unassigned;FE75;bc=AL
@@ -21032,9 +21049,9 @@ cp;FEFB;dm=0644 0627;na=ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;NFKC_CF=0644
cp;FEFC;dm=0644 0627;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF FINAL FORM;NFKC_CF=0644 0627;NFKC_SCF=0644 0627
unassigned;FEFD..FEFE;bc=AL
# Special
-cp;FEFF;-Alpha;bc=BN;CI;DI;dt=None;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=T;lb=WJ;na=ZERO WIDTH NO-BREAK SPACE;Name_Alias=alternate=BYTE ORDER MARK,abbreviation=BOM,abbreviation=ZWNBSP;NFKC_CF=;NFKC_QC=Y;NFKC_SCF=;NFKD_QC=Y;SB=FO;sc=Zyyy;WB=FO;-XIDC;-XIDS
+cp;FEFF;-Alpha;bc=BN;CI;DI;dt=None;gc=Cf;GCB=CN;-Gr_Base;-IDC;Identifier_Type=Default_Ignorable;-IDS;jt=T;lb=WJ;na=ZERO WIDTH NO-BREAK SPACE;Name_Alias=alternate=BYTE ORDER MARK,abbreviation=BOM,abbreviation=ZWNBSP;NFKC_CF=;NFKC_QC=Y;NFKC_SCF=;NFKD_QC=Y;SB=FO;sc=Zyyy;WB=FO;-XIDC;-XIDS
-block;FF00..FFEF;age=1.1;Alpha;blk=Half_And_Full_Forms;CWKCF;dt=Nar;ea=H;gc=Lo;Gr_Base;IDC;IDS;lb=ID;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=LE;sc=Zyyy;WB=LE;XIDC;XIDS
+block;FF00..FFEF;age=1.1;Alpha;blk=Half_And_Full_Forms;CWKCF;dt=Nar;ea=H;gc=Lo;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=ID;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=LE;sc=Zyyy;WB=LE;XIDC;XIDS
# FF00..FFEF Halfwidth and Fullwidth Forms
unassigned;FF00
# Fullwidth ASCII variants
@@ -21201,7 +21218,7 @@ cp;FF9D;dm=30F3;na=HALFWIDTH KATAKANA LETTER N;NFKC_CF=30F3;NFKC_SCF=30F3;sc=Kan
cp;FF9E;CI;Dia;dm=3099;gc=Lm;GCB=EX;-Gr_Base;Gr_Ext;lb=NS;na=HALFWIDTH KATAKANA VOICED SOUND MARK;NFKC_CF=3099;NFKC_SCF=3099;SB=EX;scx=Hira Kana;WB=Extend;-XIDS
cp;FF9F;CI;Dia;dm=309A;gc=Lm;GCB=EX;-Gr_Base;Gr_Ext;lb=NS;na=HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;NFKC_CF=309A;NFKC_SCF=309A;SB=EX;scx=Hira Kana;WB=Extend;-XIDS
# Halfwidth Hangul variants
-cp;FFA0;DI;dm=3164;na=HALFWIDTH HANGUL FILLER;NFKC_CF=;NFKC_SCF=;sc=Hang
+cp;FFA0;DI;dm=3164;Identifier_Type=Default_Ignorable;na=HALFWIDTH HANGUL FILLER;NFKC_CF=;NFKC_SCF=;sc=Hang
cp;FFA1;dm=3131;na=HALFWIDTH HANGUL LETTER KIYEOK;NFKC_CF=1100;NFKC_SCF=1100;sc=Hang
cp;FFA2;dm=3132;na=HALFWIDTH HANGUL LETTER SSANGKIYEOK;NFKC_CF=1101;NFKC_SCF=1101;sc=Hang
cp;FFA3;dm=3133;na=HALFWIDTH HANGUL LETTER KIYEOK-SIOS;NFKC_CF=11AA;NFKC_SCF=11AA;sc=Hang
@@ -21277,7 +21294,7 @@ cp;FFED;-Alpha;bc=ON;dm=25A0;gc=So;-IDC;-IDS;lb=AL;na=HALFWIDTH BLACK SQUARE;NFK
cp;FFEE;-Alpha;bc=ON;dm=25CB;gc=So;-IDC;-IDS;lb=AL;na=HALFWIDTH WHITE CIRCLE;NFKC_CF=25CB;NFKC_SCF=25CB;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;FFEF
-block;FFF0..FFFF;age=3.0;bc=ON;blk=Specials;gc=Cf;lb=CM;sc=Zyyy
+block;FFF0..FFFF;age=3.0;bc=ON;blk=Specials;gc=Cf;Identifier_Type=Not_XID;lb=CM;sc=Zyyy
# FFF0..FFFF Specials
unassigned;FFF0..FFF8;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=;vo=U
# Interlinear annotation
@@ -21290,7 +21307,7 @@ cp;FFFD;age=1.1;ea=A;gc=So;Gr_Base;lb=AI;na=REPLACEMENT CHARACTER;vo=U
# Noncharacters
unassigned;FFFE..FFFF;age=1.1;bc=BN;NChar
-block;10000..1007F;age=4.0;Alpha;blk=Linear_B_Syllabary;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Linb;WB=LE;XIDC;XIDS
+block;10000..1007F;age=4.0;Alpha;blk=Linear_B_Syllabary;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Linb;WB=LE;XIDC;XIDS
# 10000..1007F Linear B Syllabary
# Basic syllables
cp;10000;na=LINEAR B SYLLABLE B008 A
@@ -21390,7 +21407,7 @@ cp;1005C;na=LINEAR B SYMBOL B086
cp;1005D;na=LINEAR B SYMBOL B089
unassigned;1005E..1007F
-block;10080..100FF;age=4.0;Alpha;blk=Linear_B_Ideograms;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Linb;WB=LE;XIDC;XIDS
+block;10080..100FF;age=4.0;Alpha;blk=Linear_B_Ideograms;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Linb;WB=LE;XIDC;XIDS
# 10080..100FF Linear B Ideograms
# People and animals
cp;10080;na=LINEAR B IDEOGRAM B100 MAN
@@ -21523,7 +21540,7 @@ cp;100F9;na=LINEAR B IDEOGRAM VESSEL B250
cp;100FA;na=LINEAR B IDEOGRAM VESSEL B305
unassigned;100FB..100FF
-block;10100..1013F;age=4.0;blk=Aegean_Numbers;gc=No;Gr_Base;lb=AL;nt=Nu;sc=Zyyy;scx=Cprt Lina Linb
+block;10100..1013F;age=4.0;blk=Aegean_Numbers;gc=No;Gr_Base;Identifier_Type=Exclusion Not_XID;lb=AL;nt=Nu;sc=Zyyy;scx=Cprt Lina Linb
# 10100..1013F Aegean Numbers
# Punctuation
cp;10100;gc=Po;lb=BA;na=AEGEAN WORD SEPARATOR LINE;nt=None;scx=Cpmn Cprt Linb
@@ -21588,7 +21605,7 @@ cp;1013D;gc=So;na=AEGEAN LIQUID MEASURE FIRST SUBUNIT;nt=None;scx=Cprt Linb
cp;1013E;gc=So;na=AEGEAN MEASURE SECOND SUBUNIT;nt=None;scx=Cprt Linb
cp;1013F;gc=So;na=AEGEAN MEASURE THIRD SUBUNIT;nt=None;scx=Cprt Linb
-block;10140..1018F;age=4.1;Alpha;bc=ON;blk=Ancient_Greek_Numbers;gc=Nl;Gr_Base;IDC;IDS;lb=AL;nt=Nu;SB=LE;sc=Grek;WB=LE;XIDC;XIDS
+block;10140..1018F;age=4.1;Alpha;bc=ON;blk=Ancient_Greek_Numbers;gc=Nl;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=AL;nt=Nu;SB=LE;sc=Grek;WB=LE;XIDC;XIDS
# 10140..1018F Ancient Greek Numbers
# Ancient Greek acrophonic numerals
cp;10140;na=GREEK ACROPHONIC ATTIC ONE QUARTER;nv=1/4
@@ -21645,36 +21662,36 @@ cp;10172;na=GREEK ACROPHONIC THESPIAN FIVE THOUSAND;nv=5000
cp;10173;na=GREEK ACROPHONIC DELPHIC FIVE MNAS;nv=5
cp;10174;na=GREEK ACROPHONIC STRATIAN FIFTY MNAS;nv=50
# Ancient Greek papyrological numbers
-cp;10175;-Alpha;gc=No;-IDC;-IDS;na=GREEK ONE HALF SIGN;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10176;-Alpha;gc=No;-IDC;-IDS;na=GREEK ONE HALF SIGN ALTERNATE FORM;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10177;-Alpha;gc=No;-IDC;-IDS;na=GREEK TWO THIRDS SIGN;nv=2/3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10178;-Alpha;gc=No;-IDC;-IDS;na=GREEK THREE QUARTERS SIGN;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10179;-Alpha;gc=So;-IDC;-IDS;na=GREEK YEAR SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1017A;-Alpha;gc=So;-IDC;-IDS;na=GREEK TALENT SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1017B;-Alpha;gc=So;-IDC;-IDS;na=GREEK DRACHMA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1017C;-Alpha;gc=So;-IDC;-IDS;na=GREEK OBOL SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1017D;-Alpha;gc=So;-IDC;-IDS;na=GREEK TWO OBOLS SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1017E;-Alpha;gc=So;-IDC;-IDS;na=GREEK THREE OBOLS SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1017F;-Alpha;gc=So;-IDC;-IDS;na=GREEK FOUR OBOLS SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10180;-Alpha;gc=So;-IDC;-IDS;na=GREEK FIVE OBOLS SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10181;-Alpha;gc=So;-IDC;-IDS;na=GREEK METRETES SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10182;-Alpha;gc=So;-IDC;-IDS;na=GREEK KYATHOS BASE SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10183;-Alpha;gc=So;-IDC;-IDS;na=GREEK LITRA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10184;-Alpha;gc=So;-IDC;-IDS;na=GREEK OUNKIA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10185;-Alpha;gc=So;-IDC;-IDS;na=GREEK XESTES SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10186;-Alpha;gc=So;-IDC;-IDS;na=GREEK ARTABE SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10187;-Alpha;gc=So;-IDC;-IDS;na=GREEK AROURA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10188;-Alpha;gc=So;-IDC;-IDS;na=GREEK GRAMMA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10189;-Alpha;gc=So;-IDC;-IDS;na=GREEK TRYBLION BASE SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1018A;-Alpha;gc=No;-IDC;-IDS;na=GREEK ZERO SIGN;nv=0;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1018B;age=7.0;-Alpha;gc=No;-IDC;-IDS;na=GREEK ONE QUARTER SIGN;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10175;-Alpha;gc=No;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK ONE HALF SIGN;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10176;-Alpha;gc=No;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK ONE HALF SIGN ALTERNATE FORM;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10177;-Alpha;gc=No;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK TWO THIRDS SIGN;nv=2/3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10178;-Alpha;gc=No;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK THREE QUARTERS SIGN;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10179;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK YEAR SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1017A;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK TALENT SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1017B;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK DRACHMA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1017C;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK OBOL SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1017D;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK TWO OBOLS SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1017E;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK THREE OBOLS SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1017F;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK FOUR OBOLS SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10180;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK FIVE OBOLS SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10181;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK METRETES SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10182;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK KYATHOS BASE SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10183;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK LITRA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10184;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK OUNKIA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10185;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK XESTES SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10186;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK ARTABE SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10187;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK AROURA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10188;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK GRAMMA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10189;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK TRYBLION BASE SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1018A;-Alpha;gc=No;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK ZERO SIGN;nv=0;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1018B;age=7.0;-Alpha;gc=No;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK ONE QUARTER SIGN;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
# Ancient Greek symbols
-cp;1018C;age=7.0;-Alpha;gc=So;-IDC;-IDS;na=GREEK SINUSOID SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1018D;age=9.0;-Alpha;bc=L;gc=So;-IDC;-IDS;na=GREEK INDICTION SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1018E;age=9.0;-Alpha;bc=L;gc=So;-IDC;-IDS;na=NOMISMA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1018C;age=7.0;-Alpha;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK SINUSOID SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1018D;age=9.0;-Alpha;bc=L;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=GREEK INDICTION SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1018E;age=9.0;-Alpha;bc=L;gc=So;-IDC;Identifier_Type=Not_XID;-IDS;na=NOMISMA SIGN;nt=None;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1018F
-block;10190..101CF;age=5.1;bc=ON;blk=Ancient_Symbols;gc=So;Gr_Base;lb=AL;sc=Zyyy
+block;10190..101CF;age=5.1;bc=ON;blk=Ancient_Symbols;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy
# 10190..101CF Ancient Symbols
# Roman weights and measures
cp;10190;na=ROMAN SEXTANS SIGN
@@ -21697,7 +21714,7 @@ unassigned;1019D..1019F
cp;101A0;age=7.0;na=GREEK SYMBOL TAU RHO;sc=Grek
unassigned;101A1..101CF
-block;101D0..101FF;age=5.1;blk=Phaistos;gc=So;Gr_Base;lb=AL;sc=Zyyy
+block;101D0..101FF;age=5.1;blk=Phaistos;gc=So;Gr_Base;Identifier_Type=Obsolete Not_XID;lb=AL;sc=Zyyy
# 101D0..101FF Phaistos Disc
# Signs
cp;101D0;na=PHAISTOS DISC SIGN PEDESTRIAN
@@ -21746,10 +21763,10 @@ cp;101FA;na=PHAISTOS DISC SIGN STRAINER
cp;101FB;na=PHAISTOS DISC SIGN SMALL AXE
cp;101FC;na=PHAISTOS DISC SIGN WAVY BAND
# Combining stroke
-cp;101FD;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;101FD;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Obsolete;InCB=Extend;jt=T;lb=CM;na=PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;SB=EX;sc=Zinh;WB=Extend;XIDC
unassigned;101FE..101FF
-block;10280..1029F;age=5.1;Alpha;blk=Lycian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Lyci;WB=LE;XIDC;XIDS
+block;10280..1029F;age=5.1;Alpha;blk=Lycian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Lyci;WB=LE;XIDC;XIDS
# 10280..1029F Lycian
# Letters
cp;10280;na=LYCIAN LETTER A
@@ -21783,7 +21800,7 @@ cp;1029B;na=LYCIAN LETTER H
cp;1029C;na=LYCIAN LETTER X
unassigned;1029D..1029F
-block;102A0..102DF;age=5.1;Alpha;blk=Carian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Cari;WB=LE;XIDC;XIDS
+block;102A0..102DF;age=5.1;Alpha;blk=Carian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Cari;WB=LE;XIDC;XIDS
# 102A0..102DF Carian
# Letters
cp;102A0;na=CARIAN LETTER A
@@ -21837,10 +21854,10 @@ cp;102CF;na=CARIAN LETTER E2
cp;102D0;na=CARIAN LETTER UUU3
unassigned;102D1..102DF
-block;102E0..102FF;age=7.0;bc=EN;blk=Coptic_Epact_Numbers;gc=No;Gr_Base;lb=AL;nt=Nu;sc=Zyyy;scx=Arab Copt
+block;102E0..102FF;age=7.0;bc=EN;blk=Coptic_Epact_Numbers;gc=No;Gr_Base;Identifier_Type=Obsolete Not_XID;lb=AL;nt=Nu;sc=Zyyy;scx=Arab Copt
# 102E0..102FF Coptic Epact Numbers
# Sign
-cp;102E0;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=COPTIC EPACT THOUSANDS MARK;nt=None;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;102E0;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Obsolete;InCB=Extend;jt=T;lb=CM;na=COPTIC EPACT THOUSANDS MARK;nt=None;SB=EX;sc=Zinh;WB=Extend;XIDC
# Digits
cp;102E1;na=COPTIC EPACT DIGIT ONE;nv=1
cp;102E2;na=COPTIC EPACT DIGIT TWO;nv=2
@@ -21872,7 +21889,7 @@ cp;102FA;na=COPTIC EPACT NUMBER EIGHT HUNDRED;nv=800
cp;102FB;na=COPTIC EPACT NUMBER NINE HUNDRED;nv=900
unassigned;102FC..102FF
-block;10300..1032F;age=3.1;Alpha;blk=Old_Italic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ital;WB=LE;XIDC;XIDS
+block;10300..1032F;age=3.1;Alpha;blk=Old_Italic;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Ital;WB=LE;XIDC;XIDS
# 10300..1032F Old Italic
# Letters
cp;10300;na=OLD ITALIC LETTER A
@@ -21911,17 +21928,17 @@ cp;1031E;na=OLD ITALIC LETTER UU
# South Picene letter
cp;1031F;age=7.0;na=OLD ITALIC LETTER ESS
# Numerals
-cp;10320;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10321;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10322;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10323;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10320;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD ITALIC NUMERAL ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10321;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD ITALIC NUMERAL FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10322;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD ITALIC NUMERAL TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10323;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD ITALIC NUMERAL FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;10324..1032C
# North Italic letters
cp;1032D;age=10.0;na=OLD ITALIC LETTER YE
cp;1032E;age=10.0;na=OLD ITALIC LETTER NORTHERN TSE
cp;1032F;age=10.0;na=OLD ITALIC LETTER SOUTHERN TSE
-block;10330..1034F;age=3.1;Alpha;blk=Gothic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Goth;WB=LE;XIDC;XIDS
+block;10330..1034F;age=3.1;Alpha;blk=Gothic;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Goth;WB=LE;XIDC;XIDS
# 10330..1034F Gothic
# Letters
cp;10330;na=GOTHIC LETTER AHSA
@@ -21953,7 +21970,7 @@ cp;10349;na=GOTHIC LETTER OTHAL
cp;1034A;gc=Nl;na=GOTHIC LETTER NINE HUNDRED;nt=Nu;nv=900
unassigned;1034B..1034F
-block;10350..1037F;age=7.0;Alpha;blk=Old_Permic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Perm;WB=LE;XIDC;XIDS
+block;10350..1037F;age=7.0;Alpha;blk=Old_Permic;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Perm;WB=LE;XIDC;XIDS
# 10350..1037F Old Permic
# Letters
cp;10350;na=OLD PERMIC LETTER AN
@@ -22002,7 +22019,7 @@ cp;10379;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb
cp;1037A;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER SII;SB=EX;WB=Extend;-XIDS
unassigned;1037B..1037F
-block;10380..1039F;age=4.0;Alpha;blk=Ugaritic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ugar;WB=LE;XIDC;XIDS
+block;10380..1039F;age=4.0;Alpha;blk=Ugaritic;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Ugar;WB=LE;XIDC;XIDS
# 10380..1039F Ugaritic
# Letters
cp;10380;na=UGARITIC LETTER ALPA
@@ -22037,9 +22054,9 @@ cp;1039C;na=UGARITIC LETTER U
cp;1039D;na=UGARITIC LETTER SSU
unassigned;1039E
# Punctuation
-cp;1039F;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=UGARITIC WORD DIVIDER;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1039F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=UGARITIC WORD DIVIDER;SB=XX;Term;WB=XX;-XIDC;-XIDS
-block;103A0..103DF;age=4.1;Alpha;blk=Old_Persian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Xpeo;WB=LE;XIDC;XIDS
+block;103A0..103DF;age=4.1;Alpha;blk=Old_Persian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Xpeo;WB=LE;XIDC;XIDS
# 103A0..103DF Old Persian
# Independent vowels
cp;103A0;na=OLD PERSIAN SIGN A
@@ -22090,7 +22107,7 @@ cp;103CD;na=OLD PERSIAN SIGN DAHYAAUSH-2
cp;103CE;na=OLD PERSIAN SIGN BAGA
cp;103CF;na=OLD PERSIAN SIGN BUUMISH
# Punctuation
-cp;103D0;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=OLD PERSIAN WORD DIVIDER;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;103D0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=OLD PERSIAN WORD DIVIDER;SB=XX;Term;WB=XX;-XIDC;-XIDS
# Numbers
cp;103D1;gc=Nl;na=OLD PERSIAN NUMBER ONE;nt=Nu;nv=1
cp;103D2;gc=Nl;na=OLD PERSIAN NUMBER TWO;nt=Nu;nv=2
@@ -22099,7 +22116,7 @@ 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
unassigned;103D6..103DF
-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
+block;10400..1044F;age=3.1;Alpha;blk=Deseret;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LO;sc=Dsrt;WB=LE;XIDC;XIDS
# 10400..1044F Deseret
# Uppercase letters
cp;10400;cf=10428;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG I;NFKC_CF=10428;NFKC_SCF=10428;SB=UP;scf=10428;slc=10428;Upper
@@ -22184,7 +22201,7 @@ cp;1044D;CWT;CWU;Lower;na=DESERET SMALL LETTER ENG;stc=10425;suc=10425
cp;1044E;age=4.0;CWT;CWU;Lower;na=DESERET SMALL LETTER OI;stc=10426;suc=10426
cp;1044F;age=4.0;CWT;CWU;Lower;na=DESERET SMALL LETTER EW;stc=10427;suc=10427
-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
+block;10450..1047F;age=4.0;Alpha;blk=Shavian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Shaw;WB=LE;XIDC;XIDS
# 10450..1047F Shavian
# Tall and deep letters (consonants)
cp;10450;na=SHAVIAN LETTER PEEP
@@ -22238,7 +22255,7 @@ cp;1047D;na=SHAVIAN LETTER EAR
cp;1047E;na=SHAVIAN LETTER IAN
cp;1047F;na=SHAVIAN LETTER YEW
-block;10480..104AF;age=4.0;Alpha;blk=Osmanya;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Osma;WB=LE;XIDC;XIDS
+block;10480..104AF;age=4.0;Alpha;blk=Osmanya;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Osma;WB=LE;XIDC;XIDS
# 10480..104AF Osmanya
# Letters
cp;10480;na=OSMANYA LETTER ALEF
@@ -22285,7 +22302,7 @@ 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
unassigned;104AA..104AF
-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
+block;104B0..104FF;age=9.0;Alpha;blk=Osage;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LO;sc=Osge;WB=LE;XIDC;XIDS
# 104B0..104FF Osage
# Uppercase letters
cp;104B0;cf=104D8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER A;NFKC_CF=104D8;NFKC_SCF=104D8;SB=UP;scf=104D8;slc=104D8;Upper
@@ -22364,7 +22381,7 @@ cp;104FA;CWT;CWU;Lower;na=OSAGE SMALL LETTER ZA;stc=104D2;suc=104D2
cp;104FB;CWT;CWU;Lower;na=OSAGE SMALL LETTER ZHA;stc=104D3;suc=104D3
unassigned;104FC..104FF
-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
+block;10500..1052F;age=7.0;Alpha;blk=Elbasan;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Elba;WB=LE;XIDC;XIDS
# 10500..1052F Elbasan
# Letters
cp;10500;na=ELBASAN LETTER A
@@ -22409,7 +22426,7 @@ cp;10526;na=ELBASAN LETTER GHAMMA
cp;10527;na=ELBASAN LETTER KHE
unassigned;10528..1052F
-block;10530..1056F;age=7.0;Alpha;blk=Caucasian_Albanian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Aghb;WB=LE;XIDC;XIDS
+block;10530..1056F;age=7.0;Alpha;blk=Caucasian_Albanian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Aghb;WB=LE;XIDC;XIDS
# 10530..1056F Caucasian Albanian
# Letters
cp;10530;na=CAUCASIAN ALBANIAN LETTER ALT
@@ -22466,9 +22483,9 @@ cp;10562;na=CAUCASIAN ALBANIAN LETTER PIWR
cp;10563;na=CAUCASIAN ALBANIAN LETTER KIW
unassigned;10564..1056E
# Punctuation
-cp;1056F;-Alpha;gc=Po;-IDC;-IDS;na=CAUCASIAN ALBANIAN CITATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1056F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=CAUCASIAN ALBANIAN CITATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
-block;10570..105BF;age=14.0;Alpha;blk=Vithkuqi;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Vith;WB=LE;XIDC;XIDS
+block;10570..105BF;age=14.0;Alpha;blk=Vithkuqi;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LO;sc=Vith;WB=LE;XIDC;XIDS
# 10570..105BF Vithkuqi
# Capital letters
cp;10570;cf=10597;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER A;NFKC_CF=10597;NFKC_SCF=10597;SB=UP;scf=10597;slc=10597;Upper
@@ -22551,7 +22568,7 @@ cp;105BB;CWT;CWU;Lower;na=VITHKUQI SMALL LETTER Y;stc=10594;suc=10594
cp;105BC;CWT;CWU;Lower;na=VITHKUQI SMALL LETTER ZE;stc=10595;suc=10595
unassigned;105BD..105BF
-block;10600..1077F;age=7.0;Alpha;blk=Linear_A;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Lina;WB=LE;XIDC;XIDS
+block;10600..1077F;age=7.0;Alpha;blk=Linear_A;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Lina;WB=LE;XIDC;XIDS
# 10600..1077F Linear A
# Simple signs
cp;10600;na=LINEAR A SIGN AB001
@@ -22904,10 +22921,10 @@ cp;10766;na=LINEAR A SIGN A806
cp;10767;na=LINEAR A SIGN A807
unassigned;10768..1077F
-block;10780..107BF;age=14.0;Alpha;blk=Latin_Ext_F;Cased;CI;CWKCF;Dia;dt=Sup;gc=Lm;Gr_Base;IDC;IDS;lb=AL;Lower;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+block;10780..107BF;age=14.0;Alpha;blk=Latin_Ext_F;Cased;CI;CWKCF;Dia;dt=Sup;gc=Lm;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;Lower;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 10780..107BF Latin Extended-F
# Modifier letter for VoQS
-cp;10780;-CWKCF;dt=None;na=MODIFIER LETTER SMALL CAPITAL AA;NFKC_QC=Y;NFKD_QC=Y
+cp;10780;-CWKCF;dt=None;Identifier_Type=Uncommon_Use;na=MODIFIER LETTER SMALL CAPITAL AA;NFKC_QC=Y;NFKD_QC=Y
# Modifier letters for IPA
cp;10781;-Cased;dm=02D0;Ext;-Lower;na=MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON;NFKC_CF=02D0;NFKC_SCF=02D0;SB=LE
cp;10782;-Cased;dm=02D1;Ext;-Lower;na=MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON;NFKC_CF=02D1;NFKC_SCF=02D1;SB=LE
@@ -22969,7 +22986,7 @@ cp;107B9;dm=1DF0A;na=MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;NFKC_CF
cp;107BA;dm=1DF1E;na=MODIFIER LETTER SMALL S WITH CURL;NFKC_CF=1DF1E;NFKC_SCF=1DF1E
unassigned;107BB..107BF
-block;10800..1083F;age=4.0;Alpha;bc=R;blk=Cypriot_Syllabary;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Cprt;WB=LE;XIDC;XIDS
+block;10800..1083F;age=4.0;Alpha;bc=R;blk=Cypriot_Syllabary;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Cprt;WB=LE;XIDC;XIDS
# 10800..1083F Cypriot Syllabary
# Syllables
cp;10800;na=CYPRIOT SYLLABLE A
@@ -23033,7 +23050,7 @@ cp;1083C;na=CYPRIOT SYLLABLE ZA
unassigned;1083D..1083E;bc=R
cp;1083F;na=CYPRIOT SYLLABLE ZO
-block;10840..1085F;age=5.2;Alpha;bc=R;blk=Imperial_Aramaic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Armi;WB=LE;XIDC;XIDS
+block;10840..1085F;age=5.2;Alpha;bc=R;blk=Imperial_Aramaic;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Armi;WB=LE;XIDC;XIDS
# 10840..1085F Imperial Aramaic
# Letters
cp;10840;na=IMPERIAL ARAMAIC LETTER ALEPH
@@ -23060,18 +23077,18 @@ cp;10854;na=IMPERIAL ARAMAIC LETTER SHIN
cp;10855;na=IMPERIAL ARAMAIC LETTER TAW
unassigned;10856;bc=R
# Punctuation
-cp;10857;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=IMPERIAL ARAMAIC SECTION SIGN;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10857;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=IMPERIAL ARAMAIC SECTION SIGN;SB=XX;Term;WB=XX;-XIDC;-XIDS
# Numbers
-cp;10858;-Alpha;gc=No;-IDC;-IDS;na=IMPERIAL ARAMAIC NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10859;-Alpha;gc=No;-IDC;-IDS;na=IMPERIAL ARAMAIC NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1085A;-Alpha;gc=No;-IDC;-IDS;na=IMPERIAL ARAMAIC NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1085B;-Alpha;gc=No;-IDC;-IDS;na=IMPERIAL ARAMAIC NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1085C;-Alpha;gc=No;-IDC;-IDS;na=IMPERIAL ARAMAIC NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1085D;-Alpha;gc=No;-IDC;-IDS;na=IMPERIAL ARAMAIC NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1085E;-Alpha;gc=No;-IDC;-IDS;na=IMPERIAL ARAMAIC NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1085F;-Alpha;gc=No;-IDC;-IDS;na=IMPERIAL ARAMAIC NUMBER TEN THOUSAND;nt=Nu;nv=10000;SB=XX;WB=XX;-XIDC;-XIDS
-
-block;10860..1087F;age=7.0;Alpha;bc=R;blk=Palmyrene;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Palm;WB=LE;XIDC;XIDS
+cp;10858;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=IMPERIAL ARAMAIC NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10859;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=IMPERIAL ARAMAIC NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1085A;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=IMPERIAL ARAMAIC NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1085B;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=IMPERIAL ARAMAIC NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1085C;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=IMPERIAL ARAMAIC NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1085D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=IMPERIAL ARAMAIC NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1085E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=IMPERIAL ARAMAIC NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1085F;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=IMPERIAL ARAMAIC NUMBER TEN THOUSAND;nt=Nu;nv=10000;SB=XX;WB=XX;-XIDC;-XIDS
+
+block;10860..1087F;age=7.0;Alpha;bc=R;blk=Palmyrene;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Palm;WB=LE;XIDC;XIDS
# 10860..1087F Palmyrene
# Letters
cp;10860;na=PALMYRENE LETTER ALEPH
@@ -23098,18 +23115,18 @@ cp;10874;na=PALMYRENE LETTER RESH
cp;10875;na=PALMYRENE LETTER SHIN
cp;10876;na=PALMYRENE LETTER TAW
# Symbols
-cp;10877;-Alpha;gc=So;-IDC;-IDS;na=PALMYRENE LEFT-POINTING FLEURON;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10878;-Alpha;gc=So;-IDC;-IDS;na=PALMYRENE RIGHT-POINTING FLEURON;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10877;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE LEFT-POINTING FLEURON;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10878;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE RIGHT-POINTING FLEURON;SB=XX;WB=XX;-XIDC;-XIDS
# Numbers
-cp;10879;-Alpha;gc=No;-IDC;-IDS;na=PALMYRENE NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1087A;-Alpha;gc=No;-IDC;-IDS;na=PALMYRENE NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1087B;-Alpha;gc=No;-IDC;-IDS;na=PALMYRENE NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1087C;-Alpha;gc=No;-IDC;-IDS;na=PALMYRENE NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1087D;-Alpha;gc=No;-IDC;-IDS;na=PALMYRENE NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1087E;-Alpha;gc=No;-IDC;-IDS;na=PALMYRENE NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1087F;-Alpha;gc=No;-IDC;-IDS;na=PALMYRENE NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-
-block;10880..108AF;age=7.0;Alpha;bc=R;blk=Nabataean;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Nbat;WB=LE;XIDC;XIDS
+cp;10879;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1087A;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1087B;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1087C;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1087D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1087E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1087F;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PALMYRENE NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+
+block;10880..108AF;age=7.0;Alpha;bc=R;blk=Nabataean;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Nbat;WB=LE;XIDC;XIDS
# 10880..108AF Nabataean
# Letters
cp;10880;na=NABATAEAN LETTER FINAL ALEPH
@@ -23145,20 +23162,20 @@ cp;1089D;na=NABATAEAN LETTER SHIN
cp;1089E;na=NABATAEAN LETTER TAW
unassigned;1089F..108A6;bc=R
# Numbers
-cp;108A7;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108A8;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108A9;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108AA;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108AB;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN CRUCIFORM NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108AC;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108AD;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108AE;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108AF;-Alpha;gc=No;-IDC;-IDS;na=NABATAEAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108A7;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108A8;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108A9;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108AA;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108AB;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN CRUCIFORM NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108AC;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108AD;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108AE;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108AF;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=NABATAEAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
# No block
unassigned;108B0..108DF;bc=R
-block;108E0..108FF;age=8.0;Alpha;bc=R;blk=Hatran;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Hatr;WB=LE;XIDC;XIDS
+block;108E0..108FF;age=8.0;Alpha;bc=R;blk=Hatran;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Hatr;WB=LE;XIDC;XIDS
# 108E0..108FF Hatran
# Letters
cp;108E0;na=HATRAN LETTER ALEPH
@@ -23185,13 +23202,13 @@ cp;108F4;na=HATRAN LETTER SHIN
cp;108F5;na=HATRAN LETTER TAW
unassigned;108F6..108FA;bc=R
# Numbers
-cp;108FB;-Alpha;gc=No;-IDC;-IDS;na=HATRAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108FC;-Alpha;gc=No;-IDC;-IDS;na=HATRAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108FD;-Alpha;gc=No;-IDC;-IDS;na=HATRAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108FE;-Alpha;gc=No;-IDC;-IDS;na=HATRAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;108FF;-Alpha;gc=No;-IDC;-IDS;na=HATRAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108FB;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=HATRAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108FC;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=HATRAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108FD;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=HATRAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108FE;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=HATRAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;108FF;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=HATRAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-block;10900..1091F;age=5.0;Alpha;bc=R;blk=Phoenician;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Phnx;WB=LE;XIDC;XIDS
+block;10900..1091F;age=5.0;Alpha;bc=R;blk=Phoenician;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Phnx;WB=LE;XIDC;XIDS
# 10900..1091F Phoenician
# Letters
cp;10900;na=PHOENICIAN LETTER ALF
@@ -23217,17 +23234,17 @@ cp;10913;na=PHOENICIAN LETTER ROSH
cp;10914;na=PHOENICIAN LETTER SHIN
cp;10915;na=PHOENICIAN LETTER TAU
# Numbers
-cp;10916;-Alpha;gc=No;-IDC;-IDS;na=PHOENICIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10917;-Alpha;gc=No;-IDC;-IDS;na=PHOENICIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10918;-Alpha;gc=No;-IDC;-IDS;na=PHOENICIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10919;-Alpha;gc=No;-IDC;-IDS;na=PHOENICIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1091A;age=5.2;-Alpha;gc=No;-IDC;-IDS;na=PHOENICIAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1091B;age=5.2;-Alpha;gc=No;-IDC;-IDS;na=PHOENICIAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10916;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PHOENICIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10917;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PHOENICIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10918;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PHOENICIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10919;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PHOENICIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1091A;age=5.2;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PHOENICIAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1091B;age=5.2;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PHOENICIAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1091C..1091E;bc=R
# Punctuation
-cp;1091F;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=PHOENICIAN WORD SEPARATOR;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1091F;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=PHOENICIAN WORD SEPARATOR;SB=XX;Term;WB=XX;-XIDC;-XIDS
-block;10920..1093F;age=5.1;Alpha;bc=R;blk=Lydian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Lydi;WB=LE;XIDC;XIDS
+block;10920..1093F;age=5.1;Alpha;bc=R;blk=Lydian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Lydi;WB=LE;XIDC;XIDS
# 10920..1093F Lydian
# Letters
cp;10920;na=LYDIAN LETTER A
@@ -23258,12 +23275,12 @@ cp;10938;na=LYDIAN LETTER NN
cp;10939;na=LYDIAN LETTER C
unassigned;1093A..1093E;bc=R
# Punctuation
-cp;1093F;-Alpha;gc=Po;-IDC;-IDS;na=LYDIAN TRIANGULAR MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1093F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=LYDIAN TRIANGULAR MARK;SB=XX;WB=XX;-XIDC;-XIDS
# No block
unassigned;10940..1097F;bc=R
-block;10980..1099F;age=6.1;Alpha;bc=R;blk=Meroitic_Hieroglyphs;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Mero;vo=U;WB=LE;XIDC;XIDS
+block;10980..1099F;age=6.1;Alpha;bc=R;blk=Meroitic_Hieroglyphs;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Mero;vo=U;WB=LE;XIDC;XIDS
# 10980..1099F Meroitic Hieroglyphs
# Vowel letters
cp;10980;na=MEROITIC HIEROGLYPHIC LETTER A
@@ -23301,41 +23318,41 @@ cp;1099D;na=MEROITIC HIEROGLYPHIC LETTER DA
cp;1099E;na=MEROITIC HIEROGLYPHIC SYMBOL VIDJ
cp;1099F;na=MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2
-block;109A0..109FF;age=8.0;bc=R;blk=Meroitic_Cursive;gc=No;Gr_Base;lb=AL;nt=Nu;sc=Merc
+block;109A0..109FF;age=8.0;bc=R;blk=Meroitic_Cursive;gc=No;Gr_Base;Identifier_Type=Exclusion Not_XID;lb=AL;nt=Nu;sc=Merc
# 109A0..109FF Meroitic Cursive
# Vowel letters
-cp;109A0;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER A;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109A1;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER E;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109A2;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER I;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109A3;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER O;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A0;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER A;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A1;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER E;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A2;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER I;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A3;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER O;nt=None;SB=LE;WB=LE;XIDC;XIDS
# Consonant letters
-cp;109A4;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER YA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109A5;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER WA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109A6;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER BA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109A7;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER PA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109A8;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER MA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109A9;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER NA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109AA;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER NE;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109AB;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER RA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109AC;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER LA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109AD;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER KHA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109AE;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER HHA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109AF;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER SA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109B0;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER ARCHAIC SA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109B1;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER SE;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109B2;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER KA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109B3;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER QA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109B4;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER TA;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109B5;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER TE;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109B6;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER TO;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109B7;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LETTER DA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A4;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER YA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A5;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER WA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A6;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER BA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A7;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER PA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A8;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER MA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109A9;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER NA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109AA;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER NE;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109AB;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER RA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109AC;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER LA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109AD;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER KHA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109AE;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER HHA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109AF;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER SA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109B0;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER ARCHAIC SA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109B1;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER SE;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109B2;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER KA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109B3;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER QA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109B4;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER TA;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109B5;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER TE;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109B6;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER TO;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109B7;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LETTER DA;nt=None;SB=LE;WB=LE;XIDC;XIDS
unassigned;109B8..109BB;bc=R
# Fractions
cp;109BC;na=MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS;nv=11/12
cp;109BD;na=MEROITIC CURSIVE FRACTION ONE HALF;nv=1/2
# Logograms
-cp;109BE;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LOGOGRAM RMT;nt=None;SB=LE;WB=LE;XIDC;XIDS
-cp;109BF;age=6.1;Alpha;gc=Lo;IDC;IDS;na=MEROITIC CURSIVE LOGOGRAM IMN;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109BE;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LOGOGRAM RMT;nt=None;SB=LE;WB=LE;XIDC;XIDS
+cp;109BF;age=6.1;Alpha;gc=Lo;IDC;Identifier_Type=Exclusion;IDS;na=MEROITIC CURSIVE LOGOGRAM IMN;nt=None;SB=LE;WB=LE;XIDC;XIDS
# Digits
cp;109C0;na=MEROITIC CURSIVE NUMBER ONE;nv=1
cp;109C1;na=MEROITIC CURSIVE NUMBER TWO;nv=2
@@ -23407,7 +23424,7 @@ cp;109FD;na=MEROITIC CURSIVE FRACTION EIGHT TWELFTHS;nv=2/3
cp;109FE;na=MEROITIC CURSIVE FRACTION NINE TWELFTHS;nv=3/4
cp;109FF;na=MEROITIC CURSIVE FRACTION TEN TWELFTHS;nv=5/6
-block;10A00..10A5F;age=4.1;Alpha;bc=R;blk=Kharoshthi;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Khar;WB=LE;XIDC
+block;10A00..10A5F;age=4.1;Alpha;bc=R;blk=Kharoshthi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;InSC=Consonant;lb=AL;SB=LE;sc=Khar;WB=LE;XIDC
# 10A00..10A5F Kharoshthi
# Vowels
cp;10A00;IDS;na=KHAROSHTHI LETTER A;XIDS
@@ -23472,30 +23489,30 @@ unassigned;10A3B..10A3E;bc=R
# Virama
cp;10A3F;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=KHAROSHTHI VIRAMA;SB=EX;WB=Extend
# Digits
-cp;10A40;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI DIGIT ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDC
-cp;10A41;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI DIGIT TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDC
-cp;10A42;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI DIGIT THREE;nt=Di;nv=3;SB=XX;WB=XX;-XIDC
-cp;10A43;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI DIGIT FOUR;nt=Di;nv=4;SB=XX;WB=XX;-XIDC
+cp;10A40;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI DIGIT ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDC
+cp;10A41;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI DIGIT TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDC
+cp;10A42;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI DIGIT THREE;nt=Di;nv=3;SB=XX;WB=XX;-XIDC
+cp;10A43;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI DIGIT FOUR;nt=Di;nv=4;SB=XX;WB=XX;-XIDC
# Numbers and fractions
-cp;10A44;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
-cp;10A45;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
-cp;10A46;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
-cp;10A47;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC
-cp;10A48;age=11.0;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC
+cp;10A44;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
+cp;10A45;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
+cp;10A46;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
+cp;10A47;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC
+cp;10A48;age=11.0;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=KHAROSHTHI FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC
unassigned;10A49..10A4F;bc=R
# Punctuation
-cp;10A50;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION DOT;SB=XX;WB=XX;-XIDC
-cp;10A51;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION SMALL CIRCLE;SB=XX;WB=XX;-XIDC
-cp;10A52;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION CIRCLE;SB=XX;WB=XX;-XIDC
-cp;10A53;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION CRESCENT BAR;SB=XX;WB=XX;-XIDC
-cp;10A54;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION MANGALAM;SB=XX;WB=XX;-XIDC
-cp;10A55;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION LOTUS;SB=XX;WB=XX;-XIDC
-cp;10A56;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;10A57;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;10A58;-Alpha;gc=Po;-IDC;InSC=Other;na=KHAROSHTHI PUNCTUATION LINES;SB=XX;WB=XX;-XIDC
+cp;10A50;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION DOT;SB=XX;WB=XX;-XIDC
+cp;10A51;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION SMALL CIRCLE;SB=XX;WB=XX;-XIDC
+cp;10A52;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION CIRCLE;SB=XX;WB=XX;-XIDC
+cp;10A53;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION CRESCENT BAR;SB=XX;WB=XX;-XIDC
+cp;10A54;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION MANGALAM;SB=XX;WB=XX;-XIDC
+cp;10A55;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION LOTUS;SB=XX;WB=XX;-XIDC
+cp;10A56;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;10A57;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KHAROSHTHI PUNCTUATION DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;10A58;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;na=KHAROSHTHI PUNCTUATION LINES;SB=XX;WB=XX;-XIDC
unassigned;10A59..10A5F;bc=R
-block;10A60..10A7F;age=5.2;Alpha;bc=R;blk=Old_South_Arabian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Sarb;WB=LE;XIDC;XIDS
+block;10A60..10A7F;age=5.2;Alpha;bc=R;blk=Old_South_Arabian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Sarb;WB=LE;XIDC;XIDS
# 10A60..10A7F Old South Arabian
# Letters
cp;10A60;na=OLD SOUTH ARABIAN LETTER HE
@@ -23528,11 +23545,11 @@ cp;10A7A;na=OLD SOUTH ARABIAN LETTER YODH
cp;10A7B;na=OLD SOUTH ARABIAN LETTER THAW
cp;10A7C;na=OLD SOUTH ARABIAN LETTER THETH
# Numbers
-cp;10A7D;-Alpha;gc=No;-IDC;-IDS;na=OLD SOUTH ARABIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10A7E;-Alpha;gc=No;-IDC;-IDS;na=OLD SOUTH ARABIAN NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10A7F;-Alpha;gc=Po;-IDC;-IDS;na=OLD SOUTH ARABIAN NUMERIC INDICATOR;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10A7D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOUTH ARABIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10A7E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOUTH ARABIAN NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10A7F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOUTH ARABIAN NUMERIC INDICATOR;SB=XX;WB=XX;-XIDC;-XIDS
-block;10A80..10A9F;age=7.0;Alpha;bc=R;blk=Old_North_Arabian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Narb;WB=LE;XIDC;XIDS
+block;10A80..10A9F;age=7.0;Alpha;bc=R;blk=Old_North_Arabian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Narb;WB=LE;XIDC;XIDS
# 10A80..10A9F Old North Arabian
# Letters
cp;10A80;na=OLD NORTH ARABIAN LETTER HEH
@@ -23565,14 +23582,14 @@ cp;10A9A;na=OLD NORTH ARABIAN LETTER YEH
cp;10A9B;na=OLD NORTH ARABIAN LETTER THEH
cp;10A9C;na=OLD NORTH ARABIAN LETTER ZAH
# Numbers
-cp;10A9D;-Alpha;gc=No;-IDC;-IDS;na=OLD NORTH ARABIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10A9E;-Alpha;gc=No;-IDC;-IDS;na=OLD NORTH ARABIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10A9F;-Alpha;gc=No;-IDC;-IDS;na=OLD NORTH ARABIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10A9D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD NORTH ARABIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10A9E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD NORTH ARABIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10A9F;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD NORTH ARABIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
# No block
unassigned;10AA0..10ABF;bc=R
-block;10AC0..10AFF;age=7.0;Alpha;bc=R;blk=Manichaean;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Mani;WB=LE;XIDC;XIDS
+block;10AC0..10AFF;age=7.0;Alpha;bc=R;blk=Manichaean;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;jt=D;lb=AL;SB=LE;sc=Mani;WB=LE;XIDC;XIDS
# 10AC0..10AFF Manichaean
# Letters
cp;10AC0;jg=Manichaean_Aleph;na=MANICHAEAN LETTER ALEPH
@@ -23584,7 +23601,7 @@ cp;10AC5;jg=Manichaean_Daleth;jt=R;na=MANICHAEAN LETTER DALETH
cp;10AC6;jt=U;na=MANICHAEAN LETTER HE
cp;10AC7;jg=Manichaean_Waw;jt=R;na=MANICHAEAN LETTER WAW
# Logogram
-cp;10AC8;-Alpha;gc=So;-IDC;-IDS;jt=U;na=MANICHAEAN SIGN UD;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10AC8;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=MANICHAEAN SIGN UD;SB=XX;WB=XX;-XIDC;-XIDS
# Letters
cp;10AC9;jg=Manichaean_Zayin;jt=R;na=MANICHAEAN LETTER ZAYIN
cp;10ACA;jg=Manichaean_Zayin;jt=R;na=MANICHAEAN LETTER ZHAYIN
@@ -23619,22 +23636,22 @@ cp;10AE5;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Ext
cp;10AE6;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MANICHAEAN ABBREVIATION MARK BELOW;SB=EX;WB=Extend;-XIDS
unassigned;10AE7..10AEA;bc=R
# Numbers
-cp;10AEB;-Alpha;gc=No;-IDC;-IDS;jg=Manichaean_One;na=MANICHAEAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10AEC;-Alpha;gc=No;-IDC;-IDS;jg=Manichaean_Five;na=MANICHAEAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10AED;-Alpha;gc=No;-IDC;-IDS;jg=Manichaean_Ten;na=MANICHAEAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10AEE;-Alpha;gc=No;-IDC;-IDS;jg=Manichaean_Twenty;na=MANICHAEAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10AEF;-Alpha;gc=No;-IDC;-IDS;jg=Manichaean_Hundred;jt=R;na=MANICHAEAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10AEB;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jg=Manichaean_One;na=MANICHAEAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10AEC;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jg=Manichaean_Five;na=MANICHAEAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10AED;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jg=Manichaean_Ten;na=MANICHAEAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10AEE;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jg=Manichaean_Twenty;na=MANICHAEAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10AEF;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jg=Manichaean_Hundred;jt=R;na=MANICHAEAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;10AF0;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION STAR;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10AF1;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION FLEURON;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10AF2;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT;SB=XX;scx=Mani Ougr;Term;WB=XX;-XIDC;-XIDS
-cp;10AF3;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION DOT WITHIN DOT;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10AF4;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION DOT;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10AF5;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION TWO DOTS;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10AF6;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=IN;na=MANICHAEAN PUNCTUATION LINE FILLER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10AF0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION STAR;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10AF1;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION FLEURON;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10AF2;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT;SB=XX;scx=Mani Ougr;Term;WB=XX;-XIDC;-XIDS
+cp;10AF3;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION DOT WITHIN DOT;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10AF4;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION DOT;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10AF5;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=BA;na=MANICHAEAN PUNCTUATION TWO DOTS;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10AF6;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;lb=IN;na=MANICHAEAN PUNCTUATION LINE FILLER;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;10AF7..10AFF;bc=R
-block;10B00..10B3F;age=5.2;Alpha;bc=R;blk=Avestan;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Avst;WB=LE;XIDC;XIDS
+block;10B00..10B3F;age=5.2;Alpha;bc=R;blk=Avestan;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Avst;WB=LE;XIDC;XIDS
# 10B00..10B3F Avestan
# Vowels
cp;10B00;na=AVESTAN LETTER A
@@ -23694,15 +23711,15 @@ cp;10B34;na=AVESTAN LETTER SSHE
cp;10B35;na=AVESTAN LETTER HE
unassigned;10B36..10B38;bc=R
# Punctuation
-cp;10B39;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=AVESTAN ABBREVIATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B3A;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=TINY TWO DOTS OVER ONE DOT PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10B3B;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=SMALL TWO DOTS OVER ONE DOT PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10B3C;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=LARGE TWO DOTS OVER ONE DOT PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10B3D;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=LARGE ONE DOT OVER TWO DOTS PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10B3E;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=LARGE TWO RINGS OVER ONE RING PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10B3F;-Alpha;bc=ON;gc=Po;-IDC;-IDS;lb=BA;na=LARGE ONE RING OVER TWO RINGS PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
-
-block;10B40..10B5F;age=5.2;Alpha;bc=R;blk=Inscriptional_Parthian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Prti;WB=LE;XIDC;XIDS
+cp;10B39;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=AVESTAN ABBREVIATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B3A;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=TINY TWO DOTS OVER ONE DOT PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B3B;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=SMALL TWO DOTS OVER ONE DOT PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B3C;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=LARGE TWO DOTS OVER ONE DOT PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B3D;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=LARGE ONE DOT OVER TWO DOTS PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B3E;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=LARGE TWO RINGS OVER ONE RING PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B3F;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=LARGE ONE RING OVER TWO RINGS PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
+
+block;10B40..10B5F;age=5.2;Alpha;bc=R;blk=Inscriptional_Parthian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Prti;WB=LE;XIDC;XIDS
# 10B40..10B5F Inscriptional Parthian
# Letters
cp;10B40;na=INSCRIPTIONAL PARTHIAN LETTER ALEPH
@@ -23729,16 +23746,16 @@ cp;10B54;na=INSCRIPTIONAL PARTHIAN LETTER SHIN
cp;10B55;na=INSCRIPTIONAL PARTHIAN LETTER TAW
unassigned;10B56..10B57;bc=R
# Numbers
-cp;10B58;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B59;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B5A;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B5B;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B5C;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B5D;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B5E;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B5F;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
-
-block;10B60..10B7F;age=5.2;Alpha;bc=R;blk=Inscriptional_Pahlavi;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Phli;WB=LE;XIDC;XIDS
+cp;10B58;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B59;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B5A;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B5B;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B5C;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B5D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B5E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B5F;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
+
+block;10B60..10B7F;age=5.2;Alpha;bc=R;blk=Inscriptional_Pahlavi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Phli;WB=LE;XIDC;XIDS
# 10B60..10B7F Inscriptional Pahlavi
# Letters
cp;10B60;na=INSCRIPTIONAL PAHLAVI LETTER ALEPH
@@ -23762,16 +23779,16 @@ cp;10B71;na=INSCRIPTIONAL PAHLAVI LETTER SHIN
cp;10B72;na=INSCRIPTIONAL PAHLAVI LETTER TAW
unassigned;10B73..10B77;bc=R
# Numbers
-cp;10B78;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B79;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B7A;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B7B;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B7C;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B7D;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B7E;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10B7F;-Alpha;gc=No;-IDC;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
-
-block;10B80..10BAF;age=7.0;Alpha;bc=R;blk=Psalter_Pahlavi;gc=Lo;Gr_Base;IDC;IDS;jt=R;lb=AL;SB=LE;sc=Phlp;WB=LE;XIDC;XIDS
+cp;10B78;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B79;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B7A;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B7B;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B7C;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B7D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B7E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10B7F;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
+
+block;10B80..10BAF;age=7.0;Alpha;bc=R;blk=Psalter_Pahlavi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;jt=R;lb=AL;SB=LE;sc=Phlp;WB=LE;XIDC;XIDS
# 10B80..10BAF Psalter Pahlavi
# Letters
cp;10B80;jt=D;na=PSALTER PAHLAVI LETTER ALEPH
@@ -23794,24 +23811,24 @@ cp;10B90;jt=D;na=PSALTER PAHLAVI LETTER SHIN
cp;10B91;na=PSALTER PAHLAVI LETTER TAW
unassigned;10B92..10B98;bc=R
# Punctuation
-cp;10B99;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=PSALTER PAHLAVI SECTION MARK;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10B9A;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=PSALTER PAHLAVI TURNED SECTION MARK;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10B9B;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=PSALTER PAHLAVI FOUR DOTS WITH CROSS;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;10B9C;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=PSALTER PAHLAVI FOUR DOTS WITH DOT;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B99;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=PSALTER PAHLAVI SECTION MARK;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B9A;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=PSALTER PAHLAVI TURNED SECTION MARK;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B9B;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=PSALTER PAHLAVI FOUR DOTS WITH CROSS;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;10B9C;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=PSALTER PAHLAVI FOUR DOTS WITH DOT;SB=XX;Term;WB=XX;-XIDC;-XIDS
unassigned;10B9D..10BA8;bc=R
# Numbers
-cp;10BA9;-Alpha;gc=No;-IDC;-IDS;na=PSALTER PAHLAVI NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10BAA;-Alpha;gc=No;-IDC;-IDS;na=PSALTER PAHLAVI NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10BAB;-Alpha;gc=No;-IDC;-IDS;na=PSALTER PAHLAVI NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10BAC;-Alpha;gc=No;-IDC;-IDS;na=PSALTER PAHLAVI NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10BAD;-Alpha;gc=No;-IDC;-IDS;jt=D;na=PSALTER PAHLAVI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10BAE;-Alpha;gc=No;-IDC;-IDS;jt=D;na=PSALTER PAHLAVI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10BAF;-Alpha;gc=No;-IDC;-IDS;jt=U;na=PSALTER PAHLAVI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10BA9;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PSALTER PAHLAVI NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10BAA;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PSALTER PAHLAVI NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10BAB;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PSALTER PAHLAVI NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10BAC;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PSALTER PAHLAVI NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10BAD;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=D;na=PSALTER PAHLAVI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10BAE;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=D;na=PSALTER PAHLAVI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10BAF;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=PSALTER PAHLAVI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
# No block
unassigned;10BB0..10BFF;bc=R
-block;10C00..10C4F;age=5.2;Alpha;bc=R;blk=Old_Turkic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Orkh;WB=LE;XIDC;XIDS
+block;10C00..10C4F;age=5.2;Alpha;bc=R;blk=Old_Turkic;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Orkh;WB=LE;XIDC;XIDS
# 10C00..10C4F Old Turkic
# Vowels
cp;10C00;na=OLD TURKIC LETTER ORKHON A
@@ -23893,7 +23910,7 @@ unassigned;10C49..10C4F;bc=R
# No block
unassigned;10C50..10C7F;bc=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
+block;10C80..10CFF;age=8.0;Alpha;bc=R;blk=Old_Hungarian;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LO;sc=Hung;WB=LE;XIDC;XIDS
# 10C80..10CFF Old Hungarian
# Uppercase letters
cp;10C80;cf=10CC0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER A;NFKC_CF=10CC0;NFKC_SCF=10CC0;SB=UP;scf=10CC0;slc=10CC0;Upper
@@ -24002,14 +24019,14 @@ cp;10CF1;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN;stc=10CB1;s
cp;10CF2;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER US;stc=10CB2;suc=10CB2
unassigned;10CF3..10CF9;bc=R
# Numbers
-cp;10CFA;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=OLD HUNGARIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10CFB;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=OLD HUNGARIAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10CFC;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=OLD HUNGARIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10CFD;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=OLD HUNGARIAN NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10CFE;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=OLD HUNGARIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10CFF;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=OLD HUNGARIAN NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
-
-block;10D00..10D3F;age=11.0;Alpha;bc=AL;blk=Hanifi_Rohingya;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Rohg;WB=LE;XIDC;XIDS
+cp;10CFA;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD HUNGARIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10CFB;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD HUNGARIAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10CFC;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD HUNGARIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10CFD;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD HUNGARIAN NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10CFE;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD HUNGARIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10CFF;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD HUNGARIAN NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC;-XIDS
+
+block;10D00..10D3F;age=11.0;Alpha;bc=AL;blk=Hanifi_Rohingya;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;jt=D;lb=AL;SB=LE;sc=Rohg;WB=LE;XIDC;XIDS
# 10D00..10D3F Hanifi Rohingya
# Letters
cp;10D00;jt=L;na=HANIFI ROHINGYA LETTER A
@@ -24075,7 +24092,7 @@ unassigned;10D3A..10D3F;bc=AL
# No block
unassigned;10D40..10E5F;bc=R
-block;10E60..10E7F;age=5.2;bc=AN;blk=Rumi;gc=No;Gr_Base;lb=AL;nt=Nu;sc=Arab
+block;10E60..10E7F;age=5.2;bc=AN;blk=Rumi;gc=No;Gr_Base;Identifier_Type=Not_XID;lb=AL;nt=Nu;sc=Arab
# 10E60..10E7F Rumi Numeral Symbols
# Digits
cp;10E60;na=RUMI DIGIT ONE;nt=Di;nv=1
@@ -24113,7 +24130,7 @@ cp;10E7D;na=RUMI FRACTION ONE THIRD;nv=1/3
cp;10E7E;na=RUMI FRACTION TWO THIRDS;nv=2/3
unassigned;10E7F;bc=R
-block;10E80..10EBF;age=13.0;Alpha;bc=R;blk=Yezidi;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Yezi;WB=LE;XIDC;XIDS
+block;10E80..10EBF;age=13.0;Alpha;bc=R;blk=Yezidi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Yezi;WB=LE;XIDC;XIDS
# 10E80..10EBF Yezidi
# Letters
cp;10E80;na=YEZIDI LETTER ELIF
@@ -24163,14 +24180,14 @@ unassigned;10EAA;bc=R
cp;10EAB;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=YEZIDI COMBINING HAMZA MARK;SB=EX;WB=Extend;-XIDS
cp;10EAC;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=YEZIDI COMBINING MADDA MARK;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;10EAD;-Alpha;Dash;gc=Pd;-IDC;-IDS;lb=BA;na=YEZIDI HYPHENATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10EAD;-Alpha;Dash;gc=Pd;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=YEZIDI HYPHENATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;10EAE..10EAF;bc=R
# Historical letters with diacritics
cp;10EB0;na=YEZIDI LETTER LAM WITH DOT ABOVE
cp;10EB1;na=YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
unassigned;10EB2..10EBF;bc=R
-block;10EC0..10EFF;age=15.0;bc=NSM;blk=Arabic_Ext_C;ccc=220;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC
+block;10EC0..10EFF;age=15.0;bc=NSM;blk=Arabic_Ext_C;ccc=220;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Uncommon_Use;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC
# 10EC0..10EFF Arabic Extended-C
unassigned;10EC0..10EFC;bc=AL
# Quranic marks used in Turkey
@@ -24178,7 +24195,7 @@ cp;10EFD;na=ARABIC SMALL LOW WORD SAKTA
cp;10EFE;na=ARABIC SMALL LOW WORD QASR
cp;10EFF;na=ARABIC SMALL LOW WORD MADDA
-block;10F00..10F2F;age=11.0;Alpha;bc=R;blk=Old_Sogdian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Sogo;WB=LE;XIDC;XIDS
+block;10F00..10F2F;age=11.0;Alpha;bc=R;blk=Old_Sogdian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Sogo;WB=LE;XIDC;XIDS
# 10F00..10F2F Old Sogdian
# Letters
cp;10F00;na=OLD SOGDIAN LETTER ALEPH
@@ -24211,21 +24228,21 @@ cp;10F1A;na=OLD SOGDIAN LETTER TAW
cp;10F1B;na=OLD SOGDIAN LETTER FINAL TAW
cp;10F1C;na=OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
# Numbers
-cp;10F1D;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F1E;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F1F;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F20;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F21;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F22;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F23;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F24;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F25;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10F26;-Alpha;gc=No;-IDC;-IDS;na=OLD SOGDIAN FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F1D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F1E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F1F;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F20;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F21;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F22;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F23;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F24;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F25;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10F26;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=OLD SOGDIAN FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
# Ligature
cp;10F27;na=OLD SOGDIAN LIGATURE AYIN-DALETH
unassigned;10F28..10F2F;bc=R
-block;10F30..10F6F;age=11.0;bc=AL;blk=Sogdian;gc=Lo;Gr_Base;IDC;jt=D;lb=AL;SB=LE;sc=Sogd;WB=LE;XIDC
+block;10F30..10F6F;age=11.0;bc=AL;blk=Sogdian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;jt=D;lb=AL;SB=LE;sc=Sogd;WB=LE;XIDC
# 10F30..10F6F Sogdian
# Letters
cp;10F30;Alpha;IDS;na=SOGDIAN LETTER ALEPH;XIDS
@@ -24264,19 +24281,19 @@ cp;10F4E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=
cp;10F4F;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING RESH BELOW;SB=EX;WB=Extend
cp;10F50;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING STROKE BELOW;SB=EX;WB=Extend
# Numbers
-cp;10F51;gc=No;-IDC;na=SOGDIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC
-cp;10F52;gc=No;-IDC;na=SOGDIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
-cp;10F53;gc=No;-IDC;na=SOGDIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
-cp;10F54;gc=No;-IDC;jt=R;na=SOGDIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
+cp;10F51;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;na=SOGDIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC
+cp;10F52;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;na=SOGDIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
+cp;10F53;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;na=SOGDIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
+cp;10F54;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;jt=R;na=SOGDIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
# Punctuation
-cp;10F55;gc=Po;-IDC;jt=U;na=SOGDIAN PUNCTUATION TWO VERTICAL BARS;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;10F56;gc=Po;-IDC;jt=U;na=SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;10F57;gc=Po;-IDC;jt=U;na=SOGDIAN PUNCTUATION CIRCLE WITH DOT;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;10F58;gc=Po;-IDC;jt=U;na=SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;10F59;gc=Po;-IDC;jt=U;na=SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;10F55;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;jt=U;na=SOGDIAN PUNCTUATION TWO VERTICAL BARS;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;10F56;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;jt=U;na=SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;10F57;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;jt=U;na=SOGDIAN PUNCTUATION CIRCLE WITH DOT;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;10F58;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;jt=U;na=SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;10F59;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;jt=U;na=SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;SB=ST;STerm;Term;WB=XX;-XIDC
unassigned;10F5A..10F6F;bc=AL
-block;10F70..10FAF;age=14.0;Alpha;bc=R;blk=Old_Uyghur;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Ougr;WB=LE;XIDC;XIDS
+block;10F70..10FAF;age=14.0;Alpha;bc=R;blk=Old_Uyghur;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;jt=D;lb=AL;SB=LE;sc=Ougr;WB=LE;XIDC;XIDS
# 10F70..10FAF Old Uyghur
# Letters
cp;10F70;na=OLD UYGHUR LETTER ALEPH
@@ -24303,13 +24320,13 @@ cp;10F83;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Ext
cp;10F84;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=OLD UYGHUR COMBINING TWO DOTS ABOVE;SB=EX;WB=Extend;-XIDS
cp;10F85;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=OLD UYGHUR COMBINING TWO DOTS BELOW;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;10F86;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION BAR;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;10F87;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION TWO BARS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;10F88;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION TWO DOTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;10F89;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION FOUR DOTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;10F86;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION BAR;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;10F87;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION TWO BARS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;10F88;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION TWO DOTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;10F89;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION FOUR DOTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;10F8A..10FAF;bc=R
-block;10FB0..10FDF;age=13.0;Alpha;bc=R;blk=Chorasmian;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Chrs;WB=LE;XIDC;XIDS
+block;10FB0..10FDF;age=13.0;Alpha;bc=R;blk=Chorasmian;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;jt=D;lb=AL;SB=LE;sc=Chrs;WB=LE;XIDC;XIDS
# 10FB0..10FDF Chorasmian
# Letters
cp;10FB0;na=CHORASMIAN LETTER ALEPH
@@ -24334,16 +24351,16 @@ cp;10FC2;jt=R;na=CHORASMIAN LETTER RESH
cp;10FC3;jt=R;na=CHORASMIAN LETTER SHIN
cp;10FC4;na=CHORASMIAN LETTER TAW
# Numbers
-cp;10FC5;-Alpha;gc=No;-IDC;-IDS;jt=U;na=CHORASMIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10FC6;-Alpha;gc=No;-IDC;-IDS;jt=U;na=CHORASMIAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10FC7;-Alpha;gc=No;-IDC;-IDS;jt=U;na=CHORASMIAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10FC8;-Alpha;gc=No;-IDC;-IDS;jt=U;na=CHORASMIAN NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10FC9;-Alpha;gc=No;-IDC;-IDS;jt=R;na=CHORASMIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10FCA;-Alpha;gc=No;-IDC;-IDS;na=CHORASMIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;10FCB;-Alpha;gc=No;-IDC;-IDS;jt=L;na=CHORASMIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10FC5;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=CHORASMIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10FC6;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=CHORASMIAN NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10FC7;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=CHORASMIAN NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10FC8;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=U;na=CHORASMIAN NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10FC9;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=R;na=CHORASMIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10FCA;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=CHORASMIAN NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;10FCB;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;jt=L;na=CHORASMIAN NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;10FCC..10FDF;bc=R
-block;10FE0..10FFF;age=12.0;Alpha;bc=R;blk=Elymaic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Elym;WB=LE;XIDC;XIDS
+block;10FE0..10FFF;age=12.0;Alpha;bc=R;blk=Elymaic;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Elym;WB=LE;XIDC;XIDS
# 10FE0..10FFF Elymaic
# Letters
cp;10FE0;na=ELYMAIC LETTER ALEPH
@@ -24372,7 +24389,7 @@ cp;10FF5;na=ELYMAIC LETTER TAW
cp;10FF6;na=ELYMAIC LIGATURE ZAYIN-YODH
unassigned;10FF7..10FFF;bc=R
-block;11000..1107F;age=6.0;Alpha;blk=Brahmi;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AK;SB=LE;sc=Brah;WB=LE;XIDC
+block;11000..1107F;age=6.0;Alpha;blk=Brahmi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;InSC=Consonant;lb=AK;SB=LE;sc=Brah;WB=LE;XIDC
# 11000..1107F Brahmi
# Various signs
cp;11000;gc=Mc;GCB=SM;InPC=Right;InSC=Bindu;lb=CM;na=BRAHMI SIGN CANDRABINDU;SB=EX;WB=Extend
@@ -24451,35 +24468,35 @@ cp;11045;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt
# Virama
cp;11046;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Top;InSC=Virama;jt=T;lb=VI;na=BRAHMI VIRAMA;SB=EX;WB=Extend
# Punctuation
-cp;11047;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BRAHMI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;11048;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BRAHMI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;11049;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION DOT;SB=XX;Term;WB=XX;-XIDC
-cp;1104A;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION DOUBLE DOT;SB=XX;Term;WB=XX;-XIDC
-cp;1104B;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION LINE;SB=XX;Term;WB=XX;-XIDC
-cp;1104C;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION CRESCENT BAR;SB=XX;Term;WB=XX;-XIDC
-cp;1104D;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION LOTUS;SB=XX;Term;WB=XX;-XIDC
+cp;11047;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=BRAHMI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;11048;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=BRAHMI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;11049;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION DOT;SB=XX;Term;WB=XX;-XIDC
+cp;1104A;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION DOUBLE DOT;SB=XX;Term;WB=XX;-XIDC
+cp;1104B;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION LINE;SB=XX;Term;WB=XX;-XIDC
+cp;1104C;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION CRESCENT BAR;SB=XX;Term;WB=XX;-XIDC
+cp;1104D;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION LOTUS;SB=XX;Term;WB=XX;-XIDC
unassigned;1104E..11051
# Numbers
-cp;11052;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDC
-cp;11053;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDC
-cp;11054;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER THREE;nt=Di;nv=3;SB=XX;WB=XX;-XIDC
-cp;11055;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FOUR;nt=Di;nv=4;SB=XX;WB=XX;-XIDC
-cp;11056;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FIVE;nt=Di;nv=5;SB=XX;WB=XX;-XIDC
-cp;11057;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SIX;nt=Di;nv=6;SB=XX;WB=XX;-XIDC
-cp;11058;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SEVEN;nt=Di;nv=7;SB=XX;WB=XX;-XIDC
-cp;11059;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER EIGHT;nt=Di;nv=8;SB=XX;WB=XX;-XIDC
-cp;1105A;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER NINE;nt=Di;nv=9;SB=XX;WB=XX;-XIDC
-cp;1105B;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
-cp;1105C;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
-cp;1105D;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC
-cp;1105E;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC
-cp;1105F;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC
-cp;11060;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC
-cp;11061;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC
-cp;11062;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC
-cp;11063;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC
-cp;11064;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
-cp;11065;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC
+cp;11052;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDC
+cp;11053;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDC
+cp;11054;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER THREE;nt=Di;nv=3;SB=XX;WB=XX;-XIDC
+cp;11055;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FOUR;nt=Di;nv=4;SB=XX;WB=XX;-XIDC
+cp;11056;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FIVE;nt=Di;nv=5;SB=XX;WB=XX;-XIDC
+cp;11057;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SIX;nt=Di;nv=6;SB=XX;WB=XX;-XIDC
+cp;11058;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SEVEN;nt=Di;nv=7;SB=XX;WB=XX;-XIDC
+cp;11059;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER EIGHT;nt=Di;nv=8;SB=XX;WB=XX;-XIDC
+cp;1105A;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER NINE;nt=Di;nv=9;SB=XX;WB=XX;-XIDC
+cp;1105B;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
+cp;1105C;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
+cp;1105D;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC
+cp;1105E;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC
+cp;1105F;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC
+cp;11060;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC
+cp;11061;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC
+cp;11062;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC
+cp;11063;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC
+cp;11064;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
+cp;11065;-Alpha;bc=ON;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC
# Digits
cp;11066;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
cp;11067;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
@@ -24505,7 +24522,7 @@ unassigned;11076..1107E
# Number joiner
cp;1107F;age=7.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Number_Joiner;jt=T;lb=GL;na=BRAHMI NUMBER JOINER;SB=EX;WB=Extend
-block;11080..110CF;age=5.2;Alpha;blk=Kaithi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Kthi;WB=LE;XIDC;XIDS
+block;11080..110CF;age=5.2;Alpha;blk=Kaithi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Kthi;WB=LE;XIDC;XIDS
# 11080..110CF Kaithi
# Various signs
cp;11080;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=KAITHI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
@@ -24572,22 +24589,22 @@ cp;110B8;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=KAITHI VOWEL
cp;110B9;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=KAITHI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Various signs
cp;110BA;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KAITHI SIGN NUKTA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
-cp;110BB;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=KAITHI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;110BC;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=KAITHI ENUMERATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;110BD;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;InSC=Other;lb=NU;na=KAITHI NUMBER SIGN;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;110BB;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=KAITHI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;110BC;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=KAITHI ENUMERATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;110BD;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=NU;na=KAITHI NUMBER SIGN;PCM;SB=NU;WB=NU;-XIDC;-XIDS
# Punctuation
-cp;110BE;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAITHI SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;110BF;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAITHI DOUBLE SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;110C0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAITHI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;110C1;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAITHI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;110BE;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=KAITHI SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;110BF;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=KAITHI DOUBLE SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;110C0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=KAITHI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;110C1;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=KAITHI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Vowel sign
cp;110C2;age=14.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=KAITHI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
unassigned;110C3..110CC
# Sign
-cp;110CD;age=11.0;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;InSC=Other;lb=NU;na=KAITHI NUMBER SIGN ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;110CD;age=11.0;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=NU;na=KAITHI NUMBER SIGN ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
unassigned;110CE..110CF
-block;110D0..110FF;age=6.1;Alpha;blk=Sora_Sompeng;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Sora;WB=LE;XIDC;XIDS
+block;110D0..110FF;age=6.1;Alpha;blk=Sora_Sompeng;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Sora;WB=LE;XIDC;XIDS
# 110D0..110FF Sora Sompeng
# Consonants
cp;110D0;na=SORA SOMPENG LETTER SAH
@@ -24631,7 +24648,7 @@ cp;110F8;-Alpha;gc=Nd;-IDS;lb=NU;na=SORA SOMPENG DIGIT EIGHT;nt=De;nv=8;SB=NU;WB
cp;110F9;-Alpha;gc=Nd;-IDS;lb=NU;na=SORA SOMPENG DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;110FA..110FF
-block;11100..1114F;age=6.1;Alpha;blk=Chakma;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Cakm;WB=LE;XIDC
+block;11100..1114F;age=6.1;Alpha;blk=Chakma;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;InSC=Consonant;lb=AL;SB=LE;sc=Cakm;WB=LE;XIDC
# 11100..1114F Chakma
# Various signs
cp;11100;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=CHAKMA SIGN CANDRABINDU;SB=EX;WB=Extend
@@ -24704,10 +24721,10 @@ cp;1113D;-Alpha;gc=Nd;InSC=Number;lb=NU;na=CHAKMA DIGIT SEVEN;nt=De;nv=7;SB=NU;W
cp;1113E;-Alpha;gc=Nd;InSC=Number;lb=NU;na=CHAKMA DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
cp;1113F;-Alpha;gc=Nd;InSC=Number;lb=NU;na=CHAKMA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
# Punctuation
-cp;11140;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=CHAKMA SECTION MARK;SB=XX;WB=XX;-XIDC
-cp;11141;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=CHAKMA DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;11142;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=CHAKMA DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;11143;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=CHAKMA QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;11140;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=CHAKMA SECTION MARK;SB=XX;WB=XX;-XIDC
+cp;11141;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=CHAKMA DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;11142;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=CHAKMA DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;11143;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;InSC=Other;lb=BA;na=CHAKMA QUESTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC
# Consonant
cp;11144;age=11.0;IDS;na=CHAKMA LETTER LHAA;XIDS
# Dependent vowel signs
@@ -24717,7 +24734,7 @@ cp;11146;age=11.0;gc=Mc;GCB=SM;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=CHAKMA V
cp;11147;age=13.0;IDS;na=CHAKMA LETTER VAA;XIDS
unassigned;11148..1114F
-block;11150..1117F;age=7.0;Alpha;blk=Mahajani;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mahj;WB=LE;XIDC;XIDS
+block;11150..1117F;age=7.0;Alpha;blk=Mahajani;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mahj;WB=LE;XIDC;XIDS
# 11150..1117F Mahajani
# Vowels
cp;11150;InSC=Vowel;na=MAHAJANI LETTER A
@@ -24759,13 +24776,13 @@ cp;11172;na=MAHAJANI LETTER RRA
# Sign
cp;11173;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=MAHAJANI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;11174;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=MAHAJANI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11175;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=MAHAJANI SECTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11174;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=MAHAJANI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11175;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BB;na=MAHAJANI SECTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
# Word ligature
cp;11176;InSC=Other;na=MAHAJANI LIGATURE SHRI
unassigned;11177..1117F
-block;11180..111DF;age=6.1;Alpha;blk=Sharada;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Shrd;WB=LE;XIDC;XIDS
+block;11180..111DF;age=6.1;Alpha;blk=Sharada;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Shrd;WB=LE;XIDC;XIDS
# 11180..111DF Sharada
# Various signs
cp;11180;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=SHARADA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
@@ -24843,10 +24860,10 @@ cp;111C2;GCB=PP;InPC=Top;InSC=Consonant_Prefixed;na=SHARADA SIGN JIHVAMULIYA
cp;111C3;GCB=PP;InPC=Top;InSC=Consonant_Prefixed;na=SHARADA SIGN UPADHMANIYA
cp;111C4;InSC=Other;na=SHARADA OM
# Punctuation
-cp;111C5;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SHARADA DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;111C6;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SHARADA DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;111C7;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=SHARADA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;111C8;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SHARADA SEPARATOR;SB=XX;WB=XX;-XIDC;-XIDS
+cp;111C5;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SHARADA DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;111C6;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SHARADA DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;111C7;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=SHARADA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;111C8;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SHARADA SEPARATOR;SB=XX;WB=XX;-XIDC;-XIDS
# Sign
cp;111C9;age=8.0;-Alpha;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=SHARADA SANDHI MARK;SB=EX;WB=Extend;-XIDS
# Signs for Kashmiri
@@ -24854,7 +24871,7 @@ cp;111CA;age=8.0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;In
cp;111CB;age=8.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=SHARADA VOWEL MODIFIER MARK;SB=EX;WB=Extend;-XIDS
cp;111CC;age=8.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=SHARADA EXTRA SHORT VOWEL MARK;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;111CD;age=7.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=SHARADA SUTRA MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;111CD;age=7.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=SHARADA SUTRA MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Historic vowel sign
cp;111CE;age=13.0;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=SHARADA VOWEL SIGN PRISHTHAMATRA E;SB=EX;WB=Extend;-XIDS
# Sign
@@ -24872,14 +24889,14 @@ cp;111D8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SHARADA DIGIT EIGHT;nt=De;nv=8;S
cp;111D9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SHARADA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Punctuation
cp;111DA;age=7.0;InSC=Other;na=SHARADA EKAM
-cp;111DB;age=8.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=SHARADA SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
+cp;111DB;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BB;na=SHARADA SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
cp;111DC;age=8.0;InSC=Other;na=SHARADA HEADSTROKE
-cp;111DD;age=8.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SHARADA CONTINUATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;111DD;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SHARADA CONTINUATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Section marks
-cp;111DE;age=8.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SHARADA SECTION MARK-1;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;111DF;age=8.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SHARADA SECTION MARK-2;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;111DE;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SHARADA SECTION MARK-1;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;111DF;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SHARADA SECTION MARK-2;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;111E0..111FF;age=7.0;blk=Sinhala_Archaic_Numbers;gc=No;Gr_Base;InSC=Number;lb=AL;nt=Nu;sc=Sinh
+block;111E0..111FF;age=7.0;blk=Sinhala_Archaic_Numbers;gc=No;Gr_Base;Identifier_Type=Not_XID;InSC=Number;lb=AL;nt=Nu;sc=Sinh
# 111E0..111FF Sinhala Archaic Numbers
unassigned;111E0
# Historical digits
@@ -24906,7 +24923,7 @@ cp;111F3;na=SINHALA ARCHAIC NUMBER ONE HUNDRED;nv=100
cp;111F4;na=SINHALA ARCHAIC NUMBER ONE THOUSAND;nv=1000
unassigned;111F5..111FF
-block;11200..1124F;age=7.0;Alpha;blk=Khojki;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Khoj;WB=LE;XIDC;XIDS
+block;11200..1124F;age=7.0;Alpha;blk=Khojki;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Khoj;WB=LE;XIDC;XIDS
# 11200..1124F Khojki
# Independent vowels
cp;11200;InSC=Vowel_Independent;na=KHOJKI LETTER A
@@ -24969,12 +24986,12 @@ cp;11235;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Virama;lb=CM
cp;11236;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=KHOJKI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;11237;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Gemination_Mark;jt=T;lb=CM;na=KHOJKI SIGN SHADDA;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;11238;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KHOJKI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11239;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KHOJKI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1123A;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=KHOJKI WORD SEPARATOR;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;1123B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KHOJKI SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1123C;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KHOJKI DOUBLE SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1123D;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=KHOJKI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11238;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=KHOJKI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11239;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=KHOJKI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1123A;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=KHOJKI WORD SEPARATOR;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1123B;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=KHOJKI SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1123C;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=KHOJKI DOUBLE SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1123D;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=KHOJKI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Sign
cp;1123E;age=9.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=KHOJKI SIGN SUKUN;SB=EX;WB=Extend;-XIDS
# Consonant
@@ -24985,7 +25002,7 @@ cp;11240;age=15.0;InSC=Vowel_Independent;na=KHOJKI LETTER SHORT I
cp;11241;age=15.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=KHOJKI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
unassigned;11242..1124F
-block;11280..112AF;age=8.0;Alpha;blk=Multani;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mult;WB=LE;XIDC;XIDS
+block;11280..112AF;age=8.0;Alpha;blk=Multani;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mult;WB=LE;XIDC;XIDS
# 11280..112AF Multani
# Vowels
cp;11280;InSC=Vowel_Independent;na=MULTANI LETTER A
@@ -25031,10 +25048,10 @@ cp;112A6;na=MULTANI LETTER HA
cp;112A7;na=MULTANI LETTER RRA
cp;112A8;na=MULTANI LETTER RHA
# Punctuation
-cp;112A9;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MULTANI SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;112A9;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=MULTANI SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;112AA..112AF
-block;112B0..112FF;age=7.0;Alpha;blk=Khudawadi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Sind;WB=LE;XIDC;XIDS
+block;112B0..112FF;age=7.0;Alpha;blk=Khudawadi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Sind;WB=LE;XIDC;XIDS
# 112B0..112FF Khudawadi
# Independent vowels
cp;112B0;InSC=Vowel_Independent;na=KHUDAWADI LETTER A
@@ -25114,13 +25131,13 @@ cp;112F8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=KHUDAWADI DIGIT EIGHT;nt=De;nv=8
cp;112F9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=KHUDAWADI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;112FA..112FF
-block;11300..1137F;age=7.0;Alpha;blk=Grantha;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AK;SB=LE;sc=Gran;WB=Extend;XIDC;XIDS
+block;11300..1137F;age=7.0;Alpha;blk=Grantha;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AK;SB=LE;sc=Gran;WB=Extend;XIDC;XIDS
# 11300..1137F Grantha
# Various signs
cp;11300;age=8.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=GRANTHA SIGN COMBINING ANUSVARA ABOVE;SB=EX;-XIDS
-cp;11301;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=GRANTHA SIGN CANDRABINDU;SB=EX;scx=Gran Taml;-XIDS
+cp;11301;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=GRANTHA SIGN CANDRABINDU;SB=EX;scx=Gran Taml;-XIDS
cp;11302;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=GRANTHA SIGN ANUSVARA;SB=EX;-XIDS
-cp;11303;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=GRANTHA SIGN VISARGA;SB=EX;scx=Gran Taml;-XIDS
+cp;11303;gc=Mc;GCB=SM;Identifier_Status=Allowed;Identifier_Type=Recommended;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=GRANTHA SIGN VISARGA;SB=EX;scx=Gran Taml;-XIDS
unassigned;11304
# Independent vowels
cp;11305;InSC=Vowel_Independent;na=GRANTHA LETTER A;WB=LE
@@ -25177,8 +25194,8 @@ cp;11338;na=GRANTHA LETTER SA;WB=LE
cp;11339;na=GRANTHA LETTER HA;WB=LE
unassigned;1133A
# Various signs
-cp;1133B;age=11.0;-Alpha;bc=NSM;ccc=7;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=COMBINING BINDU BELOW;SB=EX;sc=Zinh;scx=Gran Taml;-XIDS
-cp;1133C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=GRANTHA SIGN NUKTA;SB=EX;scx=Gran Taml;-XIDS
+cp;1133B;age=11.0;-Alpha;bc=NSM;ccc=7;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=COMBINING BINDU BELOW;SB=EX;sc=Zinh;scx=Gran Taml;-XIDS
+cp;1133C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=GRANTHA SIGN NUKTA;SB=EX;scx=Gran Taml;-XIDS
cp;1133D;InSC=Avagraha;lb=BA;na=GRANTHA SIGN AVAGRAHA;WB=LE
# Dependent vowel signs
cp;1133E;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GRANTHA VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;-XIDS
@@ -25232,7 +25249,7 @@ cp;11373;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Ext
cp;11374;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER PA;SB=EX;-XIDS
unassigned;11375..1137F
-block;11400..1147F;age=9.0;Alpha;blk=Newa;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Newa;WB=LE;XIDC;XIDS
+block;11400..1147F;age=9.0;Alpha;blk=Newa;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Newa;WB=LE;XIDC;XIDS
# 11400..1147F Newa
# Independent vowels
cp;11400;InSC=Vowel_Independent;na=NEWA LETTER A
@@ -25315,11 +25332,11 @@ cp;11448;InSC=Other;na=NEWA SIGN FINAL ANUSVARA
cp;11449;InSC=Other;na=NEWA OM
cp;1144A;InSC=Other;na=NEWA SIDDHI
# Punctuation
-cp;1144B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=NEWA DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1144C;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=NEWA DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;1144D;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=NEWA COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;1144E;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=NEWA GAP FILLER;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1144F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=NEWA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1144B;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=NEWA DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1144C;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=NEWA DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1144D;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=NEWA COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1144E;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=NEWA GAP FILLER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1144F;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=NEWA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Digits
cp;11450;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=NEWA DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
cp;11451;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=NEWA DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
@@ -25332,18 +25349,18 @@ cp;11457;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=NEWA DIGIT SEVEN;nt=De;nv=7;SB=N
cp;11458;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=NEWA DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
cp;11459;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=NEWA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Punctuation
-cp;1145A;age=13.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=NEWA DOUBLE COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1145A;age=13.0;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=NEWA DOUBLE COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
# Various signs
-cp;1145B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=NEWA PLACEHOLDER MARK;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;1145B;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;lb=BA;na=NEWA PLACEHOLDER MARK;SB=XX;Term;WB=XX;-XIDC;-XIDS
unassigned;1145C
-cp;1145D;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=NEWA INSERTION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1145D;-Alpha;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;InSC=Other;na=NEWA INSERTION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
cp;1145E;age=11.0;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;lb=CM;na=NEWA SANDHI MARK;SB=EX;WB=Extend;-XIDS
cp;1145F;age=12.0;InSC=Bindu;na=NEWA LETTER VEDIC ANUSVARA
cp;11460;age=13.0;InSC=Consonant_With_Stacker;na=NEWA SIGN JIHVAMULIYA
cp;11461;age=13.0;InSC=Consonant_With_Stacker;na=NEWA SIGN UPADHMANIYA
unassigned;11462..1147F
-block;11480..114DF;age=7.0;Alpha;blk=Tirhuta;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Tirh;WB=LE;XIDC;XIDS
+block;11480..114DF;age=7.0;Alpha;blk=Tirhuta;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Tirh;WB=LE;XIDC;XIDS
# 11480..114DF Tirhuta
# Sign
cp;11480;InSC=Other;na=TIRHUTA ANJI
@@ -25420,7 +25437,7 @@ cp;114C2;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;In
cp;114C3;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=TIRHUTA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;114C4;InSC=Avagraha;na=TIRHUTA SIGN AVAGRAHA
cp;114C5;InSC=Other;na=TIRHUTA GVANG
-cp;114C6;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=TIRHUTA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;114C6;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=TIRHUTA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
cp;114C7;InSC=Other;na=TIRHUTA OM
unassigned;114C8..114CF
# Digits
@@ -25436,7 +25453,7 @@ cp;114D8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=TIRHUTA DIGIT EIGHT;nt=De;nv=8;S
cp;114D9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=TIRHUTA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;114DA..114DF
-block;11580..115FF;age=7.0;Alpha;blk=Siddham;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Sidd;vo=U;WB=LE;XIDC;XIDS
+block;11580..115FF;age=7.0;Alpha;blk=Siddham;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;InSC=Consonant;lb=AL;SB=LE;sc=Sidd;vo=U;WB=LE;XIDC;XIDS
# 11580..115FF Siddham
# Independent vowels
cp;11580;IDS;InSC=Vowel_Independent;na=SIDDHAM LETTER A
@@ -25507,33 +25524,33 @@ cp;115BE;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=CM;na=SIDDHAM SIGN VISARGA;SB=E
cp;115BF;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=SIDDHAM SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
cp;115C0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=SIDDHAM SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Head mark
-cp;115C1;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=SIDDHAM SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
+cp;115C1;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BB;na=SIDDHAM SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;115C2;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115C3;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115C4;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=SIDDHAM SEPARATOR DOT;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;115C5;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=SIDDHAM SEPARATOR BAR;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;115C2;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115C3;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115C4;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=EX;na=SIDDHAM SEPARATOR DOT;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;115C5;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=EX;na=SIDDHAM SEPARATOR BAR;SB=XX;Term;WB=XX;-XIDC;-XIDS
# Repetition marks
-cp;115C6;-Alpha;Ext;gc=Po;-IDC;InSC=Other;na=SIDDHAM REPETITION MARK-1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;115C7;-Alpha;Ext;gc=Po;-IDC;InSC=Other;na=SIDDHAM REPETITION MARK-2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;115C8;-Alpha;Ext;gc=Po;-IDC;InSC=Other;na=SIDDHAM REPETITION MARK-3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;115C6;-Alpha;Ext;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;na=SIDDHAM REPETITION MARK-1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;115C7;-Alpha;Ext;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;na=SIDDHAM REPETITION MARK-2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;115C8;-Alpha;Ext;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;na=SIDDHAM REPETITION MARK-3;SB=XX;WB=XX;-XIDC;-XIDS
# Terminal mark
-cp;115C9;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM END OF TEXT MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115C9;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM END OF TEXT MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Section marks
-cp;115CA;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115CB;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115CC;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115CD;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115CE;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115CF;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK DOUBLE RING;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115D0;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK DOUBLE RING WITH RAYS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115D1;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115D2;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115D3;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115D4;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115D5;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH CIRCLES AND RAYS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115D6;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;115D7;age=8.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115CA;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115CB;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115CC;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115CD;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115CE;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115CF;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK DOUBLE RING;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115D0;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK DOUBLE RING WITH RAYS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115D1;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115D2;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115D3;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115D4;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115D5;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH CIRCLES AND RAYS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115D6;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;115D7;age=8.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Alternate letters
cp;115D8;age=8.0;IDS;InSC=Vowel_Independent;na=SIDDHAM LETTER THREE-CIRCLE ALTERNATE I
cp;115D9;age=8.0;IDS;InSC=Vowel_Independent;na=SIDDHAM LETTER TWO-CIRCLE ALTERNATE I
@@ -25544,7 +25561,7 @@ cp;115DC;age=8.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_D
cp;115DD;age=8.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=SIDDHAM VOWEL SIGN ALTERNATE UU;SB=EX;WB=Extend;-XIDS
unassigned;115DE..115FF;vo=U
-block;11600..1165F;age=7.0;Alpha;blk=Modi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Modi;WB=LE;XIDC;XIDS
+block;11600..1165F;age=7.0;Alpha;blk=Modi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Modi;WB=LE;XIDC;XIDS
# 11600..1165F Modi
# Independent vowels
cp;11600;InSC=Vowel_Independent;na=MODI LETTER A
@@ -25616,9 +25633,9 @@ cp;1163E;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=MODI SIGN VISARGA;SB
cp;1163F;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=MODI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
cp;11640;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=MODI SIGN ARDHACANDRA;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;11641;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MODI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11642;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MODI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11643;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=MODI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11641;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=MODI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11642;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=MODI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11643;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=MODI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Sign
cp;11644;InSC=Other;na=MODI SIGN HUVA
unassigned;11645..1164F
@@ -25635,7 +25652,7 @@ cp;11658;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MODI DIGIT EIGHT;nt=De;nv=8;SB=N
cp;11659;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MODI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;1165A..1165F
-block;11660..1167F;age=9.0;bc=ON;blk=Mongolian_Sup;gc=Po;Gr_Base;lb=BB;sc=Mong
+block;11660..1167F;age=9.0;bc=ON;blk=Mongolian_Sup;gc=Po;Gr_Base;Identifier_Type=Exclusion Not_XID;lb=BB;sc=Mong
# 11660..1167F Mongolian Supplement
# Punctuation
cp;11660;na=MONGOLIAN BIRGA WITH ORNAMENT
@@ -25653,7 +25670,7 @@ cp;1166B;na=MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT
cp;1166C;na=MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
unassigned;1166D..1167F
-block;11680..116CF;age=6.1;Alpha;blk=Takri;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Takr;WB=LE;XIDC;XIDS
+block;11680..116CF;age=6.1;Alpha;blk=Takri;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Takr;WB=LE;XIDC;XIDS
# 11680..116CF Takri
# Independent vowels
cp;11680;InSC=Vowel_Independent;na=TAKRI LETTER A
@@ -25720,7 +25737,7 @@ cp;116B7;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Exten
# Consonant
cp;116B8;age=12.0;na=TAKRI LETTER ARCHAIC KHA
# Punctuation
-cp;116B9;age=14.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=TAKRI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;116B9;age=14.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=TAKRI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;116BA..116BF
# Digits
cp;116C0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=TAKRI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -25735,7 +25752,7 @@ cp;116C8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=TAKRI DIGIT EIGHT;nt=De;nv=8;SB=
cp;116C9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=TAKRI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;116CA..116CF
-block;11700..1174F;age=8.0;Alpha;blk=Ahom;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=SA;SB=LE;sc=Ahom;XIDC
+block;11700..1174F;age=8.0;Alpha;blk=Ahom;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;InSC=Consonant;lb=SA;SB=LE;sc=Ahom;XIDC
# 11700..1174F Ahom
# Consonants
cp;11700;IDS;na=AHOM LETTER KA;XIDS
@@ -25796,13 +25813,13 @@ cp;11737;-Alpha;gc=Nd;InSC=Number;lb=NU;na=AHOM DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=
cp;11738;-Alpha;gc=Nd;InSC=Number;lb=NU;na=AHOM DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
cp;11739;-Alpha;gc=Nd;InSC=Number;lb=NU;na=AHOM DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
# Numbers
-cp;1173A;-Alpha;gc=No;-IDC;InSC=Number;na=AHOM NUMBER TEN;nt=Nu;nv=10;SB=XX;-XIDC
-cp;1173B;-Alpha;gc=No;-IDC;InSC=Number;na=AHOM NUMBER TWENTY;nt=Nu;nv=20;SB=XX;-XIDC
+cp;1173A;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=AHOM NUMBER TEN;nt=Nu;nv=10;SB=XX;-XIDC
+cp;1173B;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=AHOM NUMBER TWENTY;nt=Nu;nv=20;SB=XX;-XIDC
# Punctuation
-cp;1173C;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=AHOM SIGN SMALL SECTION;SB=ST;STerm;Term;-XIDC
-cp;1173D;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=AHOM SIGN SECTION;SB=ST;STerm;Term;-XIDC
-cp;1173E;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=AHOM SIGN RULAI;SB=ST;STerm;Term;-XIDC
-cp;1173F;-Alpha;gc=So;-IDC;InSC=Other;na=AHOM SYMBOL VI;SB=XX;-XIDC
+cp;1173C;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=AHOM SIGN SMALL SECTION;SB=ST;STerm;Term;-XIDC
+cp;1173D;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=AHOM SIGN SECTION;SB=ST;STerm;Term;-XIDC
+cp;1173E;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=AHOM SIGN RULAI;SB=ST;STerm;Term;-XIDC
+cp;1173F;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;na=AHOM SYMBOL VI;SB=XX;-XIDC
# Additional consonants
cp;11740;age=14.0;IDS;na=AHOM LETTER CA;XIDS
cp;11741;age=14.0;IDS;na=AHOM LETTER TTA;XIDS
@@ -25813,7 +25830,7 @@ cp;11745;age=14.0;IDS;na=AHOM LETTER NNA;XIDS
cp;11746;age=14.0;IDS;na=AHOM LETTER LLA;XIDS
unassigned;11747..1174F
-block;11800..1184F;age=11.0;Alpha;blk=Dogra;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Dogr;WB=LE;XIDC;XIDS
+block;11800..1184F;age=11.0;Alpha;blk=Dogra;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Dogr;WB=LE;XIDC;XIDS
# 11800..1184F Dogra
# Independent vowels
cp;11800;InSC=Vowel_Independent;na=DOGRA LETTER A
@@ -25879,10 +25896,10 @@ cp;11838;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=DOGRA SIGN VISARGA;S
cp;11839;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=DOGRA SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
cp;1183A;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=DOGRA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;1183B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=DOGRA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1183B;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=DOGRA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1183C..1184F
-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
+block;118A0..118FF;age=7.0;Alpha;blk=Warang_Citi;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LO;sc=Wara;WB=LE;XIDC;XIDS
# 118A0..118FF Warang Citi
# Uppercase vowels
cp;118A0;cf=118C0;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER NGAA;NFKC_CF=118C0;NFKC_SCF=118C0;SB=UP;scf=118C0;slc=118C0;Upper
@@ -25964,20 +25981,20 @@ cp;118E7;-Alpha;-Cased;-CWCM;gc=Nd;-IDS;lb=NU;na=WARANG CITI DIGIT SEVEN;nt=De;n
cp;118E8;-Alpha;-Cased;-CWCM;gc=Nd;-IDS;lb=NU;na=WARANG CITI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
cp;118E9;-Alpha;-Cased;-CWCM;gc=Nd;-IDS;lb=NU;na=WARANG CITI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Numbers
-cp;118EA;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;118EB;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
-cp;118EC;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC;-XIDS
-cp;118ED;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC;-XIDS
-cp;118EE;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
-cp;118EF;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC;-XIDS
-cp;118F0;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC;-XIDS
-cp;118F1;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC;-XIDS
-cp;118F2;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118EA;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118EB;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118EC;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118ED;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118EE;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118EF;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118F0;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118F1;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC;-XIDS
+cp;118F2;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=WARANG CITI NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;118F3..118FE
# Sign
cp;118FF;-Cased;-CWCM;gc=Lo;na=WARANG CITI OM;SB=LE
-block;11900..1195F;age=13.0;Alpha;blk=Dives_Akuru;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AK;SB=LE;sc=Diak;WB=LE;XIDC;XIDS
+block;11900..1195F;age=13.0;Alpha;blk=Dives_Akuru;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AK;SB=LE;sc=Diak;WB=LE;XIDC;XIDS
# 11900..1195F Dives Akuru
# Independent vowels
cp;11900;InSC=Vowel_Independent;na=DIVES AKURU LETTER A
@@ -26052,9 +26069,9 @@ cp;11942;gc=Mc;GCB=SM;-IDS;InPC=Bottom_And_Right;InSC=Consonant_Medial;lb=CM;na=
# Nukta
cp;11943;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=DIVES AKURU SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;11944;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=DIVES AKURU DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11945;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=DIVES AKURU GAP FILLER;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11946;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=DIVES AKURU END OF TEXT MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11944;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=DIVES AKURU DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11945;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=DIVES AKURU GAP FILLER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11946;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=DIVES AKURU END OF TEXT MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;11947..1194F
# Digits
cp;11950;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -26069,7 +26086,7 @@ cp;11958;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT EIGHT;nt=De;nv
cp;11959;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;1195A..1195F
-block;119A0..119FF;age=12.0;Alpha;blk=Nandinagari;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Nand;WB=LE;XIDC;XIDS
+block;119A0..119FF;age=12.0;Alpha;blk=Nandinagari;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Nand;WB=LE;XIDC;XIDS
# 119A0..119FF Nandinagari
# Independent vowels
cp;119A0;InSC=Vowel_Independent;na=NANDINAGARI LETTER A
@@ -26139,14 +26156,14 @@ cp;119DE;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=NANDINAGARI SIGN ANUSV
cp;119DF;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=NANDINAGARI SIGN VISARGA;SB=EX;WB=Extend;-XIDS
cp;119E0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=NANDINAGARI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
cp;119E1;InSC=Avagraha;na=NANDINAGARI SIGN AVAGRAHA
-cp;119E2;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=NANDINAGARI SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
+cp;119E2;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BB;na=NANDINAGARI SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
cp;119E3;InSC=Other;na=NANDINAGARI HEADSTROKE
# Dependent vowel sign
cp;119E4;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=NANDINAGARI VOWEL SIGN PRISHTHAMATRA E;SB=EX;WB=Extend;-XIDS
unassigned;119E5..119FF
-block;11A00..11A4F;age=10.0;Alpha;blk=Zanabazar_Square;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Zanb;vo=U;WB=LE;XIDC;XIDS
+block;11A00..11A4F;age=10.0;Alpha;blk=Zanabazar_Square;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Zanb;vo=U;WB=LE;XIDC;XIDS
# 11A00..11A4F Zanabazar Square
# Vowel letter
cp;11A00;InSC=Vowel_Independent;na=ZANABAZAR SQUARE LETTER A
@@ -26222,21 +26239,21 @@ cp;11A3C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_
cp;11A3D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_Medial;jt=T;lb=CM;na=ZANABAZAR SQUARE CLUSTER-FINAL LETTER LA;SB=EX;WB=Extend;-XIDS
cp;11A3E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_Medial;jt=T;lb=CM;na=ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA;SB=EX;WB=Extend;-XIDS
# Head marks
-cp;11A3F;-Alpha;gc=Po;-IDC;-IDS;InSC=Consonant_Placeholder;lb=BB;na=ZANABAZAR SQUARE INITIAL HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11A40;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=ZANABAZAR SQUARE CLOSING HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A3F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Consonant_Placeholder;lb=BB;na=ZANABAZAR SQUARE INITIAL HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A40;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=ZANABAZAR SQUARE CLOSING HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;11A41;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK TSHEG;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11A42;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11A43;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK DOUBLE SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11A44;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK LONG TSHEG;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A41;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK TSHEG;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A42;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11A43;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK DOUBLE SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11A44;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK LONG TSHEG;SB=XX;WB=XX;-XIDC;-XIDS
# Head marks
-cp;11A45;-Alpha;gc=Po;-IDC;-IDS;InSC=Consonant_Placeholder;lb=BB;na=ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11A46;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A45;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Consonant_Placeholder;lb=BB;na=ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A46;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;na=ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
# Subjoiner
cp;11A47;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=ZANABAZAR SQUARE SUBJOINER;SB=EX;WB=Extend;-XIDS
unassigned;11A48..11A4F;vo=U
-block;11A50..11AAF;age=10.0;Alpha;blk=Soyombo;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Soyo;vo=U;WB=LE;XIDC;XIDS
+block;11A50..11AAF;age=10.0;Alpha;blk=Soyombo;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Soyo;vo=U;WB=LE;XIDC;XIDS
# 11A50..11AAF Soyombo
# Vowel letter
cp;11A50;InSC=Vowel_Independent;na=SOYOMBO LETTER A
@@ -26323,21 +26340,21 @@ cp;11A98;-Alpha;bc=NSM;CI;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Ge
# Subjoiner
cp;11A99;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=SOYOMBO SUBJOINER;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;11A9A;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SOYOMBO MARK TSHEG;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11A9B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SOYOMBO MARK SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11A9C;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SOYOMBO MARK DOUBLE SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11A9A;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SOYOMBO MARK TSHEG;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A9B;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SOYOMBO MARK SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11A9C;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SOYOMBO MARK DOUBLE SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Elongation mark
cp;11A9D;age=11.0;InSC=Avagraha;na=SOYOMBO MARK PLUTA
# Head marks
-cp;11A9E;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11A9F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11AA0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=SOYOMBO HEAD MARK WITH MOON AND SUN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A9E;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BB;na=SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11A9F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BB;na=SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11AA0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BB;na=SOYOMBO HEAD MARK WITH MOON AND SUN;SB=XX;WB=XX;-XIDC;-XIDS
# Terminal marks
-cp;11AA1;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SOYOMBO TERMINAL MARK-1;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;11AA2;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SOYOMBO TERMINAL MARK-2;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;11AA1;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SOYOMBO TERMINAL MARK-1;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;11AA2;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=SOYOMBO TERMINAL MARK-2;SB=XX;Term;WB=XX;-XIDC;-XIDS
unassigned;11AA3..11AAF;vo=U
-block;11AB0..11ABF;age=14.0;Alpha;blk=UCAS_Ext_A;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Cans;vo=U;WB=LE;XIDC;XIDS
+block;11AB0..11ABF;age=14.0;Alpha;blk=UCAS_Ext_A;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Cans;vo=U;WB=LE;XIDC;XIDS
# 11AB0..11ABF Unified Canadian Aboriginal Syllabics Extended-A
# Syllables for Nattilik
cp;11AB0;na=CANADIAN SYLLABICS NATTILIK HI
@@ -26358,7 +26375,7 @@ cp;11ABD;na=CANADIAN SYLLABICS SPI
cp;11ABE;na=CANADIAN SYLLABICS SPO
cp;11ABF;na=CANADIAN SYLLABICS SPA
-block;11AC0..11AFF;age=7.0;Alpha;blk=Pau_Cin_Hau;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Pauc;WB=LE;XIDC;XIDS
+block;11AC0..11AFF;age=7.0;Alpha;blk=Pau_Cin_Hau;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Pauc;WB=LE;XIDC;XIDS
# 11AC0..11AFF Pau Cin Hau
# Consonants
cp;11AC0;na=PAU CIN HAU LETTER PA
@@ -26423,7 +26440,7 @@ cp;11AF7;na=PAU CIN HAU LOW-FALLING TONE FINAL
cp;11AF8;na=PAU CIN HAU GLOTTAL STOP FINAL
unassigned;11AF9..11AFF
-block;11B00..11B5F;age=15.0;blk=Devanagari_Ext_A;gc=Po;Gr_Base;lb=BB;sc=Deva
+block;11B00..11B5F;age=15.0;blk=Devanagari_Ext_A;gc=Po;Gr_Base;Identifier_Type=Not_XID;lb=BB;sc=Deva
# 11B00..11B5F Devanagari Extended-A
# Head marks
cp;11B00;na=DEVANAGARI HEAD MARK
@@ -26439,7 +26456,7 @@ cp;11B08;na=DEVANAGARI SIGN REVERSED NINE-LIKE BHALE
cp;11B09;na=DEVANAGARI SIGN MINDU
unassigned;11B0A..11B5F
-block;11C00..11C6F;age=9.0;Alpha;blk=Bhaiksuki;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Bhks;WB=LE;XIDC
+block;11C00..11C6F;age=9.0;Alpha;blk=Bhaiksuki;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;InSC=Consonant;lb=AL;SB=LE;sc=Bhks;WB=LE;XIDC
# 11C00..11C6F Bhaiksuki
# Independent vowels
cp;11C00;IDS;InSC=Vowel_Independent;na=BHAIKSUKI LETTER A;XIDS
@@ -26511,12 +26528,12 @@ cp;11C3E;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=CM;na=BHAIKSUKI SIGN VISARGA;SB
cp;11C3F;-Alpha;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=BHAIKSUKI SIGN VIRAMA;SB=EX;WB=Extend
cp;11C40;IDS;InSC=Avagraha;na=BHAIKSUKI SIGN AVAGRAHA;XIDS
# Punctuation
-cp;11C41;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BHAIKSUKI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;11C42;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BHAIKSUKI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;11C43;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BHAIKSUKI WORD SEPARATOR;SB=XX;Term;WB=XX;-XIDC
+cp;11C41;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=BHAIKSUKI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;11C42;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=BHAIKSUKI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
+cp;11C43;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=BHAIKSUKI WORD SEPARATOR;SB=XX;Term;WB=XX;-XIDC
# Gap fillers
-cp;11C44;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BHAIKSUKI GAP FILLER-1;SB=XX;WB=XX;-XIDC
-cp;11C45;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BHAIKSUKI GAP FILLER-2;SB=XX;WB=XX;-XIDC
+cp;11C44;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=BHAIKSUKI GAP FILLER-1;SB=XX;WB=XX;-XIDC
+cp;11C45;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=BHAIKSUKI GAP FILLER-2;SB=XX;WB=XX;-XIDC
unassigned;11C46..11C4F
# Digits
cp;11C50;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BHAIKSUKI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
@@ -26530,32 +26547,32 @@ cp;11C57;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BHAIKSUKI DIGIT SEVEN;nt=De;nv=7;SB=N
cp;11C58;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BHAIKSUKI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
cp;11C59;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BHAIKSUKI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
# Numbers
-cp;11C5A;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC
-cp;11C5B;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC
-cp;11C5C;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC
-cp;11C5D;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC
-cp;11C5E;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC
-cp;11C5F;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER SIX;nt=Nu;nv=6;SB=XX;WB=XX;-XIDC
-cp;11C60;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER SEVEN;nt=Nu;nv=7;SB=XX;WB=XX;-XIDC
-cp;11C61;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER EIGHT;nt=Nu;nv=8;SB=XX;WB=XX;-XIDC
-cp;11C62;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER NINE;nt=Nu;nv=9;SB=XX;WB=XX;-XIDC
-cp;11C63;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
-cp;11C64;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
-cp;11C65;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC
-cp;11C66;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC
-cp;11C67;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC
-cp;11C68;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC
-cp;11C69;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC
-cp;11C6A;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC
-cp;11C6B;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC
-cp;11C6C;-Alpha;gc=No;-IDC;InSC=Number;na=BHAIKSUKI HUNDREDS UNIT MARK;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
+cp;11C5A;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC
+cp;11C5B;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC
+cp;11C5C;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC
+cp;11C5D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC
+cp;11C5E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC
+cp;11C5F;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER SIX;nt=Nu;nv=6;SB=XX;WB=XX;-XIDC
+cp;11C60;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER SEVEN;nt=Nu;nv=7;SB=XX;WB=XX;-XIDC
+cp;11C61;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER EIGHT;nt=Nu;nv=8;SB=XX;WB=XX;-XIDC
+cp;11C62;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER NINE;nt=Nu;nv=9;SB=XX;WB=XX;-XIDC
+cp;11C63;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
+cp;11C64;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
+cp;11C65;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC
+cp;11C66;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC
+cp;11C67;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC
+cp;11C68;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC
+cp;11C69;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC
+cp;11C6A;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC
+cp;11C6B;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC
+cp;11C6C;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Number;na=BHAIKSUKI HUNDREDS UNIT MARK;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
unassigned;11C6D..11C6F
-block;11C70..11CBF;age=9.0;Alpha;bc=NSM;blk=Marchen;gc=Mn;IDC;InPC=Bottom;InSC=Consonant_Subjoined;lb=CM;SB=EX;sc=Marc;WB=Extend;XIDC
+block;11C70..11CBF;age=9.0;Alpha;bc=NSM;blk=Marchen;gc=Mn;IDC;Identifier_Type=Exclusion;InPC=Bottom;InSC=Consonant_Subjoined;lb=CM;SB=EX;sc=Marc;WB=Extend;XIDC
# 11C70..11CBF Marchen
# Punctuation
-cp;11C70;-Alpha;bc=L;gc=Po;Gr_Base;-IDC;InPC=NA;InSC=Other;lb=BB;na=MARCHEN HEAD MARK;SB=XX;WB=XX;-XIDC
-cp;11C71;-Alpha;bc=L;gc=Po;Gr_Base;-IDC;InPC=NA;InSC=Other;lb=EX;na=MARCHEN MARK SHAD;SB=XX;Term;WB=XX;-XIDC
+cp;11C70;-Alpha;bc=L;gc=Po;Gr_Base;-IDC;Identifier_Type=Exclusion Not_XID;InPC=NA;InSC=Other;lb=BB;na=MARCHEN HEAD MARK;SB=XX;WB=XX;-XIDC
+cp;11C71;-Alpha;bc=L;gc=Po;Gr_Base;-IDC;Identifier_Type=Exclusion Not_XID;InPC=NA;InSC=Other;lb=EX;na=MARCHEN MARK SHAD;SB=XX;Term;WB=XX;-XIDC
# Letters
cp;11C72;bc=L;gc=Lo;Gr_Base;IDS;InPC=NA;InSC=Consonant;lb=AL;na=MARCHEN LETTER KA;SB=LE;WB=LE;XIDS
cp;11C73;bc=L;gc=Lo;Gr_Base;IDS;InPC=NA;InSC=Consonant;lb=AL;na=MARCHEN LETTER KHA;SB=LE;WB=LE;XIDS
@@ -26630,7 +26647,7 @@ cp;11CB5;CI;GCB=EX;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;na=MARCHEN SIGN ANUSVARA
cp;11CB6;CI;GCB=EX;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;na=MARCHEN SIGN CANDRABINDU
unassigned;11CB7..11CBF
-block;11D00..11D5F;age=10.0;Alpha;blk=Masaram_Gondi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Gonm;WB=LE;XIDC;XIDS
+block;11D00..11D5F;age=10.0;Alpha;blk=Masaram_Gondi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Gonm;WB=LE;XIDC;XIDS
# 11D00..11D5F Masaram Gondi
# Vowels
cp;11D00;InSC=Vowel_Independent;na=MASARAM GONDI LETTER A
@@ -26723,7 +26740,7 @@ cp;11D58;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MASARAM GONDI DIGIT EIGHT;nt=De;
cp;11D59;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MASARAM GONDI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;11D5A..11D5F
-block;11D60..11DAF;age=11.0;Alpha;blk=Gunjala_Gondi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Gong;WB=LE;XIDC;XIDS
+block;11D60..11DAF;age=11.0;Alpha;blk=Gunjala_Gondi;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Gong;WB=LE;XIDC;XIDS
# 11D60..11DAF Gunjala Gondi
# Independent vowels
cp;11D60;InSC=Vowel_Independent;na=GUNJALA GONDI LETTER A
@@ -26802,7 +26819,7 @@ cp;11DA8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=GUNJALA GONDI DIGIT EIGHT;nt=De;
cp;11DA9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=GUNJALA GONDI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;11DAA..11DAF
-block;11EE0..11EFF;age=11.0;Alpha;blk=Makasar;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Maka;WB=LE;XIDC;XIDS
+block;11EE0..11EFF;age=11.0;Alpha;blk=Makasar;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Maka;WB=LE;XIDC;XIDS
# 11EE0..11EFF Makasar
# Consonants
cp;11EE0;na=MAKASAR LETTER KA
@@ -26831,11 +26848,11 @@ cp;11EF4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Depe
cp;11EF5;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=MAKASAR VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
cp;11EF6;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=MAKASAR VOWEL SIGN O;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;11EF7;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MAKASAR PASSIMBANG;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11EF8;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MAKASAR END OF SECTION;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11EF7;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=MAKASAR PASSIMBANG;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11EF8;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;InSC=Other;lb=BA;na=MAKASAR END OF SECTION;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;11EF9..11EFF
-block;11F00..11F5F;age=15.0;Alpha;blk=Kawi;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AK;SB=LE;sc=Kawi;WB=LE;XIDC;XIDS
+block;11F00..11F5F;age=15.0;Alpha;blk=Kawi;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;InSC=Consonant;lb=AK;SB=LE;sc=Kawi;WB=LE;XIDC;XIDS
# 11F00..11F5F Kawi
# Signs
cp;11F00;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=KAWI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
@@ -26908,19 +26925,19 @@ cp;11F40;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt
cp;11F41;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;InPC=Right;InSC=Pure_Killer;lb=CM;na=KAWI SIGN KILLER;SB=EX;WB=Extend;-XIDS
cp;11F42;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=VI;na=KAWI CONJOINER;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;11F43;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KAWI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11F44;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KAWI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11F45;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION SECTION MARKER;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F46;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION ALTERNATE SECTION MARKER;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F47;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION FLOWER;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F48;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION SPACE FILLER;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F49;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION DOT;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F4A;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION DOUBLE DOT;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F4B;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION TRIPLE DOT;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F4C;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION CIRCLE;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F4D;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION FILLED CIRCLE;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F4E;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
-cp;11F4F;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION CLOSING SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F43;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KAWI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11F44;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=BA;na=KAWI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11F45;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION SECTION MARKER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F46;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION ALTERNATE SECTION MARKER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F47;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION FLOWER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F48;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION SPACE FILLER;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F49;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION DOT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F4A;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION DOUBLE DOT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F4B;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION TRIPLE DOT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F4C;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION CIRCLE;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F4D;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION FILLED CIRCLE;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F4E;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
+cp;11F4F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;InSC=Other;lb=ID;na=KAWI PUNCTUATION CLOSING SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
# Digits
cp;11F50;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
cp;11F51;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
@@ -26934,12 +26951,12 @@ cp;11F58;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=
cp;11F59;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;11F5A..11F5F
-block;11FB0..11FBF;age=13.0;Alpha;blk=Lisu_Sup;gc=Lo;Gr_Base;IDC;IDS;lb=AL;na=LISU LETTER YHA;SB=LE;sc=Lisu;WB=LE;XIDC;XIDS
+block;11FB0..11FBF;age=13.0;Alpha;blk=Lisu_Sup;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;na=LISU LETTER YHA;SB=LE;sc=Lisu;WB=LE;XIDC;XIDS
# 11FB0..11FBF Lisu Supplement
# Letter
unassigned;11FB1..11FBF
-block;11FC0..11FFF;age=12.0;bc=ON;blk=Tamil_Sup;gc=So;Gr_Base;lb=AL;sc=Taml
+block;11FC0..11FFF;age=12.0;bc=ON;blk=Tamil_Sup;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Taml
# 11FC0..11FFF Tamil Supplement
# Fractions
cp;11FC0;bc=L;gc=No;na=TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;nt=Nu;nv=1/320
@@ -27002,7 +27019,7 @@ unassigned;11FF2..11FFE
# Punctuation
cp;11FFF;bc=L;gc=Po;lb=BA;na=TAMIL PUNCTUATION END OF TEXT
-block;12000..123FF;age=5.0;Alpha;blk=Cuneiform;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Xsux;WB=LE;XIDC;XIDS
+block;12000..123FF;age=5.0;Alpha;blk=Cuneiform;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Xsux;WB=LE;XIDC;XIDS
# 12000..123FF Cuneiform
# Signs
cp;12000;na=CUNEIFORM SIGN A
@@ -27931,7 +27948,7 @@ cp;12398;age=7.0;na=CUNEIFORM SIGN UM TIMES ME
cp;12399;age=8.0;na=CUNEIFORM SIGN U U
unassigned;1239A..123FF
-block;12400..1247F;age=5.0;Alpha;blk=Cuneiform_Numbers;gc=Nl;Gr_Base;IDC;IDS;lb=AL;nt=Nu;nv=4;SB=LE;sc=Xsux;WB=LE;XIDC;XIDS
+block;12400..1247F;age=5.0;Alpha;blk=Cuneiform_Numbers;gc=Nl;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;nt=Nu;nv=4;SB=LE;sc=Xsux;WB=LE;XIDC;XIDS
# 12400..1247F Cuneiform Numbers and Punctuation
# Numeric signs
cp;12400;na=CUNEIFORM NUMERIC SIGN TWO ASH;nv=2
@@ -28051,14 +28068,14 @@ cp;1246D;age=7.0;na=CUNEIFORM NUMERIC SIGN EIGHT U VARIANT FORM;nv=8
cp;1246E;age=7.0;na=CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM;nv=9
unassigned;1246F
# Punctuation
-cp;12470;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;12471;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;12472;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;12473;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;12474;age=7.0;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;12470;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;12471;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;12472;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;12473;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;12474;age=7.0;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON;nt=None;nv=NaN;SB=XX;Term;WB=XX;-XIDC;-XIDS
unassigned;12475..1247F
-block;12480..1254F;age=8.0;Alpha;blk=Early_Dynastic_Cuneiform;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Xsux;WB=LE;XIDC;XIDS
+block;12480..1254F;age=8.0;Alpha;blk=Early_Dynastic_Cuneiform;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Xsux;WB=LE;XIDC;XIDS
# 12480..1254F Early Dynastic Cuneiform
# Signs
cp;12480;na=CUNEIFORM SIGN AB TIMES NUN TENU
@@ -28259,7 +28276,7 @@ cp;12542;na=CUNEIFORM SIGN ZU OVER ZU PLUS SAR
cp;12543;na=CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
unassigned;12544..1254F
-block;12F90..12FFF;age=14.0;Alpha;blk=Cypro_Minoan;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Cpmn;WB=LE;XIDC;XIDS
+block;12F90..12FFF;age=14.0;Alpha;blk=Cypro_Minoan;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Cpmn;WB=LE;XIDC;XIDS
# 12F90..12FFF Cypro-Minoan
# Signs
cp;12F90;na=CYPRO-MINOAN SIGN CM001
@@ -28360,11 +28377,11 @@ cp;12FEE;na=CYPRO-MINOAN SIGN CM110
cp;12FEF;na=CYPRO-MINOAN SIGN CM112
cp;12FF0;na=CYPRO-MINOAN SIGN CM114
# Punctuation
-cp;12FF1;-Alpha;gc=Po;-IDC;-IDS;na=CYPRO-MINOAN SIGN CM301;SB=XX;WB=XX;-XIDC;-XIDS
-cp;12FF2;-Alpha;gc=Po;-IDC;-IDS;na=CYPRO-MINOAN SIGN CM302;SB=XX;WB=XX;-XIDC;-XIDS
+cp;12FF1;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=CYPRO-MINOAN SIGN CM301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;12FF2;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=CYPRO-MINOAN SIGN CM302;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;12FF3..12FFF
-block;13000..1342F;age=5.2;Alpha;blk=Egyptian_Hieroglyphs;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Egyp;vo=U;WB=LE;XIDC;XIDS
+block;13000..1342F;age=5.2;Alpha;blk=Egyptian_Hieroglyphs;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Egyp;vo=U;WB=LE;XIDC;XIDS
# 13000..1342F Egyptian Hieroglyphs
# A. Man and his occupations
cp;13000;na=EGYPTIAN HIEROGLYPH A001
@@ -29468,30 +29485,30 @@ cp;1342E;na=EGYPTIAN HIEROGLYPH AA032
# Addition to group V
cp;1342F;age=15.0;lb=OP;na=EGYPTIAN HIEROGLYPH V011D
-block;13430..1345F;age=15.0;blk=Egyptian_Hieroglyph_Format_Controls;CI;gc=Cf;GCB=CN;IDC;jt=T;lb=CM;SB=EX;sc=Egyp;vo=U;WB=Extend;XIDC
+block;13430..1345F;age=15.0;blk=Egyptian_Hieroglyph_Format_Controls;CI;gc=Cf;GCB=CN;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;SB=EX;sc=Egyp;vo=U;WB=Extend;XIDC
# 13430..1345F Egyptian Hieroglyph Format Controls
# Joiners
-cp;13430;age=12.0;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH VERTICAL JOINER;SB=FO;WB=FO;-XIDC
-cp;13431;age=12.0;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;SB=FO;WB=FO;-XIDC
+cp;13430;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH VERTICAL JOINER;SB=FO;WB=FO;-XIDC
+cp;13431;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;SB=FO;WB=FO;-XIDC
# Sign insertion controls
-cp;13432;age=12.0;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT TOP START;SB=FO;WB=FO;-XIDC
-cp;13433;age=12.0;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT BOTTOM START;SB=FO;WB=FO;-XIDC
-cp;13434;age=12.0;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT TOP END;SB=FO;WB=FO;-XIDC
-cp;13435;age=12.0;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT BOTTOM END;SB=FO;WB=FO;-XIDC
+cp;13432;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT TOP START;SB=FO;WB=FO;-XIDC
+cp;13433;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT BOTTOM START;SB=FO;WB=FO;-XIDC
+cp;13434;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT TOP END;SB=FO;WB=FO;-XIDC
+cp;13435;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT BOTTOM END;SB=FO;WB=FO;-XIDC
# Sign stacking control
-cp;13436;age=12.0;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;SB=FO;WB=FO;-XIDC
+cp;13436;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;SB=FO;WB=FO;-XIDC
# Segment scoping delimiters
-cp;13437;age=12.0;-IDC;lb=OP;na=EGYPTIAN HIEROGLYPH BEGIN SEGMENT;SB=FO;WB=FO;-XIDC
-cp;13438;age=12.0;-IDC;lb=CL;na=EGYPTIAN HIEROGLYPH END SEGMENT;SB=FO;WB=FO;-XIDC
+cp;13437;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=OP;na=EGYPTIAN HIEROGLYPH BEGIN SEGMENT;SB=FO;WB=FO;-XIDC
+cp;13438;age=12.0;-IDC;Identifier_Type=Exclusion Not_XID;lb=CL;na=EGYPTIAN HIEROGLYPH END SEGMENT;SB=FO;WB=FO;-XIDC
# Sign insertion controls
-cp;13439;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT MIDDLE;SB=FO;WB=FO;-XIDC
-cp;1343A;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT TOP;SB=FO;WB=FO;-XIDC
-cp;1343B;-IDC;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT BOTTOM;SB=FO;WB=FO;-XIDC
+cp;13439;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT MIDDLE;SB=FO;WB=FO;-XIDC
+cp;1343A;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT TOP;SB=FO;WB=FO;-XIDC
+cp;1343B;-IDC;Identifier_Type=Exclusion Not_XID;lb=GL;na=EGYPTIAN HIEROGLYPH INSERT AT BOTTOM;SB=FO;WB=FO;-XIDC
# Enclosure controls
-cp;1343C;-IDC;lb=OP;na=EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE;SB=FO;WB=FO;-XIDC
-cp;1343D;-IDC;lb=CL;na=EGYPTIAN HIEROGLYPH END ENCLOSURE;SB=FO;WB=FO;-XIDC
-cp;1343E;-IDC;lb=OP;na=EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE;SB=FO;WB=FO;-XIDC
-cp;1343F;-IDC;lb=CL;na=EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE;SB=FO;WB=FO;-XIDC
+cp;1343C;-IDC;Identifier_Type=Exclusion Not_XID;lb=OP;na=EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE;SB=FO;WB=FO;-XIDC
+cp;1343D;-IDC;Identifier_Type=Exclusion Not_XID;lb=CL;na=EGYPTIAN HIEROGLYPH END ENCLOSURE;SB=FO;WB=FO;-XIDC
+cp;1343E;-IDC;Identifier_Type=Exclusion Not_XID;lb=OP;na=EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE;SB=FO;WB=FO;-XIDC
+cp;1343F;-IDC;Identifier_Type=Exclusion Not_XID;lb=CL;na=EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE;SB=FO;WB=FO;-XIDC
# Mirror control
cp;13440;bc=NSM;gc=Mn;GCB=EX;Gr_Ext;na=EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
# Blank and lost signs
@@ -29519,7 +29536,7 @@ cp;13454;bc=NSM;Dia;gc=Mn;GCB=EX;Gr_Ext;na=EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
cp;13455;bc=NSM;Dia;gc=Mn;GCB=EX;Gr_Ext;na=EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
unassigned;13456..1345F;vo=U
-block;14400..1467F;age=8.0;Alpha;blk=Anatolian_Hieroglyphs;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Hluw;vo=U;WB=LE;XIDC;XIDS
+block;14400..1467F;age=8.0;Alpha;blk=Anatolian_Hieroglyphs;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Hluw;vo=U;WB=LE;XIDC;XIDS
# 14400..1467F Anatolian Hieroglyphs
# A. The human body and clothing
cp;14400;na=ANATOLIAN HIEROGLYPH A001
@@ -30117,7 +30134,7 @@ cp;14645;na=ANATOLIAN HIEROGLYPH A529
cp;14646;na=ANATOLIAN HIEROGLYPH A530
unassigned;14647..1467F;vo=U
-block;16800..16A3F;age=6.0;Alpha;blk=Bamum_Sup;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Bamu;WB=LE;XIDC;XIDS
+block;16800..16A3F;age=6.0;Alpha;blk=Bamum_Sup;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Bamu;WB=LE;XIDC;XIDS
# 16800..16A3F Bamum Supplement
# Characters found through Phase A
cp;16800;na=BAMUM LETTER PHASE-A NGKUE MFON
@@ -30696,7 +30713,7 @@ cp;16A37;na=BAMUM LETTER PHASE-F SAMBA
cp;16A38;na=BAMUM LETTER PHASE-F VUEQ
unassigned;16A39..16A3F
-block;16A40..16A6F;age=7.0;Alpha;blk=Mro;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Mroo;WB=LE;XIDC;XIDS
+block;16A40..16A6F;age=7.0;Alpha;blk=Mro;gc=Lo;Gr_Base;IDC;Identifier_Type=Uncommon_Use Exclusion;IDS;lb=AL;SB=LE;sc=Mroo;WB=LE;XIDC;XIDS
# 16A40..16A6F Mro
# Letters
cp;16A40;na=MRO LETTER TA
@@ -30744,10 +30761,10 @@ cp;16A68;-Alpha;gc=Nd;-IDS;lb=NU;na=MRO DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
cp;16A69;-Alpha;gc=Nd;-IDS;lb=NU;na=MRO DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;16A6A..16A6D
# Punctuation
-cp;16A6E;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=MRO DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;16A6F;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=MRO DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;16A6E;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=MRO DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;16A6F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=MRO DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;16A70..16ACF;age=14.0;Alpha;blk=Tangsa;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Tnsa;WB=LE;XIDC;XIDS
+block;16A70..16ACF;age=14.0;Alpha;blk=Tangsa;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Tnsa;WB=LE;XIDC;XIDS
# 16A70..16ACF Tangsa
# Vowels
cp;16A70;na=TANGSA LETTER OZ
@@ -30844,7 +30861,7 @@ cp;16AC8;-Alpha;gc=Nd;-IDS;lb=NU;na=TANGSA DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-X
cp;16AC9;-Alpha;gc=Nd;-IDS;lb=NU;na=TANGSA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;16ACA..16ACF
-block;16AD0..16AFF;age=7.0;Alpha;blk=Bassa_Vah;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Bass;WB=LE;XIDC;XIDS
+block;16AD0..16AFF;age=7.0;Alpha;blk=Bassa_Vah;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Bass;WB=LE;XIDC;XIDS
# 16AD0..16AFF Bassa Vah
# Consonant letters
cp;16AD0;na=BASSA VAH LETTER ENNI
@@ -30886,10 +30903,10 @@ cp;16AF2;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Exten
cp;16AF3;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BASSA VAH COMBINING LOW-MID TONE;SB=EX;WB=Extend;-XIDS
cp;16AF4;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BASSA VAH COMBINING HIGH-LOW TONE;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;16AF5;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=BASSA VAH FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;16AF5;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=BASSA VAH FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;16AF6..16AFF
-block;16B00..16B8F;age=7.0;Alpha;blk=Pahawh_Hmong;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Hmng;WB=LE;XIDC;XIDS
+block;16B00..16B8F;age=7.0;Alpha;blk=Pahawh_Hmong;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Hmng;WB=LE;XIDC;XIDS
# 16B00..16B8F Pahawh Hmong
# Vowel rimes
cp;16B00;na=PAHAWH HMONG VOWEL KEEB
@@ -30950,24 +30967,24 @@ cp;16B34;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Ext
cp;16B35;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM HOM;SB=EX;WB=Extend;-XIDS
cp;16B36;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM TAUM;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;16B37;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=PAHAWH HMONG SIGN VOS THOM;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;16B38;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=PAHAWH HMONG SIGN VOS TSHAB CEEB;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;16B39;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=PAHAWH HMONG SIGN CIM CHEEM;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;16B3A;-Alpha;gc=Po;-IDC;-IDS;na=PAHAWH HMONG SIGN VOS THIAB;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B3B;-Alpha;gc=Po;-IDC;-IDS;na=PAHAWH HMONG SIGN VOS FEEM;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B37;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=PAHAWH HMONG SIGN VOS THOM;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;16B38;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=PAHAWH HMONG SIGN VOS TSHAB CEEB;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;16B39;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=PAHAWH HMONG SIGN CIM CHEEM;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;16B3A;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG SIGN VOS THIAB;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B3B;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG SIGN VOS FEEM;SB=XX;WB=XX;-XIDC;-XIDS
# Mathematical operators
-cp;16B3C;-Alpha;gc=So;-IDC;-IDS;na=PAHAWH HMONG SIGN XYEEM NTXIV;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B3D;-Alpha;gc=So;-IDC;-IDS;na=PAHAWH HMONG SIGN XYEEM RHO;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B3E;-Alpha;gc=So;-IDC;-IDS;na=PAHAWH HMONG SIGN XYEEM TOV;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B3F;-Alpha;gc=So;-IDC;-IDS;na=PAHAWH HMONG SIGN XYEEM FAIB;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B3C;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG SIGN XYEEM NTXIV;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B3D;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG SIGN XYEEM RHO;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B3E;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG SIGN XYEEM TOV;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B3F;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG SIGN XYEEM FAIB;SB=XX;WB=XX;-XIDC;-XIDS
# Modifier letters
cp;16B40;CI;gc=Lm;na=PAHAWH HMONG SIGN VOS SEEV
cp;16B41;CI;gc=Lm;na=PAHAWH HMONG SIGN MEEJ SUAB
cp;16B42;CI;Ext;gc=Lm;na=PAHAWH HMONG SIGN VOS NRUA
cp;16B43;CI;Ext;gc=Lm;na=PAHAWH HMONG SIGN IB YAM
# Punctuation
-cp;16B44;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=PAHAWH HMONG SIGN XAUS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;16B45;-Alpha;gc=So;-IDC;-IDS;na=PAHAWH HMONG SIGN CIM TSOV ROG;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B44;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=PAHAWH HMONG SIGN XAUS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;16B45;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG SIGN CIM TSOV ROG;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;16B46..16B4F
# Digits
cp;16B50;-Alpha;gc=Nd;-IDS;lb=NU;na=PAHAWH HMONG DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -30982,13 +30999,13 @@ cp;16B58;-Alpha;gc=Nd;-IDS;lb=NU;na=PAHAWH HMONG DIGIT EIGHT;nt=De;nv=8;SB=NU;WB
cp;16B59;-Alpha;gc=Nd;-IDS;lb=NU;na=PAHAWH HMONG DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;16B5A
# Numbers
-cp;16B5B;-Alpha;gc=No;-IDC;-IDS;na=PAHAWH HMONG NUMBER TENS;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B5C;-Alpha;gc=No;-IDC;-IDS;na=PAHAWH HMONG NUMBER HUNDREDS;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B5D;-Alpha;gc=No;-IDC;-IDS;na=PAHAWH HMONG NUMBER TEN THOUSANDS;nt=Nu;nv=10000;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B5E;-Alpha;gc=No;-IDC;-IDS;na=PAHAWH HMONG NUMBER MILLIONS;nt=Nu;nv=1000000;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B5F;-Alpha;gc=No;-IDC;-IDS;na=PAHAWH HMONG NUMBER HUNDRED MILLIONS;nt=Nu;nv=100000000;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B60;-Alpha;gc=No;-IDC;-IDS;na=PAHAWH HMONG NUMBER TEN BILLIONS;nt=Nu;nv=10000000000;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16B61;-Alpha;gc=No;-IDC;-IDS;na=PAHAWH HMONG NUMBER TRILLIONS;nt=Nu;nv=1000000000000;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B5B;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG NUMBER TENS;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B5C;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG NUMBER HUNDREDS;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B5D;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG NUMBER TEN THOUSANDS;nt=Nu;nv=10000;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B5E;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG NUMBER MILLIONS;nt=Nu;nv=1000000;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B5F;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG NUMBER HUNDRED MILLIONS;nt=Nu;nv=100000000;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B60;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG NUMBER TEN BILLIONS;nt=Nu;nv=10000000000;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16B61;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=PAHAWH HMONG NUMBER TRILLIONS;nt=Nu;nv=1000000000000;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;16B62
# Logographs
cp;16B63;na=PAHAWH HMONG SIGN VOS LUB
@@ -31034,7 +31051,7 @@ cp;16B8D;na=PAHAWH HMONG CLAN SIGN TSWB
cp;16B8E;na=PAHAWH HMONG CLAN SIGN KWM
cp;16B8F;na=PAHAWH HMONG CLAN SIGN VWJ
-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
+block;16E40..16E9F;age=11.0;Alpha;blk=Medefaidrin;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LO;sc=Medf;WB=LE;XIDC;XIDS
# 16E40..16E9F Medefaidrin
# Uppercase letters
cp;16E40;cf=16E60;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER M;NFKC_CF=16E60;NFKC_SCF=16E60;SB=UP;scf=16E60;slc=16E60;Upper
@@ -31103,40 +31120,40 @@ cp;16E7D;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER O;stc=16E5D;suc=16E5D
cp;16E7E;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER AI;stc=16E5E;suc=16E5E
cp;16E7F;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER Y;stc=16E5F;suc=16E5F
# Digits
-cp;16E80;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT ZERO;nt=Nu;nv=0;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E81;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E82;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E83;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E84;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E85;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E86;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT SIX;nt=Nu;nv=6;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E87;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT SEVEN;nt=Nu;nv=7;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E88;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT EIGHT;nt=Nu;nv=8;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E89;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT NINE;nt=Nu;nv=9;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E80;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT ZERO;nt=Nu;nv=0;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E81;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E82;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E83;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E84;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E85;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E86;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT SIX;nt=Nu;nv=6;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E87;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT SEVEN;nt=Nu;nv=7;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E88;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT EIGHT;nt=Nu;nv=8;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E89;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT NINE;nt=Nu;nv=9;SB=XX;WB=XX;-XIDC;-XIDS
# Numbers
-cp;16E8A;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E8B;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER ELEVEN;nt=Nu;nv=11;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E8C;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER TWELVE;nt=Nu;nv=12;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E8D;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER THIRTEEN;nt=Nu;nv=13;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E8E;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER FOURTEEN;nt=Nu;nv=14;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E8F;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER FIFTEEN;nt=Nu;nv=15;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E90;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER SIXTEEN;nt=Nu;nv=16;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E91;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER SEVENTEEN;nt=Nu;nv=17;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E92;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER EIGHTEEN;nt=Nu;nv=18;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E93;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN NUMBER NINETEEN;nt=Nu;nv=19;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E8A;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E8B;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER ELEVEN;nt=Nu;nv=11;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E8C;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER TWELVE;nt=Nu;nv=12;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E8D;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER THIRTEEN;nt=Nu;nv=13;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E8E;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER FOURTEEN;nt=Nu;nv=14;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E8F;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER FIFTEEN;nt=Nu;nv=15;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E90;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER SIXTEEN;nt=Nu;nv=16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E91;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER SEVENTEEN;nt=Nu;nv=17;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E92;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER EIGHTEEN;nt=Nu;nv=18;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E93;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN NUMBER NINETEEN;nt=Nu;nv=19;SB=XX;WB=XX;-XIDC;-XIDS
# Alternate digits
-cp;16E94;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT ONE ALTERNATE FORM;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E95;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT TWO ALTERNATE FORM;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E96;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT THREE ALTERNATE FORM;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E94;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT ONE ALTERNATE FORM;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E95;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT TWO ALTERNATE FORM;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E96;-Alpha;-Cased;-CWCM;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN DIGIT THREE ALTERNATE FORM;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
-cp;16E97;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=BA;na=MEDEFAIDRIN COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
-cp;16E98;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=BA;na=MEDEFAIDRIN FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;16E97;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=MEDEFAIDRIN COMMA;SB=XX;Term;WB=XX;-XIDC;-XIDS
+cp;16E98;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=MEDEFAIDRIN FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
# Symbols
-cp;16E99;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=MEDEFAIDRIN SYMBOL AIVA;SB=XX;WB=XX;-XIDC;-XIDS
-cp;16E9A;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=MEDEFAIDRIN EXCLAMATION OH;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E99;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN SYMBOL AIVA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;16E9A;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MEDEFAIDRIN EXCLAMATION OH;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;16E9B..16E9F
-block;16F00..16F9F;age=6.1;Alpha;blk=Miao;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Plrd;WB=Extend;XIDC;XIDS
+block;16F00..16F9F;age=6.1;Alpha;blk=Miao;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Plrd;WB=Extend;XIDC;XIDS
# 16F00..16F9F Miao
# Consonant onsets
cp;16F00;na=MIAO LETTER PA;WB=LE
@@ -31296,24 +31313,24 @@ 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
cp;16F9F;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-8;WB=LE
-block;16FE0..16FFF;age=13.0;Alpha;blk=Ideographic_Symbols;ea=W;gc=Lm;Gr_Base;IDC;lb=NS;SB=EX;sc=Hani;vo=U;WB=Extend;XIDC
+block;16FE0..16FFF;age=13.0;Alpha;blk=Ideographic_Symbols;ea=W;gc=Lm;Gr_Base;IDC;Identifier_Type=Exclusion;lb=NS;SB=EX;sc=Hani;vo=U;WB=Extend;XIDC
# 16FE0..16FFF Ideographic Symbols and Punctuation
# Tangut mark
cp;16FE0;age=9.0;CI;Ext;IDS;na=TANGUT ITERATION MARK;SB=LE;sc=Tang;WB=LE;XIDS
# Nushu mark
cp;16FE1;age=10.0;CI;Ext;IDS;na=NUSHU ITERATION MARK;SB=LE;sc=Nshu;WB=LE;XIDS
# Marks used in ancient Chinese texts
-cp;16FE2;age=12.0;-Alpha;bc=ON;gc=Po;-IDC;na=OLD CHINESE HOOK MARK;SB=XX;WB=XX;-XIDC
-cp;16FE3;age=12.0;CI;Ext;IDS;na=OLD CHINESE ITERATION MARK;SB=LE;WB=LE;XIDS
+cp;16FE2;age=12.0;-Alpha;bc=ON;gc=Po;-IDC;Identifier_Type=Not_XID;na=OLD CHINESE HOOK MARK;SB=XX;WB=XX;-XIDC
+cp;16FE3;age=12.0;CI;Ext;Identifier_Type=Obsolete;IDS;na=OLD CHINESE ITERATION MARK;SB=LE;WB=LE;XIDS
# Small Khitan format character
cp;16FE4;-Alpha;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Ideo;jt=T;lb=GL;na=KHITAN SMALL SCRIPT FILLER;sc=Kits
unassigned;16FE5..16FEF;vo=U
# Combining diacritics for CJK ideographs
-cp;16FF0;ccc=6;Dia;gc=Mc;GCB=SM;lb=CM;na=VIETNAMESE ALTERNATE READING MARK CA
-cp;16FF1;ccc=6;Dia;gc=Mc;GCB=SM;lb=CM;na=VIETNAMESE ALTERNATE READING MARK NHAY
+cp;16FF0;ccc=6;Dia;gc=Mc;GCB=SM;Identifier_Status=Allowed;Identifier_Type=Recommended;lb=CM;na=VIETNAMESE ALTERNATE READING MARK CA
+cp;16FF1;ccc=6;Dia;gc=Mc;GCB=SM;Identifier_Status=Allowed;Identifier_Type=Recommended;lb=CM;na=VIETNAMESE ALTERNATE READING MARK NHAY
unassigned;16FF2..16FFF;vo=U
-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
+block;17000..187FF;Alpha;blk=Tangut;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;Ideo;IDS;lb=ID;SB=LE;sc=Tang;vo=U;XIDC;XIDS
# 17000..187F7 Tangut
algnamesrange;17000..187F7;han;TANGUT IDEOGRAPH-
cp;17000..187EC;age=9.0
@@ -31321,7 +31338,7 @@ cp;187ED..187F1;age=11.0
cp;187F2..187F7;age=12.0
unassigned;187F8..187FF;vo=U
-block;18800..18AFF;age=9.0;Alpha;blk=Tangut_Components;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Tang;vo=U;XIDC;XIDS
+block;18800..18AFF;age=9.0;Alpha;blk=Tangut_Components;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;Ideo;IDS;lb=ID;SB=LE;sc=Tang;vo=U;XIDC;XIDS
# 18800..18AFF Tangut Components
# One-stroke components
cp;18800;na=TANGUT COMPONENT-001
@@ -32107,7 +32124,7 @@ cp;18AFD;age=13.0;na=TANGUT COMPONENT-766
cp;18AFE;age=13.0;na=TANGUT COMPONENT-767
cp;18AFF;age=13.0;na=TANGUT COMPONENT-768
-block;18B00..18CFF;age=13.0;Alpha;blk=Khitan_Small_Script;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=AL;SB=LE;sc=Kits;vo=U;XIDC;XIDS
+block;18B00..18CFF;age=13.0;Alpha;blk=Khitan_Small_Script;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;Ideo;IDS;lb=AL;SB=LE;sc=Kits;vo=U;XIDC;XIDS
# 18B00..18CFF Khitan Small Script
# Iteration mark
cp;18B00;na=KHITAN SMALL SCRIPT CHARACTER-18B00
@@ -32602,12 +32619,12 @@ cp;18CD4;na=KHITAN SMALL SCRIPT CHARACTER-18CD4
cp;18CD5;na=KHITAN SMALL SCRIPT CHARACTER-18CD5
unassigned;18CD6..18CFF;vo=U
-block;18D00..18D7F;age=13.0;Alpha;blk=Tangut_Sup;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Tang;vo=U;XIDC;XIDS
+block;18D00..18D7F;age=13.0;Alpha;blk=Tangut_Sup;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;Ideo;IDS;lb=ID;SB=LE;sc=Tang;vo=U;XIDC;XIDS
# 18D00..18D08 Tangut Supplement
algnamesrange;18D00..18D08;han;TANGUT IDEOGRAPH-
unassigned;18D09..18D7F;vo=U
-block;1AFF0..1AFFF;age=14.0;Alpha;blk=Kana_Ext_B;CI;Dia;ea=W;gc=Lm;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Kana;vo=U;WB=KA;XIDC;XIDS
+block;1AFF0..1AFFF;age=14.0;Alpha;blk=Kana_Ext_B;CI;Dia;ea=W;gc=Lm;Gr_Base;IDC;Identifier_Type=Uncommon_Use;IDS;lb=AL;SB=LE;sc=Kana;vo=U;WB=KA;XIDC;XIDS
# 1AFF0..1AFFF Kana Extended-B
# Tone marks
cp;1AFF0;na=KATAKANA LETTER MINNAN TONE-2
@@ -32628,7 +32645,7 @@ cp;1AFFD;na=KATAKANA LETTER MINNAN NASALIZED TONE-7
cp;1AFFE;na=KATAKANA LETTER MINNAN NASALIZED TONE-8
unassigned;1AFFF;vo=U
-block;1B000..1B0FF;age=10.0;Alpha;blk=Kana_Sup;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Hira;vo=U;XIDC;XIDS
+block;1B000..1B0FF;age=10.0;Alpha;blk=Kana_Sup;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=ID;SB=LE;sc=Hira;vo=U;XIDC;XIDS
# 1B000..1B0FF Kana Supplement
# Historic Katakana
cp;1B000;age=6.0;na=KATAKANA LETTER ARCHAIC E;sc=Kana;WB=KA
@@ -32890,7 +32907,7 @@ cp;1B0FD;na=HENTAIGANA LETTER RU-6
cp;1B0FE;na=HENTAIGANA LETTER RE-1
cp;1B0FF;na=HENTAIGANA LETTER RE-2
-block;1B100..1B12F;age=10.0;Alpha;blk=Kana_Ext_A;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Hira;vo=U;XIDC;XIDS
+block;1B100..1B12F;age=10.0;Alpha;blk=Kana_Ext_A;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Obsolete;IDS;lb=ID;SB=LE;sc=Hira;vo=U;XIDC;XIDS
# 1B100..1B12F Kana Extended-A
# Hentaigana
cp;1B100;na=HENTAIGANA LETTER RE-3
@@ -32925,14 +32942,14 @@ cp;1B11C;na=HENTAIGANA LETTER WO-7
cp;1B11D;na=HENTAIGANA LETTER N-MU-MO-1
cp;1B11E;na=HENTAIGANA LETTER N-MU-MO-2
# Historic Hiragana
-cp;1B11F;age=14.0;na=HIRAGANA LETTER ARCHAIC WU
+cp;1B11F;age=14.0;Identifier_Status=Allowed;Identifier_Type=Recommended;na=HIRAGANA LETTER ARCHAIC WU
# Historic Katakana
-cp;1B120;age=14.0;na=KATAKANA LETTER ARCHAIC YI;sc=Kana;WB=KA
-cp;1B121;age=14.0;na=KATAKANA LETTER ARCHAIC YE;sc=Kana;WB=KA
-cp;1B122;age=14.0;na=KATAKANA LETTER ARCHAIC WU;sc=Kana;WB=KA
+cp;1B120;age=14.0;Identifier_Status=Allowed;Identifier_Type=Recommended;na=KATAKANA LETTER ARCHAIC YI;sc=Kana;WB=KA
+cp;1B121;age=14.0;Identifier_Status=Allowed;Identifier_Type=Recommended;na=KATAKANA LETTER ARCHAIC YE;sc=Kana;WB=KA
+cp;1B122;age=14.0;Identifier_Status=Allowed;Identifier_Type=Recommended;na=KATAKANA LETTER ARCHAIC WU;sc=Kana;WB=KA
unassigned;1B123..1B12F;vo=U
-block;1B130..1B16F;age=12.0;Alpha;blk=Small_Kana_Ext;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=CJ;SB=LE;sc=Kana;vo=U;XIDC;XIDS
+block;1B130..1B16F;age=12.0;Alpha;blk=Small_Kana_Ext;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=CJ;SB=LE;sc=Kana;vo=U;XIDC;XIDS
# 1B130..1B16F Small Kana Extension
unassigned;1B130..1B131;vo=U
# Historic small hiragana letters
@@ -32951,7 +32968,7 @@ cp;1B166;na=KATAKANA LETTER SMALL WO;WB=KA
cp;1B167;na=KATAKANA LETTER SMALL N;WB=KA
unassigned;1B168..1B16F;vo=U
-block;1B170..1B2FF;age=10.0;Alpha;blk=Nushu;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Nshu;vo=U;XIDC;XIDS
+block;1B170..1B2FF;age=10.0;Alpha;blk=Nushu;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;Ideo;IDS;lb=ID;SB=LE;sc=Nshu;vo=U;XIDC;XIDS
# 1B170..1B2FF Nushu
# One-stroke character
cp;1B170;na=NUSHU CHARACTER-1B170
@@ -33367,7 +33384,7 @@ cp;1B2FA;na=NUSHU CHARACTER-1B2FA
cp;1B2FB;na=NUSHU CHARACTER-1B2FB
unassigned;1B2FC..1B2FF;vo=U
-block;1BC00..1BC9F;age=7.0;Alpha;blk=Duployan;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Dupl;WB=LE;XIDC;XIDS
+block;1BC00..1BC9F;age=7.0;Alpha;blk=Duployan;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Dupl;WB=LE;XIDC;XIDS
# 1BC00..1BC9F Duployan
# Non-joining consonants
cp;1BC00;na=DUPLOYAN LETTER H
@@ -33530,15 +33547,15 @@ cp;1BC98;na=DUPLOYAN AFFIX LOW VERTICAL
cp;1BC99;na=DUPLOYAN AFFIX LOW ARROW
unassigned;1BC9A..1BC9B
# Miscellaneous sign
-cp;1BC9C;-Alpha;gc=So;-IDC;-IDS;na=DUPLOYAN SIGN O WITH CROSS;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BC9C;-Alpha;gc=So;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=DUPLOYAN SIGN O WITH CROSS;SB=XX;WB=XX;-XIDC;-XIDS
# Sloan R-form selector
cp;1BC9D;-Alpha;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=DUPLOYAN THICK LETTER SELECTOR;SB=EX;WB=Extend;-XIDS
# Shorthand double mark
cp;1BC9E;bc=NSM;ccc=1;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=DUPLOYAN DOUBLE MARK;SB=EX;WB=Extend;-XIDS
# Chinook punctuation
-cp;1BC9F;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=DUPLOYAN PUNCTUATION CHINOOK FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;1BC9F;-Alpha;gc=Po;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;lb=BA;na=DUPLOYAN PUNCTUATION CHINOOK FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;1BCA0..1BCAF;age=7.0;bc=BN;blk=Shorthand_Format_Controls;CI;CWKCF;DI;gc=Cf;GCB=CN;jt=T;lb=CM;NFKC_SCF=;SB=FO;sc=Zyyy;scx=Dupl;WB=FO
+block;1BCA0..1BCAF;age=7.0;bc=BN;blk=Shorthand_Format_Controls;CI;CWKCF;DI;gc=Cf;GCB=CN;Identifier_Type=Default_Ignorable;jt=T;lb=CM;NFKC_SCF=;SB=FO;sc=Zyyy;scx=Dupl;WB=FO
# 1BCA0..1BCAF Shorthand Format Controls
# Shorthand format controls
cp;1BCA0;na=SHORTHAND FORMAT LETTER OVERLAP;NFKC_CF=
@@ -33547,81 +33564,81 @@ cp;1BCA2;na=SHORTHAND FORMAT DOWN STEP;NFKC_CF=
cp;1BCA3;na=SHORTHAND FORMAT UP STEP;NFKC_CF=
unassigned;1BCA4..1BCAF
-block;1CF00..1CFCF;age=14.0;blk=Znamenny_Music;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;1CF00..1CFCF;age=14.0;blk=Znamenny_Music;gc=So;Gr_Base;Identifier_Type=Technical Not_XID;lb=AL;sc=Zyyy;vo=U
# 1CF00..1CFCF Znamenny Musical Notation
# Combining red marks
-cp;1CF00;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF01;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF02;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TSATA ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF03;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF04;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK NIZKO ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF05;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK SREDNE ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF06;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF07;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF08;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF09;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF0A;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF0B;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF0C;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF0D;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF0E;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TSATA ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF0F;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF10;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK NIZKO ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF11;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK SREDNE ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF12;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF13;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF14;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF15;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF16;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF17;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF18;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TSATA S KRYZHEM;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF19;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF1A;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF1B;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF1C;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE STRANNO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF1D;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF1E;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF1F;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO VYSOKO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF20;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK ZELO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF21;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK ON;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF22;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK RAVNO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF23;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TIKHAYA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF24;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK BORZAYA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF25;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK UDARKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF26;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK PODVERTKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF27;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK LOMKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF28;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK KUPNAYA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF29;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK KACHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF2A;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK ZEVOK;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF2B;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK SKOBA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF2C;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK RAZSEKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF2D;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK KRYZH ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF00;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF01;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF02;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TSATA ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF03;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF04;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK NIZKO ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF05;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK SREDNE ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF06;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF07;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF08;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF09;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF0A;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF0B;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF0C;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF0D;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF0E;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TSATA ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF0F;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF10;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK NIZKO ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF11;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK SREDNE ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF12;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF13;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF14;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF15;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF16;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF17;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF18;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TSATA S KRYZHEM;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF19;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF1A;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF1B;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF1C;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK POVYSHE STRANNO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF1D;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF1E;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF1F;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK GORAZDO VYSOKO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF20;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK ZELO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF21;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK ON;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF22;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK RAVNO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF23;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TIKHAYA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF24;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK BORZAYA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF25;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK UDARKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF26;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK PODVERTKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF27;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK LOMKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF28;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK KUPNAYA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF29;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK KACHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF2A;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK ZEVOK;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF2B;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK SKOBA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF2C;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK RAZSEKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF2D;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK KRYZH ON LEFT;SB=EX;sc=Zinh;WB=Extend;XIDC
unassigned;1CF2E..1CF2F;vo=U
# Combining black marks
-cp;1CF30;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF31;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING TONAL RANGE MARK SVETLO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF32;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF33;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK ZADERZHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF34;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF35;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK OTSECHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF36;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK PODCHASHIE;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF37;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF38;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK CHASHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF39;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK CHASHKA POLNAYA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF3A;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK OBLACHKO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF3B;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK SOROCHYA NOZHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF3C;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TOCHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF3D;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK DVOETOCHIE;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF3E;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING ATTACHING VERTICAL OMET;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF3F;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK CURVED OMET;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF40;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK KRYZH;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF41;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF30;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF31;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING TONAL RANGE MARK SVETLO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF32;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF33;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK ZADERZHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF34;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF35;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK OTSECHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF36;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK PODCHASHIE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF37;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF38;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK CHASHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF39;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK CHASHKA POLNAYA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF3A;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK OBLACHKO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF3B;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK SOROCHYA NOZHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF3C;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK TOCHKA;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF3D;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK DVOETOCHIE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF3E;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING ATTACHING VERTICAL OMET;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF3F;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK CURVED OMET;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF40;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING MARK KRYZH;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF41;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR;SB=EX;sc=Zinh;WB=Extend;XIDC
# Modifying marks for priznaki
-cp;1CF42;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER LEVEL-2;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF43;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER LEVEL-3;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF44;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF45;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER KRYZH;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1CF46;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER ROG;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF42;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER LEVEL-2;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF43;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER LEVEL-3;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF44;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF45;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER KRYZH;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1CF46;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;jt=T;lb=CM;na=ZNAMENNY PRIZNAK MODIFIER ROG;SB=EX;sc=Zinh;WB=Extend;XIDC
unassigned;1CF47..1CF4F;vo=U
# Znamenny neumes
cp;1CF50;na=ZNAMENNY NEUME KRYUK
@@ -33742,7 +33759,7 @@ cp;1CFC2;na=ZNAMENNY NEUME NEMKA
cp;1CFC3;na=ZNAMENNY NEUME PAUK
unassigned;1CFC4..1CFCF;vo=U
-block;1D000..1D0FF;age=3.1;blk=Byzantine_Music;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;1D000..1D0FF;age=3.1;blk=Byzantine_Music;gc=So;Gr_Base;Identifier_Type=Technical Not_XID;lb=AL;sc=Zyyy;vo=U
# 1D000..1D0FF Byzantine Musical Symbols
# Prosodies (Prosodics)
cp;1D000;na=BYZANTINE MUSICAL SYMBOL PSILI
@@ -34007,7 +34024,7 @@ cp;1D0F4;na=BYZANTINE MUSICAL SYMBOL KLASMA KATO
cp;1D0F5;na=BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
unassigned;1D0F6..1D0FF;vo=U
-block;1D100..1D1FF;age=3.1;blk=Music;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;1D100..1D1FF;age=3.1;blk=Music;gc=So;Gr_Base;Identifier_Type=Technical Not_XID;lb=AL;sc=Zyyy;vo=U
# 1D100..1D1FF Musical Symbols
# Bars
cp;1D100;na=MUSICAL SYMBOL SINGLE BARLINE
@@ -34117,58 +34134,58 @@ cp;1D15B;na=MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
# Notes
cp;1D15C;na=MUSICAL SYMBOL BREVE
cp;1D15D;na=MUSICAL SYMBOL WHOLE NOTE
-cp;1D15E;Comp_Ex;CWKCF;dm=1D157 1D165;dt=Can;na=MUSICAL SYMBOL HALF NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D157 1D165;NFKC_QC=N;NFKC_SCF=1D157 1D165;NFKD_QC=N
-cp;1D15F;Comp_Ex;CWKCF;dm=1D158 1D165;dt=Can;na=MUSICAL SYMBOL QUARTER NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165;NFKC_QC=N;NFKC_SCF=1D158 1D165;NFKD_QC=N
-cp;1D160;Comp_Ex;CWKCF;dm=1D15F 1D16E;dt=Can;na=MUSICAL SYMBOL EIGHTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D16E;NFKD_QC=N
-cp;1D161;Comp_Ex;CWKCF;dm=1D15F 1D16F;dt=Can;na=MUSICAL SYMBOL SIXTEENTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D16F;NFKD_QC=N
-cp;1D162;Comp_Ex;CWKCF;dm=1D15F 1D170;dt=Can;na=MUSICAL SYMBOL THIRTY-SECOND NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D170;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D170;NFKD_QC=N
-cp;1D163;Comp_Ex;CWKCF;dm=1D15F 1D171;dt=Can;na=MUSICAL SYMBOL SIXTY-FOURTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D171;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D171;NFKD_QC=N
-cp;1D164;Comp_Ex;CWKCF;dm=1D15F 1D172;dt=Can;na=MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D172;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D172;NFKD_QC=N
+cp;1D15E;Comp_Ex;CWKCF;dm=1D157 1D165;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL HALF NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D157 1D165;NFKC_QC=N;NFKC_SCF=1D157 1D165;NFKD_QC=N
+cp;1D15F;Comp_Ex;CWKCF;dm=1D158 1D165;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL QUARTER NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165;NFKC_QC=N;NFKC_SCF=1D158 1D165;NFKD_QC=N
+cp;1D160;Comp_Ex;CWKCF;dm=1D15F 1D16E;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL EIGHTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D16E;NFKD_QC=N
+cp;1D161;Comp_Ex;CWKCF;dm=1D15F 1D16F;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL SIXTEENTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D16F;NFKD_QC=N
+cp;1D162;Comp_Ex;CWKCF;dm=1D15F 1D170;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL THIRTY-SECOND NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D170;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D170;NFKD_QC=N
+cp;1D163;Comp_Ex;CWKCF;dm=1D15F 1D171;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL SIXTY-FOURTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D171;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D171;NFKD_QC=N
+cp;1D164;Comp_Ex;CWKCF;dm=1D15F 1D172;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D172;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D172;NFKD_QC=N
# Stems
-cp;1D165;ccc=216;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING STEM;SB=EX;WB=Extend;XIDC
-cp;1D166;ccc=216;gc=Mc;GCB=SM;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;SB=EX;WB=Extend;XIDC
+cp;1D165;ccc=216;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING STEM;SB=EX;WB=Extend;XIDC
+cp;1D166;ccc=216;gc=Mc;GCB=SM;IDC;Identifier_Type=Technical;lb=CM;na=MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;SB=EX;WB=Extend;XIDC
# Tremolos
-cp;1D167;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-1;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D168;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-2;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D169;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-3;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D167;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-1;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D168;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-2;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D169;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-3;SB=EX;sc=Zinh;WB=Extend;XIDC
cp;1D16A;na=MUSICAL SYMBOL FINGERED TREMOLO-1
cp;1D16B;na=MUSICAL SYMBOL FINGERED TREMOLO-2
cp;1D16C;na=MUSICAL SYMBOL FINGERED TREMOLO-3
# Augmentation dot
-cp;1D16D;ccc=226;Dia;gc=Mc;GCB=SM;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING AUGMENTATION DOT;SB=EX;WB=Extend;XIDC
+cp;1D16D;ccc=226;Dia;gc=Mc;GCB=SM;IDC;Identifier_Type=Technical;lb=CM;na=MUSICAL SYMBOL COMBINING AUGMENTATION DOT;SB=EX;WB=Extend;XIDC
# Flags
-cp;1D16E;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-1;SB=EX;WB=Extend;XIDC
-cp;1D16F;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-2;SB=EX;WB=Extend;XIDC
-cp;1D170;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-3;SB=EX;WB=Extend;XIDC
-cp;1D171;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-4;SB=EX;WB=Extend;XIDC
-cp;1D172;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-5;SB=EX;WB=Extend;XIDC
+cp;1D16E;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-1;SB=EX;WB=Extend;XIDC
+cp;1D16F;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-2;SB=EX;WB=Extend;XIDC
+cp;1D170;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-3;SB=EX;WB=Extend;XIDC
+cp;1D171;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-4;SB=EX;WB=Extend;XIDC
+cp;1D172;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-5;SB=EX;WB=Extend;XIDC
# Beams and slurs
-cp;1D173;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN BEAM;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
-cp;1D174;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END BEAM;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
-cp;1D175;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN TIE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
-cp;1D176;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END TIE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
-cp;1D177;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN SLUR;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
-cp;1D178;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END SLUR;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
-cp;1D179;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN PHRASE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
-cp;1D17A;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END PHRASE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D173;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN BEAM;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D174;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=MUSICAL SYMBOL END BEAM;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D175;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN TIE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D176;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=MUSICAL SYMBOL END TIE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D177;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN SLUR;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D178;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=MUSICAL SYMBOL END SLUR;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D179;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN PHRASE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D17A;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;Identifier_Type=Default_Ignorable;jt=T;lb=CM;na=MUSICAL SYMBOL END PHRASE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
# Articulation
-cp;1D17B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING ACCENT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D17C;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D17D;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TENUTO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D17E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING STACCATISSIMO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D17F;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING MARCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D180;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING MARCATO-STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D181;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING ACCENT-STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D182;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING LOURE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING ACCENT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17C;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17D;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TENUTO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING STACCATISSIMO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17F;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING MARCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D180;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING MARCATO-STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D181;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING ACCENT-STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D182;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING LOURE;SB=EX;sc=Zinh;WB=Extend;XIDC
cp;1D183;na=MUSICAL SYMBOL ARPEGGIATO UP
cp;1D184;na=MUSICAL SYMBOL ARPEGGIATO DOWN
-cp;1D185;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOIT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D186;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING RIP;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D187;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING FLIP;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D188;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING SMEAR;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D189;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING BEND;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D18A;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOUBLE TONGUE;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D18B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TRIPLE TONGUE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D185;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOIT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D186;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING RIP;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D187;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING FLIP;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D188;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING SMEAR;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D189;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING BEND;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D18A;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOUBLE TONGUE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D18B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TRIPLE TONGUE;SB=EX;sc=Zinh;WB=Extend;XIDC
cp;1D18C;na=MUSICAL SYMBOL RINFORZANDO
cp;1D18D;na=MUSICAL SYMBOL SUBITO
cp;1D18E;na=MUSICAL SYMBOL Z
@@ -34203,10 +34220,10 @@ cp;1D1A7;na=MUSICAL SYMBOL NEBENSTIMME
cp;1D1A8;na=MUSICAL SYMBOL END OF STIMME
cp;1D1A9;na=MUSICAL SYMBOL DEGREE SLASH
# Instrumentation
-cp;1D1AA;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOWN BOW;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D1AB;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING UP BOW;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D1AC;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING HARMONIC;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D1AD;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING SNAP PIZZICATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D1AA;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOWN BOW;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D1AB;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING UP BOW;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D1AC;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING HARMONIC;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D1AD;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING SNAP PIZZICATO;SB=EX;sc=Zinh;WB=Extend;XIDC
# Pedals
cp;1D1AE;na=MUSICAL SYMBOL PEDAL MARK
cp;1D1AF;na=MUSICAL SYMBOL PEDAL UP MARK
@@ -34223,12 +34240,12 @@ cp;1D1B7;na=MUSICAL SYMBOL LONGA
cp;1D1B8;na=MUSICAL SYMBOL BREVIS
cp;1D1B9;na=MUSICAL SYMBOL SEMIBREVIS WHITE
cp;1D1BA;na=MUSICAL SYMBOL SEMIBREVIS BLACK
-cp;1D1BB;Comp_Ex;CWKCF;dm=1D1B9 1D165;dt=Can;na=MUSICAL SYMBOL MINIMA;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165;NFKC_QC=N;NFKC_SCF=1D1B9 1D165;NFKD_QC=N
-cp;1D1BC;Comp_Ex;CWKCF;dm=1D1BA 1D165;dt=Can;na=MUSICAL SYMBOL MINIMA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165;NFKC_QC=N;NFKC_SCF=1D1BA 1D165;NFKD_QC=N
-cp;1D1BD;Comp_Ex;CWKCF;dm=1D1BB 1D16E;dt=Can;na=MUSICAL SYMBOL SEMIMINIMA WHITE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D1B9 1D165 1D16E;NFKD_QC=N
-cp;1D1BE;Comp_Ex;CWKCF;dm=1D1BC 1D16E;dt=Can;na=MUSICAL SYMBOL SEMIMINIMA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D1BA 1D165 1D16E;NFKD_QC=N
-cp;1D1BF;Comp_Ex;CWKCF;dm=1D1BB 1D16F;dt=Can;na=MUSICAL SYMBOL FUSA WHITE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D1B9 1D165 1D16F;NFKD_QC=N
-cp;1D1C0;Comp_Ex;CWKCF;dm=1D1BC 1D16F;dt=Can;na=MUSICAL SYMBOL FUSA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D1BA 1D165 1D16F;NFKD_QC=N
+cp;1D1BB;Comp_Ex;CWKCF;dm=1D1B9 1D165;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL MINIMA;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165;NFKC_QC=N;NFKC_SCF=1D1B9 1D165;NFKD_QC=N
+cp;1D1BC;Comp_Ex;CWKCF;dm=1D1BA 1D165;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL MINIMA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165;NFKC_QC=N;NFKC_SCF=1D1BA 1D165;NFKD_QC=N
+cp;1D1BD;Comp_Ex;CWKCF;dm=1D1BB 1D16E;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL SEMIMINIMA WHITE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D1B9 1D165 1D16E;NFKD_QC=N
+cp;1D1BE;Comp_Ex;CWKCF;dm=1D1BC 1D16E;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL SEMIMINIMA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D1BA 1D165 1D16E;NFKD_QC=N
+cp;1D1BF;Comp_Ex;CWKCF;dm=1D1BB 1D16F;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL FUSA WHITE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D1B9 1D165 1D16F;NFKD_QC=N
+cp;1D1C0;Comp_Ex;CWKCF;dm=1D1BC 1D16F;dt=Can;Identifier_Type=Not_NFKC;na=MUSICAL SYMBOL FUSA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D1BA 1D165 1D16F;NFKD_QC=N
# Mensural rests
cp;1D1C1;na=MUSICAL SYMBOL LONGA PERFECTA REST
cp;1D1C2;na=MUSICAL SYMBOL LONGA IMPERFECTA REST
@@ -34265,26 +34282,26 @@ cp;1D1DB;na=MUSICAL SYMBOL SCANDICUS FLEXUS
cp;1D1DC;na=MUSICAL SYMBOL TORCULUS RESUPINUS
cp;1D1DD;na=MUSICAL SYMBOL PES SUBPUNCTIS
# Clef
-cp;1D1DE;age=8.0;na=MUSICAL SYMBOL KIEVAN C CLEF
+cp;1D1DE;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN C CLEF
# Ornamentation
-cp;1D1DF;age=8.0;na=MUSICAL SYMBOL KIEVAN END OF PIECE
+cp;1D1DF;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN END OF PIECE
# Notes
-cp;1D1E0;age=8.0;na=MUSICAL SYMBOL KIEVAN FINAL NOTE
-cp;1D1E1;age=8.0;na=MUSICAL SYMBOL KIEVAN RECITATIVE MARK
-cp;1D1E2;age=8.0;na=MUSICAL SYMBOL KIEVAN WHOLE NOTE
-cp;1D1E3;age=8.0;na=MUSICAL SYMBOL KIEVAN HALF NOTE
-cp;1D1E4;age=8.0;na=MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN
-cp;1D1E5;age=8.0;na=MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP
-cp;1D1E6;age=8.0;na=MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN
-cp;1D1E7;age=8.0;na=MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP
+cp;1D1E0;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN FINAL NOTE
+cp;1D1E1;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN RECITATIVE MARK
+cp;1D1E2;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN WHOLE NOTE
+cp;1D1E3;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN HALF NOTE
+cp;1D1E4;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN
+cp;1D1E5;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP
+cp;1D1E6;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN
+cp;1D1E7;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP
# Accidental
-cp;1D1E8;age=8.0;na=MUSICAL SYMBOL KIEVAN FLAT SIGN
+cp;1D1E8;age=8.0;Identifier_Type=Uncommon_Use Technical Not_XID;na=MUSICAL SYMBOL KIEVAN FLAT SIGN
# Accidentals for quarter tones
cp;1D1E9;age=14.0;bc=ON;na=MUSICAL SYMBOL SORI
cp;1D1EA;age=14.0;bc=ON;na=MUSICAL SYMBOL KORON
unassigned;1D1EB..1D1FF;vo=U
-block;1D200..1D24F;age=4.1;bc=ON;blk=Ancient_Greek_Music;gc=So;Gr_Base;lb=AL;sc=Grek
+block;1D200..1D24F;age=4.1;bc=ON;blk=Ancient_Greek_Music;gc=So;Gr_Base;Identifier_Type=Obsolete Not_XID;lb=AL;sc=Grek
# 1D200..1D24F Ancient Greek Musical Notation
# Ancient Greek vocalic notation
cp;1D200;na=GREEK VOCAL NOTATION SYMBOL-1
@@ -34355,13 +34372,13 @@ cp;1D23F;na=GREEK INSTRUMENTAL NOTATION SYMBOL-52
cp;1D240;na=GREEK INSTRUMENTAL NOTATION SYMBOL-53
cp;1D241;na=GREEK INSTRUMENTAL NOTATION SYMBOL-54
# Further Greek musical notation symbols
-cp;1D242;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL TRISEME;SB=EX;WB=Extend;XIDC
-cp;1D243;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL TETRASEME;SB=EX;WB=Extend;XIDC
-cp;1D244;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL PENTASEME;SB=EX;WB=Extend;XIDC
+cp;1D242;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical Obsolete;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL TRISEME;SB=EX;WB=Extend;XIDC
+cp;1D243;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical Obsolete;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL TETRASEME;SB=EX;WB=Extend;XIDC
+cp;1D244;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Technical Obsolete;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL PENTASEME;SB=EX;WB=Extend;XIDC
cp;1D245;na=GREEK MUSICAL LEIMMA
unassigned;1D246..1D24F
-block;1D2C0..1D2DF;age=15.0;blk=Kaktovik_Numerals;gc=No;Gr_Base;lb=AL;nt=Nu;sc=Zyyy
+block;1D2C0..1D2DF;age=15.0;blk=Kaktovik_Numerals;gc=No;Gr_Base;Identifier_Type=Not_XID;lb=AL;nt=Nu;sc=Zyyy
# 1D2C0..1D2DF Kaktovik Numerals
# Numerals
cp;1D2C0;na=KAKTOVIK NUMERAL ZERO;nv=0
@@ -34386,7 +34403,7 @@ cp;1D2D2;na=KAKTOVIK NUMERAL EIGHTEEN;nv=18
cp;1D2D3;na=KAKTOVIK NUMERAL NINETEEN;nv=19
unassigned;1D2D4..1D2DF
-block;1D2E0..1D2FF;age=11.0;blk=Mayan_Numerals;gc=No;Gr_Base;lb=AL;nt=Nu;sc=Zyyy;vo=U
+block;1D2E0..1D2FF;age=11.0;blk=Mayan_Numerals;gc=No;Gr_Base;Identifier_Type=Not_XID;lb=AL;nt=Nu;sc=Zyyy;vo=U
# 1D2E0..1D2FF Mayan Numerals
# Mayan numerals
cp;1D2E0;na=MAYAN NUMERAL ZERO;nv=0
@@ -34411,7 +34428,7 @@ cp;1D2F2;na=MAYAN NUMERAL EIGHTEEN;nv=18
cp;1D2F3;na=MAYAN NUMERAL NINETEEN;nv=19
unassigned;1D2F4..1D2FF;vo=U
-block;1D300..1D35F;age=4.0;bc=ON;blk=Tai_Xuan_Jing;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;1D300..1D35F;age=4.0;bc=ON;blk=Tai_Xuan_Jing;gc=So;Gr_Base;Identifier_Type=Technical Not_XID;lb=AL;sc=Zyyy;vo=U
# 1D300..1D35F Tai Xuan Jing Symbols
# Monogram
cp;1D300;na=MONOGRAM FOR EARTH
@@ -34505,7 +34522,7 @@ cp;1D355;na=TETRAGRAM FOR LABOURING
cp;1D356;na=TETRAGRAM FOR FOSTERING
unassigned;1D357..1D35F;vo=U
-block;1D360..1D37F;age=5.0;blk=Counting_Rod;gc=No;Gr_Base;lb=AL;nt=Nu;nv=1;sc=Zyyy;scx=Hani;vo=U
+block;1D360..1D37F;age=5.0;blk=Counting_Rod;gc=No;Gr_Base;Identifier_Type=Not_XID;lb=AL;nt=Nu;nv=1;sc=Zyyy;scx=Hani;vo=U
# 1D360..1D37F Counting Rod Numerals
# Counting rod units
cp;1D360;na=COUNTING ROD UNIT DIGIT ONE
@@ -34537,7 +34554,7 @@ cp;1D377;age=11.0;na=TALLY MARK ONE;scx=<script>
cp;1D378;age=11.0;na=TALLY MARK FIVE;nv=5;scx=<script>
unassigned;1D379..1D37F;vo=U
-block;1D400..1D7FF;age=3.1;Alpha;blk=Math_Alphanum;Cased;CWKCF;dt=Font;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Math;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=LO;sc=Zyyy;WB=LE;XIDC;XIDS
+block;1D400..1D7FF;age=3.1;Alpha;blk=Math_Alphanum;Cased;CWKCF;dt=Font;gc=Ll;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;Math;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=LO;sc=Zyyy;WB=LE;XIDC;XIDS
# 1D400..1D7FF Mathematical Alphanumeric Symbols
# Bold symbols
cp;1D400;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL BOLD CAPITAL A;NFKC_CF=0061;SB=UP;Upper
@@ -35586,7 +35603,7 @@ cp;1D7FD;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE
cp;1D7FE;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
cp;1D7FF;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
-block;1D800..1DAAF;age=8.0;blk=Sutton_SignWriting;gc=So;Gr_Base;lb=AL;sc=Sgnw;vo=U
+block;1D800..1DAAF;age=8.0;blk=Sutton_SignWriting;gc=So;Gr_Base;Identifier_Type=Exclusion Not_XID;lb=AL;sc=Sgnw;vo=U
# 1D800..1DAAF Sutton SignWriting
# Hand shapes with index finger
cp;1D800;na=SIGNWRITING HAND-FIST INDEX
@@ -36115,115 +36132,115 @@ cp;1D9FD;na=SIGNWRITING DYNAMIC EVERY OTHER TIME
cp;1D9FE;na=SIGNWRITING DYNAMIC GRADUAL
# Head shapes
cp;1D9FF;na=SIGNWRITING HEAD
-cp;1DA00;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING HEAD RIM;SB=EX;WB=Extend;XIDC
-cp;1DA01;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHT;SB=EX;WB=Extend;XIDC
-cp;1DA02;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-WALLPLANE TILT;SB=EX;WB=Extend;XIDC
-cp;1DA03;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-FLOORPLANE STRAIGHT;SB=EX;WB=Extend;XIDC
-cp;1DA04;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-WALLPLANE CURVE;SB=EX;WB=Extend;XIDC
-cp;1DA05;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-FLOORPLANE CURVE;SB=EX;WB=Extend;XIDC
-cp;1DA06;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT CIRCLE;SB=EX;WB=Extend;XIDC
-cp;1DA07;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FACE DIRECTION POSITION NOSE FORWARD TILTING;SB=EX;WB=Extend;XIDC
-cp;1DA08;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN;SB=EX;WB=Extend;XIDC
-cp;1DA09;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTING;SB=EX;WB=Extend;XIDC
-cp;1DA0A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEBROWS STRAIGHT UP;SB=EX;WB=Extend;XIDC
-cp;1DA0B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEBROWS STRAIGHT NEUTRAL;SB=EX;WB=Extend;XIDC
-cp;1DA0C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEBROWS STRAIGHT DOWN;SB=EX;WB=Extend;XIDC
-cp;1DA0D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING DREAMY EYEBROWS NEUTRAL DOWN;SB=EX;WB=Extend;XIDC
-cp;1DA0E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING DREAMY EYEBROWS DOWN NEUTRAL;SB=EX;WB=Extend;XIDC
-cp;1DA0F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING DREAMY EYEBROWS UP NEUTRAL;SB=EX;WB=Extend;XIDC
-cp;1DA10;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING DREAMY EYEBROWS NEUTRAL UP;SB=EX;WB=Extend;XIDC
-cp;1DA11;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FOREHEAD NEUTRAL;SB=EX;WB=Extend;XIDC
-cp;1DA12;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FOREHEAD CONTACT;SB=EX;WB=Extend;XIDC
-cp;1DA13;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FOREHEAD WRINKLED;SB=EX;WB=Extend;XIDC
-cp;1DA14;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYES OPEN;SB=EX;WB=Extend;XIDC
-cp;1DA15;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYES SQUEEZED;SB=EX;WB=Extend;XIDC
-cp;1DA16;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYES CLOSED;SB=EX;WB=Extend;XIDC
-cp;1DA17;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYE BLINK SINGLE;SB=EX;WB=Extend;XIDC
-cp;1DA18;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYE BLINK MULTIPLE;SB=EX;WB=Extend;XIDC
-cp;1DA19;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYES HALF OPEN;SB=EX;WB=Extend;XIDC
-cp;1DA1A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYES WIDE OPEN;SB=EX;WB=Extend;XIDC
-cp;1DA1B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYES HALF CLOSED;SB=EX;WB=Extend;XIDC
-cp;1DA1C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYES WIDENING MOVEMENT;SB=EX;WB=Extend;XIDC
-cp;1DA1D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYE WINK;SB=EX;WB=Extend;XIDC
-cp;1DA1E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYELASHES UP;SB=EX;WB=Extend;XIDC
-cp;1DA1F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYELASHES DOWN;SB=EX;WB=Extend;XIDC
-cp;1DA20;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYELASHES FLUTTERING;SB=EX;WB=Extend;XIDC
-cp;1DA21;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT;SB=EX;WB=Extend;XIDC
-cp;1DA22;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLE;SB=EX;WB=Extend;XIDC
-cp;1DA23;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT ALTERNATING;SB=EX;WB=Extend;XIDC
-cp;1DA24;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT;SB=EX;WB=Extend;XIDC
-cp;1DA25;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLE;SB=EX;WB=Extend;XIDC
-cp;1DA26;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT ALTERNATING;SB=EX;WB=Extend;XIDC
-cp;1DA27;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE CURVED;SB=EX;WB=Extend;XIDC
-cp;1DA28;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-FLOORPLANE CURVED;SB=EX;WB=Extend;XIDC
-cp;1DA29;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE CIRCLING;SB=EX;WB=Extend;XIDC
-cp;1DA2A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING CHEEKS PUFFED;SB=EX;WB=Extend;XIDC
-cp;1DA2B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING CHEEKS NEUTRAL;SB=EX;WB=Extend;XIDC
-cp;1DA2C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING CHEEKS SUCKED;SB=EX;WB=Extend;XIDC
-cp;1DA2D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TENSE CHEEKS HIGH;SB=EX;WB=Extend;XIDC
-cp;1DA2E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TENSE CHEEKS MIDDLE;SB=EX;WB=Extend;XIDC
-cp;1DA2F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TENSE CHEEKS LOW;SB=EX;WB=Extend;XIDC
-cp;1DA30;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EARS;SB=EX;WB=Extend;XIDC
-cp;1DA31;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING NOSE NEUTRAL;SB=EX;WB=Extend;XIDC
-cp;1DA32;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING NOSE CONTACT;SB=EX;WB=Extend;XIDC
-cp;1DA33;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING NOSE WRINKLES;SB=EX;WB=Extend;XIDC
-cp;1DA34;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING NOSE WIGGLES;SB=EX;WB=Extend;XIDC
-cp;1DA35;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING AIR BLOWING OUT;SB=EX;WB=Extend;XIDC
-cp;1DA36;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING AIR SUCKING IN;SB=EX;WB=Extend;XIDC
+cp;1DA00;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING HEAD RIM;SB=EX;WB=Extend;XIDC
+cp;1DA01;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHT;SB=EX;WB=Extend;XIDC
+cp;1DA02;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-WALLPLANE TILT;SB=EX;WB=Extend;XIDC
+cp;1DA03;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-FLOORPLANE STRAIGHT;SB=EX;WB=Extend;XIDC
+cp;1DA04;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-WALLPLANE CURVE;SB=EX;WB=Extend;XIDC
+cp;1DA05;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT-FLOORPLANE CURVE;SB=EX;WB=Extend;XIDC
+cp;1DA06;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING HEAD MOVEMENT CIRCLE;SB=EX;WB=Extend;XIDC
+cp;1DA07;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FACE DIRECTION POSITION NOSE FORWARD TILTING;SB=EX;WB=Extend;XIDC
+cp;1DA08;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN;SB=EX;WB=Extend;XIDC
+cp;1DA09;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTING;SB=EX;WB=Extend;XIDC
+cp;1DA0A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEBROWS STRAIGHT UP;SB=EX;WB=Extend;XIDC
+cp;1DA0B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEBROWS STRAIGHT NEUTRAL;SB=EX;WB=Extend;XIDC
+cp;1DA0C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEBROWS STRAIGHT DOWN;SB=EX;WB=Extend;XIDC
+cp;1DA0D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING DREAMY EYEBROWS NEUTRAL DOWN;SB=EX;WB=Extend;XIDC
+cp;1DA0E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING DREAMY EYEBROWS DOWN NEUTRAL;SB=EX;WB=Extend;XIDC
+cp;1DA0F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING DREAMY EYEBROWS UP NEUTRAL;SB=EX;WB=Extend;XIDC
+cp;1DA10;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING DREAMY EYEBROWS NEUTRAL UP;SB=EX;WB=Extend;XIDC
+cp;1DA11;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FOREHEAD NEUTRAL;SB=EX;WB=Extend;XIDC
+cp;1DA12;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FOREHEAD CONTACT;SB=EX;WB=Extend;XIDC
+cp;1DA13;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FOREHEAD WRINKLED;SB=EX;WB=Extend;XIDC
+cp;1DA14;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYES OPEN;SB=EX;WB=Extend;XIDC
+cp;1DA15;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYES SQUEEZED;SB=EX;WB=Extend;XIDC
+cp;1DA16;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYES CLOSED;SB=EX;WB=Extend;XIDC
+cp;1DA17;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYE BLINK SINGLE;SB=EX;WB=Extend;XIDC
+cp;1DA18;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYE BLINK MULTIPLE;SB=EX;WB=Extend;XIDC
+cp;1DA19;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYES HALF OPEN;SB=EX;WB=Extend;XIDC
+cp;1DA1A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYES WIDE OPEN;SB=EX;WB=Extend;XIDC
+cp;1DA1B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYES HALF CLOSED;SB=EX;WB=Extend;XIDC
+cp;1DA1C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYES WIDENING MOVEMENT;SB=EX;WB=Extend;XIDC
+cp;1DA1D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYE WINK;SB=EX;WB=Extend;XIDC
+cp;1DA1E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYELASHES UP;SB=EX;WB=Extend;XIDC
+cp;1DA1F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYELASHES DOWN;SB=EX;WB=Extend;XIDC
+cp;1DA20;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYELASHES FLUTTERING;SB=EX;WB=Extend;XIDC
+cp;1DA21;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT;SB=EX;WB=Extend;XIDC
+cp;1DA22;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLE;SB=EX;WB=Extend;XIDC
+cp;1DA23;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT ALTERNATING;SB=EX;WB=Extend;XIDC
+cp;1DA24;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT;SB=EX;WB=Extend;XIDC
+cp;1DA25;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLE;SB=EX;WB=Extend;XIDC
+cp;1DA26;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT ALTERNATING;SB=EX;WB=Extend;XIDC
+cp;1DA27;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE CURVED;SB=EX;WB=Extend;XIDC
+cp;1DA28;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-FLOORPLANE CURVED;SB=EX;WB=Extend;XIDC
+cp;1DA29;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EYEGAZE-WALLPLANE CIRCLING;SB=EX;WB=Extend;XIDC
+cp;1DA2A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING CHEEKS PUFFED;SB=EX;WB=Extend;XIDC
+cp;1DA2B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING CHEEKS NEUTRAL;SB=EX;WB=Extend;XIDC
+cp;1DA2C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING CHEEKS SUCKED;SB=EX;WB=Extend;XIDC
+cp;1DA2D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TENSE CHEEKS HIGH;SB=EX;WB=Extend;XIDC
+cp;1DA2E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TENSE CHEEKS MIDDLE;SB=EX;WB=Extend;XIDC
+cp;1DA2F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TENSE CHEEKS LOW;SB=EX;WB=Extend;XIDC
+cp;1DA30;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EARS;SB=EX;WB=Extend;XIDC
+cp;1DA31;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING NOSE NEUTRAL;SB=EX;WB=Extend;XIDC
+cp;1DA32;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING NOSE CONTACT;SB=EX;WB=Extend;XIDC
+cp;1DA33;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING NOSE WRINKLES;SB=EX;WB=Extend;XIDC
+cp;1DA34;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING NOSE WIGGLES;SB=EX;WB=Extend;XIDC
+cp;1DA35;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING AIR BLOWING OUT;SB=EX;WB=Extend;XIDC
+cp;1DA36;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING AIR SUCKING IN;SB=EX;WB=Extend;XIDC
cp;1DA37;na=SIGNWRITING AIR BLOW SMALL ROTATIONS
cp;1DA38;na=SIGNWRITING AIR SUCK SMALL ROTATIONS
cp;1DA39;na=SIGNWRITING BREATH INHALE
cp;1DA3A;na=SIGNWRITING BREATH EXHALE
-cp;1DA3B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH CLOSED NEUTRAL;SB=EX;WB=Extend;XIDC
-cp;1DA3C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH CLOSED FORWARD;SB=EX;WB=Extend;XIDC
-cp;1DA3D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH CLOSED CONTACT;SB=EX;WB=Extend;XIDC
-cp;1DA3E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH SMILE;SB=EX;WB=Extend;XIDC
-cp;1DA3F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH SMILE WRINKLED;SB=EX;WB=Extend;XIDC
-cp;1DA40;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH SMILE OPEN;SB=EX;WB=Extend;XIDC
-cp;1DA41;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH FROWN;SB=EX;WB=Extend;XIDC
-cp;1DA42;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH FROWN WRINKLED;SB=EX;WB=Extend;XIDC
-cp;1DA43;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH FROWN OPEN;SB=EX;WB=Extend;XIDC
-cp;1DA44;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN CIRCLE;SB=EX;WB=Extend;XIDC
-cp;1DA45;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN FORWARD;SB=EX;WB=Extend;XIDC
-cp;1DA46;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN WRINKLED;SB=EX;WB=Extend;XIDC
-cp;1DA47;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN OVAL;SB=EX;WB=Extend;XIDC
-cp;1DA48;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN OVAL WRINKLED;SB=EX;WB=Extend;XIDC
-cp;1DA49;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN OVAL YAWN;SB=EX;WB=Extend;XIDC
-cp;1DA4A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN RECTANGLE;SB=EX;WB=Extend;XIDC
-cp;1DA4B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN RECTANGLE WRINKLED;SB=EX;WB=Extend;XIDC
-cp;1DA4C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN RECTANGLE YAWN;SB=EX;WB=Extend;XIDC
-cp;1DA4D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH KISS;SB=EX;WB=Extend;XIDC
-cp;1DA4E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH KISS FORWARD;SB=EX;WB=Extend;XIDC
-cp;1DA4F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH KISS WRINKLED;SB=EX;WB=Extend;XIDC
-cp;1DA50;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH TENSE;SB=EX;WB=Extend;XIDC
-cp;1DA51;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH TENSE FORWARD;SB=EX;WB=Extend;XIDC
-cp;1DA52;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH TENSE SUCKED;SB=EX;WB=Extend;XIDC
-cp;1DA53;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING LIPS PRESSED TOGETHER;SB=EX;WB=Extend;XIDC
-cp;1DA54;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING LIP LOWER OVER UPPER;SB=EX;WB=Extend;XIDC
-cp;1DA55;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING LIP UPPER OVER LOWER;SB=EX;WB=Extend;XIDC
-cp;1DA56;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH CORNERS;SB=EX;WB=Extend;XIDC
-cp;1DA57;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH WRINKLES SINGLE;SB=EX;WB=Extend;XIDC
-cp;1DA58;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOUTH WRINKLES DOUBLE;SB=EX;WB=Extend;XIDC
-cp;1DA59;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TONGUE STICKING OUT FAR;SB=EX;WB=Extend;XIDC
-cp;1DA5A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TONGUE LICKING LIPS;SB=EX;WB=Extend;XIDC
-cp;1DA5B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TONGUE TIP BETWEEN LIPS;SB=EX;WB=Extend;XIDC
-cp;1DA5C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTH;SB=EX;WB=Extend;XIDC
-cp;1DA5D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TONGUE INSIDE MOUTH RELAXED;SB=EX;WB=Extend;XIDC
-cp;1DA5E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TONGUE MOVES AGAINST CHEEK;SB=EX;WB=Extend;XIDC
-cp;1DA5F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TONGUE CENTRE STICKING OUT;SB=EX;WB=Extend;XIDC
-cp;1DA60;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TONGUE CENTRE INSIDE MOUTH;SB=EX;WB=Extend;XIDC
-cp;1DA61;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TEETH;SB=EX;WB=Extend;XIDC
-cp;1DA62;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TEETH MOVEMENT;SB=EX;WB=Extend;XIDC
-cp;1DA63;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TEETH ON TONGUE;SB=EX;WB=Extend;XIDC
-cp;1DA64;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TEETH ON TONGUE MOVEMENT;SB=EX;WB=Extend;XIDC
-cp;1DA65;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TEETH ON LIPS;SB=EX;WB=Extend;XIDC
-cp;1DA66;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TEETH ON LIPS MOVEMENT;SB=EX;WB=Extend;XIDC
-cp;1DA67;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING TEETH BITE LIPS;SB=EX;WB=Extend;XIDC
-cp;1DA68;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOVEMENT-WALLPLANE JAW;SB=EX;WB=Extend;XIDC
-cp;1DA69;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING MOVEMENT-FLOORPLANE JAW;SB=EX;WB=Extend;XIDC
-cp;1DA6A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING NECK;SB=EX;WB=Extend;XIDC
-cp;1DA6B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING HAIR;SB=EX;WB=Extend;XIDC
-cp;1DA6C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING EXCITEMENT;SB=EX;WB=Extend;XIDC
+cp;1DA3B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH CLOSED NEUTRAL;SB=EX;WB=Extend;XIDC
+cp;1DA3C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH CLOSED FORWARD;SB=EX;WB=Extend;XIDC
+cp;1DA3D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH CLOSED CONTACT;SB=EX;WB=Extend;XIDC
+cp;1DA3E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH SMILE;SB=EX;WB=Extend;XIDC
+cp;1DA3F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH SMILE WRINKLED;SB=EX;WB=Extend;XIDC
+cp;1DA40;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH SMILE OPEN;SB=EX;WB=Extend;XIDC
+cp;1DA41;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH FROWN;SB=EX;WB=Extend;XIDC
+cp;1DA42;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH FROWN WRINKLED;SB=EX;WB=Extend;XIDC
+cp;1DA43;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH FROWN OPEN;SB=EX;WB=Extend;XIDC
+cp;1DA44;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN CIRCLE;SB=EX;WB=Extend;XIDC
+cp;1DA45;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN FORWARD;SB=EX;WB=Extend;XIDC
+cp;1DA46;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN WRINKLED;SB=EX;WB=Extend;XIDC
+cp;1DA47;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN OVAL;SB=EX;WB=Extend;XIDC
+cp;1DA48;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN OVAL WRINKLED;SB=EX;WB=Extend;XIDC
+cp;1DA49;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN OVAL YAWN;SB=EX;WB=Extend;XIDC
+cp;1DA4A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN RECTANGLE;SB=EX;WB=Extend;XIDC
+cp;1DA4B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN RECTANGLE WRINKLED;SB=EX;WB=Extend;XIDC
+cp;1DA4C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH OPEN RECTANGLE YAWN;SB=EX;WB=Extend;XIDC
+cp;1DA4D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH KISS;SB=EX;WB=Extend;XIDC
+cp;1DA4E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH KISS FORWARD;SB=EX;WB=Extend;XIDC
+cp;1DA4F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH KISS WRINKLED;SB=EX;WB=Extend;XIDC
+cp;1DA50;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH TENSE;SB=EX;WB=Extend;XIDC
+cp;1DA51;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH TENSE FORWARD;SB=EX;WB=Extend;XIDC
+cp;1DA52;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH TENSE SUCKED;SB=EX;WB=Extend;XIDC
+cp;1DA53;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING LIPS PRESSED TOGETHER;SB=EX;WB=Extend;XIDC
+cp;1DA54;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING LIP LOWER OVER UPPER;SB=EX;WB=Extend;XIDC
+cp;1DA55;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING LIP UPPER OVER LOWER;SB=EX;WB=Extend;XIDC
+cp;1DA56;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH CORNERS;SB=EX;WB=Extend;XIDC
+cp;1DA57;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH WRINKLES SINGLE;SB=EX;WB=Extend;XIDC
+cp;1DA58;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOUTH WRINKLES DOUBLE;SB=EX;WB=Extend;XIDC
+cp;1DA59;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TONGUE STICKING OUT FAR;SB=EX;WB=Extend;XIDC
+cp;1DA5A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TONGUE LICKING LIPS;SB=EX;WB=Extend;XIDC
+cp;1DA5B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TONGUE TIP BETWEEN LIPS;SB=EX;WB=Extend;XIDC
+cp;1DA5C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTH;SB=EX;WB=Extend;XIDC
+cp;1DA5D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TONGUE INSIDE MOUTH RELAXED;SB=EX;WB=Extend;XIDC
+cp;1DA5E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TONGUE MOVES AGAINST CHEEK;SB=EX;WB=Extend;XIDC
+cp;1DA5F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TONGUE CENTRE STICKING OUT;SB=EX;WB=Extend;XIDC
+cp;1DA60;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TONGUE CENTRE INSIDE MOUTH;SB=EX;WB=Extend;XIDC
+cp;1DA61;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TEETH;SB=EX;WB=Extend;XIDC
+cp;1DA62;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TEETH MOVEMENT;SB=EX;WB=Extend;XIDC
+cp;1DA63;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TEETH ON TONGUE;SB=EX;WB=Extend;XIDC
+cp;1DA64;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TEETH ON TONGUE MOVEMENT;SB=EX;WB=Extend;XIDC
+cp;1DA65;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TEETH ON LIPS;SB=EX;WB=Extend;XIDC
+cp;1DA66;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TEETH ON LIPS MOVEMENT;SB=EX;WB=Extend;XIDC
+cp;1DA67;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING TEETH BITE LIPS;SB=EX;WB=Extend;XIDC
+cp;1DA68;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOVEMENT-WALLPLANE JAW;SB=EX;WB=Extend;XIDC
+cp;1DA69;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING MOVEMENT-FLOORPLANE JAW;SB=EX;WB=Extend;XIDC
+cp;1DA6A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING NECK;SB=EX;WB=Extend;XIDC
+cp;1DA6B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING HAIR;SB=EX;WB=Extend;XIDC
+cp;1DA6C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING EXCITEMENT;SB=EX;WB=Extend;XIDC
# Body shapes
cp;1DA6D;na=SIGNWRITING SHOULDER HIP SPINE
cp;1DA6E;na=SIGNWRITING SHOULDER HIP POSITIONS
@@ -36233,7 +36250,7 @@ cp;1DA71;na=SIGNWRITING SHOULDER TILTING FROM WAIST
cp;1DA72;na=SIGNWRITING TORSO-WALLPLANE STRAIGHT STRETCH
cp;1DA73;na=SIGNWRITING TORSO-WALLPLANE CURVED BEND
cp;1DA74;na=SIGNWRITING TORSO-FLOORPLANE TWISTING
-cp;1DA75;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS;SB=EX;WB=Extend;XIDC
+cp;1DA75;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS;SB=EX;WB=Extend;XIDC
cp;1DA76;na=SIGNWRITING LIMB COMBINATION
cp;1DA77;na=SIGNWRITING LIMB LENGTH-1
cp;1DA78;na=SIGNWRITING LIMB LENGTH-2
@@ -36249,7 +36266,7 @@ cp;1DA80;na=SIGNWRITING LOCATION-FLOORPLANE SPACE
cp;1DA81;na=SIGNWRITING LOCATION HEIGHT
cp;1DA82;na=SIGNWRITING LOCATION WIDTH
cp;1DA83;na=SIGNWRITING LOCATION DEPTH
-cp;1DA84;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING LOCATION HEAD NECK;SB=EX;WB=Extend;XIDC
+cp;1DA84;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING LOCATION HEAD NECK;SB=EX;WB=Extend;XIDC
cp;1DA85;na=SIGNWRITING LOCATION TORSO
cp;1DA86;na=SIGNWRITING LOCATION LIMBS DIGITS
# Punctuation
@@ -36260,30 +36277,30 @@ cp;1DA8A;gc=Po;lb=BA;na=SIGNWRITING COLON;Term
cp;1DA8B;gc=Po;na=SIGNWRITING PARENTHESIS
unassigned;1DA8C..1DA9A;vo=U
# Fill modifiers
-cp;1DA9B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-2;SB=EX;WB=Extend;XIDC
-cp;1DA9C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-3;SB=EX;WB=Extend;XIDC
-cp;1DA9D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-4;SB=EX;WB=Extend;XIDC
-cp;1DA9E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-5;SB=EX;WB=Extend;XIDC
-cp;1DA9F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-6;SB=EX;WB=Extend;XIDC
+cp;1DA9B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-2;SB=EX;WB=Extend;XIDC
+cp;1DA9C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-3;SB=EX;WB=Extend;XIDC
+cp;1DA9D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-4;SB=EX;WB=Extend;XIDC
+cp;1DA9E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-5;SB=EX;WB=Extend;XIDC
+cp;1DA9F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING FILL MODIFIER-6;SB=EX;WB=Extend;XIDC
unassigned;1DAA0;vo=U
# Rotation modifiers
-cp;1DAA1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-2;SB=EX;WB=Extend;XIDC
-cp;1DAA2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-3;SB=EX;WB=Extend;XIDC
-cp;1DAA3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-4;SB=EX;WB=Extend;XIDC
-cp;1DAA4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-5;SB=EX;WB=Extend;XIDC
-cp;1DAA5;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-6;SB=EX;WB=Extend;XIDC
-cp;1DAA6;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-7;SB=EX;WB=Extend;XIDC
-cp;1DAA7;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-8;SB=EX;WB=Extend;XIDC
-cp;1DAA8;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-9;SB=EX;WB=Extend;XIDC
-cp;1DAA9;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-10;SB=EX;WB=Extend;XIDC
-cp;1DAAA;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-11;SB=EX;WB=Extend;XIDC
-cp;1DAAB;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-12;SB=EX;WB=Extend;XIDC
-cp;1DAAC;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-13;SB=EX;WB=Extend;XIDC
-cp;1DAAD;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-14;SB=EX;WB=Extend;XIDC
-cp;1DAAE;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-15;SB=EX;WB=Extend;XIDC
-cp;1DAAF;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-16;SB=EX;WB=Extend;XIDC
-
-block;1DF00..1DFFF;age=14.0;Alpha;blk=Latin_Ext_G;Cased;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;1DAA1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-2;SB=EX;WB=Extend;XIDC
+cp;1DAA2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-3;SB=EX;WB=Extend;XIDC
+cp;1DAA3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-4;SB=EX;WB=Extend;XIDC
+cp;1DAA4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-5;SB=EX;WB=Extend;XIDC
+cp;1DAA5;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-6;SB=EX;WB=Extend;XIDC
+cp;1DAA6;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-7;SB=EX;WB=Extend;XIDC
+cp;1DAA7;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-8;SB=EX;WB=Extend;XIDC
+cp;1DAA8;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-9;SB=EX;WB=Extend;XIDC
+cp;1DAA9;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-10;SB=EX;WB=Extend;XIDC
+cp;1DAAA;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-11;SB=EX;WB=Extend;XIDC
+cp;1DAAB;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-12;SB=EX;WB=Extend;XIDC
+cp;1DAAC;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-13;SB=EX;WB=Extend;XIDC
+cp;1DAAD;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-14;SB=EX;WB=Extend;XIDC
+cp;1DAAE;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-15;SB=EX;WB=Extend;XIDC
+cp;1DAAF;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;Identifier_Type=Exclusion;jt=T;lb=CM;na=SIGNWRITING ROTATION MODIFIER-16;SB=EX;WB=Extend;XIDC
+
+block;1DF00..1DFFF;age=14.0;Alpha;blk=Latin_Ext_G;Cased;gc=Ll;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 1DF00..1DFFF Latin Extended-G
# Extended IPA for disordered speech
cp;1DF00;na=LATIN SMALL LETTER FENG DIGRAPH WITH TRILL
@@ -36333,7 +36350,7 @@ cp;1DF29;age=15.0;na=LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK
cp;1DF2A;age=15.0;na=LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
unassigned;1DF2B..1DFFF
-block;1E000..1E02F;age=9.0;Alpha;bc=NSM;blk=Glagolitic_Sup;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Glag;WB=Extend;XIDC
+block;1E000..1E02F;age=9.0;Alpha;bc=NSM;blk=Glagolitic_Sup;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Exclusion;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Glag;WB=Extend;XIDC
# 1E000..1E02F Glagolitic Supplement
# Combining letters
cp;1E000;na=COMBINING GLAGOLITIC LETTER AZU
@@ -36380,7 +36397,7 @@ cp;1E029;na=COMBINING GLAGOLITIC LETTER IOTATED BIG YUS
cp;1E02A;na=COMBINING GLAGOLITIC LETTER FITA
unassigned;1E02B..1E02F
-block;1E030..1E08F;age=15.0;Alpha;blk=Cyrillic_Ext_D;Cased;CI;CWKCF;Dia;dt=Sup;gc=Lm;Gr_Base;IDC;IDS;lb=AL;Lower;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
+block;1E030..1E08F;age=15.0;Alpha;blk=Cyrillic_Ext_D;Cased;CI;CWKCF;Dia;dt=Sup;gc=Lm;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;Lower;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# 1E030..1E08F Cyrillic Extended-D
# Superscript modifier letters
cp;1E030;dm=0430;na=MODIFIER LETTER CYRILLIC SMALL A;NFKC_CF=0430;NFKC_SCF=0430
@@ -36449,9 +36466,9 @@ cp;1E06C;dm=A651;na=MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER;NFKC_CF=A6
cp;1E06D;dm=04B1;na=MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE;NFKC_CF=04B1;NFKC_SCF=04B1
unassigned;1E06E..1E08E
# Diacritical mark
-cp;1E08F;bc=NSM;-Cased;ccc=230;-CWKCF;-Dia;dt=None;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;-Lower;na=COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_QC=Y;NFKD_QC=Y;SB=EX;WB=Extend;-XIDS
+cp;1E08F;bc=NSM;-Cased;ccc=230;-CWKCF;-Dia;dt=None;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Identifier_Status=Allowed;Identifier_Type=Recommended;-IDS;InCB=Extend;jt=T;lb=CM;-Lower;na=COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_QC=Y;NFKD_QC=Y;SB=EX;WB=Extend;-XIDS
-block;1E100..1E14F;age=12.0;Alpha;blk=Nyiakeng_Puachue_Hmong;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Hmnp;WB=LE;XIDC;XIDS
+block;1E100..1E14F;age=12.0;Alpha;blk=Nyiakeng_Puachue_Hmong;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Hmnp;WB=LE;XIDC;XIDS
# 1E100..1E14F Nyiakeng Puachue Hmong
# Consonant onsets
cp;1E100;na=NYIAKENG PUACHUE HMONG LETTER MA
@@ -36534,9 +36551,9 @@ cp;1E149;-Alpha;gc=Nd;-IDS;lb=NU;na=NYIAKENG PUACHUE HMONG DIGIT NINE;nt=De;nv=9
unassigned;1E14A..1E14D
# Symbols
cp;1E14E;na=NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
-cp;1E14F;-Alpha;gc=So;-IDC;-IDS;na=NYIAKENG PUACHUE HMONG CIRCLED CA;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E14F;-Alpha;gc=So;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;na=NYIAKENG PUACHUE HMONG CIRCLED CA;SB=XX;WB=XX;-XIDC;-XIDS
-block;1E290..1E2BF;age=14.0;Alpha;blk=Toto;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Toto;WB=LE;XIDC;XIDS
+block;1E290..1E2BF;age=14.0;Alpha;blk=Toto;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Toto;WB=LE;XIDC;XIDS
# 1E290..1E2BF Toto
# Basic consonants
cp;1E290;na=TOTO LETTER PA
@@ -36574,7 +36591,7 @@ cp;1E2AD;na=TOTO LETTER A
cp;1E2AE;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=TOTO SIGN RISING TONE;SB=EX;WB=Extend;-XIDS
unassigned;1E2AF..1E2BF
-block;1E2C0..1E2FF;age=12.0;Alpha;blk=Wancho;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Wcho;WB=LE;XIDC;XIDS
+block;1E2C0..1E2FF;age=12.0;Alpha;blk=Wancho;gc=Lo;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;lb=AL;SB=LE;sc=Wcho;WB=LE;XIDC;XIDS
# 1E2C0..1E2FF Wancho
# Letters
cp;1E2C0;na=WANCHO LETTER AA
@@ -36639,9 +36656,9 @@ cp;1E2F8;-Alpha;gc=Nd;-IDS;lb=NU;na=WANCHO DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-X
cp;1E2F9;-Alpha;gc=Nd;-IDS;lb=NU;na=WANCHO DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;1E2FA..1E2FE
# Currency symbol
-cp;1E2FF;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;lb=PR;na=WANCHO NGUN SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E2FF;-Alpha;bc=ET;gc=Sc;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;lb=PR;na=WANCHO NGUN SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-block;1E4D0..1E4FF;age=15.0;Alpha;blk=Nag_Mundari;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Nagm;WB=LE;XIDC;XIDS
+block;1E4D0..1E4FF;age=15.0;Alpha;blk=Nag_Mundari;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Nagm;WB=LE;XIDC;XIDS
# 1E4D0..1E4FF Nag Mundari
# Letters
cp;1E4D0;na=NAG MUNDARI LETTER O
@@ -36690,7 +36707,7 @@ cp;1E4F8;-Alpha;gc=Nd;-IDS;lb=NU;na=NAG MUNDARI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=
cp;1E4F9;-Alpha;gc=Nd;-IDS;lb=NU;na=NAG MUNDARI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;1E4FA..1E4FF
-block;1E7E0..1E7FF;age=14.0;Alpha;blk=Ethiopic_Ext_B;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
+block;1E7E0..1E7FF;age=14.0;Alpha;blk=Ethiopic_Ext_B;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
# 1E7E0..1E7FF Ethiopic Extended-B
# Syllables for Gurage
cp;1E7E0;na=ETHIOPIC SYLLABLE HHYA
@@ -36726,7 +36743,7 @@ cp;1E7FD;na=ETHIOPIC SYLLABLE GURAGE PWI
cp;1E7FE;na=ETHIOPIC SYLLABLE GURAGE PWEE
unassigned;1E7FF
-block;1E800..1E8DF;age=7.0;Alpha;bc=R;blk=Mende_Kikakui;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Mend;WB=LE;XIDC;XIDS
+block;1E800..1E8DF;age=7.0;Alpha;bc=R;blk=Mende_Kikakui;gc=Lo;Gr_Base;IDC;Identifier_Type=Exclusion;IDS;lb=AL;SB=LE;sc=Mend;WB=LE;XIDC;XIDS
# 1E800..1E8DF Mende Kikakui
# Syllables in k-
cp;1E800;na=MENDE KIKAKUI SYLLABLE M001 KI
@@ -36954,15 +36971,15 @@ cp;1E8C3;na=MENDE KIKAKUI SYLLABLE M098 NYEN
cp;1E8C4;na=MENDE KIKAKUI SYLLABLE M060 NYON
unassigned;1E8C5..1E8C6;bc=R
# Digits
-cp;1E8C7;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E8C8;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E8C9;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E8CA;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E8CB;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E8CC;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT SIX;nt=Nu;nv=6;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E8CD;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT SEVEN;nt=Nu;nv=7;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E8CE;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT EIGHT;nt=Nu;nv=8;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E8CF;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT NINE;nt=Nu;nv=9;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8C7;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8C8;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT TWO;nt=Nu;nv=2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8C9;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT THREE;nt=Nu;nv=3;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8CA;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT FOUR;nt=Nu;nv=4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8CB;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8CC;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT SIX;nt=Nu;nv=6;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8CD;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT SEVEN;nt=Nu;nv=7;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8CE;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT EIGHT;nt=Nu;nv=8;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E8CF;-Alpha;gc=No;-IDC;Identifier_Type=Exclusion Not_XID;-IDS;na=MENDE KIKAKUI DIGIT NINE;nt=Nu;nv=9;SB=XX;WB=XX;-XIDC;-XIDS
# Combining number bases
cp;1E8D0;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER TEENS;SB=EX;WB=Extend;-XIDS
cp;1E8D1;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER TENS;SB=EX;WB=Extend;-XIDS
@@ -36976,7 +36993,7 @@ unassigned;1E8D7..1E8DF;bc=R
# No block
unassigned;1E8E0..1E8FF;bc=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
+block;1E900..1E95F;age=9.0;Alpha;bc=R;blk=Adlam;Cased;CWCM;gc=Ll;Gr_Base;IDC;Identifier_Type=Limited_Use;IDS;jt=D;lb=AL;SB=LO;sc=Adlm;WB=LE;XIDC;XIDS
# 1E900..1E95F Adlam
# Capital letters
cp;1E900;cf=1E922;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER ALIF;NFKC_CF=1E922;NFKC_SCF=1E922;SB=UP;scf=1E922;slc=1E922;Upper
@@ -37074,13 +37091,13 @@ cp;1E958;-Alpha;-Cased;-CWCM;gc=Nd;-IDS;jt=U;lb=NU;na=ADLAM DIGIT EIGHT;nt=De;nv
cp;1E959;-Alpha;-Cased;-CWCM;gc=Nd;-IDS;jt=U;lb=NU;na=ADLAM DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;1E95A..1E95D;bc=R
# Punctuation
-cp;1E95E;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;jt=U;lb=OP;na=ADLAM INITIAL EXCLAMATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1E95F;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;jt=U;lb=OP;na=ADLAM INITIAL QUESTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E95E;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;lb=OP;na=ADLAM INITIAL EXCLAMATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1E95F;-Alpha;-Cased;-CWCM;gc=Po;-IDC;Identifier_Type=Limited_Use Not_XID;-IDS;jt=U;lb=OP;na=ADLAM INITIAL QUESTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
# No block
unassigned;1E960..1EC6F;bc=R
-block;1EC70..1ECBF;age=11.0;bc=AL;blk=Indic_Siyaq_Numbers;gc=No;Gr_Base;lb=AL;nt=Nu;nv=100000;sc=Zyyy
+block;1EC70..1ECBF;age=11.0;bc=AL;blk=Indic_Siyaq_Numbers;gc=No;Gr_Base;Identifier_Type=Not_XID;lb=AL;nt=Nu;nv=100000;sc=Zyyy
# 1EC70..1ECBF Indic Siyaq Numbers
unassigned;1EC70;bc=AL
# Primary numbers
@@ -37168,7 +37185,7 @@ unassigned;1ECB5..1ECBF;bc=AL
# No block
unassigned;1ECC0..1ECFF;bc=R
-block;1ED00..1ED4F;age=12.0;bc=AL;blk=Ottoman_Siyaq_Numbers;gc=No;Gr_Base;lb=AL;nt=Nu;nv=10000;sc=Zyyy
+block;1ED00..1ED4F;age=12.0;bc=AL;blk=Ottoman_Siyaq_Numbers;gc=No;Gr_Base;Identifier_Type=Not_XID;lb=AL;nt=Nu;nv=10000;sc=Zyyy
# 1ED00..1ED4F Ottoman Siyaq Numbers
unassigned;1ED00;bc=AL
# Primary numbers
@@ -37245,7 +37262,7 @@ unassigned;1ED3E..1ED4F;bc=AL
# No block
unassigned;1ED50..1EDFF;bc=R
-block;1EE00..1EEFF;age=6.1;Alpha;bc=AL;blk=Arabic_Math;CWKCF;dt=Font;gc=Lo;Gr_Base;IDC;IDS;lb=AL;Math;NFKC_QC=N;NFKC_SCF=062C;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
+block;1EE00..1EEFF;age=6.1;Alpha;bc=AL;blk=Arabic_Math;CWKCF;dt=Font;gc=Lo;Gr_Base;IDC;Identifier_Type=Not_NFKC;IDS;lb=AL;Math;NFKC_QC=N;NFKC_SCF=062C;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# 1EE00..1EEFF Arabic Mathematical Alphabetic Symbols
# Isolated symbols
cp;1EE00;dm=0627;na=ARABIC MATHEMATICAL ALEF;NFKC_CF=0627;NFKC_SCF=0627
@@ -37428,14 +37445,14 @@ cp;1EEBA;dm=0638;na=ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH;NFKC_CF=0638;NFKC_SCF=
cp;1EEBB;dm=063A;na=ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN;NFKC_CF=063A;NFKC_SCF=063A
unassigned;1EEBC..1EEEF;bc=AL
# Stretching operators
-cp;1EEF0;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1EEF1;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=ARABIC MATHEMATICAL OPERATOR HAH WITH DAL;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1EEF0;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;Identifier_Type=Not_XID;-IDS;na=ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1EEF1;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;Identifier_Type=Not_XID;-IDS;na=ARABIC MATHEMATICAL OPERATOR HAH WITH DAL;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1EEF2..1EEFF;bc=AL
# No block
unassigned;1EF00..1EFFF;bc=R
-block;1F000..1F02F;age=5.1;bc=ON;blk=Mahjong;ExtPict;gc=So;Gr_Base;lb=ID;sc=Zyyy;vo=U
+block;1F000..1F02F;age=5.1;bc=ON;blk=Mahjong;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;vo=U
# 1F000..1F02F Mahjong Tiles
# Prevailing wind tiles
cp;1F000;na=MAHJONG TILE EAST WIND
@@ -37491,7 +37508,7 @@ cp;1F02A;na=MAHJONG TILE JOKER
cp;1F02B;na=MAHJONG TILE BACK
unassigned;1F02C..1F02F;ExtPict;lb=ID;vo=U
-block;1F030..1F09F;age=5.1;bc=ON;blk=Domino;ExtPict;gc=So;Gr_Base;lb=ID;sc=Zyyy;vo=U
+block;1F030..1F09F;age=5.1;bc=ON;blk=Domino;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;vo=U
# 1F030..1F09F Domino Tiles
# Horizontal tiles
cp;1F030;na=DOMINO TILE HORIZONTAL BACK
@@ -37611,7 +37628,7 @@ cp;1F092;na=DOMINO TILE VERTICAL-06-05
cp;1F093;na=DOMINO TILE VERTICAL-06-06
unassigned;1F094..1F09F;ExtPict;lb=ID;vo=U
-block;1F0A0..1F0FF;age=6.0;bc=ON;blk=Playing_Cards;ExtPict;gc=So;Gr_Base;lb=ID;sc=Zyyy;vo=U
+block;1F0A0..1F0FF;age=6.0;bc=ON;blk=Playing_Cards;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;vo=U
# 1F0A0..1F0FF Playing Cards
# Back of card
cp;1F0A0;na=PLAYING CARD BACK
@@ -37709,21 +37726,21 @@ cp;1F0F4;age=7.0;na=PLAYING CARD TRUMP-20
cp;1F0F5;age=7.0;na=PLAYING CARD TRUMP-21
unassigned;1F0F6..1F0FF;ExtPict;lb=ID;vo=U
-block;1F100..1F1FF;age=6.0;blk=Enclosed_Alphanum_Sup;ea=A;gc=So;Gr_Base;lb=AI;sc=Zyyy;vo=U
+block;1F100..1F1FF;age=6.0;blk=Enclosed_Alphanum_Sup;ea=A;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AI;sc=Zyyy;vo=U
# 1F100..1F1FF Enclosed Alphanumeric Supplement
# Number with full stop
-cp;1F100;age=5.2;bc=EN;CWKCF;dm=0030 002E;dt=Com;gc=No;na=DIGIT ZERO FULL STOP;NFKC_CF=0030 002E;NFKC_QC=N;NFKC_SCF=0030 002E;NFKD_QC=N;nt=Di;nv=0
+cp;1F100;age=5.2;bc=EN;CWKCF;dm=0030 002E;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT ZERO FULL STOP;NFKC_CF=0030 002E;NFKC_QC=N;NFKC_SCF=0030 002E;NFKD_QC=N;nt=Di;nv=0
# Numbers with comma
-cp;1F101;age=5.2;bc=EN;CWKCF;dm=0030 002C;dt=Com;gc=No;na=DIGIT ZERO COMMA;NFKC_CF=0030 002C;NFKC_QC=N;NFKC_SCF=0030 002C;NFKD_QC=N;nt=Di;nv=0
-cp;1F102;age=5.2;bc=EN;CWKCF;dm=0031 002C;dt=Com;gc=No;na=DIGIT ONE COMMA;NFKC_CF=0031 002C;NFKC_QC=N;NFKC_SCF=0031 002C;NFKD_QC=N;nt=Di;nv=1
-cp;1F103;age=5.2;bc=EN;CWKCF;dm=0032 002C;dt=Com;gc=No;na=DIGIT TWO COMMA;NFKC_CF=0032 002C;NFKC_QC=N;NFKC_SCF=0032 002C;NFKD_QC=N;nt=Di;nv=2
-cp;1F104;age=5.2;bc=EN;CWKCF;dm=0033 002C;dt=Com;gc=No;na=DIGIT THREE COMMA;NFKC_CF=0033 002C;NFKC_QC=N;NFKC_SCF=0033 002C;NFKD_QC=N;nt=Di;nv=3
-cp;1F105;age=5.2;bc=EN;CWKCF;dm=0034 002C;dt=Com;gc=No;na=DIGIT FOUR COMMA;NFKC_CF=0034 002C;NFKC_QC=N;NFKC_SCF=0034 002C;NFKD_QC=N;nt=Di;nv=4
-cp;1F106;age=5.2;bc=EN;CWKCF;dm=0035 002C;dt=Com;gc=No;na=DIGIT FIVE COMMA;NFKC_CF=0035 002C;NFKC_QC=N;NFKC_SCF=0035 002C;NFKD_QC=N;nt=Di;nv=5
-cp;1F107;age=5.2;bc=EN;CWKCF;dm=0036 002C;dt=Com;gc=No;na=DIGIT SIX COMMA;NFKC_CF=0036 002C;NFKC_QC=N;NFKC_SCF=0036 002C;NFKD_QC=N;nt=Di;nv=6
-cp;1F108;age=5.2;bc=EN;CWKCF;dm=0037 002C;dt=Com;gc=No;na=DIGIT SEVEN COMMA;NFKC_CF=0037 002C;NFKC_QC=N;NFKC_SCF=0037 002C;NFKD_QC=N;nt=Di;nv=7
-cp;1F109;age=5.2;bc=EN;CWKCF;dm=0038 002C;dt=Com;gc=No;na=DIGIT EIGHT COMMA;NFKC_CF=0038 002C;NFKC_QC=N;NFKC_SCF=0038 002C;NFKD_QC=N;nt=Di;nv=8
-cp;1F10A;age=5.2;bc=EN;CWKCF;dm=0039 002C;dt=Com;gc=No;na=DIGIT NINE COMMA;NFKC_CF=0039 002C;NFKC_QC=N;NFKC_SCF=0039 002C;NFKD_QC=N;nt=Di;nv=9
+cp;1F101;age=5.2;bc=EN;CWKCF;dm=0030 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT ZERO COMMA;NFKC_CF=0030 002C;NFKC_QC=N;NFKC_SCF=0030 002C;NFKD_QC=N;nt=Di;nv=0
+cp;1F102;age=5.2;bc=EN;CWKCF;dm=0031 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT ONE COMMA;NFKC_CF=0031 002C;NFKC_QC=N;NFKC_SCF=0031 002C;NFKD_QC=N;nt=Di;nv=1
+cp;1F103;age=5.2;bc=EN;CWKCF;dm=0032 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT TWO COMMA;NFKC_CF=0032 002C;NFKC_QC=N;NFKC_SCF=0032 002C;NFKD_QC=N;nt=Di;nv=2
+cp;1F104;age=5.2;bc=EN;CWKCF;dm=0033 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT THREE COMMA;NFKC_CF=0033 002C;NFKC_QC=N;NFKC_SCF=0033 002C;NFKD_QC=N;nt=Di;nv=3
+cp;1F105;age=5.2;bc=EN;CWKCF;dm=0034 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT FOUR COMMA;NFKC_CF=0034 002C;NFKC_QC=N;NFKC_SCF=0034 002C;NFKD_QC=N;nt=Di;nv=4
+cp;1F106;age=5.2;bc=EN;CWKCF;dm=0035 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT FIVE COMMA;NFKC_CF=0035 002C;NFKC_QC=N;NFKC_SCF=0035 002C;NFKD_QC=N;nt=Di;nv=5
+cp;1F107;age=5.2;bc=EN;CWKCF;dm=0036 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT SIX COMMA;NFKC_CF=0036 002C;NFKC_QC=N;NFKC_SCF=0036 002C;NFKD_QC=N;nt=Di;nv=6
+cp;1F108;age=5.2;bc=EN;CWKCF;dm=0037 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT SEVEN COMMA;NFKC_CF=0037 002C;NFKC_QC=N;NFKC_SCF=0037 002C;NFKD_QC=N;nt=Di;nv=7
+cp;1F109;age=5.2;bc=EN;CWKCF;dm=0038 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT EIGHT COMMA;NFKC_CF=0038 002C;NFKC_QC=N;NFKC_SCF=0038 002C;NFKD_QC=N;nt=Di;nv=8
+cp;1F10A;age=5.2;bc=EN;CWKCF;dm=0039 002C;dt=Com;gc=No;Identifier_Type=Not_NFKC;na=DIGIT NINE COMMA;NFKC_CF=0039 002C;NFKC_QC=N;NFKC_SCF=0039 002C;NFKD_QC=N;nt=Di;nv=9
# Circled sans-serif digits
cp;1F10B;age=7.0;bc=ON;ea=N;gc=No;na=DINGBAT CIRCLED SANS-SERIF DIGIT ZERO;nt=Nu;nv=0
cp;1F10C;age=7.0;bc=ON;ea=N;gc=No;na=DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO;nt=Nu;nv=0
@@ -37732,74 +37749,74 @@ cp;1F10D;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED ZERO WITH SLASH
cp;1F10E;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED ANTICLOCKWISE ARROW
cp;1F10F;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
# Parenthesized Latin letters
-cp;1F110;age=5.2;CWKCF;dm=0028 0041 0029;dt=Com;FC_NFKC=0028 0061 0029;na=PARENTHESIZED LATIN CAPITAL LETTER A;NFKC_CF=0028 0061 0029;NFKC_QC=N;NFKC_SCF=0028 0061 0029;NFKD_QC=N
-cp;1F111;age=5.2;CWKCF;dm=0028 0042 0029;dt=Com;FC_NFKC=0028 0062 0029;na=PARENTHESIZED LATIN CAPITAL LETTER B;NFKC_CF=0028 0062 0029;NFKC_QC=N;NFKC_SCF=0028 0062 0029;NFKD_QC=N
-cp;1F112;age=5.2;CWKCF;dm=0028 0043 0029;dt=Com;FC_NFKC=0028 0063 0029;na=PARENTHESIZED LATIN CAPITAL LETTER C;NFKC_CF=0028 0063 0029;NFKC_QC=N;NFKC_SCF=0028 0063 0029;NFKD_QC=N
-cp;1F113;age=5.2;CWKCF;dm=0028 0044 0029;dt=Com;FC_NFKC=0028 0064 0029;na=PARENTHESIZED LATIN CAPITAL LETTER D;NFKC_CF=0028 0064 0029;NFKC_QC=N;NFKC_SCF=0028 0064 0029;NFKD_QC=N
-cp;1F114;age=5.2;CWKCF;dm=0028 0045 0029;dt=Com;FC_NFKC=0028 0065 0029;na=PARENTHESIZED LATIN CAPITAL LETTER E;NFKC_CF=0028 0065 0029;NFKC_QC=N;NFKC_SCF=0028 0065 0029;NFKD_QC=N
-cp;1F115;age=5.2;CWKCF;dm=0028 0046 0029;dt=Com;FC_NFKC=0028 0066 0029;na=PARENTHESIZED LATIN CAPITAL LETTER F;NFKC_CF=0028 0066 0029;NFKC_QC=N;NFKC_SCF=0028 0066 0029;NFKD_QC=N
-cp;1F116;age=5.2;CWKCF;dm=0028 0047 0029;dt=Com;FC_NFKC=0028 0067 0029;na=PARENTHESIZED LATIN CAPITAL LETTER G;NFKC_CF=0028 0067 0029;NFKC_QC=N;NFKC_SCF=0028 0067 0029;NFKD_QC=N
-cp;1F117;age=5.2;CWKCF;dm=0028 0048 0029;dt=Com;FC_NFKC=0028 0068 0029;na=PARENTHESIZED LATIN CAPITAL LETTER H;NFKC_CF=0028 0068 0029;NFKC_QC=N;NFKC_SCF=0028 0068 0029;NFKD_QC=N
-cp;1F118;age=5.2;CWKCF;dm=0028 0049 0029;dt=Com;FC_NFKC=0028 0069 0029;na=PARENTHESIZED LATIN CAPITAL LETTER I;NFKC_CF=0028 0069 0029;NFKC_QC=N;NFKC_SCF=0028 0069 0029;NFKD_QC=N
-cp;1F119;age=5.2;CWKCF;dm=0028 004A 0029;dt=Com;FC_NFKC=0028 006A 0029;na=PARENTHESIZED LATIN CAPITAL LETTER J;NFKC_CF=0028 006A 0029;NFKC_QC=N;NFKC_SCF=0028 006A 0029;NFKD_QC=N
-cp;1F11A;age=5.2;CWKCF;dm=0028 004B 0029;dt=Com;FC_NFKC=0028 006B 0029;na=PARENTHESIZED LATIN CAPITAL LETTER K;NFKC_CF=0028 006B 0029;NFKC_QC=N;NFKC_SCF=0028 006B 0029;NFKD_QC=N
-cp;1F11B;age=5.2;CWKCF;dm=0028 004C 0029;dt=Com;FC_NFKC=0028 006C 0029;na=PARENTHESIZED LATIN CAPITAL LETTER L;NFKC_CF=0028 006C 0029;NFKC_QC=N;NFKC_SCF=0028 006C 0029;NFKD_QC=N
-cp;1F11C;age=5.2;CWKCF;dm=0028 004D 0029;dt=Com;FC_NFKC=0028 006D 0029;na=PARENTHESIZED LATIN CAPITAL LETTER M;NFKC_CF=0028 006D 0029;NFKC_QC=N;NFKC_SCF=0028 006D 0029;NFKD_QC=N
-cp;1F11D;age=5.2;CWKCF;dm=0028 004E 0029;dt=Com;FC_NFKC=0028 006E 0029;na=PARENTHESIZED LATIN CAPITAL LETTER N;NFKC_CF=0028 006E 0029;NFKC_QC=N;NFKC_SCF=0028 006E 0029;NFKD_QC=N
-cp;1F11E;age=5.2;CWKCF;dm=0028 004F 0029;dt=Com;FC_NFKC=0028 006F 0029;na=PARENTHESIZED LATIN CAPITAL LETTER O;NFKC_CF=0028 006F 0029;NFKC_QC=N;NFKC_SCF=0028 006F 0029;NFKD_QC=N
-cp;1F11F;age=5.2;CWKCF;dm=0028 0050 0029;dt=Com;FC_NFKC=0028 0070 0029;na=PARENTHESIZED LATIN CAPITAL LETTER P;NFKC_CF=0028 0070 0029;NFKC_QC=N;NFKC_SCF=0028 0070 0029;NFKD_QC=N
-cp;1F120;age=5.2;CWKCF;dm=0028 0051 0029;dt=Com;FC_NFKC=0028 0071 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Q;NFKC_CF=0028 0071 0029;NFKC_QC=N;NFKC_SCF=0028 0071 0029;NFKD_QC=N
-cp;1F121;age=5.2;CWKCF;dm=0028 0052 0029;dt=Com;FC_NFKC=0028 0072 0029;na=PARENTHESIZED LATIN CAPITAL LETTER R;NFKC_CF=0028 0072 0029;NFKC_QC=N;NFKC_SCF=0028 0072 0029;NFKD_QC=N
-cp;1F122;age=5.2;CWKCF;dm=0028 0053 0029;dt=Com;FC_NFKC=0028 0073 0029;na=PARENTHESIZED LATIN CAPITAL LETTER S;NFKC_CF=0028 0073 0029;NFKC_QC=N;NFKC_SCF=0028 0073 0029;NFKD_QC=N
-cp;1F123;age=5.2;CWKCF;dm=0028 0054 0029;dt=Com;FC_NFKC=0028 0074 0029;na=PARENTHESIZED LATIN CAPITAL LETTER T;NFKC_CF=0028 0074 0029;NFKC_QC=N;NFKC_SCF=0028 0074 0029;NFKD_QC=N
-cp;1F124;age=5.2;CWKCF;dm=0028 0055 0029;dt=Com;FC_NFKC=0028 0075 0029;na=PARENTHESIZED LATIN CAPITAL LETTER U;NFKC_CF=0028 0075 0029;NFKC_QC=N;NFKC_SCF=0028 0075 0029;NFKD_QC=N
-cp;1F125;age=5.2;CWKCF;dm=0028 0056 0029;dt=Com;FC_NFKC=0028 0076 0029;na=PARENTHESIZED LATIN CAPITAL LETTER V;NFKC_CF=0028 0076 0029;NFKC_QC=N;NFKC_SCF=0028 0076 0029;NFKD_QC=N
-cp;1F126;age=5.2;CWKCF;dm=0028 0057 0029;dt=Com;FC_NFKC=0028 0077 0029;na=PARENTHESIZED LATIN CAPITAL LETTER W;NFKC_CF=0028 0077 0029;NFKC_QC=N;NFKC_SCF=0028 0077 0029;NFKD_QC=N
-cp;1F127;age=5.2;CWKCF;dm=0028 0058 0029;dt=Com;FC_NFKC=0028 0078 0029;na=PARENTHESIZED LATIN CAPITAL LETTER X;NFKC_CF=0028 0078 0029;NFKC_QC=N;NFKC_SCF=0028 0078 0029;NFKD_QC=N
-cp;1F128;age=5.2;CWKCF;dm=0028 0059 0029;dt=Com;FC_NFKC=0028 0079 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Y;NFKC_CF=0028 0079 0029;NFKC_QC=N;NFKC_SCF=0028 0079 0029;NFKD_QC=N
-cp;1F129;age=5.2;CWKCF;dm=0028 005A 0029;dt=Com;FC_NFKC=0028 007A 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Z;NFKC_CF=0028 007A 0029;NFKC_QC=N;NFKC_SCF=0028 007A 0029;NFKD_QC=N
+cp;1F110;age=5.2;CWKCF;dm=0028 0041 0029;dt=Com;FC_NFKC=0028 0061 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER A;NFKC_CF=0028 0061 0029;NFKC_QC=N;NFKC_SCF=0028 0061 0029;NFKD_QC=N
+cp;1F111;age=5.2;CWKCF;dm=0028 0042 0029;dt=Com;FC_NFKC=0028 0062 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER B;NFKC_CF=0028 0062 0029;NFKC_QC=N;NFKC_SCF=0028 0062 0029;NFKD_QC=N
+cp;1F112;age=5.2;CWKCF;dm=0028 0043 0029;dt=Com;FC_NFKC=0028 0063 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER C;NFKC_CF=0028 0063 0029;NFKC_QC=N;NFKC_SCF=0028 0063 0029;NFKD_QC=N
+cp;1F113;age=5.2;CWKCF;dm=0028 0044 0029;dt=Com;FC_NFKC=0028 0064 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER D;NFKC_CF=0028 0064 0029;NFKC_QC=N;NFKC_SCF=0028 0064 0029;NFKD_QC=N
+cp;1F114;age=5.2;CWKCF;dm=0028 0045 0029;dt=Com;FC_NFKC=0028 0065 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER E;NFKC_CF=0028 0065 0029;NFKC_QC=N;NFKC_SCF=0028 0065 0029;NFKD_QC=N
+cp;1F115;age=5.2;CWKCF;dm=0028 0046 0029;dt=Com;FC_NFKC=0028 0066 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER F;NFKC_CF=0028 0066 0029;NFKC_QC=N;NFKC_SCF=0028 0066 0029;NFKD_QC=N
+cp;1F116;age=5.2;CWKCF;dm=0028 0047 0029;dt=Com;FC_NFKC=0028 0067 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER G;NFKC_CF=0028 0067 0029;NFKC_QC=N;NFKC_SCF=0028 0067 0029;NFKD_QC=N
+cp;1F117;age=5.2;CWKCF;dm=0028 0048 0029;dt=Com;FC_NFKC=0028 0068 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER H;NFKC_CF=0028 0068 0029;NFKC_QC=N;NFKC_SCF=0028 0068 0029;NFKD_QC=N
+cp;1F118;age=5.2;CWKCF;dm=0028 0049 0029;dt=Com;FC_NFKC=0028 0069 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER I;NFKC_CF=0028 0069 0029;NFKC_QC=N;NFKC_SCF=0028 0069 0029;NFKD_QC=N
+cp;1F119;age=5.2;CWKCF;dm=0028 004A 0029;dt=Com;FC_NFKC=0028 006A 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER J;NFKC_CF=0028 006A 0029;NFKC_QC=N;NFKC_SCF=0028 006A 0029;NFKD_QC=N
+cp;1F11A;age=5.2;CWKCF;dm=0028 004B 0029;dt=Com;FC_NFKC=0028 006B 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER K;NFKC_CF=0028 006B 0029;NFKC_QC=N;NFKC_SCF=0028 006B 0029;NFKD_QC=N
+cp;1F11B;age=5.2;CWKCF;dm=0028 004C 0029;dt=Com;FC_NFKC=0028 006C 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER L;NFKC_CF=0028 006C 0029;NFKC_QC=N;NFKC_SCF=0028 006C 0029;NFKD_QC=N
+cp;1F11C;age=5.2;CWKCF;dm=0028 004D 0029;dt=Com;FC_NFKC=0028 006D 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER M;NFKC_CF=0028 006D 0029;NFKC_QC=N;NFKC_SCF=0028 006D 0029;NFKD_QC=N
+cp;1F11D;age=5.2;CWKCF;dm=0028 004E 0029;dt=Com;FC_NFKC=0028 006E 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER N;NFKC_CF=0028 006E 0029;NFKC_QC=N;NFKC_SCF=0028 006E 0029;NFKD_QC=N
+cp;1F11E;age=5.2;CWKCF;dm=0028 004F 0029;dt=Com;FC_NFKC=0028 006F 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER O;NFKC_CF=0028 006F 0029;NFKC_QC=N;NFKC_SCF=0028 006F 0029;NFKD_QC=N
+cp;1F11F;age=5.2;CWKCF;dm=0028 0050 0029;dt=Com;FC_NFKC=0028 0070 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER P;NFKC_CF=0028 0070 0029;NFKC_QC=N;NFKC_SCF=0028 0070 0029;NFKD_QC=N
+cp;1F120;age=5.2;CWKCF;dm=0028 0051 0029;dt=Com;FC_NFKC=0028 0071 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER Q;NFKC_CF=0028 0071 0029;NFKC_QC=N;NFKC_SCF=0028 0071 0029;NFKD_QC=N
+cp;1F121;age=5.2;CWKCF;dm=0028 0052 0029;dt=Com;FC_NFKC=0028 0072 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER R;NFKC_CF=0028 0072 0029;NFKC_QC=N;NFKC_SCF=0028 0072 0029;NFKD_QC=N
+cp;1F122;age=5.2;CWKCF;dm=0028 0053 0029;dt=Com;FC_NFKC=0028 0073 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER S;NFKC_CF=0028 0073 0029;NFKC_QC=N;NFKC_SCF=0028 0073 0029;NFKD_QC=N
+cp;1F123;age=5.2;CWKCF;dm=0028 0054 0029;dt=Com;FC_NFKC=0028 0074 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER T;NFKC_CF=0028 0074 0029;NFKC_QC=N;NFKC_SCF=0028 0074 0029;NFKD_QC=N
+cp;1F124;age=5.2;CWKCF;dm=0028 0055 0029;dt=Com;FC_NFKC=0028 0075 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER U;NFKC_CF=0028 0075 0029;NFKC_QC=N;NFKC_SCF=0028 0075 0029;NFKD_QC=N
+cp;1F125;age=5.2;CWKCF;dm=0028 0056 0029;dt=Com;FC_NFKC=0028 0076 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER V;NFKC_CF=0028 0076 0029;NFKC_QC=N;NFKC_SCF=0028 0076 0029;NFKD_QC=N
+cp;1F126;age=5.2;CWKCF;dm=0028 0057 0029;dt=Com;FC_NFKC=0028 0077 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER W;NFKC_CF=0028 0077 0029;NFKC_QC=N;NFKC_SCF=0028 0077 0029;NFKD_QC=N
+cp;1F127;age=5.2;CWKCF;dm=0028 0058 0029;dt=Com;FC_NFKC=0028 0078 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER X;NFKC_CF=0028 0078 0029;NFKC_QC=N;NFKC_SCF=0028 0078 0029;NFKD_QC=N
+cp;1F128;age=5.2;CWKCF;dm=0028 0059 0029;dt=Com;FC_NFKC=0028 0079 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER Y;NFKC_CF=0028 0079 0029;NFKC_QC=N;NFKC_SCF=0028 0079 0029;NFKD_QC=N
+cp;1F129;age=5.2;CWKCF;dm=0028 005A 0029;dt=Com;FC_NFKC=0028 007A 0029;Identifier_Type=Not_NFKC;na=PARENTHESIZED LATIN CAPITAL LETTER Z;NFKC_CF=0028 007A 0029;NFKC_QC=N;NFKC_SCF=0028 007A 0029;NFKD_QC=N
# Latin letter with tortoise shell brackets
-cp;1F12A;age=5.2;CWKCF;dm=3014 0053 3015;dt=Com;FC_NFKC=3014 0073 3015;na=TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;NFKC_CF=3014 0073 3015;NFKC_QC=N;NFKC_SCF=3014 0073 3015;NFKD_QC=N
+cp;1F12A;age=5.2;CWKCF;dm=3014 0053 3015;dt=Com;FC_NFKC=3014 0073 3015;Identifier_Type=Not_NFKC;na=TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;NFKC_CF=3014 0073 3015;NFKC_QC=N;NFKC_SCF=3014 0073 3015;NFKD_QC=N
# Circled italic Latin letters
-cp;1F12B;age=5.2;CWKCF;dm=0043;dt=Enc;FC_NFKC=0063;na=CIRCLED ITALIC LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N
-cp;1F12C;age=5.2;CWKCF;dm=0052;dt=Enc;FC_NFKC=0072;na=CIRCLED ITALIC LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
+cp;1F12B;age=5.2;CWKCF;dm=0043;dt=Enc;FC_NFKC=0063;Identifier_Type=Not_NFKC;na=CIRCLED ITALIC LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N
+cp;1F12C;age=5.2;CWKCF;dm=0052;dt=Enc;FC_NFKC=0072;Identifier_Type=Not_NFKC;na=CIRCLED ITALIC LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
# Circled Latin letters or letter sequences
-cp;1F12D;age=5.2;CWKCF;dm=0043 0044;dt=Enc;FC_NFKC=0063 0064;na=CIRCLED CD;NFKC_CF=0063 0064;NFKC_QC=N;NFKC_SCF=0063 0064;NFKD_QC=N
-cp;1F12E;age=5.2;CWKCF;dm=0057 005A;dt=Enc;ea=N;FC_NFKC=0077 007A;lb=AL;na=CIRCLED WZ;NFKC_CF=0077 007A;NFKC_QC=N;NFKC_SCF=0077 007A;NFKD_QC=N
+cp;1F12D;age=5.2;CWKCF;dm=0043 0044;dt=Enc;FC_NFKC=0063 0064;Identifier_Type=Not_NFKC;na=CIRCLED CD;NFKC_CF=0063 0064;NFKC_QC=N;NFKC_SCF=0063 0064;NFKD_QC=N
+cp;1F12E;age=5.2;CWKCF;dm=0057 005A;dt=Enc;ea=N;FC_NFKC=0077 007A;Identifier_Type=Not_NFKC;lb=AL;na=CIRCLED WZ;NFKC_CF=0077 007A;NFKC_QC=N;NFKC_SCF=0077 007A;NFKD_QC=N
cp;1F12F;age=11.0;bc=ON;ea=N;ExtPict;lb=AL;na=COPYLEFT SYMBOL
# Squared Latin letters
-cp;1F130;Alpha;Cased;CWKCF;dm=0041;dt=Sqr;FC_NFKC=0061;na=SQUARED LATIN CAPITAL LETTER A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F131;age=5.2;Alpha;Cased;CWKCF;dm=0042;dt=Sqr;FC_NFKC=0062;na=SQUARED LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F132;Alpha;Cased;CWKCF;dm=0043;dt=Sqr;FC_NFKC=0063;na=SQUARED LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F133;Alpha;Cased;CWKCF;dm=0044;dt=Sqr;FC_NFKC=0064;na=SQUARED LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F134;Alpha;Cased;CWKCF;dm=0045;dt=Sqr;FC_NFKC=0065;na=SQUARED LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F135;Alpha;Cased;CWKCF;dm=0046;dt=Sqr;FC_NFKC=0066;na=SQUARED LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_QC=N;NFKC_SCF=0066;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F136;Alpha;Cased;CWKCF;dm=0047;dt=Sqr;FC_NFKC=0067;na=SQUARED LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F137;Alpha;Cased;CWKCF;dm=0048;dt=Sqr;FC_NFKC=0068;na=SQUARED LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F138;Alpha;Cased;CWKCF;dm=0049;dt=Sqr;FC_NFKC=0069;na=SQUARED LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F139;Alpha;Cased;CWKCF;dm=004A;dt=Sqr;FC_NFKC=006A;na=SQUARED LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13A;Alpha;Cased;CWKCF;dm=004B;dt=Sqr;FC_NFKC=006B;na=SQUARED LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13B;Alpha;Cased;CWKCF;dm=004C;dt=Sqr;FC_NFKC=006C;na=SQUARED LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13C;Alpha;Cased;CWKCF;dm=004D;dt=Sqr;FC_NFKC=006D;na=SQUARED LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13D;age=5.2;Alpha;Cased;CWKCF;dm=004E;dt=Sqr;FC_NFKC=006E;na=SQUARED LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_QC=N;NFKC_SCF=006E;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13E;Alpha;Cased;CWKCF;dm=004F;dt=Sqr;FC_NFKC=006F;na=SQUARED LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13F;age=5.2;Alpha;Cased;CWKCF;dm=0050;dt=Sqr;FC_NFKC=0070;na=SQUARED LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F140;Alpha;Cased;CWKCF;dm=0051;dt=Sqr;FC_NFKC=0071;na=SQUARED LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_QC=N;NFKC_SCF=0071;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F141;Alpha;Cased;CWKCF;dm=0052;dt=Sqr;FC_NFKC=0072;na=SQUARED LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F142;age=5.2;Alpha;Cased;CWKCF;dm=0053;dt=Sqr;FC_NFKC=0073;na=SQUARED LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F143;Alpha;Cased;CWKCF;dm=0054;dt=Sqr;FC_NFKC=0074;na=SQUARED LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F144;Alpha;Cased;CWKCF;dm=0055;dt=Sqr;FC_NFKC=0075;na=SQUARED LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F145;Alpha;Cased;CWKCF;dm=0056;dt=Sqr;FC_NFKC=0076;na=SQUARED LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F146;age=5.2;Alpha;Cased;CWKCF;dm=0057;dt=Sqr;FC_NFKC=0077;na=SQUARED LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F147;Alpha;Cased;CWKCF;dm=0058;dt=Sqr;FC_NFKC=0078;na=SQUARED LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_QC=N;NFKC_SCF=0078;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F148;Alpha;Cased;CWKCF;dm=0059;dt=Sqr;FC_NFKC=0079;na=SQUARED LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_QC=N;NFKC_SCF=0079;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F149;Alpha;Cased;CWKCF;dm=005A;dt=Sqr;FC_NFKC=007A;na=SQUARED LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_QC=N;NFKC_SCF=007A;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F14A;age=5.2;CWKCF;dm=0048 0056;dt=Sqr;FC_NFKC=0068 0076;na=SQUARED HV;NFKC_CF=0068 0076;NFKC_QC=N;NFKC_SCF=0068 0076;NFKD_QC=N
-cp;1F14B;age=5.2;CWKCF;dm=004D 0056;dt=Sqr;FC_NFKC=006D 0076;na=SQUARED MV;NFKC_CF=006D 0076;NFKC_QC=N;NFKC_SCF=006D 0076;NFKD_QC=N
-cp;1F14C;age=5.2;CWKCF;dm=0053 0044;dt=Sqr;FC_NFKC=0073 0064;na=SQUARED SD;NFKC_CF=0073 0064;NFKC_QC=N;NFKC_SCF=0073 0064;NFKD_QC=N
-cp;1F14D;age=5.2;CWKCF;dm=0053 0053;dt=Sqr;FC_NFKC=0073 0073;na=SQUARED SS;NFKC_CF=0073 0073;NFKC_QC=N;NFKC_SCF=0073 0073;NFKD_QC=N
-cp;1F14E;age=5.2;CWKCF;dm=0050 0050 0056;dt=Sqr;FC_NFKC=0070 0070 0076;na=SQUARED PPV;NFKC_CF=0070 0070 0076;NFKC_QC=N;NFKC_SCF=0070 0070 0076;NFKD_QC=N
-cp;1F14F;CWKCF;dm=0057 0043;dt=Sqr;FC_NFKC=0077 0063;na=SQUARED WC;NFKC_CF=0077 0063;NFKC_QC=N;NFKC_SCF=0077 0063;NFKD_QC=N
+cp;1F130;Alpha;Cased;CWKCF;dm=0041;dt=Sqr;FC_NFKC=0061;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F131;age=5.2;Alpha;Cased;CWKCF;dm=0042;dt=Sqr;FC_NFKC=0062;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F132;Alpha;Cased;CWKCF;dm=0043;dt=Sqr;FC_NFKC=0063;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F133;Alpha;Cased;CWKCF;dm=0044;dt=Sqr;FC_NFKC=0064;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F134;Alpha;Cased;CWKCF;dm=0045;dt=Sqr;FC_NFKC=0065;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F135;Alpha;Cased;CWKCF;dm=0046;dt=Sqr;FC_NFKC=0066;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_QC=N;NFKC_SCF=0066;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F136;Alpha;Cased;CWKCF;dm=0047;dt=Sqr;FC_NFKC=0067;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F137;Alpha;Cased;CWKCF;dm=0048;dt=Sqr;FC_NFKC=0068;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F138;Alpha;Cased;CWKCF;dm=0049;dt=Sqr;FC_NFKC=0069;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F139;Alpha;Cased;CWKCF;dm=004A;dt=Sqr;FC_NFKC=006A;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13A;Alpha;Cased;CWKCF;dm=004B;dt=Sqr;FC_NFKC=006B;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13B;Alpha;Cased;CWKCF;dm=004C;dt=Sqr;FC_NFKC=006C;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13C;Alpha;Cased;CWKCF;dm=004D;dt=Sqr;FC_NFKC=006D;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13D;age=5.2;Alpha;Cased;CWKCF;dm=004E;dt=Sqr;FC_NFKC=006E;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_QC=N;NFKC_SCF=006E;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13E;Alpha;Cased;CWKCF;dm=004F;dt=Sqr;FC_NFKC=006F;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13F;age=5.2;Alpha;Cased;CWKCF;dm=0050;dt=Sqr;FC_NFKC=0070;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F140;Alpha;Cased;CWKCF;dm=0051;dt=Sqr;FC_NFKC=0071;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_QC=N;NFKC_SCF=0071;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F141;Alpha;Cased;CWKCF;dm=0052;dt=Sqr;FC_NFKC=0072;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F142;age=5.2;Alpha;Cased;CWKCF;dm=0053;dt=Sqr;FC_NFKC=0073;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F143;Alpha;Cased;CWKCF;dm=0054;dt=Sqr;FC_NFKC=0074;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F144;Alpha;Cased;CWKCF;dm=0055;dt=Sqr;FC_NFKC=0075;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F145;Alpha;Cased;CWKCF;dm=0056;dt=Sqr;FC_NFKC=0076;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F146;age=5.2;Alpha;Cased;CWKCF;dm=0057;dt=Sqr;FC_NFKC=0077;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F147;Alpha;Cased;CWKCF;dm=0058;dt=Sqr;FC_NFKC=0078;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_QC=N;NFKC_SCF=0078;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F148;Alpha;Cased;CWKCF;dm=0059;dt=Sqr;FC_NFKC=0079;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_QC=N;NFKC_SCF=0079;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F149;Alpha;Cased;CWKCF;dm=005A;dt=Sqr;FC_NFKC=007A;Identifier_Type=Not_NFKC;na=SQUARED LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_QC=N;NFKC_SCF=007A;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F14A;age=5.2;CWKCF;dm=0048 0056;dt=Sqr;FC_NFKC=0068 0076;Identifier_Type=Not_NFKC;na=SQUARED HV;NFKC_CF=0068 0076;NFKC_QC=N;NFKC_SCF=0068 0076;NFKD_QC=N
+cp;1F14B;age=5.2;CWKCF;dm=004D 0056;dt=Sqr;FC_NFKC=006D 0076;Identifier_Type=Not_NFKC;na=SQUARED MV;NFKC_CF=006D 0076;NFKC_QC=N;NFKC_SCF=006D 0076;NFKD_QC=N
+cp;1F14C;age=5.2;CWKCF;dm=0053 0044;dt=Sqr;FC_NFKC=0073 0064;Identifier_Type=Not_NFKC;na=SQUARED SD;NFKC_CF=0073 0064;NFKC_QC=N;NFKC_SCF=0073 0064;NFKD_QC=N
+cp;1F14D;age=5.2;CWKCF;dm=0053 0053;dt=Sqr;FC_NFKC=0073 0073;Identifier_Type=Not_NFKC;na=SQUARED SS;NFKC_CF=0073 0073;NFKC_QC=N;NFKC_SCF=0073 0073;NFKD_QC=N
+cp;1F14E;age=5.2;CWKCF;dm=0050 0050 0056;dt=Sqr;FC_NFKC=0070 0070 0076;Identifier_Type=Not_NFKC;na=SQUARED PPV;NFKC_CF=0070 0070 0076;NFKC_QC=N;NFKC_SCF=0070 0070 0076;NFKD_QC=N
+cp;1F14F;CWKCF;dm=0057 0043;dt=Sqr;FC_NFKC=0077 0063;Identifier_Type=Not_NFKC;na=SQUARED WC;NFKC_CF=0077 0063;NFKC_QC=N;NFKC_SCF=0077 0063;NFKD_QC=N
# White on black circled Latin letters
cp;1F150;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER A;SB=UP;Upper;WB=LE
cp;1F151;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER B;SB=UP;Upper;WB=LE
@@ -37828,9 +37845,9 @@ cp;1F167;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER X;SB=UP;Upper;WB=L
cp;1F168;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER Y;SB=UP;Upper;WB=LE
cp;1F169;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER Z;SB=UP;Upper;WB=LE
# Raised squared Latin sequences
-cp;1F16A;age=6.1;bc=ON;CWKCF;dm=004D 0043;dt=Sup;ea=N;FC_NFKC=006D 0063;lb=AL;na=RAISED MC SIGN;NFKC_CF=006D 0063;NFKC_QC=N;NFKC_SCF=006D 0063;NFKD_QC=N
-cp;1F16B;age=6.1;bc=ON;CWKCF;dm=004D 0044;dt=Sup;ea=N;FC_NFKC=006D 0064;lb=AL;na=RAISED MD SIGN;NFKC_CF=006D 0064;NFKC_QC=N;NFKC_SCF=006D 0064;NFKD_QC=N
-cp;1F16C;age=12.0;bc=ON;CWKCF;dm=004D 0052;dt=Sup;ea=N;ExtPict;FC_NFKC=006D 0072;lb=AL;na=RAISED MR SIGN;NFKC_CF=006D 0072;NFKC_QC=N;NFKC_SCF=006D 0072;NFKD_QC=N
+cp;1F16A;age=6.1;bc=ON;CWKCF;dm=004D 0043;dt=Sup;ea=N;FC_NFKC=006D 0063;Identifier_Type=Not_NFKC;lb=AL;na=RAISED MC SIGN;NFKC_CF=006D 0063;NFKC_QC=N;NFKC_SCF=006D 0063;NFKD_QC=N
+cp;1F16B;age=6.1;bc=ON;CWKCF;dm=004D 0044;dt=Sup;ea=N;FC_NFKC=006D 0064;Identifier_Type=Not_NFKC;lb=AL;na=RAISED MD SIGN;NFKC_CF=006D 0064;NFKC_QC=N;NFKC_SCF=006D 0064;NFKD_QC=N
+cp;1F16C;age=12.0;bc=ON;CWKCF;dm=004D 0052;dt=Sup;ea=N;ExtPict;FC_NFKC=006D 0072;Identifier_Type=Not_NFKC;lb=AL;na=RAISED MR SIGN;NFKC_CF=006D 0072;NFKC_QC=N;NFKC_SCF=006D 0072;NFKD_QC=N
# Creative Commons symbols
cp;1F16D;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED CC
cp;1F16E;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED C WITH OVERLAID BACKSLASH
@@ -37869,7 +37886,7 @@ cp;1F18D;age=5.2;na=NEGATIVE SQUARED SA
cp;1F18E;ea=W;Emoji;EPres;ExtPict;na=NEGATIVE SQUARED AB
cp;1F18F;na=NEGATIVE SQUARED WC
# Squared Latin letter sequences
-cp;1F190;age=5.2;CWKCF;dm=0044 004A;dt=Sqr;FC_NFKC=0064 006A;na=SQUARE DJ;NFKC_CF=0064 006A;NFKC_QC=N;NFKC_SCF=0064 006A;NFKD_QC=N
+cp;1F190;age=5.2;CWKCF;dm=0044 004A;dt=Sqr;FC_NFKC=0064 006A;Identifier_Type=Not_NFKC;na=SQUARE DJ;NFKC_CF=0064 006A;NFKC_QC=N;NFKC_SCF=0064 006A;NFKD_QC=N
cp;1F191;ea=W;Emoji;EPres;ExtPict;na=SQUARED CL
cp;1F192;ea=W;Emoji;EPres;ExtPict;na=SQUARED COOL
cp;1F193;ea=W;Emoji;EPres;ExtPict;na=SQUARED FREE
@@ -37930,7 +37947,7 @@ cp;1F1FD;ea=N;EComp;Emoji;EPres;GCB=RI;lb=RI;na=REGIONAL INDICATOR SYMBOL LETTER
cp;1F1FE;ea=N;EComp;Emoji;EPres;GCB=RI;lb=RI;na=REGIONAL INDICATOR SYMBOL LETTER Y;RI;WB=RI
cp;1F1FF;ea=N;EComp;Emoji;EPres;GCB=RI;lb=RI;na=REGIONAL INDICATOR SYMBOL LETTER Z;RI;WB=RI
-block;1F200..1F2FF;age=5.2;blk=Enclosed_Ideographic_Sup;CWKCF;dt=Sqr;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
+block;1F200..1F2FF;age=5.2;blk=Enclosed_Ideographic_Sup;CWKCF;dt=Sqr;ea=W;gc=So;Gr_Base;Identifier_Type=Not_NFKC;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# 1F200..1F2FF Enclosed Ideographic Supplement
# Squared hiragana from ARIB STD B24
cp;1F200;dm=307B 304B;na=SQUARE HIRAGANA HOKA;NFKC_CF=307B 304B;NFKC_SCF=307B 304B;sc=Hira;vo=Tu
@@ -38001,15 +38018,15 @@ cp;1F250;age=6.0;dm=5F97;dt=Enc;Emoji;EPres;ExtPict;na=CIRCLED IDEOGRAPH ADVANTA
cp;1F251;age=6.0;dm=53EF;dt=Enc;Emoji;EPres;ExtPict;na=CIRCLED IDEOGRAPH ACCEPT;NFKC_CF=53EF;NFKC_SCF=53EF;scx=Hani
unassigned;1F252..1F25F;ExtPict;lb=ID;vo=U
# Symbols for Chinese folk religion
-cp;1F260;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;na=ROUNDED SYMBOL FOR FU;NFKC_QC=Y;NFKD_QC=Y
-cp;1F261;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;na=ROUNDED SYMBOL FOR LU;NFKC_QC=Y;NFKD_QC=Y
-cp;1F262;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;na=ROUNDED SYMBOL FOR SHOU;NFKC_QC=Y;NFKD_QC=Y
-cp;1F263;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;na=ROUNDED SYMBOL FOR XI;NFKC_QC=Y;NFKD_QC=Y
-cp;1F264;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;na=ROUNDED SYMBOL FOR SHUANGXI;NFKC_QC=Y;NFKD_QC=Y
-cp;1F265;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;na=ROUNDED SYMBOL FOR CAI;NFKC_QC=Y;NFKD_QC=Y
+cp;1F260;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;Identifier_Type=Not_XID;na=ROUNDED SYMBOL FOR FU;NFKC_QC=Y;NFKD_QC=Y
+cp;1F261;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;Identifier_Type=Not_XID;na=ROUNDED SYMBOL FOR LU;NFKC_QC=Y;NFKD_QC=Y
+cp;1F262;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;Identifier_Type=Not_XID;na=ROUNDED SYMBOL FOR SHOU;NFKC_QC=Y;NFKD_QC=Y
+cp;1F263;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;Identifier_Type=Not_XID;na=ROUNDED SYMBOL FOR XI;NFKC_QC=Y;NFKD_QC=Y
+cp;1F264;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;Identifier_Type=Not_XID;na=ROUNDED SYMBOL FOR SHUANGXI;NFKC_QC=Y;NFKD_QC=Y
+cp;1F265;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;Identifier_Type=Not_XID;na=ROUNDED SYMBOL FOR CAI;NFKC_QC=Y;NFKD_QC=Y
unassigned;1F266..1F2FF;ExtPict;lb=ID;vo=U
-block;1F300..1F5FF;age=6.0;bc=ON;blk=Misc_Pictographs;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;lb=ID;sc=Zyyy;vo=U
+block;1F300..1F5FF;age=6.0;bc=ON;blk=Misc_Pictographs;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;vo=U
# 1F300..1F5FF Miscellaneous Symbols and Pictographs
# Weather, landscape, and sky symbols
cp;1F300;na=CYCLONE
@@ -38657,7 +38674,7 @@ cp;1F54C;age=8.0;na=MOSQUE
cp;1F54D;age=8.0;na=SYNAGOGUE
cp;1F54E;age=8.0;na=MENORAH WITH NINE BRANCHES
# Miscellaneous symbol
-cp;1F54F;age=8.0;ea=N;-Emoji;-EPres;na=BOWL OF HYGIEIA
+cp;1F54F;age=8.0;ea=N;-Emoji;-EPres;Identifier_Type=Uncommon_Use Not_XID;na=BOWL OF HYGIEIA
# Clock face symbols
cp;1F550;na=CLOCK FACE ONE OCLOCK
cp;1F551;na=CLOCK FACE TWO OCLOCK
@@ -38854,7 +38871,7 @@ cp;1F5FD;na=STATUE OF LIBERTY
cp;1F5FE;na=SILHOUETTE OF JAPAN
cp;1F5FF;na=MOYAI
-block;1F600..1F64F;age=6.0;bc=ON;blk=Emoticons;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;lb=ID;sc=Zyyy;vo=U
+block;1F600..1F64F;age=6.0;bc=ON;blk=Emoticons;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;vo=U
# 1F600..1F64F Emoticons
# Faces
cp;1F600;age=6.1;na=GRINNING FACE
@@ -38941,7 +38958,7 @@ cp;1F64D;EBase;lb=EB;na=PERSON FROWNING
cp;1F64E;EBase;lb=EB;na=PERSON WITH POUTING FACE
cp;1F64F;EBase;lb=EB;na=PERSON WITH FOLDED HANDS
-block;1F650..1F67F;age=7.0;bc=ON;blk=Ornamental_Dingbats;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;1F650..1F67F;age=7.0;bc=ON;blk=Ornamental_Dingbats;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy;vo=U
# 1F650..1F67F Ornamental Dingbats
# Fleurons
cp;1F650;na=NORTH WEST POINTING LEAF
@@ -38998,7 +39015,7 @@ cp;1F67D;na=VERY HEAVY REVERSE SOLIDUS
cp;1F67E;na=CHECKER BOARD
cp;1F67F;na=REVERSE CHECKER BOARD
-block;1F680..1F6FF;age=6.0;bc=ON;blk=Transport_And_Map;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;lb=ID;sc=Zyyy;vo=U
+block;1F680..1F6FF;age=6.0;bc=ON;blk=Transport_And_Map;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;vo=U
# 1F680..1F6FF Transport and Map Symbols
# Vehicles
cp;1F680;na=ROCKET
@@ -39130,7 +39147,7 @@ cp;1F6FB;age=13.0;na=PICKUP TRUCK
cp;1F6FC;age=13.0;na=ROLLER SKATE
unassigned;1F6FD..1F6FF;ExtPict;lb=ID;vo=U
-block;1F700..1F77F;age=6.0;bc=ON;blk=Alchemical;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;1F700..1F77F;age=6.0;bc=ON;blk=Alchemical;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy;vo=U
# 1F700..1F77F Alchemical Symbols
# Symbols for Aristotelian elements
cp;1F700;na=ALCHEMICAL SYMBOL FOR QUINTESSENCE
@@ -39275,7 +39292,7 @@ cp;1F77D;age=15.0;ExtPict;lb=ID;na=GONGGONG
cp;1F77E;age=15.0;ExtPict;lb=ID;na=QUAOAR
cp;1F77F;age=15.0;ExtPict;lb=ID;na=ORCUS
-block;1F780..1F7FF;age=7.0;bc=ON;blk=Geometric_Shapes_Ext;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;1F780..1F7FF;age=7.0;bc=ON;blk=Geometric_Shapes_Ext;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy;vo=U
# 1F780..1F7FF Geometric Shapes Extended
# Isosceles right triangles
cp;1F780;na=BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE
@@ -39414,7 +39431,7 @@ unassigned;1F7EC..1F7EF;ExtPict;lb=ID;vo=U
cp;1F7F0;age=14.0;ea=W;Emoji;EPres;ExtPict;lb=ID;na=HEAVY EQUALS SIGN
unassigned;1F7F1..1F7FF;ExtPict;lb=ID;vo=U
-block;1F800..1F8FF;age=7.0;bc=ON;blk=Sup_Arrows_C;gc=So;Gr_Base;lb=AL;sc=Zyyy
+block;1F800..1F8FF;age=7.0;bc=ON;blk=Sup_Arrows_C;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy
# 1F800..1F8FF Supplemental Arrows-C
# Arrows with triangle arrowheads
cp;1F800;na=LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD
@@ -39588,7 +39605,7 @@ cp;1F8B0;age=13.0;ExtPict;lb=ID;na=ARROW POINTING UPWARDS THEN NORTH WEST
cp;1F8B1;age=13.0;ExtPict;lb=ID;na=ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
unassigned;1F8B2..1F8FF;ExtPict;lb=ID
-block;1F900..1F9FF;age=10.0;bc=ON;blk=Sup_Symbols_And_Pictographs;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;lb=ID;sc=Zyyy;vo=U
+block;1F900..1F9FF;age=10.0;bc=ON;blk=Sup_Symbols_And_Pictographs;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;vo=U
# 1F900..1F9FF Supplemental Symbols and Pictographs
# Typicon symbols
cp;1F900;ea=N;-Emoji;-EPres;-ExtPict;lb=AL;na=CIRCLED CROSS FORMEE WITH FOUR DOTS
@@ -39874,7 +39891,7 @@ cp;1F9FD;age=11.0;na=SPONGE
cp;1F9FE;age=11.0;na=RECEIPT
cp;1F9FF;age=11.0;na=NAZAR AMULET
-block;1FA00..1FA6F;age=12.0;bc=ON;blk=Chess_Symbols;ExtPict;gc=So;Gr_Base;lb=AL;sc=Zyyy;vo=U
+block;1FA00..1FA6F;age=12.0;bc=ON;blk=Chess_Symbols;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy;vo=U
# 1FA00..1FA6F Chess Symbols
# Neutral chess symbols
cp;1FA00;na=NEUTRAL CHESS KING
@@ -39989,7 +40006,7 @@ cp;1FA6C;age=11.0;lb=ID;na=XIANGQI BLACK CANNON
cp;1FA6D;age=11.0;lb=ID;na=XIANGQI BLACK SOLDIER
unassigned;1FA6E..1FA6F;ExtPict;lb=ID;vo=U
-block;1FA70..1FAFF;age=13.0;bc=ON;blk=Symbols_And_Pictographs_Ext_A;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;lb=ID;sc=Zyyy;vo=U
+block;1FA70..1FAFF;age=13.0;bc=ON;blk=Symbols_And_Pictographs_Ext_A;ea=W;Emoji;EPres;ExtPict;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=ID;sc=Zyyy;vo=U
# 1FA70..1FAFF Symbols and Pictographs Extended-A
# Clothing
cp;1FA70;age=12.0;na=BALLET SHOES
@@ -40122,7 +40139,7 @@ cp;1FAF7;age=15.0;EBase;lb=EB;na=LEFTWARDS PUSHING HAND
cp;1FAF8;age=15.0;EBase;lb=EB;na=RIGHTWARDS PUSHING HAND
unassigned;1FAF9..1FAFF;ExtPict;lb=ID;vo=U
-block;1FB00..1FBFF;age=13.0;bc=ON;blk=Symbols_For_Legacy_Computing;gc=So;Gr_Base;lb=AL;sc=Zyyy
+block;1FB00..1FBFF;age=13.0;bc=ON;blk=Symbols_For_Legacy_Computing;gc=So;Gr_Base;Identifier_Type=Not_XID;lb=AL;sc=Zyyy
# 1FB00..1FBFF Symbols for Legacy Computing
# Block mosaic terminal graphic characters
cp;1FB00;na=BLOCK SEXTANT-1
@@ -40343,16 +40360,16 @@ cp;1FBC9;na=STICK FIGURE WITH DRESS
cp;1FBCA;na=WHITE UP-POINTING CHEVRON
unassigned;1FBCB..1FBEF
# Segmented digits
-cp;1FBF0;bc=EN;CWKCF;dm=0030;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT ZERO;NFKC_CF=0030;NFKC_QC=N;NFKC_SCF=0030;NFKD_QC=N;nt=De;nv=0;SB=NU;WB=NU;XIDC
-cp;1FBF1;bc=EN;CWKCF;dm=0031;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT ONE;NFKC_CF=0031;NFKC_QC=N;NFKC_SCF=0031;NFKD_QC=N;nt=De;nv=1;SB=NU;WB=NU;XIDC
-cp;1FBF2;bc=EN;CWKCF;dm=0032;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT TWO;NFKC_CF=0032;NFKC_QC=N;NFKC_SCF=0032;NFKD_QC=N;nt=De;nv=2;SB=NU;WB=NU;XIDC
-cp;1FBF3;bc=EN;CWKCF;dm=0033;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT THREE;NFKC_CF=0033;NFKC_QC=N;NFKC_SCF=0033;NFKD_QC=N;nt=De;nv=3;SB=NU;WB=NU;XIDC
-cp;1FBF4;bc=EN;CWKCF;dm=0034;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT FOUR;NFKC_CF=0034;NFKC_QC=N;NFKC_SCF=0034;NFKD_QC=N;nt=De;nv=4;SB=NU;WB=NU;XIDC
-cp;1FBF5;bc=EN;CWKCF;dm=0035;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT FIVE;NFKC_CF=0035;NFKC_QC=N;NFKC_SCF=0035;NFKD_QC=N;nt=De;nv=5;SB=NU;WB=NU;XIDC
-cp;1FBF6;bc=EN;CWKCF;dm=0036;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT SIX;NFKC_CF=0036;NFKC_QC=N;NFKC_SCF=0036;NFKD_QC=N;nt=De;nv=6;SB=NU;WB=NU;XIDC
-cp;1FBF7;bc=EN;CWKCF;dm=0037;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT SEVEN;NFKC_CF=0037;NFKC_QC=N;NFKC_SCF=0037;NFKD_QC=N;nt=De;nv=7;SB=NU;WB=NU;XIDC
-cp;1FBF8;bc=EN;CWKCF;dm=0038;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT EIGHT;NFKC_CF=0038;NFKC_QC=N;NFKC_SCF=0038;NFKD_QC=N;nt=De;nv=8;SB=NU;WB=NU;XIDC
-cp;1FBF9;bc=EN;CWKCF;dm=0039;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT NINE;NFKC_CF=0039;NFKC_QC=N;NFKC_SCF=0039;NFKD_QC=N;nt=De;nv=9;SB=NU;WB=NU;XIDC
+cp;1FBF0;bc=EN;CWKCF;dm=0030;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT ZERO;NFKC_CF=0030;NFKC_QC=N;NFKC_SCF=0030;NFKD_QC=N;nt=De;nv=0;SB=NU;WB=NU;XIDC
+cp;1FBF1;bc=EN;CWKCF;dm=0031;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT ONE;NFKC_CF=0031;NFKC_QC=N;NFKC_SCF=0031;NFKD_QC=N;nt=De;nv=1;SB=NU;WB=NU;XIDC
+cp;1FBF2;bc=EN;CWKCF;dm=0032;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT TWO;NFKC_CF=0032;NFKC_QC=N;NFKC_SCF=0032;NFKD_QC=N;nt=De;nv=2;SB=NU;WB=NU;XIDC
+cp;1FBF3;bc=EN;CWKCF;dm=0033;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT THREE;NFKC_CF=0033;NFKC_QC=N;NFKC_SCF=0033;NFKD_QC=N;nt=De;nv=3;SB=NU;WB=NU;XIDC
+cp;1FBF4;bc=EN;CWKCF;dm=0034;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT FOUR;NFKC_CF=0034;NFKC_QC=N;NFKC_SCF=0034;NFKD_QC=N;nt=De;nv=4;SB=NU;WB=NU;XIDC
+cp;1FBF5;bc=EN;CWKCF;dm=0035;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT FIVE;NFKC_CF=0035;NFKC_QC=N;NFKC_SCF=0035;NFKD_QC=N;nt=De;nv=5;SB=NU;WB=NU;XIDC
+cp;1FBF6;bc=EN;CWKCF;dm=0036;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT SIX;NFKC_CF=0036;NFKC_QC=N;NFKC_SCF=0036;NFKD_QC=N;nt=De;nv=6;SB=NU;WB=NU;XIDC
+cp;1FBF7;bc=EN;CWKCF;dm=0037;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT SEVEN;NFKC_CF=0037;NFKC_QC=N;NFKC_SCF=0037;NFKD_QC=N;nt=De;nv=7;SB=NU;WB=NU;XIDC
+cp;1FBF8;bc=EN;CWKCF;dm=0038;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT EIGHT;NFKC_CF=0038;NFKC_QC=N;NFKC_SCF=0038;NFKD_QC=N;nt=De;nv=8;SB=NU;WB=NU;XIDC
+cp;1FBF9;bc=EN;CWKCF;dm=0039;dt=Font;gc=Nd;IDC;Identifier_Type=Not_NFKC;lb=NU;na=SEGMENTED DIGIT NINE;NFKC_CF=0039;NFKC_QC=N;NFKC_SCF=0039;NFKD_QC=N;nt=De;nv=9;SB=NU;WB=NU;XIDC
unassigned;1FBFA..1FBFF
# No block
@@ -40362,7 +40379,7 @@ unassigned;1FF80..1FFFD;ExtPict;lb=ID
# Noncharacters
unassigned;1FFFE..1FFFF;age=2.0;bc=BN;NChar
-block;20000..2A6DF;age=3.1;Alpha;blk=CJK_Ext_B;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;20000..2A6DF;age=3.1;Alpha;blk=CJK_Ext_B;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 20000..2A6DF CJK Unified Ideographs Extension B
algnamesrange;20000..2A6DF;han;CJK UNIFIED IDEOGRAPH-
cp;20001;nt=Nu;nv=7
@@ -40386,7 +40403,7 @@ cp;2A6DE..2A6DF;age=14.0
# No block
unassigned;2A6E0..2A6FF;ea=W;lb=ID;vo=U
-block;2A700..2B73F;Alpha;blk=CJK_Ext_C;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;2A700..2B73F;Alpha;blk=CJK_Ext_C;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 2A700..2B739 CJK Unified Ideographs Extension C
algnamesrange;2A700..2B739;han;CJK UNIFIED IDEOGRAPH-
cp;2A700..2B734;age=5.2
@@ -40394,22 +40411,22 @@ cp;2B735..2B738;age=14.0
cp;2B739;age=15.0
unassigned;2B73A..2B73F;ea=W;lb=ID;vo=U
-block;2B740..2B81F;age=6.0;Alpha;blk=CJK_Ext_D;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;2B740..2B81F;age=6.0;Alpha;blk=CJK_Ext_D;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 2B740..2B81D CJK Unified Ideographs Extension D
algnamesrange;2B740..2B81D;han;CJK UNIFIED IDEOGRAPH-
unassigned;2B81E..2B81F;ea=W;lb=ID;vo=U
-block;2B820..2CEAF;age=8.0;Alpha;blk=CJK_Ext_E;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;2B820..2CEAF;age=8.0;Alpha;blk=CJK_Ext_E;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 2B820..2CEA1 CJK Unified Ideographs Extension E
algnamesrange;2B820..2CEA1;han;CJK UNIFIED IDEOGRAPH-
unassigned;2CEA2..2CEAF;ea=W;lb=ID;vo=U
-block;2CEB0..2EBEF;age=10.0;Alpha;blk=CJK_Ext_F;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;2CEB0..2EBEF;age=10.0;Alpha;blk=CJK_Ext_F;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 2CEB0..2EBE0 CJK Unified Ideographs Extension F
algnamesrange;2CEB0..2EBE0;han;CJK UNIFIED IDEOGRAPH-
unassigned;2EBE1..2EBEF;ea=W;lb=ID;vo=U
-block;2EBF0..2EE5F;age=15.1;Alpha;blk=CJK_Ext_I;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;2EBF0..2EE5F;age=15.1;Alpha;blk=CJK_Ext_I;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 2EBF0..2EE5D CJK Unified Ideographs Extension I
algnamesrange;2EBF0..2EE5D;han;CJK UNIFIED IDEOGRAPH-
unassigned;2EE5E..2EE5F;ea=W;lb=ID;vo=U
@@ -40417,7 +40434,7 @@ unassigned;2EE5E..2EE5F;ea=W;lb=ID;vo=U
# No block
unassigned;2EE60..2F7FF;ea=W;lb=ID;vo=U
-block;2F800..2FA1F;age=3.1;Alpha;blk=CJK_Compat_Ideographs_Sup;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKC_SCF=537F;NFKD_QC=N;SB=LE;sc=Hani;vo=U;XIDC;XIDS
+block;2F800..2FA1F;age=3.1;Alpha;blk=CJK_Compat_Ideographs_Sup;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Type=Not_NFKC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKC_SCF=537F;NFKD_QC=N;SB=LE;sc=Hani;vo=U;XIDC;XIDS
# 2F800..2FA1F CJK Compatibility Ideographs Supplement
# Duplicate characters from CNS 11643-1992
cp;2F800;dm=4E3D;na=CJK COMPATIBILITY IDEOGRAPH-2F800;NFKC_CF=4E3D;NFKC_SCF=4E3D
@@ -40971,12 +40988,12 @@ unassigned;2FF80..2FFFD;ea=W;lb=ID;vo=U
# Noncharacters
unassigned;2FFFE..2FFFF;age=2.0;bc=BN;NChar
-block;30000..3134F;age=13.0;Alpha;blk=CJK_Ext_G;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;30000..3134F;age=13.0;Alpha;blk=CJK_Ext_G;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 30000..3134A CJK Unified Ideographs Extension G
algnamesrange;30000..3134A;han;CJK UNIFIED IDEOGRAPH-
unassigned;3134B..3134F;ea=W;lb=ID;vo=U
-block;31350..323AF;age=15.0;Alpha;blk=CJK_Ext_H;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+block;31350..323AF;age=15.0;Alpha;blk=CJK_Ext_H;ea=W;gc=Lo;Gr_Base;IDC;Identifier_Status=Allowed;Identifier_Type=Recommended;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 31350..323AF CJK Unified Ideographs Extension H
algnamesrange;31350..323AF;han;CJK UNIFIED IDEOGRAPH-
@@ -41017,11 +41034,11 @@ unassigned;CFFFE..CFFFF;age=2.0;bc=BN;NChar
# Noncharacters
unassigned;DFFFE..DFFFF;age=2.0;bc=BN;NChar
-block;E0000..E007F;age=3.1;bc=BN;blk=Tags;CI;CWKCF;DI;EComp;gc=Cf;GCB=EX;Gr_Ext;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zyyy;WB=Extend
+block;E0000..E007F;age=3.1;bc=BN;blk=Tags;CI;CWKCF;DI;EComp;gc=Cf;GCB=EX;Gr_Ext;Identifier_Type=Default_Ignorable;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zyyy;WB=Extend
# E0000..E007F Tags
unassigned;E0000;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=
# Tag identifiers
-cp;E0001;Dep;-EComp;GCB=CN;-Gr_Ext;na=LANGUAGE TAG;SB=FO;WB=FO
+cp;E0001;Dep;-EComp;GCB=CN;-Gr_Ext;Identifier_Type=Deprecated;na=LANGUAGE TAG;SB=FO;WB=FO
unassigned;E0002..E001F;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=
# Tag components
cp;E0020;na=TAG SPACE
@@ -41125,7 +41142,7 @@ cp;E007F;na=CANCEL TAG
# No block
unassigned;E0080..E00FF;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=
-block;E0100..E01EF;age=4.0;bc=NSM;blk=VS_Sup;CI;CWKCF;DI;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zinh;VS;WB=Extend;XIDC
+block;E0100..E01EF;age=4.0;bc=NSM;blk=VS_Sup;CI;CWKCF;DI;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;Identifier_Type=Default_Ignorable;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zinh;VS;WB=Extend;XIDC
# E0100..E01EF Variation Selectors Supplement
# Ideographic-specific variation selectors
cp;E0100;na=VARIATION SELECTOR-17;Name_Alias=abbreviation=VS17
diff --git a/icu4c/source/data/unit/LOCALE_DEPS.json b/icu4c/source/data/unit/LOCALE_DEPS.json
index df3d1f620..c30ec800f 100644
--- a/icu4c/source/data/unit/LOCALE_DEPS.json
+++ b/icu4c/source/data/unit/LOCALE_DEPS.json
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1",
+ "cldrVersion": "45",
"aliases": {
"ars": "ar_SA",
"az_AZ": "az_Latn_AZ",
@@ -19,6 +19,7 @@
"iw": "he",
"iw_IL": "he_IL",
"ks_IN": "ks_Arab_IN",
+ "kxv_IN": "kxv_Latn_IN",
"mni_IN": "mni_Beng_IN",
"mo": "ro",
"no_NO": "no",
diff --git a/icu4c/source/data/unit/kxv_IN.txt b/icu4c/source/data/unit/kxv_IN.txt
new file mode 100644
index 000000000..e92770c6f
--- /dev/null
+++ b/icu4c/source/data/unit/kxv_IN.txt
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_IN{
+ "%%ALIAS"{"kxv_Latn_IN"}
+}
diff --git a/icu4c/source/data/unit/kxv_Latn.txt b/icu4c/source/data/unit/kxv_Latn.txt
new file mode 100644
index 000000000..823563224
--- /dev/null
+++ b/icu4c/source/data/unit/kxv_Latn.txt
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_Latn{
+}
diff --git a/icu4c/source/data/unit/kxv_Latn_IN.txt b/icu4c/source/data/unit/kxv_Latn_IN.txt
new file mode 100644
index 000000000..d2dd86851
--- /dev/null
+++ b/icu4c/source/data/unit/kxv_Latn_IN.txt
@@ -0,0 +1,9 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+/**
+ * generated alias target
+ */
+kxv_Latn_IN{
+ ___{""}
+}
diff --git a/icu4c/source/data/unit/root.txt b/icu4c/source/data/unit/root.txt
index 7212c70c9..dbf41d8e4 100644
--- a/icu4c/source/data/unit/root.txt
+++ b/icu4c/source/data/unit/root.txt
@@ -2,7 +2,7 @@
// License & terms of use: http://www.unicode.org/copyright.html
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
root{
- Version{"44.1"}
+ Version{"45"}
durationUnits{
hm{"h:mm"}
hms{"h:mm:ss"}
diff --git a/icu4c/source/data/zone/LOCALE_DEPS.json b/icu4c/source/data/zone/LOCALE_DEPS.json
index df3d1f620..c30ec800f 100644
--- a/icu4c/source/data/zone/LOCALE_DEPS.json
+++ b/icu4c/source/data/zone/LOCALE_DEPS.json
@@ -3,7 +3,7 @@
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
{
- "cldrVersion": "44.1",
+ "cldrVersion": "45",
"aliases": {
"ars": "ar_SA",
"az_AZ": "az_Latn_AZ",
@@ -19,6 +19,7 @@
"iw": "he",
"iw_IL": "he_IL",
"ks_IN": "ks_Arab_IN",
+ "kxv_IN": "kxv_Latn_IN",
"mni_IN": "mni_Beng_IN",
"mo": "ro",
"no_NO": "no",
diff --git a/icu4c/source/data/zone/af.txt b/icu4c/source/data/zone/af.txt
index 0f72495c9..64a6e7bba 100644
--- a/icu4c/source/data/zone/af.txt
+++ b/icu4c/source/data/zone/af.txt
@@ -63,12 +63,6 @@ af{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Noord-Dakota"}
}
- "America:Rainy_River"{
- ec{"Rainyrivier"}
- }
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"Sint Barthélemy"}
}
@@ -87,9 +81,6 @@ af{
"America:St_Vincent"{
ec{"Sint Vincent"}
}
- "America:Thunder_Bay"{
- ec{"Thunderbaai"}
- }
"Antarctica:Vostok"{
ec{"Wostok"}
}
@@ -201,9 +192,6 @@ af{
"Atlantic:St_Helena"{
ec{"Sint Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Gekoördineerde universele tyd"}
}
@@ -662,9 +650,6 @@ af{
lg{"Lord Howe-tyd"}
ls{"Lord Howe-standaardtyd"}
}
- "meta:Macquarie"{
- ls{"Macquarie-eiland-tyd"}
- }
"meta:Magadan"{
ld{"Magadan-somertyd"}
lg{"Magadan-tyd"}
@@ -690,11 +675,6 @@ af{
"meta:Mawson"{
ls{"Mawson-tyd"}
}
- "meta:Mexico_Northwest"{
- ld{"Noordwes-Meksiko-dagligtyd"}
- lg{"Noordwes-Meksiko-tyd"}
- ls{"Noordwes-Meksiko-standaardtyd"}
- }
"meta:Mexico_Pacific"{
ld{"Meksikaanse Pasifiese dagligtyd"}
lg{"Meksikaanse Pasifiese tyd"}
diff --git a/icu4c/source/data/zone/am.txt b/icu4c/source/data/zone/am.txt
index d68655633..54e841683 100644
--- a/icu4c/source/data/zone/am.txt
+++ b/icu4c/source/data/zone/am.txt
@@ -465,9 +465,6 @@ am{
"America:New_York"{
ec{"ኒውዮርክ"}
}
- "America:Nipigon"{
- ec{"ኒፒጎን"}
- }
"America:Nome"{
ec{"ኖሜ"}
}
@@ -489,9 +486,6 @@ am{
"America:Panama"{
ec{"ፓናማ"}
}
- "America:Pangnirtung"{
- ec{"ፓንግኒርተንግ"}
- }
"America:Paramaribo"{
ec{"ፓራማሪቦ"}
}
@@ -513,9 +507,6 @@ am{
"America:Punta_Arenas"{
ec{"ፑንታ አሬናስ"}
}
- "America:Rainy_River"{
- ec{"ሬኒ ሪቨር"}
- }
"America:Rankin_Inlet"{
ec{"ራንኪን ኢንሌት"}
}
@@ -531,9 +522,6 @@ am{
"America:Rio_Branco"{
ec{"ሪዮ ብራንኮ"}
}
- "America:Santa_Isabel"{
- ec{"ሳንታ ኢዛቤል"}
- }
"America:Santarem"{
ec{"ሳንታሬም"}
}
@@ -579,9 +567,6 @@ am{
"America:Thule"{
ec{"ቱሌ"}
}
- "America:Thunder_Bay"{
- ec{"ተንደር ቤይ"}
- }
"America:Tijuana"{
ec{"ቲጁአና"}
}
@@ -603,9 +588,6 @@ am{
"America:Yakutat"{
ec{"ያኩታት"}
}
- "America:Yellowknife"{
- ec{"የሎውናይፍ"}
- }
"Antarctica:Casey"{
ec{"ካዚይ"}
}
@@ -930,9 +912,6 @@ am{
"Australia:Broken_Hill"{
ec{"ብሮክን ሂል"}
}
- "Australia:Currie"{
- ec{"ከሪ"}
- }
"Australia:Darwin"{
ec{"ዳርዊን"}
}
@@ -1115,9 +1094,6 @@ am{
"Europe:Ulyanovsk"{
ec{"ኡልያኖቭስክ"}
}
- "Europe:Uzhgorod"{
- ec{"ኡዝጎሮድ"}
- }
"Europe:Vaduz"{
ec{"ቫዱዝ"}
}
@@ -1139,9 +1115,6 @@ am{
"Europe:Zagreb"{
ec{"ዛግሬብ"}
}
- "Europe:Zaporozhye"{
- ec{"ዛፖሮዚይ"}
- }
"Europe:Zurich"{
ec{"ዙሪክ"}
}
@@ -1223,9 +1196,6 @@ am{
"Pacific:Honolulu"{
ec{"ሆኖሉሉ"}
}
- "Pacific:Johnston"{
- ec{"ጆንስተን"}
- }
"Pacific:Kanton"{
ec{"ካንቶን"}
}
@@ -1650,9 +1620,6 @@ am{
lg{"የሎርድ ሆዌ የሰዓት አቆጣጠር"}
ls{"የሎርድ ሆዌ መደበኛ የሰዓት አቆጣጠር"}
}
- "meta:Macquarie"{
- ls{"የማከሪ ደሴት ሰዓት"}
- }
"meta:Magadan"{
ld{"የማጋዳን በጋ ሰዓት አቆጣጠር"}
lg{"የማጋዳን የሰዓት አቆጣጠር"}
@@ -1678,11 +1645,6 @@ am{
"meta:Mawson"{
ls{"የማውሰን ሰዓት"}
}
- "meta:Mexico_Northwest"{
- ld{"ሰሜናዊ ምእራብ የሜክሲኮ የቀን ሰዓት አቆጣጠር"}
- lg{"ሰሜናዊ ምእራብ የሜክሲኮ ሰዓት አቆጣጠር"}
- ls{"ሰሜናዊ ምእራብ የሜክሲኮ መደበኛ ሰዓት አቆጣጠር"}
- }
"meta:Mexico_Pacific"{
ld{"የሜክሲኮ ፓሲፊክ የቀን ሰዓት አቆጣጠር"}
lg{"የሜክሲኮ ፓሲፊክ ሰዓት አቆጣጠር"}
diff --git a/icu4c/source/data/zone/ar.txt b/icu4c/source/data/zone/ar.txt
index af246376b..1609b270c 100644
--- a/icu4c/source/data/zone/ar.txt
+++ b/icu4c/source/data/zone/ar.txt
@@ -465,9 +465,6 @@ ar{
"America:New_York"{
ec{"نيويورك"}
}
- "America:Nipigon"{
- ec{"نيبيجون"}
- }
"America:Nome"{
ec{"نوم"}
}
@@ -489,9 +486,6 @@ ar{
"America:Panama"{
ec{"بنما"}
}
- "America:Pangnirtung"{
- ec{"بانجينتينج"}
- }
"America:Paramaribo"{
ec{"باراماريبو"}
}
@@ -513,9 +507,6 @@ ar{
"America:Punta_Arenas"{
ec{"بونتا أريناز"}
}
- "America:Rainy_River"{
- ec{"راني ريفر"}
- }
"America:Rankin_Inlet"{
ec{"رانكن انلت"}
}
@@ -531,9 +522,6 @@ ar{
"America:Rio_Branco"{
ec{"ريوبرانكو"}
}
- "America:Santa_Isabel"{
- ec{"سانتا إيزابيل"}
- }
"America:Santarem"{
ec{"سانتاريم"}
}
@@ -579,9 +567,6 @@ ar{
"America:Thule"{
ec{"ثيل"}
}
- "America:Thunder_Bay"{
- ec{"ثندر باي"}
- }
"America:Tijuana"{
ec{"تيخوانا"}
}
@@ -603,9 +588,6 @@ ar{
"America:Yakutat"{
ec{"ياكوتات"}
}
- "America:Yellowknife"{
- ec{"يلونيف"}
- }
"Antarctica:Casey"{
ec{"كاساي"}
}
@@ -930,9 +912,6 @@ ar{
"Australia:Broken_Hill"{
ec{"بروكن هيل"}
}
- "Australia:Currie"{
- ec{"كوري"}
- }
"Australia:Darwin"{
ec{"دارون"}
}
@@ -1115,9 +1094,6 @@ ar{
"Europe:Ulyanovsk"{
ec{"أوليانوفسك"}
}
- "Europe:Uzhgorod"{
- ec{"أوزجرود"}
- }
"Europe:Vaduz"{
ec{"فادوز"}
}
@@ -1139,9 +1115,6 @@ ar{
"Europe:Zagreb"{
ec{"زغرب"}
}
- "Europe:Zaporozhye"{
- ec{"زابوروزي"}
- }
"Europe:Zurich"{
ec{"زيورخ"}
}
@@ -1223,9 +1196,6 @@ ar{
"Pacific:Honolulu"{
ec{"هونولولو"}
}
- "Pacific:Johnston"{
- ec{"جونستون"}
- }
"Pacific:Kanton"{
ec{"كانتون"}
}
@@ -1654,9 +1624,6 @@ ar{
lg{"توقيت لورد هاو"}
ls{"توقيت لورد هاو الرسمي"}
}
- "meta:Macquarie"{
- ls{"توقيت ماكواري"}
- }
"meta:Magadan"{
ld{"توقيت ماغادان الصيفي"}
lg{"توقيت ماغادان"}
@@ -1682,11 +1649,6 @@ ar{
"meta:Mawson"{
ls{"توقيت ماوسون"}
}
- "meta:Mexico_Northwest"{
- ld{"التوقيت الصيفي لشمال غرب المكسيك"}
- lg{"توقيت شمال غرب المكسيك"}
- ls{"التوقيت الرسمي لشمال غرب المكسيك"}
- }
"meta:Mexico_Pacific"{
ld{"توقيت المحيط الهادي الصيفي للمكسيك"}
lg{"توقيت المحيط الهادي للمكسيك"}
diff --git a/icu4c/source/data/zone/ar_XB.txt b/icu4c/source/data/zone/ar_XB.txt
index 1491287c7..4a6a02217 100644
--- a/icu4c/source/data/zone/ar_XB.txt
+++ b/icu4c/source/data/zone/ar_XB.txt
@@ -45,9 +45,6 @@ ar_XB{
"Europe:London"{
ld{"؜‮British‬؜ ؜‮Summer‬؜ ؜‮Time‬؜"}
}
- "Europe:Uzhgorod"{
- ec{"؜‮Uzhhorod‬؜"}
- }
"Pacific:Honolulu"{
sd{"؜‮HDT‬؜"}
sg{"؜‮HST‬؜"}
@@ -343,6 +340,11 @@ ar_XB{
"meta:Gilbert_Islands"{
ls{"؜‮Gilbert‬؜ ؜‮Islands‬؜ ؜‮Time‬؜"}
}
+ "meta:Greenland"{
+ ld{"؜‮Greenland‬؜ ؜‮Summer‬؜ ؜‮Time‬؜"}
+ lg{"؜‮Greenland‬؜ ؜‮Time‬؜"}
+ ls{"؜‮Greenland‬؜ ؜‮Standard‬؜ ؜‮Time‬؜"}
+ }
"meta:Greenland_Eastern"{
ld{"؜‮East‬؜ ؜‮Greenland‬؜ ؜‮Summer‬؜ ؜‮Time‬؜"}
lg{"؜‮East‬؜ ؜‮Greenland‬؜ ؜‮Time‬؜"}
@@ -461,9 +463,6 @@ ar_XB{
lg{"؜‮Macao‬؜ ؜‮Time‬؜"}
ls{"؜‮Macao‬؜ ؜‮Standard‬؜ ؜‮Time‬؜"}
}
- "meta:Macquarie"{
- ls{"؜‮Macquarie‬؜ ؜‮Island‬؜ ؜‮Time‬؜"}
- }
"meta:Magadan"{
ld{"؜‮Magadan‬؜ ؜‮Summer‬؜ ؜‮Time‬؜"}
lg{"؜‮Magadan‬؜ ؜‮Time‬؜"}
@@ -489,11 +488,6 @@ ar_XB{
"meta:Mawson"{
ls{"؜‮Mawson‬؜ ؜‮Time‬؜"}
}
- "meta:Mexico_Northwest"{
- ld{"؜‮Northwest‬؜ ؜‮Mexico‬؜ ؜‮Daylight‬؜ ؜‮Time‬؜"}
- lg{"؜‮Northwest‬؜ ؜‮Mexico‬؜ ؜‮Time‬؜"}
- ls{"؜‮Northwest‬؜ ؜‮Mexico‬؜ ؜‮Standard‬؜ ؜‮Time‬؜"}
- }
"meta:Mexico_Pacific"{
ld{"؜‮Mexican‬؜ ؜‮Pacific‬؜ ؜‮Daylight‬؜ ؜‮Time‬؜"}
lg{"؜‮Mexican‬؜ ؜‮Pacific‬؜ ؜‮Time‬؜"}
diff --git a/icu4c/source/data/zone/as.txt b/icu4c/source/data/zone/as.txt
index 967a460c4..5caba13f5 100644
--- a/icu4c/source/data/zone/as.txt
+++ b/icu4c/source/data/zone/as.txt
@@ -465,9 +465,6 @@ as{
"America:New_York"{
ec{"নিউ ইয়ৰ্ক"}
}
- "America:Nipigon"{
- ec{"নিপিগন"}
- }
"America:Nome"{
ec{"নোম"}
}
@@ -489,9 +486,6 @@ as{
"America:Panama"{
ec{"পানামা"}
}
- "America:Pangnirtung"{
- ec{"পাংনিৰ্টুংগ"}
- }
"America:Paramaribo"{
ec{"পাৰামাৰিবো"}
}
@@ -513,9 +507,6 @@ as{
"America:Punta_Arenas"{
ec{"পুণ্টা এৰিনাছ"}
}
- "America:Rainy_River"{
- ec{"ৰেইনী নদী"}
- }
"America:Rankin_Inlet"{
ec{"ৰেংকিন ইনলেট"}
}
@@ -576,9 +567,6 @@ as{
"America:Thule"{
ec{"থ্যুলে"}
}
- "America:Thunder_Bay"{
- ec{"থাণ্ডাৰ উপসাগৰ"}
- }
"America:Tijuana"{
ec{"তিজুৱানা"}
}
@@ -600,9 +588,6 @@ as{
"America:Yakutat"{
ec{"য়াকুটাট"}
}
- "America:Yellowknife"{
- ec{"য়েল্লোনাইফ"}
- }
"Antarctica:Casey"{
ec{"কেছী"}
}
@@ -927,9 +912,6 @@ as{
"Australia:Broken_Hill"{
ec{"ব্ৰোকেন হিল"}
}
- "Australia:Currie"{
- ec{"ক্যুৰি"}
- }
"Australia:Darwin"{
ec{"ডাৰউইন"}
}
@@ -1112,9 +1094,6 @@ as{
"Europe:Ulyanovsk"{
ec{"উল্যানোভ্‌স্ক"}
}
- "Europe:Uzhgorod"{
- ec{"উজ্গোৰোড"}
- }
"Europe:Vaduz"{
ec{"ভাদুজ"}
}
@@ -1136,9 +1115,6 @@ as{
"Europe:Zagreb"{
ec{"জাগ্ৰেব"}
}
- "Europe:Zaporozhye"{
- ec{"জাপোৰোজাই"}
- }
"Europe:Zurich"{
ec{"জুৰিখ"}
}
@@ -1217,9 +1193,6 @@ as{
"Pacific:Guam"{
ec{"গুৱাম"}
}
- "Pacific:Johnston"{
- ec{"জনষ্টন"}
- }
"Pacific:Kanton"{
ec{"কেণ্টন"}
}
@@ -1635,9 +1608,6 @@ as{
lg{"লৰ্ড হাওৰ সময়"}
ls{"লৰ্ড হাওৰ মান সময়"}
}
- "meta:Macquarie"{
- ls{"মেক্‌কুৱেৰী দ্বীপৰ সময়"}
- }
"meta:Magadan"{
ld{"মাগাদানৰ গ্ৰীষ্মকালীন সময়"}
lg{"মাগাদানৰ সময়"}
@@ -1663,11 +1633,6 @@ as{
"meta:Mawson"{
ls{"মাউছনৰ সময়"}
}
- "meta:Mexico_Northwest"{
- ld{"উত্তৰ-পশ্চিম মেক্সিকোৰ ডেলাইট সময়"}
- lg{"উত্তৰ-পশ্চিম মেক্সিকোৰ সময়"}
- ls{"উত্তৰ-পশ্চিম মেক্সিকোৰ মান সময়"}
- }
"meta:Mexico_Pacific"{
ld{"মেক্সিকোৰ প্ৰশান্ত ডেলাইট সময়"}
lg{"মেক্সিকোৰ প্ৰশান্ত সময়"}
diff --git a/icu4c/source/data/zone/ast.txt b/icu4c/source/data/zone/ast.txt
index 0bd2a4abe..e95f74a51 100644
--- a/icu4c/source/data/zone/ast.txt
+++ b/icu4c/source/data/zone/ast.txt
@@ -117,9 +117,6 @@ ast{
"America:Puerto_Rico"{
ec{"Puertu Ricu"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santo_Domingo"{
ec{"Santu Domingu"}
}
@@ -240,9 +237,6 @@ ast{
"Australia:Adelaide"{
ec{"Adelaida"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Hora coordinada universal"}
}
@@ -773,9 +767,6 @@ ast{
lg{"Hora de Macáu"}
ls{"Hora estándar de Macáu"}
}
- "meta:Macquarie"{
- ls{"Hora de la Islla Macquarie"}
- }
"meta:Magadan"{
ld{"Hora braniega de Magadán"}
lg{"Hora de Magadán"}
@@ -801,11 +792,6 @@ ast{
"meta:Mawson"{
ls{"Hora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Hora braniega del noroeste de Méxicu"}
- lg{"Hora del noroeste de Méxicu"}
- ls{"Hora estándar del noroeste de Méxicu"}
- }
"meta:Mexico_Pacific"{
ld{"Hora braniega del Pacíficu de Méxicu"}
lg{"Hora del Pacíficu de Méxicu"}
diff --git a/icu4c/source/data/zone/az.txt b/icu4c/source/data/zone/az.txt
index 397b5025d..bf9b26a58 100644
--- a/icu4c/source/data/zone/az.txt
+++ b/icu4c/source/data/zone/az.txt
@@ -339,9 +339,6 @@ az{
"America:New_York"{
ec{"Nyu York"}
}
- "America:Nipigon"{
- ec{"Nipiqon"}
- }
"America:Nome"{
ec{"Nom"}
}
@@ -360,9 +357,6 @@ az{
"America:Ojinaga"{
ec{"Ocinaqa"}
}
- "America:Pangnirtung"{
- ec{"Panqnirtanq"}
- }
"America:Phoenix"{
ec{"Feniks"}
}
@@ -378,9 +372,6 @@ az{
"America:Puerto_Rico"{
ec{"Puerto Riko"}
}
- "America:Rainy_River"{
- ec{"Reyni Çayı"}
- }
"America:Rankin_Inlet"{
ec{"Rankin Girişi"}
}
@@ -396,9 +387,6 @@ az{
"America:Rio_Branco"{
ec{"Rio Branko"}
}
- "America:Santa_Isabel"{
- ec{"Santa İzabel"}
- }
"America:Santiago"{
ec{"Santyaqo"}
}
@@ -438,9 +426,6 @@ az{
"America:Thule"{
ec{"Tul"}
}
- "America:Thunder_Bay"{
- ec{"İldırım Körfəzi"}
- }
"America:Tijuana"{
ec{"Tixuana"}
}
@@ -453,9 +438,6 @@ az{
"America:Winnipeg"{
ec{"Vinnipeq"}
}
- "America:Yellowknife"{
- ec{"Yellounayf"}
- }
"Antarctica:Casey"{
ec{"Keysi"}
}
@@ -687,9 +669,6 @@ az{
"Australia:Brisbane"{
ec{"Brisbeyn"}
}
- "Australia:Currie"{
- ec{"Kuriye"}
- }
"Australia:Darwin"{
ec{"Darvin"}
}
@@ -813,9 +792,6 @@ az{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Ujqorod"}
- }
"Europe:Vaduz"{
ec{"Vaduts"}
}
@@ -837,9 +813,6 @@ az{
"Europe:Zagreb"{
ec{"Zaqreb"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporojye"}
- }
"Europe:Zurich"{
ec{"Sürix"}
}
@@ -900,9 +873,6 @@ az{
"Pacific:Honolulu"{
ec{"Honolulu"}
}
- "Pacific:Johnston"{
- ec{"Conston"}
- }
"Pacific:Kiritimati"{
ec{"Kirimati"}
}
@@ -1293,9 +1263,6 @@ az{
lg{"Lord Hau Vaxtı"}
ls{"Lord Hau Standart Vaxtı"}
}
- "meta:Macquarie"{
- ls{"Makari Adası Vaxtı"}
- }
"meta:Magadan"{
ld{"Maqadan Yay Vaxtı"}
lg{"Maqadan Vaxtı"}
@@ -1321,11 +1288,6 @@ az{
"meta:Mawson"{
ls{"Mouson Vaxtı"}
}
- "meta:Mexico_Northwest"{
- ld{"Şimal-Qərbi Meksika Yay Vaxtı"}
- lg{"Şimal-Qərbi Meksika Vaxtı"}
- ls{"Şimal-Qərbi Meksika Standart Vaxtı"}
- }
"meta:Mexico_Pacific"{
ld{"Meksika Sakit Okean Yay Vaxtı"}
lg{"Meksika Sakit Okean Vaxtı"}
diff --git a/icu4c/source/data/zone/be.txt b/icu4c/source/data/zone/be.txt
index c0d1344d1..4fc7395e8 100644
--- a/icu4c/source/data/zone/be.txt
+++ b/icu4c/source/data/zone/be.txt
@@ -465,9 +465,6 @@ be{
"America:New_York"{
ec{"Нью-Ёрк"}
}
- "America:Nipigon"{
- ec{"Ніпіган"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -489,9 +486,6 @@ be{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангніртанг"}
- }
"America:Paramaribo"{
ec{"Парамарыба"}
}
@@ -513,9 +507,6 @@ be{
"America:Punta_Arenas"{
ec{"Пунта-Арэнас"}
}
- "America:Rainy_River"{
- ec{"Рэйні-Рывер"}
- }
"America:Rankin_Inlet"{
ec{"Ранкін-Інлет"}
}
@@ -531,9 +522,6 @@ be{
"America:Rio_Branco"{
ec{"Рыу-Бранку"}
}
- "America:Santa_Isabel"{
- ec{"Санта-Ісабель"}
- }
"America:Santarem"{
ec{"Сантарэн"}
}
@@ -579,9 +567,6 @@ be{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тандэр-Бэй"}
- }
"America:Tijuana"{
ec{"Тыхуана"}
}
@@ -603,9 +588,6 @@ be{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Елаўнайф"}
- }
"Antarctica:Casey"{
ec{"Кэйсі"}
}
@@ -930,9 +912,6 @@ be{
"Australia:Broken_Hill"{
ec{"Брокен-Хіл"}
}
- "Australia:Currie"{
- ec{"Керы"}
- }
"Australia:Darwin"{
ec{"Дарвін"}
}
@@ -1115,9 +1094,6 @@ be{
"Europe:Ulyanovsk"{
ec{"Ульянаўск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгарад"}
- }
"Europe:Vaduz"{
ec{"Вадуц"}
}
@@ -1139,9 +1115,6 @@ be{
"Europe:Zagreb"{
ec{"Заграб"}
}
- "Europe:Zaporozhye"{
- ec{"Запарожжа"}
- }
"Europe:Zurich"{
ec{"Цюрых"}
}
@@ -1223,9 +1196,6 @@ be{
"Pacific:Honolulu"{
ec{"Ганалулу"}
}
- "Pacific:Johnston"{
- ec{"Джонстан"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1640,9 +1610,6 @@ be{
lg{"Час Лорд-Хау"}
ls{"Стандартны час Лорд-Хау"}
}
- "meta:Macquarie"{
- ls{"Час вострава Макуоры"}
- }
"meta:Magadan"{
ld{"Магаданскі летні час"}
lg{"Магаданскі час"}
@@ -1668,11 +1635,6 @@ be{
"meta:Mawson"{
ls{"Час станцыі Моўсан"}
}
- "meta:Mexico_Northwest"{
- ld{"Паўночна-заходні мексіканскі летні час"}
- lg{"Паўночна-заходні мексіканскі час"}
- ls{"Паўночна-заходні мексіканскі стандартны час"}
- }
"meta:Mexico_Pacific"{
ld{"Мексіканскі ціхаакіянскі летні час"}
lg{"Мексіканскі ціхаакіянскі час"}
diff --git a/icu4c/source/data/zone/bg.txt b/icu4c/source/data/zone/bg.txt
index 9da666237..5a92d0e22 100644
--- a/icu4c/source/data/zone/bg.txt
+++ b/icu4c/source/data/zone/bg.txt
@@ -465,9 +465,6 @@ bg{
"America:New_York"{
ec{"Ню Йорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ноум"}
}
@@ -489,9 +486,6 @@ bg{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртунг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -513,9 +507,6 @@ bg{
"America:Punta_Arenas"{
ec{"Пунта Аренас"}
}
- "America:Rainy_River"{
- ec{"Рейни Ривър"}
- }
"America:Rankin_Inlet"{
ec{"Ранкин Инлет"}
}
@@ -531,9 +522,6 @@ bg{
"America:Rio_Branco"{
ec{"Рио Бранко"}
}
- "America:Santa_Isabel"{
- ec{"Санта Исабел"}
- }
"America:Santarem"{
ec{"Сантарем"}
}
@@ -579,9 +567,6 @@ bg{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тъндър Бей"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -603,9 +588,6 @@ bg{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Йелоунайф"}
- }
"Antarctica:Casey"{
ec{"Кейси"}
}
@@ -930,9 +912,6 @@ bg{
"Australia:Broken_Hill"{
ec{"Броукън Хил"}
}
- "Australia:Currie"{
- ec{"Къри"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1115,9 +1094,6 @@ bg{
"Europe:Ulyanovsk"{
ec{"Уляновск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуц"}
}
@@ -1139,9 +1115,6 @@ bg{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожие"}
- }
"Europe:Zurich"{
ec{"Цюрих"}
}
@@ -1223,9 +1196,6 @@ bg{
"Pacific:Honolulu"{
ec{"Хонолулу"}
}
- "Pacific:Johnston"{
- ec{"Джонстън"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1650,9 +1620,6 @@ bg{
lg{"Лорд Хау"}
ls{"Лорд Хау – стандартно време"}
}
- "meta:Macquarie"{
- ls{"Маккуори"}
- }
"meta:Magadan"{
ld{"Магаданско лятно часово време"}
lg{"Магаданско време"}
@@ -1678,11 +1645,6 @@ bg{
"meta:Mawson"{
ls{"Моусън"}
}
- "meta:Mexico_Northwest"{
- ld{"Северозападно лятно часово мексиканско време"}
- lg{"Северозападно мексиканско време"}
- ls{"Северозападно стандартно мексиканско време"}
- }
"meta:Mexico_Pacific"{
ld{"Мексиканско тихоокеанско лятно часово време"}
lg{"Мексиканско тихоокеанско време"}
diff --git a/icu4c/source/data/zone/blo.txt b/icu4c/source/data/zone/blo.txt
index 603918974..8421323bd 100644
--- a/icu4c/source/data/zone/blo.txt
+++ b/icu4c/source/data/zone/blo.txt
@@ -444,9 +444,6 @@ blo{
"America:New_York"{
ec{"Niu Yɔrk"}
}
- "America:Nipigon"{
- ec{"Nipigɔn"}
- }
"America:Noronha"{
ec{"Norɔnya"}
}
@@ -465,9 +462,6 @@ blo{
"America:Panama"{
ec{"Panamaa"}
}
- "America:Pangnirtung"{
- ec{"Panyɩrtʊʊŋ"}
- }
"America:Paramaribo"{
ec{"Paramariboo"}
}
@@ -486,9 +480,6 @@ blo{
"America:Puerto_Rico"{
ec{"Pɔrto Rikoo"}
}
- "America:Rainy_River"{
- ec{"Rɛɩni Riifa"}
- }
"America:Rankin_Inlet"{
ec{"Raŋkɩn Ɩnlɛɛtɩ"}
}
@@ -549,9 +540,6 @@ blo{
"America:Thule"{
ec{"Tuule"}
}
- "America:Thunder_Bay"{
- ec{"Sanɖɛɛr Baɩ"}
- }
"America:Tijuana"{
ec{"Tihuwana"}
}
@@ -570,9 +558,6 @@ blo{
"America:Winnipeg"{
ec{"Winipɛɛg"}
}
- "America:Yellowknife"{
- ec{"Yɛloonaɩf"}
- }
"Antarctica:Casey"{
ec{"Keesi"}
}
@@ -1071,9 +1056,6 @@ blo{
"Europe:Ulyanovsk"{
ec{"Ulyanɔɔf"}
}
- "Europe:Uzhgorod"{
- ec{"Usgɔrɔɖ"}
- }
"Europe:Vaduz"{
ec{"Faɖus"}
}
@@ -1095,9 +1077,6 @@ blo{
"Europe:Zagreb"{
ec{"Sagrɛb"}
}
- "Europe:Zaporozhye"{
- ec{"Sapɔrɔsɩyɛ"}
- }
"Europe:Zurich"{
ec{"Suriik"}
}
@@ -1170,9 +1149,6 @@ blo{
"Pacific:Guam"{
ec{"Guwam"}
}
- "Pacific:Johnston"{
- ec{"Jɔnstɔn"}
- }
"Pacific:Kanton"{
ec{"Kantɔn"}
}
@@ -1599,9 +1575,6 @@ blo{
lg{"Makawoo kaakɔŋkɔŋɔ̀"}
ls{"Makawoo kaakɔŋkɔŋɔ̀ ɖeiɖei"}
}
- "meta:Macquarie"{
- ls{"Makarii kaAtukǝltǝna kaakɔŋkɔŋɔ̀"}
- }
"meta:Magadan"{
ld{"Magaɖan kaakɔŋkɔŋɔ̀ gafʊbaka"}
lg{"Magaɖan kaakɔŋkɔŋɔ̀"}
@@ -1627,11 +1600,6 @@ blo{
"meta:Mawson"{
ls{"Mɔsɔn kaakɔŋkɔŋɔ̀"}
}
- "meta:Mexico_Northwest"{
- ld{"Mɛsik gʊpɛnɛ na gɩteŋshilelaŋ kʊfɔɔ nɩ kaakɔŋkɔŋɔ̀ gafʊbaka"}
- lg{"Mɛsik gʊpɛnɛ na gɩteŋshilelaŋ kʊfɔɔ nɩ kaakɔŋkɔŋɔ̀"}
- ls{"Mɛsik gʊpɛnɛ na gɩteŋshilelaŋ kʊfɔɔ nɩ kaakɔŋkɔŋɔ̀ ɖeiɖei"}
- }
"meta:Mexico_Pacific"{
ld{"Mɛsik kapasifika kaakɔŋkɔŋɔ̀ gafʊbaka"}
lg{"Mɛsik kapasifika kaakɔŋkɔŋɔ̀"}
diff --git a/icu4c/source/data/zone/bn.txt b/icu4c/source/data/zone/bn.txt
index acd522b00..22bf09e65 100644
--- a/icu4c/source/data/zone/bn.txt
+++ b/icu4c/source/data/zone/bn.txt
@@ -465,9 +465,6 @@ bn{
"America:New_York"{
ec{"নিউইয়র্ক"}
}
- "America:Nipigon"{
- ec{"নিপিগোন"}
- }
"America:Nome"{
ec{"নোম"}
}
@@ -489,9 +486,6 @@ bn{
"America:Panama"{
ec{"পানামা"}
}
- "America:Pangnirtung"{
- ec{"প্যাঙ্গনির্টুং"}
- }
"America:Paramaribo"{
ec{"প্যারামেরিবো"}
}
@@ -513,9 +507,6 @@ bn{
"America:Punta_Arenas"{
ec{"পুন্টা আরেনাস"}
}
- "America:Rainy_River"{
- ec{"রেইনি রিভার"}
- }
"America:Rankin_Inlet"{
ec{"র‍্যাঙ্কিন ইনলেট"}
}
@@ -531,9 +522,6 @@ bn{
"America:Rio_Branco"{
ec{"রিও ব্রাঙ্কো"}
}
- "America:Santa_Isabel"{
- ec{"সান্তা ইসাবেল"}
- }
"America:Santarem"{
ec{"সেনটুরেম"}
}
@@ -579,9 +567,6 @@ bn{
"America:Thule"{
ec{"থুলি"}
}
- "America:Thunder_Bay"{
- ec{"থান্ডার বে"}
- }
"America:Tijuana"{
ec{"তিজুয়ানা"}
}
@@ -603,9 +588,6 @@ bn{
"America:Yakutat"{
ec{"ইয়াকুটাট"}
}
- "America:Yellowknife"{
- ec{"ইয়েলোনাইফ"}
- }
"Antarctica:Casey"{
ec{"কেইসি"}
}
@@ -930,9 +912,6 @@ bn{
"Australia:Broken_Hill"{
ec{"ব্রোকেন হিল"}
}
- "Australia:Currie"{
- ec{"কিউরি"}
- }
"Australia:Darwin"{
ec{"ডারউইন"}
}
@@ -1115,9 +1094,6 @@ bn{
"Europe:Ulyanovsk"{
ec{"উলিয়ানোভস্ক"}
}
- "Europe:Uzhgorod"{
- ec{"উঝগোরোড"}
- }
"Europe:Vaduz"{
ec{"ভাদুজ"}
}
@@ -1139,9 +1115,6 @@ bn{
"Europe:Zagreb"{
ec{"জাগ্রেব"}
}
- "Europe:Zaporozhye"{
- ec{"জেপোরোজাইয়াই"}
- }
"Europe:Zurich"{
ec{"জুরিখ"}
}
@@ -1223,9 +1196,6 @@ bn{
"Pacific:Honolulu"{
ec{"হনোলুলু"}
}
- "Pacific:Johnston"{
- ec{"জনস্টন"}
- }
"Pacific:Kanton"{
ec{"ক্যান্টন"}
}
@@ -1656,9 +1626,6 @@ bn{
lg{"লর্ড হাওয়ে সময়"}
ls{"লর্ড হাওয়ে মানক মসয়"}
}
- "meta:Macquarie"{
- ls{"ম্যাককুরি দ্বীপ সময়"}
- }
"meta:Magadan"{
ld{"ম্যাগাডান গ্রীষ্মকালীন সময়"}
lg{"ম্যাগাডান সময়"}
@@ -1684,11 +1651,6 @@ bn{
"meta:Mawson"{
ls{"মসন সময়"}
}
- "meta:Mexico_Northwest"{
- ld{"উত্তরপশ্চিম মেক্সিকোর দিনের সময়"}
- lg{"উত্তরপশ্চিম মেক্সিকোর সময়"}
- ls{"উত্তরপশ্চিম মেক্সিকোর মানক সময়"}
- }
"meta:Mexico_Pacific"{
ld{"মেক্সিকান প্রশান্ত মহাসাগরীয় দিবালোক সময়"}
lg{"মেক্সিকান প্রশান্ত মহাসাগরীয় সময়"}
diff --git a/icu4c/source/data/zone/br.txt b/icu4c/source/data/zone/br.txt
index b18ba4b3d..fe51bf0bc 100644
--- a/icu4c/source/data/zone/br.txt
+++ b/icu4c/source/data/zone/br.txt
@@ -659,9 +659,6 @@ br{
lg{"eur Macau"}
ls{"eur cʼhoañv Macau"}
}
- "meta:Macquarie"{
- ls{"eur Enez Macquarie"}
- }
"meta:Magadan"{
ld{"eur hañv Magadan"}
lg{"eur Magadan"}
@@ -687,11 +684,6 @@ br{
"meta:Mawson"{
ls{"eur Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"eur hañv Gwalarn Mecʼhiko"}
- lg{"eur Gwalarn Mecʼhiko"}
- ls{"eur cʼhoañv Gwalarn Mecʼhiko"}
- }
"meta:Mexico_Pacific"{
ld{"eur hañv an Habask mecʼhikan"}
lg{"eur an Habask mecʼhikan"}
diff --git a/icu4c/source/data/zone/brx.txt b/icu4c/source/data/zone/brx.txt
index fbd956799..0ddace1ad 100644
--- a/icu4c/source/data/zone/brx.txt
+++ b/icu4c/source/data/zone/brx.txt
@@ -462,9 +462,6 @@ brx{
"America:New_York"{
ec{"निउ यर्क"}
}
- "America:Nipigon"{
- ec{"निपिग’न"}
- }
"America:Nome"{
ec{"न’म"}
}
@@ -486,9 +483,6 @@ brx{
"America:Panama"{
ec{"पानामा"}
}
- "America:Pangnirtung"{
- ec{"पांग्नीरटुं"}
- }
"America:Paramaribo"{
ec{"पारामारिब’"}
}
@@ -510,9 +504,6 @@ brx{
"America:Punta_Arenas"{
ec{"पुन्टा आरेनास"}
}
- "America:Rainy_River"{
- ec{"रैनी रिभार"}
- }
"America:Rankin_Inlet"{
ec{"रेनकिन इनलेट"}
}
@@ -573,9 +564,6 @@ brx{
"America:Thule"{
ec{"थ्यूल"}
}
- "America:Thunder_Bay"{
- ec{"थान्डार गाथोन"}
- }
"America:Tijuana"{
ec{"टिहुआना"}
}
@@ -597,9 +585,6 @@ brx{
"America:Yakutat"{
ec{"याकुतात"}
}
- "America:Yellowknife"{
- ec{"येल्ल’नाईफ"}
- }
"Antarctica:Casey"{
ec{"केसी"}
}
@@ -924,9 +909,6 @@ brx{
"Australia:Broken_Hill"{
ec{"ब्र’केन हिल"}
}
- "Australia:Currie"{
- ec{"करी"}
- }
"Australia:Darwin"{
ec{"डार्वीन"}
}
@@ -1109,9 +1091,6 @@ brx{
"Europe:Ulyanovsk"{
ec{"ऊल्यान’भ्स्क"}
}
- "Europe:Uzhgorod"{
- ec{"ऊज्ह’र’ड"}
- }
"Europe:Vaduz"{
ec{"भाडुज"}
}
@@ -1133,9 +1112,6 @@ brx{
"Europe:Zagreb"{
ec{"जाग्रेब"}
}
- "Europe:Zaporozhye"{
- ec{"झाप’र’झ्ये"}
- }
"Europe:Zurich"{
ec{"जुरिख"}
}
@@ -1217,9 +1193,6 @@ brx{
"Pacific:Honolulu"{
ec{"हनलुलु"}
}
- "Pacific:Johnston"{
- ec{"ज’नस्ट’न"}
- }
"Pacific:Kanton"{
ec{"केन्ट’न"}
}
@@ -1676,9 +1649,6 @@ brx{
lg{"माकाऊ सम"}
ls{"माकाऊ स्टैंडर्ड टाईम"}
}
- "meta:Macquarie"{
- ls{"माक्वारी द्वीप सम"}
- }
"meta:Magadan"{
ld{"मागादान दैज्लां सम"}
lg{"मागादान सम"}
@@ -1704,11 +1674,6 @@ brx{
"meta:Mawson"{
ls{"मौसन सम"}
}
- "meta:Mexico_Northwest"{
- ld{"साहा-सोनाब मेक्सिक’ सानारि सम"}
- lg{"साहा-सोनाब मेक्सिक’ सम"}
- ls{"साहा-सोनाब मेक्सिक’ थाखोआरि सम"}
- }
"meta:Mexico_Pacific"{
ld{"मेक्सिक’नि पेसिफिक सानारि सम"}
lg{"मेक्सिक’नि पेसिफिक सम"}
diff --git a/icu4c/source/data/zone/bs.txt b/icu4c/source/data/zone/bs.txt
index bf4bca9c3..145022e1e 100644
--- a/icu4c/source/data/zone/bs.txt
+++ b/icu4c/source/data/zone/bs.txt
@@ -69,9 +69,6 @@ bs{
"America:Puerto_Rico"{
ec{"Portoriko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"Asia:Almaty"{
ec{"Almati"}
}
@@ -249,9 +246,6 @@ bs{
"Atlantic:St_Helena"{
ec{"Sveta Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Australia:Lord_Howe"{
ec{"Lord Hau"}
}
@@ -355,9 +349,6 @@ bs{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -367,9 +358,6 @@ bs{
"Europe:Warsaw"{
ec{"Varšava"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporožje"}
- }
"Europe:Zurich"{
ec{"Cirih"}
}
@@ -793,9 +781,6 @@ bs{
lg{"Makao vreme"}
ls{"Makao standardno vreme"}
}
- "meta:Macquarie"{
- ls{"Vrijeme na Ostrvu Makvori"}
- }
"meta:Magadan"{
ld{"Magadansko ljetno vrijeme"}
lg{"Magadansko vrijeme"}
@@ -821,11 +806,6 @@ bs{
"meta:Mawson"{
ls{"Vrijeme stanice Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Sjeverozapadno meksičko ljetno vrijeme"}
- lg{"Sjeverozapadno meksičko vrijeme"}
- ls{"Sjeverozapadno meksičko standardno vrijeme"}
- }
"meta:Mexico_Pacific"{
ld{"Meksičko pacifičko ljetno vrijeme"}
lg{"Meksičko pacifičko vrijeme"}
diff --git a/icu4c/source/data/zone/bs_Cyrl.txt b/icu4c/source/data/zone/bs_Cyrl.txt
index e133ccd56..243feede0 100644
--- a/icu4c/source/data/zone/bs_Cyrl.txt
+++ b/icu4c/source/data/zone/bs_Cyrl.txt
@@ -463,9 +463,6 @@ bs_Cyrl{
"America:New_York"{
ec{"Њујорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -487,9 +484,6 @@ bs_Cyrl{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртунг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -511,9 +505,6 @@ bs_Cyrl{
"America:Punta_Arenas"{
ec{"Пунта Аренас"}
}
- "America:Rainy_River"{
- ec{"Рејни Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Ранкин Инлет"}
}
@@ -574,9 +565,6 @@ bs_Cyrl{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тандер Беј"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -598,9 +586,6 @@ bs_Cyrl{
"America:Yakutat"{
ec{"Јакутат"}
}
- "America:Yellowknife"{
- ec{"Јелоунајф"}
- }
"Antarctica:Casey"{
ec{"Касеј"}
}
@@ -925,9 +910,6 @@ bs_Cyrl{
"Australia:Broken_Hill"{
ec{"Брокен Хил"}
}
- "Australia:Currie"{
- ec{"Курие"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1110,9 +1092,6 @@ bs_Cyrl{
"Europe:Ulyanovsk"{
ec{"Уљановск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуз"}
}
@@ -1134,9 +1113,6 @@ bs_Cyrl{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожје"}
- }
"Europe:Zurich"{
ec{"Цирих"}
}
@@ -1218,9 +1194,6 @@ bs_Cyrl{
"Pacific:Honolulu"{
ec{"Хонолулу"}
}
- "Pacific:Johnston"{
- ec{"Џонстон"}
- }
"Pacific:Kiritimati"{
ec{"Киритимати"}
}
@@ -1673,9 +1646,6 @@ bs_Cyrl{
lg{"Макао време"}
ls{"Макао стандардно време"}
}
- "meta:Macquarie"{
- ls{"Макверијско вријеме"}
- }
"meta:Magadan"{
ld{"Магадан љетње рачунање вемена"}
lg{"Магадан вријеме"}
@@ -1701,11 +1671,6 @@ bs_Cyrl{
"meta:Mawson"{
ls{"Мосон вријеме"}
}
- "meta:Mexico_Northwest"{
- ld{"Сјеверномексичко љетње рачунање времена"}
- lg{"Сјеверномексичко вријеме"}
- ls{"Сјеверномексичко стандардно вријеме"}
- }
"meta:Mexico_Pacific"{
ld{"Мексичко пацифичко љетње рачунање времена"}
lg{"Мексичко пацифичко вријеме"}
diff --git a/icu4c/source/data/zone/ca.txt b/icu4c/source/data/zone/ca.txt
index 759317581..adbb8e691 100644
--- a/icu4c/source/data/zone/ca.txt
+++ b/icu4c/source/data/zone/ca.txt
@@ -102,9 +102,6 @@ ca{
"America:Panama"{
ec{"Panamà"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -264,9 +261,6 @@ ca{
"Atlantic:St_Helena"{
ec{"Saint Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Temps universal coordinat"}
}
@@ -350,9 +344,6 @@ ca{
"Europe:Ulyanovsk"{
ec{"Uliànovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Újhorod"}
- }
"Europe:Vatican"{
ec{"Vaticà"}
}
@@ -365,9 +356,6 @@ ca{
"Europe:Warsaw"{
ec{"Varsòvia"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporíjia"}
- }
"Europe:Zurich"{
ec{"Zúric"}
}
@@ -768,9 +756,6 @@ ca{
lg{"Hora de Macau"}
ls{"Hora estàndard de Macau"}
}
- "meta:Macquarie"{
- ls{"Hora de Macquarie"}
- }
"meta:Magadan"{
ld{"Hora d’estiu de Magadan"}
lg{"Hora de Magadan"}
@@ -796,11 +781,6 @@ ca{
"meta:Mawson"{
ls{"Hora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Hora d’estiu del nord-oest de Mèxic"}
- lg{"Hora del nord-oest de Mèxic"}
- ls{"Hora estàndard del nord-oest de Mèxic"}
- }
"meta:Mexico_Pacific"{
ld{"Hora d’estiu del Pacífic de Mèxic"}
lg{"Hora del Pacífic de Mèxic"}
diff --git a/icu4c/source/data/zone/ccp.txt b/icu4c/source/data/zone/ccp.txt
index 6a894b700..81dd83ba4 100644
--- a/icu4c/source/data/zone/ccp.txt
+++ b/icu4c/source/data/zone/ccp.txt
@@ -462,9 +462,6 @@ ccp{
"America:New_York"{
ec{"𑄚𑄨𑄅𑄪𑄃𑄨𑄠𑄧𑄢𑄴𑄇𑄴"}
}
- "America:Nipigon"{
- ec{"𑄚𑄨𑄛𑄨𑄉𑄮𑄚𑄴"}
- }
"America:Nome"{
ec{"𑄚𑄮𑄟𑄴"}
}
@@ -486,9 +483,6 @@ ccp{
"America:Panama"{
ec{"𑄛𑄚𑄟"}
}
- "America:Pangnirtung"{
- ec{"𑄛𑄳𑄠𑄋𑄴𑄉𑄧𑄚𑄨𑄢𑄴𑄑𑄪𑄁"}
- }
"America:Paramaribo"{
ec{"𑄛𑄳𑄠𑄢𑄟𑄬𑄢𑄨𑄝𑄮"}
}
@@ -507,9 +501,6 @@ ccp{
"America:Puerto_Rico"{
ec{"𑄛𑄪𑄠𑄬𑄢𑄴𑄖𑄮 𑄢𑄨𑄇𑄮"}
}
- "America:Rainy_River"{
- ec{"𑄣𑄬𑄭𑄚𑄨 𑄢𑄨𑄞𑄢𑄴"}
- }
"America:Rankin_Inlet"{
ec{"𑄢𑄳𑄠𑄋𑄴𑄇𑄨𑄚𑄴 𑄃𑄨𑄚𑄴𑄣𑄬𑄑𑄴"}
}
@@ -525,9 +516,6 @@ ccp{
"America:Rio_Branco"{
ec{"𑄢𑄨𑄃𑄮 𑄝𑄳𑄢𑄋𑄴𑄇𑄮"}
}
- "America:Santa_Isabel"{
- ec{"𑄥𑄚𑄴𑄖 𑄃𑄨𑄥𑄝𑄬𑄣𑄴"}
- }
"America:Santarem"{
ec{"𑄥𑄬𑄚𑄴𑄑𑄪𑄢𑄬𑄟𑄴"}
}
@@ -573,9 +561,6 @@ ccp{
"America:Thule"{
ec{"𑄗𑄪𑄣𑄨"}
}
- "America:Thunder_Bay"{
- ec{"𑄐𑄚𑄴𑄓𑄢𑄴 𑄝𑄬"}
- }
"America:Tijuana"{
ec{"𑄖𑄨𑄎𑄪𑄠𑄚"}
}
@@ -597,9 +582,6 @@ ccp{
"America:Yakutat"{
ec{"𑄃𑄨𑄠𑄇𑄪𑄑𑄑𑄴"}
}
- "America:Yellowknife"{
- ec{"𑄃𑄨𑄠𑄬𑄣𑄮𑄚𑄭𑄜𑄴"}
- }
"Antarctica:Casey"{
ec{"𑄇𑄳𑄆𑄬𑄥𑄨"}
}
@@ -915,9 +897,6 @@ ccp{
"Australia:Broken_Hill"{
ec{"𑄝𑄳𑄢𑄮𑄇𑄬𑄚𑄴 𑄦𑄨𑄣𑄴"}
}
- "Australia:Currie"{
- ec{"𑄇𑄨𑄃𑄪𑄢𑄨"}
- }
"Australia:Darwin"{
ec{"𑄓𑄢𑄴𑄃𑄪𑄃𑄨𑄚𑄴"}
}
@@ -1097,9 +1076,6 @@ ccp{
"Europe:Ulyanovsk"{
ec{"𑄅𑄪𑄣𑄨𑄠𑄚𑄮𑄞𑄴𑄥𑄴𑄇𑄴"}
}
- "Europe:Uzhgorod"{
- ec{"𑄅𑄪𑄏𑄴𑄉𑄮𑄢𑄮𑄓𑄴"}
- }
"Europe:Vaduz"{
ec{"𑄞𑄘𑄪𑄎𑄴"}
}
@@ -1121,9 +1097,6 @@ ccp{
"Europe:Zagreb"{
ec{"𑄎𑄉𑄳𑄢𑄬𑄛𑄴"}
}
- "Europe:Zaporozhye"{
- ec{"𑄎𑄬𑄛𑄮𑄢𑄮𑄎𑄭𑄠𑄭"}
- }
"Europe:Zurich"{
ec{"𑄎𑄪𑄢𑄨𑄈𑄴"}
}
@@ -1205,9 +1178,6 @@ ccp{
"Pacific:Honolulu"{
ec{"𑄦𑄧𑄚𑄮𑄣𑄪𑄣𑄪"}
}
- "Pacific:Johnston"{
- ec{"𑄎𑄧𑄚𑄴𑄥𑄳𑄑𑄧𑄚𑄴"}
- }
"Pacific:Kiritimati"{
ec{"𑄇𑄨𑄢𑄨𑄖𑄨𑄟𑄖𑄨"}
}
@@ -1685,9 +1655,6 @@ ccp{
lg{"𑄣𑄧𑄢𑄴𑄓𑄴 𑄦𑄤𑄬 𑄃𑄧𑄇𑄴𑄖𑄧"}
ls{"𑄣𑄧𑄢𑄴𑄓𑄴 𑄦𑄤𑄬 𑄟𑄚𑄧𑄇𑄴 𑄃𑄧𑄇𑄴𑄖𑄧"}
}
- "meta:Macquarie"{
- ls{"𑄟𑄳𑄠𑄇𑄴𑄇𑄪𑄢𑄨 𑄉𑄭 𑄉𑄭 𑄞𑄬𑄘 𑄃𑄧𑄇𑄴𑄖𑄧"}
- }
"meta:Magadan"{
ld{"𑄟𑄳𑄠𑄉𑄓𑄚𑄴 𑄉𑄧𑄢𑄧𑄟𑄴𑄇𑄣𑄧𑄢𑄴 𑄃𑄧𑄇𑄴𑄖𑄧"}
lg{"𑄟𑄳𑄠𑄉𑄓𑄚𑄴 𑄃𑄧𑄇𑄴𑄖𑄧"}
@@ -1713,17 +1680,6 @@ ccp{
"meta:Mawson"{
ls{"𑄟𑄧𑄥𑄳𑄦𑄧𑄚𑄴 𑄃𑄧𑄇𑄴𑄖𑄧"}
}
- "meta:Mexico_Northwest"{
- ld{
- "𑄃𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄛𑄧𑄏𑄨𑄟𑄴 𑄟𑄬𑄇𑄴𑄥𑄨𑄇𑄮𑄢𑄴 𑄘𑄨𑄚𑄮𑄢𑄴 "
- "𑄃𑄧𑄇𑄴𑄖𑄧"
- }
- lg{"𑄃𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄛𑄧𑄏𑄨𑄟𑄴 𑄟𑄬𑄇𑄴𑄥𑄨𑄇𑄮𑄢𑄴 𑄃𑄧𑄇𑄴𑄖𑄧"}
- ls{
- "𑄃𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄛𑄧𑄏𑄨𑄟𑄴 𑄟𑄬𑄇𑄴𑄥𑄨𑄇𑄮𑄢𑄴 𑄟𑄚𑄧𑄇𑄴 "
- "𑄃𑄧𑄇𑄴𑄖𑄧"
- }
- }
"meta:Mexico_Pacific"{
ld{
"𑄟𑄬𑄇𑄴𑄥𑄨𑄇𑄚𑄴 𑄛𑄳𑄢𑄧𑄥𑄚𑄴𑄖𑄧 𑄟𑄧𑄦𑄥𑄉𑄧𑄢𑄧𑄢𑄴 "
diff --git a/icu4c/source/data/zone/ce.txt b/icu4c/source/data/zone/ce.txt
index 093770f13..4725d12ac 100644
--- a/icu4c/source/data/zone/ce.txt
+++ b/icu4c/source/data/zone/ce.txt
@@ -462,9 +462,6 @@ ce{
"America:New_York"{
ec{"Нью-Йорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -486,9 +483,6 @@ ce{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртанг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -510,9 +504,6 @@ ce{
"America:Punta_Arenas"{
ec{"Пунта-Аренас"}
}
- "America:Rainy_River"{
- ec{"Рейни-Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Ранкин-Инлет"}
}
@@ -528,9 +519,6 @@ ce{
"America:Rio_Branco"{
ec{"Риу-Бранку"}
}
- "America:Santa_Isabel"{
- ec{"Санта-Изабел"}
- }
"America:Santarem"{
ec{"Сантарен"}
}
@@ -576,9 +564,6 @@ ce{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тандер-Бей"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -600,9 +585,6 @@ ce{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Йеллоунайф"}
- }
"Antarctica:Casey"{
ec{"Кейси"}
}
@@ -924,9 +906,6 @@ ce{
"Australia:Broken_Hill"{
ec{"Брокен-Хилл"}
}
- "Australia:Currie"{
- ec{"Керри"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1106,9 +1085,6 @@ ce{
"Europe:Ulyanovsk"{
ec{"Ульяновск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуц"}
}
@@ -1130,9 +1106,6 @@ ce{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожье"}
- }
"Europe:Zurich"{
ec{"Цюрих"}
}
@@ -1214,9 +1187,6 @@ ce{
"Pacific:Honolulu"{
ec{"Гонолулу"}
}
- "Pacific:Johnston"{
- ec{"Джонстон"}
- }
"Pacific:Kiritimati"{
ec{"Киритимати"}
}
@@ -1628,9 +1598,6 @@ ce{
lg{"Лорд-Хау"}
ls{"Лорд-Хау, стандартан хан"}
}
- "meta:Macquarie"{
- ls{"Маккуори"}
- }
"meta:Magadan"{
ld{"Магадан, аьхкенан хан"}
lg{"Магадан"}
@@ -1656,11 +1623,6 @@ ce{
"meta:Mawson"{
ls{"Моусон"}
}
- "meta:Mexico_Northwest"{
- ld{"Къилбаседа Американ Мексикан аьхкенан хан"}
- lg{"Къилбаседа Американ Мексикан хан"}
- ls{"Къилбаседа Американ Мексикан стандартан хан"}
- }
"meta:Mexico_Pacific"{
ld{"Тийна океанан Мексикан аьхкенан хан"}
lg{"Тийна океанан Мексикан хан"}
diff --git a/icu4c/source/data/zone/ceb.txt b/icu4c/source/data/zone/ceb.txt
index eac1c8acd..0ebe26c82 100644
--- a/icu4c/source/data/zone/ceb.txt
+++ b/icu4c/source/data/zone/ceb.txt
@@ -360,9 +360,6 @@ ceb{
lg{"Oras sa Lord Howe"}
ls{"Tamdanang Oras sa Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Oras sa Macquarie Island"}
- }
"meta:Magadan"{
ld{"Oras sa Tag-init sa Magadan"}
lg{"Oras sa Magadan"}
@@ -388,11 +385,6 @@ ceb{
"meta:Mawson"{
ls{"Oras sa Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Oras sa Tag-init sa Northwest Mexico"}
- lg{"Oras sa Northwest Mexico"}
- ls{"Tamdanang Oras sa Northwest Mexico"}
- }
"meta:Mexico_Pacific"{
ld{"Oras sa Tag-init sa Mexican Pacific"}
lg{"Oras sa Mexican Pacific"}
diff --git a/icu4c/source/data/zone/chr.txt b/icu4c/source/data/zone/chr.txt
index 1d8c33260..9d2f228ba 100644
--- a/icu4c/source/data/zone/chr.txt
+++ b/icu4c/source/data/zone/chr.txt
@@ -465,9 +465,6 @@ chr{
"America:New_York"{
ec{"ᏄᏯᎩ"}
}
- "America:Nipigon"{
- ec{"ᏂᏈᎪᏂ"}
- }
"America:Nome"{
ec{"ᏃᎺ"}
}
@@ -489,9 +486,6 @@ chr{
"America:Panama"{
ec{"ᏆᎾᎹ"}
}
- "America:Pangnirtung"{
- ec{"ᏆᏂᏂᏚᏂᎦ"}
- }
"America:Paramaribo"{
ec{"ᏆᎳᎹᎴᏉ"}
}
@@ -513,9 +507,6 @@ chr{
"America:Punta_Arenas"{
ec{"ᏊᏔ ᎡᏫᎾᏍ"}
}
- "America:Rainy_River"{
- ec{"ᎠᎦᏍᎦ ᎤᏪᏴ"}
- }
"America:Rankin_Inlet"{
ec{"ᎴᏂᎩᏂ ᎢᏂᎴᏘ"}
}
@@ -576,9 +567,6 @@ chr{
"America:Thule"{
ec{"ᏡᎵ"}
}
- "America:Thunder_Bay"{
- ec{"ᎠᏴᏓᏆᎶᏍᎦ ᎡᏉᏄᎸᏗ"}
- }
"America:Tijuana"{
ec{"ᏘᏳᏩᎾ"}
}
@@ -600,9 +588,6 @@ chr{
"America:Yakutat"{
ec{"ᏯᎫᏔᏘ"}
}
- "America:Yellowknife"{
- ec{"ᏓᎶᏂᎨ ᎭᏰᏍᏗ"}
- }
"Antarctica:Casey"{
ec{"ᎨᏏ"}
}
@@ -927,9 +912,6 @@ chr{
"Australia:Broken_Hill"{
ec{"ᎤᏲᏨᎯ ᎦᏚᏏ"}
}
- "Australia:Currie"{
- ec{"ᎫᎵ"}
- }
"Australia:Darwin"{
ec{"ᏓᏩᏂ"}
}
@@ -1112,9 +1094,6 @@ chr{
"Europe:Ulyanovsk"{
ec{"ᎤᎵᏯᏃᏬᏍᎧ"}
}
- "Europe:Uzhgorod"{
- ec{"ᎤᏍᎪᎶᏗ"}
- }
"Europe:Vaduz"{
ec{"ᏩᏚᏏ"}
}
@@ -1136,9 +1115,6 @@ chr{
"Europe:Zagreb"{
ec{"ᏌᏇᏈ"}
}
- "Europe:Zaporozhye"{
- ec{"ᏌᏉᎶᏌᏱ"}
- }
"Europe:Zurich"{
ec{"ᏑᎵᏥ"}
}
@@ -1223,9 +1199,6 @@ chr{
sg{"HST"}
ss{"HST"}
}
- "Pacific:Johnston"{
- ec{"ᏣᏂᏏᏂ"}
- }
"Pacific:Kanton"{
ec{"ᎧᏛᏂ"}
}
@@ -1661,9 +1634,6 @@ chr{
lg{"ᎤᎬᏫᏳᎯ ᎭᏫ ᎠᏟᎢᎵᏒ"}
ls{"ᎤᎬᏫᏳᎯ ᎭᏫ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ"}
}
- "meta:Macquarie"{
- ls{"ᎹᏇᎵ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ"}
- }
"meta:Magadan"{
ld{"ᎹᎦᏓᏂ ᎪᎩ ᎠᏟᎢᎵᏒ"}
lg{"ᎹᎦᏓᏂ ᎠᏟᎢᎵᏒ"}
@@ -1689,11 +1659,6 @@ chr{
"meta:Mawson"{
ls{"ᎹᏌᏂ ᎠᏟᎢᎵᏒ"}
}
- "meta:Mexico_Northwest"{
- ld{"ᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒ"}
- lg{"ᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎠᏟᎢᎵᏒ"}
- ls{"ᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ"}
- }
"meta:Mexico_Pacific"{
ld{"ᎠᏂᏍᏆᏂ ᏭᏕᎵᎬ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒ"}
lg{"ᎠᏂᏍᏆᏂ ᏭᏕᎵᎬ ᎠᏟᎢᎵᏒ"}
diff --git a/icu4c/source/data/zone/cs.txt b/icu4c/source/data/zone/cs.txt
index da0fad4b9..1eae33a48 100644
--- a/icu4c/source/data/zone/cs.txt
+++ b/icu4c/source/data/zone/cs.txt
@@ -99,9 +99,6 @@ cs{
"America:Puerto_Rico"{
ec{"Portoriko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -309,9 +306,6 @@ cs{
"Atlantic:St_Helena"{
ec{"Svatá Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"koordinovaný světový čas"}
}
@@ -394,9 +388,6 @@ cs{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Užhorod"}
- }
"Europe:Vatican"{
ec{"Vatikán"}
}
@@ -409,9 +400,6 @@ cs{
"Europe:Zagreb"{
ec{"Záhřeb"}
}
- "Europe:Zaporozhye"{
- ec{"Záporoží"}
- }
"Europe:Zurich"{
ec{"Curych"}
}
@@ -885,9 +873,6 @@ cs{
lg{"Macajský čas"}
ls{"Macajský standardní čas"}
}
- "meta:Macquarie"{
- ls{"čas ostrova Macquarie"}
- }
"meta:Magadan"{
ld{"magadanský letní čas"}
lg{"magadanský čas"}
@@ -913,11 +898,6 @@ cs{
"meta:Mawson"{
ls{"čas Mawsonovy stanice"}
}
- "meta:Mexico_Northwest"{
- ld{"severozápadní mexický letní čas"}
- lg{"severozápadní mexický čas"}
- ls{"severozápadní mexický standardní čas"}
- }
"meta:Mexico_Pacific"{
ld{"mexický pacifický letní čas"}
lg{"mexický pacifický čas"}
diff --git a/icu4c/source/data/zone/cv.txt b/icu4c/source/data/zone/cv.txt
index 4950b0f8a..d0ea1a1b0 100644
--- a/icu4c/source/data/zone/cv.txt
+++ b/icu4c/source/data/zone/cv.txt
@@ -462,9 +462,6 @@ cv{
"America:New_York"{
ec{"Нью-Йорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -486,9 +483,6 @@ cv{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртанг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -510,9 +504,6 @@ cv{
"America:Punta_Arenas"{
ec{"Пунта-Аренас"}
}
- "America:Rainy_River"{
- ec{"Рейни-Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Ранкин-Инлет"}
}
@@ -573,9 +564,6 @@ cv{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тандер-Бей"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -597,9 +585,6 @@ cv{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Йеллоунайф"}
- }
"Antarctica:Casey"{
ec{"Кейси"}
}
@@ -1106,9 +1091,6 @@ cv{
"Europe:Ulyanovsk"{
ec{"Ульяновск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуц"}
}
@@ -1130,9 +1112,6 @@ cv{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожье"}
- }
"Europe:Zurich"{
ec{"Цюрих"}
}
@@ -1208,9 +1187,6 @@ cv{
"Pacific:Guam"{
ec{"Гуам"}
}
- "Pacific:Johnston"{
- ec{"Джонстон"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1625,9 +1601,6 @@ cv{
lg{"Лорд-Хау вӑхӑчӗ"}
ls{"Лорд-Хау стандартлӑ вӑхӑчӗ"}
}
- "meta:Macquarie"{
- ls{"Маккуори вӑхӑчӗ"}
- }
"meta:Magadan"{
ld{"Магадан ҫуллахи вӑхӑчӗ"}
lg{"Магадан вӑхӑчӗ"}
@@ -1653,11 +1626,6 @@ cv{
"meta:Mawson"{
ls{"Моусон вӑхӑчӗ"}
}
- "meta:Mexico_Northwest"{
- ld{"Ҫурҫӗр-анӑҫ Мексика ҫуллахи вӑхӑчӗ"}
- lg{"Ҫурҫӗр-анӑҫ Мексика вӑхӑчӗ"}
- ls{"Ҫурҫӗр-анӑҫ Мексика стандартлӑ вӑхӑчӗ"}
- }
"meta:Mexico_Pacific"{
ld{"Мексика Лӑпкӑ океан ҫуллахи вӑхӑчӗ"}
lg{"Мексика Лӑпкӑ океан вӑхӑчӗ"}
diff --git a/icu4c/source/data/zone/cy.txt b/icu4c/source/data/zone/cy.txt
index 708af18af..6d00d9f4c 100644
--- a/icu4c/source/data/zone/cy.txt
+++ b/icu4c/source/data/zone/cy.txt
@@ -57,9 +57,6 @@ cy{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Gogledd Dakota"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"St. Barthélemy"}
}
@@ -96,9 +93,6 @@ cy{
"Atlantic:South_Georgia"{
ec{"De Georgia"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Amser Cyffredniol Cydlynol"}
}
@@ -140,9 +134,6 @@ cy{
"Europe:Rome"{
ec{"Rhufain"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhhorod"}
- }
"Europe:Vatican"{
ec{"Y Fatican"}
}
@@ -516,9 +507,6 @@ cy{
lg{"Amser yr Arglwydd Howe"}
ls{"Amser Safonol yr Arglwydd Howe"}
}
- "meta:Macquarie"{
- ls{"Amser Ynys Macquarie"}
- }
"meta:Magadan"{
ld{"Amser Haf Magadan"}
lg{"Amser Magadan"}
@@ -544,11 +532,6 @@ cy{
"meta:Mawson"{
ls{"Amser Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Amser Haf Gogledd Orllewin Mecsico"}
- lg{"Amser Gogledd Orllewin Mecsico"}
- ls{"Amser Safonol Gogledd Orllewin Mecsico"}
- }
"meta:Mexico_Pacific"{
ld{"Amser Haf Pasiffig Mecsico"}
lg{"Amser Pasiffig Mecsico"}
diff --git a/icu4c/source/data/zone/da.txt b/icu4c/source/data/zone/da.txt
index 8dc9379d4..45569d591 100644
--- a/icu4c/source/data/zone/da.txt
+++ b/icu4c/source/data/zone/da.txt
@@ -30,9 +30,6 @@ da{
"America:Merida"{
ec{"Merida"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Sao_Paulo"{
ec{"São Paulo"}
}
@@ -123,9 +120,6 @@ da{
"Atlantic:Faeroe"{
ec{"Færøerne"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Koordineret universaltid"}
}
@@ -174,9 +168,6 @@ da{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Uzjhorod"}
- }
"Europe:Vatican"{
ec{"Vatikanet"}
}
@@ -186,9 +177,6 @@ da{
"Europe:Warsaw"{
ec{"Warszawa"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizjzja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -605,9 +593,6 @@ da{
lg{"Macao-tid"}
ls{"Macao-normaltid"}
}
- "meta:Macquarie"{
- ls{"Macquarie-tid"}
- }
"meta:Magadan"{
ld{"Magadan-sommertid"}
lg{"Magadan-tid"}
@@ -633,11 +618,6 @@ da{
"meta:Mawson"{
ls{"Mawson-tid"}
}
- "meta:Mexico_Northwest"{
- ld{"Nordvestmexicansk sommertid"}
- lg{"Nordvestmexicansk tid"}
- ls{"Nordvestmexicansk normaltid"}
- }
"meta:Mexico_Pacific"{
ld{"Mexicansk Pacific-sommertid"}
lg{"Mexicansk Pacific-tid"}
diff --git a/icu4c/source/data/zone/de.txt b/icu4c/source/data/zone/de.txt
index 0d2fe7d5d..4d0987a53 100644
--- a/icu4c/source/data/zone/de.txt
+++ b/icu4c/source/data/zone/de.txt
@@ -72,9 +72,6 @@ de{
"America:Mexico_City"{
ec{"Mexiko-Stadt"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Sao_Paulo"{
ec{"São Paulo"}
}
@@ -222,9 +219,6 @@ de{
"Atlantic:South_Georgia"{
ec{"Südgeorgien"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Koordinierte Weltzeit"}
}
@@ -288,9 +282,6 @@ de{
"Europe:Ulyanovsk"{
ec{"Uljanowsk"}
}
- "Europe:Uzhgorod"{
- ec{"Uschgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -303,9 +294,6 @@ de{
"Europe:Warsaw"{
ec{"Warschau"}
}
- "Europe:Zaporozhye"{
- ec{"Saporischschja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -728,9 +716,6 @@ de{
lg{"Macau-Zeit"}
ls{"Macau-Normalzeit"}
}
- "meta:Macquarie"{
- ls{"Macquarieinsel-Zeit"}
- }
"meta:Magadan"{
ld{"Magadan-Sommerzeit"}
lg{"Magadan-Zeit"}
@@ -756,11 +741,6 @@ de{
"meta:Mawson"{
ls{"Mawson-Zeit"}
}
- "meta:Mexico_Northwest"{
- ld{"Nordwestmexiko-Sommerzeit"}
- lg{"Nordwestmexiko-Zeit"}
- ls{"Nordwestmexiko-Normalzeit"}
- }
"meta:Mexico_Pacific"{
ld{"Mexikanische Pazifik-Sommerzeit"}
lg{"Mexikanische Pazifikzeit"}
diff --git a/icu4c/source/data/zone/dsb.txt b/icu4c/source/data/zone/dsb.txt
index ba486268f..6ec7bf331 100644
--- a/icu4c/source/data/zone/dsb.txt
+++ b/icu4c/source/data/zone/dsb.txt
@@ -246,9 +246,6 @@ dsb{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -264,9 +261,6 @@ dsb{
"Europe:Warsaw"{
ec{"Waršawa"}
}
- "Europe:Zaporozhye"{
- ec{"Saporižja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -639,9 +633,6 @@ dsb{
lg{"cas kupy Lord-Howe"}
ls{"Standardny cas kupy Lord-Howe"}
}
- "meta:Macquarie"{
- ls{"cas kupy Macquarie"}
- }
"meta:Magadan"{
ld{"Magadański lěśojski cas"}
lg{"Magadański cas"}
@@ -667,11 +658,6 @@ dsb{
"meta:Mawson"{
ls{"Mawson cas"}
}
- "meta:Mexico_Northwest"{
- ld{"Mexiski dłujkowjacorny lěśojski cas"}
- lg{"Mexiski dłujkowjacorny cas"}
- ls{"Mexiski dłujkowjacorny standardny cas"}
- }
"meta:Mexico_Pacific"{
ld{"Mexiski pacifiski lěśojski cas"}
lg{"Mexiski pacifiski cas"}
diff --git a/icu4c/source/data/zone/dz.txt b/icu4c/source/data/zone/dz.txt
index 7e3e9ba77..fca57468b 100644
--- a/icu4c/source/data/zone/dz.txt
+++ b/icu4c/source/data/zone/dz.txt
@@ -81,18 +81,9 @@ dz{
"America:Moncton"{
ec{"མཱོངཀ་ཊོན"}
}
- "America:Nipigon"{
- ec{"ནི་པི་གཱོན"}
- }
"America:Panama"{
ec{"པ་ན་མ"}
}
- "America:Pangnirtung"{
- ec{"པེང་ནིར་ཏུང"}
- }
- "America:Rainy_River"{
- ec{"རཱེ་ནི་རི་ཝར"}
- }
"America:Rankin_Inlet"{
ec{"རེན་ཀིན་ ཨིན་ལེཊ"}
}
@@ -117,9 +108,6 @@ dz{
"America:Tegucigalpa"{
ec{"ཊེ་གུ་སི་གཱལ་པ"}
}
- "America:Thunder_Bay"{
- ec{"ཐན་ཌར་ བའེ"}
- }
"America:Tijuana"{
ec{"ཏིའུ་ཝ་ན"}
}
diff --git a/icu4c/source/data/zone/ee.txt b/icu4c/source/data/zone/ee.txt
index 1a8acd4e9..f836d45e7 100644
--- a/icu4c/source/data/zone/ee.txt
+++ b/icu4c/source/data/zone/ee.txt
@@ -18,9 +18,6 @@ ee{
"Asia:Macau"{
ec{"Macau"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Xexeme gaƒoƒoɖoanyi me"}
}
@@ -387,9 +384,6 @@ ee{
lg{"Lord Howe gaƒoƒo me"}
ls{"Lord Howe nutome gaƒoƒo me"}
}
- "meta:Macquarie"{
- ls{"Macquarie Island gaƒoƒo me"}
- }
"meta:Magadan"{
ld{"Magadan dzomeŋɔli gaƒoƒo me"}
lg{"Magadan gaƒoƒo me"}
@@ -415,11 +409,6 @@ ee{
"meta:Mawson"{
ls{"Mawson gaƒoƒo me"}
}
- "meta:Mexico_Northwest"{
- ld{"Northwest Mexico kele gaƒoƒo me"}
- lg{"Northwest Mexico gaƒoƒo me"}
- ls{"Northwest Mexico nutome gaƒoƒo me"}
- }
"meta:Mexico_Pacific"{
ld{"Mexican Pacific kele gaƒoƒome"}
lg{"Mexican Pacific gaƒoƒo me"}
diff --git a/icu4c/source/data/zone/el.txt b/icu4c/source/data/zone/el.txt
index 347cd566c..39d75c811 100644
--- a/icu4c/source/data/zone/el.txt
+++ b/icu4c/source/data/zone/el.txt
@@ -462,9 +462,6 @@ el{
"America:New_York"{
ec{"Νέα Υόρκη"}
}
- "America:Nipigon"{
- ec{"Νιπιγκόν"}
- }
"America:Nome"{
ec{"Νόμε"}
}
@@ -486,9 +483,6 @@ el{
"America:Panama"{
ec{"Παναμάς"}
}
- "America:Pangnirtung"{
- ec{"Πανγκνίρτουνγκ"}
- }
"America:Paramaribo"{
ec{"Παραμαρίμπο"}
}
@@ -510,9 +504,6 @@ el{
"America:Punta_Arenas"{
ec{"Πούντα Αρένας"}
}
- "America:Rainy_River"{
- ec{"Ρέινι Ρίβερ"}
- }
"America:Rankin_Inlet"{
ec{"Ράνκιν Ίνλετ"}
}
@@ -528,9 +519,6 @@ el{
"America:Rio_Branco"{
ec{"Ρίο Μπράνκο"}
}
- "America:Santa_Isabel"{
- ec{"Σάντα Ιζαμπέλ"}
- }
"America:Santarem"{
ec{"Σανταρέμ"}
}
@@ -576,9 +564,6 @@ el{
"America:Thule"{
ec{"Θούλη"}
}
- "America:Thunder_Bay"{
- ec{"Θάντερ Μπέι"}
- }
"America:Tijuana"{
ec{"Τιχουάνα"}
}
@@ -600,9 +585,6 @@ el{
"America:Yakutat"{
ec{"Γιάκουτατ"}
}
- "America:Yellowknife"{
- ec{"Γέλοουναϊφ"}
- }
"Antarctica:Casey"{
ec{"Κάσεϊ"}
}
@@ -927,9 +909,6 @@ el{
"Australia:Broken_Hill"{
ec{"Μπρόκεν Χιλ"}
}
- "Australia:Currie"{
- ec{"Κάρι"}
- }
"Australia:Darwin"{
ec{"Ντάργουιν"}
}
@@ -1112,9 +1091,6 @@ el{
"Europe:Ulyanovsk"{
ec{"Ουλιάνοφσκ"}
}
- "Europe:Uzhgorod"{
- ec{"Ούζχοροντ"}
- }
"Europe:Vaduz"{
ec{"Βαντούζ"}
}
@@ -1136,9 +1112,6 @@ el{
"Europe:Zagreb"{
ec{"Ζάγκρεμπ"}
}
- "Europe:Zaporozhye"{
- ec{"Ζαπορόζιε"}
- }
"Europe:Zurich"{
ec{"Ζυρίχη"}
}
@@ -1220,9 +1193,6 @@ el{
"Pacific:Honolulu"{
ec{"Χονολουλού"}
}
- "Pacific:Johnston"{
- ec{"Τζόνστον"}
- }
"Pacific:Kanton"{
ec{"Καντών"}
}
@@ -1664,9 +1634,6 @@ el{
lg{"Ώρα Μακάο"}
ls{"Χειμερινή ώρα Μακάο"}
}
- "meta:Macquarie"{
- ls{"Ώρα Νησιού Μακουάρι"}
- }
"meta:Magadan"{
ld{"Θερινή ώρα Μαγκαντάν"}
lg{"Ώρα Μαγκαντάν"}
@@ -1692,11 +1659,6 @@ el{
"meta:Mawson"{
ls{"Ώρα Μόσον"}
}
- "meta:Mexico_Northwest"{
- ld{"Θερινή ώρα Βορειοδυτικού Μεξικού"}
- lg{"Ώρα Βορειοδυτικού Μεξικού"}
- ls{"Χειμερινή ώρα Βορειοδυτικού Μεξικού"}
- }
"meta:Mexico_Pacific"{
ld{"Θερινή ώρα Ειρηνικού Μεξικού"}
lg{"Ώρα Ειρηνικού Μεξικού"}
diff --git a/icu4c/source/data/zone/en.txt b/icu4c/source/data/zone/en.txt
index fe3812ae1..f12d68d53 100644
--- a/icu4c/source/data/zone/en.txt
+++ b/icu4c/source/data/zone/en.txt
@@ -21,9 +21,6 @@ en{
"Europe:London"{
ld{"British Summer Time"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhhorod"}
- }
"Pacific:Honolulu"{
sd{"HDT"}
sg{"HST"}
@@ -319,6 +316,11 @@ en{
"meta:Gilbert_Islands"{
ls{"Gilbert Islands Time"}
}
+ "meta:Greenland"{
+ ld{"Greenland Summer Time"}
+ lg{"Greenland Time"}
+ ls{"Greenland Standard Time"}
+ }
"meta:Greenland_Eastern"{
ld{"East Greenland Summer Time"}
lg{"East Greenland Time"}
@@ -437,9 +439,6 @@ en{
lg{"Macao Time"}
ls{"Macao Standard Time"}
}
- "meta:Macquarie"{
- ls{"Macquarie Island Time"}
- }
"meta:Magadan"{
ld{"Magadan Summer Time"}
lg{"Magadan Time"}
@@ -465,11 +464,6 @@ en{
"meta:Mawson"{
ls{"Mawson Time"}
}
- "meta:Mexico_Northwest"{
- ld{"Northwest Mexico Daylight Time"}
- lg{"Northwest Mexico Time"}
- ls{"Northwest Mexico Standard Time"}
- }
"meta:Mexico_Pacific"{
ld{"Mexican Pacific Daylight Time"}
lg{"Mexican Pacific Time"}
diff --git a/icu4c/source/data/zone/en_001.txt b/icu4c/source/data/zone/en_001.txt
index a86cfe038..50d41f9bb 100644
--- a/icu4c/source/data/zone/en_001.txt
+++ b/icu4c/source/data/zone/en_001.txt
@@ -27,9 +27,6 @@ en_001{
"Atlantic:St_Helena"{
ec{"St Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Pacific:Enderbury"{
ec{"Enderbury"}
}
diff --git a/icu4c/source/data/zone/en_CA.txt b/icu4c/source/data/zone/en_CA.txt
index f3de5f997..77a405c46 100644
--- a/icu4c/source/data/zone/en_CA.txt
+++ b/icu4c/source/data/zone/en_CA.txt
@@ -222,11 +222,6 @@ en_CA{
"meta:Maldives"{
ss{"MVT"}
}
- "meta:Mexico_Northwest"{
- ld{"Northwest Mexico Daylight Saving Time"}
- lg{"Northwest Mexico Time"}
- ls{"Northwest Mexico Standard Time"}
- }
"meta:Mexico_Pacific"{
ld{"Mexican Pacific Daylight Saving Time"}
lg{"Mexican Pacific Time"}
diff --git a/icu4c/source/data/zone/en_XA.txt b/icu4c/source/data/zone/en_XA.txt
index 431788328..fefa5ae85 100644
--- a/icu4c/source/data/zone/en_XA.txt
+++ b/icu4c/source/data/zone/en_XA.txt
@@ -45,9 +45,6 @@ en_XA{
"Europe:London"{
ld{"[Ɓŕîţîšĥ Šûɱɱéŕ Ţîɱé one two three]"}
}
- "Europe:Uzhgorod"{
- ec{"[Ûžĥĥöŕöð one two]"}
- }
"Pacific:Honolulu"{
sd{"[ĤÐŢ one]"}
sg{"[ĤŠŢ one]"}
@@ -343,6 +340,11 @@ en_XA{
"meta:Gilbert_Islands"{
ls{"[Ĝîļƀéŕţ Κļåñðš Ţîɱé one two three]"}
}
+ "meta:Greenland"{
+ ld{"[Ĝŕééñļåñð Šûɱɱéŕ Ţîɱé one two three]"}
+ lg{"[Ĝŕééñļåñð Ţîɱé one two]"}
+ ls{"[Ĝŕééñļåñð Šţåñðåŕð Ţîɱé one two three]"}
+ }
"meta:Greenland_Eastern"{
ld{"[Éåšţ Ĝŕééñļåñð Šûɱɱéŕ Ţîɱé one two three]"}
lg{"[Éåšţ Ĝŕééñļåñð Ţîɱé one two three]"}
@@ -461,9 +463,6 @@ en_XA{
lg{"[Ṁåçåö Ţîɱé one two]"}
ls{"[Ṁåçåö Šţåñðåŕð Ţîɱé one two three]"}
}
- "meta:Macquarie"{
- ls{"[Ṁåçǫûåŕîé Κļåñð Ţîɱé one two three]"}
- }
"meta:Magadan"{
ld{"[Ṁåĝåðåñ Šûɱɱéŕ Ţîɱé one two three]"}
lg{"[Ṁåĝåðåñ Ţîɱé one two]"}
@@ -489,11 +488,6 @@ en_XA{
"meta:Mawson"{
ls{"[Ṁåŵšöñ Ţîɱé one two]"}
}
- "meta:Mexico_Northwest"{
- ld{"[Ñöŕţĥŵéšţ Ṁéẋîçö Ðåýļîĝĥţ Ţîɱé one two three four]"}
- lg{"[Ñöŕţĥŵéšţ Ṁéẋîçö Ţîɱé one two three]"}
- ls{"[Ñöŕţĥŵéšţ Ṁéẋîçö Šţåñðåŕð Ţîɱé one two three four]"}
- }
"meta:Mexico_Pacific"{
ld{"[Ṁéẋîçåñ Þåçîƒîç Ðåýļîĝĥţ Ţîɱé one two three four]"}
lg{"[Ṁéẋîçåñ Þåçîƒîç Ţîɱé one two three]"}
diff --git a/icu4c/source/data/zone/es.txt b/icu4c/source/data/zone/es.txt
index 1fdf0bbe2..f75f902c5 100644
--- a/icu4c/source/data/zone/es.txt
+++ b/icu4c/source/data/zone/es.txt
@@ -174,9 +174,6 @@ es{
"America:Rio_Branco"{
ec{"Río Branco"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -372,9 +369,6 @@ es{
"Australia:Adelaide"{
ec{"Adelaida"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Australia:Sydney"{
ec{"Sídney"}
}
@@ -485,9 +479,6 @@ es{
"Europe:Ulyanovsk"{
ec{"Uliánovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Úzhgorod"}
- }
"Europe:Vatican"{
ec{"El Vaticano"}
}
@@ -503,9 +494,6 @@ es{
"Europe:Warsaw"{
ec{"Varsovia"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporiyia"}
- }
"Europe:Zurich"{
ec{"Zúrich"}
}
@@ -942,9 +930,6 @@ es{
lg{"Hora de Macao"}
ls{"Hora estándar de Macao"}
}
- "meta:Macquarie"{
- ls{"hora de la isla Macquarie"}
- }
"meta:Magadan"{
ld{"hora de verano de Magadán"}
lg{"hora de Magadán"}
@@ -970,11 +955,6 @@ es{
"meta:Mawson"{
ls{"hora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"hora de verano del noroeste de México"}
- lg{"hora del noroeste de México"}
- ls{"hora estándar del noroeste de México"}
- }
"meta:Mexico_Pacific"{
ld{"hora de verano del Pacífico de México"}
lg{"hora del Pacífico de México"}
diff --git a/icu4c/source/data/zone/es_419.txt b/icu4c/source/data/zone/es_419.txt
index 66fa1b588..bc604ee24 100644
--- a/icu4c/source/data/zone/es_419.txt
+++ b/icu4c/source/data/zone/es_419.txt
@@ -101,9 +101,6 @@ es_419{
"meta:India"{
ls{"hora de India"}
}
- "meta:Macquarie"{
- ls{"hora de la Isla Macquarie"}
- }
"meta:Marshall_Islands"{
ls{"hora de Islas Marshall"}
}
diff --git a/icu4c/source/data/zone/es_MX.txt b/icu4c/source/data/zone/es_MX.txt
index 6620aa564..a919ba51d 100644
--- a/icu4c/source/data/zone/es_MX.txt
+++ b/icu4c/source/data/zone/es_MX.txt
@@ -79,9 +79,6 @@ es_MX{
"meta:Gilbert_Islands"{
ls{"hora de las Islas Gilbert"}
}
- "meta:Macquarie"{
- ls{"hora de la isla Macquarie"}
- }
"meta:Marshall_Islands"{
ls{"hora de las Islas Marshall"}
}
diff --git a/icu4c/source/data/zone/es_US.txt b/icu4c/source/data/zone/es_US.txt
index 74a13a613..f24bc2bb7 100644
--- a/icu4c/source/data/zone/es_US.txt
+++ b/icu4c/source/data/zone/es_US.txt
@@ -120,9 +120,6 @@ es_US{
"meta:Indian_Ocean"{
ls{"hora del Océano Índico"}
}
- "meta:Macquarie"{
- ls{"hora de la isla Macquarie"}
- }
"meta:Marquesas"{
ls{"hora de las islas Marquesas"}
}
diff --git a/icu4c/source/data/zone/et.txt b/icu4c/source/data/zone/et.txt
index 4666974f9..a3fd88de0 100644
--- a/icu4c/source/data/zone/et.txt
+++ b/icu4c/source/data/zone/et.txt
@@ -75,9 +75,6 @@ et{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Põhja-Dakota"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -243,9 +240,6 @@ et{
"Atlantic:St_Helena"{
ec{"Saint Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Koordineeritud maailmaaeg"}
}
@@ -324,9 +318,6 @@ et{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -336,9 +327,6 @@ et{
"Europe:Warsaw"{
ec{"Varssavi"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporožje"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -761,9 +749,6 @@ et{
lg{"Macau aeg"}
ls{"Macau standardaeg"}
}
- "meta:Macquarie"{
- ls{"Macquarie saare aeg"}
- }
"meta:Magadan"{
ld{"Magadani suveaeg"}
lg{"Magadani aeg"}
@@ -789,11 +774,6 @@ et{
"meta:Mawson"{
ls{"Mawsoni aeg"}
}
- "meta:Mexico_Northwest"{
- ld{"Loode-Mehhiko suveaeg"}
- lg{"Loode-Mehhiko aeg"}
- ls{"Loode-Mehhiko standardaeg"}
- }
"meta:Mexico_Pacific"{
ld{"Mehhiko Vaikse ookeani suveaeg"}
lg{"Mehhiko Vaikse ookeani aeg"}
diff --git a/icu4c/source/data/zone/eu.txt b/icu4c/source/data/zone/eu.txt
index 6be362df6..f2dd3122b 100644
--- a/icu4c/source/data/zone/eu.txt
+++ b/icu4c/source/data/zone/eu.txt
@@ -114,9 +114,6 @@ eu{
"America:Port_of_Spain"{
ec{"Port-of-Spain"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -270,9 +267,6 @@ eu{
"Atlantic:St_Helena"{
ec{"Santa Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"ordu unibertsal koordinatua"}
}
@@ -340,9 +334,6 @@ eu{
"Europe:Ulyanovsk"{
ec{"Ulianovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhhorod"}
- }
"Europe:Vatican"{
ec{"Vatikano Hiria"}
}
@@ -352,9 +343,6 @@ eu{
"Europe:Warsaw"{
ec{"Varsovia"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizhia"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -808,9 +796,6 @@ eu{
lg{"Macaoko ordua"}
ls{"Macaoko ordu estandarra"}
}
- "meta:Macquarie"{
- ls{"Macquarie uharteko ordua"}
- }
"meta:Magadan"{
ld{"Magadango udako ordua"}
lg{"Magadango ordua"}
@@ -836,11 +821,6 @@ eu{
"meta:Mawson"{
ls{"Mawsoneko ordua"}
}
- "meta:Mexico_Northwest"{
- ld{"Mexikoko ipar-ekialdeko udako ordua"}
- lg{"Mexikoko ipar-ekialdeko ordua"}
- ls{"Mexikoko ipar-ekialdeko ordu estandarra"}
- }
"meta:Mexico_Pacific"{
ld{"Mexikoko Pazifikoko udako ordua"}
lg{"Mexikoko Pazifikoko ordua"}
diff --git a/icu4c/source/data/zone/fa.txt b/icu4c/source/data/zone/fa.txt
index 94a0791c7..7e585a6e4 100644
--- a/icu4c/source/data/zone/fa.txt
+++ b/icu4c/source/data/zone/fa.txt
@@ -465,9 +465,6 @@ fa{
"America:New_York"{
ec{"نیویورک"}
}
- "America:Nipigon"{
- ec{"نیپیگان"}
- }
"America:Nome"{
ec{"نوم"}
}
@@ -489,9 +486,6 @@ fa{
"America:Panama"{
ec{"پاناما"}
}
- "America:Pangnirtung"{
- ec{"پانگنیرتونگ"}
- }
"America:Paramaribo"{
ec{"پاراماریبو"}
}
@@ -513,9 +507,6 @@ fa{
"America:Punta_Arenas"{
ec{"پونتا آرناس"}
}
- "America:Rainy_River"{
- ec{"رینی‌ریور"}
- }
"America:Rankin_Inlet"{
ec{"خلیجک رنکین"}
}
@@ -531,9 +522,6 @@ fa{
"America:Rio_Branco"{
ec{"ریوبرانکو"}
}
- "America:Santa_Isabel"{
- ec{"سانتا ایزابل"}
- }
"America:Santarem"{
ec{"سنتارم"}
}
@@ -579,9 +567,6 @@ fa{
"America:Thule"{
ec{"تول"}
}
- "America:Thunder_Bay"{
- ec{"تاندربی"}
- }
"America:Tijuana"{
ec{"تیخوانا"}
}
@@ -603,9 +588,6 @@ fa{
"America:Yakutat"{
ec{"یاکوتات"}
}
- "America:Yellowknife"{
- ec{"یلونایف"}
- }
"Antarctica:Casey"{
ec{"کیسی"}
}
@@ -930,9 +912,6 @@ fa{
"Australia:Broken_Hill"{
ec{"بروکن‌هیل"}
}
- "Australia:Currie"{
- ec{"کوری"}
- }
"Australia:Darwin"{
ec{"داروین"}
}
@@ -1115,9 +1094,6 @@ fa{
"Europe:Ulyanovsk"{
ec{"اولیانوفسک"}
}
- "Europe:Uzhgorod"{
- ec{"اوژگورود"}
- }
"Europe:Vaduz"{
ec{"فادوتس"}
}
@@ -1139,9 +1115,6 @@ fa{
"Europe:Zagreb"{
ec{"زاگرب"}
}
- "Europe:Zaporozhye"{
- ec{"زاپوروژیا"}
- }
"Europe:Zurich"{
ec{"زوریخ"}
}
@@ -1223,9 +1196,6 @@ fa{
"Pacific:Honolulu"{
ec{"هونولولو"}
}
- "Pacific:Johnston"{
- ec{"جانستون"}
- }
"Pacific:Kanton"{
ec{"کانتون"}
}
@@ -1666,9 +1636,6 @@ fa{
lg{"وقت ماکائو"}
ls{"وقت عادی ماکائو"}
}
- "meta:Macquarie"{
- ls{"وقت جزیرهٔ مکواری"}
- }
"meta:Magadan"{
ld{"وقت تابستانی ماگادان"}
lg{"وقت ماگادان"}
@@ -1694,11 +1661,6 @@ fa{
"meta:Mawson"{
ls{"وقت ماوسون"}
}
- "meta:Mexico_Northwest"{
- ld{"وقت تابستانی شمال غرب مکزیک"}
- lg{"وقت شمال غرب مکزیک"}
- ls{"وقت عادی شمال غرب مکزیک"}
- }
"meta:Mexico_Pacific"{
ld{"وقت تابستانی شرق مکزیک"}
lg{"وقت شرق مکزیک"}
diff --git a/icu4c/source/data/zone/ff_Adlm.txt b/icu4c/source/data/zone/ff_Adlm.txt
index ba5205414..f81a03910 100644
--- a/icu4c/source/data/zone/ff_Adlm.txt
+++ b/icu4c/source/data/zone/ff_Adlm.txt
@@ -463,9 +463,6 @@ ff_Adlm{
"America:New_York"{
ec{"𞤐𞤫𞤱-𞤒𞤮𞤪𞤳"}
}
- "America:Nipigon"{
- ec{"𞤐𞤭𞤨𞤭𞤺𞤮𞤲"}
- }
"America:Nome"{
ec{"𞤐𞤮𞤱𞤥𞤵"}
}
@@ -487,9 +484,6 @@ ff_Adlm{
"America:Panama"{
ec{"𞤆𞤢𞤲𞤢𞤲𞤥𞤢𞥄"}
}
- "America:Pangnirtung"{
- ec{"𞤆𞤢𞤲𞤺"}
- }
"America:Paramaribo"{
ec{"𞤆𞤢𞤪𞤢𞤥𞤢𞤪𞤭𞤦𞤮"}
}
@@ -511,9 +505,6 @@ ff_Adlm{
"America:Punta_Arenas"{
ec{"𞤆𞤵𞤲𞤼𞤢-𞤀𞤪𞤫𞤲𞤢𞥁"}
}
- "America:Rainy_River"{
- ec{"𞤈𞤫𞤲𞤭𞥅-𞤈𞤭𞤾𞤮𞥅"}
- }
"America:Rankin_Inlet"{
ec{"𞤈𞤢𞤲𞤳𞤭𞤲 𞤋𞤲𞤤𞤫𞤼"}
}
@@ -542,7 +533,7 @@ ff_Adlm{
ec{"𞤅𞤢𞥄𞤱-𞤆𞤮𞤤𞤮𞥅"}
}
"America:Scoresbysund"{
- ec{"‮𞤋𞤼𞥆𞤮𞤳𞤮𞤪𞤼𞤮𞥅𞤪𞤥𞤭𞥅𞤼"}
+ ec{"𞤋𞤼𞥆𞤮𞤳𞤮𞤪𞤼𞤮𞥅𞤪𞤥𞤭𞥅𞤼"}
}
"America:Sitka"{
ec{"𞤅𞤭𞤼𞤳𞤢"}
@@ -574,9 +565,6 @@ ff_Adlm{
"America:Thule"{
ec{"𞤚𞤵𞤤𞤫"}
}
- "America:Thunder_Bay"{
- ec{"𞤚𞤵𞤲𞤣𞤮𞥅 𞤄𞤫𞥅"}
- }
"America:Tijuana"{
ec{"𞤚𞤭𞤶𞤵𞤱𞤢𞥄𞤲𞤢"}
}
@@ -598,9 +586,6 @@ ff_Adlm{
"America:Yakutat"{
ec{"𞤒𞤢𞤳𞤵𞤼𞤢𞤼"}
}
- "America:Yellowknife"{
- ec{"𞤒𞤫𞤤𞤮𞥅𞤲𞤢𞤴𞤬"}
- }
"Antarctica:Casey"{
ec{"𞤑𞤢𞤴𞤧𞤫"}
}
@@ -925,9 +910,6 @@ ff_Adlm{
"Australia:Broken_Hill"{
ec{"𞤄𞤪𞤮𞤳𞤭𞤲-𞤖𞤭𞥅𞤤"}
}
- "Australia:Currie"{
- ec{"𞤑𞤵𞥅𞤪𞤭𞥅"}
- }
"Australia:Darwin"{
ec{"𞤁𞤢𞥄𞤪𞤱𞤭𞤲"}
}
@@ -1111,9 +1093,6 @@ ff_Adlm{
"Europe:Ulyanovsk"{
ec{"𞤓𞤤𞤴𞤢𞤲𞤮𞤾𞤮𞤧𞤳𞤵"}
}
- "Europe:Uzhgorod"{
- ec{"𞤓𞥅𞤶𞤢𞤪𞤵𞥅𞤣𞤵"}
- }
"Europe:Vaduz"{
ec{"𞤜𞤢𞤣𞤵𞥅𞤶𞤵"}
}
@@ -1135,9 +1114,6 @@ ff_Adlm{
"Europe:Zagreb"{
ec{"𞤟𞤢𞤺𞤪𞤫𞤦𞤵"}
}
- "Europe:Zaporozhye"{
- ec{"𞤟𞤢𞤨𞤮𞤪𞤵𞥅𞥁"}
- }
"Europe:Zurich"{
ec{"𞤟𞤵𞤪𞤵𞤳"}
}
@@ -1221,9 +1197,6 @@ ff_Adlm{
sg{"𞤑𞤖𞤖"}
ss{"𞤑𞤖𞤖"}
}
- "Pacific:Johnston"{
- ec{"𞤔𞤮𞤲𞤧𞤼𞤮𞤲"}
- }
"Pacific:Kanton"{
ec{"𞤑𞤢𞤲𞤼𞤮𞤲"}
}
@@ -1740,9 +1713,6 @@ ff_Adlm{
lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤢𞤳𞤢𞤱𞤮𞥅"}
ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤃𞤢𞤳𞤢𞤱𞤮𞥅"}
}
- "meta:Macquarie"{
- ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤃𞤢𞤳𞤢𞥄𞤪𞤭"}
- }
"meta:Magadan"{
ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤃𞤢𞤺𞤢𞤣𞤢𞤲"}
lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤢𞤺𞤢𞤣𞤢𞤲"}
@@ -1768,17 +1738,6 @@ ff_Adlm{
"meta:Mawson"{
ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤢𞤱𞤧𞤮𞤲"}
}
- "meta:Mexico_Northwest"{
- ld{
- "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤐𞤢𞤲𞤮-𞤸𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 "
- "𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"
- }
- lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤢𞤲𞤮-𞤸𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
- ls{
- "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤐𞤢𞤲𞤮-𞤸𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 "
- "𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"
- }
- }
"meta:Mexico_Pacific"{
ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤁𞤫𞤰𞥆𞤮 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤁𞤫𞤰𞥆𞤮 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
diff --git a/icu4c/source/data/zone/fi.txt b/icu4c/source/data/zone/fi.txt
index 57b1bfb00..27abda27b 100644
--- a/icu4c/source/data/zone/fi.txt
+++ b/icu4c/source/data/zone/fi.txt
@@ -78,9 +78,6 @@ fi{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Pohjois-Dakota"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -234,9 +231,6 @@ fi{
"Atlantic:St_Helena"{
ec{"Saint Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"UTC-yleisaika"}
}
@@ -320,9 +314,6 @@ fi{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vatican"{
ec{"Vatikaani"}
}
@@ -335,9 +326,6 @@ fi{
"Europe:Warsaw"{
ec{"Varsova"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporižžja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -775,9 +763,6 @@ fi{
lg{"Macaon aika"}
ls{"Macaon normaaliaika"}
}
- "meta:Macquarie"{
- ls{"Macquariensaaren aika"}
- }
"meta:Magadan"{
ld{"Magadanin kesäaika"}
lg{"Magadanin aika"}
@@ -803,11 +788,6 @@ fi{
"meta:Mawson"{
ls{"Mawsonin aika"}
}
- "meta:Mexico_Northwest"{
- ld{"Luoteis-Meksikon kesäaika"}
- lg{"Luoteis-Meksikon aika"}
- ls{"Luoteis-Meksikon normaaliaika"}
- }
"meta:Mexico_Pacific"{
ld{"Meksikon Tyynenmeren kesäaika"}
lg{"Meksikon Tyynenmeren aika"}
diff --git a/icu4c/source/data/zone/fil.txt b/icu4c/source/data/zone/fil.txt
index 4ebfba0a7..9df0b2f7e 100644
--- a/icu4c/source/data/zone/fil.txt
+++ b/icu4c/source/data/zone/fil.txt
@@ -27,9 +27,6 @@ fil{
"America:Rankin_Inlet"{
ec{"Makipot na Look ng Rankin"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"St. Barthélemy"}
}
@@ -45,9 +42,6 @@ fil{
"Asia:Saigon"{
ec{"Lungsod ng Ho Chi Minh"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Coordinated Universal Time"}
}
@@ -424,9 +418,6 @@ fil{
lg{"Oras sa Lord Howe"}
ls{"Standard na Oras sa Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Oras sa Macquarie Island"}
- }
"meta:Magadan"{
ld{"Oras sa Tag-init ng Magadan"}
lg{"Oras sa Magadan"}
@@ -452,11 +443,6 @@ fil{
"meta:Mawson"{
ls{"Oras sa Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Daylight na Oras sa Hilagang-kanlurang Mexico"}
- lg{"Oras sa Hilagang-kanlurang Mexico"}
- ls{"Standard na Oras sa Hilagang-kanlurang Mexico"}
- }
"meta:Mexico_Pacific"{
ld{"Daylight na Oras sa Pasipiko ng Mexico"}
lg{"Oras sa Pasipiko ng Mexico"}
diff --git a/icu4c/source/data/zone/fo.txt b/icu4c/source/data/zone/fo.txt
index e8d461597..b774e42ca 100644
--- a/icu4c/source/data/zone/fo.txt
+++ b/icu4c/source/data/zone/fo.txt
@@ -36,9 +36,6 @@ fo{
"America:Puerto_Rico"{
ec{"Puerto Riko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"Asia:Bahrain"{
ec{"Barein"}
}
@@ -78,9 +75,6 @@ fo{
"Atlantic:South_Georgia"{
ec{"Suðurgeorgiaoyggjar"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Samskipað heimstíð"}
}
@@ -132,9 +126,6 @@ fo{
"Europe:Stockholm"{
ec{"Stokkhólm"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhhorod"}
- }
"Europe:Vatican"{
ec{"Vatikanið"}
}
@@ -504,9 +495,6 @@ fo{
lg{"Lord Howe tíð"}
ls{"Lord Howe vanlig tíð"}
}
- "meta:Macquarie"{
- ls{"Macquariesoyggj tíð"}
- }
"meta:Magadan"{
ld{"Magadan summartíð"}
lg{"Magadan tíð"}
@@ -532,11 +520,6 @@ fo{
"meta:Mawson"{
ls{"Mawson tíð"}
}
- "meta:Mexico_Northwest"{
- ld{"Northwest Mexico summartíð"}
- lg{"Northwest Mexico tíð"}
- ls{"Northwest Mexico vanlig tíð"}
- }
"meta:Mexico_Pacific"{
ld{"Mexican Pacific summartíð"}
lg{"Mexican Pacific tíð"}
diff --git a/icu4c/source/data/zone/fr.txt b/icu4c/source/data/zone/fr.txt
index a7d993720..6f678fdfd 100644
--- a/icu4c/source/data/zone/fr.txt
+++ b/icu4c/source/data/zone/fr.txt
@@ -135,9 +135,6 @@ fr{
"America:Puerto_Rico"{
ec{"Porto Rico"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -345,9 +342,6 @@ fr{
"Australia:Adelaide"{
ec{"Adélaïde"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"temps universel coordonné"}
}
@@ -406,9 +400,6 @@ fr{
"Europe:Ulyanovsk"{
ec{"Oulianovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Oujgorod"}
- }
"Europe:Vatican"{
ec{"Le Vatican"}
}
@@ -418,9 +409,6 @@ fr{
"Europe:Warsaw"{
ec{"Varsovie"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporojie"}
- }
"Indian:Comoro"{
ec{"Comores"}
}
@@ -838,9 +826,6 @@ fr{
lg{"heure de Lord Howe"}
ls{"heure normale de Lord Howe"}
}
- "meta:Macquarie"{
- ls{"heure de l’île Macquarie"}
- }
"meta:Magadan"{
ld{"heure d’été de Magadan"}
lg{"heure de Magadan"}
@@ -866,11 +851,6 @@ fr{
"meta:Mawson"{
ls{"heure de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"heure d’été du Nord-Ouest du Mexique"}
- lg{"heure du Nord-Ouest du Mexique"}
- ls{"heure normale du Nord-Ouest du Mexique"}
- }
"meta:Mexico_Pacific"{
ld{"heure d’été du Pacifique mexicain"}
lg{"heure du Pacifique mexicain"}
diff --git a/icu4c/source/data/zone/fr_CA.txt b/icu4c/source/data/zone/fr_CA.txt
index 39b82c2de..8051d9aca 100644
--- a/icu4c/source/data/zone/fr_CA.txt
+++ b/icu4c/source/data/zone/fr_CA.txt
@@ -368,11 +368,6 @@ fr_CA{
lg{"heure de Maurice"}
ls{"heure normale de Maurice"}
}
- "meta:Mexico_Northwest"{
- ld{"heure avancée du Nord-Ouest du Mexique"}
- lg{"heure du Nord-Ouest du Mexique"}
- ls{"heure normale du Nord-Ouest du Mexique"}
- }
"meta:Mexico_Pacific"{
ld{"heure avancée du Pacifique mexicain"}
lg{"heure du Pacifique mexicain"}
diff --git a/icu4c/source/data/zone/fy.txt b/icu4c/source/data/zone/fy.txt
index 8b092c4bd..0960bb09c 100644
--- a/icu4c/source/data/zone/fy.txt
+++ b/icu4c/source/data/zone/fy.txt
@@ -229,9 +229,6 @@ fy{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Oezjhorod"}
- }
"Europe:Vatican"{
ec{"Fatikaanstêd"}
}
@@ -244,9 +241,6 @@ fy{
"Europe:Warsaw"{
ec{"Warschau"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -670,9 +664,6 @@ fy{
lg{"Macause tiid"}
ls{"Macause standerttiid"}
}
- "meta:Macquarie"{
- ls{"Macquarie-eilânske tiid"}
- }
"meta:Magadan"{
ld{"Magadan-simmertiid"}
lg{"Magadan-tiid"}
diff --git a/icu4c/source/data/zone/ga.txt b/icu4c/source/data/zone/ga.txt
index 2090e0c59..403ea692f 100644
--- a/icu4c/source/data/zone/ga.txt
+++ b/icu4c/source/data/zone/ga.txt
@@ -117,9 +117,6 @@ ga{
"America:Puerto_Rico"{
ec{"Pórtó Ríce"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Sao_Paulo"{
ec{"São Paulo"}
}
@@ -249,9 +246,6 @@ ga{
"Atlantic:St_Helena"{
ec{"San Héilin"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Am Uilíoch Lárnach"}
}
@@ -853,9 +847,6 @@ ga{
lg{"Am Mhacao"}
ls{"Am Caighdeánach Mhacao"}
}
- "meta:Macquarie"{
- ls{"Am Oileán Mhic Guaire"}
- }
"meta:Magadan"{
ld{"Am Samhraidh Mhagadan"}
lg{"Am Mhagadan"}
@@ -881,11 +872,6 @@ ga{
"meta:Mawson"{
ls{"Am Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Am Samhraidh Iarthuaisceart Mheicsiceo"}
- lg{"Am Iarthuaisceart Mheicsiceo"}
- ls{"Am Caighdeánach Iarthuaisceart Mheicsiceo"}
- }
"meta:Mexico_Pacific"{
ld{"Am Samhraidh Meicsiceach an Aigéin Chiúin"}
lg{"Am Meicsiceach an Aigéin Chiúin"}
diff --git a/icu4c/source/data/zone/gd.txt b/icu4c/source/data/zone/gd.txt
index 9a7d55e6d..67cdded40 100644
--- a/icu4c/source/data/zone/gd.txt
+++ b/icu4c/source/data/zone/gd.txt
@@ -126,9 +126,6 @@ gd{
"America:New_York"{
ec{"Nuadh Eabhrac"}
}
- "America:Pangnirtung"{
- ec{"Pangniqtuuq"}
- }
"America:Port_of_Spain"{
ec{"Port na Spàinne"}
}
@@ -141,9 +138,6 @@ gd{
"America:Resolute"{
ec{"Qausuittuq"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -273,9 +267,6 @@ gd{
"Atlantic:St_Helena"{
ec{"Eilean Naomh Eilidh"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Australia:Sydney"{
ec{"Sidni"}
}
@@ -823,9 +814,6 @@ gd{
lg{"Àm Macàthu"}
ls{"Bun-àm Macàthu"}
}
- "meta:Macquarie"{
- ls{"Àm Eilein MhicGuaire"}
- }
"meta:Magadan"{
ld{"Tìde Samhraidh Magadan"}
lg{"Àm Magadan"}
@@ -851,11 +839,6 @@ gd{
"meta:Mawson"{
ls{"Àm Mhawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Tìde samhraidh Mheagsago an Iar-thuath"}
- lg{"Àm Mheagsago an Iar-thuath"}
- ls{"Bun-àm Mheagsago an Iar-thuath"}
- }
"meta:Mexico_Pacific"{
ld{"Tìde samhraidh a’ Chuain Sèimh Mheagsago"}
lg{"Àm a’ Chuain Sèimh Mheagsago"}
diff --git a/icu4c/source/data/zone/gl.txt b/icu4c/source/data/zone/gl.txt
index b52718b27..629e3ccd1 100644
--- a/icu4c/source/data/zone/gl.txt
+++ b/icu4c/source/data/zone/gl.txt
@@ -162,9 +162,6 @@ gl{
"America:Rio_Branco"{
ec{"Río Branco"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -318,9 +315,6 @@ gl{
"Australia:Adelaide"{
ec{"Adelaida"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Australia:Sydney"{
ec{"Sidney"}
}
@@ -419,9 +413,6 @@ gl{
"Europe:Ulyanovsk"{
ec{"Ulianovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Uzghorod"}
- }
"Europe:Vatican"{
ec{"Vaticano"}
}
@@ -434,9 +425,6 @@ gl{
"Europe:Warsaw"{
ec{"Varsovia"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizhia"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -838,9 +826,6 @@ gl{
lg{"hora de Lord Howe"}
ls{"hora estándar de Lord Howe"}
}
- "meta:Macquarie"{
- ls{"hora da Illa Macquarie"}
- }
"meta:Magadan"{
ld{"hora de verán de Magadan"}
lg{"hora de Magadan"}
@@ -866,11 +851,6 @@ gl{
"meta:Mawson"{
ls{"hora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"hora de verán do noroeste de México"}
- lg{"hora do noroeste de México"}
- ls{"hora estándar do noroeste de México"}
- }
"meta:Mexico_Pacific"{
ld{"hora de verán do Pacífico mexicano"}
lg{"hora do Pacífico mexicano"}
diff --git a/icu4c/source/data/zone/gsw.txt b/icu4c/source/data/zone/gsw.txt
index bbf6b14af..a47cd69bd 100644
--- a/icu4c/source/data/zone/gsw.txt
+++ b/icu4c/source/data/zone/gsw.txt
@@ -201,9 +201,6 @@ gsw{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Uschgorod"}
- }
"Europe:Vienna"{
ec{"Wien"}
}
@@ -213,9 +210,6 @@ gsw{
"Europe:Warsaw"{
ec{"Warschau"}
}
- "Europe:Zaporozhye"{
- ec{"Saporischja"}
- }
"Europe:Zurich"{
ec{"Züri"}
}
diff --git a/icu4c/source/data/zone/gu.txt b/icu4c/source/data/zone/gu.txt
index 9a179eb98..38b98ab60 100644
--- a/icu4c/source/data/zone/gu.txt
+++ b/icu4c/source/data/zone/gu.txt
@@ -465,9 +465,6 @@ gu{
"America:New_York"{
ec{"ન્યૂયોર્ક"}
}
- "America:Nipigon"{
- ec{"નિપિગોન"}
- }
"America:Nome"{
ec{"નોમ"}
}
@@ -489,9 +486,6 @@ gu{
"America:Panama"{
ec{"પનામા"}
}
- "America:Pangnirtung"{
- ec{"પેંગનિરતુંગ"}
- }
"America:Paramaribo"{
ec{"પેરામેરિબો"}
}
@@ -513,9 +507,6 @@ gu{
"America:Punta_Arenas"{
ec{"પુન્ટા એરીનાઝ"}
}
- "America:Rainy_River"{
- ec{"રેઇની નદી"}
- }
"America:Rankin_Inlet"{
ec{"રેંકિન ઇન્લેટ"}
}
@@ -531,9 +522,6 @@ gu{
"America:Rio_Branco"{
ec{"રિયો બ્રાંકો"}
}
- "America:Santa_Isabel"{
- ec{"સાંતા ઇસાબેલ"}
- }
"America:Santarem"{
ec{"સેન્તારેમ"}
}
@@ -579,9 +567,6 @@ gu{
"America:Thule"{
ec{"થુલે"}
}
- "America:Thunder_Bay"{
- ec{"થંડર બે"}
- }
"America:Tijuana"{
ec{"તિજુઆના"}
}
@@ -603,9 +588,6 @@ gu{
"America:Yakutat"{
ec{"યકુતત"}
}
- "America:Yellowknife"{
- ec{"યેલોનાઇફ"}
- }
"Antarctica:Casey"{
ec{"કૅસી"}
}
@@ -930,9 +912,6 @@ gu{
"Australia:Broken_Hill"{
ec{"બ્રોકન હિલ"}
}
- "Australia:Currie"{
- ec{"ક્યુરી"}
- }
"Australia:Darwin"{
ec{"ડાર્વિન"}
}
@@ -1115,9 +1094,6 @@ gu{
"Europe:Ulyanovsk"{
ec{"ઉલેનોવ્સ્ક"}
}
- "Europe:Uzhgorod"{
- ec{"ઉઝ્ગોરોદ"}
- }
"Europe:Vaduz"{
ec{"વૅદુઝ"}
}
@@ -1139,9 +1115,6 @@ gu{
"Europe:Zagreb"{
ec{"ઝેગરેબ"}
}
- "Europe:Zaporozhye"{
- ec{"જેપોરોઝિયે"}
- }
"Europe:Zurich"{
ec{"ઝુરીક"}
}
@@ -1223,9 +1196,6 @@ gu{
"Pacific:Honolulu"{
ec{"હોનોલુલુ"}
}
- "Pacific:Johnston"{
- ec{"જોહ્નસ્ટોન"}
- }
"Pacific:Kanton"{
ec{"કેન્ટન"}
}
@@ -1682,9 +1652,6 @@ gu{
lg{"મકાઉ સમય"}
ls{"મકાઉ પ્રમાણભૂત સમય"}
}
- "meta:Macquarie"{
- ls{"મેક્વાયર આઇલેન્ડ સમય"}
- }
"meta:Magadan"{
ld{"મગાડન ગ્રીષ્મ સમય"}
lg{"મગાડન સમય"}
@@ -1710,11 +1677,6 @@ gu{
"meta:Mawson"{
ls{"મોસન સમય"}
}
- "meta:Mexico_Northwest"{
- ld{"ઉત્તરપશ્ચિમ મેક્સિકો દિવસ સમય"}
- lg{"ઉત્તરપશ્ચિમ મેક્સિકો સમય"}
- ls{"ઉત્તરપશ્ચિમ મેક્સિકો માનક સમય"}
- }
"meta:Mexico_Pacific"{
ld{"મેક્સિકન પેસિફિક દિવસ સમય"}
lg{"મેક્સિકન પેસિફિક સમય"}
diff --git a/icu4c/source/data/zone/ha.txt b/icu4c/source/data/zone/ha.txt
index 5f2589a9c..b4cec81e2 100644
--- a/icu4c/source/data/zone/ha.txt
+++ b/icu4c/source/data/zone/ha.txt
@@ -366,9 +366,6 @@ ha{
lg{"Lokacin Lord Howe"}
ls{"Tsayayyen Lokacin Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Lokacin Macquarie Island"}
- }
"meta:Magadan"{
ld{"Lokacin Bazara na Magadan"}
lg{"Lokacin Magadan"}
@@ -394,11 +391,6 @@ ha{
"meta:Mawson"{
ls{"Lokacin Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Lokacin Rana na Arewa Maso Yammacin Mekziko"}
- lg{"Lokacin Arewa Maso Yammacin Mekziko"}
- ls{"Tsayayyen Lokacin Arewa Maso Yammacin Mekziko"}
- }
"meta:Mexico_Pacific"{
ld{"Lokacin Rana na Mekziko Pacific"}
lg{"Lokacin Mekziko Pacific"}
diff --git a/icu4c/source/data/zone/he.txt b/icu4c/source/data/zone/he.txt
index 1cf81989f..d953b1aa3 100644
--- a/icu4c/source/data/zone/he.txt
+++ b/icu4c/source/data/zone/he.txt
@@ -465,9 +465,6 @@ he{
"America:New_York"{
ec{"ניו יורק"}
}
- "America:Nipigon"{
- ec{"ניפיגון"}
- }
"America:Nome"{
ec{"נום"}
}
@@ -489,9 +486,6 @@ he{
"America:Panama"{
ec{"פנמה"}
}
- "America:Pangnirtung"{
- ec{"פנגנירטונג"}
- }
"America:Paramaribo"{
ec{"פרמריבו"}
}
@@ -513,9 +507,6 @@ he{
"America:Punta_Arenas"{
ec{"פונטה ארנס"}
}
- "America:Rainy_River"{
- ec{"רייני ריבר"}
- }
"America:Rankin_Inlet"{
ec{"רנקין אינלט"}
}
@@ -531,9 +522,6 @@ he{
"America:Rio_Branco"{
ec{"ריו ברנקו"}
}
- "America:Santa_Isabel"{
- ec{"סנטה איזבל"}
- }
"America:Santarem"{
ec{"סנטרם"}
}
@@ -579,9 +567,6 @@ he{
"America:Thule"{
ec{"תולה"}
}
- "America:Thunder_Bay"{
- ec{"ת׳אנדר ביי"}
- }
"America:Tijuana"{
ec{"טיחואנה"}
}
@@ -603,9 +588,6 @@ he{
"America:Yakutat"{
ec{"יקוטאט"}
}
- "America:Yellowknife"{
- ec{"ילונייף"}
- }
"Antarctica:Casey"{
ec{"קייסי"}
}
@@ -930,9 +912,6 @@ he{
"Australia:Broken_Hill"{
ec{"ברוקן היל"}
}
- "Australia:Currie"{
- ec{"קרי"}
- }
"Australia:Darwin"{
ec{"דרווין"}
}
@@ -1115,9 +1094,6 @@ he{
"Europe:Ulyanovsk"{
ec{"אוליאנובסק"}
}
- "Europe:Uzhgorod"{
- ec{"אוז׳הורוד"}
- }
"Europe:Vaduz"{
ec{"ואדוץ"}
}
@@ -1139,9 +1115,6 @@ he{
"Europe:Zagreb"{
ec{"זאגרב"}
}
- "Europe:Zaporozhye"{
- ec{"זפורוז׳יה"}
- }
"Europe:Zurich"{
ec{"ציריך"}
}
@@ -1223,9 +1196,6 @@ he{
"Pacific:Honolulu"{
ec{"הונולולו"}
}
- "Pacific:Johnston"{
- ec{"ג׳ונסטון"}
- }
"Pacific:Kanton"{
ec{"קנטון"}
}
@@ -1673,9 +1643,6 @@ he{
lg{"שעון מקאו"}
ls{"שעון חורף מקאו"}
}
- "meta:Macquarie"{
- ls{"שעון מקווארי"}
- }
"meta:Magadan"{
ld{"שעון מגדן (קיץ)"}
lg{"שעון מגדן"}
@@ -1701,11 +1668,6 @@ he{
"meta:Mawson"{
ls{"שעון מאוסון"}
}
- "meta:Mexico_Northwest"{
- ld{"שעון צפון-מערב מקסיקו (קיץ)"}
- lg{"שעון צפון-מערב מקסיקו"}
- ls{"שעון צפון-מערב מקסיקו (חורף)"}
- }
"meta:Mexico_Pacific"{
ld{"שעון מערב מקסיקו (קיץ)"}
lg{"שעון מערב מקסיקו"}
diff --git a/icu4c/source/data/zone/hi.txt b/icu4c/source/data/zone/hi.txt
index 55422a105..2d9504586 100644
--- a/icu4c/source/data/zone/hi.txt
+++ b/icu4c/source/data/zone/hi.txt
@@ -465,9 +465,6 @@ hi{
"America:New_York"{
ec{"न्यूयॉर्क"}
}
- "America:Nipigon"{
- ec{"निपिगन"}
- }
"America:Nome"{
ec{"नोम"}
}
@@ -489,9 +486,6 @@ hi{
"America:Panama"{
ec{"पनामा"}
}
- "America:Pangnirtung"{
- ec{"पांगनिर्टंग"}
- }
"America:Paramaribo"{
ec{"पारामारिबो"}
}
@@ -513,9 +507,6 @@ hi{
"America:Punta_Arenas"{
ec{"पुंटा एरिनास"}
}
- "America:Rainy_River"{
- ec{"रेनी नदी"}
- }
"America:Rankin_Inlet"{
ec{"रेंकिन इनलेट"}
}
@@ -531,9 +522,6 @@ hi{
"America:Rio_Branco"{
ec{"रियो ब्रांको"}
}
- "America:Santa_Isabel"{
- ec{"सांता इसाबेल"}
- }
"America:Santarem"{
ec{"सैंटारेम"}
}
@@ -579,9 +567,6 @@ hi{
"America:Thule"{
ec{"थ्यूले"}
}
- "America:Thunder_Bay"{
- ec{"थंडर खाड़ी"}
- }
"America:Tijuana"{
ec{"तिजुआना"}
}
@@ -603,9 +588,6 @@ hi{
"America:Yakutat"{
ec{"याकूटाट"}
}
- "America:Yellowknife"{
- ec{"येलोनाइफ़"}
- }
"Antarctica:Casey"{
ec{"केसी"}
}
@@ -930,9 +912,6 @@ hi{
"Australia:Broken_Hill"{
ec{"ब्रोकन हिल"}
}
- "Australia:Currie"{
- ec{"क्यूरी"}
- }
"Australia:Darwin"{
ec{"डार्विन"}
}
@@ -1115,9 +1094,6 @@ hi{
"Europe:Ulyanovsk"{
ec{"उल्यानोव्स्क"}
}
- "Europe:Uzhgorod"{
- ec{"अज़्गोरोद"}
- }
"Europe:Vaduz"{
ec{"वादुज़"}
}
@@ -1139,9 +1115,6 @@ hi{
"Europe:Zagreb"{
ec{"ज़ाग्रेब"}
}
- "Europe:Zaporozhye"{
- ec{"ज़ैपोरोज़ाई"}
- }
"Europe:Zurich"{
ec{"ज़्यूरिख़"}
}
@@ -1226,9 +1199,6 @@ hi{
sg{"एचएसटी"}
ss{"एचएसटी"}
}
- "Pacific:Johnston"{
- ec{"जॉनस्टन"}
- }
"Pacific:Kanton"{
ec{"कैंटन"}
}
@@ -1654,9 +1624,6 @@ hi{
lg{"लॉर्ड होवे समय"}
ls{"लॉर्ड होवे मानक समय"}
}
- "meta:Macquarie"{
- ls{"मक्वारी द्वीप समय"}
- }
"meta:Magadan"{
ld{"मागादान ग्रीष्मकालीन समय"}
lg{"मागादान समय"}
@@ -1682,11 +1649,6 @@ hi{
"meta:Mawson"{
ls{"माव्सन समय"}
}
- "meta:Mexico_Northwest"{
- ld{"उत्तर पश्चिमी मेक्सिको डेलाइट समय"}
- lg{"उत्तर पश्चिमी मेक्सिको समय"}
- ls{"उत्तर पश्चिमी मेक्सिको मानक समय"}
- }
"meta:Mexico_Pacific"{
ld{"मेक्सिकन प्रशांत डेलाइट समय"}
lg{"मेक्सिकन प्रशांत समय"}
diff --git a/icu4c/source/data/zone/hi_Latn.txt b/icu4c/source/data/zone/hi_Latn.txt
index 168886c58..c91762a6e 100644
--- a/icu4c/source/data/zone/hi_Latn.txt
+++ b/icu4c/source/data/zone/hi_Latn.txt
@@ -58,9 +58,6 @@ hi_Latn{
"Atlantic:Faeroe"{
ec{"Faeroe"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhgorod"}
- }
"Indian:Reunion"{
ec{"Reunion"}
}
diff --git a/icu4c/source/data/zone/hr.txt b/icu4c/source/data/zone/hr.txt
index 56b98b52e..89dca4a11 100644
--- a/icu4c/source/data/zone/hr.txt
+++ b/icu4c/source/data/zone/hr.txt
@@ -75,9 +75,6 @@ hr{
"America:Puerto_Rico"{
ec{"Portoriko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"Saint Barthélemy"}
}
@@ -207,9 +204,6 @@ hr{
"Atlantic:South_Georgia"{
ec{"Južna Georgija"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"koordinirano svjetsko vrijeme"}
}
@@ -294,9 +288,6 @@ hr{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -306,9 +297,6 @@ hr{
"Europe:Warsaw"{
ec{"Varšava"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporožje"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -729,9 +717,6 @@ hr{
lg{"makaosko vrijeme"}
ls{"standardno makaosko vrijeme"}
}
- "meta:Macquarie"{
- ls{"vrijeme otoka Macquarie"}
- }
"meta:Magadan"{
ld{"magadansko ljetno vrijeme"}
lg{"magadansko vrijeme"}
@@ -757,11 +742,6 @@ hr{
"meta:Mawson"{
ls{"mawsonsko vrijeme"}
}
- "meta:Mexico_Northwest"{
- ld{"sjeverozapadno meksičko ljetno vrijeme"}
- lg{"sjeverozapadno meksičko vrijeme"}
- ls{"sjeverozapadno meksičko standardno vrijeme"}
- }
"meta:Mexico_Pacific"{
ld{"meksičko pacifičko ljetno vrijeme"}
lg{"meksičko pacifičko vrijeme"}
diff --git a/icu4c/source/data/zone/hsb.txt b/icu4c/source/data/zone/hsb.txt
index fa08655f0..3c4d761dd 100644
--- a/icu4c/source/data/zone/hsb.txt
+++ b/icu4c/source/data/zone/hsb.txt
@@ -255,9 +255,6 @@ hsb{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -270,9 +267,6 @@ hsb{
"Europe:Warsaw"{
ec{"Waršawa"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporižžja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -645,9 +639,6 @@ hsb{
lg{"čas kupy Lord-Howe"}
ls{"standardny čas kupy Lord-Howe"}
}
- "meta:Macquarie"{
- ls{"čas kupy Macquarie"}
- }
"meta:Magadan"{
ld{"Magadanski lětni čas"}
lg{"Magadanski čas"}
@@ -673,11 +664,6 @@ hsb{
"meta:Mawson"{
ls{"Mawsonski čas"}
}
- "meta:Mexico_Northwest"{
- ld{"mexiski sewjerozapadny lětni čas"}
- lg{"mexiski sewjerozapadny čas"}
- ls{"mexiski sewjerozapadny standardny čas"}
- }
"meta:Mexico_Pacific"{
ld{"mexiski pacifiski lětni čas"}
lg{"mexiski pacifiski čas"}
diff --git a/icu4c/source/data/zone/hu.txt b/icu4c/source/data/zone/hu.txt
index 0cc1ae4ee..c6b686c27 100644
--- a/icu4c/source/data/zone/hu.txt
+++ b/icu4c/source/data/zone/hu.txt
@@ -102,9 +102,6 @@ hu{
"America:Rio_Branco"{
ec{"Río Branco"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Sao_Paulo"{
ec{"São Paulo"}
}
@@ -327,9 +324,6 @@ hu{
"Atlantic:St_Helena"{
ec{"Szent Ilona"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"koordinált világidő"}
}
@@ -435,9 +429,6 @@ hu{
"Europe:Ulyanovsk"{
ec{"Uljanovszk"}
}
- "Europe:Uzhgorod"{
- ec{"Ungvár"}
- }
"Europe:Vatican"{
ec{"Vatikán"}
}
@@ -453,9 +444,6 @@ hu{
"Europe:Zagreb"{
ec{"Zágráb"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizzsja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -921,9 +909,6 @@ hu{
lg{"Macaui idő"}
ls{"Macaui zónaidő"}
}
- "meta:Macquarie"{
- ls{"macquarie-szigeti téli idő"}
- }
"meta:Magadan"{
ld{"magadáni nyári idő"}
lg{"magadáni idő"}
@@ -949,11 +934,6 @@ hu{
"meta:Mawson"{
ls{"mawsoni idő"}
}
- "meta:Mexico_Northwest"{
- ld{"északnyugat-mexikói nyári idő"}
- lg{"északnyugat-mexikói idő"}
- ls{"északnyugat-mexikói zónaidő"}
- }
"meta:Mexico_Pacific"{
ld{"mexikói csendes-óceáni nyári idő"}
lg{"mexikói csendes-óceáni idő"}
diff --git a/icu4c/source/data/zone/hy.txt b/icu4c/source/data/zone/hy.txt
index e37c5bcf8..b661ec095 100644
--- a/icu4c/source/data/zone/hy.txt
+++ b/icu4c/source/data/zone/hy.txt
@@ -465,9 +465,6 @@ hy{
"America:New_York"{
ec{"Նյու Յորք"}
}
- "America:Nipigon"{
- ec{"Նիպիգոն"}
- }
"America:Nome"{
ec{"Նոմ"}
}
@@ -489,9 +486,6 @@ hy{
"America:Panama"{
ec{"Պանամա"}
}
- "America:Pangnirtung"{
- ec{"Պանգնիրտանգ"}
- }
"America:Paramaribo"{
ec{"Պարամարիբո"}
}
@@ -513,9 +507,6 @@ hy{
"America:Punta_Arenas"{
ec{"Պունտա Արենաս"}
}
- "America:Rainy_River"{
- ec{"Ռեյնի Ռիվեր"}
- }
"America:Rankin_Inlet"{
ec{"Ռանկին Ինլեթ"}
}
@@ -531,9 +522,6 @@ hy{
"America:Rio_Branco"{
ec{"Ռիու Բրանկու"}
}
- "America:Santa_Isabel"{
- ec{"Սանտա Իզաբել"}
- }
"America:Santarem"{
ec{"Սանտարեմ"}
}
@@ -579,9 +567,6 @@ hy{
"America:Thule"{
ec{"Տուլե"}
}
- "America:Thunder_Bay"{
- ec{"Թանդեր Բեյ"}
- }
"America:Tijuana"{
ec{"Տիխուանա"}
}
@@ -603,9 +588,6 @@ hy{
"America:Yakutat"{
ec{"Յակուտատ"}
}
- "America:Yellowknife"{
- ec{"Յելոունայֆ"}
- }
"Antarctica:Casey"{
ec{"Քեյսի"}
}
@@ -930,9 +912,6 @@ hy{
"Australia:Broken_Hill"{
ec{"Բրոքեն Հիլ"}
}
- "Australia:Currie"{
- ec{"Քերի"}
- }
"Australia:Darwin"{
ec{"Դարվին"}
}
@@ -1115,9 +1094,6 @@ hy{
"Europe:Ulyanovsk"{
ec{"Ուլյանովսկ"}
}
- "Europe:Uzhgorod"{
- ec{"Ուժգորոդ"}
- }
"Europe:Vaduz"{
ec{"Վադուց"}
}
@@ -1139,9 +1115,6 @@ hy{
"Europe:Zagreb"{
ec{"Զագրեբ"}
}
- "Europe:Zaporozhye"{
- ec{"Զապոռոժյե"}
- }
"Europe:Zurich"{
ec{"Ցյուրիխ"}
}
@@ -1223,9 +1196,6 @@ hy{
"Pacific:Honolulu"{
ec{"Հոնոլուլու"}
}
- "Pacific:Johnston"{
- ec{"Ջոնսթոն"}
- }
"Pacific:Kanton"{
ec{"Կանտոն"}
}
@@ -1640,9 +1610,6 @@ hy{
lg{"Լորդ Հաուի ժամանակ"}
ls{"Լորդ Հաուի ստանդարտ ժամանակ"}
}
- "meta:Macquarie"{
- ls{"Մակկուորի կղզու ժամանակ"}
- }
"meta:Magadan"{
ld{"Մագադանի ամառային ժամանակ"}
lg{"Մագադանի ժամանակ"}
@@ -1668,11 +1635,6 @@ hy{
"meta:Mawson"{
ls{"Մոուսոնի ժամանակ"}
}
- "meta:Mexico_Northwest"{
- ld{"Հյուսիսարևմտյան Մեքսիկայի ամառային ժամանակ"}
- lg{"Հյուսիսարևմտյան Մեքսիկայի ժամանակ"}
- ls{"Հյուսիսարևմտյան Մեքսիկայի ստանդարտ ժամանակ"}
- }
"meta:Mexico_Pacific"{
ld{"Մեքսիկայի խաղաղօվկիանոսյան ամառային ժամանակ"}
lg{"Մեքսիկայի խաղաղօվկիանոսյան ժամանակ"}
diff --git a/icu4c/source/data/zone/ia.txt b/icu4c/source/data/zone/ia.txt
index 95fc22f1a..bec1959c7 100644
--- a/icu4c/source/data/zone/ia.txt
+++ b/icu4c/source/data/zone/ia.txt
@@ -516,9 +516,6 @@ ia{
lg{"hora de Lord Howe"}
ls{"hora standard de Lord Howe"}
}
- "meta:Macquarie"{
- ls{"hora del Insula Macquarie"}
- }
"meta:Magadan"{
ld{"hora estive de Magadan"}
lg{"hora de Magadan"}
@@ -544,11 +541,6 @@ ia{
"meta:Mawson"{
ls{"hora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"hora estive del nordwest de Mexico"}
- lg{"hora del nordwest de Mexico"}
- ls{"hora normal del nordwest de Mexico"}
- }
"meta:Mexico_Pacific"{
ld{"hora estive del Pacifico mexican"}
lg{"hora del Pacifico mexican"}
diff --git a/icu4c/source/data/zone/id.txt b/icu4c/source/data/zone/id.txt
index e0e7c033e..59147895a 100644
--- a/icu4c/source/data/zone/id.txt
+++ b/icu4c/source/data/zone/id.txt
@@ -42,9 +42,6 @@ id{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Dakota Utara"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"Asia:Aqtau"{
ec{"Aktau"}
}
@@ -87,9 +84,6 @@ id{
"Atlantic:South_Georgia"{
ec{"Georgia Selatan"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Waktu Universal Terkoordinasi"}
}
@@ -135,9 +129,6 @@ id{
"Europe:Rome"{
ec{"Roma"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhhorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -147,9 +138,6 @@ id{
"Europe:Warsaw"{
ec{"Warsawa"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizhia"}
- }
"Indian:Comoro"{
ec{"Komoro"}
}
@@ -581,9 +569,6 @@ id{
lg{"Waktu Makau"}
ls{"Waktu Standar Makau"}
}
- "meta:Macquarie"{
- ls{"Waktu Kepulauan Macquarie"}
- }
"meta:Magadan"{
ld{"Waktu Musim Panas Magadan"}
lg{"Waktu Magadan"}
@@ -609,11 +594,6 @@ id{
"meta:Mawson"{
ls{"Waktu Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Waktu Musim Panas Meksiko Barat Laut"}
- lg{"Waktu Meksiko Barat Laut"}
- ls{"Waktu Standar Meksiko Barat Laut"}
- }
"meta:Mexico_Pacific"{
ld{"Waktu Musim Panas Pasifik Meksiko"}
lg{"Waktu Pasifik Meksiko"}
diff --git a/icu4c/source/data/zone/ig.txt b/icu4c/source/data/zone/ig.txt
index 7513db648..9252f960f 100644
--- a/icu4c/source/data/zone/ig.txt
+++ b/icu4c/source/data/zone/ig.txt
@@ -357,9 +357,6 @@ ig{
lg{"Oge Lord Howe"}
ls{"Oge Izugbe Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Oge Macquarie Island"}
- }
"meta:Magadan"{
ld{"Oge Okpomọkụ Magadan"}
lg{"Oge Magadan"}
@@ -385,11 +382,6 @@ ig{
"meta:Mawson"{
ls{"Oge Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Oge Ihe Northwest Mexico"}
- lg{"Oge Northwest Mexico"}
- ls{"Oge Izugbe Northwest Mexico"}
- }
"meta:Mexico_Pacific"{
ld{"Oge Ihe Mexican Pacific"}
lg{"Oge Mexican Pacific"}
diff --git a/icu4c/source/data/zone/is.txt b/icu4c/source/data/zone/is.txt
index 1aa54ba8e..1693eb7cb 100644
--- a/icu4c/source/data/zone/is.txt
+++ b/icu4c/source/data/zone/is.txt
@@ -81,9 +81,6 @@ is{
"America:Puerto_Rico"{
ec{"Púertó Ríkó"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"Sankti Bartólómeusareyjar"}
}
@@ -216,9 +213,6 @@ is{
"Atlantic:St_Helena"{
ec{"Sankti Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Samræmdur alþjóðlegur tími"}
}
@@ -716,9 +710,6 @@ is{
lg{"Tími á Lord Howe-eyju"}
ls{"Staðaltími á Lord Howe-eyju"}
}
- "meta:Macquarie"{
- ls{"Macquarie-eyjartími"}
- }
"meta:Magadan"{
ld{"Sumartími í Magadan"}
lg{"Tími í Magadan"}
@@ -744,11 +735,6 @@ is{
"meta:Mawson"{
ls{"Mawson-tími"}
}
- "meta:Mexico_Northwest"{
- ld{"Sumartími í Norðvestur-Mexíkó"}
- lg{"Tími í Norðvestur-Mexíkó"}
- ls{"Staðaltími í Norðvestur-Mexíkó"}
- }
"meta:Mexico_Pacific"{
ld{"Sumartími í Mexíkó á Kyrrahafssvæðinu"}
lg{"Kyrrahafstími í Mexíkó"}
diff --git a/icu4c/source/data/zone/it.txt b/icu4c/source/data/zone/it.txt
index d46971deb..62bcb85d4 100644
--- a/icu4c/source/data/zone/it.txt
+++ b/icu4c/source/data/zone/it.txt
@@ -81,9 +81,6 @@ it{
"America:Puerto_Rico"{
ec{"Portorico"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -195,9 +192,6 @@ it{
"Atlantic:St_Helena"{
ec{"Sant’Elena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Tempo coordinato universale"}
}
@@ -272,9 +266,6 @@ it{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Užhorod"}
- }
"Europe:Vatican"{
ec{"Città del Vaticano"}
}
@@ -680,9 +671,6 @@ it{
lg{"Ora di Macao"}
ls{"Ora standard di Macao"}
}
- "meta:Macquarie"{
- ls{"Ora dell’Isola Macquarie"}
- }
"meta:Magadan"{
ld{"Ora legale di Magadan"}
lg{"Ora di Magadan"}
@@ -708,11 +696,6 @@ it{
"meta:Mawson"{
ls{"Ora di Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Ora legale del Messico nord-occidentale"}
- lg{"Ora del Messico nord-occidentale"}
- ls{"Ora standard del Messico nord-occidentale"}
- }
"meta:Mexico_Pacific"{
ld{"Ora legale del Pacifico (Messico)"}
lg{"Ora del Pacifico (Messico)"}
diff --git a/icu4c/source/data/zone/ja.txt b/icu4c/source/data/zone/ja.txt
index 6f44ba030..716755d8e 100644
--- a/icu4c/source/data/zone/ja.txt
+++ b/icu4c/source/data/zone/ja.txt
@@ -465,9 +465,6 @@ ja{
"America:New_York"{
ec{"ニューヨーク"}
}
- "America:Nipigon"{
- ec{"ニピゴン"}
- }
"America:Nome"{
ec{"ノーム"}
}
@@ -489,9 +486,6 @@ ja{
"America:Panama"{
ec{"パナマ"}
}
- "America:Pangnirtung"{
- ec{"パンナータング"}
- }
"America:Paramaribo"{
ec{"パラマリボ"}
}
@@ -513,9 +507,6 @@ ja{
"America:Punta_Arenas"{
ec{"プンタアレナス"}
}
- "America:Rainy_River"{
- ec{"レイニーリバー"}
- }
"America:Rankin_Inlet"{
ec{"ランキンインレット"}
}
@@ -531,9 +522,6 @@ ja{
"America:Rio_Branco"{
ec{"リオブランコ"}
}
- "America:Santa_Isabel"{
- ec{"サンタイサベル"}
- }
"America:Santarem"{
ec{"サンタレム"}
}
@@ -579,9 +567,6 @@ ja{
"America:Thule"{
ec{"チューレ"}
}
- "America:Thunder_Bay"{
- ec{"サンダーベイ"}
- }
"America:Tijuana"{
ec{"ティフアナ"}
}
@@ -603,9 +588,6 @@ ja{
"America:Yakutat"{
ec{"ヤクタット"}
}
- "America:Yellowknife"{
- ec{"イエローナイフ"}
- }
"Antarctica:Casey"{
ec{"ケーシー基地"}
}
@@ -930,9 +912,6 @@ ja{
"Australia:Broken_Hill"{
ec{"ブロークンヒル"}
}
- "Australia:Currie"{
- ec{"カリー"}
- }
"Australia:Darwin"{
ec{"ダーウィン"}
}
@@ -1115,9 +1094,6 @@ ja{
"Europe:Ulyanovsk"{
ec{"ウリヤノフスク"}
}
- "Europe:Uzhgorod"{
- ec{"ウージュホロド"}
- }
"Europe:Vaduz"{
ec{"ファドゥーツ"}
}
@@ -1139,9 +1115,6 @@ ja{
"Europe:Zagreb"{
ec{"ザグレブ"}
}
- "Europe:Zaporozhye"{
- ec{"ザポリージャ"}
- }
"Europe:Zurich"{
ec{"チューリッヒ"}
}
@@ -1223,9 +1196,6 @@ ja{
"Pacific:Honolulu"{
ec{"ホノルル"}
}
- "Pacific:Johnston"{
- ec{"ジョンストン島"}
- }
"Pacific:Kanton"{
ec{"カントン島"}
}
@@ -1687,9 +1657,6 @@ ja{
lg{"マカオ時間"}
ls{"マカオ標準時"}
}
- "meta:Macquarie"{
- ls{"マッコーリー島時間"}
- }
"meta:Magadan"{
ld{"マガダン夏時間"}
lg{"マガダン時間"}
@@ -1715,11 +1682,6 @@ ja{
"meta:Mawson"{
ls{"モーソン基地時間"}
}
- "meta:Mexico_Northwest"{
- ld{"メキシコ北西部夏時間"}
- lg{"メキシコ北西部時間"}
- ls{"メキシコ北西部標準時"}
- }
"meta:Mexico_Pacific"{
ld{"メキシコ太平洋夏時間"}
lg{"メキシコ太平洋時間"}
diff --git a/icu4c/source/data/zone/jv.txt b/icu4c/source/data/zone/jv.txt
index 3091bd31b..bbc7ac844 100644
--- a/icu4c/source/data/zone/jv.txt
+++ b/icu4c/source/data/zone/jv.txt
@@ -117,9 +117,6 @@ jv{
"America:Puerto_Rico"{
ec{"Puerto Riko"}
}
- "America:Rainy_River"{
- ec{"Kali Rainy"}
- }
"America:St_Barthelemy"{
ec{"Santa Barthelemy"}
}
@@ -141,9 +138,6 @@ jv{
"America:Swift_Current"{
ec{"Arus Banter"}
}
- "America:Thunder_Bay"{
- ec{"Teluk Gludhug"}
- }
"Asia:Calcutta"{
ec{"Kalkuta"}
}
@@ -183,9 +177,6 @@ jv{
"Atlantic:St_Helena"{
ec{"Santa Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Wektu Universal Kakoordhinasi"}
}
@@ -585,9 +576,6 @@ jv{
lg{"Wektu Lord Howe"}
ls{"Wektu Standar Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Wektu Pulo Macquarie"}
- }
"meta:Magadan"{
ld{"Wektu Ketigo Magadan"}
lg{"Wektu Magadan"}
@@ -613,11 +601,6 @@ jv{
"meta:Mawson"{
ls{"Wektu Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Wektu Ketigo Meksiko Lor-Kulon"}
- lg{"Wektu Meksiko Lor-Kulon"}
- ls{"Wektu Standar Meksiko Lor-Kulon"}
- }
"meta:Mexico_Pacific"{
ld{"Wektu Ketigo Pasifik Meksiko"}
lg{"Wektu Pasifik Meksiko"}
diff --git a/icu4c/source/data/zone/ka.txt b/icu4c/source/data/zone/ka.txt
index ff3778612..980a7e607 100644
--- a/icu4c/source/data/zone/ka.txt
+++ b/icu4c/source/data/zone/ka.txt
@@ -465,9 +465,6 @@ ka{
"America:New_York"{
ec{"ნიუ-იორკი"}
}
- "America:Nipigon"{
- ec{"ნიპიგონი"}
- }
"America:Nome"{
ec{"ნომი"}
}
@@ -489,9 +486,6 @@ ka{
"America:Panama"{
ec{"პანამა"}
}
- "America:Pangnirtung"{
- ec{"პანგნირტუნგი"}
- }
"America:Paramaribo"{
ec{"პარამარიბო"}
}
@@ -513,9 +507,6 @@ ka{
"America:Punta_Arenas"{
ec{"პუნტა-არენასი"}
}
- "America:Rainy_River"{
- ec{"რეინი რივერი"}
- }
"America:Rankin_Inlet"{
ec{"რენკინ ინლეტი"}
}
@@ -531,9 +522,6 @@ ka{
"America:Rio_Branco"{
ec{"რიო ბრანკო"}
}
- "America:Santa_Isabel"{
- ec{"სანტა ისაბელი"}
- }
"America:Santarem"{
ec{"სანტარემი"}
}
@@ -579,9 +567,6 @@ ka{
"America:Thule"{
ec{"თულე"}
}
- "America:Thunder_Bay"{
- ec{"თანდერ ბეი"}
- }
"America:Tijuana"{
ec{"ტიხუანა"}
}
@@ -603,9 +588,6 @@ ka{
"America:Yakutat"{
ec{"იაკუტატი"}
}
- "America:Yellowknife"{
- ec{"იელოუნაიფი"}
- }
"Antarctica:Casey"{
ec{"კეისი"}
}
@@ -930,9 +912,6 @@ ka{
"Australia:Broken_Hill"{
ec{"ბროუკენ ჰილი"}
}
- "Australia:Currie"{
- ec{"ქური"}
- }
"Australia:Darwin"{
ec{"დარვინი"}
}
@@ -1115,9 +1094,6 @@ ka{
"Europe:Ulyanovsk"{
ec{"ულიანოვსკი"}
}
- "Europe:Uzhgorod"{
- ec{"უჟგოროდი"}
- }
"Europe:Vaduz"{
ec{"ვადუცი"}
}
@@ -1139,9 +1115,6 @@ ka{
"Europe:Zagreb"{
ec{"ზაგრები"}
}
- "Europe:Zaporozhye"{
- ec{"ზაპოროჟიე"}
- }
"Europe:Zurich"{
ec{"ციურიხი"}
}
@@ -1223,9 +1196,6 @@ ka{
"Pacific:Honolulu"{
ec{"ჰონოლულუ"}
}
- "Pacific:Johnston"{
- ec{"ჯონსტონი"}
- }
"Pacific:Kanton"{
ec{"კანტონი"}
}
@@ -1640,9 +1610,6 @@ ka{
lg{"ლორდ-ჰაუს დრო"}
ls{"ლორდ-ჰაუს სტანდარტული დრო"}
}
- "meta:Macquarie"{
- ls{"მაქკუორის კუნძულის დრო"}
- }
"meta:Magadan"{
ld{"მაგადანის ზაფხულის დრო"}
lg{"მაგადანის დრო"}
@@ -1668,11 +1635,6 @@ ka{
"meta:Mawson"{
ls{"მოუსონის დრო"}
}
- "meta:Mexico_Northwest"{
- ld{"ჩრდილო-დასავლეთ მექსიკის ზაფხულის დრო"}
- lg{"ჩრდილო-აღმოსავლეთ მექსიკის დრო"}
- ls{"ჩრდილო-დასავლეთ მექსიკის დრო"}
- }
"meta:Mexico_Pacific"{
ld{"მექსიკის წყნარი ოკეანის ზაფხულის დრო"}
lg{"მექსიკის წყნარი ოკეანის დრო"}
diff --git a/icu4c/source/data/zone/kea.txt b/icu4c/source/data/zone/kea.txt
index b38cd1724..a2c55fda3 100644
--- a/icu4c/source/data/zone/kea.txt
+++ b/icu4c/source/data/zone/kea.txt
@@ -245,11 +245,6 @@ kea{
lg{"Ora di Avaí i Aleutas"}
ls{"Ora Padron di Avaí i Aleutas"}
}
- "meta:Mexico_Northwest"{
- ld{"Ora di Veron di Noroesti di Méxiku"}
- lg{"Ora di Noroesti di Méxiku"}
- ls{"Ora Padron di Noroesti di Méxiku"}
- }
"meta:Mexico_Pacific"{
ld{"Ora di Veron di Pasífiku Mexikanu"}
lg{"Ora di Pasífiku Mexikanu"}
diff --git a/icu4c/source/data/zone/kgp.txt b/icu4c/source/data/zone/kgp.txt
index 0891f4f62..44db78c5d 100644
--- a/icu4c/source/data/zone/kgp.txt
+++ b/icu4c/source/data/zone/kgp.txt
@@ -462,9 +462,6 @@ kgp{
"America:New_York"{
ec{"Yjórki Tãg"}
}
- "America:Nipigon"{
- ec{"Nĩpigãn"}
- }
"America:Nome"{
ec{"Jyjy"}
}
@@ -486,9 +483,6 @@ kgp{
"America:Panama"{
ec{"Panỹmỹ"}
}
- "America:Pangnirtung"{
- ec{"Pỹgnĩrtũg"}
- }
"America:Paramaribo"{
ec{"Paramỹrimu"}
}
@@ -510,9 +504,6 @@ kgp{
"America:Punta_Arenas"{
ec{"Pũta Arenỹ"}
}
- "America:Rainy_River"{
- ec{"Tamumã Goj"}
- }
"America:Rankin_Inlet"{
ec{"Rỹgkĩg Ĩrén"}
}
@@ -528,9 +519,6 @@ kgp{
"America:Rio_Branco"{
ec{"Goj Kupri"}
}
- "America:Santa_Isabel"{
- ec{"Sỹta Isamé"}
- }
"America:Santarem"{
ec{"Sỹtarẽj"}
}
@@ -576,9 +564,6 @@ kgp{
"America:Thule"{
ec{"Ture"}
}
- "America:Thunder_Bay"{
- ec{"Tũnner Mej"}
- }
"America:Tijuana"{
ec{"Tivỹnỹ"}
}
@@ -600,9 +585,6 @@ kgp{
"America:Yakutat"{
ec{"Yjakutati"}
}
- "America:Yellowknife"{
- ec{"Rógro Mỹrér"}
- }
"Antarctica:Casey"{
ec{"Kasej"}
}
@@ -909,9 +891,6 @@ kgp{
"Australia:Broken_Hill"{
ec{"Mruken Hir"}
}
- "Australia:Currie"{
- ec{"Kurije"}
- }
"Australia:Darwin"{
ec{"Narvĩn"}
}
@@ -1091,9 +1070,6 @@ kgp{
"Europe:Ulyanovsk"{
ec{"Urijanãvinhki"}
}
- "Europe:Uzhgorod"{
- ec{"Ungoron"}
- }
"Europe:Vaduz"{
ec{"Vanuj"}
}
@@ -1115,9 +1091,6 @@ kgp{
"Europe:Zagreb"{
ec{"Jagréme"}
}
- "Europe:Zaporozhye"{
- ec{"Japorisija"}
- }
"Europe:Zurich"{
ec{"Jurike"}
}
@@ -1196,9 +1169,6 @@ kgp{
"Pacific:Honolulu"{
ec{"Honãruru"}
}
- "Pacific:Johnston"{
- ec{"Nhionhtãn"}
- }
"Pacific:Kiritimati"{
ec{"Kiritimỹti"}
}
@@ -1651,9 +1621,6 @@ kgp{
lg{"Óra Mỹkav tá"}
ls{"Óra Pã Mỹkav tá"}
}
- "meta:Macquarie"{
- ls{"Óra Mỹkikuari Goj-vẽso tá"}
- }
"meta:Magadan"{
ld{"Rỹ Kã óra Mỹganan tá"}
lg{"Óra Mỹganan tá"}
@@ -1679,11 +1646,6 @@ kgp{
"meta:Mawson"{
ls{"Óra Mỹusãn tá"}
}
- "meta:Mexico_Northwest"{
- ld{"Rỹ Kã óra Mẽsiku Nãrti-Rãpur tá"}
- lg{"Óra Mẽsiku Nãrti-Rãpur tá"}
- ls{"Óra Pã Mẽsiku Nãrti-Rãpur tá"}
- }
"meta:Mexico_Pacific"{
ld{"Rỹ Kã óra Mẽsiku Pasifiku tá"}
lg{"Óra Mẽsiku Pasifiku tá"}
diff --git a/icu4c/source/data/zone/kk.txt b/icu4c/source/data/zone/kk.txt
index 581cd33b1..2d6c83997 100644
--- a/icu4c/source/data/zone/kk.txt
+++ b/icu4c/source/data/zone/kk.txt
@@ -465,9 +465,6 @@ kk{
"America:New_York"{
ec{"Нью-Йорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -489,9 +486,6 @@ kk{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртанг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -513,9 +507,6 @@ kk{
"America:Punta_Arenas"{
ec{"Пунта-Аренас"}
}
- "America:Rainy_River"{
- ec{"Рейни-Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Ранкин-Инлет"}
}
@@ -531,9 +522,6 @@ kk{
"America:Rio_Branco"{
ec{"Риу-Бранку"}
}
- "America:Santa_Isabel"{
- ec{"Санта-Исабель"}
- }
"America:Santarem"{
ec{"Сантарен"}
}
@@ -579,9 +567,6 @@ kk{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тандер-Бей"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -603,9 +588,6 @@ kk{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Йеллоунайф"}
- }
"Antarctica:Casey"{
ec{"Кейси"}
}
@@ -930,9 +912,6 @@ kk{
"Australia:Broken_Hill"{
ec{"Брокен-Хилл"}
}
- "Australia:Currie"{
- ec{"Керри"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1115,9 +1094,6 @@ kk{
"Europe:Ulyanovsk"{
ec{"Ульяновск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуц"}
}
@@ -1139,9 +1115,6 @@ kk{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожье"}
- }
"Europe:Zurich"{
ec{"Цюрих"}
}
@@ -1223,9 +1196,6 @@ kk{
"Pacific:Honolulu"{
ec{"Гонолулу"}
}
- "Pacific:Johnston"{
- ec{"Джонстон"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1643,9 +1613,6 @@ kk{
lg{"Лорд-Хау уақыты"}
ls{"Лорд-Хау стандартты уақыты"}
}
- "meta:Macquarie"{
- ls{"Маккуори аралы уақыты"}
- }
"meta:Magadan"{
ld{"Магадан жазғы уақыты"}
lg{"Магадан уақыты"}
@@ -1671,11 +1638,6 @@ kk{
"meta:Mawson"{
ls{"Моусон уақыты"}
}
- "meta:Mexico_Northwest"{
- ld{"Солтүстік-батыс Мексика жазғы уақыты"}
- lg{"Солтүстік-батыс Мексика уақыты"}
- ls{"Солтүстік-батыс Мексика стандартты уақыты"}
- }
"meta:Mexico_Pacific"{
ld{"Мексика жазғы Тынық мұхит уақыты"}
lg{"Мексика Тынық мұхит уақыты"}
diff --git a/icu4c/source/data/zone/km.txt b/icu4c/source/data/zone/km.txt
index 60c9f8db6..d0ed5f22b 100644
--- a/icu4c/source/data/zone/km.txt
+++ b/icu4c/source/data/zone/km.txt
@@ -465,9 +465,6 @@ km{
"America:New_York"{
ec{"ញូវយ៉ក"}
}
- "America:Nipigon"{
- ec{"នីពីកុន"}
- }
"America:Nome"{
ec{"ណូម"}
}
@@ -489,9 +486,6 @@ km{
"America:Panama"{
ec{"ប៉ាណាម៉ា"}
}
- "America:Pangnirtung"{
- ec{"ប៉ាងនីទុង"}
- }
"America:Paramaribo"{
ec{"ប៉ារ៉ាម៉ារីបូ"}
}
@@ -513,9 +507,6 @@ km{
"America:Punta_Arenas"{
ec{"ពុនតា អារ៉េណា"}
}
- "America:Rainy_River"{
- ec{"រ៉េនីរីវើ"}
- }
"America:Rankin_Inlet"{
ec{"រ៉ាន់ឃីន​អ៊ីនឡិត"}
}
@@ -531,9 +522,6 @@ km{
"America:Rio_Branco"{
ec{"រីយ៉ូប្រានកូ"}
}
- "America:Santa_Isabel"{
- ec{"សាន់តាអ៊ីសាប៊ែល"}
- }
"America:Santarem"{
ec{"សាន់តារឹម"}
}
@@ -579,9 +567,6 @@ km{
"America:Thule"{
ec{"ធុឡេ"}
}
- "America:Thunder_Bay"{
- ec{"សាន់ដឺ​បេ"}
- }
"America:Tijuana"{
ec{"ទីយ្យូអាណា"}
}
@@ -603,9 +588,6 @@ km{
"America:Yakutat"{
ec{"យ៉ាគូតាត"}
}
- "America:Yellowknife"{
- ec{"យេឡូណៃ"}
- }
"Antarctica:Casey"{
ec{"កាសី"}
}
@@ -930,9 +912,6 @@ km{
"Australia:Broken_Hill"{
ec{"ប្រូកខិនហីល"}
}
- "Australia:Currie"{
- ec{"ខូរៀ"}
- }
"Australia:Darwin"{
ec{"ដាវីន"}
}
@@ -1115,9 +1094,6 @@ km{
"Europe:Ulyanovsk"{
ec{"អុលយ៉ាណូវស្កិ៍"}
}
- "Europe:Uzhgorod"{
- ec{"អ៊ុយហ្គោរ៉ូដ"}
- }
"Europe:Vaduz"{
ec{"វ៉ាឌូស"}
}
@@ -1139,9 +1115,6 @@ km{
"Europe:Zagreb"{
ec{"សាគ្រែប"}
}
- "Europe:Zaporozhye"{
- ec{"ហ្សាប៉ូរ៉ូហ្ស៊ីយ៉េ"}
- }
"Europe:Zurich"{
ec{"ហ៊្សូរីច"}
}
@@ -1223,9 +1196,6 @@ km{
"Pacific:Honolulu"{
ec{"ហូណូលូលូ"}
}
- "Pacific:Johnston"{
- ec{"ចនស្តុន"}
- }
"Pacific:Kanton"{
ec{"កាន់តុន"}
}
@@ -1640,9 +1610,6 @@ km{
lg{"ម៉ោង​នៅ​ឡតហៅ"}
ls{"ម៉ោង​ស្តង់ដារ​នៅ​ឡត​ហៅ"}
}
- "meta:Macquarie"{
- ls{"ម៉ោង​នៅ​កោះ​ម៉ាកគែរី"}
- }
"meta:Magadan"{
ld{"ម៉ោង​នៅ​ម៉ាហ្កាដាន​នារដូវ​ក្ដៅ"}
lg{"ម៉ោង​នៅ​ម៉ាហ្កាដាន"}
@@ -1668,11 +1635,6 @@ km{
"meta:Mawson"{
ls{"ម៉ោង​នៅ​ម៉ៅ​សាន់"}
}
- "meta:Mexico_Northwest"{
- ld{"ម៉ោង​ពេល​ថ្ងៃ​នៅ​ម៉ិកស៊ិកភាគពាយព្យ"}
- lg{"ម៉ោង​នៅ​ម៉ិកស៊ិកភាគពាយព្យ"}
- ls{"ម៉ោង​ស្តង់ដារនៅ​ម៉ិកស៊ិកភាគពាយព្យ"}
- }
"meta:Mexico_Pacific"{
ld{"ម៉ោង​ពេល​ថ្ងៃ​នៅ​ប៉ាស៊ីហ្វិក​ម៉ិកស៊ិក"}
lg{"ម៉ោង​នៅ​ប៉ាស៊ីហ្វិក​ម៉ិកស៊ិក"}
diff --git a/icu4c/source/data/zone/kn.txt b/icu4c/source/data/zone/kn.txt
index 405f035f6..48641c500 100644
--- a/icu4c/source/data/zone/kn.txt
+++ b/icu4c/source/data/zone/kn.txt
@@ -465,9 +465,6 @@ kn{
"America:New_York"{
ec{"ನ್ಯೂಯಾರ್ಕ್"}
}
- "America:Nipigon"{
- ec{"ನಿಪಿಗನ್"}
- }
"America:Nome"{
ec{"ನೋಮ್"}
}
@@ -489,9 +486,6 @@ kn{
"America:Panama"{
ec{"ಪನಾಮಾ"}
}
- "America:Pangnirtung"{
- ec{"ಪಂಗ್ನೀರ್‌ಟಂಗ್"}
- }
"America:Paramaribo"{
ec{"ಪರಮಾರಿಬೋ"}
}
@@ -513,9 +507,6 @@ kn{
"America:Punta_Arenas"{
ec{"ಪುಂತಾ ಅರೇನಾಸ್"}
}
- "America:Rainy_River"{
- ec{"ರೈನಿ ರಿವರ್"}
- }
"America:Rankin_Inlet"{
ec{"ರಾಂಕಿನ್ ಇನ್‌ಲೆಟ್"}
}
@@ -531,9 +522,6 @@ kn{
"America:Rio_Branco"{
ec{"ರಿಯೋ ಬ್ರ್ಯಾಂಕೊ"}
}
- "America:Santa_Isabel"{
- ec{"ಸಾಂತಾ ಇಸಾಬೆಲ್"}
- }
"America:Santarem"{
ec{"ಸಾಂಟರೆಮ್"}
}
@@ -579,9 +567,6 @@ kn{
"America:Thule"{
ec{"ಥೂಲೆ"}
}
- "America:Thunder_Bay"{
- ec{"ಥಂಡರ್ ಬೇ"}
- }
"America:Tijuana"{
ec{"ತಿಜ್ವಾನಾ"}
}
@@ -603,9 +588,6 @@ kn{
"America:Yakutat"{
ec{"ಯಾಕುಟಾಟ್"}
}
- "America:Yellowknife"{
- ec{"ಯೆಲ್ಲೋ‌ನೈಫ್"}
- }
"Antarctica:Casey"{
ec{"ಕೇಸಿ"}
}
@@ -930,9 +912,6 @@ kn{
"Australia:Broken_Hill"{
ec{"ಬ್ರೊಕನ್ ಹಿಲ್"}
}
- "Australia:Currie"{
- ec{"ಕರೀ"}
- }
"Australia:Darwin"{
ec{"ಡಾರ್ವಿನ್"}
}
@@ -1115,9 +1094,6 @@ kn{
"Europe:Ulyanovsk"{
ec{"ಉಲ್ಯಾನೊವಸ್ಕ್"}
}
- "Europe:Uzhgorod"{
- ec{"ಉಜ್‌ಗೊರೊದ್"}
- }
"Europe:Vaduz"{
ec{"ವಡೂಜ್"}
}
@@ -1139,9 +1115,6 @@ kn{
"Europe:Zagreb"{
ec{"ಜಾಗ್ರೆಬ್‌"}
}
- "Europe:Zaporozhye"{
- ec{"ಜಾಪರೀಝಿಯಾ"}
- }
"Europe:Zurich"{
ec{"ಜ್ಯೂರಿಕ್"}
}
@@ -1223,9 +1196,6 @@ kn{
"Pacific:Honolulu"{
ec{"ಹೊನಲುಲು"}
}
- "Pacific:Johnston"{
- ec{"ಜಾನ್‌ಸ್ಟನ್"}
- }
"Pacific:Kanton"{
ec{"ಕ್ಯಾಂಟನ್"}
}
@@ -1682,9 +1652,6 @@ kn{
lg{"ಮಕಾವ್ ಸಮಯ"}
ls{"ಮಕಾವ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
}
- "meta:Macquarie"{
- ls{"ಮ್ಯಾಕ್‌ಕ್ಯುರೈ ದ್ವೀಪ ಸಮಯ"}
- }
"meta:Magadan"{
ld{"ಮಗಡಾನ್ ಬೇಸಿಗೆ ಸಮಯ"}
lg{"ಮಗಡಾನ್ ಸಮಯ"}
@@ -1710,11 +1677,6 @@ kn{
"meta:Mawson"{
ls{"ಮಾವ್‌ಸನ್ ಸಮಯ"}
}
- "meta:Mexico_Northwest"{
- ld{"ವಾಯವ್ಯ ಮೆಕ್ಸಿಕೊ ಹಗಲು ಸಮಯ"}
- lg{"ವಾಯವ್ಯ ಮೆಕ್ಸಿಕೊ ಸಮಯ"}
- ls{"ವಾಯವ್ಯ ಮೆಕ್ಸಿಕೊ ಪ್ರಮಾಣಿತ ಸಮಯ"}
- }
"meta:Mexico_Pacific"{
ld{"ಮೆಕ್ಸಿಕನ್ ಪೆಸಿಫಿಕ್ ಹಗಲು ಸಮಯ"}
lg{"ಮೆಕ್ಸಿಕನ್ ಪೆಸಿಫಿಕ್ ಸಮಯ"}
diff --git a/icu4c/source/data/zone/ko.txt b/icu4c/source/data/zone/ko.txt
index a278e0142..45d9279d0 100644
--- a/icu4c/source/data/zone/ko.txt
+++ b/icu4c/source/data/zone/ko.txt
@@ -465,9 +465,6 @@ ko{
"America:New_York"{
ec{"뉴욕"}
}
- "America:Nipigon"{
- ec{"니피곤"}
- }
"America:Nome"{
ec{"놈"}
}
@@ -489,9 +486,6 @@ ko{
"America:Panama"{
ec{"파나마"}
}
- "America:Pangnirtung"{
- ec{"팡니르퉁"}
- }
"America:Paramaribo"{
ec{"파라마리보"}
}
@@ -513,9 +507,6 @@ ko{
"America:Punta_Arenas"{
ec{"푼타아레나스"}
}
- "America:Rainy_River"{
- ec{"레이니강"}
- }
"America:Rankin_Inlet"{
ec{"랭킹 인렛"}
}
@@ -531,9 +522,6 @@ ko{
"America:Rio_Branco"{
ec{"히우 브랑쿠"}
}
- "America:Santa_Isabel"{
- ec{"산타 이사벨"}
- }
"America:Santarem"{
ec{"산타렘"}
}
@@ -579,9 +567,6 @@ ko{
"America:Thule"{
ec{"툴레"}
}
- "America:Thunder_Bay"{
- ec{"선더베이"}
- }
"America:Tijuana"{
ec{"티후아나"}
}
@@ -603,9 +588,6 @@ ko{
"America:Yakutat"{
ec{"야쿠타트"}
}
- "America:Yellowknife"{
- ec{"옐로나이프"}
- }
"Antarctica:Casey"{
ec{"케이시"}
}
@@ -930,9 +912,6 @@ ko{
"Australia:Broken_Hill"{
ec{"브로컨힐"}
}
- "Australia:Currie"{
- ec{"퀴리"}
- }
"Australia:Darwin"{
ec{"다윈"}
}
@@ -1115,9 +1094,6 @@ ko{
"Europe:Ulyanovsk"{
ec{"울리야노프스크"}
}
- "Europe:Uzhgorod"{
- ec{"우주고로트"}
- }
"Europe:Vaduz"{
ec{"파두츠"}
}
@@ -1139,9 +1115,6 @@ ko{
"Europe:Zagreb"{
ec{"자그레브"}
}
- "Europe:Zaporozhye"{
- ec{"자포로지예"}
- }
"Europe:Zurich"{
ec{"취리히"}
}
@@ -1223,9 +1196,6 @@ ko{
"Pacific:Honolulu"{
ec{"호놀룰루"}
}
- "Pacific:Johnston"{
- ec{"존스톤"}
- }
"Pacific:Kanton"{
ec{"칸톤"}
}
@@ -1678,9 +1648,6 @@ ko{
lg{"마카오 시간"}
ls{"마카오 표준 시간"}
}
- "meta:Macquarie"{
- ls{"매쿼리섬 시간"}
- }
"meta:Magadan"{
ld{"마가단 하계 표준시"}
lg{"마가단 시간"}
@@ -1706,11 +1673,6 @@ ko{
"meta:Mawson"{
ls{"모슨 시간"}
}
- "meta:Mexico_Northwest"{
- ld{"멕시코 북서부 하계 표준시"}
- lg{"멕시코 북서부 시간"}
- ls{"멕시코 북서부 표준시"}
- }
"meta:Mexico_Pacific"{
ld{"멕시코 태평양 하계 표준시"}
lg{"멕시코 태평양 시간"}
diff --git a/icu4c/source/data/zone/kok.txt b/icu4c/source/data/zone/kok.txt
index b8477bf7d..c4e2b9e69 100644
--- a/icu4c/source/data/zone/kok.txt
+++ b/icu4c/source/data/zone/kok.txt
@@ -465,9 +465,6 @@ kok{
"America:New_York"{
ec{"न्यु यॉर्क"}
}
- "America:Nipigon"{
- ec{"निपिगोन"}
- }
"America:Nome"{
ec{"नोमे"}
}
@@ -489,9 +486,6 @@ kok{
"America:Panama"{
ec{"पनामा"}
}
- "America:Pangnirtung"{
- ec{"पंगनिर्टुंग"}
- }
"America:Paramaribo"{
ec{"परामारिबो"}
}
@@ -513,9 +507,6 @@ kok{
"America:Punta_Arenas"{
ec{"पुंटा अरेनास"}
}
- "America:Rainy_River"{
- ec{"पावसाळी न्हंय"}
- }
"America:Rankin_Inlet"{
ec{"रँकिन इनलॅट"}
}
@@ -576,9 +567,6 @@ kok{
"America:Thule"{
ec{"थुले"}
}
- "America:Thunder_Bay"{
- ec{"थंडर बे"}
- }
"America:Tijuana"{
ec{"तिजुआना"}
}
@@ -600,9 +588,6 @@ kok{
"America:Yakutat"{
ec{"याकुटाट"}
}
- "America:Yellowknife"{
- ec{"यलोक्नायफ"}
- }
"Antarctica:Casey"{
ec{"केसी"}
}
@@ -927,9 +912,6 @@ kok{
"Australia:Broken_Hill"{
ec{"ब्रोकन हिल"}
}
- "Australia:Currie"{
- ec{"क्युरी"}
- }
"Australia:Darwin"{
ec{"डार्विन"}
}
@@ -1112,9 +1094,6 @@ kok{
"Europe:Ulyanovsk"{
ec{"उल्यानोव्स्क"}
}
- "Europe:Uzhgorod"{
- ec{"उझगोरोड"}
- }
"Europe:Vaduz"{
ec{"वडुज"}
}
@@ -1136,9 +1115,6 @@ kok{
"Europe:Zagreb"{
ec{"झाग्रेब"}
}
- "Europe:Zaporozhye"{
- ec{"झापोरोझे"}
- }
"Europe:Zurich"{
ec{"झुरिच"}
}
@@ -1217,9 +1193,6 @@ kok{
"Pacific:Guam"{
ec{"गुआम"}
}
- "Pacific:Johnston"{
- ec{"जॉन्स्टन"}
- }
"Pacific:Kanton"{
ec{"कांटोन"}
}
@@ -1635,9 +1608,6 @@ kok{
lg{"लॉर्ड होवे वेळ"}
ls{"लॉर्ड होवे प्रमाणित वेळ"}
}
- "meta:Macquarie"{
- ls{"मॅक्वेरी आयलँड वेळ"}
- }
"meta:Magadan"{
ld{"मगादान ग्रीष्म वेळ"}
lg{"मगादान वेळ"}
@@ -1663,11 +1633,6 @@ kok{
"meta:Mawson"{
ls{"मॉसन वेळ"}
}
- "meta:Mexico_Northwest"{
- ld{"वायव्य मेक्सिको डेलायट वेळ"}
- lg{"वायव्य मेक्सिको वेळ"}
- ls{"वायव्य मेक्सिको प्रमाणीत वेळ"}
- }
"meta:Mexico_Pacific"{
ld{"मेक्सिकन प्रशांत डेलायट वेळ"}
lg{"मेक्सिकन प्रशांत वेळ"}
diff --git a/icu4c/source/data/zone/ks.txt b/icu4c/source/data/zone/ks.txt
index 78097608a..fa16b8152 100644
--- a/icu4c/source/data/zone/ks.txt
+++ b/icu4c/source/data/zone/ks.txt
@@ -462,9 +462,6 @@ ks{
"America:New_York"{
ec{"نِو یارک"}
}
- "America:Nipigon"{
- ec{"نِپِگَن"}
- }
"America:Nome"{
ec{"نوم"}
}
@@ -486,9 +483,6 @@ ks{
"America:Panama"{
ec{"پَناما"}
}
- "America:Pangnirtung"{
- ec{"پَنگنِرٹَنگ"}
- }
"America:Paramaribo"{
ec{"پَرامارِبو"}
}
@@ -510,9 +504,6 @@ ks{
"America:Punta_Arenas"{
ec{"پونٹا اریناس"}
}
- "America:Rainy_River"{
- ec{"رینی رِوَر"}
- }
"America:Rankin_Inlet"{
ec{"رینکِن اِنلؠٹ"}
}
@@ -573,9 +564,6 @@ ks{
"America:Thule"{
ec{"تھیوٗلے"}
}
- "America:Thunder_Bay"{
- ec{"تھَنڈر خلیٖج"}
- }
"America:Tijuana"{
ec{"تِجُوانا"}
}
@@ -597,9 +585,6 @@ ks{
"America:Yakutat"{
ec{"یکوٗتات"}
}
- "America:Yellowknife"{
- ec{"یؠلو نایِف"}
- }
"Antarctica:Casey"{
ec{"کیسی"}
}
@@ -915,9 +900,6 @@ ks{
"Australia:Broken_Hill"{
ec{"بروکٕن ہِل"}
}
- "Australia:Currie"{
- ec{"کیوٗری"}
- }
"Australia:Darwin"{
ec{"ڈاروِن"}
}
@@ -1100,9 +1082,6 @@ ks{
"Europe:Ulyanovsk"{
ec{"اولیانووسک"}
}
- "Europe:Uzhgorod"{
- ec{"اُزگورود"}
- }
"Europe:Vaduz"{
ec{"وادُز"}
}
@@ -1124,9 +1103,6 @@ ks{
"Europe:Zagreb"{
ec{"زگریب"}
}
- "Europe:Zaporozhye"{
- ec{"زَپوروزَے"}
- }
"Europe:Zurich"{
ec{"زیوٗرِک"}
}
@@ -1205,9 +1181,6 @@ ks{
"Pacific:Honolulu"{
ec{"ہونولو لو"}
}
- "Pacific:Johnston"{
- ec{"جانسٹَن"}
- }
"Pacific:Kiritimati"{
ec{"کِرِتِماتی"}
}
@@ -1578,7 +1551,7 @@ ks{
ls{"ہِندوستان"}
}
"meta:Indian_Ocean"{
- ls{"ہِندوستٲنۍ اوشَن ٹائم"}
+ ls{"ہِندوستٲنؠ اوشَن ٹائم"}
}
"meta:Indochina"{
ls{"اِنڑوچَینا ٹایِم"}
@@ -1594,8 +1567,8 @@ ks{
}
"meta:Iran"{
ld{"اِیٖرٲنی سَمَر ٹایِم"}
- lg{"اِیٖرٲنۍ ٹایِم"}
- ls{"اِیٖرٲنۍ سٹینڑاڑ ٹایِم"}
+ lg{"اِیٖرٲنؠ ٹایِم"}
+ ls{"اِیٖرٲنؠ سٹینڑاڑ ٹایِم"}
}
"meta:Irkutsk"{
ld{"اِرکُٹسک سَمَر ٹایِم"}
@@ -1608,9 +1581,9 @@ ks{
ls{"اِسرٲیِلی سٹینڈرڈ ٹایِم"}
}
"meta:Japan"{
- ld{"جاپٲنۍ ڑےلایِٔٹ ٹایِم"}
- lg{"جاپٲنۍ ٹایِم"}
- ls{"جاپٲنۍ سٹینڈرڈ ٹایِم"}
+ ld{"جاپٲنؠ ڑےلایِٔٹ ٹایِم"}
+ lg{"جاپٲنؠ ٹایِم"}
+ ls{"جاپٲنؠ سٹینڈرڈ ٹایِم"}
}
"meta:Kamchatka"{
ld{"کَمچَٹکا سَمَر ٹایِم"}
@@ -1680,11 +1653,6 @@ ks{
"meta:Mawson"{
ls{"ماسَن ٹایِم"}
}
- "meta:Mexico_Northwest"{
- ld{"شُمال مغربی میکسیکو ڈے لائٹ ٹائم"}
- lg{"شُمال مغربی میکسیکو ٹائم"}
- ls{"شُمال مغربی میکسیکو سٹینڈرڈ ٹائم"}
- }
"meta:Mexico_Pacific"{
ld{"میکسیکن پیسیفک ڈے لائٹ ٹائم"}
lg{"میکسیکن پیسیفک ٹائم"}
@@ -1707,7 +1675,7 @@ ks{
ls{"نَعوٗروٗ ٹایِم"}
}
"meta:Nepal"{
- ls{"نؠپٲلۍ ٹایِم"}
+ ls{"نؠپٲلؠ ٹایِم"}
}
"meta:New_Caledonia"{
ld{"نِو کیلؠڑونِیس سَمَر ٹایِم"}
diff --git a/icu4c/source/data/zone/ksh.txt b/icu4c/source/data/zone/ksh.txt
index 1f88d35c5..b4371ce3e 100644
--- a/icu4c/source/data/zone/ksh.txt
+++ b/icu4c/source/data/zone/ksh.txt
@@ -240,9 +240,6 @@ ksh{
"Europe:Tirane"{
ec{"Tiraana"}
}
- "Europe:Uzhgorod"{
- ec{"Uschjorod"}
- }
"Europe:Vatican"{
ec{"der Vatikahn"}
}
@@ -258,9 +255,6 @@ ksh{
"Europe:Zagreb"{
ec{"Sagreb"}
}
- "Europe:Zaporozhye"{
- ec{"Saporischschja"}
- }
"Europe:Zurich"{
ec{"Züresch"}
}
diff --git a/icu4c/source/data/zone/ku.txt b/icu4c/source/data/zone/ku.txt
index 9fa44b2db..e7ded2f48 100644
--- a/icu4c/source/data/zone/ku.txt
+++ b/icu4c/source/data/zone/ku.txt
@@ -402,9 +402,6 @@ ku{
"Europe:Tirane"{
ec{"Tîran"}
}
- "Europe:Uzhgorod"{
- ec{"Ujgorod"}
- }
"Europe:Vatican"{
ec{"Vatîkan"}
}
@@ -417,9 +414,6 @@ ku{
"Europe:Warsaw"{
ec{"Warşova"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporojye"}
- }
"Europe:Zurich"{
ec{"Zûrîh"}
}
@@ -810,9 +804,6 @@ ku{
lg{"Saeta Lord Howeyê"}
ls{"Saeta Standard a Lord Howeyê"}
}
- "meta:Macquarie"{
- ls{"Saeta Girava Macquarieyê"}
- }
"meta:Magadan"{
ld{"Saeta Havînê ya Magadanê"}
lg{"Saeta Magadanê"}
@@ -838,14 +829,6 @@ ku{
"meta:Mawson"{
ls{"Saeta Mawsonê"}
}
- "meta:Mexico_Northwest"{
- ld{"Saeta Havînê ya Meksîkoya Bakurrojava"}
- lg{"Saeta Meksîkoya Bakurrojava"}
- ls{"Saeta Standard a Meksîkoya Bakurrojava"}
- sd{"SHMBR"}
- sg{"SMBR"}
- ss{"SSMBR"}
- }
"meta:Mexico_Pacific"{
ld{"Saeta Havînê ya Pasîfîka Meksîkayê"}
lg{"Saeta Pasîfîka Meksîkayê"}
diff --git a/icu4c/source/data/zone/kxv.txt b/icu4c/source/data/zone/kxv.txt
index ecfe4720a..bf9d29e2d 100644
--- a/icu4c/source/data/zone/kxv.txt
+++ b/icu4c/source/data/zone/kxv.txt
@@ -462,9 +462,6 @@ kxv{
"America:New_York"{
ec{"niyu york"}
}
- "America:Nipigon"{
- ec{"nipigen"}
- }
"America:Nome"{
ec{"nom"}
}
@@ -486,9 +483,6 @@ kxv{
"America:Panama"{
ec{"panama"}
}
- "America:Pangnirtung"{
- ec{"pangnirtung"}
- }
"America:Paramaribo"{
ec{"paramaribo"}
}
@@ -510,9 +504,6 @@ kxv{
"America:Punta_Arenas"{
ec{"puṇṭa erenas"}
}
- "America:Rainy_River"{
- ec{"reni rivr"}
- }
"America:Rankin_Inlet"{
ec{"rankin inledṭ"}
}
@@ -573,9 +564,6 @@ kxv{
"America:Thule"{
ec{"tule"}
}
- "America:Thunder_Bay"{
- ec{"tanḍr be"}
- }
"America:Tijuana"{
ec{"tihvana"}
}
@@ -597,9 +585,6 @@ kxv{
"America:Yakutat"{
ec{"yakuṭaṭ"}
}
- "America:Yellowknife"{
- ec{"yellonaip"}
- }
"Antarctica:Casey"{
ec{"kesee"}
}
@@ -1106,9 +1091,6 @@ kxv{
"Europe:Ulyanovsk"{
ec{"ulyanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"ujhorod"}
- }
"Europe:Vaduz"{
ec{"vaḍuj"}
}
@@ -1130,9 +1112,6 @@ kxv{
"Europe:Zagreb"{
ec{"tegusigalpa"}
}
- "Europe:Zaporozhye"{
- ec{"japorjye"}
- }
"Europe:Zurich"{
ec{"juric"}
}
@@ -1208,9 +1187,6 @@ kxv{
"Pacific:Guam"{
ec{"guam"}
}
- "Pacific:Johnston"{
- ec{"johnsṭon"}
- }
"Pacific:Kanton"{
ec{"kanṭon"}
}
@@ -1625,9 +1601,6 @@ kxv{
lg{"laṛ hawe belā"}
ls{"laṛ hawe mānānka belā"}
}
- "meta:Macquarie"{
- ls{"makwārī dīp belā"}
- }
"meta:Magadan"{
ld{"māgādan ḍelāit belā"}
lg{"māgādan belā"}
@@ -1653,11 +1626,6 @@ kxv{
"meta:Mawson"{
ls{"māwosn belā"}
}
- "meta:Mexico_Northwest"{
- ld{"utar weḍā kūṇpū meksik ḍelāiṭ belā"}
- lg{"utar weḍā kūṇpū meksik belā"}
- ls{"utar weḍā kūṇpū meksik mānānka belā"}
- }
"meta:Mexico_Pacific"{
ld{"meksikān pesipic ḍelāiṭ belā"}
lg{"meksikān pesipic belā"}
diff --git a/icu4c/source/data/zone/kxv_IN.txt b/icu4c/source/data/zone/kxv_IN.txt
new file mode 100644
index 000000000..e92770c6f
--- /dev/null
+++ b/icu4c/source/data/zone/kxv_IN.txt
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_IN{
+ "%%ALIAS"{"kxv_Latn_IN"}
+}
diff --git a/icu4c/source/data/zone/kxv_Latn.txt b/icu4c/source/data/zone/kxv_Latn.txt
new file mode 100644
index 000000000..823563224
--- /dev/null
+++ b/icu4c/source/data/zone/kxv_Latn.txt
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+kxv_Latn{
+}
diff --git a/icu4c/source/data/zone/kxv_Latn_IN.txt b/icu4c/source/data/zone/kxv_Latn_IN.txt
new file mode 100644
index 000000000..d2dd86851
--- /dev/null
+++ b/icu4c/source/data/zone/kxv_Latn_IN.txt
@@ -0,0 +1,9 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+/**
+ * generated alias target
+ */
+kxv_Latn_IN{
+ ___{""}
+}
diff --git a/icu4c/source/data/zone/ky.txt b/icu4c/source/data/zone/ky.txt
index 5720107b3..66521992c 100644
--- a/icu4c/source/data/zone/ky.txt
+++ b/icu4c/source/data/zone/ky.txt
@@ -465,9 +465,6 @@ ky{
"America:New_York"{
ec{"Нью-Йорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -489,9 +486,6 @@ ky{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангиртуң"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -513,9 +507,6 @@ ky{
"America:Punta_Arenas"{
ec{"Пунта-Аренас"}
}
- "America:Rainy_River"{
- ec{"Рейни Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Рэнкин Инлет"}
}
@@ -531,9 +522,6 @@ ky{
"America:Rio_Branco"{
ec{"Рио Бранко"}
}
- "America:Santa_Isabel"{
- ec{"Санта Изабел"}
- }
"America:Santarem"{
ec{"Сантарем"}
}
@@ -579,9 +567,6 @@ ky{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Сандер Бей"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -603,9 +588,6 @@ ky{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Йеллоунайф"}
- }
"Antarctica:Casey"{
ec{"Кейси"}
}
@@ -930,9 +912,6 @@ ky{
"Australia:Broken_Hill"{
ec{"Броукен Хил"}
}
- "Australia:Currie"{
- ec{"Керри"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1115,9 +1094,6 @@ ky{
"Europe:Ulyanovsk"{
ec{"Ульяновск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Фадуц"}
}
@@ -1139,9 +1115,6 @@ ky{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожье"}
- }
"Europe:Zurich"{
ec{"Цюрих"}
}
@@ -1223,9 +1196,6 @@ ky{
"Pacific:Honolulu"{
ec{"Гонолулу"}
}
- "Pacific:Johnston"{
- ec{"Жонстон"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1640,9 +1610,6 @@ ky{
lg{"Лорд Хау убактысы"}
ls{"Лорд Хау кышкы убакыты"}
}
- "meta:Macquarie"{
- ls{"Макуари убактысы"}
- }
"meta:Magadan"{
ld{"Магадан жайкы убактысы"}
lg{"Магадан убактысы"}
@@ -1668,11 +1635,6 @@ ky{
"meta:Mawson"{
ls{"Моусон убактысы"}
}
- "meta:Mexico_Northwest"{
- ld{"Түндүк-чыгыш Мексика жайкы убактысы"}
- lg{"Түндүк-чыгыш Мексика убактысы"}
- ls{"Түндүк-чыгыш Мексика кышкы убактысы"}
- }
"meta:Mexico_Pacific"{
ld{"Мексика, Тынч океан жайкы убактысы"}
lg{"Мексика, Тынч океан убактысы"}
diff --git a/icu4c/source/data/zone/lb.txt b/icu4c/source/data/zone/lb.txt
index 065221d36..12df6d520 100644
--- a/icu4c/source/data/zone/lb.txt
+++ b/icu4c/source/data/zone/lb.txt
@@ -210,9 +210,6 @@ lb{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Uschgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -228,9 +225,6 @@ lb{
"Europe:Warsaw"{
ec{"Warschau"}
}
- "Europe:Zaporozhye"{
- ec{"Saporischschja"}
- }
"Europe:Zurich"{
ec{"Zürech"}
}
@@ -609,9 +603,6 @@ lb{
lg{"Lord-Howe-Zäit"}
ls{"Lord-Howe-Normalzäit"}
}
- "meta:Macquarie"{
- ls{"Macquarieinsel-Zäit"}
- }
"meta:Magadan"{
ld{"Magadan-Summerzäit"}
lg{"Magadan-Zäit"}
@@ -637,11 +628,6 @@ lb{
"meta:Mawson"{
ls{"Mawson-Zäit"}
}
- "meta:Mexico_Northwest"{
- ld{"Nordwest-Mexiko-Summerzäit"}
- lg{"Nordwest-Mexiko-Zäit"}
- ls{"Nordwest-Mexiko-Normalzäit"}
- }
"meta:Mexico_Pacific"{
ld{"Mexikanesch Pazifik-Summerzäit"}
lg{"Mexikanesch Pazifikzäit"}
diff --git a/icu4c/source/data/zone/lo.txt b/icu4c/source/data/zone/lo.txt
index 58e4b39ed..8862ac89b 100644
--- a/icu4c/source/data/zone/lo.txt
+++ b/icu4c/source/data/zone/lo.txt
@@ -465,9 +465,6 @@ lo{
"America:New_York"{
ec{"ນິວຢອກ"}
}
- "America:Nipigon"{
- ec{"ນີປີກອນ"}
- }
"America:Nome"{
ec{"ນອມ"}
}
@@ -489,9 +486,6 @@ lo{
"America:Panama"{
ec{"ພານາມາ"}
}
- "America:Pangnirtung"{
- ec{"ແພງເນີດທັງ"}
- }
"America:Paramaribo"{
ec{"ພາຣາມາຣິໂບ"}
}
@@ -513,9 +507,6 @@ lo{
"America:Punta_Arenas"{
ec{"ພຸນທາ ອະຣີນາສ໌"}
}
- "America:Rainy_River"{
- ec{"ເຣນນີ ຣິເວີ"}
- }
"America:Rankin_Inlet"{
ec{"ແຣນກິນ ອິນເລັດ"}
}
@@ -531,9 +522,6 @@ lo{
"America:Rio_Branco"{
ec{"ຣິໂອ ບຣັນໂກ"}
}
- "America:Santa_Isabel"{
- ec{"ຊານຕາ ອິດຊາເບວ"}
- }
"America:Santarem"{
ec{"ຊັນຕາເຣມ"}
}
@@ -579,9 +567,6 @@ lo{
"America:Thule"{
ec{"ທູເລ"}
}
- "America:Thunder_Bay"{
- ec{"ທັນເດີເບ"}
- }
"America:Tijuana"{
ec{"ທີຈົວນາ"}
}
@@ -603,9 +588,6 @@ lo{
"America:Yakutat"{
ec{"ຢາຄູຕັດ"}
}
- "America:Yellowknife"{
- ec{"ເຢໂລໄນຟ໌"}
- }
"Antarctica:Casey"{
ec{"ເຄຊີ"}
}
@@ -930,9 +912,6 @@ lo{
"Australia:Broken_Hill"{
ec{"ໂບຣກເຄນ ຮິວ"}
}
- "Australia:Currie"{
- ec{"ກູຣີ"}
- }
"Australia:Darwin"{
ec{"ດາວິນ"}
}
@@ -1115,9 +1094,6 @@ lo{
"Europe:Ulyanovsk"{
ec{"ອູລີອານອບສຄ໌"}
}
- "Europe:Uzhgorod"{
- ec{"ອັສຊ໌ກໍໂຣດ"}
- }
"Europe:Vaduz"{
ec{"ວາດາຊ"}
}
@@ -1139,9 +1115,6 @@ lo{
"Europe:Zagreb"{
ec{"ຊາເກຣບ"}
}
- "Europe:Zaporozhye"{
- ec{"ຊາໂປໂຣຊີ"}
- }
"Europe:Zurich"{
ec{"ຊູຣິກ"}
}
@@ -1223,9 +1196,6 @@ lo{
"Pacific:Honolulu"{
ec{"ໂຮໂນລູລູ"}
}
- "Pacific:Johnston"{
- ec{"ຈອນສະໂຕນ"}
- }
"Pacific:Kanton"{
ec{"ແຄນຕອນ"}
}
@@ -1674,9 +1644,6 @@ lo{
lg{"ເວລາມາເກົາ"}
ls{"ເວລາມາດຕະຖານມາເກົາ"}
}
- "meta:Macquarie"{
- ls{"ເວ​ລາ​ເກາະ​ແມັກ​ຄົວ​ຣີ"}
- }
"meta:Magadan"{
ld{"ເວລາລະດູຮ້ອນເມັກກາເດນ"}
lg{"ເວລາເມັກກາເດນ"}
@@ -1702,11 +1669,6 @@ lo{
"meta:Mawson"{
ls{"ເວລາມໍສັນ"}
}
- "meta:Mexico_Northwest"{
- ld{"ເວລາກາງເວັນເມັກຊິກັນນອດເວສ"}
- lg{"​ເວ​ລາ​ນອດ​ເວ​ສ​ເມັກ​ຊິ​ໂກ"}
- ls{"​ເວ​ລາ​ມາດ​ຕະ​ຖານນອດ​ເວ​ສ​ເມັກ​ຊິ​ໂກ"}
- }
"meta:Mexico_Pacific"{
ld{"ເວລາກາງເວັນແປຊິຟິກເມັກຊິກັນ"}
lg{"ເວລາແປຊິຟິກເມັກຊິກັນ"}
diff --git a/icu4c/source/data/zone/lt.txt b/icu4c/source/data/zone/lt.txt
index e54b5c994..3a7d5074f 100644
--- a/icu4c/source/data/zone/lt.txt
+++ b/icu4c/source/data/zone/lt.txt
@@ -426,9 +426,6 @@ lt{
"America:New_York"{
ec{"Niujorkas"}
}
- "America:Nipigon"{
- ec{"Nipigonas"}
- }
"America:Nome"{
ec{"Nomas"}
}
@@ -447,9 +444,6 @@ lt{
"America:Ojinaga"{
ec{"Ochinaga"}
}
- "America:Pangnirtung"{
- ec{"Pangnirtungas"}
- }
"America:Paramaribo"{
ec{"Paramaribas"}
}
@@ -471,9 +465,6 @@ lt{
"America:Punta_Arenas"{
ec{"Punta Arenasas"}
}
- "America:Rainy_River"{
- ec{"Reini Riveris"}
- }
"America:Rankin_Inlet"{
ec{"Rankin Inletas"}
}
@@ -489,9 +480,6 @@ lt{
"America:Rio_Branco"{
ec{"Rio Brankas"}
}
- "America:Santa_Isabel"{
- ec{"Santa Izabelė"}
- }
"America:Santarem"{
ec{"Santarenas"}
}
@@ -534,9 +522,6 @@ lt{
"America:Thule"{
ec{"Kanakas"}
}
- "America:Thunder_Bay"{
- ec{"Tander Bėjus"}
- }
"America:Tijuana"{
ec{"Tichuana"}
}
@@ -555,9 +540,6 @@ lt{
"America:Yakutat"{
ec{"Jakutatas"}
}
- "America:Yellowknife"{
- ec{"Jelounaifas"}
- }
"Antarctica:Casey"{
ec{"Keisis"}
}
@@ -861,9 +843,6 @@ lt{
"Australia:Broken_Hill"{
ec{"Broken Hilis"}
}
- "Australia:Currie"{
- ec{"Karis"}
- }
"Australia:Darwin"{
ec{"Darvinas"}
}
@@ -1034,9 +1013,6 @@ lt{
"Europe:Ulyanovsk"{
ec{"Uljanovskas"}
}
- "Europe:Uzhgorod"{
- ec{"Užhorodas"}
- }
"Europe:Vaduz"{
ec{"Vaducas"}
}
@@ -1055,9 +1031,6 @@ lt{
"Europe:Zagreb"{
ec{"Zagrebas"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporožė"}
- }
"Europe:Zurich"{
ec{"Ciurichas"}
}
@@ -1139,9 +1112,6 @@ lt{
"Pacific:Honolulu"{
ec{"Honolulu"}
}
- "Pacific:Johnston"{
- ec{"Džonstonas"}
- }
"Pacific:Kiritimati"{
ec{"Kiritimatis"}
}
@@ -1585,9 +1555,6 @@ lt{
lg{"Makau laikas"}
ls{"Makau žiemos laikas"}
}
- "meta:Macquarie"{
- ls{"Makvorio Salos laikas"}
- }
"meta:Magadan"{
ld{"Magadano vasaros laikas"}
lg{"Magadano laikas"}
@@ -1613,11 +1580,6 @@ lt{
"meta:Mawson"{
ls{"Mosono laikas"}
}
- "meta:Mexico_Northwest"{
- ld{"Šiaurės Vakarų Meksikos vasaros laikas"}
- lg{"Šiaurės Vakarų Meksikos laikas"}
- ls{"Šiaurės Vakarų Meksikos žiemos laikas"}
- }
"meta:Mexico_Pacific"{
ld{"Meksikos Ramiojo vandenyno vasaros laikas"}
lg{"Meksikos Ramiojo vandenyno laikas"}
diff --git a/icu4c/source/data/zone/lv.txt b/icu4c/source/data/zone/lv.txt
index bcf1c57f2..49126fba2 100644
--- a/icu4c/source/data/zone/lv.txt
+++ b/icu4c/source/data/zone/lv.txt
@@ -399,9 +399,6 @@ lv{
"America:New_York"{
ec{"Ņujorka"}
}
- "America:Nipigon"{
- ec{"Nipigona"}
- }
"America:Nome"{
ec{"Noma"}
}
@@ -420,9 +417,6 @@ lv{
"America:Ojinaga"{
ec{"Ohinaga"}
}
- "America:Pangnirtung"{
- ec{"Pannirtuna"}
- }
"America:Phoenix"{
ec{"Fīniksa"}
}
@@ -441,9 +435,6 @@ lv{
"America:Punta_Arenas"{
ec{"Puntaarenasa"}
}
- "America:Rainy_River"{
- ec{"Reinirivera"}
- }
"America:Rankin_Inlet"{
ec{"Rankininleta"}
}
@@ -459,9 +450,6 @@ lv{
"America:Rio_Branco"{
ec{"Riobranko"}
}
- "America:Santa_Isabel"{
- ec{"Santaisabela"}
- }
"America:Santarem"{
ec{"Santarena"}
}
@@ -504,9 +492,6 @@ lv{
"America:Thule"{
ec{"Tule"}
}
- "America:Thunder_Bay"{
- ec{"Tanderbeja"}
- }
"America:Tijuana"{
ec{"Tihuana"}
}
@@ -522,9 +507,6 @@ lv{
"America:Yakutat"{
ec{"Jakutata"}
}
- "America:Yellowknife"{
- ec{"Jelounaifa"}
- }
"Antarctica:Casey"{
ec{"Keisi"}
}
@@ -822,9 +804,6 @@ lv{
"Australia:Broken_Hill"{
ec{"Brokenhila"}
}
- "Australia:Currie"{
- ec{"Kari"}
- }
"Australia:Darwin"{
ec{"Dārvina"}
}
@@ -986,9 +965,6 @@ lv{
"Europe:Ulyanovsk"{
ec{"Uļjanovska"}
}
- "Europe:Uzhgorod"{
- ec{"Užhoroda"}
- }
"Europe:Vaduz"{
ec{"Vaduca"}
}
@@ -1010,9 +986,6 @@ lv{
"Europe:Zagreb"{
ec{"Zagreba"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporožje"}
- }
"Europe:Zurich"{
ec{"Cīrihe"}
}
@@ -1085,9 +1058,6 @@ lv{
"Pacific:Honolulu"{
ec{"Honolulu"}
}
- "Pacific:Johnston"{
- ec{"Džonstona atols"}
- }
"Pacific:Kanton"{
ec{"Kantona"}
}
@@ -1506,9 +1476,6 @@ lv{
lg{"Lorda Hava salas laiks"}
ls{"Lorda Hava salas ziemas laiks"}
}
- "meta:Macquarie"{
- ls{"Makvorija salas laiks"}
- }
"meta:Magadan"{
ld{"Magadanas vasaras laiks"}
lg{"Magadanas laiks"}
@@ -1534,11 +1501,6 @@ lv{
"meta:Mawson"{
ls{"Mosonas laiks"}
}
- "meta:Mexico_Northwest"{
- ld{"Ziemeļrietumu Meksikas vasaras laiks"}
- lg{"Ziemeļrietumu Meksikas laiks"}
- ls{"Ziemeļrietumu Meksikas ziemas laiks"}
- }
"meta:Mexico_Pacific"{
ld{"Meksikas Klusā okeāna piekrastes vasaras laiks"}
lg{"Meksikas Klusā okeāna piekrastes laiks"}
diff --git a/icu4c/source/data/zone/mai.txt b/icu4c/source/data/zone/mai.txt
index 5e7e086e9..dac005d01 100644
--- a/icu4c/source/data/zone/mai.txt
+++ b/icu4c/source/data/zone/mai.txt
@@ -462,9 +462,6 @@ mai{
"America:New_York"{
ec{"न्यूयार्क"}
}
- "America:Nipigon"{
- ec{"निपिगान"}
- }
"America:Nome"{
ec{"नोम"}
}
@@ -486,9 +483,6 @@ mai{
"America:Panama"{
ec{"पनामा"}
}
- "America:Pangnirtung"{
- ec{"पैंगनिरटंग"}
- }
"America:Paramaribo"{
ec{"पारामारिबो"}
}
@@ -510,9 +504,6 @@ mai{
"America:Punta_Arenas"{
ec{"पुंटा अरेनाज"}
}
- "America:Rainy_River"{
- ec{"रेनी रिवर"}
- }
"America:Rankin_Inlet"{
ec{"रेंकिन इनलेट"}
}
@@ -573,9 +564,6 @@ mai{
"America:Thule"{
ec{"तुले"}
}
- "America:Thunder_Bay"{
- ec{"थंडर बे"}
- }
"America:Tijuana"{
ec{"तिजुआना"}
}
@@ -597,9 +585,6 @@ mai{
"America:Yakutat"{
ec{"यकुटाट"}
}
- "America:Yellowknife"{
- ec{"येलोनाइफ"}
- }
"Antarctica:Casey"{
ec{"केसी"}
}
@@ -1077,9 +1062,6 @@ mai{
"Europe:Ulyanovsk"{
ec{"उल्येनोबोस्क"}
}
- "Europe:Uzhgorod"{
- ec{"उझोरोद"}
- }
"Europe:Vaduz"{
ec{"बेदुज"}
}
@@ -1101,9 +1083,6 @@ mai{
"Europe:Zagreb"{
ec{"जगरैब"}
}
- "Europe:Zaporozhye"{
- ec{"जपोरोजाए"}
- }
"Europe:Zurich"{
ec{"ज्यूरिख"}
}
@@ -1461,9 +1440,6 @@ mai{
lg{"लार्ड होबे टाइम"}
ls{"लार्ड होबे मानक टाइम"}
}
- "meta:Macquarie"{
- ls{"मेक्वैरी द्वीप टाइम"}
- }
"meta:Magadan"{
ld{"मगादान समर टाइम"}
lg{"मगादान टाइम"}
@@ -1480,11 +1456,6 @@ mai{
lg{"मारीशस टाइम"}
ls{"मारीशस मानक टाइम"}
}
- "meta:Mexico_Northwest"{
- ld{"उत्तर-पश्चिमी मैक्सिको डेलाइट टाइम"}
- lg{"उत्तर-पश्चिमी मैक्सिको टाइम"}
- ls{"उत्तर-पश्चिमी मैक्सिको मानक टाइम"}
- }
"meta:Mexico_Pacific"{
ld{"मैक्सिकन पेसिफिक डेलाइट टाइम"}
lg{"मैक्सिकन पेसिफिक टाइम"}
diff --git a/icu4c/source/data/zone/mi.txt b/icu4c/source/data/zone/mi.txt
index 36a143bc2..35e7ade84 100644
--- a/icu4c/source/data/zone/mi.txt
+++ b/icu4c/source/data/zone/mi.txt
@@ -87,9 +87,6 @@ mi{
"America:St_Vincent"{
ec{"Hato Wēneti"}
}
- "America:Thunder_Bay"{
- ec{"Whaitiri Pei"}
- }
"America:Toronto"{
ec{"Tāroto"}
}
@@ -680,9 +677,6 @@ mi{
lg{"Wā Lord Howe"}
ls{"Wā Lord Howe Arowhānui"}
}
- "meta:Macquarie"{
- ls{"Wā o Te Moutere Makoare"}
- }
"meta:Magadan"{
ld{"Wā Magadan Raumati"}
lg{"Wā Magadan"}
@@ -708,11 +702,6 @@ mi{
"meta:Mawson"{
ls{"Wā Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Wā Awatea o Mēhiko ki te uru-mā-raki"}
- lg{"Wā Mēhiko ki te uru-mā-raki"}
- ls{"Wā Arowhānui o Mēhiko ki te uru-mā-raki"}
- }
"meta:Mexico_Pacific"{
ld{"Wā Awatea Mēhiko Kiwa"}
lg{"Wā Mēhiko Kiwa"}
diff --git a/icu4c/source/data/zone/mk.txt b/icu4c/source/data/zone/mk.txt
index 4b6ed66e5..a7355ff3e 100644
--- a/icu4c/source/data/zone/mk.txt
+++ b/icu4c/source/data/zone/mk.txt
@@ -465,9 +465,6 @@ mk{
"America:New_York"{
ec{"Њујорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -489,9 +486,6 @@ mk{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртунг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -513,9 +507,6 @@ mk{
"America:Punta_Arenas"{
ec{"Пунта Аренас"}
}
- "America:Rainy_River"{
- ec{"Рејни Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Ренкин Инлет"}
}
@@ -531,9 +522,6 @@ mk{
"America:Rio_Branco"{
ec{"Рио Бранко"}
}
- "America:Santa_Isabel"{
- ec{"Света Изабела"}
- }
"America:Santarem"{
ec{"Сантарем"}
}
@@ -579,9 +567,6 @@ mk{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тандр Беј"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -603,9 +588,6 @@ mk{
"America:Yakutat"{
ec{"Јакутат"}
}
- "America:Yellowknife"{
- ec{"Јелоунајф"}
- }
"Antarctica:Casey"{
ec{"Кејси"}
}
@@ -930,9 +912,6 @@ mk{
"Australia:Broken_Hill"{
ec{"Брокен Хил"}
}
- "Australia:Currie"{
- ec{"Курие"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1115,9 +1094,6 @@ mk{
"Europe:Ulyanovsk"{
ec{"Улјановск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуц"}
}
@@ -1139,9 +1115,6 @@ mk{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожје"}
- }
"Europe:Zurich"{
ec{"Цирих"}
}
@@ -1223,9 +1196,6 @@ mk{
"Pacific:Honolulu"{
ec{"Хонолулу"}
}
- "Pacific:Johnston"{
- ec{"Џонстон"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1659,9 +1629,6 @@ mk{
lg{"Време во Лорд Хау"}
ls{"Стандардно време во Лорд Хау"}
}
- "meta:Macquarie"{
- ls{"Време на Островот Макуари"}
- }
"meta:Magadan"{
ld{"Летно време во Магадан"}
lg{"Време во Магадан"}
@@ -1687,11 +1654,6 @@ mk{
"meta:Mawson"{
ls{"Време во Мосон"}
}
- "meta:Mexico_Northwest"{
- ld{"Летно сметање на времето во северозападно Мексико"}
- lg{"Време во северозападно Мексико"}
- ls{"Стандардно време во северозападно Мексико"}
- }
"meta:Mexico_Pacific"{
ld{"Летно пацифичко време во Мексико"}
lg{"Пацифичко време во Мексико"}
diff --git a/icu4c/source/data/zone/ml.txt b/icu4c/source/data/zone/ml.txt
index 64e811d9c..d9901777d 100644
--- a/icu4c/source/data/zone/ml.txt
+++ b/icu4c/source/data/zone/ml.txt
@@ -465,9 +465,6 @@ ml{
"America:New_York"{
ec{"ന്യൂയോർക്ക്"}
}
- "America:Nipigon"{
- ec{"നിപ്പിഗോൺ"}
- }
"America:Nome"{
ec{"നോം"}
}
@@ -489,9 +486,6 @@ ml{
"America:Panama"{
ec{"പനാമ"}
}
- "America:Pangnirtung"{
- ec{"പാൻഗ്‌നിറ്റംഗ്"}
- }
"America:Paramaribo"{
ec{"പരാമാരിബോ"}
}
@@ -513,9 +507,6 @@ ml{
"America:Punta_Arenas"{
ec{"പുന്റ അരീനസ്"}
}
- "America:Rainy_River"{
- ec{"റെയ്നി റിവർ"}
- }
"America:Rankin_Inlet"{
ec{"റാങ്കിൻ ഇൻലെറ്റ്"}
}
@@ -531,9 +522,6 @@ ml{
"America:Rio_Branco"{
ec{"റിയോ ബ്രാങ്കോ"}
}
- "America:Santa_Isabel"{
- ec{"സാന്ത ഇസബേൽ"}
- }
"America:Santarem"{
ec{"സാന്ററെം"}
}
@@ -579,9 +567,6 @@ ml{
"America:Thule"{
ec{"തൂളി"}
}
- "America:Thunder_Bay"{
- ec{"തണ്ടർ ബേ"}
- }
"America:Tijuana"{
ec{"തിയുവാന"}
}
@@ -603,9 +588,6 @@ ml{
"America:Yakutat"{
ec{"യാകുറ്റാറ്റ്"}
}
- "America:Yellowknife"{
- ec{"യെല്ലോനൈഫ്"}
- }
"Antarctica:Casey"{
ec{"കാസെ"}
}
@@ -930,9 +912,6 @@ ml{
"Australia:Broken_Hill"{
ec{"ബ്രോക്കൺ ഹിൽ"}
}
- "Australia:Currie"{
- ec{"ക്യൂറി"}
- }
"Australia:Darwin"{
ec{"ഡാർവിൻ"}
}
@@ -1115,9 +1094,6 @@ ml{
"Europe:Ulyanovsk"{
ec{"ഉല്ല്യാനോവ്‌സ്‌ക്"}
}
- "Europe:Uzhgorod"{
- ec{"ഉസ്ഗൊറോഡ്"}
- }
"Europe:Vaduz"{
ec{"വാദുസ്"}
}
@@ -1139,9 +1115,6 @@ ml{
"Europe:Zagreb"{
ec{"സാക്രെബ്"}
}
- "Europe:Zaporozhye"{
- ec{"സാപ്പറോസൈ"}
- }
"Europe:Zurich"{
ec{"സൂറിച്ച്"}
}
@@ -1223,9 +1196,6 @@ ml{
"Pacific:Honolulu"{
ec{"ഹോണലൂലു"}
}
- "Pacific:Johnston"{
- ec{"ജോൺസ്റ്റൺ"}
- }
"Pacific:Kanton"{
ec{"കാൻട്ടൻ"}
}
@@ -1682,9 +1652,6 @@ ml{
lg{"മകൌ സമയം"}
ls{"മകൌ സ്റ്റാൻഡേർഡ് സമയം"}
}
- "meta:Macquarie"{
- ls{"മക്വാറി ദ്വീപ് സമയം"}
- }
"meta:Magadan"{
ld{"മഗാദൻ ഗ്രീഷ്‌മകാല സമയം"}
lg{"മഗാദൻ സമയം"}
@@ -1710,11 +1677,6 @@ ml{
"meta:Mawson"{
ls{"മാസൺ സമയം"}
}
- "meta:Mexico_Northwest"{
- ld{"വടക്കുപടിഞ്ഞാറൻ മെക്സിക്കൻ ഡേലൈറ്റ് സമയം"}
- lg{"വടക്കുപടിഞ്ഞാറൻ മെക്സിക്കൻ സമയം"}
- ls{"വടക്കുപടിഞ്ഞാറൻ മെക്‌സിക്കൻ സ്റ്റാൻഡേർഡ് സമയം"}
- }
"meta:Mexico_Pacific"{
ld{"മെക്സിക്കൻ പസഫിക് ഡേലൈറ്റ് സമയം"}
lg{"മെക്സിക്കൻ പസഫിക് സമയം"}
diff --git a/icu4c/source/data/zone/mn.txt b/icu4c/source/data/zone/mn.txt
index 858d16263..80a69a1dc 100644
--- a/icu4c/source/data/zone/mn.txt
+++ b/icu4c/source/data/zone/mn.txt
@@ -465,9 +465,6 @@ mn{
"America:New_York"{
ec{"Нью-Йорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -489,9 +486,6 @@ mn{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртунг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -513,9 +507,6 @@ mn{
"America:Punta_Arenas"{
ec{"Пунта Арена"}
}
- "America:Rainy_River"{
- ec{"Рейни Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Рэнкин Инлет"}
}
@@ -531,9 +522,6 @@ mn{
"America:Rio_Branco"{
ec{"Рио-Бранко"}
}
- "America:Santa_Isabel"{
- ec{"Санта Изабель"}
- }
"America:Santarem"{
ec{"Сантарем"}
}
@@ -579,9 +567,6 @@ mn{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Сандер Бэй"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -603,9 +588,6 @@ mn{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Йелоунайф"}
- }
"Antarctica:Casey"{
ec{"Кэсей"}
}
@@ -930,9 +912,6 @@ mn{
"Australia:Broken_Hill"{
ec{"Брокен Хилл"}
}
- "Australia:Currie"{
- ec{"Кюрри"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1115,9 +1094,6 @@ mn{
"Europe:Ulyanovsk"{
ec{"Ульяновск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуз"}
}
@@ -1139,9 +1115,6 @@ mn{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожье"}
- }
"Europe:Zurich"{
ec{"Цюрих"}
}
@@ -1223,9 +1196,6 @@ mn{
"Pacific:Honolulu"{
ec{"Хонолулу"}
}
- "Pacific:Johnston"{
- ec{"Жонстон"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1640,9 +1610,6 @@ mn{
lg{"Лорд Хоугийн цаг"}
ls{"Лорд Хоугийн стандарт цаг"}
}
- "meta:Macquarie"{
- ls{"Маккуори Арлын цаг"}
- }
"meta:Magadan"{
ld{"Магаданы зуны цаг"}
lg{"Магаданы цаг"}
@@ -1668,11 +1635,6 @@ mn{
"meta:Mawson"{
ls{"Моусоны цаг"}
}
- "meta:Mexico_Northwest"{
- ld{"Баруун хойд Мексикийн зуны цаг"}
- lg{"Баруун хойд Мексикийн цаг"}
- ls{"Баруун хойд Мексикийн стандарт цаг"}
- }
"meta:Mexico_Pacific"{
ld{"Мексик-Номхон далайн зуны цаг"}
lg{"Мексик-Номхон далайн цаг"}
diff --git a/icu4c/source/data/zone/mr.txt b/icu4c/source/data/zone/mr.txt
index 38bbb59e9..57ea52b91 100644
--- a/icu4c/source/data/zone/mr.txt
+++ b/icu4c/source/data/zone/mr.txt
@@ -465,9 +465,6 @@ mr{
"America:New_York"{
ec{"न्यूयॉर्क"}
}
- "America:Nipigon"{
- ec{"निपिगोन"}
- }
"America:Nome"{
ec{"नोम"}
}
@@ -489,9 +486,6 @@ mr{
"America:Panama"{
ec{"पनामा"}
}
- "America:Pangnirtung"{
- ec{"पँगनिरतुंग"}
- }
"America:Paramaribo"{
ec{"पारमरीबो"}
}
@@ -513,9 +507,6 @@ mr{
"America:Punta_Arenas"{
ec{"पुंता अरीनास"}
}
- "America:Rainy_River"{
- ec{"रेनी नदी"}
- }
"America:Rankin_Inlet"{
ec{"रॅनकिन इनलेट"}
}
@@ -531,9 +522,6 @@ mr{
"America:Rio_Branco"{
ec{"रियो ब्रांको"}
}
- "America:Santa_Isabel"{
- ec{"सांता इसाबेल"}
- }
"America:Santarem"{
ec{"सँटारेम"}
}
@@ -579,9 +567,6 @@ mr{
"America:Thule"{
ec{"थुले"}
}
- "America:Thunder_Bay"{
- ec{"थंडर उपसागर"}
- }
"America:Tijuana"{
ec{"तिजुआना"}
}
@@ -603,9 +588,6 @@ mr{
"America:Yakutat"{
ec{"यकुतात"}
}
- "America:Yellowknife"{
- ec{"यलोनाइफ"}
- }
"Antarctica:Casey"{
ec{"कॅसे"}
}
@@ -930,9 +912,6 @@ mr{
"Australia:Broken_Hill"{
ec{"ब्रोकन हिल"}
}
- "Australia:Currie"{
- ec{"कुह्री"}
- }
"Australia:Darwin"{
ec{"डार्विन"}
}
@@ -1115,9 +1094,6 @@ mr{
"Europe:Ulyanovsk"{
ec{"उल्यानोव्स्क"}
}
- "Europe:Uzhgorod"{
- ec{"उझहोरोड"}
- }
"Europe:Vaduz"{
ec{"वडूझ"}
}
@@ -1139,9 +1115,6 @@ mr{
"Europe:Zagreb"{
ec{"झॅग्रेब"}
}
- "Europe:Zaporozhye"{
- ec{"झापोरोझे"}
- }
"Europe:Zurich"{
ec{"झुरिक"}
}
@@ -1223,9 +1196,6 @@ mr{
"Pacific:Honolulu"{
ec{"होनोलुलू"}
}
- "Pacific:Johnston"{
- ec{"जोहान्स्टन"}
- }
"Pacific:Kanton"{
ec{"कँटन"}
}
@@ -1682,9 +1652,6 @@ mr{
lg{"मकाऊ वेळ"}
ls{"मकाऊ प्रमाणवेळ"}
}
- "meta:Macquarie"{
- ls{"मॅक्वेरी बेट वेळ"}
- }
"meta:Magadan"{
ld{"मॅगाडन उन्हाळी वेळ"}
lg{"मॅगाडन वेळ"}
@@ -1710,11 +1677,6 @@ mr{
"meta:Mawson"{
ls{"मॉसन वेळ"}
}
- "meta:Mexico_Northwest"{
- ld{"वायव्य मेक्सिको सूर्यप्रकाश वेळ"}
- lg{"वायव्य मेक्सिको वेळ"}
- ls{"वायव्य मेक्सिको प्रमाण वेळ"}
- }
"meta:Mexico_Pacific"{
ld{"मेक्सिको पॅसिफिक सूर्यप्रकाश वेळ"}
lg{"मेक्सिको पॅसिफिक वेळ"}
diff --git a/icu4c/source/data/zone/ms.txt b/icu4c/source/data/zone/ms.txt
index 998900f3e..c3d330261 100644
--- a/icu4c/source/data/zone/ms.txt
+++ b/icu4c/source/data/zone/ms.txt
@@ -24,12 +24,6 @@ ms{
"America:Merida"{
ec{"Merida"}
}
- "America:Rainy_River"{
- ec{"Sungai Rainy"}
- }
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"Saint Barthelemy"}
}
@@ -48,9 +42,6 @@ ms{
"Asia:Singapore"{
ec{"Singapura"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Waktu Universal Selaras"}
}
@@ -450,9 +441,6 @@ ms{
lg{"Waktu Macao"}
ls{"Waktu Piawai Macao"}
}
- "meta:Macquarie"{
- ls{"Waktu Pulau Macquarie"}
- }
"meta:Magadan"{
ld{"Waktu Musim Panas Magadan"}
lg{"Waktu Magadan"}
@@ -479,11 +467,6 @@ ms{
"meta:Mawson"{
ls{"Waktu Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Waktu Siang Barat Laut Mexico"}
- lg{"Waktu Barat Laut Mexico"}
- ls{"Waktu Piawai Barat Laut Mexico"}
- }
"meta:Mexico_Pacific"{
ld{"Waktu Siang Pasifik Mexico"}
lg{"Waktu Pasifik Mexico"}
diff --git a/icu4c/source/data/zone/mt.txt b/icu4c/source/data/zone/mt.txt
index 4812f06f5..29c39237a 100644
--- a/icu4c/source/data/zone/mt.txt
+++ b/icu4c/source/data/zone/mt.txt
@@ -36,9 +36,6 @@ mt{
"Atlantic:South_Georgia"{
ec{"il-Georgia tan-Nofsinhar"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:Unknown"{
ec{"Belt Mhux Magħruf"}
}
diff --git a/icu4c/source/data/zone/my.txt b/icu4c/source/data/zone/my.txt
index fc28ae355..51f5e9b01 100644
--- a/icu4c/source/data/zone/my.txt
+++ b/icu4c/source/data/zone/my.txt
@@ -465,9 +465,6 @@ my{
"America:New_York"{
ec{"နယူးယောက်"}
}
- "America:Nipigon"{
- ec{"နီပီဂွန်"}
- }
"America:Nome"{
ec{"နိုမီ"}
}
@@ -489,9 +486,6 @@ my{
"America:Panama"{
ec{"ပနားမား"}
}
- "America:Pangnirtung"{
- ec{"ဖန်ဂ်နသ်တံ"}
- }
"America:Paramaribo"{
ec{"ပါရာမာရီဘို"}
}
@@ -513,9 +507,6 @@ my{
"America:Punta_Arenas"{
ec{"ပွန်တာ အရီနာစ်"}
}
- "America:Rainy_River"{
- ec{"ရိမ်းနီး ရီဗာ"}
- }
"America:Rankin_Inlet"{
ec{"ရန်ကင် အင်းလက်"}
}
@@ -531,9 +522,6 @@ my{
"America:Rio_Branco"{
ec{"ရီယို ဘရန်ကို"}
}
- "America:Santa_Isabel"{
- ec{"ဆန်တာ အစ္ဇဘဲလ်"}
- }
"America:Santarem"{
ec{"ဆန်တာရမ်"}
}
@@ -579,9 +567,6 @@ my{
"America:Thule"{
ec{"သုလီ"}
}
- "America:Thunder_Bay"{
- ec{"သန်းန်ဒါး ဘေး"}
- }
"America:Tijuana"{
ec{"တီဂွါနာ"}
}
@@ -603,9 +588,6 @@ my{
"America:Yakutat"{
ec{"ရာကုတတ်"}
}
- "America:Yellowknife"{
- ec{"ရဲလိုနိုက်ဖ်"}
- }
"Antarctica:Casey"{
ec{"ကေစီ"}
}
@@ -930,9 +912,6 @@ my{
"Australia:Broken_Hill"{
ec{"ဘရိုကင်ဟီးလ်"}
}
- "Australia:Currie"{
- ec{"ကာရီ"}
- }
"Australia:Darwin"{
ec{"ဒါဝင်"}
}
@@ -1115,9 +1094,6 @@ my{
"Europe:Ulyanovsk"{
ec{"အူလီယာနိုစကစ်ဖ်"}
}
- "Europe:Uzhgorod"{
- ec{"ဥဇ်ဂိုရို့တ်"}
- }
"Europe:Vaduz"{
ec{"ဗာဒူးစ်"}
}
@@ -1139,9 +1115,6 @@ my{
"Europe:Zagreb"{
ec{"ဇာဂ်ဂရက်ဘ်"}
}
- "Europe:Zaporozhye"{
- ec{"ဇာဖိုရိုးစ်ဂျာ"}
- }
"Europe:Zurich"{
ec{"ဇူးရစ်ချ်"}
}
@@ -1223,9 +1196,6 @@ my{
"Pacific:Honolulu"{
ec{"ဟိုနိုလူလူ"}
}
- "Pacific:Johnston"{
- ec{"ဂျွန်စတန်"}
- }
"Pacific:Kanton"{
ec{"ကန်တွန်"}
}
@@ -1648,9 +1618,6 @@ my{
lg{"မကာအို အချိန်"}
ls{"မကာအို စံတော်ချိန်"}
}
- "meta:Macquarie"{
- ls{"မက်ကွယ်ရီကျွန်း အချိန်"}
- }
"meta:Magadan"{
ld{"မာဂါဒန်း နွေရာသီ အချိန်"}
lg{"မာဂါဒန်း အချိန်"}
@@ -1676,11 +1643,6 @@ my{
"meta:Mawson"{
ls{"မော်စွန် အချိန်"}
}
- "meta:Mexico_Northwest"{
- ld{"အနောက်တောင် မက္ကစီကို နွေရာသီ စံတော်ချိန်"}
- lg{"အနောက်တောင် မက္ကဆီကို အချိန်"}
- ls{"အနောက်တောင် မက္ကဆီကို စံတော်ချိန်"}
- }
"meta:Mexico_Pacific"{
ld{"မက္ကစီကန် ပစိဖိတ် နွေရာသီ စံတော်ချိန်"}
lg{"မက္ကဆီကန် ပစိဖိတ် အချိန်"}
diff --git a/icu4c/source/data/zone/ne.txt b/icu4c/source/data/zone/ne.txt
index 58d6b8e79..2d40a1db7 100644
--- a/icu4c/source/data/zone/ne.txt
+++ b/icu4c/source/data/zone/ne.txt
@@ -465,9 +465,6 @@ ne{
"America:New_York"{
ec{"न्युयोर्क"}
}
- "America:Nipigon"{
- ec{"निपिगन"}
- }
"America:Nome"{
ec{"नोम"}
}
@@ -489,9 +486,6 @@ ne{
"America:Panama"{
ec{"पानामा"}
}
- "America:Pangnirtung"{
- ec{"पाङ्निरतुङ"}
- }
"America:Paramaribo"{
ec{"पारामारिवो"}
}
@@ -513,9 +507,6 @@ ne{
"America:Punta_Arenas"{
ec{"पुन्टा अरिनाज"}
}
- "America:Rainy_River"{
- ec{"रेनिरिभर"}
- }
"America:Rankin_Inlet"{
ec{"रान्किन इन्लेट"}
}
@@ -531,9 +522,6 @@ ne{
"America:Rio_Branco"{
ec{"रियो ब्रान्को"}
}
- "America:Santa_Isabel"{
- ec{"सान्टा ईसाबेल"}
- }
"America:Santarem"{
ec{"सान्टारेम"}
}
@@ -579,9 +567,6 @@ ne{
"America:Thule"{
ec{"थुले"}
}
- "America:Thunder_Bay"{
- ec{"थण्डर बे"}
- }
"America:Tijuana"{
ec{"तिजुआना"}
}
@@ -603,9 +588,6 @@ ne{
"America:Yakutat"{
ec{"याकुटाट"}
}
- "America:Yellowknife"{
- ec{"येल्लोनाइफ"}
- }
"Antarctica:Casey"{
ec{"केजे"}
}
@@ -930,9 +912,6 @@ ne{
"Australia:Broken_Hill"{
ec{"ब्रोकन हिल"}
}
- "Australia:Currie"{
- ec{"क्युरी"}
- }
"Australia:Darwin"{
ec{"डार्विन"}
}
@@ -1115,9 +1094,6 @@ ne{
"Europe:Ulyanovsk"{
ec{"उल्यानोभ्स्क"}
}
- "Europe:Uzhgorod"{
- ec{"उझगोरद"}
- }
"Europe:Vaduz"{
ec{"भाडुज"}
}
@@ -1139,9 +1115,6 @@ ne{
"Europe:Zagreb"{
ec{"जाग्रेब"}
}
- "Europe:Zaporozhye"{
- ec{"जापोरोझ्ये"}
- }
"Europe:Zurich"{
ec{"जुरिक"}
}
@@ -1223,9 +1196,6 @@ ne{
"Pacific:Honolulu"{
ec{"होनोलुलु"}
}
- "Pacific:Johnston"{
- ec{"जोन्सटन"}
- }
"Pacific:Kanton"{
ec{"कान्टोन"}
}
@@ -1640,9 +1610,6 @@ ne{
lg{"लर्ड हावे समय"}
ls{"लर्ड हावे मानक समय"}
}
- "meta:Macquarie"{
- ls{"माक्वेरी टापु समय"}
- }
"meta:Magadan"{
ld{"मागादान ग्रीष्मकालीन समय"}
lg{"मागादान समय"}
@@ -1668,11 +1635,6 @@ ne{
"meta:Mawson"{
ls{"म्वसन समय"}
}
- "meta:Mexico_Northwest"{
- ld{"उत्तर पश्चिम मेक्सिकोको दिवा समय"}
- lg{"उत्तर पश्चिम मेक्सिको समय"}
- ls{"उत्तर पश्चिम मेक्सिकोको मानक समय"}
- }
"meta:Mexico_Pacific"{
ld{"मेक्सिकन प्यासिफिक दिवा समय"}
lg{"मेक्सिकन प्यासिफिक समय"}
diff --git a/icu4c/source/data/zone/nl.txt b/icu4c/source/data/zone/nl.txt
index 3a60f5bb0..022c04c25 100644
--- a/icu4c/source/data/zone/nl.txt
+++ b/icu4c/source/data/zone/nl.txt
@@ -63,9 +63,6 @@ nl{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Noord-Dakota"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Sao_Paulo"{
ec{"São Paulo"}
}
@@ -198,9 +195,6 @@ nl{
"Atlantic:St_Helena"{
ec{"Sint-Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"gecoördineerde wereldtijd"}
}
@@ -259,9 +253,6 @@ nl{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Oezjhorod"}
- }
"Europe:Vatican"{
ec{"Vaticaanstad"}
}
@@ -274,9 +265,6 @@ nl{
"Europe:Warsaw"{
ec{"Warschau"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -342,9 +330,9 @@ nl{
ls{"West-Afrikaanse standaardtijd"}
}
"meta:Alaska"{
- ld{"Alaska Daylight Time"}
- lg{"Alaska Time"}
- ls{"Alaska Standard Time"}
+ ld{"Alaska-zomertijd"}
+ lg{"Alaska-tijd"}
+ ls{"Alaska-standaardtijd"}
sd{"AKDT"}
sg{"AKT"}
ss{"AKST"}
@@ -355,38 +343,38 @@ nl{
ls{"Alma-Ata-standaardtijd"}
}
"meta:Amazon"{
- ld{"Amazon Summer Time"}
- lg{"Amazon Time"}
- ls{"Amazon Standard Time"}
+ ld{"Amazone-zomertijd"}
+ lg{"Amazone-tijd"}
+ ls{"Amazone-standaardtijd"}
}
"meta:America_Central"{
- ld{"Central Daylight Time"}
- lg{"Central Time"}
- ls{"Central Standard Time"}
+ ld{"Central-zomertijd"}
+ lg{"Central-tijd"}
+ ls{"Central-standaardtijd"}
sd{"CDT"}
sg{"CT"}
ss{"CST"}
}
"meta:America_Eastern"{
- ld{"Eastern Daylight Time"}
- lg{"Eastern Time"}
- ls{"Eastern Standard Time"}
+ ld{"Eastern-zomertijd"}
+ lg{"Eastern-tijd"}
+ ls{"Eastern-standaardtijd"}
sd{"EDT"}
sg{"ET"}
ss{"EST"}
}
"meta:America_Mountain"{
- ld{"Mountain Daylight Time"}
- lg{"Mountain Time"}
- ls{"Mountain Standard Time"}
+ ld{"Mountain-zomertijd"}
+ lg{"Mountain-tijd"}
+ ls{"Mountain-standaardtijd"}
sd{"MDT"}
sg{"MT"}
ss{"MST"}
}
"meta:America_Pacific"{
- ld{"Pacific Daylight Time"}
- lg{"Pacific Time"}
- ls{"Pacific Standard Time"}
+ ld{"Pacific-zomertijd"}
+ lg{"Pacific-tijd"}
+ ls{"Pacific-standaardtijd"}
sd{"PDT"}
sg{"PT"}
ss{"PST"}
@@ -417,14 +405,14 @@ nl{
ls{"Arabische standaardtijd"}
}
"meta:Argentina"{
- ld{"Argentina Summer Time"}
- lg{"Argentina Time"}
- ls{"Argentina Standard Time"}
+ ld{"Argentijnse zomertijd"}
+ lg{"Argentijnse tijd"}
+ ls{"Argentijnse standaardtijd"}
}
"meta:Argentina_Western"{
- ld{"Western Argentina Summer Time"}
- lg{"Western Argentina Time"}
- ls{"Western Argentina Standard Time"}
+ ld{"West-Argentijnse zomertijd"}
+ lg{"West-Argentijnse tijd"}
+ ls{"West-Argentijnse standaardtijd"}
}
"meta:Armenia"{
ld{"Armeense zomertijd"}
@@ -432,9 +420,9 @@ nl{
ls{"Armeense standaardtijd"}
}
"meta:Atlantic"{
- ld{"Atlantic Daylight Time"}
- lg{"Atlantic Time"}
- ls{"Atlantic Standard Time"}
+ ld{"Atlantic-zomertijd"}
+ lg{"Atlantic-tijd"}
+ ls{"Atlantic-standaardtijd"}
sd{"ADT"}
sg{"AT"}
ss{"AST"}
@@ -478,12 +466,12 @@ nl{
ls{"Bhutaanse tijd"}
}
"meta:Bolivia"{
- ls{"Bolivia Time"}
+ ls{"Boliviaanse tijd"}
}
"meta:Brasilia"{
- ld{"Brasilia Summer Time"}
- lg{"Brasilia Time"}
- ls{"Brasilia Standard Time"}
+ ld{"Braziliaanse zomertijd"}
+ lg{"Braziliaanse tijd"}
+ ls{"Braziliaanse standaardtijd"}
}
"meta:Brunei"{
ls{"Bruneise tijd"}
@@ -505,9 +493,9 @@ nl{
ls{"Chatham-standaardtijd"}
}
"meta:Chile"{
- ld{"Chile Summer Time"}
- lg{"Chile Time"}
- ls{"Chile Standard Time"}
+ ld{"Chileense zomertijd"}
+ lg{"Chileense tijd"}
+ ls{"Chileense standaardtijd"}
}
"meta:China"{
ld{"Chinese zomertijd"}
@@ -526,9 +514,9 @@ nl{
ls{"Cocoseilandse tijd"}
}
"meta:Colombia"{
- ld{"Colombia Summer Time"}
- lg{"Colombia Time"}
- ls{"Colombia Standard Time"}
+ ld{"Colombiaanse zomertijd"}
+ lg{"Colombiaanse tijd"}
+ ls{"Colombiaanse standaardtijd"}
}
"meta:Cook"{
ld{"Cookeilandse halve zomertijd"}
@@ -536,9 +524,9 @@ nl{
ls{"Cookeilandse standaardtijd"}
}
"meta:Cuba"{
- ld{"Cuba Daylight Time"}
- lg{"Cuba Time"}
- ls{"Cuba Standard Time"}
+ ld{"Cubaanse zomertijd"}
+ lg{"Cubaanse tijd"}
+ ls{"Cubaanse standaardtijd"}
}
"meta:Davis"{
ls{"Davis-tijd"}
@@ -550,12 +538,12 @@ nl{
ls{"Oost-Timorese tijd"}
}
"meta:Easter"{
- ld{"Easter Island Summer Time"}
- lg{"Easter Island Time"}
- ls{"Easter Island Standard Time"}
+ ld{"Paaseilandse zomertijd"}
+ lg{"Paaseilandse tijd"}
+ ls{"Paaseilandse standaardtijd"}
}
"meta:Ecuador"{
- ls{"Ecuador Time"}
+ ls{"Ecuadoraanse tijd"}
}
"meta:Europe_Central"{
ld{"Midden-Europese zomertijd"}
@@ -585,9 +573,9 @@ nl{
ss{"WET"}
}
"meta:Falkland"{
- ld{"Falkland Islands Summer Time"}
- lg{"Falkland Islands Time"}
- ls{"Falkland Islands Standard Time"}
+ ld{"Falklandeilandse zomertijd"}
+ lg{"Falklandeilandse tijd"}
+ ls{"Falklandeilandse standaardtijd"}
}
"meta:Fiji"{
ld{"Fijische zomertijd"}
@@ -595,7 +583,7 @@ nl{
ls{"Fijische standaardtijd"}
}
"meta:French_Guiana"{
- ls{"French Guiana Time"}
+ ls{"Frans-Guyaanse tijd"}
}
"meta:French_Southern"{
ls{"Franse zuidelijke en Antarctische tijd"}
@@ -605,7 +593,7 @@ nl{
ss{"GMT"}
}
"meta:Galapagos"{
- ls{"Galapagos Time"}
+ ls{"Galapagoseilandse tijd"}
}
"meta:Gambier"{
ls{"Gambiereilandse tijd"}
@@ -619,14 +607,14 @@ nl{
ls{"Gilberteilandse tijd"}
}
"meta:Greenland_Eastern"{
- ld{"East Greenland Summer Time"}
- lg{"East Greenland Time"}
- ls{"East Greenland Standard Time"}
+ ld{"Oost-Groenlandse zomertijd"}
+ lg{"Oost-Groenlandse tijd"}
+ ls{"Oost-Groenlandse standaardtijd"}
}
"meta:Greenland_Western"{
- ld{"West Greenland Summer Time"}
- lg{"West Greenland Time"}
- ls{"West Greenland Standard Time"}
+ ld{"West-Groenlandse zomertijd"}
+ lg{"West-Groenlandse tijd"}
+ ls{"West-Groenlandse standaardtijd"}
}
"meta:Guam"{
ls{"Guamese standaardtijd"}
@@ -635,12 +623,12 @@ nl{
ls{"Golf-standaardtijd"}
}
"meta:Guyana"{
- ls{"Guyana Time"}
+ ls{"Guyaanse tijd"}
}
"meta:Hawaii_Aleutian"{
- ld{"Hawaii-Aleutian Daylight Time"}
- lg{"Hawaii-Aleutian Time"}
- ls{"Hawaii-Aleutian Standard Time"}
+ ld{"Hawaii-Aleoetische zomertijd"}
+ lg{"Hawaii-Aleoetische tijd"}
+ ls{"Hawaii-Aleoetische standaardtijd"}
sd{"HADT"}
sg{"HAT"}
ss{"HAST"}
@@ -736,9 +724,6 @@ nl{
lg{"Macause tijd"}
ls{"Macause standaardtijd"}
}
- "meta:Macquarie"{
- ls{"Macquarie-eilandse tijd"}
- }
"meta:Magadan"{
ld{"Magadan-zomertijd"}
lg{"Magadan-tijd"}
@@ -764,15 +749,10 @@ nl{
"meta:Mawson"{
ls{"Mawson-tijd"}
}
- "meta:Mexico_Northwest"{
- ld{"Northwest Mexico Daylight Time"}
- lg{"Northwest Mexico Time"}
- ls{"Northwest Mexico Standard Time"}
- }
"meta:Mexico_Pacific"{
- ld{"Mexican Pacific Daylight Time"}
- lg{"Mexican Pacific Time"}
- ls{"Mexican Pacific Standard Time"}
+ ld{"Mexicaanse Pacific-zomertijd"}
+ lg{"Mexicaanse Pacific-tijd"}
+ ls{"Mexicaanse Pacific-standaardtijd"}
}
"meta:Mongolia"{
ld{"Ulaanbaatar-zomertijd"}
@@ -804,9 +784,9 @@ nl{
ls{"Nieuw-Zeelandse standaardtijd"}
}
"meta:Newfoundland"{
- ld{"Newfoundland Daylight Time"}
- lg{"Newfoundland Time"}
- ls{"Newfoundland Standard Time"}
+ ld{"Newfoundland-zomertijd"}
+ lg{"Newfoundland-tijd"}
+ ls{"Newfoundland-standaardtijd"}
}
"meta:Niue"{
ls{"Niuese tijd"}
@@ -817,9 +797,9 @@ nl{
ls{"Norfolkeilandse standaardtijd"}
}
"meta:Noronha"{
- ld{"Fernando de Noronha Summer Time"}
- lg{"Fernando de Noronha Time"}
- ls{"Fernando de Noronha Standard Time"}
+ ld{"Fernando de Noronha-zomertijd"}
+ lg{"Fernando de Noronha-tijd"}
+ ls{"Fernando de Noronha-standaardtijd"}
}
"meta:North_Mariana"{
ls{"Noordelijk Mariaanse tijd"}
@@ -846,14 +826,14 @@ nl{
ls{"Papoea-Nieuw-Guineese tijd"}
}
"meta:Paraguay"{
- ld{"Paraguay Summer Time"}
- lg{"Paraguay Time"}
- ls{"Paraguay Standard Time"}
+ ld{"Paraguayaanse zomertijd"}
+ lg{"Paraguayaanse tijd"}
+ ls{"Paraguayaanse standaardtijd"}
}
"meta:Peru"{
- ld{"Peru Summer Time"}
- lg{"Peru Time"}
- ls{"Peru Standard Time"}
+ ld{"Peruaanse zomertijd"}
+ lg{"Peruaanse tijd"}
+ ls{"Peruaanse standaardtijd"}
}
"meta:Philippines"{
ld{"Filipijnse zomertijd"}
@@ -864,9 +844,9 @@ nl{
ls{"Phoenixeilandse tijd"}
}
"meta:Pierre_Miquelon"{
- ld{"St. Pierre & Miquelon Daylight Time"}
- lg{"St. Pierre & Miquelon Time"}
- ls{"St. Pierre & Miquelon Standard Time"}
+ ld{"Saint Pierre en Miquelon-zomertijd"}
+ lg{"Saint Pierre en Miquelon-tijd"}
+ ls{"Saint Pierre en Miquelon-standaardtijd"}
}
"meta:Pitcairn"{
ls{"Pitcairneilandse tijd"}
@@ -953,8 +933,8 @@ nl{
}
"meta:Uruguay"{
ld{"Uruguayaanse zomertijd"}
- lg{"Uruguay Time"}
- ls{"Uruguay Standard Time"}
+ lg{"Uruguayaanse tijd"}
+ ls{"Uruguayaanse standaardtijd"}
}
"meta:Uzbekistan"{
ld{"Oezbeekse zomertijd"}
@@ -999,7 +979,7 @@ nl{
ls{"Jekaterinenburg-standaardtijd"}
}
"meta:Yukon"{
- ls{"Yukon Time"}
+ ls{"Yukon-tijd"}
}
regionFormat{"tijd in {0}"}
regionFormatDaylight{"zomertijd in {0}"}
diff --git a/icu4c/source/data/zone/nn.txt b/icu4c/source/data/zone/nn.txt
index 9d20bab56..ef3e6b738 100644
--- a/icu4c/source/data/zone/nn.txt
+++ b/icu4c/source/data/zone/nn.txt
@@ -344,11 +344,6 @@ nn{
lg{"mauritisk tid"}
ls{"mauritisk normaltid"}
}
- "meta:Mexico_Northwest"{
- ld{"sommartid for nordvestlege Mexico"}
- lg{"tidssone for nordvestlege Mexico"}
- ls{"normaltid for nordvestlege Mexico"}
- }
"meta:Mexico_Pacific"{
ld{"sommartid for den meksikanske stillehavskysten"}
lg{"tidssone for den meksikanske stillehavskysten"}
diff --git a/icu4c/source/data/zone/no.txt b/icu4c/source/data/zone/no.txt
index 85fa1ef9d..d04287752 100644
--- a/icu4c/source/data/zone/no.txt
+++ b/icu4c/source/data/zone/no.txt
@@ -69,9 +69,6 @@ no{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Nord-Dakota"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -180,9 +177,6 @@ no{
"Atlantic:South_Georgia"{
ec{"Sør-Georgia"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"koordinert universaltid"}
}
@@ -243,9 +237,6 @@ no{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Uzjhorod"}
- }
"Europe:Vatican"{
ec{"Vatikanstaten"}
}
@@ -255,9 +246,6 @@ no{
"Europe:Warsaw"{
ec{"Warszawa"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizjzja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -720,9 +708,6 @@ no{
lg{"Macau-tid"}
ls{"Macau, standardtid"}
}
- "meta:Macquarie"{
- ls{"tidssone for Macquarieøya"}
- }
"meta:Magadan"{
ld{"sommertid for Magadan"}
lg{"tidssone for Magadan"}
@@ -748,11 +733,6 @@ no{
"meta:Mawson"{
ls{"tidssone for Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"sommertid for nordvestlige Mexico"}
- lg{"tidssone for nordvestlige Mexico"}
- ls{"normaltid for nordvestlige Mexico"}
- }
"meta:Mexico_Pacific"{
ld{"sommertid for den meksikanske Stillehavskysten"}
lg{"tidssone for den meksikanske Stillehavskysten"}
diff --git a/icu4c/source/data/zone/or.txt b/icu4c/source/data/zone/or.txt
index 55c232e1f..a705229c7 100644
--- a/icu4c/source/data/zone/or.txt
+++ b/icu4c/source/data/zone/or.txt
@@ -465,9 +465,6 @@ or{
"America:New_York"{
ec{"ନ୍ୟୁ ୟୋର୍କ୍"}
}
- "America:Nipigon"{
- ec{"ନିପିଗୋନ୍"}
- }
"America:Nome"{
ec{"ନୋମେ"}
}
@@ -489,9 +486,6 @@ or{
"America:Panama"{
ec{"ପାନାମା"}
}
- "America:Pangnirtung"{
- ec{"ପାଙ୍ଗନିର୍ଟୁଙ୍ଗ"}
- }
"America:Paramaribo"{
ec{"ପାରାମାରିବୋ"}
}
@@ -513,9 +507,6 @@ or{
"America:Punta_Arenas"{
ec{"ପୁଣ୍ଟା ଏରିନାସ୍‌"}
}
- "America:Rainy_River"{
- ec{"ରେଇନି ରିଭର୍"}
- }
"America:Rankin_Inlet"{
ec{"ରାନକିନ୍ ଇନଲେଟ୍"}
}
@@ -576,9 +567,6 @@ or{
"America:Thule"{
ec{"ଥୁଲେ"}
}
- "America:Thunder_Bay"{
- ec{"ଥଣ୍ଡର୍ ବେ"}
- }
"America:Tijuana"{
ec{"ତିଜୁଆନା"}
}
@@ -600,9 +588,6 @@ or{
"America:Yakutat"{
ec{"ୟାକୁଟାଟ୍"}
}
- "America:Yellowknife"{
- ec{"ୟେଲ୍ଲୋନାଇଫ୍"}
- }
"Antarctica:Casey"{
ec{"କାସେ"}
}
@@ -927,9 +912,6 @@ or{
"Australia:Broken_Hill"{
ec{"ବ୍ରୋକେନ୍‌ ହିଲ୍‌"}
}
- "Australia:Currie"{
- ec{"କ୍ୟୁରୀ"}
- }
"Australia:Darwin"{
ec{"ଡାରୱିନ୍‌"}
}
@@ -1112,9 +1094,6 @@ or{
"Europe:Ulyanovsk"{
ec{"ୟୁଲୟାନୋଭସ୍କ"}
}
- "Europe:Uzhgorod"{
- ec{"ଉଜହୋରୋଦ୍"}
- }
"Europe:Vaduz"{
ec{"ଭାଡୁଜ"}
}
@@ -1136,9 +1115,6 @@ or{
"Europe:Zagreb"{
ec{"ଜାଗ୍ରେବ୍"}
}
- "Europe:Zaporozhye"{
- ec{"ଜାପୋରୋଜହୟେ"}
- }
"Europe:Zurich"{
ec{"ଜୁରିକ୍"}
}
@@ -1220,9 +1196,6 @@ or{
"Pacific:Honolulu"{
ec{"ହୋନୋଲୁଲୁ"}
}
- "Pacific:Johnston"{
- ec{"ଜନଷ୍ଟନ୍"}
- }
"Pacific:Kanton"{
ec{"କ୍ୟାଣ୍ଟନ"}
}
@@ -1677,9 +1650,6 @@ or{
lg{"ମାକାଓ ସମୟ"}
ls{"ମକାଓ ମାନକ ସମୟ"}
}
- "meta:Macquarie"{
- ls{"ମାକ୍ୱେରୀ ଦ୍ୱୀପ ସମୟ"}
- }
"meta:Magadan"{
ld{"ମାଗାଡାନ୍ ଗ୍ରୀଷ୍ମକାଳ ସମୟ"}
lg{"ମାଗାଡାନ୍ ସମୟ"}
@@ -1705,11 +1675,6 @@ or{
"meta:Mawson"{
ls{"ମାୱସନ୍‌ ସମୟ"}
}
- "meta:Mexico_Northwest"{
- ld{"ଉତ୍ତରପଶ୍ଚିମ ମେକ୍ସିକୋ ଦିବାଲୋକ ସମୟ"}
- lg{"ଉତ୍ତରପଶ୍ଚିମ ମେକ୍ସିକୋ ସମୟ"}
- ls{"ଉତ୍ତରପଶ୍ଚିମ ମେକ୍ସିକୋ ମାନାଙ୍କ ସମୟ"}
- }
"meta:Mexico_Pacific"{
ld{"ମେକ୍ସିକାନ୍ ପାସିଫିକ୍ ଦିବାଲୋକ ସମୟ"}
lg{"ମେକ୍ସିକାନ୍ ପାସିଫିକ୍ ସମୟ"}
diff --git a/icu4c/source/data/zone/pa.txt b/icu4c/source/data/zone/pa.txt
index 8ab27eb07..83e8eb80f 100644
--- a/icu4c/source/data/zone/pa.txt
+++ b/icu4c/source/data/zone/pa.txt
@@ -465,9 +465,6 @@ pa{
"America:New_York"{
ec{"ਨਿਊ ਯਾਰਕ"}
}
- "America:Nipigon"{
- ec{"ਨਿਪਿਗੌਨ"}
- }
"America:Nome"{
ec{"ਨੋਮ"}
}
@@ -489,9 +486,6 @@ pa{
"America:Panama"{
ec{"ਪਨਾਮਾ"}
}
- "America:Pangnirtung"{
- ec{"ਪੈਂਗਨਿਰਟੰਗ"}
- }
"America:Paramaribo"{
ec{"ਪੈਰਾਮਰੀਬੋ"}
}
@@ -513,9 +507,6 @@ pa{
"America:Punta_Arenas"{
ec{"ਪੰਟਾ ਅਰੇਨਸ"}
}
- "America:Rainy_River"{
- ec{"ਰੇਨੀ ਰਿਵਰ"}
- }
"America:Rankin_Inlet"{
ec{"ਰੈਂਕਿਨ ਇਨਲੈਟ"}
}
@@ -531,9 +522,6 @@ pa{
"America:Rio_Branco"{
ec{"ਰੀਓ ਬ੍ਰਾਂਕੋ"}
}
- "America:Santa_Isabel"{
- ec{"ਸੈਂਟਾ ਇਸਾਬੇਲ"}
- }
"America:Santarem"{
ec{"ਸੇਂਟਾਰਮ"}
}
@@ -579,9 +567,6 @@ pa{
"America:Thule"{
ec{"ਥੁਲੇ"}
}
- "America:Thunder_Bay"{
- ec{"ਥੰਡਰ ਬੇ"}
- }
"America:Tijuana"{
ec{"ਟਿਜੂਆਨਾ"}
}
@@ -603,9 +588,6 @@ pa{
"America:Yakutat"{
ec{"ਯਕੁਤਤ"}
}
- "America:Yellowknife"{
- ec{"ਯੈਲੋਨਾਈਫ"}
- }
"Antarctica:Casey"{
ec{"ਕਾਸੇ"}
}
@@ -930,9 +912,6 @@ pa{
"Australia:Broken_Hill"{
ec{"ਬ੍ਰੋਕਨ ਹਿਲ"}
}
- "Australia:Currie"{
- ec{"ਕਰੀ"}
- }
"Australia:Darwin"{
ec{"ਡਾਰਵਿਨ"}
}
@@ -1115,9 +1094,6 @@ pa{
"Europe:Ulyanovsk"{
ec{"ਯੁਲਿਆਨੋਸਕ"}
}
- "Europe:Uzhgorod"{
- ec{"ਉਜ਼ਗੋਰੋਡ"}
- }
"Europe:Vaduz"{
ec{"ਵਾਡੁਜ਼"}
}
@@ -1139,9 +1115,6 @@ pa{
"Europe:Zagreb"{
ec{"ਜ਼ਗਰੇਬ"}
}
- "Europe:Zaporozhye"{
- ec{"ਜਪੋਰੋਜ਼ਾਏ"}
- }
"Europe:Zurich"{
ec{"ਜਿਊਰਿਖ"}
}
@@ -1223,9 +1196,6 @@ pa{
"Pacific:Honolulu"{
ec{"ਹੋਨੋਲੁਲੂ"}
}
- "Pacific:Johnston"{
- ec{"ਜੋਨਸਟਨ"}
- }
"Pacific:Kanton"{
ec{"ਕੈਂਟੋਨ"}
}
@@ -1670,9 +1640,6 @@ pa{
lg{"ਮਕਾਉ ਸਮਾਂ"}
ls{"ਮਕਾਉ ਮਿਆਰੀ ਸਮਾਂ"}
}
- "meta:Macquarie"{
- ls{"ਮੈਕਕਵੇਰੀ ਆਈਲੈਂਡ ਵੇਲਾ"}
- }
"meta:Magadan"{
ld{"ਮੈਗੇਡਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ"}
lg{"ਮੈਗੇਡਨ ਵੇਲਾ"}
@@ -1698,11 +1665,6 @@ pa{
"meta:Mawson"{
ls{"ਮੌਸਨ ਵੇਲਾ"}
}
- "meta:Mexico_Northwest"{
- ld{"ਉੱਤਰ ਪੱਛਮੀ ਮੈਕਸੀਕੋ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ"}
- lg{"ਉੱਤਰ ਪੱਛਮੀ ਮੈਕਸੀਕੋ ਵੇਲਾ"}
- ls{"ਉੱਤਰ ਪੱਛਮੀ ਮੈਕਸੀਕੋ ਮਿਆਰੀ ਵੇਲਾ"}
- }
"meta:Mexico_Pacific"{
ld{"ਮੈਕਸੀਕਨ ਪੈਸਿਫਿਕ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ"}
lg{"ਮੈਕਸੀਕਨ ਪੈਸਿਫਿਕ ਵੇਲਾ"}
diff --git a/icu4c/source/data/zone/pcm.txt b/icu4c/source/data/zone/pcm.txt
index afaf5281d..9215f6bb5 100644
--- a/icu4c/source/data/zone/pcm.txt
+++ b/icu4c/source/data/zone/pcm.txt
@@ -447,9 +447,6 @@ pcm{
"America:New_York"{
ec{"Niú Yọk"}
}
- "America:Nipigon"{
- ec{"Nípígọn"}
- }
"America:Nome"{
ec{"Noom"}
}
@@ -471,9 +468,6 @@ pcm{
"America:Panama"{
ec{"Pánáma"}
}
- "America:Pangnirtung"{
- ec{"Pangnírtung"}
- }
"America:Paramaribo"{
ec{"Párámaribo"}
}
@@ -495,9 +489,6 @@ pcm{
"America:Punta_Arenas"{
ec{"Púntá Arẹ́nas"}
}
- "America:Rainy_River"{
- ec{"Réní Ríva"}
- }
"America:Rankin_Inlet"{
ec{"Ránkín Ínlẹt"}
}
@@ -555,9 +546,6 @@ pcm{
"America:Thule"{
ec{"Túli"}
}
- "America:Thunder_Bay"{
- ec{"Tọ́nda Bè"}
- }
"America:Tijuana"{
ec{"Tikhuána"}
}
@@ -579,9 +567,6 @@ pcm{
"America:Yakutat"{
ec{"Yakútat"}
}
- "America:Yellowknife"{
- ec{"Yẹ́lónaif"}
- }
"Antarctica:Casey"{
ec{"Kési"}
}
@@ -888,9 +873,6 @@ pcm{
"Australia:Broken_Hill"{
ec{"Brókún Hil"}
}
- "Australia:Currie"{
- ec{"Kọ́ri"}
- }
"Australia:Darwin"{
ec{"Dárwin"}
}
@@ -1067,9 +1049,6 @@ pcm{
"Europe:Ulyanovsk"{
ec{"Uliánọvsk"}
}
- "Europe:Uzhgorod"{
- ec{"Ọ́zhọrọd"}
- }
"Europe:Vatican"{
ec{"Vátíkan"}
}
@@ -1088,9 +1067,6 @@ pcm{
"Europe:Zagreb"{
ec{"Zágrẹb"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporózhia"}
- }
"Europe:Zurich"{
ec{"Zúrik"}
}
@@ -1166,9 +1142,6 @@ pcm{
"Pacific:Guadalcanal"{
ec{"Guádálkanal"}
}
- "Pacific:Johnston"{
- ec{"Jọ́nstun"}
- }
"Pacific:Kiritimati"{
ec{"Kritímáti"}
}
@@ -1577,9 +1550,6 @@ pcm{
lg{"Lọd Haú Taim"}
ls{"Lọd Haú Fíksd Taim"}
}
- "meta:Macquarie"{
- ls{"Makwuéí Aíland Taim"}
- }
"meta:Magadan"{
ld{"Mágádan Họ́t Sízin Taim"}
lg{"Mágádan Taim"}
@@ -1605,11 +1575,6 @@ pcm{
"meta:Mawson"{
ls{"Mọ́sọn Taim"}
}
- "meta:Mexico_Northwest"{
- ld{"Nọ́twẹ́st Mẹ́ksíko Délaít Taim"}
- lg{"Nọ́twẹ́st Mẹ́ksíko Taim"}
- ls{"Nọ́twẹ́st Mẹ́ksíko Fíksd Taim"}
- }
"meta:Mexico_Pacific"{
ld{"Mẹ́ksíkó Pasífík Délaít Taim"}
lg{"Mẹ́ksíkó Pasífík Taim"}
diff --git a/icu4c/source/data/zone/pl.txt b/icu4c/source/data/zone/pl.txt
index be09d884c..cd76e1ddf 100644
--- a/icu4c/source/data/zone/pl.txt
+++ b/icu4c/source/data/zone/pl.txt
@@ -159,9 +159,6 @@ pl{
"America:Puerto_Rico"{
ec{"Portoryko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"Saint-Barthélemy"}
}
@@ -378,9 +375,6 @@ pl{
"Atlantic:St_Helena"{
ec{"Święta Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"uniwersalny czas koordynowany"}
}
@@ -496,9 +490,6 @@ pl{
"Europe:Ulyanovsk"{
ec{"Uljanowsk"}
}
- "Europe:Uzhgorod"{
- ec{"Użgorod"}
- }
"Europe:Vatican"{
ec{"Watykan"}
}
@@ -517,9 +508,6 @@ pl{
"Europe:Zagreb"{
ec{"Zagrzeb"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporoże"}
- }
"Europe:Zurich"{
ec{"Zurych"}
}
@@ -938,9 +926,6 @@ pl{
lg{"czas Lord Howe"}
ls{"Lord Howe (czas standardowy)"}
}
- "meta:Macquarie"{
- ls{"czas Macquarie"}
- }
"meta:Magadan"{
ld{"Magadan (czas letni)"}
lg{"czas Magadan"}
@@ -966,11 +951,6 @@ pl{
"meta:Mawson"{
ls{"czas Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Meksyk Północno-Zachodni (czas letni)"}
- lg{"czas Meksyk Północno-Zachodni"}
- ls{"Meksyk Północno-Zachodni (czas standardowy)"}
- }
"meta:Mexico_Pacific"{
ld{"Meksyk (czas pacyficzny letni)"}
lg{"Meksyk (czas pacyficzny)"}
diff --git a/icu4c/source/data/zone/ps.txt b/icu4c/source/data/zone/ps.txt
index 899a3daa1..6b51659f5 100644
--- a/icu4c/source/data/zone/ps.txt
+++ b/icu4c/source/data/zone/ps.txt
@@ -465,9 +465,6 @@ ps{
"America:New_York"{
ec{"نیویارک"}
}
- "America:Nipigon"{
- ec{"نیپګون"}
- }
"America:Nome"{
ec{"نوم"}
}
@@ -489,9 +486,6 @@ ps{
"America:Panama"{
ec{"پاناما"}
}
- "America:Pangnirtung"{
- ec{"پينګنرچونګ"}
- }
"America:Paramaribo"{
ec{"پاراماربو"}
}
@@ -513,9 +507,6 @@ ps{
"America:Punta_Arenas"{
ec{"پنټا آریناس"}
}
- "America:Rainy_River"{
- ec{"د باران باران"}
- }
"America:Rankin_Inlet"{
ec{"رينکن انلټ"}
}
@@ -576,9 +567,6 @@ ps{
"America:Thule"{
ec{"تول"}
}
- "America:Thunder_Bay"{
- ec{"تنډر بی"}
- }
"America:Tijuana"{
ec{"تجوانا"}
}
@@ -600,9 +588,6 @@ ps{
"America:Yakutat"{
ec{"ياکوټټ"}
}
- "America:Yellowknife"{
- ec{"يلونايف"}
- }
"Antarctica:Casey"{
ec{"کیسي"}
}
@@ -927,9 +912,6 @@ ps{
"Australia:Broken_Hill"{
ec{"بروکن هل"}
}
- "Australia:Currie"{
- ec{"کرري"}
- }
"Australia:Darwin"{
ec{"ډارون"}
}
@@ -1112,9 +1094,6 @@ ps{
"Europe:Ulyanovsk"{
ec{"اليانوسک"}
}
- "Europe:Uzhgorod"{
- ec{"یوژورډ"}
- }
"Europe:Vaduz"{
ec{"واډوز"}
}
@@ -1136,9 +1115,6 @@ ps{
"Europe:Zagreb"{
ec{"زګرب"}
}
- "Europe:Zaporozhye"{
- ec{"زاپوروژی"}
- }
"Europe:Zurich"{
ec{"زریچ"}
}
@@ -1220,9 +1196,6 @@ ps{
"Pacific:Honolulu"{
ec{"هینولولو"}
}
- "Pacific:Johnston"{
- ec{"جانسټن"}
- }
"Pacific:Kiritimati"{
ec{"کيريټماټي"}
}
@@ -1634,9 +1607,6 @@ ps{
lg{"لارډ هوي وخت"}
ls{"لارډ هوي معياري وخت"}
}
- "meta:Macquarie"{
- ls{"مکواري ټاپو وخت"}
- }
"meta:Magadan"{
ld{"ميګډان اوړي وخت"}
lg{"ميګډان وخت"}
@@ -1662,11 +1632,6 @@ ps{
"meta:Mawson"{
ls{"ماوسن وخت"}
}
- "meta:Mexico_Northwest"{
- ld{"د شمال لویدیځ مکسیکو رڼا ورځې وخت"}
- lg{"د شمال لویدیځ مکسیکو وخت"}
- ls{"د شمال لویدیځ مکسیکو معیاري وخت"}
- }
"meta:Mexico_Pacific"{
ld{"مکسیکن پیسفک رڼا ورځې وخت"}
lg{"مکسیکن پیسفک وخت"}
diff --git a/icu4c/source/data/zone/ps_PK.txt b/icu4c/source/data/zone/ps_PK.txt
index 816823d2a..489839170 100644
--- a/icu4c/source/data/zone/ps_PK.txt
+++ b/icu4c/source/data/zone/ps_PK.txt
@@ -71,9 +71,6 @@ ps_PK{
"meta:Lord_Howe"{
ld{"رب هاو د ورځے د رڼا وخت"}
}
- "meta:Mexico_Northwest"{
- ld{"د شمال لویدیځ مکسیکو رڼا ورځے وخت"}
- }
"meta:Mexico_Pacific"{
ld{"مکسیکن پیسفک رڼا ورځے وخت"}
}
diff --git a/icu4c/source/data/zone/pt.txt b/icu4c/source/data/zone/pt.txt
index f85910143..89f918042 100644
--- a/icu4c/source/data/zone/pt.txt
+++ b/icu4c/source/data/zone/pt.txt
@@ -147,9 +147,6 @@ pt{
"America:Puerto_Rico"{
ec{"Porto Rico"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -294,9 +291,6 @@ pt{
"Atlantic:St_Helena"{
ec{"Santa Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Horário Universal Coordenado"}
}
@@ -403,9 +397,6 @@ pt{
"Europe:Warsaw"{
ec{"Varsóvia"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizhia"}
- }
"Europe:Zurich"{
ec{"Zurique"}
}
@@ -843,9 +834,6 @@ pt{
lg{"Horário de Macau"}
ls{"Horário Padrão de Macau"}
}
- "meta:Macquarie"{
- ls{"Horário da Ilha Macquarie"}
- }
"meta:Magadan"{
ld{"Horário de Verão de Magadan"}
lg{"Horário de Magadan"}
@@ -871,11 +859,6 @@ pt{
"meta:Mawson"{
ls{"Horário de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Horário de Verão do Noroeste do México"}
- lg{"Horário do Noroeste do México"}
- ls{"Horário Padrão do Noroeste do México"}
- }
"meta:Mexico_Pacific"{
ld{"Horário de Verão do Pacífico Mexicano"}
lg{"Horário do Pacífico Mexicano"}
diff --git a/icu4c/source/data/zone/pt_PT.txt b/icu4c/source/data/zone/pt_PT.txt
index d7c1dc0dc..d11497e8b 100644
--- a/icu4c/source/data/zone/pt_PT.txt
+++ b/icu4c/source/data/zone/pt_PT.txt
@@ -617,9 +617,6 @@ pt_PT{
lg{"Hora de Macau"}
ls{"Hora padrão de Macau"}
}
- "meta:Macquarie"{
- ls{"Hora da Ilha Macquarie"}
- }
"meta:Magadan"{
ld{"Hora de verão de Magadan"}
lg{"Hora de Magadan"}
@@ -645,11 +642,6 @@ pt_PT{
"meta:Mawson"{
ls{"Hora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Hora de verão do Noroeste do México"}
- lg{"Hora do Noroeste do México"}
- ls{"Hora padrão do Noroeste do México"}
- }
"meta:Mexico_Pacific"{
ld{"Hora de verão do Pacífico Mexicano"}
lg{"Hora do Pacífico Mexicano"}
diff --git a/icu4c/source/data/zone/qu.txt b/icu4c/source/data/zone/qu.txt
index 78c0b013b..d8db083ef 100644
--- a/icu4c/source/data/zone/qu.txt
+++ b/icu4c/source/data/zone/qu.txt
@@ -195,9 +195,6 @@ qu{
"Australia:Adelaide"{
ec{"Adelaida"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Australia:Sydney"{
ec{"Sidney"}
}
@@ -622,9 +619,6 @@ qu{
lg{"Hora de Lord Howe"}
ls{"Hora Estandar de Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Hora de Isla Macquarie"}
- }
"meta:Magadan"{
ld{"Hora de Verano de Magadan"}
lg{"Hora de Magadan"}
@@ -650,11 +644,6 @@ qu{
"meta:Mawson"{
ls{"Hora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Hora de Verano del Noroeste de México"}
- lg{"Hora Estandar de Verano de México"}
- ls{"Hora Estandar del Noroeste de México"}
- }
"meta:Mexico_Pacific"{
ld{"Hora de Verano del Pacífico Mexicano"}
lg{"Hora del Pacífico Mexicano"}
diff --git a/icu4c/source/data/zone/rm.txt b/icu4c/source/data/zone/rm.txt
index 33067b451..4dc123b89 100644
--- a/icu4c/source/data/zone/rm.txt
+++ b/icu4c/source/data/zone/rm.txt
@@ -313,15 +313,9 @@ rm{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Uschhorod"}
- }
"Europe:Warsaw"{
ec{"Varsovia"}
}
- "Europe:Zaporozhye"{
- ec{"Saporischja"}
- }
"Europe:Zurich"{
ec{"Turitg"}
}
diff --git a/icu4c/source/data/zone/ro.txt b/icu4c/source/data/zone/ro.txt
index 738050deb..870d8a935 100644
--- a/icu4c/source/data/zone/ro.txt
+++ b/icu4c/source/data/zone/ro.txt
@@ -51,9 +51,6 @@ ro{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Dakota de Nord"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"Saint Barthélemy"}
}
@@ -177,9 +174,6 @@ ro{
"Atlantic:St_Helena"{
ec{"Sf. Elena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Timpul universal coordonat"}
}
@@ -247,18 +241,12 @@ ro{
"Europe:Ulyanovsk"{
ec{"Ulianovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Ujhorod"}
- }
"Europe:Vienna"{
ec{"Viena"}
}
"Europe:Warsaw"{
ec{"Varșovia"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporoje"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -668,9 +656,6 @@ ro{
lg{"Ora din Lord Howe"}
ls{"Ora standard din Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Ora din Macquarie"}
- }
"meta:Magadan"{
ld{"Ora de vară din Magadan"}
lg{"Ora din Magadan"}
@@ -696,11 +681,6 @@ ro{
"meta:Mawson"{
ls{"Ora din Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Ora de vară a Mexicului de nord-vest"}
- lg{"Ora Mexicului de nord-vest"}
- ls{"Ora standard a Mexicului de nord-vest"}
- }
"meta:Mexico_Pacific"{
ld{"Ora de vară a zonei Pacific mexicane"}
lg{"Ora zonei Pacific mexicane"}
diff --git a/icu4c/source/data/zone/root.txt b/icu4c/source/data/zone/root.txt
index e2a22dd8d..bc2cb3c4e 100644
--- a/icu4c/source/data/zone/root.txt
+++ b/icu4c/source/data/zone/root.txt
@@ -2,7 +2,7 @@
// License & terms of use: http://www.unicode.org/copyright.html
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
root{
- Version{"44.1"}
+ Version{"45"}
zoneStrings{
"Africa:Asmera"{
ec{"Asmara"}
diff --git a/icu4c/source/data/zone/ru.txt b/icu4c/source/data/zone/ru.txt
index 1337e19f7..efb2c32b4 100644
--- a/icu4c/source/data/zone/ru.txt
+++ b/icu4c/source/data/zone/ru.txt
@@ -465,9 +465,6 @@ ru{
"America:New_York"{
ec{"Нью-Йорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -489,9 +486,6 @@ ru{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртанг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -513,9 +507,6 @@ ru{
"America:Punta_Arenas"{
ec{"Пунта-Аренас"}
}
- "America:Rainy_River"{
- ec{"Рейни-Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Ранкин-Инлет"}
}
@@ -531,9 +522,6 @@ ru{
"America:Rio_Branco"{
ec{"Риу-Бранку"}
}
- "America:Santa_Isabel"{
- ec{"Санта-Изабел"}
- }
"America:Santarem"{
ec{"Сантарен"}
}
@@ -579,9 +567,6 @@ ru{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тандер-Бей"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -603,9 +588,6 @@ ru{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Йеллоунайф"}
- }
"Antarctica:Casey"{
ec{"Кейси"}
}
@@ -930,9 +912,6 @@ ru{
"Australia:Broken_Hill"{
ec{"Брокен-Хилл"}
}
- "Australia:Currie"{
- ec{"Керри"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1115,9 +1094,6 @@ ru{
"Europe:Ulyanovsk"{
ec{"Ульяновск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуц"}
}
@@ -1139,9 +1115,6 @@ ru{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожье"}
- }
"Europe:Zurich"{
ec{"Цюрих"}
}
@@ -1223,9 +1196,6 @@ ru{
"Pacific:Honolulu"{
ec{"Гонолулу"}
}
- "Pacific:Johnston"{
- ec{"Джонстон"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1684,9 +1654,6 @@ ru{
lg{"Макао"}
ls{"Макао, стандартное время"}
}
- "meta:Macquarie"{
- ls{"Маккуори"}
- }
"meta:Magadan"{
ld{"Магадан, летнее время"}
lg{"Магадан"}
@@ -1712,11 +1679,6 @@ ru{
"meta:Mawson"{
ls{"Моусон"}
}
- "meta:Mexico_Northwest"{
- ld{"Северо-западное мексиканское летнее время"}
- lg{"Северо-западное мексиканское время"}
- ls{"Северо-западное мексиканское стандартное время"}
- }
"meta:Mexico_Pacific"{
ld{"Тихоокеанское мексиканское летнее время"}
lg{"Тихоокеанское мексиканское время"}
diff --git a/icu4c/source/data/zone/sc.txt b/icu4c/source/data/zone/sc.txt
index 4fefb0351..366dd45a9 100644
--- a/icu4c/source/data/zone/sc.txt
+++ b/icu4c/source/data/zone/sc.txt
@@ -156,9 +156,6 @@ sc{
"Atlantic:St_Helena"{
ec{"Sant’Elene"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Tempus coordinadu universale"}
ss{"TCU"}
@@ -683,9 +680,6 @@ sc{
lg{"Ora de Macao"}
ls{"Ora istandard de Macao"}
}
- "meta:Macquarie"{
- ls{"Ora de s’Ìsula Macquarie"}
- }
"meta:Magadan"{
ld{"Ora legale de Magadan"}
lg{"Ora de Magadan"}
@@ -711,11 +705,6 @@ sc{
"meta:Mawson"{
ls{"Ora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Ora legale de su Mèssicu nord-otzidentale"}
- lg{"Ora de su Mèssicu nord-otzidentale"}
- ls{"Ora istandard de su Mèssicu nord-otzidentale"}
- }
"meta:Mexico_Pacific"{
ld{"Ora legale de su Patzìficu (Mèssicu)"}
lg{"Ora de su Patzìficu (Mèssicu)"}
diff --git a/icu4c/source/data/zone/sd.txt b/icu4c/source/data/zone/sd.txt
index f77f3f6bd..12653e84d 100644
--- a/icu4c/source/data/zone/sd.txt
+++ b/icu4c/source/data/zone/sd.txt
@@ -465,9 +465,6 @@ sd{
"America:New_York"{
ec{"نيويارڪ"}
}
- "America:Nipigon"{
- ec{"نپيگان"}
- }
"America:Nome"{
ec{"نوم"}
}
@@ -489,9 +486,6 @@ sd{
"America:Panama"{
ec{"پناما"}
}
- "America:Pangnirtung"{
- ec{"پینگنرٽنگ"}
- }
"America:Paramaribo"{
ec{"پيراميريبو"}
}
@@ -513,9 +507,6 @@ sd{
"America:Punta_Arenas"{
ec{"پنٽا اريناس"}
}
- "America:Rainy_River"{
- ec{"ريني رور"}
- }
"America:Rankin_Inlet"{
ec{"رينڪن انليٽ"}
}
@@ -576,9 +567,6 @@ sd{
"America:Thule"{
ec{"ٿولي"}
}
- "America:Thunder_Bay"{
- ec{"ٿنڊر بي"}
- }
"America:Tijuana"{
ec{"تيجوانا"}
}
@@ -600,9 +588,6 @@ sd{
"America:Yakutat"{
ec{"ياڪوتات"}
}
- "America:Yellowknife"{
- ec{"ييلو نائيف"}
- }
"Antarctica:Casey"{
ec{"ڪيسي"}
}
@@ -927,9 +912,6 @@ sd{
"Australia:Broken_Hill"{
ec{"بروڪن هل"}
}
- "Australia:Currie"{
- ec{"ڪري"}
- }
"Australia:Darwin"{
ec{"ڊارون"}
}
@@ -1113,9 +1095,6 @@ sd{
"Europe:Ulyanovsk"{
ec{"اليانوسڪ"}
}
- "Europe:Uzhgorod"{
- ec{"ازهارڊ"}
- }
"Europe:Vaduz"{
ec{"وڊوز"}
}
@@ -1137,9 +1116,6 @@ sd{
"Europe:Zagreb"{
ec{"زغرب"}
}
- "Europe:Zaporozhye"{
- ec{"زيپروزهايا"}
- }
"Europe:Zurich"{
ec{"زيورخ"}
}
@@ -1221,9 +1197,6 @@ sd{
"Pacific:Honolulu"{
ec{"هونو لولو"}
}
- "Pacific:Johnston"{
- ec{"جانسٹن"}
- }
"Pacific:Kanton"{
ec{"ڪانٽن"}
}
@@ -1638,9 +1611,6 @@ sd{
lg{"لورڊ هووي جو وقت"}
ls{"لورڊ هووي جو معياري وقت"}
}
- "meta:Macquarie"{
- ls{"مڪوائري آئي لينڊ جو وقت"}
- }
"meta:Magadan"{
ld{"مگادان جي ڏينهن جي وقت"}
lg{"مگادان جو وقت"}
@@ -1666,11 +1636,6 @@ sd{
"meta:Mawson"{
ls{"مائوسن جو وقت"}
}
- "meta:Mexico_Northwest"{
- ld{"شمالي مغربي ميڪسيڪو جي ڏينهن جو وقت"}
- lg{"شمالي مغربي ميڪسيڪو جو وقت"}
- ls{"شمالي مغربي ميڪسيڪو جو معياري وقت"}
- }
"meta:Mexico_Pacific"{
ld{"ميڪسيڪن پيسيفڪ جي ڏينهن جو وقت"}
lg{"ميڪسيڪن پيسيفڪ وقت"}
diff --git a/icu4c/source/data/zone/se_FI.txt b/icu4c/source/data/zone/se_FI.txt
index d472d0b6d..adcf944e6 100644
--- a/icu4c/source/data/zone/se_FI.txt
+++ b/icu4c/source/data/zone/se_FI.txt
@@ -483,9 +483,6 @@ se_FI{
lg{"Lord Howe áigi"}
ls{"Lord Howe dálveáigi"}
}
- "meta:Macquarie"{
- ls{"MacQuarie sullo áigi"}
- }
"meta:Magadan"{
ld{"Magadana geasseáigi"}
lg{"Magadana áigi"}
@@ -511,11 +508,6 @@ se_FI{
"meta:Mawson"{
ls{"Mawsona áigi"}
}
- "meta:Mexico_Northwest"{
- ld{"Oarjedavvi-Meksiko geasseáigi"}
- lg{"Oarjedavvi-Meksiko áigi"}
- ls{"Oarjedavvi-Meksiko dálveáigi"}
- }
"meta:Mexico_Pacific"{
ld{"Meksiko Jáskesábi geasseáigi"}
lg{"Meksiko Jáskesábi áigi"}
diff --git a/icu4c/source/data/zone/si.txt b/icu4c/source/data/zone/si.txt
index d40f00b0f..e1bc67d8f 100644
--- a/icu4c/source/data/zone/si.txt
+++ b/icu4c/source/data/zone/si.txt
@@ -465,9 +465,6 @@ si{
"America:New_York"{
ec{"නිව්යෝක්"}
}
- "America:Nipigon"{
- ec{"නිපිගන්"}
- }
"America:Nome"{
ec{"නෝම්"}
}
@@ -489,9 +486,6 @@ si{
"America:Panama"{
ec{"පැනමා"}
}
- "America:Pangnirtung"{
- ec{"පැන්නීටන්"}
- }
"America:Paramaribo"{
ec{"පැරාමරිබෝ"}
}
@@ -513,9 +507,6 @@ si{
"America:Punta_Arenas"{
ec{"පුන්ටා ඇරිනාස්"}
}
- "America:Rainy_River"{
- ec{"රෙයිනි ගඟ"}
- }
"America:Rankin_Inlet"{
ec{"රැන්කින් පිවිසුම"}
}
@@ -531,9 +522,6 @@ si{
"America:Rio_Branco"{
ec{"රියෝ බ්‍රන්කෝ"}
}
- "America:Santa_Isabel"{
- ec{"සැන්ටා ඉසබෙල්"}
- }
"America:Santarem"{
ec{"සන්ටරේම්"}
}
@@ -579,9 +567,6 @@ si{
"America:Thule"{
ec{"තුලේ"}
}
- "America:Thunder_Bay"{
- ec{"තන්ඩර් බොක්ක"}
- }
"America:Tijuana"{
ec{"ටිජුආනා"}
}
@@ -603,9 +588,6 @@ si{
"America:Yakutat"{
ec{"යකුටට්"}
}
- "America:Yellowknife"{
- ec{"යෙලෝනයිෆ්"}
- }
"Antarctica:Casey"{
ec{"කැසේ"}
}
@@ -930,9 +912,6 @@ si{
"Australia:Broken_Hill"{
ec{"බ්‍රෝකන් හිල්"}
}
- "Australia:Currie"{
- ec{"කුරී"}
- }
"Australia:Darwin"{
ec{"ඩාවින්"}
}
@@ -1115,9 +1094,6 @@ si{
"Europe:Ulyanovsk"{
ec{"උල්යනොව්ස්ක්"}
}
- "Europe:Uzhgorod"{
- ec{"උස්ගොරෝඩ්"}
- }
"Europe:Vaduz"{
ec{"වඩුස්"}
}
@@ -1139,9 +1115,6 @@ si{
"Europe:Zagreb"{
ec{"සග්රෙබ්"}
}
- "Europe:Zaporozhye"{
- ec{"සපොරෝසියේ"}
- }
"Europe:Zurich"{
ec{"සූරිච්"}
}
@@ -1223,9 +1196,6 @@ si{
"Pacific:Honolulu"{
ec{"හොනොලුලු"}
}
- "Pacific:Johnston"{
- ec{"ජොන්ස්ටන්"}
- }
"Pacific:Kanton"{
ec{"කැන්ටන්"}
}
@@ -1643,9 +1613,6 @@ si{
lg{"ලෝර්ඩ් හෝව් වේලාව"}
ls{"ලෝර්ඩ් හෝව් සම්මත වේලාව"}
}
- "meta:Macquarie"{
- ls{"මැක්කුඅරි දුපත් වේලාව"}
- }
"meta:Magadan"{
ld{"මෙගඩන් ග්‍රීෂ්ම වේලාව"}
lg{"මෙගඩන් වේලාව"}
@@ -1671,11 +1638,6 @@ si{
"meta:Mawson"{
ls{"මොව්සන් වේලාව"}
}
- "meta:Mexico_Northwest"{
- ld{"වයඹ මෙක්සිකෝ දිවාආලෝක වේලාව"}
- lg{"වයඹ මෙක්සිකෝ වේලාව"}
- ls{"වයඹ මෙක්සිකෝ සම්මත වේලාව"}
- }
"meta:Mexico_Pacific"{
ld{"මෙක්සිකෝ පැසිෆික් දිවාආලෝක වේලාව"}
lg{"මෙක්සිකෝ පැසිෆික් වේලාව"}
diff --git a/icu4c/source/data/zone/sk.txt b/icu4c/source/data/zone/sk.txt
index 28be5ed35..4f88aa450 100644
--- a/icu4c/source/data/zone/sk.txt
+++ b/icu4c/source/data/zone/sk.txt
@@ -99,9 +99,6 @@ sk{
"America:Puerto_Rico"{
ec{"Portoriko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -312,9 +309,6 @@ sk{
"Atlantic:St_Helena"{
ec{"Svätá Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"koordinovaný svetový čas"}
}
@@ -403,9 +397,6 @@ sk{
"Europe:Ulyanovsk"{
ec{"Uľjanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Užhorod"}
- }
"Europe:Vatican"{
ec{"Vatikán"}
}
@@ -418,9 +409,6 @@ sk{
"Europe:Zagreb"{
ec{"Záhreb"}
}
- "Europe:Zaporozhye"{
- ec{"Záporožie"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -861,9 +849,6 @@ sk{
lg{"macajský čas"}
ls{"macajský štandardný čas"}
}
- "meta:Macquarie"{
- ls{"čas ostrova Macquarie"}
- }
"meta:Magadan"{
ld{"magadanský letný čas"}
lg{"magadanský čas"}
@@ -889,11 +874,6 @@ sk{
"meta:Mawson"{
ls{"čas Mawsonovej stanice"}
}
- "meta:Mexico_Northwest"{
- ld{"severozápadný mexický letný čas"}
- lg{"severozápadný mexický čas"}
- ls{"severozápadný mexický štandardný čas"}
- }
"meta:Mexico_Pacific"{
ld{"mexický tichomorský letný čas"}
lg{"mexický tichomorský čas"}
diff --git a/icu4c/source/data/zone/sl.txt b/icu4c/source/data/zone/sl.txt
index 54282f7b1..a37692de6 100644
--- a/icu4c/source/data/zone/sl.txt
+++ b/icu4c/source/data/zone/sl.txt
@@ -93,9 +93,6 @@ sl{
"America:Puerto_Rico"{
ec{"Portoriko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"Sv. Bartolomej"}
}
@@ -294,9 +291,6 @@ sl{
"Atlantic:St_Helena"{
ec{"Sv. Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"univerzalni koordinirani čas"}
}
@@ -375,9 +369,6 @@ sl{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -390,9 +381,6 @@ sl{
"Europe:Warsaw"{
ec{"Varšava"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporožje"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -772,9 +760,6 @@ sl{
lg{"Čas otoka Lord Howe"}
ls{"Standardni čas otoka Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Macquarieski čas"}
- }
"meta:Magadan"{
ld{"Magadanski poletni čas"}
lg{"Magadanski čas"}
@@ -800,11 +785,6 @@ sl{
"meta:Mawson"{
ls{"Mawsonski čas"}
}
- "meta:Mexico_Northwest"{
- ld{"Mehiški severozahodni poletni čas"}
- lg{"Mehiški severozahodni čas"}
- ls{"Mehiški severozahodni standardni čas"}
- }
"meta:Mexico_Pacific"{
ld{"Mehiški pacifiški poletni čas"}
lg{"Mehiški pacifiški čas"}
diff --git a/icu4c/source/data/zone/so.txt b/icu4c/source/data/zone/so.txt
index c9dbd2a22..c82927409 100644
--- a/icu4c/source/data/zone/so.txt
+++ b/icu4c/source/data/zone/so.txt
@@ -408,9 +408,6 @@ so{
"America:New_York"{
ec{"Niyuu Yook"}
}
- "America:Nipigon"{
- ec{"Nibiigoon"}
- }
"America:Nome"{
ec{"Noom"}
}
@@ -429,9 +426,6 @@ so{
"America:Panama"{
ec{"Banaama"}
}
- "America:Pangnirtung"{
- ec{"Bangnirtuung"}
- }
"America:Phoenix"{
ec{"Foonikis"}
}
@@ -447,9 +441,6 @@ so{
"America:Punta_Arenas"{
ec{"Bunta Arinaas"}
}
- "America:Rainy_River"{
- ec{"Reyni Rifer"}
- }
"America:Rankin_Inlet"{
ec{"Raankin Inleet"}
}
@@ -510,9 +501,6 @@ so{
"America:Thule"{
ec{"Tuul"}
}
- "America:Thunder_Bay"{
- ec{"Tanda Baay"}
- }
"America:Tijuana"{
ec{"Tijuwaana"}
}
@@ -531,9 +519,6 @@ so{
"America:Yakutat"{
ec{"Yakutaat"}
}
- "America:Yellowknife"{
- ec{"Yelowneyf"}
- }
"Antarctica:Casey"{
ec{"Kaysee"}
}
@@ -801,9 +786,6 @@ so{
"Australia:Broken_Hill"{
ec{"Boroken Hil"}
}
- "Australia:Currie"{
- ec{"Kuriy"}
- }
"Australia:Eucla"{
ec{"Yukla"}
}
@@ -963,9 +945,6 @@ so{
"Europe:Ulyanovsk"{
ec{"Ulyanofisk"}
}
- "Europe:Uzhgorod"{
- ec{"Usgorod"}
- }
"Europe:Vaduz"{
ec{"Faduus"}
}
@@ -984,9 +963,6 @@ so{
"Europe:Zagreb"{
ec{"Saqrib"}
}
- "Europe:Zaporozhye"{
- ec{"Saborosey"}
- }
"Europe:Zurich"{
ec{"Suurikh"}
}
@@ -1053,9 +1029,6 @@ so{
"Pacific:Guam"{
ec{"Guwam"}
}
- "Pacific:Johnston"{
- ec{"Joonston"}
- }
"Pacific:Kanton"{
ec{"Kantoon"}
}
@@ -1488,9 +1461,6 @@ so{
lg{"Waqtiga Lod How"}
ls{"Waqtiga Caadiga Ah ee Lod How"}
}
- "meta:Macquarie"{
- ls{"Waqtiga Makquwariy Aylaan"}
- }
"meta:Magadan"{
ld{"Waqtiga Xagaaga ee Magedan"}
lg{"Watiga Magedan"}
@@ -1516,11 +1486,6 @@ so{
"meta:Mawson"{
ls{"Waqtiga Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Waqtiga Dharaarta ee Waqooyi-Galbeed Meksiko"}
- lg{"Waqtiga Waqooyi-Galbeed Meksiko"}
- ls{"Waqtiga Caadiga Ah ee Waqooyi-Galbeed Meksiko"}
- }
"meta:Mexico_Pacific"{
ld{"Waqtiga Dharaarta ee Baasifikada Meksiko"}
lg{"Waqtiga Baasifikada Meksiko"}
diff --git a/icu4c/source/data/zone/sq.txt b/icu4c/source/data/zone/sq.txt
index da9525a51..26a288435 100644
--- a/icu4c/source/data/zone/sq.txt
+++ b/icu4c/source/data/zone/sq.txt
@@ -354,9 +354,6 @@ sq{
"America:Punta_Arenas"{
ec{"Punta-Arenas"}
}
- "America:Rainy_River"{
- ec{"Lumi i Shirave"}
- }
"America:Rankin_Inlet"{
ec{"Gryka Inlet"}
}
@@ -366,9 +363,6 @@ sq{
"America:Rio_Branco"{
ec{"Rio-Branko"}
}
- "America:Santa_Isabel"{
- ec{"Santa-Izabela"}
- }
"America:Santo_Domingo"{
ec{"Santo-Domingo"}
}
@@ -405,9 +399,6 @@ sq{
"America:Thule"{
ec{"Dhule"}
}
- "America:Thunder_Bay"{
- ec{"Gjiri i Bubullimës"}
- }
"America:Tijuana"{
ec{"Tihuana"}
}
@@ -426,9 +417,6 @@ sq{
"America:Yakutat"{
ec{"Jakutat"}
}
- "America:Yellowknife"{
- ec{"Jellounajf"}
- }
"Antarctica:Casey"{
ec{"Kejsi"}
}
@@ -654,9 +642,6 @@ sq{
"Australia:Broken_Hill"{
ec{"Brokën-Hill"}
}
- "Australia:Currie"{
- ec{"Kuri"}
- }
"Australia:Darwin"{
ec{"Darvin"}
}
@@ -799,9 +784,6 @@ sq{
"Europe:Warsaw"{
ec{"Varshavë"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporozhje"}
- }
"Europe:Zurich"{
ec{"Zyrih"}
}
@@ -847,9 +829,6 @@ sq{
"Pacific:Honolulu"{
ec{"Honolulu"}
}
- "Pacific:Johnston"{
- ec{"Xhonston"}
- }
"Pacific:Kiritimati"{
ec{"Kiritimat"}
}
@@ -1281,9 +1260,6 @@ sq{
lg{"Ora e Makaos"}
ls{"Ora standarde e Makaos"}
}
- "meta:Macquarie"{
- ls{"Ora e Ishullit Makuari"}
- }
"meta:Magadan"{
ld{"Ora verore e Magadanit"}
lg{"Ora e Magadanit"}
@@ -1309,11 +1285,6 @@ sq{
"meta:Mawson"{
ls{"Ora e Mausonit"}
}
- "meta:Mexico_Northwest"{
- ld{"Ora verore e Meksikës Veriperëndimore"}
- lg{"Ora e Meksikës Veriperëndimore"}
- ls{"Ora standarde e Meksikës Veriperëndimore"}
- }
"meta:Mexico_Pacific"{
ld{"Ora verore e Territoreve Meksikane të Bregut të Paqësorit"}
lg{"Ora e Territoreve Meksikane të Bregut të Paqësorit"}
diff --git a/icu4c/source/data/zone/sr.txt b/icu4c/source/data/zone/sr.txt
index ff89def46..b830127d8 100644
--- a/icu4c/source/data/zone/sr.txt
+++ b/icu4c/source/data/zone/sr.txt
@@ -465,9 +465,6 @@ sr{
"America:New_York"{
ec{"Њујорк"}
}
- "America:Nipigon"{
- ec{"Нипигон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -489,9 +486,6 @@ sr{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Пангниртунг"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -513,9 +507,6 @@ sr{
"America:Punta_Arenas"{
ec{"Пунта Аренас"}
}
- "America:Rainy_River"{
- ec{"Рејни Ривер"}
- }
"America:Rankin_Inlet"{
ec{"Ранкин Инлет"}
}
@@ -531,9 +522,6 @@ sr{
"America:Rio_Branco"{
ec{"Рио Бранко"}
}
- "America:Santa_Isabel"{
- ec{"Санта Изабел"}
- }
"America:Santarem"{
ec{"Сантарем"}
}
@@ -579,9 +567,6 @@ sr{
"America:Thule"{
ec{"Тул"}
}
- "America:Thunder_Bay"{
- ec{"Тандер Беј"}
- }
"America:Tijuana"{
ec{"Тихуана"}
}
@@ -603,9 +588,6 @@ sr{
"America:Yakutat"{
ec{"Јакутат"}
}
- "America:Yellowknife"{
- ec{"Јелоунајф"}
- }
"Antarctica:Casey"{
ec{"Кејси"}
}
@@ -930,9 +912,6 @@ sr{
"Australia:Broken_Hill"{
ec{"Брокен Хил"}
}
- "Australia:Currie"{
- ec{"Кари"}
- }
"Australia:Darwin"{
ec{"Дарвин"}
}
@@ -1115,9 +1094,6 @@ sr{
"Europe:Ulyanovsk"{
ec{"Уљановск"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуз"}
}
@@ -1139,9 +1115,6 @@ sr{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запорожје"}
- }
"Europe:Zurich"{
ec{"Цирих"}
}
@@ -1223,9 +1196,6 @@ sr{
"Pacific:Honolulu"{
ec{"Хонолулу"}
}
- "Pacific:Johnston"{
- ec{"Џонстон"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1691,9 +1661,6 @@ sr{
lg{"Макао време"}
ls{"Макао стандардно време"}
}
- "meta:Macquarie"{
- ls{"Острво Маквери време"}
- }
"meta:Magadan"{
ld{"Магадан, летње време"}
lg{"Магадан време"}
@@ -1719,11 +1686,6 @@ sr{
"meta:Mawson"{
ls{"Мосон време"}
}
- "meta:Mexico_Northwest"{
- ld{"Северозападни Мексико, летње време"}
- lg{"Северозападни Мексико"}
- ls{"Северозападни Мексико, стандардно време"}
- }
"meta:Mexico_Pacific"{
ld{"Мексички Пацифик, летње време"}
lg{"Мексички Пацифик"}
diff --git a/icu4c/source/data/zone/sr_Cyrl_BA.txt b/icu4c/source/data/zone/sr_Cyrl_BA.txt
index 400914477..730485f02 100644
--- a/icu4c/source/data/zone/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/zone/sr_Cyrl_BA.txt
@@ -414,9 +414,6 @@ sr_Cyrl_BA{
lg{"Лорд Хов вријеме"}
ls{"Лорд Хов, стандардно вријеме"}
}
- "meta:Macquarie"{
- ls{"острво Маквори вријеме"}
- }
"meta:Magadan"{
ld{"Магадан, љетње вријеме"}
lg{"Магадан вријеме"}
@@ -442,11 +439,6 @@ sr_Cyrl_BA{
"meta:Mawson"{
ls{"Мосон вријеме"}
}
- "meta:Mexico_Northwest"{
- ld{"Сјеверозападни Мексико, летње вријеме"}
- lg{"Сјеверозападни Мексико"}
- ls{"Сјеверозападни Мексико, стандардно вријеме"}
- }
"meta:Mexico_Pacific"{
ld{"Мексички Пацифик, љетње вријеме"}
lg{"Мексички Пацифик"}
diff --git a/icu4c/source/data/zone/sr_Latn.txt b/icu4c/source/data/zone/sr_Latn.txt
index 0a2004a2f..61532641a 100644
--- a/icu4c/source/data/zone/sr_Latn.txt
+++ b/icu4c/source/data/zone/sr_Latn.txt
@@ -466,9 +466,6 @@ sr_Latn{
"America:New_York"{
ec{"Njujork"}
}
- "America:Nipigon"{
- ec{"Nipigon"}
- }
"America:Nome"{
ec{"Nom"}
}
@@ -490,9 +487,6 @@ sr_Latn{
"America:Panama"{
ec{"Panama"}
}
- "America:Pangnirtung"{
- ec{"Pangnirtung"}
- }
"America:Paramaribo"{
ec{"Paramaribo"}
}
@@ -514,9 +508,6 @@ sr_Latn{
"America:Punta_Arenas"{
ec{"Punta Arenas"}
}
- "America:Rainy_River"{
- ec{"Rejni River"}
- }
"America:Rankin_Inlet"{
ec{"Rankin Inlet"}
}
@@ -532,9 +523,6 @@ sr_Latn{
"America:Rio_Branco"{
ec{"Rio Branko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Izabel"}
- }
"America:Santarem"{
ec{"Santarem"}
}
@@ -580,9 +568,6 @@ sr_Latn{
"America:Thule"{
ec{"Tul"}
}
- "America:Thunder_Bay"{
- ec{"Tander Bej"}
- }
"America:Tijuana"{
ec{"Tihuana"}
}
@@ -604,9 +589,6 @@ sr_Latn{
"America:Yakutat"{
ec{"Jakutat"}
}
- "America:Yellowknife"{
- ec{"Jelounajf"}
- }
"Antarctica:Casey"{
ec{"Kejsi"}
}
@@ -931,9 +913,6 @@ sr_Latn{
"Australia:Broken_Hill"{
ec{"Broken Hil"}
}
- "Australia:Currie"{
- ec{"Kari"}
- }
"Australia:Darwin"{
ec{"Darvin"}
}
@@ -1116,9 +1095,6 @@ sr_Latn{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vaduz"{
ec{"Vaduz"}
}
@@ -1140,9 +1116,6 @@ sr_Latn{
"Europe:Zagreb"{
ec{"Zagreb"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporožje"}
- }
"Europe:Zurich"{
ec{"Cirih"}
}
@@ -1224,9 +1197,6 @@ sr_Latn{
"Pacific:Honolulu"{
ec{"Honolulu"}
}
- "Pacific:Johnston"{
- ec{"Džonston"}
- }
"Pacific:Kanton"{
ec{"Kanton"}
}
@@ -1692,9 +1662,6 @@ sr_Latn{
lg{"Makao vreme"}
ls{"Makao standardno vreme"}
}
- "meta:Macquarie"{
- ls{"Ostrvo Makveri vreme"}
- }
"meta:Magadan"{
ld{"Magadan, letnje vreme"}
lg{"Magadan vreme"}
@@ -1720,11 +1687,6 @@ sr_Latn{
"meta:Mawson"{
ls{"Moson vreme"}
}
- "meta:Mexico_Northwest"{
- ld{"Severozapadni Meksiko, letnje vreme"}
- lg{"Severozapadni Meksiko"}
- ls{"Severozapadni Meksiko, standardno vreme"}
- }
"meta:Mexico_Pacific"{
ld{"Meksički Pacifik, letnje vreme"}
lg{"Meksički Pacifik"}
diff --git a/icu4c/source/data/zone/sr_Latn_BA.txt b/icu4c/source/data/zone/sr_Latn_BA.txt
index b02eefdd9..46c69f8c1 100644
--- a/icu4c/source/data/zone/sr_Latn_BA.txt
+++ b/icu4c/source/data/zone/sr_Latn_BA.txt
@@ -414,9 +414,6 @@ sr_Latn_BA{
lg{"Lord Hov vrijeme"}
ls{"Lord Hov, standardno vrijeme"}
}
- "meta:Macquarie"{
- ls{"ostrvo Makvori vrijeme"}
- }
"meta:Magadan"{
ld{"Magadan, ljetnje vrijeme"}
lg{"Magadan vrijeme"}
@@ -442,11 +439,6 @@ sr_Latn_BA{
"meta:Mawson"{
ls{"Moson vrijeme"}
}
- "meta:Mexico_Northwest"{
- ld{"Sjeverozapadni Meksiko, letnje vrijeme"}
- lg{"Sjeverozapadni Meksiko"}
- ls{"Sjeverozapadni Meksiko, standardno vrijeme"}
- }
"meta:Mexico_Pacific"{
ld{"Meksički Pacifik, ljetnje vrijeme"}
lg{"Meksički Pacifik"}
diff --git a/icu4c/source/data/zone/sv.txt b/icu4c/source/data/zone/sv.txt
index 9a26885f9..05b43b28b 100644
--- a/icu4c/source/data/zone/sv.txt
+++ b/icu4c/source/data/zone/sv.txt
@@ -78,9 +78,6 @@ sv{
"America:Noronha"{
ec{"Fernando de Noronha"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:Santarem"{
ec{"Santarém"}
}
@@ -201,9 +198,6 @@ sv{
"Atlantic:St_Helena"{
ec{"Sankt Helena"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"koordinerad universell tid"}
}
@@ -264,9 +258,6 @@ sv{
"Europe:Ulyanovsk"{
ec{"Uljanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"Uzjhorod"}
- }
"Europe:Vatican"{
ec{"Vatikanen"}
}
@@ -276,9 +267,6 @@ sv{
"Europe:Warsaw"{
ec{"Warszawa"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporizjzja"}
- }
"Europe:Zurich"{
ec{"Zürich"}
}
@@ -321,9 +309,6 @@ sv{
sg{"Honolulutid"}
ss{"Honolulunormaltid"}
}
- "Pacific:Johnston"{
- ec{"Johnstonatollen"}
- }
"Pacific:Marquesas"{
ec{"Marquesasöarna"}
}
@@ -735,9 +720,6 @@ sv{
lg{"Macaotid"}
ls{"Macaonormaltid"}
}
- "meta:Macquarie"{
- ls{"Macquarietid"}
- }
"meta:Magadan"{
ld{"Magadan, sommartid"}
lg{"Magadantid"}
@@ -763,11 +745,6 @@ sv{
"meta:Mawson"{
ls{"Mawsontid"}
}
- "meta:Mexico_Northwest"{
- ld{"nordvästmexikansk sommartid"}
- lg{"nordvästmexikansk tid"}
- ls{"nordvästmexikansk normaltid"}
- }
"meta:Mexico_Pacific"{
ld{"mexikansk stillahavstid, sommartid"}
lg{"mexikansk stillahavstid"}
diff --git a/icu4c/source/data/zone/sw.txt b/icu4c/source/data/zone/sw.txt
index 1e4a55851..ae7e00273 100644
--- a/icu4c/source/data/zone/sw.txt
+++ b/icu4c/source/data/zone/sw.txt
@@ -18,9 +18,6 @@ sw{
"America:Mexico_City"{
ec{"Jiji la Mexico"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"Asia:Macau"{
ec{"Macau"}
}
@@ -33,9 +30,6 @@ sw{
"Atlantic:South_Georgia"{
ec{"Georgia Kusini"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Mfumo wa kuratibu saa ulimwenguni"}
}
@@ -409,9 +403,6 @@ sw{
lg{"Saa za Lord Howe"}
ls{"Saa za Wastani za Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Saa za kisiwa cha Macquarie"}
- }
"meta:Magadan"{
ld{"Saa za Majira ya joto za Magadan"}
lg{"Saa za Magadan"}
@@ -437,11 +428,6 @@ sw{
"meta:Mawson"{
ls{"Saa za Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Saa za mchana za Meksiko Kaskazini Magharibi"}
- lg{"Saa za Meksiko Kaskazini Magharibi"}
- ls{"Saa za Wastani za Meksiko Kaskazini Magharibi"}
- }
"meta:Mexico_Pacific"{
ld{"Saa za mchana za pasifiki za Meksiko"}
lg{"Saa za pasifiki za Meksiko"}
diff --git a/icu4c/source/data/zone/sw_KE.txt b/icu4c/source/data/zone/sw_KE.txt
index 8618237f0..375382650 100644
--- a/icu4c/source/data/zone/sw_KE.txt
+++ b/icu4c/source/data/zone/sw_KE.txt
@@ -219,9 +219,6 @@ sw_KE{
lg{"Saa za Krasnoyarsk"}
ls{"Saa za Wastani za Krasnoyask"}
}
- "meta:Macquarie"{
- ls{"Saa za Makwuarie"}
- }
"meta:Magadan"{
ld{"Saa za Majira ya Joto za Magadan"}
lg{"Saa za Magadan"}
@@ -238,11 +235,6 @@ sw_KE{
lg{"Saa za Morisi"}
ls{"Saa za Wastani za Morisi"}
}
- "meta:Mexico_Northwest"{
- ld{"Saa za Mchana za Kaskazini Magharibi mwa Meksiko"}
- lg{"Saa za Kaskazini Magharibi mwa Meksiko"}
- ls{"Saa za Wastani za Kaskazini Magharibi mwa Meksiko"}
- }
"meta:Mongolia"{
ld{"Saa za Majira ya Joto za Ulaanbaatar"}
lg{"Saa za Ulaanbataar"}
diff --git a/icu4c/source/data/zone/syr.txt b/icu4c/source/data/zone/syr.txt
index 22bee1946..afa09c0fe 100644
--- a/icu4c/source/data/zone/syr.txt
+++ b/icu4c/source/data/zone/syr.txt
@@ -465,9 +465,6 @@ syr{
"America:New_York"{
ec{"ܢܝܘ ܝܘܪܟ"}
}
- "America:Nipigon"{
- ec{"ܢܝܦܝܓܘܢ"}
- }
"America:Nome"{
ec{"ܢܘܡ"}
}
@@ -489,9 +486,6 @@ syr{
"America:Panama"{
ec{"ܦܢܡܐ"}
}
- "America:Pangnirtung"{
- ec{"ܦܐܢܓܢܝܪܬܘܢܓ"}
- }
"America:Paramaribo"{
ec{"ܦܐܪܐܡܐܪܝܒܘ"}
}
@@ -513,9 +507,6 @@ syr{
"America:Punta_Arenas"{
ec{"ܦܘܢܬܐ ܥܪܝܢܣ"}
}
- "America:Rainy_River"{
- ec{"ܢܗܪܐ ܕܪܥܢܝ"}
- }
"America:Rankin_Inlet"{
ec{"ܪܐܢܟܢ ܐܢܠܝܬ"}
}
@@ -576,9 +567,6 @@ syr{
"America:Thule"{
ec{"ܬܘܠ"}
}
- "America:Thunder_Bay"{
- ec{"ܬܐܢܕܐܪ ܒܐܝ"}
- }
"America:Tijuana"{
ec{"ܬܝܐܘܐܢܐ"}
}
@@ -600,9 +588,6 @@ syr{
"America:Yakutat"{
ec{"ܝܩܘܬܐܬ"}
}
- "America:Yellowknife"{
- ec{"ܝܠܘܢܝܦ"}
- }
"Antarctica:Casey"{
ec{"ܟܐܝܣܝ"}
}
@@ -1109,9 +1094,6 @@ syr{
"Europe:Ulyanovsk"{
ec{"ܐܘܠܝܢܘܒܣܟ"}
}
- "Europe:Uzhgorod"{
- ec{"ܐܘܙܓܘܪܘܕ"}
- }
"Europe:Vaduz"{
ec{"ܒܕܘܙ"}
}
@@ -1133,9 +1115,6 @@ syr{
"Europe:Zagreb"{
ec{"ܙܐܓܪܒ"}
}
- "Europe:Zaporozhye"{
- ec{"ܙܐܦܘܪܝܓܝ"}
- }
"Europe:Zurich"{
ec{"ܙܝܘܪܚ"}
}
@@ -1211,9 +1190,6 @@ syr{
"Pacific:Guam"{
ec{"ܓܘܐܡ"}
}
- "Pacific:Johnston"{
- ec{"ܓܘܢܣܬܘܢ"}
- }
"Pacific:Kanton"{
ec{"ܟܐܢܬܘܢ"}
}
@@ -1664,9 +1640,6 @@ syr{
lg{"ܥܕܢܐ ܕܡܐܟܐܘ"}
ls{"ܥܕܢܐ ܡܫܘܚܬܢܝܬܐ ܕܡܐܟܐܘ"}
}
- "meta:Macquarie"{
- ls{"ܥܕܢܐ ܕܓܙܪܬܐ ܡܐܟܐܘܪܝ"}
- }
"meta:Magadan"{
ld{"ܥܕܢܐ ܕܒܗܪ ܝܘܡܐ ܕܡܐܓܕܐܢ"}
lg{"ܥܕܢܐ ܕܡܐܓܐܕܐܢ"}
@@ -1692,11 +1665,6 @@ syr{
"meta:Mawson"{
ls{"ܥܕܢܐ ܕܡܐܘܣܘܢ"}
}
- "meta:Mexico_Northwest"{
- ld{"ܥܕܢܐ ܕܒܗܪ ܝܘܡܐ ܓܪܒܝ ܡܥܪܒ ܡܟܣܝܩܘ"}
- lg{"ܥܕܢܐ ܓܪܒܝ ܡܥܪܒ ܡܟܣܝܩܘ"}
- ls{"ܥܕܢܐ ܡܫܘܚܬܢܝܬܐ ܓܪܒܝ ܡܥܪܒ ܡܟܣܝܩܘ"}
- }
"meta:Mexico_Pacific"{
ld{"ܥܕܢܐ ܕܒܗܪ ܝܘܡܐ ܕܡܟܣܝܩܘ ܫܝܢܝܬܐ"}
lg{"ܥܕܢܐ ܕܡܟܣܝܩܘ ܫܝܢܝܬܐ"}
diff --git a/icu4c/source/data/zone/ta.txt b/icu4c/source/data/zone/ta.txt
index b50cd93f6..91dcb5464 100644
--- a/icu4c/source/data/zone/ta.txt
+++ b/icu4c/source/data/zone/ta.txt
@@ -465,9 +465,6 @@ ta{
"America:New_York"{
ec{"நியூயார்க்"}
}
- "America:Nipigon"{
- ec{"நிபிகான்"}
- }
"America:Nome"{
ec{"நோம்"}
}
@@ -489,9 +486,6 @@ ta{
"America:Panama"{
ec{"பனாமா"}
}
- "America:Pangnirtung"{
- ec{"பாங்னிர்துங்"}
- }
"America:Paramaribo"{
ec{"பரமரிபோ"}
}
@@ -513,9 +507,6 @@ ta{
"America:Punta_Arenas"{
ec{"புன்டா அரீனாஸ்"}
}
- "America:Rainy_River"{
- ec{"ரெய்னி ரிவர்"}
- }
"America:Rankin_Inlet"{
ec{"ரான்கின் இன்லெட்"}
}
@@ -531,9 +522,6 @@ ta{
"America:Rio_Branco"{
ec{"ரியோ பிரான்கோ"}
}
- "America:Santa_Isabel"{
- ec{"சான்டா இசபெல்"}
- }
"America:Santarem"{
ec{"சான்டரெம்"}
}
@@ -579,9 +567,6 @@ ta{
"America:Thule"{
ec{"துலே"}
}
- "America:Thunder_Bay"{
- ec{"தண்டர் பே"}
- }
"America:Tijuana"{
ec{"டிஜுவானா"}
}
@@ -603,9 +588,6 @@ ta{
"America:Yakutat"{
ec{"யகுடட்"}
}
- "America:Yellowknife"{
- ec{"யெல்லோநைஃப்"}
- }
"Antarctica:Casey"{
ec{"கேஸி"}
}
@@ -930,9 +912,6 @@ ta{
"Australia:Broken_Hill"{
ec{"புரோக்கன் ஹில்"}
}
- "Australia:Currie"{
- ec{"கியூரி"}
- }
"Australia:Darwin"{
ec{"டார்வின்"}
}
@@ -1115,9 +1094,6 @@ ta{
"Europe:Ulyanovsk"{
ec{"உல்யானோஸ்க்"}
}
- "Europe:Uzhgorod"{
- ec{"உஷோரோட்"}
- }
"Europe:Vaduz"{
ec{"வதுஸ்"}
}
@@ -1139,9 +1115,6 @@ ta{
"Europe:Zagreb"{
ec{"ஸக்ரெப்"}
}
- "Europe:Zaporozhye"{
- ec{"ஜபோரோஸியே"}
- }
"Europe:Zurich"{
ec{"ஜூரிச்"}
}
@@ -1223,9 +1196,6 @@ ta{
"Pacific:Honolulu"{
ec{"ஹோனோலூலூ"}
}
- "Pacific:Johnston"{
- ec{"ஜோன்ஸ்டன்"}
- }
"Pacific:Kanton"{
ec{"கேன்டன்"}
}
@@ -1682,9 +1652,6 @@ ta{
lg{"மக்காவ் நேரம்"}
ls{"மக்காவ் தர நேரம்"}
}
- "meta:Macquarie"{
- ls{"மாக்கியூரி தீவு நேரம்"}
- }
"meta:Magadan"{
ld{"மகதன் கோடை நேரம்"}
lg{"மகதன் நேரம்"}
@@ -1710,11 +1677,6 @@ ta{
"meta:Mawson"{
ls{"மாசன் நேரம்"}
}
- "meta:Mexico_Northwest"{
- ld{"வடமேற்கு மெக்ஸிகோ பகலொளி நேரம்"}
- lg{"வடமேற்கு மெக்ஸிகோ நேரம்"}
- ls{"வடமேற்கு மெக்ஸிகோ நிலையான நேரம்"}
- }
"meta:Mexico_Pacific"{
ld{"மெக்ஸிகன் பசிபிக் பகலொளி நேரம்"}
lg{"மெக்ஸிகன் பசிபிக் நேரம்"}
diff --git a/icu4c/source/data/zone/te.txt b/icu4c/source/data/zone/te.txt
index fe7d817c3..751880452 100644
--- a/icu4c/source/data/zone/te.txt
+++ b/icu4c/source/data/zone/te.txt
@@ -465,9 +465,6 @@ te{
"America:New_York"{
ec{"న్యూయార్క్"}
}
- "America:Nipigon"{
- ec{"నిపిగోన్"}
- }
"America:Nome"{
ec{"నోమ్"}
}
@@ -489,9 +486,6 @@ te{
"America:Panama"{
ec{"పనామా"}
}
- "America:Pangnirtung"{
- ec{"పాంగ్‌నీర్‌టుంగ్"}
- }
"America:Paramaribo"{
ec{"పరామారిబో"}
}
@@ -513,9 +507,6 @@ te{
"America:Punta_Arenas"{
ec{"పుంటా అరీనస్"}
}
- "America:Rainy_River"{
- ec{"రెయినీ రివర్"}
- }
"America:Rankin_Inlet"{
ec{"రన్‌కిన్ ఇన్‌లెట్"}
}
@@ -531,9 +522,6 @@ te{
"America:Rio_Branco"{
ec{"రియో బ్రాంకో"}
}
- "America:Santa_Isabel"{
- ec{"శాంటా ఇసబెల్"}
- }
"America:Santarem"{
ec{"సాంటరెమ్"}
}
@@ -579,9 +567,6 @@ te{
"America:Thule"{
ec{"థులే"}
}
- "America:Thunder_Bay"{
- ec{"థండర్ బే"}
- }
"America:Tijuana"{
ec{"టిజువానా"}
}
@@ -603,9 +588,6 @@ te{
"America:Yakutat"{
ec{"యకుటాట్"}
}
- "America:Yellowknife"{
- ec{"ఎల్లోనైఫ్"}
- }
"Antarctica:Casey"{
ec{"కేసీ"}
}
@@ -930,9 +912,6 @@ te{
"Australia:Broken_Hill"{
ec{"బ్రోకెన్ హిల్"}
}
- "Australia:Currie"{
- ec{"కర్రీ"}
- }
"Australia:Darwin"{
ec{"డార్విన్"}
}
@@ -1115,9 +1094,6 @@ te{
"Europe:Ulyanovsk"{
ec{"ఉల్యనోవ్స్క్"}
}
- "Europe:Uzhgorod"{
- ec{"ఉజ్‌హోరోడ్"}
- }
"Europe:Vaduz"{
ec{"వాడుజ్"}
}
@@ -1139,9 +1115,6 @@ te{
"Europe:Zagreb"{
ec{"జాగ్రెబ్"}
}
- "Europe:Zaporozhye"{
- ec{"జపరోజై"}
- }
"Europe:Zurich"{
ec{"జ్యూరిచ్"}
}
@@ -1223,9 +1196,6 @@ te{
"Pacific:Honolulu"{
ec{"హోనోలులు"}
}
- "Pacific:Johnston"{
- ec{"జాన్సటన్"}
- }
"Pacific:Kanton"{
ec{"కాంతోన్"}
}
@@ -1682,9 +1652,6 @@ te{
lg{"మకావ్ సమయం"}
ls{"మకావ్ ప్రామాణిక సమయం"}
}
- "meta:Macquarie"{
- ls{"మాక్క్వారీ దీవి సమయం"}
- }
"meta:Magadan"{
ld{"మగడాన్ వేసవి సమయం"}
lg{"మగడాన్ సమయం"}
@@ -1710,11 +1677,6 @@ te{
"meta:Mawson"{
ls{"మాసన్ సమయం"}
}
- "meta:Mexico_Northwest"{
- ld{"వాయువ్య మెక్సికో పగటి వెలుతురు సమయం"}
- lg{"వాయువ్య మెక్సికో సమయం"}
- ls{"వాయువ్య మెక్సికో ప్రామాణిక సమయం"}
- }
"meta:Mexico_Pacific"{
ld{"మెక్సికన్ పసిఫిక్ పగటి వెలుతురు సమయం"}
lg{"మెక్సికన్ పసిఫిక్ సమయం"}
diff --git a/icu4c/source/data/zone/th.txt b/icu4c/source/data/zone/th.txt
index a5a929733..baf78866d 100644
--- a/icu4c/source/data/zone/th.txt
+++ b/icu4c/source/data/zone/th.txt
@@ -465,9 +465,6 @@ th{
"America:New_York"{
ec{"นิวยอร์ก"}
}
- "America:Nipigon"{
- ec{"นิปิกอน"}
- }
"America:Nome"{
ec{"นอม"}
}
@@ -489,9 +486,6 @@ th{
"America:Panama"{
ec{"ปานามา"}
}
- "America:Pangnirtung"{
- ec{"พางนีทัง"}
- }
"America:Paramaribo"{
ec{"ปารามาริโบ"}
}
@@ -513,9 +507,6 @@ th{
"America:Punta_Arenas"{
ec{"ปุนตาอาเรนัส"}
}
- "America:Rainy_River"{
- ec{"เรนนี่ริเวอร์"}
- }
"America:Rankin_Inlet"{
ec{"แรงกินอินเล็ต"}
}
@@ -531,9 +522,6 @@ th{
"America:Rio_Branco"{
ec{"รีโอบรังโก"}
}
- "America:Santa_Isabel"{
- ec{"ซานตาอิซาเบล"}
- }
"America:Santarem"{
ec{"ซันตาเรม"}
}
@@ -579,9 +567,6 @@ th{
"America:Thule"{
ec{"ทูเล"}
}
- "America:Thunder_Bay"{
- ec{"ทันเดอร์เบย์"}
- }
"America:Tijuana"{
ec{"ทิฮัวนา"}
}
@@ -603,9 +588,6 @@ th{
"America:Yakutat"{
ec{"ยากูทัต"}
}
- "America:Yellowknife"{
- ec{"เยลโลว์ไนฟ์"}
- }
"Antarctica:Casey"{
ec{"เคซีย์"}
}
@@ -930,9 +912,6 @@ th{
"Australia:Broken_Hill"{
ec{"โบรกเคนฮิลล์"}
}
- "Australia:Currie"{
- ec{"คูร์รี"}
- }
"Australia:Darwin"{
ec{"ดาร์วิน"}
}
@@ -1115,9 +1094,6 @@ th{
"Europe:Ulyanovsk"{
ec{"อะลิยานอฟ"}
}
- "Europe:Uzhgorod"{
- ec{"อัซโกร็อด"}
- }
"Europe:Vaduz"{
ec{"วาดุซ"}
}
@@ -1139,9 +1115,6 @@ th{
"Europe:Zagreb"{
ec{"ซาเกร็บ"}
}
- "Europe:Zaporozhye"{
- ec{"ซาโปโรซี"}
- }
"Europe:Zurich"{
ec{"ซูริค"}
}
@@ -1223,9 +1196,6 @@ th{
"Pacific:Honolulu"{
ec{"โฮโนลูลู"}
}
- "Pacific:Johnston"{
- ec{"จอห์นสตัน"}
- }
"Pacific:Kanton"{
ec{"แคนทอน"}
}
@@ -1684,9 +1654,6 @@ th{
lg{"เวลามาเก๊า"}
ls{"เวลามาตรฐานมาเก๊า"}
}
- "meta:Macquarie"{
- ls{"เวลาเกาะแมกควอรี"}
- }
"meta:Magadan"{
ld{"เวลาฤดูร้อนมากาดาน"}
lg{"เวลามากาดาน"}
@@ -1712,11 +1679,6 @@ th{
"meta:Mawson"{
ls{"เวลามอว์สัน"}
}
- "meta:Mexico_Northwest"{
- ld{"เวลาออมแสงเม็กซิโกตะวันตกเฉียงเหนือ"}
- lg{"เวลาเม็กซิโกตะวันตกเฉียงเหนือ"}
- ls{"เวลามาตรฐานเม็กซิโกตะวันตกเฉียงเหนือ"}
- }
"meta:Mexico_Pacific"{
ld{"เวลาออมแสงแปซิฟิกเม็กซิโก"}
lg{"เวลาแปซิฟิกเม็กซิโก"}
diff --git a/icu4c/source/data/zone/ti.txt b/icu4c/source/data/zone/ti.txt
index 4bc842c56..e8b04057e 100644
--- a/icu4c/source/data/zone/ti.txt
+++ b/icu4c/source/data/zone/ti.txt
@@ -465,9 +465,6 @@ ti{
"America:New_York"{
ec{"ኒው ዮርክ"}
}
- "America:Nipigon"{
- ec{"ኒፒጎን"}
- }
"America:Nome"{
ec{"ነውም"}
}
@@ -489,9 +486,6 @@ ti{
"America:Panama"{
ec{"ፓናማ"}
}
- "America:Pangnirtung"{
- ec{"ፓንግኒርተንግ"}
- }
"America:Paramaribo"{
ec{"ፓራማሪቦ"}
}
@@ -513,9 +507,6 @@ ti{
"America:Punta_Arenas"{
ec{"ፑንታ ኣረናስ"}
}
- "America:Rainy_River"{
- ec{"ረይኒ ሪቨር"}
- }
"America:Rankin_Inlet"{
ec{"ራንኪን ኢንለት"}
}
@@ -576,9 +567,6 @@ ti{
"America:Thule"{
ec{"ዙል"}
}
- "America:Thunder_Bay"{
- ec{"ዛንደር በይ"}
- }
"America:Tijuana"{
ec{"ቲጅዋና"}
}
@@ -600,9 +588,6 @@ ti{
"America:Yakutat"{
ec{"ያኩታት"}
}
- "America:Yellowknife"{
- ec{"የለውናይፍ"}
- }
"Antarctica:Casey"{
ec{"ከይዚ"}
}
@@ -927,9 +912,6 @@ ti{
"Australia:Broken_Hill"{
ec{"ብሮክን ሂል"}
}
- "Australia:Currie"{
- ec{"ኩሪ"}
- }
"Australia:Darwin"{
ec{"ዳርዊን"}
}
@@ -1112,9 +1094,6 @@ ti{
"Europe:Ulyanovsk"{
ec{"ኡልያኖቭስክ"}
}
- "Europe:Uzhgorod"{
- ec{"ኡዝጎሮድ"}
- }
"Europe:Vaduz"{
ec{"ቫዱዝ"}
}
@@ -1136,9 +1115,6 @@ ti{
"Europe:Zagreb"{
ec{"ዛግረብ"}
}
- "Europe:Zaporozhye"{
- ec{"ዛፖሪዥያ"}
- }
"Europe:Zurich"{
ec{"ዙሪክ"}
}
@@ -1220,9 +1196,6 @@ ti{
"Pacific:Honolulu"{
ec{"ሆኖሉሉ"}
}
- "Pacific:Johnston"{
- ec{"ጆንስተን"}
- }
"Pacific:Kanton"{
ec{"ካንቶን"}
}
diff --git a/icu4c/source/data/zone/tk.txt b/icu4c/source/data/zone/tk.txt
index 0bb0bc338..b9281a025 100644
--- a/icu4c/source/data/zone/tk.txt
+++ b/icu4c/source/data/zone/tk.txt
@@ -357,9 +357,6 @@ tk{
"America:Ojinaga"{
ec{"Ohinaga"}
}
- "America:Pangnirtung"{
- ec{"Pangnirtang"}
- }
"America:Phoenix"{
ec{"Feniks"}
}
@@ -378,9 +375,6 @@ tk{
"America:Punta_Arenas"{
ec{"Punta-Arenas"}
}
- "America:Rainy_River"{
- ec{"Reýni-Riwer"}
- }
"America:Rankin_Inlet"{
ec{"Rankin-Inlet"}
}
@@ -396,9 +390,6 @@ tk{
"America:Rio_Branco"{
ec{"Riu-Branku"}
}
- "America:Santa_Isabel"{
- ec{"Santa-Izabel"}
- }
"America:Santiago"{
ec{"Santýago"}
}
@@ -438,9 +429,6 @@ tk{
"America:Thule"{
ec{"Tule"}
}
- "America:Thunder_Bay"{
- ec{"Tander-Beý"}
- }
"America:Tijuana"{
ec{"Tihuana"}
}
@@ -453,9 +441,6 @@ tk{
"America:Yakutat"{
ec{"Ýakutat"}
}
- "America:Yellowknife"{
- ec{"Ýellounaýf"}
- }
"Antarctica:Casey"{
ec{"Keýsi"}
}
@@ -702,9 +687,6 @@ tk{
"Australia:Broken_Hill"{
ec{"Broken-Hil"}
}
- "Australia:Currie"{
- ec{"Kerri"}
- }
"Australia:Eucla"{
ec{"Ýukla"}
}
@@ -837,9 +819,6 @@ tk{
"Europe:Ulyanovsk"{
ec{"Ulýanowsk"}
}
- "Europe:Uzhgorod"{
- ec{"Užgorod"}
- }
"Europe:Vaduz"{
ec{"Waduz"}
}
@@ -858,9 +837,6 @@ tk{
"Europe:Warsaw"{
ec{"Warşawa"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporožýe"}
- }
"Europe:Zurich"{
ec{"Sýurih"}
}
@@ -924,9 +900,6 @@ tk{
"Pacific:Honolulu"{
ec{"Gonolulu"}
}
- "Pacific:Johnston"{
- ec{"Jonston"}
- }
"Pacific:Kosrae"{
ec{"Kosraýe"}
}
@@ -1317,9 +1290,6 @@ tk{
lg{"Lord-Hau wagty"}
ls{"Lord-Hau standart wagty"}
}
- "meta:Macquarie"{
- ls{"Makkuori adasy wagty"}
- }
"meta:Magadan"{
ld{"Magadan tomusky wagty"}
lg{"Magadan wagty"}
@@ -1345,11 +1315,6 @@ tk{
"meta:Mawson"{
ls{"Mouson wagty"}
}
- "meta:Mexico_Northwest"{
- ld{"Demirgazyk-günbatar Meksika tomusky wagty"}
- lg{"Demirgazyk-günbatar Meksika wagty"}
- ls{"Demirgazyk-günbatar Meksika standart wagty"}
- }
"meta:Mexico_Pacific"{
ld{"Meksikan Ýuwaş umman tomusky wagty"}
lg{"Meksikan Ýuwaş umman wagty"}
diff --git a/icu4c/source/data/zone/to.txt b/icu4c/source/data/zone/to.txt
index 9c20633b7..5a16fc4e5 100644
--- a/icu4c/source/data/zone/to.txt
+++ b/icu4c/source/data/zone/to.txt
@@ -24,9 +24,6 @@ to{
"America:New_York"{
ec{"Niu ʻIoke"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"St. Barthélemy"}
}
@@ -48,9 +45,6 @@ to{
"Australia:Brisbane"{
ec{"Pelisipane"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Australia:Melbourne"{
ec{"Melipoane"}
}
@@ -85,9 +79,6 @@ to{
"Europe:Rome"{
ec{"Loma"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhhorod"}
- }
"Europe:Vatican"{
ec{"Vatikani"}
}
@@ -121,9 +112,6 @@ to{
"Pacific:Honolulu"{
ec{"Honolulu"}
}
- "Pacific:Johnston"{
- ec{"Sionesitoni"}
- }
"Pacific:Kanton"{
ec{"Kanitoni"}
}
@@ -573,9 +561,6 @@ to{
lg{"houa fakamakau"}
ls{"houa fakamakau taimi totonu"}
}
- "meta:Macquarie"{
- ls{"houa fakamotumakuali"}
- }
"meta:Magadan"{
ld{"houa fakalūsia-makatani taimi liliu"}
lg{"houa fakalūsia-makatani"}
@@ -601,11 +586,6 @@ to{
"meta:Mawson"{
ls{"houa fakamausoni"}
}
- "meta:Mexico_Northwest"{
- ld{"houa fakamekisikou-tokelauhihifo taimi liliu"}
- lg{"houa fakamekisikou-tokelauhihifo"}
- ls{"houa fakamekisikou-tokelauhihifo taimi totonu"}
- }
"meta:Mexico_Pacific"{
ld{"houa fakamekisikou-pasifika taimi liliu"}
lg{"houa fakamekisikou-pasifika"}
diff --git a/icu4c/source/data/zone/tr.txt b/icu4c/source/data/zone/tr.txt
index 81fe9badf..70d1eeb0c 100644
--- a/icu4c/source/data/zone/tr.txt
+++ b/icu4c/source/data/zone/tr.txt
@@ -90,9 +90,6 @@ tr{
"America:Puerto_Rico"{
ec{"Porto Riko"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"Saint Barthelemy"}
}
@@ -261,9 +258,6 @@ tr{
"Atlantic:South_Georgia"{
ec{"Güney Georgia"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Australia:Sydney"{
ec{"Sidney"}
}
@@ -352,9 +346,6 @@ tr{
"Europe:Tirane"{
ec{"Tiran"}
}
- "Europe:Uzhgorod"{
- ec{"Ujgorod"}
- }
"Europe:Vatican"{
ec{"Vatikan"}
}
@@ -364,9 +355,6 @@ tr{
"Europe:Warsaw"{
ec{"Varşova"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporojye"}
- }
"Europe:Zurich"{
ec{"Zürih"}
}
@@ -774,9 +762,6 @@ tr{
lg{"Makao Saati"}
ls{"Makao Standart Saati"}
}
- "meta:Macquarie"{
- ls{"Macquarie Adası Saati"}
- }
"meta:Magadan"{
ld{"Magadan Yaz Saati"}
lg{"Magadan Saati"}
@@ -802,11 +787,6 @@ tr{
"meta:Mawson"{
ls{"Mawson Saati"}
}
- "meta:Mexico_Northwest"{
- ld{"Kuzeybatı Meksika Yaz Saati"}
- lg{"Kuzeybatı Meksika Saati"}
- ls{"Kuzeybatı Meksika Standart Saati"}
- }
"meta:Mexico_Pacific"{
ld{"Meksika Pasifik Kıyısı Yaz Saati"}
lg{"Meksika Pasifik Kıyısı Saati"}
diff --git a/icu4c/source/data/zone/ug.txt b/icu4c/source/data/zone/ug.txt
index de0fd77d2..fa39c0935 100644
--- a/icu4c/source/data/zone/ug.txt
+++ b/icu4c/source/data/zone/ug.txt
@@ -411,9 +411,6 @@ ug{
lg{"ئاۋمېن ۋاقتى"}
ls{"ئاۋمېن ئۆلچەملىك ۋاقتى"}
}
- "meta:Macquarie"{
- ls{"ماككۇۋارى ئاراللىرى ۋاقتى"}
- }
"meta:Magadan"{
ld{"ماگادان يازلىق ۋاقتى"}
lg{"ماگادان ۋاقتى"}
@@ -439,11 +436,6 @@ ug{
"meta:Mawson"{
ls{"ماۋسون ۋاقتى"}
}
- "meta:Mexico_Northwest"{
- ld{"مېكسىكا غەربىي شىمالىي قىسىم يازلىق ۋاقتى"}
- lg{"مېكسىكا غەربىي شىمالىي قىسىم ۋاقتى"}
- ls{"مېكسىكا غەربىي شىمالىي قىسىم ئۆلچەملىك ۋاقتى"}
- }
"meta:Mexico_Pacific"{
ld{"مېكسىكا تىنچ ئوكيان يازلىق ۋاقتى"}
lg{"مېكسىكا تىنچ ئوكيان ۋاقتى"}
diff --git a/icu4c/source/data/zone/uk.txt b/icu4c/source/data/zone/uk.txt
index 563b623cc..678d8339f 100644
--- a/icu4c/source/data/zone/uk.txt
+++ b/icu4c/source/data/zone/uk.txt
@@ -465,9 +465,6 @@ uk{
"America:New_York"{
ec{"Нью-Йорк"}
}
- "America:Nipigon"{
- ec{"Ніпігон"}
- }
"America:Nome"{
ec{"Ном"}
}
@@ -489,9 +486,6 @@ uk{
"America:Panama"{
ec{"Панама"}
}
- "America:Pangnirtung"{
- ec{"Панґніртанґ"}
- }
"America:Paramaribo"{
ec{"Парамарибо"}
}
@@ -513,9 +507,6 @@ uk{
"America:Punta_Arenas"{
ec{"Пунта-Аренас"}
}
- "America:Rainy_River"{
- ec{"Рейні-Рівер"}
- }
"America:Rankin_Inlet"{
ec{"Ренкін-Інлет"}
}
@@ -531,9 +522,6 @@ uk{
"America:Rio_Branco"{
ec{"Ріо-Бранко"}
}
- "America:Santa_Isabel"{
- ec{"Санта-Ісабель"}
- }
"America:Santarem"{
ec{"Сантарен"}
}
@@ -579,9 +567,6 @@ uk{
"America:Thule"{
ec{"Туле"}
}
- "America:Thunder_Bay"{
- ec{"Тандер-Бей"}
- }
"America:Tijuana"{
ec{"Тіхуана"}
}
@@ -603,9 +588,6 @@ uk{
"America:Yakutat"{
ec{"Якутат"}
}
- "America:Yellowknife"{
- ec{"Єллоунайф"}
- }
"Antarctica:Casey"{
ec{"Кейсі"}
}
@@ -930,9 +912,6 @@ uk{
"Australia:Broken_Hill"{
ec{"Брокен-Хілл"}
}
- "Australia:Currie"{
- ec{"Каррі"}
- }
"Australia:Darwin"{
ec{"Дарвін"}
}
@@ -1115,9 +1094,6 @@ uk{
"Europe:Ulyanovsk"{
ec{"Ульянівськ"}
}
- "Europe:Uzhgorod"{
- ec{"Ужгород"}
- }
"Europe:Vaduz"{
ec{"Вадуц"}
}
@@ -1139,9 +1115,6 @@ uk{
"Europe:Zagreb"{
ec{"Загреб"}
}
- "Europe:Zaporozhye"{
- ec{"Запоріжжя"}
- }
"Europe:Zurich"{
ec{"Цюріх"}
}
@@ -1223,9 +1196,6 @@ uk{
"Pacific:Honolulu"{
ec{"Гонолулу"}
}
- "Pacific:Johnston"{
- ec{"Джонстон"}
- }
"Pacific:Kanton"{
ec{"Кантон"}
}
@@ -1658,9 +1628,6 @@ uk{
lg{"за часом на острові Лорд-Хау"}
ls{"за стандартним часом на острові Лорд-Хау"}
}
- "meta:Macquarie"{
- ls{"за часом на острові Маккуорі"}
- }
"meta:Magadan"{
ld{"за магаданським літнім часом"}
lg{"за магаданським часом"}
@@ -1686,11 +1653,6 @@ uk{
"meta:Mawson"{
ls{"за часом на станції Моусон"}
}
- "meta:Mexico_Northwest"{
- ld{"за літнім північнозахідним часом у Мексиці"}
- lg{"за північнозахідним часом у Мексиці"}
- ls{"за стандартним північнозахідним часом у Мексиці"}
- }
"meta:Mexico_Pacific"{
ld{"за літнім тихоокеанським часом у Мексиці"}
lg{"за тихоокеанським часом у Мексиці"}
diff --git a/icu4c/source/data/zone/ur.txt b/icu4c/source/data/zone/ur.txt
index de007d603..b201c2aee 100644
--- a/icu4c/source/data/zone/ur.txt
+++ b/icu4c/source/data/zone/ur.txt
@@ -465,9 +465,6 @@ ur{
"America:New_York"{
ec{"نیو یارک"}
}
- "America:Nipigon"{
- ec{"نپیگون"}
- }
"America:Nome"{
ec{"نوم"}
}
@@ -489,9 +486,6 @@ ur{
"America:Panama"{
ec{"پنامہ"}
}
- "America:Pangnirtung"{
- ec{"پینگنِرٹنگ"}
- }
"America:Paramaribo"{
ec{"پراماریبو"}
}
@@ -513,9 +507,6 @@ ur{
"America:Punta_Arenas"{
ec{"پنٹا اریناس"}
}
- "America:Rainy_River"{
- ec{"رینی ریور"}
- }
"America:Rankin_Inlet"{
ec{"رینکن انلیٹ"}
}
@@ -531,9 +522,6 @@ ur{
"America:Rio_Branco"{
ec{"ریئو برینکو"}
}
- "America:Santa_Isabel"{
- ec{"سانتا ایزابیل"}
- }
"America:Santarem"{
ec{"سنٹارین"}
}
@@ -579,9 +567,6 @@ ur{
"America:Thule"{
ec{"تھولو"}
}
- "America:Thunder_Bay"{
- ec{"تھنڈر بے"}
- }
"America:Tijuana"{
ec{"تیجوآنا"}
}
@@ -603,9 +588,6 @@ ur{
"America:Yakutat"{
ec{"یکوٹیٹ"}
}
- "America:Yellowknife"{
- ec{"ایلو نائف"}
- }
"Antarctica:Casey"{
ec{"کیسی"}
}
@@ -930,9 +912,6 @@ ur{
"Australia:Broken_Hill"{
ec{"بروکن ہِل"}
}
- "Australia:Currie"{
- ec{"کیوری"}
- }
"Australia:Darwin"{
ec{"ڈارون"}
}
@@ -1115,9 +1094,6 @@ ur{
"Europe:Ulyanovsk"{
ec{"الیانوسک"}
}
- "Europe:Uzhgorod"{
- ec{"ازہوراڈ"}
- }
"Europe:Vaduz"{
ec{"ویڈوز"}
}
@@ -1139,9 +1115,6 @@ ur{
"Europe:Zagreb"{
ec{"زیگریب"}
}
- "Europe:Zaporozhye"{
- ec{"زیپوروزائی"}
- }
"Europe:Zurich"{
ec{"زیورخ"}
}
@@ -1223,9 +1196,6 @@ ur{
"Pacific:Honolulu"{
ec{"ہونولولو"}
}
- "Pacific:Johnston"{
- ec{"جانسٹن"}
- }
"Pacific:Kanton"{
ec{"کانٹن"}
}
@@ -1650,9 +1620,6 @@ ur{
lg{"لارڈ ہووے ٹائم"}
ls{"لارڈ ہووے اسٹینڈرڈ ٹائم"}
}
- "meta:Macquarie"{
- ls{"مکوآری آئلینڈ کا وقت"}
- }
"meta:Magadan"{
ld{"میگیدن سمر ٹائم"}
lg{"میگیدن ٹائم"}
@@ -1678,11 +1645,6 @@ ur{
"meta:Mawson"{
ls{"ماؤسن ٹائم"}
}
- "meta:Mexico_Northwest"{
- ld{"شمال مغربی میکسیکو ڈے لائٹ ٹائم"}
- lg{"شمال مغربی میکسیکو ٹائم"}
- ls{"شمال مغربی میکسیکو اسٹینڈرڈ ٹائم"}
- }
"meta:Mexico_Pacific"{
ld{"میکسیکن پیسفک ڈے لائٹ ٹائم"}
lg{"میکسیکن پیسفک ٹائم"}
diff --git a/icu4c/source/data/zone/ur_IN.txt b/icu4c/source/data/zone/ur_IN.txt
index 6e43160c4..e98366415 100644
--- a/icu4c/source/data/zone/ur_IN.txt
+++ b/icu4c/source/data/zone/ur_IN.txt
@@ -141,9 +141,6 @@ ur_IN{
"meta:Kyrgystan"{
ls{"کرغستان ٹائم"}
}
- "meta:Macquarie"{
- ls{"مکوآری آئلینڈ ٹائم"}
- }
"meta:Maldives"{
ls{"مالدیپ ٹائم"}
}
diff --git a/icu4c/source/data/zone/uz.txt b/icu4c/source/data/zone/uz.txt
index 2794f3a23..0c9ec9f69 100644
--- a/icu4c/source/data/zone/uz.txt
+++ b/icu4c/source/data/zone/uz.txt
@@ -324,9 +324,6 @@ uz{
"America:Ojinaga"{
ec{"Oxinaga"}
}
- "America:Pangnirtung"{
- ec{"Pangnirtang"}
- }
"America:Phoenix"{
ec{"Feniks"}
}
@@ -345,9 +342,6 @@ uz{
"America:Punta_Arenas"{
ec{"Punta-Arenas"}
}
- "America:Rainy_River"{
- ec{"Reyni-River"}
- }
"America:Rankin_Inlet"{
ec{"Rankin-Inlet"}
}
@@ -363,9 +357,6 @@ uz{
"America:Rio_Branco"{
ec{"Riu-Branku"}
}
- "America:Santa_Isabel"{
- ec{"Santa-Izabel"}
- }
"America:Santiago"{
ec{"Santyago"}
}
@@ -405,9 +396,6 @@ uz{
"America:Thule"{
ec{"Tule"}
}
- "America:Thunder_Bay"{
- ec{"Tander-Bey"}
- }
"America:Tijuana"{
ec{"Tixuana"}
}
@@ -420,9 +408,6 @@ uz{
"America:Winnipeg"{
ec{"Vinnipeg"}
}
- "America:Yellowknife"{
- ec{"Yellounayf"}
- }
"Antarctica:Casey"{
ec{"Keysi"}
}
@@ -654,9 +639,6 @@ uz{
"Australia:Broken_Hill"{
ec{"Broken-Xill"}
}
- "Australia:Currie"{
- ec{"Kerri"}
- }
"Australia:Darwin"{
ec{"Darvin"}
}
@@ -783,9 +765,6 @@ uz{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Ujgorod"}
- }
"Europe:Vaduz"{
ec{"Vaduts"}
}
@@ -801,9 +780,6 @@ uz{
"Europe:Warsaw"{
ec{"Varshava"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporojye"}
- }
"Europe:Zurich"{
ec{"Syurix"}
}
@@ -861,9 +837,6 @@ uz{
"Pacific:Honolulu"{
ec{"Gonolulu"}
}
- "Pacific:Johnston"{
- ec{"Jonston"}
- }
"Pacific:Kwajalein"{
ec{"Kvajaleyn"}
}
@@ -1248,9 +1221,6 @@ uz{
lg{"Lord-Xau vaqti"}
ls{"Lord-Xau standart vaqti"}
}
- "meta:Macquarie"{
- ls{"Makkuori oroli vaqti"}
- }
"meta:Magadan"{
ld{"Magadan yozgi vaqti"}
lg{"Magadan vaqti"}
@@ -1276,11 +1246,6 @@ uz{
"meta:Mawson"{
ls{"Mouson vaqti"}
}
- "meta:Mexico_Northwest"{
- ld{"Shimoli-g‘arbiy Meksika yozgi vaqti"}
- lg{"Shimoli-g‘arbiy Meksika vaqti"}
- ls{"Shimoli-g‘arbiy Meksika standart vaqti"}
- }
"meta:Mexico_Pacific"{
ld{"Meksika Tinch okeani yozgi vaqti"}
lg{"Meksika Tinch okeani vaqti"}
diff --git a/icu4c/source/data/zone/uz_Cyrl.txt b/icu4c/source/data/zone/uz_Cyrl.txt
index bc8490b24..2c7989216 100644
--- a/icu4c/source/data/zone/uz_Cyrl.txt
+++ b/icu4c/source/data/zone/uz_Cyrl.txt
@@ -350,9 +350,6 @@ uz_Cyrl{
lg{"Лорд Хове вақти"}
ls{"Лорд Хове стандарт вақти"}
}
- "meta:Macquarie"{
- ls{"Маквари ороли вақти"}
- }
"meta:Magadan"{
ld{"Магадан ёзги вақти"}
lg{"Магадан вақти"}
diff --git a/icu4c/source/data/zone/vec.txt b/icu4c/source/data/zone/vec.txt
index 0af83c009..03d9ef66a 100644
--- a/icu4c/source/data/zone/vec.txt
+++ b/icu4c/source/data/zone/vec.txt
@@ -216,9 +216,6 @@ vec{
"America:Panama"{
ec{"Pànama"}
}
- "America:Pangnirtung"{
- ec{"Pang"}
- }
"America:Port-au-Prince"{
ec{"Porto Prìnsipe"}
}
@@ -487,9 +484,6 @@ vec{
"Europe:Tirane"{
ec{"Tirana"}
}
- "Europe:Uzhgorod"{
- ec{"Ùzgorod"}
- }
"Europe:Vatican"{
ec{"Vategan"}
}
@@ -499,9 +493,6 @@ vec{
"Europe:Warsaw"{
ec{"Varsavia"}
}
- "Europe:Zaporozhye"{
- ec{"Zaporija"}
- }
"Europe:Zurich"{
ec{"Zurigo"}
}
@@ -559,9 +550,6 @@ vec{
"Pacific:Guadalcanal"{
ec{"Ìzola Guadalcanal"}
}
- "Pacific:Johnston"{
- ec{"Atolo Johnston"}
- }
"Pacific:Kanton"{
ec{"Atolo Canton"}
}
@@ -973,9 +961,6 @@ vec{
lg{"Ora de l’Ìzola Lord Howe"}
ls{"Ora normale de l’Ìzola Lord Howe"}
}
- "meta:Macquarie"{
- ls{"Ora de l’Ìzola Macquarie"}
- }
"meta:Magadan"{
ld{"Ora d’istà de Magadan"}
lg{"Ora de Magadan"}
@@ -1001,11 +986,6 @@ vec{
"meta:Mawson"{
ls{"Ora de Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Ora d’istà de’l Mèsego nord osidentale"}
- lg{"Ora de’l Mèsego nord osidentale"}
- ls{"Ora normale de’l Mèsego nord osidentale"}
- }
"meta:Mexico_Pacific"{
ld{"Ora d’istà de’l Mèsego de’l Pasìfego"}
lg{"Ora de’l Mèsego de’l Pasìfego"}
diff --git a/icu4c/source/data/zone/vi.txt b/icu4c/source/data/zone/vi.txt
index 4f8a3a5bd..b830880de 100644
--- a/icu4c/source/data/zone/vi.txt
+++ b/icu4c/source/data/zone/vi.txt
@@ -30,9 +30,6 @@ vi{
"America:North_Dakota:New_Salem"{
ec{"New Salem, Bắc Dakota"}
}
- "America:Santa_Isabel"{
- ec{"Santa Isabel"}
- }
"America:St_Barthelemy"{
ec{"St. Barthélemy"}
}
@@ -69,9 +66,6 @@ vi{
"Atlantic:South_Georgia"{
ec{"Nam Georgia"}
}
- "Australia:Currie"{
- ec{"Currie"}
- }
"Etc:UTC"{
ls{"Giờ Phối hợp Quốc tế"}
}
@@ -96,9 +90,6 @@ vi{
"Europe:Prague"{
ec{"Praha"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhhorod"}
- }
"Indian:Reunion"{
ec{"Réunion"}
}
@@ -518,9 +509,6 @@ vi{
lg{"Giờ Ma Cao"}
ls{"Giờ Chuẩn Ma Cao"}
}
- "meta:Macquarie"{
- ls{"Giờ đảo Macquarie"}
- }
"meta:Magadan"{
ld{"Giờ mùa hè Magadan"}
lg{"Giờ Magadan"}
@@ -546,11 +534,6 @@ vi{
"meta:Mawson"{
ls{"Giờ Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Giờ Mùa Hè Tây Bắc Mexico"}
- lg{"Giờ Tây Bắc Mexico"}
- ls{"Giờ Chuẩn Tây Bắc Mexico"}
- }
"meta:Mexico_Pacific"{
ld{"Giờ Mùa Hè Thái Bình Dương Mexico"}
lg{"Giờ Thái Bình Dương Mexico"}
diff --git a/icu4c/source/data/zone/xh.txt b/icu4c/source/data/zone/xh.txt
index 07c8085f5..ff7b42139 100644
--- a/icu4c/source/data/zone/xh.txt
+++ b/icu4c/source/data/zone/xh.txt
@@ -42,9 +42,6 @@ xh{
"Europe:London"{
ld{"British Summer Time"}
}
- "Europe:Uzhgorod"{
- ec{"Uzhhorod"}
- }
"Indian:Reunion"{
ec{"Réunion"}
}
@@ -390,9 +387,6 @@ xh{
lg{"Lord Howe Time"}
ls{"Lord Howe Standard Time"}
}
- "meta:Macquarie"{
- ls{"Macquarie Island Time"}
- }
"meta:Magadan"{
ld{"Magadan Summer Time"}
lg{"Magadan Time"}
@@ -418,11 +412,6 @@ xh{
"meta:Mawson"{
ls{"Mawson Time"}
}
- "meta:Mexico_Northwest"{
- ld{"Northwest Mexico Daylight Time"}
- lg{"Northwest Mexico Time"}
- ls{"Northwest Mexico Standard Time"}
- }
"meta:Mexico_Pacific"{
ld{"Mexican Pacific Daylight Time"}
lg{"Mexican Pacific Time"}
diff --git a/icu4c/source/data/zone/xnr.txt b/icu4c/source/data/zone/xnr.txt
index aed0d1e87..3253a0ae7 100644
--- a/icu4c/source/data/zone/xnr.txt
+++ b/icu4c/source/data/zone/xnr.txt
@@ -354,9 +354,6 @@ xnr{
lg{"लॉर्ड होवे दा टैम"}
ls{"लॉर्ड होवे दा मानक टैम"}
}
- "meta:Macquarie"{
- ls{"मक्वारी टापू दा टैम"}
- }
"meta:Magadan"{
ld{"मागादान दी तोंदिया दा टैम"}
lg{"मागादान दा टैम"}
@@ -382,11 +379,6 @@ xnr{
"meta:Mawson"{
ls{"माव्सन दा टैम"}
}
- "meta:Mexico_Northwest"{
- ld{"उत्तर पश्चिमी मेक्सिको दे ध्याड़े दे उजाले दा टैम"}
- lg{"उत्तर पश्चिमी मेक्सिको दा टैम"}
- ls{"उत्तर पश्चिमी मेक्सिको दा मानक टैम"}
- }
"meta:Mexico_Pacific"{
ld{"मेक्सिकन प्रशांत दे ध्याड़े दे उजाले दा टैम"}
lg{"मेक्सिकन प्रशांत दा टैम"}
diff --git a/icu4c/source/data/zone/yo.txt b/icu4c/source/data/zone/yo.txt
index 2ea71773b..5e1c4f319 100644
--- a/icu4c/source/data/zone/yo.txt
+++ b/icu4c/source/data/zone/yo.txt
@@ -213,9 +213,6 @@ yo{
"America:New_York"{
ec{"ìlú New York"}
}
- "America:Nipigon"{
- ec{"ìlú Nipigoni"}
- }
"America:Nome"{
ec{"ìlú Nomi"}
}
@@ -234,9 +231,6 @@ yo{
"America:Panama"{
ec{"ìlú Panama"}
}
- "America:Pangnirtung"{
- ec{"ìlú Panituni"}
- }
"America:Phoenix"{
ec{"ìlú Fínísì"}
}
@@ -249,9 +243,6 @@ yo{
"America:Puerto_Rico"{
ec{"ìlú Puerto Riko"}
}
- "America:Rainy_River"{
- ec{"ìlú Raini Rifà"}
- }
"America:Rankin_Inlet"{
ec{"ìlú Rankin Inlet"}
}
@@ -297,9 +288,6 @@ yo{
"America:Thule"{
ec{"ìlú Tulè"}
}
- "America:Thunder_Bay"{
- ec{"ìlú Omi Thunder"}
- }
"America:Tijuana"{
ec{"ìlú Tíjúana"}
}
@@ -321,9 +309,6 @@ yo{
"America:Yakutat"{
ec{"ìlú Yakuta"}
}
- "America:Yellowknife"{
- ec{"ìlú Yelonáfù"}
- }
"Atlantic:Bermuda"{
ec{"ìlú Bẹ̀múdà"}
}
@@ -681,9 +666,6 @@ yo{
lg{"Lord Howe Time"}
ls{"Lord Howe Standard Time"}
}
- "meta:Macquarie"{
- ls{"Macquarie Island Time"}
- }
"meta:Magadan"{
ld{"Magadan Summer Time"}
lg{"Magadan Time"}
@@ -709,11 +691,6 @@ yo{
"meta:Mawson"{
ls{"Mawson Time"}
}
- "meta:Mexico_Northwest"{
- ld{"Àkókò Ojúmọmọ Apá Ìwọ̀ Oorùn Mẹ́ṣíkò"}
- lg{"Àkókò Apá Ìwọ̀ Oorùn Mẹ́ṣíkò"}
- ls{"Àkókò Àfẹnukò Apá Ìwọ̀ Oorùn Mẹ́ṣíkò"}
- }
"meta:Mexico_Pacific"{
ld{"Àkókò Ojúmọmọ Pásífíìkì Mẹ́síkò"}
lg{"Àkókò Pásífíìkì Mẹ́ṣíkò"}
diff --git a/icu4c/source/data/zone/yo_BJ.txt b/icu4c/source/data/zone/yo_BJ.txt
index 47182ba86..ca23376cb 100644
--- a/icu4c/source/data/zone/yo_BJ.txt
+++ b/icu4c/source/data/zone/yo_BJ.txt
@@ -195,11 +195,6 @@ yo_BJ{
lg{"Àkókò Máríshúshì"}
ls{"Àkókò Àfɛnukò Máríshúshì"}
}
- "meta:Mexico_Northwest"{
- ld{"Àkókò Ojúmɔmɔ Apá Ìwɔ̀ Oorùn Mɛ́shíkò"}
- lg{"Àkókò Apá Ìwɔ̀ Oorùn Mɛ́shíkò"}
- ls{"Àkókò Àfɛnukò Apá Ìwɔ̀ Oorùn Mɛ́shíkò"}
- }
"meta:Mexico_Pacific"{
ld{"Àkókò Ojúmɔmɔ Pásífíìkì Mɛ́síkò"}
lg{"Àkókò Pásífíìkì Mɛ́shíkò"}
diff --git a/icu4c/source/data/zone/yrl.txt b/icu4c/source/data/zone/yrl.txt
index d9611285c..300a612af 100644
--- a/icu4c/source/data/zone/yrl.txt
+++ b/icu4c/source/data/zone/yrl.txt
@@ -432,9 +432,6 @@ yrl{
"America:New_York"{
ec{"Yurki Pisasú"}
}
- "America:Nipigon"{
- ec{"Nipigũ"}
- }
"America:Nome"{
ec{"Réra"}
}
@@ -456,9 +453,6 @@ yrl{
"America:Panama"{
ec{"Panamã"}
}
- "America:Pangnirtung"{
- ec{"Pãginitũgi"}
- }
"America:Paramaribo"{
ec{"Paramaribu"}
}
@@ -480,9 +474,6 @@ yrl{
"America:Punta_Arenas"{
ec{"Pũta Arena-ita"}
}
- "America:Rainy_River"{
- ec{"Paranã Amanawera"}
- }
"America:Rankin_Inlet"{
ec{"Rãkĩ Uikesawa"}
}
@@ -498,9 +489,6 @@ yrl{
"America:Rio_Branco"{
ec{"Paranã Murutĩga"}
}
- "America:Santa_Isabel"{
- ec{"Sãta Isabeu"}
- }
"America:Santarem"{
ec{"Sãtarẽ"}
}
@@ -546,9 +534,6 @@ yrl{
"America:Thule"{
ec{"Tixuri"}
}
- "America:Thunder_Bay"{
- ec{"Tupã Kuara"}
- }
"America:Tijuana"{
ec{"Tijuvỹnỹ"}
}
@@ -570,9 +555,6 @@ yrl{
"America:Yakutat"{
ec{"Yakutati"}
}
- "America:Yellowknife"{
- ec{"Kisé-tawá"}
- }
"Antarctica:Casey"{
ec{"Kasei"}
}
@@ -873,9 +855,6 @@ yrl{
"Australia:Broken_Hill"{
ec{"Iwitera Mupenaíra"}
}
- "Australia:Currie"{
- ec{"Kurie"}
- }
"Australia:Darwin"{
ec{"Dariwĩ"}
}
@@ -1049,9 +1028,6 @@ yrl{
"Europe:Ulyanovsk"{
ec{"Ulianuwiki"}
}
- "Europe:Uzhgorod"{
- ec{"Usigurudi"}
- }
"Europe:Vaduz"{
ec{"Vadusi"}
}
@@ -1073,9 +1049,6 @@ yrl{
"Europe:Zagreb"{
ec{"Sagarebi"}
}
- "Europe:Zaporozhye"{
- ec{"Saporisiya"}
- }
"Europe:Zurich"{
ec{"Zuriki"}
}
@@ -1154,9 +1127,6 @@ yrl{
"Pacific:Honolulu"{
ec{"Hunururu"}
}
- "Pacific:Johnston"{
- ec{"Jũsitũ"}
- }
"Pacific:Kosrae"{
ec{"Kusirai"}
}
@@ -1597,9 +1567,6 @@ yrl{
lg{"Makau Hurariyu"}
ls{"Makau Hurariyu Retewa"}
}
- "meta:Macquarie"{
- ls{"Kapuãma Makikuari Hurariyu"}
- }
"meta:Magadan"{
ld{"Magadã Kurasí Ara Hurariyu"}
lg{"Magadã Hurariyu"}
@@ -1625,11 +1592,6 @@ yrl{
"meta:Mawson"{
ls{"Mausũ Hurariyu"}
}
- "meta:Mexico_Northwest"{
- ld{"Mẽsiku Nutiwesiti Kurasí Ara Hurariyu"}
- lg{"Mẽsiku Nutiwesiti Hurariyu"}
- ls{"Mẽsiku Nutiwesiti Hurariyu Retewa"}
- }
"meta:Mexico_Pacific"{
ld{"Pasifiku Mexikanu Kurasí Ara Hurariyu"}
lg{"Pasifiku Mexikanu Hurariyu"}
diff --git a/icu4c/source/data/zone/yue.txt b/icu4c/source/data/zone/yue.txt
index fbe98f5e5..cf4c0e467 100644
--- a/icu4c/source/data/zone/yue.txt
+++ b/icu4c/source/data/zone/yue.txt
@@ -465,9 +465,6 @@ yue{
"America:New_York"{
ec{"紐約"}
}
- "America:Nipigon"{
- ec{"尼皮岡"}
- }
"America:Nome"{
ec{"諾姆"}
}
@@ -489,9 +486,6 @@ yue{
"America:Panama"{
ec{"巴拿馬"}
}
- "America:Pangnirtung"{
- ec{"潘尼爾東"}
- }
"America:Paramaribo"{
ec{"巴拉馬利波"}
}
@@ -513,9 +507,6 @@ yue{
"America:Punta_Arenas"{
ec{"蓬塔阿雷納斯"}
}
- "America:Rainy_River"{
- ec{"雨河鎮"}
- }
"America:Rankin_Inlet"{
ec{"蘭今灣"}
}
@@ -531,9 +522,6 @@ yue{
"America:Rio_Branco"{
ec{"里約布蘭"}
}
- "America:Santa_Isabel"{
- ec{"聖伊薩貝爾"}
- }
"America:Santarem"{
ec{"聖塔倫"}
}
@@ -579,9 +567,6 @@ yue{
"America:Thule"{
ec{"杜里"}
}
- "America:Thunder_Bay"{
- ec{"珊德灣"}
- }
"America:Tijuana"{
ec{"提華納"}
}
@@ -603,9 +588,6 @@ yue{
"America:Yakutat"{
ec{"雅庫塔"}
}
- "America:Yellowknife"{
- ec{"耶洛奈夫"}
- }
"Antarctica:Casey"{
ec{"凱西"}
}
@@ -930,9 +912,6 @@ yue{
"Australia:Broken_Hill"{
ec{"布羅肯希爾"}
}
- "Australia:Currie"{
- ec{"克黎"}
- }
"Australia:Darwin"{
ec{"達爾文"}
}
@@ -1115,9 +1094,6 @@ yue{
"Europe:Ulyanovsk"{
ec{"烏里揚諾夫斯克"}
}
- "Europe:Uzhgorod"{
- ec{"烏茲哥洛"}
- }
"Europe:Vaduz"{
ec{"瓦都茲"}
}
@@ -1139,9 +1115,6 @@ yue{
"Europe:Zagreb"{
ec{"札格瑞布"}
}
- "Europe:Zaporozhye"{
- ec{"札波羅結"}
- }
"Europe:Zurich"{
ec{"蘇黎世"}
}
@@ -1223,9 +1196,6 @@ yue{
"Pacific:Honolulu"{
ec{"檀香山"}
}
- "Pacific:Johnston"{
- ec{"強斯頓"}
- }
"Pacific:Kanton"{
ec{"坎頓"}
}
@@ -1684,9 +1654,6 @@ yue{
lg{"澳門時間"}
ls{"澳門標準時間"}
}
- "meta:Macquarie"{
- ls{"麥覺理時間"}
- }
"meta:Magadan"{
ld{"馬加丹夏令時間"}
lg{"馬加丹時間"}
@@ -1712,11 +1679,6 @@ yue{
"meta:Mawson"{
ls{"莫森時間"}
}
- "meta:Mexico_Northwest"{
- ld{"墨西哥西北部夏令時間"}
- lg{"墨西哥西北部時間"}
- ls{"墨西哥西北部標準時間"}
- }
"meta:Mexico_Pacific"{
ld{"墨西哥太平洋夏令時間"}
lg{"墨西哥太平洋時間"}
diff --git a/icu4c/source/data/zone/yue_Hans.txt b/icu4c/source/data/zone/yue_Hans.txt
index 782d74b22..f22f4f4ce 100644
--- a/icu4c/source/data/zone/yue_Hans.txt
+++ b/icu4c/source/data/zone/yue_Hans.txt
@@ -466,9 +466,6 @@ yue_Hans{
"America:New_York"{
ec{"纽约"}
}
- "America:Nipigon"{
- ec{"尼皮冈"}
- }
"America:Nome"{
ec{"诺姆"}
}
@@ -490,9 +487,6 @@ yue_Hans{
"America:Panama"{
ec{"巴拿马"}
}
- "America:Pangnirtung"{
- ec{"潘尼尔东"}
- }
"America:Paramaribo"{
ec{"巴拉马利波"}
}
@@ -514,9 +508,6 @@ yue_Hans{
"America:Punta_Arenas"{
ec{"蓬塔阿雷纳斯"}
}
- "America:Rainy_River"{
- ec{"雨河镇"}
- }
"America:Rankin_Inlet"{
ec{"兰今湾"}
}
@@ -532,9 +523,6 @@ yue_Hans{
"America:Rio_Branco"{
ec{"里约布兰"}
}
- "America:Santa_Isabel"{
- ec{"圣伊萨贝尔"}
- }
"America:Santarem"{
ec{"圣塔伦"}
}
@@ -580,9 +568,6 @@ yue_Hans{
"America:Thule"{
ec{"杜里"}
}
- "America:Thunder_Bay"{
- ec{"珊德湾"}
- }
"America:Tijuana"{
ec{"提华纳"}
}
@@ -604,9 +589,6 @@ yue_Hans{
"America:Yakutat"{
ec{"雅库塔"}
}
- "America:Yellowknife"{
- ec{"耶洛奈夫"}
- }
"Antarctica:Casey"{
ec{"凯西"}
}
@@ -931,9 +913,6 @@ yue_Hans{
"Australia:Broken_Hill"{
ec{"布罗肯希尔"}
}
- "Australia:Currie"{
- ec{"克黎"}
- }
"Australia:Darwin"{
ec{"达尔文"}
}
@@ -1116,9 +1095,6 @@ yue_Hans{
"Europe:Ulyanovsk"{
ec{"乌里扬诺夫斯克"}
}
- "Europe:Uzhgorod"{
- ec{"乌兹哥洛"}
- }
"Europe:Vaduz"{
ec{"瓦都兹"}
}
@@ -1140,9 +1116,6 @@ yue_Hans{
"Europe:Zagreb"{
ec{"札格瑞布"}
}
- "Europe:Zaporozhye"{
- ec{"札波罗结"}
- }
"Europe:Zurich"{
ec{"苏黎世"}
}
@@ -1224,9 +1197,6 @@ yue_Hans{
"Pacific:Honolulu"{
ec{"檀香山"}
}
- "Pacific:Johnston"{
- ec{"强斯顿"}
- }
"Pacific:Kanton"{
ec{"坎顿"}
}
@@ -1685,9 +1655,6 @@ yue_Hans{
lg{"澳门时间"}
ls{"澳门标准时间"}
}
- "meta:Macquarie"{
- ls{"麦觉理时间"}
- }
"meta:Magadan"{
ld{"马加丹夏令时间"}
lg{"马加丹时间"}
@@ -1713,11 +1680,6 @@ yue_Hans{
"meta:Mawson"{
ls{"莫森时间"}
}
- "meta:Mexico_Northwest"{
- ld{"墨西哥西北部夏令时间"}
- lg{"墨西哥西北部时间"}
- ls{"墨西哥西北部标准时间"}
- }
"meta:Mexico_Pacific"{
ld{"墨西哥太平洋夏令时间"}
lg{"墨西哥太平洋时间"}
diff --git a/icu4c/source/data/zone/zh.txt b/icu4c/source/data/zone/zh.txt
index 87fe08024..2a3ad1875 100644
--- a/icu4c/source/data/zone/zh.txt
+++ b/icu4c/source/data/zone/zh.txt
@@ -465,9 +465,6 @@ zh{
"America:New_York"{
ec{"纽约"}
}
- "America:Nipigon"{
- ec{"尼皮贡"}
- }
"America:Nome"{
ec{"诺姆"}
}
@@ -489,9 +486,6 @@ zh{
"America:Panama"{
ec{"巴拿马"}
}
- "America:Pangnirtung"{
- ec{"旁涅唐"}
- }
"America:Paramaribo"{
ec{"帕拉马里博"}
}
@@ -513,9 +507,6 @@ zh{
"America:Punta_Arenas"{
ec{"蓬塔阿雷纳斯"}
}
- "America:Rainy_River"{
- ec{"雷尼河"}
- }
"America:Rankin_Inlet"{
ec{"兰今湾"}
}
@@ -531,9 +522,6 @@ zh{
"America:Rio_Branco"{
ec{"里奥布郎库"}
}
- "America:Santa_Isabel"{
- ec{"圣伊萨贝尔"}
- }
"America:Santarem"{
ec{"圣塔伦"}
}
@@ -579,9 +567,6 @@ zh{
"America:Thule"{
ec{"图勒"}
}
- "America:Thunder_Bay"{
- ec{"桑德贝"}
- }
"America:Tijuana"{
ec{"蒂华纳"}
}
@@ -603,9 +588,6 @@ zh{
"America:Yakutat"{
ec{"亚库塔特"}
}
- "America:Yellowknife"{
- ec{"耶洛奈夫"}
- }
"Antarctica:Casey"{
ec{"卡塞"}
}
@@ -930,9 +912,6 @@ zh{
"Australia:Broken_Hill"{
ec{"布罗肯希尔"}
}
- "Australia:Currie"{
- ec{"柯里"}
- }
"Australia:Darwin"{
ec{"达尔文"}
}
@@ -1115,9 +1094,6 @@ zh{
"Europe:Ulyanovsk"{
ec{"乌里扬诺夫斯克"}
}
- "Europe:Uzhgorod"{
- ec{"乌日哥罗德"}
- }
"Europe:Vaduz"{
ec{"瓦杜兹"}
}
@@ -1139,9 +1115,6 @@ zh{
"Europe:Zagreb"{
ec{"萨格勒布"}
}
- "Europe:Zaporozhye"{
- ec{"扎波罗热"}
- }
"Europe:Zurich"{
ec{"苏黎世"}
}
@@ -1223,9 +1196,6 @@ zh{
"Pacific:Honolulu"{
ec{"檀香山"}
}
- "Pacific:Johnston"{
- ec{"约翰斯顿"}
- }
"Pacific:Kanton"{
ec{"坎顿岛"}
}
@@ -1684,9 +1654,6 @@ zh{
lg{"澳门时间"}
ls{"澳门标准时间"}
}
- "meta:Macquarie"{
- ls{"麦夸里岛时间"}
- }
"meta:Magadan"{
ld{"马加丹夏令时间"}
lg{"马加丹时间"}
@@ -1712,11 +1679,6 @@ zh{
"meta:Mawson"{
ls{"莫森时间"}
}
- "meta:Mexico_Northwest"{
- ld{"墨西哥西北部夏令时间"}
- lg{"墨西哥西北部时间"}
- ls{"墨西哥西北部标准时间"}
- }
"meta:Mexico_Pacific"{
ld{"墨西哥太平洋夏令时间"}
lg{"墨西哥太平洋时间"}
diff --git a/icu4c/source/data/zone/zh_Hant.txt b/icu4c/source/data/zone/zh_Hant.txt
index 217c57ec1..9cb6e72ba 100644
--- a/icu4c/source/data/zone/zh_Hant.txt
+++ b/icu4c/source/data/zone/zh_Hant.txt
@@ -466,9 +466,6 @@ zh_Hant{
"America:New_York"{
ec{"紐約"}
}
- "America:Nipigon"{
- ec{"尼皮岡"}
- }
"America:Nome"{
ec{"諾姆"}
}
@@ -490,9 +487,6 @@ zh_Hant{
"America:Panama"{
ec{"巴拿馬"}
}
- "America:Pangnirtung"{
- ec{"潘尼爾東"}
- }
"America:Paramaribo"{
ec{"巴拉馬利波"}
}
@@ -514,9 +508,6 @@ zh_Hant{
"America:Punta_Arenas"{
ec{"蓬塔阿雷納斯"}
}
- "America:Rainy_River"{
- ec{"雨河鎮"}
- }
"America:Rankin_Inlet"{
ec{"蘭今灣"}
}
@@ -532,9 +523,6 @@ zh_Hant{
"America:Rio_Branco"{
ec{"里約布蘭"}
}
- "America:Santa_Isabel"{
- ec{"聖伊薩貝爾"}
- }
"America:Santarem"{
ec{"聖塔倫"}
}
@@ -580,9 +568,6 @@ zh_Hant{
"America:Thule"{
ec{"杜里"}
}
- "America:Thunder_Bay"{
- ec{"珊德灣"}
- }
"America:Tijuana"{
ec{"提華納"}
}
@@ -604,9 +589,6 @@ zh_Hant{
"America:Yakutat"{
ec{"雅庫塔"}
}
- "America:Yellowknife"{
- ec{"耶洛奈夫"}
- }
"Antarctica:Casey"{
ec{"凱西"}
}
@@ -931,9 +913,6 @@ zh_Hant{
"Australia:Broken_Hill"{
ec{"布羅肯希爾"}
}
- "Australia:Currie"{
- ec{"克黎"}
- }
"Australia:Darwin"{
ec{"達爾文"}
}
@@ -1116,9 +1095,6 @@ zh_Hant{
"Europe:Ulyanovsk"{
ec{"烏里揚諾夫斯克"}
}
- "Europe:Uzhgorod"{
- ec{"烏茲哥洛"}
- }
"Europe:Vaduz"{
ec{"瓦都茲"}
}
@@ -1140,9 +1116,6 @@ zh_Hant{
"Europe:Zagreb"{
ec{"札格瑞布"}
}
- "Europe:Zaporozhye"{
- ec{"札波羅結"}
- }
"Europe:Zurich"{
ec{"蘇黎世"}
}
@@ -1224,9 +1197,6 @@ zh_Hant{
"Pacific:Honolulu"{
ec{"檀香山"}
}
- "Pacific:Johnston"{
- ec{"強斯頓"}
- }
"Pacific:Kanton"{
ec{"坎頓島"}
}
@@ -1707,9 +1677,6 @@ zh_Hant{
lg{"澳門時間"}
ls{"澳門標準時間"}
}
- "meta:Macquarie"{
- ls{"麥覺理時間"}
- }
"meta:Magadan"{
ld{"馬加丹夏令時間"}
lg{"馬加丹時間"}
@@ -1735,11 +1702,6 @@ zh_Hant{
"meta:Mawson"{
ls{"莫森時間"}
}
- "meta:Mexico_Northwest"{
- ld{"墨西哥西北部夏令時間"}
- lg{"墨西哥西北部時間"}
- ls{"墨西哥西北部標準時間"}
- }
"meta:Mexico_Pacific"{
ld{"墨西哥太平洋夏令時間"}
lg{"墨西哥太平洋時間"}
diff --git a/icu4c/source/data/zone/zh_Hant_HK.txt b/icu4c/source/data/zone/zh_Hant_HK.txt
index 41254c251..3a8808722 100644
--- a/icu4c/source/data/zone/zh_Hant_HK.txt
+++ b/icu4c/source/data/zone/zh_Hant_HK.txt
@@ -210,9 +210,6 @@ zh_Hant_HK{
"America:Nassau"{
ec{"拿騷"}
}
- "America:Nipigon"{
- ec{"尼皮貢"}
- }
"America:Noronha"{
ec{"諾羅尼亞"}
}
@@ -258,9 +255,6 @@ zh_Hant_HK{
"America:Thule"{
ec{"圖勒"}
}
- "America:Thunder_Bay"{
- ec{"雷灣"}
- }
"America:Tijuana"{
ec{"蒂華納"}
}
@@ -270,9 +264,6 @@ zh_Hant_HK{
"America:Yakutat"{
ec{"亞庫塔特"}
}
- "America:Yellowknife"{
- ec{"黃刀鎮"}
- }
"Antarctica:Casey"{
ec{"凱西站"}
}
@@ -381,9 +372,6 @@ zh_Hant_HK{
"Australia:Brisbane"{
ec{"布里斯本"}
}
- "Australia:Currie"{
- ec{"卡里"}
- }
"Australia:Hobart"{
ec{"荷伯特"}
}
@@ -423,9 +411,6 @@ zh_Hant_HK{
"Europe:Skopje"{
ec{"斯科普里"}
}
- "Europe:Uzhgorod"{
- ec{"烏日哥羅德"}
- }
"Europe:Vaduz"{
ec{"華杜茲"}
}
@@ -477,9 +462,6 @@ zh_Hant_HK{
"Pacific:Guadalcanal"{
ec{"瓜達爾卡納爾島"}
}
- "Pacific:Johnston"{
- ec{"約翰斯頓環礁"}
- }
"Pacific:Kosrae"{
ec{"科斯雷"}
}
@@ -577,9 +559,6 @@ zh_Hant_HK{
"meta:Kosrae"{
ls{"科斯雷時間"}
}
- "meta:Macquarie"{
- ls{"麥夸里群島時間"}
- }
"meta:Maldives"{
ls{"馬爾代夫時間"}
}
diff --git a/icu4c/source/data/zone/zu.txt b/icu4c/source/data/zone/zu.txt
index a8e9a856c..49f941615 100644
--- a/icu4c/source/data/zone/zu.txt
+++ b/icu4c/source/data/zone/zu.txt
@@ -462,9 +462,6 @@ zu{
"America:New_York"{
ec{"i-New York"}
}
- "America:Nipigon"{
- ec{"i-Nipigon"}
- }
"America:Nome"{
ec{"i-Nome"}
}
@@ -486,9 +483,6 @@ zu{
"America:Panama"{
ec{"i-Panama"}
}
- "America:Pangnirtung"{
- ec{"i-Pangnirtung"}
- }
"America:Paramaribo"{
ec{"i-Paramaribo"}
}
@@ -510,9 +504,6 @@ zu{
"America:Punta_Arenas"{
ec{"i-Punta Arenas"}
}
- "America:Rainy_River"{
- ec{"i-Rainy River"}
- }
"America:Rankin_Inlet"{
ec{"i-Rankin Inlet"}
}
@@ -528,9 +519,6 @@ zu{
"America:Rio_Branco"{
ec{"i-Rio Branco"}
}
- "America:Santa_Isabel"{
- ec{"i-Santa Isabel"}
- }
"America:Santarem"{
ec{"i-Santarem"}
}
@@ -576,9 +564,6 @@ zu{
"America:Thule"{
ec{"i-Thule"}
}
- "America:Thunder_Bay"{
- ec{"i-Thunder Bay"}
- }
"America:Tijuana"{
ec{"i-Tijuana"}
}
@@ -600,9 +585,6 @@ zu{
"America:Yakutat"{
ec{"i-Yakutat"}
}
- "America:Yellowknife"{
- ec{"i-Yellowknife"}
- }
"Antarctica:Casey"{
ec{"i-Casey"}
}
@@ -921,9 +903,6 @@ zu{
"Australia:Broken_Hill"{
ec{"i-Broken Hill"}
}
- "Australia:Currie"{
- ec{"i-Currie"}
- }
"Australia:Darwin"{
ec{"i-Darwin"}
}
@@ -1106,9 +1085,6 @@ zu{
"Europe:Ulyanovsk"{
ec{"i-Ulyanovsk"}
}
- "Europe:Uzhgorod"{
- ec{"i-Uzhhorod"}
- }
"Europe:Vaduz"{
ec{"i-Vaduz"}
}
@@ -1130,9 +1106,6 @@ zu{
"Europe:Zagreb"{
ec{"i-Zagreb"}
}
- "Europe:Zaporozhye"{
- ec{"i-Zaporozhye"}
- }
"Europe:Zurich"{
ec{"i-Zurich"}
}
@@ -1214,9 +1187,6 @@ zu{
"Pacific:Honolulu"{
ec{"i-Honolulu"}
}
- "Pacific:Johnston"{
- ec{"i-Johnston"}
- }
"Pacific:Kiritimati"{
ec{"i-Kiritimati"}
}
@@ -1638,9 +1608,6 @@ zu{
lg{"Isikhathi sase-Lord Howe"}
ls{"Isikhathi sase-Lord Howe esivamile"}
}
- "meta:Macquarie"{
- ls{"Isikhathi sase-Macquarie Island"}
- }
"meta:Magadan"{
ld{"Isikhathi sasehlobo e-Magadan"}
lg{"Isikhathi sase-Magadan"}
@@ -1666,11 +1633,6 @@ zu{
"meta:Mawson"{
ls{"Isikhathi sase-Mawson"}
}
- "meta:Mexico_Northwest"{
- ld{"Isikhathi sase-Northwest Mexico sasemini"}
- lg{"Isikhathi sase-Northwest Mexico"}
- ls{"Isikhathi sase-Northwest Mexico esijwayelekile"}
- }
"meta:Mexico_Pacific"{
ld{"Isikhathi sase-Mexican Pacific sasemini"}
lg{"Isikhathi sase-Mexican Pacific"}
diff --git a/icu4c/source/extra/uconv/pkgdata.inc.in b/icu4c/source/extra/uconv/pkgdata.inc.in
index b2aa4bd80..74a9530ed 100644
--- a/icu4c/source/extra/uconv/pkgdata.inc.in
+++ b/icu4c/source/extra/uconv/pkgdata.inc.in
@@ -51,7 +51,6 @@ host_vendor=@host_vendor@
host_os=@host_os@
LIB_M=@LIB_M@
CPP=@CPP@
-U_HAVE_INTTYPES_H=@U_HAVE_INTTYPES_H@
U_IS_BIG_ENDIAN=@U_IS_BIG_ENDIAN@
platform=@platform@
diff --git a/icu4c/source/extra/uconv/uconv.cpp b/icu4c/source/extra/uconv/uconv.cpp
index 0f4af6566..20ad13fe0 100644
--- a/icu4c/source/extra/uconv/uconv.cpp
+++ b/icu4c/source/extra/uconv/uconv.cpp
@@ -71,7 +71,7 @@ U_CFUNC char uconvmsg_dat[];
#define DEFAULT_BUFSZ 4096
#define UCONVMSG "uconvmsg"
-static UResourceBundle *gBundle = 0; /* Bundle containing messages. */
+static UResourceBundle *gBundle = nullptr; /* Bundle containing messages. */
/*
* Initialize the message bundle so that message strings can be fetched
@@ -138,17 +138,17 @@ static struct callback_ent {
const void *touctxt;
} transcode_callbacks[] = {
{ "substitute",
- UCNV_FROM_U_CALLBACK_SUBSTITUTE, 0,
- UCNV_TO_U_CALLBACK_SUBSTITUTE, 0 },
+ UCNV_FROM_U_CALLBACK_SUBSTITUTE, nullptr,
+ UCNV_TO_U_CALLBACK_SUBSTITUTE, nullptr },
{ "skip",
- UCNV_FROM_U_CALLBACK_SKIP, 0,
- UCNV_TO_U_CALLBACK_SKIP, 0 },
+ UCNV_FROM_U_CALLBACK_SKIP, nullptr,
+ UCNV_TO_U_CALLBACK_SKIP, nullptr },
{ "stop",
- UCNV_FROM_U_CALLBACK_STOP, 0,
- UCNV_TO_U_CALLBACK_STOP, 0 },
+ UCNV_FROM_U_CALLBACK_STOP, nullptr,
+ UCNV_TO_U_CALLBACK_STOP, nullptr },
{ "escape",
- UCNV_FROM_U_CALLBACK_ESCAPE, 0,
- UCNV_TO_U_CALLBACK_ESCAPE, 0},
+ UCNV_FROM_U_CALLBACK_ESCAPE, nullptr,
+ UCNV_TO_U_CALLBACK_ESCAPE, nullptr },
{ "escape-icu",
UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_ICU,
UCNV_TO_U_CALLBACK_ESCAPE, UCNV_ESCAPE_ICU },
@@ -186,7 +186,7 @@ static const struct callback_ent *findCallback(const char *name) {
}
}
- return 0;
+ return nullptr;
}
/* Print converter information. If lookfor is set, only that converter will
@@ -590,8 +590,8 @@ ConvertFile::convertFile(const char *pname,
{
FILE *infile;
UBool ret = true;
- UConverter *convfrom = 0;
- UConverter *convto = 0;
+ UConverter *convfrom = nullptr;
+ UConverter *convto = nullptr;
UErrorCode err = U_ZERO_ERROR;
UBool flush;
UBool closeFile = false;
@@ -606,7 +606,7 @@ ConvertFile::convertFile(const char *pname,
size_t rd, wr;
#if !UCONFIG_NO_TRANSLITERATION
- Transliterator *t = 0; // Transliterator acting on Unicode data.
+ Transliterator *t = nullptr;// Transliterator acting on Unicode data.
UnicodeString chunk; // One chunk of the text being collected for transformation.
#endif
UnicodeString u; // String to do the transliteration.
@@ -619,9 +619,9 @@ ConvertFile::convertFile(const char *pname,
// Open the correct input file or connect to stdin for reading input
- if (infilestr != 0 && strcmp(infilestr, "-")) {
+ if (infilestr != nullptr && strcmp(infilestr, "-")) {
infile = fopen(infilestr, "rb");
- if (infile == 0) {
+ if (infile == nullptr) {
UnicodeString str1(infilestr, "");
str1.append((UChar32) 0);
UnicodeString str2(strerror(errno), "");
@@ -681,7 +681,7 @@ ConvertFile::convertFile(const char *pname,
if (t) {
delete t;
- t = 0;
+ t = nullptr;
}
goto error_exit;
}
@@ -702,7 +702,7 @@ ConvertFile::convertFile(const char *pname,
u_wmsg_errorName(err));
goto error_exit;
}
- ucnv_setToUCallBack(convfrom, toucallback, touctxt, 0, 0, &err);
+ ucnv_setToUCallBack(convfrom, toucallback, touctxt, nullptr, nullptr, &err);
if (U_FAILURE(err)) {
initMsg(pname);
u_wmsg(stderr, "cantSetCallback", u_wmsg_errorName(err));
@@ -717,7 +717,7 @@ ConvertFile::convertFile(const char *pname,
u_wmsg_errorName(err));
goto error_exit;
}
- ucnv_setFromUCallBack(convto, fromucallback, fromuctxt, 0, 0, &err);
+ ucnv_setFromUCallBack(convto, fromucallback, fromuctxt, nullptr, nullptr, &err);
if (U_FAILURE(err)) {
initMsg(pname);
u_wmsg(stderr, "cantSetCallback", u_wmsg_errorName(err));
@@ -1103,16 +1103,16 @@ main(int argc, char **argv)
size_t bufsz = DEFAULT_BUFSZ;
- const char *fromcpage = 0;
- const char *tocpage = 0;
- const char *translit = 0;
- const char *outfilestr = 0;
+ const char *fromcpage = nullptr;
+ const char *tocpage = nullptr;
+ const char *translit = nullptr;
+ const char *outfilestr = nullptr;
UBool fallback = false;
UConverterFromUCallback fromucallback = UCNV_FROM_U_CALLBACK_STOP;
- const void *fromuctxt = 0;
+ const void *fromuctxt = nullptr;
UConverterToUCallback toucallback = UCNV_TO_U_CALLBACK_STOP;
- const void *touctxt = 0;
+ const void *touctxt = nullptr;
char **iter, **remainArgv, **remainArgvLimit;
char **end = argv + argc;
@@ -1120,7 +1120,7 @@ main(int argc, char **argv)
const char *pname;
UBool printConvs = false, printCanon = false, printTranslits = false;
- const char *printName = 0;
+ const char *printName = nullptr;
UBool verbose = false;
UErrorCode status = U_ZERO_ERROR;
@@ -1322,9 +1322,9 @@ main(int argc, char **argv)
}
// Open the correct output file or connect to stdout for reading input
- if (outfilestr != 0 && strcmp(outfilestr, "-")) {
+ if (outfilestr != nullptr && strcmp(outfilestr, "-")) {
outfile = fopen(outfilestr, "wb");
- if (outfile == 0) {
+ if (outfile == nullptr) {
UnicodeString str1(outfilestr, "");
UnicodeString str2(strerror(errno), "");
initMsg(pname);
@@ -1361,7 +1361,7 @@ main(int argc, char **argv)
} else {
if (!cf.convertFile(
pname, fromcpage, toucallback, touctxt, tocpage,
- fromucallback, fromuctxt, fallback, translit, 0,
+ fromucallback, fromuctxt, fallback, translit, nullptr,
outfile, verbose)
) {
goto error_exit;
diff --git a/icu4c/source/extra/uconv/uconv.vcxproj b/icu4c/source/extra/uconv/uconv.vcxproj
index e00a288f4..a0cc5adf0 100644
--- a/icu4c/source/extra/uconv/uconv.vcxproj
+++ b/icu4c/source/extra/uconv/uconv.vcxproj
@@ -36,7 +36,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(OutDir)\uconv.pch</PrecompiledHeaderOutputFile>
diff --git a/icu4c/source/i18n/astro.cpp b/icu4c/source/i18n/astro.cpp
index 575efeb17..f91f6fe08 100644
--- a/icu4c/source/i18n/astro.cpp
+++ b/icu4c/source/i18n/astro.cpp
@@ -242,7 +242,7 @@ inline static double normPI(double angle) {
* @deprecated ICU 2.4. This class may be removed or modified.
*/
CalendarAstronomer::CalendarAstronomer():
- fTime(Calendar::getNow()), fLongitude(0.0), fLatitude(0.0), fGmtOffset(0.0), moonPosition(0,0), moonPositionSet(false) {
+ fTime(Calendar::getNow()), moonPosition(0,0), moonPositionSet(false) {
clearCache();
}
@@ -252,30 +252,7 @@ CalendarAstronomer::CalendarAstronomer():
* @internal
* @deprecated ICU 2.4. This class may be removed or modified.
*/
-CalendarAstronomer::CalendarAstronomer(UDate d): fTime(d), fLongitude(0.0), fLatitude(0.0), fGmtOffset(0.0), moonPosition(0,0), moonPositionSet(false) {
- clearCache();
-}
-
-/**
- * Construct a new <code>CalendarAstronomer</code> object with the given
- * latitude and longitude. The object's time is set to the current
- * date and time.
- * <p>
- * @param longitude The desired longitude, in <em>degrees</em> east of
- * the Greenwich meridian.
- *
- * @param latitude The desired latitude, in <em>degrees</em>. Positive
- * values signify North, negative South.
- *
- * @see java.util.Date#getTime()
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-CalendarAstronomer::CalendarAstronomer(double longitude, double latitude) :
- fTime(Calendar::getNow()), moonPosition(0,0), moonPositionSet(false) {
- fLongitude = normPI(longitude * (double)DEG_RAD);
- fLatitude = normPI(latitude * (double)DEG_RAD);
- fGmtOffset = (double)(fLongitude * 24. * (double)HOUR_MS / (double)CalendarAstronomer_PI2);
+CalendarAstronomer::CalendarAstronomer(UDate d): fTime(d), moonPosition(0,0), moonPositionSet(false) {
clearCache();
}
@@ -301,32 +278,10 @@ CalendarAstronomer::~CalendarAstronomer()
*/
void CalendarAstronomer::setTime(UDate aTime) {
fTime = aTime;
- U_DEBUG_ASTRO_MSG(("setTime(%.1lf, %sL)\n", aTime, debug_astro_date(aTime+fGmtOffset)));
clearCache();
}
/**
- * Set the current date and time of this <code>CalendarAstronomer</code> object. All
- * astronomical calculations are performed based on this time setting.
- *
- * @param jdn the desired time, expressed as a "julian day number",
- * which is the number of elapsed days since
- * 1/1/4713 BC (Julian), 12:00 GMT. Note that julian day
- * numbers start at <em>noon</em>. To get the jdn for
- * the corresponding midnight, subtract 0.5.
- *
- * @see #getJulianDay
- * @see #JULIAN_EPOCH_MS
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-void CalendarAstronomer::setJulianDay(double jdn) {
- fTime = (double)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
- clearCache();
- julianDay = jdn;
-}
-
-/**
* Get the current time of this <code>CalendarAstronomer</code> object,
* represented as the number of milliseconds since
* 1/1/1970 AD 0:00 GMT (Gregorian).
@@ -357,80 +312,6 @@ double CalendarAstronomer::getJulianDay() {
return julianDay;
}
-/**
- * Return this object's time expressed in julian centuries:
- * the number of centuries after 1/1/1900 AD, 12:00 GMT
- *
- * @see #getJulianDay
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-double CalendarAstronomer::getJulianCentury() {
- if (isINVALID(julianCentury)) {
- julianCentury = (getJulianDay() - 2415020.0) / 36525.0;
- }
- return julianCentury;
-}
-
-/**
- * Returns the current Greenwich sidereal time, measured in hours
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-double CalendarAstronomer::getGreenwichSidereal() {
- if (isINVALID(siderealTime)) {
- // See page 86 of "Practical Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
-
- double UT = normalize(fTime/(double)HOUR_MS, 24.);
-
- siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24.);
- }
- return siderealTime;
-}
-
-double CalendarAstronomer::getSiderealOffset() {
- if (isINVALID(siderealT0)) {
- double JD = uprv_floor(getJulianDay() - 0.5) + 0.5;
- double S = JD - 2451545.0;
- double T = S / 36525.0;
- siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
- }
- return siderealT0;
-}
-
-/**
- * Returns the current local sidereal time, measured in hours
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-double CalendarAstronomer::getLocalSidereal() {
- return normalize(getGreenwichSidereal() + (fGmtOffset/(double)HOUR_MS), 24.);
-}
-
-/**
- * Converts local sidereal time to Universal Time.
- *
- * @param lst The Local Sidereal Time, in hours since sidereal midnight
- * on this object's current date.
- *
- * @return The corresponding Universal Time, in milliseconds since
- * 1 Jan 1970, GMT.
- */
-double CalendarAstronomer::lstToUT(double lst) {
- // Convert to local mean time
- double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
-
- // Then find local midnight on this day
- double base = (DAY_MS * ClockMath::floorDivide(fTime + fGmtOffset,(double)DAY_MS)) - fGmtOffset;
-
- //out(" lt =" + lt + " hours");
- //out(" base=" + new Date(base));
-
- return base + (long)(lt * HOUR_MS);
-}
-
-
//-------------------------------------------------------------------------
// Coordinate transformations, all based on the current time of this object
//-------------------------------------------------------------------------
@@ -438,19 +319,6 @@ double CalendarAstronomer::lstToUT(double lst) {
/**
* Convert from ecliptic to equatorial coordinates.
*
- * @param ecliptic A point in the sky in ecliptic coordinates.
- * @return The corresponding point in equatorial coordinates.
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(CalendarAstronomer::Equatorial& result, const CalendarAstronomer::Ecliptic& ecliptic)
-{
- return eclipticToEquatorial(result, ecliptic.longitude, ecliptic.latitude);
-}
-
-/**
- * Convert from ecliptic to equatorial coordinates.
- *
* @param eclipLong The ecliptic longitude
* @param eclipLat The ecliptic latitude
*
@@ -479,46 +347,6 @@ CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(Calenda
return result;
}
-/**
- * Convert from ecliptic longitude to equatorial coordinates.
- *
- * @param eclipLong The ecliptic longitude
- *
- * @return The corresponding point in equatorial coordinates.
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(CalendarAstronomer::Equatorial& result, double eclipLong)
-{
- return eclipticToEquatorial(result, eclipLong, 0); // TODO: optimize
-}
-
-/**
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-CalendarAstronomer::Horizon& CalendarAstronomer::eclipticToHorizon(CalendarAstronomer::Horizon& result, double eclipLong)
-{
- Equatorial equatorial;
- eclipticToEquatorial(equatorial, eclipLong);
-
- double H = getLocalSidereal()*CalendarAstronomer::PI/12 - equatorial.ascension; // Hour-angle
-
- double sinH = ::sin(H);
- double cosH = cos(H);
- double sinD = ::sin(equatorial.declination);
- double cosD = cos(equatorial.declination);
- double sinL = ::sin(fLatitude);
- double cosL = cos(fLatitude);
-
- double altitude = asin(sinD*sinL + cosD*cosL*cosH);
- double azimuth = atan2(-cosD*cosL*sinH, sinD - sinL * ::sin(altitude));
-
- result.set(azimuth, altitude);
- return result;
-}
-
-
//-------------------------------------------------------------------------
// The Sun
//-------------------------------------------------------------------------
@@ -658,50 +486,6 @@ double CalendarAstronomer::getSunLongitude()
}
/**
- * The position of the sun at this object's current date and time,
- * in equatorial coordinates.
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-CalendarAstronomer::Equatorial& CalendarAstronomer::getSunPosition(CalendarAstronomer::Equatorial& result) {
- return eclipticToEquatorial(result, getSunLongitude(), 0);
-}
-
-
-/**
- * Constant representing the vernal equinox.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-/*double CalendarAstronomer::VERNAL_EQUINOX() {
- return 0;
-}*/
-
-/**
- * Constant representing the summer solstice.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "summer" refers to the northern hemisphere's seasons.
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-double CalendarAstronomer::SUMMER_SOLSTICE() {
- return (CalendarAstronomer::PI/2);
-}
-
-/**
- * Constant representing the autumnal equinox.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-/*double CalendarAstronomer::AUTUMN_EQUINOX() {
- return (CalendarAstronomer::PI);
-}*/
-
-/**
* Constant representing the winter solstice.
* For use with {@link #getSunTime getSunTime}.
* Note: In this case, "winter" refers to the northern hemisphere's seasons.
@@ -738,310 +522,6 @@ UDate CalendarAstronomer::getSunTime(double desired, UBool next)
next);
}
-CalendarAstronomer::CoordFunc::~CoordFunc() {}
-
-class RiseSetCoordFunc : public CalendarAstronomer::CoordFunc {
-public:
- virtual ~RiseSetCoordFunc();
- virtual void eval(CalendarAstronomer::Equatorial& result, CalendarAstronomer& a) override { a.getSunPosition(result); }
-};
-
-RiseSetCoordFunc::~RiseSetCoordFunc() {}
-
-UDate CalendarAstronomer::getSunRiseSet(UBool rise)
-{
- UDate t0 = fTime;
-
- // Make a rough guess: 6am or 6pm local time on the current day
- double noon = ClockMath::floorDivide(fTime + fGmtOffset, (double)DAY_MS)*DAY_MS - fGmtOffset + (12*HOUR_MS);
-
- U_DEBUG_ASTRO_MSG(("Noon=%.2lf, %sL, gmtoff %.2lf\n", noon, debug_astro_date(noon+fGmtOffset), fGmtOffset));
- setTime(noon + ((rise ? -6 : 6) * HOUR_MS));
- U_DEBUG_ASTRO_MSG(("added %.2lf ms as a guess,\n", ((rise ? -6. : 6.) * HOUR_MS)));
-
- RiseSetCoordFunc func;
- double t = riseOrSet(func,
- rise,
- .533 * DEG_RAD, // Angular Diameter
- 34. /60.0 * DEG_RAD, // Refraction correction
- MINUTE_MS / 12.); // Desired accuracy
-
- setTime(t0);
- return t;
-}
-
-// Commented out - currently unused. ICU 2.6, Alan
-// //-------------------------------------------------------------------------
-// // Alternate Sun Rise/Set
-// // See Duffett-Smith p.93
-// //-------------------------------------------------------------------------
-//
-// // This yields worse results (as compared to USNO data) than getSunRiseSet().
-// /**
-// * TODO Make this when the entire class is package-private.
-// */
-// /*public*/ long getSunRiseSet2(boolean rise) {
-// // 1. Calculate coordinates of the sun's center for midnight
-// double jd = uprv_floor(getJulianDay() - 0.5) + 0.5;
-// double[] sl = getSunLongitude(jd);// double lambda1 = sl[0];
-// Equatorial pos1 = eclipticToEquatorial(lambda1, 0);
-//
-// // 2. Add ... to lambda to get position 24 hours later
-// double lambda2 = lambda1 + 0.985647*DEG_RAD;
-// Equatorial pos2 = eclipticToEquatorial(lambda2, 0);
-//
-// // 3. Calculate LSTs of rising and setting for these two positions
-// double tanL = ::tan(fLatitude);
-// double H = ::acos(-tanL * ::tan(pos1.declination));
-// double lst1r = (CalendarAstronomer_PI2 + pos1.ascension - H) * 24 / CalendarAstronomer_PI2;
-// double lst1s = (pos1.ascension + H) * 24 / CalendarAstronomer_PI2;
-// H = ::acos(-tanL * ::tan(pos2.declination));
-// double lst2r = (CalendarAstronomer_PI2-H + pos2.ascension ) * 24 / CalendarAstronomer_PI2;
-// double lst2s = (H + pos2.ascension ) * 24 / CalendarAstronomer_PI2;
-// if (lst1r > 24) lst1r -= 24;
-// if (lst1s > 24) lst1s -= 24;
-// if (lst2r > 24) lst2r -= 24;
-// if (lst2s > 24) lst2s -= 24;
-//
-// // 4. Convert LSTs to GSTs. If GST1 > GST2, add 24 to GST2.
-// double gst1r = lstToGst(lst1r);
-// double gst1s = lstToGst(lst1s);
-// double gst2r = lstToGst(lst2r);
-// double gst2s = lstToGst(lst2s);
-// if (gst1r > gst2r) gst2r += 24;
-// if (gst1s > gst2s) gst2s += 24;
-//
-// // 5. Calculate GST at 0h UT of this date
-// double t00 = utToGst(0);
-//
-// // 6. Calculate GST at 0h on the observer's longitude
-// double offset = ::round(fLongitude*12/PI); // p.95 step 6; he _rounds_ to nearest 15 deg.
-// double t00p = t00 - offset*1.002737909;
-// if (t00p < 0) t00p += 24; // do NOT normalize
-//
-// // 7. Adjust
-// if (gst1r < t00p) {
-// gst1r += 24;
-// gst2r += 24;
-// }
-// if (gst1s < t00p) {
-// gst1s += 24;
-// gst2s += 24;
-// }
-//
-// // 8.
-// double gstr = (24.07*gst1r-t00*(gst2r-gst1r))/(24.07+gst1r-gst2r);
-// double gsts = (24.07*gst1s-t00*(gst2s-gst1s))/(24.07+gst1s-gst2s);
-//
-// // 9. Correct for parallax, refraction, and sun's diameter
-// double dec = (pos1.declination + pos2.declination) / 2;
-// double psi = ::acos(sin(fLatitude) / cos(dec));
-// double x = 0.830725 * DEG_RAD; // parallax+refraction+diameter
-// double y = ::asin(sin(x) / ::sin(psi)) * RAD_DEG;
-// double delta_t = 240 * y / cos(dec) / 3600; // hours
-//
-// // 10. Add correction to GSTs, subtract from GSTr
-// gstr -= delta_t;
-// gsts += delta_t;
-//
-// // 11. Convert GST to UT and then to local civil time
-// double ut = gstToUt(rise ? gstr : gsts);
-// //System.out.println((rise?"rise=":"set=") + ut + ", delta_t=" + delta_t);
-// long midnight = DAY_MS * (time / DAY_MS); // Find UT midnight on this day
-// return midnight + (long) (ut * 3600000);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert local sidereal time to Greenwich sidereal time.
-// * Section 15. Duffett-Smith p.21
-// * @param lst in hours (0..24)
-// * @return GST in hours (0..24)
-// */
-// double lstToGst(double lst) {
-// double delta = fLongitude * 24 / CalendarAstronomer_PI2;
-// return normalize(lst - delta, 24);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert UT to GST on this date.
-// * Section 12. Duffett-Smith p.17
-// * @param ut in hours
-// * @return GST in hours
-// */
-// double utToGst(double ut) {
-// return normalize(getT0() + ut*1.002737909, 24);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert GST to UT on this date.
-// * Section 13. Duffett-Smith p.18
-// * @param gst in hours
-// * @return UT in hours
-// */
-// double gstToUt(double gst) {
-// return normalize(gst - getT0(), 24) * 0.9972695663;
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// double getT0() {
-// // Common computation for UT <=> GST
-//
-// // Find JD for 0h UT
-// double jd = uprv_floor(getJulianDay() - 0.5) + 0.5;
-//
-// double s = jd - 2451545.0;
-// double t = s / 36525.0;
-// double t0 = 6.697374558 + (2400.051336 + 0.000025862*t)*t;
-// return t0;
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// //-------------------------------------------------------------------------
-// // Alternate Sun Rise/Set
-// // See sci.astro FAQ
-// // http://www.faqs.org/faqs/astronomy/faq/part3/section-5.html
-// //-------------------------------------------------------------------------
-//
-// // Note: This method appears to produce inferior accuracy as
-// // compared to getSunRiseSet().
-//
-// /**
-// * TODO Make this when the entire class is package-private.
-// */
-// /*public*/ long getSunRiseSet3(boolean rise) {
-//
-// // Compute day number for 0.0 Jan 2000 epoch
-// double d = (double)(time - EPOCH_2000_MS) / DAY_MS;
-//
-// // Now compute the Local Sidereal Time, LST:
-// //
-// double LST = 98.9818 + 0.985647352 * d + /*UT*15 + long*/
-// fLongitude*RAD_DEG;
-// //
-// // (east long. positive). Note that LST is here expressed in degrees,
-// // where 15 degrees corresponds to one hour. Since LST really is an angle,
-// // it's convenient to use one unit---degrees---throughout.
-//
-// // COMPUTING THE SUN'S POSITION
-// // ----------------------------
-// //
-// // To be able to compute the Sun's rise/set times, you need to be able to
-// // compute the Sun's position at any time. First compute the "day
-// // number" d as outlined above, for the desired moment. Next compute:
-// //
-// double oblecl = 23.4393 - 3.563E-7 * d;
-// //
-// double w = 282.9404 + 4.70935E-5 * d;
-// double M = 356.0470 + 0.9856002585 * d;
-// double e = 0.016709 - 1.151E-9 * d;
-// //
-// // This is the obliquity of the ecliptic, plus some of the elements of
-// // the Sun's apparent orbit (i.e., really the Earth's orbit): w =
-// // argument of perihelion, M = mean anomaly, e = eccentricity.
-// // Semi-major axis is here assumed to be exactly 1.0 (while not strictly
-// // true, this is still an accurate approximation). Next compute E, the
-// // eccentric anomaly:
-// //
-// double E = M + e*(180/PI) * ::sin(M*DEG_RAD) * ( 1.0 + e*cos(M*DEG_RAD) );
-// //
-// // where E and M are in degrees. This is it---no further iterations are
-// // needed because we know e has a sufficiently small value. Next compute
-// // the true anomaly, v, and the distance, r:
-// //
-// /* r * cos(v) = */ double A = cos(E*DEG_RAD) - e;
-// /* r * ::sin(v) = */ double B = ::sqrt(1 - e*e) * ::sin(E*DEG_RAD);
-// //
-// // and
-// //
-// // r = sqrt( A*A + B*B )
-// double v = ::atan2( B, A )*RAD_DEG;
-// //
-// // The Sun's true longitude, slon, can now be computed:
-// //
-// double slon = v + w;
-// //
-// // Since the Sun is always at the ecliptic (or at least very very close to
-// // it), we can use simplified formulae to convert slon (the Sun's ecliptic
-// // longitude) to sRA and sDec (the Sun's RA and Dec):
-// //
-// // ::sin(slon) * cos(oblecl)
-// // tan(sRA) = -------------------------
-// // cos(slon)
-// //
-// // ::sin(sDec) = ::sin(oblecl) * ::sin(slon)
-// //
-// // As was the case when computing az, the Azimuth, if possible use an
-// // atan2() function to compute sRA.
-//
-// double sRA = ::atan2(sin(slon*DEG_RAD) * cos(oblecl*DEG_RAD), cos(slon*DEG_RAD))*RAD_DEG;
-//
-// double sin_sDec = ::sin(oblecl*DEG_RAD) * ::sin(slon*DEG_RAD);
-// double sDec = ::asin(sin_sDec)*RAD_DEG;
-//
-// // COMPUTING RISE AND SET TIMES
-// // ----------------------------
-// //
-// // To compute when an object rises or sets, you must compute when it
-// // passes the meridian and the HA of rise/set. Then the rise time is
-// // the meridian time minus HA for rise/set, and the set time is the
-// // meridian time plus the HA for rise/set.
-// //
-// // To find the meridian time, compute the Local Sidereal Time at 0h local
-// // time (or 0h UT if you prefer to work in UT) as outlined above---name
-// // that quantity LST0. The Meridian Time, MT, will now be:
-// //
-// // MT = RA - LST0
-// double MT = normalize(sRA - LST, 360);
-// //
-// // where "RA" is the object's Right Ascension (in degrees!). If negative,
-// // add 360 deg to MT. If the object is the Sun, leave the time as it is,
-// // but if it's stellar, multiply MT by 365.2422/366.2422, to convert from
-// // sidereal to solar time. Now, compute HA for rise/set, name that
-// // quantity HA0:
-// //
-// // ::sin(h0) - ::sin(lat) * ::sin(Dec)
-// // cos(HA0) = ---------------------------------
-// // cos(lat) * cos(Dec)
-// //
-// // where h0 is the altitude selected to represent rise/set. For a purely
-// // mathematical horizon, set h0 = 0 and simplify to:
-// //
-// // cos(HA0) = - tan(lat) * tan(Dec)
-// //
-// // If you want to account for refraction on the atmosphere, set h0 = -35/60
-// // degrees (-35 arc minutes), and if you want to compute the rise/set times
-// // for the Sun's upper limb, set h0 = -50/60 (-50 arc minutes).
-// //
-// double h0 = -50/60 * DEG_RAD;
-//
-// double HA0 = ::acos(
-// (sin(h0) - ::sin(fLatitude) * sin_sDec) /
-// (cos(fLatitude) * cos(sDec*DEG_RAD)))*RAD_DEG;
-//
-// // When HA0 has been computed, leave it as it is for the Sun but multiply
-// // by 365.2422/366.2422 for stellar objects, to convert from sidereal to
-// // solar time. Finally compute:
-// //
-// // Rise time = MT - HA0
-// // Set time = MT + HA0
-// //
-// // convert the times from degrees to hours by dividing by 15.
-// //
-// // If you'd like to check that your calculations are accurate or just
-// // need a quick result, check the USNO's Sun or Moon Rise/Set Table,
-// // <URL:http://aa.usno.navy.mil/AA/data/docs/RS_OneYear.html>.
-//
-// double result = MT + (rise ? -HA0 : HA0); // in degrees
-//
-// // Find UT midnight on this day
-// long midnight = DAY_MS * (time / DAY_MS);
-//
-// return midnight + (long) (result * 3600000 / 15);
-// }
-
//-------------------------------------------------------------------------
// The Moon
//-------------------------------------------------------------------------
@@ -1083,7 +563,7 @@ const CalendarAstronomer::Equatorial& CalendarAstronomer::getMoonPosition()
// Calculate the mean longitude and anomaly of the moon, based on
// a circular orbit. Similar to the corresponding solar calculation.
double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
- meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
+ double meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
//
// Calculate the following corrections:
@@ -1109,7 +589,7 @@ const CalendarAstronomer::Equatorial& CalendarAstronomer::getMoonPosition()
double a4 = 0.2140*PI/180 * ::sin(2 * meanAnomalyMoon);
// Now find the moon's corrected longitude
- moonLongitude = meanLongitude + evection + center - annual + a4;
+ double moonLongitude = meanLongitude + evection + center - annual + a4;
//
// And finally, find the variation, caused by the fact that the sun's
@@ -1149,7 +629,6 @@ const CalendarAstronomer::Equatorial& CalendarAstronomer::getMoonPosition()
* current ecliptic longitudes of the sun and the moon,
* measured in radians.
*
- * @see #getMoonPhase
* @internal
* @deprecated ICU 2.4. This class may be removed or modified.
*/
@@ -1166,56 +645,16 @@ double CalendarAstronomer::getMoonAge() {
}
/**
- * Calculate the phase of the moon at the time set in this object.
- * The returned phase is a <code>double</code> in the range
- * <code>0 <= phase < 1</code>, interpreted as follows:
- * <ul>
- * <li>0.00: New moon
- * <li>0.25: First quarter
- * <li>0.50: Full moon
- * <li>0.75: Last quarter
- * </ul>
- *
- * @see #getMoonAge
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-double CalendarAstronomer::getMoonPhase() {
- // See page 147 of "Practical Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
- return 0.5 * (1 - cos(getMoonAge()));
-}
-
-/**
* Constant representing a new moon.
* For use with {@link #getMoonTime getMoonTime}
* @internal
* @deprecated ICU 2.4. This class may be removed or modified.
*/
-const CalendarAstronomer::MoonAge CalendarAstronomer::NEW_MOON() {
+CalendarAstronomer::MoonAge CalendarAstronomer::NEW_MOON() {
return CalendarAstronomer::MoonAge(0);
}
/**
- * Constant representing the moon's first quarter.
- * For use with {@link #getMoonTime getMoonTime}
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-/*const CalendarAstronomer::MoonAge CalendarAstronomer::FIRST_QUARTER() {
- return CalendarAstronomer::MoonAge(CalendarAstronomer::PI/2);
-}*/
-
-/**
- * Constant representing a full moon.
- * For use with {@link #getMoonTime getMoonTime}
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-const CalendarAstronomer::MoonAge CalendarAstronomer::FULL_MOON() {
- return CalendarAstronomer::MoonAge(CalendarAstronomer::PI);
-}
-/**
* Constant representing the moon's last quarter.
* For use with {@link #getMoonTime getMoonTime}
* @internal
@@ -1235,63 +674,24 @@ MoonTimeAngleFunc::~MoonTimeAngleFunc() {}
}*/
/**
- * Find the next or previous time at which the Moon's ecliptic
- * longitude will have the desired value.
+ * Find the next or previous time at which the moon will be in the
+ * desired phase.
* <p>
- * @param desired The desired longitude.
+ * @param desired The desired phase of the moon.
* @param next <tt>true</tt> if the next occurrence of the phase
* is desired, <tt>false</tt> for the previous occurrence.
* @internal
* @deprecated ICU 2.4. This class may be removed or modified.
*/
-UDate CalendarAstronomer::getMoonTime(double desired, UBool next)
-{
+UDate CalendarAstronomer::getMoonTime(const CalendarAstronomer::MoonAge& desired, UBool next) {
MoonTimeAngleFunc func;
return timeOfAngle( func,
- desired,
+ desired.value,
SYNODIC_MONTH,
MINUTE_MS,
next);
}
-/**
- * Find the next or previous time at which the moon will be in the
- * desired phase.
- * <p>
- * @param desired The desired phase of the moon.
- * @param next <tt>true</tt> if the next occurrence of the phase
- * is desired, <tt>false</tt> for the previous occurrence.
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-UDate CalendarAstronomer::getMoonTime(const CalendarAstronomer::MoonAge& desired, UBool next) {
- return getMoonTime(desired.value, next);
-}
-
-class MoonRiseSetCoordFunc : public CalendarAstronomer::CoordFunc {
-public:
- virtual ~MoonRiseSetCoordFunc();
- virtual void eval(CalendarAstronomer::Equatorial& result, CalendarAstronomer& a) override { result = a.getMoonPosition(); }
-};
-
-MoonRiseSetCoordFunc::~MoonRiseSetCoordFunc() {}
-
-/**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-UDate CalendarAstronomer::getMoonRiseSet(UBool rise)
-{
- MoonRiseSetCoordFunc func;
- return riseOrSet(func,
- rise,
- .533 * DEG_RAD, // Angular Diameter
- 34 /60.0 * DEG_RAD, // Refraction correction
- MINUTE_MS); // Desired accuracy
-}
-
//-------------------------------------------------------------------------
// Interpolation methods for finding the time at which a given event occurs
//-------------------------------------------------------------------------
@@ -1364,48 +764,7 @@ UDate CalendarAstronomer::timeOfAngle(AngleFunc& func, double desired,
return fTime;
}
-UDate CalendarAstronomer::riseOrSet(CoordFunc& func, UBool rise,
- double diameter, double refraction,
- double epsilon)
-{
- Equatorial pos;
- double tanL = ::tan(fLatitude);
- double deltaT = 0;
- int32_t count = 0;
-
- //
- // Calculate the object's position at the current time, then use that
- // position to calculate the time of rising or setting. The position
- // will be different at that time, so iterate until the error is allowable.
- //
- U_DEBUG_ASTRO_MSG(("setup rise=%s, dia=%.3lf, ref=%.3lf, eps=%.3lf\n",
- rise?"T":"F", diameter, refraction, epsilon));
- do {
- // See "Practical Astronomy With Your Calculator, section 33.
- func.eval(pos, *this);
- double angle = ::acos(-tanL * ::tan(pos.declination));
- double lst = ((rise ? CalendarAstronomer_PI2-angle : angle) + pos.ascension ) * 24 / CalendarAstronomer_PI2;
-
- // Convert from LST to Universal Time.
- UDate newTime = lstToUT( lst );
-
- deltaT = newTime - fTime;
- setTime(newTime);
- U_DEBUG_ASTRO_MSG(("%d] dT=%.3lf, angle=%.3lf, lst=%.3lf, A=%.3lf/D=%.3lf\n",
- count, deltaT, angle, lst, pos.ascension, pos.declination));
- }
- while (++ count < 5 && uprv_fabs(deltaT) > epsilon);
-
- // Calculate the correction due to refraction and the object's angular diameter
- double cosD = ::cos(pos.declination);
- double psi = ::acos(sin(fLatitude) / cosD);
- double x = diameter / 2 + refraction;
- double y = ::asin(sin(x) / ::sin(psi));
- long delta = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
-
- return fTime + (rise ? -delta : delta);
-}
- /**
+/**
* Return the obliquity of the ecliptic (the angle between the ecliptic
* and the earth's equator) at the current time. This varies due to
* the precession of the earth's axis.
@@ -1414,19 +773,16 @@ UDate CalendarAstronomer::riseOrSet(CoordFunc& func, UBool rise,
* measured in radians.
*/
double CalendarAstronomer::eclipticObliquity() {
- if (isINVALID(eclipObliquity)) {
- const double epoch = 2451545.0; // 2000 AD, January 1.5
+ const double epoch = 2451545.0; // 2000 AD, January 1.5
- double T = (getJulianDay() - epoch) / 36525;
+ double T = (getJulianDay() - epoch) / 36525;
- eclipObliquity = 23.439292
- - 46.815/3600 * T
- - 0.0006/3600 * T*T
- + 0.00181/3600 * T*T*T;
+ double eclipObliquity = 23.439292
+ - 46.815/3600 * T
+ - 0.0006/3600 * T*T
+ + 0.00181/3600 * T*T*T;
- eclipObliquity *= DEG_RAD;
- }
- return eclipObliquity;
+ return eclipObliquity * DEG_RAD;
}
@@ -1437,45 +793,13 @@ void CalendarAstronomer::clearCache() {
const double INVALID = uprv_getNaN();
julianDay = INVALID;
- julianCentury = INVALID;
sunLongitude = INVALID;
meanAnomalySun = INVALID;
- moonLongitude = INVALID;
moonEclipLong = INVALID;
- meanAnomalyMoon = INVALID;
- eclipObliquity = INVALID;
- siderealTime = INVALID;
- siderealT0 = INVALID;
+
moonPositionSet = false;
}
-//private static void out(String s) {
-// System.out.println(s);
-//}
-
-//private static String deg(double rad) {
-// return Double.toString(rad * RAD_DEG);
-//}
-
-//private static String hours(long ms) {
-// return Double.toString((double)ms / HOUR_MS) + " hours";
-//}
-
-/**
- * @internal
- * @deprecated ICU 2.4. This class may be removed or modified.
- */
-/*UDate CalendarAstronomer::local(UDate localMillis) {
- // TODO - srl ?
- TimeZone *tz = TimeZone::createDefault();
- int32_t rawOffset;
- int32_t dstOffset;
- UErrorCode status = U_ZERO_ERROR;
- tz->getOffset(localMillis, true, rawOffset, dstOffset, status);
- delete tz;
- return localMillis - rawOffset;
-}*/
-
// Debugging functions
UnicodeString CalendarAstronomer::Ecliptic::toString() const
{
@@ -1484,7 +808,7 @@ UnicodeString CalendarAstronomer::Ecliptic::toString() const
snprintf(tmp, sizeof(tmp), "[%.5f,%.5f]", longitude*RAD_DEG, latitude*RAD_DEG);
return UnicodeString(tmp, "");
#else
- return UnicodeString();
+ return {};
#endif
}
@@ -1496,37 +820,10 @@ UnicodeString CalendarAstronomer::Equatorial::toString() const
(ascension*RAD_DEG), (declination*RAD_DEG));
return UnicodeString(tmp, "");
#else
- return UnicodeString();
+ return {};
#endif
}
-UnicodeString CalendarAstronomer::Horizon::toString() const
-{
-#ifdef U_DEBUG_ASTRO
- char tmp[800];
- snprintf(tmp, sizeof(tmp), "[%.5f,%.5f]", altitude*RAD_DEG, azimuth*RAD_DEG);
- return UnicodeString(tmp, "");
-#else
- return UnicodeString();
-#endif
-}
-
-
-// static private String radToHms(double angle) {
-// int hrs = (int) (angle*RAD_HOUR);
-// int min = (int)((angle*RAD_HOUR - hrs) * 60);
-// int sec = (int)((angle*RAD_HOUR - hrs - min/60.0) * 3600);
-
-// return Integer.toString(hrs) + "h" + min + "m" + sec + "s";
-// }
-
-// static private String radToDms(double angle) {
-// int deg = (int) (angle*RAD_DEG);
-// int min = (int)((angle*RAD_DEG - deg) * 60);
-// int sec = (int)((angle*RAD_DEG - deg - min/60.0) * 3600);
-
-// return Integer.toString(deg) + "\u00b0" + min + "'" + sec + "\"";
-// }
// =============== Calendar Cache ================
diff --git a/icu4c/source/i18n/astro.h b/icu4c/source/i18n/astro.h
index 372a79ac6..ef297c4b3 100644
--- a/icu4c/source/i18n/astro.h
+++ b/icu4c/source/i18n/astro.h
@@ -31,7 +31,7 @@ U_NAMESPACE_BEGIN
* at a given moment in time. Accordingly, each <code>CalendarAstronomer</code>
* object has a <code>time</code> property that determines the date
* and time for which its calculations are performed. You can set and
- * retrieve this property with {@link #setDate setDate}, {@link #getDate getDate}
+ * retrieve this property with {@link #setTime setTime}, {@link #getTime getTime}
* and related methods.
* <p>
* Almost all of the calculations performed by this class, or by any
@@ -72,7 +72,6 @@ public:
* value without worrying about whether other code will modify them.
*
* @see CalendarAstronomer.Equatorial
- * @see CalendarAstronomer.Horizon
* @internal
*/
class U_I18N_API Ecliptic : public UMemory {
@@ -141,7 +140,6 @@ public:
* value without worrying about whether other code will modify them.
*
* @see CalendarAstronomer.Ecliptic
- * @see CalendarAstronomer.Horizon
* @internal
*/
class U_I18N_API Equatorial : public UMemory {
@@ -201,66 +199,6 @@ public:
double declination;
};
- /**
- * Represents the position of an object in the sky relative to
- * the local horizon.
- * The <i>Altitude</i> represents the object's elevation above the horizon,
- * with objects below the horizon having a negative altitude.
- * The <i>Azimuth</i> is the geographic direction of the object from the
- * observer's position, with 0 representing north. The azimuth increases
- * clockwise from north.
- * <p>
- * Note that Horizon objects are immutable and cannot be modified
- * once they are constructed. This allows them to be passed and returned by
- * value without worrying about whether other code will modify them.
- *
- * @see CalendarAstronomer.Ecliptic
- * @see CalendarAstronomer.Equatorial
- * @internal
- */
- class U_I18N_API Horizon : public UMemory {
- public:
- /**
- * Constructs a Horizon coordinate object.
- * <p>
- * @param alt The altitude, measured in radians above the horizon.
- * @param azim The azimuth, measured in radians clockwise from north.
- * @internal
- */
- Horizon(double alt=0, double azim=0)
- : altitude(alt), azimuth(azim) { }
-
- /**
- * Setter for Ecliptic Coordinate object
- * @param alt The altitude, measured in radians above the horizon.
- * @param azim The azimuth, measured in radians clockwise from north.
- * @internal
- */
- void set(double alt, double azim) {
- altitude = alt;
- azimuth = azim;
- }
-
- /**
- * Return a string representation of this object, with the
- * angles measured in degrees.
- * @internal
- */
- UnicodeString toString() const;
-
- /**
- * The object's altitude above the horizon, in radians.
- * @internal
- */
- double altitude;
-
- /**
- * The object's direction, in radians clockwise from north.
- * @internal
- */
- double azimuth;
- };
-
public:
//-------------------------------------------------------------------------
// Assorted private data used for conversions
@@ -301,22 +239,6 @@ public:
CalendarAstronomer(UDate d);
/**
- * Construct a new <code>CalendarAstronomer</code> object with the given
- * latitude and longitude. The object's time is set to the current
- * date and time.
- * <p>
- * @param longitude The desired longitude, in <em>degrees</em> east of
- * the Greenwich meridian.
- *
- * @param latitude The desired latitude, in <em>degrees</em>. Positive
- * values signify North, negative South.
- *
- * @see java.util.Date#getTime()
- * @internal
- */
- CalendarAstronomer(double longitude, double latitude);
-
- /**
* Destructor
* @internal
*/
@@ -333,48 +255,17 @@ public:
* @param aTime the date and time, expressed as the number of milliseconds since
* 1/1/1970 0:00 GMT (Gregorian).
*
- * @see #setDate
* @see #getTime
* @internal
*/
void setTime(UDate aTime);
-
- /**
- * Set the current date and time of this <code>CalendarAstronomer</code> object. All
- * astronomical calculations are performed based on this time setting.
- *
- * @param aTime the date and time, expressed as the number of milliseconds since
- * 1/1/1970 0:00 GMT (Gregorian).
- *
- * @see #getTime
- * @internal
- */
- void setDate(UDate aDate) { setTime(aDate); }
-
- /**
- * Set the current date and time of this <code>CalendarAstronomer</code> object. All
- * astronomical calculations are performed based on this time setting.
- *
- * @param jdn the desired time, expressed as a "julian day number",
- * which is the number of elapsed days since
- * 1/1/4713 BC (Julian), 12:00 GMT. Note that julian day
- * numbers start at <em>noon</em>. To get the jdn for
- * the corresponding midnight, subtract 0.5.
- *
- * @see #getJulianDay
- * @see #JULIAN_EPOCH_MS
- * @internal
- */
- void setJulianDay(double jdn);
-
/**
* Get the current time of this <code>CalendarAstronomer</code> object,
* represented as the number of milliseconds since
* 1/1/1970 AD 0:00 GMT (Gregorian).
*
* @see #setTime
- * @see #getDate
* @internal
*/
UDate getTime();
@@ -384,59 +275,13 @@ public:
* expressed as a "julian day number", which is the number of elapsed
* days since 1/1/4713 BC (Julian), 12:00 GMT.
*
- * @see #setJulianDay
* @see #JULIAN_EPOCH_MS
* @internal
*/
double getJulianDay();
- /**
- * Return this object's time expressed in julian centuries:
- * the number of centuries after 1/1/1900 AD, 12:00 GMT
- *
- * @see #getJulianDay
- * @internal
- */
- double getJulianCentury();
-
- /**
- * Returns the current Greenwich sidereal time, measured in hours
- * @internal
- */
- double getGreenwichSidereal();
-
-private:
- double getSiderealOffset();
public:
/**
- * Returns the current local sidereal time, measured in hours
- * @internal
- */
- double getLocalSidereal();
-
- /**
- * Converts local sidereal time to Universal Time.
- *
- * @param lst The Local Sidereal Time, in hours since sidereal midnight
- * on this object's current date.
- *
- * @return The corresponding Universal Time, in milliseconds since
- * 1 Jan 1970, GMT.
- */
- //private:
- double lstToUT(double lst);
-
- /**
- *
- * Convert from ecliptic to equatorial coordinates.
- *
- * @param ecliptic The ecliptic
- * @param result Fillin result
- * @return reference to result
- */
- Equatorial& eclipticToEquatorial(Equatorial& result, const Ecliptic& ecliptic);
-
- /**
* Convert from ecliptic to equatorial coordinates.
*
* @param eclipLong The ecliptic longitude
@@ -447,21 +292,6 @@ public:
*/
Equatorial& eclipticToEquatorial(Equatorial& result, double eclipLong, double eclipLat);
- /**
- * Convert from ecliptic longitude to equatorial coordinates.
- *
- * @param eclipLong The ecliptic longitude
- *
- * @return The corresponding point in equatorial coordinates.
- * @internal
- */
- Equatorial& eclipticToEquatorial(Equatorial& result, double eclipLong) ;
-
- /**
- * @internal
- */
- Horizon& eclipticToHorizon(Horizon& result, double eclipLong) ;
-
//-------------------------------------------------------------------------
// The Sun
//-------------------------------------------------------------------------
@@ -484,40 +314,8 @@ public:
*/
/*public*/ void getSunLongitude(double julianDay, double &longitude, double &meanAnomaly);
- /**
- * The position of the sun at this object's current date and time,
- * in equatorial coordinates.
- * @param result fillin for the result
- * @internal
- */
- Equatorial& getSunPosition(Equatorial& result);
-
public:
/**
- * Constant representing the vernal equinox.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
- * @internal
- */
-// static double VERNAL_EQUINOX();
-
- /**
- * Constant representing the summer solstice.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "summer" refers to the northern hemisphere's seasons.
- * @internal
- */
- static double SUMMER_SOLSTICE();
-
- /**
- * Constant representing the autumnal equinox.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
- * @internal
- */
-// static double AUTUMN_EQUINOX();
-
- /**
* Constant representing the winter solstice.
* For use with {@link #getSunTime getSunTime}.
* Note: In this case, "winter" refers to the northern hemisphere's seasons.
@@ -532,20 +330,6 @@ public:
*/
UDate getSunTime(double desired, UBool next);
- /**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- *
- * NOTE: This method only works well if this object is set to a
- * time near local noon. Because of variations between the local
- * official time zone and the geographic longitude, the
- * computation can flop over into an adjacent day if this object
- * is set to a time near local midnight.
- *
- * @internal
- */
- UDate getSunRiseSet(UBool rise);
-
//-------------------------------------------------------------------------
// The Moon
//-------------------------------------------------------------------------
@@ -569,22 +353,6 @@ public:
*/
double getMoonAge();
- /**
- * Calculate the phase of the moon at the time set in this object.
- * The returned phase is a <code>double</code> in the range
- * <code>0 <= phase < 1</code>, interpreted as follows:
- * <ul>
- * <li>0.00: New moon
- * <li>0.25: First quarter
- * <li>0.50: Full moon
- * <li>0.75: Last quarter
- * </ul>
- *
- * @see #getMoonAge
- * @internal
- */
- double getMoonPhase();
-
class U_I18N_API MoonAge : public UMemory {
public:
MoonAge(double l)
@@ -598,28 +366,7 @@ public:
* For use with {@link #getMoonTime getMoonTime}
* @internal
*/
- static const MoonAge NEW_MOON();
-
- /**
- * Constant representing the moon's first quarter.
- * For use with {@link #getMoonTime getMoonTime}
- * @internal
- */
-// static const MoonAge FIRST_QUARTER();
-
- /**
- * Constant representing a full moon.
- * For use with {@link #getMoonTime getMoonTime}
- * @internal
- */
- static const MoonAge FULL_MOON();
-
- /**
- * Constant representing the moon's last quarter.
- * For use with {@link #getMoonTime getMoonTime}
- * @internal
- */
-// static const MoonAge LAST_QUARTER();
+ static MoonAge NEW_MOON();
/**
* Find the next or previous time at which the Moon's ecliptic
@@ -630,21 +377,13 @@ public:
* is desired, <tt>false</tt> for the previous occurrence.
* @internal
*/
- UDate getMoonTime(double desired, UBool next);
UDate getMoonTime(const MoonAge& desired, UBool next);
- /**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- * @internal
- */
- UDate getMoonRiseSet(UBool rise);
-
//-------------------------------------------------------------------------
// Interpolation methods for finding the time at which a given event occurs
//-------------------------------------------------------------------------
- // private
+public:
class AngleFunc : public UMemory {
public:
virtual double eval(CalendarAstronomer&) = 0;
@@ -652,20 +391,10 @@ public:
};
friend class AngleFunc;
+private:
UDate timeOfAngle(AngleFunc& func, double desired,
double periodDays, double epsilon, UBool next);
- class CoordFunc : public UMemory {
- public:
- virtual void eval(Equatorial& result, CalendarAstronomer&) = 0;
- virtual ~CoordFunc();
- };
- friend class CoordFunc;
-
- double riseOrSet(CoordFunc& func, UBool rise,
- double diameter, double refraction,
- double epsilon);
-
//-------------------------------------------------------------------------
// Other utility methods
//-------------------------------------------------------------------------
@@ -691,29 +420,13 @@ private:
*/
UDate fTime;
- /* These aren't used yet, but they'll be needed for sunset calculations
- * and equatorial to horizon coordinate conversions
- */
- double fLongitude;
- double fLatitude;
- double fGmtOffset;
-
- //
// The following fields are used to cache calculated results for improved
// performance. These values all depend on the current time setting
// of this object, so the clearCache method is provided.
- //
-
double julianDay;
- double julianCentury;
double sunLongitude;
double meanAnomalySun;
- double moonLongitude;
double moonEclipLong;
- double meanAnomalyMoon;
- double eclipObliquity;
- double siderealT0;
- double siderealTime;
void clearCache();
diff --git a/icu4c/source/i18n/basictz.cpp b/icu4c/source/i18n/basictz.cpp
index 2490fadcc..d03c50ada 100644
--- a/icu4c/source/i18n/basictz.cpp
+++ b/icu4c/source/i18n/basictz.cpp
@@ -511,7 +511,6 @@ BasicTimeZone::getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial,
// Set the results
initial = res_initial.orphan();
transitionRules = filteredRules.orphan();
- return;
}
void
diff --git a/icu4c/source/i18n/brktrans.h b/icu4c/source/i18n/brktrans.h
index 5dcc8c50c..45de01aa5 100644
--- a/icu4c/source/i18n/brktrans.h
+++ b/icu4c/source/i18n/brktrans.h
@@ -38,7 +38,7 @@ public:
* Constructs a transliterator.
* @param adoptedFilter the filter for this transliterator.
*/
- BreakTransliterator(UnicodeFilter* adoptedFilter = 0);
+ BreakTransliterator(UnicodeFilter* adoptedFilter = nullptr);
/**
* Destructor.
diff --git a/icu4c/source/i18n/buddhcal.cpp b/icu4c/source/i18n/buddhcal.cpp
index dc14af00b..7723ade10 100644
--- a/icu4c/source/i18n/buddhcal.cpp
+++ b/icu4c/source/i18n/buddhcal.cpp
@@ -18,6 +18,7 @@
#if !UCONFIG_NO_FORMATTING
#include "buddhcal.h"
+#include "gregoimp.h"
#include "unicode/gregocal.h"
#include "umutex.h"
#include <float.h>
@@ -63,17 +64,21 @@ const char *BuddhistCalendar::getType() const
return "buddhist";
}
-int32_t BuddhistCalendar::handleGetExtendedYear()
+int32_t BuddhistCalendar::handleGetExtendedYear(UErrorCode& status)
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// EXTENDED_YEAR in BuddhistCalendar is a Gregorian year.
// The default value of EXTENDED_YEAR is 1970 (Buddhist 2513)
- int32_t year;
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
- year = internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
- } else {
- // extended year is a gregorian year, where 1 = 1AD, 0 = 1BC, -1 = 2BC, etc
- year = internalGet(UCAL_YEAR, kGregorianEpoch - kBuddhistEraStart)
- + kBuddhistEraStart;
+ return internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
+ }
+ // extended year is a gregorian year, where 1 = 1AD, 0 = 1BC, -1 = 2BC, etc
+ int32_t year = internalGet(UCAL_YEAR, kGregorianEpoch - kBuddhistEraStart);
+ if (uprv_add32_overflow(year, kBuddhistEraStart, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
}
return year;
}
@@ -90,84 +95,11 @@ int32_t BuddhistCalendar::handleGetLimit(UCalendarDateFields field, ELimitType l
{
if(field == UCAL_ERA) {
return BE;
- } else {
- return GregorianCalendar::handleGetLimit(field,limitType);
- }
-}
-
-#if 0
-void BuddhistCalendar::timeToFields(UDate theTime, UBool quick, UErrorCode& status)
-{
- //Calendar::timeToFields(theTime, quick, status);
-
- int32_t era = internalGet(UCAL_ERA);
- int32_t year = internalGet(UCAL_YEAR);
-
- if(era == GregorianCalendar::BC) {
- year = 1-year;
- era = BuddhistCalendar::BE;
- } else if(era == GregorianCalendar::AD) {
- era = BuddhistCalendar::BE;
- } else {
- status = U_INTERNAL_PROGRAM_ERROR;
- }
-
- year = year - kBuddhistEraStart;
-
- internalSet(UCAL_ERA, era);
- internalSet(UCAL_YEAR, year);
-}
-#endif
-
-/**
- * The system maintains a static default century start date. This is initialized
- * the first time it is used. Once the system default century date and year
- * are set, they do not change.
- */
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gBCInitOnce {};
-
-
-UBool BuddhistCalendar::haveDefaultCentury() const
-{
- return true;
-}
-
-static void U_CALLCONV
-initializeSystemDefaultCentury()
-{
- // initialize systemDefaultCentury and systemDefaultCenturyYear based
- // on the current time. They'll be set to 80 years before
- // the current time.
- UErrorCode status = U_ZERO_ERROR;
- BuddhistCalendar calendar(Locale("@calendar=buddhist"),status);
- if (U_SUCCESS(status)) {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
- UDate newStart = calendar.getTime(status);
- int32_t newYear = calendar.get(UCAL_YEAR, status);
- gSystemDefaultCenturyStartYear = newYear;
- gSystemDefaultCenturyStart = newStart;
}
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
-}
-
-UDate BuddhistCalendar::defaultCenturyStart() const
-{
- // lazy-evaluate systemDefaultCenturyStart and systemDefaultCenturyStartYear
- umtx_initOnce(gBCInitOnce, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t BuddhistCalendar::defaultCenturyStartYear() const
-{
- // lazy-evaluate systemDefaultCenturyStartYear and systemDefaultCenturyStart
- umtx_initOnce(gBCInitOnce, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
+ return GregorianCalendar::handleGetLimit(field,limitType);
}
+IMPL_SYSTEM_DEFAULT_CENTURY(BuddhistCalendar, "@calendar=buddhist")
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/buddhcal.h b/icu4c/source/i18n/buddhcal.h
index 01b59341c..1fa8395b3 100644
--- a/icu4c/source/i18n/buddhcal.h
+++ b/icu4c/source/i18n/buddhcal.h
@@ -139,10 +139,11 @@ private:
* use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
* as UCAL_ERA) specific to the calendar system, depending on which set of
* fields is newer.
+ * @param status
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Subclasses may override this method to compute several fields
* specific to each calendar system.
@@ -158,24 +159,9 @@ private:
*/
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- /**
- * Returns true because the Buddhist Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
+ virtual bool isEra0CountingBackward() const override { return false; }
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/calendar.cpp b/icu4c/source/i18n/calendar.cpp
index 4b6edc87c..8d5246966 100644
--- a/icu4c/source/i18n/calendar.cpp
+++ b/icu4c/source/i18n/calendar.cpp
@@ -63,7 +63,6 @@
#include "sharedcalendar.h"
#include "unifiedcache.h"
#include "ulocimp.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#if !UCONFIG_NO_SERVICE
@@ -259,20 +258,12 @@ static ECalType getCalendarTypeForLocale(const char *locid) {
// e.g ja_JP_TRADITIONAL -> ja_JP@calendar=japanese
// NOTE: Since ICU-20187, ja_JP_TRADITIONAL no longer canonicalizes, and
// the Gregorian calendar is returned instead.
- CharString canonicalName;
- {
- CharStringByteSink sink(&canonicalName);
- ulocimp_canonicalize(locid, sink, &status);
- }
+ CharString canonicalName = ulocimp_canonicalize(locid, status);
if (U_FAILURE(status)) {
return CALTYPE_GREGORIAN;
}
- CharString calTypeBuf;
- {
- CharStringByteSink sink(&calTypeBuf);
- ulocimp_getKeywordValue(canonicalName.data(), "calendar", sink, &status);
- }
+ CharString calTypeBuf = ulocimp_getKeywordValue(canonicalName.data(), "calendar", status);
if (U_SUCCESS(status)) {
calType = getCalendarType(calTypeBuf.data());
if (calType != CALTYPE_UNKNOWN) {
@@ -283,8 +274,7 @@ static ECalType getCalendarTypeForLocale(const char *locid) {
// when calendar keyword is not available or not supported, read supplementalData
// to get the default calendar type for the locale's region
- char region[ULOC_COUNTRY_CAPACITY];
- (void)ulocimp_getRegionForSupplementalData(canonicalName.data(), true, region, sizeof(region), &status);
+ CharString region = ulocimp_getRegionForSupplementalData(canonicalName.data(), true, status);
if (U_FAILURE(status)) {
return CALTYPE_GREGORIAN;
}
@@ -292,7 +282,7 @@ static ECalType getCalendarTypeForLocale(const char *locid) {
// Read preferred calendar values from supplementalData calendarPreference
UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", &status);
ures_getByKey(rb, "calendarPreferenceData", rb, &status);
- UResourceBundle *order = ures_getByKey(rb, region, nullptr, &status);
+ UResourceBundle *order = ures_getByKey(rb, region.data(), nullptr, &status);
if (status == U_MISSING_RESOURCE_ERROR && rb != nullptr) {
status = U_ZERO_ERROR;
order = ures_getByKey(rb, "001", nullptr, &status);
@@ -751,7 +741,7 @@ fSkippedWallTime(UCAL_WALLTIME_LAST)
delete zone;
return;
}
- if(zone == 0) {
+ if (zone == nullptr) {
#if defined (U_DEBUG_CAL)
fprintf(stderr, "%s:%d: ILLEGAL ARG because timezone cannot be 0\n",
__FILE__, __LINE__);
@@ -1462,9 +1452,15 @@ void Calendar::computeFields(UErrorCode &ec)
// 11/6/00
int32_t millisInDay;
- int32_t days = ClockMath::floorDivide(localMillis, kOneDay, &millisInDay);
+ double days = ClockMath::floorDivide(
+ localMillis, U_MILLIS_PER_DAY, &millisInDay) +
+ kEpochStartAsJulianDay;
+ if (days > INT32_MAX || days < INT32_MIN) {
+ ec = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
- internalSet(UCAL_JULIAN_DAY,days + kEpochStartAsJulianDay);
+ internalSet(UCAL_JULIAN_DAY, static_cast<int32_t>(days));
#if defined (U_DEBUG_CAL)
//fprintf(stderr, "%s:%d- Hmm! Jules @ %d, as per %.0lf millis\n",
@@ -1532,11 +1528,11 @@ void Calendar::computeFields(UErrorCode &ec)
U_ASSERT(fFields[UCAL_DST_OFFSET] <= getMaximum(UCAL_DST_OFFSET));
}
-uint8_t Calendar::julianDayToDayOfWeek(double julian)
+uint8_t Calendar::julianDayToDayOfWeek(int32_t julian)
{
// If julian is negative, then julian%7 will be negative, so we adjust
// accordingly. We add 1 because Julian day 0 is Monday.
- int8_t dayOfWeek = (int8_t) uprv_fmod(julian + 1, 7);
+ int8_t dayOfWeek = (int8_t) ((julian + 1LL) % 7);
uint8_t result = (uint8_t)(dayOfWeek + ((dayOfWeek < 0) ? (7+UCAL_SUNDAY ) : UCAL_SUNDAY));
return result;
@@ -1580,7 +1576,14 @@ void Calendar::computeGregorianFields(int32_t julianDay, UErrorCode& ec) {
return;
}
int32_t gregorianDayOfWeekUnused;
- Grego::dayToFields(julianDay - kEpochStartAsJulianDay, fGregorianYear, fGregorianMonth, fGregorianDayOfMonth, gregorianDayOfWeekUnused, fGregorianDayOfYear);
+ if (uprv_add32_overflow(
+ julianDay, -kEpochStartAsJulianDay, &julianDay)) {
+ ec = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ Grego::dayToFields(julianDay, fGregorianYear, fGregorianMonth,
+ fGregorianDayOfMonth, gregorianDayOfWeekUnused,
+ fGregorianDayOfYear);
}
/**
@@ -1761,8 +1764,8 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
int32_t max = getActualMaximum(field,status);
int32_t gap = max - min + 1;
- int32_t value = internalGet(field) + amount;
- value = (value - min) % gap;
+ int64_t value = internalGet(field);
+ value = (value + amount - min) % gap;
if (value < 0) {
value += gap;
}
@@ -1784,7 +1787,7 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
{
// Assume min == 0 in calculations below
double start = getTimeInMillis(status);
- int32_t oldHour = internalGet(field);
+ int64_t oldHour = internalGet(field);
int32_t max = getMaximum(field);
int32_t newHour = (oldHour + amount) % (max + 1);
if (newHour < 0) {
@@ -1801,11 +1804,12 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
// DAY_OF_MONTH if, after updating the MONTH field, it is illegal.
// E.g., <jan31>.roll(MONTH, 1) -> <feb28> or <feb29>.
{
- int32_t max = getActualMaximum(UCAL_MONTH, status);
- int32_t mon = (internalGet(UCAL_MONTH) + amount) % (max+1);
+ int32_t max = getActualMaximum(UCAL_MONTH, status) + 1;
+ int64_t mon = internalGet(UCAL_MONTH);
+ mon = (mon + amount) % max;
if (mon < 0) {
- mon += (max + 1);
+ mon += max;
}
set(UCAL_MONTH, mon);
@@ -1822,16 +1826,19 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
// * If era==0 and years go backwards in time, change sign of amount.
// * Until we have new API per #9393, we temporarily hardcode knowledge of
// which calendars have era 0 years that go backwards.
- UBool era0WithYearsThatGoBackwards = false;
- int32_t era = get(UCAL_ERA, status);
- if (era == 0) {
- const char * calType = getType();
- if ( uprv_strcmp(calType,"gregorian")==0 || uprv_strcmp(calType,"roc")==0 || uprv_strcmp(calType,"coptic")==0 ) {
- amount = -amount;
- era0WithYearsThatGoBackwards = true;
+ int32_t era = internalGet(UCAL_ERA);
+ if (era == 0 && isEra0CountingBackward()) {
+ if (uprv_mul32_overflow(amount, -1, &amount)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
}
- int32_t newYear = internalGet(field) + amount;
+ int32_t newYear;
+ if (uprv_add32_overflow(
+ amount, internalGet(field), &newYear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
if (era > 0 || newYear >= 1) {
int32_t maxYear = getActualMaximum(field, status);
if (maxYear < 32768) {
@@ -1848,7 +1855,7 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
// else we are in era 0 with newYear < 1;
// calendars with years that go backwards must pin the year value at 0,
// other calendars can have years < 0 in era 0
- } else if (era0WithYearsThatGoBackwards) {
+ } else if (era == 0 && isEra0CountingBackward()) {
newYear = 1;
}
set(field, newYear);
@@ -1859,7 +1866,12 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
case UCAL_EXTENDED_YEAR:
// Rolling the year can involve pinning the DAY_OF_MONTH.
- set(field, internalGet(field) + amount);
+ if (uprv_add32_overflow(
+ amount, internalGet(field), &amount)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ set(field, amount);
pinField(UCAL_MONTH,status);
pinField(UCAL_DAY_OF_MONTH,status);
return;
@@ -1931,7 +1943,7 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
status = U_INTERNAL_PROGRAM_ERROR;
return;
}
- int32_t day_of_month = (internalGet(UCAL_DAY_OF_MONTH) + amount*7 -
+ int32_t day_of_month = (internalGet(UCAL_DAY_OF_MONTH) + amount*7LL -
start) % gap;
if (day_of_month < 0) day_of_month += gap;
day_of_month += start;
@@ -1993,7 +2005,7 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
status = U_INTERNAL_PROGRAM_ERROR;
return;
}
- int32_t day_of_year = (internalGet(UCAL_DAY_OF_YEAR) + amount*7 -
+ int32_t day_of_year = (internalGet(UCAL_DAY_OF_YEAR) + amount*7LL -
start) % gap;
if (day_of_year < 0) day_of_year += gap;
day_of_year += start;
@@ -2072,7 +2084,12 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
return;
}
case UCAL_JULIAN_DAY:
- set(field, internalGet(field) + amount);
+ if (uprv_add32_overflow(
+ amount, internalGet(field), &amount)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ set(field, amount);
return;
default:
// Other fields cannot be rolled by this method
@@ -2129,9 +2146,19 @@ void Calendar::add(UCalendarDateFields field, int32_t amount, UErrorCode& status
switch (field) {
case UCAL_ERA:
- set(field, get(field, status) + amount);
+ {
+ int32_t era = get(UCAL_ERA, status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (uprv_add32_overflow(era, amount, &era)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ set(UCAL_ERA, era);
pinField(UCAL_ERA, status);
return;
+ }
case UCAL_YEAR:
case UCAL_YEAR_WOY:
@@ -2143,11 +2170,10 @@ void Calendar::add(UCalendarDateFields field, int32_t amount, UErrorCode& status
// this by applying the amount to the UCAL_EXTENDED_YEAR field; but since
// we would still need to handle UCAL_YEAR_WOY as below, might as well
// also handle UCAL_YEAR the same way.
- int32_t era = get(UCAL_ERA, status);
- if (era == 0) {
- const char * calType = getType();
- if ( uprv_strcmp(calType,"gregorian")==0 || uprv_strcmp(calType,"roc")==0 || uprv_strcmp(calType,"coptic")==0 ) {
- amount = -amount;
+ if (get(UCAL_ERA, status) == 0 && isEra0CountingBackward()) {
+ if (uprv_mul32_overflow(amount, -1, &amount)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
}
}
@@ -2159,7 +2185,16 @@ void Calendar::add(UCalendarDateFields field, int32_t amount, UErrorCode& status
{
UBool oldLenient = isLenient();
setLenient(true);
- set(field, get(field, status) + amount);
+ int32_t value = get(field, status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (uprv_add32_overflow(value, amount, &value)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ set(field, value);
+
pinField(UCAL_DAY_OF_MONTH, status);
if(oldLenient==false) {
complete(status); /* force recalculate */
@@ -2324,6 +2359,7 @@ int32_t Calendar::fieldDifference(UDate targetMs, UCalendarDateFields field, UEr
__FILE__, __LINE__, fldName(field));
#endif
ec = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
}
}
// Do a binary search
@@ -2361,6 +2397,7 @@ int32_t Calendar::fieldDifference(UDate targetMs, UCalendarDateFields field, UEr
__FILE__, __LINE__, fldName(field));
#endif
ec = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
}
}
}
@@ -2895,11 +2932,17 @@ void Calendar::validateField(UCalendarDateFields field, UErrorCode &status) {
int32_t y;
switch (field) {
case UCAL_DAY_OF_MONTH:
- y = handleGetExtendedYear();
- validateField(field, 1, handleGetMonthLength(y, internalGetMonth()), status);
+ y = handleGetExtendedYear(status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ validateField(field, 1, handleGetMonthLength(y, internalGetMonth(status), status), status);
break;
case UCAL_DAY_OF_YEAR:
- y = handleGetExtendedYear();
+ y = handleGetExtendedYear(status);
+ if (U_FAILURE(status)) {
+ return;
+ }
validateField(field, 1, handleGetYearLength(y), status);
break;
case UCAL_DAY_OF_WEEK_IN_MONTH:
@@ -3078,7 +3121,10 @@ void Calendar::computeTime(UErrorCode& status) {
}
// Compute the Julian day
- int32_t julianDay = computeJulianDay();
+ int32_t julianDay = computeJulianDay(status);
+ if (U_FAILURE(status)) {
+ return;
+ }
double millis = Grego::julianDayToMillis(julianDay);
@@ -3107,7 +3153,7 @@ void Calendar::computeTime(UErrorCode& status) {
UDate t = 0;
if (fStamp[UCAL_ZONE_OFFSET] >= ((int32_t)kMinimumUserStamp) || fStamp[UCAL_DST_OFFSET] >= ((int32_t)kMinimumUserStamp)) {
- t = millis + millisInDay - (internalGet(UCAL_ZONE_OFFSET) + internalGet(UCAL_DST_OFFSET));
+ t = millis + millisInDay - internalGet(UCAL_ZONE_OFFSET) - internalGet(UCAL_DST_OFFSET);
} else {
// Compute the time zone offset and DST offset. There are two potential
// ambiguities here. We'll assume a 2:00 am (wall time) switchover time
@@ -3236,7 +3282,9 @@ double Calendar::computeMillisInDay() {
// Don't normalize here; let overflow bump into the next period.
// This is consistent with how we handle other fields.
millisInDay += internalGet(UCAL_HOUR);
- millisInDay += 12 * internalGet(UCAL_AM_PM); // Default works for unset AM_PM
+ // Treat even number as AM and odd nubmber as PM to align with the
+ // logic in roll()
+ millisInDay += (internalGet(UCAL_AM_PM) % 2 == 0) ? 0 : 12;
}
}
@@ -3309,7 +3357,7 @@ int32_t Calendar::computeZoneOffset(double millis, double millisInDay, UErrorCod
return rawOffset + dstOffset;
}
-int32_t Calendar::computeJulianDay()
+int32_t Calendar::computeJulianDay(UErrorCode &status)
{
// We want to see if any of the date fields is newer than the
// JULIAN_DAY. If not, then we use JULIAN_DAY. If so, then we do
@@ -3333,12 +3381,15 @@ int32_t Calendar::computeJulianDay()
bestField = UCAL_DAY_OF_MONTH;
}
- return handleComputeJulianDay(bestField);
+ return handleComputeJulianDay(bestField, status);
}
// -------------------------------------------
-int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
+int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField, UErrorCode &status) {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
UBool useMonth = (bestField == UCAL_DAY_OF_MONTH ||
bestField == UCAL_WEEK_OF_MONTH ||
bestField == UCAL_DAY_OF_WEEK_IN_MONTH);
@@ -3347,10 +3398,19 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
if (bestField == UCAL_WEEK_OF_YEAR && newerField(UCAL_YEAR_WOY, UCAL_YEAR) == UCAL_YEAR_WOY) {
year = internalGet(UCAL_YEAR_WOY);
} else {
- year = handleGetExtendedYear();
+ year = handleGetExtendedYear(status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
}
internalSet(UCAL_EXTENDED_YEAR, year);
+ // Return U_ILLEGAL_ARGUMENT_ERROR if year is too large that may cuase int32_t overflow
+ // later.
+ if (year > INT32_MAX / 400) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
#if defined (U_DEBUG_CAL)
fprintf(stderr, "%s:%d: bestField= %s - y=%d\n", __FILE__, __LINE__, fldName(bestField), year);
@@ -3363,12 +3423,21 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
int32_t month;
if(isSet(UCAL_MONTH) || isSet(UCAL_ORDINAL_MONTH)) {
- month = internalGetMonth();
+ month = internalGetMonth(status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
} else {
- month = getDefaultMonthInYear(year);
+ month = getDefaultMonthInYear(year, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
}
- int32_t julianDay = handleComputeMonthStart(year, useMonth ? month : 0, useMonth);
+ int32_t julianDay = handleComputeMonthStart(year, useMonth ? month : 0, useMonth, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if (bestField == UCAL_DAY_OF_MONTH) {
@@ -3379,11 +3448,20 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
} else {
dayOfMonth = getDefaultDayInMonth(year, month);
}
- return julianDay + dayOfMonth;
+ if (uprv_add32_overflow(dayOfMonth, julianDay, &dayOfMonth)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return dayOfMonth;
}
if (bestField == UCAL_DAY_OF_YEAR) {
- return julianDay + internalGet(UCAL_DAY_OF_YEAR);
+ int32_t result;
+ if (uprv_add32_overflow(internalGet(UCAL_DAY_OF_YEAR), julianDay, &result)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return result;
}
int32_t firstDayOfWeek = getFirstDayOfWeek(); // Localized fdw
@@ -3405,7 +3483,10 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
first += 7;
}
- int32_t dowLocal = getLocalDOW();
+ int32_t dowLocal = getLocalDOW(status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// Find the first target DOW (dowLocal) in the month or year.
// Actually, it may be just before the first of the month or year.
@@ -3422,7 +3503,12 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
// negative.
int32_t dim = internalGet(UCAL_DAY_OF_WEEK_IN_MONTH, 1);
if (dim >= 0) {
- date += 7*(dim - 1);
+ int32_t temp;
+ if (uprv_mul32_overflow(7, dim - 1, &temp) ||
+ uprv_add32_overflow(date, temp, &date)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
} else {
// Move date to the last of this day-of-week in this month,
@@ -3431,9 +3517,18 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
// past the first of the given day-of-week in this month.
// Note that we handle -2, -3, etc. correctly, even though
// values < -1 are technically disallowed.
- int32_t m = internalGetMonth(UCAL_JANUARY);
- int32_t monthLength = handleGetMonthLength(year, m);
- date += ((monthLength - date) / 7 + dim + 1) * 7;
+ int32_t m = internalGetMonth(UCAL_JANUARY, status);
+ int32_t monthLength = handleGetMonthLength(year, m, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ int32_t temp;
+ if (uprv_add32_overflow((monthLength - date) / 7, dim+1, &temp) ||
+ uprv_mul32_overflow(temp, 7, &temp) ||
+ uprv_add32_overflow(date, temp, &date)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
}
} else {
#if defined (U_DEBUG_CAL)
@@ -3448,7 +3543,10 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
// need to be sure to stay in 'real' year.
int32_t woy = internalGet(bestField);
- int32_t nextJulianDay = handleComputeMonthStart(year+1, 0, false); // jd of day before jan 1
+ int32_t nextJulianDay = handleComputeMonthStart(year+1, 0, false, status); // jd of day before jan 1
+ if (U_FAILURE(status)) {
+ return 0;
+ }
int32_t nextFirst = julianDayToDayOfWeek(nextJulianDay + 1) - firstDayOfWeek;
if (nextFirst < 0) { // 0..6 ldow of Jan 1
@@ -3491,7 +3589,12 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
}
// Now adjust for the week number.
- testDate += 7 * (woy - 1);
+ int32_t weeks;
+ if (uprv_mul32_overflow(woy-1, 7, &weeks) ||
+ uprv_add32_overflow(weeks, testDate, &testDate)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
#if defined (U_DEBUG_CAL)
fprintf(stderr, "%s:%d - y=%d, y-1=%d doy%d, njd%d (C.F. %d)\n",
@@ -3499,7 +3602,10 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
#endif
if(julianDay+testDate > nextJulianDay) { // is it past Dec 31? (nextJulianDay is day BEFORE year+1's Jan 1)
// Fire up the calculating engines.. retry YWOY = (year-1)
- julianDay = handleComputeMonthStart(year-1, 0, false); // jd before Jan 1 of previous year
+ julianDay = handleComputeMonthStart(year-1, 0, false, status); // jd before Jan 1 of previous year
+ if (U_FAILURE(status)) {
+ return 0;
+ }
first = julianDayToDayOfWeek(julianDay + 1) - firstDayOfWeek; // 0 based local dow of first week
if(first < 0) { // 0..6
@@ -3525,14 +3631,24 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
}
// Now adjust for the week number.
- date += 7 * (internalGet(bestField) - 1);
+ int32_t weeks = internalGet(bestField);
+ if (uprv_add32_overflow(weeks, -1, &weeks) ||
+ uprv_mul32_overflow(7, weeks, &weeks) ||
+ uprv_add32_overflow(date, weeks, &date)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
}
- return julianDay + date;
+ if (uprv_add32_overflow(julianDay, date, &julianDay)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return julianDay;
}
int32_t
-Calendar::getDefaultMonthInYear(int32_t /*eyear*/)
+Calendar::getDefaultMonthInYear(int32_t /*eyear*/, UErrorCode& /* status */)
{
return 0;
}
@@ -3544,17 +3660,28 @@ Calendar::getDefaultDayInMonth(int32_t /*eyear*/, int32_t /*month*/)
}
-int32_t Calendar::getLocalDOW()
+int32_t Calendar::getLocalDOW(UErrorCode& status)
{
- // Get zero-based localized DOW, valid range 0..6. This is the DOW
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ // Get zero-based localized DOW, valid range 0..6. This is the DOW
// we are looking for.
int32_t dowLocal = 0;
switch (resolveFields(kDOWPrecedence)) {
case UCAL_DAY_OF_WEEK:
- dowLocal = internalGet(UCAL_DAY_OF_WEEK) - fFirstDayOfWeek;
+ dowLocal = internalGet(UCAL_DAY_OF_WEEK);
+ if (uprv_add32_overflow(dowLocal, -fFirstDayOfWeek, &dowLocal)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
break;
case UCAL_DOW_LOCAL:
- dowLocal = internalGet(UCAL_DOW_LOCAL) - 1;
+ dowLocal = internalGet(UCAL_DOW_LOCAL);
+ if (uprv_add32_overflow(dowLocal, -1, &dowLocal)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
break;
default:
break;
@@ -3566,8 +3693,11 @@ int32_t Calendar::getLocalDOW()
return dowLocal;
}
-int32_t Calendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy)
+int32_t Calendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy, UErrorCode& status)
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// We have UCAL_YEAR_WOY and UCAL_WEEK_OF_YEAR - from those, determine
// what year we fall in, so that other code can set it properly.
// (code borrowed from computeWeekFields and handleComputeJulianDay)
@@ -3577,10 +3707,21 @@ int32_t Calendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t w
UCalendarDateFields bestField = resolveFields(kDatePrecedence); // !! Note: if subclasses have a different table, they should override handleGetExtendedYearFromWeekFields
// Now, a local DOW
- int32_t dowLocal = getLocalDOW(); // 0..6
+ int32_t dowLocal = getLocalDOW(status); // 0..6
+ if (U_FAILURE(status)) {
+ return 0;
+ }
int32_t firstDayOfWeek = getFirstDayOfWeek(); // Localized fdw
- int32_t jan1Start = handleComputeMonthStart(yearWoy, 0, false);
- int32_t nextJan1Start = handleComputeMonthStart(yearWoy+1, 0, false); // next year's Jan1 start
+ int32_t jan1Start = handleComputeMonthStart(yearWoy, 0, false, status);
+ int32_t yearWoyPlus1;
+ if (uprv_add32_overflow(yearWoy, 1, &yearWoyPlus1)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ int32_t nextJan1Start = handleComputeMonthStart(yearWoyPlus1, 0, false, status); // next year's Jan1 start
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// At this point julianDay is the 0-based day BEFORE the first day of
// January 1, year 1 of the given calendar. If julianDay == 0, it
@@ -3657,7 +3798,10 @@ int32_t Calendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t w
case UCAL_DATE:
{
- int32_t m = internalGetMonth();
+ int32_t m = internalGetMonth(status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if((m == 0) &&
(woy >= getLeastMaximum(UCAL_WEEK_OF_YEAR))) {
return yearWoy+1; // month 0, late woy = in the next year
@@ -3681,15 +3825,19 @@ int32_t Calendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t w
}
}
-int32_t Calendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const
+int32_t Calendar::handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const
{
- return handleComputeMonthStart(extendedYear, month+1, true) -
- handleComputeMonthStart(extendedYear, month, true);
+ return handleComputeMonthStart(extendedYear, month+1, true, status) -
+ handleComputeMonthStart(extendedYear, month, true, status);
}
-int32_t Calendar::handleGetYearLength(int32_t eyear) const {
- return handleComputeMonthStart(eyear+1, 0, false) -
- handleComputeMonthStart(eyear, 0, false);
+int32_t Calendar::handleGetYearLength(int32_t eyear) const
+{
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t result = handleComputeMonthStart(eyear+1, 0, false, status) -
+ handleComputeMonthStart(eyear, 0, false, status);
+ U_ASSERT(U_SUCCESS(status));
+ return result;
}
int32_t
@@ -3713,7 +3861,7 @@ Calendar::getActualMaximum(UCalendarDateFields field, UErrorCode& status) const
}
cal->setLenient(true);
cal->prepareGetActual(field,false,status);
- result = handleGetMonthLength(cal->get(UCAL_EXTENDED_YEAR, status), cal->get(UCAL_MONTH, status));
+ result = handleGetMonthLength(cal->get(UCAL_EXTENDED_YEAR, status), cal->get(UCAL_MONTH, status), status);
delete cal;
}
break;
@@ -3992,13 +4140,12 @@ Calendar::setWeekData(const Locale& desiredLocale, const char *type, UErrorCode&
return;
}
- char region[ULOC_COUNTRY_CAPACITY];
- (void)ulocimp_getRegionForSupplementalData(desiredLocale.getName(), true, region, sizeof(region), &status);
+ CharString region = ulocimp_getRegionForSupplementalData(desiredLocale.getName(), true, status);
// Read week data values from supplementalData week data
UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", &status);
ures_getByKey(rb, "weekData", rb, &status);
- UResourceBundle *weekData = ures_getByKey(rb, region, nullptr, &status);
+ UResourceBundle *weekData = ures_getByKey(rb, region.data(), nullptr, &status);
if (status == U_MISSING_RESOURCE_ERROR && rb != nullptr) {
status = U_ZERO_ERROR;
weekData = ures_getByKey(rb, "001", nullptr, &status);
@@ -4119,14 +4266,17 @@ Calendar::internalSet(EDateFields field, int32_t value)
internalSet((UCalendarDateFields) field, value);
}
-int32_t Calendar::internalGetMonth() const {
+int32_t Calendar::internalGetMonth(UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if (resolveFields(kMonthPrecedence) == UCAL_MONTH) {
- return internalGet(UCAL_MONTH);
+ return internalGet(UCAL_MONTH, status);
}
- return internalGet(UCAL_ORDINAL_MONTH);
+ return internalGet(UCAL_ORDINAL_MONTH, status);
}
-int32_t Calendar::internalGetMonth(int32_t defaultValue) const {
+int32_t Calendar::internalGetMonth(int32_t defaultValue, UErrorCode& /* status */) const {
if (resolveFields(kMonthPrecedence) == UCAL_MONTH) {
return internalGet(UCAL_MONTH, defaultValue);
}
diff --git a/icu4c/source/i18n/casetrn.cpp b/icu4c/source/i18n/casetrn.cpp
index 2f9699ee9..f159171e0 100644
--- a/icu4c/source/i18n/casetrn.cpp
+++ b/icu4c/source/i18n/casetrn.cpp
@@ -91,7 +91,7 @@ UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(CaseMapTransliterator)
* Constructs a transliterator.
*/
CaseMapTransliterator::CaseMapTransliterator(const UnicodeString &id, UCaseMapFull *map) :
- Transliterator(id, 0),
+ Transliterator(id, nullptr),
fMap(map)
{
// TODO test incremental mode with context-sensitive text (e.g. greek sigma)
diff --git a/icu4c/source/i18n/cecal.cpp b/icu4c/source/i18n/cecal.cpp
index 456801ee3..b550684b7 100644
--- a/icu4c/source/i18n/cecal.cpp
+++ b/icu4c/source/i18n/cecal.cpp
@@ -76,10 +76,27 @@ CECalendar::operator=(const CECalendar& right)
// Calendar framework
//-------------------------------------------------------------------------
-int32_t
-CECalendar::handleComputeMonthStart(int32_t eyear,int32_t emonth, UBool /*useMonth*/) const
+int64_t
+CECalendar::handleComputeMonthStart(int32_t eyear,int32_t emonth, UBool /*useMonth*/, UErrorCode& /*status*/) const
{
- return ceToJD(eyear, emonth, 0, getJDEpochOffset());
+ int64_t year64 = eyear;
+ // handle month > 12, < 0 (e.g. from add/set)
+ if ( emonth >= 0 ) {
+ year64 += emonth/13;
+ emonth %= 13;
+ } else {
+ ++emonth;
+ year64 += emonth/13 - 1;
+ emonth = emonth%13 + 12;
+ }
+
+ return (
+ getJDEpochOffset() // difference from Julian epoch to 1,1,1
+ + 365LL * year64 // number of days from years
+ + ClockMath::floorDivideInt64(year64, 4LL) // extra day of leap year
+ + 30 * emonth // number of days from months (months are 0-based)
+ - 1 // number of days for present month (1 based)
+ );
}
int32_t
@@ -88,35 +105,9 @@ CECalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) cons
return LIMITS[field][limitType];
}
-UBool
-CECalendar::haveDefaultCentury() const
-{
- return true;
-}
-
//-------------------------------------------------------------------------
// Calendar system Conversion methods...
//-------------------------------------------------------------------------
-int32_t
-CECalendar::ceToJD(int32_t year, int32_t month, int32_t date, int32_t jdEpochOffset)
-{
- // handle month > 12, < 0 (e.g. from add/set)
- if ( month >= 0 ) {
- year += month/13;
- month %= 13;
- } else {
- ++month;
- year += month/13 - 1;
- month = month%13 + 12;
- }
- return (int32_t) (
- jdEpochOffset // difference from Julian epoch to 1,1,1
- + 365 * year // number of days from years
- + ClockMath::floorDivide(year, 4) // extra day of leap year
- + 30 * month // number of days from months (months are 0-based)
- + date - 1 // number of days for present month (1 based)
- );
-}
void
CECalendar::jdToCE(int32_t julianDay, int32_t jdEpochOffset, int32_t& year, int32_t& month, int32_t& day)
@@ -137,13 +128,17 @@ CECalendar::jdToCE(int32_t julianDay, int32_t jdEpochOffset, int32_t& year, int3
static const char* kMonthCode13 = "M13";
const char* CECalendar::getTemporalMonthCode(UErrorCode& status) const {
- if (get(UCAL_MONTH, status) == 12) return kMonthCode13;
+ if (get(UCAL_MONTH, status) == 12) {
+ return kMonthCode13;
+ }
return Calendar::getTemporalMonthCode(status);
}
void
CECalendar::setTemporalMonthCode(const char* code, UErrorCode& status) {
- if (U_FAILURE(status)) return;
+ if (U_FAILURE(status)) {
+ return;
+ }
if (uprv_strcmp(code, kMonthCode13) == 0) {
set(UCAL_MONTH, 12);
set(UCAL_IS_LEAP_MONTH, 0);
diff --git a/icu4c/source/i18n/cecal.h b/icu4c/source/i18n/cecal.h
index 16f36a797..8f634e796 100644
--- a/icu4c/source/i18n/cecal.h
+++ b/icu4c/source/i18n/cecal.h
@@ -98,7 +98,7 @@ protected:
* Return JD of start of given month/extended year
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
/**
* Calculate the limit for a specified type of limit and field
@@ -106,12 +106,6 @@ protected:
*/
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- /**
- * Returns true because Coptic/Ethiopic Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
protected:
/**
* The Coptic and Ethiopic calendars differ only in their epochs.
@@ -122,19 +116,6 @@ protected:
virtual int32_t getJDEpochOffset() const = 0;
/**
- * Convert an Coptic/Ethiopic year, month, and day to a Julian day.
- *
- * @param year the extended year
- * @param month the month
- * @param day the day
- * @param jdEpochOffset the epoch offset from Julian epoch
- * @return Julian day
- * @internal
- */
- static int32_t ceToJD(int32_t year, int32_t month, int32_t date,
- int32_t jdEpochOffset);
-
- /**
* Convert a Julian day to an Coptic/Ethiopic year, month and day
*
* @param julianDay the Julian day
diff --git a/icu4c/source/i18n/chnsecal.cpp b/icu4c/source/i18n/chnsecal.cpp
index c7c573bac..7db5b4800 100644
--- a/icu4c/source/i18n/chnsecal.cpp
+++ b/icu4c/source/i18n/chnsecal.cpp
@@ -24,7 +24,7 @@
#include "umutex.h"
#include <float.h>
#include "gregoimp.h" // Math
-#include "astro.h" // CalendarAstronomer
+#include "astro.h" // CalendarAstronomer and CalendarCache
#include "unicode/simpletz.h"
#include "uhash.h"
#include "ucln_in.h"
@@ -53,16 +53,12 @@ static void debug_chnsecal_msg(const char *pat, ...)
#endif
-// --- The cache --
-static icu::UMutex astroLock;
-static icu::CalendarAstronomer *gChineseCalendarAstro = nullptr;
-
// Lazy Creation & Access synchronized by class CalendarCache with a mutex.
-static icu::CalendarCache *gChineseCalendarWinterSolsticeCache = nullptr;
-static icu::CalendarCache *gChineseCalendarNewYearCache = nullptr;
+static icu::CalendarCache *gWinterSolsticeCache = nullptr;
+static icu::CalendarCache *gNewYearCache = nullptr;
-static icu::TimeZone *gChineseCalendarZoneAstroCalc = nullptr;
-static icu::UInitOnce gChineseCalendarZoneAstroCalcInitOnce {};
+static icu::TimeZone *gAstronomerTimeZone = nullptr;
+static icu::UInitOnce gAstronomerTimeZoneInitOnce {};
/**
* The start year of the Chinese calendar, the 61st year of the reign
@@ -89,23 +85,19 @@ static const int32_t SYNODIC_GAP = 25;
U_CDECL_BEGIN
static UBool calendar_chinese_cleanup() {
- if (gChineseCalendarAstro) {
- delete gChineseCalendarAstro;
- gChineseCalendarAstro = nullptr;
- }
- if (gChineseCalendarWinterSolsticeCache) {
- delete gChineseCalendarWinterSolsticeCache;
- gChineseCalendarWinterSolsticeCache = nullptr;
+ if (gWinterSolsticeCache) {
+ delete gWinterSolsticeCache;
+ gWinterSolsticeCache = nullptr;
}
- if (gChineseCalendarNewYearCache) {
- delete gChineseCalendarNewYearCache;
- gChineseCalendarNewYearCache = nullptr;
+ if (gNewYearCache) {
+ delete gNewYearCache;
+ gNewYearCache = nullptr;
}
- if (gChineseCalendarZoneAstroCalc) {
- delete gChineseCalendarZoneAstroCalc;
- gChineseCalendarZoneAstroCalc = nullptr;
+ if (gAstronomerTimeZone) {
+ delete gAstronomerTimeZone;
+ gAstronomerTimeZone = nullptr;
}
- gChineseCalendarZoneAstroCalcInitOnce.reset();
+ gAstronomerTimeZoneInitOnce.reset();
return true;
}
U_CDECL_END
@@ -121,33 +113,28 @@ U_NAMESPACE_BEGIN
//-------------------------------------------------------------------------
+namespace {
+
+const TimeZone* getAstronomerTimeZone();
+int32_t newMoonNear(const TimeZone*, double, UBool);
+int32_t newYear(const icu::ChineseCalendar::Setting&, int32_t);
+UBool isLeapMonthBetween(const TimeZone*, int32_t, int32_t);
+
+} // namespace
+
ChineseCalendar* ChineseCalendar::clone() const {
return new ChineseCalendar(*this);
}
ChineseCalendar::ChineseCalendar(const Locale& aLocale, UErrorCode& success)
: Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success),
- hasLeapMonthBetweenWinterSolstices(false),
- fEpochYear(CHINESE_EPOCH_YEAR),
- fZoneAstroCalc(getChineseCalZoneAstroCalc())
-{
- setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
-}
-
-ChineseCalendar::ChineseCalendar(const Locale& aLocale, int32_t epochYear,
- const TimeZone* zoneAstroCalc, UErrorCode &success)
-: Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success),
- hasLeapMonthBetweenWinterSolstices(false),
- fEpochYear(epochYear),
- fZoneAstroCalc(zoneAstroCalc)
+ hasLeapMonthBetweenWinterSolstices(false)
{
setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
}
ChineseCalendar::ChineseCalendar(const ChineseCalendar& other) : Calendar(other) {
hasLeapMonthBetweenWinterSolstices = other.hasLeapMonthBetweenWinterSolstices;
- fEpochYear = other.fEpochYear;
- fZoneAstroCalc = other.fZoneAstroCalc;
}
ChineseCalendar::~ChineseCalendar()
@@ -158,16 +145,20 @@ const char *ChineseCalendar::getType() const {
return "chinese";
}
-static void U_CALLCONV initChineseCalZoneAstroCalc() {
- gChineseCalendarZoneAstroCalc = new SimpleTimeZone(CHINA_OFFSET, UNICODE_STRING_SIMPLE("CHINA_ZONE") );
+namespace { // anonymous
+
+static void U_CALLCONV initAstronomerTimeZone() {
+ gAstronomerTimeZone = new SimpleTimeZone(CHINA_OFFSET, UNICODE_STRING_SIMPLE("CHINA_ZONE") );
ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
}
-const TimeZone* ChineseCalendar::getChineseCalZoneAstroCalc() const {
- umtx_initOnce(gChineseCalendarZoneAstroCalcInitOnce, &initChineseCalZoneAstroCalc);
- return gChineseCalendarZoneAstroCalc;
+const TimeZone* getAstronomerTimeZone() {
+ umtx_initOnce(gAstronomerTimeZoneInitOnce, &initAstronomerTimeZone);
+ return gAstronomerTimeZone;
}
+} // namespace anonymous
+
//-------------------------------------------------------------------------
// Minimum / Maximum access functions
//-------------------------------------------------------------------------
@@ -222,14 +213,32 @@ int32_t ChineseCalendar::handleGetLimit(UCalendarDateFields field, ELimitType li
* field as the continuous year count, depending on which is newer.
* @stable ICU 2.8
*/
-int32_t ChineseCalendar::handleGetExtendedYear() {
+int32_t ChineseCalendar::handleGetExtendedYear(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+
int32_t year;
if (newestStamp(UCAL_ERA, UCAL_YEAR, kUnset) <= fStamp[UCAL_EXTENDED_YEAR]) {
year = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
} else {
- int32_t cycle = internalGet(UCAL_ERA, 1) - 1; // 0-based cycle
// adjust to the instance specific epoch
- year = cycle * 60 + internalGet(UCAL_YEAR, 1) - (fEpochYear - CHINESE_EPOCH_YEAR);
+ int32_t cycle = internalGet(UCAL_ERA, 1);
+ year = internalGet(UCAL_YEAR, 1);
+ const Setting setting = getSetting(status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ // Handle int32 overflow calculation for
+ // year = year + (cycle-1) * 60 -(fEpochYear - CHINESE_EPOCH_YEAR)
+ if (uprv_add32_overflow(cycle, -1, &cycle) || // 0-based cycle
+ uprv_mul32_overflow(cycle, 60, &cycle) ||
+ uprv_add32_overflow(year, cycle, &year) ||
+ uprv_add32_overflow(year, -(setting.epochYear-CHINESE_EPOCH_YEAR),
+ &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
}
return year;
}
@@ -242,39 +251,19 @@ int32_t ChineseCalendar::handleGetExtendedYear() {
* whether or not the given month is a leap month.
* @stable ICU 2.8
*/
-int32_t ChineseCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
- int32_t thisStart = handleComputeMonthStart(extendedYear, month, true) -
+int32_t ChineseCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const {
+ const Setting setting = getSetting(status);
+ int32_t thisStart = handleComputeMonthStart(extendedYear, month, true, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ thisStart = thisStart -
kEpochStartAsJulianDay + 1; // Julian day -> local days
- int32_t nextStart = newMoonNear(thisStart + SYNODIC_GAP, true);
+ int32_t nextStart = newMoonNear(setting.zoneAstroCalc, thisStart + SYNODIC_GAP, true);
return nextStart - thisStart;
}
/**
- * Override Calendar to compute several fields specific to the Chinese
- * calendar system. These are:
- *
- * <ul><li>ERA
- * <li>YEAR
- * <li>MONTH
- * <li>DAY_OF_MONTH
- * <li>DAY_OF_YEAR
- * <li>EXTENDED_YEAR</ul>
- *
- * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
- * method is called. The getGregorianXxx() methods return Gregorian
- * calendar equivalents for the given Julian day.
- *
- * <p>Compute the ChineseCalendar-specific field IS_LEAP_MONTH.
- * @stable ICU 2.8
- */
-void ChineseCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/) {
-
- computeChineseFields(julianDay - kEpochStartAsJulianDay, // local days
- getGregorianYear(), getGregorianMonth(),
- true); // set all fields
-}
-
-/**
* Field resolution table that incorporates IS_LEAP_MONTH.
*/
const UFieldResolutionTable ChineseCalendar::CHINESE_DATE_PRECEDENCE[] =
@@ -311,6 +300,21 @@ const UFieldResolutionTable* ChineseCalendar::getFieldResolutionTable() const {
return CHINESE_DATE_PRECEDENCE;
}
+namespace {
+
+struct MonthInfo {
+ int32_t month;
+ int32_t ordinalMonth;
+ int32_t thisMoon;
+ bool isLeapMonth;
+ bool hasLeapMonthBetweenWinterSolstices;
+};
+struct MonthInfo computeMonthInfo(
+ const icu::ChineseCalendar::Setting& setting,
+ int32_t gyear, int32_t days);
+
+} // namespace
+
/**
* Return the Julian day number of day before the first day of the
* given month in the given extended year.
@@ -324,50 +328,57 @@ const UFieldResolutionTable* ChineseCalendar::getFieldResolutionTable() const {
* day of the given month and year
* @stable ICU 2.8
*/
-int32_t ChineseCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const {
- ChineseCalendar *nonConstThis = (ChineseCalendar*)this; // cast away const
-
+int64_t ChineseCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// If the month is out of range, adjust it into range, and
// modify the extended year value accordingly.
if (month < 0 || month > 11) {
double m = month;
- eyear += (int32_t)ClockMath::floorDivide(m, 12.0, &m);
+ if (uprv_add32_overflow(eyear, ClockMath::floorDivide(m, 12.0, &m), &eyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
month = (int32_t)m;
}
- int32_t gyear = eyear + fEpochYear - 1; // Gregorian year
- int32_t theNewYear = newYear(gyear);
- int32_t newMoon = newMoonNear(theNewYear + month * 29, true);
-
- int32_t julianDay = newMoon + kEpochStartAsJulianDay;
+ const Setting setting = getSetting(status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ int32_t gyear;
+ if (uprv_add32_overflow(eyear, setting.epochYear - 1, &gyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
- // Save fields for later restoration
- int32_t saveMonth = internalGet(UCAL_MONTH);
- int32_t saveOrdinalMonth = internalGet(UCAL_ORDINAL_MONTH);
- int32_t saveIsLeapMonth = internalGet(UCAL_IS_LEAP_MONTH);
+ int32_t theNewYear = newYear(setting, gyear);
+ int32_t newMoon = newMoonNear(setting.zoneAstroCalc, theNewYear + month * 29, true);
// Ignore IS_LEAP_MONTH field if useMonth is false
- int32_t isLeapMonth = useMonth ? saveIsLeapMonth : 0;
+ bool isLeapMonth = false;
+ if (useMonth) {
+ isLeapMonth = internalGet(UCAL_IS_LEAP_MONTH) != 0;
+ }
- UErrorCode status = U_ZERO_ERROR;
- nonConstThis->computeGregorianFields(julianDay, status);
- if (U_FAILURE(status))
- return 0;
-
- // This will modify the MONTH and IS_LEAP_MONTH fields (only)
- nonConstThis->computeChineseFields(newMoon, getGregorianYear(),
- getGregorianMonth(), false);
+ int32_t unusedMonth;
+ int32_t unusedDayOfWeek;
+ int32_t unusedDayOfMonth;
+ int32_t unusedDayOfYear;
+ Grego::dayToFields(newMoon, gyear, unusedMonth, unusedDayOfWeek, unusedDayOfMonth, unusedDayOfYear);
- if (month != internalGet(UCAL_MONTH) ||
- isLeapMonth != internalGet(UCAL_IS_LEAP_MONTH)) {
- newMoon = newMoonNear(newMoon + SYNODIC_GAP, true);
- julianDay = newMoon + kEpochStartAsJulianDay;
+ struct MonthInfo monthInfo = computeMonthInfo(setting, gyear, newMoon);
+ if (month != monthInfo.month-1 || isLeapMonth != monthInfo.isLeapMonth) {
+ newMoon = newMoonNear(setting.zoneAstroCalc, newMoon + SYNODIC_GAP, true);
+ }
+ int32_t julianDay;
+ if (uprv_add32_overflow(newMoon-1, kEpochStartAsJulianDay, &julianDay)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
}
- nonConstThis->internalSet(UCAL_MONTH, saveMonth);
- nonConstThis->internalSet(UCAL_ORDINAL_MONTH, saveOrdinalMonth);
- nonConstThis->internalSet(UCAL_IS_LEAP_MONTH, saveIsLeapMonth);
- return julianDay - 1;
+ return julianDay;
}
@@ -402,6 +413,66 @@ void ChineseCalendar::add(EDateFields field, int32_t amount, UErrorCode& status)
add((UCalendarDateFields)field, amount, status);
}
+namespace {
+
+struct RollMonthInfo {
+ int32_t month;
+ int32_t newMoon;
+ int32_t thisMoon;
+};
+
+struct RollMonthInfo rollMonth(const TimeZone* timeZone, int32_t amount, int32_t day, int32_t month, int32_t dayOfMonth,
+ bool isLeapMonth, bool hasLeapMonthBetweenWinterSolstices,
+ UErrorCode& status) {
+ struct RollMonthInfo output = {0, 0, 0};
+ if (U_FAILURE(status)) {
+ return output;
+ }
+
+ output.thisMoon = day - dayOfMonth + 1; // New moon (start of this month)
+
+ // Note throughout the following: Months 12 and 1 are never
+ // followed by a leap month (D&R p. 185).
+
+ // Compute the adjusted month number m. This is zero-based
+ // value from 0..11 in a non-leap year, and from 0..12 in a
+ // leap year.
+ if (hasLeapMonthBetweenWinterSolstices) { // (member variable)
+ if (isLeapMonth) {
+ ++month;
+ } else {
+ // Check for a prior leap month. (In the
+ // following, month 0 is the first month of the
+ // year.) Month 0 is never followed by a leap
+ // month, and we know month m is not a leap month.
+ // moon1 will be the start of month 0 if there is
+ // no leap month between month 0 and month m;
+ // otherwise it will be the start of month 1.
+ int prevMoon = output.thisMoon -
+ (int) (CalendarAstronomer::SYNODIC_MONTH * (month - 0.5));
+ prevMoon = newMoonNear(timeZone, prevMoon, true);
+ if (isLeapMonthBetween(timeZone, prevMoon, output.thisMoon)) {
+ ++month;
+ }
+ }
+ }
+ // Now do the standard roll computation on month, with the
+ // allowed range of 0..n-1, where n is 12 or 13.
+ int32_t numberOfMonths = hasLeapMonthBetweenWinterSolstices ? 13 : 12; // Months in this year
+ if (uprv_add32_overflow(amount, month, &amount)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return output;
+ }
+ output.newMoon = amount % numberOfMonths;
+ if (output.newMoon < 0) {
+ output.newMoon += numberOfMonths;
+ }
+ output.month = month;
+ return output;
+}
+
+} // namespace
+
/**
* Override Calendar to handle leap months properly.
* @stable ICU 2.8
@@ -411,51 +482,17 @@ void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode
case UCAL_MONTH:
case UCAL_ORDINAL_MONTH:
if (amount != 0) {
- int32_t dom = get(UCAL_DAY_OF_MONTH, status);
- if (U_FAILURE(status)) break;
+ const Setting setting = getSetting(status);
int32_t day = get(UCAL_JULIAN_DAY, status) - kEpochStartAsJulianDay; // Get local day
+ int32_t month = get(UCAL_MONTH, status); // 0-based month
+ int32_t dayOfMonth = get(UCAL_DAY_OF_MONTH, status);
+ bool isLeapMonth = get(UCAL_IS_LEAP_MONTH, status) == 1;
if (U_FAILURE(status)) break;
- int32_t moon = day - dom + 1; // New moon (start of this month)
-
- // Note throughout the following: Months 12 and 1 are never
- // followed by a leap month (D&R p. 185).
-
- // Compute the adjusted month number m. This is zero-based
- // value from 0..11 in a non-leap year, and from 0..12 in a
- // leap year.
- int32_t m = get(UCAL_MONTH, status); // 0-based month
+ struct RollMonthInfo r = rollMonth(setting.zoneAstroCalc, amount,
+ day, month, dayOfMonth, isLeapMonth, hasLeapMonthBetweenWinterSolstices, status);
if (U_FAILURE(status)) break;
- if (hasLeapMonthBetweenWinterSolstices) { // (member variable)
- if (get(UCAL_IS_LEAP_MONTH, status) == 1) {
- ++m;
- } else {
- // Check for a prior leap month. (In the
- // following, month 0 is the first month of the
- // year.) Month 0 is never followed by a leap
- // month, and we know month m is not a leap month.
- // moon1 will be the start of month 0 if there is
- // no leap month between month 0 and month m;
- // otherwise it will be the start of month 1.
- int moon1 = moon -
- (int) (CalendarAstronomer::SYNODIC_MONTH * (m - 0.5));
- moon1 = newMoonNear(moon1, true);
- if (isLeapMonthBetween(moon1, moon)) {
- ++m;
- }
- }
- if (U_FAILURE(status)) break;
- }
-
- // Now do the standard roll computation on m, with the
- // allowed range of 0..n-1, where n is 12 or 13.
- int32_t n = hasLeapMonthBetweenWinterSolstices ? 13 : 12; // Months in this year
- int32_t newM = (m + amount) % n;
- if (newM < 0) {
- newM += n;
- }
-
- if (newM != m) {
- offsetMonth(moon, dom, newM - m, status);
+ if (r.newMoon != r.month) {
+ offsetMonth(r.thisMoon, dayOfMonth, r.newMoon - r.month, status);
}
}
break;
@@ -474,26 +511,28 @@ void ChineseCalendar::roll(EDateFields field, int32_t amount, UErrorCode& status
// Support methods and constants
//------------------------------------------------------------------
+namespace {
/**
* Convert local days to UTC epoch milliseconds.
- * This is not an accurate conversion in that getTimezoneOffset
- * takes the milliseconds in GMT (not local time). In theory, more
- * accurate algorithm can be implemented but practically we do not need
- * to go through that complication as long as the historical timezone
- * changes did not happen around the 'tricky' new moon (new moon around
- * midnight).
- *
+ * This is not an accurate conversion in that getTimezoneOffset
+ * takes the milliseconds in GMT (not local time). In theory, more
+ * accurate algorithm can be implemented but practically we do not need
+ * to go through that complication as long as the historical timezone
+ * changes did not happen around the 'tricky' new moon (new moon around
+ * midnight).
+ *
+ * @param timeZone time zone for the Astro calculation.
* @param days days after January 1, 1970 0:00 in the astronomical base zone
* @return milliseconds after January 1, 1970 0:00 GMT
*/
-double ChineseCalendar::daysToMillis(double days) const {
+double daysToMillis(const TimeZone* timeZone, double days) {
double millis = days * (double)kOneDay;
- if (fZoneAstroCalc != nullptr) {
+ if (timeZone != nullptr) {
int32_t rawOffset, dstOffset;
UErrorCode status = U_ZERO_ERROR;
- fZoneAstroCalc->getOffset(millis, false, rawOffset, dstOffset, status);
+ timeZone->getOffset(millis, false, rawOffset, dstOffset, status);
if (U_SUCCESS(status)) {
- return millis - (double)(rawOffset + dstOffset);
+ return millis - (double)(rawOffset + dstOffset);
}
}
return millis - (double)CHINA_OFFSET;
@@ -501,16 +540,17 @@ double ChineseCalendar::daysToMillis(double days) const {
/**
* Convert UTC epoch milliseconds to local days.
+ * @param timeZone time zone for the Astro calculation.
* @param millis milliseconds after January 1, 1970 0:00 GMT
* @return days after January 1, 1970 0:00 in the astronomical base zone
*/
-double ChineseCalendar::millisToDays(double millis) const {
- if (fZoneAstroCalc != nullptr) {
+double millisToDays(const TimeZone* timeZone, double millis) {
+ if (timeZone != nullptr) {
int32_t rawOffset, dstOffset;
UErrorCode status = U_ZERO_ERROR;
- fZoneAstroCalc->getOffset(millis, false, rawOffset, dstOffset, status);
+ timeZone->getOffset(millis, false, rawOffset, dstOffset, status);
if (U_SUCCESS(status)) {
- return ClockMath::floorDivide(millis + (double)(rawOffset + dstOffset), kOneDay);
+ return ClockMath::floorDivide(millis + (double)(rawOffset + dstOffset), kOneDay);
}
}
return ClockMath::floorDivide(millis + (double)CHINA_OFFSET, kOneDay);
@@ -525,34 +565,35 @@ double ChineseCalendar::millisToDays(double millis) const {
* Return the major solar term on or after December 15 of the given
* Gregorian year, that is, the winter solstice of the given year.
* Computations are relative to Asia/Shanghai time zone.
+ * @param setting setting (time zone and caches) for the Astro calculation.
* @param gyear a Gregorian year
* @return days after January 1, 1970 0:00 Asia/Shanghai of the
* winter solstice of the given year
*/
-int32_t ChineseCalendar::winterSolstice(int32_t gyear) const {
+int32_t winterSolstice(const icu::ChineseCalendar::Setting& setting,
+ int32_t gyear) {
+ const TimeZone* timeZone = setting.zoneAstroCalc;
UErrorCode status = U_ZERO_ERROR;
- int32_t cacheValue = CalendarCache::get(&gChineseCalendarWinterSolsticeCache, gyear, status);
+ int32_t cacheValue = CalendarCache::get(setting.winterSolsticeCache, gyear, status);
if (cacheValue == 0) {
// In books December 15 is used, but it fails for some years
// using our algorithms, e.g.: 1298 1391 1492 1553 1560. That
// is, winterSolstice(1298) starts search at Dec 14 08:00:00
// PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
- double ms = daysToMillis(Grego::fieldsToDay(gyear, UCAL_DECEMBER, 1));
-
- umtx_lock(&astroLock);
- if(gChineseCalendarAstro == nullptr) {
- gChineseCalendarAstro = new CalendarAstronomer();
- ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
- }
- gChineseCalendarAstro->setTime(ms);
- UDate solarLong = gChineseCalendarAstro->getSunTime(CalendarAstronomer::WINTER_SOLSTICE(), true);
- umtx_unlock(&astroLock);
+ double ms = daysToMillis(timeZone, Grego::fieldsToDay(gyear, UCAL_DECEMBER, 1));
// Winter solstice is 270 degrees solar longitude aka Dongzhi
- cacheValue = (int32_t)millisToDays(solarLong);
- CalendarCache::put(&gChineseCalendarWinterSolsticeCache, gyear, cacheValue, status);
+ double days = millisToDays(timeZone,
+ CalendarAstronomer(ms)
+ .getSunTime(CalendarAstronomer::WINTER_SOLSTICE(), true));
+ if (days < INT32_MIN || days > INT32_MAX) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ cacheValue = (int32_t) days;
+ CalendarCache::put(setting.winterSolsticeCache, gyear, cacheValue, status);
}
if(U_FAILURE(status)) {
cacheValue = 0;
@@ -563,24 +604,18 @@ int32_t ChineseCalendar::winterSolstice(int32_t gyear) const {
/**
* Return the closest new moon to the given date, searching either
* forward or backward in time.
+ * @param timeZone time zone for the Astro calculation.
* @param days days after January 1, 1970 0:00 Asia/Shanghai
* @param after if true, search for a new moon on or after the given
* date; otherwise, search for a new moon before it
* @return days after January 1, 1970 0:00 Asia/Shanghai of the nearest
* new moon after or before <code>days</code>
*/
-int32_t ChineseCalendar::newMoonNear(double days, UBool after) const {
-
- umtx_lock(&astroLock);
- if(gChineseCalendarAstro == nullptr) {
- gChineseCalendarAstro = new CalendarAstronomer();
- ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
- }
- gChineseCalendarAstro->setTime(daysToMillis(days));
- UDate newMoon = gChineseCalendarAstro->getMoonTime(CalendarAstronomer::NEW_MOON(), after);
- umtx_unlock(&astroLock);
-
- return (int32_t) millisToDays(newMoon);
+int32_t newMoonNear(const TimeZone* timeZone, double days, UBool after) {
+ return (int32_t) millisToDays(
+ timeZone,
+ CalendarAstronomer(daysToMillis(timeZone, days))
+ .getMoonTime(CalendarAstronomer::NEW_MOON(), after));
}
/**
@@ -590,7 +625,7 @@ int32_t ChineseCalendar::newMoonNear(double days, UBool after) const {
* @param day2 days after January 1, 1970 0:00 Asia/Shanghai
* @return the nearest integer number of months between day1 and day2
*/
-int32_t ChineseCalendar::synodicMonthsBetween(int32_t day1, int32_t day2) const {
+int32_t synodicMonthsBetween(int32_t day1, int32_t day2) {
double roundme = ((day2 - day1) / CalendarAstronomer::SYNODIC_MONTH);
return (int32_t) (roundme + (roundme >= 0 ? .5 : -.5));
}
@@ -599,21 +634,13 @@ int32_t ChineseCalendar::synodicMonthsBetween(int32_t day1, int32_t day2) const
* Return the major solar term on or before a given date. This
* will be an integer from 1..12, with 1 corresponding to 330 degrees,
* 2 to 0 degrees, 3 to 30 degrees,..., and 12 to 300 degrees.
+ * @param timeZone time zone for the Astro calculation.
* @param days days after January 1, 1970 0:00 Asia/Shanghai
*/
-int32_t ChineseCalendar::majorSolarTerm(int32_t days) const {
-
- umtx_lock(&astroLock);
- if(gChineseCalendarAstro == nullptr) {
- gChineseCalendarAstro = new CalendarAstronomer();
- ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
- }
- gChineseCalendarAstro->setTime(daysToMillis(days));
- UDate solarLongitude = gChineseCalendarAstro->getSunLongitude();
- umtx_unlock(&astroLock);
-
+int32_t majorSolarTerm(const TimeZone* timeZone, int32_t days) {
// Compute (floor(solarLongitude / (pi/6)) + 2) % 12
- int32_t term = ( ((int32_t)(6 * solarLongitude / CalendarAstronomer::PI)) + 2 ) % 12;
+ int32_t term = ( ((int32_t)(6 * CalendarAstronomer(daysToMillis(timeZone, days))
+ .getSunLongitude() / CalendarAstronomer::PI)) + 2 ) % 12;
if (term < 1) {
term += 12;
}
@@ -622,12 +649,13 @@ int32_t ChineseCalendar::majorSolarTerm(int32_t days) const {
/**
* Return true if the given month lacks a major solar term.
+ * @param timeZone time zone for the Astro calculation.
* @param newMoon days after January 1, 1970 0:00 Asia/Shanghai of a new
* moon
*/
-UBool ChineseCalendar::hasNoMajorSolarTerm(int32_t newMoon) const {
- return majorSolarTerm(newMoon) ==
- majorSolarTerm(newMoonNear(newMoon + SYNODIC_GAP, true));
+UBool hasNoMajorSolarTerm(const TimeZone* timeZone, int32_t newMoon) {
+ return majorSolarTerm(timeZone, newMoon) ==
+ majorSolarTerm(timeZone, newMoonNear(timeZone, newMoon + SYNODIC_GAP, true));
}
@@ -638,12 +666,13 @@ UBool ChineseCalendar::hasNoMajorSolarTerm(int32_t newMoon) const {
/**
* Return true if there is a leap month on or after month newMoon1 and
* at or before month newMoon2.
+ * @param timeZone time zone for the Astro calculation.
* @param newMoon1 days after January 1, 1970 0:00 astronomical base zone
* of a new moon
* @param newMoon2 days after January 1, 1970 0:00 astronomical base zone
* of a new moon
*/
-UBool ChineseCalendar::isLeapMonthBetween(int32_t newMoon1, int32_t newMoon2) const {
+UBool isLeapMonthBetween(const TimeZone* timeZone, int32_t newMoon1, int32_t newMoon2) {
#ifdef U_DEBUG_CHNSECAL
// This is only needed to debug the timeOfAngle divergence bug.
@@ -656,144 +685,201 @@ UBool ChineseCalendar::isLeapMonthBetween(int32_t newMoon1, int32_t newMoon2) co
#endif
while (newMoon2 >= newMoon1) {
- if (hasNoMajorSolarTerm(newMoon2)) {
+ if (hasNoMajorSolarTerm(timeZone, newMoon2)) {
return true;
}
- newMoon2 = newMoonNear(newMoon2 - SYNODIC_GAP, false);
+ newMoon2 = newMoonNear(timeZone, newMoon2 - SYNODIC_GAP, false);
}
return false;
}
+
/**
- * Compute fields for the Chinese calendar system. This method can
- * either set all relevant fields, as required by
- * <code>handleComputeFields()</code>, or it can just set the MONTH and
- * IS_LEAP_MONTH fields, as required by
- * <code>handleComputeMonthStart()</code>.
- *
- * <p>As a side effect, this method sets {@link #hasLeapMonthBetweenWinterSolstices}.
+ * Compute the information about the year.
+ * @param setting setting (time zone and caches) for the Astro calculation.
+ * @param gyear the Gregorian year of the given date
* @param days days after January 1, 1970 0:00 astronomical base zone
* of the date to compute fields for
- * @param gyear the Gregorian year of the given date
- * @param gmonth the Gregorian month of the given date
- * @param setAllFields if true, set the EXTENDED_YEAR, ERA, YEAR,
- * DAY_OF_MONTH, and DAY_OF_YEAR fields. In either case set the MONTH
- * and IS_LEAP_MONTH fields.
+ * @return The MonthInfo result.
*/
-void ChineseCalendar::computeChineseFields(int32_t days, int32_t gyear, int32_t gmonth,
- UBool setAllFields) {
+struct MonthInfo computeMonthInfo(
+ const icu::ChineseCalendar::Setting& setting,
+ int32_t gyear, int32_t days) {
+ struct MonthInfo output;
// Find the winter solstices before and after the target date.
// These define the boundaries of this Chinese year, specifically,
// the position of month 11, which always contains the solstice.
// We want solsticeBefore <= date < solsticeAfter.
int32_t solsticeBefore;
- int32_t solsticeAfter = winterSolstice(gyear);
+ int32_t solsticeAfter = winterSolstice(setting, gyear);
if (days < solsticeAfter) {
- solsticeBefore = winterSolstice(gyear - 1);
+ solsticeBefore = winterSolstice(setting, gyear - 1);
} else {
solsticeBefore = solsticeAfter;
- solsticeAfter = winterSolstice(gyear + 1);
+ solsticeAfter = winterSolstice(setting, gyear + 1);
}
+ const TimeZone* timeZone = setting.zoneAstroCalc;
// Find the start of the month after month 11. This will be either
// the prior month 12 or leap month 11 (very rare). Also find the
// start of the following month 11.
- int32_t firstMoon = newMoonNear(solsticeBefore + 1, true);
- int32_t lastMoon = newMoonNear(solsticeAfter + 1, false);
- int32_t thisMoon = newMoonNear(days + 1, false); // Start of this month
- // Note: hasLeapMonthBetweenWinterSolstices is a member variable
- hasLeapMonthBetweenWinterSolstices = synodicMonthsBetween(firstMoon, lastMoon) == 12;
-
- int32_t month = synodicMonthsBetween(firstMoon, thisMoon);
- int32_t theNewYear = newYear(gyear);
+ int32_t firstMoon = newMoonNear(timeZone, solsticeBefore + 1, true);
+ int32_t lastMoon = newMoonNear(timeZone, solsticeAfter + 1, false);
+ output.thisMoon = newMoonNear(timeZone, days + 1, false); // Start of this month
+ output.hasLeapMonthBetweenWinterSolstices = synodicMonthsBetween(firstMoon, lastMoon) == 12;
+
+ output.month = synodicMonthsBetween(firstMoon, output.thisMoon);
+ int32_t theNewYear = newYear(setting, gyear);
if (days < theNewYear) {
- theNewYear = newYear(gyear-1);
+ theNewYear = newYear(setting, gyear-1);
}
- if (hasLeapMonthBetweenWinterSolstices && isLeapMonthBetween(firstMoon, thisMoon)) {
- month--;
+ if (output.hasLeapMonthBetweenWinterSolstices &&
+ isLeapMonthBetween(timeZone, firstMoon, output.thisMoon)) {
+ output.month--;
}
- if (month < 1) {
- month += 12;
+ if (output.month < 1) {
+ output.month += 12;
}
- int32_t ordinalMonth = synodicMonthsBetween(theNewYear, thisMoon);
- if (ordinalMonth < 0) {
- ordinalMonth += 12;
+ output.ordinalMonth = synodicMonthsBetween(theNewYear, output.thisMoon);
+ if (output.ordinalMonth < 0) {
+ output.ordinalMonth += 12;
}
- UBool isLeapMonth = hasLeapMonthBetweenWinterSolstices &&
- hasNoMajorSolarTerm(thisMoon) &&
- !isLeapMonthBetween(firstMoon, newMoonNear(thisMoon - SYNODIC_GAP, false));
-
- internalSet(UCAL_MONTH, month-1); // Convert from 1-based to 0-based
- internalSet(UCAL_ORDINAL_MONTH, ordinalMonth); // Convert from 1-based to 0-based
- internalSet(UCAL_IS_LEAP_MONTH, isLeapMonth?1:0);
-
-
- if (setAllFields) {
+ output.isLeapMonth = output.hasLeapMonthBetweenWinterSolstices &&
+ hasNoMajorSolarTerm(timeZone, output.thisMoon) &&
+ !isLeapMonthBetween(timeZone, firstMoon,
+ newMoonNear(timeZone, output.thisMoon - SYNODIC_GAP, false));
+ return output;
+}
- // Extended year and cycle year is based on the epoch year
-
- int32_t extended_year = gyear - fEpochYear;
- int cycle_year = gyear - CHINESE_EPOCH_YEAR;
- if (month < 11 ||
- gmonth >= UCAL_JULY) {
- extended_year++;
- cycle_year++;
- }
- int32_t dayOfMonth = days - thisMoon + 1;
+} // namespace
- internalSet(UCAL_EXTENDED_YEAR, extended_year);
+/**
+ * Override Calendar to compute several fields specific to the Chinese
+ * calendar system. These are:
+ *
+ * <ul><li>ERA
+ * <li>YEAR
+ * <li>MONTH
+ * <li>DAY_OF_MONTH
+ * <li>DAY_OF_YEAR
+ * <li>EXTENDED_YEAR</ul>
+ *
+ * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
+ * method is called. The getGregorianXxx() methods return Gregorian
+ * calendar equivalents for the given Julian day.
+ *
+ * <p>Compute the ChineseCalendar-specific field IS_LEAP_MONTH.
+ * @stable ICU 2.8
+ */
+void ChineseCalendar::handleComputeFields(int32_t julianDay, UErrorCode & status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ int32_t days;
+ if (uprv_add32_overflow(julianDay, -kEpochStartAsJulianDay, &days)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ int32_t gyear = getGregorianYear();
+ int32_t gmonth = getGregorianMonth();
- // 0->0,60 1->1,1 60->1,60 61->2,1 etc.
- int32_t yearOfCycle;
- int32_t cycle = ClockMath::floorDivide(cycle_year - 1, 60, &yearOfCycle);
- internalSet(UCAL_ERA, cycle + 1);
- internalSet(UCAL_YEAR, yearOfCycle + 1);
+ const Setting setting = getSetting(status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ struct MonthInfo monthInfo = computeMonthInfo(setting, gyear, days);
+ hasLeapMonthBetweenWinterSolstices = monthInfo.hasLeapMonthBetweenWinterSolstices;
+
+ // Extended year and cycle year is based on the epoch year
+ int32_t eyear = gyear - setting.epochYear;
+ int32_t cycle_year = gyear - CHINESE_EPOCH_YEAR;
+ if (monthInfo.month < 11 ||
+ gmonth >= UCAL_JULY) {
+ eyear++;
+ cycle_year++;
+ }
+ int32_t dayOfMonth = days - monthInfo.thisMoon + 1;
- internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
+ // 0->0,60 1->1,1 60->1,60 61->2,1 etc.
+ int32_t yearOfCycle;
+ int32_t cycle = ClockMath::floorDivide(cycle_year - 1, 60, &yearOfCycle);
- // Days will be before the first new year we compute if this
- // date is in month 11, leap 11, 12. There is never a leap 12.
- // New year computations are cached so this should be cheap in
- // the long run.
- int32_t theNewYear = newYear(gyear);
- if (days < theNewYear) {
- theNewYear = newYear(gyear-1);
+ // Days will be before the first new year we compute if this
+ // date is in month 11, leap 11, 12. There is never a leap 12.
+ // New year computations are cached so this should be cheap in
+ // the long run.
+ int32_t theNewYear = newYear(setting, gyear);
+ if (days < theNewYear) {
+ theNewYear = newYear(setting, gyear-1);
+ }
+ cycle++;
+ yearOfCycle++;
+ int32_t dayOfYear = days - theNewYear + 1;
+
+ int32_t minYear = this->handleGetLimit(UCAL_EXTENDED_YEAR, UCAL_LIMIT_MINIMUM);
+ if (eyear < minYear) {
+ if (!isLenient()) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
- internalSet(UCAL_DAY_OF_YEAR, days - theNewYear + 1);
+ eyear = minYear;
+ }
+ int32_t maxYear = this->handleGetLimit(UCAL_EXTENDED_YEAR, UCAL_LIMIT_MAXIMUM);
+ if (maxYear < eyear) {
+ if (!isLenient()) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ eyear = maxYear;
}
-}
+ internalSet(UCAL_MONTH, monthInfo.month-1); // Convert from 1-based to 0-based
+ internalSet(UCAL_ORDINAL_MONTH, monthInfo.ordinalMonth); // Convert from 1-based to 0-based
+ internalSet(UCAL_IS_LEAP_MONTH, monthInfo.isLeapMonth?1:0);
+
+ internalSet(UCAL_EXTENDED_YEAR, eyear);
+ internalSet(UCAL_ERA, cycle);
+ internalSet(UCAL_YEAR, yearOfCycle);
+ internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
+ internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
+}
//------------------------------------------------------------------
// Fields to time
//------------------------------------------------------------------
+namespace {
+
/**
* Return the Chinese new year of the given Gregorian year.
+ * @param setting setting (time zone and caches) for the Astro calculation.
* @param gyear a Gregorian year
* @return days after January 1, 1970 0:00 astronomical base zone of the
* Chinese new year of the given year (this will be a new moon)
*/
-int32_t ChineseCalendar::newYear(int32_t gyear) const {
+int32_t newYear(const icu::ChineseCalendar::Setting& setting,
+ int32_t gyear) {
+ const TimeZone* timeZone = setting.zoneAstroCalc;
UErrorCode status = U_ZERO_ERROR;
- int32_t cacheValue = CalendarCache::get(&gChineseCalendarNewYearCache, gyear, status);
+ int32_t cacheValue = CalendarCache::get(setting.newYearCache, gyear, status);
if (cacheValue == 0) {
- int32_t solsticeBefore= winterSolstice(gyear - 1);
- int32_t solsticeAfter = winterSolstice(gyear);
- int32_t newMoon1 = newMoonNear(solsticeBefore + 1, true);
- int32_t newMoon2 = newMoonNear(newMoon1 + SYNODIC_GAP, true);
- int32_t newMoon11 = newMoonNear(solsticeAfter + 1, false);
-
+ int32_t solsticeBefore= winterSolstice(setting, gyear - 1);
+ int32_t solsticeAfter = winterSolstice(setting, gyear);
+ int32_t newMoon1 = newMoonNear(timeZone, solsticeBefore + 1, true);
+ int32_t newMoon2 = newMoonNear(timeZone, newMoon1 + SYNODIC_GAP, true);
+ int32_t newMoon11 = newMoonNear(timeZone, solsticeAfter + 1, false);
+
if (synodicMonthsBetween(newMoon1, newMoon11) == 12 &&
- (hasNoMajorSolarTerm(newMoon1) || hasNoMajorSolarTerm(newMoon2))) {
- cacheValue = newMoonNear(newMoon2 + SYNODIC_GAP, true);
+ (hasNoMajorSolarTerm(timeZone, newMoon1) ||
+ hasNoMajorSolarTerm(timeZone, newMoon2))) {
+ cacheValue = newMoonNear(timeZone, newMoon2 + SYNODIC_GAP, true);
} else {
cacheValue = newMoon2;
}
- CalendarCache::put(&gChineseCalendarNewYearCache, gyear, cacheValue, status);
+ CalendarCache::put(setting.newYearCache, gyear, cacheValue, status);
}
if(U_FAILURE(status)) {
cacheValue = 0;
@@ -801,6 +887,8 @@ int32_t ChineseCalendar::newYear(int32_t gyear) const {
return cacheValue;
}
+} // namespace
+
/**
* Adjust this calendar to be delta months before or after a given
* start position, pinning the day of month if necessary. The start
@@ -808,13 +896,14 @@ int32_t ChineseCalendar::newYear(int32_t gyear) const {
* and a day-of-month. Used by add() and roll().
* @param newMoon the local days of the first day of the month of the
* start position (days after January 1, 1970 0:00 Asia/Shanghai)
- * @param dom the 1-based day-of-month of the start position
+ * @param dayOfMonth the 1-based day-of-month of the start position
* @param delta the number of months to move forward or backward from
* the start position
* @param status The status.
*/
-void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta,
+void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dayOfMonth, int32_t delta,
UErrorCode& status) {
+ const Setting setting = getSetting(status);
if (U_FAILURE(status)) { return; }
// Move to the middle of the month before our target month.
@@ -828,14 +917,14 @@ void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta,
newMoon = static_cast<int32_t>(value);
// Search forward to the target month's new moon
- newMoon = newMoonNear(newMoon, true);
+ newMoon = newMoonNear(setting.zoneAstroCalc, newMoon, true);
- // Find the target dom
- int32_t jd = newMoon + kEpochStartAsJulianDay - 1 + dom;
+ // Find the target dayOfMonth
+ int32_t jd = newMoon + kEpochStartAsJulianDay - 1 + dayOfMonth;
- // Pin the dom. In this calendar all months are 29 or 30 days
- // so pinning just means handling dom 30.
- if (dom > 29) {
+ // Pin the dayOfMonth. In this calendar all months are 29 or 30 days
+ // so pinning just means handling dayOfMonth 30.
+ if (dayOfMonth > 29) {
set(UCAL_JULIAN_DAY, jd-1);
// TODO Fix this. We really shouldn't ever have to
// explicitly call complete(). This is either a bug in
@@ -843,7 +932,7 @@ void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta,
// Calendar.getActualMaximum(). I suspect the last.
complete(status);
if (U_FAILURE(status)) return;
- if (getActualMaximum(UCAL_DAY_OF_MONTH, status) >= dom) {
+ if (getActualMaximum(UCAL_DAY_OF_MONTH, status) >= dayOfMonth) {
if (U_FAILURE(status)) return;
set(UCAL_JULIAN_DAY, jd);
}
@@ -860,7 +949,11 @@ int32_t ChineseCalendar::getRelatedYear(UErrorCode &status) const
if (U_FAILURE(status)) {
return 0;
}
- return year + kChineseRelatedYearDiff;
+ if (uprv_add32_overflow(year, kChineseRelatedYearDiff, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return year;
}
void ChineseCalendar::setRelatedYear(int32_t year)
@@ -869,60 +962,7 @@ void ChineseCalendar::setRelatedYear(int32_t year)
set(UCAL_EXTENDED_YEAR, year - kChineseRelatedYearDiff);
}
-// default century
-
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInitOnce {};
-
-
-UBool ChineseCalendar::haveDefaultCentury() const
-{
- return true;
-}
-
-UDate ChineseCalendar::defaultCenturyStart() const
-{
- return internalGetDefaultCenturyStart();
-}
-
-int32_t ChineseCalendar::defaultCenturyStartYear() const
-{
- return internalGetDefaultCenturyStartYear();
-}
-
-static void U_CALLCONV initializeSystemDefaultCentury()
-{
- // initialize systemDefaultCentury and systemDefaultCenturyYear based
- // on the current time. They'll be set to 80 years before
- // the current time.
- UErrorCode status = U_ZERO_ERROR;
- ChineseCalendar calendar(Locale("@calendar=chinese"),status);
- if (U_SUCCESS(status)) {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
- gSystemDefaultCenturyStart = calendar.getTime(status);
- gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
- }
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
-}
-
-UDate
-ChineseCalendar::internalGetDefaultCenturyStart() const
-{
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInitOnce, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t
-ChineseCalendar::internalGetDefaultCenturyStartYear() const
-{
- // lazy-evaluate systemDefaultCenturyStartYear
- umtx_initOnce(gSystemDefaultCenturyInitOnce, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
+IMPL_SYSTEM_DEFAULT_CENTURY(ChineseCalendar, "@calendar=chinese")
bool
ChineseCalendar::inTemporalLeapYear(UErrorCode &status) const
@@ -972,7 +1012,10 @@ ChineseCalendar::setTemporalMonthCode(const char* code, UErrorCode& status )
status = U_ILLEGAL_ARGUMENT_ERROR;
}
-int32_t ChineseCalendar::internalGetMonth() const {
+int32_t ChineseCalendar::internalGetMonth(UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if (resolveFields(kMonthPrecedence) == UCAL_MONTH) {
return internalGet(UCAL_MONTH);
}
@@ -982,24 +1025,38 @@ int32_t ChineseCalendar::internalGetMonth() const {
temp->set(UCAL_DATE, 1);
// Calculate the UCAL_MONTH and UCAL_IS_LEAP_MONTH by adding number of
// months.
- UErrorCode status = U_ZERO_ERROR;
temp->roll(UCAL_MONTH, internalGet(UCAL_ORDINAL_MONTH), status);
- U_ASSERT(U_SUCCESS(status));
+ if (U_FAILURE(status)) {
+ return 0;
+ }
ChineseCalendar *nonConstThis = (ChineseCalendar*)this; // cast away const
nonConstThis->internalSet(UCAL_IS_LEAP_MONTH, temp->get(UCAL_IS_LEAP_MONTH, status));
- U_ASSERT(U_SUCCESS(status));
int32_t month = temp->get(UCAL_MONTH, status);
- U_ASSERT(U_SUCCESS(status));
+ if (U_FAILURE(status)) {
+ return 0;
+ }
nonConstThis->internalSet(UCAL_MONTH, month);
return month;
}
-int32_t ChineseCalendar::internalGetMonth(int32_t defaultValue) const {
+int32_t ChineseCalendar::internalGetMonth(int32_t defaultValue, UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if (resolveFields(kMonthPrecedence) == UCAL_MONTH) {
return internalGet(UCAL_MONTH, defaultValue);
}
- return internalGetMonth();
+ return internalGetMonth(status);
+}
+
+ChineseCalendar::Setting ChineseCalendar::getSetting(UErrorCode&) const {
+ return {
+ CHINESE_EPOCH_YEAR,
+ getAstronomerTimeZone(),
+ &gWinterSolsticeCache,
+ &gNewYearCache
+ };
}
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/chnsecal.h b/icu4c/source/i18n/chnsecal.h
index e4910f6eb..41bd3557f 100644
--- a/icu4c/source/i18n/chnsecal.h
+++ b/icu4c/source/i18n/chnsecal.h
@@ -27,6 +27,7 @@
U_NAMESPACE_BEGIN
+class CalendarCache;
/**
* <code>ChineseCalendar</code> is a concrete subclass of {@link Calendar}
* that implements a traditional Chinese calendar. The traditional Chinese
@@ -152,23 +153,6 @@ class U_I18N_API ChineseCalendar : public Calendar {
*/
virtual void setTemporalMonthCode(const char* code, UErrorCode& status) override;
- protected:
-
- /**
- * Constructs a ChineseCalendar based on the current time in the default time zone
- * with the given locale, using the specified epoch year and time zone for
- * astronomical calculations.
- *
- * @param aLocale The given locale.
- * @param epochYear The epoch year to use for calculation.
- * @param zoneAstroCalc The TimeZone to use for astronomical calculations. If null,
- * will be set appropriately for Chinese calendar (UTC + 8:00).
- * @param success Indicates the status of ChineseCalendar object construction;
- * if successful, will not be changed to an error value.
- * @internal
- */
- ChineseCalendar(const Locale& aLocale, int32_t epochYear, const TimeZone* zoneAstroCalc, UErrorCode &success);
-
public:
/**
* Copy Constructor
@@ -197,9 +181,6 @@ class U_I18N_API ChineseCalendar : public Calendar {
// this value could be false for a date prior to the Winter Solstice of that
// year but that year still has a leap month and therefor is a leap year.
UBool hasLeapMonthBetweenWinterSolstices;
- int32_t fEpochYear; // Start year of this Chinese calendar instance.
- const TimeZone* fZoneAstroCalc; // Zone used for the astronomical calculation
- // of this Chinese calendar instance.
//----------------------------------------------------------------------
// Calendar framework
@@ -207,9 +188,9 @@ class U_I18N_API ChineseCalendar : public Calendar {
protected:
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
virtual const UFieldResolutionTable* getFieldResolutionTable() const override;
@@ -241,19 +222,7 @@ class U_I18N_API ChineseCalendar : public Calendar {
static const UFieldResolutionTable CHINESE_DATE_PRECEDENCE[];
- double daysToMillis(double days) const;
- double millisToDays(double millis) const;
- virtual int32_t winterSolstice(int32_t gyear) const;
- virtual int32_t newMoonNear(double days, UBool after) const;
- virtual int32_t synodicMonthsBetween(int32_t day1, int32_t day2) const;
- virtual int32_t majorSolarTerm(int32_t days) const;
- virtual UBool hasNoMajorSolarTerm(int32_t newMoon) const;
- virtual UBool isLeapMonthBetween(int32_t newMoon1, int32_t newMoon2) const;
- virtual void computeChineseFields(int32_t days, int32_t gyear,
- int32_t gmonth, UBool setAllFields);
- virtual int32_t newYear(int32_t gyear) const;
virtual void offsetMonth(int32_t newMoon, int32_t dom, int32_t delta, UErrorCode& status);
- const TimeZone* getChineseCalZoneAstroCalc() const;
// UObject stuff
public:
@@ -285,46 +254,29 @@ class U_I18N_API ChineseCalendar : public Calendar {
*/
virtual const char * getType() const override;
+ struct Setting {
+ int32_t epochYear;
+ const TimeZone* zoneAstroCalc;
+ CalendarCache** winterSolsticeCache;
+ CalendarCache** newYearCache;
+ };
protected:
- virtual int32_t internalGetMonth(int32_t defaultValue) const override;
+ virtual Setting getSetting(UErrorCode& status) const;
+ virtual int32_t internalGetMonth(int32_t defaultValue, UErrorCode& status) const override;
- virtual int32_t internalGetMonth() const override;
+ virtual int32_t internalGetMonth(UErrorCode& status) const override;
protected:
- /**
- * Returns true because the Islamic Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
private: // default century stuff.
- /**
- * Returns the beginning date of the 100-year window that dates
- * with 2-digit years are considered to fall within.
- */
- UDate internalGetDefaultCenturyStart() const;
-
- /**
- * Returns the first year of the 100-year window that dates with
- * 2-digit years are considered to fall within.
- */
- int32_t internalGetDefaultCenturyStartYear() const;
-
ChineseCalendar() = delete; // default constructor not implemented
+
+#ifdef __CalendarTest__
+ friend void CalendarTest::TestChineseCalendarComputeMonthStart();
+#endif
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/coll.cpp b/icu4c/source/i18n/coll.cpp
index ced55c8db..c83b29043 100644
--- a/icu4c/source/i18n/coll.cpp
+++ b/icu4c/source/i18n/coll.cpp
@@ -261,7 +261,7 @@ static UBool isAvailableLocaleListInitialized(UErrorCode &status) {
namespace {
-static const struct {
+const struct {
const char *name;
UColAttribute attr;
} collAttributes[] = {
@@ -274,7 +274,7 @@ static const struct {
{ "colNumeric", UCOL_NUMERIC_COLLATION }
};
-static const struct {
+const struct {
const char *name;
UColAttributeValue value;
} collAttributeValues[] = {
@@ -292,7 +292,7 @@ static const struct {
{ "upper", UCOL_UPPER_FIRST }
};
-static const char *collReorderCodes[UCOL_REORDER_CODE_LIMIT - UCOL_REORDER_CODE_FIRST] = {
+const char* collReorderCodes[UCOL_REORDER_CODE_LIMIT - UCOL_REORDER_CODE_FIRST] = {
"space", "punct", "symbol", "currency", "digit"
};
@@ -431,7 +431,7 @@ Collator* U_EXPORT2 Collator::createInstance(const Locale& desiredLocale,
UErrorCode& status)
{
if (U_FAILURE(status))
- return 0;
+ return nullptr;
if (desiredLocale.isBogus()) {
// Locale constructed from malformed locale ID or language tag.
status = U_ILLEGAL_ARGUMENT_ERROR;
diff --git a/icu4c/source/i18n/collationbuilder.cpp b/icu4c/source/i18n/collationbuilder.cpp
index 3da74cc48..b243992cc 100644
--- a/icu4c/source/i18n/collationbuilder.cpp
+++ b/icu4c/source/i18n/collationbuilder.cpp
@@ -1119,9 +1119,9 @@ CollationBuilder::addWithClosure(const UnicodeString &nfdPrefix, const UnicodeSt
// Please let us know if you have a reasonable use case that needed
// for a practical Collation rule that needs to increase this limit.
// This value is needed for compiling a rule with eight Hangul syllables such as
-// "&a=b쫊쫊쫊쫊쫊쫊쫊쫊" without error, which should be more than realistic
+// "&a=b쫊쫊쫊쫊쫊쫊쫊" without error, which should be more than realistic
// usage.
-static constexpr int32_t kClosureLoopLimit = 6560;
+static constexpr int32_t kClosureLoopLimit = 3000;
uint32_t
CollationBuilder::addOnlyClosure(const UnicodeString &nfdPrefix, const UnicodeString &nfdString,
diff --git a/icu4c/source/i18n/collationroot.cpp b/icu4c/source/i18n/collationroot.cpp
index 99686345f..25243b34d 100644
--- a/icu4c/source/i18n/collationroot.cpp
+++ b/icu4c/source/i18n/collationroot.cpp
@@ -33,8 +33,8 @@ U_NAMESPACE_BEGIN
namespace {
-static const CollationCacheEntry *rootSingleton = nullptr;
-static UInitOnce initOnce {};
+const CollationCacheEntry *rootSingleton = nullptr;
+UInitOnce initOnce{};
} // namespace
diff --git a/icu4c/source/i18n/collationruleparser.cpp b/icu4c/source/i18n/collationruleparser.cpp
index ba740e8d1..def5ea096 100644
--- a/icu4c/source/i18n/collationruleparser.cpp
+++ b/icu4c/source/i18n/collationruleparser.cpp
@@ -24,7 +24,6 @@
#include "unicode/uloc.h"
#include "unicode/unistr.h"
#include "unicode/utf16.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "collation.h"
@@ -42,7 +41,7 @@ U_NAMESPACE_BEGIN
namespace {
-static const char16_t BEFORE[] = { 0x5b, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0 }; // "[before"
+const char16_t BEFORE[] = { 0x5b, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0 }; // "[before"
const int32_t BEFORE_LENGTH = 7;
} // namespace
@@ -439,7 +438,7 @@ CollationRuleParser::parseString(int32_t i, UnicodeString &raw, UErrorCode &erro
namespace {
-static const char *const positions[] = {
+const char* const positions[] = {
"first tertiary ignorable",
"last tertiary ignorable",
"first secondary ignorable",
@@ -606,12 +605,8 @@ CollationRuleParser::parseSetting(UErrorCode &errorCode) {
lang.appendInvariantChars(v, errorCode);
if(errorCode == U_MEMORY_ALLOCATION_ERROR) { return; }
// BCP 47 language tag -> ICU locale ID
- CharString localeID;
int32_t parsedLength;
- {
- CharStringByteSink sink(&localeID);
- ulocimp_forLanguageTag(lang.data(), -1, sink, &parsedLength, &errorCode);
- }
+ CharString localeID = ulocimp_forLanguageTag(lang.data(), -1, &parsedLength, errorCode);
if(U_FAILURE(errorCode) || parsedLength != lang.length()) {
errorCode = U_ZERO_ERROR;
setParseError("expected language tag in [import langTag]", errorCode);
@@ -632,11 +627,7 @@ CollationRuleParser::parseSetting(UErrorCode &errorCode) {
uprv_memcpy(baseID, "und", 3);
}
// @collation=type, or length=0 if not specified
- CharString collationType;
- {
- CharStringByteSink sink(&collationType);
- ulocimp_getKeywordValue(localeID.data(), "collation", sink, &errorCode);
- }
+ CharString collationType = ulocimp_getKeywordValue(localeID.data(), "collation", errorCode);
if(U_FAILURE(errorCode)) {
errorCode = U_ZERO_ERROR;
setParseError("expected language tag in [import langTag]", errorCode);
diff --git a/icu4c/source/i18n/coptccal.cpp b/icu4c/source/i18n/coptccal.cpp
index a957f8f2c..343bcbc32 100644
--- a/icu4c/source/i18n/coptccal.cpp
+++ b/icu4c/source/i18n/coptccal.cpp
@@ -11,6 +11,7 @@
#if !UCONFIG_NO_FORMATTING
+#include "gregoimp.h"
#include "umutex.h"
#include "coptccal.h"
#include "cecal.h"
@@ -57,21 +58,24 @@ CopticCalendar::getType() const
//-------------------------------------------------------------------------
int32_t
-CopticCalendar::handleGetExtendedYear()
+CopticCalendar::handleGetExtendedYear(UErrorCode& status)
{
- int32_t eyear;
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
- eyear = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
- } else {
- // The year defaults to the epoch start, the era to CE
- int32_t era = internalGet(UCAL_ERA, CE);
- if (era == BCE) {
- eyear = 1 - internalGet(UCAL_YEAR, 1); // Convert to extended year
- } else {
- eyear = internalGet(UCAL_YEAR, 1); // Default to year 1
- }
+ return internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
+ }
+ // The year defaults to the epoch start, the era to CE
+ int32_t era = internalGet(UCAL_ERA, CE);
+ if (era == BCE) {
+ return 1 - internalGet(UCAL_YEAR, 1); // Convert to extended year
+ }
+ if (era == CE){
+ return internalGet(UCAL_YEAR, 1); // Default to year 1
}
- return eyear;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
}
void
@@ -114,45 +118,7 @@ void CopticCalendar::setRelatedYear(int32_t year)
set(UCAL_EXTENDED_YEAR, year - kCopticRelatedYearDiff);
}
-/**
- * The system maintains a static default century start date and Year. They are
- * initialized the first time they are used. Once the system default century date
- * and year are set, they do not change.
- */
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInit {};
-
-
-static void U_CALLCONV initializeSystemDefaultCentury() {
- UErrorCode status = U_ZERO_ERROR;
- CopticCalendar calendar(Locale("@calendar=coptic"), status);
- if (U_SUCCESS(status)) {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
- gSystemDefaultCenturyStart = calendar.getTime(status);
- gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
- }
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
-}
-
-UDate
-CopticCalendar::defaultCenturyStart() const
-{
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t
-CopticCalendar::defaultCenturyStartYear() const
-{
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
-
+IMPL_SYSTEM_DEFAULT_CENTURY(CopticCalendar, "@calendar=coptic")
int32_t
CopticCalendar::getJDEpochOffset() const
@@ -161,21 +127,6 @@ CopticCalendar::getJDEpochOffset() const
}
-#if 0
-// We do not want to introduce this API in ICU4C.
-// It was accidentally introduced in ICU4J as a public API.
-
-//-------------------------------------------------------------------------
-// Calendar system Conversion methods...
-//-------------------------------------------------------------------------
-
-int32_t
-CopticCalendar::copticToJD(int32_t year, int32_t month, int32_t day)
-{
- return CECalendar::ceToJD(year, month, day, COPTIC_JD_EPOCH_OFFSET);
-}
-#endif
-
U_NAMESPACE_END
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/coptccal.h b/icu4c/source/i18n/coptccal.h
index 396127e8a..587bf37d0 100644
--- a/icu4c/source/i18n/coptccal.h
+++ b/icu4c/source/i18n/coptccal.h
@@ -177,7 +177,7 @@ protected:
* Return the extended year defined by the current fields.
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Compute fields from the JD
@@ -185,18 +185,7 @@ protected:
*/
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
/**
* Return the date offset from Julian
@@ -204,7 +193,7 @@ protected:
*/
virtual int32_t getJDEpochOffset() const override;
-
+ virtual bool isEra0CountingBackward() const override { return true; }
public:
/**
* Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual
diff --git a/icu4c/source/i18n/cpdtrans.cpp b/icu4c/source/i18n/cpdtrans.cpp
index 9b1036468..c419153e4 100644
--- a/icu4c/source/i18n/cpdtrans.cpp
+++ b/icu4c/source/i18n/cpdtrans.cpp
@@ -53,7 +53,7 @@ CompoundTransliterator::CompoundTransliterator(
int32_t transliteratorCount,
UnicodeFilter* adoptedFilter) :
Transliterator(joinIDs(transliterators, transliteratorCount), adoptedFilter),
- trans(0), count(0), numAnonymousRBTs(0) {
+ trans(nullptr), count(0), numAnonymousRBTs(0) {
setTransliterators(transliterators, transliteratorCount);
}
@@ -70,7 +70,7 @@ CompoundTransliterator::CompoundTransliterator(const UnicodeString& id,
UParseError& /*parseError*/,
UErrorCode& status) :
Transliterator(id, adoptedFilter),
- trans(0), numAnonymousRBTs(0) {
+ trans(nullptr), numAnonymousRBTs(0) {
// TODO add code for parseError...currently unused, but
// later may be used by parsing code...
init(id, direction, true, status);
@@ -79,8 +79,8 @@ CompoundTransliterator::CompoundTransliterator(const UnicodeString& id,
CompoundTransliterator::CompoundTransliterator(const UnicodeString& id,
UParseError& /*parseError*/,
UErrorCode& status) :
- Transliterator(id, 0), // set filter to 0 here!
- trans(0), numAnonymousRBTs(0) {
+ Transliterator(id, nullptr), // set filter to 0 here!
+ trans(nullptr), numAnonymousRBTs(0) {
// TODO add code for parseError...currently unused, but
// later may be used by parsing code...
init(id, UTRANS_FORWARD, true, status);
@@ -97,7 +97,7 @@ CompoundTransliterator::CompoundTransliterator(const UnicodeString& newID,
UParseError& /*parseError*/,
UErrorCode& status) :
Transliterator(newID, adoptedFilter),
- trans(0), numAnonymousRBTs(anonymousRBTs)
+ trans(nullptr), numAnonymousRBTs(anonymousRBTs)
{
init(list, UTRANS_FORWARD, false, status);
}
@@ -111,7 +111,7 @@ CompoundTransliterator::CompoundTransliterator(UVector& list,
UParseError& /*parseError*/,
UErrorCode& status) :
Transliterator(UnicodeString(), nullptr),
- trans(0), numAnonymousRBTs(0)
+ trans(nullptr), numAnonymousRBTs(0)
{
// TODO add code for parseError...currently unused, but
// later may be used by parsing code...
@@ -124,7 +124,7 @@ CompoundTransliterator::CompoundTransliterator(UVector& list,
UParseError& /*parseError*/,
UErrorCode& status) :
Transliterator(UnicodeString(), nullptr),
- trans(0), numAnonymousRBTs(anonymousRBTs)
+ trans(nullptr), numAnonymousRBTs(anonymousRBTs)
{
init(list, UTRANS_FORWARD, false, status);
}
@@ -198,13 +198,13 @@ void CompoundTransliterator::init(UVector& list,
count = list.size();
trans = (Transliterator **)uprv_malloc(count * sizeof(Transliterator *));
/* test for nullptr */
- if (trans == 0) {
+ if (trans == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
}
- if (U_FAILURE(status) || trans == 0) {
+ if (U_FAILURE(status) || trans == nullptr) {
// assert(trans == 0);
return;
}
@@ -254,7 +254,7 @@ UnicodeString CompoundTransliterator::joinIDs(Transliterator* const transliterat
* Copy constructor.
*/
CompoundTransliterator::CompoundTransliterator(const CompoundTransliterator& t) :
- Transliterator(t), trans(0), count(0), numAnonymousRBTs(-1) {
+ Transliterator(t), trans(nullptr), count(0), numAnonymousRBTs(-1) {
*this = t;
}
@@ -266,13 +266,13 @@ CompoundTransliterator::~CompoundTransliterator() {
}
void CompoundTransliterator::freeTransliterators() {
- if (trans != 0) {
+ if (trans != nullptr) {
for (int32_t i=0; i<count; ++i) {
delete trans[i];
}
uprv_free(trans);
}
- trans = 0;
+ trans = nullptr;
count = 0;
}
@@ -289,7 +289,7 @@ CompoundTransliterator& CompoundTransliterator::operator=(
if (trans != nullptr) {
for (i=0; i<count; ++i) {
delete trans[i];
- trans[i] = 0;
+ trans[i] = nullptr;
}
}
if (t.count > count) {
diff --git a/icu4c/source/i18n/cpdtrans.h b/icu4c/source/i18n/cpdtrans.h
index a27c617c9..b01c2df6a 100644
--- a/icu4c/source/i18n/cpdtrans.h
+++ b/icu4c/source/i18n/cpdtrans.h
@@ -63,7 +63,7 @@ public:
*/
CompoundTransliterator(Transliterator* const transliterators[],
int32_t transliteratorCount,
- UnicodeFilter* adoptedFilter = 0);
+ UnicodeFilter* adoptedFilter = nullptr);
/**
* Constructs a new compound transliterator.
diff --git a/icu4c/source/i18n/csdetect.cpp b/icu4c/source/i18n/csdetect.cpp
index 16004f9f5..158014351 100644
--- a/icu4c/source/i18n/csdetect.cpp
+++ b/icu4c/source/i18n/csdetect.cpp
@@ -443,20 +443,20 @@ UEnumeration * CharsetDetector::getAllDetectableCharsets(UErrorCode &status)
setRecognizers(status);
if(U_FAILURE(status)) {
- return 0;
+ return nullptr;
}
UEnumeration *en = NEW_ARRAY(UEnumeration, 1);
if (en == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
memcpy(en, &gCSDetEnumeration, sizeof(UEnumeration));
en->context = (void*)NEW_ARRAY(Context, 1);
if (en->context == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
DELETE_ARRAY(en);
- return 0;
+ return nullptr;
}
uprv_memset(en->context, 0, sizeof(Context));
((Context*)en->context)->all = true;
@@ -466,20 +466,20 @@ UEnumeration * CharsetDetector::getAllDetectableCharsets(UErrorCode &status)
UEnumeration * CharsetDetector::getDetectableCharsets(UErrorCode &status) const
{
if(U_FAILURE(status)) {
- return 0;
+ return nullptr;
}
UEnumeration *en = NEW_ARRAY(UEnumeration, 1);
if (en == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
memcpy(en, &gCSDetEnumeration, sizeof(UEnumeration));
en->context = (void*)NEW_ARRAY(Context, 1);
if (en->context == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
DELETE_ARRAY(en);
- return 0;
+ return nullptr;
}
uprv_memset(en->context, 0, sizeof(Context));
((Context*)en->context)->all = false;
diff --git a/icu4c/source/i18n/csrmbcs.cpp b/icu4c/source/i18n/csrmbcs.cpp
index ec346b5fb..a6bd1d3a1 100644
--- a/icu4c/source/i18n/csrmbcs.cpp
+++ b/icu4c/source/i18n/csrmbcs.cpp
@@ -162,7 +162,7 @@ int32_t CharsetRecog_mbcs::match_mbcs(InputText *det, const uint16_t commonChars
if (iter.charValue > 0xFF) {
doubleByteCharCount++;
- if (commonChars != 0) {
+ if (commonChars != nullptr) {
if (binarySearch(commonChars, commonCharsLen, static_cast<uint16_t>(iter.charValue)) >= 0){
commonCharCount += 1;
}
@@ -205,7 +205,7 @@ int32_t CharsetRecog_mbcs::match_mbcs(InputText *det, const uint16_t commonChars
return confidence;
}
- if (commonChars == 0) {
+ if (commonChars == nullptr) {
// We have no statistics on frequently occurring characters.
// Assess confidence purely on having a reasonable number of
// multi-byte characters (the more the better)
diff --git a/icu4c/source/i18n/dangical.cpp b/icu4c/source/i18n/dangical.cpp
index 2b340ee4b..e1cf62953 100644
--- a/icu4c/source/i18n/dangical.cpp
+++ b/icu4c/source/i18n/dangical.cpp
@@ -15,6 +15,7 @@
#if !UCONFIG_NO_FORMATTING
+#include "astro.h" // CalendarCache
#include "gregoimp.h" // Math
#include "uassert.h"
#include "ucln_in.h"
@@ -23,8 +24,13 @@
#include "unicode/tzrule.h"
// --- The cache --
-static icu::TimeZone *gDangiCalendarZoneAstroCalc = nullptr;
-static icu::UInitOnce gDangiCalendarInitOnce {};
+// Lazy Creation & Access synchronized by class CalendarCache with a mutex.
+static icu::CalendarCache *gWinterSolsticeCache = nullptr;
+static icu::CalendarCache *gNewYearCache = nullptr;
+
+// gAstronomerTimeZone
+static icu::TimeZone *gAstronomerTimeZone = nullptr;
+static icu::UInitOnce gAstronomerTimeZoneInitOnce {};
/**
* The start year of the Korean traditional calendar (Dan-gi) is the inaugural
@@ -34,11 +40,20 @@ static const int32_t DANGI_EPOCH_YEAR = -2332; // Gregorian year
U_CDECL_BEGIN
static UBool calendar_dangi_cleanup() {
- if (gDangiCalendarZoneAstroCalc) {
- delete gDangiCalendarZoneAstroCalc;
- gDangiCalendarZoneAstroCalc = nullptr;
+ if (gWinterSolsticeCache) {
+ delete gWinterSolsticeCache;
+ gWinterSolsticeCache = nullptr;
+ }
+ if (gNewYearCache) {
+ delete gNewYearCache;
+ gNewYearCache = nullptr;
+ }
+
+ if (gAstronomerTimeZone) {
+ delete gAstronomerTimeZone;
+ gAstronomerTimeZone = nullptr;
}
- gDangiCalendarInitOnce.reset();
+ gAstronomerTimeZoneInitOnce.reset();
return true;
}
U_CDECL_END
@@ -51,8 +66,10 @@ U_NAMESPACE_BEGIN
// Constructors...
//-------------------------------------------------------------------------
+const TimeZone* getAstronomerTimeZone(UErrorCode &status);
+
DangiCalendar::DangiCalendar(const Locale& aLocale, UErrorCode& success)
-: ChineseCalendar(aLocale, DANGI_EPOCH_YEAR, getDangiCalZoneAstroCalc(success), success)
+: ChineseCalendar(aLocale, success)
{
}
@@ -103,8 +120,8 @@ const char *DangiCalendar::getType() const {
* 1898-1911: GMT+8
* 1912- : GMT+9
*/
-static void U_CALLCONV initDangiCalZoneAstroCalc(UErrorCode &status) {
- U_ASSERT(gDangiCalendarZoneAstroCalc == nullptr);
+static void U_CALLCONV initAstronomerTimeZone(UErrorCode &status) {
+ U_ASSERT(gAstronomerTimeZone == nullptr);
const UDate millis1897[] = { (UDate)((1897 - 1970) * 365 * kOneDay) }; // some days of error is not a problem here
const UDate millis1898[] = { (UDate)((1898 - 1970) * 365 * kOneDay) }; // some days of error is not a problem here
const UDate millis1912[] = { (UDate)((1912 - 1970) * 365 * kOneDay) }; // this doesn't create an issue for 1911/12/20
@@ -120,25 +137,25 @@ static void U_CALLCONV initDangiCalZoneAstroCalc(UErrorCode &status) {
LocalPointer<TimeZoneRule> ruleFrom1912(new TimeArrayTimeZoneRule(
UnicodeString(u"Korean 1912-"), 9*kOneHour, 0, millis1912, 1, DateTimeRule::STANDARD_TIME), status);
- LocalPointer<RuleBasedTimeZone> dangiCalZoneAstroCalc(new RuleBasedTimeZone(
+ LocalPointer<RuleBasedTimeZone> zone(new RuleBasedTimeZone(
UnicodeString(u"KOREA_ZONE"), initialTimeZone.orphan()), status); // adopts initialTimeZone
if (U_FAILURE(status)) {
return;
}
- dangiCalZoneAstroCalc->addTransitionRule(rule1897.orphan(), status); // adopts rule1897
- dangiCalZoneAstroCalc->addTransitionRule(rule1898to1911.orphan(), status);
- dangiCalZoneAstroCalc->addTransitionRule(ruleFrom1912.orphan(), status);
- dangiCalZoneAstroCalc->complete(status);
+ zone->addTransitionRule(rule1897.orphan(), status); // adopts rule1897
+ zone->addTransitionRule(rule1898to1911.orphan(), status);
+ zone->addTransitionRule(ruleFrom1912.orphan(), status);
+ zone->complete(status);
if (U_SUCCESS(status)) {
- gDangiCalendarZoneAstroCalc = dangiCalZoneAstroCalc.orphan();
+ gAstronomerTimeZone = zone.orphan();
}
ucln_i18n_registerCleanup(UCLN_I18N_DANGI_CALENDAR, calendar_dangi_cleanup);
}
-const TimeZone* DangiCalendar::getDangiCalZoneAstroCalc(UErrorCode &status) const {
- umtx_initOnce(gDangiCalendarInitOnce, &initDangiCalZoneAstroCalc, status);
- return gDangiCalendarZoneAstroCalc;
+const TimeZone* getAstronomerTimeZone(UErrorCode &status) {
+ umtx_initOnce(gAstronomerTimeZoneInitOnce, &initAstronomerTimeZone, status);
+ return gAstronomerTimeZone;
}
constexpr uint32_t kDangiRelatedYearDiff = -2333;
@@ -149,7 +166,11 @@ int32_t DangiCalendar::getRelatedYear(UErrorCode &status) const
if (U_FAILURE(status)) {
return 0;
}
- return year + kDangiRelatedYearDiff;
+ if (uprv_add32_overflow(year, kDangiRelatedYearDiff, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return year;
}
void DangiCalendar::setRelatedYear(int32_t year)
@@ -158,6 +179,12 @@ void DangiCalendar::setRelatedYear(int32_t year)
set(UCAL_EXTENDED_YEAR, year - kDangiRelatedYearDiff);
}
+ChineseCalendar::Setting DangiCalendar::getSetting(UErrorCode& status) const {
+ return { DANGI_EPOCH_YEAR,
+ getAstronomerTimeZone(status),
+ &gWinterSolsticeCache, &gNewYearCache
+ };
+}
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(DangiCalendar)
diff --git a/icu4c/source/i18n/dangical.h b/icu4c/source/i18n/dangical.h
index 3e5b0bb85..bc96be2a3 100644
--- a/icu4c/source/i18n/dangical.h
+++ b/icu4c/source/i18n/dangical.h
@@ -88,8 +88,6 @@ class DangiCalendar : public ChineseCalendar {
private:
- const TimeZone* getDangiCalZoneAstroCalc(UErrorCode &status) const;
-
// UObject stuff
public:
/**
@@ -120,6 +118,8 @@ class DangiCalendar : public ChineseCalendar {
*/
const char * getType() const override;
+ protected:
+ virtual Setting getSetting(UErrorCode& status) const override;
private:
diff --git a/icu4c/source/i18n/datefmt.cpp b/icu4c/source/i18n/datefmt.cpp
index 029634e3d..c62201988 100644
--- a/icu4c/source/i18n/datefmt.cpp
+++ b/icu4c/source/i18n/datefmt.cpp
@@ -28,6 +28,7 @@
#include "unicode/smpdtfmt.h"
#include "unicode/dtptngen.h"
#include "unicode/udisplaycontext.h"
+#include "unicode/gregocal.h"
#include "reldtfmt.h"
#include "sharedobject.h"
#include "unifiedcache.h"
@@ -121,8 +122,8 @@ DateFmtBestPatternKey::~DateFmtBestPatternKey() { }
DateFormat::DateFormat()
-: fCalendar(0),
- fNumberFormat(0),
+: fCalendar(nullptr),
+ fNumberFormat(nullptr),
fCapitalizationContext(UDISPCTX_CAPITALIZATION_NONE)
{
}
@@ -131,8 +132,8 @@ DateFormat::DateFormat()
DateFormat::DateFormat(const DateFormat& other)
: Format(other),
- fCalendar(0),
- fNumberFormat(0),
+ fCalendar(nullptr),
+ fNumberFormat(nullptr),
fCapitalizationContext(UDISPCTX_CAPITALIZATION_NONE)
{
*this = other;
@@ -277,15 +278,25 @@ DateFormat::format(Calendar& /* unused cal */,
UnicodeString&
DateFormat::format(UDate date, UnicodeString& appendTo, FieldPosition& fieldPosition) const {
if (fCalendar != nullptr) {
- // Use a clone of our calendar instance
- Calendar* calClone = fCalendar->clone();
- if (calClone != nullptr) {
- UErrorCode ec = U_ZERO_ERROR;
- calClone->setTime(date, ec);
+ UErrorCode ec = U_ZERO_ERROR;
+ const auto* calType = fCalendar->getType();
+ // Avoid a heap allocation and corresponding free for the common case
+ if (uprv_strcmp(calType, "gregorian") == 0) {
+ GregorianCalendar cal(*static_cast<GregorianCalendar*>(fCalendar));
+ cal.setTime(date, ec);
if (U_SUCCESS(ec)) {
- format(*calClone, appendTo, fieldPosition);
+ format(cal, appendTo, fieldPosition);
+ }
+ } else {
+ // Use a clone of our calendar instance
+ Calendar *calClone = fCalendar->clone();
+ if (calClone != nullptr) {
+ calClone->setTime(date, ec);
+ if (U_SUCCESS(ec)) {
+ format(*calClone, appendTo, fieldPosition);
+ }
+ delete calClone;
}
- delete calClone;
}
}
return appendTo;
@@ -297,13 +308,24 @@ UnicodeString&
DateFormat::format(UDate date, UnicodeString& appendTo, FieldPositionIterator* posIter,
UErrorCode& status) const {
if (fCalendar != nullptr) {
- Calendar* calClone = fCalendar->clone();
- if (calClone != nullptr) {
- calClone->setTime(date, status);
- if (U_SUCCESS(status)) {
- format(*calClone, appendTo, posIter, status);
+ UErrorCode ec = U_ZERO_ERROR;
+ const auto* calType = fCalendar->getType();
+ // Avoid a heap allocation and corresponding free for the common case
+ if (uprv_strcmp(calType, "gregorian") == 0) {
+ GregorianCalendar cal(*static_cast<GregorianCalendar*>(fCalendar));
+ cal.setTime(date, ec);
+ if (U_SUCCESS(ec)) {
+ format(cal, appendTo, posIter, status);
+ }
+ } else {
+ Calendar* calClone = fCalendar->clone();
+ if (calClone != nullptr) {
+ calClone->setTime(date, status);
+ if (U_SUCCESS(status)) {
+ format(*calClone, appendTo, posIter, status);
+ }
+ delete calClone;
}
- delete calClone;
}
}
return appendTo;
@@ -430,13 +452,13 @@ DateFormat::getBestPattern(
UErrorCode &status) {
UnifiedCache *cache = UnifiedCache::getInstance(status);
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
DateFmtBestPatternKey key(locale, skeleton, status);
const DateFmtBestPattern *patternPtr = nullptr;
cache->get(key, patternPtr, status);
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
UnicodeString result(patternPtr->fPattern);
patternPtr->removeRef();
@@ -539,7 +561,7 @@ DateFormat::create(EStyle timeStyle, EStyle dateStyle, const Locale& locale)
// This should never really happen, because the preceding constructor
// should always succeed. If the resource data is unavailable, a last
// resort object should be returned.
- return 0;
+ return nullptr;
}
//----------------------------------------------------------------------
diff --git a/icu4c/source/i18n/dayperiodrules.cpp b/icu4c/source/i18n/dayperiodrules.cpp
index 294390cce..ea5e51eb9 100644
--- a/icu4c/source/i18n/dayperiodrules.cpp
+++ b/icu4c/source/i18n/dayperiodrules.cpp
@@ -14,7 +14,6 @@
#include "dayperiodrules.h"
#include "unicode/ures.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cstring.h"
#include "ucln_in.h"
@@ -361,9 +360,7 @@ const DayPeriodRules *DayPeriodRules::getInstance(const Locale &locale, UErrorCo
while (*name != '\0') {
ruleSetNum = uhash_geti(data->localeToRuleSetNumMap, name);
if (ruleSetNum == 0) {
- CharString parent;
- CharStringByteSink sink(&parent);
- ulocimp_getParent(name, sink, &errorCode);
+ CharString parent = ulocimp_getParent(name, errorCode);
if (parent.isEmpty()) {
// Saves a lookup in the hash table.
break;
diff --git a/icu4c/source/i18n/decNumber.cpp b/icu4c/source/i18n/decNumber.cpp
index 42da36dc4..e21ebfb04 100644
--- a/icu4c/source/i18n/decNumber.cpp
+++ b/icu4c/source/i18n/decNumber.cpp
@@ -3795,7 +3795,6 @@ static void decToString(const decNumber *dn, char *string, Flag eng) {
} /* cut */
}
*c='\0'; /* terminate the string (all paths) */
- return;
} /* decToString */
/* ------------------------------------------------------------------ */
@@ -6712,7 +6711,6 @@ static void decReverse(Unit *ulo, Unit *uhi) {
*ulo=*uhi;
*uhi=temp;
}
- return;
} /* decReverse */
/* ------------------------------------------------------------------ */
@@ -7079,7 +7077,6 @@ static void decSetCoeff(decNumber *dn, decContext *set, const Unit *lsu,
} /* not unit boundary */
if (*residue!=0) *status|=DEC_Inexact; /* record inexactitude */
- return;
} /* decSetCoeff */
/* ------------------------------------------------------------------ */
@@ -7378,7 +7375,6 @@ static void decFinalize(decNumber *dn, decContext *set, Int *residue,
}
dn->exponent-=shift; /* adjust the exponent to match */
*status|=DEC_Clamped; /* and record the dirty deed */
- return;
} /* decFinalize */
/* ------------------------------------------------------------------ */
@@ -7795,7 +7791,6 @@ static void decStatus(decNumber *dn, uInt status, decContext *set) {
}
}
uprv_decContextSetStatus(set, status); /* [may not return] */
- return;
} /* decStatus */
/* ------------------------------------------------------------------ */
diff --git a/icu4c/source/i18n/decimfmt.cpp b/icu4c/source/i18n/decimfmt.cpp
index 75906991d..36c44afe2 100644
--- a/icu4c/source/i18n/decimfmt.cpp
+++ b/icu4c/source/i18n/decimfmt.cpp
@@ -498,7 +498,7 @@ DecimalFormat* DecimalFormat::clone() const {
}
bool DecimalFormat::operator==(const Format& other) const {
- auto* otherDF = dynamic_cast<const DecimalFormat*>(&other);
+ const auto* otherDF = dynamic_cast<const DecimalFormat*>(&other);
if (otherDF == nullptr) {
return false;
}
diff --git a/icu4c/source/i18n/displayoptions.cpp b/icu4c/source/i18n/displayoptions.cpp
index bb49e6033..8c9dd1c47 100644
--- a/icu4c/source/i18n/displayoptions.cpp
+++ b/icu4c/source/i18n/displayoptions.cpp
@@ -11,7 +11,7 @@
U_NAMESPACE_BEGIN
-DisplayOptions::Builder DisplayOptions::builder() { return DisplayOptions::Builder(); }
+DisplayOptions::Builder DisplayOptions::builder() { return {}; }
DisplayOptions::Builder DisplayOptions::copyToBuilder() const { return Builder(*this); }
diff --git a/icu4c/source/i18n/double-conversion-cached-powers.cpp b/icu4c/source/i18n/double-conversion-cached-powers.cpp
index 3bc35c8aa..ad6ea9273 100644
--- a/icu4c/source/i18n/double-conversion-cached-powers.cpp
+++ b/icu4c/source/i18n/double-conversion-cached-powers.cpp
@@ -47,9 +47,7 @@
// ICU PATCH: Wrap in ICU namespace
U_NAMESPACE_BEGIN
-namespace double_conversion {
-
-namespace PowersOfTenCache {
+namespace double_conversion::PowersOfTenCache {
struct CachedPower {
uint64_t significand;
@@ -184,9 +182,7 @@ void GetCachedPowerForDecimalExponent(int requested_exponent,
DOUBLE_CONVERSION_ASSERT(requested_exponent < *found_exponent + kDecimalExponentDistance);
}
-} // namespace PowersOfTenCache
-
-} // namespace double_conversion
+} // namespace double_conversion::PowersOfTenCache
// ICU PATCH: Close ICU namespace
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/double-conversion-cached-powers.h b/icu4c/source/i18n/double-conversion-cached-powers.h
index ade27baef..78e70378d 100644
--- a/icu4c/source/i18n/double-conversion-cached-powers.h
+++ b/icu4c/source/i18n/double-conversion-cached-powers.h
@@ -44,9 +44,7 @@
// ICU PATCH: Wrap in ICU namespace
U_NAMESPACE_BEGIN
-namespace double_conversion {
-
-namespace PowersOfTenCache {
+namespace double_conversion::PowersOfTenCache {
// Not all powers of ten are cached. The decimal exponent of two neighboring
// cached numbers will differ by kDecimalExponentDistance.
@@ -71,9 +69,7 @@ namespace PowersOfTenCache {
DiyFp* power,
int* found_exponent);
-} // namespace PowersOfTenCache
-
-} // namespace double_conversion
+} // namespace double_conversion::PowersOfTenCache
// ICU PATCH: Close ICU namespace
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/dtfmtsym.cpp b/icu4c/source/i18n/dtfmtsym.cpp
index 943f6e21d..5d770eada 100644
--- a/icu4c/source/i18n/dtfmtsym.cpp
+++ b/icu4c/source/i18n/dtfmtsym.cpp
@@ -86,6 +86,33 @@ static const char16_t gPatternChars[] = {
0
};
+/**
+ * Map of each ASCII character to its corresponding index in the table above if
+ * it is a pattern character and -1 otherwise.
+ */
+static const int8_t gLookupPatternChars[] = {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ //
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ // ! " # $ % & ' ( ) * + , - . /
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+#if UDAT_HAS_PATTERN_CHAR_FOR_TIME_SEPARATOR
+ // 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1,
+#else
+ // 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+#endif
+ // @ A B C D E F G H I J K L M N O
+ -1, 22, 36, -1, 10, 9, 11, 0, 5, -1, -1, 16, 26, 2, -1, 31,
+ // P Q R S T U V W X Y Z [ \ ] ^ _
+ -1, 27, -1, 8, -1, 30, 29, 13, 32, 18, 23, -1, -1, -1, -1, -1,
+ // ` a b c d e f g h i j k l m n o
+ -1, 14, 35, 25, 3, 19, -1, 21, 15, -1, -1, 4, -1, 6, -1, -1,
+ // p q r s t u v w x y z { | } ~
+ -1, 28, 34, 7, -1, 20, 24, 12, 33, 1, 17, -1, -1, -1, -1, -1
+};
+
//------------------------------------------------------
// Strings of last resort. These are only used if we have no resource
// files. They aren't designed for actual use, just for backup.
@@ -891,9 +918,7 @@ DateFormatSymbols::setYearNames(const UnicodeString* yearNames, int32_t count,
DtContextType context, DtWidthType width)
{
if (context == FORMAT && width == ABBREVIATED) {
- if (fShortYearNames) {
- delete[] fShortYearNames;
- }
+ delete[] fShortYearNames;
fShortYearNames = newUnicodeStringArray(count);
uprv_arrayCopy(yearNames, fShortYearNames, count);
fShortYearNamesCount = count;
@@ -913,9 +938,7 @@ DateFormatSymbols::setZodiacNames(const UnicodeString* zodiacNames, int32_t coun
DtContextType context, DtWidthType width)
{
if (context == FORMAT && width == ABBREVIATED) {
- if (fShortZodiacNames) {
- delete[] fShortZodiacNames;
- }
+ delete[] fShortZodiacNames;
fShortZodiacNames = newUnicodeStringArray(count);
uprv_arrayCopy(zodiacNames, fShortZodiacNames, count);
fShortZodiacNamesCount = count;
@@ -928,8 +951,7 @@ void
DateFormatSymbols::setEras(const UnicodeString* erasArray, int32_t count)
{
// delete the old list if we own it
- if (fEras)
- delete[] fEras;
+ delete[] fEras;
// we always own the new list, which we create here (we duplicate rather
// than adopting the list passed in)
@@ -942,8 +964,7 @@ void
DateFormatSymbols::setEraNames(const UnicodeString* eraNamesArray, int32_t count)
{
// delete the old list if we own it
- if (fEraNames)
- delete[] fEraNames;
+ delete[] fEraNames;
// we always own the new list, which we create here (we duplicate rather
// than adopting the list passed in)
@@ -956,8 +977,7 @@ void
DateFormatSymbols::setNarrowEras(const UnicodeString* narrowErasArray, int32_t count)
{
// delete the old list if we own it
- if (fNarrowEras)
- delete[] fNarrowEras;
+ delete[] fNarrowEras;
// we always own the new list, which we create here (we duplicate rather
// than adopting the list passed in)
@@ -970,8 +990,7 @@ void
DateFormatSymbols::setMonths(const UnicodeString* monthsArray, int32_t count)
{
// delete the old list if we own it
- if (fMonths)
- delete[] fMonths;
+ delete[] fMonths;
// we always own the new list, which we create here (we duplicate rather
// than adopting the list passed in)
@@ -984,8 +1003,7 @@ void
DateFormatSymbols::setShortMonths(const UnicodeString* shortMonthsArray, int32_t count)
{
// delete the old list if we own it
- if (fShortMonths)
- delete[] fShortMonths;
+ delete[] fShortMonths;
// we always own the new list, which we create here (we duplicate rather
// than adopting the list passed in)
@@ -1005,22 +1023,19 @@ DateFormatSymbols::setMonths(const UnicodeString* monthsArray, int32_t count, Dt
case FORMAT :
switch (width) {
case WIDE :
- if (fMonths)
- delete[] fMonths;
+ delete[] fMonths;
fMonths = newUnicodeStringArray(count);
uprv_arrayCopy( monthsArray,fMonths,count);
fMonthsCount = count;
break;
case ABBREVIATED :
- if (fShortMonths)
- delete[] fShortMonths;
+ delete[] fShortMonths;
fShortMonths = newUnicodeStringArray(count);
uprv_arrayCopy( monthsArray,fShortMonths,count);
fShortMonthsCount = count;
break;
case NARROW :
- if (fNarrowMonths)
- delete[] fNarrowMonths;
+ delete[] fNarrowMonths;
fNarrowMonths = newUnicodeStringArray(count);
uprv_arrayCopy( monthsArray,fNarrowMonths,count);
fNarrowMonthsCount = count;
@@ -1032,22 +1047,19 @@ DateFormatSymbols::setMonths(const UnicodeString* monthsArray, int32_t count, Dt
case STANDALONE :
switch (width) {
case WIDE :
- if (fStandaloneMonths)
- delete[] fStandaloneMonths;
+ delete[] fStandaloneMonths;
fStandaloneMonths = newUnicodeStringArray(count);
uprv_arrayCopy( monthsArray,fStandaloneMonths,count);
fStandaloneMonthsCount = count;
break;
case ABBREVIATED :
- if (fStandaloneShortMonths)
- delete[] fStandaloneShortMonths;
+ delete[] fStandaloneShortMonths;
fStandaloneShortMonths = newUnicodeStringArray(count);
uprv_arrayCopy( monthsArray,fStandaloneShortMonths,count);
fStandaloneShortMonthsCount = count;
break;
case NARROW :
- if (fStandaloneNarrowMonths)
- delete[] fStandaloneNarrowMonths;
+ delete[] fStandaloneNarrowMonths;
fStandaloneNarrowMonths = newUnicodeStringArray(count);
uprv_arrayCopy( monthsArray,fStandaloneNarrowMonths,count);
fStandaloneNarrowMonthsCount = count;
@@ -1064,8 +1076,7 @@ DateFormatSymbols::setMonths(const UnicodeString* monthsArray, int32_t count, Dt
void DateFormatSymbols::setWeekdays(const UnicodeString* weekdaysArray, int32_t count)
{
// delete the old list if we own it
- if (fWeekdays)
- delete[] fWeekdays;
+ delete[] fWeekdays;
// we always own the new list, which we create here (we duplicate rather
// than adopting the list passed in)
@@ -1078,8 +1089,7 @@ void
DateFormatSymbols::setShortWeekdays(const UnicodeString* shortWeekdaysArray, int32_t count)
{
// delete the old list if we own it
- if (fShortWeekdays)
- delete[] fShortWeekdays;
+ delete[] fShortWeekdays;
// we always own the new list, which we create here (we duplicate rather
// than adopting the list passed in)
@@ -1099,29 +1109,25 @@ DateFormatSymbols::setWeekdays(const UnicodeString* weekdaysArray, int32_t count
case FORMAT :
switch (width) {
case WIDE :
- if (fWeekdays)
- delete[] fWeekdays;
+ delete[] fWeekdays;
fWeekdays = newUnicodeStringArray(count);
uprv_arrayCopy(weekdaysArray, fWeekdays, count);
fWeekdaysCount = count;
break;
case ABBREVIATED :
- if (fShortWeekdays)
- delete[] fShortWeekdays;
+ delete[] fShortWeekdays;
fShortWeekdays = newUnicodeStringArray(count);
uprv_arrayCopy(weekdaysArray, fShortWeekdays, count);
fShortWeekdaysCount = count;
break;
case SHORT :
- if (fShorterWeekdays)
- delete[] fShorterWeekdays;
+ delete[] fShorterWeekdays;
fShorterWeekdays = newUnicodeStringArray(count);
uprv_arrayCopy(weekdaysArray, fShorterWeekdays, count);
fShorterWeekdaysCount = count;
break;
case NARROW :
- if (fNarrowWeekdays)
- delete[] fNarrowWeekdays;
+ delete[] fNarrowWeekdays;
fNarrowWeekdays = newUnicodeStringArray(count);
uprv_arrayCopy(weekdaysArray, fNarrowWeekdays, count);
fNarrowWeekdaysCount = count;
@@ -1133,29 +1139,25 @@ DateFormatSymbols::setWeekdays(const UnicodeString* weekdaysArray, int32_t count
case STANDALONE :
switch (width) {
case WIDE :
- if (fStandaloneWeekdays)
- delete[] fStandaloneWeekdays;
+ delete[] fStandaloneWeekdays;
fStandaloneWeekdays = newUnicodeStringArray(count);
uprv_arrayCopy(weekdaysArray, fStandaloneWeekdays, count);
fStandaloneWeekdaysCount = count;
break;
case ABBREVIATED :
- if (fStandaloneShortWeekdays)
- delete[] fStandaloneShortWeekdays;
+ delete[] fStandaloneShortWeekdays;
fStandaloneShortWeekdays = newUnicodeStringArray(count);
uprv_arrayCopy(weekdaysArray, fStandaloneShortWeekdays, count);
fStandaloneShortWeekdaysCount = count;
break;
case SHORT :
- if (fStandaloneShorterWeekdays)
- delete[] fStandaloneShorterWeekdays;
+ delete[] fStandaloneShorterWeekdays;
fStandaloneShorterWeekdays = newUnicodeStringArray(count);
uprv_arrayCopy(weekdaysArray, fStandaloneShorterWeekdays, count);
fStandaloneShorterWeekdaysCount = count;
break;
case NARROW :
- if (fStandaloneNarrowWeekdays)
- delete[] fStandaloneNarrowWeekdays;
+ delete[] fStandaloneNarrowWeekdays;
fStandaloneNarrowWeekdays = newUnicodeStringArray(count);
uprv_arrayCopy(weekdaysArray, fStandaloneNarrowWeekdays, count);
fStandaloneNarrowWeekdaysCount = count;
@@ -1180,22 +1182,19 @@ DateFormatSymbols::setQuarters(const UnicodeString* quartersArray, int32_t count
case FORMAT :
switch (width) {
case WIDE :
- if (fQuarters)
- delete[] fQuarters;
+ delete[] fQuarters;
fQuarters = newUnicodeStringArray(count);
uprv_arrayCopy( quartersArray,fQuarters,count);
fQuartersCount = count;
break;
case ABBREVIATED :
- if (fShortQuarters)
- delete[] fShortQuarters;
+ delete[] fShortQuarters;
fShortQuarters = newUnicodeStringArray(count);
uprv_arrayCopy( quartersArray,fShortQuarters,count);
fShortQuartersCount = count;
break;
case NARROW :
- if (fNarrowQuarters)
- delete[] fNarrowQuarters;
+ delete[] fNarrowQuarters;
fNarrowQuarters = newUnicodeStringArray(count);
uprv_arrayCopy( quartersArray,fNarrowQuarters,count);
fNarrowQuartersCount = count;
@@ -1207,22 +1206,19 @@ DateFormatSymbols::setQuarters(const UnicodeString* quartersArray, int32_t count
case STANDALONE :
switch (width) {
case WIDE :
- if (fStandaloneQuarters)
- delete[] fStandaloneQuarters;
+ delete[] fStandaloneQuarters;
fStandaloneQuarters = newUnicodeStringArray(count);
uprv_arrayCopy( quartersArray,fStandaloneQuarters,count);
fStandaloneQuartersCount = count;
break;
case ABBREVIATED :
- if (fStandaloneShortQuarters)
- delete[] fStandaloneShortQuarters;
+ delete[] fStandaloneShortQuarters;
fStandaloneShortQuarters = newUnicodeStringArray(count);
uprv_arrayCopy( quartersArray,fStandaloneShortQuarters,count);
fStandaloneShortQuartersCount = count;
break;
case NARROW :
- if (fStandaloneNarrowQuarters)
- delete[] fStandaloneNarrowQuarters;
+ delete[] fStandaloneNarrowQuarters;
fStandaloneNarrowQuarters = newUnicodeStringArray(count);
uprv_arrayCopy( quartersArray,fStandaloneNarrowQuarters,count);
fStandaloneNarrowQuartersCount = count;
@@ -1240,7 +1236,7 @@ void
DateFormatSymbols::setAmPmStrings(const UnicodeString* amPmsArray, int32_t count)
{
// delete the old list if we own it
- if (fAmPms) delete[] fAmPms;
+ delete[] fAmPms;
// we always own the new list, which we create here (we duplicate rather
// than adopting the list passed in)
@@ -1326,7 +1322,7 @@ DateFormatSymbols::initZoneStringsArray() {
UDate now = Calendar::getNow();
UnicodeString tzDispName;
- while ((tzid = tzids->snext(status)) != 0) {
+ while ((tzid = tzids->snext(status)) != nullptr) {
if (U_FAILURE(status)) {
break;
}
@@ -1356,12 +1352,8 @@ DateFormatSymbols::initZoneStringsArray() {
}
}
- if (tzNames) {
- delete tzNames;
- }
- if (tzids) {
- delete tzids;
- }
+ delete tzNames;
+ delete tzids;
fLocaleZoneStrings = zarray;
fZoneStringsRowCount = rows;
@@ -1391,12 +1383,11 @@ DateFormatSymbols::getPatternUChars()
UDateFormatField U_EXPORT2
DateFormatSymbols::getPatternCharIndex(char16_t c) {
- const char16_t *p = u_strchr(gPatternChars, c);
- if (p == nullptr) {
+ if (c >= UPRV_LENGTHOF(gLookupPatternChars)) {
return UDAT_FIELD_COUNT;
- } else {
- return static_cast<UDateFormatField>(p - gPatternChars);
}
+ const auto idx = gLookupPatternChars[c];
+ return idx == -1 ? UDAT_FIELD_COUNT : static_cast<UDateFormatField>(idx);
}
static const uint64_t kNumericFieldsAlways =
@@ -1463,35 +1454,35 @@ DateFormatSymbols::setLocalPatternChars(const UnicodeString& newLocalPatternChar
namespace {
// Constants declarations
-static const char16_t kCalendarAliasPrefixUChar[] = {
+const char16_t kCalendarAliasPrefixUChar[] = {
SOLIDUS, CAP_L, CAP_O, CAP_C, CAP_A, CAP_L, CAP_E, SOLIDUS,
LOW_C, LOW_A, LOW_L, LOW_E, LOW_N, LOW_D, LOW_A, LOW_R, SOLIDUS
};
-static const char16_t kGregorianTagUChar[] = {
+const char16_t kGregorianTagUChar[] = {
LOW_G, LOW_R, LOW_E, LOW_G, LOW_O, LOW_R, LOW_I, LOW_A, LOW_N
};
-static const char16_t kVariantTagUChar[] = {
+const char16_t kVariantTagUChar[] = {
PERCENT, LOW_V, LOW_A, LOW_R, LOW_I, LOW_A, LOW_N, LOW_T
};
-static const char16_t kLeapTagUChar[] = {
+const char16_t kLeapTagUChar[] = {
LOW_L, LOW_E, LOW_A, LOW_P
};
-static const char16_t kCyclicNameSetsTagUChar[] = {
+const char16_t kCyclicNameSetsTagUChar[] = {
LOW_C, LOW_Y, LOW_C, LOW_L, LOW_I, LOW_C, CAP_N, LOW_A, LOW_M, LOW_E, CAP_S, LOW_E, LOW_T, LOW_S
};
-static const char16_t kYearsTagUChar[] = {
+const char16_t kYearsTagUChar[] = {
SOLIDUS, LOW_Y, LOW_E, LOW_A, LOW_R, LOW_S
};
-static const char16_t kZodiacsUChar[] = {
+const char16_t kZodiacsUChar[] = {
SOLIDUS, LOW_Z, LOW_O, LOW_D, LOW_I, LOW_A, LOW_C, LOW_S
};
-static const char16_t kDayPartsTagUChar[] = {
+const char16_t kDayPartsTagUChar[] = {
SOLIDUS, LOW_D, LOW_A, LOW_Y, CAP_P, LOW_A, LOW_R, LOW_T, LOW_S
};
-static const char16_t kFormatTagUChar[] = {
+const char16_t kFormatTagUChar[] = {
SOLIDUS, LOW_F, LOW_O, LOW_R, LOW_M, LOW_A, LOW_T
};
-static const char16_t kAbbrTagUChar[] = {
+const char16_t kAbbrTagUChar[] = {
SOLIDUS, LOW_A, LOW_B, LOW_B, LOW_R, LOW_E, LOW_V, LOW_I, LOW_A, LOW_T, LOW_E, LOW_D
};
@@ -2111,8 +2102,8 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
// Create a CalendarDataSink to process this data and the resource bundles
CalendarDataSink calendarSink(status);
- UResourceBundle *rb = ures_open(nullptr, locale.getBaseName(), &status);
- UResourceBundle *cb = ures_getByKey(rb, gCalendarTag, nullptr, &status);
+ LocalUResourceBundlePointer rb(ures_open(nullptr, locale.getBaseName(), &status));
+ LocalUResourceBundlePointer cb(ures_getByKey(rb.getAlias(), gCalendarTag, nullptr, &status));
if (U_FAILURE(status)) return;
@@ -2126,9 +2117,8 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
// Enumerate this calendar type. If the calendar is not found fallback to gregorian
UErrorCode oldStatus = status;
- UResourceBundle *ctb = ures_getByKeyWithFallback(cb, calendarTypeCArray, nullptr, &status);
+ LocalUResourceBundlePointer ctb(ures_getByKeyWithFallback(cb.getAlias(), calendarTypeCArray, nullptr, &status));
if (status == U_MISSING_RESOURCE_ERROR) {
- ures_close(ctb);
if (uprv_strcmp(calendarTypeCArray, gGregorianTag) != 0) {
calendarType.setTo(false, kGregorianTagUChar, UPRV_LENGTHOF(kGregorianTagUChar));
calendarSink.visitAllResources();
@@ -2139,8 +2129,7 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
}
calendarSink.preEnumerate(calendarType);
- ures_getAllItemsWithFallback(ctb, "", calendarSink, status);
- ures_close(ctb);
+ ures_getAllItemsWithFallback(ctb.getAlias(), "", calendarSink, status);
if (U_FAILURE(status)) break;
// Stop loading when gregorian was loaded
@@ -2211,15 +2200,16 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
// Load context transforms and capitalization
tempStatus = U_ZERO_ERROR;
- UResourceBundle *localeBundle = ures_open(nullptr, locale.getName(), &tempStatus);
+ LocalUResourceBundlePointer localeBundle(ures_open(nullptr, locale.getName(), &tempStatus));
if (U_SUCCESS(tempStatus)) {
- UResourceBundle *contextTransforms = ures_getByKeyWithFallback(localeBundle, gContextTransformsTag, nullptr, &tempStatus);
+ LocalUResourceBundlePointer contextTransforms(ures_getByKeyWithFallback(localeBundle.getAlias(), gContextTransformsTag, nullptr, &tempStatus));
if (U_SUCCESS(tempStatus)) {
- UResourceBundle *contextTransformUsage;
- while ( (contextTransformUsage = ures_getNextResource(contextTransforms, nullptr, &tempStatus)) != nullptr ) {
- const int32_t * intVector = ures_getIntVector(contextTransformUsage, &len, &status);
+ for (LocalUResourceBundlePointer contextTransformUsage;
+ contextTransformUsage.adoptInstead(ures_getNextResource(contextTransforms.getAlias(), nullptr, &tempStatus)),
+ contextTransformUsage.isValid();) {
+ const int32_t * intVector = ures_getIntVector(contextTransformUsage.getAlias(), &len, &status);
if (U_SUCCESS(tempStatus) && intVector != nullptr && len >= 2) {
- const char* usageType = ures_getKey(contextTransformUsage);
+ const char* usageType = ures_getKey(contextTransformUsage.getAlias());
if (usageType != nullptr) {
const ContextUsageTypeNameToEnumValue * typeMapPtr = contextUsageTypeMap;
int32_t compResult = 0;
@@ -2234,9 +2224,7 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
}
}
tempStatus = U_ZERO_ERROR;
- ures_close(contextTransformUsage);
}
- ures_close(contextTransforms);
}
tempStatus = U_ZERO_ERROR;
@@ -2247,7 +2235,7 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
// do nothing unless U_SUCCESS(tempStatus), so it's only necessary
// to check for errors once after all calls are made.
const LocalUResourceBundlePointer numberElementsData(ures_getByKeyWithFallback(
- localeBundle, gNumberElementsTag, nullptr, &tempStatus));
+ localeBundle.getAlias(), gNumberElementsTag, nullptr, &tempStatus));
const LocalUResourceBundlePointer nsNameData(ures_getByKeyWithFallback(
numberElementsData.getAlias(), numberingSystem->getName(), nullptr, &tempStatus));
const LocalUResourceBundlePointer symbolsData(ures_getByKeyWithFallback(
@@ -2259,7 +2247,6 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
}
}
- ures_close(localeBundle);
}
if (fTimeSeparator.isBogus()) {
@@ -2314,8 +2301,8 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
// if we make it to here, the resource data is cool, and we can get everything out
// of it that we need except for the time-zone and localized-pattern data, which
// are stored in a separate file
- locBased.setLocaleIDs(ures_getLocaleByType(cb, ULOC_VALID_LOCALE, &status),
- ures_getLocaleByType(cb, ULOC_ACTUAL_LOCALE, &status));
+ locBased.setLocaleIDs(ures_getLocaleByType(cb.getAlias(), ULOC_VALID_LOCALE, &status),
+ ures_getLocaleByType(cb.getAlias(), ULOC_ACTUAL_LOCALE, &status));
// Load eras
initField(&fEras, fErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesAbbrTag, status), status);
@@ -2537,10 +2524,6 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
fLocalPatternChars.setTo(true, gPatternChars, PATTERN_CHARS_LEN);
}
}
-
- // Close resources
- ures_close(cb);
- ures_close(rb);
}
Locale
diff --git a/icu4c/source/i18n/dtitvfmt.cpp b/icu4c/source/i18n/dtitvfmt.cpp
index 1e186c827..46e66014f 100644
--- a/icu4c/source/i18n/dtitvfmt.cpp
+++ b/icu4c/source/i18n/dtitvfmt.cpp
@@ -709,7 +709,7 @@ DateIntervalFormat::create(const Locale& locale,
} else if ( U_FAILURE(status) ) {
// safe to delete f, although nothing actually is saved
delete f;
- f = 0;
+ f = nullptr;
}
return f;
}
@@ -1480,7 +1480,7 @@ DateIntervalFormat::setIntervalPattern(UCalendarDateFields field,
// look for the best match skeleton, for example: "yMMM"
const UnicodeString* tmpBest = fInfo->getBestSkeleton(
*extendedBestSkeleton, differenceInfo);
- if ( tmpBest != 0 && differenceInfo != -1 ) {
+ if (tmpBest != nullptr && differenceInfo != -1) {
fInfo->getIntervalPattern(*tmpBest, field, pattern, status);
bestSkeleton = tmpBest;
}
diff --git a/icu4c/source/i18n/dtitvinf.cpp b/icu4c/source/i18n/dtitvinf.cpp
index c4b6bbcf4..8ebb2f70d 100644
--- a/icu4c/source/i18n/dtitvinf.cpp
+++ b/icu4c/source/i18n/dtitvinf.cpp
@@ -23,7 +23,6 @@
#include <iostream>
#endif
-#include "bytesinkutil.h"
#include "cmemory.h"
#include "cstring.h"
#include "unicode/msgfmt.h"
@@ -405,11 +404,7 @@ DateIntervalInfo::initializeData(const Locale& locale, UErrorCode& status)
"calendar", "calendar", locName, nullptr, false, &status);
localeWithCalendarKey[ULOC_LOCALE_IDENTIFIER_CAPACITY-1] = 0; // ensure null termination
// now get the calendar key value from that locale
- CharString calendarType;
- {
- CharStringByteSink sink(&calendarType);
- ulocimp_getKeywordValue(localeWithCalendarKey, "calendar", sink, &status);
- }
+ CharString calendarType = ulocimp_getKeywordValue(localeWithCalendarKey, "calendar", status);
if (U_SUCCESS(status)) {
calendarTypeToUse = calendarType.data();
}
diff --git a/icu4c/source/i18n/dtptngen.cpp b/icu4c/source/i18n/dtptngen.cpp
index aa23b7cd4..4fe00a23e 100644
--- a/icu4c/source/i18n/dtptngen.cpp
+++ b/icu4c/source/i18n/dtptngen.cpp
@@ -29,7 +29,6 @@
#include "unicode/ustring.h"
#include "unicode/rep.h"
#include "unicode/region.h"
-#include "bytesinkutil.h"
#include "cpputils.h"
#include "mutex.h"
#include "umutex.h"
@@ -464,15 +463,12 @@ DateTimePatternGenerator::operator!=(const DateTimePatternGenerator& other) cons
}
DateTimePatternGenerator::~DateTimePatternGenerator() {
- if (fAvailableFormatKeyHash!=nullptr) {
- delete fAvailableFormatKeyHash;
- }
-
- if (fp != nullptr) delete fp;
- if (dtMatcher != nullptr) delete dtMatcher;
- if (distanceInfo != nullptr) delete distanceInfo;
- if (patternMap != nullptr) delete patternMap;
- if (skipMatcher != nullptr) delete skipMatcher;
+ delete fAvailableFormatKeyHash;
+ delete fp;
+ delete dtMatcher;
+ delete distanceInfo;
+ delete patternMap;
+ delete skipMatcher;
}
namespace {
@@ -511,6 +507,11 @@ enum AllowedHourFormat{
void
DateTimePatternGenerator::initData(const Locale& locale, UErrorCode &status, UBool skipStdPatterns) {
//const char *baseLangName = locale.getBaseName(); // unused
+ if (U_FAILURE(status)) { return; }
+ if (locale.isBogus()) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
skipMatcher = nullptr;
fAvailableFormatKeyHash=nullptr;
@@ -658,10 +659,9 @@ void DateTimePatternGenerator::getAllowedHourFormats(const Locale &locale, UErro
if (U_FAILURE(status)) { return; }
const char *language = locale.getLanguage();
- char baseCountry[8];
- ulocimp_getRegionForSupplementalData(locale.getName(), false, baseCountry, 8, &status);
- const char* country = baseCountry;
-
+ CharString baseCountry = ulocimp_getRegionForSupplementalData(locale.getName(), false, status);
+ const char* country = baseCountry.data();
+
Locale maxLocale; // must be here for correct lifetime
if (*language == '\0' || *country == '\0') {
maxLocale = locale;
@@ -905,15 +905,7 @@ DateTimePatternGenerator::getCalendarTypeToUse(const Locale& locale, CharString&
&localStatus);
localeWithCalendarKey[ULOC_LOCALE_IDENTIFIER_CAPACITY-1] = 0; // ensure null termination
// now get the calendar key value from that locale
- destination.clear();
- {
- CharStringByteSink sink(&destination);
- ulocimp_getKeywordValue(
- localeWithCalendarKey,
- "calendar",
- sink,
- &localStatus);
- }
+ destination = ulocimp_getKeywordValue(localeWithCalendarKey, "calendar", localStatus);
// If the input locale was invalid, don't fail with missing resource error, instead
// continue with default of Gregorian.
if (U_FAILURE(localStatus) && localStatus != U_MISSING_RESOURCE_ERROR) {
@@ -1157,11 +1149,11 @@ DateTimePatternGenerator::getBestPattern(const UnicodeString& patternForm, UErro
UnicodeString
DateTimePatternGenerator::getBestPattern(const UnicodeString& patternForm, UDateTimePatternMatchOptions options, UErrorCode& status) {
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
if (U_FAILURE(internalErrorCode)) {
status = internalErrorCode;
- return UnicodeString();
+ return {};
}
const UnicodeString *bestPattern = nullptr;
UnicodeString dtFormat;
@@ -1174,7 +1166,7 @@ DateTimePatternGenerator::getBestPattern(const UnicodeString& patternForm, UDate
// Replace hour metacharacters 'j', 'C' and 'J', set flags as necessary
UnicodeString patternFormMapped = mapSkeletonMetacharacters(patternForm, &flags, status);
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
resultPattern.remove();
@@ -1182,7 +1174,7 @@ DateTimePatternGenerator::getBestPattern(const UnicodeString& patternForm, UDate
const PtnSkeleton* specifiedSkeleton = nullptr;
bestPattern=getBestRaw(*dtMatcher, -1, distanceInfo, status, &specifiedSkeleton);
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
if ( distanceInfo->missingFieldMask==0 && distanceInfo->extraFieldMask==0 ) {
@@ -1194,7 +1186,7 @@ DateTimePatternGenerator::getBestPattern(const UnicodeString& patternForm, UDate
UnicodeString datePattern=getBestAppending(neededFields & dateMask, flags, status, options);
UnicodeString timePattern=getBestAppending(neededFields & timeMask, flags, status, options);
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
if (datePattern.length()==0) {
if (timePattern.length()==0) {
@@ -1270,7 +1262,7 @@ DateTimePatternGenerator::mapSkeletonMetacharacters(const UnicodeString& pattern
bestAllowed = (AllowedHourFormat)fAllowedHourFormats[0];
} else {
status = U_INVALID_FORMAT_ERROR;
- return UnicodeString();
+ return {};
}
if (bestAllowed == ALLOWED_HOUR_FORMAT_H || bestAllowed == ALLOWED_HOUR_FORMAT_HB || bestAllowed == ALLOWED_HOUR_FORMAT_Hb) {
hourChar = CAP_H;
@@ -1321,11 +1313,11 @@ DateTimePatternGenerator::replaceFieldTypes(const UnicodeString& pattern,
UDateTimePatternMatchOptions options,
UErrorCode& status) {
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
if (U_FAILURE(internalErrorCode)) {
status = internalErrorCode;
- return UnicodeString();
+ return {};
}
dtMatcher->set(skeleton, fp);
UnicodeString result = adjustFieldTypes(pattern, nullptr, kDTPGNoFlags, options);
@@ -1778,7 +1770,7 @@ DateTimePatternGenerator::adjustFieldTypes(const UnicodeString& pattern,
UnicodeString
DateTimePatternGenerator::getBestAppending(int32_t missingFields, int32_t flags, UErrorCode &status, UDateTimePatternMatchOptions options) {
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
UnicodeString resultPattern, tempPattern;
const UnicodeString* tempPatternPtr;
@@ -1788,7 +1780,7 @@ DateTimePatternGenerator::getBestAppending(int32_t missingFields, int32_t flags,
const PtnSkeleton* specifiedSkeleton=nullptr;
tempPatternPtr = getBestRaw(*dtMatcher, missingFields, distanceInfo, status, &specifiedSkeleton);
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
tempPattern = *tempPatternPtr;
resultPattern = adjustFieldTypes(tempPattern, specifiedSkeleton, flags, options);
@@ -1808,7 +1800,7 @@ DateTimePatternGenerator::getBestAppending(int32_t missingFields, int32_t flags,
int32_t startingMask = distanceInfo->missingFieldMask;
tempPatternPtr = getBestRaw(*dtMatcher, distanceInfo->missingFieldMask, distanceInfo, status, &specifiedSkeleton);
if (U_FAILURE(status)) {
- return UnicodeString();
+ return {};
}
tempPattern = *tempPatternPtr;
tempPattern = adjustFieldTypes(tempPattern, specifiedSkeleton, flags, options);
diff --git a/icu4c/source/i18n/dtptngen_impl.h b/icu4c/source/i18n/dtptngen_impl.h
index 74fe925b2..b6eb5f637 100644
--- a/icu4c/source/i18n/dtptngen_impl.h
+++ b/icu4c/source/i18n/dtptngen_impl.h
@@ -250,7 +250,7 @@ public:
virtual ~PatternMap();
void add(const UnicodeString& basePattern, const PtnSkeleton& skeleton, const UnicodeString& value, UBool skeletonWasSpecified, UErrorCode& status);
const UnicodeString* getPatternFromBasePattern(const UnicodeString& basePattern, UBool& skeletonWasSpecified) const;
- const UnicodeString* getPatternFromSkeleton(const PtnSkeleton& skeleton, const PtnSkeleton** specifiedSkeletonPtr = 0) const;
+ const UnicodeString* getPatternFromSkeleton(const PtnSkeleton& skeleton, const PtnSkeleton** specifiedSkeletonPtr = nullptr) const;
void copyFrom(const PatternMap& other, UErrorCode& status);
PtnElem* getHeader(char16_t baseChar) const;
UBool equals(const PatternMap& other) const;
diff --git a/icu4c/source/i18n/esctrn.cpp b/icu4c/source/i18n/esctrn.cpp
index 24fa6f58e..60f873110 100644
--- a/icu4c/source/i18n/esctrn.cpp
+++ b/icu4c/source/i18n/esctrn.cpp
@@ -111,7 +111,7 @@ EscapeTransliterator::EscapeTransliterator(const EscapeTransliterator& o) :
radix(o.radix),
minDigits(o.minDigits),
grokSupplementals(o.grokSupplementals) {
- supplementalHandler = (o.supplementalHandler != 0) ?
+ supplementalHandler = o.supplementalHandler != nullptr ?
new EscapeTransliterator(*o.supplementalHandler) : nullptr;
}
diff --git a/icu4c/source/i18n/ethpccal.cpp b/icu4c/source/i18n/ethpccal.cpp
index be4010843..41b707670 100644
--- a/icu4c/source/i18n/ethpccal.cpp
+++ b/icu4c/source/i18n/ethpccal.cpp
@@ -11,6 +11,7 @@
#if !UCONFIG_NO_FORMATTING
+#include "gregoimp.h"
#include "umutex.h"
#include "ethpccal.h"
#include "cecal.h"
@@ -56,8 +57,11 @@ EthiopicCalendar::getType() const
//-------------------------------------------------------------------------
int32_t
-EthiopicCalendar::handleGetExtendedYear()
+EthiopicCalendar::handleGetExtendedYear(UErrorCode& status)
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// Ethiopic calendar uses EXTENDED_YEAR aligned to
// Amelete Hihret year always.
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
@@ -67,7 +71,12 @@ EthiopicCalendar::handleGetExtendedYear()
if (internalGet(UCAL_ERA, AMETE_MIHRET) == AMETE_MIHRET) {
return internalGet(UCAL_YEAR, 1); // Default to year 1
}
- return internalGet(UCAL_YEAR, 1) - AMETE_MIHRET_DELTA;
+ int32_t year = internalGet(UCAL_YEAR, 1);
+ if (uprv_add32_overflow(year, -AMETE_MIHRET_DELTA, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return year;
}
void
@@ -102,46 +111,7 @@ void EthiopicCalendar::setRelatedYear(int32_t year)
set(UCAL_EXTENDED_YEAR, year - kEthiopicRelatedYearDiff);
}
-/**
- * The system maintains a static default century start date and Year. They are
- * initialized the first time they are used. Once the system default century date
- * and year are set, they do not change.
- */
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInit {};
-
-static void U_CALLCONV initializeSystemDefaultCentury()
-{
- UErrorCode status = U_ZERO_ERROR;
- EthiopicCalendar calendar(Locale("@calendar=ethiopic"), status);
- if (U_SUCCESS(status)) {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
-
- gSystemDefaultCenturyStart = calendar.getTime(status);
- gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
- }
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
-}
-
-UDate
-EthiopicCalendar::defaultCenturyStart() const
-{
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t
-EthiopicCalendar::defaultCenturyStartYear() const
-{
- // lazy-evaluate systemDefaultCenturyStartYear
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
-
+IMPL_SYSTEM_DEFAULT_CENTURY(EthiopicCalendar, "@calendar=ethiopic")
int32_t
EthiopicCalendar::getJDEpochOffset() const
@@ -150,21 +120,6 @@ EthiopicCalendar::getJDEpochOffset() const
}
-#if 0
-// We do not want to introduce this API in ICU4C.
-// It was accidentally introduced in ICU4J as a public API.
-
-//-------------------------------------------------------------------------
-// Calendar system Conversion methods...
-//-------------------------------------------------------------------------
-
-int32_t
-EthiopicCalendar::ethiopicToJD(int32_t year, int32_t month, int32_t date)
-{
- return ceToJD(year, month, date, JD_EPOCH_OFFSET_AMETE_MIHRET);
-}
-#endif
-
//-------------------------------------------------------------------------
// Constructors...
//-------------------------------------------------------------------------
@@ -196,15 +151,23 @@ EthiopicAmeteAlemCalendar::getType() const
}
int32_t
-EthiopicAmeteAlemCalendar::handleGetExtendedYear()
+EthiopicAmeteAlemCalendar::handleGetExtendedYear(UErrorCode& status)
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// Ethiopic calendar uses EXTENDED_YEAR aligned to
// Amelete Hihret year always.
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
return internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
}
- return internalGet(UCAL_YEAR, 1 + AMETE_MIHRET_DELTA)
- - AMETE_MIHRET_DELTA; // Default to year 1 of Amelete Mihret
+ // Default to year 1 of Amelete Mihret
+ int32_t year = internalGet(UCAL_YEAR, 1 + AMETE_MIHRET_DELTA);
+ if (uprv_add32_overflow(year, -AMETE_MIHRET_DELTA, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return year;
}
void
diff --git a/icu4c/source/i18n/ethpccal.h b/icu4c/source/i18n/ethpccal.h
index 19d9e0efb..36a356118 100644
--- a/icu4c/source/i18n/ethpccal.h
+++ b/icu4c/source/i18n/ethpccal.h
@@ -169,7 +169,7 @@ protected:
* 1 AMETE_MIHRET 1
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Compute fields from the JD
@@ -177,18 +177,7 @@ protected:
*/
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
/**
* Return the date offset from Julian
@@ -341,7 +330,7 @@ protected:
* 1 AMETE_ALEM 5501
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Compute fields from the JD
diff --git a/icu4c/source/i18n/fmtable.cpp b/icu4c/source/i18n/fmtable.cpp
index 65dafc95a..01d7bad1b 100644
--- a/icu4c/source/i18n/fmtable.cpp
+++ b/icu4c/source/i18n/fmtable.cpp
@@ -775,9 +775,7 @@ Formattable::populateDecimalQuantity(number::impl::DecimalQuantity& output, UErr
// ---------------------------------------
void
Formattable::adoptDecimalQuantity(DecimalQuantity *dq) {
- if (fDecimalQuantity != nullptr) {
- delete fDecimalQuantity;
- }
+ delete fDecimalQuantity;
fDecimalQuantity = dq;
if (dq == nullptr) { // allow adoptDigitList(nullptr) to clear
return;
diff --git a/icu4c/source/i18n/formatted_string_builder.cpp b/icu4c/source/i18n/formatted_string_builder.cpp
index 8dbf954af..6481f73dc 100644
--- a/icu4c/source/i18n/formatted_string_builder.cpp
+++ b/icu4c/source/i18n/formatted_string_builder.cpp
@@ -72,8 +72,8 @@ FormattedStringBuilder &FormattedStringBuilder::operator=(const FormattedStringB
if (capacity > DEFAULT_CAPACITY) {
// FIXME: uprv_malloc
// C++ note: malloc appears in two places: here and in prepareForInsertHelper.
- auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * capacity));
- auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * capacity));
+ auto* newChars = static_cast<char16_t*>(uprv_malloc(sizeof(char16_t) * capacity));
+ auto* newFields = static_cast<Field*>(uprv_malloc(sizeof(Field) * capacity));
if (newChars == nullptr || newFields == nullptr) {
// UErrorCode is not available; fail silently.
uprv_free(newChars);
@@ -153,13 +153,15 @@ FormattedStringBuilder::insertCodePoint(int32_t index, UChar32 codePoint, Field
if (U_FAILURE(status)) {
return count;
}
+ auto* charPtr = getCharPtr();
+ auto* fieldPtr = getFieldPtr();
if (count == 1) {
- getCharPtr()[position] = (char16_t) codePoint;
- getFieldPtr()[position] = field;
+ charPtr[position] = (char16_t) codePoint;
+ fieldPtr[position] = field;
} else {
- getCharPtr()[position] = U16_LEAD(codePoint);
- getCharPtr()[position + 1] = U16_TRAIL(codePoint);
- getFieldPtr()[position] = getFieldPtr()[position + 1] = field;
+ charPtr[position] = U16_LEAD(codePoint);
+ charPtr[position + 1] = U16_TRAIL(codePoint);
+ fieldPtr[position] = fieldPtr[position + 1] = field;
}
return count;
}
@@ -306,8 +308,10 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t co
newZero = (newCapacity - newLength) / 2;
// C++ note: malloc appears in two places: here and in the assignment operator.
- auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * static_cast<size_t>(newCapacity)));
- auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * static_cast<size_t>(newCapacity)));
+ auto* newChars =
+ static_cast<char16_t*>(uprv_malloc(sizeof(char16_t) * static_cast<size_t>(newCapacity)));
+ auto* newFields =
+ static_cast<Field*>(uprv_malloc(sizeof(Field) * static_cast<size_t>(newCapacity)));
if (newChars == nullptr || newFields == nullptr) {
uprv_free(newChars);
uprv_free(newFields);
@@ -378,7 +382,7 @@ UnicodeString FormattedStringBuilder::toUnicodeString() const {
return UnicodeString(getCharPtr() + fZero, fLength);
}
-const UnicodeString FormattedStringBuilder::toTempUnicodeString() const {
+UnicodeString FormattedStringBuilder::toTempUnicodeString() const {
// Readonly-alias constructor:
return UnicodeString(false, getCharPtr() + fZero, fLength);
}
diff --git a/icu4c/source/i18n/formatted_string_builder.h b/icu4c/source/i18n/formatted_string_builder.h
index 32e0900ae..2ea7ac4f1 100644
--- a/icu4c/source/i18n/formatted_string_builder.h
+++ b/icu4c/source/i18n/formatted_string_builder.h
@@ -171,7 +171,7 @@ class U_I18N_API FormattedStringBuilder : public UMemory {
* Gets an "unsafe" UnicodeString that is valid only as long as the FormattedStringBuilder is alive and
* unchanged. Slightly faster than toUnicodeString().
*/
- const UnicodeString toTempUnicodeString() const;
+ UnicodeString toTempUnicodeString() const;
UnicodeString toDebugString() const;
@@ -219,8 +219,8 @@ class U_I18N_API FormattedStringBuilder : public UMemory {
static_assert(
// std::is_pod<> is deprecated.
- std::is_standard_layout<FormattedStringBuilder::Field>::value &&
- std::is_trivial<FormattedStringBuilder::Field>::value,
+ std::is_standard_layout_v<FormattedStringBuilder::Field> &&
+ std::is_trivial_v<FormattedStringBuilder::Field>,
"Field should be a POD type for efficient initialization");
constexpr FormattedStringBuilder::Field::Field(uint8_t category, uint8_t field)
diff --git a/icu4c/source/i18n/gender.cpp b/icu4c/source/i18n/gender.cpp
index d023b5021..ab76dab12 100644
--- a/icu4c/source/i18n/gender.cpp
+++ b/icu4c/source/i18n/gender.cpp
@@ -25,7 +25,6 @@
#include "unicode/ugender.h"
#include "unicode/ures.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -156,11 +155,9 @@ const GenderInfo* GenderInfo::loadInstance(const Locale& locale, UErrorCode& sta
CharString parentLocaleName(curLocaleName, key_status);
while (s == nullptr) {
{
- CharString tmp;
- CharStringByteSink sink(&tmp);
- ulocimp_getParent(parentLocaleName.data(), sink, &status);
- if (tmp.isEmpty()) break;
- parentLocaleName = std::move(tmp);
+ CharString tmp = ulocimp_getParent(parentLocaleName.data(), status);
+ if (tmp.isEmpty()) break;
+ parentLocaleName = std::move(tmp);
}
key_status = U_ZERO_ERROR;
resLen = 0;
diff --git a/icu4c/source/i18n/gregocal.cpp b/icu4c/source/i18n/gregocal.cpp
index ec14abbbf..dfd64faa5 100644
--- a/icu4c/source/i18n/gregocal.cpp
+++ b/icu4c/source/i18n/gregocal.cpp
@@ -351,27 +351,27 @@ GregorianCalendar::setGregorianChange(UDate date, UErrorCode& status)
// values.
GregorianCalendar *cal = new GregorianCalendar(getTimeZone(), status);
/* test for nullptr */
- if (cal == 0) {
+ if (cal == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- if(U_FAILURE(status))
+ if(U_FAILURE(status)) {
return;
+ }
cal->setTime(date, status);
fGregorianCutoverYear = cal->get(UCAL_YEAR, status);
- if (cal->get(UCAL_ERA, status) == BC)
+ if (cal->get(UCAL_ERA, status) == BC) {
fGregorianCutoverYear = 1 - fGregorianCutoverYear;
+ }
fCutoverJulianDay = (int32_t)cutoverDay;
delete cal;
}
-
void GregorianCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status) {
int32_t eyear, month, dayOfMonth, dayOfYear, unusedRemainder;
-
- if(U_FAILURE(status)) {
- return;
+ if(U_FAILURE(status)) {
+ return;
}
#if defined (U_DEBUG_CAL)
@@ -379,7 +379,6 @@ void GregorianCalendar::handleComputeFields(int32_t julianDay, UErrorCode& statu
__FILE__, __LINE__, julianDay, getGregorianDayOfYear(), fCutoverJulianDay);
#endif
-
if (julianDay >= fCutoverJulianDay) {
month = getGregorianMonth();
dayOfMonth = getGregorianDayOfMonth();
@@ -472,17 +471,20 @@ GregorianCalendar::isLeapYear(int32_t year) const
// -------------------------------------
-int32_t GregorianCalendar::handleComputeJulianDay(UCalendarDateFields bestField)
+int32_t GregorianCalendar::handleComputeJulianDay(UCalendarDateFields bestField, UErrorCode& status)
{
fInvertGregorian = false;
- int32_t jd = Calendar::handleComputeJulianDay(bestField);
+ int32_t jd = Calendar::handleComputeJulianDay(bestField, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if((bestField == UCAL_WEEK_OF_YEAR) && // if we are doing WOY calculations, we are counting relative to Jan 1 *julian*
(internalGet(UCAL_EXTENDED_YEAR)==fGregorianCutoverYear) &&
jd >= fCutoverJulianDay) {
fInvertGregorian = true; // So that the Julian Jan 1 will be used in handleComputeMonthStart
- return Calendar::handleComputeJulianDay(bestField);
+ return Calendar::handleComputeJulianDay(bestField, status);
}
@@ -495,7 +497,10 @@ int32_t GregorianCalendar::handleComputeJulianDay(UCalendarDateFields bestField)
__FILE__, __LINE__, jd);
#endif
fInvertGregorian = true;
- jd = Calendar::handleComputeJulianDay(bestField);
+ jd = Calendar::handleComputeJulianDay(bestField, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
#if defined (U_DEBUG_CAL)
fprintf(stderr, "%s:%d: fIsGregorian %s, fInvertGregorian %s - ",
__FILE__, __LINE__,fIsGregorian?"T":"F", fInvertGregorian?"T":"F");
@@ -530,21 +535,29 @@ int32_t GregorianCalendar::handleComputeJulianDay(UCalendarDateFields bestField)
return jd;
}
-int32_t GregorianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month,
+int64_t GregorianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month,
- UBool /* useMonth */) const
+ UBool /* useMonth */, UErrorCode& status) const
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
GregorianCalendar *nonConstThis = (GregorianCalendar*)this; // cast away const
// If the month is out of range, adjust it into range, and
// modify the extended year value accordingly.
if (month < 0 || month > 11) {
- eyear += ClockMath::floorDivide(month, 12, &month);
+ if (uprv_add32_overflow(ClockMath::floorDivide(month, 12, &month),
+ eyear, &eyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
}
UBool isLeap = eyear%4 == 0;
int64_t y = (int64_t)eyear-1;
- int64_t julianDay = 365*y + ClockMath::floorDivide(y, (int64_t)4) + (kJan1_1JulianDay - 3);
+ int64_t julianDay = 365LL * y +
+ ClockMath::floorDivideInt64(y, 4LL) + kJan1_1JulianDay - 3LL;
nonConstThis->fIsGregorian = (eyear >= fGregorianCutoverYear);
#if defined (U_DEBUG_CAL)
@@ -574,10 +587,10 @@ int32_t GregorianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month,
julianDay += isLeap?kLeapNumDays[month]:kNumDays[month];
}
- return static_cast<int32_t>(julianDay);
+ return julianDay;
}
-int32_t GregorianCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const
+int32_t GregorianCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& /* status */) const
{
// If the month is out of range, adjust it into range, and
// modify the extended year value accordingly.
@@ -594,10 +607,10 @@ int32_t GregorianCalendar::handleGetYearLength(int32_t eyear) const {
int32_t
-GregorianCalendar::monthLength(int32_t month) const
+GregorianCalendar::monthLength(int32_t month, UErrorCode& status) const
{
int32_t year = internalGet(UCAL_EXTENDED_YEAR);
- return handleGetMonthLength(year, month);
+ return handleGetMonthLength(year, month, status);
}
// -------------------------------------
@@ -634,10 +647,12 @@ GregorianCalendar::validateFields() const
// specially.
if (isSet(UCAL_DATE)) {
int32_t date = internalGet(UCAL_DATE);
+ UErrorCode internalStatus = U_ZERO_ERROR;
if (date < getMinimum(UCAL_DATE) ||
- date > monthLength(internalGetMonth())) {
+ date > monthLength(internalGetMonth(internalStatus), internalStatus) ||
+ U_FAILURE(internalStatus)) {
return false;
- }
+ }
}
if (isSet(UCAL_DAY_OF_YEAR)) {
@@ -760,7 +775,7 @@ double GregorianCalendar::computeJulianDayOfYear(UBool isGregorian,
// -------------------------------------
-double
+double
GregorianCalendar::millisToJulianDay(UDate millis)
{
return (double)kEpochStartAsJulianDay + ClockMath::floorDivide(millis, (double)kOneDay);
@@ -777,9 +792,9 @@ GregorianCalendar::julianDayToMillis(double julian)
// -------------------------------------
int32_t
-GregorianCalendar::aggregateStamp(int32_t stamp_a, int32_t stamp_b)
+GregorianCalendar::aggregateStamp(int32_t stamp_a, int32_t stamp_b)
{
- return (((stamp_a != kUnset && stamp_b != kUnset)
+ return (((stamp_a != kUnset && stamp_b != kUnset)
? uprv_max(stamp_a, stamp_b)
: (int32_t)kUnset));
}
@@ -791,9 +806,9 @@ GregorianCalendar::aggregateStamp(int32_t stamp_a, int32_t stamp_b)
* Note: This will be made public later. [LIU]
*/
-void
+void
GregorianCalendar::roll(EDateFields field, int32_t amount, UErrorCode& status) {
- roll((UCalendarDateFields) field, amount, status);
+ roll((UCalendarDateFields) field, amount, status);
}
void
@@ -814,7 +829,10 @@ GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& s
case UCAL_DAY_OF_MONTH:
case UCAL_WEEK_OF_MONTH:
{
- int32_t max = monthLength(internalGetMonth());
+ int32_t max = monthLength(internalGetMonth(status), status);
+ if (U_FAILURE(status)) {
+ return;
+ }
UDate t = internalGetTime();
// We subtract 1 from the DAY_OF_MONTH to make it zero-based, and an
// additional 10 if we are after the cutover. Thus the monthStart
@@ -825,7 +843,7 @@ GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& s
if ((cMonthStart < fGregorianCutover) &&
(cMonthStart + (cMonthLen=(max-10))*kOneDay >= fGregorianCutover)) {
inCutoverMonth = true;
- }
+ }
}
break;
default:
@@ -847,7 +865,11 @@ GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& s
// may be one year before or after the calendar year.
int32_t isoYear = get(UCAL_YEAR_WOY, status);
int32_t isoDoy = internalGet(UCAL_DAY_OF_YEAR);
- if (internalGetMonth() == UCAL_JANUARY) {
+ int32_t month = internalGetMonth(status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (month == UCAL_JANUARY) {
if (woy >= 52) {
isoDoy += handleGetYearLength(isoYear);
}
@@ -856,7 +878,10 @@ GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& s
isoDoy -= handleGetYearLength(isoYear - 1);
}
}
- woy += amount;
+ if (uprv_add32_overflow(woy, amount, &woy)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
// Do fast checks to avoid unnecessary computation:
if (woy < 1 || woy > 52) {
// Determine the last week of the ISO year.
@@ -882,7 +907,8 @@ GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& s
if( !inCutoverMonth ) {
Calendar::roll(field, amount, status);
return;
- } else {
+ }
+ {
// [j81] 1582 special case for DOM
// The default computation works except when the current month
// contains the Gregorian cutover. We handle this special case
@@ -905,7 +931,8 @@ GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& s
if( !inCutoverMonth ) {
Calendar::roll(field, amount, status);
return;
- } else {
+ }
+ {
#if defined (U_DEBUG_CAL)
fprintf(stderr, "%s:%d: roll WOM %d ??????????????????? \n",
__FILE__, __LINE__,amount);
@@ -1151,7 +1178,10 @@ int32_t GregorianCalendar::getActualMaximum(UCalendarDateFields field, UErrorCod
}
-int32_t GregorianCalendar::handleGetExtendedYear() {
+int32_t GregorianCalendar::handleGetExtendedYear(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// the year to return
int32_t year = kEpochYear;
@@ -1177,14 +1207,21 @@ int32_t GregorianCalendar::handleGetExtendedYear() {
int32_t era = internalGet(UCAL_ERA, AD);
if (era == BC) {
year = 1 - internalGet(UCAL_YEAR, 1); // Convert to extended year
- } else {
+ } else if (era == AD) {
year = internalGet(UCAL_YEAR, kEpochYear);
+ } else {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
}
}
break;
case UCAL_YEAR_WOY:
- year = handleGetExtendedYearFromWeekFields(internalGet(UCAL_YEAR_WOY), internalGet(UCAL_WEEK_OF_YEAR));
+ year = handleGetExtendedYearFromWeekFields(
+ internalGet(UCAL_YEAR_WOY), internalGet(UCAL_WEEK_OF_YEAR), status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
#if defined (U_DEBUG_CAL)
// if(internalGet(UCAL_YEAR_WOY) != year) {
fprintf(stderr, "%s:%d: hGEYFWF[%d,%d] -> %d\n",
@@ -1199,14 +1236,17 @@ int32_t GregorianCalendar::handleGetExtendedYear() {
return year;
}
-int32_t GregorianCalendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy)
+int32_t GregorianCalendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy, UErrorCode& status)
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// convert year to extended form
int32_t era = internalGet(UCAL_ERA, AD);
if(era == BC) {
yearWoy = 1 - yearWoy;
}
- return Calendar::handleGetExtendedYearFromWeekFields(yearWoy, woy);
+ return Calendar::handleGetExtendedYearFromWeekFields(yearWoy, woy, status);
}
@@ -1228,51 +1268,7 @@ GregorianCalendar::getType() const {
return "gregorian";
}
-/**
- * The system maintains a static default century start date and Year. They are
- * initialized the first time they are used. Once the system default century date
- * and year are set, they do not change.
- */
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInit {};
-
-
-UBool GregorianCalendar::haveDefaultCentury() const
-{
- return true;
-}
-
-static void U_CALLCONV
-initializeSystemDefaultCentury()
-{
- // initialize systemDefaultCentury and systemDefaultCenturyYear based
- // on the current time. They'll be set to 80 years before
- // the current time.
- UErrorCode status = U_ZERO_ERROR;
- GregorianCalendar calendar(status);
- if (U_SUCCESS(status)) {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
-
- gSystemDefaultCenturyStart = calendar.getTime(status);
- gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
- }
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
-}
-
-UDate GregorianCalendar::defaultCenturyStart() const {
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t GregorianCalendar::defaultCenturyStartYear() const {
- // lazy-evaluate systemDefaultCenturyStartYear
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
+IMPL_SYSTEM_DEFAULT_CENTURY(GregorianCalendar, "@calendar=gregory")
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/gregoimp.cpp b/icu4c/source/i18n/gregoimp.cpp
index 31b5aeed8..57499bd30 100644
--- a/icu4c/source/i18n/gregoimp.cpp
+++ b/icu4c/source/i18n/gregoimp.cpp
@@ -27,12 +27,21 @@ int32_t ClockMath::floorDivide(int32_t numerator, int32_t denominator) {
numerator / denominator : ((numerator + 1) / denominator) - 1;
}
-int64_t ClockMath::floorDivide(int64_t numerator, int64_t denominator) {
+int64_t ClockMath::floorDivideInt64(int64_t numerator, int64_t denominator) {
return (numerator >= 0) ?
numerator / denominator : ((numerator + 1) / denominator) - 1;
}
-int32_t ClockMath::floorDivide(double numerator, int32_t denominator,
+int32_t ClockMath::floorDivide(int32_t numerator, int32_t denominator,
+ int32_t* remainder) {
+ int64_t quotient = floorDivide(numerator, denominator);
+ if (remainder != nullptr) {
+ *remainder = numerator - (quotient * denominator);
+ }
+ return quotient;
+}
+
+double ClockMath::floorDivide(double numerator, int32_t denominator,
int32_t* remainder) {
// For an integer n and representable ⌊x/n⌋, ⌊RN(x/n)⌋=⌊x/n⌋, where RN is
// rounding to nearest.
@@ -44,7 +53,7 @@ int32_t ClockMath::floorDivide(double numerator, int32_t denominator,
// n+⌈x⌉ = ⌊x+n⌋ + 1. Rewriting it as ⌊x⌋+n makes the addition exact.
*remainder = (int32_t) (uprv_floor(numerator) - (quotient * denominator));
}
- return (int32_t) quotient;
+ return quotient;
}
double ClockMath::floorDivide(double dividend, double divisor,
@@ -95,18 +104,20 @@ const int8_t Grego::MONTH_LENGTH[24] =
{31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31};
-double Grego::fieldsToDay(int32_t year, int32_t month, int32_t dom) {
+int64_t Grego::fieldsToDay(int32_t year, int32_t month, int32_t dom) {
- int32_t y = year - 1;
+ int64_t y = year - 1;
- double julian = 365 * y + ClockMath::floorDivide(y, 4) + (JULIAN_1_CE - 3) + // Julian cal
- ClockMath::floorDivide(y, 400) - ClockMath::floorDivide(y, 100) + 2 + // => Gregorian cal
+ int64_t julian = 365LL * y +
+ ClockMath::floorDivideInt64(y, 4LL) + (JULIAN_1_CE - 3) + // Julian cal
+ ClockMath::floorDivideInt64(y, 400LL) -
+ ClockMath::floorDivideInt64(y, 100LL) + 2 + // => Gregorian cal
DAYS_BEFORE[month + (isLeapYear(year) ? 12 : 0)] + dom; // => month/dom
return julian - JULIAN_1970_CE; // JD => epoch day
}
-void Grego::dayToFields(double day, int32_t& year, int32_t& month,
+void Grego::dayToFields(int32_t day, int32_t& year, int32_t& month,
int32_t& dom, int32_t& dow, int32_t& doy) {
// Convert from 1970 CE epoch to 1 CE epoch (Gregorian calendar)
@@ -130,7 +141,7 @@ void Grego::dayToFields(double day, int32_t& year, int32_t& month,
UBool isLeap = isLeapYear(year);
// Gregorian day zero is a Monday.
- dow = (int32_t) uprv_fmod(day + 1, 7);
+ dow = (day + 1) % 7;
dow += (dow < 0) ? (UCAL_SUNDAY + 7) : UCAL_SUNDAY;
// Common Julian/Gregorian calculation
@@ -152,7 +163,7 @@ void Grego::timeToFields(UDate time, int32_t& year, int32_t& month,
dayToFields(day, year, month, dom, dow, doy);
}
-int32_t Grego::dayOfWeek(double day) {
+int32_t Grego::dayOfWeek(int32_t day) {
int32_t dow;
ClockMath::floorDivide(day + int{UCAL_THURSDAY}, 7, &dow);
return (dow == 0) ? UCAL_SATURDAY : dow;
diff --git a/icu4c/source/i18n/gregoimp.h b/icu4c/source/i18n/gregoimp.h
index d65d6a4f8..cd7694040 100644
--- a/icu4c/source/i18n/gregoimp.h
+++ b/icu4c/source/i18n/gregoimp.h
@@ -14,6 +14,7 @@
#ifndef GREGOIMP_H
#define GREGOIMP_H
#include "unicode/utypes.h"
+#include "unicode/calendar.h"
#if !UCONFIG_NO_FORMATTING
#include "unicode/ures.h"
@@ -49,7 +50,7 @@ class ClockMath {
* @param denominator a divisor which must be != 0
* @return the floor of the quotient
*/
- static int64_t floorDivide(int64_t numerator, int64_t denominator);
+ static int64_t floorDivideInt64(int64_t numerator, int64_t denominator);
/**
* Divide two numbers, returning the floor of the quotient.
@@ -77,7 +78,25 @@ class ClockMath {
* |denominator|)</code>.
* @return the floor of the quotient
*/
- static int32_t floorDivide(double numerator, int32_t denominator,
+ static int32_t floorDivide(int32_t numerator, int32_t denominator,
+ int32_t* remainder);
+
+ /**
+ * Divide two numbers, returning the floor of the quotient and
+ * the modulus remainder. Unlike the built-in division, this is
+ * mathematically well-behaved. E.g., <code>-1/4</code> => 0 and
+ * <code>-1%4</code> => -1, but <code>floorDivide(-1,4)</code> =>
+ * -1 with <code>remainder</code> => 3. NOTE: If numerator is
+ * too large, the returned quotient may overflow.
+ * @param numerator the numerator
+ * @param denominator a divisor which must be != 0
+ * @param remainder output parameter to receive the
+ * remainder. Unlike <code>numerator % denominator</code>, this
+ * will always be non-negative, in the half-open range <code>[0,
+ * |denominator|)</code>.
+ * @return the floor of the quotient
+ */
+ static double floorDivide(double numerator, int32_t denominator,
int32_t* remainder);
/**
@@ -178,31 +197,31 @@ class Grego {
* @param dom 1-based day of month
* @return the day number, with day 0 == Jan 1 1970
*/
- static double fieldsToDay(int32_t year, int32_t month, int32_t dom);
+ static int64_t fieldsToDay(int32_t year, int32_t month, int32_t dom);
/**
* Convert a 1970-epoch day number to proleptic Gregorian year,
* month, day-of-month, and day-of-week.
- * @param day 1970-epoch day (integral value)
+ * @param day 1970-epoch day
* @param year output parameter to receive year
* @param month output parameter to receive month (0-based, 0==Jan)
* @param dom output parameter to receive day-of-month (1-based)
* @param dow output parameter to receive day-of-week (1-based, 1==Sun)
* @param doy output parameter to receive day-of-year (1-based)
*/
- static void dayToFields(double day, int32_t& year, int32_t& month,
+ static void dayToFields(int32_t day, int32_t& year, int32_t& month,
int32_t& dom, int32_t& dow, int32_t& doy);
/**
* Convert a 1970-epoch day number to proleptic Gregorian year,
* month, day-of-month, and day-of-week.
- * @param day 1970-epoch day (integral value)
+ * @param day 1970-epoch day
* @param year output parameter to receive year
* @param month output parameter to receive month (0-based, 0==Jan)
* @param dom output parameter to receive day-of-month (1-based)
* @param dow output parameter to receive day-of-week (1-based, 1==Sun)
*/
- static inline void dayToFields(double day, int32_t& year, int32_t& month,
+ static inline void dayToFields(int32_t day, int32_t& year, int32_t& month,
int32_t& dom, int32_t& dow);
/**
@@ -221,10 +240,10 @@ class Grego {
/**
* Return the day of week on the 1970-epoch day
- * @param day the 1970-epoch day (integral value)
+ * @param day the 1970-epoch day
* @return the day of week
*/
- static int32_t dayOfWeek(double day);
+ static int32_t dayOfWeek(int32_t day);
/**
* Returns the ordinal number for the specified day of week within the month.
@@ -283,7 +302,7 @@ Grego::previousMonthLength(int y, int m) {
return (m > 0) ? monthLength(y, m-1) : 31;
}
-inline void Grego::dayToFields(double day, int32_t& year, int32_t& month,
+inline void Grego::dayToFields(int32_t day, int32_t& year, int32_t& month,
int32_t& dom, int32_t& dow) {
int32_t doy_unused;
dayToFields(day,year,month,dom,dow,doy_unused);
@@ -291,7 +310,7 @@ inline void Grego::dayToFields(double day, int32_t& year, int32_t& month,
inline double Grego::julianDayToMillis(int32_t julian)
{
- return (julian - kEpochStartAsJulianDay) * kOneDay;
+ return (static_cast<double>(julian) - kEpochStartAsJulianDay) * kOneDay;
}
inline int32_t Grego::millisToJulianDay(double millis) {
@@ -300,10 +319,50 @@ inline int32_t Grego::millisToJulianDay(double millis) {
inline int32_t Grego::gregorianShift(int32_t eyear) {
int64_t y = (int64_t)eyear-1;
- int32_t gregShift = static_cast<int32_t>(ClockMath::floorDivide(y, (int64_t)400) - ClockMath::floorDivide(y, (int64_t)100) + 2);
- return gregShift;
+ int64_t gregShift = ClockMath::floorDivideInt64(y, 400LL) - ClockMath::floorDivideInt64(y, 100LL) + 2;
+ return static_cast<int32_t>(gregShift);
}
+#define IMPL_SYSTEM_DEFAULT_CENTURY(T, U) \
+ /** \
+ * The system maintains a static default century start date and Year. They \
+ * are initialized the first time they are used. Once the system default \
+ * century date and year are set, they do not change \
+ */ \
+ namespace { \
+ static UDate gSystemDefaultCenturyStart = DBL_MIN; \
+ static int32_t gSystemDefaultCenturyStartYear = -1; \
+ static icu::UInitOnce gSystemDefaultCenturyInit {}; \
+ static void U_CALLCONV \
+ initializeSystemDefaultCentury() { \
+ UErrorCode status = U_ZERO_ERROR; \
+ T calendar(U, status); \
+ /* initialize systemDefaultCentury and systemDefaultCenturyYear based */ \
+ /* on the current time. They'll be set to 80 years before */ \
+ /* the current time. */ \
+ if (U_FAILURE(status)) { \
+ return; \
+ } \
+ calendar.setTime(Calendar::getNow(), status); \
+ calendar.add(UCAL_YEAR, -80, status); \
+ gSystemDefaultCenturyStart = calendar.getTime(status); \
+ gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status); \
+ /* We have no recourse upon failure unless we want to propagate the */ \
+ /* failure out. */ \
+ } \
+ } /* namespace */ \
+ UDate T::defaultCenturyStart() const { \
+ /* lazy-evaluate systemDefaultCenturyStart */ \
+ umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury); \
+ return gSystemDefaultCenturyStart; \
+ } \
+ int32_t T::defaultCenturyStartYear() const { \
+ /* lazy-evaluate systemDefaultCenturyStart */ \
+ umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury); \
+ return gSystemDefaultCenturyStartYear; \
+ } \
+ UBool T::haveDefaultCentury() const { return true; }
+
U_NAMESPACE_END
#endif // !UCONFIG_NO_FORMATTING
diff --git a/icu4c/source/i18n/hebrwcal.cpp b/icu4c/source/i18n/hebrwcal.cpp
index 6451c89c5..d74ab2d3e 100644
--- a/icu4c/source/i18n/hebrwcal.cpp
+++ b/icu4c/source/i18n/hebrwcal.cpp
@@ -136,6 +136,10 @@ static const int16_t LEAP_MONTH_START[][3] = {
{ 383, 384, 385 }, // Elul
};
+// There are 235 months in 19 years cycle.
+static const int32_t MONTHS_IN_CYCLE = 235;
+static const int32_t YEARS_IN_CYCLE = 19;
+
static icu::CalendarCache *gCache = nullptr;
U_CDECL_BEGIN
@@ -227,12 +231,23 @@ void HebrewCalendar::add(UCalendarDateFields field, int32_t amount, UErrorCode&
// ADAR_1 -- then we have to bump to ADAR_2 aka ADAR. But
// if amount is -2 and we land in ADAR_1, then we have to
// bump the other way -- down to SHEVAT. - Alan 11/00
- int32_t month = get(UCAL_MONTH, status);
+ int64_t month = get(UCAL_MONTH, status);
int32_t year = get(UCAL_YEAR, status);
UBool acrossAdar1;
if (amount > 0) {
acrossAdar1 = (month < ADAR_1); // started before ADAR_1?
month += amount;
+ // We know there are total 235 months in every 19 years. To speed
+ // up the iteration, we first fast forward in the multiple of 235
+ // months for 19 years before the iteration which check the leap year.
+ if (month >= MONTHS_IN_CYCLE) {
+ if (uprv_add32_overflow(year, (month / MONTHS_IN_CYCLE) * YEARS_IN_CYCLE, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ month %= MONTHS_IN_CYCLE;
+ }
+
for (;;) {
if (acrossAdar1 && month>=ADAR_1 && !isLeapYear(year)) {
++month;
@@ -247,6 +262,16 @@ void HebrewCalendar::add(UCalendarDateFields field, int32_t amount, UErrorCode&
} else {
acrossAdar1 = (month > ADAR_1); // started after ADAR_1?
month += amount;
+ // We know there are total 235 months in every 19 years. To speed
+ // up the iteration, we first fast forward in the multiple of 235
+ // months for 19 years before the iteration which check the leap year.
+ if (month <= -MONTHS_IN_CYCLE) {
+ if (uprv_add32_overflow(year, (month / MONTHS_IN_CYCLE) * YEARS_IN_CYCLE, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ month %= MONTHS_IN_CYCLE;
+ }
for (;;) {
if (acrossAdar1 && month<=ADAR_1 && !isLeapYear(year)) {
--month;
@@ -394,14 +419,18 @@ static const int32_t BAHARAD = 11*HOUR_PARTS + 204;
int32_t HebrewCalendar::startOfYear(int32_t year, UErrorCode &status)
{
ucln_i18n_registerCleanup(UCLN_I18N_HEBREW_CALENDAR, calendar_hebrew_cleanup);
- int32_t day = CalendarCache::get(&gCache, year, status);
+ int64_t day = CalendarCache::get(&gCache, year, status);
+ if(U_FAILURE(status)) {
+ return 0;
+ }
if (day == 0) {
// # of months before year
- int32_t months = (int32_t)ClockMath::floorDivide((235 * (int64_t)year - 234), (int64_t)19);
+ int64_t months = ClockMath::floorDivideInt64(
+ (235LL * (int64_t)year - 234LL), 19LL);
- int64_t frac = (int64_t)months * MONTH_FRACT + BAHARAD; // Fractional part of day #
- day = months * 29 + (int32_t)(frac / DAY_PARTS); // Whole # part of calculation
+ int64_t frac = months * MONTH_FRACT + BAHARAD; // Fractional part of day #
+ day = months * 29LL + frac / DAY_PARTS; // Whole # part of calculation
frac = frac % DAY_PARTS; // Time of day
int32_t wd = (day % 7); // Day of week (0 == Monday)
@@ -423,8 +452,14 @@ int32_t HebrewCalendar::startOfYear(int32_t year, UErrorCode &status)
// Prevents 382-day years.
day += 1;
}
- CalendarCache::put(&gCache, year, day, status);
+ if (day > INT32_MAX || day < INT32_MIN) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ CalendarCache::put(&gCache, year, static_cast<int32_t>(day), status);
}
+ // Out of range value is alread rejected before putting into cache.
+ U_ASSERT(INT32_MIN <= day && day <= INT32_MAX);
return day;
}
@@ -478,7 +513,7 @@ int32_t HebrewCalendar::yearType(int32_t year) const
*/
UBool HebrewCalendar::isLeapYear(int32_t year) {
//return (year * 12 + 17) % 19 >= 12;
- int32_t x = (year*12 + 17) % 19;
+ int64_t x = (year*12LL + 17) % YEARS_IN_CYCLE;
return x >= ((x < 0) ? -7 : 12);
}
@@ -501,7 +536,10 @@ int32_t HebrewCalendar::handleGetLimit(UCalendarDateFields field, ELimitType lim
* Returns the length of the given month in the given year
* @internal
*/
-int32_t HebrewCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
+int32_t HebrewCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const {
+ if(U_FAILURE(status)) {
+ return 0;
+ }
// Resolve out-of-range months. This is necessary in order to
// obtain the correct year. We correct to
// a 12- or 13-month year (add/subtract 12 or 13, depending
@@ -539,7 +577,10 @@ int32_t HebrewCalendar::handleGetYearLength(int32_t eyear) const {
void HebrewCalendar::validateField(UCalendarDateFields field, UErrorCode &status) {
if ((field == UCAL_MONTH || field == UCAL_ORDINAL_MONTH)
- && !isLeapYear(handleGetExtendedYear()) && internalGetMonth() == ADAR_1) {
+ && !isLeapYear(handleGetExtendedYear(status)) && internalGetMonth(status) == ADAR_1) {
+ if (U_FAILURE(status)) {
+ return;
+ }
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -571,16 +612,25 @@ void HebrewCalendar::validateField(UCalendarDateFields field, UErrorCode &status
* @internal
*/
void HebrewCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
int32_t d = julianDay - 347997;
double m = ClockMath::floorDivide((d * (double)DAY_PARTS), (double) MONTH_PARTS); // Months (approx)
int32_t year = (int32_t)(ClockMath::floorDivide((19. * m + 234.), 235.) + 1.); // Years (approx)
int32_t ys = startOfYear(year, status); // 1st day of year
+ if (U_FAILURE(status)) {
+ return;
+ }
int32_t dayOfYear = (d - ys);
// Because of the postponement rules, it's possible to guess wrong. Fix it.
while (dayOfYear < 1) {
year--;
ys = startOfYear(year, status);
+ if (U_FAILURE(status)) {
+ return;
+ }
dayOfYear = (d - ys);
}
@@ -610,6 +660,23 @@ void HebrewCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status)
int dayOfMonth = dayOfYear - (isLeap ? LEAP_MONTH_START[month][type] : MONTH_START[month][type]);
internalSet(UCAL_ERA, 0);
+ // Check out of bound year
+ int32_t min_year = handleGetLimit(UCAL_EXTENDED_YEAR, UCAL_LIMIT_MINIMUM);
+ if (year < min_year) {
+ if (!isLenient()) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ year = min_year;
+ }
+ int32_t max_year = handleGetLimit(UCAL_EXTENDED_YEAR, UCAL_LIMIT_MAXIMUM);
+ if (max_year < year) {
+ if (!isLenient()) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ year = max_year;
+ }
internalSet(UCAL_YEAR, year);
internalSet(UCAL_EXTENDED_YEAR, year);
int32_t ordinal_month = month;
@@ -619,7 +686,7 @@ void HebrewCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status)
internalSet(UCAL_ORDINAL_MONTH, ordinal_month);
internalSet(UCAL_MONTH, month);
internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
- internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
+ internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
}
//-------------------------------------------------------------------------
@@ -629,37 +696,58 @@ void HebrewCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status)
/**
* @internal
*/
-int32_t HebrewCalendar::handleGetExtendedYear() {
- int32_t year;
+int32_t HebrewCalendar::handleGetExtendedYear(UErrorCode& status ) {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
- year = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
- } else {
- year = internalGet(UCAL_YEAR, 1); // Default to year 1
+ return internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
}
- return year;
+ return internalGet(UCAL_YEAR, 1); // Default to year 1
}
/**
* Return JD of start of given month/year.
* @internal
*/
-int32_t HebrewCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool /*useMonth*/) const {
- UErrorCode status = U_ZERO_ERROR;
+int64_t HebrewCalendar::handleComputeMonthStart(
+ int32_t eyear, int32_t month, UBool /*useMonth*/, UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// Resolve out-of-range months. This is necessary in order to
// obtain the correct year. We correct to
// a 12- or 13-month year (add/subtract 12 or 13, depending
// on the year) but since we _always_ number from 0..12, and
// the leap year determines whether or not month 5 (Adar 1)
// is present, we allow 0..12 in any given year.
+
+ // The month could be in large value, we first roll 235 months to 19 years
+ // before the while loop.
+ if (month <= -MONTHS_IN_CYCLE || month >= MONTHS_IN_CYCLE) {
+ if (uprv_add32_overflow(eyear, (month / MONTHS_IN_CYCLE) * YEARS_IN_CYCLE, &eyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ month %= MONTHS_IN_CYCLE;
+ }
while (month < 0) {
- month += monthsInYear(--eyear);
+ if (uprv_add32_overflow(eyear, -1, &eyear) ||
+ uprv_add32_overflow(month, monthsInYear(eyear), &month)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
}
// Careful: allow 0..12 in all years
while (month > 12) {
- month -= monthsInYear(eyear++);
+ if (uprv_add32_overflow(month, -monthsInYear(eyear), &month) ||
+ uprv_add32_overflow(eyear, 1, &eyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
}
- int32_t day = startOfYear(eyear, status);
+ int64_t day = startOfYear(eyear, status);
if(U_FAILURE(status)) {
return 0;
@@ -673,7 +761,7 @@ int32_t HebrewCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UB
}
}
- return (int) (day + 347997);
+ return day + 347997LL;
}
constexpr uint32_t kHebrewRelatedYearDiff = -3760;
@@ -693,55 +781,16 @@ void HebrewCalendar::setRelatedYear(int32_t year)
set(UCAL_EXTENDED_YEAR, year - kHebrewRelatedYearDiff);
}
-/**
- * The system maintains a static default century start date and Year. They are
- * initialized the first time they are used. Once the system default century date
- * and year are set, they do not change.
- */
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInit {};
-
-UBool HebrewCalendar::haveDefaultCentury() const
-{
- return true;
-}
-
-static void U_CALLCONV initializeSystemDefaultCentury()
-{
- // initialize systemDefaultCentury and systemDefaultCenturyYear based
- // on the current time. They'll be set to 80 years before
- // the current time.
- UErrorCode status = U_ZERO_ERROR;
- HebrewCalendar calendar(Locale("@calendar=hebrew"),status);
- if (U_SUCCESS(status)) {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
-
- gSystemDefaultCenturyStart = calendar.getTime(status);
- gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
- }
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
-}
-
-
-UDate HebrewCalendar::defaultCenturyStart() const {
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t HebrewCalendar::defaultCenturyStartYear() const {
- // lazy-evaluate systemDefaultCenturyStartYear
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
+IMPL_SYSTEM_DEFAULT_CENTURY(HebrewCalendar, "@calendar=hebrew")
bool HebrewCalendar::inTemporalLeapYear(UErrorCode& status) const {
- if (U_FAILURE(status)) return false;
+ if (U_FAILURE(status)) {
+ return false;
+ }
int32_t eyear = get(UCAL_EXTENDED_YEAR, status);
- if (U_FAILURE(status)) return false;
+ if (U_FAILURE(status)) {
+ return false;
+ }
return isLeapYear(eyear);
}
@@ -752,13 +801,17 @@ static const char * const gTemporalMonthCodesForHebrew[] = {
const char* HebrewCalendar::getTemporalMonthCode(UErrorCode& status) const {
int32_t month = get(UCAL_MONTH, status);
- if (U_FAILURE(status)) return nullptr;
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
return gTemporalMonthCodesForHebrew[month];
}
void HebrewCalendar::setTemporalMonthCode(const char* code, UErrorCode& status )
{
- if (U_FAILURE(status)) return;
+ if (U_FAILURE(status)) {
+ return;
+ }
int32_t len = static_cast<int32_t>(uprv_strlen(code));
if (len == 3 || len == 4) {
for (int m = 0; gTemporalMonthCodesForHebrew[m] != nullptr; m++) {
@@ -771,15 +824,26 @@ void HebrewCalendar::setTemporalMonthCode(const char* code, UErrorCode& status )
status = U_ILLEGAL_ARGUMENT_ERROR;
}
-int32_t HebrewCalendar::internalGetMonth() const {
+int32_t HebrewCalendar::internalGetMonth(UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if (resolveFields(kMonthPrecedence) == UCAL_ORDINAL_MONTH) {
int32_t ordinalMonth = internalGet(UCAL_ORDINAL_MONTH);
HebrewCalendar *nonConstThis = (HebrewCalendar*)this; // cast away const
- int32_t year = nonConstThis->handleGetExtendedYear();
- return ordinalMonth + (((!isLeapYear(year)) && (ordinalMonth > ADAR_1)) ? 1: 0);
+ int32_t year = nonConstThis->handleGetExtendedYear(status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ if (isLeapYear(year) || ordinalMonth <= ADAR_1) {
+ return ordinalMonth;
+ }
+ if (!uprv_add32_overflow(ordinalMonth, 1, &ordinalMonth)) {
+ return ordinalMonth;
+ }
}
- return Calendar::internalGetMonth();
+ return Calendar::internalGetMonth(status);
}
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(HebrewCalendar)
diff --git a/icu4c/source/i18n/hebrwcal.h b/icu4c/source/i18n/hebrwcal.h
index 829a64221..342fdb0ef 100644
--- a/icu4c/source/i18n/hebrwcal.h
+++ b/icu4c/source/i18n/hebrwcal.h
@@ -319,7 +319,7 @@ public:
* implementation than the default implementation in Calendar.
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given extended year of this
@@ -350,10 +350,11 @@ public:
* use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
* as UCAL_ERA) specific to the calendar system, depending on which set of
* fields is newer.
+ * @param status
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Return the Julian day number of day before the first day of the
* given month in the given extended year. Subclasses should override
@@ -367,8 +368,8 @@ public:
* day of the given month and year
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
- UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month,
+ UBool useMonth, UErrorCode& status) const override;
/**
@@ -380,24 +381,7 @@ public:
virtual void validateField(UCalendarDateFields field, UErrorCode &status) override;
protected:
- /**
- * Returns true because the Hebrew Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
public:
/**
@@ -442,7 +426,7 @@ public:
virtual void setTemporalMonthCode(const char* code, UErrorCode& status ) override;
protected:
- virtual int32_t internalGetMonth() const override;
+ virtual int32_t internalGetMonth(UErrorCode& status) const override;
private: // Calendar-specific implementation
/**
diff --git a/icu4c/source/i18n/i18n.vcxproj b/icu4c/source/i18n/i18n.vcxproj
index 73ab2d465..eea2571e4 100644
--- a/icu4c/source/i18n/i18n.vcxproj
+++ b/icu4c/source/i18n/i18n.vcxproj
@@ -35,7 +35,6 @@
</Midl>
<ClCompile>
<PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;U_I18N_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\include;..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<CompileAs>Default</CompileAs>
@@ -174,6 +173,17 @@
<ClCompile Include="measunit.cpp" />
<ClCompile Include="measunit_extra.cpp" />
<ClCompile Include="measure.cpp" />
+ <ClCompile Include="messageformat2.cpp" />
+ <ClCompile Include="messageformat2_arguments.cpp" />
+ <ClCompile Include="messageformat2_checker.cpp" />
+ <ClCompile Include="messageformat2_data_model.cpp" />
+ <ClCompile Include="messageformat2_errors.cpp" />
+ <ClCompile Include="messageformat2_evaluation.cpp" />
+ <ClCompile Include="messageformat2_formattable.cpp" />
+ <ClCompile Include="messageformat2_formatter.cpp" />
+ <ClCompile Include="messageformat2_function_registry.cpp" />
+ <ClCompile Include="messageformat2_parser.cpp" />
+ <ClCompile Include="messageformat2_serializer.cpp" />
<ClCompile Include="msgfmt.cpp" />
<ClCompile Include="nfrs.cpp" />
<ClCompile Include="nfrule.cpp" />
diff --git a/icu4c/source/i18n/i18n.vcxproj.filters b/icu4c/source/i18n/i18n.vcxproj.filters
index e35edb5c1..fd0e99497 100644
--- a/icu4c/source/i18n/i18n.vcxproj.filters
+++ b/icu4c/source/i18n/i18n.vcxproj.filters
@@ -213,6 +213,42 @@
<ClCompile Include="measure.cpp">
<Filter>formatting</Filter>
</ClCompile>
+ <ClCompile Include="messageformat2.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_arguments.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_checker.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_context.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_data_model.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_errors.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_evaluation.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_formattable.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_formatter.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_function_registry.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_parser.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
+ <ClCompile Include="messageformat2_serializer.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
<ClCompile Include="msgfmt.cpp">
<Filter>formatting</Filter>
</ClCompile>
diff --git a/icu4c/source/i18n/i18n_uwp.vcxproj b/icu4c/source/i18n/i18n_uwp.vcxproj
index 9afcb5ddb..db763118b 100644
--- a/icu4c/source/i18n/i18n_uwp.vcxproj
+++ b/icu4c/source/i18n/i18n_uwp.vcxproj
@@ -78,7 +78,6 @@
<ExceptionHandling>
</ExceptionHandling>
<FunctionLevelLinking>true</FunctionLevelLinking>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
@@ -407,6 +406,17 @@
<ClCompile Include="measunit.cpp" />
<ClCompile Include="measunit_extra.cpp" />
<ClCompile Include="measure.cpp" />
+ <ClCompile Include="messageformat2.cpp" />
+ <ClCompile Include="messageformat2_arguments.cpp" />
+ <ClCompile Include="messageformat2_checker.cpp" />
+ <ClCompile Include="messageformat2_data_model.cpp" />
+ <ClCompile Include="messageformat2_errors.cpp" />
+ <ClCompile Include="messageformat2_evaluation.cpp" />
+ <ClCompile Include="messageformat2_formattable.cpp" />
+ <ClCompile Include="messageformat2_formatter.cpp" />
+ <ClCompile Include="messageformat2_function_registry.cpp" />
+ <ClCompile Include="messageformat2_parser.cpp" />
+ <ClCompile Include="messageformat2_serializer.cpp" />
<ClCompile Include="msgfmt.cpp" />
<ClCompile Include="nfrs.cpp" />
<ClCompile Include="nfrule.cpp" />
diff --git a/icu4c/source/i18n/indiancal.cpp b/icu4c/source/i18n/indiancal.cpp
index 29c2749f4..1cca8e5f8 100644
--- a/icu4c/source/i18n/indiancal.cpp
+++ b/icu4c/source/i18n/indiancal.cpp
@@ -108,7 +108,7 @@ static UBool isGregorianLeap(int32_t year)
* @param eyear The year in Saka Era
* @param month The month(0-based) in Indian calendar
*/
-int32_t IndianCalendar::handleGetMonthLength(int32_t eyear, int32_t month) const {
+int32_t IndianCalendar::handleGetMonthLength(int32_t eyear, int32_t month, UErrorCode& /* status */) const {
if (month < 0 || month > 11) {
eyear += ClockMath::floorDivide(month, 12, &month);
}
@@ -203,14 +203,20 @@ static double IndianToJD(int32_t year, int32_t month, int32_t date) {
* @param eyear The year in Indian Calendar measured from Saka Era (78 AD).
* @param month The month in Indian calendar
*/
-int32_t IndianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool /* useMonth */ ) const {
+int64_t IndianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool /* useMonth */, UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
//month is 0 based; converting it to 1-based
int32_t imonth;
// If the month is out of range, adjust it into range, and adjust the extended year accordingly
if (month < 0 || month > 11) {
- eyear += (int32_t)ClockMath::floorDivide(month, 12, &month);
+ if (uprv_add32_overflow(eyear, ClockMath::floorDivide(month, 12, &month), &eyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
}
if(month == 12){
@@ -219,16 +225,19 @@ int32_t IndianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UB
imonth = month + 1;
}
- double jd = IndianToJD(eyear ,imonth, 1);
+ int64_t jd = IndianToJD(eyear ,imonth, 1);
- return (int32_t)jd;
+ return jd;
}
//-------------------------------------------------------------------------
// Functions for converting from milliseconds to field values
//-------------------------------------------------------------------------
-int32_t IndianCalendar::handleGetExtendedYear() {
+int32_t IndianCalendar::handleGetExtendedYear(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
int32_t year;
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
@@ -307,7 +316,11 @@ int32_t IndianCalendar::getRelatedYear(UErrorCode &status) const
if (U_FAILURE(status)) {
return 0;
}
- return year + kIndianRelatedYearDiff;
+ if (uprv_add32_overflow(year, kIndianRelatedYearDiff, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return year;
}
void IndianCalendar::setRelatedYear(int32_t year)
@@ -316,60 +329,7 @@ void IndianCalendar::setRelatedYear(int32_t year)
set(UCAL_EXTENDED_YEAR, year - kIndianRelatedYearDiff);
}
-/**
- * The system maintains a static default century start date and Year. They are
- * initialized the first time they are used. Once the system default century date
- * and year are set, they do not change.
- */
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInit {};
-
-
-UBool IndianCalendar::haveDefaultCentury() const
-{
- return true;
-}
-
-static void U_CALLCONV
-initializeSystemDefaultCentury()
-{
- // initialize systemDefaultCentury and systemDefaultCenturyYear based
- // on the current time. They'll be set to 80 years before
- // the current time.
- UErrorCode status = U_ZERO_ERROR;
-
- IndianCalendar calendar ( Locale ( "@calendar=Indian" ), status);
- if ( U_SUCCESS ( status ) ) {
- calendar.setTime ( Calendar::getNow(), status );
- calendar.add ( UCAL_YEAR, -80, status );
-
- UDate newStart = calendar.getTime ( status );
- int32_t newYear = calendar.get ( UCAL_YEAR, status );
-
- gSystemDefaultCenturyStart = newStart;
- gSystemDefaultCenturyStartYear = newYear;
- }
- // We have no recourse upon failure.
-}
-
-
-UDate
-IndianCalendar::defaultCenturyStart() const
-{
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t
-IndianCalendar::defaultCenturyStartYear() const
-{
- // lazy-evaluate systemDefaultCenturyStartYear
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
-
+IMPL_SYSTEM_DEFAULT_CENTURY(IndianCalendar, "@calendar=indian")
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IndianCalendar)
diff --git a/icu4c/source/i18n/indiancal.h b/icu4c/source/i18n/indiancal.h
index 5ef9113a8..2062bcec9 100644
--- a/icu4c/source/i18n/indiancal.h
+++ b/icu4c/source/i18n/indiancal.h
@@ -209,7 +209,7 @@ public:
* @param year The month(0-based) in Indian year
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Indian year
@@ -225,7 +225,7 @@ public:
/**
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
//-------------------------------------------------------------------------
// Functions for converting from milliseconds to field values
@@ -234,7 +234,7 @@ public:
/**
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Override Calendar to compute several fields specific to the Indian
@@ -304,24 +304,8 @@ private:
// Default century.
protected:
- /**
- * Returns true because the Indian Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/inputext.cpp b/icu4c/source/i18n/inputext.cpp
index bce9862c0..0351518b7 100644
--- a/icu4c/source/i18n/inputext.cpp
+++ b/icu4c/source/i18n/inputext.cpp
@@ -30,8 +30,8 @@ InputText::InputText(UErrorCode &status)
// removed if appropriate.
fByteStats(NEW_ARRAY(int16_t, 256)), // byte frequency statistics for the input text.
// Value is percent, not absolute.
- fDeclaredEncoding(0),
- fRawInput(0),
+ fDeclaredEncoding(nullptr),
+ fRawInput(nullptr),
fRawLength(0)
{
if (fInputBytes == nullptr || fByteStats == nullptr) {
diff --git a/icu4c/source/i18n/islamcal.cpp b/icu4c/source/i18n/islamcal.cpp
index c21530a73..d299358a5 100644
--- a/icu4c/source/i18n/islamcal.cpp
+++ b/icu4c/source/i18n/islamcal.cpp
@@ -55,7 +55,6 @@ static void debug_islamcal_msg(const char *pat, ...)
// --- The cache --
// cache of months
static icu::CalendarCache *gMonthCache = nullptr;
-static icu::CalendarAstronomer *gIslamicCalendarAstro = nullptr;
U_CDECL_BEGIN
static UBool calendar_islamic_cleanup() {
@@ -63,10 +62,6 @@ static UBool calendar_islamic_cleanup() {
delete gMonthCache;
gMonthCache = nullptr;
}
- if (gIslamicCalendarAstro) {
- delete gIslamicCalendarAstro;
- gIslamicCalendarAstro = nullptr;
- }
return true;
}
U_CDECL_END
@@ -192,15 +187,6 @@ static const int UMALQURA_MONTHLENGTH[] = {
0x06AA, 0x0AD6, 0x055D, 0x029D
};
-int32_t getUmalqura_MonthLength(int32_t y, int32_t m) {
- int32_t mask = (int32_t) (0x01 << (11 - m)); // set mask for bit corresponding to month
- if((UMALQURA_MONTHLENGTH[y] & mask) == 0 )
- return 29;
- else
- return 30;
-
-}
-
//-------------------------------------------------------------------------
// Constructors...
//-------------------------------------------------------------------------
@@ -273,6 +259,8 @@ int32_t IslamicCalendar::handleGetLimit(UCalendarDateFields field, ELimitType li
// Assorted calculation utilities
//
+namespace {
+
// we could compress this down more if we need to
static const int8_t umAlQuraYrStartEstimateFix[] = {
0, 0, -1, 0, -1, 0, 0, 0, 0, 0, // 1300..
@@ -311,16 +299,19 @@ static const int8_t umAlQuraYrStartEstimateFix[] = {
/**
* Determine whether a year is a leap year in the Islamic civil calendar
*/
-UBool IslamicCalendar::civilLeapYear(int32_t year)
-{
+inline bool civilLeapYear(int32_t year) {
return (14 + 11 * year) % 30 < 11;
}
+int32_t trueMonthStart(int32_t month);
+
+} // namespace
+
/**
* Return the day # on which the given year starts. Days are counted
* from the Hijri epoch, origin 0.
*/
-int32_t IslamicCalendar::yearStart(int32_t year) const{
+int64_t IslamicCalendar::yearStart(int32_t year) const{
return trueMonthStart(12*(year-1));
}
@@ -331,10 +322,33 @@ int32_t IslamicCalendar::yearStart(int32_t year) const{
* @param year The hijri year
* @param month The hijri month, 0-based (assumed to be in range 0..11)
*/
-int32_t IslamicCalendar::monthStart(int32_t year, int32_t month) const {
- return trueMonthStart(12*(year-1) + month);
+int64_t IslamicCalendar::monthStart(int32_t year, int32_t month, UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ int32_t temp;
+ if (uprv_add32_overflow(year, -1, &temp) ||
+ uprv_mul32_overflow(temp, 12, &temp) ||
+ uprv_add32_overflow(temp, month, &month)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+
+ return trueMonthStart(month);
}
+namespace {
+/**
+ * Return the "age" of the moon at the given time; this is the difference
+ * in ecliptic latitude between the moon and the sun. This method simply
+ * calls CalendarAstronomer.moonAge, converts to degrees,
+ * and adjusts the resultto be in the range [-180, 180].
+ *
+ * @param time The time at which the moon's age is desired,
+ * in millis since 1/1/1970.
+ */
+double moonAge(UDate time);
+
/**
* Find the day number on which a particular month of the true/lunar
* Islamic calendar starts.
@@ -343,82 +357,46 @@ int32_t IslamicCalendar::monthStart(int32_t year, int32_t month) const {
*
* @return The day number on which the given month starts.
*/
-int32_t IslamicCalendar::trueMonthStart(int32_t month) const
-{
+int32_t trueMonthStart(int32_t month) {
+ ucln_i18n_registerCleanup(UCLN_I18N_ISLAMIC_CALENDAR, calendar_islamic_cleanup);
UErrorCode status = U_ZERO_ERROR;
- int32_t start = CalendarCache::get(&gMonthCache, month, status);
+ int64_t start = CalendarCache::get(&gMonthCache, month, status);
- if (start==0) {
+ if (U_SUCCESS(status) && start==0) {
// Make a guess at when the month started, using the average length
UDate origin = HIJRA_MILLIS
+ uprv_floor(month * CalendarAstronomer::SYNODIC_MONTH) * kOneDay;
// moonAge will fail due to memory allocation error
- double age = moonAge(origin, status);
- if (U_FAILURE(status)) {
- goto trueMonthStartEnd;
- }
+ double age = moonAge(origin);
if (age >= 0) {
// The month has already started
do {
origin -= kOneDay;
- age = moonAge(origin, status);
- if (U_FAILURE(status)) {
- goto trueMonthStartEnd;
- }
+ age = moonAge(origin);
} while (age >= 0);
}
else {
// Preceding month has not ended yet.
do {
origin += kOneDay;
- age = moonAge(origin, status);
- if (U_FAILURE(status)) {
- goto trueMonthStartEnd;
- }
+ age = moonAge(origin);
} while (age < 0);
}
- start = (int32_t)(ClockMath::floorDivide(
- (int64_t)((int64_t)origin - HIJRA_MILLIS), (int64_t)kOneDay) + 1);
+ start = ClockMath::floorDivideInt64(
+ (int64_t)((int64_t)origin - HIJRA_MILLIS), (int64_t)kOneDay) + 1;
CalendarCache::put(&gMonthCache, month, start, status);
}
-trueMonthStartEnd :
if(U_FAILURE(status)) {
start = 0;
}
return start;
}
-/**
-* Return the "age" of the moon at the given time; this is the difference
-* in ecliptic latitude between the moon and the sun. This method simply
-* calls CalendarAstronomer.moonAge, converts to degrees,
-* and adjusts the result to be in the range [-180, 180].
-*
-* @param time The time at which the moon's age is desired,
-* in millis since 1/1/1970.
-*/
-double IslamicCalendar::moonAge(UDate time, UErrorCode &status)
-{
- double age = 0;
-
- static UMutex astroLock; // pod bay door lock
- umtx_lock(&astroLock);
- if(gIslamicCalendarAstro == nullptr) {
- gIslamicCalendarAstro = new CalendarAstronomer();
- if (gIslamicCalendarAstro == nullptr) {
- status = U_MEMORY_ALLOCATION_ERROR;
- return age;
- }
- ucln_i18n_registerCleanup(UCLN_I18N_ISLAMIC_CALENDAR, calendar_islamic_cleanup);
- }
- gIslamicCalendarAstro->setTime(time);
- age = gIslamicCalendarAstro->getMoonAge();
- umtx_unlock(&astroLock);
-
+double moonAge(UDate time) {
// Convert to degrees and normalize...
- age = age * 180 / CalendarAstronomer::PI;
+ double age = CalendarAstronomer(time).getMoonAge() * 180 / CalendarAstronomer::PI;
if (age > 180) {
age = age - 360;
}
@@ -426,6 +404,7 @@ double IslamicCalendar::moonAge(UDate time, UErrorCode &status)
return age;
}
+} // namespace
//----------------------------------------------------------------------
// Calendar framework
//----------------------------------------------------------------------
@@ -437,7 +416,8 @@ double IslamicCalendar::moonAge(UDate time, UErrorCode &status)
* @param year The hijri month, 0-based
* @draft ICU 2.4
*/
-int32_t IslamicCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
+int32_t IslamicCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month,
+ UErrorCode& /* status */) const {
month = 12*(extendedYear-1) + month;
return trueMonthStart(month+1) - trueMonthStart(month) ;
}
@@ -463,18 +443,30 @@ int32_t IslamicCalendar::handleGetYearLength(int32_t extendedYear) const {
/**
* @draft ICU 2.4
*/
-int32_t IslamicCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool /* useMonth */) const {
+int64_t IslamicCalendar::handleComputeMonthStart(int32_t eyear, int32_t month,
+ UBool /* useMonth */,
+ UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// This may be called by Calendar::handleComputeJulianDay with months out of the range
// 0..11. Need to handle that here since monthStart requires months in the range 0.11.
if (month > 11) {
eyear += (month / 12);
+ if (uprv_add32_overflow(eyear, (month / 12), &eyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
month %= 12;
} else if (month < 0) {
month++;
- eyear += (month / 12) - 1;
+ if (uprv_add32_overflow(eyear, (month / 12) - 1, &eyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
month = (month % 12) + 11;
}
- return monthStart(eyear, month) + getEpoc() - 1;
+ return monthStart(eyear, month, status) + getEpoc() - 1;
}
//-------------------------------------------------------------------------
@@ -484,14 +476,11 @@ int32_t IslamicCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U
/**
* @draft ICU 2.4
*/
-int32_t IslamicCalendar::handleGetExtendedYear() {
- int32_t year;
+int32_t IslamicCalendar::handleGetExtendedYear(UErrorCode& /* status */) {
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
- year = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
- } else {
- year = internalGet(UCAL_YEAR, 1); // Default to year 1
+ return internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
}
- return year;
+ return internalGet(UCAL_YEAR, 1); // Default to year 1
}
/**
@@ -519,11 +508,7 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status)
int32_t startDate = (int32_t)uprv_floor(month * CalendarAstronomer::SYNODIC_MONTH);
- double age = moonAge(internalGetTime(), status);
- if (U_FAILURE(status)) {
- status = U_MEMORY_ALLOCATION_ERROR;
- return;
- }
+ double age = moonAge(internalGetTime());
if ( days - startDate >= 25 && age > 0) {
// If we're near the end of the month, assume next month and search backwards
month++;
@@ -538,10 +523,24 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status)
int32_t year = month >= 0 ? ((month / 12) + 1) : ((month + 1 ) / 12);
month = ((month % 12) + 12 ) % 12;
- int32_t dayOfMonth = (days - monthStart(year, month)) + 1;
+ int64_t dayOfMonth = (days - monthStart(year, month, status)) + 1;
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (dayOfMonth > INT32_MAX || dayOfMonth < INT32_MIN) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
// Now figure out the day of the year.
- int32_t dayOfYear = (days - monthStart(year, 0)) + 1;
+ int64_t dayOfYear = (days - monthStart(year, 0, status)) + 1;
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (dayOfYear > INT32_MAX || dayOfYear < INT32_MIN) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
internalSet(UCAL_ERA, 0);
internalSet(UCAL_YEAR, year);
@@ -582,7 +581,8 @@ int32_t IslamicCalendar::getRelatedYear(UErrorCode &status) const
return gregoYearFromIslamicStart(year);
}
-static int32_t firstIslamicStartYearFromGrego(int32_t year) {
+void IslamicCalendar::setRelatedYear(int32_t year)
+{
// ad hoc conversion, improve under #10752
// rough est for now, ok for grego 1846-2138,
// otherwise occasionally wrong (for 3% of years)
@@ -596,69 +596,20 @@ static int32_t firstIslamicStartYearFromGrego(int32_t year) {
offset = -(year - 1976) % 65;
shift = 2*cycle + ((offset <= 32)? 1: 0);
}
- return year - 579 + shift;
-}
-
-void IslamicCalendar::setRelatedYear(int32_t year)
-{
- set(UCAL_EXTENDED_YEAR, firstIslamicStartYearFromGrego(year));
-}
-
-/**
- * The system maintains a static default century start date and Year. They are
- * initialized the first time they are used. Once the system default century date
- * and year are set, they do not change.
- */
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInit {};
-
-
-UBool IslamicCalendar::haveDefaultCentury() const
-{
- return true;
+ year = year - 579 + shift;
+ set(UCAL_EXTENDED_YEAR, year);
}
-UDate IslamicCalendar::defaultCenturyStart() const
-{
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t IslamicCalendar::defaultCenturyStartYear() const
-{
- // lazy-evaluate systemDefaultCenturyStartYear
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
+IMPL_SYSTEM_DEFAULT_CENTURY(IslamicCalendar, "@calendar=islamic-civil")
bool
IslamicCalendar::inTemporalLeapYear(UErrorCode &status) const
{
int32_t days = getActualMaximum(UCAL_DAY_OF_YEAR, status);
- if (U_FAILURE(status)) return false;
- return days == 355;
-}
-
-
-U_CFUNC void U_CALLCONV
-IslamicCalendar::initializeSystemDefaultCentury()
-{
- // initialize systemDefaultCentury and systemDefaultCenturyYear based
- // on the current time. They'll be set to 80 years before
- // the current time.
- UErrorCode status = U_ZERO_ERROR;
- IslamicCalendar calendar(Locale("@calendar=islamic-civil"),status);
- if (U_SUCCESS(status)) {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
-
- gSystemDefaultCenturyStart = calendar.getTime(status);
- gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
+ if (U_FAILURE(status)) {
+ return false;
}
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
+ return days == 355;
}
/*****************************************************************************
@@ -685,10 +636,8 @@ IslamicCivilCalendar* IslamicCivilCalendar::clone() const {
* Return the day # on which the given year starts. Days are counted
* from the Hijri epoch, origin 0.
*/
-int32_t IslamicCivilCalendar::yearStart(int32_t year) const{
- return static_cast<int32_t>(
- (year-1)*354 + ClockMath::floorDivide((3+11*static_cast<int64_t>(year)),
- static_cast<int64_t>(30)));
+int64_t IslamicCivilCalendar::yearStart(int32_t year) const{
+ return 354LL * (year-1LL) + ClockMath::floorDivideInt64(3 + 11LL * year, 30LL);
}
/**
@@ -698,13 +647,12 @@ int32_t IslamicCivilCalendar::yearStart(int32_t year) const{
* @param year The hijri year
* @param month The hijri month, 0-based (assumed to be in range 0..11)
*/
-int32_t IslamicCivilCalendar::monthStart(int32_t year, int32_t month) const {
+int64_t IslamicCivilCalendar::monthStart(int32_t year, int32_t month, UErrorCode& /*status*/) const {
// This does not handle months out of the range 0..11
- return static_cast<int32_t>(
- uprv_ceil(29.5*month) + (year-1)*354 +
- static_cast<int32_t>(ClockMath::floorDivide(
- 3+11*static_cast<int64_t>(year),
- static_cast<int64_t>(30))));
+ return static_cast<int64_t>(
+ uprv_ceil(29.5*month) + 354LL*(year-1LL) +
+ ClockMath::floorDivideInt64(
+ 11LL*static_cast<int64_t>(year) + 3LL, 30LL));
}
/**
@@ -714,7 +662,8 @@ int32_t IslamicCivilCalendar::monthStart(int32_t year, int32_t month) const {
* @param year The hijri month, 0-based
* @draft ICU 2.4
*/
-int32_t IslamicCivilCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
+int32_t IslamicCivilCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month,
+ UErrorCode& /* status */) const {
int32_t length = 29 + (month+1) % 2;
if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
length++;
@@ -751,17 +700,30 @@ void IslamicCivilCalendar::handleComputeFields(int32_t julianDay, UErrorCode &st
int32_t days = julianDay - getEpoc();
// Use the civil calendar approximation, which is just arithmetic
- int32_t year = static_cast<int32_t>(
- ClockMath::floorDivide(30 * static_cast<int64_t>(days) + 10646,
- static_cast<int64_t>(10631)));
+ int64_t year =
+ ClockMath::floorDivideInt64(30LL * days + 10646LL, 10631LL);
int32_t month = static_cast<int32_t>(
uprv_ceil((days - 29 - yearStart(year)) / 29.5 ));
month = month<11?month:11;
- int32_t dayOfMonth = (days - monthStart(year, month)) + 1;
+ int64_t dayOfMonth = (days - monthStart(year, month, status)) + 1;
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (dayOfMonth > INT32_MAX || dayOfMonth < INT32_MIN) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
// Now figure out the day of the year.
- int32_t dayOfYear = (days - monthStart(year, 0)) + 1;
+ int64_t dayOfYear = (days - monthStart(year, 0, status)) + 1;
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (dayOfYear > INT32_MAX || dayOfYear < INT32_MIN) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
internalSet(UCAL_ERA, 0);
internalSet(UCAL_YEAR, year);
@@ -799,7 +761,7 @@ int32_t IslamicTBLACalendar::getEpoc() const {
* IslamicUmalquraCalendar
*****************************************************************************/
IslamicUmalquraCalendar::IslamicUmalquraCalendar(const Locale& aLocale, UErrorCode& success)
- : IslamicCalendar(aLocale, success)
+ : IslamicCivilCalendar(aLocale, success)
{
}
@@ -819,15 +781,13 @@ IslamicUmalquraCalendar* IslamicUmalquraCalendar::clone() const {
* Return the day # on which the given year starts. Days are counted
* from the Hijri epoch, origin 0.
*/
-int32_t IslamicUmalquraCalendar::yearStart(int32_t year) const {
+int64_t IslamicUmalquraCalendar::yearStart(int32_t year) const {
if (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END) {
- return static_cast<int32_t>(
- (year-1)*354 + ClockMath::floorDivide((3+11*static_cast<int64_t>(year)),
- static_cast<int64_t>(30)));
+ return IslamicCivilCalendar::yearStart(year);
}
year -= UMALQURA_YEAR_START;
// rounded least-squares fit of the dates previously calculated from UMALQURA_MONTHLENGTH iteration
- int32_t yrStartLinearEstimate = static_cast<int32_t>(
+ int64_t yrStartLinearEstimate = static_cast<int64_t>(
(354.36720 * (double)year) + 460322.05 + 0.5);
// need a slight correction to some
return yrStartLinearEstimate + umAlQuraYrStartEstimateFix[year];
@@ -840,10 +800,16 @@ int32_t IslamicUmalquraCalendar::yearStart(int32_t year) const {
* @param year The hijri year
* @param month The hijri month, 0-based (assumed to be in range 0..11)
*/
-int32_t IslamicUmalquraCalendar::monthStart(int32_t year, int32_t month) const {
- int32_t ms = yearStart(year);
+int64_t IslamicUmalquraCalendar::monthStart(int32_t year, int32_t month, UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ int64_t ms = yearStart(year);
for(int i=0; i< month; i++){
- ms+= handleGetMonthLength(year, i);
+ ms+= handleGetMonthLength(year, i, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
}
return ms;
}
@@ -854,16 +820,18 @@ int32_t IslamicUmalquraCalendar::monthStart(int32_t year, int32_t month) const {
* @param year The hijri year
* @param year The hijri month, 0-based
*/
-int32_t IslamicUmalquraCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
- int32_t length = 0;
+int32_t IslamicUmalquraCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month,
+ UErrorCode& status) const {
if (extendedYear<UMALQURA_YEAR_START || extendedYear>UMALQURA_YEAR_END) {
- length = 29 + (month+1) % 2;
- if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
- length++;
- }
- return length;
+ return IslamicCivilCalendar::handleGetMonthLength(extendedYear, month, status);
}
- return getUmalqura_MonthLength(extendedYear - UMALQURA_YEAR_START, month);
+ int32_t length = 29;
+ int32_t mask = (int32_t) (0x01 << (11 - month)); // set mask for bit corresponding to month
+ int32_t index = extendedYear - UMALQURA_YEAR_START;
+ if ((UMALQURA_MONTHLENGTH[index] & mask) != 0) {
+ length++;
+ }
+ return length;
}
/**
@@ -872,13 +840,15 @@ int32_t IslamicUmalquraCalendar::handleGetMonthLength(int32_t extendedYear, int3
*/
int32_t IslamicUmalquraCalendar::handleGetYearLength(int32_t extendedYear) const {
if (extendedYear<UMALQURA_YEAR_START || extendedYear>UMALQURA_YEAR_END) {
- return 354 + (civilLeapYear(extendedYear) ? 1 : 0);
+ return IslamicCivilCalendar::handleGetYearLength(extendedYear);
}
- int len = 0;
+ int length = 0;
+ UErrorCode internalStatus = U_ZERO_ERROR;
for(int i=0; i<12; i++) {
- len += handleGetMonthLength(extendedYear, i);
+ length += handleGetMonthLength(extendedYear, i, internalStatus);
}
- return len;
+ U_ASSERT(U_SUCCESS(internalStatus));
+ return length;
}
/**
@@ -899,45 +869,58 @@ int32_t IslamicUmalquraCalendar::handleGetYearLength(int32_t extendedYear) const
*/
void IslamicUmalquraCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) {
if (U_FAILURE(status)) return;
- int32_t year, month, dayOfMonth, dayOfYear;
+ int64_t year;
+ int32_t month;
int32_t days = julianDay - getEpoc();
- int32_t umalquraStartdays = yearStart(UMALQURA_YEAR_START) ;
- if (days < umalquraStartdays) {
- //Use Civil calculation
- year = (int32_t)ClockMath::floorDivide(
- (30 * (int64_t)days + 10646) , (int64_t)10631.0 );
- month = (int32_t)uprv_ceil((days - 29 - yearStart(year)) / 29.5 );
- month = month < 11 ? month : 11;
- } else {
- int y =UMALQURA_YEAR_START-1, m =0;
- long d = 1;
- while (d > 0) {
- y++;
- d = days - yearStart(y) +1;
- if (d == handleGetYearLength(y)) {
- m=11;
- break;
- }
- if (d < handleGetYearLength(y)){
- int monthLen = handleGetMonthLength(y, m);
- m=0;
- while(d > monthLen){
- d -= monthLen;
- m++;
- monthLen = handleGetMonthLength(y, m);
+ static int64_t kUmalquraStart = yearStart(UMALQURA_YEAR_START);
+ if (days < kUmalquraStart) {
+ IslamicCivilCalendar::handleComputeFields(julianDay, status);
+ return;
+ }
+ // Estimate a value y which is closer to but not greater than the year.
+ // It is the inverse function of the logic inside
+ // IslamicUmalquraCalendar::yearStart().
+ year = ((double(days) - (460322.05 + 0.5)) / 354.36720) + UMALQURA_YEAR_START - 1;
+ month = 0;
+ int32_t d = 1;
+ // need a slight correction to some
+ while (d > 0) {
+ d = days - yearStart(++year) + 1;
+ int32_t yearLength = handleGetYearLength(year);
+ if (d == yearLength) {
+ month = 11;
+ break;
+ }
+ if (d < yearLength){
+ int32_t monthLen = handleGetMonthLength(year, month, status);
+ for (month = 0;
+ d > monthLen;
+ monthLen = handleGetMonthLength(year, ++month, status)) {
+ if (U_FAILURE(status)) {
+ return;
}
- break;
+ d -= monthLen;
}
+ break;
}
- year = y;
- month = m;
}
- dayOfMonth = (days - monthStart(year, month)) + 1;
-
- // Now figure out the day of the year.
- dayOfYear = (days - monthStart(year, 0)) + 1;
+ int32_t dayOfMonth = monthStart(year, month, status);
+ int32_t dayOfYear = monthStart(year, 0, status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (uprv_mul32_overflow(dayOfMonth, -1, &dayOfMonth) ||
+ uprv_add32_overflow(dayOfMonth, days, &dayOfMonth) ||
+ uprv_add32_overflow(dayOfMonth, 1, &dayOfMonth) ||
+ // Now figure out the day of the year.
+ uprv_mul32_overflow(dayOfYear, -1, &dayOfYear) ||
+ uprv_add32_overflow(dayOfYear, days, &dayOfYear) ||
+ uprv_add32_overflow(dayOfYear, 1, &dayOfYear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
internalSet(UCAL_ERA, 0);
internalSet(UCAL_YEAR, year);
diff --git a/icu4c/source/i18n/islamcal.h b/icu4c/source/i18n/islamcal.h
index 8469269bc..1fb9ecd50 100644
--- a/icu4c/source/i18n/islamcal.h
+++ b/icu4c/source/i18n/islamcal.h
@@ -198,15 +198,10 @@ class U_I18N_API IslamicCalendar : public Calendar {
protected:
/**
- * Determine whether a year is a leap year in the Islamic civil calendar
- */
- static UBool civilLeapYear(int32_t year);
-
- /**
* Return the day # on which the given year starts. Days are counted
* from the Hijri epoch, origin 0.
*/
- virtual int32_t yearStart(int32_t year) const;
+ virtual int64_t yearStart(int32_t year) const;
/**
* Return the day # on which the given month starts. Days are counted
@@ -215,29 +210,8 @@ class U_I18N_API IslamicCalendar : public Calendar {
* @param year The hijri year
* @param year The hijri month, 0-based
*/
- virtual int32_t monthStart(int32_t year, int32_t month) const;
-
- /**
- * Find the day number on which a particular month of the true/lunar
- * Islamic calendar starts.
- *
- * @param month The month in question, origin 0 from the Hijri epoch
- *
- * @return The day number on which the given month starts.
- */
- int32_t trueMonthStart(int32_t month) const;
+ virtual int64_t monthStart(int32_t year, int32_t month, UErrorCode& status) const;
- private:
- /**
- * Return the "age" of the moon at the given time; this is the difference
- * in ecliptic latitude between the moon and the sun. This method simply
- * calls CalendarAstronomer.moonAge, converts to degrees,
- * and adjusts the resultto be in the range [-180, 180].
- *
- * @param time The time at which the moon's age is desired,
- * in millis since 1/1/1970.
- */
- static double moonAge(UDate time, UErrorCode &status);
//----------------------------------------------------------------------
// Calendar framework
@@ -255,7 +229,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Islamic year
@@ -271,7 +245,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
/**
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
//-------------------------------------------------------------------------
// Functions for converting from milliseconds to field values
@@ -280,7 +254,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
/**
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Override Calendar to compute several fields specific to the Islamic
@@ -364,32 +338,8 @@ class U_I18N_API IslamicCalendar : public Calendar {
// Default century.
protected:
- /**
- * Returns true because the Islamic Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
-
- private:
- /**
- * Initializes the 100-year window that dates with 2-digit years
- * are considered to fall within so that its start date is 80 years
- * before the current time.
- */
- static void U_CALLCONV initializeSystemDefaultCentury();
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
/*
@@ -463,7 +413,7 @@ class U_I18N_API IslamicCivilCalendar : public IslamicCalendar {
* from the Hijri epoch, origin 0.
* @internal
*/
- virtual int32_t yearStart(int32_t year) const override;
+ virtual int64_t yearStart(int32_t year) const override;
/**
* Return the day # on which the given month starts. Days are counted
@@ -473,7 +423,7 @@ class U_I18N_API IslamicCivilCalendar : public IslamicCalendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t monthStart(int32_t year, int32_t month) const override;
+ virtual int64_t monthStart(int32_t year, int32_t month, UErrorCode& status) const override;
/**
* Return the length (in days) of the given month.
@@ -482,7 +432,7 @@ class U_I18N_API IslamicCivilCalendar : public IslamicCalendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Islamic year
@@ -584,7 +534,7 @@ class U_I18N_API IslamicTBLACalendar : public IslamicCivilCalendar {
* IslamicUmalquraCalendar
* This calendar is referred as "Islamic calendar, Umm al-Qura" in CLDR.
*/
-class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
+class U_I18N_API IslamicUmalquraCalendar : public IslamicCivilCalendar {
public:
/**
* Constructs an IslamicUmalquraCalendar based on the current time in the default time zone
@@ -646,7 +596,7 @@ class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
* from the Hijri epoch, origin 0.
* @internal
*/
- virtual int32_t yearStart(int32_t year) const override;
+ virtual int64_t yearStart(int32_t year) const override;
/**
* Return the day # on which the given month starts. Days are counted
@@ -656,7 +606,7 @@ class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t monthStart(int32_t year, int32_t month) const override;
+ virtual int64_t monthStart(int32_t year, int32_t month, UErrorCode& status) const override;
/**
* Return the length (in days) of the given month.
@@ -665,7 +615,7 @@ class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Islamic year
diff --git a/icu4c/source/i18n/iso8601cal.cpp b/icu4c/source/i18n/iso8601cal.cpp
index c3288bc6b..6bb7579e7 100644
--- a/icu4c/source/i18n/iso8601cal.cpp
+++ b/icu4c/source/i18n/iso8601cal.cpp
@@ -14,11 +14,12 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ISO8601Calendar)
ISO8601Calendar::ISO8601Calendar(const Locale& aLocale, UErrorCode& success)
: GregorianCalendar(aLocale, success)
{
- UErrorCode fwStatus = U_ZERO_ERROR;
- int32_t fwLength = aLocale.getKeywordValue("fw", nullptr, 0, fwStatus);
- // Do not set first day of week for iso8601 to Monday if we have fw keyword
+ UErrorCode tempStatus = U_ZERO_ERROR;
+ int32_t length = aLocale.getKeywordValue("fw", nullptr, 0, tempStatus) +
+ aLocale.getKeywordValue("rg", nullptr, 0, tempStatus);
+ // Do not set first day of week for iso8601 to Monday if we have fw or rg keywords
// and let the value set by the Calendar constructor to take care of it.
- if (U_SUCCESS(fwStatus) && fwLength == 0) {
+ if (U_SUCCESS(tempStatus) && length == 0) {
setFirstDayOfWeek(UCAL_MONDAY);
}
setMinimalDaysInFirstWeek(4);
diff --git a/icu4c/source/i18n/iso8601cal.h b/icu4c/source/i18n/iso8601cal.h
index 688fac358..957f12e4f 100644
--- a/icu4c/source/i18n/iso8601cal.h
+++ b/icu4c/source/i18n/iso8601cal.h
@@ -90,6 +90,8 @@ class ISO8601Calendar : public GregorianCalendar {
*/
virtual const char * getType() const override;
+ protected:
+ virtual bool isEra0CountingBackward() const override { return false; }
private:
diff --git a/icu4c/source/i18n/japancal.cpp b/icu4c/source/i18n/japancal.cpp
index fc18d6c0e..7e69b97a3 100644
--- a/icu4c/source/i18n/japancal.cpp
+++ b/icu4c/source/i18n/japancal.cpp
@@ -146,8 +146,11 @@ const char *JapaneseCalendar::getType() const
return "japanese";
}
-int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear)
+int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear, UErrorCode& status)
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
int32_t era = internalGetEra();
// TODO do we assume we can trust 'era'? What if it is denormalized?
@@ -155,9 +158,10 @@ int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear)
// Find out if we are at the edge of an era
int32_t eraStart[3] = { 0,0,0 };
- UErrorCode status = U_ZERO_ERROR;
gJapaneseEraRules->getStartDate(era, eraStart, status);
- U_ASSERT(U_SUCCESS(status));
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if(eyear == eraStart[0]) {
// Yes, we're in the first year of this era.
return eraStart[1] // month
@@ -176,12 +180,9 @@ int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t eyear, int32_t month)
UErrorCode status = U_ZERO_ERROR;
gJapaneseEraRules->getStartDate(era, eraStart, status);
U_ASSERT(U_SUCCESS(status));
- if(eyear == eraStart[0]) {
- if(month == eraStart[1] - 1) {
- return eraStart[2];
- }
+ if (eyear == eraStart[0] && (month == eraStart[1] - 1)) {
+ return eraStart[2];
}
-
return day;
}
@@ -191,24 +192,29 @@ int32_t JapaneseCalendar::internalGetEra() const
return internalGet(UCAL_ERA, gCurrentEra);
}
-int32_t JapaneseCalendar::handleGetExtendedYear()
+int32_t JapaneseCalendar::handleGetExtendedYear(UErrorCode& status)
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// EXTENDED_YEAR in JapaneseCalendar is a Gregorian year
// The default value of EXTENDED_YEAR is 1970 (Showa 45)
- int32_t year;
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR &&
newerField(UCAL_EXTENDED_YEAR, UCAL_ERA) == UCAL_EXTENDED_YEAR) {
- year = internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
- } else {
- UErrorCode status = U_ZERO_ERROR;
- int32_t eraStartYear = gJapaneseEraRules->getStartYear(internalGet(UCAL_ERA, gCurrentEra), status);
- U_ASSERT(U_SUCCESS(status));
-
- // extended year is a gregorian year, where 1 = 1AD, 0 = 1BC, -1 = 2BC, etc
- year = internalGet(UCAL_YEAR, 1) // pin to minimum of year 1 (first year)
- + eraStartYear // add gregorian starting year
- - 1; // Subtract one because year starts at 1
+ return internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
+ }
+ int32_t eraStartYear = gJapaneseEraRules->getStartYear(internalGet(UCAL_ERA, gCurrentEra), status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+
+ // extended year is a gregorian year, where 1 = 1AD, 0 = 1BC, -1 = 2BC, etc
+ int32_t year = internalGet(UCAL_YEAR, 1); // pin to minimum of year 1 (first year)
+ // add gregorian starting year, subtract one because year starts at 1
+ if (uprv_add32_overflow(year, eraStartYear - 1, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
}
return year;
}
@@ -219,7 +225,7 @@ void JapaneseCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status
//Calendar::timeToFields(theTime, quick, status);
GregorianCalendar::handleComputeFields(julianDay, status);
int32_t year = internalGet(UCAL_EXTENDED_YEAR); // Gregorian year
- int32_t eraIdx = gJapaneseEraRules->getEraIndex(year, internalGetMonth() + 1, internalGet(UCAL_DAY_OF_MONTH), status);
+ int32_t eraIdx = gJapaneseEraRules->getEraIndex(year, internalGetMonth(status) + 1, internalGet(UCAL_DAY_OF_MONTH), status);
internalSet(UCAL_ERA, eraIdx);
internalSet(UCAL_YEAR, year - gJapaneseEraRules->getStartYear(eraIdx, status) + 1);
@@ -277,31 +283,30 @@ int32_t JapaneseCalendar::handleGetLimit(UCalendarDateFields field, ELimitType l
}
int32_t JapaneseCalendar::getActualMaximum(UCalendarDateFields field, UErrorCode& status) const {
- if (field == UCAL_YEAR) {
- int32_t era = get(UCAL_ERA, status);
- if (U_FAILURE(status)) {
- return 0; // error case... any value
- }
- if (era == gJapaneseEraRules->getNumberOfEras() - 1) { // max known era, not gCurrentEra
- // TODO: Investigate what value should be used here - revisit after 4.0.
- return handleGetLimit(UCAL_YEAR, UCAL_LIMIT_MAXIMUM);
- } else {
- int32_t nextEraStart[3] = { 0,0,0 };
- gJapaneseEraRules->getStartDate(era + 1, nextEraStart, status);
- int32_t nextEraYear = nextEraStart[0];
- int32_t nextEraMonth = nextEraStart[1]; // 1-base
- int32_t nextEraDate = nextEraStart[2];
-
- int32_t eraStartYear = gJapaneseEraRules->getStartYear(era, status);
- int32_t maxYear = nextEraYear - eraStartYear + 1; // 1-base
- if (nextEraMonth == 1 && nextEraDate == 1) {
- // Subtract 1, because the next era starts at Jan 1
- maxYear--;
- }
- return maxYear;
- }
+ if (field != UCAL_YEAR) {
+ return GregorianCalendar::getActualMaximum(field, status);
+ }
+ int32_t era = get(UCAL_ERA, status);
+ if (U_FAILURE(status)) {
+ return 0; // error case... any value
+ }
+ if (era == gJapaneseEraRules->getNumberOfEras() - 1) { // max known era, not gCurrentEra
+ // TODO: Investigate what value should be used here - revisit after 4.0.
+ return handleGetLimit(UCAL_YEAR, UCAL_LIMIT_MAXIMUM);
+ }
+ int32_t nextEraStart[3] = { 0,0,0 };
+ gJapaneseEraRules->getStartDate(era + 1, nextEraStart, status);
+ int32_t nextEraYear = nextEraStart[0];
+ int32_t nextEraMonth = nextEraStart[1]; // 1-base
+ int32_t nextEraDate = nextEraStart[2];
+
+ int32_t eraStartYear = gJapaneseEraRules->getStartYear(era, status);
+ int32_t maxYear = nextEraYear - eraStartYear + 1; // 1-base
+ if (nextEraMonth == 1 && nextEraDate == 1) {
+ // Subtract 1, because the next era starts at Jan 1
+ maxYear--;
}
- return GregorianCalendar::getActualMaximum(field, status);
+ return maxYear;
}
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/japancal.h b/icu4c/source/i18n/japancal.h
index 3ae4900a2..bd2a2ca07 100644
--- a/icu4c/source/i18n/japancal.h
+++ b/icu4c/source/i18n/japancal.h
@@ -123,7 +123,7 @@ public:
* Japanese calendar case, this is equal to the equivalent extended Gregorian year.
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Return the maximum value that this field could have, given the current date.
@@ -166,22 +166,7 @@ public:
*/
virtual const char * getType() const override;
- /**
- * @return false - no default century in Japanese
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Not used - no default century.
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
- /**
- * Not used - no default century.
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
private:
JapaneseCalendar(); // default constructor not implemented
@@ -212,7 +197,7 @@ protected:
* @param eyear the extended year
* @internal
*/
- virtual int32_t getDefaultMonthInYear(int32_t eyear) override;
+ virtual int32_t getDefaultMonthInYear(int32_t eyear, UErrorCode& status) override;
/***
* Called by computeJulianDay. Returns the default day (1-based) for the month,
@@ -223,6 +208,8 @@ protected:
* @internal
*/
virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month) override;
+
+ virtual bool isEra0CountingBackward() const override { return false; }
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/listformatter.cpp b/icu4c/source/i18n/listformatter.cpp
index 3405b5de3..06bea83b6 100644
--- a/icu4c/source/i18n/listformatter.cpp
+++ b/icu4c/source/i18n/listformatter.cpp
@@ -121,16 +121,16 @@ private:
ContextualHandler::~ContextualHandler() {
}
-static const char16_t *spanishY = u"{0} y {1}";
-static const char16_t *spanishE = u"{0} e {1}";
-static const char16_t *spanishO = u"{0} o {1}";
-static const char16_t *spanishU = u"{0} u {1}";
-static const char16_t *hebrewVav = u"{0} \u05D5{1}";
-static const char16_t *hebrewVavDash = u"{0} \u05D5-{1}";
+const char16_t* spanishY = u"{0} y {1}";
+const char16_t* spanishE = u"{0} e {1}";
+const char16_t* spanishO = u"{0} o {1}";
+const char16_t* spanishU = u"{0} u {1}";
+const char16_t* hebrewVav = u"{0} \u05D5{1}";
+const char16_t* hebrewVavDash = u"{0} \u05D5-{1}";
// Condiction to change to e.
// Starts with "hi" or "i" but not with "hie" nor "hia"
-static bool shouldChangeToE(const UnicodeString& text) {
+bool shouldChangeToE(const UnicodeString& text) {
int32_t len = text.length();
if (len == 0) { return false; }
// Case insensitive match hi but not hie nor hia.
@@ -147,7 +147,7 @@ static bool shouldChangeToE(const UnicodeString& text) {
// Condiction to change to u.
// Starts with "o", "ho", and "8". Also "11" by itself.
// re: ^((o|ho|8).*|11)$
-static bool shouldChangeToU(const UnicodeString& text) {
+bool shouldChangeToU(const UnicodeString& text) {
int32_t len = text.length();
if (len == 0) { return false; }
// Case insensitive match o.* and 8.*
@@ -164,7 +164,7 @@ static bool shouldChangeToU(const UnicodeString& text) {
// Condiction to change to VAV follow by a dash.
// Starts with non Hebrew letter.
-static bool shouldChangeToVavDash(const UnicodeString& text) {
+bool shouldChangeToVavDash(const UnicodeString& text) {
if (text.isEmpty()) { return false; }
UErrorCode status = U_ZERO_ERROR;
return uscript_getScript(text.char32At(0), &status) != USCRIPT_HEBREW;
diff --git a/icu4c/source/i18n/measfmt.cpp b/icu4c/source/i18n/measfmt.cpp
index da4e69b49..ee4bcb9e5 100644
--- a/icu4c/source/i18n/measfmt.cpp
+++ b/icu4c/source/i18n/measfmt.cpp
@@ -489,7 +489,6 @@ void MeasureFormat::parseObject(
const UnicodeString & /*source*/,
Formattable & /*result*/,
ParsePosition& /*pos*/) const {
- return;
}
UnicodeString &MeasureFormat::formatMeasurePerUnit(
@@ -501,14 +500,14 @@ UnicodeString &MeasureFormat::formatMeasurePerUnit(
if (U_FAILURE(status)) {
return appendTo;
}
- auto* df = dynamic_cast<const DecimalFormat*>(&getNumberFormatInternal());
+ const auto* df = dynamic_cast<const DecimalFormat*>(&getNumberFormatInternal());
if (df == nullptr) {
// Don't know how to handle other types of NumberFormat
status = U_UNSUPPORTED_ERROR;
return appendTo;
}
UFormattedNumberData result;
- if (auto* lnf = df->toNumberFormatter(status)) {
+ if (const auto* lnf = df->toNumberFormatter(status)) {
result.quantity.setToDouble(measure.getNumber().getDouble(status));
lnf->unit(measure.getUnit())
.perUnit(perUnit)
@@ -691,7 +690,7 @@ UnicodeString &MeasureFormat::formatMeasure(
pos,
status);
}
- auto* df = dynamic_cast<const DecimalFormat*>(&nf);
+ const auto* df = dynamic_cast<const DecimalFormat*>(&nf);
if (df == nullptr) {
// Handle other types of NumberFormat using the ICU 63 code, modified to
// get the unitPattern from LongNameHandler and handle fallback to OTHER.
@@ -708,7 +707,7 @@ UnicodeString &MeasureFormat::formatMeasure(
return QuantityFormatter::format(formatter, formattedNumber, appendTo, pos, status);
}
UFormattedNumberData result;
- if (auto* lnf = df->toNumberFormatter(status)) {
+ if (const auto* lnf = df->toNumberFormatter(status)) {
result.quantity.setToDouble(amtNumber.getDouble(status));
lnf->unit(amtUnit)
.unitWidth(getUnitWidth(fWidth))
@@ -761,7 +760,7 @@ UnicodeString &MeasureFormat::formatNumeric(
return appendTo;
}
number::LocalizedNumberFormatter numberFormatter2;
- if (auto* lnf = numberFormatter->toNumberFormatter(status)) {
+ if (const auto* lnf = numberFormatter->toNumberFormatter(status)) {
numberFormatter2 = lnf->integerWidth(number::IntegerWidth::zeroFillTo(2));
} else {
return appendTo;
diff --git a/icu4c/source/i18n/measunit.cpp b/icu4c/source/i18n/measunit.cpp
index abb219977..a70d48653 100644
--- a/icu4c/source/i18n/measunit.cpp
+++ b/icu4c/source/i18n/measunit.cpp
@@ -2169,9 +2169,7 @@ MeasureUnit &MeasureUnit::operator=(const MeasureUnit &other) {
if (this == &other) {
return *this;
}
- if (fImpl != nullptr) {
- delete fImpl;
- }
+ delete fImpl;
if (other.fImpl) {
ErrorCode localStatus;
fImpl = new MeasureUnitImpl(other.fImpl->copy(localStatus));
@@ -2192,9 +2190,7 @@ MeasureUnit &MeasureUnit::operator=(MeasureUnit &&other) noexcept {
if (this == &other) {
return *this;
}
- if (fImpl != nullptr) {
- delete fImpl;
- }
+ delete fImpl;
fImpl = other.fImpl;
other.fImpl = nullptr;
fTypeId = other.fTypeId;
diff --git a/icu4c/source/i18n/measunit_extra.cpp b/icu4c/source/i18n/measunit_extra.cpp
index 295d6a8ce..a63484227 100644
--- a/icu4c/source/i18n/measunit_extra.cpp
+++ b/icu4c/source/i18n/measunit_extra.cpp
@@ -102,6 +102,8 @@ const struct UnitPrefixStrings {
UMeasurePrefix value;
} gUnitPrefixStrings[] = {
// SI prefixes
+ { "quetta", UMEASURE_PREFIX_QUETTA },
+ { "ronna", UMEASURE_PREFIX_RONNA },
{ "yotta", UMEASURE_PREFIX_YOTTA },
{ "zetta", UMEASURE_PREFIX_ZETTA },
{ "exa", UMEASURE_PREFIX_EXA },
@@ -122,6 +124,8 @@ const struct UnitPrefixStrings {
{ "atto", UMEASURE_PREFIX_ATTO },
{ "zepto", UMEASURE_PREFIX_ZEPTO },
{ "yocto", UMEASURE_PREFIX_YOCTO },
+ { "ronto", UMEASURE_PREFIX_RONTO },
+ { "quecto", UMEASURE_PREFIX_QUECTO },
// Binary prefixes
{ "yobi", UMEASURE_PREFIX_YOBI },
{ "zebi", UMEASURE_PREFIX_ZEBI },
@@ -542,13 +546,13 @@ public:
*/
static Parser from(StringPiece source, UErrorCode& status) {
if (U_FAILURE(status)) {
- return Parser();
+ return {};
}
umtx_initOnce(gUnitExtrasInitOnce, &initUnitExtras, status);
if (U_FAILURE(status)) {
- return Parser();
+ return {};
}
- return Parser(source);
+ return {source};
}
MeasureUnitImpl parse(UErrorCode& status) {
@@ -659,7 +663,7 @@ private:
} else {
fIndex = previ;
}
- return Token(match);
+ return {match};
}
/**
@@ -797,8 +801,8 @@ private:
// Sorting function wrapping SingleUnitImpl::compareTo for use with uprv_sortArray.
int32_t U_CALLCONV
compareSingleUnits(const void* /*context*/, const void* left, const void* right) {
- auto realLeft = static_cast<const SingleUnitImpl* const*>(left);
- auto realRight = static_cast<const SingleUnitImpl* const*>(right);
+ const auto* realLeft = static_cast<const SingleUnitImpl* const*>(left);
+ const auto* realRight = static_cast<const SingleUnitImpl* const*>(right);
return (*realLeft)->compareTo(**realRight);
}
diff --git a/icu4c/source/i18n/measunit_impl.h b/icu4c/source/i18n/measunit_impl.h
index c60ff2fc3..5ee5c7bb9 100644
--- a/icu4c/source/i18n/measunit_impl.h
+++ b/icu4c/source/i18n/measunit_impl.h
@@ -14,11 +14,9 @@
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
class LongNameHandler;
}
-} // namespace number
static const char16_t kDefaultCurrency[] = u"XXX";
static const char kDefaultCurrency8[] = "XXX";
diff --git a/icu4c/source/i18n/measure.cpp b/icu4c/source/i18n/measure.cpp
index cdbd99503..3280bcda4 100644
--- a/icu4c/source/i18n/measure.cpp
+++ b/icu4c/source/i18n/measure.cpp
@@ -29,7 +29,7 @@ Measure::Measure(const Formattable& _number, MeasureUnit* adoptedUnit,
UErrorCode& ec) :
number(_number), unit(adoptedUnit) {
if (U_SUCCESS(ec) &&
- (!number.isNumeric() || adoptedUnit == 0)) {
+ (!number.isNumeric() || adoptedUnit == nullptr)) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
}
}
diff --git a/icu4c/source/i18n/messageformat2.cpp b/icu4c/source/i18n/messageformat2.cpp
new file mode 100644
index 000000000..c5ae9f1c6
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2.cpp
@@ -0,0 +1,893 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_arguments.h"
+#include "unicode/messageformat2_data_model.h"
+#include "unicode/messageformat2_formattable.h"
+#include "unicode/messageformat2.h"
+#include "unicode/unistr.h"
+#include "messageformat2_allocation.h"
+#include "messageformat2_evaluation.h"
+#include "messageformat2_macros.h"
+
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+using namespace data_model;
+
+// ------------------------------------------------------
+// Formatting
+
+// The result of formatting a literal is just itself.
+static Formattable evalLiteral(const Literal& lit) {
+ return Formattable(lit.unquoted());
+}
+
+// Assumes that `var` is a message argument; returns the argument's value.
+[[nodiscard]] FormattedPlaceholder MessageFormatter::evalArgument(const VariableName& var, MessageContext& context, UErrorCode& errorCode) const {
+ if (U_SUCCESS(errorCode)) {
+ // The fallback for a variable name is itself.
+ UnicodeString str(DOLLAR);
+ str += var;
+ const Formattable* val = context.getGlobal(var, errorCode);
+ if (U_SUCCESS(errorCode)) {
+ return (FormattedPlaceholder(*val, str));
+ }
+ }
+ return {};
+}
+
+// Returns the contents of the literal
+[[nodiscard]] FormattedPlaceholder MessageFormatter::formatLiteral(const Literal& lit) const {
+ // The fallback for a literal is itself.
+ return FormattedPlaceholder(evalLiteral(lit), lit.quoted());
+}
+
+[[nodiscard]] FormattedPlaceholder MessageFormatter::formatOperand(const Environment& env,
+ const Operand& rand,
+ MessageContext& context,
+ UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ if (rand.isNull()) {
+ return FormattedPlaceholder();
+ }
+ if (rand.isVariable()) {
+ // Check if it's local or global
+ // Note: there is no name shadowing; this is enforced by the parser
+ const VariableName& var = rand.asVariable();
+ // TODO: Currently, this code implements lazy evaluation of locals.
+ // That is, the environment binds names to a closure, not a resolved value.
+ // Eager vs. lazy evaluation is an open issue:
+ // see https://github.com/unicode-org/message-format-wg/issues/299
+
+ // Look up the variable in the environment
+ if (env.has(var)) {
+ // `var` is a local -- look it up
+ const Closure& rhs = env.lookup(var);
+ // Format the expression using the environment from the closure
+ return formatExpression(rhs.getEnv(), rhs.getExpr(), context, status);
+ }
+ // Variable wasn't found in locals -- check if it's global
+ FormattedPlaceholder result = evalArgument(var, context, status);
+ if (status == U_ILLEGAL_ARGUMENT_ERROR) {
+ status = U_ZERO_ERROR;
+ // Unbound variable -- set a resolution error
+ context.getErrors().setUnresolvedVariable(var, status);
+ // Use fallback per
+ // https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#fallback-resolution
+ UnicodeString str(DOLLAR);
+ str += var;
+ return FormattedPlaceholder(str);
+ }
+ return result;
+ } else {
+ U_ASSERT(rand.isLiteral());
+ return formatLiteral(rand.asLiteral());
+ }
+}
+
+// Resolves a function's options
+FunctionOptions MessageFormatter::resolveOptions(const Environment& env, const OptionMap& options, MessageContext& context, UErrorCode& status) const {
+ LocalPointer<UVector> optionsVector(createUVector(status));
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ LocalPointer<ResolvedFunctionOption> resolvedOpt;
+ for (int i = 0; i < options.size(); i++) {
+ const Option& opt = options.getOption(i, status);
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ const UnicodeString& k = opt.getName();
+ const Operand& v = opt.getValue();
+
+ // Options are fully evaluated before calling the function
+ // Format the operand
+ FormattedPlaceholder rhsVal = formatOperand(env, v, context, status);
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ if (!rhsVal.isFallback()) {
+ resolvedOpt.adoptInstead(create<ResolvedFunctionOption>(ResolvedFunctionOption(k, rhsVal.asFormattable()), status));
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ optionsVector->adoptElement(resolvedOpt.orphan(), status);
+ }
+ }
+
+ return FunctionOptions(std::move(*optionsVector), status);
+}
+
+// Overload that dispatches on argument type. Syntax doesn't provide for options in this case.
+[[nodiscard]] FormattedPlaceholder MessageFormatter::evalFormatterCall(FormattedPlaceholder&& argument,
+ MessageContext& context,
+ UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ // These cases should have been checked for already
+ U_ASSERT(!argument.isFallback() && !argument.isNullOperand());
+
+ const Formattable& toFormat = argument.asFormattable();
+ switch (toFormat.getType()) {
+ case UFMT_OBJECT: {
+ const FormattableObject* obj = toFormat.getObject(status);
+ U_ASSERT(U_SUCCESS(status));
+ U_ASSERT(obj != nullptr);
+ const UnicodeString& type = obj->tag();
+ FunctionName functionName;
+ if (!getDefaultFormatterNameByType(type, functionName)) {
+ // No formatter for this type -- follow default behavior
+ break;
+ }
+ return evalFormatterCall(functionName,
+ std::move(argument),
+ FunctionOptions(),
+ context,
+ status);
+ }
+ default: {
+ // TODO: The array case isn't handled yet; not sure whether it's desirable
+ // to have a default list formatter
+ break;
+ }
+ }
+ // No formatter for this type, or it's a primitive type (which will be formatted later)
+ // -- just return the argument itself
+ return std::move(argument);
+}
+
+// Overload that dispatches on function name
+[[nodiscard]] FormattedPlaceholder MessageFormatter::evalFormatterCall(const FunctionName& functionName,
+ FormattedPlaceholder&& argument,
+ FunctionOptions&& options,
+ MessageContext& context,
+ UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ DynamicErrors& errs = context.getErrors();
+
+ UnicodeString fallback(COLON);
+ fallback += functionName;
+ if (!argument.isNullOperand()) {
+ fallback = argument.fallback;
+ }
+
+ if (isFormatter(functionName)) {
+ LocalPointer<Formatter> formatterImpl(getFormatter(functionName, status));
+ if (U_FAILURE(status)) {
+ if (status == U_MF_FORMATTING_ERROR) {
+ errs.setFormattingError(functionName, status);
+ status = U_ZERO_ERROR;
+ return {};
+ }
+ if (status == U_MF_UNKNOWN_FUNCTION_ERROR) {
+ errs.setUnknownFunction(functionName, status);
+ status = U_ZERO_ERROR;
+ return {};
+ }
+ // Other errors are non-recoverable
+ return {};
+ }
+ U_ASSERT(formatterImpl != nullptr);
+
+ UErrorCode savedStatus = status;
+ FormattedPlaceholder result = formatterImpl->format(std::move(argument), std::move(options), status);
+ // Update errors
+ if (savedStatus != status) {
+ if (U_FAILURE(status)) {
+ if (status == U_MF_OPERAND_MISMATCH_ERROR) {
+ status = U_ZERO_ERROR;
+ errs.setOperandMismatchError(functionName, status);
+ } else {
+ status = U_ZERO_ERROR;
+ // Convey any error generated by the formatter
+ // as a formatting error, except for operand mismatch errors
+ errs.setFormattingError(functionName, status);
+ }
+ return FormattedPlaceholder(fallback);
+ } else {
+ // Ignore warnings
+ status = savedStatus;
+ }
+ }
+ // Ignore the output if any errors occurred
+ if (errs.hasFormattingError()) {
+ return FormattedPlaceholder(fallback);
+ }
+ return result;
+ }
+ // No formatter with this name -- set error
+ if (isSelector(functionName)) {
+ errs.setFormattingError(functionName, status);
+ } else {
+ errs.setUnknownFunction(functionName, status);
+ }
+ return FormattedPlaceholder(fallback);
+}
+
+// Per https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#fallback-resolution
+static UnicodeString reservedFallback (const Expression& e) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ const Operator* rator = e.getOperator(localErrorCode);
+ U_ASSERT(U_SUCCESS(localErrorCode));
+ const Reserved& r = rator->asReserved();
+
+ // An empty Reserved isn't representable in the syntax
+ U_ASSERT(r.numParts() > 0);
+
+ const UnicodeString& contents = r.getPart(0).unquoted();
+ // Parts should never be empty
+ U_ASSERT(contents.length() > 0);
+
+ // Return first character of string
+ return UnicodeString(contents, 0, 1);
+}
+
+// Formats an expression using `globalEnv` for the values of variables
+[[nodiscard]] FormattedPlaceholder MessageFormatter::formatExpression(const Environment& globalEnv,
+ const Expression& expr,
+ MessageContext& context,
+ UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ // Formatting error
+ if (expr.isReserved()) {
+ context.getErrors().setReservedError(status);
+ return FormattedPlaceholder(reservedFallback(expr));
+ }
+
+ const Operand& rand = expr.getOperand();
+ // Format the operand (formatOperand handles the case of a null operand)
+ FormattedPlaceholder randVal = formatOperand(globalEnv, rand, context, status);
+
+ // Don't call the function on error values
+ if (randVal.isFallback()) {
+ return randVal;
+ }
+
+ if (!expr.isFunctionCall()) {
+ // Dispatch based on type of `randVal`
+ return evalFormatterCall(std::move(randVal),
+ context,
+ status);
+ } else {
+ const Operator* rator = expr.getOperator(status);
+ U_ASSERT(U_SUCCESS(status));
+ const FunctionName& functionName = rator->getFunctionName();
+ const OptionMap& options = rator->getOptionsInternal();
+ // Resolve the options
+ FunctionOptions resolvedOptions = resolveOptions(globalEnv, options, context, status);
+
+ // Call the formatter function
+ // The fallback for a nullary function call is the function name
+ UnicodeString fallback;
+ if (rand.isNull()) {
+ fallback = UnicodeString(COLON);
+ fallback += functionName;
+ } else {
+ fallback = randVal.fallback;
+ }
+ return evalFormatterCall(functionName,
+ std::move(randVal),
+ std::move(resolvedOptions),
+ context,
+ status);
+ }
+}
+
+// Formats each text and expression part of a pattern, appending the results to `result`
+void MessageFormatter::formatPattern(MessageContext& context, const Environment& globalEnv, const Pattern& pat, UErrorCode &status, UnicodeString& result) const {
+ CHECK_ERROR(status);
+
+ for (int32_t i = 0; i < pat.numParts(); i++) {
+ const PatternPart& part = pat.getPart(i);
+ if (part.isText()) {
+ result += part.asText();
+ } else if (part.isMarkup()) {
+ // Markup is ignored
+ } else {
+ // Format the expression
+ FormattedPlaceholder partVal = formatExpression(globalEnv, part.contents(), context, status);
+ // Force full evaluation, e.g. applying default formatters to
+ // unformatted input (or formatting numbers as strings)
+ UnicodeString partResult = partVal.formatToString(locale, status);
+ result += partResult;
+ // Handle formatting errors. `formatToString()` can't take a context and thus can't
+ // register an error directly
+ if (status == U_MF_FORMATTING_ERROR) {
+ status = U_ZERO_ERROR;
+ // TODO: The name of the formatter that failed is unavailable.
+ // Not ideal, but it's hard for `formatToString()`
+ // to pass along more detailed diagnostics
+ context.getErrors().setFormattingError(status);
+ }
+ }
+ }
+}
+
+// ------------------------------------------------------
+// Selection
+
+// See https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#resolve-selectors
+// `res` is a vector of ResolvedSelectors
+void MessageFormatter::resolveSelectors(MessageContext& context, const Environment& env, UErrorCode &status, UVector& res) const {
+ CHECK_ERROR(status);
+ U_ASSERT(!dataModel.hasPattern());
+
+ const Expression* selectors = dataModel.getSelectorsInternal();
+ // 1. Let res be a new empty list of resolved values that support selection.
+ // (Implicit, since `res` is an out-parameter)
+ // 2. For each expression exp of the message's selectors
+ for (int32_t i = 0; i < dataModel.numSelectors(); i++) {
+ // 2i. Let rv be the resolved value of exp.
+ ResolvedSelector rv = formatSelectorExpression(env, selectors[i], context, status);
+ if (rv.hasSelector()) {
+ // 2ii. If selection is supported for rv:
+ // (True if this code has been reached)
+ } else {
+ // 2iii. Else:
+ // Let nomatch be a resolved value for which selection always fails.
+ // Append nomatch as the last element of the list res.
+ // Emit a Selection Error.
+ // (Note: in this case, rv, being a fallback, serves as `nomatch`)
+ #if U_DEBUG
+ const DynamicErrors& err = context.getErrors();
+ U_ASSERT(err.hasError());
+ U_ASSERT(rv.argument().isFallback());
+ #endif
+ }
+ // 2ii(a). Append rv as the last element of the list res.
+ // (Also fulfills 2iii)
+ LocalPointer<ResolvedSelector> v(create<ResolvedSelector>(std::move(rv), status));
+ CHECK_ERROR(status);
+ res.adoptElement(v.orphan(), status);
+ }
+}
+
+// See https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#resolve-preferences
+// `keys` and `matches` are vectors of strings
+void MessageFormatter::matchSelectorKeys(const UVector& keys,
+ MessageContext& context,
+ ResolvedSelector&& rv,
+ UVector& keysOut,
+ UErrorCode& status) const {
+ CHECK_ERROR(status);
+
+ if (!rv.hasSelector()) {
+ // Return an empty list of matches
+ return;
+ }
+
+ auto selectorImpl = rv.getSelector();
+ U_ASSERT(selectorImpl != nullptr);
+ UErrorCode savedStatus = status;
+
+ // Convert `keys` to an array
+ int32_t keysLen = keys.size();
+ UnicodeString* keysArr = new UnicodeString[keysLen];
+ if (keysArr == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ for (int32_t i = 0; i < keysLen; i++) {
+ const UnicodeString* k = static_cast<UnicodeString*>(keys[i]);
+ U_ASSERT(k != nullptr);
+ keysArr[i] = *k;
+ }
+ LocalArray<UnicodeString> adoptedKeys(keysArr);
+
+ // Create an array to hold the output
+ UnicodeString* prefsArr = new UnicodeString[keysLen];
+ if (prefsArr == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ LocalArray<UnicodeString> adoptedPrefs(prefsArr);
+ int32_t prefsLen = 0;
+
+ // Call the selector
+ selectorImpl->selectKey(rv.takeArgument(), rv.takeOptions(),
+ adoptedKeys.getAlias(), keysLen, adoptedPrefs.getAlias(), prefsLen,
+ status);
+
+ // Update errors
+ if (savedStatus != status) {
+ if (U_FAILURE(status)) {
+ status = U_ZERO_ERROR;
+ context.getErrors().setSelectorError(rv.getSelectorName(), status);
+ } else {
+ // Ignore warnings
+ status = savedStatus;
+ }
+ }
+
+ CHECK_ERROR(status);
+
+ // Copy the resulting keys (if there was no error)
+ keysOut.removeAllElements();
+ for (int32_t i = 0; i < prefsLen; i++) {
+ UnicodeString* k = message2::create<UnicodeString>(std::move(prefsArr[i]), status);
+ if (k == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ keysOut.adoptElement(k, status);
+ CHECK_ERROR(status);
+ }
+}
+
+// See https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#resolve-preferences
+// `res` is a vector of FormattedPlaceholders;
+// `pref` is a vector of vectors of strings
+void MessageFormatter::resolvePreferences(MessageContext& context, UVector& res, UVector& pref, UErrorCode &status) const {
+ CHECK_ERROR(status);
+
+ // 1. Let pref be a new empty list of lists of strings.
+ // (Implicit, since `pref` is an out-parameter)
+ UnicodeString ks;
+ LocalPointer<UnicodeString> ksP;
+ int32_t numVariants = dataModel.numVariants();
+ const Variant* variants = dataModel.getVariantsInternal();
+ // 2. For each index i in res
+ for (int32_t i = 0; i < (int32_t) res.size(); i++) {
+ // 2i. Let keys be a new empty list of strings.
+ LocalPointer<UVector> keys(createUVector(status));
+ CHECK_ERROR(status);
+ // 2ii. For each variant `var` of the message
+ for (int32_t variantNum = 0; variantNum < numVariants; variantNum++) {
+ const SelectorKeys& selectorKeys = variants[variantNum].getKeys();
+
+ // Note: Here, `var` names the key list of `var`,
+ // not a Variant itself
+ const Key* var = selectorKeys.getKeysInternal();
+ // 2ii(a). Let `key` be the `var` key at position i.
+ U_ASSERT(i < selectorKeys.len); // established by semantic check in formatSelectors()
+ const Key& key = var[i];
+ // 2ii(b). If `key` is not the catch-all key '*'
+ if (!key.isWildcard()) {
+ // 2ii(b)(a) Assert that key is a literal.
+ // (Not needed)
+ // 2ii(b)(b) Let `ks` be the resolved value of `key`.
+ ks = key.asLiteral().unquoted();
+ // 2ii(b)(c) Append `ks` as the last element of the list `keys`.
+ ksP.adoptInstead(create<UnicodeString>(std::move(ks), status));
+ CHECK_ERROR(status);
+ keys->adoptElement(ksP.orphan(), status);
+ }
+ }
+ // 2iii. Let `rv` be the resolved value at index `i` of `res`.
+ U_ASSERT(i < res.size());
+ ResolvedSelector rv = std::move(*(static_cast<ResolvedSelector*>(res[i])));
+ // 2iv. Let matches be the result of calling the method MatchSelectorKeys(rv, keys)
+ LocalPointer<UVector> matches(createUVector(status));
+ matchSelectorKeys(*keys, context, std::move(rv), *matches, status);
+ // 2v. Append `matches` as the last element of the list `pref`
+ pref.adoptElement(matches.orphan(), status);
+ }
+}
+
+// `v` is assumed to be a vector of strings
+static int32_t vectorFind(const UVector& v, const UnicodeString& k) {
+ for (int32_t i = 0; i < v.size(); i++) {
+ if (*static_cast<UnicodeString*>(v[i]) == k) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+static UBool vectorContains(const UVector& v, const UnicodeString& k) {
+ return (vectorFind(v, k) != -1);
+}
+
+// See https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#filter-variants
+// `pref` is a vector of vectors of strings. `vars` is a vector of PrioritizedVariants
+void MessageFormatter::filterVariants(const UVector& pref, UVector& vars, UErrorCode& status) const {
+ const Variant* variants = dataModel.getVariantsInternal();
+
+ // 1. Let `vars` be a new empty list of variants.
+ // (Not needed since `vars` is an out-parameter)
+ // 2. For each variant `var` of the message:
+ for (int32_t j = 0; j < dataModel.numVariants(); j++) {
+ const SelectorKeys& selectorKeys = variants[j].getKeys();
+ const Pattern& p = variants[j].getPattern();
+
+ // Note: Here, `var` names the key list of `var`,
+ // not a Variant itself
+ const Key* var = selectorKeys.getKeysInternal();
+ // 2i. For each index `i` in `pref`:
+ bool noMatch = false;
+ for (int32_t i = 0; i < (int32_t) pref.size(); i++) {
+ // 2i(a). Let `key` be the `var` key at position `i`.
+ U_ASSERT(i < selectorKeys.len);
+ const Key& key = var[i];
+ // 2i(b). If key is the catch-all key '*':
+ if (key.isWildcard()) {
+ // 2i(b)(a). Continue the inner loop on pref.
+ continue;
+ }
+ // 2i(c). Assert that `key` is a literal.
+ // (Not needed)
+ // 2i(d). Let `ks` be the resolved value of `key`.
+ UnicodeString ks = key.asLiteral().unquoted();
+ // 2i(e). Let `matches` be the list of strings at index `i` of `pref`.
+ const UVector& matches = *(static_cast<UVector*>(pref[i])); // `matches` is a vector of strings
+ // 2i(f). If `matches` includes `ks`
+ if (vectorContains(matches, ks)) {
+ // 2i(f)(a). Continue the inner loop on `pref`.
+ continue;
+ }
+ // 2i(g). Else:
+ // 2i(g)(a). Continue the outer loop on message variants.
+ noMatch = true;
+ break;
+ }
+ if (!noMatch) {
+ // Append `var` as the last element of the list `vars`.
+ PrioritizedVariant* tuple = create<PrioritizedVariant>(PrioritizedVariant(-1, selectorKeys, p), status);
+ CHECK_ERROR(status);
+ vars.adoptElement(tuple, status);
+ }
+ }
+}
+
+// See https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#sort-variants
+// Leaves the preferred variant as element 0 in `sortable`
+// Note: this sorts in-place, so `sortable` is just `vars`
+// `pref` is a vector of vectors of strings; `vars` is a vector of PrioritizedVariants
+void MessageFormatter::sortVariants(const UVector& pref, UVector& vars, UErrorCode& status) const {
+ CHECK_ERROR(status);
+
+// Note: steps 1 and 2 are omitted since we use `vars` as `sortable` (we sort in-place)
+ // 1. Let `sortable` be a new empty list of (integer, variant) tuples.
+ // (Not needed since `sortable` is an out-parameter)
+ // 2. For each variant `var` of `vars`
+ // 2i. Let tuple be a new tuple (-1, var).
+ // 2ii. Append `tuple` as the last element of the list `sortable`.
+
+ // 3. Let `len` be the integer count of items in `pref`.
+ int32_t len = pref.size();
+ // 4. Let `i` be `len` - 1.
+ int32_t i = len - 1;
+ // 5. While i >= 0:
+ while (i >= 0) {
+ // 5i. Let `matches` be the list of strings at index `i` of `pref`.
+ U_ASSERT(pref[i] != nullptr);
+ const UVector& matches = *(static_cast<UVector*>(pref[i])); // `matches` is a vector of strings
+ // 5ii. Let `minpref` be the integer count of items in `matches`.
+ int32_t minpref = matches.size();
+ // 5iii. For each tuple `tuple` of `sortable`:
+ for (int32_t j = 0; j < vars.size(); j++) {
+ U_ASSERT(vars[j] != nullptr);
+ PrioritizedVariant& tuple = *(static_cast<PrioritizedVariant*>(vars[j]));
+ // 5iii(a). Let matchpref be an integer with the value minpref.
+ int32_t matchpref = minpref;
+ // 5iii(b). Let `key` be the tuple variant key at position `i`.
+ const Key* tupleVariantKeys = tuple.keys.getKeysInternal();
+ U_ASSERT(i < tuple.keys.len); // Given by earlier semantic checking
+ const Key& key = tupleVariantKeys[i];
+ // 5iii(c) If `key` is not the catch-all key '*':
+ if (!key.isWildcard()) {
+ // 5iii(c)(a). Assert that `key` is a literal.
+ // (Not needed)
+ // 5iii(c)(b). Let `ks` be the resolved value of `key`.
+ UnicodeString ks = key.asLiteral().unquoted();
+ // 5iii(c)(c) Let matchpref be the integer position of ks in `matches`.
+ matchpref = vectorFind(matches, ks);
+ U_ASSERT(matchpref >= 0);
+ }
+ // 5iii(d) Set the `tuple` integer value as matchpref.
+ tuple.priority = matchpref;
+ }
+ // 5iv. Set `sortable` to be the result of calling the method SortVariants(`sortable`)
+ vars.sort(comparePrioritizedVariants, status);
+ CHECK_ERROR(status);
+ // 5v. Set `i` to be `i` - 1.
+ i--;
+ }
+ // The caller is responsible for steps 6 and 7
+ // 6. Let `var` be the `variant` element of the first element of `sortable`.
+ // 7. Select the pattern of `var`
+}
+
+
+// Evaluate the operand
+ResolvedSelector MessageFormatter::resolveVariables(const Environment& env, const Operand& rand, MessageContext& context, UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ if (rand.isNull()) {
+ return ResolvedSelector(FormattedPlaceholder());
+ }
+
+ if (rand.isLiteral()) {
+ return ResolvedSelector(formatLiteral(rand.asLiteral()));
+ }
+
+ // Must be variable
+ const VariableName& var = rand.asVariable();
+ // Resolve the variable
+ if (env.has(var)) {
+ const Closure& referent = env.lookup(var);
+ // Resolve the referent
+ return resolveVariables(referent.getEnv(), referent.getExpr(), context, status);
+ }
+ // Either this is a global var or an unbound var --
+ // either way, it can't be bound to a function call.
+ // Check globals
+ FormattedPlaceholder val = evalArgument(var, context, status);
+ if (status == U_ILLEGAL_ARGUMENT_ERROR) {
+ status = U_ZERO_ERROR;
+ // Unresolved variable -- could be a previous warning. Nothing to resolve
+ U_ASSERT(context.getErrors().hasUnresolvedVariableError());
+ return ResolvedSelector(FormattedPlaceholder(var));
+ }
+ // Pass through other errors
+ return ResolvedSelector(std::move(val));
+}
+
+// Evaluate the expression except for not performing the top-level function call
+// (which is expected to be a selector, but may not be, in error cases)
+ResolvedSelector MessageFormatter::resolveVariables(const Environment& env,
+ const Expression& expr,
+ MessageContext& context,
+ UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ // A `reserved` is an error
+ if (expr.isReserved()) {
+ context.getErrors().setReservedError(status);
+ return ResolvedSelector(FormattedPlaceholder(reservedFallback(expr)));
+ }
+
+ // Function call -- resolve the operand and options
+ if (expr.isFunctionCall()) {
+ const Operator* rator = expr.getOperator(status);
+ U_ASSERT(U_SUCCESS(status));
+ // Already checked that rator is non-reserved
+ const FunctionName& selectorName = rator->getFunctionName();
+ if (isSelector(selectorName)) {
+ auto selector = getSelector(context, selectorName, status);
+ if (U_SUCCESS(status)) {
+ FunctionOptions resolvedOptions = resolveOptions(env, rator->getOptionsInternal(), context, status);
+ // Operand may be the null argument, but resolveVariables() handles that
+ FormattedPlaceholder argument = formatOperand(env, expr.getOperand(), context, status);
+ return ResolvedSelector(selectorName, selector, std::move(resolvedOptions), std::move(argument));
+ }
+ } else if (isFormatter(selectorName)) {
+ context.getErrors().setSelectorError(selectorName, status);
+ } else {
+ context.getErrors().setUnknownFunction(selectorName, status);
+ }
+ // Non-selector used as selector; an error would have been recorded earlier
+ UnicodeString fallback(COLON);
+ fallback += selectorName;
+ if (!expr.getOperand().isNull()) {
+ fallback = formatOperand(env, expr.getOperand(), context, status).fallback;
+ }
+ return ResolvedSelector(FormattedPlaceholder(fallback));
+ } else {
+ // Might be a variable reference, so expand one more level of variable
+ return resolveVariables(env, expr.getOperand(), context, status);
+ }
+}
+
+ResolvedSelector MessageFormatter::formatSelectorExpression(const Environment& globalEnv, const Expression& expr, MessageContext& context, UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ // Resolve expression to determine if it's a function call
+ ResolvedSelector exprResult = resolveVariables(globalEnv, expr, context, status);
+
+ DynamicErrors& err = context.getErrors();
+
+ // If there is a selector, then `resolveVariables()` recorded it in the context
+ if (exprResult.hasSelector()) {
+ // Check if there was an error
+ if (exprResult.argument().isFallback()) {
+ // Use a null expression if it's a syntax or data model warning;
+ // create a valid (non-fallback) formatted placeholder from the
+ // fallback string otherwise
+ if (err.hasSyntaxError() || err.hasDataModelError()) {
+ return ResolvedSelector(FormattedPlaceholder()); // Null operand
+ } else {
+ return ResolvedSelector(exprResult.takeArgument());
+ }
+ }
+ return exprResult;
+ }
+
+ // No selector was found; error should already have been set
+ U_ASSERT(err.hasMissingSelectorAnnotationError() || err.hasUnknownFunctionError() || err.hasSelectorError());
+ return ResolvedSelector(FormattedPlaceholder(exprResult.argument().fallback));
+}
+
+void MessageFormatter::formatSelectors(MessageContext& context, const Environment& env, UErrorCode &status, UnicodeString& result) const {
+ CHECK_ERROR(status);
+
+ // See https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#pattern-selection
+
+ // Resolve Selectors
+ // res is a vector of FormattedPlaceholders
+ LocalPointer<UVector> res(createUVector(status));
+ CHECK_ERROR(status);
+ resolveSelectors(context, env, status, *res);
+
+ // Resolve Preferences
+ // pref is a vector of vectors of strings
+ LocalPointer<UVector> pref(createUVector(status));
+ CHECK_ERROR(status);
+ resolvePreferences(context, *res, *pref, status);
+
+ // Filter Variants
+ // vars is a vector of PrioritizedVariants
+ LocalPointer<UVector> vars(createUVector(status));
+ CHECK_ERROR(status);
+ filterVariants(*pref, *vars, status);
+
+ // Sort Variants and select the final pattern
+ // Note: `sortable` in the spec is just `vars` here,
+ // which is sorted in-place
+ sortVariants(*pref, *vars, status);
+
+ CHECK_ERROR(status);
+
+ // 6. Let `var` be the `variant` element of the first element of `sortable`.
+ U_ASSERT(vars->size() > 0); // This should have been checked earlier (having 0 variants would be a data model error)
+ const PrioritizedVariant& var = *(static_cast<PrioritizedVariant*>(vars->elementAt(0)));
+ // 7. Select the pattern of `var`
+ const Pattern& pat = var.pat;
+
+ // Format the pattern
+ formatPattern(context, env, pat, status, result);
+}
+
+// Note: this is non-const due to the function registry being non-const, which is in turn
+// due to the values (`FormatterFactory` objects in the map) having mutable state.
+// In other words, formatting a message can mutate the underlying `MessageFormatter` by changing
+// state within the factory objects that represent custom formatters.
+UnicodeString MessageFormatter::formatToString(const MessageArguments& arguments, UErrorCode &status) {
+ EMPTY_ON_ERROR(status);
+
+ // Create a new environment that will store closures for all local variables
+ Environment* env = Environment::create(status);
+ // Create a new context with the given arguments and the `errors` structure
+ MessageContext context(arguments, *errors, status);
+
+ // Check for unresolved variable errors
+ checkDeclarations(context, env, status);
+ LocalPointer<Environment> globalEnv(env);
+
+ UnicodeString result;
+ if (dataModel.hasPattern()) {
+ formatPattern(context, *globalEnv, dataModel.getPattern(), status, result);
+ } else {
+ // Check for errors/warnings -- if so, then the result of pattern selection is the fallback value
+ // See https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#pattern-selection
+ const DynamicErrors& err = context.getErrors();
+ if (err.hasSyntaxError() || err.hasDataModelError()) {
+ result += REPLACEMENT;
+ } else {
+ formatSelectors(context, *globalEnv, status, result);
+ }
+ }
+ // Update status according to all errors seen while formatting
+ context.checkErrors(status);
+ return result;
+}
+
+// ----------------------------------------
+// Checking for resolution errors
+
+void MessageFormatter::check(MessageContext& context, const Environment& localEnv, const OptionMap& options, UErrorCode& status) const {
+ // Check the RHS of each option
+ for (int32_t i = 0; i < options.size(); i++) {
+ const Option& opt = options.getOption(i, status);
+ CHECK_ERROR(status);
+ check(context, localEnv, opt.getValue(), status);
+ }
+}
+
+void MessageFormatter::check(MessageContext& context, const Environment& localEnv, const Operand& rand, UErrorCode& status) const {
+ // Nothing to check for literals
+ if (rand.isLiteral() || rand.isNull()) {
+ return;
+ }
+
+ // Check that variable is in scope
+ const VariableName& var = rand.asVariable();
+ // Check local scope
+ if (localEnv.has(var)) {
+ return;
+ }
+ // Check global scope
+ context.getGlobal(var, status);
+ if (status == U_ILLEGAL_ARGUMENT_ERROR) {
+ status = U_ZERO_ERROR;
+ context.getErrors().setUnresolvedVariable(var, status);
+ }
+ // Either `var` is a global, or some other error occurred.
+ // Nothing more to do either way
+ return;
+}
+
+void MessageFormatter::check(MessageContext& context, const Environment& localEnv, const Expression& expr, UErrorCode& status) const {
+ // Check for unresolved variable errors
+ if (expr.isFunctionCall()) {
+ const Operator* rator = expr.getOperator(status);
+ U_ASSERT(U_SUCCESS(status));
+ const Operand& rand = expr.getOperand();
+ check(context, localEnv, rand, status);
+ check(context, localEnv, rator->getOptionsInternal(), status);
+ }
+}
+
+// Check for resolution errors
+void MessageFormatter::checkDeclarations(MessageContext& context, Environment*& env, UErrorCode &status) const {
+ CHECK_ERROR(status);
+
+ const Binding* decls = getDataModel().getLocalVariablesInternal();
+ U_ASSERT(env != nullptr && decls != nullptr);
+
+ for (int32_t i = 0; i < getDataModel().bindingsLen; i++) {
+ const Binding& decl = decls[i];
+ const Expression& rhs = decl.getValue();
+ check(context, *env, rhs, status);
+
+ // Add a closure to the global environment,
+ // memoizing the value of localEnv up to this point
+
+ // Add the LHS to the environment for checking the next declaration
+ env = Environment::create(decl.getVariable(), Closure(rhs, *env), env, status);
+ CHECK_ERROR(status);
+ }
+}
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/messageformat2_allocation.h b/icu4c/source/i18n/messageformat2_allocation.h
new file mode 100644
index 000000000..7be27e222
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_allocation.h
@@ -0,0 +1,147 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_UTILS_H
+#define MESSAGEFORMAT2_UTILS_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/unistr.h"
+#include "uvector.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ // Helpers
+
+ template<typename T>
+ static T* copyArray(const T* source, int32_t len, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ U_ASSERT(source != nullptr);
+ U_ASSERT(len >= 0);
+ T* dest = new T[len];
+ if (dest == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ } else {
+ for (int32_t i = 0; i < len; i++) {
+ dest[i] = source[i];
+ }
+ }
+ return dest;
+ }
+
+ template<typename T>
+ static T* copyVectorToArray(const UVector& source, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ int32_t len = source.size();
+ T* dest = new T[len];
+ if (dest == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ } else {
+ for (int32_t i = 0; i < len; i++) {
+ dest[i] = *(static_cast<T*>(source.elementAt(i)));
+ }
+ }
+ return dest;
+ }
+
+ template<typename T>
+ static T* moveVectorToArray(UVector& source, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ int32_t len = source.size();
+ T* dest = new T[len];
+ if (dest == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ } else {
+ for (int32_t i = 0; i < len; i++) {
+ dest[i] = std::move(*static_cast<T*>(source.elementAt(i)));
+ }
+ source.removeAllElements();
+ }
+ return dest;
+ }
+
+ inline UVector* createUVectorNoAdopt(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ LocalPointer<UVector> result(new UVector(status));
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ return result.orphan();
+ }
+
+ inline UVector* createUVector(UErrorCode& status) {
+ UVector* result = createUVectorNoAdopt(status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ result->setDeleter(uprv_deleteUObject);
+ return result;
+ }
+
+ static UBool stringsEqual(const UElement s1, const UElement s2) {
+ return (*static_cast<UnicodeString*>(s1.pointer) == *static_cast<UnicodeString*>(s2.pointer));
+ }
+
+ inline UVector* createStringUVector(UErrorCode& status) {
+ UVector* v = createUVector(status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ v->setComparer(stringsEqual);
+ return v;
+ }
+
+ inline UVector* createStringVectorNoAdopt(UErrorCode& status) {
+ UVector* v = createUVectorNoAdopt(status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ v->setComparer(stringsEqual);
+ return v;
+ }
+
+ template<typename T>
+ inline T* create(T&& node, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ T* result = new T(std::move(node));
+ if (result == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+ }
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_UTILS_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/icu4c/source/i18n/messageformat2_arguments.cpp b/icu4c/source/i18n/messageformat2_arguments.cpp
new file mode 100644
index 000000000..ded3f4dda
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_arguments.cpp
@@ -0,0 +1,59 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_arguments.h"
+#include "unicode/messageformat2_data_model_names.h"
+#include "uvector.h" // U_ASSERT
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // ------------------------------------------------------
+ // MessageArguments
+
+ using Arguments = MessageArguments;
+
+ const Formattable* Arguments::getArgument(const VariableName& arg, UErrorCode& errorCode) const {
+ if (U_SUCCESS(errorCode)) {
+ U_ASSERT(argsLen == 0 || arguments.isValid());
+ for (int32_t i = 0; i < argsLen; i++) {
+ if (argumentNames[i] == arg) {
+ return &arguments[i];
+ }
+ }
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return nullptr;
+ }
+
+ MessageArguments::~MessageArguments() {}
+
+ // Message arguments
+ // -----------------
+
+ MessageArguments& MessageArguments::operator=(MessageArguments&& other) noexcept {
+ U_ASSERT(other.arguments.isValid() || other.argsLen == 0);
+ argsLen = other.argsLen;
+ if (argsLen != 0) {
+ argumentNames.adoptInstead(other.argumentNames.orphan());
+ arguments.adoptInstead(other.arguments.orphan());
+ }
+ return *this;
+ }
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/messageformat2_checker.cpp b/icu4c/source/i18n/messageformat2_checker.cpp
new file mode 100644
index 000000000..192167583
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_checker.cpp
@@ -0,0 +1,299 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "messageformat2_allocation.h"
+#include "messageformat2_checker.h"
+#include "messageformat2_macros.h"
+#include "uvector.h" // U_ASSERT
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+/*
+Checks data model errors
+(see https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#error-handling )
+
+The following are checked here:
+Variant Key Mismatch
+Missing Fallback Variant (called NonexhaustivePattern here)
+Missing Selector Annotation
+Duplicate Declaration
+ - Most duplicate declaration errors are checked by the parser,
+ but the checker checks for declarations of input variables
+ that were previously implicitly declared
+(Duplicate option names and duplicate declarations are checked by the parser)
+*/
+
+// Type environments
+// -----------------
+
+TypeEnvironment::TypeEnvironment(UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ UVector* temp;
+ temp = createStringVectorNoAdopt(status);
+ CHECK_ERROR(status);
+ annotated.adoptInstead(temp);
+ temp = createStringVectorNoAdopt(status);
+ CHECK_ERROR(status);
+ unannotated.adoptInstead(temp);
+ temp = createStringVectorNoAdopt(status);
+ CHECK_ERROR(status);
+ freeVars.adoptInstead(temp);
+}
+
+ static bool has(const UVector& v, const VariableName& var) {
+ return v.contains(const_cast<void*>(static_cast<const void*>(&var)));
+ }
+
+// Returns true if `var` was either previously used (implicit declaration),
+// or is in scope by an explicit declaration
+bool TypeEnvironment::known(const VariableName& var) const {
+ return has(*annotated, var) || has(*unannotated, var) || has(*freeVars, var);
+}
+
+TypeEnvironment::Type TypeEnvironment::get(const VariableName& var) const {
+ U_ASSERT(annotated.isValid());
+ if (has(*annotated, var)) {
+ return Annotated;
+ }
+ U_ASSERT(unannotated.isValid());
+ if (has(*unannotated, var)) {
+ return Unannotated;
+ }
+ U_ASSERT(freeVars.isValid());
+ if (has(*freeVars, var)) {
+ return FreeVariable;
+ }
+ // This case is a "free variable without an implicit declaration",
+ // i.e. one used only in a selector expression and not in a declaration RHS
+ return Unannotated;
+}
+
+void TypeEnvironment::extend(const VariableName& var, TypeEnvironment::Type t, UErrorCode& status) {
+ if (t == Unannotated) {
+ U_ASSERT(unannotated.isValid());
+ // See comment below
+ unannotated->addElement(const_cast<void*>(static_cast<const void*>(&var)), status);
+ return;
+ }
+
+ if (t == FreeVariable) {
+ U_ASSERT(freeVars.isValid());
+ // See comment below
+ freeVars->addElement(const_cast<void*>(static_cast<const void*>(&var)), status);
+ return;
+ }
+
+ U_ASSERT(annotated.isValid());
+ // This is safe because elements of `annotated` are never written
+ // and the lifetime of `var` is guaranteed to include the lifetime of
+ // `annotated`
+ annotated->addElement(const_cast<void*>(static_cast<const void*>(&var)), status);
+}
+
+TypeEnvironment::~TypeEnvironment() {}
+
+// ---------------------
+
+static bool areDefaultKeys(const Key* keys, int32_t len) {
+ U_ASSERT(len > 0);
+ for (int32_t i = 0; i < len; i++) {
+ if (!keys[i].isWildcard()) {
+ return false;
+ }
+ }
+ return true;
+}
+
+void Checker::addFreeVars(TypeEnvironment& t, const Operand& rand, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ if (rand.isVariable()) {
+ const VariableName& v = rand.asVariable();
+ if (!t.known(v)) {
+ t.extend(v, TypeEnvironment::Type::FreeVariable, status);
+ }
+ }
+}
+
+void Checker::addFreeVars(TypeEnvironment& t, const OptionMap& opts, UErrorCode& status) {
+ for (int32_t i = 0; i < opts.size(); i++) {
+ const Option& o = opts.getOption(i, status);
+ CHECK_ERROR(status);
+ addFreeVars(t, o.getValue(), status);
+ }
+}
+
+void Checker::addFreeVars(TypeEnvironment& t, const Operator& rator, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ if (!rator.isReserved()) {
+ addFreeVars(t, rator.getOptionsInternal(), status);
+ }
+}
+
+void Checker::addFreeVars(TypeEnvironment& t, const Expression& rhs, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ if (rhs.isFunctionCall()) {
+ const Operator* rator = rhs.getOperator(status);
+ U_ASSERT(U_SUCCESS(status));
+ addFreeVars(t, *rator, status);
+ }
+ addFreeVars(t, rhs.getOperand(), status);
+}
+
+void Checker::checkVariants(UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ U_ASSERT(!dataModel.hasPattern());
+
+ // Check that each variant has a key list with size
+ // equal to the number of selectors
+ const Variant* variants = dataModel.getVariantsInternal();
+
+ // Check that one variant includes only wildcards
+ bool defaultExists = false;
+
+ for (int32_t i = 0; i < dataModel.numVariants(); i++) {
+ const SelectorKeys& k = variants[i].getKeys();
+ const Key* keys = k.getKeysInternal();
+ int32_t len = k.len;
+ if (len != dataModel.numSelectors()) {
+ // Variant key mismatch
+ errors.addError(StaticErrorType::VariantKeyMismatchError, status);
+ return;
+ }
+ defaultExists |= areDefaultKeys(keys, len);
+ }
+ if (!defaultExists) {
+ errors.addError(StaticErrorType::NonexhaustivePattern, status);
+ return;
+ }
+}
+
+void Checker::requireAnnotated(const TypeEnvironment& t, const Expression& selectorExpr, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ if (selectorExpr.isFunctionCall()) {
+ return; // No error
+ }
+ if (!selectorExpr.isReserved()) {
+ const Operand& rand = selectorExpr.getOperand();
+ if (rand.isVariable()) {
+ if (t.get(rand.asVariable()) == TypeEnvironment::Type::Annotated) {
+ return; // No error
+ }
+ }
+ }
+ // If this code is reached, an error was detected
+ errors.addError(StaticErrorType::MissingSelectorAnnotation, status);
+}
+
+void Checker::checkSelectors(const TypeEnvironment& t, UErrorCode& status) {
+ U_ASSERT(!dataModel.hasPattern());
+
+ // Check each selector; if it's not annotated, emit a
+ // "missing selector annotation" error
+ const Expression* selectors = dataModel.getSelectorsInternal();
+ for (int32_t i = 0; i < dataModel.numSelectors(); i++) {
+ requireAnnotated(t, selectors[i], status);
+ }
+}
+
+TypeEnvironment::Type typeOf(TypeEnvironment& t, const Expression& expr) {
+ if (expr.isFunctionCall()) {
+ return TypeEnvironment::Type::Annotated;
+ }
+ if (expr.isReserved()) {
+ return TypeEnvironment::Type::Unannotated;
+ }
+ const Operand& rand = expr.getOperand();
+ U_ASSERT(!rand.isNull());
+ if (rand.isLiteral()) {
+ return TypeEnvironment::Type::Unannotated;
+ }
+ U_ASSERT(rand.isVariable());
+ return t.get(rand.asVariable());
+}
+
+void Checker::checkDeclarations(TypeEnvironment& t, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ // For each declaration, extend the type environment with its type
+ // Only a very simple type system is necessary: variables
+ // have the type "annotated", "unannotated", or "free".
+ // For "missing selector annotation" checking, free variables
+ // (message arguments) are treated as unannotated.
+ // Free variables are also used for checking duplicate declarations.
+ const Binding* env = dataModel.getLocalVariablesInternal();
+ for (int32_t i = 0; i < dataModel.bindingsLen; i++) {
+ const Binding& b = env[i];
+ const VariableName& lhs = b.getVariable();
+ const Expression& rhs = b.getValue();
+
+ // First, add free variables from the RHS of b
+ // This must be done first so we can catch:
+ // .local $foo = {$foo}
+ // (where the RHS is the first use of $foo)
+ if (b.isLocal()) {
+ addFreeVars(t, rhs, status);
+
+ // Next, check if the LHS equals any free variables
+ // whose implicit declarations are in scope
+ if (t.known(lhs) && t.get(lhs) == TypeEnvironment::Type::FreeVariable) {
+ errors.addError(StaticErrorType::DuplicateDeclarationError, status);
+ }
+ } else {
+ // Input declaration; if b has no annotation, there's nothing to check
+ if (!b.isLocal() && b.hasAnnotation()) {
+ const OptionMap& opts = b.getOptionsInternal();
+ // For .input declarations, we just need to add any variables
+ // referenced in the options
+ addFreeVars(t, opts, status);
+ }
+ // Next, check if the LHS equals any free variables
+ // whose implicit declarations are in scope
+ if (t.known(lhs) && t.get(lhs) == TypeEnvironment::Type::FreeVariable) {
+ errors.addError(StaticErrorType::DuplicateDeclarationError, status);
+ }
+ }
+ // Next, extend the type environment with a binding from lhs to its type
+ t.extend(lhs, typeOf(t, rhs), status);
+ }
+
+ // Check for unsupported statements
+ if (dataModel.unsupportedStatementsLen > 0) {
+ errors.addError(StaticErrorType::UnsupportedStatementError, status);
+ }
+}
+
+void Checker::check(UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ TypeEnvironment typeEnv(status);
+ checkDeclarations(typeEnv, status);
+ // Pattern message
+ if (dataModel.hasPattern()) {
+ return;
+ } else {
+ // Selectors message
+ checkSelectors(typeEnv, status);
+ checkVariants(status);
+ }
+}
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/messageformat2_checker.h b/icu4c/source/i18n/messageformat2_checker.h
new file mode 100644
index 000000000..4bb0498ef
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_checker.h
@@ -0,0 +1,97 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT_CHECKER_H
+#define MESSAGEFORMAT_CHECKER_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model.h"
+#include "messageformat2_errors.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // Used for checking missing selector annotation errors
+ // and duplicate declaration errors (specifically for
+ // implicit declarations)
+ class TypeEnvironment : public UMemory {
+ public:
+ // MessageFormat has a simple type system;
+ // variables are in-scope and annotated; in-scope and unannotated;
+ // or free (a free variable has no explicit declaration in the scope
+ // of its use.)
+ enum Type {
+ Annotated,
+ Unannotated,
+ FreeVariable
+ };
+ void extend(const VariableName&, Type, UErrorCode& status);
+ Type get(const VariableName&) const;
+ bool known(const VariableName&) const;
+ TypeEnvironment(UErrorCode& status);
+
+ virtual ~TypeEnvironment();
+
+ private:
+ // Stores variables known to be annotated.
+ LocalPointer<UVector> annotated; // Vector of `VariableName`s
+ // Stores variables that are in-scope but unannotated.
+ LocalPointer<UVector> unannotated; // Vector of `VariableName`s
+ // Stores free variables that are used in the RHS of a declaration
+ LocalPointer<UVector> freeVars; // Vector of `VariableNames`; tracks free variables
+ // This can't just be "variables that don't appear in
+ // `annotated` or `unannotated`", as a use introduces
+ // an explicit declaration
+ }; // class TypeEnvironment
+
+ // Checks a data model for semantic errors
+ // (Errors are defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md )
+ class Checker {
+ public:
+ void check(UErrorCode&);
+ Checker(const MFDataModel& m, StaticErrors& e) : dataModel(m), errors(e) {}
+ private:
+
+ void requireAnnotated(const TypeEnvironment&, const Expression&, UErrorCode&);
+ void addFreeVars(TypeEnvironment& t, const Operand&, UErrorCode&);
+ void addFreeVars(TypeEnvironment& t, const Operator&, UErrorCode&);
+ void addFreeVars(TypeEnvironment& t, const OptionMap&, UErrorCode&);
+ void addFreeVars(TypeEnvironment& t, const Expression&, UErrorCode&);
+ void checkDeclarations(TypeEnvironment&, UErrorCode&);
+ void checkSelectors(const TypeEnvironment&, UErrorCode&);
+ void checkVariants(UErrorCode&);
+ void check(const OptionMap&);
+ void check(const Operand&);
+ void check(const Expression&);
+ void check(const Pattern&);
+ const MFDataModel& dataModel;
+ StaticErrors& errors;
+ }; // class Checker
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_CHECKER_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
+
diff --git a/icu4c/source/i18n/messageformat2_data_model.cpp b/icu4c/source/i18n/messageformat2_data_model.cpp
new file mode 100644
index 000000000..8255de01a
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_data_model.cpp
@@ -0,0 +1,1152 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model.h"
+#include "messageformat2_allocation.h"
+#include "messageformat2_macros.h"
+#include "uvector.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+// Implementation
+
+//------------------ SelectorKeys
+
+const Key* SelectorKeys::getKeysInternal() const {
+ return keys.getAlias();
+}
+
+// Lexically order key lists
+bool SelectorKeys::operator<(const SelectorKeys& other) const {
+ // Handle key lists of different sizes first --
+ // this case does have to be handled (even though it would
+ // reflect a data model error) because of the need to produce
+ // partial output
+ if (len < other.len) {
+ return true;
+ }
+ if (len > other.len) {
+ return false;
+ }
+
+ for (int32_t i = 0; i < len; i++) {
+ if (keys[i] < other.keys[i]) {
+ return true;
+ }
+ if (!(keys[i] == other.keys[i])) {
+ return false;
+ }
+ }
+ // If we've reached here, all keys must be equal
+ return false;
+}
+
+SelectorKeys::Builder::Builder(UErrorCode& status) {
+ keys = createUVector(status);
+}
+
+SelectorKeys::Builder& SelectorKeys::Builder::add(Key&& key, UErrorCode& status) noexcept {
+ U_ASSERT(keys != nullptr);
+ if (U_SUCCESS(status)) {
+ Key* k = create<Key>(std::move(key), status);
+ keys->adoptElement(k, status);
+ }
+ return *this;
+}
+
+SelectorKeys SelectorKeys::Builder::build(UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ U_ASSERT(keys != nullptr);
+ return SelectorKeys(*keys, status);
+}
+
+SelectorKeys::Builder::~Builder() {
+ if (keys != nullptr) {
+ delete keys;
+ }
+}
+
+SelectorKeys::SelectorKeys(const UVector& ks, UErrorCode& status) : len(ks.size()) {
+ Key* result = copyVectorToArray<Key>(ks, status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ keys.adoptInstead(result);
+}
+
+SelectorKeys& SelectorKeys::operator=(SelectorKeys other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+SelectorKeys::SelectorKeys(const SelectorKeys& other) : len(other.len) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ if (len != 0) {
+ keys.adoptInstead(copyArray(other.keys.getAlias(), len, localErrorCode));
+ }
+ if (U_FAILURE(localErrorCode)) {
+ len = 0;
+ }
+}
+
+SelectorKeys::~SelectorKeys() {
+ len = 0;
+}
+
+//------------------ Literal
+
+bool Literal::operator<(const Literal& other) const {
+ // Ignore quoting for the purposes of ordering
+ return contents < other.contents;
+}
+
+bool Literal::operator==(const Literal& other) const {
+ // Ignore quoting for the purposes of ordering
+ return contents == other.contents;
+}
+
+UnicodeString Literal::quoted() const {
+ UnicodeString result(PIPE);
+ result += unquoted();
+ result += PIPE;
+ return result;
+}
+
+const UnicodeString& Literal::unquoted() const { return contents; }
+
+Literal& Literal::operator=(Literal other) noexcept {
+ swap(*this, other);
+
+ return *this;
+}
+
+Literal::~Literal() {
+ thisIsQuoted = false;
+}
+
+//------------------ Operand
+
+Operand::Operand(const Operand& other) : contents(other.contents) {}
+
+Operand& Operand::operator=(Operand other) noexcept {
+ swap(*this, other);
+
+ return *this;
+}
+
+UBool Operand::isVariable() const {
+ return (contents.has_value() && std::holds_alternative<VariableName>(*contents));
+}
+UBool Operand::isLiteral() const {
+ return (contents.has_value() && std::holds_alternative<Literal>(*contents));
+}
+UBool Operand::isNull() const { return !contents.has_value(); }
+
+const Literal& Operand::asLiteral() const {
+ U_ASSERT(isLiteral());
+ return *(std::get_if<Literal>(&(*contents)));
+}
+
+const VariableName& Operand::asVariable() const {
+ U_ASSERT(isVariable());
+ return *(std::get_if<VariableName>(&(*contents)));
+}
+
+Operand::~Operand() {}
+
+//---------------- Key
+
+Key& Key::operator=(Key other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+bool Key::operator<(const Key& other) const {
+ // Arbitrarily treat * as greater than all concrete keys
+ if (isWildcard()) {
+ return false;
+ }
+ if (other.isWildcard()) {
+ return true;
+ }
+ return (asLiteral() < other.asLiteral());
+}
+
+bool Key::operator==(const Key& other) const {
+ if (isWildcard()) {
+ return other.isWildcard();
+ }
+ return (asLiteral() == other.asLiteral());
+}
+
+const Literal& Key::asLiteral() const {
+ U_ASSERT(!isWildcard());
+ return *contents;
+}
+
+Key::~Key() {}
+
+// ------------ Reserved
+
+// Copy constructor
+Reserved::Reserved(const Reserved& other) : len(other.len) {
+ U_ASSERT(!other.bogus);
+
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ if (len == 0) {
+ parts.adoptInstead(nullptr);
+ } else {
+ parts.adoptInstead(copyArray(other.parts.getAlias(), len, localErrorCode));
+ }
+ if (U_FAILURE(localErrorCode)) {
+ bogus = true;
+ }
+}
+
+Reserved& Reserved::operator=(Reserved other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+Reserved::Reserved(const UVector& ps, UErrorCode& status) noexcept : len(ps.size()) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ parts = LocalArray<Literal>(copyVectorToArray<Literal>(ps, status));
+}
+
+int32_t Reserved::numParts() const {
+ U_ASSERT(!bogus);
+ return len;
+}
+
+const Literal& Reserved::getPart(int32_t i) const {
+ U_ASSERT(!bogus);
+ U_ASSERT(i < numParts());
+ return parts[i];
+}
+
+Reserved::Builder::Builder(UErrorCode& status) {
+ parts = createUVector(status);
+}
+
+Reserved Reserved::Builder::build(UErrorCode& status) const noexcept {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ U_ASSERT(parts != nullptr);
+ return Reserved(*parts, status);
+}
+
+Reserved::Builder& Reserved::Builder::add(Literal&& part, UErrorCode& status) noexcept {
+ U_ASSERT(parts != nullptr);
+ if (U_SUCCESS(status)) {
+ Literal* l = create<Literal>(std::move(part), status);
+ parts->adoptElement(l, status);
+ }
+ return *this;
+}
+
+Reserved::Builder::~Builder() {
+ if (parts != nullptr) {
+ delete parts;
+ }
+}
+
+Reserved::~Reserved() {
+ len = 0;
+}
+
+//------------------------ Operator
+
+OptionMap::OptionMap(const UVector& opts, UErrorCode& status) : len(opts.size()) {
+ Option* result = copyVectorToArray<Option>(opts, status);
+ if (U_FAILURE(status)) {
+ bogus = true;
+ return;
+ }
+ options.adoptInstead(result);
+ bogus = false;
+}
+
+OptionMap::OptionMap(const OptionMap& other) : len(other.len) {
+ U_ASSERT(!other.bogus);
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ Option* result = copyArray(other.options.getAlias(), len, localErrorCode);
+ if (U_FAILURE(localErrorCode)) {
+ bogus = true;
+ return;
+ }
+ bogus = false;
+ options.adoptInstead(result);
+}
+
+OptionMap& OptionMap::operator=(OptionMap other) {
+ swap(*this, other);
+ return *this;
+}
+
+const Option& OptionMap::getOption(int32_t i, UErrorCode& status) const {
+ if (U_FAILURE(status) || bogus) {
+ if (bogus) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ } else {
+ U_ASSERT(options.isValid());
+ U_ASSERT(i < len);
+ }
+ return options[i];
+}
+
+int32_t OptionMap::size() const {
+ U_ASSERT(options.isValid() || len == 0);
+ return len;
+}
+
+OptionMap::~OptionMap() {}
+
+OptionMap OptionMap::Builder::build(UErrorCode& status) {
+ return OptionMap(*options, status);
+}
+
+OptionMap::Builder::Builder(UErrorCode& status) {
+ options = createStringUVector(status);
+}
+
+OptionMap::Builder::Builder(OptionMap::Builder&& other) {
+ checkDuplicates = other.checkDuplicates;
+ options = other.options;
+ other.options = nullptr;
+}
+
+OptionMap::Builder& OptionMap::Builder::operator=(OptionMap::Builder other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+/* static */ OptionMap::Builder OptionMap::Builder::attributes(UErrorCode& status) {
+ Builder b(status);
+ // The same code is re-used for representing attributes and options.
+ // Duplicate attributes are allowed, while duplicate options are disallowed.
+ b.checkDuplicates = false;
+ return b;
+}
+
+static UBool hasOptionNamed(const UVector& v, const UnicodeString& s) {
+ for (int32_t i = 0; i < v.size(); i++) {
+ const Option* opt = static_cast<Option*>(v[i]);
+ U_ASSERT(opt != nullptr);
+ if (opt->getName() == s) {
+ return true;
+ }
+ }
+ return false;
+}
+
+OptionMap::Builder& OptionMap::Builder::add(Option&& opt, UErrorCode& status) {
+ THIS_ON_ERROR(status);
+
+ // If the option name is already in the map, emit a data model error
+ if (checkDuplicates && hasOptionNamed(*options, opt.getName())) {
+ status = U_MF_DUPLICATE_OPTION_NAME_ERROR;
+ } else {
+ Option* newOption = create<Option>(std::move(opt), status);
+ options->adoptElement(newOption, status);
+ }
+ return *this;
+}
+
+OptionMap::Builder::~Builder() {
+ if (options != nullptr) {
+ delete options;
+ }
+}
+
+const Reserved& Operator::asReserved() const {
+ U_ASSERT(isReserved());
+ return *(std::get_if<Reserved>(&contents));
+}
+
+const OptionMap& Operator::getOptionsInternal() const {
+ U_ASSERT(!isReserved());
+ return std::get_if<Callable>(&contents)->getOptions();
+}
+
+Option::Option(const Option& other): name(other.name), rand(other.rand) {}
+
+Option& Option::operator=(Option other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+Option::~Option() {}
+
+Operator::Builder::Builder(UErrorCode& status) : options(OptionMap::Builder(status)) {}
+
+Operator::Builder& Operator::Builder::setReserved(Reserved&& reserved) {
+ isReservedSequence = true;
+ hasFunctionName = false;
+ hasOptions = false;
+ asReserved = std::move(reserved);
+ return *this;
+}
+
+Operator::Builder& Operator::Builder::setFunctionName(FunctionName&& func) {
+ isReservedSequence = false;
+ hasFunctionName = true;
+ functionName = std::move(func);
+ return *this;
+}
+
+const FunctionName& Operator::getFunctionName() const {
+ U_ASSERT(!isReserved());
+ return std::get_if<Callable>(&contents)->getName();
+}
+
+Operator::Builder& Operator::Builder::addOption(const UnicodeString &key, Operand&& value, UErrorCode& errorCode) noexcept {
+ THIS_ON_ERROR(errorCode);
+
+ isReservedSequence = false;
+ hasOptions = true;
+ options.add(Option(key, std::move(value)), errorCode);
+ return *this;
+}
+
+Operator Operator::Builder::build(UErrorCode& errorCode) {
+ Operator result;
+ if (U_FAILURE(errorCode)) {
+ return result;
+ }
+ // Must be either reserved or function, not both; enforced by methods
+ if (isReservedSequence) {
+ // Methods enforce that the function name and options are unset
+ // if `setReserved()` is called, so if they were valid, that
+ // would indicate a bug.
+ U_ASSERT(!hasOptions && !hasFunctionName);
+ result = Operator(asReserved);
+ } else {
+ if (!hasFunctionName) {
+ // Neither function name nor reserved was set
+ // There is no default, so this case could occur if the
+ // caller creates a builder and doesn't make any calls
+ // before calling build().
+ errorCode = U_INVALID_STATE_ERROR;
+ return result;
+ }
+ result = Operator(functionName, options.build(errorCode));
+ }
+ return result;
+}
+
+Operator::Operator(const Operator& other) noexcept : contents(other.contents) {}
+
+Operator& Operator::operator=(Operator other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+// Function call
+Operator::Operator(const FunctionName& f, const UVector& optsVector, UErrorCode& status) : contents(Callable(f, OptionMap(optsVector, status))) {}
+
+Operator::Operator(const FunctionName& f, const OptionMap& opts) : contents(Callable(f, opts)) {}
+
+Operator::Builder::~Builder() {}
+
+Operator::~Operator() {}
+
+Callable& Callable::operator=(Callable other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+Callable::Callable(const Callable& other) : name(other.name), options(other.options) {}
+
+Callable::~Callable() {}
+
+// ------------ Markup
+
+Markup::Builder::Builder(UErrorCode& status)
+ : options(OptionMap::Builder(status)), attributes(OptionMap::Builder::attributes(status)) {}
+
+Markup::Markup(UMarkupType ty, UnicodeString n, OptionMap&& o, OptionMap&& a)
+ : type(ty), name(n), options(std::move(o)), attributes(std::move(a)) {}
+
+Markup::Builder& Markup::Builder::addOption(const UnicodeString &key,
+ Operand&& value,
+ UErrorCode& errorCode) {
+ options.add(Option(key, std::move(value)), errorCode);
+ return *this;
+}
+
+Markup::Builder& Markup::Builder::addAttribute(const UnicodeString &key,
+ Operand&& value,
+ UErrorCode& errorCode) {
+ attributes.add(Option(key, std::move(value)), errorCode);
+ return *this;
+}
+
+Markup Markup::Builder::build(UErrorCode& errorCode) {
+ Markup result;
+
+ if (U_FAILURE(errorCode)) {
+ return result;
+ }
+
+ if (type == UMARKUP_COUNT || name.length() == 0) {
+ // One of `setOpen()`, `setClose()`, or `setStandalone()`
+ // must be called before calling build()
+ // setName() must be called before calling build()
+ errorCode = U_INVALID_STATE_ERROR;
+ } else {
+ result = Markup(type,
+ name,
+ options.build(errorCode),
+ attributes.build(errorCode));
+ }
+ return result;
+}
+
+Markup::Builder::~Builder() {}
+
+Markup::~Markup() {}
+
+// ------------ Expression
+
+Expression::Builder::Builder(UErrorCode& status)
+ : attributes(OptionMap::Builder::attributes(status)) {}
+
+UBool Expression::isStandaloneAnnotation() const {
+ return rand.isNull();
+}
+
+// Returns true for function calls with operands as well as
+// standalone annotations.
+// Reserved sequences are not function calls
+UBool Expression::isFunctionCall() const {
+ return (rator.has_value() && !rator->isReserved());
+}
+
+UBool Expression::isReserved() const {
+ return (rator.has_value() && rator->isReserved());
+}
+
+const Operator* Expression::getOperator(UErrorCode& status) const {
+ NULL_ON_ERROR(status);
+
+ if (!(isReserved() || isFunctionCall())) {
+ status = U_INVALID_STATE_ERROR;
+ return nullptr;
+ }
+ U_ASSERT(rator);
+ return &(*rator);
+}
+
+// May return null operand
+const Operand& Expression::getOperand() const { return rand; }
+
+Expression::Builder& Expression::Builder::setOperand(Operand&& rAnd) {
+ hasOperand = true;
+ rand = std::move(rAnd);
+ return *this;
+}
+
+Expression::Builder& Expression::Builder::setOperator(Operator&& rAtor) {
+ hasOperator = true;
+ rator = std::move(rAtor);
+ return *this;
+}
+
+Expression::Builder& Expression::Builder::addAttribute(const UnicodeString& k,
+ Operand&& v,
+ UErrorCode& status) {
+ attributes.add(Option(k, std::move(v)), status);
+ return *this;
+}
+
+Expression Expression::Builder::build(UErrorCode& errorCode) {
+ Expression result;
+
+ if (U_FAILURE(errorCode)) {
+ return result;
+ }
+
+ if ((!hasOperand || rand.isNull()) && !hasOperator) {
+ errorCode = U_INVALID_STATE_ERROR;
+ return result;
+ }
+
+ OptionMap attributeMap = attributes.build(errorCode);
+ if (hasOperand && hasOperator) {
+ result = Expression(rator, rand, std::move(attributeMap));
+ } else if (hasOperand && !hasOperator) {
+ result = Expression(rand, std::move(attributeMap));
+ } else {
+ // rator is valid, rand is not valid
+ result = Expression(rator, std::move(attributeMap));
+ }
+ return result;
+}
+
+Expression::Expression() : rator(std::nullopt) {}
+
+Expression::Expression(const Expression& other) : rator(other.rator), rand(other.rand), attributes(other.attributes) {}
+
+Expression& Expression::operator=(Expression other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+Expression::Builder::~Builder() {}
+
+Expression::~Expression() {}
+
+// ----------- UnsupportedStatement
+
+UnsupportedStatement::Builder::Builder(UErrorCode& status) {
+ expressions = createUVector(status);
+}
+
+UnsupportedStatement::Builder& UnsupportedStatement::Builder::setKeyword(const UnicodeString& k) {
+ keyword = k;
+ return *this;
+}
+
+UnsupportedStatement::Builder& UnsupportedStatement::Builder::setBody(Reserved&& r) {
+ body.emplace(r);
+ return *this;
+}
+
+UnsupportedStatement::Builder& UnsupportedStatement::Builder::addExpression(Expression&& e, UErrorCode& status) {
+ U_ASSERT(expressions != nullptr);
+ if (U_SUCCESS(status)) {
+ Expression* expr = create<Expression>(std::move(e), status);
+ expressions->adoptElement(expr, status);
+ }
+ return *this;
+}
+
+UnsupportedStatement UnsupportedStatement::Builder::build(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ U_ASSERT(expressions != nullptr);
+ if (keyword.length() <= 0) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ } else if (expressions->size() < 1) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ } else {
+ return UnsupportedStatement(keyword, body, *expressions, status);
+ }
+ }
+ return {};
+}
+
+const Reserved* UnsupportedStatement::getBody(UErrorCode& errorCode) const {
+ if (U_SUCCESS(errorCode)) {
+ if (body.has_value()) {
+ return &(*body);
+ }
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return nullptr;
+}
+
+UnsupportedStatement::UnsupportedStatement(const UnicodeString& k,
+ const std::optional<Reserved>& r,
+ const UVector& es,
+ UErrorCode& status)
+ : keyword(k), body(r), expressionsLen(es.size()) {
+ CHECK_ERROR(status);
+
+ U_ASSERT(expressionsLen >= 1);
+ Expression* result = copyVectorToArray<Expression>(es, status);
+ CHECK_ERROR(status);
+ expressions.adoptInstead(result);
+}
+
+UnsupportedStatement::UnsupportedStatement(const UnsupportedStatement& other) {
+ keyword = other.keyword;
+ body = other.body;
+ expressionsLen = other.expressionsLen;
+ U_ASSERT(expressionsLen > 0);
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ expressions.adoptInstead(copyArray(other.expressions.getAlias(), expressionsLen, localErrorCode));
+ if (U_FAILURE(localErrorCode)) {
+ expressionsLen = 0;
+ }
+}
+
+UnsupportedStatement& UnsupportedStatement::operator=(UnsupportedStatement other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+UnsupportedStatement::Builder::~Builder() {
+ if (expressions != nullptr) {
+ delete expressions;
+ }
+}
+
+UnsupportedStatement::~UnsupportedStatement() {}
+// ----------- PatternPart
+
+// PatternPart needs a copy constructor in order to make Pattern deeply copyable
+// If !isRawText and the copy of the other expression fails,
+// then isBogus() will be true for this PatternPart
+PatternPart::PatternPart(const PatternPart& other) : piece(other.piece) {}
+
+const Expression& PatternPart::contents() const {
+ U_ASSERT(isExpression());
+ return *std::get_if<Expression>(&piece);
+}
+
+const Markup& PatternPart::asMarkup() const {
+ U_ASSERT(isMarkup());
+ return *std::get_if<Markup>(&piece);
+}
+
+// Precondition: isText();
+const UnicodeString& PatternPart::asText() const {
+ U_ASSERT(isText());
+ return *std::get_if<UnicodeString>(&piece);
+}
+
+PatternPart& PatternPart::operator=(PatternPart other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+PatternPart::~PatternPart() {}
+
+// ---------------- Pattern
+
+Pattern::Pattern(const UVector& ps, UErrorCode& status) : len(ps.size()) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ PatternPart* result = copyVectorToArray<PatternPart>(ps, status);
+ CHECK_ERROR(status);
+ parts.adoptInstead(result);
+}
+
+// Copy constructor
+Pattern::Pattern(const Pattern& other) : len(other.len) {
+ U_ASSERT(!other.bogus);
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ if (len == 0) {
+ parts.adoptInstead(nullptr);
+ } else {
+ parts.adoptInstead(copyArray(other.parts.getAlias(), len, localErrorCode));
+ }
+ if (U_FAILURE(localErrorCode)) {
+ bogus = true;
+ }
+}
+
+int32_t Pattern::numParts() const {
+ U_ASSERT(!bogus);
+ return len;
+}
+
+const PatternPart& Pattern::getPart(int32_t i) const {
+ U_ASSERT(!bogus && i < numParts());
+ return parts[i];
+}
+
+Pattern::Builder::Builder(UErrorCode& status) {
+ parts = createUVector(status);
+}
+
+Pattern Pattern::Builder::build(UErrorCode& status) const noexcept {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ U_ASSERT(parts != nullptr);
+ return Pattern(*parts, status);
+}
+
+Pattern::Builder& Pattern::Builder::add(Expression&& part, UErrorCode& status) noexcept {
+ U_ASSERT(parts != nullptr);
+ if (U_SUCCESS(status)) {
+ PatternPart* l = create<PatternPart>(PatternPart(std::move(part)), status);
+ parts->adoptElement(l, status);
+ }
+ return *this;
+}
+
+Pattern::Builder& Pattern::Builder::add(Markup&& part, UErrorCode& status) noexcept {
+ U_ASSERT(parts != nullptr);
+ if (U_SUCCESS(status)) {
+ PatternPart* l = create<PatternPart>(PatternPart(std::move(part)), status);
+ parts->adoptElement(l, status);
+ }
+ return *this;
+}
+
+Pattern::Builder& Pattern::Builder::add(UnicodeString&& part, UErrorCode& status) noexcept {
+ U_ASSERT(parts != nullptr);
+ if (U_SUCCESS(status)) {
+ PatternPart* l = create<PatternPart>(PatternPart(std::move(part)), status);
+ parts->adoptElement(l, status);
+ }
+ return *this;
+}
+
+Pattern& Pattern::operator=(Pattern other) noexcept {
+ swap(*this, other);
+
+ return *this;
+}
+
+Pattern::Builder::~Builder() {
+ if (parts != nullptr) {
+ delete parts;
+ }
+}
+
+Pattern::~Pattern() {}
+
+// ---------------- Binding
+
+const Expression& Binding::getValue() const {
+ return expr;
+}
+
+/* static */ Binding Binding::input(UnicodeString&& variableName, Expression&& rhs, UErrorCode& errorCode) {
+ Binding b;
+ if (U_SUCCESS(errorCode)) {
+ const Operand& rand = rhs.getOperand();
+ if (!(rand.isVariable() && (rand.asVariable() == variableName))) {
+ errorCode = U_INVALID_STATE_ERROR;
+ } else {
+ const Operator* rator = rhs.getOperator(errorCode);
+ bool hasOperator = U_SUCCESS(errorCode);
+ if (hasOperator && rator->isReserved()) {
+ errorCode = U_INVALID_STATE_ERROR;
+ } else {
+ // Clear error code -- the "error" from the absent operator
+ // is handled
+ errorCode = U_ZERO_ERROR;
+ b = Binding(variableName, std::move(rhs));
+ b.local = false;
+ if (hasOperator) {
+ rator = b.getValue().getOperator(errorCode);
+ U_ASSERT(U_SUCCESS(errorCode));
+ b.annotation = std::get_if<Callable>(&(rator->contents));
+ } else {
+ b.annotation = nullptr;
+ }
+ U_ASSERT(!hasOperator || b.annotation != nullptr);
+ }
+ }
+ }
+ return b;
+}
+
+const OptionMap& Binding::getOptionsInternal() const {
+ U_ASSERT(annotation != nullptr);
+ return annotation->getOptions();
+}
+
+void Binding::updateAnnotation() {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ const Operator* rator = expr.getOperator(localErrorCode);
+ if (U_FAILURE(localErrorCode) || rator->isReserved()) {
+ return;
+ }
+ U_ASSERT(U_SUCCESS(localErrorCode) && !rator->isReserved());
+ annotation = std::get_if<Callable>(&(rator->contents));
+}
+
+Binding::Binding(const Binding& other) : var(other.var), expr(other.expr), local(other.local) {
+ updateAnnotation();
+}
+
+Binding& Binding::operator=(Binding other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+Binding::~Binding() {}
+
+// --------------- Variant
+
+Variant& Variant::operator=(Variant other) noexcept {
+ swap(*this, other);
+ return *this;
+}
+
+Variant::Variant(const Variant& other) : k(other.k), p(other.p) {}
+
+Variant::~Variant() {}
+
+// ------------- Matcher
+
+Matcher& Matcher::operator=(Matcher other) {
+ swap(*this, other);
+ return *this;
+}
+
+Matcher::Matcher(const Matcher& other) {
+ U_ASSERT(!other.bogus);
+ numSelectors = other.numSelectors;
+ numVariants = other.numVariants;
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ selectors.adoptInstead(copyArray<Expression>(other.selectors.getAlias(),
+ numSelectors,
+ localErrorCode));
+ variants.adoptInstead(copyArray<Variant>(other.variants.getAlias(),
+ numVariants,
+ localErrorCode));
+ if (U_FAILURE(localErrorCode)) {
+ bogus = true;
+ }
+}
+
+Matcher::Matcher(Expression* ss, int32_t ns, Variant* vs, int32_t nv)
+ : selectors(ss), numSelectors(ns), variants(vs), numVariants(nv) {}
+
+Matcher::~Matcher() {}
+
+// --------------- MFDataModel
+
+const Pattern& MFDataModel::getPattern() const {
+ if (std::holds_alternative<Matcher>(body)) {
+ // Return reference to empty pattern if this is a selectors message
+ return empty;
+ }
+ return *(std::get_if<Pattern>(&body));
+}
+
+const Binding* MFDataModel::getLocalVariablesInternal() const {
+ U_ASSERT(!bogus);
+ U_ASSERT(bindings.isValid());
+ return bindings.getAlias();
+}
+
+const Expression* MFDataModel::getSelectorsInternal() const {
+ U_ASSERT(!bogus);
+ U_ASSERT(!hasPattern());
+ return std::get_if<Matcher>(&body)->selectors.getAlias();
+}
+
+const Variant* MFDataModel::getVariantsInternal() const {
+ U_ASSERT(!bogus);
+ U_ASSERT(!hasPattern());
+ return std::get_if<Matcher>(&body)->variants.getAlias();
+}
+
+const UnsupportedStatement* MFDataModel::getUnsupportedStatementsInternal() const {
+ U_ASSERT(!bogus);
+ U_ASSERT(unsupportedStatements.isValid());
+ return unsupportedStatements.getAlias();
+}
+
+
+MFDataModel::Builder::Builder(UErrorCode& status) {
+ bindings = createUVector(status);
+ unsupportedStatements = createUVector(status);
+}
+
+// Invalidate pattern and create selectors/variants if necessary
+void MFDataModel::Builder::buildSelectorsMessage(UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ if (hasPattern) {
+ selectors = createUVector(status);
+ variants = createUVector(status);
+ hasPattern = false;
+ }
+ hasPattern = false;
+ hasSelectors = true;
+}
+
+void MFDataModel::Builder::checkDuplicate(const VariableName& var, UErrorCode& status) const {
+ CHECK_ERROR(status);
+
+ // This means that handling declarations is quadratic in the number of variables,
+ // but the `UVector` of locals in the builder could be changed to a `Hashtable`
+ // if that's a problem
+ // Note: this also doesn't check _all_ duplicate declaration errors,
+ // see MessageFormatter::Checker::checkDeclarations()
+ for (int32_t i = 0; i < bindings->size(); i++) {
+ if ((static_cast<Binding*>(bindings->elementAt(i)))->getVariable() == var) {
+ status = U_MF_DUPLICATE_DECLARATION_ERROR;
+ break;
+ }
+ }
+}
+
+MFDataModel::Builder& MFDataModel::Builder::addBinding(Binding&& b, UErrorCode& status) {
+ if (U_SUCCESS(status)) {
+ U_ASSERT(bindings != nullptr);
+ checkDuplicate(b.getVariable(), status);
+ UErrorCode savedStatus = status;
+ if (status == U_MF_DUPLICATE_DECLARATION_ERROR) {
+ // Want to add the binding anyway even if it's a duplicate
+ status = U_ZERO_ERROR;
+ }
+ bindings->adoptElement(create<Binding>(std::move(b), status), status);
+ if (U_SUCCESS(status) || savedStatus == U_MF_DUPLICATE_DECLARATION_ERROR) {
+ status = savedStatus;
+ }
+ }
+ return *this;
+}
+
+MFDataModel::Builder& MFDataModel::Builder::addUnsupportedStatement(UnsupportedStatement&& s, UErrorCode& status) {
+ if (U_SUCCESS(status)) {
+ U_ASSERT(unsupportedStatements != nullptr);
+ unsupportedStatements->adoptElement(create<UnsupportedStatement>(std::move(s), status), status);
+ }
+ return *this;
+}
+
+/*
+ selector must be non-null
+*/
+MFDataModel::Builder& MFDataModel::Builder::addSelector(Expression&& selector, UErrorCode& status) noexcept {
+ THIS_ON_ERROR(status);
+
+ buildSelectorsMessage(status);
+ U_ASSERT(selectors != nullptr);
+ selectors->adoptElement(create<Expression>(std::move(selector), status), status);
+
+ return *this;
+}
+
+/*
+ `pattern` must be non-null
+*/
+MFDataModel::Builder& MFDataModel::Builder::addVariant(SelectorKeys&& keys, Pattern&& pattern, UErrorCode& errorCode) noexcept {
+ buildSelectorsMessage(errorCode);
+ Variant* v = create<Variant>(Variant(std::move(keys), std::move(pattern)), errorCode);
+ if (U_SUCCESS(errorCode)) {
+ variants->adoptElement(v, errorCode);
+ }
+ return *this;
+}
+
+MFDataModel::Builder& MFDataModel::Builder::setPattern(Pattern&& pat) {
+ pattern = std::move(pat);
+ hasPattern = true;
+ hasSelectors = false;
+ // Invalidate variants
+ if (variants != nullptr) {
+ variants->removeAllElements();
+ }
+ return *this;
+}
+
+MFDataModel::MFDataModel(const MFDataModel& other) : body(Pattern()) {
+ U_ASSERT(!other.bogus);
+
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+
+ if (other.hasPattern()) {
+ // body.emplace<Pattern>(Pattern(*std::get_if<Pattern>(&other.body)));
+ body = *std::get_if<Pattern>(&other.body);
+ } else {
+ const Expression* otherSelectors = other.getSelectorsInternal();
+ const Variant* otherVariants = other.getVariantsInternal();
+ int32_t numSelectors = other.numSelectors();
+ int32_t numVariants = other.numVariants();
+ Expression* copiedSelectors = copyArray(otherSelectors, numSelectors, localErrorCode);
+ Variant* copiedVariants = copyArray(otherVariants, numVariants, localErrorCode);
+ if (U_FAILURE(localErrorCode)) {
+ bogus = true;
+ return;
+ }
+ // body.emplace<Matcher>(Matcher(copiedSelectors, numSelectors, copiedVariants, numVariants));
+ body = Matcher(copiedSelectors, numSelectors, copiedVariants, numVariants);
+ }
+
+ bindingsLen = other.bindingsLen;
+ bindings.adoptInstead(copyArray(other.bindings.getAlias(), bindingsLen, localErrorCode));
+ if (U_FAILURE(localErrorCode)) {
+ bogus = true;
+ }
+ unsupportedStatementsLen = other.unsupportedStatementsLen;
+ unsupportedStatements.adoptInstead(copyArray(other.unsupportedStatements.getAlias(), unsupportedStatementsLen, localErrorCode));
+ if (U_FAILURE(localErrorCode)) {
+ bogus = true;
+ }
+}
+
+MFDataModel::MFDataModel(const MFDataModel::Builder& builder, UErrorCode& errorCode) noexcept : body(Pattern()) {
+ CHECK_ERROR(errorCode);
+
+ if (builder.hasPattern) {
+ body.emplace<Pattern>(builder.pattern);
+ } else {
+ U_ASSERT(builder.variants != nullptr);
+ U_ASSERT(builder.selectors != nullptr);
+ int32_t numVariants = builder.variants->size();
+ int32_t numSelectors = builder.selectors->size();
+ Variant* variants = copyVectorToArray<Variant>(*builder.variants, errorCode);
+ Expression* selectors = copyVectorToArray<Expression>(*builder.selectors, errorCode);
+ if (U_FAILURE(errorCode)) {
+ bogus = true;
+ return;
+ }
+ body.emplace<Matcher>(Matcher(selectors, numSelectors, variants, numVariants));
+ }
+
+ U_ASSERT(builder.bindings != nullptr);
+ bindingsLen = builder.bindings->size();
+ bindings.adoptInstead(copyVectorToArray<Binding>(*builder.bindings, errorCode));
+ unsupportedStatementsLen = builder.unsupportedStatements->size();
+ unsupportedStatements.adoptInstead(copyVectorToArray<UnsupportedStatement>(*builder.unsupportedStatements, errorCode));
+ if (U_FAILURE(errorCode)) {
+ bogus = true;
+ }
+}
+
+MFDataModel::MFDataModel() : body(Pattern()) {}
+
+MFDataModel& MFDataModel::operator=(MFDataModel other) noexcept {
+ U_ASSERT(!other.bogus);
+ swap(*this, other);
+ return *this;
+}
+
+MFDataModel MFDataModel::Builder::build(UErrorCode& errorCode) const noexcept {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+ if (!hasPattern && !hasSelectors) {
+ errorCode = U_INVALID_STATE_ERROR;
+ }
+ return MFDataModel(*this, errorCode);
+}
+
+MFDataModel::~MFDataModel() {}
+MFDataModel::Builder::~Builder() {
+ if (selectors != nullptr) {
+ delete selectors;
+ }
+ if (variants != nullptr) {
+ delete variants;
+ }
+ if (bindings != nullptr) {
+ delete bindings;
+ }
+ if (unsupportedStatements != nullptr) {
+ delete unsupportedStatements;
+ }
+}
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/messageformat2_errors.cpp b/icu4c/source/i18n/messageformat2_errors.cpp
new file mode 100644
index 000000000..48fa17a79
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_errors.cpp
@@ -0,0 +1,290 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "messageformat2_allocation.h"
+#include "messageformat2_errors.h"
+#include "messageformat2_macros.h"
+#include "uvector.h" // U_ASSERT
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ // Errors
+ // -----------
+
+ void DynamicErrors::setReservedError(UErrorCode& status) {
+ addError(DynamicError(DynamicErrorType::ReservedError), status);
+ }
+
+ void DynamicErrors::setFormattingError(const FunctionName& formatterName, UErrorCode& status) {
+ addError(DynamicError(DynamicErrorType::FormattingError, formatterName), status);
+ }
+
+ void DynamicErrors::setFormattingError(UErrorCode& status) {
+ addError(DynamicError(DynamicErrorType::FormattingError, UnicodeString("unknown formatter")), status);
+ }
+
+ void DynamicErrors::setOperandMismatchError(const FunctionName& formatterName, UErrorCode& status) {
+ addError(DynamicError(DynamicErrorType::OperandMismatchError, formatterName), status);
+ }
+
+ void StaticErrors::setDuplicateOptionName(UErrorCode& status) {
+ addError(StaticError(StaticErrorType::DuplicateOptionName), status);
+ }
+
+ void StaticErrors::setMissingSelectorAnnotation(UErrorCode& status) {
+ addError(StaticError(StaticErrorType::MissingSelectorAnnotation), status);
+ }
+
+ void DynamicErrors::setSelectorError(const FunctionName& selectorName, UErrorCode& status) {
+ addError(DynamicError(DynamicErrorType::SelectorError, selectorName), status);
+ }
+
+ void DynamicErrors::setUnknownFunction(const FunctionName& functionName, UErrorCode& status) {
+ addError(DynamicError(DynamicErrorType::UnknownFunction, functionName), status);
+ }
+
+ void DynamicErrors::setUnresolvedVariable(const VariableName& v, UErrorCode& status) {
+ addError(DynamicError(DynamicErrorType::UnresolvedVariable, v), status);
+ }
+
+ DynamicErrors::DynamicErrors(const StaticErrors& e, UErrorCode& status) : staticErrors(e) {
+ resolutionAndFormattingErrors.adoptInstead(createUVector(status));
+ }
+
+ StaticErrors::StaticErrors(UErrorCode& status) {
+ syntaxAndDataModelErrors.adoptInstead(createUVector(status));
+ }
+
+ StaticErrors::StaticErrors(StaticErrors&& other) noexcept {
+ U_ASSERT(other.syntaxAndDataModelErrors.isValid());
+ syntaxAndDataModelErrors.adoptInstead(other.syntaxAndDataModelErrors.orphan());
+ dataModelError = other.dataModelError;
+ missingSelectorAnnotationError = other.missingSelectorAnnotationError;
+ syntaxError = other.syntaxError;
+ }
+
+ StaticErrors::StaticErrors(const StaticErrors& other, UErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ U_ASSERT(other.syntaxAndDataModelErrors.isValid());
+ syntaxAndDataModelErrors.adoptInstead(createUVector(errorCode));
+ CHECK_ERROR(errorCode);
+ for (int32_t i = 0; i < other.syntaxAndDataModelErrors->size(); i++) {
+ StaticError* e = static_cast<StaticError*>(other.syntaxAndDataModelErrors->elementAt(i));
+ U_ASSERT(e != nullptr);
+ StaticError* copy = new StaticError(*e);
+ if (copy == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ syntaxAndDataModelErrors->adoptElement(copy, errorCode);
+ }
+ dataModelError = other.dataModelError;
+ missingSelectorAnnotationError = other.missingSelectorAnnotationError;
+ syntaxError = other.syntaxError;
+ }
+
+ int32_t DynamicErrors::count() const {
+ U_ASSERT(resolutionAndFormattingErrors.isValid() && staticErrors.syntaxAndDataModelErrors.isValid());
+ return resolutionAndFormattingErrors->size() + staticErrors.syntaxAndDataModelErrors->size();
+ }
+
+ bool DynamicErrors::hasError() const {
+ return count() > 0;
+ }
+
+ bool DynamicErrors::hasStaticError() const {
+ U_ASSERT(staticErrors.syntaxAndDataModelErrors.isValid());
+ return staticErrors.syntaxAndDataModelErrors->size() > 0;
+ }
+
+ const DynamicError& DynamicErrors::first() const {
+ U_ASSERT(resolutionAndFormattingErrors->size() > 0);
+ return *static_cast<DynamicError*>(resolutionAndFormattingErrors->elementAt(0));
+ }
+
+ void DynamicErrors::checkErrors(UErrorCode& status) const {
+ if (status != U_ZERO_ERROR) {
+ return;
+ }
+
+ // Just handle the first error
+ // TODO: Eventually want to return all errors to caller
+ if (count() == 0) {
+ return;
+ }
+ if (staticErrors.syntaxAndDataModelErrors->size() > 0) {
+ switch (staticErrors.first().type) {
+ case StaticErrorType::DuplicateDeclarationError: {
+ status = U_MF_DUPLICATE_DECLARATION_ERROR;
+ break;
+ }
+ case StaticErrorType::DuplicateOptionName: {
+ status = U_MF_DUPLICATE_OPTION_NAME_ERROR;
+ break;
+ }
+ case StaticErrorType::VariantKeyMismatchError: {
+ status = U_MF_VARIANT_KEY_MISMATCH_ERROR;
+ break;
+ }
+ case StaticErrorType::NonexhaustivePattern: {
+ status = U_MF_NONEXHAUSTIVE_PATTERN_ERROR;
+ break;
+ }
+ case StaticErrorType::MissingSelectorAnnotation: {
+ status = U_MF_MISSING_SELECTOR_ANNOTATION_ERROR;
+ break;
+ }
+ case StaticErrorType::SyntaxError: {
+ status = U_MF_SYNTAX_ERROR;
+ break;
+ }
+ case StaticErrorType::UnsupportedStatementError: {
+ status = U_MF_UNSUPPORTED_STATEMENT_ERROR;
+ }
+ }
+ } else {
+ U_ASSERT(resolutionAndFormattingErrors->size() > 0);
+ switch (first().type) {
+ case DynamicErrorType::UnknownFunction: {
+ status = U_MF_UNKNOWN_FUNCTION_ERROR;
+ break;
+ }
+ case DynamicErrorType::UnresolvedVariable: {
+ status = U_MF_UNRESOLVED_VARIABLE_ERROR;
+ break;
+ }
+ case DynamicErrorType::FormattingError: {
+ status = U_MF_FORMATTING_ERROR;
+ break;
+ }
+ case DynamicErrorType::OperandMismatchError: {
+ status = U_MF_OPERAND_MISMATCH_ERROR;
+ break;
+ }
+ case DynamicErrorType::ReservedError: {
+ status = U_MF_UNSUPPORTED_EXPRESSION_ERROR;
+ break;
+ }
+ case DynamicErrorType::SelectorError: {
+ status = U_MF_SELECTOR_ERROR;
+ break;
+ }
+ }
+ }
+ }
+
+ void StaticErrors::addSyntaxError(UErrorCode& status) {
+ addError(StaticError(StaticErrorType::SyntaxError), status);
+ }
+
+ void StaticErrors::addError(StaticError&& e, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ void* errorP = static_cast<void*>(create<StaticError>(std::move(e), status));
+ U_ASSERT(syntaxAndDataModelErrors.isValid());
+
+ switch (e.type) {
+ case StaticErrorType::SyntaxError: {
+ syntaxError = true;
+ break;
+ }
+ case StaticErrorType::DuplicateDeclarationError: {
+ dataModelError = true;
+ break;
+ }
+ case StaticErrorType::DuplicateOptionName: {
+ dataModelError = true;
+ break;
+ }
+ case StaticErrorType::VariantKeyMismatchError: {
+ dataModelError = true;
+ break;
+ }
+ case StaticErrorType::NonexhaustivePattern: {
+ dataModelError = true;
+ break;
+ }
+ case StaticErrorType::MissingSelectorAnnotation: {
+ missingSelectorAnnotationError = true;
+ dataModelError = true;
+ break;
+ }
+ case StaticErrorType::UnsupportedStatementError: {
+ dataModelError = true;
+ break;
+ }
+ }
+ syntaxAndDataModelErrors->adoptElement(errorP, status);
+ }
+
+ void DynamicErrors::addError(DynamicError&& e, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ void* errorP = static_cast<void*>(create<DynamicError>(std::move(e), status));
+ U_ASSERT(resolutionAndFormattingErrors.isValid());
+
+ switch (e.type) {
+ case DynamicErrorType::UnresolvedVariable: {
+ unresolvedVariableError = true;
+ resolutionAndFormattingErrors->adoptElement(errorP, status);
+ break;
+ }
+ case DynamicErrorType::FormattingError: {
+ formattingError = true;
+ resolutionAndFormattingErrors->adoptElement(errorP, status);
+ break;
+ }
+ case DynamicErrorType::OperandMismatchError: {
+ formattingError = true;
+ resolutionAndFormattingErrors->adoptElement(errorP, status);
+ break;
+ }
+ case DynamicErrorType::ReservedError: {
+ resolutionAndFormattingErrors->adoptElement(errorP, status);
+ break;
+ }
+ case DynamicErrorType::SelectorError: {
+ selectorError = true;
+ resolutionAndFormattingErrors->adoptElement(errorP, status);
+ break;
+ }
+ case DynamicErrorType::UnknownFunction: {
+ unknownFunctionError = true;
+ resolutionAndFormattingErrors->adoptElement(errorP, status);
+ break;
+ }
+ }
+ }
+
+ const StaticError& StaticErrors::first() const {
+ U_ASSERT(syntaxAndDataModelErrors.isValid() && syntaxAndDataModelErrors->size() > 0);
+ return *static_cast<StaticError*>(syntaxAndDataModelErrors->elementAt(0));
+ }
+
+ StaticErrors::~StaticErrors() {}
+ DynamicErrors::~DynamicErrors() {}
+
+ template<typename ErrorType>
+ Error<ErrorType>::~Error() {}
+
+ template<>
+ Error<StaticErrorType>::~Error() {}
+ template<>
+ Error<DynamicErrorType>::~Error() {}
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/messageformat2_errors.h b/icu4c/source/i18n/messageformat2_errors.h
new file mode 100644
index 000000000..ef2ad20fa
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_errors.h
@@ -0,0 +1,160 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_ERRORS_H
+#define MESSAGEFORMAT2_ERRORS_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+/**
+ * \file
+ * \brief C++ API: Formats messages using the draft MessageFormat 2.0.
+ */
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model_names.h"
+#include "unicode/unistr.h"
+
+#include "uvector.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // Errors
+ // ----------
+
+ class DynamicErrors;
+ class StaticErrors;
+
+ // Internal class -- used as a private field in MessageFormatter
+ template <typename ErrorType>
+ class Error : public UObject {
+ public:
+ Error(ErrorType ty) : type(ty) {}
+ Error(ErrorType ty, const UnicodeString& s) : type(ty), contents(s) {}
+ virtual ~Error();
+ private:
+ friend class DynamicErrors;
+ friend class StaticErrors;
+
+ ErrorType type;
+ UnicodeString contents;
+ }; // class Error
+
+ enum StaticErrorType {
+ DuplicateDeclarationError,
+ DuplicateOptionName,
+ MissingSelectorAnnotation,
+ NonexhaustivePattern,
+ SyntaxError,
+ UnsupportedStatementError,
+ VariantKeyMismatchError
+ };
+
+ enum DynamicErrorType {
+ UnresolvedVariable,
+ FormattingError,
+ OperandMismatchError,
+ ReservedError,
+ SelectorError,
+ UnknownFunction,
+ };
+
+ using StaticError = Error<StaticErrorType>;
+ using DynamicError = Error<DynamicErrorType>;
+
+ // These explicit instantiations have to come before the
+ // destructor definitions
+ template<>
+ Error<StaticErrorType>::~Error();
+ template<>
+ Error<DynamicErrorType>::~Error();
+
+ class StaticErrors : public UObject {
+ private:
+ friend class DynamicErrors;
+
+ LocalPointer<UVector> syntaxAndDataModelErrors;
+ bool dataModelError = false;
+ bool missingSelectorAnnotationError = false;
+ bool syntaxError = false;
+
+ public:
+ StaticErrors(UErrorCode&);
+
+ void setMissingSelectorAnnotation(UErrorCode&);
+ void setDuplicateOptionName(UErrorCode&);
+ void addSyntaxError(UErrorCode&);
+ bool hasDataModelError() const { return dataModelError; }
+ bool hasSyntaxError() const { return syntaxError; }
+ bool hasMissingSelectorAnnotationError() const { return missingSelectorAnnotationError; }
+ void addError(StaticError&&, UErrorCode&);
+ void checkErrors(UErrorCode&);
+
+ const StaticError& first() const;
+ StaticErrors(const StaticErrors&, UErrorCode&);
+ StaticErrors(StaticErrors&&) noexcept;
+ virtual ~StaticErrors();
+ }; // class StaticErrors
+
+ class DynamicErrors : public UObject {
+ private:
+ const StaticErrors& staticErrors;
+ LocalPointer<UVector> resolutionAndFormattingErrors;
+ bool formattingError = false;
+ bool selectorError = false;
+ bool unknownFunctionError = false;
+ bool unresolvedVariableError = false;
+
+ public:
+ DynamicErrors(const StaticErrors&, UErrorCode&);
+
+ int32_t count() const;
+ void setSelectorError(const FunctionName&, UErrorCode&);
+ void setReservedError(UErrorCode&);
+ void setUnresolvedVariable(const VariableName&, UErrorCode&);
+ void setUnknownFunction(const FunctionName&, UErrorCode&);
+ void setFormattingError(const FunctionName&, UErrorCode&);
+ // Used when the name of the offending formatter is unknown
+ void setFormattingError(UErrorCode&);
+ void setOperandMismatchError(const FunctionName&, UErrorCode&);
+ bool hasDataModelError() const { return staticErrors.hasDataModelError(); }
+ bool hasFormattingError() const { return formattingError; }
+ bool hasSelectorError() const { return selectorError; }
+ bool hasSyntaxError() const { return staticErrors.hasSyntaxError(); }
+ bool hasUnknownFunctionError() const { return unknownFunctionError; }
+ bool hasMissingSelectorAnnotationError() const { return staticErrors.hasMissingSelectorAnnotationError(); }
+ bool hasUnresolvedVariableError() const { return unresolvedVariableError; }
+ void addError(DynamicError&&, UErrorCode&);
+ void checkErrors(UErrorCode&) const;
+ bool hasError() const;
+ bool hasStaticError() const;
+
+ const DynamicError& first() const;
+ virtual ~DynamicErrors();
+ }; // class DynamicErrors
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_ERRORS_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/icu4c/source/i18n/messageformat2_evaluation.cpp b/icu4c/source/i18n/messageformat2_evaluation.cpp
new file mode 100644
index 000000000..41e4c9a80
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_evaluation.cpp
@@ -0,0 +1,207 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "messageformat2_allocation.h"
+#include "messageformat2_evaluation.h"
+#include "messageformat2_macros.h"
+#include "uvector.h" // U_ASSERT
+
+U_NAMESPACE_BEGIN
+
+// Auxiliary data structures used during formatting a message
+
+namespace message2 {
+
+using namespace data_model;
+
+// Functions
+// -------------
+
+ResolvedFunctionOption::ResolvedFunctionOption(ResolvedFunctionOption&& other) {
+ name = std::move(other.name);
+ value = std::move(other.value);
+}
+
+ResolvedFunctionOption::~ResolvedFunctionOption() {}
+
+
+const ResolvedFunctionOption* FunctionOptions::getResolvedFunctionOptions(int32_t& len) const {
+ len = functionOptionsLen;
+ U_ASSERT(len == 0 || options != nullptr);
+ return options;
+}
+
+FunctionOptions::FunctionOptions(UVector&& optionsVector, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ functionOptionsLen = optionsVector.size();
+ options = moveVectorToArray<ResolvedFunctionOption>(optionsVector, status);
+}
+
+UBool FunctionOptions::getFunctionOption(const UnicodeString& key, Formattable& option) const {
+ if (options == nullptr) {
+ U_ASSERT(functionOptionsLen == 0);
+ }
+ for (int32_t i = 0; i < functionOptionsLen; i++) {
+ const ResolvedFunctionOption& opt = options[i];
+ if (opt.getName() == key) {
+ option = opt.getValue();
+ return true;
+ }
+ }
+ return false;
+}
+
+UnicodeString FunctionOptions::getStringFunctionOption(const UnicodeString& key) const {
+ Formattable option;
+ if (getFunctionOption(key, option)) {
+ if (option.getType() == UFMT_STRING) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ UnicodeString val = option.getString(localErrorCode);
+ U_ASSERT(U_SUCCESS(localErrorCode));
+ return val;
+ }
+ }
+ // For anything else, including non-string values, return "".
+ // Alternately, could try to stringify the non-string option.
+ // (Currently, no tests require that.)
+ return {};
+}
+
+FunctionOptions& FunctionOptions::operator=(FunctionOptions&& other) noexcept {
+ functionOptionsLen = other.functionOptionsLen;
+ options = other.options;
+ other.functionOptionsLen = 0;
+ other.options = nullptr;
+ return *this;
+}
+
+FunctionOptions::FunctionOptions(FunctionOptions&& other) {
+ *this = std::move(other);
+}
+
+FunctionOptions::~FunctionOptions() {
+ if (options != nullptr) {
+ delete[] options;
+ }
+}
+// ResolvedSelector
+// ----------------
+
+ResolvedSelector::ResolvedSelector(const FunctionName& fn,
+ Selector* sel,
+ FunctionOptions&& opts,
+ FormattedPlaceholder&& val)
+ : selectorName(fn), selector(sel), options(std::move(opts)), value(std::move(val)) {
+ U_ASSERT(sel != nullptr);
+}
+
+ResolvedSelector::ResolvedSelector(FormattedPlaceholder&& val) : value(std::move(val)) {}
+
+ResolvedSelector& ResolvedSelector::operator=(ResolvedSelector&& other) noexcept {
+ selectorName = std::move(other.selectorName);
+ selector.adoptInstead(other.selector.orphan());
+ options = std::move(other.options);
+ value = std::move(other.value);
+ return *this;
+}
+
+ResolvedSelector::ResolvedSelector(ResolvedSelector&& other) {
+ *this = std::move(other);
+}
+
+ResolvedSelector::~ResolvedSelector() {}
+
+// PrioritizedVariant
+// ------------------
+
+UBool PrioritizedVariant::operator<(const PrioritizedVariant& other) const {
+ if (priority < other.priority) {
+ return true;
+ }
+ return false;
+}
+
+PrioritizedVariant::~PrioritizedVariant() {}
+
+ // ---------------- Environments and closures
+
+ Environment* Environment::create(const VariableName& var, Closure&& c, Environment* parent, UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+ Environment* result = new NonEmptyEnvironment(var, std::move(c), parent);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ return result;
+ }
+
+ Environment* Environment::create(UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+ Environment* result = new EmptyEnvironment();
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ return result;
+ }
+
+ const Closure& EmptyEnvironment::lookup(const VariableName& v) const {
+ (void) v;
+ U_ASSERT(false);
+ UPRV_UNREACHABLE_EXIT;
+ }
+
+ const Closure& NonEmptyEnvironment::lookup(const VariableName& v) const {
+ if (v == var) {
+ return rhs;
+ }
+ return parent->lookup(v);
+ }
+
+ bool EmptyEnvironment::has(const VariableName& v) const {
+ (void) v;
+ return false;
+ }
+
+ bool NonEmptyEnvironment::has(const VariableName& v) const {
+ if (v == var) {
+ return true;
+ }
+ return parent->has(v);
+ }
+
+ Environment::~Environment() {}
+ NonEmptyEnvironment::~NonEmptyEnvironment() {}
+ EmptyEnvironment::~EmptyEnvironment() {}
+
+ Closure::~Closure() {}
+
+ // MessageContext methods
+
+ void MessageContext::checkErrors(UErrorCode& status) const {
+ CHECK_ERROR(status);
+ errors.checkErrors(status);
+ }
+
+ const Formattable* MessageContext::getGlobal(const VariableName& v, UErrorCode& errorCode) const {
+ return arguments.getArgument(v, errorCode);
+ }
+
+ MessageContext::MessageContext(const MessageArguments& args,
+ const StaticErrors& e,
+ UErrorCode& status) : arguments(args), errors(e, status) {}
+ MessageContext::~MessageContext() {}
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/messageformat2_evaluation.h b/icu4c/source/i18n/messageformat2_evaluation.h
new file mode 100644
index 000000000..b8ae02423
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_evaluation.h
@@ -0,0 +1,209 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_EVALUATION_H
+#define MESSAGEFORMAT2_EVALUATION_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+/**
+ * \file
+ * \brief C++ API: Formats messages using the draft MessageFormat 2.0.
+ */
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_arguments.h"
+#include "unicode/messageformat2_data_model.h"
+#include "unicode/messageformat2_function_registry.h"
+#include "messageformat2_errors.h"
+
+// Auxiliary data structures used during formatting a message
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // PrioritizedVariant
+
+ // For how this class is used, see the references to (integer, variant) tuples
+ // in https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#pattern-selection
+ class PrioritizedVariant : public UObject {
+ public:
+ PrioritizedVariant() = default;
+ PrioritizedVariant(PrioritizedVariant&&) = default;
+ PrioritizedVariant& operator=(PrioritizedVariant&&) noexcept = default;
+ UBool operator<(const PrioritizedVariant&) const;
+ int32_t priority;
+ /* const */ SelectorKeys keys;
+ /* const */ Pattern pat;
+ PrioritizedVariant(uint32_t p,
+ const SelectorKeys& k,
+ const Pattern& pattern) noexcept : priority(p), keys(k), pat(pattern) {}
+ virtual ~PrioritizedVariant();
+ }; // class PrioritizedVariant
+
+ static inline int32_t comparePrioritizedVariants(UElement left, UElement right) {
+ const PrioritizedVariant& tuple1 = *(static_cast<const PrioritizedVariant*>(left.pointer));
+ const PrioritizedVariant& tuple2 = *(static_cast<const PrioritizedVariant*>(right.pointer));
+ if (tuple1 < tuple2) {
+ return -1;
+ }
+ if (tuple1.priority == tuple2.priority) {
+ return 0;
+ }
+ return 1;
+ }
+
+ // Encapsulates a value to be scrutinized by a `match` with its resolved
+ // options and the name of the selector
+ class ResolvedSelector : public UObject {
+ public:
+ ResolvedSelector() {}
+ ResolvedSelector(const FunctionName& fn,
+ Selector* selector,
+ FunctionOptions&& options,
+ FormattedPlaceholder&& value);
+ // Used either for errors, or when selector isn't yet known
+ explicit ResolvedSelector(FormattedPlaceholder&& value);
+ bool hasSelector() const { return selector.isValid(); }
+ const FormattedPlaceholder& argument() const { return value; }
+ FormattedPlaceholder&& takeArgument() { return std::move(value); }
+ const Selector* getSelector() {
+ U_ASSERT(selector.isValid());
+ return selector.getAlias();
+ }
+ FunctionOptions&& takeOptions() {
+ return std::move(options);
+ }
+ const FunctionName& getSelectorName() const { return selectorName; }
+ virtual ~ResolvedSelector();
+ ResolvedSelector& operator=(ResolvedSelector&&) noexcept;
+ ResolvedSelector(ResolvedSelector&&);
+ private:
+ FunctionName selectorName; // For error reporting
+ LocalPointer<Selector> selector;
+ FunctionOptions options;
+ FormattedPlaceholder value;
+ }; // class ResolvedSelector
+
+ // Closures and environments
+ // -------------------------
+
+ class Environment;
+
+ // A closure represents the right-hand side of a variable
+ // declaration, along with an environment giving values
+ // to its free variables
+ class Closure : public UMemory {
+ public:
+ const Expression& getExpr() const {
+ return expr;
+ }
+ const Environment& getEnv() const {
+ return env;
+ }
+ Closure(const Expression& expression, const Environment& environment) : expr(expression), env(environment) {}
+ Closure(Closure&&) = default;
+
+ virtual ~Closure();
+ private:
+
+ // An unevaluated expression
+ const Expression& expr;
+ // The environment mapping names used in this
+ // expression to other expressions
+ const Environment& env;
+ };
+
+ // An environment is represented as a linked chain of
+ // non-empty environments, terminating at an empty environment.
+ // It's searched using linear search.
+ class Environment : public UMemory {
+ public:
+ virtual bool has(const VariableName&) const = 0;
+ virtual const Closure& lookup(const VariableName&) const = 0;
+ static Environment* create(UErrorCode&);
+ static Environment* create(const VariableName&, Closure&&, Environment*, UErrorCode&);
+ virtual ~Environment();
+ };
+
+ class NonEmptyEnvironment;
+ class EmptyEnvironment : public Environment {
+ public:
+ EmptyEnvironment() = default;
+ virtual ~EmptyEnvironment();
+
+ private:
+ friend class Environment;
+
+ bool has(const VariableName&) const override;
+ const Closure& lookup(const VariableName&) const override;
+ static EmptyEnvironment* create(UErrorCode&);
+ static NonEmptyEnvironment* create(const VariableName&, Closure&&, Environment*, UErrorCode&);
+ };
+
+ class NonEmptyEnvironment : public Environment {
+ private:
+ friend class Environment;
+
+ bool has(const VariableName&) const override;
+ const Closure& lookup(const VariableName&) const override;
+ static NonEmptyEnvironment* create(const VariableName&, Closure&&, const Environment*, UErrorCode&);
+ virtual ~NonEmptyEnvironment();
+ private:
+ friend class Environment;
+
+ NonEmptyEnvironment(const VariableName& v, Closure&& c, Environment* e) : var(v), rhs(std::move(c)), parent(e) {}
+
+ // Maps VariableName onto Closure*
+ // Chain of linked environments
+ VariableName var;
+ Closure rhs;
+ const LocalPointer<Environment> parent;
+ };
+
+ // The context contains all the information needed to process
+ // an entire message: arguments, formatter cache, and error list
+
+ class MessageContext : public UMemory {
+ public:
+ MessageContext(const MessageArguments&, const StaticErrors&, UErrorCode&);
+
+ const Formattable* getGlobal(const VariableName&, UErrorCode&) const;
+
+ // If any errors were set, update `status` accordingly
+ void checkErrors(UErrorCode& status) const;
+ DynamicErrors& getErrors() { return errors; }
+
+ virtual ~MessageContext();
+
+ private:
+
+ const MessageArguments& arguments; // External message arguments
+ // Errors accumulated during parsing/formatting
+ DynamicErrors errors;
+ }; // class MessageContext
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_EVALUATION_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/icu4c/source/i18n/messageformat2_formattable.cpp b/icu4c/source/i18n/messageformat2_formattable.cpp
new file mode 100644
index 000000000..3152ccb44
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_formattable.cpp
@@ -0,0 +1,338 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_formattable.h"
+#include "unicode/smpdtfmt.h"
+#include "messageformat2_macros.h"
+
+#include "limits.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ // Fallback values are enclosed in curly braces;
+ // see https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#formatting-fallback-values
+
+ static UnicodeString fallbackToString(const UnicodeString& s) {
+ UnicodeString result;
+ result += LEFT_CURLY_BRACE;
+ result += s;
+ result += RIGHT_CURLY_BRACE;
+ return result;
+ }
+
+ Formattable& Formattable::operator=(Formattable other) noexcept {
+ swap(*this, other);
+ return *this;
+ }
+
+ Formattable::Formattable(const Formattable& other) {
+ contents = other.contents;
+ holdsDate = other.holdsDate;
+ }
+
+ Formattable Formattable::forDecimal(std::string_view number, UErrorCode &status) {
+ Formattable f;
+ // The relevant overload of the StringPiece constructor
+ // casts the string length to int32_t, so we have to check
+ // that the length makes sense
+ if (number.size() > INT_MAX) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ } else {
+ f.contents = icu::Formattable(StringPiece(number), status);
+ }
+ return f;
+ }
+
+ UFormattableType Formattable::getType() const {
+ if (std::holds_alternative<double>(contents)) {
+ return holdsDate ? UFMT_DATE : UFMT_DOUBLE;
+ }
+ if (std::holds_alternative<int64_t>(contents)) {
+ return UFMT_INT64;
+ }
+ if (std::holds_alternative<UnicodeString>(contents)) {
+ return UFMT_STRING;
+ }
+ if (isDecimal()) {
+ switch (std::get_if<icu::Formattable>(&contents)->getType()) {
+ case icu::Formattable::Type::kLong: {
+ return UFMT_LONG;
+ }
+ case icu::Formattable::Type::kDouble: {
+ return UFMT_DOUBLE;
+ }
+ default: {
+ return UFMT_INT64;
+ }
+ }
+ }
+ if (std::holds_alternative<const FormattableObject*>(contents)) {
+ return UFMT_OBJECT;
+ }
+ return UFMT_ARRAY;
+ }
+
+ const Formattable* Formattable::getArray(int32_t& len, UErrorCode& status) const {
+ NULL_ON_ERROR(status);
+
+ if (getType() != UFMT_ARRAY) {
+ len = 0;
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return nullptr;
+ }
+ const std::pair<const Formattable*, int32_t>& p = *std::get_if<std::pair<const Formattable*, int32_t>>(&contents);
+ U_ASSERT(p.first != nullptr);
+ len = p.second;
+ return p.first;
+ }
+
+ int64_t Formattable::getInt64(UErrorCode& status) const {
+ if (isDecimal() && isNumeric()) {
+ return std::get_if<icu::Formattable>(&contents)->getInt64(status);
+ }
+
+ switch (getType()) {
+ case UFMT_LONG:
+ case UFMT_INT64: {
+ return *std::get_if<int64_t>(&contents);
+ }
+ case UFMT_DOUBLE: {
+ return icu::Formattable(*std::get_if<double>(&contents)).getInt64(status);
+ }
+ default: {
+ status = U_INVALID_FORMAT_ERROR;
+ return 0;
+ }
+ }
+ }
+
+ icu::Formattable Formattable::asICUFormattable(UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ // Type must not be UFMT_ARRAY or UFMT_OBJECT
+ if (getType() == UFMT_ARRAY || getType() == UFMT_OBJECT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return {};
+ }
+
+ if (isDecimal()) {
+ return *std::get_if<icu::Formattable>(&contents);
+ }
+
+ switch (getType()) {
+ case UFMT_DATE: {
+ return icu::Formattable(*std::get_if<double>(&contents), icu::Formattable::kIsDate);
+ }
+ case UFMT_DOUBLE: {
+ return icu::Formattable(*std::get_if<double>(&contents));
+ }
+ case UFMT_LONG: {
+ return icu::Formattable(static_cast<int32_t>(*std::get_if<double>(&contents)));
+ }
+ case UFMT_INT64: {
+ return icu::Formattable(*std::get_if<int64_t>(&contents));
+ }
+ case UFMT_STRING: {
+ return icu::Formattable(*std::get_if<UnicodeString>(&contents));
+ }
+ default: {
+ // Already checked for UFMT_ARRAY and UFMT_OBJECT
+ return icu::Formattable();
+ }
+ }
+ }
+
+ Formattable::~Formattable() {}
+
+ FormattableObject::~FormattableObject() {}
+
+ FormattedMessage::~FormattedMessage() {}
+
+ FormattedValue::FormattedValue(const UnicodeString& s) {
+ type = kString;
+ stringOutput = std::move(s);
+ }
+
+ FormattedValue::FormattedValue(number::FormattedNumber&& n) {
+ type = kNumber;
+ numberOutput = std::move(n);
+ }
+
+ FormattedValue& FormattedValue::operator=(FormattedValue&& other) noexcept {
+ type = other.type;
+ if (type == kString) {
+ stringOutput = std::move(other.stringOutput);
+ } else {
+ numberOutput = std::move(other.numberOutput);
+ }
+ return *this;
+ }
+
+ FormattedValue::~FormattedValue() {}
+
+ FormattedPlaceholder& FormattedPlaceholder::operator=(FormattedPlaceholder&& other) noexcept {
+ type = other.type;
+ source = other.source;
+ if (type == kEvaluated) {
+ formatted = std::move(other.formatted);
+ previousOptions = std::move(other.previousOptions);
+ }
+ fallback = other.fallback;
+ return *this;
+ }
+
+ const Formattable& FormattedPlaceholder::asFormattable() const {
+ return source;
+ }
+
+ // Default formatters
+ // ------------------
+
+ number::FormattedNumber formatNumberWithDefaults(const Locale& locale, double toFormat, UErrorCode& errorCode) {
+ return number::NumberFormatter::withLocale(locale).formatDouble(toFormat, errorCode);
+ }
+
+ number::FormattedNumber formatNumberWithDefaults(const Locale& locale, int32_t toFormat, UErrorCode& errorCode) {
+ return number::NumberFormatter::withLocale(locale).formatInt(toFormat, errorCode);
+ }
+
+ number::FormattedNumber formatNumberWithDefaults(const Locale& locale, int64_t toFormat, UErrorCode& errorCode) {
+ return number::NumberFormatter::withLocale(locale).formatInt(toFormat, errorCode);
+ }
+
+ number::FormattedNumber formatNumberWithDefaults(const Locale& locale, StringPiece toFormat, UErrorCode& errorCode) {
+ return number::NumberFormatter::withLocale(locale).formatDecimal(toFormat, errorCode);
+ }
+
+ DateFormat* defaultDateTimeInstance(const Locale& locale, UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+ LocalPointer<DateFormat> df(DateFormat::createDateTimeInstance(DateFormat::SHORT, DateFormat::SHORT, locale));
+ if (!df.isValid()) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ return df.orphan();
+ }
+
+ void formatDateWithDefaults(const Locale& locale, UDate date, UnicodeString& result, UErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ LocalPointer<DateFormat> df(defaultDateTimeInstance(locale, errorCode));
+ CHECK_ERROR(errorCode);
+ df->format(date, result, 0, errorCode);
+ }
+
+ // Called when output is required and the contents are an unevaluated `Formattable`;
+ // formats the source `Formattable` to a string with defaults, if it can be
+ // formatted with a default formatter
+ static FormattedPlaceholder formatWithDefaults(const Locale& locale, const FormattedPlaceholder& input, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ const Formattable& toFormat = input.asFormattable();
+ // Try as decimal number first
+ if (toFormat.isNumeric()) {
+ // Note: the ICU Formattable has to be created here since the StringPiece
+ // refers to state inside the Formattable; so otherwise we'll have a reference
+ // to a temporary object
+ icu::Formattable icuFormattable = toFormat.asICUFormattable(status);
+ StringPiece asDecimal = icuFormattable.getDecimalNumber(status);
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ if (asDecimal != nullptr) {
+ return FormattedPlaceholder(input, FormattedValue(formatNumberWithDefaults(locale, asDecimal, status)));
+ }
+ }
+
+ UFormattableType type = toFormat.getType();
+ switch (type) {
+ case UFMT_DATE: {
+ UnicodeString result;
+ UDate d = toFormat.getDate(status);
+ U_ASSERT(U_SUCCESS(status));
+ formatDateWithDefaults(locale, d, result, status);
+ return FormattedPlaceholder(input, FormattedValue(std::move(result)));
+ }
+ case UFMT_DOUBLE: {
+ double d = toFormat.getDouble(status);
+ U_ASSERT(U_SUCCESS(status));
+ return FormattedPlaceholder(input, FormattedValue(formatNumberWithDefaults(locale, d, status)));
+ }
+ case UFMT_LONG: {
+ int32_t l = toFormat.getLong(status);
+ U_ASSERT(U_SUCCESS(status));
+ return FormattedPlaceholder(input, FormattedValue(formatNumberWithDefaults(locale, l, status)));
+ }
+ case UFMT_INT64: {
+ int64_t i = toFormat.getInt64Value(status);
+ U_ASSERT(U_SUCCESS(status));
+ return FormattedPlaceholder(input, FormattedValue(formatNumberWithDefaults(locale, i, status)));
+ }
+ case UFMT_STRING: {
+ const UnicodeString& s = toFormat.getString(status);
+ U_ASSERT(U_SUCCESS(status));
+ return FormattedPlaceholder(input, FormattedValue(UnicodeString(s)));
+ }
+ default: {
+ // No default formatters for other types; use fallback
+ status = U_MF_FORMATTING_ERROR;
+ // Note: it would be better to set an internal formatting error so that a string
+ // (e.g. the type tag) can be provided. However, this method is called by the
+ // public method formatToString() and thus can't take a MessageContext
+ return FormattedPlaceholder(input.getFallback());
+ }
+ }
+ }
+
+ // Called when string output is required; forces output to be produced
+ // if none is present (including formatting number output as a string)
+ UnicodeString FormattedPlaceholder::formatToString(const Locale& locale,
+ UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ if (isFallback() || isNullOperand()) {
+ return fallbackToString(fallback);
+ }
+
+ // Evaluated value: either just return the string, or format the number
+ // as a string and return it
+ if (isEvaluated()) {
+ if (formatted.isString()) {
+ return formatted.getString();
+ } else {
+ return formatted.getNumber().toString(status);
+ }
+ }
+ // Unevaluated value: first evaluate it fully, then format
+ UErrorCode savedStatus = status;
+ FormattedPlaceholder evaluated = formatWithDefaults(locale, *this, status);
+ if (status == U_MF_FORMATTING_ERROR) {
+ U_ASSERT(evaluated.isFallback());
+ return evaluated.getFallback();
+ }
+ // Ignore U_USING_DEFAULT_WARNING
+ if (status == U_USING_DEFAULT_WARNING) {
+ status = savedStatus;
+ }
+ return evaluated.formatToString(locale, status);
+ }
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/messageformat2_formatter.cpp b/icu4c/source/i18n/messageformat2_formatter.cpp
new file mode 100644
index 000000000..47be39878
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_formatter.cpp
@@ -0,0 +1,326 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2.h"
+#include "messageformat2_allocation.h"
+#include "messageformat2_checker.h"
+#include "messageformat2_errors.h"
+#include "messageformat2_evaluation.h"
+#include "messageformat2_function_registry_internal.h"
+#include "messageformat2_macros.h"
+#include "messageformat2_parser.h"
+#include "messageformat2_serializer.h"
+#include "uvector.h" // U_ASSERT
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ // MessageFormatter::Builder
+
+ // -------------------------------------
+ // Creates a MessageFormat instance based on the pattern.
+
+ MessageFormatter::Builder& MessageFormatter::Builder::setPattern(const UnicodeString& pat, UParseError& parseError, UErrorCode& errorCode) {
+ normalizedInput.remove();
+ // Parse the pattern
+ MFDataModel::Builder tree(errorCode);
+ Parser(pat, tree, *errors, normalizedInput).parse(parseError, errorCode);
+
+ // Build the data model based on what was parsed
+ dataModel = tree.build(errorCode);
+ hasDataModel = true;
+ hasPattern = true;
+ pattern = pat;
+
+ return *this;
+ }
+
+ // Precondition: `reg` is non-null
+ // Does not adopt `reg`
+ MessageFormatter::Builder& MessageFormatter::Builder::setFunctionRegistry(const MFFunctionRegistry& reg) {
+ customMFFunctionRegistry = &reg;
+ return *this;
+ }
+
+ MessageFormatter::Builder& MessageFormatter::Builder::setLocale(const Locale& loc) {
+ locale = loc;
+ return *this;
+ }
+
+ MessageFormatter::Builder& MessageFormatter::Builder::setDataModel(MFDataModel&& newDataModel) {
+ normalizedInput.remove();
+ delete errors;
+ errors = nullptr;
+ hasPattern = false;
+ hasDataModel = true;
+ dataModel = std::move(newDataModel);
+
+ return *this;
+ }
+
+ /*
+ This build() method is non-destructive, which entails the risk that
+ its borrowed MFFunctionRegistry and (if the setDataModel() method was called)
+ MFDataModel pointers could become invalidated.
+ */
+ MessageFormatter MessageFormatter::Builder::build(UErrorCode& errorCode) const {
+ return MessageFormatter(*this, errorCode);
+ }
+
+ MessageFormatter::Builder::Builder(UErrorCode& errorCode) : locale(Locale::getDefault()), customMFFunctionRegistry(nullptr) {
+ // Initialize errors
+ errors = new StaticErrors(errorCode);
+ CHECK_ERROR(errorCode);
+ if (errors == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ }
+
+ MessageFormatter::Builder::~Builder() {
+ if (errors != nullptr) {
+ delete errors;
+ }
+ }
+
+ // MessageFormatter
+
+ MessageFormatter::MessageFormatter(const MessageFormatter::Builder& builder, UErrorCode &success) : locale(builder.locale), customMFFunctionRegistry(builder.customMFFunctionRegistry) {
+ CHECK_ERROR(success);
+
+ // Set up the standard function registry
+ MFFunctionRegistry::Builder standardFunctionsBuilder(success);
+
+ FormatterFactory* dateTime = StandardFunctions::DateTimeFactory::dateTime(success);
+ FormatterFactory* date = StandardFunctions::DateTimeFactory::date(success);
+ FormatterFactory* time = StandardFunctions::DateTimeFactory::time(success);
+ FormatterFactory* number = new StandardFunctions::NumberFactory();
+ FormatterFactory* integer = new StandardFunctions::IntegerFactory();
+ standardFunctionsBuilder.adoptFormatter(FunctionName(UnicodeString("datetime")), dateTime, success)
+ .adoptFormatter(FunctionName(UnicodeString("date")), date, success)
+ .adoptFormatter(FunctionName(UnicodeString("time")), time, success)
+ .adoptFormatter(FunctionName(UnicodeString("number")), number, success)
+ .adoptFormatter(FunctionName(UnicodeString("integer")), integer, success)
+ .adoptSelector(FunctionName(UnicodeString("number")), new StandardFunctions::PluralFactory(UPLURAL_TYPE_CARDINAL), success)
+ .adoptSelector(FunctionName(UnicodeString("integer")), new StandardFunctions::PluralFactory(StandardFunctions::PluralFactory::integer()), success)
+ .adoptSelector(FunctionName(UnicodeString("string")), new StandardFunctions::TextFactory(), success);
+ CHECK_ERROR(success);
+ standardMFFunctionRegistry = standardFunctionsBuilder.build();
+ CHECK_ERROR(success);
+ standardMFFunctionRegistry.checkStandard();
+
+ normalizedInput = builder.normalizedInput;
+
+ // Build data model
+ // First, check that there is a data model
+ // (which might have been set by setDataModel(), or to
+ // the data model parsed from the pattern by setPattern())
+
+ if (!builder.hasDataModel) {
+ success = U_INVALID_STATE_ERROR;
+ return;
+ }
+
+ dataModel = builder.dataModel;
+ if (builder.errors != nullptr) {
+ errors = new StaticErrors(*builder.errors, success);
+ } else {
+ // Initialize errors
+ LocalPointer<StaticErrors> errorsNew(new StaticErrors(success));
+ CHECK_ERROR(success);
+ errors = errorsNew.orphan();
+ }
+
+ // Note: we currently evaluate variables lazily,
+ // without memoization. This call is still necessary
+ // to check out-of-scope uses of local variables in
+ // right-hand sides (unresolved variable errors can
+ // only be checked when arguments are known)
+
+ // Check for resolution errors
+ Checker(dataModel, *errors).check(success);
+ }
+
+ void MessageFormatter::cleanup() noexcept {
+ if (errors != nullptr) {
+ delete errors;
+ }
+ }
+
+ MessageFormatter& MessageFormatter::operator=(MessageFormatter&& other) noexcept {
+ cleanup();
+
+ locale = std::move(other.locale);
+ standardMFFunctionRegistry = std::move(other.standardMFFunctionRegistry);
+ customMFFunctionRegistry = other.customMFFunctionRegistry;
+ dataModel = std::move(other.dataModel);
+ normalizedInput = std::move(other.normalizedInput);
+ errors = other.errors;
+ other.errors = nullptr;
+ return *this;
+ }
+
+ const MFDataModel& MessageFormatter::getDataModel() const { return dataModel; }
+
+ UnicodeString MessageFormatter::getPattern() const {
+ // Converts the current data model back to a string
+ UnicodeString result;
+ Serializer serializer(getDataModel(), result);
+ serializer.serialize();
+ return result;
+ }
+
+ // Precondition: custom function registry exists
+ const MFFunctionRegistry& MessageFormatter::getCustomMFFunctionRegistry() const {
+ U_ASSERT(hasCustomMFFunctionRegistry());
+ return *customMFFunctionRegistry;
+ }
+
+ MessageFormatter::~MessageFormatter() {
+ cleanup();
+ }
+
+ // Selector and formatter lookup
+ // -----------------------------
+
+ // Postcondition: selector != nullptr || U_FAILURE(status)
+ Selector* MessageFormatter::getSelector(MessageContext& context, const FunctionName& functionName, UErrorCode& status) const {
+ NULL_ON_ERROR(status);
+ U_ASSERT(isSelector(functionName));
+
+ const SelectorFactory* selectorFactory = lookupSelectorFactory(context, functionName, status);
+ NULL_ON_ERROR(status);
+ if (selectorFactory == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ // Create a specific instance of the selector
+ auto result = selectorFactory->createSelector(getLocale(), status);
+ NULL_ON_ERROR(status);
+ return result;
+ }
+
+ // Returns an owned pointer
+ Formatter* MessageFormatter::getFormatter(const FunctionName& functionName, UErrorCode& status) const {
+ NULL_ON_ERROR(status);
+
+ // Create the formatter
+
+ // First, look up the formatter factory for this function
+ FormatterFactory* formatterFactory = lookupFormatterFactory(functionName, status);
+ NULL_ON_ERROR(status);
+
+ U_ASSERT(formatterFactory != nullptr);
+
+ // Create a specific instance of the formatter
+ Formatter* formatter = formatterFactory->createFormatter(locale, status);
+ NULL_ON_ERROR(status);
+ if (formatter == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ return formatter;
+ }
+
+ bool MessageFormatter::getDefaultFormatterNameByType(const UnicodeString& type, FunctionName& name) const {
+ U_ASSERT(hasCustomMFFunctionRegistry());
+ const MFFunctionRegistry& reg = getCustomMFFunctionRegistry();
+ return reg.getDefaultFormatterNameByType(type, name);
+ }
+
+ // ---------------------------------------------------
+ // Function registry
+
+ bool MessageFormatter::isBuiltInSelector(const FunctionName& functionName) const {
+ return standardMFFunctionRegistry.hasSelector(functionName);
+ }
+
+ bool MessageFormatter::isBuiltInFormatter(const FunctionName& functionName) const {
+ return standardMFFunctionRegistry.hasFormatter(functionName);
+ }
+
+ // https://github.com/unicode-org/message-format-wg/issues/409
+ // Unknown function = unknown function error
+ // Formatter used as selector = selector error
+ // Selector used as formatter = formatting error
+ const SelectorFactory* MessageFormatter::lookupSelectorFactory(MessageContext& context, const FunctionName& functionName, UErrorCode& status) const {
+ DynamicErrors& err = context.getErrors();
+
+ if (isBuiltInSelector(functionName)) {
+ return standardMFFunctionRegistry.getSelector(functionName);
+ }
+ if (isBuiltInFormatter(functionName)) {
+ err.setSelectorError(functionName, status);
+ return nullptr;
+ }
+ if (hasCustomMFFunctionRegistry()) {
+ const MFFunctionRegistry& customMFFunctionRegistry = getCustomMFFunctionRegistry();
+ const SelectorFactory* selectorFactory = customMFFunctionRegistry.getSelector(functionName);
+ if (selectorFactory != nullptr) {
+ return selectorFactory;
+ }
+ if (customMFFunctionRegistry.getFormatter(functionName) != nullptr) {
+ err.setSelectorError(functionName, status);
+ return nullptr;
+ }
+ }
+ // Either there is no custom function registry and the function
+ // isn't built-in, or the function doesn't exist in either the built-in
+ // or custom registry.
+ // Unknown function error
+ err.setUnknownFunction(functionName, status);
+ return nullptr;
+ }
+
+ FormatterFactory* MessageFormatter::lookupFormatterFactory(const FunctionName& functionName,
+ UErrorCode& status) const {
+ NULL_ON_ERROR(status);
+
+ if (isBuiltInFormatter(functionName)) {
+ return standardMFFunctionRegistry.getFormatter(functionName);
+ }
+ if (isBuiltInSelector(functionName)) {
+ status = U_MF_FORMATTING_ERROR;
+ return nullptr;
+ }
+ if (hasCustomMFFunctionRegistry()) {
+ const MFFunctionRegistry& customMFFunctionRegistry = getCustomMFFunctionRegistry();
+ FormatterFactory* formatterFactory = customMFFunctionRegistry.getFormatter(functionName);
+ if (formatterFactory != nullptr) {
+ return formatterFactory;
+ }
+ if (customMFFunctionRegistry.getSelector(functionName) != nullptr) {
+ status = U_MF_FORMATTING_ERROR;
+ return nullptr;
+ }
+ }
+ // Either there is no custom function registry and the function
+ // isn't built-in, or the function doesn't exist in either the built-in
+ // or custom registry.
+ // Unknown function error
+ status = U_MF_UNKNOWN_FUNCTION_ERROR;
+ return nullptr;
+ }
+
+ bool MessageFormatter::isCustomFormatter(const FunctionName& fn) const {
+ return hasCustomMFFunctionRegistry() && getCustomMFFunctionRegistry().getFormatter(fn) != nullptr;
+ }
+
+
+ bool MessageFormatter::isCustomSelector(const FunctionName& fn) const {
+ return hasCustomMFFunctionRegistry() && getCustomMFFunctionRegistry().getSelector(fn) != nullptr;
+ }
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/messageformat2_function_registry.cpp b/icu4c/source/i18n/messageformat2_function_registry.cpp
new file mode 100644
index 000000000..18401d484
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_function_registry.cpp
@@ -0,0 +1,1186 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/dtptngen.h"
+#include "unicode/messageformat2_data_model_names.h"
+#include "unicode/messageformat2_function_registry.h"
+#include "unicode/smpdtfmt.h"
+#include "messageformat2_allocation.h"
+#include "messageformat2_function_registry_internal.h"
+#include "messageformat2_macros.h"
+#include "hash.h"
+#include "number_types.h"
+#include "uvector.h" // U_ASSERT
+
+#include <inttypes.h>
+#include <math.h>
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+// Function registry implementation
+
+Formatter::~Formatter() {}
+Selector::~Selector() {}
+FormatterFactory::~FormatterFactory() {}
+SelectorFactory::~SelectorFactory() {}
+
+MFFunctionRegistry MFFunctionRegistry::Builder::build() {
+ U_ASSERT(formatters != nullptr && selectors != nullptr && formattersByType != nullptr);
+ MFFunctionRegistry result = MFFunctionRegistry(formatters, selectors, formattersByType);
+ formatters = nullptr;
+ selectors = nullptr;
+ formattersByType = nullptr;
+ return result;
+}
+
+MFFunctionRegistry::Builder& MFFunctionRegistry::Builder::adoptSelector(const FunctionName& selectorName, SelectorFactory* selectorFactory, UErrorCode& errorCode) {
+ if (U_SUCCESS(errorCode)) {
+ U_ASSERT(selectors != nullptr);
+ selectors->put(selectorName, selectorFactory, errorCode);
+ }
+ return *this;
+}
+
+MFFunctionRegistry::Builder& MFFunctionRegistry::Builder::adoptFormatter(const FunctionName& formatterName, FormatterFactory* formatterFactory, UErrorCode& errorCode) {
+ if (U_SUCCESS(errorCode)) {
+ U_ASSERT(formatters != nullptr);
+ formatters->put(formatterName, formatterFactory, errorCode);
+ }
+ return *this;
+}
+
+MFFunctionRegistry::Builder& MFFunctionRegistry::Builder::setDefaultFormatterNameByType(const UnicodeString& type, const FunctionName& functionName, UErrorCode& errorCode) {
+ if (U_SUCCESS(errorCode)) {
+ U_ASSERT(formattersByType != nullptr);
+ FunctionName* f = create<FunctionName>(FunctionName(functionName), errorCode);
+ formattersByType->put(type, f, errorCode);
+ }
+ return *this;
+}
+
+MFFunctionRegistry::Builder::Builder(UErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ formatters = new Hashtable();
+ selectors = new Hashtable();
+ formattersByType = new Hashtable();
+ if (!(formatters != nullptr && selectors != nullptr && formattersByType != nullptr)) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ formatters->setValueDeleter(uprv_deleteUObject);
+ selectors->setValueDeleter(uprv_deleteUObject);
+ formattersByType->setValueDeleter(uprv_deleteUObject);
+}
+
+MFFunctionRegistry::Builder::~Builder() {
+ if (formatters != nullptr) {
+ delete formatters;
+ }
+ if (selectors != nullptr) {
+ delete selectors;
+ }
+ if (formattersByType != nullptr) {
+ delete formattersByType;
+ }
+}
+
+// Returns non-owned pointer. Returns pointer rather than reference because it can fail.
+// Returns non-const because FormatterFactory is mutable.
+// TODO: This is unsafe because of the cached-formatters map
+// (the caller could delete the resulting pointer)
+FormatterFactory* MFFunctionRegistry::getFormatter(const FunctionName& formatterName) const {
+ U_ASSERT(formatters != nullptr);
+ return static_cast<FormatterFactory*>(formatters->get(formatterName));
+}
+
+UBool MFFunctionRegistry::getDefaultFormatterNameByType(const UnicodeString& type, FunctionName& name) const {
+ U_ASSERT(formatters != nullptr);
+ const FunctionName* f = static_cast<FunctionName*>(formattersByType->get(type));
+ if (f != nullptr) {
+ name = *f;
+ return true;
+ }
+ return false;
+}
+
+const SelectorFactory* MFFunctionRegistry::getSelector(const FunctionName& selectorName) const {
+ U_ASSERT(selectors != nullptr);
+ return static_cast<const SelectorFactory*>(selectors->get(selectorName));
+}
+
+bool MFFunctionRegistry::hasFormatter(const FunctionName& f) const {
+ return getFormatter(f) != nullptr;
+}
+
+bool MFFunctionRegistry::hasSelector(const FunctionName& s) const {
+ return getSelector(s) != nullptr;
+}
+
+void MFFunctionRegistry::checkFormatter(const char* s) const {
+#if U_DEBUG
+ U_ASSERT(hasFormatter(FunctionName(UnicodeString(s))));
+#else
+ (void) s;
+#endif
+}
+
+void MFFunctionRegistry::checkSelector(const char* s) const {
+#if U_DEBUG
+ U_ASSERT(hasSelector(FunctionName(UnicodeString(s))));
+#else
+ (void) s;
+#endif
+}
+
+// Debugging
+void MFFunctionRegistry::checkStandard() const {
+ checkFormatter("datetime");
+ checkFormatter("date");
+ checkFormatter("time");
+ checkFormatter("number");
+ checkFormatter("integer");
+ checkSelector("number");
+ checkSelector("integer");
+ checkSelector("string");
+}
+
+// Formatter/selector helpers
+
+// Converts `s` to a double, indicating failure via `errorCode`
+static void strToDouble(const UnicodeString& s, double& result, UErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ // Using en-US locale because it happens to correspond to the spec:
+ // https://github.com/unicode-org/message-format-wg/blob/main/spec/registry.md#number-operands
+ // Ideally, this should re-use the code for parsing number literals (Parser::parseUnquotedLiteral())
+ // It's hard to reuse the same code because of how parse errors work.
+ // TODO: Refactor
+ LocalPointer<NumberFormat> numberFormat(NumberFormat::createInstance(Locale("en-US"), errorCode));
+ CHECK_ERROR(errorCode);
+ icu::Formattable asNumber;
+ numberFormat->parse(s, asNumber, errorCode);
+ CHECK_ERROR(errorCode);
+ result = asNumber.getDouble(errorCode);
+}
+
+static double tryStringAsNumber(const Locale& locale, const Formattable& val, UErrorCode& errorCode) {
+ // Check for a string option, try to parse it as a number if present
+ UnicodeString tempString = val.getString(errorCode);
+ LocalPointer<NumberFormat> numberFormat(NumberFormat::createInstance(locale, errorCode));
+ if (U_SUCCESS(errorCode)) {
+ icu::Formattable asNumber;
+ numberFormat->parse(tempString, asNumber, errorCode);
+ if (U_SUCCESS(errorCode)) {
+ return asNumber.getDouble(errorCode);
+ }
+ }
+ return 0;
+}
+
+static int64_t getInt64Value(const Locale& locale, const Formattable& value, UErrorCode& errorCode) {
+ if (U_SUCCESS(errorCode)) {
+ if (!value.isNumeric()) {
+ double doubleResult = tryStringAsNumber(locale, value, errorCode);
+ if (U_SUCCESS(errorCode)) {
+ return static_cast<int64_t>(doubleResult);
+ }
+ }
+ else {
+ int64_t result = value.getInt64(errorCode);
+ if (U_SUCCESS(errorCode)) {
+ return result;
+ }
+ }
+ }
+ // Option was numeric but couldn't be converted to int64_t -- could be overflow
+ return 0;
+}
+
+// Adopts its arguments
+MFFunctionRegistry::MFFunctionRegistry(FormatterMap* f, SelectorMap* s, Hashtable* byType) : formatters(f), selectors(s), formattersByType(byType) {
+ U_ASSERT(f != nullptr && s != nullptr && byType != nullptr);
+}
+
+MFFunctionRegistry& MFFunctionRegistry::operator=(MFFunctionRegistry&& other) noexcept {
+ cleanup();
+
+ formatters = other.formatters;
+ selectors = other.selectors;
+ formattersByType = other.formattersByType;
+ other.formatters = nullptr;
+ other.selectors = nullptr;
+ other.formattersByType = nullptr;
+
+ return *this;
+}
+
+void MFFunctionRegistry::cleanup() noexcept {
+ if (formatters != nullptr) {
+ delete formatters;
+ }
+ if (selectors != nullptr) {
+ delete selectors;
+ }
+ if (formattersByType != nullptr) {
+ delete formattersByType;
+ }
+}
+
+
+MFFunctionRegistry::~MFFunctionRegistry() {
+ cleanup();
+}
+
+// Specific formatter implementations
+
+// --------- Number
+
+/* static */ number::LocalizedNumberFormatter StandardFunctions::formatterForOptions(const Number& number,
+ const FunctionOptions& opts,
+ UErrorCode& status) {
+ number::UnlocalizedNumberFormatter nf;
+
+ using namespace number;
+
+ if (U_SUCCESS(status)) {
+ Formattable opt;
+ nf = NumberFormatter::with();
+ bool isInteger = number.isInteger;
+
+ if (isInteger) {
+ nf = nf.precision(Precision::integer());
+ }
+
+ // Notation options
+ if (!isInteger) {
+ // These options only apply to `:number`
+
+ // Default notation is simple
+ Notation notation = Notation::simple();
+ UnicodeString notationOpt = opts.getStringFunctionOption(UnicodeString("notation"));
+ if (notationOpt == UnicodeString("scientific")) {
+ notation = Notation::scientific();
+ } else if (notationOpt == UnicodeString("engineering")) {
+ notation = Notation::engineering();
+ } else if (notationOpt == UnicodeString("compact")) {
+ UnicodeString displayOpt = opts.getStringFunctionOption(UnicodeString("compactDisplay"));
+ if (displayOpt == UnicodeString("long")) {
+ notation = Notation::compactLong();
+ } else {
+ // Default is short
+ notation = Notation::compactShort();
+ }
+ } else {
+ // Already set to default
+ }
+ nf = nf.notation(notation);
+ }
+
+ // Style options -- specific to `:number`
+ if (!isInteger) {
+ if (number.usePercent(opts)) {
+ nf = nf.unit(NoUnit::percent());
+ }
+ }
+
+ int32_t maxSignificantDigits = number.maximumSignificantDigits(opts);
+ if (!isInteger) {
+ int32_t minFractionDigits = number.minimumFractionDigits(opts);
+ int32_t maxFractionDigits = number.maximumFractionDigits(opts);
+ int32_t minSignificantDigits = number.minimumSignificantDigits(opts);
+ Precision p = Precision::minMaxFraction(minFractionDigits, maxFractionDigits);
+ if (minSignificantDigits > 0) {
+ p = p.minSignificantDigits(minSignificantDigits);
+ }
+ if (maxSignificantDigits > 0) {
+ p = p.maxSignificantDigits(maxSignificantDigits);
+ }
+ nf = nf.precision(p);
+ } else {
+ // maxSignificantDigits applies to `:integer`, but the other precision options don't
+ Precision p = Precision::integer();
+ if (maxSignificantDigits > 0) {
+ p = p.maxSignificantDigits(maxSignificantDigits);
+ }
+ nf = nf.precision(p);
+ }
+
+ // All other options apply to both `:number` and `:integer`
+ int32_t minIntegerDigits = number.minimumIntegerDigits(opts);
+ nf = nf.integerWidth(IntegerWidth::zeroFillTo(minIntegerDigits));
+
+ // signDisplay
+ UnicodeString sd = opts.getStringFunctionOption(UnicodeString("signDisplay"));
+ UNumberSignDisplay signDisplay;
+ if (sd == UnicodeString("always")) {
+ signDisplay = UNumberSignDisplay::UNUM_SIGN_ALWAYS;
+ } else if (sd == UnicodeString("exceptZero")) {
+ signDisplay = UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO;
+ } else if (sd == UnicodeString("negative")) {
+ signDisplay = UNumberSignDisplay::UNUM_SIGN_NEGATIVE;
+ } else if (sd == UnicodeString("never")) {
+ signDisplay = UNumberSignDisplay::UNUM_SIGN_NEVER;
+ } else {
+ signDisplay = UNumberSignDisplay::UNUM_SIGN_AUTO;
+ }
+ nf = nf.sign(signDisplay);
+
+ // useGrouping
+ UnicodeString ug = opts.getStringFunctionOption(UnicodeString("useGrouping"));
+ UNumberGroupingStrategy grp;
+ if (ug == UnicodeString("always")) {
+ grp = UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNED;
+ } else if (ug == UnicodeString("never")) {
+ grp = UNumberGroupingStrategy::UNUM_GROUPING_OFF;
+ } else if (ug == UnicodeString("min2")) {
+ grp = UNumberGroupingStrategy::UNUM_GROUPING_MIN2;
+ } else {
+ // Default is "auto"
+ grp = UNumberGroupingStrategy::UNUM_GROUPING_AUTO;
+ }
+ nf = nf.grouping(grp);
+ }
+ return LocalizedNumberFormatter(nf.locale(number.locale));
+}
+
+Formatter* StandardFunctions::NumberFactory::createFormatter(const Locale& locale, UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+
+ Formatter* result = new Number(locale);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+Formatter* StandardFunctions::IntegerFactory::createFormatter(const Locale& locale, UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+
+ Formatter* result = new Number(Number::integer(locale));
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+StandardFunctions::IntegerFactory::~IntegerFactory() {}
+
+static FormattedPlaceholder notANumber(const FormattedPlaceholder& input) {
+ return FormattedPlaceholder(input, FormattedValue(UnicodeString("NaN")));
+}
+
+static FormattedPlaceholder stringAsNumber(const number::LocalizedNumberFormatter& nf, const FormattedPlaceholder& input, UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ double numberValue;
+ // Copying string to avoid GCC dangling-reference warning
+ // (although the reference is safe)
+ UnicodeString inputStr = input.asFormattable().getString(errorCode);
+ // Precondition: `input`'s source Formattable has type string
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ strToDouble(inputStr, numberValue, localErrorCode);
+ if (U_FAILURE(localErrorCode)) {
+ errorCode = U_MF_OPERAND_MISMATCH_ERROR;
+ return notANumber(input);
+ }
+ UErrorCode savedStatus = errorCode;
+ number::FormattedNumber result = nf.formatDouble(numberValue, errorCode);
+ // Ignore U_USING_DEFAULT_WARNING
+ if (errorCode == U_USING_DEFAULT_WARNING) {
+ errorCode = savedStatus;
+ }
+ return FormattedPlaceholder(input, FormattedValue(std::move(result)));
+}
+
+int32_t StandardFunctions::Number::maximumFractionDigits(const FunctionOptions& opts) const {
+ Formattable opt;
+
+ if (isInteger) {
+ return 0;
+ }
+
+ if (opts.getFunctionOption(UnicodeString("maximumFractionDigits"), opt)) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ int64_t val = getInt64Value(locale, opt, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return static_cast<int32_t>(val);
+ }
+ }
+ return number::impl::kMaxIntFracSig;
+}
+
+int32_t StandardFunctions::Number::minimumFractionDigits(const FunctionOptions& opts) const {
+ Formattable opt;
+
+ if (!isInteger) {
+ if (opts.getFunctionOption(UnicodeString("minimumFractionDigits"), opt)) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ int64_t val = getInt64Value(locale, opt, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return static_cast<int32_t>(val);
+ }
+ }
+ }
+ return 0;
+}
+
+int32_t StandardFunctions::Number::minimumIntegerDigits(const FunctionOptions& opts) const {
+ Formattable opt;
+
+ if (opts.getFunctionOption(UnicodeString("minimumIntegerDigits"), opt)) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ int64_t val = getInt64Value(locale, opt, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return static_cast<int32_t>(val);
+ }
+ }
+ return 0;
+}
+
+int32_t StandardFunctions::Number::minimumSignificantDigits(const FunctionOptions& opts) const {
+ Formattable opt;
+
+ if (!isInteger) {
+ if (opts.getFunctionOption(UnicodeString("minimumSignificantDigits"), opt)) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ int64_t val = getInt64Value(locale, opt, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return static_cast<int32_t>(val);
+ }
+ }
+ }
+ // Returning 0 indicates that the option wasn't provided or was a non-integer.
+ // The caller needs to check for that case, since passing 0 to Precision::minSignificantDigits()
+ // is an error.
+ return 0;
+}
+
+int32_t StandardFunctions::Number::maximumSignificantDigits(const FunctionOptions& opts) const {
+ Formattable opt;
+
+ if (opts.getFunctionOption(UnicodeString("maximumSignificantDigits"), opt)) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ int64_t val = getInt64Value(locale, opt, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return static_cast<int32_t>(val);
+ }
+ }
+ // Returning 0 indicates that the option wasn't provided or was a non-integer.
+ // The caller needs to check for that case, since passing 0 to Precision::maxSignificantDigits()
+ // is an error.
+ return 0; // Not a valid value for Precision; has to be checked
+}
+
+bool StandardFunctions::Number::usePercent(const FunctionOptions& opts) const {
+ Formattable opt;
+ if (isInteger
+ || !opts.getFunctionOption(UnicodeString("style"), opt)
+ || opt.getType() != UFMT_STRING) {
+ return false;
+ }
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ const UnicodeString& style = opt.getString(localErrorCode);
+ U_ASSERT(U_SUCCESS(localErrorCode));
+ return (style == UnicodeString("percent"));
+}
+
+/* static */ StandardFunctions::Number StandardFunctions::Number::integer(const Locale& loc) {
+ return StandardFunctions::Number(loc, true);
+}
+
+FormattedPlaceholder StandardFunctions::Number::format(FormattedPlaceholder&& arg, FunctionOptions&& opts, UErrorCode& errorCode) const {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ // No argument => return "NaN"
+ if (!arg.canFormat()) {
+ errorCode = U_MF_OPERAND_MISMATCH_ERROR;
+ return notANumber(arg);
+ }
+
+ number::LocalizedNumberFormatter realFormatter;
+ realFormatter = formatterForOptions(*this, opts, errorCode);
+
+ number::FormattedNumber numberResult;
+ if (U_SUCCESS(errorCode)) {
+ // Already checked that contents can be formatted
+ const Formattable& toFormat = arg.asFormattable();
+ switch (toFormat.getType()) {
+ case UFMT_DOUBLE: {
+ double d = toFormat.getDouble(errorCode);
+ U_ASSERT(U_SUCCESS(errorCode));
+ numberResult = realFormatter.formatDouble(d, errorCode);
+ break;
+ }
+ case UFMT_LONG: {
+ int32_t l = toFormat.getLong(errorCode);
+ U_ASSERT(U_SUCCESS(errorCode));
+ numberResult = realFormatter.formatInt(l, errorCode);
+ break;
+ }
+ case UFMT_INT64: {
+ int64_t i = toFormat.getInt64(errorCode);
+ U_ASSERT(U_SUCCESS(errorCode));
+ numberResult = realFormatter.formatInt(i, errorCode);
+ break;
+ }
+ case UFMT_STRING: {
+ // Try to parse the string as a number
+ return stringAsNumber(realFormatter, arg, errorCode);
+ }
+ default: {
+ // Other types can't be parsed as a number
+ errorCode = U_MF_OPERAND_MISMATCH_ERROR;
+ return notANumber(arg);
+ }
+ }
+ }
+
+ return FormattedPlaceholder(arg, FormattedValue(std::move(numberResult)));
+}
+
+StandardFunctions::Number::~Number() {}
+StandardFunctions::NumberFactory::~NumberFactory() {}
+
+// --------- PluralFactory
+
+
+StandardFunctions::Plural::PluralType StandardFunctions::Plural::pluralType(const FunctionOptions& opts) const {
+ Formattable opt;
+
+ if (opts.getFunctionOption(UnicodeString("select"), opt)) {
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ UnicodeString val = opt.getString(localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ if (val == UnicodeString("ordinal")) {
+ return PluralType::PLURAL_ORDINAL;
+ }
+ if (val == UnicodeString("exact")) {
+ return PluralType::PLURAL_EXACT;
+ }
+ }
+ }
+ return PluralType::PLURAL_CARDINAL;
+}
+
+Selector* StandardFunctions::PluralFactory::createSelector(const Locale& locale, UErrorCode& errorCode) const {
+ NULL_ON_ERROR(errorCode);
+
+ Selector* result;
+ if (isInteger) {
+ result = new Plural(Plural::integer(locale));
+ } else {
+ result = new Plural(locale);
+ }
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ return result;
+}
+
+static double tryAsString(const UnicodeString& s, UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return 0;
+ }
+ // Try parsing the inputString as a double
+ double valToCheck;
+ strToDouble(s, valToCheck, errorCode);
+ return valToCheck;
+}
+
+static double tryWithFormattable(const Formattable& value, UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return 0;
+ }
+ double valToCheck;
+ switch (value.getType()) {
+ case UFMT_DOUBLE: {
+ valToCheck = value.getDouble(errorCode);
+ break;
+ }
+ case UFMT_LONG: {
+ valToCheck = (double) value.getLong(errorCode);
+ break;
+ }
+ case UFMT_INT64: {
+ valToCheck = (double) value.getInt64(errorCode);
+ break;
+ }
+ case UFMT_STRING: {
+ const UnicodeString& s = value.getString(errorCode);
+ U_ASSERT(U_SUCCESS(errorCode));
+ return tryAsString(s, errorCode);
+ }
+ default: {
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ }
+ U_ASSERT(U_SUCCESS(errorCode));
+ return valToCheck;
+}
+
+static UnicodeString toJSONString(double d) {
+ // TODO :(
+ char buffer[512];
+ // "Only integer matching is required in the Technical Preview."
+ snprintf(buffer, 512, "%" PRId64, static_cast<int64_t>(d));
+ return UnicodeString(buffer);
+}
+
+void StandardFunctions::Plural::selectKey(FormattedPlaceholder&& toFormat,
+ FunctionOptions&& opts,
+ const UnicodeString* keys,
+ int32_t keysLen,
+ UnicodeString* prefs,
+ int32_t& prefsLen,
+ UErrorCode& errorCode) const {
+ CHECK_ERROR(errorCode);
+
+ // No argument => return "NaN"
+ if (!toFormat.canFormat()) {
+ errorCode = U_MF_SELECTOR_ERROR;
+ return;
+ }
+
+ // Only doubles and integers can match
+ double valToCheck;
+
+ bool isFormattedString = toFormat.isEvaluated() && toFormat.output().isString();
+ bool isFormattedNumber = toFormat.isEvaluated() && toFormat.output().isNumber();
+
+ if (isFormattedString) {
+ // Formatted string: try parsing it as a number
+ valToCheck = tryAsString(toFormat.output().getString(), errorCode);
+ } else {
+ // Already checked that contents can be formatted
+ valToCheck = tryWithFormattable(toFormat.asFormattable(), errorCode);
+ }
+
+ if (U_FAILURE(errorCode)) {
+ // Non-number => selector error
+ errorCode = U_MF_SELECTOR_ERROR;
+ return;
+ }
+ // TODO: This needs to be checked against https://github.com/unicode-org/message-format-wg/blob/main/spec/registry.md#number-selection
+ // Determine `exact`, per step 1 under "Number Selection"
+ UnicodeString exact = toJSONString(valToCheck);
+
+ // Generate the matches
+ // -----------------------
+
+ prefsLen = 0;
+
+ // First, check for an exact match
+ double keyAsDouble = 0;
+ for (int32_t i = 0; i < keysLen; i++) {
+ // Try parsing the key as a double
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ strToDouble(keys[i], keyAsDouble, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ if (exact == keys[i]) {
+ prefs[prefsLen] = keys[i];
+ prefsLen++;
+ break;
+ }
+ }
+ }
+
+ PluralType type = pluralType(opts);
+ // Return immediately if exact matching was requested
+ if (prefsLen == keysLen || type == PluralType::PLURAL_EXACT) {
+ return;
+ }
+
+ UPluralType t = type == PluralType::PLURAL_ORDINAL ? UPLURAL_TYPE_ORDINAL : UPLURAL_TYPE_CARDINAL;
+ // Look up plural rules by locale and type
+ LocalPointer<PluralRules> rules(PluralRules::forLocale(locale, t, errorCode));
+ CHECK_ERROR(errorCode);
+
+
+ // Check for a match based on the plural category
+ UnicodeString match;
+ if (isFormattedNumber) {
+ match = rules->select(toFormat.output().getNumber(), errorCode);
+ } else {
+ if (isInteger) {
+ match = rules->select(static_cast<int32_t>(trunc(valToCheck)));
+ } else {
+ match = rules->select(valToCheck);
+ }
+ }
+ CHECK_ERROR(errorCode);
+
+ for (int32_t i = 0; i < keysLen; i ++) {
+ if (prefsLen >= keysLen) {
+ break;
+ }
+ if (match == keys[i]) {
+ prefs[prefsLen] = keys[i];
+ prefsLen++;
+ }
+ }
+}
+
+StandardFunctions::Plural::~Plural() {}
+StandardFunctions::PluralFactory::~PluralFactory() {}
+
+// --------- DateTimeFactory
+
+/* static */ UnicodeString StandardFunctions::getStringOption(const FunctionOptions& opts,
+ const UnicodeString& optionName,
+ UErrorCode& errorCode) {
+ if (U_SUCCESS(errorCode)) {
+ Formattable opt;
+ if (opts.getFunctionOption(optionName, opt)) {
+ return opt.getString(errorCode); // In case it's not a string, error code will be set
+ } else {
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ }
+ // Default is empty string
+ return {};
+}
+
+// Date/time options only
+static UnicodeString defaultForOption(const UnicodeString& optionName) {
+ if (optionName == UnicodeString("dateStyle")
+ || optionName == UnicodeString("timeStyle")
+ || optionName == UnicodeString("style")) {
+ return UnicodeString("short");
+ }
+ return {}; // Empty string is default
+}
+
+// TODO
+// Only DateTime currently uses the function options stored in the placeholder.
+// It also doesn't use them very consistently (it looks at the previous set of options,
+// and others aren't preserved). This needs to be generalized,
+// but that depends on https://github.com/unicode-org/message-format-wg/issues/515
+// Finally, the option value is assumed to be a string,
+// which works for datetime options but not necessarily in general.
+UnicodeString StandardFunctions::DateTime::getFunctionOption(const FormattedPlaceholder& toFormat,
+ const FunctionOptions& opts,
+ const UnicodeString& optionName) const {
+ // Options passed to the current function invocation take priority
+ Formattable opt;
+ UnicodeString s;
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ s = getStringOption(opts, optionName, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return s;
+ }
+ // Next try the set of options used to construct `toFormat`
+ localErrorCode = U_ZERO_ERROR;
+ s = getStringOption(toFormat.options(), optionName, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return s;
+ }
+ // Finally, use default
+ return defaultForOption(optionName);
+}
+
+// Used for options that don't have defaults
+UnicodeString StandardFunctions::DateTime::getFunctionOption(const FormattedPlaceholder& toFormat,
+ const FunctionOptions& opts,
+ const UnicodeString& optionName,
+ UErrorCode& errorCode) const {
+ if (U_SUCCESS(errorCode)) {
+ // Options passed to the current function invocation take priority
+ Formattable opt;
+ UnicodeString s;
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ s = getStringOption(opts, optionName, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return s;
+ }
+ // Next try the set of options used to construct `toFormat`
+ localErrorCode = U_ZERO_ERROR;
+ s = getStringOption(toFormat.options(), optionName, localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ return s;
+ }
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return {};
+}
+
+static DateFormat::EStyle stringToStyle(UnicodeString option, UErrorCode& errorCode) {
+ if (U_SUCCESS(errorCode)) {
+ UnicodeString upper = option.toUpper();
+ if (upper == UnicodeString("FULL")) {
+ return DateFormat::EStyle::kFull;
+ }
+ if (upper == UnicodeString("LONG")) {
+ return DateFormat::EStyle::kLong;
+ }
+ if (upper == UnicodeString("MEDIUM")) {
+ return DateFormat::EStyle::kMedium;
+ }
+ if (upper == UnicodeString("SHORT")) {
+ return DateFormat::EStyle::kShort;
+ }
+ if (upper.isEmpty() || upper == UnicodeString("DEFAULT")) {
+ return DateFormat::EStyle::kDefault;
+ }
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return DateFormat::EStyle::kNone;
+}
+
+/* static */ StandardFunctions::DateTimeFactory* StandardFunctions::DateTimeFactory::dateTime(UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+
+ DateTimeFactory* result = new StandardFunctions::DateTimeFactory(DateTimeType::DateTime);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+/* static */ StandardFunctions::DateTimeFactory* StandardFunctions::DateTimeFactory::date(UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+
+ DateTimeFactory* result = new DateTimeFactory(DateTimeType::Date);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+/* static */ StandardFunctions::DateTimeFactory* StandardFunctions::DateTimeFactory::time(UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+
+ DateTimeFactory* result = new DateTimeFactory(DateTimeType::Time);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+Formatter* StandardFunctions::DateTimeFactory::createFormatter(const Locale& locale, UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+
+ Formatter* result = new StandardFunctions::DateTime(locale, type);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+FormattedPlaceholder StandardFunctions::DateTime::format(FormattedPlaceholder&& toFormat,
+ FunctionOptions&& opts,
+ UErrorCode& errorCode) const {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ // Argument must be present
+ if (!toFormat.canFormat()) {
+ errorCode = U_MF_OPERAND_MISMATCH_ERROR;
+ return std::move(toFormat);
+ }
+
+ LocalPointer<DateFormat> df;
+ Formattable opt;
+
+ DateFormat::EStyle dateStyle = DateFormat::kShort;
+ DateFormat::EStyle timeStyle = DateFormat::kShort;
+
+ UnicodeString dateStyleName("dateStyle");
+ UnicodeString timeStyleName("timeStyle");
+ UnicodeString styleName("style");
+
+ bool hasDateStyleOption = opts.getFunctionOption(dateStyleName, opt);
+ bool hasTimeStyleOption = opts.getFunctionOption(timeStyleName, opt);
+ bool noOptions = opts.optionsCount() == 0;
+
+ bool useStyle = (type == DateTimeFactory::DateTimeType::DateTime
+ && (hasDateStyleOption || hasTimeStyleOption
+ || noOptions))
+ || (type != DateTimeFactory::DateTimeType::DateTime);
+
+ bool useDate = type == DateTimeFactory::DateTimeType::Date
+ || (type == DateTimeFactory::DateTimeType::DateTime
+ && hasDateStyleOption);
+ bool useTime = type == DateTimeFactory::DateTimeType::Time
+ || (type == DateTimeFactory::DateTimeType::DateTime
+ && hasTimeStyleOption);
+
+ if (useStyle) {
+ // Extract style options
+ if (type == DateTimeFactory::DateTimeType::DateTime) {
+ // Note that the options-getting has to be repeated across the three cases,
+ // since `:datetime` uses "dateStyle"/"timeStyle" and `:date` and `:time`
+ // use "style"
+ dateStyle = stringToStyle(getFunctionOption(toFormat, opts, dateStyleName), errorCode);
+ timeStyle = stringToStyle(getFunctionOption(toFormat, opts, timeStyleName), errorCode);
+
+ if (useDate && !useTime) {
+ df.adoptInstead(DateFormat::createDateInstance(dateStyle, locale));
+ } else if (useTime && !useDate) {
+ df.adoptInstead(DateFormat::createTimeInstance(timeStyle, locale));
+ } else {
+ df.adoptInstead(DateFormat::createDateTimeInstance(dateStyle, timeStyle, locale));
+ }
+ } else if (type == DateTimeFactory::DateTimeType::Date) {
+ dateStyle = stringToStyle(getFunctionOption(toFormat, opts, styleName), errorCode);
+ df.adoptInstead(DateFormat::createDateInstance(dateStyle, locale));
+ } else {
+ // :time
+ timeStyle = stringToStyle(getFunctionOption(toFormat, opts, styleName), errorCode);
+ df.adoptInstead(DateFormat::createTimeInstance(timeStyle, locale));
+ }
+ } else {
+ // Build up a skeleton based on the field options, then use that to
+ // create the date formatter
+
+ UnicodeString skeleton;
+ #define ADD_PATTERN(s) skeleton += UnicodeString(s)
+ if (U_SUCCESS(errorCode)) {
+ // Year
+ UnicodeString year = getFunctionOption(toFormat, opts, UnicodeString("year"), errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_ZERO_ERROR;
+ } else {
+ useDate = true;
+ if (year == UnicodeString("2-digit")) {
+ ADD_PATTERN("YY");
+ } else if (year == UnicodeString("numeric")) {
+ ADD_PATTERN("YYYY");
+ }
+ }
+ // Month
+ UnicodeString month = getFunctionOption(toFormat, opts, UnicodeString("month"), errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_ZERO_ERROR;
+ } else {
+ useDate = true;
+ /* numeric, 2-digit, long, short, narrow */
+ if (month == UnicodeString("long")) {
+ ADD_PATTERN("MMMM");
+ } else if (month == UnicodeString("short")) {
+ ADD_PATTERN("MMM");
+ } else if (month == UnicodeString("narrow")) {
+ ADD_PATTERN("MMMMM");
+ } else if (month == UnicodeString("numeric")) {
+ ADD_PATTERN("M");
+ } else if (month == UnicodeString("2-digit")) {
+ ADD_PATTERN("MM");
+ }
+ }
+ // Weekday
+ UnicodeString weekday = getFunctionOption(toFormat, opts, UnicodeString("weekday"), errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_ZERO_ERROR;
+ } else {
+ useDate = true;
+ if (weekday == UnicodeString("long")) {
+ ADD_PATTERN("EEEE");
+ } else if (weekday == UnicodeString("short")) {
+ ADD_PATTERN("EEEEE");
+ } else if (weekday == UnicodeString("narrow")) {
+ ADD_PATTERN("EEEEE");
+ }
+ }
+ // Day
+ UnicodeString day = getFunctionOption(toFormat, opts, UnicodeString("day"), errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_ZERO_ERROR;
+ } else {
+ useDate = true;
+ if (day == UnicodeString("numeric")) {
+ ADD_PATTERN("d");
+ } else if (day == UnicodeString("2-digit")) {
+ ADD_PATTERN("dd");
+ }
+ }
+ // Hour
+ UnicodeString hour = getFunctionOption(toFormat, opts, UnicodeString("hour"), errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_ZERO_ERROR;
+ } else {
+ useTime = true;
+ if (hour == UnicodeString("numeric")) {
+ ADD_PATTERN("h");
+ } else if (hour == UnicodeString("2-digit")) {
+ ADD_PATTERN("hh");
+ }
+ }
+ // Minute
+ UnicodeString minute = getFunctionOption(toFormat, opts, UnicodeString("minute"), errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_ZERO_ERROR;
+ } else {
+ useTime = true;
+ if (minute == UnicodeString("numeric")) {
+ ADD_PATTERN("m");
+ } else if (minute == UnicodeString("2-digit")) {
+ ADD_PATTERN("mm");
+ }
+ }
+ // Second
+ UnicodeString second = getFunctionOption(toFormat, opts, UnicodeString("second"), errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_ZERO_ERROR;
+ } else {
+ useTime = true;
+ if (second == UnicodeString("numeric")) {
+ ADD_PATTERN("s");
+ } else if (second == UnicodeString("2-digit")) {
+ ADD_PATTERN("ss");
+ }
+ }
+ }
+ /*
+ TODO
+ fractionalSecondDigits
+ hourCycle
+ timeZoneName
+ era
+ */
+ df.adoptInstead(DateFormat::createInstanceForSkeleton(skeleton, errorCode));
+ }
+
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+ if (!df.isValid()) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return {};
+ }
+
+ UnicodeString result;
+ const Formattable& source = toFormat.asFormattable();
+ switch (source.getType()) {
+ case UFMT_STRING: {
+ const UnicodeString& sourceStr = source.getString(errorCode);
+ U_ASSERT(U_SUCCESS(errorCode));
+ // Pattern for ISO 8601 format - datetime
+ UnicodeString pattern("YYYY-MM-dd'T'HH:mm:ss");
+ LocalPointer<DateFormat> dateParser(new SimpleDateFormat(pattern, errorCode));
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_MF_FORMATTING_ERROR;
+ } else {
+ // Parse the date
+ UDate d = dateParser->parse(sourceStr, errorCode);
+ if (U_FAILURE(errorCode)) {
+ // Pattern for ISO 8601 format - date
+ UnicodeString pattern("YYYY-MM-dd");
+ errorCode = U_ZERO_ERROR;
+ dateParser.adoptInstead(new SimpleDateFormat(pattern, errorCode));
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_MF_FORMATTING_ERROR;
+ } else {
+ d = dateParser->parse(sourceStr, errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_MF_OPERAND_MISMATCH_ERROR;
+ }
+ }
+ }
+ // Use the parsed date as the source value
+ // in the returned FormattedPlaceholder; this is necessary
+ // so the date can be re-formatted
+ toFormat = FormattedPlaceholder(message2::Formattable::forDate(d),
+ toFormat.getFallback());
+ df->format(d, result, 0, errorCode);
+ }
+ break;
+ }
+ case UFMT_DATE: {
+ df->format(source.asICUFormattable(errorCode), result, 0, errorCode);
+ if (U_FAILURE(errorCode)) {
+ if (errorCode == U_ILLEGAL_ARGUMENT_ERROR) {
+ errorCode = U_MF_OPERAND_MISMATCH_ERROR;
+ }
+ }
+ break;
+ }
+ // Any other cases are an error
+ default: {
+ errorCode = U_MF_OPERAND_MISMATCH_ERROR;
+ break;
+ }
+ }
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+ return FormattedPlaceholder(toFormat, std::move(opts), FormattedValue(std::move(result)));
+}
+
+StandardFunctions::DateTimeFactory::~DateTimeFactory() {}
+StandardFunctions::DateTime::~DateTime() {}
+
+// --------- TextFactory
+
+Selector* StandardFunctions::TextFactory::createSelector(const Locale& locale, UErrorCode& errorCode) const {
+ Selector* result = new TextSelector(locale);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ return result;
+}
+
+void StandardFunctions::TextSelector::selectKey(FormattedPlaceholder&& toFormat,
+ FunctionOptions&& opts,
+ const UnicodeString* keys,
+ int32_t keysLen,
+ UnicodeString* prefs,
+ int32_t& prefsLen,
+ UErrorCode& errorCode) const {
+ // No options
+ (void) opts;
+
+ CHECK_ERROR(errorCode);
+
+ // Just compares the key and value as strings
+
+ // Argument must be present
+ if (!toFormat.canFormat()) {
+ errorCode = U_MF_SELECTOR_ERROR;
+ return;
+ }
+
+ prefsLen = 0;
+
+ // Convert to string
+ const UnicodeString& formattedValue = toFormat.formatToString(locale, errorCode);
+ if (U_FAILURE(errorCode)) {
+ return;
+ }
+
+ for (int32_t i = 0; i < keysLen; i++) {
+ if (keys[i] == formattedValue) {
+ prefs[0] = keys[i];
+ prefsLen = 1;
+ break;
+ }
+ }
+}
+
+StandardFunctions::TextFactory::~TextFactory() {}
+StandardFunctions::TextSelector::~TextSelector() {}
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
diff --git a/icu4c/source/i18n/messageformat2_function_registry_internal.h b/icu4c/source/i18n/messageformat2_function_registry_internal.h
new file mode 100644
index 000000000..b34cb9b01
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_function_registry_internal.h
@@ -0,0 +1,233 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_FUNCTION_REGISTRY_INTERNAL_H
+#define MESSAGEFORMAT2_FUNCTION_REGISTRY_INTERNAL_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/datefmt.h"
+#include "unicode/messageformat2_function_registry.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ // Built-in functions
+ /*
+ The standard functions are :datetime, :date, :time,
+ :number, :integer, and :string,
+ per https://github.com/unicode-org/message-format-wg/blob/main/spec/registry.md
+ as of https://github.com/unicode-org/message-format-wg/releases/tag/LDML45-alpha
+ */
+ class StandardFunctions {
+ friend class MessageFormatter;
+
+ static UnicodeString getStringOption(const FunctionOptions& opts,
+ const UnicodeString& optionName,
+ UErrorCode& errorCode);
+
+ class DateTime;
+
+ class DateTimeFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale& locale, UErrorCode& status) override;
+ static DateTimeFactory* date(UErrorCode&);
+ static DateTimeFactory* time(UErrorCode&);
+ static DateTimeFactory* dateTime(UErrorCode&);
+ DateTimeFactory() = delete;
+ virtual ~DateTimeFactory();
+
+ private:
+ friend class DateTime;
+
+ typedef enum DateTimeType {
+ Date,
+ Time,
+ DateTime
+ } DateTimeType;
+
+ DateTimeType type;
+ DateTimeFactory(DateTimeType t) : type(t) {}
+ };
+
+ class DateTime : public Formatter {
+ public:
+ FormattedPlaceholder format(FormattedPlaceholder&& toFormat, FunctionOptions&& options, UErrorCode& status) const override;
+ virtual ~DateTime();
+
+ private:
+ const Locale& locale;
+ const DateTimeFactory::DateTimeType type;
+ friend class DateTimeFactory;
+ DateTime(const Locale& l, DateTimeFactory::DateTimeType t) : locale(l), type(t) {}
+ const LocalPointer<icu::DateFormat> icuFormatter;
+
+ /*
+ Looks up an option by name, first checking `opts`, then the cached options
+ in `toFormat` if applicable, and finally using a default
+
+ Ignores any options with non-string values
+ */
+ UnicodeString getFunctionOption(const FormattedPlaceholder& toFormat,
+ const FunctionOptions& opts,
+ const UnicodeString& optionName) const;
+ // Version for options that don't have defaults; sets the error
+ // code instead of returning a default value
+ UnicodeString getFunctionOption(const FormattedPlaceholder& toFormat,
+ const FunctionOptions& opts,
+ const UnicodeString& optionName,
+ UErrorCode& errorCode) const;
+
+ };
+
+ // Note: IntegerFactory doesn't implement SelectorFactory;
+ // instead, an instance of PluralFactory is registered to the integer
+ // selector
+ // TODO
+ class IntegerFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale& locale, UErrorCode& status) override;
+ virtual ~IntegerFactory();
+ };
+
+ class NumberFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale& locale, UErrorCode& status) override;
+ virtual ~NumberFactory();
+ private:
+ friend class IntegerFactory;
+ static NumberFactory integer(const Locale& locale, UErrorCode& status);
+ };
+
+ class Number : public Formatter {
+ public:
+ FormattedPlaceholder format(FormattedPlaceholder&& toFormat, FunctionOptions&& options, UErrorCode& status) const override;
+ virtual ~Number();
+
+ private:
+ friend class NumberFactory;
+ friend class StandardFunctions;
+
+ Number(const Locale& loc) : locale(loc), icuFormatter(number::NumberFormatter::withLocale(loc)) {}
+ Number(const Locale& loc, bool isInt) : locale(loc), isInteger(isInt), icuFormatter(number::NumberFormatter::withLocale(loc)) {}
+ static Number integer(const Locale& loc);
+
+ // These options have their own accessor methods, since they have different default values.
+ int32_t maximumFractionDigits(const FunctionOptions& options) const;
+ int32_t minimumFractionDigits(const FunctionOptions& options) const;
+ int32_t minimumSignificantDigits(const FunctionOptions& options) const;
+ int32_t maximumSignificantDigits(const FunctionOptions& options) const;
+ int32_t minimumIntegerDigits(const FunctionOptions& options) const;
+
+ bool usePercent(const FunctionOptions& options) const;
+ const Locale& locale;
+ const bool isInteger = false;
+ const number::LocalizedNumberFormatter icuFormatter;
+ };
+
+ static number::LocalizedNumberFormatter formatterForOptions(const Number& number,
+ const FunctionOptions& opts,
+ UErrorCode& status);
+
+ class PluralFactory : public SelectorFactory {
+ public:
+ Selector* createSelector(const Locale& locale, UErrorCode& status) const override;
+ virtual ~PluralFactory();
+
+ private:
+ friend class IntegerFactory;
+ friend class MessageFormatter;
+
+ PluralFactory() {}
+ PluralFactory(bool isInt) : isInteger(isInt) {}
+ static PluralFactory integer() { return PluralFactory(true);}
+ const bool isInteger = false;
+ };
+
+ class Plural : public Selector {
+ public:
+ void selectKey(FormattedPlaceholder&& val,
+ FunctionOptions&& options,
+ const UnicodeString* keys,
+ int32_t keysLen,
+ UnicodeString* prefs,
+ int32_t& prefsLen,
+ UErrorCode& status) const override;
+ virtual ~Plural();
+
+ private:
+ friend class IntegerFactory;
+ friend class PluralFactory;
+
+ // Can't use UPluralType for this since we want to include
+ // exact matching as an option
+ typedef enum PluralType {
+ PLURAL_ORDINAL,
+ PLURAL_CARDINAL,
+ PLURAL_EXACT
+ } PluralType;
+ Plural(const Locale& loc) : locale(loc) {}
+ Plural(const Locale& loc, bool isInt) : locale(loc), isInteger(isInt) {}
+ static Plural integer(const Locale& loc) { return Plural(loc, true); }
+ PluralType pluralType(const FunctionOptions& opts) const;
+ const Locale& locale;
+ const bool isInteger = false;
+ };
+
+ class TextFactory : public SelectorFactory {
+ public:
+ Selector* createSelector(const Locale& locale, UErrorCode& status) const override;
+ virtual ~TextFactory();
+ };
+
+ class TextSelector : public Selector {
+ public:
+ void selectKey(FormattedPlaceholder&& val,
+ FunctionOptions&& options,
+ const UnicodeString* keys,
+ int32_t keysLen,
+ UnicodeString* prefs,
+ int32_t& prefsLen,
+ UErrorCode& status) const override;
+ virtual ~TextSelector();
+
+ private:
+ friend class TextFactory;
+
+ // Formatting `value` to a string might require the locale
+ const Locale& locale;
+
+ TextSelector(const Locale& l) : locale(l) {}
+ };
+ };
+
+ extern void formatDateWithDefaults(const Locale& locale, UDate date, UnicodeString&, UErrorCode& errorCode);
+ extern number::FormattedNumber formatNumberWithDefaults(const Locale& locale, double toFormat, UErrorCode& errorCode);
+ extern number::FormattedNumber formatNumberWithDefaults(const Locale& locale, int32_t toFormat, UErrorCode& errorCode);
+ extern number::FormattedNumber formatNumberWithDefaults(const Locale& locale, int64_t toFormat, UErrorCode& errorCode);
+ extern number::FormattedNumber formatNumberWithDefaults(const Locale& locale, StringPiece toFormat, UErrorCode& errorCode);
+ extern DateFormat* defaultDateTimeInstance(const Locale&, UErrorCode&);
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_FUNCTION_REGISTRY_INTERNAL_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/icu4c/source/i18n/messageformat2_macros.h b/icu4c/source/i18n/messageformat2_macros.h
new file mode 100644
index 000000000..ee8cf0779
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_macros.h
@@ -0,0 +1,113 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_MACROS_H
+#define MESSAGEFORMAT2_MACROS_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/format.h"
+#include "unicode/unistr.h"
+#include "plurrule_impl.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+using namespace pluralimpl;
+
+// Tokens for parser and serializer
+
+// Syntactically significant characters
+#define LEFT_CURLY_BRACE ((UChar32)0x007B)
+#define RIGHT_CURLY_BRACE ((UChar32)0x007D)
+#define HTAB ((UChar32)0x0009)
+#define CR ((UChar32)0x000D)
+#define LF ((UChar32)0x000A)
+#define IDEOGRAPHIC_SPACE ((UChar32)0x3000)
+
+#define PIPE ((UChar32)0x007C)
+#define EQUALS ((UChar32)0x003D)
+#define DOLLAR ((UChar32)0x0024)
+#define COLON ((UChar32)0x003A)
+#define PLUS ((UChar32)0x002B)
+#define HYPHEN ((UChar32)0x002D)
+#define PERIOD ((UChar32)0x002E)
+#define UNDERSCORE ((UChar32)0x005F)
+
+#define LOWERCASE_E ((UChar32)0x0065)
+#define UPPERCASE_E ((UChar32)0x0045)
+
+// Reserved sigils
+#define BANG ((UChar32)0x0021)
+#define AT ((UChar32)0x0040)
+#define PERCENT ((UChar32)0x0025)
+#define CARET ((UChar32)0x005E)
+#define AMPERSAND ((UChar32)0x0026)
+#define LESS_THAN ((UChar32)0x003C)
+#define GREATER_THAN ((UChar32)0x003E)
+#define QUESTION ((UChar32)0x003F)
+#define TILDE ((UChar32)0x007E)
+
+// Fallback
+#define REPLACEMENT ((UChar32) 0xFFFD)
+
+// MessageFormat2 uses four keywords: `.input`, `.local`, `.when`, and `.match`.
+
+static constexpr UChar32 ID_INPUT[] = {
+ 0x2E, 0x69, 0x6E, 0x70, 0x75, 0x74, 0 /* ".input" */
+};
+
+static constexpr UChar32 ID_LOCAL[] = {
+ 0x2E, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0 /* ".local" */
+};
+
+static constexpr UChar32 ID_MATCH[] = {
+ 0x2E, 0x6D, 0x61, 0x74, 0x63, 0x68, 0 /* ".match" */
+};
+
+// Returns immediately if `errorCode` indicates failure
+#define CHECK_ERROR(errorCode) \
+ if (U_FAILURE(errorCode)) { \
+ return; \
+ }
+
+// Returns immediately if `errorCode` indicates failure
+#define NULL_ON_ERROR(errorCode) \
+ if (U_FAILURE(errorCode)) { \
+ return nullptr; \
+ }
+
+// Returns immediately if `errorCode` indicates failure
+#define THIS_ON_ERROR(errorCode) \
+ if (U_FAILURE(errorCode)) { \
+ return *this; \
+ }
+
+// Returns immediately if `errorCode` indicates failure
+#define EMPTY_ON_ERROR(errorCode) \
+ if (U_FAILURE(errorCode)) { \
+ return {}; \
+ }
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_MACROS_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/icu4c/source/i18n/messageformat2_parser.cpp b/icu4c/source/i18n/messageformat2_parser.cpp
new file mode 100644
index 000000000..15b185762
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_parser.cpp
@@ -0,0 +1,2279 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "messageformat2_errors.h"
+#include "messageformat2_macros.h"
+#include "messageformat2_parser.h"
+#include "uvector.h" // U_ASSERT
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+using namespace pluralimpl;
+
+using namespace data_model;
+
+/*
+ The `ERROR()` macro sets a syntax error in the context
+ and sets the offset in `parseError` to `index`. It does not alter control flow.
+*/
+#define ERROR(parseError, errorCode, index) \
+ if (!errors.hasSyntaxError()) { \
+ setParseError(parseError, index); \
+ errors.addSyntaxError(errorCode); \
+ }
+
+// Returns true iff `index` is a valid index for the string `source`
+static bool inBounds(const UnicodeString &source, uint32_t index) {
+ return (((int32_t)index) < source.length());
+}
+
+// Increments the line number and updates the "characters seen before
+// current line" count in `parseError`, iff `source[index]` is a newline
+void Parser::maybeAdvanceLine() {
+ if (source[index] == LF) {
+ parseError.line++;
+ // add 1 to index to get the number of characters seen so far
+ // (including the newline)
+ parseError.lengthBeforeCurrentLine = index + 1;
+ }
+}
+
+/*
+ Signals an error and returns either if `parseError` already denotes an
+ error, or `index` is out of bounds for the string `source`
+*/
+#define CHECK_BOUNDS(source, index, parseError, errorCode) \
+ if (!inBounds(source, index)) { \
+ ERROR(parseError, errorCode, index); \
+ return; \
+ }
+
+// -------------------------------------
+// Helper functions
+
+static void copyContext(const UChar in[U_PARSE_CONTEXT_LEN], UChar out[U_PARSE_CONTEXT_LEN]) {
+ for (int32_t i = 0; i < U_PARSE_CONTEXT_LEN; i++) {
+ out[i] = in[i];
+ if (in[i] == '\0') {
+ break;
+ }
+ }
+}
+
+/* static */ void Parser::translateParseError(const MessageParseError &messageParseError, UParseError &parseError) {
+ parseError.line = messageParseError.line;
+ parseError.offset = messageParseError.offset;
+ copyContext(messageParseError.preContext, parseError.preContext);
+ copyContext(messageParseError.postContext, parseError.postContext);
+}
+
+/* static */ void Parser::setParseError(MessageParseError &parseError, uint32_t index) {
+ // Translate absolute to relative offset
+ parseError.offset = index // Start with total number of characters seen
+ - parseError.lengthBeforeCurrentLine; // Subtract all characters before the current line
+ // TODO: Fill this in with actual pre and post-context
+ parseError.preContext[0] = 0;
+ parseError.postContext[0] = 0;
+}
+
+// -------------------------------------
+// Predicates
+
+// Returns true if `c` is in the interval [`first`, `last`]
+static bool inRange(UChar32 c, UChar32 first, UChar32 last) {
+ U_ASSERT(first < last);
+ return c >= first && c <= last;
+}
+
+/*
+ The following helper predicates should exactly match nonterminals in the MessageFormat 2 grammar:
+
+ `isContentChar()` : `content-char`
+ `isTextChar()` : `text-char`
+ `isReservedStart()` : `reserved-start`
+ `isReservedChar()` : `reserved-char`
+ `isAlpha()` : `ALPHA`
+ `isDigit()` : `DIGIT`
+ `isNameStart()` : `name-start`
+ `isNameChar()` : `name-char`
+ `isUnquotedStart()` : `unquoted-start`
+ `isQuotedChar()` : `quoted-char`
+ `isWhitespace()` : `s`
+*/
+
+static bool isContentChar(UChar32 c) {
+ return inRange(c, 0x0001, 0x0008) // Omit NULL, HTAB and LF
+ || inRange(c, 0x000B, 0x000C) // Omit CR
+ || inRange(c, 0x000E, 0x001F) // Omit SP
+ || inRange(c, 0x0021, 0x002D) // Omit '.'
+ || inRange(c, 0x002F, 0x003F) // Omit '@'
+ || inRange(c, 0x0041, 0x005B) // Omit '\'
+ || inRange(c, 0x005D, 0x007A) // Omit { | }
+ || inRange(c, 0x007E, 0xD7FF) // Omit surrogates
+ || inRange(c, 0xE000, 0x10FFFF);
+}
+
+// See `s` in the MessageFormat 2 grammar
+inline bool isWhitespace(UChar32 c) {
+ switch (c) {
+ case SPACE:
+ case HTAB:
+ case CR:
+ case LF:
+ case IDEOGRAPHIC_SPACE:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool isTextChar(UChar32 c) {
+ return isContentChar(c)
+ || isWhitespace(c)
+ || c == PERIOD
+ || c == AT
+ || c == PIPE;
+}
+
+// Note: this doesn't distinguish between private-use
+// and reserved, since the data model doesn't
+static bool isReservedStart(UChar32 c) {
+ switch (c) {
+ case BANG:
+ case PERCENT:
+ case ASTERISK:
+ case PLUS:
+ case LESS_THAN:
+ case GREATER_THAN:
+ case QUESTION:
+ case TILDE:
+ // Private-use
+ case CARET:
+ case AMPERSAND:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool isReservedChar(UChar32 c) {
+ return isContentChar(c) || c == PERIOD;
+}
+
+static bool isReservedBodyStart(UChar32 c) {
+ return isReservedChar(c) || c == BACKSLASH || c == PIPE;
+}
+
+static bool isAlpha(UChar32 c) { return inRange(c, 0x0041, 0x005A) || inRange(c, 0x0061, 0x007A); }
+
+static bool isDigit(UChar32 c) { return inRange(c, 0x0030, 0x0039); }
+
+static bool isNameStart(UChar32 c) {
+ return isAlpha(c) || c == UNDERSCORE || inRange(c, 0x00C0, 0x00D6) || inRange(c, 0x00D8, 0x00F6) ||
+ inRange(c, 0x00F8, 0x02FF) || inRange(c, 0x0370, 0x037D) || inRange(c, 0x037F, 0x1FFF) ||
+ inRange(c, 0x200C, 0x200D) || inRange(c, 0x2070, 0x218F) || inRange(c, 0x2C00, 0x2FEF) ||
+ inRange(c, 0x3001, 0xD7FF) || inRange(c, 0xF900, 0xFDCF) || inRange(c, 0xFDF0, 0xFFFD) ||
+ inRange(c, 0x10000, 0xEFFFF);
+}
+
+static bool isNameChar(UChar32 c) {
+ return isNameStart(c) || isDigit(c) || c == HYPHEN || c == PERIOD || c == 0x00B7 ||
+ inRange(c, 0x0300, 0x036F) || inRange(c, 0x203F, 0x2040);
+}
+
+static bool isUnquotedStart(UChar32 c) {
+ return isNameStart(c) || isDigit(c) || c == HYPHEN || c == PERIOD || c == 0x00B7 ||
+ inRange(c, 0x0300, 0x036F) || inRange(c, 0x203F, 0x2040);
+}
+
+static bool isQuotedChar(UChar32 c) {
+ return isContentChar(c)
+ || isWhitespace(c)
+ || c == PERIOD
+ || c == AT
+ || c == LEFT_CURLY_BRACE
+ || c == RIGHT_CURLY_BRACE;
+}
+
+// Returns true iff `c` can begin a `function` nonterminal
+static bool isFunctionStart(UChar32 c) {
+ switch (c) {
+ case COLON: {
+ return true;
+ }
+ default: {
+ return false;
+ }
+ }
+}
+
+// Returns true iff `c` can begin an `annotation` nonterminal
+static bool isAnnotationStart(UChar32 c) {
+ return isFunctionStart(c) || isReservedStart(c);
+}
+
+// Returns true iff `c` can begin either a `reserved-char` or `reserved-escape`
+// literal
+static bool reservedChunkFollows(UChar32 c) {
+ switch(c) {
+ // reserved-escape
+ case BACKSLASH:
+ // literal
+ case PIPE: {
+ return true;
+ }
+ default: {
+ // reserved-char
+ return (isReservedChar(c));
+ }
+ }
+}
+
+// Returns true iff `c` can begin a `literal` nonterminal
+static bool isLiteralStart(UChar32 c) {
+ return (c == PIPE || isNameStart(c) || c == HYPHEN || isDigit(c));
+}
+
+// Returns true iff `c` can begin a `key` nonterminal
+static bool isKeyStart(UChar32 c) {
+ return (c == ASTERISK || isLiteralStart(c));
+}
+
+inline bool isDeclarationStart(const UnicodeString& source, int32_t index) {
+ int32_t len = source.length();
+ int32_t next = index + 1;
+ return (source[index] == ID_LOCAL[0]
+ && next < len
+ && source[next] == ID_LOCAL[1])
+ || (source[index] == ID_INPUT[0]
+ && next < len
+ && source[next] == ID_INPUT[1]);
+}
+
+// -------------------------------------
+// Parsing functions
+
+
+/*
+ TODO: Since handling the whitespace ambiguities needs to be repeated
+ in several different places and is hard to factor out,
+ it probably would be better to replace the parser with a lexer + parser
+ to separate tokenizing from parsing, which would simplify the code significantly.
+ This has the disadvantage that there is no token grammar for MessageFormat,
+ so one would have to be invented that isn't a component of the spec.
+ */
+
+/*
+ This is a recursive-descent scannerless parser that,
+ with a few exceptions, uses 1 character of lookahead.
+
+ This may not be an exhaustive list, as the additions of attributes and reserved
+ statements introduced several new ambiguities.
+
+All but three of the exceptions involve ambiguities about the meaning of whitespace.
+One ambiguity not involving whitespace is:
+identifier -> namespace ":" name
+vs.
+identifier -> name
+
+`namespace` and `name` can't be distinguished without arbitrary lookahead.
+(For how this is handled, see parseIdentifier())
+
+The second ambiguity not involving whitespace is:
+complex-message -> *(declaration[s]) complex-body
+ -> declaration *(declaration[s]) complex-body
+ -> declaration complex-body
+ -> reserved-statement complex-body
+ -> .foo {$x} .match // ...
+When processing the '.', arbitrary lookahead is required to distinguish the
+arbitrary-length unsupported keyword from `.match`.
+(For how this is handled, see parseDeclarations()).
+
+The third ambiguity not involving whitespace is:
+complex-message -> *(declaration [s]) complex-body
+ -> reserved-statement *(declaration [s]) complex-body
+ -> reserved-statement complex-body
+ -> reserved-statement quotedPattern
+ -> reserved-keyword [s reserved-body] 1*([s] expression) quoted-pattern
+ -> reserved-keyword expression quoted-pattern
+ Example: .foo {1} {{1}}
+
+ Without lookahead, the opening '{' of the quoted pattern can't be distinguished
+ from the opening '{' of another expression in the unsupported statement.
+ (Though this only requires 1 character of lookahead.)
+
+ Otherwise:
+
+There are at least seven ambiguities in the grammar that can't be resolved with finite
+lookahead (since whitespace sequences can be arbitrarily long). They are resolved
+with a form of backtracking (early exit). No state needs to be saved/restored
+since whitespace doesn't affect the shape of the resulting parse tree, so it's
+not true backtracking.
+
+In addition, the grammar has been refactored
+in a semantics-preserving way in some cases to make the code easier to structure.
+
+First: variant = when 1*(s key) [s] pattern
+ Example: when k {a}
+ When reading the first space after 'k', it's ambiguous whether it's the
+ required space before another key, or the optional space before `pattern`.
+ (See comments in parseNonEmptyKeys())
+
+Second: expression = "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
+ annotation = (function *(s option)) / reserved
+ Example: {:f }
+ When reading the first space after 'f', it's ambiguous whether it's the
+ required space before an option, or the optional trailing space after an options list
+ (in this case, the options list is empty).
+ (See comments in parseOptions() -- handling this case also meant it was easier to base
+ the code on a slightly refactored grammar, which should be semantically equivalent.)
+
+Third: expression = "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
+ annotation = (function *(s option)) / reserved
+ Example: {@a }
+ Similar to the previous case; see comments in parseReserved()
+
+Fourth: expression = "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
+ Example: {|foo| }
+ When reading the first space after the '|', it's ambiguous whether it's the required
+ space before an annotation, or the optional trailing space before the '}'.
+ (See comments in parseLiteralOrVariableWithAnnotation(); handling this case relies on
+ the same grammar refactoring as the second exception.)
+
+ Most functions match a non-terminal in the grammar, except as explained
+ in comments.
+
+Fifth: matcher = match-statement 1*([s] variant)
+ -> match 1 *([s] selector) 1*([s] variant)
+ Example: match {42} * {{_}}
+ When reading the space after the first '}', it's unclear whether
+ it's the optional space before another selector, or the optional space
+ before a variant.
+
+Sixth: annotation-expression = "{" [s] annotation *(s attribute) [s] "}"
+ -> "{" [s] function *(s attribute) [s] "}"
+ -> "{" [s] ":" identifier *(s option) *(s attribute) [s] "}"
+ -> "{" [s] ":" identifier s attribute *(s attribute) [s] "}"
+
+ Example: {:func @foo}
+(Note: the same ambiguity is present with variable-expression and literal-expression)
+
+Seventh:
+
+
+When parsing the space, it's unclear whether it's the optional space before an
+option, or the optional space before an attribute.
+
+ Unless otherwise noted in a comment, all helper functions that take
+ a `source` string, an `index` unsigned int, and an `errorCode` `UErrorCode`
+ have the precondition:
+ `index` < `source.length()`
+ and the postcondition:
+ `U_FAILURE(errorCode)` || `index < `source.length()`
+*/
+
+/*
+ No pre, no post.
+ A message may end with whitespace, so `index` may equal `source.length()` on exit.
+*/
+void Parser::parseWhitespaceMaybeRequired(bool required, UErrorCode& errorCode) {
+ bool sawWhitespace = false;
+
+ // The loop exits either when we consume all the input,
+ // or when we see a non-whitespace character.
+ while (true) {
+ // Check if all input has been consumed
+ if (!inBounds(source, index)) {
+ // If whitespace isn't required -- or if we saw it already --
+ // then the caller is responsible for checking this case and
+ // setting an error if necessary.
+ if (!required || sawWhitespace) {
+ // Not an error.
+ return;
+ }
+ // Otherwise, whitespace is required; the end of the input has
+ // been reached without whitespace. This is an error.
+ ERROR(parseError, errorCode, index);
+ return;
+ }
+
+ // Input remains; process the next character if it's whitespace,
+ // exit the loop otherwise
+ if (isWhitespace(source[index])) {
+ sawWhitespace = true;
+ // Increment line number in parse error if we consume a newline
+ maybeAdvanceLine();
+ index++;
+ } else {
+ break;
+ }
+ }
+
+ if (!sawWhitespace && required) {
+ ERROR(parseError, errorCode, index);
+ }
+}
+
+/*
+ No pre, no post, for the same reason as `parseWhitespaceMaybeRequired()`.
+*/
+void Parser::parseRequiredWhitespace(UErrorCode& errorCode) {
+ parseWhitespaceMaybeRequired(true, errorCode);
+ normalizedInput += SPACE;
+}
+
+/*
+ No pre, no post, for the same reason as `parseWhitespaceMaybeRequired()`.
+*/
+void Parser::parseOptionalWhitespace(UErrorCode& errorCode) {
+ parseWhitespaceMaybeRequired(false, errorCode);
+}
+
+// Consumes a single character, signaling an error if `source[index]` != `c`
+// No postcondition -- a message can end with a '}' token
+void Parser::parseToken(UChar32 c, UErrorCode& errorCode) {
+ CHECK_BOUNDS(source, index, parseError, errorCode);
+
+ if (source[index] == c) {
+ index++;
+ normalizedInput += c;
+ return;
+ }
+ // Next character didn't match -- error out
+ ERROR(parseError, errorCode, index);
+}
+
+/*
+ Consumes a fixed-length token, signaling an error if the token isn't a prefix of
+ the string beginning at `source[index]`
+ No postcondition -- a message can end with a '}' token
+*/
+template <int32_t N>
+void Parser::parseToken(const UChar32 (&token)[N], UErrorCode& errorCode) {
+ U_ASSERT(inBounds(source, index));
+
+ int32_t tokenPos = 0;
+ while (tokenPos < N - 1) {
+ if (source[index] != token[tokenPos]) {
+ ERROR(parseError, errorCode, index);
+ return;
+ }
+ normalizedInput += token[tokenPos];
+ index++;
+ tokenPos++;
+ }
+}
+
+/*
+ Consumes optional whitespace, possibly advancing `index` to `index'`,
+ then consumes a fixed-length token (signaling an error if the token isn't a prefix of
+ the string beginning at `source[index']`),
+ then consumes optional whitespace again
+*/
+template <int32_t N>
+void Parser::parseTokenWithWhitespace(const UChar32 (&token)[N], UErrorCode& errorCode) {
+ // No need for error check or bounds check before parseOptionalWhitespace
+ parseOptionalWhitespace(errorCode);
+ // Establish precondition
+ CHECK_BOUNDS(source, index, parseError, errorCode);
+ parseToken(token);
+ parseOptionalWhitespace(errorCode);
+ // Guarantee postcondition
+ CHECK_BOUNDS(source, index, parseError, errorCode);
+}
+
+/*
+ Consumes optional whitespace, possibly advancing `index` to `index'`,
+ then consumes a single character (signaling an error if it doesn't match
+ `source[index']`),
+ then consumes optional whitespace again
+*/
+void Parser::parseTokenWithWhitespace(UChar32 c, UErrorCode& errorCode) {
+ // No need for error check or bounds check before parseOptionalWhitespace(errorCode)
+ parseOptionalWhitespace(errorCode);
+ // Establish precondition
+ CHECK_BOUNDS(source, index, parseError, errorCode);
+ parseToken(c, errorCode);
+ parseOptionalWhitespace(errorCode);
+ // Guarantee postcondition
+ CHECK_BOUNDS(source, index, parseError, errorCode);
+}
+
+/*
+ Consumes a non-empty sequence of `name-char`s, the first of which is
+ also a `name-start`.
+ that begins with a character `start` such that `isNameStart(start)`.
+
+ Returns this sequence.
+
+ (Matches the `name` nonterminal in the grammar.)
+*/
+UnicodeString Parser::parseName(UErrorCode& errorCode) {
+ UnicodeString name;
+
+ U_ASSERT(inBounds(source, index));
+
+ if (!isNameStart(source[index])) {
+ ERROR(parseError, errorCode, index);
+ return name;
+ }
+
+ while (isNameChar(source[index])) {
+ name += source[index];
+ normalizedInput += source[index];
+ index++;
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ break;
+ }
+ }
+ return name;
+}
+
+/*
+ Consumes a '$' followed by a `name`, returning a VariableName
+ with `name` as its name
+
+ (Matches the `variable` nonterminal in the grammar.)
+*/
+VariableName Parser::parseVariableName(UErrorCode& errorCode) {
+ VariableName result;
+
+ U_ASSERT(inBounds(source, index));
+ // If the '$' is missing, we don't want a binding
+ // for this variable to be created.
+ bool valid = source[index] == DOLLAR;
+ parseToken(DOLLAR, errorCode);
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return result;
+ }
+ UnicodeString varName = parseName(errorCode);
+ // Set the name to "" if the variable wasn't
+ // declared correctly
+ if (!valid) {
+ varName.remove();
+ }
+ return VariableName(varName);
+}
+
+/*
+ Corresponds to the `identifier` nonterminal in the grammar
+*/
+UnicodeString Parser::parseIdentifier(UErrorCode& errorCode) {
+ U_ASSERT(inBounds(source, index));
+
+ UnicodeString result;
+ // The following is a hack to get around ambiguity in the grammar:
+ // identifier -> namespace ":" name
+ // vs.
+ // identifier -> name
+ // can't be distinguished without arbitrary lookahead.
+ // Instead, we treat the production as:
+ // identifier -> namespace *(":"name)
+ // and then check for multiple colons.
+
+ // Parse namespace
+ result += parseName(errorCode);
+ int32_t firstColon = -1;
+ while (inBounds(source, index) && source[index] == COLON) {
+ // Parse ':' separator
+ if (firstColon == -1) {
+ firstColon = index;
+ }
+ parseToken(COLON, errorCode);
+ result += COLON;
+ // Check for message ending with something like "foo:"
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ } else {
+ // Parse name part
+ result += parseName(errorCode);
+ }
+ }
+
+ // If there's at least one ':', scan from the first ':'
+ // to the end of the name to check for multiple ':'s
+ if (firstColon != -1) {
+ for (int32_t i = firstColon + 1; i < result.length(); i++) {
+ if (result[i] == COLON) {
+ ERROR(parseError, errorCode, i);
+ return {};
+ }
+ }
+ }
+
+ return result;
+}
+
+/*
+ Consumes a reference to a function, matching the ": identifier"
+ in the `function` nonterminal in the grammar.
+
+ Returns the function name.
+*/
+FunctionName Parser::parseFunction(UErrorCode& errorCode) {
+ U_ASSERT(inBounds(source, index));
+ if (!isFunctionStart(source[index])) {
+ ERROR(parseError, errorCode, index);
+ return FunctionName();
+ }
+
+ normalizedInput += source[index];
+ index++; // Consume the function start character
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return FunctionName();
+ }
+ return parseIdentifier(errorCode);
+}
+
+
+/*
+ Precondition: source[index] == BACKSLASH
+
+ Consume an escaped character.
+
+ Generalized to handle `reserved-escape`, `text-escape`,
+ or `literal-escape`, depending on the `kind` argument.
+
+ Appends result to `str`
+*/
+void Parser::parseEscapeSequence(EscapeKind kind,
+ UnicodeString &str,
+ UErrorCode& errorCode) {
+ U_ASSERT(inBounds(source, index));
+ U_ASSERT(source[index] == BACKSLASH);
+ normalizedInput += BACKSLASH;
+ index++; // Skip the initial backslash
+ CHECK_BOUNDS(source, index, parseError, errorCode);
+
+ #define SUCCEED \
+ /* Append to the output string */ \
+ str += source[index]; \
+ /* Update normalizedInput */ \
+ normalizedInput += source[index]; \
+ /* Consume the character */ \
+ index++; \
+ /* Guarantee postcondition */ \
+ CHECK_BOUNDS(source, index, parseError, errorCode); \
+ return;
+
+ // Expect a '{', '|' or '}'
+ switch (source[index]) {
+ case LEFT_CURLY_BRACE:
+ case RIGHT_CURLY_BRACE: {
+ // Allowed in a `text-escape` or `reserved-escape`
+ switch (kind) {
+ case TEXT:
+ case RESERVED: {
+ SUCCEED;
+ }
+ default: {
+ break;
+ }
+ }
+ break;
+ }
+ case PIPE: {
+ // Allowed in a `literal-escape` or `reserved-escape`
+ switch (kind) {
+ case LITERAL:
+ case RESERVED: {
+ SUCCEED;
+ }
+ default: {
+ break;
+ }
+ }
+ break;
+ }
+ case BACKSLASH: {
+ // Allowed in any escape sequence
+ SUCCEED;
+ }
+ default: {
+ // No other characters are allowed here
+ break;
+ }
+ }
+ // If control reaches here, there was an error
+ ERROR(parseError, errorCode, index);
+}
+
+/*
+ Consume an escaped pipe or backslash, matching the `literal-escape`
+ nonterminal in the grammar
+*/
+void Parser::parseLiteralEscape(UnicodeString &str, UErrorCode& errorCode) {
+ parseEscapeSequence(LITERAL, str, errorCode);
+}
+
+
+/*
+ Consume and return a quoted literal, matching the `literal` nonterminal in the grammar.
+*/
+Literal Parser::parseQuotedLiteral(UErrorCode& errorCode) {
+ bool error = false;
+
+ UnicodeString contents;
+ if (U_SUCCESS(errorCode)) {
+ // Parse the opening '|'
+ parseToken(PIPE, errorCode);
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ error = true;
+ } else {
+ // Parse the contents
+ bool done = false;
+ while (!done) {
+ if (source[index] == BACKSLASH) {
+ parseLiteralEscape(contents, errorCode);
+ } else if (isQuotedChar(source[index])) {
+ contents += source[index];
+ normalizedInput += source[index];
+ index++; // Consume this character
+ maybeAdvanceLine();
+ } else {
+ // Assume the sequence of literal characters ends here
+ done = true;
+ }
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ error = true;
+ break;
+ }
+ }
+ }
+ }
+
+ if (error) {
+ return {};
+ }
+
+ // Parse the closing '|'
+ parseToken(PIPE, errorCode);
+
+ return Literal(true, contents);
+}
+
+// Parse (1*DIGIT)
+UnicodeString Parser::parseDigits(UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ U_ASSERT(isDigit(source[index]));
+
+ UnicodeString contents;
+ do {
+ contents += source[index];
+ normalizedInput += source[index];
+ index++;
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+ } while (isDigit(source[index]));
+
+ return contents;
+}
+/*
+ Consume and return an unquoted literal, matching the `unquoted` nonterminal in the grammar.
+*/
+Literal Parser::parseUnquotedLiteral(UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ // unquoted -> name
+ if (isNameStart(source[index])) {
+ return Literal(false, parseName(errorCode));
+ }
+
+ // unquoted -> number
+ // Parse the contents
+ UnicodeString contents;
+
+ // Parse the sign
+ if (source[index] == HYPHEN) {
+ contents += source[index];
+ normalizedInput += source[index];
+ index++;
+ }
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+
+ // Parse the integer part
+ if (source[index] == ((UChar32)0x0030) /* 0 */) {
+ contents += source[index];
+ normalizedInput += source[index];
+ index++;
+ } else if (isDigit(source[index])) {
+ contents += parseDigits(errorCode);
+ } else {
+ // Error -- nothing else can start a number literal
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+
+ // Parse the decimal point if present
+ if (source[index] == PERIOD) {
+ contents += source[index];
+ normalizedInput += source[index];
+ index++;
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+ // Parse the fraction part
+ if (isDigit(source[index])) {
+ contents += parseDigits(errorCode);
+ } else {
+ // '.' not followed by digit is a parse error
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+ }
+
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+
+ // Parse the exponent part if present
+ if (source[index] == UPPERCASE_E || source[index] == LOWERCASE_E) {
+ contents += source[index];
+ normalizedInput += source[index];
+ index++;
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+ // Parse sign if present
+ if (source[index] == PLUS || source[index] == HYPHEN) {
+ contents += source[index];
+ normalizedInput += source[index];
+ index++;
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+ }
+ // Parse exponent digits
+ if (!isDigit(source[index])) {
+ ERROR(parseError, errorCode, index);
+ return {};
+ }
+ contents += parseDigits(errorCode);
+ }
+
+ return Literal(false, contents);
+}
+
+/*
+ Consume and return a literal, matching the `literal` nonterminal in the grammar.
+*/
+Literal Parser::parseLiteral(UErrorCode& errorCode) {
+ Literal result;
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ } else {
+ if (source[index] == PIPE) {
+ result = parseQuotedLiteral(errorCode);
+ } else {
+ result = parseUnquotedLiteral(errorCode);
+ }
+ // Guarantee postcondition
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ }
+ }
+
+ return result;
+}
+
+/*
+ Consume a @name-value pair, matching the `attribute` nonterminal in the grammar.
+
+ Adds the option to `options`
+*/
+template<class T>
+void Parser::parseAttribute(AttributeAdder<T>& attrAdder, UErrorCode& errorCode) {
+ U_ASSERT(inBounds(source, index));
+
+ U_ASSERT(source[index] == AT);
+ // Consume the '@'
+ parseToken(AT, errorCode);
+
+ // Parse LHS
+ UnicodeString lhs = parseIdentifier(errorCode);
+
+ // Prepare to "backtrack" to resolve ambiguity
+ // about whether whitespace precedes another
+ // attribute, or the '=' sign
+ int32_t savedIndex = index;
+ parseOptionalWhitespace(errorCode);
+
+ Operand rand;
+ if (source[index] == EQUALS) {
+ // Parse '='
+ parseTokenWithWhitespace(EQUALS, errorCode);
+
+ UnicodeString rhsStr;
+ // Parse RHS, which is either a literal or variable
+ switch (source[index]) {
+ case DOLLAR: {
+ rand = Operand(parseVariableName(errorCode));
+ break;
+ }
+ default: {
+ // Must be a literal
+ rand = Operand(parseLiteral(errorCode));
+ break;
+ }
+ }
+ U_ASSERT(!rand.isNull());
+ } else {
+ // attribute -> "@" identifier [[s] "=" [s]]
+ // Use null operand, which `rand` is already set to
+ // "Backtrack" by restoring the whitespace (if there was any)
+ index = savedIndex;
+ }
+
+ attrAdder.addAttribute(lhs, std::move(rand), errorCode);
+}
+
+/*
+ Consume a name-value pair, matching the `option` nonterminal in the grammar.
+
+ Adds the option to `optionList`
+*/
+template<class T>
+void Parser::parseOption(OptionAdder<T>& addOption, UErrorCode& errorCode) {
+ U_ASSERT(inBounds(source, index));
+
+ // Parse LHS
+ UnicodeString lhs = parseIdentifier(errorCode);
+
+ // Parse '='
+ parseTokenWithWhitespace(EQUALS, errorCode);
+
+ UnicodeString rhsStr;
+ Operand rand;
+ // Parse RHS, which is either a literal or variable
+ switch (source[index]) {
+ case DOLLAR: {
+ rand = Operand(parseVariableName(errorCode));
+ break;
+ }
+ default: {
+ // Must be a literal
+ rand = Operand(parseLiteral(errorCode));
+ break;
+ }
+ }
+ U_ASSERT(!rand.isNull());
+
+ // Finally, add the key=value mapping
+ // Use a local error code, check for duplicate option error and
+ // record it as with other errors
+ UErrorCode status = U_ZERO_ERROR;
+ addOption.addOption(lhs, std::move(rand), status);
+ if (U_FAILURE(status)) {
+ U_ASSERT(status == U_MF_DUPLICATE_OPTION_NAME_ERROR);
+ errors.setDuplicateOptionName(errorCode);
+ }
+}
+
+/*
+ Note: there are multiple overloads of parseOptions() for parsing
+ options within markup, vs. within an expression, vs. parsing
+ attributes. This should be refactored. TODO
+ */
+
+/*
+ Consume optional whitespace followed by a sequence of options
+ (possibly empty), separated by whitespace
+*/
+template <class T>
+void Parser::parseOptions(OptionAdder<T>& addOption, UErrorCode& errorCode) {
+ // Early exit if out of bounds -- no more work is possible
+ CHECK_BOUNDS(source, index, parseError, errorCode);
+
+/*
+Arbitrary lookahead is required to parse option lists. To see why, consider
+these rules from the grammar:
+
+expression = "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
+annotation = (function *(s option)) / reserved
+
+And this example:
+{:foo }
+
+Derivation:
+expression -> "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
+ -> "{" [s] annotation [s] "}"
+ -> "{" [s] ((function *(s option)) / reserved) [s] "}"
+ -> "{" [s] function *(s option) [s] "}"
+
+In this example, knowing whether to expect a '}' or the start of another option
+after the whitespace would require arbitrary lookahead -- in other words, which
+rule should we apply?
+ *(s option) -> s option *(s option)
+ or
+ *(s option) ->
+
+The same would apply to the example {:foo k=v } (note the trailing space after "v").
+
+This is addressed using a form of backtracking and (to make the backtracking easier
+to apply) a slight refactoring to the grammar.
+
+This code is written as if the grammar is:
+ expression = "{" [s] (((literal / variable) ([s] / [s annotation])) / annotation) "}"
+ annotation = (function *(s option) [s]) / (reserved [s])
+
+Parsing the `*(s option) [s]` sequence can be done within `parseOptions()`, meaning
+that `parseExpression()` can safely require a '}' after `parseOptions()` finishes.
+
+Note that when "backtracking" really just means early exit, since only whitespace
+is involved and there's no state to save.
+
+There is a separate but similar ambiguity as to whether the space precedes
+an option or an attribute.
+*/
+
+ while(true) {
+ // If the next character is not whitespace, that means we've already
+ // parsed the entire options list (which may have been empty) and there's
+ // no trailing whitespace. In that case, exit.
+ if (!isWhitespace(source[index])) {
+ break;
+ }
+ int32_t firstWhitespace = index;
+
+ // In any case other than an empty options list, there must be at least
+ // one whitespace character.
+ parseRequiredWhitespace(errorCode);
+ // Restore precondition
+ CHECK_BOUNDS(source, index, parseError, errorCode);
+
+ // If a name character follows, then at least one more option remains
+ // in the list.
+ // Otherwise, we've consumed all the options and any trailing whitespace,
+ // and can exit.
+ // Note that exiting is sort of like backtracking: "(s option)" doesn't apply,
+ // so we back out to [s].
+ if (!isNameStart(source[index])) {
+ // We've consumed all the options (meaning that either we consumed non-empty
+ // whitespace, or consumed at least one option.)
+ // Done.
+ // Remove the required whitespace from normalizedInput
+ normalizedInput.truncate(normalizedInput.length() - 1);
+ // "Backtrack" so as to leave the optional whitespace there
+ // when parsing attributes
+ index = firstWhitespace;
+ break;
+ }
+ parseOption(addOption, errorCode);
+ }
+}
+
+/*
+ Consume optional whitespace followed by a sequence of attributes
+ (possibly empty), separated by whitespace
+*/
+template<class T>
+void Parser::parseAttributes(AttributeAdder<T>& attrAdder, UErrorCode& errorCode) {
+
+ // Early exit if out of bounds -- no more work is possible
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ return;
+ }
+
+/*
+Arbitrary lookahead is required to parse attribute lists, similarly to option lists.
+(See comment in parseOptions()).
+*/
+
+ while(true) {
+ // If the next character is not whitespace, that means we've already
+ // parsed the entire attributes list (which may have been empty) and there's
+ // no trailing whitespace. In that case, exit.
+ if (!isWhitespace(source[index])) {
+ break;
+ }
+
+ // In any case other than an empty attributes list, there must be at least
+ // one whitespace character.
+ parseRequiredWhitespace(errorCode);
+ // Restore precondition
+ if (!inBounds(source, index)) {
+ ERROR(parseError, errorCode, index);
+ break;
+ }
+
+ // If an '@' follows, then at least one more attribute remains
+ // in the list.
+ // Otherwise, we've consumed all the attributes and any trailing whitespace,
+ // and can exit.
+ // Note that exiting is sort of like backtracking: "(s attributes)" doesn't apply,
+ // so we back out to [s].
+ if (source[index] != AT) {
+ // We've consumed all the attributes (meaning that either we consumed non-empty
+ // whitespace, or consumed at least one attribute.)
+ // Done.
+ // Remove the whitespace from normalizedInput
+ normalizedInput.truncate(normalizedInput.length() - 1);
+ break;
+ }
+ parseAttribute(attrAdder, errorCode);
+ }
+}
+
+void Parser::parseReservedEscape(UnicodeString &str, UErrorCode& errorCode) {
+ parseEscapeSequence(RESERVED, str, errorCode);
+}
+
+/*
+ Consumes a non-empty sequence of reserved-chars, reserved-escapes, and
+ literals (as in 1*(reserved-char / reserved-escape / literal) in the `reserved-body` rule)
+
+ Appends it to `str`
+*/
+void Parser::parseReservedChunk(Reserved::Builder& result, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ bool empty = true;
+ UnicodeString chunk;
+ while(reservedChunkFollows(source[index])) {
+ empty = false;
+ // reserved-char
+ if (isReservedChar(source[index])) {
+ chunk += source[index];
+ normalizedInput += source[index];
+ // consume the char
+ index++;
+ // Restore precondition
+ CHECK_BOUNDS(source, index, parseError, status);
+ continue;
+ }
+
+ if (chunk.length() > 0) {
+ result.add(Literal(false, chunk), status);
+ chunk.setTo(u"", 0);
+ }
+
+ if (source[index] == BACKSLASH) {
+ // reserved-escape
+ parseReservedEscape(chunk, status);
+ result.add(Literal(false, chunk), status);
+ chunk.setTo(u"", 0);
+ } else if (source[index] == PIPE || isUnquotedStart(source[index])) {
+ result.add(parseLiteral(status), status);
+ } else {
+ // The reserved chunk ends here
+ break;
+ }
+
+ CHECK_ERROR(status); // Avoid looping infinitely
+ }
+
+ // Add the last chunk if necessary
+ if (chunk.length() > 0) {
+ result.add(Literal(false, chunk), status);
+ }
+
+ if (empty) {
+ ERROR(parseError, status, index);
+ }
+}
+
+/*
+ Consume a `reserved-start` character followed by a possibly-empty sequence
+ of non-empty sequences of reserved characters, separated by whitespace.
+ Matches the `reserved` nonterminal in the grammar
+
+*/
+Reserved Parser::parseReserved(UErrorCode& status) {
+ Reserved::Builder builder(status);
+
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ U_ASSERT(inBounds(source, index));
+
+ // Require a `reservedStart` character
+ if (!isReservedStart(source[index])) {
+ ERROR(parseError, status, index);
+ return Reserved();
+ }
+
+ // Add the start char as a separate text chunk
+ UnicodeString firstCharString(source[index]);
+ builder.add(Literal(false, firstCharString), status);
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ // Consume reservedStart
+ normalizedInput += source[index];
+ index++;
+ return parseReservedBody(builder, status);
+}
+
+Reserved Parser::parseReservedBody(Reserved::Builder& builder, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+/*
+ Arbitrary lookahead is required to parse a `reserved`, for similar reasons
+ to why it's required for parsing function annotations.
+
+ In the grammar:
+
+ annotation = (function *(s option)) / reserved
+ expression = "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
+ reserved = reserved-start reserved-body
+ reserved-body = *( [s] 1*(reserved-char / reserved-escape / literal))
+
+ When reading a whitespace character, it's ambiguous whether it's the optional
+ whitespace in this rule, or the optional whitespace that precedes a '}' in an
+ expression.
+
+ The ambiguity is resolved using the same grammar refactoring as shown in
+ the comment in `parseOptions()`.
+*/
+ // Consume reserved characters / literals / reserved escapes
+ // until a character that can't be in a `reserved-body` is seen
+ while (true) {
+ /*
+ First, if there is whitespace, it means either a chunk follows it,
+ or this is the trailing whitespace before the '}' that terminates an
+ expression.
+
+ Next, if the next character can start a reserved-char, reserved-escape,
+ or literal, then parse a "chunk" of reserved things.
+ In any other case, we exit successfully, since per the refactored
+ grammar rule:
+ annotation = (function *(s option) [s]) / (reserved [s])
+ it's valid to consume whitespace after a `reserved`.
+ (`parseExpression()` is responsible for checking that the next
+ character is in fact a '}'.)
+ */
+ if (!inBounds(source, index)) {
+ break;
+ }
+ int32_t numWhitespaceChars = 0;
+ int32_t savedIndex = index;
+ if (isWhitespace(source[index])) {
+ parseOptionalWhitespace(status);
+ numWhitespaceChars = index - savedIndex;
+ // Restore precondition
+ if (!inBounds(source, index)) {
+ break;
+ }
+ }
+
+ if (reservedChunkFollows(source[index])) {
+ parseReservedChunk(builder, status);
+
+ // Avoid looping infinitely
+ if (U_FAILURE(status) || !inBounds(source, index)) {
+ break;
+ }
+ } else {
+ if (numWhitespaceChars > 0) {
+ if (source[index] == LEFT_CURLY_BRACE) {
+ // Resolve even more ambiguity (space preceding another piece of
+ // a `reserved-body`, vs. space preceding an expression in `reserved-statement`
+ // "Backtrack"
+ index -= numWhitespaceChars;
+ break;
+ }
+ if (source[index] == RIGHT_CURLY_BRACE) {
+ // Not an error: just means there's no trailing whitespace
+ // after this `reserved`
+ break;
+ }
+ if (source[index] == AT) {
+ // Not an error, but we have to "backtrack" due to the ambiguity
+ // between an `s` preceding another reserved chunk
+ // and an `s` preceding an attribute list
+ index -= numWhitespaceChars;
+ break;
+ }
+ // Error: if there's whitespace, it must either be followed
+ // by a non-empty sequence or by '}'
+ ERROR(parseError, status, index);
+ break;
+ }
+ // If there was no whitespace, it's not an error,
+ // just the end of the reserved string
+ break;
+ }
+ }
+
+ return builder.build(status);
+}
+
+/*
+ Consume a function call or reserved string, matching the `annotation`
+ nonterminal in the grammar
+
+ Returns an `Operator` representing this (a reserved is a parse error)
+*/
+Operator Parser::parseAnnotation(UErrorCode& status) {
+ U_ASSERT(inBounds(source, index));
+ Operator::Builder ratorBuilder(status);
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ if (isFunctionStart(source[index])) {
+ // Consume the function name
+ FunctionName func = parseFunction(status);
+ ratorBuilder.setFunctionName(std::move(func));
+
+ OptionAdder<Operator::Builder> addOptions(ratorBuilder);
+ // Consume the options (which may be empty)
+ parseOptions(addOptions, status);
+ } else {
+ // Must be reserved
+ // A reserved sequence is not a parse error, but might be a formatting error
+ Reserved rator = parseReserved(status);
+ ratorBuilder.setReserved(std::move(rator));
+ }
+ UErrorCode localStatus = U_ZERO_ERROR;
+ Operator result = ratorBuilder.build(localStatus);
+ // Either `setReserved` or `setFunctionName` was called,
+ // so there shouldn't be an error.
+ U_ASSERT(U_SUCCESS(localStatus));
+ return result;
+}
+
+/*
+ Consume a literal or variable (depending on `isVariable`),
+ followed by either required whitespace followed by an annotation,
+ or optional whitespace.
+*/
+void Parser::parseLiteralOrVariableWithAnnotation(bool isVariable,
+ Expression::Builder& builder,
+ UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ U_ASSERT(inBounds(source, index));
+
+ Operand rand;
+ if (isVariable) {
+ rand = Operand(parseVariableName(status));
+ } else {
+ rand = Operand(parseLiteral(status));
+ }
+
+ builder.setOperand(std::move(rand));
+
+/*
+Parsing a literal or variable with an optional annotation requires arbitrary lookahead.
+To see why, consider this rule from the grammar:
+
+expression = "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
+
+And this example:
+
+{|foo| }
+
+Derivation:
+expression -> "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
+ -> "{" [s] ((literal / variable) [s annotation]) [s] "}"
+ -> "{" [s] (literal [s annotation]) [s] "}"
+
+When reading the ' ' after the second '|', it's ambiguous whether that's the required
+space before an annotation, or the optional space before the '}'.
+
+To make this ambiguity easier to handle, this code is based on the same grammar
+refactoring for the `expression` nonterminal that `parseOptions()` relies on. See
+the comment in `parseOptions()` for details.
+*/
+
+ if (isWhitespace(source[index])) {
+ int32_t firstWhitespace = index;
+
+ // If the next character is whitespace, either [s annotation] or [s] applies
+ // (the character is either the required space before an annotation, or optional
+ // trailing space after the literal or variable). It's still ambiguous which
+ // one does apply.
+ parseOptionalWhitespace(status);
+ // Restore precondition
+ CHECK_BOUNDS(source, index, parseError, status);
+
+ // This next check resolves the ambiguity between [s annotation] and [s]
+ bool isSAnnotation = isAnnotationStart(source[index]);
+
+ if (isSAnnotation) {
+ normalizedInput += SPACE;
+ }
+
+ if (isSAnnotation) {
+ // The previously consumed whitespace precedes an annotation
+ builder.setOperator(parseAnnotation(status));
+ } else {
+ // Either there's a right curly brace (will be consumed by the caller),
+ // or there's an error and the trailing whitespace should be
+ // handled by the caller. However, this is not an error
+ // here because we're just parsing `literal [s annotation]`.
+ index = firstWhitespace;
+ }
+ } else {
+ // Either there was never whitespace, or
+ // the previously consumed whitespace is the optional trailing whitespace;
+ // either the next character is '}' or the error will be handled by parseExpression.
+ // Do nothing, since the operand was already set
+ }
+
+ // At the end of this code, the next character should either be '}',
+ // whitespace followed by a '}',
+ // or end-of-input
+}
+
+/*
+ Consume an expression, matching the `expression` nonterminal in the grammar
+*/
+
+static void exprFallback(Expression::Builder& exprBuilder) {
+ // Construct a literal consisting just of The U+FFFD REPLACEMENT CHARACTER
+ // per https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#fallback-resolution
+ exprBuilder.setOperand(Operand(Literal(false, UnicodeString(REPLACEMENT))));
+}
+
+static Expression exprFallback(UErrorCode& status) {
+ Expression result;
+ if (U_SUCCESS(status)) {
+ Expression::Builder exprBuilder(status);
+ if (U_SUCCESS(status)) {
+ // Construct a literal consisting just of The U+FFFD REPLACEMENT CHARACTER
+ // per https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#fallback-resolution
+ exprBuilder.setOperand(Operand(Literal(false, UnicodeString(REPLACEMENT))));
+ UErrorCode status = U_ZERO_ERROR;
+ result = exprBuilder.build(status);
+ // An operand was set, so there can't be an error
+ U_ASSERT(U_SUCCESS(status));
+ }
+ }
+ return result;
+}
+
+Expression Parser::parseExpression(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ // Early return if out of input -- no more work is possible
+ U_ASSERT(inBounds(source, index));
+
+ // Parse opening brace
+ parseToken(LEFT_CURLY_BRACE, status);
+ // Optional whitespace after opening brace
+ parseOptionalWhitespace(status);
+
+ Expression::Builder exprBuilder(status);
+ // Restore precondition
+ if (!inBounds(source, index)) {
+ exprFallback(exprBuilder);
+ } else {
+ // literal '|', variable '$' or annotation
+ switch (source[index]) {
+ case PIPE: {
+ // Quoted literal
+ parseLiteralOrVariableWithAnnotation(false, exprBuilder, status);
+ break;
+ }
+ case DOLLAR: {
+ // Variable
+ parseLiteralOrVariableWithAnnotation(true, exprBuilder, status);
+ break;
+ }
+ default: {
+ if (isAnnotationStart(source[index])) {
+ Operator rator = parseAnnotation(status);
+ exprBuilder.setOperator(std::move(rator));
+ } else if (isUnquotedStart(source[index])) {
+ // Unquoted literal
+ parseLiteralOrVariableWithAnnotation(false, exprBuilder, status);
+ } else {
+ // Not a literal, variable or annotation -- error out
+ ERROR(parseError, status, index);
+ exprFallback(exprBuilder);
+ break;
+ }
+ break;
+ }
+ }
+ }
+
+ // Parse attributes
+ AttributeAdder attrAdder(exprBuilder);
+ parseAttributes(attrAdder, status);
+
+ // Parse optional space
+ // (the last [s] in e.g. "{" [s] literal [s annotation] *(s attribute) [s] "}")
+ parseOptionalWhitespace(status);
+
+ // Either an operand or operator (or both) must have been set already,
+ // so there can't be an error
+ UErrorCode localStatus = U_ZERO_ERROR;
+ Expression result = exprBuilder.build(localStatus);
+ U_ASSERT(U_SUCCESS(localStatus));
+
+ // Check for end-of-input and missing '}'
+ if (!inBounds(source, index)) {
+ ERROR(parseError, status, index);
+ } else {
+ // Otherwise, it's safe to check for the '}'
+ parseToken(RIGHT_CURLY_BRACE, status);
+ }
+ return result;
+}
+
+/*
+ Parse a .local declaration, matching the `local-declaration`
+ production in the grammar
+*/
+void Parser::parseLocalDeclaration(UErrorCode& status) {
+ // End-of-input here would be an error; even empty
+ // declarations must be followed by a body
+ CHECK_BOUNDS(source, index, parseError, status);
+
+ parseToken(ID_LOCAL, status);
+ parseRequiredWhitespace(status);
+
+ // Restore precondition
+ CHECK_BOUNDS(source, index, parseError, status);
+ VariableName lhs = parseVariableName(status);
+ parseTokenWithWhitespace(EQUALS, status);
+ // Restore precondition before calling parseExpression()
+ CHECK_BOUNDS(source, index, parseError, status);
+
+ Expression rhs = parseExpression(status);
+
+ // Add binding from lhs to rhs, unless there was an error
+ // (This ensures that if there was a correct lhs but a
+ // parse error in rhs, the fallback for uses of the
+ // lhs will be its own name rather than the rhs)
+ /* This affects the behavior of this test case, which the spec
+ is ambiguous about:
+
+ .local $bar {|foo|} {{{$bar}}}
+
+ Should `$bar` still be bound to a value although
+ its declaration is syntactically incorrect (missing the '=')?
+ This code says no, but it needs to change if
+ https://github.com/unicode-org/message-format-wg/issues/703
+ is resolved differently.
+ */
+ CHECK_ERROR(status);
+ if (!errors.hasSyntaxError()) {
+ dataModel.addBinding(Binding(std::move(lhs), std::move(rhs)), status);
+ // Check if status is U_DUPLICATE_DECLARATION_ERROR
+ // and add that as an internal error if so
+ if (status == U_MF_DUPLICATE_DECLARATION_ERROR) {
+ status = U_ZERO_ERROR;
+ errors.addError(StaticErrorType::DuplicateDeclarationError, status);
+ }
+ }
+}
+
+/*
+ Parse an .input declaration, matching the `local-declaration`
+ production in the grammar
+*/
+void Parser::parseInputDeclaration(UErrorCode& status) {
+ // End-of-input here would be an error; even empty
+ // declarations must be followed by a body
+ CHECK_BOUNDS(source, index, parseError, status);
+
+ parseToken(ID_INPUT, status);
+ parseOptionalWhitespace(status);
+
+ // Restore precondition before calling parseExpression()
+ CHECK_BOUNDS(source, index, parseError, status);
+
+ // Save the index for error diagnostics
+ int32_t exprIndex = index;
+ Expression rhs = parseExpression(status);
+
+ // Here we have to check that the rhs is a variable-expression
+ if (!rhs.getOperand().isVariable()) {
+ // This case is a syntax error; report it at the beginning
+ // of the expression
+ ERROR(parseError, status, exprIndex);
+ return;
+ }
+
+ VariableName lhs = rhs.getOperand().asVariable();
+
+ // Add binding from lhs to rhs
+ // This just adds a new local variable that shadows the message
+ // argument referred to, which is harmless.
+ // When evaluating the RHS, the new local is not in scope
+ // and the message argument will be correctly referred to.
+ CHECK_ERROR(status);
+ if (!errors.hasSyntaxError()) {
+ dataModel.addBinding(Binding::input(std::move(lhs), std::move(rhs), status), status);
+ // Check if status is U_MF_DUPLICATE_DECLARATION_ERROR
+ // and add that as an internal error if so
+ if (status == U_MF_DUPLICATE_DECLARATION_ERROR) {
+ status = U_ZERO_ERROR;
+ errors.addError(StaticErrorType::DuplicateDeclarationError, status);
+ }
+ }
+}
+
+/*
+ Parses a `reserved-statement` per the grammar
+ */
+void Parser::parseUnsupportedStatement(UErrorCode& status) {
+ U_ASSERT(inBounds(source, index) && source[index] == PERIOD);
+
+ UnsupportedStatement::Builder builder(status);
+ CHECK_ERROR(status);
+
+ // Parse the keyword
+ UnicodeString keyword(PERIOD);
+ normalizedInput += UnicodeString(PERIOD);
+ index++;
+ keyword += parseName(status);
+ builder.setKeyword(keyword);
+
+ // Parse the body, which is optional
+ // Lookahead is required to distinguish the `s` in reserved-body
+ // from the `s` in `[s] expression`
+ // Next character may be:
+ // * whitespace (followed by either a reserved-body start or
+ // a '{')
+ // * a '{'
+
+ CHECK_BOUNDS(source, index, parseError, status);
+
+ if (source[index] != LEFT_CURLY_BRACE) {
+ if (!isWhitespace(source[index])) {
+ ERROR(parseError, status, index);
+ return;
+ }
+ // Expect a reserved-body start
+ int32_t savedIndex = index;
+ parseRequiredWhitespace(status);
+ CHECK_BOUNDS(source, index, parseError, status);
+ if (isReservedBodyStart(source[index])) {
+ // There is a reserved body
+ Reserved::Builder r(status);
+ builder.setBody(parseReservedBody(r, status));
+ } else {
+ // No body -- backtrack so we can parse 1*([s] expression)
+ index = savedIndex;
+ normalizedInput.truncate(normalizedInput.length() - 1);
+ }
+ // Otherwise, the next character must be a '{'
+ // to open the required expression (or optional whitespace)
+ if (source[index] != LEFT_CURLY_BRACE && !isWhitespace(source[index])) {
+ ERROR(parseError, status, index);
+ return;
+ }
+ }
+
+ // Finally, parse the expressions
+
+ // Need to look ahead to disambiguate a '{' beginning
+ // an expression from one beginning with a quoted pattern
+ int32_t expressionCount = 0;
+ while (source[index] == LEFT_CURLY_BRACE || isWhitespace(source[index])) {
+ parseOptionalWhitespace(status);
+
+ bool nextIsLbrace = source[index] == LEFT_CURLY_BRACE;
+ bool nextIsQuotedPattern = nextIsLbrace && inBounds(source, index + 1)
+ && source[index + 1] == LEFT_CURLY_BRACE;
+ if (nextIsQuotedPattern) {
+ break;
+ }
+
+ builder.addExpression(parseExpression(status), status);
+ expressionCount++;
+ }
+ if (expressionCount <= 0) {
+ // At least one expression is required
+ ERROR(parseError, status, index);
+ return;
+ }
+ dataModel.addUnsupportedStatement(builder.build(status), status);
+}
+
+// Terrible hack to get around the ambiguity between `matcher` and `reserved-statement`
+bool Parser::nextIsMatch() const {
+ for(int32_t i = 0; i < 6; i++) {
+ if (!inBounds(source, index + i) || source[index + i] != ID_MATCH[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+/*
+ Consume a possibly-empty sequence of declarations separated by whitespace;
+ each declaration matches the `declaration` nonterminal in the grammar
+
+ Builds up an environment representing those declarations
+*/
+void Parser::parseDeclarations(UErrorCode& status) {
+ // End-of-input here would be an error; even empty
+ // declarations must be followed by a body
+ CHECK_BOUNDS(source, index, parseError, status);
+
+ while (source[index] == PERIOD) {
+ CHECK_BOUNDS(source, index + 1, parseError, status);
+ if (source[index + 1] == ID_LOCAL[1]) {
+ parseLocalDeclaration(status);
+ } else if (source[index + 1] == ID_INPUT[1]) {
+ parseInputDeclaration(status);
+ } else {
+ // Unsupported statement
+ // Lookahead is needed to disambiguate this from a `match`
+ if (!nextIsMatch()) {
+ parseUnsupportedStatement(status);
+ } else {
+ // Done parsing declarations
+ break;
+ }
+ }
+
+ // Avoid looping infinitely
+ CHECK_ERROR(status);
+
+ parseOptionalWhitespace(status);
+ // Restore precondition
+ CHECK_BOUNDS(source, index, parseError, status);
+ }
+}
+
+/*
+ Consume an escaped curly brace, or backslash, matching the `text-escape`
+ nonterminal in the grammar
+*/
+void Parser::parseTextEscape(UnicodeString &str, UErrorCode& status) {
+ parseEscapeSequence(TEXT, str, status);
+}
+
+/*
+ Consume a non-empty sequence of text characters and escaped text characters,
+ matching the `text` nonterminal in the grammar
+
+ No postcondition (a message can end with a text)
+*/
+UnicodeString Parser::parseText(UErrorCode& status) {
+ UnicodeString str;
+ if (!inBounds(source, index)) {
+ // Text can be empty
+ return str;
+ }
+
+ if (!(isTextChar(source[index] || source[index] == BACKSLASH))) {
+ // Error -- text is expected here
+ ERROR(parseError, status, index);
+ return str;
+ }
+
+ while (true) {
+ if (source[index] == BACKSLASH) {
+ parseTextEscape(str, status);
+ } else if (isTextChar(source[index])) {
+ normalizedInput += source[index];
+ str += source[index];
+ index++;
+ maybeAdvanceLine();
+ } else {
+ break;
+ }
+ if (!inBounds(source, index)) {
+ // OK for text to end a message
+ break;
+ }
+ }
+
+ return str;
+}
+
+/*
+ Consume an `nmtoken`, `literal`, or the string "*", matching
+ the `key` nonterminal in the grammar
+*/
+Key Parser::parseKey(UErrorCode& status) {
+ U_ASSERT(inBounds(source, index));
+
+ Key k; // wildcard by default
+ // Literal | '*'
+ switch (source[index]) {
+ case ASTERISK: {
+ index++;
+ normalizedInput += ASTERISK;
+ // Guarantee postcondition
+ if (!inBounds(source, index)) {
+ ERROR(parseError, status, index);
+ return k;
+ }
+ break;
+ }
+ default: {
+ // Literal
+ k = Key(parseLiteral(status));
+ break;
+ }
+ }
+ return k;
+}
+
+/*
+ Consume a non-empty sequence of `key`s separated by whitespace
+
+ Takes ownership of `keys`
+*/
+SelectorKeys Parser::parseNonEmptyKeys(UErrorCode& status) {
+ SelectorKeys result;
+
+ if (U_FAILURE(status)) {
+ return result;
+ }
+
+ U_ASSERT(inBounds(source, index));
+
+/*
+Arbitrary lookahead is required to parse key lists. To see why, consider
+this rule from the grammar:
+
+variant = key *(s key) [s] quoted-pattern
+
+And this example:
+when k1 k2 {a}
+
+Derivation:
+ variant -> key *(s key) [s] quoted-pattern
+ -> key s key *(s key) quoted-pattern
+
+After matching ' ' to `s` and 'k2' to `key`, it would require arbitrary lookahead
+to know whether to expect the start of a pattern or the start of another key.
+In other words: is the second whitespace sequence the required space in *(s key),
+or the optional space in [s] quoted-pattern?
+
+This is addressed using "backtracking" (similarly to `parseOptions()`).
+*/
+
+ SelectorKeys::Builder keysBuilder(status);
+ if (U_FAILURE(status)) {
+ return result;
+ }
+
+ // Since the first key is required, it's simplest to parse it separately.
+ keysBuilder.add(parseKey(status), status);
+
+ // Restore precondition
+ if (!inBounds(source, index)) {
+ ERROR(parseError, status, index);
+ return result;
+ }
+
+ // We've seen at least one whitespace-key pair, so now we can parse
+ // *(s key) [s]
+ while (source[index] != LEFT_CURLY_BRACE || isWhitespace(source[index])) { // Try to recover from errors
+ bool wasWhitespace = isWhitespace(source[index]);
+ parseRequiredWhitespace(status);
+ if (!wasWhitespace) {
+ // Avoid infinite loop when parsing something like:
+ // when * @{!...
+ index++;
+ }
+
+ // Restore precondition
+ if (!inBounds(source, index)) {
+ ERROR(parseError, status, index);
+ return result;
+ }
+
+ // At this point, it's ambiguous whether we are inside (s key) or [s].
+ // This check resolves that ambiguity.
+ if (source[index] == LEFT_CURLY_BRACE) {
+ // A pattern follows, so what we just parsed was the optional
+ // trailing whitespace. All the keys have been parsed.
+
+ // Unpush the whitespace from `normalizedInput`
+ normalizedInput.truncate(normalizedInput.length() - 1);
+ break;
+ }
+ keysBuilder.add(parseKey(status), status);
+ }
+
+ return keysBuilder.build(status);
+}
+
+Pattern Parser::parseQuotedPattern(UErrorCode& status) {
+ U_ASSERT(inBounds(source, index));
+
+ parseToken(LEFT_CURLY_BRACE, status);
+ parseToken(LEFT_CURLY_BRACE, status);
+ Pattern p = parseSimpleMessage(status);
+ parseToken(RIGHT_CURLY_BRACE, status);
+ parseToken(RIGHT_CURLY_BRACE, status);
+ return p;
+}
+
+/*
+ Consume a `placeholder`, matching the nonterminal in the grammar
+ No postcondition (a markup can end a message)
+*/
+Markup Parser::parseMarkup(UErrorCode& status) {
+ U_ASSERT(inBounds(source, index + 1));
+
+ U_ASSERT(source[index] == LEFT_CURLY_BRACE);
+
+ Markup::Builder builder(status);
+ if (U_FAILURE(status)) {
+ return {};
+ }
+
+ // Consume the '{'
+ index++;
+ normalizedInput += LEFT_CURLY_BRACE;
+ parseOptionalWhitespace(status);
+ bool closing = false;
+ switch (source[index]) {
+ case NUMBER_SIGN: {
+ // Open or standalone; consume the '#'
+ normalizedInput += source[index];
+ index++;
+ break;
+ }
+ case SLASH: {
+ // Closing
+ normalizedInput += source[index];
+ closing = true;
+ index++;
+ break;
+ }
+ default: {
+ ERROR(parseError, status, index);
+ return {};
+ }
+ }
+
+ // Parse the markup identifier
+ builder.setName(parseIdentifier(status));
+
+ // Parse the options, which must begin with a ' '
+ // if present
+ if (inBounds(source, index) && isWhitespace(source[index])) {
+ OptionAdder<Markup::Builder> optionAdder(builder);
+ parseOptions(optionAdder, status);
+ }
+
+ // Parse the attributes, which also must begin
+ // with a ' '
+ if (inBounds(source, index) && isWhitespace(source[index])) {
+ AttributeAdder attrAdder(builder);
+ parseAttributes(attrAdder, status);
+ }
+
+ parseOptionalWhitespace(status);
+
+ bool standalone = false;
+ // Check if this is a standalone or not
+ if (!closing) {
+ if (inBounds(source, index) && source[index] == SLASH) {
+ standalone = true;
+ normalizedInput += SLASH;
+ index++;
+ }
+ }
+
+ parseToken(RIGHT_CURLY_BRACE, status);
+
+ if (standalone) {
+ builder.setStandalone();
+ } else if (closing) {
+ builder.setClose();
+ } else {
+ builder.setOpen();
+ }
+
+ return builder.build(status);
+}
+
+/*
+ Consume a `placeholder`, matching the nonterminal in the grammar
+ No postcondition (a placeholder can end a message)
+*/
+std::variant<Expression, Markup> Parser::parsePlaceholder(UErrorCode& status) {
+ U_ASSERT(source[index] == LEFT_CURLY_BRACE);
+
+ if (!inBounds(source, index)) {
+ ERROR(parseError, status, index);
+ return exprFallback(status);
+ }
+
+ // Check if it's markup or an expression
+ if (source[index + 1] == NUMBER_SIGN || source[index + 1] == SLASH) {
+ // Markup
+ return parseMarkup(status);
+ }
+ return parseExpression(status);
+}
+
+/*
+ Consume a `simple-message`, matching the nonterminal in the grammar
+ Postcondition: `index == source.length()` or U_FAILURE(status);
+ for a syntactically correct message, this will consume the entire input
+*/
+Pattern Parser::parseSimpleMessage(UErrorCode& status) {
+ Pattern::Builder result(status);
+
+ if (U_SUCCESS(status)) {
+ Expression expression;
+ while (inBounds(source, index)) {
+ switch (source[index]) {
+ case LEFT_CURLY_BRACE: {
+ // Must be placeholder
+ std::variant<Expression, Markup> piece = parsePlaceholder(status);
+ if (std::holds_alternative<Expression>(piece)) {
+ Expression expr = *std::get_if<Expression>(&piece);
+ result.add(std::move(expr), status);
+ } else {
+ Markup markup = *std::get_if<Markup>(&piece);
+ result.add(std::move(markup), status);
+ }
+ break;
+ }
+ default: {
+ // Must be text
+ result.add(parseText(status), status);
+ break;
+ }
+ }
+ if (source[index] == RIGHT_CURLY_BRACE) {
+ // End of quoted pattern
+ break;
+ }
+ // Don't loop infinitely
+ if (errors.hasSyntaxError()) {
+ break;
+ }
+ }
+ }
+ return result.build(status);
+}
+
+
+/*
+ Consume a `selectors` (matching the nonterminal in the grammar),
+ followed by a non-empty sequence of `variant`s (matching the nonterminal
+ in the grammar) preceded by whitespace
+ No postcondition (on return, `index` might equal `source.length()` with no syntax error
+ because a message can end with a variant)
+*/
+void Parser::parseSelectors(UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ U_ASSERT(inBounds(source, index));
+
+ parseToken(ID_MATCH, status);
+
+ bool empty = true;
+ // Parse selectors
+ // "Backtracking" is required here. It's not clear if whitespace is
+ // (`[s]` selector) or (`[s]` variant)
+ while (isWhitespace(source[index]) || source[index] == LEFT_CURLY_BRACE) {
+ parseOptionalWhitespace(status);
+ // Restore precondition
+ CHECK_BOUNDS(source, index, parseError, status);
+ if (source[index] != LEFT_CURLY_BRACE) {
+ // This is not necessarily an error, but rather,
+ // means the whitespace we parsed was the optional
+ // whitespace preceding the first variant, not the
+ // optional whitespace preceding a subsequent expression.
+ break;
+ }
+ Expression expression;
+ expression = parseExpression(status);
+ empty = false;
+
+ dataModel.addSelector(std::move(expression), status);
+ CHECK_ERROR(status);
+ }
+
+ // At least one selector is required
+ if (empty) {
+ ERROR(parseError, status, index);
+ return;
+ }
+
+ #define CHECK_END_OF_INPUT \
+ if (((int32_t)index) >= source.length()) { \
+ break; \
+ } \
+
+ // Parse variants
+ while (isWhitespace(source[index]) || isKeyStart(source[index])) {
+ if (isWhitespace(source[index])) {
+ int32_t whitespaceStart = index;
+ parseOptionalWhitespace(status);
+ // Restore the precondition.
+ // Error out if we reached the end of input. The message
+ // cannot end with trailing whitespace if there are variants.
+ if (!inBounds(source, index)) {
+ // Use index of first whitespace for error message
+ index = whitespaceStart;
+ ERROR(parseError, status, index);
+ return;
+ }
+ }
+
+ // At least one key is required
+ SelectorKeys keyList(parseNonEmptyKeys(status));
+
+ CHECK_ERROR(status);
+
+ // parseNonEmptyKeys() consumes any trailing whitespace,
+ // so the pattern can be consumed next.
+
+ // Restore precondition before calling parsePattern()
+ // (which must return a non-null value)
+ CHECK_BOUNDS(source, index, parseError, status);
+ Pattern rhs = parseQuotedPattern(status);
+
+ dataModel.addVariant(std::move(keyList), std::move(rhs), status);
+
+ // Restore the precondition, *without* erroring out if we've
+ // reached the end of input. That's because it's valid for the
+ // message to end with a variant that has no trailing whitespace.
+ // Why do we need to check this condition twice inside the loop?
+ // Because if we don't check it here, the `isWhitespace()` call in
+ // the loop head will read off the end of the input string.
+ CHECK_END_OF_INPUT
+ }
+}
+
+/*
+ Consume a `body` (matching the nonterminal in the grammar),
+ No postcondition (on return, `index` might equal `source.length()` with no syntax error,
+ because a message can end with a body (trailing whitespace is optional)
+*/
+
+void Parser::errorPattern(UErrorCode& status) {
+ errors.addSyntaxError(status);
+ // Set to empty pattern
+ Pattern::Builder result = Pattern::Builder(status);
+ CHECK_ERROR(status);
+
+ // If still in bounds, then add the remaining input as a single text part
+ // to the pattern
+ /*
+ TODO: this behavior isn't documented in the spec, but it comes from
+ https://github.com/messageformat/messageformat/blob/e0087bff312d759b67a9129eac135d318a1f0ce7/packages/mf2-messageformat/src/__fixtures/test-messages.json#L236
+ and a pending pull request https://github.com/unicode-org/message-format-wg/pull/462 will clarify
+ whether this is the intent behind the spec
+ */
+ UnicodeString partStr(LEFT_CURLY_BRACE);
+ while (inBounds(source, index)) {
+ partStr += source[index++];
+ }
+ // Add curly braces around the entire output (same comment as above)
+ partStr += RIGHT_CURLY_BRACE;
+ result.add(std::move(partStr), status);
+ dataModel.setPattern(result.build(status));
+}
+
+void Parser::parseBody(UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ // Out-of-input is a syntax warning
+ if (!inBounds(source, index)) {
+ errorPattern(status);
+ return;
+ }
+
+ // Body must be either a pattern or selectors
+ switch (source[index]) {
+ case LEFT_CURLY_BRACE: {
+ // Pattern
+ dataModel.setPattern(parseQuotedPattern(status));
+ break;
+ }
+ case ID_MATCH[0]: {
+ // Selectors
+ parseSelectors(status);
+ return;
+ }
+ default: {
+ ERROR(parseError, status, index);
+ errorPattern(status);
+ return;
+ }
+ }
+}
+
+// -------------------------------------
+// Parses the source pattern.
+
+void Parser::parse(UParseError &parseErrorResult, UErrorCode& status) {
+ CHECK_ERROR(status);
+
+ bool simple = true;
+ // Message can be empty, so we need to only look ahead
+ // if we know it's non-empty
+ if (inBounds(source, index)) {
+ if (source[index] == PERIOD
+ || (index < ((uint32_t) source.length() + 1)
+ && source[index] == LEFT_CURLY_BRACE
+ && source[index + 1] == LEFT_CURLY_BRACE)) {
+ // A complex message begins with a '.' or '{'
+ parseDeclarations(status);
+ parseBody(status);
+ simple = false;
+ }
+ }
+ if (simple) {
+ // Simple message
+ // For normalization, quote the pattern
+ normalizedInput += LEFT_CURLY_BRACE;
+ normalizedInput += LEFT_CURLY_BRACE;
+ dataModel.setPattern(parseSimpleMessage(status));
+ normalizedInput += RIGHT_CURLY_BRACE;
+ normalizedInput += RIGHT_CURLY_BRACE;
+ }
+
+ CHECK_ERROR(status);
+
+ // There are no errors; finally, check that the entire input was consumed
+ if (((int32_t)index) != source.length()) {
+ ERROR(parseError, status, index);
+ }
+
+ // Finally, copy the relevant fields of the internal `MessageParseError`
+ // into the `UParseError` argument
+ translateParseError(parseError, parseErrorResult);
+}
+
+Parser::~Parser() {}
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
diff --git a/icu4c/source/i18n/messageformat2_parser.h b/icu4c/source/i18n/messageformat2_parser.h
new file mode 100644
index 000000000..92c0475d6
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_parser.h
@@ -0,0 +1,184 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT_PARSER_H
+#define MESSAGEFORMAT_PARSER_H
+
+#include "unicode/messageformat2_data_model.h"
+#include "unicode/parseerr.h"
+
+#include "messageformat2_allocation.h"
+#include "messageformat2_errors.h"
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // Used for parameterizing options parsing code
+ // over the two builders that use it (Operator and Markup)
+ template <class T>
+ class OptionAdder {
+ private:
+ T& builder;
+ public:
+ OptionAdder(T& b) : builder(b) {}
+ void addOption(const UnicodeString& k, Operand&& r, UErrorCode& s) {
+ builder.addOption(k, std::move(r), s);
+ }
+ };
+
+ // Used for parameterizing attributes parsing code
+ // over the two builders that use it (Expression and Markup)
+ // Unfortunately the same OptionAdder class can't just be reused,
+ // becaues duplicate options are forbidden while duplicate attributes are not
+ template <class T>
+ class AttributeAdder {
+ private:
+ T& builder;
+ public:
+ AttributeAdder(T& b) : builder(b) {}
+ void addAttribute(const UnicodeString& k, Operand&& r, UErrorCode& s) {
+ builder.addAttribute(k, std::move(r), s);
+ }
+ };
+
+ // Parser class (private)
+ class Parser : public UMemory {
+ public:
+ virtual ~Parser();
+ private:
+ friend class MessageFormatter;
+
+ void parse(UParseError&, UErrorCode&);
+
+ /*
+ Use an internal "parse error" structure to make it easier to translate
+ absolute offsets to line offsets.
+ This is translated back to a `UParseError` at the end of parsing.
+ */
+ typedef struct MessageParseError {
+ // The line on which the error occurred
+ uint32_t line;
+ // The offset, relative to the erroneous line, on which the error occurred
+ uint32_t offset;
+ // The total number of characters seen before advancing to the current line. It has a value of 0 if line == 0.
+ // It includes newline characters, because the index does too.
+ uint32_t lengthBeforeCurrentLine;
+
+ // This parser doesn't yet use the last two fields.
+ UChar preContext[U_PARSE_CONTEXT_LEN];
+ UChar postContext[U_PARSE_CONTEXT_LEN];
+ } MessageParseError;
+
+ Parser(const UnicodeString &input, MFDataModel::Builder& dataModelBuilder, StaticErrors& e, UnicodeString& normalizedInputRef)
+ : source(input), index(0), errors(e), normalizedInput(normalizedInputRef), dataModel(dataModelBuilder) {
+ parseError.line = 0;
+ parseError.offset = 0;
+ parseError.lengthBeforeCurrentLine = 0;
+ parseError.preContext[0] = '\0';
+ parseError.postContext[0] = '\0';
+ }
+
+ // Used so `parseEscapeSequence()` can handle all types of escape sequences
+ // (literal, text, and reserved)
+ typedef enum { LITERAL, TEXT, RESERVED } EscapeKind;
+
+ static void translateParseError(const MessageParseError&, UParseError&);
+ static void setParseError(MessageParseError&, uint32_t);
+ void maybeAdvanceLine();
+ Pattern parseSimpleMessage(UErrorCode&);
+ void parseBody(UErrorCode&);
+ void parseDeclarations(UErrorCode&);
+ void parseUnsupportedStatement(UErrorCode&);
+ void parseLocalDeclaration(UErrorCode&);
+ void parseInputDeclaration(UErrorCode&);
+ void parseSelectors(UErrorCode&);
+
+ void parseWhitespaceMaybeRequired(bool, UErrorCode&);
+ void parseRequiredWhitespace(UErrorCode&);
+ void parseOptionalWhitespace(UErrorCode&);
+ void parseToken(UChar32, UErrorCode&);
+ void parseTokenWithWhitespace(UChar32, UErrorCode&);
+ template <int32_t N>
+ void parseToken(const UChar32 (&)[N], UErrorCode&);
+ template <int32_t N>
+ void parseTokenWithWhitespace(const UChar32 (&)[N], UErrorCode&);
+ bool nextIsMatch() const;
+ UnicodeString parseName(UErrorCode&);
+ UnicodeString parseIdentifier(UErrorCode&);
+ UnicodeString parseDigits(UErrorCode&);
+ VariableName parseVariableName(UErrorCode&);
+ FunctionName parseFunction(UErrorCode&);
+ void parseEscapeSequence(EscapeKind, UnicodeString&, UErrorCode&);
+ void parseLiteralEscape(UnicodeString&, UErrorCode&);
+ Literal parseUnquotedLiteral(UErrorCode&);
+ Literal parseQuotedLiteral(UErrorCode&);
+ Literal parseLiteral(UErrorCode&);
+ template<class T>
+ void parseAttribute(AttributeAdder<T>&, UErrorCode&);
+ template<class T>
+ void parseAttributes(AttributeAdder<T>&, UErrorCode&);
+ template<class T>
+ void parseOption(OptionAdder<T>&, UErrorCode&);
+ template<class T>
+ void parseOptions(OptionAdder<T>&, UErrorCode&);
+ void parseReservedEscape(UnicodeString&, UErrorCode&);
+ void parseReservedChunk(Reserved::Builder&, UErrorCode&);
+ Reserved parseReserved(UErrorCode&);
+ Reserved parseReservedBody(Reserved::Builder&, UErrorCode&);
+ Operator parseAnnotation(UErrorCode&);
+ void parseLiteralOrVariableWithAnnotation(bool, Expression::Builder&, UErrorCode&);
+ Markup parseMarkup(UErrorCode&);
+ Expression parseExpression(UErrorCode&);
+ std::variant<Expression, Markup> parsePlaceholder(UErrorCode&);
+ void parseTextEscape(UnicodeString&, UErrorCode&);
+ UnicodeString parseText(UErrorCode&);
+ Key parseKey(UErrorCode&);
+ SelectorKeys parseNonEmptyKeys(UErrorCode&);
+ void errorPattern(UErrorCode& status);
+ Pattern parseQuotedPattern(UErrorCode&);
+
+ // The input string
+ const UnicodeString &source;
+ // The current position within the input string
+ uint32_t index;
+ // Represents the current line (and when an error is indicated),
+ // character offset within the line of the parse error
+ MessageParseError parseError;
+
+ // The structure to use for recording errors
+ StaticErrors& errors;
+
+ // Normalized version of the input string (optional whitespace removed)
+ UnicodeString& normalizedInput;
+
+ // The parent builder
+ MFDataModel::Builder &dataModel;
+ }; // class Parser
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_PARSER_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/icu4c/source/i18n/messageformat2_serializer.cpp b/icu4c/source/i18n/messageformat2_serializer.cpp
new file mode 100644
index 000000000..b55c55ab7
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_serializer.cpp
@@ -0,0 +1,340 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model.h"
+#include "messageformat2_macros.h"
+#include "messageformat2_serializer.h"
+#include "uvector.h" // U_ASSERT
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+// Generates a string representation of a data model
+// ------------------------------------------------
+
+using namespace data_model;
+
+// Private helper methods
+
+void Serializer::whitespace() {
+ result += SPACE;
+}
+
+void Serializer::emit(UChar32 c) {
+ result += c;
+}
+
+void Serializer::emit(const UnicodeString& s) {
+ result += s;
+}
+
+template <int32_t N>
+void Serializer::emit(const UChar32 (&token)[N]) {
+ // Don't emit the terminator
+ for (int32_t i = 0; i < N - 1; i++) {
+ emit(token[i]);
+ }
+}
+
+void Serializer::emit(const Literal& l) {
+ if (l.isQuoted()) {
+ emit(PIPE);
+ const UnicodeString& contents = l.unquoted();
+ for (int32_t i = 0; ((int32_t) i) < contents.length(); i++) {
+ // Re-escape any PIPE or BACKSLASH characters
+ switch(contents[i]) {
+ case BACKSLASH:
+ case PIPE: {
+ emit(BACKSLASH);
+ break;
+ }
+ default: {
+ break;
+ }
+ }
+ emit(contents[i]);
+ }
+ emit(PIPE);
+ } else {
+ emit(l.unquoted());
+ }
+}
+
+void Serializer::emit(const Key& k) {
+ if (k.isWildcard()) {
+ emit(ASTERISK);
+ return;
+ }
+ emit(k.asLiteral());
+}
+
+void Serializer::emit(const SelectorKeys& k) {
+ const Key* ks = k.getKeysInternal();
+ int32_t len = k.len;
+ // It would be an error for `keys` to be empty;
+ // that would mean this is the single `pattern`
+ // variant, and in that case, this method shouldn't be called
+ U_ASSERT(len > 0);
+ for (int32_t i = 0; i < len; i++) {
+ if (i != 0) {
+ whitespace();
+ }
+ emit(ks[i]);
+ }
+}
+
+void Serializer::emit(const Operand& rand) {
+ U_ASSERT(!rand.isNull());
+
+ if (rand.isVariable()) {
+ emit(DOLLAR);
+ emit(rand.asVariable());
+ } else {
+ // Literal: quoted or unquoted
+ emit(rand.asLiteral());
+ }
+}
+
+void Serializer::emit(const OptionMap& options) {
+ // Errors should have been checked before this point
+ UErrorCode localStatus = U_ZERO_ERROR;
+ U_ASSERT(!options.bogus);
+ for (int32_t i = 0; i < options.size(); i++) {
+ const Option& opt = options.getOption(i, localStatus);
+ // No need to check error code, since we already checked
+ // that !bogus
+ whitespace();
+ emit(opt.getName());
+ emit(EQUALS);
+ emit(opt.getValue());
+ }
+}
+
+void Serializer::emitAttributes(const OptionMap& attributes) {
+ // Errors should have been checked before this point
+ UErrorCode localStatus = U_ZERO_ERROR;
+ U_ASSERT(!attributes.bogus);
+ for (int32_t i = 0; i < attributes.size(); i++) {
+ const Option& attr = attributes.getOption(i, localStatus);
+ // No need to check error code, since we already checked
+ // that !bogus
+ whitespace();
+ emit(AT);
+ emit(attr.getName());
+ const Operand& v = attr.getValue();
+ if (!v.isNull()) {
+ emit(EQUALS);
+ emit(v);
+ }
+ }
+}
+
+void Serializer::emit(const Reserved& reserved) {
+ // Re-escape '\' / '{' / '|' / '}'
+ for (int32_t i = 0; i < reserved.numParts(); i++) {
+ const Literal& l = reserved.getPart(i);
+ if (l.isQuoted()) {
+ emit(l);
+ } else {
+ const UnicodeString& s = l.unquoted();
+ for (int32_t j = 0; ((int32_t) j) < s.length(); j++) {
+ switch(s[j]) {
+ case LEFT_CURLY_BRACE:
+ case PIPE:
+ case RIGHT_CURLY_BRACE:
+ case BACKSLASH: {
+ emit(BACKSLASH);
+ break;
+ }
+ default:
+ break;
+ }
+ emit(s[j]);
+ }
+ }
+ }
+}
+
+ void Serializer::emit(const Expression& expr) {
+ emit(LEFT_CURLY_BRACE);
+
+ if (!expr.isReserved() && !expr.isFunctionCall()) {
+ // Literal or variable, no annotation
+ emit(expr.getOperand());
+ } else {
+ // Function call or reserved
+ if (!expr.isStandaloneAnnotation()) {
+ // Must be a function call that has an operand
+ emit(expr.getOperand());
+ whitespace();
+ }
+ UErrorCode localStatus = U_ZERO_ERROR;
+ const Operator* rator = expr.getOperator(localStatus);
+ U_ASSERT(U_SUCCESS(localStatus));
+ if (rator->isReserved()) {
+ const Reserved& reserved = rator->asReserved();
+ emit(reserved);
+ } else {
+ emit(COLON);
+ emit(rator->getFunctionName());
+ // No whitespace after function name, in case it has
+ // no options. (when there are options, emit(OptionMap) will
+ // emit the leading whitespace)
+ emit(rator->getOptionsInternal());
+ }
+ }
+ emitAttributes(expr.getAttributesInternal());
+ emit(RIGHT_CURLY_BRACE);
+}
+
+void Serializer::emit(const PatternPart& part) {
+ if (part.isText()) {
+ // Raw text
+ const UnicodeString& text = part.asText();
+ // Re-escape '{'/'}'/'\'
+ for (int32_t i = 0; ((int32_t) i) < text.length(); i++) {
+ switch(text[i]) {
+ case BACKSLASH:
+ case LEFT_CURLY_BRACE:
+ case RIGHT_CURLY_BRACE: {
+ emit(BACKSLASH);
+ break;
+ }
+ default:
+ break;
+ }
+ emit(text[i]);
+ }
+ return;
+ }
+ // Markup
+ if (part.isMarkup()) {
+ const Markup& markup = part.asMarkup();
+ emit(LEFT_CURLY_BRACE);
+ if (markup.isClose()) {
+ emit(SLASH);
+ } else {
+ emit(NUMBER_SIGN);
+ }
+ emit(markup.getName());
+ emit(markup.getOptionsInternal());
+ emitAttributes(markup.getAttributesInternal());
+ if (markup.isStandalone()) {
+ emit(SLASH);
+ }
+ emit(RIGHT_CURLY_BRACE);
+ return;
+ }
+ // Expression
+ emit(part.contents());
+}
+
+void Serializer::emit(const Pattern& pat) {
+ int32_t len = pat.numParts();
+ // Always quote pattern, which should match the normalized input
+ // if the parser is constructing it correctly
+ emit(LEFT_CURLY_BRACE);
+ emit(LEFT_CURLY_BRACE);
+ for (int32_t i = 0; i < len; i++) {
+ // No whitespace is needed here -- see the `pattern` nonterminal in the grammar
+ emit(pat.getPart(i));
+ }
+ emit(RIGHT_CURLY_BRACE);
+ emit(RIGHT_CURLY_BRACE);
+}
+
+void Serializer::serializeDeclarations() {
+ const Binding* bindings = dataModel.getLocalVariablesInternal();
+ U_ASSERT(bindings != nullptr);
+
+ for (int32_t i = 0; i < dataModel.bindingsLen; i++) {
+ const Binding& b = bindings[i];
+ if (b.isLocal()) {
+ // No whitespace needed here -- see `message` in the grammar
+ emit(ID_LOCAL);
+ whitespace();
+ emit(DOLLAR);
+ emit(b.getVariable());
+ // No whitespace needed here -- see `local-declaration` in the grammar
+ emit(EQUALS);
+ // No whitespace needed here -- see `local-declaration` in the grammar
+ } else {
+ // Input declaration
+ emit(ID_INPUT);
+ // No whitespace needed here -- see `input-declaration` in the grammar
+ }
+ emit(b.getValue());
+ }
+}
+
+void Serializer::serializeUnsupported() {
+ const UnsupportedStatement* statements = dataModel.getUnsupportedStatementsInternal();
+ U_ASSERT(statements != nullptr);
+
+ for (int32_t i = 0; i < dataModel.unsupportedStatementsLen; i++) {
+ const UnsupportedStatement& s = statements[i];
+ emit(s.getKeyword());
+ UErrorCode localErrorCode = U_ZERO_ERROR;
+ const Reserved* r = s.getBody(localErrorCode);
+ if (U_SUCCESS(localErrorCode)) {
+ whitespace();
+ emit(*r);
+ }
+ const Expression* e = s.getExpressionsInternal();
+ for (int32_t j = 0; j < s.expressionsLen; j++) {
+ emit(e[j]);
+ }
+ }
+}
+
+void Serializer::serializeSelectors() {
+ U_ASSERT(!dataModel.hasPattern());
+ const Expression* selectors = dataModel.getSelectorsInternal();
+
+ emit(ID_MATCH);
+ for (int32_t i = 0; i < dataModel.numSelectors(); i++) {
+ // No whitespace needed here -- see `selectors` in the grammar
+ emit(selectors[i]);
+ }
+}
+
+void Serializer::serializeVariants() {
+ U_ASSERT(!dataModel.hasPattern());
+ const Variant* variants = dataModel.getVariantsInternal();
+ for (int32_t i = 0; i < dataModel.numVariants(); i++) {
+ const Variant& v = variants[i];
+ emit(v.getKeys());
+ // No whitespace needed here -- see `variant` in the grammar
+ emit(v.getPattern());
+ }
+}
+
+
+// Main (public) serializer method
+void Serializer::serialize() {
+ serializeDeclarations();
+ serializeUnsupported();
+ // Pattern message
+ if (dataModel.hasPattern()) {
+ emit(dataModel.getPattern());
+ } else {
+ // Selectors message
+ serializeSelectors();
+ serializeVariants();
+ }
+}
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
diff --git a/icu4c/source/i18n/messageformat2_serializer.h b/icu4c/source/i18n/messageformat2_serializer.h
new file mode 100644
index 000000000..4b72d1ca7
--- /dev/null
+++ b/icu4c/source/i18n/messageformat2_serializer.h
@@ -0,0 +1,75 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT_SERIALIZER_H
+#define MESSAGEFORMAT_SERIALIZER_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // Serializer class (private)
+ // Converts a data model back to a string
+ // TODO: Should be private; made public so tests
+ // can use it
+ class U_I18N_API Serializer : public UMemory {
+ public:
+ Serializer(const MFDataModel& m, UnicodeString& s) : dataModel(m), result(s) {}
+ void serialize();
+
+ const MFDataModel& dataModel;
+ UnicodeString& result;
+
+ private:
+
+ void whitespace();
+ void emit(UChar32);
+ template <int32_t N>
+ void emit(const UChar32 (&)[N]);
+ void emit(const UnicodeString&);
+ void emit(const Literal&);
+ void emit(const Key&);
+ void emit(const SelectorKeys&);
+ void emit(const Operand&);
+ void emit(const Reserved&);
+ void emit(const Expression&);
+ void emit(const PatternPart&);
+ void emit(const Pattern&);
+ void emit(const Variant*);
+ void emitAttributes(const OptionMap&);
+ void emit(const OptionMap&);
+ void serializeUnsupported();
+ void serializeDeclarations();
+ void serializeSelectors();
+ void serializeVariants();
+ }; // class Serializer
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_SERIALIZER_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
+
diff --git a/icu4c/source/i18n/msgfmt.cpp b/icu4c/source/i18n/msgfmt.cpp
index 29fb4b3a0..0413dc746 100644
--- a/icu4c/source/i18n/msgfmt.cpp
+++ b/icu4c/source/i18n/msgfmt.cpp
@@ -1086,7 +1086,7 @@ void MessageFormat::format(int32_t msgStart, const void *plNumber,
// that formats the number without subtracting the offset.
appendTo.formatAndAppend(pluralNumber.formatter, *arg, success);
}
- } else if ((formatter = getCachedFormatter(i -2)) != 0) {
+ } else if ((formatter = getCachedFormatter(i - 2)) != nullptr) {
// Handles all ArgType.SIMPLE, and formatters from setFormat() and its siblings.
if (dynamic_cast<const ChoiceFormat*>(formatter) ||
dynamic_cast<const PluralFormat*>(formatter) ||
@@ -1983,7 +1983,7 @@ UnicodeString MessageFormat::PluralSelectorProvider::select(void *ctx, double nu
return UnicodeString(false, OTHER_STRING, 5);
}
context.formatter->format(context.number, context.numberString, ec);
- auto* decFmt = dynamic_cast<const DecimalFormat *>(context.formatter);
+ const auto* decFmt = dynamic_cast<const DecimalFormat*>(context.formatter);
if(decFmt != nullptr) {
number::impl::DecimalQuantity dq;
decFmt->formatToDecimalQuantity(context.number, dq, ec);
diff --git a/icu4c/source/i18n/name2uni.h b/icu4c/source/i18n/name2uni.h
index 6881c6bc8..ba8fbc823 100644
--- a/icu4c/source/i18n/name2uni.h
+++ b/icu4c/source/i18n/name2uni.h
@@ -33,7 +33,7 @@ public:
* Constructs a transliterator.
* @param adoptedFilter the filter for this transliterator.
*/
- NameUnicodeTransliterator(UnicodeFilter* adoptedFilter = 0);
+ NameUnicodeTransliterator(UnicodeFilter* adoptedFilter = nullptr);
/**
* Destructor.
diff --git a/icu4c/source/i18n/nfrule.cpp b/icu4c/source/i18n/nfrule.cpp
index 51bd4c974..1c78e6b1a 100644
--- a/icu4c/source/i18n/nfrule.cpp
+++ b/icu4c/source/i18n/nfrule.cpp
@@ -118,7 +118,7 @@ NFRule::makeRules(UnicodeString& description,
// description string)
NFRule* rule1 = new NFRule(rbnf, description, status);
/* test for nullptr */
- if (rule1 == 0) {
+ if (rule1 == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -162,7 +162,7 @@ NFRule::makeRules(UnicodeString& description,
// goes SECOND in the rule set's rule list)
rule2 = new NFRule(rbnf, UnicodeString(), status);
/* test for nullptr */
- if (rule2 == 0) {
+ if (rule2 == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -721,6 +721,14 @@ int64_t NFRule::getDivisor() const
return util64_pow(radix, exponent);
}
+/**
+ * Internal function to facilitate numerical rounding. See the explanation in MultiplierSubstitution::transformNumber().
+ */
+bool NFRule::hasModulusSubstitution() const
+{
+ return (sub1 != nullptr && sub1->isModulusSubstitution()) || (sub2 != nullptr && sub2->isModulusSubstitution());
+}
+
//-----------------------------------------------------------------------
// formatting
diff --git a/icu4c/source/i18n/nfrule.h b/icu4c/source/i18n/nfrule.h
index fda74fabf..2ae074cd8 100644
--- a/icu4c/source/i18n/nfrule.h
+++ b/icu4c/source/i18n/nfrule.h
@@ -66,6 +66,8 @@ public:
char16_t getDecimalPoint() const { return decimalPoint; }
int64_t getDivisor() const;
+
+ bool hasModulusSubstitution() const;
void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
void doFormat(double number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
@@ -117,6 +119,9 @@ private:
NFRule(const NFRule &other); // forbid copying of this class
NFRule &operator=(const NFRule &other); // forbid copying of this class
+
+ // TODO: temporary hack to allow MultiplierSubstitution to get to formatter's rounding mode
+ friend class MultiplierSubstitution;
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/nfsubs.cpp b/icu4c/source/i18n/nfsubs.cpp
index 5256b8a39..ecd3b7b68 100644
--- a/icu4c/source/i18n/nfsubs.cpp
+++ b/icu4c/source/i18n/nfsubs.cpp
@@ -73,6 +73,7 @@ SameValueSubstitution::~SameValueSubstitution() {}
class MultiplierSubstitution : public NFSubstitution {
int64_t divisor;
+ const NFRule* owningRule;
public:
MultiplierSubstitution(int32_t _pos,
@@ -80,7 +81,7 @@ public:
const NFRuleSet* _ruleSet,
const UnicodeString& description,
UErrorCode& status)
- : NFSubstitution(_pos, _ruleSet, description, status), divisor(rule->getDivisor())
+ : NFSubstitution(_pos, _ruleSet, description, status), divisor(rule->getDivisor()), owningRule(rule)
{
if (divisor == 0) {
status = U_PARSE_ERROR;
@@ -103,25 +104,22 @@ public:
}
virtual double transformNumber(double number) const override {
- bool doFloor = getRuleSet() != nullptr;
- if (!doFloor) {
- // This is a HACK that partially addresses ICU-22313. The original code wanted us to do
- // floor() on the result if we were passing it to another rule set, but not if we were passing
- // it to a DecimalFormat. But the DurationRules rule set has multiplier substitutions where
- // we DO want to do the floor() operation. What we REALLY want is to do floor() any time
- // the owning rule also has a ModulusSubsitution, but we don't have access to that information
- // here, so instead we're doing a floor() any time the DecimalFormat has maxFracDigits equal to
- // 0. This seems to work with our existing rule sets, but could be a problem in the future,
- // but the "real" fix for DurationRules isn't worth doing, since we're deprecating DurationRules
- // anyway. This is enough to keep it from being egregiously wrong, without obvious side
- // effects. --rtg 8/16/23
- const DecimalFormat* decimalFormat = getNumberFormat();
- if (decimalFormat == nullptr || decimalFormat->getMaximumFractionDigits() == 0) {
- doFloor = true;
- }
- }
-
- if (doFloor) {
+ // Most of the time, when a number is handled by an NFSubstitution, we do a floor() on it, but
+ // if a substitution uses a DecimalFormat to format the number instead of a ruleset, we generally
+ // don't want to do a floor()-- we want to keep the value intact so that the DecimalFormat can
+ // either include the fractional part or round properly. The big exception to this is here in
+ // MultiplierSubstitution. If the rule includes two substitutions, the MultiplierSubstitution
+ // (which is handling the larger part of the number) really _does_ want to do a floor(), because
+ // the ModulusSubstitution (which is handling the smaller part of the number) will take
+ // care of the fractional part. (Consider something like `1/12: <0< feet >0.0> inches;`.)
+ // But if there is no ModulusSubstitution, we're shortening the number in some way-- the "larger part"
+ // of the number is the only part we're keeping. Even if the DecimalFormat doesn't include the
+ // fractional part in its output, we still want it to round. (Consider something like `1/1000: <0<K;`.)
+ // (TODO: The kRoundFloor thing is a kludge to preserve the previous floor-always behavior. What we
+ // probably really want to do is just set the rounding mode on the DecimalFormat to match the rounding
+ // mode on the RuleBasedNumberFormat and then pass the number to it whole and let it do its own rounding.
+ // But before making that change, we'd have to make sure it didn't have undesirable side effects.)
+ if (getRuleSet() != nullptr || owningRule->hasModulusSubstitution() || owningRule->formatter->getRoundingMode() == NumberFormat::kRoundFloor) {
return uprv_floor(number / divisor);
} else {
return number / divisor;
@@ -598,17 +596,11 @@ NFSubstitution::doSubstitution(int64_t number, UnicodeString& toInsertInto, int3
ruleSet->format(transformNumber(number), toInsertInto, _pos + this->pos, recursionCount, status);
} else if (numberFormat != nullptr) {
if (number <= MAX_INT64_IN_DOUBLE) {
- // or perform the transformation on the number (preserving
- // the result's fractional part if the formatter it set
- // to show it), then use that formatter's format() method
+ // or perform the transformation on the number,
+ // then use that formatter's format() method
// to format the result
- double numberToFormat = transformNumber((double)number);
- if (numberFormat->getMaximumFractionDigits() == 0) {
- numberToFormat = uprv_floor(numberToFormat);
- }
-
UnicodeString temp;
- numberFormat->format(numberToFormat, temp, status);
+ numberFormat->format(transformNumber((double)number), temp, status);
toInsertInto.insert(_pos + this->pos, temp);
}
else {
diff --git a/icu4c/source/i18n/nortrans.cpp b/icu4c/source/i18n/nortrans.cpp
index d793433b3..e2452cd37 100644
--- a/icu4c/source/i18n/nortrans.cpp
+++ b/icu4c/source/i18n/nortrans.cpp
@@ -75,7 +75,7 @@ Transliterator* NormalizationTransliterator::_create(const UnicodeString& ID,
*/
NormalizationTransliterator::NormalizationTransliterator(const UnicodeString& id,
const Normalizer2 &norm2) :
- Transliterator(id, 0), fNorm2(norm2) {}
+ Transliterator(id, nullptr), fNorm2(norm2) {}
/**
* Destructor.
diff --git a/icu4c/source/i18n/nultrans.cpp b/icu4c/source/i18n/nultrans.cpp
index 439cc55d3..de128857e 100644
--- a/icu4c/source/i18n/nultrans.cpp
+++ b/icu4c/source/i18n/nultrans.cpp
@@ -20,7 +20,7 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(NullTransliterator)
-NullTransliterator::NullTransliterator() : Transliterator(UNICODE_STRING_SIMPLE("Any-Null"), 0) {}
+NullTransliterator::NullTransliterator() : Transliterator(UNICODE_STRING_SIMPLE("Any-Null"), nullptr) {}
NullTransliterator::~NullTransliterator() {}
diff --git a/icu4c/source/i18n/number_affixutils.h b/icu4c/source/i18n/number_affixutils.h
index 5cfde61ff..e59096546 100644
--- a/icu4c/source/i18n/number_affixutils.h
+++ b/icu4c/source/i18n/number_affixutils.h
@@ -14,8 +14,8 @@
#include "formatted_string_builder.h"
#include "unicode/uniset.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
enum AffixPatternState {
STATE_BASE = 0,
@@ -234,8 +234,7 @@ class U_I18N_API AffixUtils {
}
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_asformat.cpp b/icu4c/source/i18n/number_asformat.cpp
index 8f2314d68..aac765f3f 100644
--- a/icu4c/source/i18n/number_asformat.cpp
+++ b/icu4c/source/i18n/number_asformat.cpp
@@ -33,7 +33,7 @@ LocalizedNumberFormatterAsFormat::LocalizedNumberFormatterAsFormat(
LocalizedNumberFormatterAsFormat::~LocalizedNumberFormatterAsFormat() = default;
bool LocalizedNumberFormatterAsFormat::operator==(const Format& other) const {
- auto* _other = dynamic_cast<const LocalizedNumberFormatterAsFormat*>(&other);
+ const auto* _other = dynamic_cast<const LocalizedNumberFormatterAsFormat*>(&other);
if (_other == nullptr) {
return false;
}
diff --git a/icu4c/source/i18n/number_asformat.h b/icu4c/source/i18n/number_asformat.h
index f921b4294..f447e0c4b 100644
--- a/icu4c/source/i18n/number_asformat.h
+++ b/icu4c/source/i18n/number_asformat.h
@@ -18,8 +18,8 @@
#include "decNumber.h"
#include "charstr.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* A wrapper around LocalizedNumberFormatter implementing the Format interface, enabling improved
@@ -97,8 +97,7 @@ class U_I18N_API LocalizedNumberFormatterAsFormat : public Format {
Locale fLocale;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif // __NUMBER_ASFORMAT_H__
diff --git a/icu4c/source/i18n/number_capi.cpp b/icu4c/source/i18n/number_capi.cpp
index abada9ad8..b91a9760e 100644
--- a/icu4c/source/i18n/number_capi.cpp
+++ b/icu4c/source/i18n/number_capi.cpp
@@ -25,8 +25,7 @@ using namespace icu::number::impl;
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
/**
* Implementation class for UNumberFormatter. Wraps a LocalizedNumberFormatter.
@@ -84,8 +83,7 @@ void UFormattedNumberImpl::setTo(FormattedNumber value) {
fData = std::move(*value.fData);
}
-}
-}
+} // namespace number::impl
U_NAMESPACE_END
@@ -98,7 +96,7 @@ UPRV_FORMATTED_VALUE_CAPI_NO_IMPLTYPE_AUTO_IMPL(
const DecimalQuantity* icu::number::impl::validateUFormattedNumberToDecimalQuantity(
const UFormattedNumber* uresult, UErrorCode& status) {
- auto* result = UFormattedNumberApiHelper::validate(uresult, status);
+ const auto* result = UFormattedNumberApiHelper::validate(uresult, status);
if (U_FAILURE(status)) {
return nullptr;
}
@@ -311,12 +309,17 @@ usnum_setMinimumFractionDigits(USimpleNumber* unumber, int32_t minimumFractionDi
}
U_CAPI void U_EXPORT2
-usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec) {
+usnum_setMaximumIntegerDigits(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec) {
auto* number = USimpleNumberData::validate(unumber, *ec);
if (U_FAILURE(*ec)) {
return;
}
- number->fNumber.truncateStart(maximumIntegerDigits, *ec);
+ number->fNumber.setMaximumIntegerDigits(maximumIntegerDigits, *ec);
+}
+
+U_CAPI void U_EXPORT2
+usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec) {
+ usnum_setMaximumIntegerDigits(unumber, maximumIntegerDigits, ec);
}
U_CAPI void U_EXPORT2
@@ -357,7 +360,7 @@ usnumf_format(
USimpleNumber* unumber,
UFormattedNumber* uresult,
UErrorCode* ec) {
- auto* formatter = USimpleNumberFormatterData::validate(uformatter, *ec);
+ const auto* formatter = USimpleNumberFormatterData::validate(uformatter, *ec);
auto* number = USimpleNumberData::validate(unumber, *ec);
auto* result = UFormattedNumberApiHelper::validate(uresult, *ec);
if (U_FAILURE(*ec)) {
@@ -376,7 +379,7 @@ usnumf_formatInt64(
int64_t value,
UFormattedNumber* uresult,
UErrorCode* ec) {
- auto* formatter = USimpleNumberFormatterData::validate(uformatter, *ec);
+ const auto* formatter = USimpleNumberFormatterData::validate(uformatter, *ec);
auto* result = UFormattedNumberApiHelper::validate(uresult, *ec);
if (U_FAILURE(*ec)) {
return;
diff --git a/icu4c/source/i18n/number_compact.cpp b/icu4c/source/i18n/number_compact.cpp
index 2cfa65a03..63180f213 100644
--- a/icu4c/source/i18n/number_compact.cpp
+++ b/icu4c/source/i18n/number_compact.cpp
@@ -143,7 +143,7 @@ void CompactData::getUniquePatterns(UVector &output, UErrorCode &status) const {
U_ASSERT(output.isEmpty());
// NOTE: In C++, this is done more manually with a UVector.
// In Java, we can take advantage of JDK HashSet.
- for (auto pattern : patterns) {
+ for (const auto* pattern : patterns) {
if (pattern == nullptr || pattern == USE_FALLBACK) {
continue;
}
@@ -279,7 +279,7 @@ void CompactHandler::precomputeAllModifiers(MutablePatternModifier &buildReferen
}
for (int32_t i = 0; i < precomputedModsLength; i++) {
- auto patternString = static_cast<const char16_t *>(allPatterns[i]);
+ const auto* patternString = static_cast<const char16_t*>(allPatterns[i]);
UnicodeString hello(patternString);
CompactModInfo &info = precomputedMods[i];
ParsedPatternInfo patternInfo;
diff --git a/icu4c/source/i18n/number_compact.h b/icu4c/source/i18n/number_compact.h
index aee1df745..95896c029 100644
--- a/icu4c/source/i18n/number_compact.h
+++ b/icu4c/source/i18n/number_compact.h
@@ -14,8 +14,8 @@
#include "resource.h"
#include "number_patternmodifier.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
static const int32_t COMPACT_MAX_DIGITS = 20;
@@ -90,9 +90,7 @@ class CompactHandler : public MicroPropsGenerator, public UMemory {
void precomputeAllModifiers(MutablePatternModifier &buildReference, UErrorCode &status);
};
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_COMPACT_H__
diff --git a/icu4c/source/i18n/number_currencysymbols.cpp b/icu4c/source/i18n/number_currencysymbols.cpp
index 8d5127556..7687efbbc 100644
--- a/icu4c/source/i18n/number_currencysymbols.cpp
+++ b/icu4c/source/i18n/number_currencysymbols.cpp
@@ -126,7 +126,7 @@ icu::number::impl::resolveCurrency(const DecimalFormatProperties& properties, co
return CurrencyUnit(buf, status);
} else {
// Default currency (XXX)
- return CurrencyUnit();
+ return {};
}
}
}
diff --git a/icu4c/source/i18n/number_currencysymbols.h b/icu4c/source/i18n/number_currencysymbols.h
index c2223bd0f..13b9a9691 100644
--- a/icu4c/source/i18n/number_currencysymbols.h
+++ b/icu4c/source/i18n/number_currencysymbols.h
@@ -11,9 +11,8 @@
#include "charstr.h"
#include "number_decimfmtprops.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace number::impl {
// Exported as U_I18N_API for tests
class U_I18N_API CurrencySymbols : public UMemory {
@@ -62,9 +61,7 @@ class U_I18N_API CurrencySymbols : public UMemory {
CurrencyUnit
resolveCurrency(const DecimalFormatProperties& properties, const Locale& locale, UErrorCode& status);
-
-} // namespace impl
-} // namespace numparse
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMBER_CURRENCYSYMBOLS_H__
diff --git a/icu4c/source/i18n/number_decimalquantity.cpp b/icu4c/source/i18n/number_decimalquantity.cpp
index 659465d08..227ead4e2 100644
--- a/icu4c/source/i18n/number_decimalquantity.cpp
+++ b/icu4c/source/i18n/number_decimalquantity.cpp
@@ -44,7 +44,7 @@ inline int32_t safeSubtract(int32_t a, int32_t b) {
return diff;
}
-static double DOUBLE_MULTIPLIERS[] = {
+double DOUBLE_MULTIPLIERS[] = {
1e0,
1e1,
1e2,
@@ -131,18 +131,24 @@ void DecimalQuantity::clear() {
setBcdToZero(); // sets scale, precision, hasDouble, origDouble, origDelta, and BCD data
}
-void DecimalQuantity::setMinInteger(int32_t minInt) {
+void DecimalQuantity::decreaseMinIntegerTo(int32_t minInt) {
+ // Validation should happen outside of DecimalQuantity, e.g., in the Precision class.
+ U_ASSERT(minInt >= 0);
+
+ if (lReqPos > minInt) {
+ lReqPos = minInt;
+ }
+}
+
+void DecimalQuantity::increaseMinIntegerTo(int32_t minInt) {
// Validation should happen outside of DecimalQuantity, e.g., in the Precision class.
U_ASSERT(minInt >= 0);
// Special behavior: do not set minInt to be less than what is already set.
// This is so significant digits rounding can set the integer length.
- if (minInt < lReqPos) {
- minInt = lReqPos;
+ if (lReqPos < minInt) {
+ lReqPos = minInt;
}
-
- // Save values into internal state
- lReqPos = minInt;
}
void DecimalQuantity::setMinFraction(int32_t minFrac) {
@@ -1322,7 +1328,7 @@ void DecimalQuantity::ensureCapacity(int32_t capacity) {
// Initialize the byte array to zeros (this is done automatically in Java)
uprv_memset(fBCD.bcdBytes.ptr, 0, capacity * sizeof(int8_t));
} else if (oldCapacity < capacity) {
- auto bcd1 = static_cast<int8_t*>(uprv_malloc(capacity * 2 * sizeof(int8_t)));
+ auto* bcd1 = static_cast<int8_t*>(uprv_malloc(capacity * 2 * sizeof(int8_t)));
uprv_memcpy(bcd1, fBCD.bcdBytes.ptr, oldCapacity * sizeof(int8_t));
// Initialize the rest of the byte array to zeros (this is done automatically in Java)
uprv_memset(bcd1 + oldCapacity, 0, (capacity - oldCapacity) * sizeof(int8_t));
diff --git a/icu4c/source/i18n/number_decimalquantity.h b/icu4c/source/i18n/number_decimalquantity.h
index 2211fe9c1..2303186c6 100644
--- a/icu4c/source/i18n/number_decimalquantity.h
+++ b/icu4c/source/i18n/number_decimalquantity.h
@@ -13,8 +13,8 @@
#include "plurrule_impl.h"
#include "number_types.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
// Forward-declare (maybe don't want number_utils.h included here):
class DecNum;
@@ -53,12 +53,20 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
DecimalQuantity &operator=(DecimalQuantity&& src) noexcept;
/**
+ * If the minimum integer digits are greater than `minInt`,
+ * sets it to `minInt`.
+ *
+ * @param minInt The minimum number of integer digits.
+ */
+ void decreaseMinIntegerTo(int32_t minInt);
+
+ /**
* Sets the minimum integer digits that this {@link DecimalQuantity} should generate.
* This method does not perform rounding.
*
* @param minInt The minimum number of integer digits.
*/
- void setMinInteger(int32_t minInt);
+ void increaseMinIntegerTo(int32_t minInt);
/**
* Sets the minimum fraction digits that this {@link DecimalQuantity} should generate.
@@ -549,8 +557,7 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
void switchStorage();
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_decimfmtprops.h b/icu4c/source/i18n/number_decimfmtprops.h
index 5f72f6498..6cf4b4c10 100644
--- a/icu4c/source/i18n/number_decimfmtprops.h
+++ b/icu4c/source/i18n/number_decimfmtprops.h
@@ -33,8 +33,7 @@ template class U_I18N_API LocalPointer<CurrencyPluralInfo>;
#endif
#endif
-namespace number {
-namespace impl {
+namespace number::impl {
// Exported as U_I18N_API because it is a public member field of exported DecimalFormatProperties
// Using this wrapper is rather unfortunate, but is needed on Windows platforms in order to allow
@@ -166,8 +165,8 @@ struct U_I18N_API DecimalFormatProperties : public UMemory {
bool _equals(const DecimalFormatProperties& other, bool ignoreForFastFormat) const;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
+
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_decnum.h b/icu4c/source/i18n/number_decnum.h
index 94a0b31bc..2bf9fd39c 100644
--- a/icu4c/source/i18n/number_decnum.h
+++ b/icu4c/source/i18n/number_decnum.h
@@ -22,8 +22,7 @@ U_NAMESPACE_BEGIN
template class U_I18N_API MaybeStackHeaderAndArray<decNumber, char, DECNUM_INITIAL_CAPACITY>;
#endif
-namespace number {
-namespace impl {
+namespace number::impl {
/** A very thin C++ wrapper around decNumber.h */
// Exported as U_I18N_API for tests
@@ -84,8 +83,7 @@ class U_I18N_API DecNum : public UMemory {
void _setTo(const char* str, int32_t maxDigits, UErrorCode& status);
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_fluent.cpp b/icu4c/source/i18n/number_fluent.cpp
index 45d6b06c6..0ce01c854 100644
--- a/icu4c/source/i18n/number_fluent.cpp
+++ b/icu4c/source/i18n/number_fluent.cpp
@@ -430,6 +430,14 @@ UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const NFS<UNF>& other)
// No additional fields to assign
}
+UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const impl::MacroProps &macros) {
+ fMacros = macros;
+}
+
+UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(impl::MacroProps &&macros) {
+ fMacros = macros;
+}
+
// Make default copy constructor call the NumberFormatterSettings copy constructor.
UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UNF&& src) noexcept
: UNF(static_cast<NFS<UNF>&&>(src)) {}
@@ -565,7 +573,7 @@ LocalizedNumberFormatter UnlocalizedNumberFormatter::locale(const Locale& locale
FormattedNumber LocalizedNumberFormatter::formatInt(int64_t value, UErrorCode& status) const {
if (U_FAILURE(status)) { return FormattedNumber(U_ILLEGAL_ARGUMENT_ERROR); }
- auto results = new UFormattedNumberData();
+ auto* results = new UFormattedNumberData();
if (results == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return FormattedNumber(status);
@@ -584,7 +592,7 @@ FormattedNumber LocalizedNumberFormatter::formatInt(int64_t value, UErrorCode& s
FormattedNumber LocalizedNumberFormatter::formatDouble(double value, UErrorCode& status) const {
if (U_FAILURE(status)) { return FormattedNumber(U_ILLEGAL_ARGUMENT_ERROR); }
- auto results = new UFormattedNumberData();
+ auto* results = new UFormattedNumberData();
if (results == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return FormattedNumber(status);
@@ -603,7 +611,7 @@ FormattedNumber LocalizedNumberFormatter::formatDouble(double value, UErrorCode&
FormattedNumber LocalizedNumberFormatter::formatDecimal(StringPiece value, UErrorCode& status) const {
if (U_FAILURE(status)) { return FormattedNumber(U_ILLEGAL_ARGUMENT_ERROR); }
- auto results = new UFormattedNumberData();
+ auto* results = new UFormattedNumberData();
if (results == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return FormattedNumber(status);
@@ -623,7 +631,7 @@ FormattedNumber LocalizedNumberFormatter::formatDecimal(StringPiece value, UErro
FormattedNumber
LocalizedNumberFormatter::formatDecimalQuantity(const DecimalQuantity& dq, UErrorCode& status) const {
if (U_FAILURE(status)) { return FormattedNumber(U_ILLEGAL_ARGUMENT_ERROR); }
- auto results = new UFormattedNumberData();
+ auto* results = new UFormattedNumberData();
if (results == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return FormattedNumber(status);
@@ -726,6 +734,18 @@ int32_t LocalizedNumberFormatter::getCallCount() const {
// Note: toFormat defined in number_asformat.cpp
+UnlocalizedNumberFormatter LocalizedNumberFormatter::withoutLocale() const & {
+ MacroProps macros(fMacros);
+ macros.locale = Locale();
+ return UnlocalizedNumberFormatter(macros);
+}
+
+UnlocalizedNumberFormatter LocalizedNumberFormatter::withoutLocale() && {
+ MacroProps macros(std::move(fMacros));
+ macros.locale = Locale();
+ return UnlocalizedNumberFormatter(std::move(macros));
+}
+
const DecimalFormatSymbols* LocalizedNumberFormatter::getDecimalFormatSymbols() const {
return fMacros.symbols.getDecimalFormatSymbols();
}
diff --git a/icu4c/source/i18n/number_formatimpl.cpp b/icu4c/source/i18n/number_formatimpl.cpp
index 53bac49a5..45baa9461 100644
--- a/icu4c/source/i18n/number_formatimpl.cpp
+++ b/icu4c/source/i18n/number_formatimpl.cpp
@@ -229,7 +229,7 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
return nullptr;
}
}
- auto patternInfo = new ParsedPatternInfo();
+ auto* patternInfo = new ParsedPatternInfo();
if (patternInfo == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
@@ -252,12 +252,12 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
status = U_ILLEGAL_ARGUMENT_ERROR;
return nullptr;
}
- auto usagePrefsHandler =
+ auto* usagePrefsHandler =
new UsagePrefsHandler(macros.locale, macros.unit, macros.usage.fValue, chain, status);
fUsagePrefsHandler.adoptInsteadAndCheckErrorCode(usagePrefsHandler, status);
chain = fUsagePrefsHandler.getAlias();
} else if (isMixedUnit) {
- auto unitConversionHandler = new UnitConversionHandler(macros.unit, chain, status);
+ auto* unitConversionHandler = new UnitConversionHandler(macros.unit, chain, status);
fUnitConversionHandler.adoptInsteadAndCheckErrorCode(unitConversionHandler, status);
chain = fUnitConversionHandler.getAlias();
}
@@ -333,7 +333,8 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
// Inner modifier (scientific notation)
if (macros.notation.fType == Notation::NTN_SCIENTIFIC) {
- auto newScientificHandler = new ScientificHandler(&macros.notation, fMicros.simple.symbols, chain);
+ auto* newScientificHandler =
+ new ScientificHandler(&macros.notation, fMicros.simple.symbols, chain);
if (newScientificHandler == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
@@ -346,7 +347,7 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
}
// Middle modifier (patterns, positive/negative, currency symbols, percent)
- auto patternModifier = new MutablePatternModifier(false);
+ auto* patternModifier = new MutablePatternModifier(false);
if (patternModifier == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
@@ -444,7 +445,7 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
if (isCompactNotation) {
CompactType compactType = (isCurrency && unitWidth != UNUM_UNIT_WIDTH_FULL_NAME)
? CompactType::TYPE_CURRENCY : CompactType::TYPE_DECIMAL;
- auto newCompactHandler = new CompactHandler(
+ auto* newCompactHandler = new CompactHandler(
macros.notation.fUnion.compactStyle,
macros.locale,
nsName,
diff --git a/icu4c/source/i18n/number_formatimpl.h b/icu4c/source/i18n/number_formatimpl.h
index 62d532126..ba979d8bd 100644
--- a/icu4c/source/i18n/number_formatimpl.h
+++ b/icu4c/source/i18n/number_formatimpl.h
@@ -18,8 +18,8 @@
#include "number_microprops.h"
#include "number_utypes.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* This is the "brain" of the number formatting pipeline. It ties all the pieces together, taking in a MacroProps and a
@@ -170,8 +170,7 @@ class NumberFormatterImpl : public UMemory {
UErrorCode &status);
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_integerwidth.cpp b/icu4c/source/i18n/number_integerwidth.cpp
index 10b853423..a0fc2b192 100644
--- a/icu4c/source/i18n/number_integerwidth.cpp
+++ b/icu4c/source/i18n/number_integerwidth.cpp
@@ -46,14 +46,14 @@ void IntegerWidth::apply(impl::DecimalQuantity& quantity, UErrorCode& status) co
if (fHasError) {
status = U_ILLEGAL_ARGUMENT_ERROR;
} else if (fUnion.minMaxInt.fMaxInt == -1) {
- quantity.setMinInteger(fUnion.minMaxInt.fMinInt);
+ quantity.increaseMinIntegerTo(fUnion.minMaxInt.fMinInt);
} else {
// Enforce the backwards-compatibility feature "FormatFailIfMoreThanMaxDigits"
if (fUnion.minMaxInt.fFormatFailIfMoreThanMaxDigits &&
fUnion.minMaxInt.fMaxInt < quantity.getMagnitude()) {
status = U_ILLEGAL_ARGUMENT_ERROR;
}
- quantity.setMinInteger(fUnion.minMaxInt.fMinInt);
+ quantity.increaseMinIntegerTo(fUnion.minMaxInt.fMinInt);
quantity.applyMaxInteger(fUnion.minMaxInt.fMaxInt);
}
}
diff --git a/icu4c/source/i18n/number_longnames.cpp b/icu4c/source/i18n/number_longnames.cpp
index 96c6ca6bf..4ef4efd70 100644
--- a/icu4c/source/i18n/number_longnames.cpp
+++ b/icu4c/source/i18n/number_longnames.cpp
@@ -89,7 +89,7 @@ const char *getGenderString(UnicodeString uGender, UErrorCode status) {
}
// Returns the array index that corresponds to the given pluralKeyword.
-static int32_t getIndex(const char* pluralKeyword, UErrorCode& status) {
+int32_t getIndex(const char* pluralKeyword, UErrorCode& status) {
// pluralKeyword can also be "dnam", "per", or "gender"
switch (*pluralKeyword) {
case 'd':
@@ -119,7 +119,7 @@ static int32_t getIndex(const char* pluralKeyword, UErrorCode& status) {
//
// The `strings` array must have ARRAY_LENGTH items: one corresponding to each
// of the plural forms, plus a display name ("dnam") and a "per" form.
-static UnicodeString getWithPlural(
+UnicodeString getWithPlural(
const UnicodeString* strings,
StandardPlural::Form plural,
UErrorCode& status) {
diff --git a/icu4c/source/i18n/number_longnames.h b/icu4c/source/i18n/number_longnames.h
index 56d8c9b24..ef1ce7410 100644
--- a/icu4c/source/i18n/number_longnames.h
+++ b/icu4c/source/i18n/number_longnames.h
@@ -13,8 +13,8 @@
#include "number_utils.h"
#include "number_modifiers.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
// LongNameHandler takes care of formatting currency and measurement unit names,
// as well as populating the gender of measure units.
@@ -263,8 +263,7 @@ class LongNameMultiplexer : public MicroPropsGenerator, public UMemory {
}
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_LONGNAMES_H__
diff --git a/icu4c/source/i18n/number_mapper.h b/icu4c/source/i18n/number_mapper.h
index c01607e56..fc5617cb4 100644
--- a/icu4c/source/i18n/number_mapper.h
+++ b/icu4c/source/i18n/number_mapper.h
@@ -16,9 +16,7 @@
#include "numparse_impl.h"
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
-
+namespace number::impl {
class AutoAffixPatternProvider;
class CurrencyPluralInfoAffixProvider;
@@ -142,9 +140,9 @@ class AutoAffixPatternProvider {
}
inline void setTo(const AffixPatternProvider* provider, UErrorCode& status) {
- if (auto ptr = dynamic_cast<const PropertiesAffixPatternProvider*>(provider)) {
+ if (const auto* ptr = dynamic_cast<const PropertiesAffixPatternProvider*>(provider)) {
propertiesAPP = *ptr;
- } else if (auto ptr = dynamic_cast<const CurrencyPluralInfoAffixProvider*>(provider)) {
+ } else if (const auto* ptr = dynamic_cast<const CurrencyPluralInfoAffixProvider*>(provider)) {
currencyPluralInfoAPP = *ptr;
} else {
status = U_INTERNAL_PROGRAM_ERROR;
@@ -257,9 +255,7 @@ class NumberPropertyMapper {
DecimalFormatProperties* exportedProperties, UErrorCode& status);
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_MAPPER_H__
diff --git a/icu4c/source/i18n/number_microprops.h b/icu4c/source/i18n/number_microprops.h
index 18addaae0..6d58bc3c3 100644
--- a/icu4c/source/i18n/number_microprops.h
+++ b/icu4c/source/i18n/number_microprops.h
@@ -20,8 +20,8 @@
#include "charstr.h"
#include "util.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* A copyable container for the integer values of mixed unit measurements.
@@ -188,8 +188,7 @@ struct MicroProps : public MicroPropsGenerator {
bool exhausted = false;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif // __NUMBER_MICROPROPS_H__
diff --git a/icu4c/source/i18n/number_modifiers.cpp b/icu4c/source/i18n/number_modifiers.cpp
index 0f6fdafb0..9982a715b 100644
--- a/icu4c/source/i18n/number_modifiers.cpp
+++ b/icu4c/source/i18n/number_modifiers.cpp
@@ -60,6 +60,41 @@ Modifier::Parameters::Parameters(
const ModifierStore* _obj, Signum _signum, StandardPlural::Form _plural)
: obj(_obj), signum(_signum), plural(_plural) {}
+bool Modifier::semanticallyEquivalent(const Modifier& other) const {
+ Parameters paramsThis;
+ Parameters paramsOther;
+ getParameters(paramsThis);
+ other.getParameters(paramsOther);
+ if (paramsThis.obj == nullptr && paramsOther.obj == nullptr) {
+ return strictEquals(other);
+ } else if (paramsThis.obj == nullptr || paramsOther.obj == nullptr) {
+ return false;
+ }
+ for (size_t i=0; i<SIGNUM_COUNT; i++) {
+ auto signum = static_cast<Signum>(i);
+ for (size_t j=0; j<StandardPlural::COUNT; j++) {
+ auto plural = static_cast<StandardPlural::Form>(j);
+ const auto* mod1 = paramsThis.obj->getModifier(signum, plural);
+ const auto* mod2 = paramsOther.obj->getModifier(signum, plural);
+ if (mod1 == mod2) {
+ // Equal pointers
+ continue;
+ } else if (mod1 == nullptr || mod2 == nullptr) {
+ // One pointer is null but not the other
+ return false;
+ } else if (!mod1->strictEquals(*mod2)) {
+ // The modifiers are NOT equivalent
+ return false;
+ } else {
+ // The modifiers are equivalent
+ continue;
+ }
+ }
+ }
+ return true;
+}
+
+
ModifierStore::~ModifierStore() = default;
AdoptingSignumModifierStore::~AdoptingSignumModifierStore() {
@@ -110,8 +145,8 @@ void ConstantAffixModifier::getParameters(Parameters& output) const {
UPRV_UNREACHABLE_EXIT;
}
-bool ConstantAffixModifier::semanticallyEquivalent(const Modifier& other) const {
- auto* _other = dynamic_cast<const ConstantAffixModifier*>(&other);
+bool ConstantAffixModifier::strictEquals(const Modifier& other) const {
+ const auto* _other = dynamic_cast<const ConstantAffixModifier*>(&other);
if (_other == nullptr) {
return false;
}
@@ -197,14 +232,11 @@ void SimpleModifier::getParameters(Parameters& output) const {
output = fParameters;
}
-bool SimpleModifier::semanticallyEquivalent(const Modifier& other) const {
- auto* _other = dynamic_cast<const SimpleModifier*>(&other);
+bool SimpleModifier::strictEquals(const Modifier& other) const {
+ const auto* _other = dynamic_cast<const SimpleModifier*>(&other);
if (_other == nullptr) {
return false;
}
- if (fParameters.obj != nullptr) {
- return fParameters.obj == _other->fParameters.obj;
- }
return fCompiledPattern == _other->fCompiledPattern
&& fField == _other->fField
&& fStrong == _other->fStrong;
@@ -327,14 +359,11 @@ void ConstantMultiFieldModifier::getParameters(Parameters& output) const {
output = fParameters;
}
-bool ConstantMultiFieldModifier::semanticallyEquivalent(const Modifier& other) const {
- auto* _other = dynamic_cast<const ConstantMultiFieldModifier*>(&other);
+bool ConstantMultiFieldModifier::strictEquals(const Modifier& other) const {
+ const auto* _other = dynamic_cast<const ConstantMultiFieldModifier*>(&other);
if (_other == nullptr) {
return false;
}
- if (fParameters.obj != nullptr) {
- return fParameters.obj == _other->fParameters.obj;
- }
return fPrefix.contentEquals(_other->fPrefix)
&& fSuffix.contentEquals(_other->fSuffix)
&& fOverwrite == _other->fOverwrite
@@ -469,7 +498,7 @@ CurrencySpacingEnabledModifier::getUnicodeSet(const DecimalFormatSymbols &symbol
// Ensure the static defaults are initialized:
umtx_initOnce(gDefaultCurrencySpacingInitOnce, &initDefaultCurrencySpacing, status);
if (U_FAILURE(status)) {
- return UnicodeSet();
+ return {};
}
const UnicodeString& pattern = symbols.getPatternForCurrencySpacing(
diff --git a/icu4c/source/i18n/number_modifiers.h b/icu4c/source/i18n/number_modifiers.h
index da6956bcf..1afee495d 100644
--- a/icu4c/source/i18n/number_modifiers.h
+++ b/icu4c/source/i18n/number_modifiers.h
@@ -15,8 +15,8 @@
#include "formatted_string_builder.h"
#include "number_types.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* The canonical implementation of {@link Modifier}, containing a prefix and suffix string.
@@ -41,7 +41,7 @@ class U_I18N_API ConstantAffixModifier : public Modifier, public UObject {
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
private:
UnicodeString fPrefix;
@@ -77,7 +77,7 @@ class U_I18N_API SimpleModifier : public Modifier, public UMemory {
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
/**
* TODO: This belongs in SimpleFormatterImpl. The only reason I haven't moved it there yet is because
@@ -170,7 +170,7 @@ class U_I18N_API ConstantMultiFieldModifier : public Modifier, public UMemory {
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
protected:
// NOTE: In Java, these are stored as array pointers. In C++, the FormattedStringBuilder is stored by
@@ -264,7 +264,7 @@ class U_I18N_API EmptyModifier : public Modifier, public UMemory {
output.obj = nullptr;
}
- bool semanticallyEquivalent(const Modifier& other) const override {
+ bool strictEquals(const Modifier& other) const override {
return other.getCodePointCount() == 0;
}
@@ -350,8 +350,7 @@ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory {
AdoptingSignumModifierStore mods[StandardPlural::COUNT] = {};
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_multiplier.cpp b/icu4c/source/i18n/number_multiplier.cpp
index dd5b3f8e0..e6bc2a1e3 100644
--- a/icu4c/source/i18n/number_multiplier.cpp
+++ b/icu4c/source/i18n/number_multiplier.cpp
@@ -66,9 +66,7 @@ Scale::Scale(Scale&& src) noexcept
Scale& Scale::operator=(Scale&& src) noexcept {
fMagnitude = src.fMagnitude;
- if (fArbitrary != nullptr) {
- delete fArbitrary;
- }
+ delete fArbitrary;
fArbitrary = src.fArbitrary;
fError = src.fError;
// Take ownership away from src if necessary
diff --git a/icu4c/source/i18n/number_multiplier.h b/icu4c/source/i18n/number_multiplier.h
index c752935b7..62b04778e 100644
--- a/icu4c/source/i18n/number_multiplier.h
+++ b/icu4c/source/i18n/number_multiplier.h
@@ -10,9 +10,8 @@
#include "numparse_types.h"
#include "number_decimfmtprops.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* Wraps a {@link Multiplier} for use in the number formatting pipeline.
@@ -48,9 +47,7 @@ static inline Scale scaleFromProperties(const DecimalFormatProperties& propertie
}
}
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMBER_MULTIPLIER_H__
diff --git a/icu4c/source/i18n/number_patternmodifier.cpp b/icu4c/source/i18n/number_patternmodifier.cpp
index 6f398c6ac..a5a215570 100644
--- a/icu4c/source/i18n/number_patternmodifier.cpp
+++ b/icu4c/source/i18n/number_patternmodifier.cpp
@@ -85,7 +85,7 @@ ImmutablePatternModifier* MutablePatternModifier::createImmutable(UErrorCode& st
StandardPlural::Form::MANY,
StandardPlural::Form::OTHER};
- auto pm = new AdoptingModifierStore();
+ auto* pm = new AdoptingModifierStore();
if (pm == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
@@ -176,7 +176,7 @@ void MutablePatternModifier::processQuantity(DecimalQuantity& fq, MicroProps& mi
}
// The unsafe code path performs self-mutation, so we need a const_cast.
// This method needs to be const because it overrides a const method in the parent class.
- auto nonConstThis = const_cast<MutablePatternModifier*>(this);
+ auto* nonConstThis = const_cast<MutablePatternModifier*>(this);
if (needsPlurals()) {
StandardPlural::Form pluralForm = utils::getPluralSafe(micros.rounder, fRules, fq, status);
nonConstThis->setNumberProperties(fq.signum(), pluralForm);
@@ -190,7 +190,7 @@ int32_t MutablePatternModifier::apply(FormattedStringBuilder& output, int32_t le
UErrorCode& status) const {
// The unsafe code path performs self-mutation, so we need a const_cast.
// This method needs to be const because it overrides a const method in the parent class.
- auto nonConstThis = const_cast<MutablePatternModifier*>(this);
+ auto* nonConstThis = const_cast<MutablePatternModifier*>(this);
int32_t prefixLen = nonConstThis->insertPrefix(output, leftIndex, status);
int32_t suffixLen = nonConstThis->insertSuffix(output, rightIndex + prefixLen, status);
// If the pattern had no decimal stem body (like #,##0.00), overwrite the value.
@@ -219,7 +219,7 @@ int32_t MutablePatternModifier::apply(FormattedStringBuilder& output, int32_t le
int32_t MutablePatternModifier::getPrefixLength() const {
// The unsafe code path performs self-mutation, so we need a const_cast.
// This method needs to be const because it overrides a const method in the parent class.
- auto nonConstThis = const_cast<MutablePatternModifier*>(this);
+ auto* nonConstThis = const_cast<MutablePatternModifier*>(this);
// Enter and exit CharSequence Mode to get the length.
UErrorCode status = U_ZERO_ERROR; // status fails only with an iilegal argument exception
@@ -231,7 +231,7 @@ int32_t MutablePatternModifier::getPrefixLength() const {
int32_t MutablePatternModifier::getCodePointCount() const {
// The unsafe code path performs self-mutation, so we need a const_cast.
// This method needs to be const because it overrides a const method in the parent class.
- auto nonConstThis = const_cast<MutablePatternModifier*>(this);
+ auto* nonConstThis = const_cast<MutablePatternModifier*>(this);
// Render the affixes to get the length
UErrorCode status = U_ZERO_ERROR; // status fails only with an iilegal argument exception
@@ -258,7 +258,7 @@ void MutablePatternModifier::getParameters(Parameters& output) const {
UPRV_UNREACHABLE_EXIT;
}
-bool MutablePatternModifier::semanticallyEquivalent(const Modifier& other) const {
+bool MutablePatternModifier::strictEquals(const Modifier& other) const {
(void)other;
// This method is not currently used.
UPRV_UNREACHABLE_EXIT;
@@ -334,7 +334,7 @@ UnicodeString MutablePatternModifier::getCurrencySymbolForUnitWidth(UErrorCode&
case UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT:
return fCurrencySymbols.getVariantCurrencySymbol(status);
case UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN:
- return UnicodeString();
+ return {};
default:
return fCurrencySymbols.getCurrencySymbol(status);
}
diff --git a/icu4c/source/i18n/number_patternmodifier.h b/icu4c/source/i18n/number_patternmodifier.h
index ee38c20c9..4cae16004 100644
--- a/icu4c/source/i18n/number_patternmodifier.h
+++ b/icu4c/source/i18n/number_patternmodifier.h
@@ -33,8 +33,7 @@ template class U_I18N_API LocalPointer<number::impl::AdoptingModifierStore>;
#endif
#endif
-namespace number {
-namespace impl {
+namespace number::impl {
// Forward declaration
class MutablePatternModifier;
@@ -191,7 +190,7 @@ class U_I18N_API MutablePatternModifier
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
/**
* Returns the string that substitutes a given symbol type in a pattern.
@@ -255,9 +254,8 @@ class U_I18N_API MutablePatternModifier
void prepareAffix(bool isPrefix);
};
+} // namespace number::impl
-} // namespace impl
-} // namespace number
U_NAMESPACE_END
#endif //__NUMBER_PATTERNMODIFIER_H__
diff --git a/icu4c/source/i18n/number_patternstring.cpp b/icu4c/source/i18n/number_patternstring.cpp
index aa082be5a..75e506208 100644
--- a/icu4c/source/i18n/number_patternstring.cpp
+++ b/icu4c/source/i18n/number_patternstring.cpp
@@ -66,7 +66,7 @@ int32_t ParsedPatternInfo::getLengthFromEndpoints(const Endpoints& endpoints) {
UnicodeString ParsedPatternInfo::getString(int32_t flags) const {
const Endpoints& endpoints = getEndpoints(flags);
if (endpoints.start == endpoints.end) {
- return UnicodeString();
+ return {};
}
// Create a new UnicodeString
return UnicodeString(pattern, endpoints.start, endpoints.end - endpoints.start);
@@ -768,7 +768,7 @@ UnicodeString PatternStringUtils::propertiesToPatternString(const DecimalFormatP
incrementQuantity.roundToInfinity();
digitsStringScale = incrementQuantity.getLowerDisplayMagnitude();
incrementQuantity.adjustMagnitude(-digitsStringScale);
- incrementQuantity.setMinInteger(minInt - digitsStringScale);
+ incrementQuantity.increaseMinIntegerTo(minInt - digitsStringScale);
UnicodeString str = incrementQuantity.toPlainString();
if (str.charAt(0) == u'-') {
// TODO: Unsupported operation exception or fail silently?
diff --git a/icu4c/source/i18n/number_patternstring.h b/icu4c/source/i18n/number_patternstring.h
index 989d0d346..2b3ab02be 100644
--- a/icu4c/source/i18n/number_patternstring.h
+++ b/icu4c/source/i18n/number_patternstring.h
@@ -16,8 +16,8 @@
#include "number_decimfmtprops.h"
#include "number_affixutils.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
// Forward declaration
class PatternParser;
@@ -330,8 +330,7 @@ class U_I18N_API PatternStringUtils {
UErrorCode& status);
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_rounding.cpp b/icu4c/source/i18n/number_rounding.cpp
index e6bb509ff..8f1aa453a 100644
--- a/icu4c/source/i18n/number_rounding.cpp
+++ b/icu4c/source/i18n/number_rounding.cpp
@@ -437,7 +437,7 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
uprv_max(0, -getDisplayMagnitudeSignificant(value, fPrecision.fUnion.fracSig.fMinSig));
// Make sure that digits are displayed on zero.
if (value.isZeroish() && fPrecision.fUnion.fracSig.fMinSig > 0) {
- value.setMinInteger(1);
+ value.increaseMinIntegerTo(1);
}
break;
diff --git a/icu4c/source/i18n/number_roundingutils.h b/icu4c/source/i18n/number_roundingutils.h
index 665712725..08c62dd6a 100644
--- a/icu4c/source/i18n/number_roundingutils.h
+++ b/icu4c/source/i18n/number_roundingutils.h
@@ -11,8 +11,7 @@
#include "string_segment.h"
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
namespace roundingutils {
enum Section {
@@ -238,8 +237,7 @@ class RoundingImpl {
*/
void parseIncrementOption(const StringSegment &segment, Precision &outPrecision, UErrorCode &status);
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_ROUNDINGUTILS_H__
diff --git a/icu4c/source/i18n/number_scientific.cpp b/icu4c/source/i18n/number_scientific.cpp
index d365d982d..f7c5434b7 100644
--- a/icu4c/source/i18n/number_scientific.cpp
+++ b/icu4c/source/i18n/number_scientific.cpp
@@ -104,8 +104,8 @@ void ScientificModifier::getParameters(Parameters& output) const {
output.obj = nullptr;
}
-bool ScientificModifier::semanticallyEquivalent(const Modifier& other) const {
- auto* _other = dynamic_cast<const ScientificModifier*>(&other);
+bool ScientificModifier::strictEquals(const Modifier& other) const {
+ const auto* _other = dynamic_cast<const ScientificModifier*>(&other);
if (_other == nullptr) {
return false;
}
diff --git a/icu4c/source/i18n/number_scientific.h b/icu4c/source/i18n/number_scientific.h
index 22140a09a..60122b155 100644
--- a/icu4c/source/i18n/number_scientific.h
+++ b/icu4c/source/i18n/number_scientific.h
@@ -9,8 +9,8 @@
#include "number_types.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
// Forward-declare
class ScientificHandler;
@@ -34,7 +34,7 @@ class U_I18N_API ScientificModifier : public UMemory, public Modifier {
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
private:
int32_t fExponent;
@@ -59,8 +59,7 @@ class ScientificHandler : public UMemory, public MicroPropsGenerator, public Mul
friend class ScientificModifier;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_SCIENTIFIC_H__
diff --git a/icu4c/source/i18n/number_simple.cpp b/icu4c/source/i18n/number_simple.cpp
index a2af6be42..7daeb66dc 100644
--- a/icu4c/source/i18n/number_simple.cpp
+++ b/icu4c/source/i18n/number_simple.cpp
@@ -20,12 +20,12 @@ using namespace icu::number::impl;
SimpleNumber
SimpleNumber::forInt64(int64_t value, UErrorCode& status) {
if (U_FAILURE(status)) {
- return SimpleNumber();
+ return {};
}
- auto results = new UFormattedNumberData();
+ auto* results = new UFormattedNumberData();
if (results == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return SimpleNumber();
+ return {};
}
results->quantity.setToLong(value);
return SimpleNumber(results, status);
@@ -81,7 +81,8 @@ void SimpleNumber::setMinimumIntegerDigits(uint32_t position, UErrorCode& status
status = U_INVALID_STATE_ERROR;
return;
}
- fData->quantity.setMinInteger(position);
+ fData->quantity.decreaseMinIntegerTo(position);
+ fData->quantity.increaseMinIntegerTo(position);
}
void SimpleNumber::setMinimumFractionDigits(uint32_t position, UErrorCode& status) {
@@ -95,7 +96,7 @@ void SimpleNumber::setMinimumFractionDigits(uint32_t position, UErrorCode& statu
fData->quantity.setMinFraction(position);
}
-void SimpleNumber::truncateStart(uint32_t position, UErrorCode& status) {
+void SimpleNumber::setMaximumIntegerDigits(uint32_t position, UErrorCode& status) {
if (U_FAILURE(status)) {
return;
}
@@ -103,9 +104,14 @@ void SimpleNumber::truncateStart(uint32_t position, UErrorCode& status) {
status = U_INVALID_STATE_ERROR;
return;
}
+ fData->quantity.decreaseMinIntegerTo(position);
fData->quantity.applyMaxInteger(position);
}
+void SimpleNumber::truncateStart(uint32_t position, UErrorCode& status) {
+ setMaximumIntegerDigits(position, status);
+}
+
void SimpleNumber::setSign(USimpleNumberSign sign, UErrorCode& status) {
if (U_FAILURE(status)) {
return;
@@ -176,7 +182,7 @@ void SimpleNumberFormatter::initialize(
}
fMicros->symbols = &symbols;
- auto pattern = utils::getPatternForStyle(
+ const auto* pattern = utils::getPatternForStyle(
locale,
symbols.getNumberingSystemName(),
CLDR_PATTERN_STYLE_DECIMAL,
@@ -203,7 +209,6 @@ void SimpleNumberFormatter::initialize(
fPatternModifier = new AdoptingSignumModifierStore(patternModifier.createImmutableForPlural(StandardPlural::COUNT, status));
fGroupingStrategy = groupingStrategy;
- return;
}
FormattedNumber SimpleNumberFormatter::format(SimpleNumber value, UErrorCode &status) const {
@@ -211,7 +216,7 @@ FormattedNumber SimpleNumberFormatter::format(SimpleNumber value, UErrorCode &st
// Do not save the results object if we encountered a failure.
if (U_SUCCESS(status)) {
- auto temp = value.fData;
+ auto* temp = value.fData;
value.fData = nullptr;
return FormattedNumber(temp);
} else {
diff --git a/icu4c/source/i18n/number_skeletons.cpp b/icu4c/source/i18n/number_skeletons.cpp
index ef3befbff..562a8663d 100644
--- a/icu4c/source/i18n/number_skeletons.cpp
+++ b/icu4c/source/i18n/number_skeletons.cpp
@@ -184,7 +184,7 @@ Notation stem_to_object::notation(skeleton::StemEnum stem) {
MeasureUnit stem_to_object::unit(skeleton::StemEnum stem) {
switch (stem) {
case STEM_BASE_UNIT:
- return MeasureUnit();
+ return {};
case STEM_PERCENT:
return MeasureUnit::getPercent();
case STEM_PERMILLE:
@@ -1287,7 +1287,6 @@ void blueprint_helpers::parseScientificStem(const StringSegment& segment, MacroP
fail: void();
// throw new SkeletonSyntaxException("Invalid scientific stem", segment);
status = U_NUMBER_SKELETON_SYNTAX_ERROR;
- return;
}
void blueprint_helpers::parseIntegerStem(const StringSegment& segment, MacroProps& macros, UErrorCode& status) {
@@ -1305,7 +1304,6 @@ void blueprint_helpers::parseIntegerStem(const StringSegment& segment, MacroProp
return;
}
macros.integerWidth = IntegerWidth::zeroFillTo(offset);
- return;
}
bool blueprint_helpers::parseFracSigOption(const StringSegment& segment, MacroProps& macros,
@@ -1344,7 +1342,7 @@ bool blueprint_helpers::parseFracSigOption(const StringSegment& segment, MacroPr
// @, @@, @@@
maxSig = minSig;
}
- auto& oldPrecision = static_cast<const FractionPrecision&>(macros.precision);
+ const auto& oldPrecision = static_cast<const FractionPrecision&>(macros.precision);
if (offset < segment.length()) {
UNumberRoundingPriority priority;
if (maxSig == -1) {
diff --git a/icu4c/source/i18n/number_skeletons.h b/icu4c/source/i18n/number_skeletons.h
index 27f69cd48..47a1a7ace 100644
--- a/icu4c/source/i18n/number_skeletons.h
+++ b/icu4c/source/i18n/number_skeletons.h
@@ -13,8 +13,7 @@
#include "string_segment.h"
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
// Forward-declaration
struct SeenMacroProps;
@@ -385,8 +384,7 @@ UPRV_BLOCK_MACRO_BEGIN { \
} // namespace
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMBER_SKELETONS_H__
diff --git a/icu4c/source/i18n/number_types.h b/icu4c/source/i18n/number_types.h
index 84846efb9..a67099e5e 100644
--- a/icu4c/source/i18n/number_types.h
+++ b/icu4c/source/i18n/number_types.h
@@ -20,8 +20,7 @@
#include "formatted_string_builder.h"
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
// For convenience and historical reasons, import the Field typedef to the namespace.
typedef FormattedStringBuilder::Field Field;
@@ -225,10 +224,15 @@ class U_I18N_API Modifier {
virtual void getParameters(Parameters& output) const = 0;
/**
+ * Returns whether this Modifier equals another Modifier.
+ */
+ virtual bool strictEquals(const Modifier& other) const = 0;
+
+ /**
* Returns whether this Modifier is *semantically equivalent* to the other Modifier;
* in many cases, this is the same as equal, but parameters should be ignored.
*/
- virtual bool semanticallyEquivalent(const Modifier& other) const = 0;
+ bool semanticallyEquivalent(const Modifier& other) const;
};
@@ -364,9 +368,7 @@ class U_I18N_API NullableValue {
T fValue;
};
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_TYPES_H__
diff --git a/icu4c/source/i18n/number_usageprefs.h b/icu4c/source/i18n/number_usageprefs.h
index e90df99d3..9aebc3140 100644
--- a/icu4c/source/i18n/number_usageprefs.h
+++ b/icu4c/source/i18n/number_usageprefs.h
@@ -23,8 +23,7 @@ U_NAMESPACE_BEGIN
using ::icu::units::ComplexUnitsConverter;
using ::icu::units::UnitsRouter;
-namespace number {
-namespace impl {
+namespace number::impl {
/**
* A MicroPropsGenerator which uses UnitsRouter to produce output converted to a
@@ -62,8 +61,7 @@ class U_I18N_API UsagePrefsHandler : public MicroPropsGenerator, public UMemory
const MicroPropsGenerator *fParent;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
// Export explicit template instantiations of LocalPointerBase and LocalPointer.
// This is required when building DLLs for Windows. (See datefmt.h,
@@ -84,8 +82,7 @@ template class U_I18N_API LocalPointer<ComplexUnitsConverter>;
#endif
#endif
-namespace number {
-namespace impl {
+namespace number::impl {
/**
* A MicroPropsGenerator which converts a measurement from one MeasureUnit to
@@ -118,8 +115,8 @@ class U_I18N_API UnitConversionHandler : public MicroPropsGenerator, public UMem
const MicroPropsGenerator *fParent;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
+
U_NAMESPACE_END
#endif // __NUMBER_USAGEPREFS_H__
diff --git a/icu4c/source/i18n/number_utils.h b/icu4c/source/i18n/number_utils.h
index bc369c940..39c56f4d1 100644
--- a/icu4c/source/i18n/number_utils.h
+++ b/icu4c/source/i18n/number_utils.h
@@ -21,8 +21,7 @@
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
enum CldrPatternStyle {
CLDR_PATTERN_STYLE_DECIMAL,
@@ -102,8 +101,7 @@ inline StandardPlural::Form getPluralSafe(
} // namespace utils
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_utypes.h b/icu4c/source/i18n/number_utypes.h
index 0c1304018..9f606f178 100644
--- a/icu4c/source/i18n/number_utypes.h
+++ b/icu4c/source/i18n/number_utypes.h
@@ -13,9 +13,8 @@
#include "formatted_string_builder.h"
#include "formattedval_impl.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace number::impl {
/** Helper function used in upluralrules.cpp */
const DecimalQuantity* validateUFormattedNumberToDecimalQuantity(
@@ -50,9 +49,7 @@ public:
const char *gender = "";
};
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMBER_UTYPES_H__
diff --git a/icu4c/source/i18n/numparse_affixes.cpp b/icu4c/source/i18n/numparse_affixes.cpp
index ad3d48b47..8333600f9 100644
--- a/icu4c/source/i18n/numparse_affixes.cpp
+++ b/icu4c/source/i18n/numparse_affixes.cpp
@@ -29,7 +29,7 @@ namespace {
* Either both arguments must be null or the pattern string inside the AffixPatternMatcher must equal
* the given pattern string.
*/
-static bool matched(const AffixPatternMatcher* affix, const UnicodeString& patternString) {
+bool matched(const AffixPatternMatcher* affix, const UnicodeString& patternString) {
return (affix == nullptr && patternString.isBogus()) ||
(affix != nullptr && affix->getPattern() == patternString);
}
@@ -37,7 +37,7 @@ static bool matched(const AffixPatternMatcher* affix, const UnicodeString& patte
/**
* Helper method to return the length of the given AffixPatternMatcher. Returns 0 for null.
*/
-static int32_t length(const AffixPatternMatcher* matcher) {
+int32_t length(const AffixPatternMatcher* matcher) {
return matcher == nullptr ? 0 : matcher->getPattern().length();
}
@@ -45,7 +45,7 @@ static int32_t length(const AffixPatternMatcher* matcher) {
* Helper method to return whether (1) both lhs and rhs are null/invalid, or (2) if they are both
* valid, whether they are equal according to operator==. Similar to Java Objects.equals()
*/
-static bool equals(const AffixPatternMatcher* lhs, const AffixPatternMatcher* rhs) {
+bool equals(const AffixPatternMatcher* lhs, const AffixPatternMatcher* rhs) {
if (lhs == nullptr && rhs == nullptr) {
return true;
}
diff --git a/icu4c/source/i18n/numparse_affixes.h b/icu4c/source/i18n/numparse_affixes.h
index 81b633c26..a9e1c414e 100644
--- a/icu4c/source/i18n/numparse_affixes.h
+++ b/icu4c/source/i18n/numparse_affixes.h
@@ -16,8 +16,8 @@
#include "number_currencysymbols.h"
U_NAMESPACE_BEGIN
-namespace numparse {
-namespace impl {
+
+namespace numparse::impl {
// Forward-declaration of implementation classes for friending
class AffixPatternMatcherBuilder;
@@ -44,8 +44,7 @@ class U_I18N_API CodePointMatcher : public NumberParseMatcher, public UMemory {
UChar32 fCp;
};
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
// Export a explicit template instantiations of MaybeStackArray, MemoryPool and CompactUnicodeString.
// When building DLLs for Windows this is required even though no direct access leaks out of the i18n library.
@@ -58,8 +57,7 @@ template class U_I18N_API MemoryPool<numparse::impl::CodePointMatcher, 8>;
template class U_I18N_API numparse::impl::CompactUnicodeString<4>;
#endif
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
struct AffixTokenMatcherSetupData {
const CurrencySymbols& currencySymbols;
@@ -221,9 +219,8 @@ class AffixMatcherWarehouse {
parse_flags_t parseFlags, UErrorCode& status);
};
+} // namespace numparse::impl
-} // namespace impl
-} // namespace numparse
U_NAMESPACE_END
#endif //__NUMPARSE_AFFIXES_H__
diff --git a/icu4c/source/i18n/numparse_compositions.cpp b/icu4c/source/i18n/numparse_compositions.cpp
index 2f7e1ab28..259e566d4 100644
--- a/icu4c/source/i18n/numparse_compositions.cpp
+++ b/icu4c/source/i18n/numparse_compositions.cpp
@@ -24,7 +24,7 @@ bool SeriesMatcher::match(StringSegment& segment, ParsedNumber& result, UErrorCo
int32_t initialOffset = segment.getOffset();
bool maybeMore = true;
- for (auto* it = begin(); it < end();) {
+ for (const auto* it = begin(); it < end();) {
const NumberParseMatcher* matcher = *it;
int matcherOffset = segment.getOffset();
if (segment.length() != 0) {
@@ -64,7 +64,7 @@ bool SeriesMatcher::match(StringSegment& segment, ParsedNumber& result, UErrorCo
bool SeriesMatcher::smokeTest(const StringSegment& segment) const {
// NOTE: The range-based for loop calls the virtual begin() and end() methods.
// NOTE: We only want the first element. Use the for loop for boundary checking.
- for (auto& matcher : *this) {
+ for (const auto& matcher : *this) {
// SeriesMatchers are never allowed to start with a Flexible matcher.
U_ASSERT(!matcher->isFlexible());
return matcher->smokeTest(segment);
@@ -74,7 +74,7 @@ bool SeriesMatcher::smokeTest(const StringSegment& segment) const {
void SeriesMatcher::postProcess(ParsedNumber& result) const {
// NOTE: The range-based for loop calls the virtual begin() and end() methods.
- for (auto* matcher : *this) {
+ for (const auto* matcher : *this) {
matcher->postProcess(result);
}
}
diff --git a/icu4c/source/i18n/numparse_compositions.h b/icu4c/source/i18n/numparse_compositions.h
index f085912de..b21941dee 100644
--- a/icu4c/source/i18n/numparse_compositions.h
+++ b/icu4c/source/i18n/numparse_compositions.h
@@ -18,8 +18,7 @@ U_NAMESPACE_BEGIN
template class U_I18N_API MaybeStackArray<const numparse::impl::NumberParseMatcher*, 3>;
#endif
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
/**
* Base class for AnyMatcher and SeriesMatcher.
@@ -115,9 +114,8 @@ class U_I18N_API ArraySeriesMatcher : public SeriesMatcher {
int32_t fMatchersLen;
};
+} // namespace numparse::impl
-} // namespace impl
-} // namespace numparse
U_NAMESPACE_END
#endif //__SOURCE_NUMPARSE_COMPOSITIONS__
diff --git a/icu4c/source/i18n/numparse_currency.h b/icu4c/source/i18n/numparse_currency.h
index 4e99334a3..4d71d4fbc 100644
--- a/icu4c/source/i18n/numparse_currency.h
+++ b/icu4c/source/i18n/numparse_currency.h
@@ -13,8 +13,8 @@
#include "number_currencysymbols.h"
#include "unicode/uniset.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
using ::icu::number::impl::CurrencySymbols;
@@ -65,9 +65,7 @@ class U_I18N_API CombinedCurrencyMatcher : public NumberParseMatcher, public UMe
bool matchCurrency(StringSegment& segment, ParsedNumber& result, UErrorCode& status) const;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_CURRENCY_H__
diff --git a/icu4c/source/i18n/numparse_decimal.cpp b/icu4c/source/i18n/numparse_decimal.cpp
index 8b99fd7ad..aedca6058 100644
--- a/icu4c/source/i18n/numparse_decimal.cpp
+++ b/icu4c/source/i18n/numparse_decimal.cpp
@@ -74,7 +74,7 @@ DecimalMatcher::DecimalMatcher(const DecimalFormatSymbols& symbols, const Groupe
UChar32 cpZero = symbols.getCodePointZero();
if (cpZero == -1 || !u_isdigit(cpZero) || u_digit(cpZero, 10) != 0) {
// Uncommon case: okay to allocate.
- auto digitStrings = new UnicodeString[10];
+ auto* digitStrings = new UnicodeString[10];
fLocalDigitStrings.adoptInstead(digitStrings);
for (int32_t i = 0; i <= 9; i++) {
digitStrings[i] = symbols.getConstDigitSymbol(i);
diff --git a/icu4c/source/i18n/numparse_decimal.h b/icu4c/source/i18n/numparse_decimal.h
index 07c9afecc..b770749fa 100644
--- a/icu4c/source/i18n/numparse_decimal.h
+++ b/icu4c/source/i18n/numparse_decimal.h
@@ -10,8 +10,8 @@
#include "unicode/uniset.h"
#include "numparse_types.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
using ::icu::number::impl::Grouper;
@@ -67,9 +67,7 @@ class DecimalMatcher : public NumberParseMatcher, public UMemory {
bool validateGroup(int32_t sepType, int32_t count, bool isPrimary) const;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_DECIMAL_H__
diff --git a/icu4c/source/i18n/numparse_impl.h b/icu4c/source/i18n/numparse_impl.h
index 380d9aa4c..4695a624d 100644
--- a/icu4c/source/i18n/numparse_impl.h
+++ b/icu4c/source/i18n/numparse_impl.h
@@ -29,8 +29,7 @@ U_NAMESPACE_BEGIN
template class U_I18N_API MaybeStackArray<const numparse::impl::NumberParseMatcher*, 10>;
#endif
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
// Exported as U_I18N_API for tests
class U_I18N_API NumberParserImpl : public MutableMatcherCollection, public UMemory {
@@ -102,9 +101,8 @@ class U_I18N_API NumberParserImpl : public MutableMatcherCollection, public UMem
StringSegment& segment, ParsedNumber& result, int32_t recursionLevels, UErrorCode& status) const;
};
+} // namespace numparse::impl
-} // namespace impl
-} // namespace numparse
U_NAMESPACE_END
#endif //__NUMPARSE_IMPL_H__
diff --git a/icu4c/source/i18n/numparse_scientific.h b/icu4c/source/i18n/numparse_scientific.h
index 5617c0c6a..ed214b717 100644
--- a/icu4c/source/i18n/numparse_scientific.h
+++ b/icu4c/source/i18n/numparse_scientific.h
@@ -14,9 +14,8 @@
using icu::number::impl::Grouper;
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
class ScientificMatcher : public NumberParseMatcher, public UMemory {
public:
@@ -38,9 +37,7 @@ class ScientificMatcher : public NumberParseMatcher, public UMemory {
UnicodeString fCustomPlusSign;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_SCIENTIFIC_H__
diff --git a/icu4c/source/i18n/numparse_symbols.h b/icu4c/source/i18n/numparse_symbols.h
index beb133f7d..3bc07b2be 100644
--- a/icu4c/source/i18n/numparse_symbols.h
+++ b/icu4c/source/i18n/numparse_symbols.h
@@ -11,9 +11,8 @@
#include "unicode/uniset.h"
#include "static_unicode_sets.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
/**
* A base class for many matchers that performs a simple match against a UnicodeString and/or UnicodeSet.
@@ -164,9 +163,7 @@ class U_I18N_API PlusSignMatcher : public SymbolMatcher {
bool fAllowTrailing;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_SYMBOLS_H__
diff --git a/icu4c/source/i18n/numparse_types.h b/icu4c/source/i18n/numparse_types.h
index 8e881793f..d5a53379b 100644
--- a/icu4c/source/i18n/numparse_types.h
+++ b/icu4c/source/i18n/numparse_types.h
@@ -12,8 +12,7 @@
#include "string_segment.h"
U_NAMESPACE_BEGIN
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
// Forward-declarations
class ParsedNumber;
@@ -263,9 +262,7 @@ class U_I18N_API MutableMatcherCollection {
virtual void addMatcher(NumberParseMatcher& matcher) = 0;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_TYPES_H__
diff --git a/icu4c/source/i18n/numparse_utils.h b/icu4c/source/i18n/numparse_utils.h
index 8fda4f436..a842c6fae 100644
--- a/icu4c/source/i18n/numparse_utils.h
+++ b/icu4c/source/i18n/numparse_utils.h
@@ -10,10 +10,8 @@
#include "numparse_types.h"
#include "unicode/uniset.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
-namespace utils {
-
+U_NAMESPACE_BEGIN
+namespace numparse::impl::utils {
inline static void putLeadCodePoints(const UnicodeSet* input, UnicodeSet* output) {
for (int32_t i = 0; i < input->getRangeCount(); i++) {
@@ -33,10 +31,7 @@ inline static void copyCurrencyCode(char16_t* dest, const char16_t* src) {
dest[3] = 0;
}
-
-} // namespace utils
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl::utils
U_NAMESPACE_END
#endif //__NUMPARSE_UTILS_H__
diff --git a/icu4c/source/i18n/numparse_validators.h b/icu4c/source/i18n/numparse_validators.h
index 9bb4b482b..3425bb07a 100644
--- a/icu4c/source/i18n/numparse_validators.h
+++ b/icu4c/source/i18n/numparse_validators.h
@@ -10,9 +10,8 @@
#include "numparse_types.h"
#include "static_unicode_sets.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
class ValidationMatcher : public NumberParseMatcher {
public:
@@ -86,9 +85,7 @@ class MultiplierParseHandler : public ValidationMatcher, public UMemory {
::icu::number::Scale fMultiplier;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMPARSE_VALIDATORS_H__
diff --git a/icu4c/source/i18n/numrange_capi.cpp b/icu4c/source/i18n/numrange_capi.cpp
index 9222969eb..ef1a29e39 100644
--- a/icu4c/source/i18n/numrange_capi.cpp
+++ b/icu4c/source/i18n/numrange_capi.cpp
@@ -24,8 +24,7 @@ using namespace icu::number::impl;
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
/**
* Implementation class for UNumberRangeFormatter. Wraps a LocalizedRangeNumberFormatter.
@@ -59,8 +58,7 @@ UFormattedNumberRangeImpl::~UFormattedNumberRangeImpl() {
fImpl.fData = nullptr;
}
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
@@ -73,7 +71,7 @@ UPRV_FORMATTED_VALUE_CAPI_NO_IMPLTYPE_AUTO_IMPL(
const UFormattedNumberRangeData* number::impl::validateUFormattedNumberRange(
const UFormattedNumberRange* uresult, UErrorCode& status) {
- auto* result = UFormattedNumberRangeApiHelper::validate(uresult, status);
+ const auto* result = UFormattedNumberRangeApiHelper::validate(uresult, status);
if (U_FAILURE(status)) {
return nullptr;
}
@@ -147,7 +145,7 @@ U_CAPI UNumberRangeIdentityResult U_EXPORT2
unumrf_resultGetIdentityResult(
const UFormattedNumberRange* uresult,
UErrorCode* ec) {
- auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec);
+ const auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec);
if (U_FAILURE(*ec)) {
return UNUM_IDENTITY_RESULT_COUNT;
}
diff --git a/icu4c/source/i18n/numrange_fluent.cpp b/icu4c/source/i18n/numrange_fluent.cpp
index 0944f3024..e03701788 100644
--- a/icu4c/source/i18n/numrange_fluent.cpp
+++ b/icu4c/source/i18n/numrange_fluent.cpp
@@ -212,6 +212,14 @@ UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(NFS<UNF>&& src)
// No additional fields to assign
}
+UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const impl::RangeMacroProps &macros) {
+ fMacros = macros;
+}
+
+UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(impl::RangeMacroProps &&macros) {
+ fMacros = macros;
+}
+
UnlocalizedNumberRangeFormatter& UnlocalizedNumberRangeFormatter::operator=(const UNF& other) {
NFS<UNF>::operator=(static_cast<const NFS<UNF>&>(other));
// No additional fields to assign
@@ -286,13 +294,26 @@ LocalizedNumberRangeFormatter UnlocalizedNumberRangeFormatter::locale(const Loca
}
+UnlocalizedNumberRangeFormatter LocalizedNumberRangeFormatter::withoutLocale() const & {
+ RangeMacroProps macros(fMacros);
+ macros.locale = Locale();
+ return UnlocalizedNumberRangeFormatter(macros);
+}
+
+UnlocalizedNumberRangeFormatter LocalizedNumberRangeFormatter::withoutLocale() && {
+ RangeMacroProps macros(std::move(fMacros));
+ macros.locale = Locale();
+ return UnlocalizedNumberRangeFormatter(std::move(macros));
+}
+
+
FormattedNumberRange LocalizedNumberRangeFormatter::formatFormattableRange(
const Formattable& first, const Formattable& second, UErrorCode& status) const {
if (U_FAILURE(status)) {
return FormattedNumberRange(U_ILLEGAL_ARGUMENT_ERROR);
}
- auto results = new UFormattedNumberRangeData();
+ auto* results = new UFormattedNumberRangeData();
if (results == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return FormattedNumberRange(status);
@@ -321,7 +342,7 @@ FormattedNumberRange LocalizedNumberRangeFormatter::formatFormattableRange(
void LocalizedNumberRangeFormatter::formatImpl(
UFormattedNumberRangeData& results, bool equalBeforeRounding, UErrorCode& status) const {
- auto* impl = getFormatter(status);
+ const auto* impl = getFormatter(status);
if (U_FAILURE(status)) {
return;
}
diff --git a/icu4c/source/i18n/numrange_impl.h b/icu4c/source/i18n/numrange_impl.h
index ac1d8a589..cdee3d84e 100644
--- a/icu4c/source/i18n/numrange_impl.h
+++ b/icu4c/source/i18n/numrange_impl.h
@@ -17,9 +17,8 @@
#include "formattedval_impl.h"
#include "pluralranges.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* Class similar to UFormattedNumberData.
@@ -80,9 +79,7 @@ class NumberRangeFormatterImpl : public UMemory {
const UFormattedNumberRangeData* validateUFormattedNumberRange(
const UFormattedNumberRange* uresult, UErrorCode& status);
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMRANGE_TYPES_H__
diff --git a/icu4c/source/i18n/numsys.cpp b/icu4c/source/i18n/numsys.cpp
index 0d5c43e4b..4fb1b5af3 100644
--- a/icu4c/source/i18n/numsys.cpp
+++ b/icu4c/source/i18n/numsys.cpp
@@ -320,7 +320,6 @@ U_CFUNC void initNumsysNames(UErrorCode &status) {
if (U_SUCCESS(status)) {
gNumsysNames = numsysNames.orphan();
}
- return;
}
} // end anonymous namespace
diff --git a/icu4c/source/i18n/olsontz.cpp b/icu4c/source/i18n/olsontz.cpp
index 260e345d7..924502f53 100644
--- a/icu4c/source/i18n/olsontz.cpp
+++ b/icu4c/source/i18n/olsontz.cpp
@@ -266,7 +266,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top,
* Copy constructor
*/
OlsonTimeZone::OlsonTimeZone(const OlsonTimeZone& other) :
- BasicTimeZone(other), finalZone(0) {
+ BasicTimeZone(other), finalZone(nullptr) {
*this = other;
}
@@ -290,7 +290,7 @@ OlsonTimeZone& OlsonTimeZone::operator=(const OlsonTimeZone& other) {
typeMapData = other.typeMapData;
delete finalZone;
- finalZone = (other.finalZone != 0) ? other.finalZone->clone() : 0;
+ finalZone = other.finalZone != nullptr ? other.finalZone->clone() : nullptr;
finalStartYear = other.finalStartYear;
finalStartMillis = other.finalStartMillis;
@@ -664,18 +664,10 @@ OlsonTimeZone::clearTransitionRules() {
void
OlsonTimeZone::deleteTransitionRules() {
- if (initialRule != nullptr) {
- delete initialRule;
- }
- if (firstTZTransition != nullptr) {
- delete firstTZTransition;
- }
- if (firstFinalTZTransition != nullptr) {
- delete firstFinalTZTransition;
- }
- if (finalZoneWithStartYear != nullptr) {
- delete finalZoneWithStartYear;
- }
+ delete initialRule;
+ delete firstTZTransition;
+ delete firstFinalTZTransition;
+ delete finalZoneWithStartYear;
if (historicRules != nullptr) {
for (int i = 0; i < historicRuleCount; i++) {
if (historicRules[i] != nullptr) {
diff --git a/icu4c/source/i18n/persncal.cpp b/icu4c/source/i18n/persncal.cpp
index ab13f4343..c97a32197 100644
--- a/icu4c/source/i18n/persncal.cpp
+++ b/icu4c/source/i18n/persncal.cpp
@@ -21,6 +21,7 @@
#if !UCONFIG_NO_FORMATTING
+#include "uassert.h"
#include "umutex.h"
#include "gregoimp.h" // Math
#include <float.h>
@@ -110,17 +111,16 @@ int32_t PersianCalendar::handleGetLimit(UCalendarDateFields field, ELimitType li
*/
UBool PersianCalendar::isLeapYear(int32_t year)
{
- int32_t remainder;
- ClockMath::floorDivide(25 * year + 11, 33, &remainder);
- return (remainder < 8);
+ int64_t y = static_cast<int64_t>(year) * 25LL + 11LL;
+ return (y % 33L < 8);
}
/**
* Return the day # on which the given year starts. Days are counted
* from the Persian epoch, origin 0.
*/
-int32_t PersianCalendar::yearStart(int32_t year) {
- return handleComputeMonthStart(year,0,false);
+int32_t PersianCalendar::yearStart(int32_t year, UErrorCode& status) {
+ return handleComputeMonthStart(year,0,false, status);
}
/**
@@ -130,8 +130,8 @@ int32_t PersianCalendar::yearStart(int32_t year) {
* @param year The Persian year
* @param year The Persian month, 0-based
*/
-int32_t PersianCalendar::monthStart(int32_t year, int32_t month) const {
- return handleComputeMonthStart(year,month,true);
+int32_t PersianCalendar::monthStart(int32_t year, int32_t month, UErrorCode& status) const {
+ return handleComputeMonthStart(year,month,true, status);
}
//----------------------------------------------------------------------
@@ -144,7 +144,7 @@ int32_t PersianCalendar::monthStart(int32_t year, int32_t month) const {
* @param year The Persian year
* @param year The Persian month, 0-based
*/
-int32_t PersianCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
+int32_t PersianCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& /*status*/) const {
// If the month is out of range, adjust it into range, and
// modify the extended year value accordingly.
if (month < 0 || month > 11) {
@@ -166,14 +166,20 @@ int32_t PersianCalendar::handleGetYearLength(int32_t extendedYear) const {
//-------------------------------------------------------------------------
// Return JD of start of given month/year
-int32_t PersianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool /*useMonth*/) const {
+int64_t PersianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool /*useMonth*/, UErrorCode& status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
// If the month is out of range, adjust it into range, and
// modify the extended year value accordingly.
if (month < 0 || month > 11) {
- eyear += ClockMath::floorDivide(month, 12, &month);
+ if (uprv_add32_overflow(eyear, ClockMath::floorDivide(month, 12, &month), &eyear)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
}
- int32_t julianDay = PERSIAN_EPOCH - 1 + 365 * (eyear - 1) + ClockMath::floorDivide(8 * eyear + 21, 33);
+ int64_t julianDay = PERSIAN_EPOCH - 1LL + 365LL * (eyear - 1LL) + ClockMath::floorDivide(8LL * eyear + 21, 33);
if (month != 0) {
julianDay += kPersianNumDays[month];
@@ -186,14 +192,14 @@ int32_t PersianCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U
// Functions for converting from milliseconds to field values
//-------------------------------------------------------------------------
-int32_t PersianCalendar::handleGetExtendedYear() {
- int32_t year;
+int32_t PersianCalendar::handleGetExtendedYear(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
- year = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
- } else {
- year = internalGet(UCAL_YEAR, 1); // Default to year 1
+ return internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
}
- return year;
+ return internalGet(UCAL_YEAR, 1); // Default to year 1
}
/**
@@ -210,20 +216,33 @@ int32_t PersianCalendar::handleGetExtendedYear() {
* The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
* method is called.
*/
-void PersianCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/) {
- int32_t year, month, dayOfMonth, dayOfYear;
-
- int32_t daysSinceEpoch = julianDay - PERSIAN_EPOCH;
- year = 1 + (int32_t)ClockMath::floorDivide(33 * (int64_t)daysSinceEpoch + 3, (int64_t)12053);
+void PersianCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status) {
+ int64_t daysSinceEpoch = julianDay - PERSIAN_EPOCH;
+ int64_t year = ClockMath::floorDivideInt64(
+ 33LL * daysSinceEpoch + 3LL, 12053LL) + 1LL;
+ if (year > INT32_MAX || year < INT32_MIN) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
- int32_t farvardin1 = 365 * (year - 1) + ClockMath::floorDivide(8 * year + 21, 33);
- dayOfYear = (daysSinceEpoch - farvardin1); // 0-based
+ int64_t farvardin1 = 365LL * (year - 1) + ClockMath::floorDivide(8LL * year + 21, 33);
+ int32_t dayOfYear = daysSinceEpoch - farvardin1; // 0-based
+ U_ASSERT(dayOfYear >= 0);
+ U_ASSERT(dayOfYear < 366);
+ //
+ int32_t month;
if (dayOfYear < 216) { // Compute 0-based month
month = dayOfYear / 31;
} else {
month = (dayOfYear - 6) / 30;
}
- dayOfMonth = dayOfYear - kPersianNumDays[month] + 1;
+ U_ASSERT(month >= 0);
+ U_ASSERT(month < 12);
+
+ int32_t dayOfMonth = dayOfYear - kPersianNumDays[month] + 1;
+ U_ASSERT(dayOfMonth > 0);
+ U_ASSERT(dayOfMonth <= 31);
+
++dayOfYear; // Make it 1-based now
internalSet(UCAL_ERA, 0);
@@ -243,7 +262,11 @@ int32_t PersianCalendar::getRelatedYear(UErrorCode &status) const
if (U_FAILURE(status)) {
return 0;
}
- return year + kPersianRelatedYearDiff;
+ if (uprv_add32_overflow(year, kPersianRelatedYearDiff, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return year;
}
void PersianCalendar::setRelatedYear(int32_t year)
@@ -252,50 +275,10 @@ void PersianCalendar::setRelatedYear(int32_t year)
set(UCAL_EXTENDED_YEAR, year - kPersianRelatedYearDiff);
}
-// default century
-
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInit {};
-
-UBool PersianCalendar::haveDefaultCentury() const
-{
- return true;
-}
-
-static void U_CALLCONV initializeSystemDefaultCentury() {
- // initialize systemDefaultCentury and systemDefaultCenturyYear based
- // on the current time. They'll be set to 80 years before
- // the current time.
- UErrorCode status = U_ZERO_ERROR;
- PersianCalendar calendar(Locale("@calendar=persian"),status);
- if (U_SUCCESS(status))
- {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
-
- gSystemDefaultCenturyStart = calendar.getTime(status);
- gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
- }
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
-}
-
-UDate PersianCalendar::defaultCenturyStart() const {
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t PersianCalendar::defaultCenturyStartYear() const {
- // lazy-evaluate systemDefaultCenturyStartYear
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
+IMPL_SYSTEM_DEFAULT_CENTURY(PersianCalendar, "@calendar=persian")
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(PersianCalendar)
U_NAMESPACE_END
#endif
-
diff --git a/icu4c/source/i18n/persncal.h b/icu4c/source/i18n/persncal.h
index b943321a5..daf7508b7 100644
--- a/icu4c/source/i18n/persncal.h
+++ b/icu4c/source/i18n/persncal.h
@@ -176,7 +176,7 @@ class PersianCalendar : public Calendar {
* Return the day # on which the given year starts. Days are counted
* from the Hijri epoch, origin 0.
*/
- int32_t yearStart(int32_t year);
+ int32_t yearStart(int32_t year, UErrorCode& status);
/**
* Return the day # on which the given month starts. Days are counted
@@ -185,7 +185,7 @@ class PersianCalendar : public Calendar {
* @param year The hijri shamsi year
* @param year The hijri shamsi month, 0-based
*/
- int32_t monthStart(int32_t year, int32_t month) const;
+ int32_t monthStart(int32_t year, int32_t month, UErrorCode& status) const;
//----------------------------------------------------------------------
// Calendar framework
@@ -203,7 +203,7 @@ class PersianCalendar : public Calendar {
* @param year The hijri shamsi month, 0-based
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Persian year
@@ -219,7 +219,7 @@ class PersianCalendar : public Calendar {
/**
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
//-------------------------------------------------------------------------
// Functions for converting from milliseconds to field values
@@ -228,7 +228,7 @@ class PersianCalendar : public Calendar {
/**
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Override Calendar to compute several fields specific to the Persian
@@ -296,24 +296,7 @@ class PersianCalendar : public Calendar {
PersianCalendar(); // default constructor not implemented
protected:
- /**
- * Returns true because the Persian Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/pluralranges.h b/icu4c/source/i18n/pluralranges.h
index eba59c70e..c06317850 100644
--- a/icu4c/source/i18n/pluralranges.h
+++ b/icu4c/source/i18n/pluralranges.h
@@ -17,11 +17,9 @@
U_NAMESPACE_BEGIN
// Forward declarations
-namespace number {
-namespace impl {
+namespace number::impl {
class UFormattedNumberRangeData;
}
-}
class StandardPluralRanges : public UMemory {
public:
diff --git a/icu4c/source/i18n/plurfmt.cpp b/icu4c/source/i18n/plurfmt.cpp
index 33a539cd1..7b225bcc8 100644
--- a/icu4c/source/i18n/plurfmt.cpp
+++ b/icu4c/source/i18n/plurfmt.cpp
@@ -149,13 +149,8 @@ PluralFormat::PluralFormat(const PluralFormat& other)
void
PluralFormat::copyObjects(const PluralFormat& other) {
UErrorCode status = U_ZERO_ERROR;
- if (numberFormat != nullptr) {
- delete numberFormat;
- }
- if (pluralRulesWrapper.pluralRules != nullptr) {
- delete pluralRulesWrapper.pluralRules;
- }
-
+ delete numberFormat;
+ delete pluralRulesWrapper.pluralRules;
if (other.numberFormat == nullptr) {
numberFormat = NumberFormat::createInstance(locale, status);
} else {
diff --git a/icu4c/source/i18n/plurrule.cpp b/icu4c/source/i18n/plurrule.cpp
index 839d14147..2ded25d60 100644
--- a/icu4c/source/i18n/plurrule.cpp
+++ b/icu4c/source/i18n/plurrule.cpp
@@ -22,7 +22,6 @@
#include "unicode/numfmt.h"
#include "unicode/decimfmt.h"
#include "unicode/numberrangeformatter.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -656,6 +655,11 @@ PluralRuleParser::parse(const UnicodeString& ruleData, PluralRules *prules, UErr
case tEqual:
{
U_ASSERT(curAndConstraint != nullptr);
+ if (curAndConstraint->rangeList != nullptr) {
+ // Already get a '='.
+ status = U_UNEXPECTED_TOKEN;
+ break;
+ }
LocalPointer<UVector32> newRangeList(new UVector32(status), status);
if (U_FAILURE(status)) {
break;
@@ -673,20 +677,40 @@ PluralRuleParser::parse(const UnicodeString& ruleData, PluralRules *prules, UErr
U_ASSERT(curAndConstraint != nullptr);
if ( (curAndConstraint->op==AndConstraint::MOD)&&
(curAndConstraint->opNum == -1 ) ) {
- curAndConstraint->opNum=getNumberValue(token);
+ int32_t num = getNumberValue(token);
+ if (num == -1) {
+ status = U_UNEXPECTED_TOKEN;
+ break;
+ }
+ curAndConstraint->opNum=num;
}
else {
if (curAndConstraint->rangeList == nullptr) {
// this is for an 'is' rule
- curAndConstraint->value = getNumberValue(token);
+ int32_t num = getNumberValue(token);
+ if (num == -1) {
+ status = U_UNEXPECTED_TOKEN;
+ break;
+ }
+ curAndConstraint->value = num;
} else {
// this is for an 'in' or 'within' rule
if (curAndConstraint->rangeList->elementAti(rangeLowIdx) == -1) {
- curAndConstraint->rangeList->setElementAt(getNumberValue(token), rangeLowIdx);
- curAndConstraint->rangeList->setElementAt(getNumberValue(token), rangeHiIdx);
+ int32_t num = getNumberValue(token);
+ if (num == -1) {
+ status = U_UNEXPECTED_TOKEN;
+ break;
+ }
+ curAndConstraint->rangeList->setElementAt(num, rangeLowIdx);
+ curAndConstraint->rangeList->setElementAt(num, rangeHiIdx);
}
else {
- curAndConstraint->rangeList->setElementAt(getNumberValue(token), rangeHiIdx);
+ int32_t num = getNumberValue(token);
+ if (num == -1) {
+ status = U_UNEXPECTED_TOKEN;
+ break;
+ }
+ curAndConstraint->rangeList->setElementAt(num, rangeHiIdx);
if (curAndConstraint->rangeList->elementAti(rangeLowIdx) >
curAndConstraint->rangeList->elementAti(rangeHiIdx)) {
// Range Lower bound > Range Upper bound.
@@ -836,9 +860,7 @@ PluralRules::getRuleFromResource(const Locale& locale, UPluralType type, UErrorC
for (;;) {
{
- CharString tmp;
- CharStringByteSink sink(&tmp);
- ulocimp_getParent(parentLocaleName.data(), sink, &status);
+ CharString tmp = ulocimp_getParent(parentLocaleName.data(), status);
if (tmp.isEmpty()) break;
parentLocaleName = std::move(tmp);
}
@@ -1258,13 +1280,8 @@ PluralRuleParser::~PluralRuleParser() {
int32_t
PluralRuleParser::getNumberValue(const UnicodeString& token) {
- int32_t i;
- char digits[128];
-
- i = token.extract(0, token.length(), digits, UPRV_LENGTHOF(digits), US_INV);
- digits[i]='\0';
-
- return((int32_t)atoi(digits));
+ int32_t pos = 0;
+ return ICU_Utility::parseNumber(token, pos, 10);
}
@@ -1758,7 +1775,9 @@ void FixedDecimal::init(double n, int32_t v, int64_t f, int32_t e, int32_t c) {
if (exponent == 0) {
exponent = c;
}
- if (_isNaN || _isInfinite) {
+ if (_isNaN || _isInfinite ||
+ source > static_cast<double>(U_INT64_MAX) ||
+ source < static_cast<double>(U_INT64_MIN)) {
v = 0;
f = 0;
intValue = 0;
diff --git a/icu4c/source/i18n/rbnf.cpp b/icu4c/source/i18n/rbnf.cpp
index 06599b4fd..a30b94590 100644
--- a/icu4c/source/i18n/rbnf.cpp
+++ b/icu4c/source/i18n/rbnf.cpp
@@ -1037,7 +1037,7 @@ RuleBasedNumberFormat::getNumberOfRuleSetDisplayNameLocales() const {
Locale
RuleBasedNumberFormat::getRuleSetDisplayNameLocale(int32_t index, UErrorCode& status) const {
if (U_FAILURE(status)) {
- return Locale("");
+ return {""};
}
if (localizations && index >= 0 && index < localizations->getNumberOfDisplayLocales()) {
UnicodeString name(true, localizations->getLocaleName(index), -1);
@@ -1048,7 +1048,7 @@ RuleBasedNumberFormat::getRuleSetDisplayNameLocale(int32_t index, UErrorCode& st
bp = (char *)uprv_malloc(cap);
if (bp == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return Locale("");
+ return {""};
}
}
name.extract(0, name.length(), bp, cap, UnicodeString::kInvariant);
@@ -1557,7 +1557,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali
// our rule list is an array of the appropriate size
fRuleSets = (NFRuleSet **)uprv_malloc((numRuleSets + 1) * sizeof(NFRuleSet *));
/* test for nullptr */
- if (fRuleSets == 0) {
+ if (fRuleSets == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1923,10 +1923,7 @@ RuleBasedNumberFormat::adoptDecimalFormatSymbols(DecimalFormatSymbols* symbolsTo
return; // do not allow caller to set decimalFormatSymbols to nullptr
}
- if (decimalFormatSymbols != nullptr) {
- delete decimalFormatSymbols;
- }
-
+ delete decimalFormatSymbols;
decimalFormatSymbols = symbolsToAdopt;
{
diff --git a/icu4c/source/i18n/rbt.cpp b/icu4c/source/i18n/rbt.cpp
index 2176e89fd..1ff04fd95 100644
--- a/icu4c/source/i18n/rbt.cpp
+++ b/icu4c/source/i18n/rbt.cpp
@@ -33,7 +33,7 @@ void RuleBasedTransliterator::_construct(const UnicodeString& rules,
UTransDirection direction,
UParseError& parseError,
UErrorCode& status) {
- fData = 0;
+ fData = nullptr;
isDataOwned = true;
if (U_FAILURE(status)) {
return;
@@ -153,7 +153,7 @@ RuleBasedTransliterator::RuleBasedTransliterator(const UnicodeString& id,
RuleBasedTransliterator::RuleBasedTransliterator(const UnicodeString& id,
TransliterationRuleData* theData,
UBool isDataAdopted) :
- Transliterator(id, 0),
+ Transliterator(id, nullptr),
fData(theData),
isDataOwned(isDataAdopted) {
setMaximumContextLength(fData->ruleSet.getMaximumContextLength());
diff --git a/icu4c/source/i18n/rbt.h b/icu4c/source/i18n/rbt.h
index 59fa286a4..fdb0047df 100644
--- a/icu4c/source/i18n/rbt.h
+++ b/icu4c/source/i18n/rbt.h
@@ -115,7 +115,7 @@ private:
*/
RuleBasedTransliterator(const UnicodeString& id,
const TransliterationRuleData* theData,
- UnicodeFilter* adoptedFilter = 0);
+ UnicodeFilter* adoptedFilter = nullptr);
friend class Transliterator; // to access following ct
diff --git a/icu4c/source/i18n/rbt_data.cpp b/icu4c/source/i18n/rbt_data.cpp
index f4212848c..0a08f9205 100644
--- a/icu4c/source/i18n/rbt_data.cpp
+++ b/icu4c/source/i18n/rbt_data.cpp
@@ -25,13 +25,13 @@ U_NAMESPACE_BEGIN
TransliterationRuleData::TransliterationRuleData(UErrorCode& status)
: UMemory(), ruleSet(status), variableNames(status),
- variables(0), variablesAreOwned(true)
+ variables(nullptr), variablesAreOwned(true)
{
if (U_FAILURE(status)) {
return;
}
variableNames.setValueDeleter(uprv_deleteUObject);
- variables = 0;
+ variables = nullptr;
variablesLength = 0;
}
@@ -46,7 +46,7 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData&
variableNames.setValueDeleter(uprv_deleteUObject);
int32_t pos = UHASH_FIRST;
const UHashElement *e;
- while ((e = other.variableNames.nextElement(pos)) != 0) {
+ while ((e = other.variableNames.nextElement(pos)) != nullptr) {
UnicodeString* value =
new UnicodeString(*(const UnicodeString*)e->value.pointer);
// Exit out if value could not be created.
@@ -56,11 +56,11 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData&
variableNames.put(*(UnicodeString*)e->key.pointer, value, status);
}
- variables = 0;
- if (other.variables != 0) {
+ variables = nullptr;
+ if (other.variables != nullptr) {
variables = (UnicodeFunctor **)uprv_malloc(variablesLength * sizeof(UnicodeFunctor *));
/* test for nullptr */
- if (variables == 0) {
+ if (variables == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -87,7 +87,7 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData&
}
TransliterationRuleData::~TransliterationRuleData() {
- if (variablesAreOwned && variables != 0) {
+ if (variablesAreOwned && variables != nullptr) {
for (int32_t i=0; i<variablesLength; ++i) {
delete variables[i];
}
@@ -98,19 +98,19 @@ TransliterationRuleData::~TransliterationRuleData() {
UnicodeFunctor*
TransliterationRuleData::lookup(UChar32 standIn) const {
int32_t i = standIn - variablesBase;
- return (i >= 0 && i < variablesLength) ? variables[i] : 0;
+ return (i >= 0 && i < variablesLength) ? variables[i] : nullptr;
}
UnicodeMatcher*
TransliterationRuleData::lookupMatcher(UChar32 standIn) const {
UnicodeFunctor *f = lookup(standIn);
- return (f != 0) ? f->toMatcher() : 0;
+ return f != nullptr ? f->toMatcher() : nullptr;
}
UnicodeReplacer*
TransliterationRuleData::lookupReplacer(UChar32 standIn) const {
UnicodeFunctor *f = lookup(standIn);
- return (f != 0) ? f->toReplacer() : 0;
+ return f != nullptr ? f->toReplacer() : nullptr;
}
diff --git a/icu4c/source/i18n/rbt_pars.cpp b/icu4c/source/i18n/rbt_pars.cpp
index 10482d5ed..880014b59 100644
--- a/icu4c/source/i18n/rbt_pars.cpp
+++ b/icu4c/source/i18n/rbt_pars.cpp
@@ -142,9 +142,9 @@ public:
const Hashtable* variableNames; // alias
- ParseData(const TransliterationRuleData* data = 0,
- const UVector* variablesVector = 0,
- const Hashtable* variableNames = 0);
+ ParseData(const TransliterationRuleData* data = nullptr,
+ const UVector* variablesVector = nullptr,
+ const Hashtable* variableNames = nullptr);
virtual ~ParseData();
@@ -196,7 +196,7 @@ const UnicodeFunctor* ParseData::lookupMatcher(UChar32 ch) const {
if (i >= 0 && i < variablesVector->size()) {
int32_t j = ch - data->variablesBase;
set = (j < variablesVector->size()) ?
- (UnicodeFunctor*) variablesVector->elementAt(j) : 0;
+ (UnicodeFunctor*) variablesVector->elementAt(j) : nullptr;
}
return set;
}
@@ -913,7 +913,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
delete (UnicodeFunctor*)variablesVector.orphanElementAt(0);
}
variableNames.removeAll();
- parseData = new ParseData(0, &variablesVector, &variableNames);
+ parseData = new ParseData(nullptr, &variablesVector, &variableNames);
if (parseData == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -1109,7 +1109,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
TransliterationRuleData* data = (TransliterationRuleData*)dataVector.elementAt(i);
data->variablesLength = variablesVector.size();
if (data->variablesLength == 0) {
- data->variables = 0;
+ data->variables = nullptr;
} else {
data->variables = (UnicodeFunctor**)uprv_malloc(data->variablesLength * sizeof(UnicodeFunctor*));
// nullptr pointer check
diff --git a/icu4c/source/i18n/rbt_rule.cpp b/icu4c/source/i18n/rbt_rule.cpp
index da8e4eaa1..4cf557e04 100644
--- a/icu4c/source/i18n/rbt_rule.cpp
+++ b/icu4c/source/i18n/rbt_rule.cpp
@@ -65,7 +65,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
const TransliterationRuleData* theData,
UErrorCode& status) :
UMemory(),
- segments(0),
+ segments(nullptr),
data(theData) {
if (U_FAILURE(status)) {
@@ -121,7 +121,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
anteContext = new StringMatcher(pattern, 0, anteContextLength,
false, *data);
/* test for nullptr */
- if (anteContext == 0) {
+ if (anteContext == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -132,7 +132,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
key = new StringMatcher(pattern, anteContextLength, anteContextLength + keyLength,
false, *data);
/* test for nullptr */
- if (key == 0) {
+ if (key == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -144,7 +144,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
postContext = new StringMatcher(pattern, anteContextLength + keyLength, pattern.length(),
false, *data);
/* test for nullptr */
- if (postContext == 0) {
+ if (postContext == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -152,7 +152,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
this->output = new StringReplacer(outputStr, cursorPosition + cursorOffset, data);
/* test for nullptr */
- if (this->output == 0) {
+ if (this->output == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
diff --git a/icu4c/source/i18n/rbt_set.cpp b/icu4c/source/i18n/rbt_set.cpp
index c0a2ccd86..23577f489 100644
--- a/icu4c/source/i18n/rbt_set.cpp
+++ b/icu4c/source/i18n/rbt_set.cpp
@@ -197,7 +197,7 @@ TransliterationRuleSet::TransliterationRuleSet(const TransliterationRuleSet& oth
ruleVector->adoptElement(tempTranslitRule.orphan(), status);
}
}
- if (other.rules != 0 && U_SUCCESS(status)) {
+ if (other.rules != nullptr && U_SUCCESS(status)) {
UParseError p;
freeze(p, status);
}
@@ -253,7 +253,7 @@ void TransliterationRuleSet::addRule(TransliterationRule* adoptedRule,
}
uprv_free(rules);
- rules = 0;
+ rules = nullptr;
}
/**
@@ -297,7 +297,7 @@ void TransliterationRuleSet::freeze(UParseError& parseError,UErrorCode& status)
*/
int16_t* indexValue = (int16_t*) uprv_malloc( sizeof(int16_t) * (n > 0 ? n : 1) );
/* test for nullptr */
- if (indexValue == 0) {
+ if (indexValue == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -341,7 +341,7 @@ void TransliterationRuleSet::freeze(UParseError& parseError,UErrorCode& status)
}
rules = (TransliterationRule **)uprv_malloc(v.size() * sizeof(TransliterationRule *));
/* test for nullptr */
- if (rules == 0) {
+ if (rules == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
diff --git a/icu4c/source/i18n/rbtz.cpp b/icu4c/source/i18n/rbtz.cpp
index e4d71436c..6bee2aa04 100644
--- a/icu4c/source/i18n/rbtz.cpp
+++ b/icu4c/source/i18n/rbtz.cpp
@@ -635,9 +635,7 @@ RuleBasedTimeZone::deleteRules() {
void
RuleBasedTimeZone::deleteTransitions() {
- if (fHistoricTransitions != nullptr) {
- delete fHistoricTransitions;
- }
+ delete fHistoricTransitions;
fHistoricTransitions = nullptr;
}
diff --git a/icu4c/source/i18n/regexcmp.cpp b/icu4c/source/i18n/regexcmp.cpp
index 0a0d095ca..1e599cd4e 100644
--- a/icu4c/source/i18n/regexcmp.cpp
+++ b/icu4c/source/i18n/regexcmp.cpp
@@ -3185,8 +3185,6 @@ void RegexCompile::matchStartType() {
// Matches can start with anything
fRXPat->fStartType = START_NO_INFO;
}
-
- return;
}
diff --git a/icu4c/source/i18n/regexcst.h b/icu4c/source/i18n/regexcst.h
index a475b6b36..02a95da85 100644
--- a/icu4c/source/i18n/regexcst.h
+++ b/icu4c/source/i18n/regexcst.h
@@ -357,214 +357,214 @@ static const struct RegexTableEl gRuleParseStateTable[] = {
, {doSetFinish, 255, 14,0, false} // 205 set-finish
, {doExit, 255, 206,0, true} // 206 errorDeath
};
-static const char * const RegexStateNames[] = { 0,
+static const char * const RegexStateNames[] = {nullptr,
"start",
"term",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"expr-quant",
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"expr-cont",
- 0,
- 0,
+ nullptr,
+ nullptr,
"open-paren-quant",
- 0,
+ nullptr,
"open-paren-quant2",
- 0,
+ nullptr,
"open-paren",
- 0,
+ nullptr,
"open-paren-extended",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"open-paren-lookbehind",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"paren-comment",
- 0,
- 0,
+ nullptr,
+ nullptr,
"paren-flag",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"named-capture",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"quant-star",
- 0,
- 0,
+ nullptr,
+ nullptr,
"quant-plus",
- 0,
- 0,
+ nullptr,
+ nullptr,
"quant-opt",
- 0,
- 0,
+ nullptr,
+ nullptr,
"interval-open",
- 0,
+ nullptr,
"interval-lower",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"interval-upper",
- 0,
- 0,
+ nullptr,
+ nullptr,
"interval-type",
- 0,
- 0,
+ nullptr,
+ nullptr,
"backslash",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"named-backref",
- 0,
+ nullptr,
"named-backref-2",
- 0,
+ nullptr,
"named-backref-3",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"set-open",
- 0,
- 0,
+ nullptr,
+ nullptr,
"set-open2",
- 0,
+ nullptr,
"set-posix",
- 0,
- 0,
+ nullptr,
+ nullptr,
"set-start",
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-start-dash",
- 0,
+ nullptr,
"set-start-amp",
- 0,
+ nullptr,
"set-after-lit",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-after-set",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-after-range",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-after-op",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"set-set-amp",
- 0,
- 0,
+ nullptr,
+ nullptr,
"set-lit-amp",
- 0,
+ nullptr,
"set-set-dash",
- 0,
- 0,
+ nullptr,
+ nullptr,
"set-range-dash",
- 0,
+ nullptr,
"set-range-amp",
- 0,
+ nullptr,
"set-lit-dash",
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-lit-dash-escape",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-escape",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-finish",
"errorDeath",
- 0};
+ nullptr};
U_NAMESPACE_END
#endif
diff --git a/icu4c/source/i18n/region.cpp b/icu4c/source/i18n/region.cpp
index 26440b659..839a252e1 100644
--- a/icu4c/source/i18n/region.cpp
+++ b/icu4c/source/i18n/region.cpp
@@ -455,12 +455,8 @@ Region::Region ()
}
Region::~Region () {
- if (containedRegions) {
- delete containedRegions;
- }
- if (preferredValues) {
- delete preferredValues;
- }
+ delete containedRegions;
+ delete preferredValues;
}
/**
diff --git a/icu4c/source/i18n/reldatefmt.cpp b/icu4c/source/i18n/reldatefmt.cpp
index ebdf6c971..c3c450f37 100644
--- a/icu4c/source/i18n/reldatefmt.cpp
+++ b/icu4c/source/i18n/reldatefmt.cpp
@@ -1380,7 +1380,7 @@ ureldatefmt_formatNumericToResult(
if (U_FAILURE(*status)) {
return;
}
- auto* fmt = reinterpret_cast<const RelativeDateTimeFormatter*>(reldatefmt);
+ const auto* fmt = reinterpret_cast<const RelativeDateTimeFormatter*>(reldatefmt);
auto* resultImpl = UFormattedRelativeDateTimeApiHelper::validate(result, *status);
resultImpl->fImpl = fmt->formatNumericToValue(offset, unit, *status);
}
@@ -1423,7 +1423,7 @@ ureldatefmt_formatToResult(
if (U_FAILURE(*status)) {
return;
}
- auto* fmt = reinterpret_cast<const RelativeDateTimeFormatter*>(reldatefmt);
+ const auto* fmt = reinterpret_cast<const RelativeDateTimeFormatter*>(reldatefmt);
auto* resultImpl = UFormattedRelativeDateTimeApiHelper::validate(result, *status);
resultImpl->fImpl = fmt->formatToValue(offset, unit, *status);
}
diff --git a/icu4c/source/i18n/rematch.cpp b/icu4c/source/i18n/rematch.cpp
index 7a39afbf7..c76f0c55b 100644
--- a/icu4c/source/i18n/rematch.cpp
+++ b/icu4c/source/i18n/rematch.cpp
@@ -165,9 +165,7 @@ RegexMatcher::~RegexMatcher() {
fPattern = nullptr;
}
- if (fInput) {
- delete fInput;
- }
+ delete fInput;
if (fInputText) {
utext_close(fInputText);
}
@@ -4278,7 +4276,6 @@ breakFromLoop:
fFrame = fp; // The active stack frame when the engine stopped.
// Contains the capture group results that we need to
// access later.
- return;
}
@@ -5720,8 +5717,6 @@ breakFromLoop:
fFrame = fp; // The active stack frame when the engine stopped.
// Contains the capture group results that we need to
// access later.
-
- return;
}
diff --git a/icu4c/source/i18n/remtrans.cpp b/icu4c/source/i18n/remtrans.cpp
index 40af1845c..015adb8d0 100644
--- a/icu4c/source/i18n/remtrans.cpp
+++ b/icu4c/source/i18n/remtrans.cpp
@@ -44,13 +44,13 @@ void RemoveTransliterator::registerIDs() {
UNICODE_STRING_SIMPLE("Null"), false);
}
-RemoveTransliterator::RemoveTransliterator() : Transliterator(UnicodeString(true, ::CURR_ID, -1), 0) {}
+RemoveTransliterator::RemoveTransliterator() : Transliterator(UnicodeString(true, ::CURR_ID, -1), nullptr) {}
RemoveTransliterator::~RemoveTransliterator() {}
RemoveTransliterator* RemoveTransliterator::clone() const {
RemoveTransliterator* result = new RemoveTransliterator();
- if (result != nullptr && getFilter() != 0) {
+ if (result != nullptr && getFilter() != nullptr) {
result->adoptFilter(getFilter()->clone());
}
return result;
diff --git a/icu4c/source/i18n/repattrn.cpp b/icu4c/source/i18n/repattrn.cpp
index c0a88f70d..67577436e 100644
--- a/icu4c/source/i18n/repattrn.cpp
+++ b/icu4c/source/i18n/repattrn.cpp
@@ -164,7 +164,7 @@ RegexPattern &RegexPattern::operator = (const RegexPattern &other) {
//--------------------------------------------------------------------------
void RegexPattern::init() {
fFlags = 0;
- fCompiledPat = 0;
+ fCompiledPat = nullptr;
fLiteralText.remove();
fSets = nullptr;
fSets8 = nullptr;
@@ -233,9 +233,7 @@ void RegexPattern::zap() {
for (i=1; i<fSets->size(); i++) {
UnicodeSet *s;
s = (UnicodeSet *)fSets->elementAt(i);
- if (s != nullptr) {
- delete s;
- }
+ delete s;
}
delete fSets;
fSets = nullptr;
@@ -579,7 +577,7 @@ UnicodeString RegexPattern::pattern() const {
if (fPatternString != nullptr) {
return *fPatternString;
} else if (fPattern == nullptr) {
- return UnicodeString();
+ return {};
} else {
UErrorCode status = U_ZERO_ERROR;
int64_t nativeLen = utext_nativeLength(fPattern);
diff --git a/icu4c/source/i18n/rulebasedcollator.cpp b/icu4c/source/i18n/rulebasedcollator.cpp
index cf4cfc87f..685f44de3 100644
--- a/icu4c/source/i18n/rulebasedcollator.cpp
+++ b/icu4c/source/i18n/rulebasedcollator.cpp
@@ -32,7 +32,6 @@
#include "unicode/utf8.h"
#include "unicode/uversion.h"
#include "bocsu.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "collation.h"
@@ -1561,7 +1560,6 @@ RuleBasedCollator::internalGetShortDefinitionString(const char *locale,
// Append items in alphabetic order of their short definition letters.
CharString result;
- char subtag[ULOC_KEYWORD_AND_VALUES_CAPACITY];
if(attributeHasBeenSetExplicitly(UCOL_ALTERNATE_HANDLING)) {
appendAttribute(result, 'A', getAttribute(UCOL_ALTERNATE_HANDLING, errorCode), errorCode);
@@ -1581,30 +1579,27 @@ RuleBasedCollator::internalGetShortDefinitionString(const char *locale,
appendAttribute(result, 'F', getAttribute(UCOL_FRENCH_COLLATION, errorCode), errorCode);
}
// Note: UCOL_HIRAGANA_QUATERNARY_MODE is deprecated and never changes away from default.
- {
- CharString collation;
- CharStringByteSink sink(&collation);
- ulocimp_getKeywordValue(resultLocale, "collation", sink, &errorCode);
- appendSubtag(result, 'K', collation.data(), collation.length(), errorCode);
- }
- length = uloc_getLanguage(resultLocale, subtag, UPRV_LENGTHOF(subtag), &errorCode);
- if (length == 0) {
+ CharString collation = ulocimp_getKeywordValue(resultLocale, "collation", errorCode);
+ appendSubtag(result, 'K', collation.data(), collation.length(), errorCode);
+ CharString language;
+ CharString script;
+ CharString region;
+ CharString variant;
+ ulocimp_getSubtags(resultLocale, &language, &script, &region, &variant, nullptr, errorCode);
+ if (language.isEmpty()) {
appendSubtag(result, 'L', "root", 4, errorCode);
} else {
- appendSubtag(result, 'L', subtag, length, errorCode);
+ appendSubtag(result, 'L', language.data(), language.length(), errorCode);
}
if(attributeHasBeenSetExplicitly(UCOL_NORMALIZATION_MODE)) {
appendAttribute(result, 'N', getAttribute(UCOL_NORMALIZATION_MODE, errorCode), errorCode);
}
- length = uloc_getCountry(resultLocale, subtag, UPRV_LENGTHOF(subtag), &errorCode);
- appendSubtag(result, 'R', subtag, length, errorCode);
+ appendSubtag(result, 'R', region.data(), region.length(), errorCode);
if(attributeHasBeenSetExplicitly(UCOL_STRENGTH)) {
appendAttribute(result, 'S', getAttribute(UCOL_STRENGTH, errorCode), errorCode);
}
- length = uloc_getVariant(resultLocale, subtag, UPRV_LENGTHOF(subtag), &errorCode);
- appendSubtag(result, 'V', subtag, length, errorCode);
- length = uloc_getScript(resultLocale, subtag, UPRV_LENGTHOF(subtag), &errorCode);
- appendSubtag(result, 'Z', subtag, length, errorCode);
+ appendSubtag(result, 'V', variant.data(), variant.length(), errorCode);
+ appendSubtag(result, 'Z', script.data(), script.length(), errorCode);
if(U_FAILURE(errorCode)) { return 0; }
return result.extract(buffer, capacity, errorCode);
diff --git a/icu4c/source/i18n/simpletz.cpp b/icu4c/source/i18n/simpletz.cpp
index 8b21152f5..f14457715 100644
--- a/icu4c/source/i18n/simpletz.cpp
+++ b/icu4c/source/i18n/simpletz.cpp
@@ -519,7 +519,12 @@ SimpleTimeZone::getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingT
rawOffsetGMT = getRawOffset();
int32_t year, month, dom, dow, millis;
- int32_t day = ClockMath::floorDivide(date, U_MILLIS_PER_DAY, &millis);
+ double dday = ClockMath::floorDivide(date, U_MILLIS_PER_DAY, &millis);
+ if (dday > INT32_MAX || dday < INT32_MIN) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ int32_t day = dday;
Grego::dayToFields(day, year, month, dom, dow);
@@ -726,7 +731,7 @@ UBool SimpleTimeZone::inDaylightTime(UDate date, UErrorCode& status) const
if (U_FAILURE(status)) return false;
GregorianCalendar *gc = new GregorianCalendar(*this, status);
/* test for nullptr */
- if (gc == 0) {
+ if (gc == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -1049,18 +1054,10 @@ SimpleTimeZone::clearTransitionRules() {
void
SimpleTimeZone::deleteTransitionRules() {
- if (initialRule != nullptr) {
- delete initialRule;
- }
- if (firstTransition != nullptr) {
- delete firstTransition;
- }
- if (stdRule != nullptr) {
- delete stdRule;
- }
- if (dstRule != nullptr) {
- delete dstRule;
- }
+ delete initialRule;
+ delete firstTransition;
+ delete stdRule;
+ delete dstRule;
clearTransitionRules();
}
diff --git a/icu4c/source/i18n/smpdtfmt.cpp b/icu4c/source/i18n/smpdtfmt.cpp
index 628f7febe..2822e686f 100644
--- a/icu4c/source/i18n/smpdtfmt.cpp
+++ b/icu4c/source/i18n/smpdtfmt.cpp
@@ -332,9 +332,7 @@ SimpleDateFormat::~SimpleDateFormat()
if (fSharedNumberFormatters) {
freeSharedNumberFormatters(fSharedNumberFormatters);
}
- if (fTimeZoneFormat) {
- delete fTimeZoneFormat;
- }
+ delete fTimeZoneFormat;
delete fSimpleNumberFormatter;
#if !UCONFIG_NO_BREAK_ITERATION
@@ -507,7 +505,7 @@ SimpleDateFormat::SimpleDateFormat(const Locale& locale,
// This constructor doesn't fail; it uses last resort data
fSymbols = new DateFormatSymbols(status);
/* test for nullptr */
- if (fSymbols == 0) {
+ if (fSymbols == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -709,7 +707,7 @@ void SimpleDateFormat::construct(EStyle timeStyle,
fSymbols = DateFormatSymbols::createForLocale(locale, status);
if (U_FAILURE(status)) return;
/* test for nullptr */
- if (fSymbols == 0) {
+ if (fSymbols == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -728,16 +726,17 @@ void SimpleDateFormat::construct(EStyle timeStyle,
if (locale.getKeywordValue("rg", nullptr, 0, dummyErr1) > 0 || locale.getKeywordValue("hours", nullptr, 0, dummyErr2) > 0) {
hasRgOrHcSubtag = true;
}
-
+
const char* baseLocID = locale.getBaseName();
- if (baseLocID[0]!=0 && uprv_strcmp(baseLocID,"und")!=0) {
+ if (baseLocID != nullptr && uprv_strcmp(baseLocID,"und")!=0) {
UErrorCode useStatus = U_ZERO_ERROR;
Locale baseLoc(baseLocID);
Locale validLoc(getLocale(ULOC_VALID_LOCALE, useStatus));
if (hasRgOrHcSubtag || (U_SUCCESS(useStatus) && validLoc!=baseLoc)) {
bool useDTPG = hasRgOrHcSubtag;
const char* baseReg = baseLoc.getCountry(); // empty string if no region
- if ((baseReg[0]!=0 && uprv_strncmp(baseReg,validLoc.getCountry(),ULOC_COUNTRY_CAPACITY)!=0)
+ if ((baseReg != nullptr && baseReg[0] != 0 &&
+ uprv_strncmp(baseReg,validLoc.getCountry(),ULOC_COUNTRY_CAPACITY)!=0)
|| uprv_strncmp(baseLoc.getLanguage(),validLoc.getLanguage(),ULOC_LANG_CAPACITY)!=0) {
// use DTPG if
// * baseLoc has a region and validLoc does not have the same one (or has none), OR
@@ -1074,7 +1073,8 @@ SimpleDateFormat::_format(Calendar& cal, UnicodeString& appendTo,
UDisplayContext capitalizationContext = getContext(UDISPCTX_TYPE_CAPITALIZATION, status);
// loop through the pattern string character by character
- for (int32_t i = 0; i < fPattern.length() && U_SUCCESS(status); ++i) {
+ int32_t patternLength = fPattern.length();
+ for (int32_t i = 0; i < patternLength && U_SUCCESS(status); ++i) {
char16_t ch = fPattern[i];
// Use subFormat() to format a repeated pattern character
@@ -1087,7 +1087,7 @@ SimpleDateFormat::_format(Calendar& cal, UnicodeString& appendTo,
if (ch == QUOTE) {
// Consecutive single quotes are a single quote literal,
// either outside of quotes or between quotes
- if ((i+1) < fPattern.length() && fPattern[i+1] == QUOTE) {
+ if ((i+1) < patternLength && fPattern[i+1] == QUOTE) {
appendTo += (char16_t)QUOTE;
++i;
} else {
@@ -1112,9 +1112,7 @@ SimpleDateFormat::_format(Calendar& cal, UnicodeString& appendTo,
prevCh, handler, *workCal, status);
}
- if (calClone != nullptr) {
- delete calClone;
- }
+ delete calClone;
return appendTo;
}
@@ -1310,7 +1308,7 @@ SimpleDateFormat::initSimpleNumberFormatter(UErrorCode &status) {
if (U_FAILURE(status)) {
return;
}
- auto* df = dynamic_cast<const DecimalFormat*>(fNumberFormat);
+ const auto* df = dynamic_cast<const DecimalFormat*>(fNumberFormat);
if (df == nullptr) {
return;
}
@@ -1480,6 +1478,9 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
Calendar& cal,
UErrorCode& status) const
{
+ static const int32_t maxIntCount = 10;
+ static const UnicodeString hebr(u"hebr");
+
if (U_FAILURE(status)) {
return;
}
@@ -1488,14 +1489,9 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// text for an individual pattern symbol (e.g., "HH" or "yyyy")
UDateFormatField patternCharIndex = DateFormatSymbols::getPatternCharIndex(ch);
- const int32_t maxIntCount = 10;
int32_t beginOffset = appendTo.length();
- const NumberFormat *currentNumberFormat;
DateFormatSymbols::ECapitalizationContextUsageType capContextUsageType = DateFormatSymbols::kCapContextUsageOther;
- UBool isHebrewCalendar = (uprv_strcmp(cal.getType(),"hebrew") == 0);
- UBool isChineseCalendar = (uprv_strcmp(cal.getType(),"chinese") == 0 || uprv_strcmp(cal.getType(),"dangi") == 0);
-
// if the pattern character is unrecognized, signal an error and dump out
if (patternCharIndex == UDAT_FIELD_COUNT)
{
@@ -1510,35 +1506,37 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// Don't get value unless it is useful
if (field < UCAL_FIELD_COUNT) {
value = (patternCharIndex != UDAT_RELATED_YEAR_FIELD)? cal.get(field, status): cal.getRelatedYear(status);
- }
- if (U_FAILURE(status)) {
- return;
+ if (U_FAILURE(status)) {
+ return;
+ }
}
- currentNumberFormat = getNumberFormatByIndex(patternCharIndex);
+ const NumberFormat *currentNumberFormat = getNumberFormatByIndex(patternCharIndex);
if (currentNumberFormat == nullptr) {
status = U_INTERNAL_PROGRAM_ERROR;
return;
}
- UnicodeString hebr("hebr", 4, US_INV);
switch (patternCharIndex) {
// for any "G" symbol, write out the appropriate era string
// "GGGG" is wide era name, "GGGGG" is narrow era name, anything else is abbreviated name
case UDAT_ERA_FIELD:
- if (isChineseCalendar) {
- zeroPaddingNumber(currentNumberFormat,appendTo, value, 1, 9); // as in ICU4J
- } else {
- if (count == 5) {
- _appendSymbol(appendTo, value, fSymbols->fNarrowEras, fSymbols->fNarrowErasCount);
- capContextUsageType = DateFormatSymbols::kCapContextUsageEraNarrow;
- } else if (count == 4) {
- _appendSymbol(appendTo, value, fSymbols->fEraNames, fSymbols->fEraNamesCount);
- capContextUsageType = DateFormatSymbols::kCapContextUsageEraWide;
+ {
+ const auto* calType = cal.getType();
+ if (uprv_strcmp(calType,"chinese") == 0 || uprv_strcmp(calType,"dangi") == 0) {
+ zeroPaddingNumber(currentNumberFormat,appendTo, value, 1, 9); // as in ICU4J
} else {
- _appendSymbol(appendTo, value, fSymbols->fEras, fSymbols->fErasCount);
- capContextUsageType = DateFormatSymbols::kCapContextUsageEraAbbrev;
+ if (count == 5) {
+ _appendSymbol(appendTo, value, fSymbols->fNarrowEras, fSymbols->fNarrowErasCount);
+ capContextUsageType = DateFormatSymbols::kCapContextUsageEraNarrow;
+ } else if (count == 4) {
+ _appendSymbol(appendTo, value, fSymbols->fEraNames, fSymbols->fEraNamesCount);
+ capContextUsageType = DateFormatSymbols::kCapContextUsageEraWide;
+ } else {
+ _appendSymbol(appendTo, value, fSymbols->fEras, fSymbols->fErasCount);
+ capContextUsageType = DateFormatSymbols::kCapContextUsageEraAbbrev;
+ }
}
}
break;
@@ -1577,7 +1575,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// for "MMMMM"/"LLLLL", use the narrow form
case UDAT_MONTH_FIELD:
case UDAT_STANDALONE_MONTH_FIELD:
- if ( isHebrewCalendar ) {
+ if (uprv_strcmp(cal.getType(),"hebrew") == 0) {
HebrewCalendar *hc = (HebrewCalendar*)&cal;
if (hc->isLeapYear(hc->get(UCAL_YEAR,status)) && value == 6 && count >= 3 )
value = 13; // Show alternate form for Adar II in leap years in Hebrew calendar.
@@ -1765,7 +1763,8 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
UDate date = cal.getTime(status);
const TimeZoneFormat *tzfmt = tzFormat(status);
if (U_SUCCESS(status)) {
- if (patternCharIndex == UDAT_TIMEZONE_FIELD) {
+ switch (patternCharIndex) {
+ case UDAT_TIMEZONE_FIELD:
if (count < 4) {
// "z", "zz", "zzz"
tzfmt->format(UTZFMT_STYLE_SPECIFIC_SHORT, tz, date, zoneString);
@@ -1775,8 +1774,8 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
tzfmt->format(UTZFMT_STYLE_SPECIFIC_LONG, tz, date, zoneString);
capContextUsageType = DateFormatSymbols::kCapContextUsageMetazoneLong;
}
- }
- else if (patternCharIndex == UDAT_TIMEZONE_RFC_FIELD) {
+ break;
+ case UDAT_TIMEZONE_RFC_FIELD:
if (count < 4) {
// "Z"
tzfmt->format(UTZFMT_STYLE_ISO_BASIC_LOCAL_FULL, tz, date, zoneString);
@@ -1787,8 +1786,8 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// "ZZ", "ZZZ", "ZZZZ"
tzfmt->format(UTZFMT_STYLE_LOCALIZED_GMT, tz, date, zoneString);
}
- }
- else if (patternCharIndex == UDAT_TIMEZONE_GENERIC_FIELD) {
+ break;
+ case UDAT_TIMEZONE_GENERIC_FIELD:
if (count == 1) {
// "v"
tzfmt->format(UTZFMT_STYLE_GENERIC_SHORT, tz, date, zoneString);
@@ -1798,8 +1797,8 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
tzfmt->format(UTZFMT_STYLE_GENERIC_LONG, tz, date, zoneString);
capContextUsageType = DateFormatSymbols::kCapContextUsageMetazoneLong;
}
- }
- else if (patternCharIndex == UDAT_TIMEZONE_SPECIAL_FIELD) {
+ break;
+ case UDAT_TIMEZONE_SPECIAL_FIELD:
if (count == 1) {
// "V"
tzfmt->format(UTZFMT_STYLE_ZONE_ID_SHORT, tz, date, zoneString);
@@ -1814,8 +1813,8 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
tzfmt->format(UTZFMT_STYLE_GENERIC_LOCATION, tz, date, zoneString);
capContextUsageType = DateFormatSymbols::kCapContextUsageZoneLong;
}
- }
- else if (patternCharIndex == UDAT_TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD) {
+ break;
+ case UDAT_TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD:
if (count == 1) {
// "O"
tzfmt->format(UTZFMT_STYLE_LOCALIZED_GMT_SHORT, tz, date, zoneString);
@@ -1823,8 +1822,8 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// "OOOO"
tzfmt->format(UTZFMT_STYLE_LOCALIZED_GMT, tz, date, zoneString);
}
- }
- else if (patternCharIndex == UDAT_TIMEZONE_ISO_FIELD) {
+ break;
+ case UDAT_TIMEZONE_ISO_FIELD:
if (count == 1) {
// "X"
tzfmt->format(UTZFMT_STYLE_ISO_BASIC_SHORT, tz, date, zoneString);
@@ -1841,8 +1840,8 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// "XXXXX"
tzfmt->format(UTZFMT_STYLE_ISO_EXTENDED_FULL, tz, date, zoneString);
}
- }
- else if (patternCharIndex == UDAT_TIMEZONE_ISO_LOCAL_FIELD) {
+ break;
+ case UDAT_TIMEZONE_ISO_LOCAL_FIELD:
if (count == 1) {
// "x"
tzfmt->format(UTZFMT_STYLE_ISO_BASIC_LOCAL_SHORT, tz, date, zoneString);
@@ -1859,8 +1858,8 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// "xxxxx"
tzfmt->format(UTZFMT_STYLE_ISO_EXTENDED_LOCAL_FULL, tz, date, zoneString);
}
- }
- else {
+ break;
+ default:
UPRV_UNREACHABLE_EXIT;
}
}
@@ -2157,21 +2156,29 @@ SimpleDateFormat::zeroPaddingNumber(
if (currentNumberFormat == fNumberFormat && fSimpleNumberFormatter) {
// Can use fast path
+ // We create UFormattedNumberData ourselves to avoid a heap allocation
+ // and corresponding free. Set the pointer to null afterwards to prevent
+ // the implementation from attempting to free it.
UErrorCode localStatus = U_ZERO_ERROR;
- number::SimpleNumber number = number::SimpleNumber::forInt64(value, localStatus);
+ number::impl::UFormattedNumberData data;
+ data.quantity.setToLong(value);
+ number::SimpleNumber number(&data, localStatus);
number.setMinimumIntegerDigits(minDigits, localStatus);
- number.truncateStart(maxDigits, localStatus);
+ number.setMaximumIntegerDigits(maxDigits, localStatus);
number::FormattedNumber result = fSimpleNumberFormatter->format(std::move(number), localStatus);
if (U_FAILURE(localStatus)) {
+ result.fData = nullptr;
return;
}
- appendTo.append(result.toTempString(localStatus));
+ UnicodeStringAppendable appendable(appendTo);
+ result.appendTo(appendable, localStatus);
+ result.fData = nullptr;
return;
}
// Check for RBNF (no clone necessary)
- auto* rbnf = dynamic_cast<const RuleBasedNumberFormat*>(currentNumberFormat);
+ const auto* rbnf = dynamic_cast<const RuleBasedNumberFormat*>(currentNumberFormat);
if (rbnf != nullptr) {
FieldPosition pos(FieldPosition::DONT_CARE);
rbnf->format(value, appendTo, pos); // 3rd arg is there to speed up processing
@@ -2645,12 +2652,8 @@ ExitParse:
cal.setTime(workCal->getTime(status), status);
}
- if (numericLeapMonthFormatter != nullptr) {
- delete numericLeapMonthFormatter;
- }
- if (calClone != nullptr) {
- delete calClone;
- }
+ delete numericLeapMonthFormatter;
+ delete calClone;
// If any Calendar calls failed, we pretend that we
// couldn't parse the string, when in reality this isn't quite accurate--
@@ -3911,7 +3914,7 @@ void SimpleDateFormat::parseInt(const UnicodeString& text,
UBool allowNegative,
const NumberFormat *fmt) const {
UnicodeString oldPrefix;
- auto* fmtAsDF = dynamic_cast<const DecimalFormat*>(fmt);
+ const auto* fmtAsDF = dynamic_cast<const DecimalFormat*>(fmt);
LocalPointer<DecimalFormat> df;
if (!allowNegative && fmtAsDF != nullptr) {
df.adoptInstead(fmtAsDF->clone());
diff --git a/icu4c/source/i18n/sources.txt b/icu4c/source/i18n/sources.txt
index a1af43b93..77532f556 100644
--- a/icu4c/source/i18n/sources.txt
+++ b/icu4c/source/i18n/sources.txt
@@ -94,6 +94,17 @@ measunit.cpp
measunit_extra.cpp
measure.cpp
msgfmt.cpp
+messageformat2.cpp
+messageformat2_arguments.cpp
+messageformat2_checker.cpp
+messageformat2_data_model.cpp
+messageformat2_errors.cpp
+messageformat2_evaluation.cpp
+messageformat2_formatter.cpp
+messageformat2_formattable.cpp
+messageformat2_function_registry.cpp
+messageformat2_parser.cpp
+messageformat2_serializer.cpp
name2uni.cpp
nfrs.cpp
nfrule.cpp
diff --git a/icu4c/source/i18n/string_segment.cpp b/icu4c/source/i18n/string_segment.cpp
index 2ddb738f4..ddfd6ebf6 100644
--- a/icu4c/source/i18n/string_segment.cpp
+++ b/icu4c/source/i18n/string_segment.cpp
@@ -62,7 +62,7 @@ UnicodeString StringSegment::toUnicodeString() const {
return UnicodeString(fStr.getBuffer() + fStart, fEnd - fStart);
}
-const UnicodeString StringSegment::toTempUnicodeString() const {
+UnicodeString StringSegment::toTempUnicodeString() const {
// Use the readonly-aliasing constructor for efficiency.
return UnicodeString(false, fStr.getBuffer() + fStart, fEnd - fStart);
}
diff --git a/icu4c/source/i18n/string_segment.h b/icu4c/source/i18n/string_segment.h
index b581f7e57..38eb62370 100644
--- a/icu4c/source/i18n/string_segment.h
+++ b/icu4c/source/i18n/string_segment.h
@@ -61,7 +61,7 @@ class U_I18N_API StringSegment : public UMemory {
UnicodeString toUnicodeString() const;
- const UnicodeString toTempUnicodeString() const;
+ UnicodeString toTempUnicodeString() const;
/**
* Returns the first code point in the string segment, or -1 if the string starts with an invalid
diff --git a/icu4c/source/i18n/strmatch.cpp b/icu4c/source/i18n/strmatch.cpp
index ff52eeacd..b6a5c94e9 100644
--- a/icu4c/source/i18n/strmatch.cpp
+++ b/icu4c/source/i18n/strmatch.cpp
@@ -98,7 +98,7 @@ UMatchDegree StringMatcher::matches(const Replaceable& text,
for (i=pattern.length()-1; i>=0; --i) {
char16_t keyChar = pattern.charAt(i);
UnicodeMatcher* subm = data->lookupMatcher(keyChar);
- if (subm == 0) {
+ if (subm == nullptr) {
if (cursor > limit &&
keyChar == text.charAt(cursor)) {
--cursor;
@@ -129,7 +129,7 @@ UMatchDegree StringMatcher::matches(const Replaceable& text,
}
char16_t keyChar = pattern.charAt(i);
UnicodeMatcher* subm = data->lookupMatcher(keyChar);
- if (subm == 0) {
+ if (subm == nullptr) {
// Don't need the cursor < limit check if
// incremental is true (because it's done above); do need
// it otherwise.
@@ -170,7 +170,7 @@ UnicodeString& StringMatcher::toPattern(UnicodeString& result,
for (int32_t i=0; i<pattern.length(); ++i) {
char16_t keyChar = pattern.charAt(i);
const UnicodeMatcher* m = data->lookupMatcher(keyChar);
- if (m == 0) {
+ if (m == nullptr) {
ICU_Utility::appendToRule(result, keyChar, false, escapeUnprintable, quoteBuf);
} else {
ICU_Utility::appendToRule(result, m->toPattern(str, escapeUnprintable),
@@ -195,7 +195,7 @@ UBool StringMatcher::matchesIndexValue(uint8_t v) const {
}
UChar32 c = pattern.char32At(0);
const UnicodeMatcher *m = data->lookupMatcher(c);
- return (m == 0) ? ((c & 0xFF) == v) : m->matchesIndexValue(v);
+ return (m == nullptr) ? ((c & 0xFF) == v) : m->matchesIndexValue(v);
}
/**
diff --git a/icu4c/source/i18n/stsearch.cpp b/icu4c/source/i18n/stsearch.cpp
index 395ce1cdc..3641d98e7 100644
--- a/icu4c/source/i18n/stsearch.cpp
+++ b/icu4c/source/i18n/stsearch.cpp
@@ -291,9 +291,9 @@ StringSearch * StringSearch::safeClone() const
m_breakiterator_,
status);
/* test for nullptr */
- if (result == 0) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
result->setOffset(getOffset(), status);
result->setMatchStart(m_strsrch_->search->matchedIndex);
diff --git a/icu4c/source/i18n/taiwncal.cpp b/icu4c/source/i18n/taiwncal.cpp
index 48f0b99e1..e6ffd71ba 100644
--- a/icu4c/source/i18n/taiwncal.cpp
+++ b/icu4c/source/i18n/taiwncal.cpp
@@ -20,6 +20,7 @@
#if !UCONFIG_NO_FORMATTING
#include "taiwncal.h"
+#include "gregoimp.h"
#include "unicode/gregocal.h"
#include "umutex.h"
#include <float.h>
@@ -30,7 +31,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TaiwanCalendar)
static const int32_t kTaiwanEraStart = 1911; // 1911 (Gregorian)
-static const int32_t kGregorianEpoch = 1970;
+static const int32_t kGregorianEpoch = 1970;
TaiwanCalendar::TaiwanCalendar(const Locale& aLocale, UErrorCode& success)
: GregorianCalendar(aLocale, success)
@@ -63,24 +64,37 @@ const char *TaiwanCalendar::getType() const
return "roc";
}
-int32_t TaiwanCalendar::handleGetExtendedYear()
+int32_t TaiwanCalendar::handleGetExtendedYear(UErrorCode& status)
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+
// EXTENDED_YEAR in TaiwanCalendar is a Gregorian year
// The default value of EXTENDED_YEAR is 1970 (Minguo 59)
- int32_t year = kGregorianEpoch;
-
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR
&& newerField(UCAL_EXTENDED_YEAR, UCAL_ERA) == UCAL_EXTENDED_YEAR) {
- year = internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
- } else {
- int32_t era = internalGet(UCAL_ERA, MINGUO);
- if(era == MINGUO) {
- year = internalGet(UCAL_YEAR, 1) + kTaiwanEraStart;
- } else if(era == BEFORE_MINGUO) {
- year = 1 - internalGet(UCAL_YEAR, 1) + kTaiwanEraStart;
- }
+ return internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
+ }
+ int32_t era = internalGet(UCAL_ERA, MINGUO);
+ int32_t year = internalGet(UCAL_YEAR, 1);
+ switch (era) {
+ case MINGUO:
+ if (uprv_add32_overflow(year, kTaiwanEraStart, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return year;
+ case BEFORE_MINGUO:
+ if (uprv_add32_overflow(1 + kTaiwanEraStart, -year, &year)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return year;
+ default:
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
}
- return year;
}
void TaiwanCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status)
@@ -98,85 +112,16 @@ void TaiwanCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status)
int32_t TaiwanCalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) const
{
- if(field == UCAL_ERA) {
- if(limitType == UCAL_LIMIT_MINIMUM || limitType == UCAL_LIMIT_GREATEST_MINIMUM) {
- return BEFORE_MINGUO;
- } else {
- return MINGUO;
- }
- } else {
+ if(field != UCAL_ERA) {
return GregorianCalendar::handleGetLimit(field,limitType);
}
-}
-
-#if 0
-void TaiwanCalendar::timeToFields(UDate theTime, UBool quick, UErrorCode& status)
-{
- //Calendar::timeToFields(theTime, quick, status);
-
- int32_t era = internalGet(UCAL_ERA);
- int32_t year = internalGet(UCAL_YEAR);
-
- if(era == GregorianCalendar::BC) {
- year = 1-year;
- era = TaiwanCalendar::MINGUO;
- } else if(era == GregorianCalendar::AD) {
- era = TaiwanCalendar::MINGUO;
- } else {
- status = U_INTERNAL_PROGRAM_ERROR;
+ if (limitType == UCAL_LIMIT_MINIMUM || limitType == UCAL_LIMIT_GREATEST_MINIMUM) {
+ return BEFORE_MINGUO;
}
-
- year = year - kTaiwanEraStart;
-
- internalSet(UCAL_ERA, era);
- internalSet(UCAL_YEAR, year);
+ return MINGUO;
}
-#endif
-
-/**
- * The system maintains a static default century start date and Year. They are
- * initialized the first time they are used. Once the system default century date
- * and year are set, they do not change.
- */
-static UDate gSystemDefaultCenturyStart = DBL_MIN;
-static int32_t gSystemDefaultCenturyStartYear = -1;
-static icu::UInitOnce gSystemDefaultCenturyInit {};
-UBool TaiwanCalendar::haveDefaultCentury() const
-{
- return true;
-}
-
-static void U_CALLCONV initializeSystemDefaultCentury()
-{
- // initialize systemDefaultCentury and systemDefaultCenturyYear based
- // on the current time. They'll be set to 80 years before
- // the current time.
- UErrorCode status = U_ZERO_ERROR;
- TaiwanCalendar calendar(Locale("@calendar=roc"),status);
- if (U_SUCCESS(status))
- {
- calendar.setTime(Calendar::getNow(), status);
- calendar.add(UCAL_YEAR, -80, status);
-
- gSystemDefaultCenturyStart = calendar.getTime(status);
- gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
- }
- // We have no recourse upon failure unless we want to propagate the failure
- // out.
-}
-
-UDate TaiwanCalendar::defaultCenturyStart() const {
- // lazy-evaluate systemDefaultCenturyStart
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStart;
-}
-
-int32_t TaiwanCalendar::defaultCenturyStartYear() const {
- // lazy-evaluate systemDefaultCenturyStartYear
- umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- return gSystemDefaultCenturyStartYear;
-}
+IMPL_SYSTEM_DEFAULT_CENTURY(TaiwanCalendar, "@calendar=roc")
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/taiwncal.h b/icu4c/source/i18n/taiwncal.h
index b0a30f910..a8fa3d182 100644
--- a/icu4c/source/i18n/taiwncal.h
+++ b/icu4c/source/i18n/taiwncal.h
@@ -139,7 +139,7 @@ private:
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Subclasses may override this method to compute several fields
* specific to each calendar system.
@@ -155,24 +155,7 @@ private:
*/
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- /**
- * Returns true because the Taiwan Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/timezone.cpp b/icu4c/source/i18n/timezone.cpp
index 02cbc78ce..2f6794c50 100644
--- a/icu4c/source/i18n/timezone.cpp
+++ b/icu4c/source/i18n/timezone.cpp
@@ -42,7 +42,9 @@
#include "unicode/utypes.h"
#include "unicode/ustring.h"
#include "uassert.h"
+#include "uinvchar.h"
#include "ustr_imp.h"
+#include "util.h"
#ifdef U_DEBUG_TZ
# include <stdio.h>
@@ -75,7 +77,6 @@ static char gStrBuf[256];
#include "unicode/gregocal.h"
#include "unicode/ures.h"
#include "unicode/tzfmt.h"
-#include "unicode/numfmt.h"
#include "gregoimp.h"
#include "uresimp.h" // struct UResourceBundle
#include "olsontz.h"
@@ -159,17 +160,17 @@ static UBool U_CALLCONV timeZone_cleanup()
LEN_SYSTEM_ZONES = 0;
uprv_free(MAP_SYSTEM_ZONES);
- MAP_SYSTEM_ZONES = 0;
+ MAP_SYSTEM_ZONES = nullptr;
gSystemZonesInitOnce.reset();
LEN_CANONICAL_SYSTEM_ZONES = 0;
uprv_free(MAP_CANONICAL_SYSTEM_ZONES);
- MAP_CANONICAL_SYSTEM_ZONES = 0;
+ MAP_CANONICAL_SYSTEM_ZONES = nullptr;
gCanonicalZonesInitOnce.reset();
LEN_CANONICAL_SYSTEM_LOCATION_ZONES = 0;
uprv_free(MAP_CANONICAL_SYSTEM_LOCATION_ZONES);
- MAP_CANONICAL_SYSTEM_LOCATION_ZONES = 0;
+ MAP_CANONICAL_SYSTEM_LOCATION_ZONES = nullptr;
gCanonicalLocationZonesInitOnce.reset();
return true;
@@ -282,7 +283,7 @@ static UResourceBundle* openOlsonResource(const UnicodeString& id,
char buf[128];
id.extract(0, sizeof(buf)-1, buf, sizeof(buf), "");
#endif
- UResourceBundle *top = ures_openDirect(0, kZONEINFO, &ec);
+ UResourceBundle *top = ures_openDirect(nullptr, kZONEINFO, &ec);
U_DEBUG_TZ_MSG(("pre: res sz=%d\n", ures_getSize(&res)));
/* &res = */ getZoneByName(top, id, &res, ec);
// Dereference if this is an alias. Docs say result should be 1
@@ -391,7 +392,7 @@ createSystemTimeZone(const UnicodeString& id, UErrorCode& ec) {
if (U_FAILURE(ec)) {
return nullptr;
}
- TimeZone* z = 0;
+ TimeZone* z = nullptr;
StackUResourceBundle res;
U_DEBUG_TZ_MSG(("pre-err=%s\n", u_errorName(ec)));
UResourceBundle *top = openOlsonResource(id, res.ref(), ec);
@@ -625,7 +626,7 @@ TimeZone::setDefault(const TimeZone& zone)
static void U_CALLCONV initMap(USystemTimeZoneType type, UErrorCode& ec) {
ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONE, timeZone_cleanup);
- UResourceBundle *res = ures_openDirect(0, kZONEINFO, &ec);
+ UResourceBundle *res = ures_openDirect(nullptr, kZONEINFO, &ec);
res = ures_getByKey(res, kNAMES, res, &ec); // dereference Zones section
if (U_SUCCESS(ec)) {
int32_t size = ures_getSize(res);
@@ -732,6 +733,11 @@ void TimeZone::getOffset(UDate date, UBool local, int32_t& rawOffset,
int32_t year, month, dom, dow, millis;
double day = ClockMath::floorDivide(date, U_MILLIS_PER_DAY, &millis);
+ // out of the range
+ if (day < INT32_MIN || day > INT32_MAX) {
+ ec = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
Grego::dayToFields(day, year, month, dom, dow);
dstOffset = getOffset(GregorianCalendar::AD, year, month, dom,
@@ -773,7 +779,7 @@ private:
UBool getID(int32_t i, UErrorCode& ec) {
int32_t idLen = 0;
const char16_t* id = nullptr;
- UResourceBundle *top = ures_openDirect(0, kZONEINFO, &ec);
+ UResourceBundle *top = ures_openDirect(nullptr, kZONEINFO, &ec);
top = ures_getByKey(top, kNAMES, top, &ec); // dereference Zones section
id = ures_getStringByIndex(top, i, &idLen, &ec);
if(U_FAILURE(ec)) {
@@ -849,7 +855,7 @@ public:
}
// Walk through the base map
- UResourceBundle *res = ures_openDirect(0, kZONEINFO, &ec);
+ UResourceBundle *res = ures_openDirect(nullptr, kZONEINFO, &ec);
res = ures_getByKey(res, kNAMES, res, &ec); // dereference Zones section
for (int32_t i = 0; i < baseLen; i++) {
int32_t zidx = baseMap[i];
@@ -964,7 +970,7 @@ public:
++pos;
return &unistr;
}
- return 0;
+ return nullptr;
}
virtual void reset(UErrorCode& /*status*/) override {
@@ -1369,123 +1375,94 @@ TimeZone::getCustomID(const UnicodeString& id, UnicodeString& normalized, UError
UBool
TimeZone::parseCustomID(const UnicodeString& id, int32_t& sign,
int32_t& hour, int32_t& min, int32_t& sec) {
- static const int32_t kParseFailed = -99999;
-
- NumberFormat* numberFormat = 0;
- UnicodeString idUppercase = id;
- idUppercase.toUpper("");
-
- if (id.length() > GMT_ID_LENGTH &&
- idUppercase.startsWith(GMT_ID, GMT_ID_LENGTH))
- {
- ParsePosition pos(GMT_ID_LENGTH);
- sign = 1;
- hour = 0;
- min = 0;
- sec = 0;
-
- if (id[pos.getIndex()] == MINUS /*'-'*/) {
- sign = -1;
- } else if (id[pos.getIndex()] != PLUS /*'+'*/) {
+ if (id.length() < GMT_ID_LENGTH) {
+ return false;
+ }
+ if (0 != u_strncasecmp(id.getBuffer(), GMT_ID, GMT_ID_LENGTH, 0)) {
+ return false;
+ }
+ sign = 1;
+ hour = 0;
+ min = 0;
+ sec = 0;
+
+ if (id[GMT_ID_LENGTH] == MINUS /*'-'*/) {
+ sign = -1;
+ } else if (id[GMT_ID_LENGTH] != PLUS /*'+'*/) {
+ return false;
+ }
+
+ int32_t start = GMT_ID_LENGTH + 1;
+ int32_t pos = start;
+ hour = ICU_Utility::parseNumber(id, pos, 10);
+ if (pos == id.length()) {
+ // Handle the following cases
+ // HHmmss
+ // Hmmss
+ // HHmm
+ // Hmm
+ // HH
+ // H
+
+ // Get all digits
+ // Should be 1 to 6 digits.
+ int32_t length = pos - start;
+ switch (length) {
+ case 1: // H
+ case 2: // HH
+ // already set to hour
+ break;
+ case 3: // Hmm
+ case 4: // HHmm
+ min = hour % 100;
+ hour /= 100;
+ break;
+ case 5: // Hmmss
+ case 6: // HHmmss
+ sec = hour % 100;
+ min = (hour/100) % 100;
+ hour /= 10000;
+ break;
+ default:
+ // invalid range
+ return false;
+ }
+ } else {
+ // Handle the following cases
+ // HH:mm:ss
+ // H:mm:ss
+ // HH:mm
+ // H:mm
+ if (pos - start < 1 || pos - start > 2 || id[pos] != COLON) {
return false;
}
- pos.setIndex(pos.getIndex() + 1);
-
- UErrorCode success = U_ZERO_ERROR;
- numberFormat = NumberFormat::createInstance(success);
- if(U_FAILURE(success)){
+ pos++; // skip : after H or HH
+ if (id.length() == pos) {
return false;
}
- numberFormat->setParseIntegerOnly(true);
- //numberFormat->setLenient(true); // TODO: May need to set this, depends on latest timezone parsing
-
- // Look for either hh:mm, hhmm, or hh
- int32_t start = pos.getIndex();
- Formattable n(kParseFailed);
- numberFormat->parse(id, n, pos);
- if (pos.getIndex() == start) {
- delete numberFormat;
+ start = pos;
+ min = ICU_Utility::parseNumber(id, pos, 10);
+ if (pos - start != 2) {
return false;
}
- hour = n.getLong();
-
- if (pos.getIndex() < id.length()) {
- if (pos.getIndex() - start > 2
- || id[pos.getIndex()] != COLON) {
- delete numberFormat;
+ if (id.length() > pos) {
+ if (id[pos] != COLON) {
return false;
}
- // hh:mm
- pos.setIndex(pos.getIndex() + 1);
- int32_t oldPos = pos.getIndex();
- n.setLong(kParseFailed);
- numberFormat->parse(id, n, pos);
- if ((pos.getIndex() - oldPos) != 2) {
- // must be 2 digits
- delete numberFormat;
+ pos++; // skip : after mm
+ start = pos;
+ sec = ICU_Utility::parseNumber(id, pos, 10);
+ if (pos - start != 2 || id.length() > pos) {
return false;
}
- min = n.getLong();
- if (pos.getIndex() < id.length()) {
- if (id[pos.getIndex()] != COLON) {
- delete numberFormat;
- return false;
- }
- // [:ss]
- pos.setIndex(pos.getIndex() + 1);
- oldPos = pos.getIndex();
- n.setLong(kParseFailed);
- numberFormat->parse(id, n, pos);
- if (pos.getIndex() != id.length()
- || (pos.getIndex() - oldPos) != 2) {
- delete numberFormat;
- return false;
- }
- sec = n.getLong();
- }
- } else {
- // Supported formats are below -
- //
- // HHmmss
- // Hmmss
- // HHmm
- // Hmm
- // HH
- // H
-
- int32_t length = pos.getIndex() - start;
- if (length <= 0 || 6 < length) {
- // invalid length
- delete numberFormat;
- return false;
- }
- switch (length) {
- case 1:
- case 2:
- // already set to hour
- break;
- case 3:
- case 4:
- min = hour % 100;
- hour /= 100;
- break;
- case 5:
- case 6:
- sec = hour % 100;
- min = (hour/100) % 100;
- hour /= 10000;
- break;
- }
}
-
- delete numberFormat;
-
- if (hour > kMAX_CUSTOM_HOUR || min > kMAX_CUSTOM_MIN || sec > kMAX_CUSTOM_SEC) {
- return false;
- }
- return true;
}
- return false;
+ if (hour > kMAX_CUSTOM_HOUR ||
+ min > kMAX_CUSTOM_MIN ||
+ sec > kMAX_CUSTOM_SEC) {
+ return false;
+ }
+ return true;
}
UnicodeString&
diff --git a/icu4c/source/i18n/tmutfmt.cpp b/icu4c/source/i18n/tmutfmt.cpp
index dc48b2ee2..9f7bc89ee 100644
--- a/icu4c/source/i18n/tmutfmt.cpp
+++ b/icu4c/source/i18n/tmutfmt.cpp
@@ -17,7 +17,6 @@
#include "unicode/localpointer.h"
#include "plurrule_impl.h"
#include "uvector.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -563,12 +562,7 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
CharString parentLocale(localeName, status);
U_ASSERT(countToPatterns != nullptr);
for (;;) {
- {
- CharString tmp;
- CharStringByteSink sink(&tmp);
- ulocimp_getParent(parentLocale.data(), sink, &status);
- parentLocale = std::move(tmp);
- }
+ parentLocale = ulocimp_getParent(parentLocale.data(), status);
// look for pattern for srcPluralCount in locale tree
LocalUResourceBundlePointer rb(ures_open(U_ICUDATA_UNIT, parentLocale.data(), &status));
LocalUResourceBundlePointer unitsRes(ures_getByKey(rb.getAlias(), key, nullptr, &status));
diff --git a/icu4c/source/i18n/translit.cpp b/icu4c/source/i18n/translit.cpp
index 29d38b12c..42256140b 100644
--- a/icu4c/source/i18n/translit.cpp
+++ b/icu4c/source/i18n/translit.cpp
@@ -96,7 +96,7 @@ static icu::UMutex registryMutex;
/**
* System transliterator registry; non-null when initialized.
*/
-static icu::TransliteratorRegistry* registry = 0;
+static icu::TransliteratorRegistry* registry = nullptr;
// Macro to check/initialize the registry. ONLY USE WITHIN
// MUTEX. Avoids function call when registry is initialized.
@@ -140,23 +140,21 @@ Transliterator::Transliterator(const UnicodeString& theID,
* Destructor.
*/
Transliterator::~Transliterator() {
- if (filter) {
- delete filter;
- }
+ delete filter;
}
/**
* Copy constructor.
*/
Transliterator::Transliterator(const Transliterator& other) :
- UObject(other), ID(other.ID), filter(0),
+ UObject(other), ID(other.ID), filter(nullptr),
maximumContextLength(other.maximumContextLength)
{
// NUL-terminate the ID string, which is a non-aliased copy.
ID.append((char16_t)0);
ID.truncate(ID.length()-1);
- if (other.filter != 0) {
+ if (other.filter != nullptr) {
// We own the filter, so we must have our own copy
filter = other.filter->clone();
}
@@ -176,7 +174,7 @@ Transliterator& Transliterator::operator=(const Transliterator& other) {
ID.getTerminatedBuffer();
maximumContextLength = other.maximumContextLength;
- adoptFilter((other.filter == 0) ? 0 : other.filter->clone());
+ adoptFilter(other.filter == nullptr ? nullptr : other.filter->clone());
return *this;
}
@@ -322,7 +320,7 @@ void Transliterator::transliterate(Replaceable& text,
void Transliterator::transliterate(Replaceable& text,
UTransPosition& index,
UErrorCode& status) const {
- _transliterate(text, index, 0, status);
+ _transliterate(text, index, nullptr, status);
}
/**
@@ -365,7 +363,7 @@ void Transliterator::_transliterate(Replaceable& text,
}
// int32_t originalStart = index.contextStart;
- if (insertion != 0) {
+ if (insertion != nullptr) {
text.handleReplaceBetween(index.limit, index.limit, *insertion);
index.limit += insertion->length();
index.contextLimit += insertion->length();
@@ -431,7 +429,7 @@ void Transliterator::filteredTransliterate(Replaceable& text,
UBool rollback) const {
// Short circuit path for transliterators with no filter in
// non-incremental mode.
- if (filter == 0 && !rollback) {
+ if (filter == nullptr && !rollback) {
handleTransliterate(text, index, incremental);
return;
}
@@ -915,7 +913,7 @@ Transliterator::createInstance(const UnicodeString& ID,
UErrorCode& status)
{
if (U_FAILURE(status)) {
- return 0;
+ return nullptr;
}
UnicodeString canonID;
@@ -978,8 +976,8 @@ Transliterator* Transliterator::createBasicInstance(const UnicodeString& id,
const UnicodeString* canon) {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
- TransliteratorAlias* alias = 0;
- Transliterator* t = 0;
+ TransliteratorAlias* alias = nullptr;
+ Transliterator* t = nullptr;
umtx_lock(&registryMutex);
if (HAVE_REGISTRY(ec)) {
@@ -990,7 +988,7 @@ Transliterator* Transliterator::createBasicInstance(const UnicodeString& id,
if (U_FAILURE(ec)) {
delete t;
delete alias;
- return 0;
+ return nullptr;
}
// We may have not gotten a transliterator: Because we can't
@@ -1000,7 +998,7 @@ Transliterator* Transliterator::createBasicInstance(const UnicodeString& id,
// registry mutex. The alias may, in turn, generate another alias, so
// we handle aliases in a loop. The max times through the loop is two.
// [alan]
- while (alias != 0) {
+ while (alias != nullptr) {
U_ASSERT(t==0);
// Rule-based aliases are handled with TransliteratorAlias::
// parse(), followed by TransliteratorRegistry::reget().
@@ -1010,7 +1008,7 @@ Transliterator* Transliterator::createBasicInstance(const UnicodeString& id,
TransliteratorParser parser(ec);
alias->parse(parser, pe, ec);
delete alias;
- alias = 0;
+ alias = nullptr;
// Step 2. reget
umtx_lock(&registryMutex);
@@ -1023,7 +1021,7 @@ Transliterator* Transliterator::createBasicInstance(const UnicodeString& id,
} else {
t = alias->create(pe, ec);
delete alias;
- alias = 0;
+ alias = nullptr;
break;
}
if (U_FAILURE(ec)) {
@@ -1062,7 +1060,7 @@ Transliterator::createFromRules(const UnicodeString& ID,
parser.parse(rules, dir, parseError, status);
if (U_FAILURE(status)) {
- return 0;
+ return nullptr;
}
// NOTE: The logic here matches that in TransliteratorRegistry.
@@ -1476,14 +1474,14 @@ char16_t Transliterator::filteredCharAt(const Replaceable& text, int32_t i) cons
* cannot itself proceed until the registry is initialized.
*/
UBool Transliterator::initializeRegistry(UErrorCode &status) {
- if (registry != 0) {
+ if (registry != nullptr) {
return true;
}
registry = new TransliteratorRegistry(status);
- if (registry == 0 || U_FAILURE(status)) {
+ if (registry == nullptr || U_FAILURE(status)) {
delete registry;
- registry = 0;
+ registry = nullptr;
return false; // can't create registry, no recovery
}
@@ -1526,7 +1524,7 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) {
UErrorCode lstatus = U_ZERO_ERROR;
UResourceBundle *bundle, *transIDs, *colBund;
bundle = ures_open(U_ICUDATA_TRANSLIT, nullptr/*open default locale*/, &lstatus);
- transIDs = ures_getByKey(bundle, RB_RULE_BASED_IDS, 0, &lstatus);
+ transIDs = ures_getByKey(bundle, RB_RULE_BASED_IDS, nullptr, &lstatus);
const UnicodeString T_PART = UNICODE_STRING_SIMPLE("-t-");
int32_t row, maxRows;
@@ -1539,7 +1537,7 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) {
if (U_SUCCESS(lstatus)) {
maxRows = ures_getSize(transIDs);
for (row = 0; row < maxRows; row++) {
- colBund = ures_getByIndex(transIDs, row, 0, &lstatus);
+ colBund = ures_getByIndex(transIDs, row, nullptr, &lstatus);
if (U_SUCCESS(lstatus)) {
UnicodeString id(ures_getKey(colBund), -1, US_INV);
if(id.indexOf(T_PART) != -1) {
diff --git a/icu4c/source/i18n/transreg.cpp b/icu4c/source/i18n/transreg.cpp
index 344107633..226edc6ff 100644
--- a/icu4c/source/i18n/transreg.cpp
+++ b/icu4c/source/i18n/transreg.cpp
@@ -85,7 +85,7 @@ TransliteratorAlias::TransliteratorAlias(const UnicodeString& theAliasID,
const UnicodeSet* cpdFilter) :
ID(),
aliasesOrRules(theAliasID),
- transes(0),
+ transes(nullptr),
compoundFilter(cpdFilter),
direction(UTRANS_FORWARD),
type(TransliteratorAlias::SIMPLE) {
@@ -108,8 +108,8 @@ TransliteratorAlias::TransliteratorAlias(const UnicodeString& theID,
UTransDirection dir) :
ID(theID),
aliasesOrRules(rules),
- transes(0),
- compoundFilter(0),
+ transes(nullptr),
+ compoundFilter(nullptr),
direction(dir),
type(TransliteratorAlias::RULES) {
}
@@ -122,16 +122,16 @@ TransliteratorAlias::~TransliteratorAlias() {
Transliterator* TransliteratorAlias::create(UParseError& pe,
UErrorCode& ec) {
if (U_FAILURE(ec)) {
- return 0;
+ return nullptr;
}
Transliterator *t = nullptr;
switch (type) {
case SIMPLE:
t = Transliterator::createInstance(aliasesOrRules, UTRANS_FORWARD, pe, ec);
if(U_FAILURE(ec)){
- return 0;
+ return nullptr;
}
- if (compoundFilter != 0)
+ if (compoundFilter != nullptr)
t->adoptFilter(compoundFilter->clone());
break;
case COMPOUND:
@@ -171,9 +171,9 @@ Transliterator* TransliteratorAlias::create(UParseError& pe,
t = new CompoundTransliterator(ID, transliterators,
(compoundFilter ? compoundFilter->clone() : nullptr),
anonymousRBTs, pe, ec);
- if (t == 0) {
+ if (t == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
} else {
for (int32_t i = 0; i < transliterators.size(); i++)
@@ -253,7 +253,7 @@ class TransliteratorSpec : public UMemory {
TransliteratorSpec::TransliteratorSpec(const UnicodeString& theSpec)
: top(theSpec),
- res(0)
+ res(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
Locale topLoc("");
@@ -261,12 +261,12 @@ TransliteratorSpec::TransliteratorSpec(const UnicodeString& theSpec)
if (!topLoc.isBogus()) {
res = new ResourceBundle(U_ICUDATA_TRANSLIT, topLoc, status);
/* test for nullptr */
- if (res == 0) {
+ if (res == nullptr) {
return;
}
if (U_FAILURE(status) || status == U_USING_DEFAULT_WARNING) {
delete res;
- res = 0;
+ res = nullptr;
}
}
@@ -281,7 +281,7 @@ TransliteratorSpec::TransliteratorSpec(const UnicodeString& theSpec)
}
// Canonicalize top
- if (res != 0) {
+ if (res != nullptr) {
// Canonicalize locale name
UnicodeString locStr;
LocaleUtility::initNameFromLocale(topLoc, locStr);
@@ -308,7 +308,7 @@ UBool TransliteratorSpec::hasFallback() const {
void TransliteratorSpec::reset() {
if (spec != top) {
spec = top;
- isSpecLocale = (res != 0);
+ isSpecLocale = (res != nullptr);
setupNext();
}
}
@@ -474,7 +474,7 @@ private:
};
TransliteratorEntry::TransliteratorEntry() {
- u.prototype = 0;
+ u.prototype = nullptr;
compoundFilter = nullptr;
entryType = NONE;
DEBUG_newEntry(this);
@@ -553,7 +553,7 @@ Transliterator* TransliteratorRegistry::get(const UnicodeString& ID,
UErrorCode& status) {
U_ASSERT(aliasReturn == nullptr);
TransliteratorEntry *entry = find(ID);
- return (entry == 0) ? 0
+ return entry == nullptr ? nullptr
: instantiateEntry(ID, entry, aliasReturn, status);
}
@@ -564,11 +564,11 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID,
U_ASSERT(aliasReturn == nullptr);
TransliteratorEntry *entry = find(ID);
- if (entry == 0) {
+ if (entry == nullptr) {
// We get to this point if there are two threads, one of which
// is instantiating an ID, and another of which is removing
// the same ID from the registry, and the timing is just right.
- return 0;
+ return nullptr;
}
// The usage model for the caller is that they will first call
@@ -588,7 +588,7 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID,
entry->entryType == TransliteratorEntry::LOCALE_RULES) {
if (parser.idBlockVector.isEmpty() && parser.dataVector.isEmpty()) {
- entry->u.data = 0;
+ entry->u.data = nullptr;
entry->entryType = TransliteratorEntry::ALIAS;
entry->stringArg = UNICODE_STRING_SIMPLE("Any-nullptr");
}
@@ -771,14 +771,14 @@ int32_t TransliteratorRegistry::countAvailableSources() const {
UnicodeString& TransliteratorRegistry::getAvailableSource(int32_t index,
UnicodeString& result) const {
int32_t pos = UHASH_FIRST;
- const UHashElement *e = 0;
+ const UHashElement* e = nullptr;
while (index-- >= 0) {
e = specDAG.nextElement(pos);
- if (e == 0) {
+ if (e == nullptr) {
break;
}
}
- if (e == 0) {
+ if (e == nullptr) {
result.truncate(0);
} else {
result = *(UnicodeString*) e->key.pointer;
@@ -788,26 +788,26 @@ UnicodeString& TransliteratorRegistry::getAvailableSource(int32_t index,
int32_t TransliteratorRegistry::countAvailableTargets(const UnicodeString& source) const {
Hashtable *targets = (Hashtable*) specDAG.get(source);
- return (targets == 0) ? 0 : targets->count();
+ return (targets == nullptr) ? 0 : targets->count();
}
UnicodeString& TransliteratorRegistry::getAvailableTarget(int32_t index,
const UnicodeString& source,
UnicodeString& result) const {
Hashtable *targets = (Hashtable*) specDAG.get(source);
- if (targets == 0) {
+ if (targets == nullptr) {
result.truncate(0); // invalid source
return result;
}
int32_t pos = UHASH_FIRST;
- const UHashElement *e = 0;
+ const UHashElement* e = nullptr;
while (index-- >= 0) {
e = targets->nextElement(pos);
- if (e == 0) {
+ if (e == nullptr) {
break;
}
}
- if (e == 0) {
+ if (e == nullptr) {
result.truncate(0); // invalid index
} else {
result = *(UnicodeString*) e->key.pointer;
@@ -818,7 +818,7 @@ UnicodeString& TransliteratorRegistry::getAvailableTarget(int32_t index,
int32_t TransliteratorRegistry::countAvailableVariants(const UnicodeString& source,
const UnicodeString& target) const {
Hashtable *targets = (Hashtable*) specDAG.get(source);
- if (targets == 0) {
+ if (targets == nullptr) {
return 0;
}
uint32_t varMask = targets->geti(target);
@@ -837,7 +837,7 @@ UnicodeString& TransliteratorRegistry::getAvailableVariant(int32_t index,
const UnicodeString& target,
UnicodeString& result) const {
Hashtable *targets = (Hashtable*) specDAG.get(source);
- if (targets == 0) {
+ if (targets == nullptr) {
result.truncate(0); // invalid source
return result;
}
@@ -986,7 +986,7 @@ void TransliteratorRegistry::registerSTV(const UnicodeString& source,
// assert(target.length() > 0);
UErrorCode status = U_ZERO_ERROR;
Hashtable *targets = (Hashtable*) specDAG.get(source);
- if (targets == 0) {
+ if (targets == nullptr) {
int32_t size = 3;
if (source.compare(ANY,3) == 0) {
size = ANY_TARGETS_INIT_SIZE;
@@ -1084,7 +1084,7 @@ TransliteratorEntry* TransliteratorRegistry::findInDynamicStore(const Transliter
TransliteratorEntry* TransliteratorRegistry::findInStaticStore(const TransliteratorSpec& src,
const TransliteratorSpec& trg,
const UnicodeString& variant) {
- TransliteratorEntry* entry = 0;
+ TransliteratorEntry* entry = nullptr;
if (src.isLocale()) {
entry = findInBundle(src, trg, variant, UTRANS_FORWARD);
} else if (trg.isLocale()) {
@@ -1093,7 +1093,7 @@ TransliteratorEntry* TransliteratorRegistry::findInStaticStore(const Translitera
// If we found an entry, store it in the Hashtable for next
// time.
- if (entry != 0) {
+ if (entry != nullptr) {
registerEntry(src.getTop(), trg.getTop(), variant, entry, false);
}
@@ -1179,7 +1179,7 @@ TransliteratorEntry* TransliteratorRegistry::findInBundle(const TransliteratorSp
// We have succeeded in loading a string from the locale
// resources. Create a new registry entry to hold it and return it.
TransliteratorEntry *entry = new TransliteratorEntry();
- if (entry != 0) {
+ if (entry != nullptr) {
// The direction is always forward for the
// TransliterateTo_xxx and TransliterateFrom_xxx
// items; those are unidirectional forward rules.
@@ -1240,7 +1240,7 @@ TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source,
UnicodeString ID;
TransliteratorIDParser::STVtoID(source, target, variant, ID);
entry = (TransliteratorEntry*) registry.get(ID);
- if (entry != 0) {
+ if (entry != nullptr) {
// std::string ss;
// std::cout << ID.toUTF8String(ss) << std::endl;
return entry;
@@ -1250,13 +1250,13 @@ TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source,
// Seek exact match in hashtable
entry = findInDynamicStore(src, trg, variant);
- if (entry != 0) {
+ if (entry != nullptr) {
return entry;
}
-
+
// Seek exact match in locale resources
entry = findInStaticStore(src, trg, variant);
- if (entry != 0) {
+ if (entry != nullptr) {
return entry;
}
}
@@ -1266,13 +1266,13 @@ TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source,
for (;;) {
// Seek match in hashtable
entry = findInDynamicStore(src, trg, NO_VARIANT);
- if (entry != 0) {
+ if (entry != nullptr) {
return entry;
}
-
+
// Seek match in locale resources
entry = findInStaticStore(src, trg, NO_VARIANT);
- if (entry != 0) {
+ if (entry != nullptr) {
return entry;
}
if (!src.hasFallback()) {
@@ -1286,7 +1286,7 @@ TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source,
trg.next();
}
- return 0;
+ return nullptr;
}
/**
@@ -1305,31 +1305,31 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID
TransliteratorEntry *entry,
TransliteratorAlias* &aliasReturn,
UErrorCode& status) {
- Transliterator *t = 0;
+ Transliterator* t = nullptr;
U_ASSERT(aliasReturn == 0);
switch (entry->entryType) {
case TransliteratorEntry::RBT_DATA:
t = new RuleBasedTransliterator(ID, entry->u.data);
- if (t == 0) {
+ if (t == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return t;
case TransliteratorEntry::PROTOTYPE:
t = entry->u.prototype->clone();
- if (t == 0) {
+ if (t == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return t;
case TransliteratorEntry::ALIAS:
aliasReturn = new TransliteratorAlias(entry->stringArg, entry->compoundFilter);
- if (aliasReturn == 0) {
+ if (aliasReturn == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
- return 0;
+ return nullptr;
case TransliteratorEntry::FACTORY:
t = entry->u.factory.function(ID, entry->u.factory.context);
- if (t == 0) {
+ if (t == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return t;
@@ -1346,29 +1346,29 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID
// TODO: Should passNumber be turned into a decimal-string representation (1 -> "1")?
Transliterator* tl = new RuleBasedTransliterator(UnicodeString(CompoundTransliterator::PASS_STRING) + UnicodeString(passNumber++),
(TransliterationRuleData*)(entry->u.dataVector->elementAt(i)), false);
- if (tl == 0)
+ if (tl == nullptr)
status = U_MEMORY_ALLOCATION_ERROR;
else
rbts->adoptElement(tl, status);
}
if (U_FAILURE(status)) {
delete rbts;
- return 0;
+ return nullptr;
}
rbts->setDeleter(nullptr);
aliasReturn = new TransliteratorAlias(ID, entry->stringArg, rbts, entry->compoundFilter);
}
- if (aliasReturn == 0) {
+ if (aliasReturn == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
- return 0;
+ return nullptr;
case TransliteratorEntry::LOCALE_RULES:
aliasReturn = new TransliteratorAlias(ID, entry->stringArg,
(UTransDirection) entry->intArg);
- if (aliasReturn == 0) {
+ if (aliasReturn == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
- return 0;
+ return nullptr;
case TransliteratorEntry::RULES_FORWARD:
case TransliteratorEntry::RULES_REVERSE:
// Process the rule data into a TransliteratorRuleData object,
@@ -1404,12 +1404,12 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID
aliasReturn = new TransliteratorAlias(ID, rules,
((entry->entryType == TransliteratorEntry::RULES_REVERSE) ?
UTRANS_REVERSE : UTRANS_FORWARD));
- if (aliasReturn == 0) {
+ if (aliasReturn == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
//}
}
- return 0;
+ return nullptr;
default:
UPRV_UNREACHABLE_EXIT; // can't get here
}
diff --git a/icu4c/source/i18n/tridpars.cpp b/icu4c/source/i18n/tridpars.cpp
index 6c23a0dc9..40f21b452 100644
--- a/icu4c/source/i18n/tridpars.cpp
+++ b/icu4c/source/i18n/tridpars.cpp
@@ -279,9 +279,9 @@ UnicodeSet* TransliteratorIDParser::parseGlobalFilter(const UnicodeString& id, i
UErrorCode ec = U_ZERO_ERROR;
filter = new UnicodeSet(id, ppos, USET_IGNORE_SPACE, nullptr, ec);
/* test for nullptr */
- if (filter == 0) {
+ if (filter == nullptr) {
pos = start;
- return 0;
+ return nullptr;
}
if (U_FAILURE(ec)) {
delete filter;
diff --git a/icu4c/source/i18n/tzfmt.cpp b/icu4c/source/i18n/tzfmt.cpp
index ed53438c4..00c69ee77 100644
--- a/icu4c/source/i18n/tzfmt.cpp
+++ b/icu4c/source/i18n/tzfmt.cpp
@@ -19,7 +19,6 @@
#include "unicode/udat.h"
#include "unicode/ustring.h"
#include "unicode/utf16.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "tzgnames.h"
#include "cmemory.h"
@@ -158,15 +157,11 @@ U_CDECL_BEGIN
*/
static UBool U_CALLCONV tzfmt_cleanup()
{
- if (gZoneIdTrie != nullptr) {
- delete gZoneIdTrie;
- }
+ delete gZoneIdTrie;
gZoneIdTrie = nullptr;
gZoneIdTrieInitOnce.reset();
- if (gShortZoneIdTrie != nullptr) {
- delete gShortZoneIdTrie;
- }
+ delete gShortZoneIdTrie;
gShortZoneIdTrie = nullptr;
gShortZoneIdTrieInitOnce.reset();
@@ -327,17 +322,14 @@ TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status)
const char* region = fLocale.getCountry();
int32_t regionLen = static_cast<int32_t>(uprv_strlen(region));
if (regionLen == 0) {
- CharString loc;
- {
- CharStringByteSink sink(&loc);
- ulocimp_addLikelySubtags(fLocale.getName(), sink, &status);
- }
+ UErrorCode tempStatus = U_ZERO_ERROR;
+ CharString loc = ulocimp_addLikelySubtags(fLocale.getName(), tempStatus);
- regionLen = uloc_getCountry(loc.data(), fTargetRegion, sizeof(fTargetRegion), &status);
- if (U_SUCCESS(status)) {
+ regionLen = uloc_getCountry(loc.data(), fTargetRegion, sizeof(fTargetRegion), &tempStatus);
+ if (U_SUCCESS(tempStatus)) {
fTargetRegion[regionLen] = 0;
} else {
- return;
+ fTargetRegion[0] = 0;
}
} else if (regionLen < (int32_t)sizeof(fTargetRegion)) {
uprv_strcpy(fTargetRegion, region);
diff --git a/icu4c/source/i18n/tzgnames.cpp b/icu4c/source/i18n/tzgnames.cpp
index d55b0fd2a..19ad38404 100644
--- a/icu4c/source/i18n/tzgnames.cpp
+++ b/icu4c/source/i18n/tzgnames.cpp
@@ -21,7 +21,6 @@
#include "unicode/strenum.h"
#include "unicode/vtzone.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -145,9 +144,7 @@ TimeZoneGenericNameMatchInfo::TimeZoneGenericNameMatchInfo(UVector* matches)
}
TimeZoneGenericNameMatchInfo::~TimeZoneGenericNameMatchInfo() {
- if (fMatches != nullptr) {
- delete fMatches;
- }
+ delete fMatches;
}
int32_t
@@ -209,9 +206,7 @@ GNameSearchHandler::GNameSearchHandler(uint32_t types)
}
GNameSearchHandler::~GNameSearchHandler() {
- if (fResults != nullptr) {
- delete fResults;
- }
+ delete fResults;
}
UBool
@@ -299,7 +294,7 @@ private:
TextTrieMap fGNamesTrie;
UBool fGNamesTrieFullyLoaded;
- char fTargetRegion[ULOC_COUNTRY_CAPACITY];
+ CharString fTargetRegion;
void initialize(const Locale& locale, UErrorCode& status);
void cleanup();
@@ -339,7 +334,8 @@ TZGNCore::TZGNCore(const Locale& locale, UErrorCode& status)
fLocaleDisplayNames(nullptr),
fStringPool(status),
fGNamesTrie(true, deleteGNameInfo),
- fGNamesTrieFullyLoaded(false) {
+ fGNamesTrieFullyLoaded(false),
+ fTargetRegion() {
initialize(locale, status);
}
@@ -409,23 +405,14 @@ TZGNCore::initialize(const Locale& locale, UErrorCode& status) {
const char* region = fLocale.getCountry();
int32_t regionLen = static_cast<int32_t>(uprv_strlen(region));
if (regionLen == 0) {
- CharString loc;
- {
- CharStringByteSink sink(&loc);
- ulocimp_addLikelySubtags(fLocale.getName(), sink, &status);
- }
-
- regionLen = uloc_getCountry(loc.data(), fTargetRegion, sizeof(fTargetRegion), &status);
- if (U_SUCCESS(status)) {
- fTargetRegion[regionLen] = 0;
- } else {
+ CharString loc = ulocimp_addLikelySubtags(fLocale.getName(), status);
+ ulocimp_getSubtags(loc.data(), nullptr, nullptr, &fTargetRegion, nullptr, nullptr, status);
+ if (U_FAILURE(status)) {
cleanup();
return;
}
- } else if (regionLen < (int32_t)sizeof(fTargetRegion)) {
- uprv_strcpy(fTargetRegion, region);
} else {
- fTargetRegion[0] = 0;
+ fTargetRegion.append(region, regionLen, status);
}
// preload generic names for the default zone
@@ -439,12 +426,8 @@ TZGNCore::initialize(const Locale& locale, UErrorCode& status) {
void
TZGNCore::cleanup() {
- if (fLocaleDisplayNames != nullptr) {
- delete fLocaleDisplayNames;
- }
- if (fTimeZoneNames != nullptr) {
- delete fTimeZoneNames;
- }
+ delete fLocaleDisplayNames;
+ delete fTimeZoneNames;
uhash_close(fLocationNamesMap);
uhash_close(fPartialLocationNamesMap);
@@ -704,7 +687,7 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
// golden zone at the given date.
char16_t idBuf[32];
UnicodeString goldenID(idBuf, 0, UPRV_LENGTHOF(idBuf));
- fTimeZoneNames->getReferenceZoneID(mzID, fTargetRegion, goldenID);
+ fTimeZoneNames->getReferenceZoneID(mzID, fTargetRegion.data(), goldenID);
if (!goldenID.isEmpty() && goldenID != tzID) {
TimeZone *goldenZone = TimeZone::createTimeZone(goldenID);
int32_t raw1, sav1;
@@ -866,7 +849,7 @@ TZGNCore::loadStrings(const UnicodeString& tzCanonicalID) {
// if this time zone is not the golden zone of the meta zone,
// partial location name (such as "PT (Los Angeles)") might be
// available.
- fTimeZoneNames->getReferenceZoneID(*mzID, fTargetRegion, goldenID);
+ fTimeZoneNames->getReferenceZoneID(*mzID, fTargetRegion.data(), goldenID);
if (tzCanonicalID != goldenID) {
for (int32_t i = 0; genNonLocTypes[i] != UTZNM_UNKNOWN; i++) {
fTimeZoneNames->getMetaZoneDisplayName(*mzID, genNonLocTypes[i], mzGenName);
@@ -878,9 +861,7 @@ TZGNCore::loadStrings(const UnicodeString& tzCanonicalID) {
}
}
}
- if (mzIDs != nullptr) {
- delete mzIDs;
- }
+ delete mzIDs;
}
int32_t
@@ -914,7 +895,7 @@ TZGNCore::findBestMatch(const UnicodeString& text, int32_t start, uint32_t types
if (!tznamesMatches->getTimeZoneIDAt(i, bestMatchTzID)) {
// name for a meta zone
if (tznamesMatches->getMetaZoneIDAt(i, mzID)) {
- fTimeZoneNames->getReferenceZoneID(mzID, fTargetRegion, bestMatchTzID);
+ fTimeZoneNames->getReferenceZoneID(mzID, fTargetRegion.data(), bestMatchTzID);
}
}
UTimeZoneNameType nameType = tznamesMatches->getNameTypeAt(i);
@@ -1035,9 +1016,7 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE
return gmatchInfo;
}
- if (results != nullptr) {
- delete results;
- }
+ delete results;
// All names are not yet loaded into the local trie.
// Load all available names into the trie. This could be very heavy.
@@ -1054,9 +1033,7 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE
nonConstThis->loadStrings(*tzID);
}
}
- if (tzIDs != nullptr) {
- delete tzIDs;
- }
+ delete tzIDs;
if (U_SUCCESS(status)) {
nonConstThis->fGNamesTrieFullyLoaded = true;
@@ -1177,7 +1154,7 @@ static void sweepCache() {
}
TimeZoneGenericNames::TimeZoneGenericNames()
-: fRef(0) {
+: fRef(nullptr) {
}
TimeZoneGenericNames::~TimeZoneGenericNames() {
@@ -1251,9 +1228,7 @@ TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) {
}
}
if (U_FAILURE(status)) {
- if (tzgnCore != nullptr) {
- delete tzgnCore;
- }
+ delete tzgnCore;
if (newKey != nullptr) {
uprv_free(newKey);
}
diff --git a/icu4c/source/i18n/tznames.cpp b/icu4c/source/i18n/tznames.cpp
index 900499fd4..24ca161e8 100644
--- a/icu4c/source/i18n/tznames.cpp
+++ b/icu4c/source/i18n/tznames.cpp
@@ -87,7 +87,7 @@ static void sweepCache() {
const UHashElement* elem;
double now = (double)uprv_getUTCtime();
- while ((elem = uhash_nextElement(gTimeZoneNamesCache, &pos)) != 0) {
+ while ((elem = uhash_nextElement(gTimeZoneNamesCache, &pos)) != nullptr) {
TimeZoneNamesCacheEntry *entry = (TimeZoneNamesCacheEntry *)elem->value.pointer;
if (entry->refCount <= 0 && (now - entry->lastAccess) > CACHE_EXPIRATION) {
// delete this entry
@@ -128,7 +128,7 @@ private:
};
TimeZoneNamesDelegate::TimeZoneNamesDelegate()
-: fTZnamesCacheEntry(0) {
+: fTZnamesCacheEntry(nullptr) {
}
TimeZoneNamesDelegate::TimeZoneNamesDelegate(const Locale& locale, UErrorCode& status) {
@@ -182,9 +182,7 @@ TimeZoneNamesDelegate::TimeZoneNamesDelegate(const Locale& locale, UErrorCode& s
}
}
if (U_FAILURE(status)) {
- if (tznames != nullptr) {
- delete tznames;
- }
+ delete tznames;
if (newKey != nullptr) {
uprv_free(newKey);
}
@@ -403,9 +401,7 @@ TimeZoneNames::MatchInfoCollection::MatchInfoCollection()
}
TimeZoneNames::MatchInfoCollection::~MatchInfoCollection() {
- if (fMatches != nullptr) {
- delete fMatches;
- }
+ delete fMatches;
}
void
diff --git a/icu4c/source/i18n/tznames_impl.cpp b/icu4c/source/i18n/tznames_impl.cpp
index 8e52fd90a..038b8097f 100644
--- a/icu4c/source/i18n/tznames_impl.cpp
+++ b/icu4c/source/i18n/tznames_impl.cpp
@@ -16,12 +16,12 @@
#if !UCONFIG_NO_FORMATTING
#include "unicode/strenum.h"
+#include "unicode/stringpiece.h"
#include "unicode/ustring.h"
#include "unicode/timezone.h"
#include "unicode/utf16.h"
#include "tznames_impl.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -33,6 +33,7 @@
#include "ureslocs.h"
#include "zonemeta.h"
#include "ucln_in.h"
+#include "uinvchar.h"
#include "uvector.h"
#include "olsontz.h"
@@ -72,7 +73,9 @@ enum UTimeZoneNameTypeIndex {
UTZNM_INDEX_SHORT_DAYLIGHT,
UTZNM_INDEX_COUNT
};
-static const char16_t* const EMPTY_NAMES[UTZNM_INDEX_COUNT] = {0,0,0,0,0,0,0};
+static const char16_t* const EMPTY_NAMES[UTZNM_INDEX_COUNT] = {
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr
+};
U_CDECL_BEGIN
static UBool U_CALLCONV tzdbTimeZoneNames_cleanup() {
@@ -110,7 +113,7 @@ struct ZMatchInfo {
};
// Helper functions
-static void mergeTimeZoneKey(const UnicodeString& mzID, char* result);
+static void mergeTimeZoneKey(const UnicodeString& mzID, char* result, size_t capacity, UErrorCode& status);
#define DEFAULT_CHARACTERNODE_CAPACITY 1
@@ -755,7 +758,7 @@ struct ZNames::ZNamesLoader : public ResourceSink {
if (U_FAILURE(errorCode)) { return; }
char key[ZID_KEY_MAX + 1];
- mergeTimeZoneKey(mzID, key);
+ mergeTimeZoneKey(mzID, key, sizeof(key), errorCode);
loadNames(zoneStrings, key, errorCode);
}
@@ -770,6 +773,10 @@ struct ZNames::ZNamesLoader : public ResourceSink {
}
char key[ZID_KEY_MAX + 1];
+ if (uKey.length() > ZID_KEY_MAX) {
+ errorCode = U_INTERNAL_PROGRAM_ERROR;
+ return;
+ }
uKey.extract(0, uKey.length(), key, sizeof(key), US_INV);
loadNames(zoneStrings, key, errorCode);
@@ -940,9 +947,7 @@ ZNameSearchHandler::ZNameSearchHandler(uint32_t types)
}
ZNameSearchHandler::~ZNameSearchHandler() {
- if (fResults != nullptr) {
- delete fResults;
- }
+ delete fResults;
}
UBool
@@ -1069,8 +1074,6 @@ TimeZoneNamesImpl::initialize(const Locale& locale, UErrorCode& status) {
loadStrings(UnicodeString(tzID), status);
}
delete tz;
-
- return;
}
/*
@@ -1282,19 +1285,30 @@ TimeZoneNamesImpl::getExemplarLocationName(const UnicodeString& tzID, UnicodeStr
// Merge the MZ_PREFIX and mzId
-static void mergeTimeZoneKey(const UnicodeString& mzID, char* result) {
+static void mergeTimeZoneKey(const UnicodeString& mzID, char* result, size_t capacity,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
if (mzID.isEmpty()) {
result[0] = '\0';
return;
}
- char mzIdChar[ZID_KEY_MAX + 1];
- int32_t keyLen;
- int32_t prefixLen = static_cast<int32_t>(uprv_strlen(gMZPrefix));
- keyLen = mzID.extract(0, mzID.length(), mzIdChar, ZID_KEY_MAX + 1, US_INV);
- uprv_memcpy((void *)result, (void *)gMZPrefix, prefixLen);
- uprv_memcpy((void *)(result + prefixLen), (void *)mzIdChar, keyLen);
- result[keyLen + prefixLen] = '\0';
+ if (MZ_PREFIX_LEN + 1 > capacity) {
+ result[0] = '\0';
+ status = U_INTERNAL_PROGRAM_ERROR;
+ return;
+ }
+ uprv_memcpy((void *)result, (void *)gMZPrefix, MZ_PREFIX_LEN);
+ if (static_cast<size_t>(MZ_PREFIX_LEN + mzID.length() + 1) > capacity) {
+ result[0] = '\0';
+ status = U_INTERNAL_PROGRAM_ERROR;
+ return;
+ }
+ int32_t keyLen = mzID.extract(0, mzID.length(), result + MZ_PREFIX_LEN,
+ static_cast<int32_t>(capacity - MZ_PREFIX_LEN), US_INV);
+ result[keyLen + MZ_PREFIX_LEN] = '\0';
}
/*
@@ -1303,11 +1317,16 @@ static void mergeTimeZoneKey(const UnicodeString& mzID, char* result) {
ZNames*
TimeZoneNamesImpl::loadMetaZoneNames(const UnicodeString& mzID, UErrorCode& status) {
if (U_FAILURE(status)) { return nullptr; }
- U_ASSERT(mzID.length() <= ZID_KEY_MAX - MZ_PREFIX_LEN);
+ if (mzID.length() > ZID_KEY_MAX - MZ_PREFIX_LEN) {
+ status = U_INTERNAL_PROGRAM_ERROR;
+ return nullptr;
+ }
char16_t mzIDKey[ZID_KEY_MAX + 1];
- mzID.extract(mzIDKey, ZID_KEY_MAX + 1, status);
- U_ASSERT(U_SUCCESS(status)); // already checked length above
+ mzID.extract(mzIDKey, ZID_KEY_MAX, status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
mzIDKey[mzID.length()] = 0;
void* mznames = uhash_get(fMZNamesMap, mzIDKey);
@@ -1331,10 +1350,13 @@ TimeZoneNamesImpl::loadMetaZoneNames(const UnicodeString& mzID, UErrorCode& stat
ZNames*
TimeZoneNamesImpl::loadTimeZoneNames(const UnicodeString& tzID, UErrorCode& status) {
if (U_FAILURE(status)) { return nullptr; }
- U_ASSERT(tzID.length() <= ZID_KEY_MAX);
+ if (tzID.length() > ZID_KEY_MAX) {
+ status = U_INTERNAL_PROGRAM_ERROR;
+ return nullptr;
+ }
char16_t tzIDKey[ZID_KEY_MAX + 1];
- int32_t tzIDKeyLen = tzID.extract(tzIDKey, ZID_KEY_MAX + 1, status);
+ int32_t tzIDKeyLen = tzID.extract(tzIDKey, ZID_KEY_MAX, status);
U_ASSERT(U_SUCCESS(status)); // already checked length above
tzIDKey[tzIDKeyLen] = 0;
@@ -1673,9 +1695,7 @@ void TimeZoneNamesImpl::internalLoadAllDisplayNames(UErrorCode& status) {
}
}
}
- if (tzIDs != nullptr) {
- delete tzIDs;
- }
+ delete tzIDs;
}
}
@@ -1889,7 +1909,7 @@ U_CDECL_END
class TZDBNameSearchHandler : public TextTrieMapSearchResultHandler {
public:
- TZDBNameSearchHandler(uint32_t types, const char* region);
+ TZDBNameSearchHandler(uint32_t types, StringPiece region);
virtual ~TZDBNameSearchHandler();
UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override;
@@ -1899,17 +1919,15 @@ private:
uint32_t fTypes;
int32_t fMaxMatchLen;
TimeZoneNames::MatchInfoCollection* fResults;
- const char* fRegion;
+ StringPiece fRegion;
};
-TZDBNameSearchHandler::TZDBNameSearchHandler(uint32_t types, const char* region)
+TZDBNameSearchHandler::TZDBNameSearchHandler(uint32_t types, StringPiece region)
: fTypes(types), fMaxMatchLen(0), fResults(nullptr), fRegion(region) {
}
TZDBNameSearchHandler::~TZDBNameSearchHandler() {
- if (fResults != nullptr) {
- delete fResults;
- }
+ delete fResults;
}
UBool
@@ -1951,7 +1969,7 @@ TZDBNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *nod
// as metazone China (China Standard Time).
for (int32_t j = 0; j < ninfo->nRegions; j++) {
const char *region = ninfo->parseRegions[j];
- if (uprv_strcmp(fRegion, region) == 0) {
+ if (fRegion == region) {
match = ninfo;
matchRegion = true;
break;
@@ -2064,7 +2082,7 @@ static void U_CALLCONV prepareFind(UErrorCode &status) {
const UnicodeString *mzID;
StringEnumeration *mzIDs = TimeZoneNamesImpl::_getAvailableMetaZoneIDs(status);
if (U_SUCCESS(status)) {
- while ((mzID = mzIDs->snext(status)) != 0 && U_SUCCESS(status)) {
+ while ((mzID = mzIDs->snext(status)) != nullptr && U_SUCCESS(status)) {
const TZDBNames *names = TZDBTimeZoneNames::getMetaZoneNames(*mzID, status);
if (U_FAILURE(status)) {
break;
@@ -2130,27 +2148,27 @@ static void U_CALLCONV prepareFind(UErrorCode &status) {
U_CDECL_END
TZDBTimeZoneNames::TZDBTimeZoneNames(const Locale& locale)
-: fLocale(locale) {
+: fLocale(locale), fRegion() {
UBool useWorld = true;
const char* region = fLocale.getCountry();
int32_t regionLen = static_cast<int32_t>(uprv_strlen(region));
if (regionLen == 0) {
UErrorCode status = U_ZERO_ERROR;
- CharString loc;
- {
- CharStringByteSink sink(&loc);
- ulocimp_addLikelySubtags(fLocale.getName(), sink, &status);
- }
- regionLen = uloc_getCountry(loc.data(), fRegion, sizeof(fRegion), &status);
- if (U_SUCCESS(status) && regionLen < (int32_t)sizeof(fRegion)) {
+ CharString loc = ulocimp_addLikelySubtags(fLocale.getName(), status);
+ ulocimp_getSubtags(loc.data(), nullptr, nullptr, &fRegion, nullptr, nullptr, status);
+ if (U_SUCCESS(status)) {
useWorld = false;
}
- } else if (regionLen < (int32_t)sizeof(fRegion)) {
- uprv_strcpy(fRegion, region);
+ } else {
+ UErrorCode status = U_ZERO_ERROR;
+ fRegion.append(region, regionLen, status);
+ U_ASSERT(U_SUCCESS(status));
useWorld = false;
}
if (useWorld) {
- uprv_strcpy(fRegion, "001");
+ UErrorCode status = U_ZERO_ERROR;
+ fRegion.append("001", status);
+ U_ASSERT(U_SUCCESS(status));
}
}
@@ -2228,7 +2246,7 @@ TZDBTimeZoneNames::find(const UnicodeString& text, int32_t start, uint32_t types
return nullptr;
}
- TZDBNameSearchHandler handler(types, fRegion);
+ TZDBNameSearchHandler handler(types, fRegion.toStringPiece());
gTZDBNamesTrie->search(text, start, (TextTrieMapSearchResultHandler *)&handler, status);
if (U_FAILURE(status)) {
return nullptr;
@@ -2247,9 +2265,15 @@ TZDBTimeZoneNames::getMetaZoneNames(const UnicodeString& mzID, UErrorCode& statu
TZDBNames* tzdbNames = nullptr;
char16_t mzIDKey[ZID_KEY_MAX + 1];
- mzID.extract(mzIDKey, ZID_KEY_MAX + 1, status);
- U_ASSERT(status == U_ZERO_ERROR); // already checked length above
+ mzID.extract(mzIDKey, ZID_KEY_MAX, status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
mzIDKey[mzID.length()] = 0;
+ if (!uprv_isInvariantUString(mzIDKey, mzID.length())) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return nullptr;
+ }
static UMutex gTZDBNamesMapLock;
umtx_lock(&gTZDBNamesMapLock);
@@ -2258,9 +2282,9 @@ TZDBTimeZoneNames::getMetaZoneNames(const UnicodeString& mzID, UErrorCode& statu
if (cacheVal == nullptr) {
UResourceBundle *zoneStringsRes = ures_openDirect(U_ICUDATA_ZONE, "tzdbNames", &status);
zoneStringsRes = ures_getByKey(zoneStringsRes, gZoneStrings, zoneStringsRes, &status);
+ char key[ZID_KEY_MAX + 1];
+ mergeTimeZoneKey(mzID, key, sizeof(key), status);
if (U_SUCCESS(status)) {
- char key[ZID_KEY_MAX + 1];
- mergeTimeZoneKey(mzID, key);
tzdbNames = TZDBNames::createInstance(zoneStringsRes, key);
if (tzdbNames == nullptr) {
diff --git a/icu4c/source/i18n/tznames_impl.h b/icu4c/source/i18n/tznames_impl.h
index 8ca2f84e7..3ab1e5cc9 100644
--- a/icu4c/source/i18n/tznames_impl.h
+++ b/icu4c/source/i18n/tznames_impl.h
@@ -26,6 +26,7 @@
#include "uhash.h"
#include "uvector.h"
#include "umutex.h"
+#include "charstr.h"
// Some zone display names involving supplementary characters can be over 50 chars, 100 UTF-16 code units, 200 UTF-8 bytes
#define ZONE_NAME_U16_MAX 128
@@ -255,7 +256,7 @@ public:
private:
Locale fLocale;
- char fRegion[ULOC_COUNTRY_CAPACITY];
+ CharString fRegion;
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/tztrans.cpp b/icu4c/source/i18n/tztrans.cpp
index dbce34220..45e1678aa 100644
--- a/icu4c/source/i18n/tztrans.cpp
+++ b/icu4c/source/i18n/tztrans.cpp
@@ -40,12 +40,8 @@ TimeZoneTransition::TimeZoneTransition(const TimeZoneTransition& source)
}
TimeZoneTransition::~TimeZoneTransition() {
- if (fFrom != nullptr) {
- delete fFrom;
- }
- if (fTo != nullptr) {
- delete fTo;
- }
+ delete fFrom;
+ delete fTo;
}
TimeZoneTransition*
@@ -96,33 +92,25 @@ TimeZoneTransition::setTime(UDate time) {
void
TimeZoneTransition::setFrom(const TimeZoneRule& from) {
- if (fFrom != nullptr) {
- delete fFrom;
- }
+ delete fFrom;
fFrom = from.clone();
}
void
TimeZoneTransition::adoptFrom(TimeZoneRule* from) {
- if (fFrom != nullptr) {
- delete fFrom;
- }
+ delete fFrom;
fFrom = from;
}
void
TimeZoneTransition::setTo(const TimeZoneRule& to) {
- if (fTo != nullptr) {
- delete fTo;
- }
+ delete fTo;
fTo = to.clone();
}
void
TimeZoneTransition::adoptTo(TimeZoneRule* to) {
- if (fTo != nullptr) {
- delete fTo;
- }
+ delete fTo;
fTo = to;
}
diff --git a/icu4c/source/i18n/ucal.cpp b/icu4c/source/i18n/ucal.cpp
index dfc8e4f25..78d01763c 100644
--- a/icu4c/source/i18n/ucal.cpp
+++ b/icu4c/source/i18n/ucal.cpp
@@ -22,6 +22,7 @@
#include "unicode/ustring.h"
#include "unicode/strenum.h"
#include "unicode/localpointer.h"
+#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
#include "iso8601cal.h"
@@ -167,21 +168,15 @@ ucal_open( const char16_t* zoneID,
}
if ( caltype == UCAL_GREGORIAN ) {
- char localeBuf[ULOC_LOCALE_IDENTIFIER_CAPACITY];
if ( locale == nullptr ) {
locale = uloc_getDefault();
}
- int32_t localeLength = static_cast<int32_t>(uprv_strlen(locale));
- if (localeLength >= ULOC_LOCALE_IDENTIFIER_CAPACITY) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
- return nullptr;
- }
- uprv_strcpy(localeBuf, locale);
- uloc_setKeywordValue("calendar", "gregorian", localeBuf, ULOC_LOCALE_IDENTIFIER_CAPACITY, status);
+ CharString localeBuf(locale, *status);
+ ulocimp_setKeywordValue("calendar", "gregorian", localeBuf, *status);
if (U_FAILURE(*status)) {
return nullptr;
}
- return (UCalendar*)Calendar::createInstance(zone.orphan(), Locale(localeBuf), *status);
+ return (UCalendar*)Calendar::createInstance(zone.orphan(), Locale(localeBuf.data()), *status);
}
return (UCalendar*)Calendar::createInstance(zone.orphan(), Locale(locale), *status);
}
@@ -198,13 +193,13 @@ U_CAPI UCalendar* U_EXPORT2
ucal_clone(const UCalendar* cal,
UErrorCode* status)
{
- if(U_FAILURE(*status)) return 0;
-
+ if (U_FAILURE(*status)) return nullptr;
+
Calendar* res = ((Calendar*)cal)->clone();
- if(res == 0) {
+ if (res == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
return (UCalendar*) res;
@@ -549,7 +544,7 @@ ucal_getLimit( const UCalendar* cal,
UCalendarDateFields field,
UCalendarLimitType type,
UErrorCode *status) UPRV_NO_SANITIZE_UNDEFINED {
- if(status==0 || U_FAILURE(*status)) {
+ if (status == nullptr || U_FAILURE(*status)) {
return -1;
}
if (field < 0 || UCAL_FIELD_COUNT <= field) {
@@ -605,13 +600,13 @@ ucal_getTZDataVersion(UErrorCode* status)
U_CAPI int32_t U_EXPORT2
ucal_getCanonicalTimeZoneID(const char16_t* id, int32_t len,
char16_t* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status) {
- if(status == 0 || U_FAILURE(*status)) {
+ if (status == nullptr || U_FAILURE(*status)) {
return 0;
}
if (isSystemID) {
*isSystemID = false;
}
- if (id == 0 || len == 0 || result == 0 || resultCapacity <= 0) {
+ if (id == nullptr || len == 0 || result == nullptr || resultCapacity <= 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -721,13 +716,12 @@ static const char * const CAL_TYPES[] = {
U_CAPI UEnumeration* U_EXPORT2
ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool commonlyUsed, UErrorCode *status) {
// Resolve region
- char prefRegion[ULOC_COUNTRY_CAPACITY];
- (void)ulocimp_getRegionForSupplementalData(locale, true, prefRegion, sizeof(prefRegion), status);
-
+ CharString prefRegion = ulocimp_getRegionForSupplementalData(locale, true, *status);
+
// Read preferred calendar values from supplementalData calendarPreference
UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", status);
ures_getByKey(rb, "calendarPreferenceData", rb, status);
- UResourceBundle *order = ures_getByKey(rb, prefRegion, nullptr, status);
+ UResourceBundle *order = ures_getByKey(rb, prefRegion.data(), nullptr, status);
if (*status == U_MISSING_RESOURCE_ERROR && rb != nullptr) {
*status = U_ZERO_ERROR;
order = ures_getByKey(rb, "001", nullptr, status);
diff --git a/icu4c/source/i18n/ucol_res.cpp b/icu4c/source/i18n/ucol_res.cpp
index 4ec6582f8..aa0086802 100644
--- a/icu4c/source/i18n/ucol_res.cpp
+++ b/icu4c/source/i18n/ucol_res.cpp
@@ -59,10 +59,10 @@ U_NAMESPACE_BEGIN
namespace {
-static const char16_t *rootRules = nullptr;
-static int32_t rootRulesLength = 0;
-static UResourceBundle *rootBundle = nullptr;
-static UInitOnce gInitOnceUcolRes {};
+const char16_t* rootRules = nullptr;
+int32_t rootRulesLength = 0;
+UResourceBundle* rootBundle = nullptr;
+UInitOnce gInitOnceUcolRes{};
} // namespace
diff --git a/icu4c/source/i18n/ucol_sit.cpp b/icu4c/source/i18n/ucol_sit.cpp
index 2e5bce2cb..490dbd578 100644
--- a/icu4c/source/i18n/ucol_sit.cpp
+++ b/icu4c/source/i18n/ucol_sit.cpp
@@ -21,7 +21,6 @@
#include "utracimp.h"
#include "ucol_imp.h"
#include "ulocimp.h"
-#include "bytesinkutil.h"
#include "cmemory.h"
#include "cstring.h"
#include "uresimp.h"
@@ -451,22 +450,14 @@ ucol_prepareShortStringOpen( const char *definition,
ucol_sit_readSpecs(&s, definition, parseError, status);
ucol_sit_calculateWholeLocale(&s, *status);
- CharString buffer;
- {
- CharStringByteSink sink(&buffer);
- ulocimp_canonicalize(s.locale.data(), sink, status);
- }
+ CharString buffer = ulocimp_canonicalize(s.locale.data(), *status);
UResourceBundle *b = ures_open(U_ICUDATA_COLL, buffer.data(), status);
/* we try to find stuff from keyword */
UResourceBundle *collations = ures_getByKey(b, "collations", nullptr, status);
UResourceBundle *collElem = nullptr;
- CharString keyBuffer;
- {
- // if there is a keyword, we pick it up and try to get elements
- CharStringByteSink sink(&keyBuffer);
- ulocimp_getKeywordValue(buffer.data(), "collation", sink, status);
- }
+ // if there is a keyword, we pick it up and try to get elements
+ CharString keyBuffer = ulocimp_getKeywordValue(buffer.data(), "collation", *status);
if(keyBuffer.isEmpty()) {
// no keyword
// we try to find the default setting, which will give us the keyword value
@@ -497,7 +488,7 @@ ucol_openFromShortString( const char *definition,
UTRACE_ENTRY_OC(UTRACE_UCOL_OPEN_FROM_SHORT_STRING);
UTRACE_DATA1(UTRACE_INFO, "short string = \"%s\"", definition);
- if(U_FAILURE(*status)) return 0;
+ if (U_FAILURE(*status)) return nullptr;
UParseError internalParseError;
@@ -523,11 +514,7 @@ ucol_openFromShortString( const char *definition,
#ifdef UCOL_TRACE_SIT
fprintf(stderr, "DEF %s, DATA %s, ERR %s\n", definition, s.locale.data(), u_errorName(*status));
#endif
- CharString buffer;
- {
- CharStringByteSink sink(&buffer);
- ulocimp_canonicalize(s.locale.data(), sink, status);
- }
+ CharString buffer = ulocimp_canonicalize(s.locale.data(), *status);
UCollator *result = ucol_open(buffer.data(), status);
int32_t i = 0;
diff --git a/icu4c/source/i18n/ucsdet.cpp b/icu4c/source/i18n/ucsdet.cpp
index c8b8712fb..c3f6737fe 100644
--- a/icu4c/source/i18n/ucsdet.cpp
+++ b/icu4c/source/i18n/ucsdet.cpp
@@ -32,7 +32,7 @@ U_CAPI UCharsetDetector * U_EXPORT2
ucsdet_open(UErrorCode *status)
{
if(U_FAILURE(*status)) {
- return 0;
+ return nullptr;
}
CharsetDetector* csd = new CharsetDetector(*status);
diff --git a/icu4c/source/i18n/udat.cpp b/icu4c/source/i18n/udat.cpp
index e249be3ae..b5e3d2113 100644
--- a/icu4c/source/i18n/udat.cpp
+++ b/icu4c/source/i18n/udat.cpp
@@ -142,7 +142,7 @@ udat_open(UDateFormatStyle timeStyle,
{
DateFormat *fmt;
if(U_FAILURE(*status)) {
- return 0;
+ return nullptr;
}
if(gOpener!=nullptr) { // if it's registered
fmt = (DateFormat*) (*gOpener)(timeStyle,dateStyle,locale,tzID,tzIDLength,pattern,patternLength,status);
@@ -151,7 +151,7 @@ udat_open(UDateFormatStyle timeStyle,
} // else fall through.
}
if(timeStyle != UDAT_PATTERN) {
- if(locale == 0) {
+ if (locale == nullptr) {
fmt = DateFormat::createDateTimeInstance((DateFormat::EStyle)dateStyle,
(DateFormat::EStyle)timeStyle);
}
@@ -164,7 +164,7 @@ udat_open(UDateFormatStyle timeStyle,
else {
UnicodeString pat((UBool)(patternLength == -1), pattern, patternLength);
- if(locale == 0) {
+ if (locale == nullptr) {
fmt = new SimpleDateFormat(pat, *status);
}
else {
@@ -181,12 +181,12 @@ udat_open(UDateFormatStyle timeStyle,
return nullptr;
}
- if(tzID != 0) {
+ if (tzID != nullptr) {
TimeZone *zone = TimeZone::createTimeZone(UnicodeString((UBool)(tzIDLength == -1), tzID, tzIDLength));
- if(zone == 0) {
+ if (zone == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
delete fmt;
- return 0;
+ return nullptr;
}
fmt->adoptTimeZone(zone);
}
@@ -206,13 +206,13 @@ U_CAPI UDateFormat* U_EXPORT2
udat_clone(const UDateFormat *fmt,
UErrorCode *status)
{
- if(U_FAILURE(*status)) return 0;
+ if (U_FAILURE(*status)) return nullptr;
Format *res = ((DateFormat*)fmt)->clone();
- if(res == 0) {
+ if (res == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
return (UDateFormat*) res;
@@ -243,12 +243,12 @@ udat_format( const UDateFormat* format,
FieldPosition fp;
- if(position != 0)
+ if (position != nullptr)
fp.setField(position->field);
((DateFormat*)format)->format(dateToFormat, res, fp);
- if(position != 0) {
+ if (position != nullptr) {
position->beginIndex = fp.getBeginIndex();
position->endIndex = fp.getEndIndex();
}
@@ -281,12 +281,12 @@ udat_formatCalendar(const UDateFormat* format,
FieldPosition fp;
- if(position != 0)
+ if (position != nullptr)
fp.setField(position->field);
((DateFormat*)format)->format(*(Calendar*)calendar, res, fp);
- if(position != 0) {
+ if (position != nullptr) {
position->beginIndex = fp.getBeginIndex();
position->endIndex = fp.getEndIndex();
}
@@ -1270,7 +1270,6 @@ udat_setContext(UDateFormat* fmt, UDisplayContext value, UErrorCode* status)
return;
}
((DateFormat*)fmt)->setContext(value, *status);
- return;
}
U_CAPI UDisplayContext U_EXPORT2
diff --git a/icu4c/source/i18n/udateintervalformat.cpp b/icu4c/source/i18n/udateintervalformat.cpp
index a332eacc5..1ab381369 100644
--- a/icu4c/source/i18n/udateintervalformat.cpp
+++ b/icu4c/source/i18n/udateintervalformat.cpp
@@ -57,7 +57,7 @@ udtitvfmt_open(const char* locale,
if (U_FAILURE(*status)) {
return nullptr;
}
- if(tzID != 0) {
+ if (tzID != nullptr) {
TimeZone *zone = TimeZone::createTimeZone(UnicodeString((UBool)(tzIDLength == -1), tzID, tzIDLength));
if(zone == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
@@ -99,7 +99,7 @@ udtitvfmt_format(const UDateIntervalFormat* formatter,
res.setTo(result, 0, resultCapacity);
}
FieldPosition fp;
- if (position != 0) {
+ if (position != nullptr) {
fp.setField(position->field);
}
@@ -108,7 +108,7 @@ udtitvfmt_format(const UDateIntervalFormat* formatter,
if (U_FAILURE(*status)) {
return -1;
}
- if (position != 0) {
+ if (position != nullptr) {
position->beginIndex = fp.getBeginIndex();
position->endIndex = fp.getEndIndex();
}
diff --git a/icu4c/source/i18n/ulocdata.cpp b/icu4c/source/i18n/ulocdata.cpp
index 0aab62958..a1b2daa44 100644
--- a/icu4c/source/i18n/ulocdata.cpp
+++ b/icu4c/source/i18n/ulocdata.cpp
@@ -16,6 +16,7 @@
* created by: Ram Viswanadha,John Emmons
*/
+#include "charstr.h"
#include "cmemory.h"
#include "unicode/ustring.h"
#include "unicode/ures.h"
@@ -197,17 +198,20 @@ ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type,
return len;
}
-static UResourceBundle * measurementTypeBundleForLocale(const char *localeID, const char *measurementType, UErrorCode *status){
- char region[ULOC_COUNTRY_CAPACITY];
+namespace {
+
+UResourceBundle * measurementTypeBundleForLocale(const char *localeID, const char *measurementType, UErrorCode *status){
+ if (U_FAILURE(*status)) { return nullptr; }
+
UResourceBundle *rb;
UResourceBundle *measTypeBundle = nullptr;
-
- ulocimp_getRegionForSupplementalData(localeID, true, region, ULOC_COUNTRY_CAPACITY, status);
-
+
+ icu::CharString region = ulocimp_getRegionForSupplementalData(localeID, true, *status);
+
rb = ures_openDirect(nullptr, "supplementalData", status);
ures_getByKey(rb, "measurementData", rb, status);
if (rb != nullptr) {
- UResourceBundle *measDataBundle = ures_getByKey(rb, region, nullptr, status);
+ UResourceBundle *measDataBundle = ures_getByKey(rb, region.data(), nullptr, status);
if (U_SUCCESS(*status)) {
measTypeBundle = ures_getByKey(measDataBundle, measurementType, nullptr, status);
}
@@ -225,6 +229,8 @@ static UResourceBundle * measurementTypeBundleForLocale(const char *localeID, co
return measTypeBundle;
}
+} // namespace
+
U_CAPI UMeasurementSystem U_EXPORT2
ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status){
@@ -275,6 +281,7 @@ ulocdata_getPaperSize(const char* localeID, int32_t *height, int32_t *width, UEr
U_CAPI void U_EXPORT2
ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status) {
+ if (U_FAILURE(*status)) { return; }
UResourceBundle *rb = nullptr;
rb = ures_openDirect(nullptr, "supplementalData", status);
ures_getVersionByKey(rb, "cldrVersion", versionArray, status);
diff --git a/icu4c/source/i18n/umsg.cpp b/icu4c/source/i18n/umsg.cpp
index ea6e62e2a..b1f279580 100644
--- a/icu4c/source/i18n/umsg.cpp
+++ b/icu4c/source/i18n/umsg.cpp
@@ -232,11 +232,11 @@ umsg_open( const char16_t *pattern,
//check arguments
if(status==nullptr || U_FAILURE(*status))
{
- return 0;
+ return nullptr;
}
if(pattern==nullptr||patternLength<-1){
*status=U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
UParseError tErr;
@@ -282,9 +282,9 @@ umsg_clone(const UMessageFormat *fmt,
return nullptr;
}
UMessageFormat retVal = (UMessageFormat)((MessageFormat*)fmt)->clone();
- if(retVal == 0) {
+ if (retVal == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
return retVal;
}
@@ -344,7 +344,7 @@ umsg_toPattern(const UMessageFormat *fmt,
if(status ==nullptr||U_FAILURE(*status)){
return -1;
}
- if(fmt==nullptr||resultLength<0 || (resultLength>0 && result==0)){
+ if (fmt == nullptr || resultLength < 0 || (resultLength > 0 && result == nullptr)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -393,11 +393,11 @@ umsg_vformat( const UMessageFormat *fmt,
UErrorCode *status)
{
//check arguments
- if(status==0 || U_FAILURE(*status))
+ if (status == nullptr || U_FAILURE(*status))
{
return -1;
}
- if(fmt==nullptr||resultLength<0 || (resultLength>0 && result==0)) {
+ if (fmt == nullptr || resultLength < 0 || (resultLength > 0 && result == nullptr)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
diff --git a/icu4c/source/i18n/uni2name.h b/icu4c/source/i18n/uni2name.h
index 1e01d7842..44f8d94d7 100644
--- a/icu4c/source/i18n/uni2name.h
+++ b/icu4c/source/i18n/uni2name.h
@@ -33,7 +33,7 @@ class UnicodeNameTransliterator : public Transliterator {
* Constructs a transliterator.
* @param adoptedFilter the filter to be adopted.
*/
- UnicodeNameTransliterator(UnicodeFilter* adoptedFilter = 0);
+ UnicodeNameTransliterator(UnicodeFilter* adoptedFilter = nullptr);
/**
* Destructor.
diff --git a/icu4c/source/i18n/unicode/calendar.h b/icu4c/source/i18n/unicode/calendar.h
index 26781f8a0..fbe501c9d 100644
--- a/icu4c/source/i18n/unicode/calendar.h
+++ b/icu4c/source/i18n/unicode/calendar.h
@@ -413,7 +413,7 @@ public:
* @return The current UTC time in milliseconds.
* @stable ICU 2.0
*/
- static UDate U_EXPORT2 getNow(void);
+ static UDate U_EXPORT2 getNow();
/**
* Gets this Calendar's time as milliseconds. May involve recalculation of time due
@@ -850,7 +850,7 @@ public:
* @return The time zone object associated with this calendar.
* @stable ICU 2.0
*/
- const TimeZone& getTimeZone(void) const;
+ const TimeZone& getTimeZone() const;
/**
* Returns the time zone owned by this calendar. The caller owns the returned object
@@ -860,7 +860,7 @@ public:
* @return The time zone object which was associated with this calendar.
* @stable ICU 2.0
*/
- TimeZone* orphanTimeZone(void);
+ TimeZone* orphanTimeZone();
/**
* Queries if the current date for this Calendar is in Daylight Savings Time.
@@ -892,7 +892,7 @@ public:
* @return True tells that date/time interpretation is to be lenient.
* @stable ICU 2.0
*/
- UBool isLenient(void) const;
+ UBool isLenient() const;
/**
* Sets the behavior for handling wall time repeating multiple times
@@ -925,7 +925,7 @@ public:
* @see #setRepeatedWallTimeOption
* @stable ICU 49
*/
- UCalendarWallTimeOption getRepeatedWallTimeOption(void) const;
+ UCalendarWallTimeOption getRepeatedWallTimeOption() const;
/**
* Sets the behavior for handling skipped wall time at positive time zone offset
@@ -960,7 +960,7 @@ public:
* @see #setSkippedWallTimeOption
* @stable ICU 49
*/
- UCalendarWallTimeOption getSkippedWallTimeOption(void) const;
+ UCalendarWallTimeOption getSkippedWallTimeOption() const;
/**
* Sets what the first day of the week is; e.g., Sunday in US, Monday in France.
@@ -977,7 +977,7 @@ public:
* @return The first day of the week.
* @deprecated ICU 2.6 use the overload with error code
*/
- EDaysOfWeek getFirstDayOfWeek(void) const;
+ EDaysOfWeek getFirstDayOfWeek() const;
#endif /* U_HIDE_DEPRECATED_API */
/**
@@ -1009,7 +1009,7 @@ public:
* @return The minimal days required in the first week of the year.
* @stable ICU 2.0
*/
- uint8_t getMinimalDaysInFirstWeek(void) const;
+ uint8_t getMinimalDaysInFirstWeek() const;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -1232,7 +1232,7 @@ public:
* resolving of time into time fields.
* @stable ICU 2.0
*/
- void clear(void);
+ void clear();
/**
* Clears the value in the given time field, both making it unset and assigning it a
@@ -1260,7 +1260,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
/**
* Returns the calendar type name string for this Calendar object.
@@ -1348,9 +1348,8 @@ public:
* this calendar system, false otherwise.
* @stable ICU 4.4
*/
- virtual UBool isWeekend(void) const;
+ virtual UBool isWeekend() const;
-#ifndef U_FORCE_HIDE_DRAFT_API
/**
* Returns true if the date is in a leap year. Recalculate the current time
* field values if the time value has been changed by a call to * setTime().
@@ -1363,7 +1362,7 @@ public:
* @param status ICU Error Code
* @return True if the date in the fields is in a Temporal proposal
* defined leap year. False otherwise.
- * @draft ICU 73
+ * @stable ICU 73
*/
virtual bool inTemporalLeapYear(UErrorCode& status) const;
@@ -1383,7 +1382,7 @@ public:
*
* @param status ICU Error Code
* @return One of 25 possible strings in {"M01".."M13", "M01L".."M12L"}.
- * @draft ICU 73
+ * @stable ICU 73
*/
virtual const char* getTemporalMonthCode(UErrorCode& status) const;
@@ -1404,12 +1403,10 @@ public:
* @param temporalMonth The value to be set for temporal monthCode.
* @param status ICU Error Code
*
- * @draft ICU 73
+ * @stable ICU 73
*/
virtual void setTemporalMonthCode(const char* temporalMonth, UErrorCode& status);
-#endif // U_FORCE_HIDE_DRAFT_API
-
protected:
/**
@@ -1550,6 +1547,13 @@ protected:
* @internal
*/
inline int32_t internalGet(UCalendarDateFields field) const {return fFields[field];}
+
+ /**
+ * The year in this calendar is counting from 1 backward if the era is 0.
+ * @return The year in era 0 of this calendar is counting backward from 1.
+ * @internal
+ */
+ virtual bool isEra0CountingBackward() const { return false; }
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -1561,7 +1565,7 @@ protected:
* @return The value for the UCAL_MONTH.
* @internal
*/
- virtual int32_t internalGetMonth() const;
+ virtual int32_t internalGetMonth(UErrorCode& status) const;
/**
* Use this function instead of internalGet(UCAL_MONTH, defaultValue). The implementation
@@ -1571,10 +1575,12 @@ protected:
*
* @param defaultValue a default value used if the UCAL_MONTH and
* UCAL_ORDINAL are both unset.
+ * @param status Output param set to failure code on function return
+ * when this function fails.
* @return The value for the UCAL_MONTH.
* @internal
*/
- virtual int32_t internalGetMonth(int32_t defaultValue) const;
+ virtual int32_t internalGetMonth(int32_t defaultValue, UErrorCode& status) const;
#ifndef U_HIDE_DEPRECATED_API
/**
@@ -1663,12 +1669,14 @@ protected:
* @param useMonth if false, compute the day before the first day of
* the given year, otherwise, compute the day before the first day of
* the given month
+ * @param status Output param set to failure code on function return
+ * when this function fails.
* @return the Julian day number of the day before the first
* day of the given month and year
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
- UBool useMonth) const = 0;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month,
+ UBool useMonth, UErrorCode& status) const = 0;
/**
* Return the number of days in the given month of the given extended
@@ -1677,7 +1685,7 @@ protected:
* implementation than the default implementation in Calendar.
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const ;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const ;
/**
* Return the number of days in the given extended year of this
@@ -1694,20 +1702,22 @@ protected:
* use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
* as UCAL_ERA) specific to the calendar system, depending on which set of
* fields is newer.
+ * @param status ICU Error Code
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() = 0;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) = 0;
/**
* Subclasses may override this. This method calls
* handleGetMonthLength() to obtain the calendar-specific month
* length.
* @param bestField which field to use to calculate the date
+ * @param status ICU Error Code
* @return julian day specified by calendar fields.
* @internal
*/
- virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField);
+ virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField, UErrorCode &status);
/**
* Subclasses must override this to convert from week fields
@@ -1717,7 +1727,7 @@ protected:
* @return the extended year, UCAL_EXTENDED_YEAR
* @internal
*/
- virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy);
+ virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy, UErrorCode& status);
/**
* Validate a single field of this calendar. Subclasses should
@@ -1731,10 +1741,11 @@ protected:
/**
* Compute the Julian day from fields. Will determine whether to use
* the JULIAN_DAY field directly, or other fields.
+ * @param status ICU Error Code
* @return the julian day
* @internal
*/
- int32_t computeJulianDay();
+ int32_t computeJulianDay(UErrorCode &status);
/**
* Compute the milliseconds in the day from the fields. This is a
@@ -1912,7 +1923,7 @@ protected:
* @return the current time without recomputing.
* @stable ICU 2.0
*/
- UDate internalGetTime(void) const { return fTime; }
+ UDate internalGetTime() const { return fTime; }
/**
* Set the current time without affecting flags or fields.
@@ -2022,9 +2033,11 @@ protected:
* Called by computeJulianDay. Returns the default month (0-based) for the year,
* taking year and era into account. Defaults to 0 for Gregorian, which doesn't care.
* @param eyear The extended year
+ * @param status Output param set to failure code on function return
+ * when this function fails.
* @internal
*/
- virtual int32_t getDefaultMonthInYear(int32_t eyear) ;
+ virtual int32_t getDefaultMonthInYear(int32_t eyear, UErrorCode& status);
/**
@@ -2155,7 +2168,7 @@ protected:
* returns the local DOW, valid range 0..6
* @internal
*/
- int32_t getLocalDOW();
+ int32_t getLocalDOW(UErrorCode& status);
#endif /* U_HIDE_INTERNAL_API */
private:
@@ -2340,7 +2353,7 @@ private:
* @return Day number from 1..7 (SUN..SAT).
* @internal
*/
- static uint8_t julianDayToDayOfWeek(double julian);
+ static uint8_t julianDayToDayOfWeek(int32_t julian);
#endif /* U_HIDE_INTERNAL_API */
private:
@@ -2360,7 +2373,7 @@ private:
* @return a StringEnumeration over the locales available at the time of the call
* @internal
*/
- static StringEnumeration* getAvailableLocales(void);
+ static StringEnumeration* getAvailableLocales();
/**
* Register a new Calendar factory. The factory will be adopted.
@@ -2551,6 +2564,16 @@ Calendar::internalSet(UCalendarDateFields field, int32_t value)
fIsSet[field] = true; // Remove later
}
+/**
+ * Macro for the class to declare it override
+ * haveDefaultCentury, defaultCenturyStart, and
+ * defaultCenturyStartYear functions in this class.
+ * @internal
+ */
+#define DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY \
+ virtual UBool haveDefaultCentury() const override; \
+ virtual UDate defaultCenturyStart() const override; \
+ virtual int32_t defaultCenturyStartYear() const override;
#ifndef U_HIDE_INTERNAL_API
inline int32_t Calendar::weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek)
diff --git a/icu4c/source/i18n/unicode/choicfmt.h b/icu4c/source/i18n/unicode/choicfmt.h
index 429fa0ceb..2b6fb626a 100644
--- a/icu4c/source/i18n/unicode/choicfmt.h
+++ b/icu4c/source/i18n/unicode/choicfmt.h
@@ -454,7 +454,7 @@ public:
* other classes have different class IDs.
* @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Returns the class ID for this class. This is useful only for
@@ -467,7 +467,7 @@ public:
* @return The class ID for all objects of this class.
* @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
private:
/**
diff --git a/icu4c/source/i18n/unicode/coleitr.h b/icu4c/source/i18n/unicode/coleitr.h
index bd0c569f3..1b7fec0d1 100644
--- a/icu4c/source/i18n/unicode/coleitr.h
+++ b/icu4c/source/i18n/unicode/coleitr.h
@@ -171,7 +171,7 @@ public:
* Resets the cursor to the beginning of the string.
* @stable ICU 2.0
*/
- void reset(void);
+ void reset();
/**
* Gets the ordering priority of the next character in the string.
@@ -263,7 +263,7 @@ public:
* @return the offset of the character.
* @stable ICU 2.0
*/
- int32_t getOffset(void) const;
+ int32_t getOffset() const;
/**
* Sets the offset of the currently processed character in the source string.
diff --git a/icu4c/source/i18n/unicode/coll.h b/icu4c/source/i18n/unicode/coll.h
index fc5af9534..4845e8f02 100644
--- a/icu4c/source/i18n/unicode/coll.h
+++ b/icu4c/source/i18n/unicode/coll.h
@@ -535,7 +535,7 @@ public:
* Generates the hash code for the collation object
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const = 0;
+ virtual int32_t hashCode() const = 0;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -599,7 +599,7 @@ public:
* @see Collator#setStrength
* @deprecated ICU 2.6 Use getAttribute(UCOL_STRENGTH...) instead
*/
- virtual ECollationStrength getStrength(void) const;
+ virtual ECollationStrength getStrength() const;
/**
* Sets the minimum strength to be used in comparison or transformation.
@@ -730,7 +730,7 @@ public:
* @return a StringEnumeration over the locales available at the time of the call
* @stable ICU 2.6
*/
- static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
+ static StringEnumeration* U_EXPORT2 getAvailableLocales();
/**
* Create a string enumerator of all possible keywords that are relevant to
@@ -864,7 +864,7 @@ public:
* IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
/**
* Universal attribute setter
@@ -1245,7 +1245,7 @@ public:
* @return true if the factory is visible.
* @stable ICU 2.6
*/
- virtual UBool visible(void) const;
+ virtual UBool visible() const;
/**
* Return a collator for the provided locale. If the locale
diff --git a/icu4c/source/i18n/unicode/datefmt.h b/icu4c/source/i18n/unicode/datefmt.h
index 27240a4e1..9b05ea457 100644
--- a/icu4c/source/i18n/unicode/datefmt.h
+++ b/icu4c/source/i18n/unicode/datefmt.h
@@ -532,7 +532,7 @@ public:
* @return A date/time formatter which the caller owns.
* @stable ICU 2.0
*/
- static DateFormat* U_EXPORT2 createInstance(void);
+ static DateFormat* U_EXPORT2 createInstance();
/**
* Creates a time formatter with the given formatting style for the given
@@ -673,7 +673,7 @@ public:
* numeric processing is lenient.
* @stable ICU 2.0
*/
- virtual UBool isLenient(void) const;
+ virtual UBool isLenient() const;
/**
* Specifies whether date/time parsing is to be lenient. With
@@ -702,8 +702,7 @@ public:
* Returns whether date/time parsing in the encapsulated Calendar object processing is lenient.
* @stable ICU 53
*/
- virtual UBool isCalendarLenient(void) const;
-
+ virtual UBool isCalendarLenient() const;
/**
* Specifies whether encapsulated Calendar date/time parsing is to be lenient. With
@@ -725,7 +724,7 @@ public:
* @return the calendar associated with this date/time formatter.
* @stable ICU 2.0
*/
- virtual const Calendar* getCalendar(void) const;
+ virtual const Calendar* getCalendar() const;
/**
* Set the calendar to be used by this date format. Initially, the default
@@ -754,7 +753,7 @@ public:
* @return the number formatter which this date/time formatter uses.
* @stable ICU 2.0
*/
- virtual const NumberFormat* getNumberFormat(void) const;
+ virtual const NumberFormat* getNumberFormat() const;
/**
* Allows you to set the number formatter. The caller should
@@ -776,7 +775,7 @@ public:
* @return the time zone associated with the calendar of DateFormat.
* @stable ICU 2.0
*/
- virtual const TimeZone& getTimeZone(void) const;
+ virtual const TimeZone& getTimeZone() const;
/**
* Sets the time zone for the calendar of this DateFormat object. The caller
diff --git a/icu4c/source/i18n/unicode/dcfmtsym.h b/icu4c/source/i18n/unicode/dcfmtsym.h
index 6b79c9900..52f226843 100644
--- a/icu4c/source/i18n/unicode/dcfmtsym.h
+++ b/icu4c/source/i18n/unicode/dcfmtsym.h
@@ -455,13 +455,13 @@ public:
* Returns that pattern stored in currency info. Internal API for use by NumberFormat API.
* @internal
*/
- inline const char16_t* getCurrencyPattern(void) const;
+ inline const char16_t* getCurrencyPattern() const;
/**
* Returns the numbering system with which this DecimalFormatSymbols was initialized.
* @internal
*/
- inline const char* getNumberingSystemName(void) const;
+ inline const char* getNumberingSystemName() const;
#endif /* U_HIDE_INTERNAL_API */
private:
diff --git a/icu4c/source/i18n/unicode/decimfmt.h b/icu4c/source/i18n/unicode/decimfmt.h
index f72ba6872..1c55e3677 100644
--- a/icu4c/source/i18n/unicode/decimfmt.h
+++ b/icu4c/source/i18n/unicode/decimfmt.h
@@ -60,11 +60,9 @@ class UFormattedNumberData;
}
}
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
class NumberParserImpl;
}
-}
/**
* **IMPORTANT:** New users are strongly encouraged to see if
@@ -1163,7 +1161,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see DecimalFormatSymbols
* @stable ICU 2.0
*/
- virtual const DecimalFormatSymbols* getDecimalFormatSymbols(void) const;
+ virtual const DecimalFormatSymbols* getDecimalFormatSymbols() const;
/**
* Sets the decimal format symbols, which is generally not changed
@@ -1188,7 +1186,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return desired CurrencyPluralInfo
* @stable ICU 4.2
*/
- virtual const CurrencyPluralInfo* getCurrencyPluralInfo(void) const;
+ virtual const CurrencyPluralInfo* getCurrencyPluralInfo() const;
/**
* Sets the currency plural format information,
@@ -1315,7 +1313,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Examples: with 100, 1.23 -> "123", and "123" -> 1.23
* @stable ICU 2.0
*/
- int32_t getMultiplier(void) const;
+ int32_t getMultiplier() const;
/**
* Set the multiplier for use in percent, permill, etc.
@@ -1344,7 +1342,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return the current value of the power-of-ten multiplier.
* @stable ICU 62
*/
- int32_t getMultiplierScale(void) const;
+ int32_t getMultiplierScale() const;
/**
* Sets a power of ten by which number should be multiplied before formatting, which
@@ -1376,7 +1374,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setRoundingMode
* @stable ICU 2.0
*/
- virtual double getRoundingIncrement(void) const;
+ virtual double getRoundingIncrement() const;
/**
* Set the rounding increment. In the absence of a rounding increment,
@@ -1399,7 +1397,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setRoundingMode
* @stable ICU 2.0
*/
- virtual ERoundingMode getRoundingMode(void) const override;
+ virtual ERoundingMode getRoundingMode() const override;
/**
* Set the rounding mode.
@@ -1422,7 +1420,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setPadPosition
* @stable ICU 2.0
*/
- virtual int32_t getFormatWidth(void) const;
+ virtual int32_t getFormatWidth() const;
/**
* Set the width to which the output of format() is padded.
@@ -1485,7 +1483,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #EPadPosition
* @stable ICU 2.0
*/
- virtual EPadPosition getPadPosition(void) const;
+ virtual EPadPosition getPadPosition() const;
/**
* Set the position at which padding will take place. This is the location
@@ -1515,7 +1513,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setExponentSignAlwaysShown
* @stable ICU 2.0
*/
- virtual UBool isScientificNotation(void) const;
+ virtual UBool isScientificNotation() const;
/**
* Set whether or not scientific notation is used. When scientific notation
@@ -1544,7 +1542,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setExponentSignAlwaysShown
* @stable ICU 2.0
*/
- virtual int8_t getMinimumExponentDigits(void) const;
+ virtual int8_t getMinimumExponentDigits() const;
/**
* Set the minimum exponent digits that will be shown. This has no
@@ -1572,7 +1570,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setExponentSignAlwaysShown
* @stable ICU 2.0
*/
- virtual UBool isExponentSignAlwaysShown(void) const;
+ virtual UBool isExponentSignAlwaysShown() const;
/**
* Set whether the exponent sign is always shown. This has no effect
@@ -1600,7 +1598,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see DecimalFormatSymbols::getGroupingSeparator
* @stable ICU 2.0
*/
- int32_t getGroupingSize(void) const;
+ int32_t getGroupingSize() const;
/**
* Set the grouping size. Grouping size is the number of digits between
@@ -1633,7 +1631,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see DecimalFormatSymbols::getGroupingSeparator
* @stable ICU 2.4
*/
- int32_t getSecondaryGroupingSize(void) const;
+ int32_t getSecondaryGroupingSize() const;
/**
* Set the secondary grouping size. If set to a value less than 1,
@@ -1700,7 +1698,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
* @stable ICU 2.0
*/
- UBool isDecimalSeparatorAlwaysShown(void) const;
+ UBool isDecimalSeparatorAlwaysShown() const;
/**
* Allows you to set the behavior of the decimal separator with integers.
@@ -1718,7 +1716,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return true if input must contain a match to decimal mark in pattern
* @stable ICU 54
*/
- UBool isDecimalPatternMatchRequired(void) const;
+ UBool isDecimalPatternMatchRequired() const;
/**
* Allows you to set the parse behavior of the pattern decimal mark.
@@ -2124,7 +2122,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override.
@@ -2137,7 +2135,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* other classes have different class IDs.
* @stable ICU 2.0
*/
- UClassID getDynamicClassID(void) const override;
+ UClassID getDynamicClassID() const override;
private:
diff --git a/icu4c/source/i18n/unicode/dtfmtsym.h b/icu4c/source/i18n/unicode/dtfmtsym.h
index 3cd54092e..df8da36d8 100644
--- a/icu4c/source/i18n/unicode/dtfmtsym.h
+++ b/icu4c/source/i18n/unicode/dtfmtsym.h
@@ -567,7 +567,7 @@ public:
* @return the non-localized date-time pattern characters
* @stable ICU 2.0
*/
- static const char16_t * U_EXPORT2 getPatternUChars(void);
+ static const char16_t* U_EXPORT2 getPatternUChars();
/**
* Gets localized date-time pattern characters. For example: 'u', 't', etc.
@@ -971,7 +971,7 @@ private:
/**
* Delete all the storage owned by this object.
*/
- void dispose(void);
+ void dispose();
/**
* Copy all of the other's data to this.
@@ -982,12 +982,12 @@ private:
/**
* Create zone strings array by locale if not yet available
*/
- void initZoneStringsArray(void);
+ void initZoneStringsArray();
/**
* Delete just the zone strings.
*/
- void disposeZoneStrings(void);
+ void disposeZoneStrings();
/**
* Returns the date format field index of the pattern character c,
diff --git a/icu4c/source/i18n/unicode/dtitvfmt.h b/icu4c/source/i18n/unicode/dtitvfmt.h
index b4dc8cabf..7bfdf2d8a 100644
--- a/icu4c/source/i18n/unicode/dtitvfmt.h
+++ b/icu4c/source/i18n/unicode/dtitvfmt.h
@@ -344,11 +344,6 @@ public:
* @param status output param set to success/failure code on exit
* @return a date time interval formatter which the caller owns.
* @stable ICU 4.0
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined1
- * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined
- * <p>
*/
static DateIntervalFormat* U_EXPORT2 createInstance(
@@ -410,11 +405,6 @@ public:
* @param status output param set to success/failure code on exit
* @return a date time interval formatter which the caller owns.
* @stable ICU 4.0
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined1
- * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtCustomized
- * <p>
*/
static DateIntervalFormat* U_EXPORT2 createInstance(
const UnicodeString& skeleton,
@@ -604,8 +594,7 @@ public:
* this date interval formatter.
* @stable ICU 4.0
*/
- const DateIntervalInfo* getDateIntervalInfo(void) const;
-
+ const DateIntervalInfo* getDateIntervalInfo() const;
/**
* Set the date time interval patterns.
@@ -628,14 +617,14 @@ public:
* @return the date formatter associated with this date interval formatter.
* @stable ICU 4.0
*/
- const DateFormat* getDateFormat(void) const;
+ const DateFormat* getDateFormat() const;
/**
* Returns a reference to the TimeZone used by this DateIntervalFormat's calendar.
* @return the time zone associated with the calendar of DateIntervalFormat.
* @stable ICU 4.8
*/
- virtual const TimeZone& getTimeZone(void) const;
+ virtual const TimeZone& getTimeZone() const;
/**
* Sets the time zone for the calendar used by this DateIntervalFormat object. The
@@ -689,7 +678,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 4.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -702,7 +691,7 @@ public:
* other classes have different class IDs.
* @stable ICU 4.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
protected:
diff --git a/icu4c/source/i18n/unicode/dtptngen.h b/icu4c/source/i18n/unicode/dtptngen.h
index 8c374a309..3d09178b2 100644
--- a/icu4c/source/i18n/unicode/dtptngen.h
+++ b/icu4c/source/i18n/unicode/dtptngen.h
@@ -211,11 +211,6 @@ public:
* @return conflicting status. The value could be UDATPG_NO_CONFLICT,
* UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
* @stable ICU 3.8
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
- * \snippet samples/dtptngsample/dtptngsample.cpp addPatternExample
- * <p>
*/
UDateTimePatternConflict addPattern(const UnicodeString& pattern,
UBool override,
@@ -388,11 +383,6 @@ public:
* @return bestPattern
* The best pattern found from the given skeleton.
* @stable ICU 3.8
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
- * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample
- * <p>
*/
UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status);
@@ -436,11 +426,6 @@ public:
* which must not indicate a failure before the function call.
* @return pattern adjusted to match the skeleton fields widths and subtypes.
* @stable ICU 3.8
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
- * \snippet samples/dtptngsample/dtptngsample.cpp replaceFieldTypesExample
- * <p>
*/
UnicodeString replaceFieldTypes(const UnicodeString& pattern,
const UnicodeString& skeleton,
@@ -571,7 +556,7 @@ public:
*
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
private:
/**
@@ -645,7 +630,7 @@ private:
UnicodeString& getMutableFieldDisplayName(UDateTimePatternField field, UDateTimePGDisplayWidth width);
void getAppendName(UDateTimePatternField field, UnicodeString& value);
UnicodeString mapSkeletonMetacharacters(const UnicodeString& patternForm, int32_t* flags, UErrorCode& status);
- const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields, UErrorCode& status, const PtnSkeleton** specifiedSkeletonPtr = 0);
+ const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields, UErrorCode& status, const PtnSkeleton** specifiedSkeletonPtr = nullptr);
UnicodeString adjustFieldTypes(const UnicodeString& pattern, const PtnSkeleton* specifiedSkeleton, int32_t flags, UDateTimePatternMatchOptions options = UDATPG_MATCH_NO_OPTIONS);
UnicodeString getBestAppending(int32_t missingFields, int32_t flags, UErrorCode& status, UDateTimePatternMatchOptions options = UDATPG_MATCH_NO_OPTIONS);
int32_t getTopBitNumber(int32_t foundMask) const;
diff --git a/icu4c/source/i18n/unicode/dtrule.h b/icu4c/source/i18n/unicode/dtrule.h
index 19e94bc98..6e10bfcb0 100644
--- a/icu4c/source/i18n/unicode/dtrule.h
+++ b/icu4c/source/i18n/unicode/dtrule.h
@@ -160,7 +160,7 @@ public:
* @return The date rule type.
* @stable ICU 3.8
*/
- DateRuleType getDateRuleType(void) const;
+ DateRuleType getDateRuleType() const;
/**
* Gets the time rule type
@@ -168,14 +168,14 @@ public:
* or <code>UTC_TIME</code>.
* @stable ICU 3.8
*/
- TimeRuleType getTimeRuleType(void) const;
+ TimeRuleType getTimeRuleType() const;
/**
* Gets the rule month.
* @return The rule month.
* @stable ICU 3.8
*/
- int32_t getRuleMonth(void) const;
+ int32_t getRuleMonth() const;
/**
* Gets the rule day of month. When the date rule type
@@ -183,7 +183,7 @@ public:
* @return The rule day of month
* @stable ICU 3.8
*/
- int32_t getRuleDayOfMonth(void) const;
+ int32_t getRuleDayOfMonth() const;
/**
* Gets the rule day of week. When the date rule type
@@ -191,7 +191,7 @@ public:
* @return The rule day of week.
* @stable ICU 3.8
*/
- int32_t getRuleDayOfWeek(void) const;
+ int32_t getRuleDayOfWeek() const;
/**
* Gets the ordinal number of the occurrence of the day of week
@@ -200,16 +200,16 @@ public:
* @return The rule day of week ordinal number in the month.
* @stable ICU 3.8
*/
- int32_t getRuleWeekInMonth(void) const;
+ int32_t getRuleWeekInMonth() const;
/**
* Gets the rule time in the rule day.
* @return The time in the rule day in milliseconds.
* @stable ICU 3.8
*/
- int32_t getRuleMillisInDay(void) const;
+ int32_t getRuleMillisInDay() const;
-private:
+ private:
int32_t fMonth;
int32_t fDayOfMonth;
int32_t fDayOfWeek;
@@ -230,7 +230,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -243,7 +243,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/unicode/fieldpos.h b/icu4c/source/i18n/unicode/fieldpos.h
index 0c092a005..23c6a1884 100644
--- a/icu4c/source/i18n/unicode/fieldpos.h
+++ b/icu4c/source/i18n/unicode/fieldpos.h
@@ -192,14 +192,14 @@ public:
* @return the field identifier.
* @stable ICU 2.0
*/
- int32_t getField(void) const { return fField; }
+ int32_t getField() const { return fField; }
/**
* Retrieve the index of the first character in the requested field.
* @return the index of the first character in the requested field.
* @stable ICU 2.0
*/
- int32_t getBeginIndex(void) const { return fBeginIndex; }
+ int32_t getBeginIndex() const { return fBeginIndex; }
/**
* Retrieve the index of the character following the last character in the
@@ -208,8 +208,8 @@ public:
* requested field.
* @stable ICU 2.0
*/
- int32_t getEndIndex(void) const { return fEndIndex; }
-
+ int32_t getEndIndex() const { return fEndIndex; }
+
/**
* Set the field.
* @param f the new value of the field.
diff --git a/icu4c/source/i18n/unicode/fmtable.h b/icu4c/source/i18n/unicode/fmtable.h
index 6bda35760..d251d35ba 100644
--- a/icu4c/source/i18n/unicode/fmtable.h
+++ b/icu4c/source/i18n/unicode/fmtable.h
@@ -35,11 +35,10 @@
U_NAMESPACE_BEGIN
class CharString;
-namespace number {
-namespace impl {
+
+namespace number::impl {
class DecimalQuantity;
}
-}
/**
* Formattable objects can be passed to the Format class or
@@ -274,7 +273,7 @@ public:
* @return the data type of this Formattable object.
* @stable ICU 2.0
*/
- Type getType(void) const;
+ Type getType() const;
/**
* Returns true if the data type of this Formattable object
@@ -290,7 +289,7 @@ public:
* @return the double value of this object.
* @stable ICU 2.0
*/
- double getDouble(void) const { return fValue.fDouble; }
+ double getDouble() const { return fValue.fDouble; }
/**
* Gets the double value of this object. If this object is of type
@@ -312,7 +311,7 @@ public:
* @return the long value of this object.
* @stable ICU 2.0
*/
- int32_t getLong(void) const { return (int32_t)fValue.fInt64; }
+ int32_t getLong() const { return (int32_t)fValue.fInt64; }
/**
* Gets the long value of this object. If the magnitude is too
@@ -338,7 +337,7 @@ public:
* @return the int64 value of this object.
* @stable ICU 2.8
*/
- int64_t getInt64(void) const { return fValue.fInt64; }
+ int64_t getInt64() const { return fValue.fInt64; }
/**
* Gets the int64 value of this object. If this object is of a numeric
@@ -403,7 +402,7 @@ public:
* @return a const reference to the string value of this object.
* @stable ICU 2.0
*/
- inline const UnicodeString& getString(void) const;
+ inline const UnicodeString& getString() const;
/**
* Gets a const reference to the string value of this object. If
@@ -421,7 +420,7 @@ public:
* @return a reference to the string value of this object.
* @stable ICU 2.0
*/
- inline UnicodeString& getString(void);
+ inline UnicodeString& getString();
/**
* Gets a reference to the string value of this object. If the
@@ -680,7 +679,7 @@ private:
* Cleans up the memory for unwanted values. For example, the adopted
* string or array objects.
*/
- void dispose(void);
+ void dispose();
/**
* Common initialization, for use by constructors.
@@ -719,11 +718,11 @@ inline UDate Formattable::getDate(UErrorCode& status) const {
return fValue.fDate;
}
-inline const UnicodeString& Formattable::getString(void) const {
+inline const UnicodeString& Formattable::getString() const {
return *fValue.fString;
}
-inline UnicodeString& Formattable::getString(void) {
+inline UnicodeString& Formattable::getString() {
return *fValue.fString;
}
diff --git a/icu4c/source/i18n/unicode/formattednumber.h b/icu4c/source/i18n/unicode/formattednumber.h
index 83178ea40..6b212d7c8 100644
--- a/icu4c/source/i18n/unicode/formattednumber.h
+++ b/icu4c/source/i18n/unicode/formattednumber.h
@@ -25,6 +25,7 @@
U_NAMESPACE_BEGIN
class FieldPositionIteratorHandler;
+class SimpleDateFormat;
namespace number { // icu::number
@@ -190,6 +191,9 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
// To give C API access to internals
friend struct impl::UFormattedNumberImpl;
+
+ // To give access to the data pointer for non-heap allocation
+ friend class icu::SimpleDateFormat;
};
template<typename StringClass>
diff --git a/icu4c/source/i18n/unicode/fpositer.h b/icu4c/source/i18n/unicode/fpositer.h
index 0e38d0b78..cae0dafd2 100644
--- a/icu4c/source/i18n/unicode/fpositer.h
+++ b/icu4c/source/i18n/unicode/fpositer.h
@@ -67,7 +67,7 @@ public:
* Constructs a new, empty iterator.
* @stable ICU 4.4
*/
- FieldPositionIterator(void);
+ FieldPositionIterator();
/**
* Copy constructor. If the copy failed for some reason, the new iterator will
diff --git a/icu4c/source/i18n/unicode/gregocal.h b/icu4c/source/i18n/unicode/gregocal.h
index ab5a9c157..511254852 100644
--- a/icu4c/source/i18n/unicode/gregocal.h
+++ b/icu4c/source/i18n/unicode/gregocal.h
@@ -324,7 +324,7 @@ public:
* @return The Gregorian cutover time for this calendar.
* @stable ICU 2.0
*/
- UDate getGregorianChange(void) const;
+ UDate getGregorianChange() const;
/**
* Return true if the given year is a leap year. Determination of whether a year is
@@ -435,7 +435,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -448,7 +448,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns the calendar type name string for this Calendar object.
@@ -483,22 +483,24 @@ public:
* @param useMonth if false, compute the day before the first day of
* the given year, otherwise, compute the day before the first day of
* the given month
+ * @param status Fill-in parameter which receives the status of this operation.
* @return the Julian day number of the day before the first
* day of the given month and year
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
- UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month,
+ UBool useMonth, UErrorCode& status) const override;
/**
* Subclasses may override this. This method calls
* handleGetMonthLength() to obtain the calendar-specific month
* length.
* @param bestField which field to use to calculate the date
+ * @param status Fill-in parameter which receives the status of this operation.
* @return julian day specified by calendar fields.
* @internal
*/
- virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField) override;
+ virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField, UErrorCode& status) override;
/**
* Return the number of days in the given month of the given extended
@@ -507,7 +509,7 @@ public:
* implementation than the default implementation in Calendar.
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given extended year of this
@@ -521,10 +523,11 @@ public:
/**
* return the length of the given month.
* @param month the given month.
+ * @param status Fill-in parameter which receives the status of this operation.
* @return the length of the given month.
* @internal
*/
- virtual int32_t monthLength(int32_t month) const;
+ virtual int32_t monthLength(int32_t month, UErrorCode& status) const;
/**
* return the length of the month according to the given year.
@@ -541,7 +544,7 @@ public:
* @return the length of the year field
* @internal
*/
- int32_t yearLength(void) const;
+ int32_t yearLength() const;
#endif /* U_HIDE_INTERNAL_API */
@@ -582,10 +585,11 @@ public:
* use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
* as UCAL_ERA) specific to the calendar system, depending on which set of
* fields is newer.
+ * @param status
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Subclasses may override this to convert from week fields
@@ -595,7 +599,7 @@ public:
* @return the extended year, UCAL_EXTENDED_YEAR
* @internal
*/
- virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy) override;
+ virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy, UErrorCode& status) override;
/**
@@ -615,6 +619,15 @@ public:
*/
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
+#ifndef U_HIDE_INTERNAL_API
+ /**
+ * The year in this calendar is counting from 1 backward if the era is 0.
+ * @return The year in era 0 of this calendar is counting backward from 1.
+ * @internal
+ */
+ virtual bool isEra0CountingBackward() const override { return true; }
+#endif // U_HIDE_INTERNAL_API
+
private:
/**
* Compute the julian day number of the given year.
@@ -630,7 +643,7 @@ public:
* Validates the values of the set time fields. True if they're all valid.
* @return True if the set time fields are all valid.
*/
- UBool validateFields(void) const;
+ UBool validateFields() const;
/**
* Validates the value of the given time field. True if it's valid.
@@ -709,23 +722,8 @@ public:
public: // internal implementation
- /**
- * @return true if this calendar has the notion of a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * @return the start of the default century
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
- /**
- * @return the beginning year of the default century
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/unicode/measfmt.h b/icu4c/source/i18n/unicode/measfmt.h
index 59bf546a9..c9894f0b5 100644
--- a/icu4c/source/i18n/unicode/measfmt.h
+++ b/icu4c/source/i18n/unicode/measfmt.h
@@ -273,7 +273,7 @@ class U_I18N_API MeasureFormat : public Format {
* @return The class ID for all objects of this class.
* @stable ICU 53
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -286,7 +286,7 @@ class U_I18N_API MeasureFormat : public Format {
* other classes have different class IDs.
* @stable ICU 53
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
protected:
/**
diff --git a/icu4c/source/i18n/unicode/measunit.h b/icu4c/source/i18n/unicode/measunit.h
index 8f3583578..9ce9b1a65 100644
--- a/icu4c/source/i18n/unicode/measunit.h
+++ b/icu4c/source/i18n/unicode/measunit.h
@@ -33,11 +33,9 @@ U_NAMESPACE_BEGIN
class StringEnumeration;
class MeasureUnitImpl;
-namespace number {
-namespace impl {
+namespace number::impl {
class LongNameHandler;
-}
-} // namespace number
+} // namespace number::impl
/**
* Enumeration for unit complexity. There are three levels:
@@ -107,13 +105,34 @@ typedef enum UMeasurePrefix {
*/
UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * SI prefix: ronna, 10^27.
+ *
+ * @draft ICU 75
+ */
+ UMEASURE_PREFIX_RONNA = UMEASURE_PREFIX_ONE + 27,
+
+ /**
+ * SI prefix: quetta, 10^30.
+ *
+ * @draft ICU 75
+ */
+ UMEASURE_PREFIX_QUETTA = UMEASURE_PREFIX_ONE + 30,
+#endif /* U_HIDE_DRAFT_API */
+
#ifndef U_HIDE_INTERNAL_API
/**
* ICU use only.
* Used to determine the set of base-10 SI prefixes.
* @internal
*/
+#ifndef U_HIDE_DRAFT_API
+ UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_QUETTA,
+#else /* U_HIDE_DRAFT_API */
UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA,
+#endif /* U_HIDE_DRAFT_API */
+
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -249,13 +268,34 @@ typedef enum UMeasurePrefix {
*/
UMEASURE_PREFIX_YOCTO = UMEASURE_PREFIX_ONE + -24,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * SI prefix: ronto, 10^-27.
+ *
+ * @draft ICU 75
+ */
+ UMEASURE_PREFIX_RONTO = UMEASURE_PREFIX_ONE + -27,
+
+ /**
+ * SI prefix: quecto, 10^-30.
+ *
+ * @draft ICU 75
+ */
+ UMEASURE_PREFIX_QUECTO = UMEASURE_PREFIX_ONE + -30,
+#endif /* U_HIDE_DRAFT_API */
+
#ifndef U_HIDE_INTERNAL_API
/**
* ICU use only.
* Used to determine the set of base-10 SI prefixes.
* @internal
*/
+#ifndef U_HIDE_DRAFT_API
+ UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_QUECTO,
+#else /* U_HIDE_DRAFT_API */
UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_YOCTO,
+#endif /* U_HIDE_DRAFT_API */
+
#endif // U_HIDE_INTERNAL_API
// Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
@@ -648,7 +688,7 @@ class U_I18N_API MeasureUnit: public UObject {
* @return The class ID for all objects of this class.
* @stable ICU 53
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -661,7 +701,7 @@ class U_I18N_API MeasureUnit: public UObject {
* other classes have different class IDs.
* @stable ICU 53
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
#ifndef U_HIDE_INTERNAL_API
/**
@@ -3026,23 +3066,21 @@ class U_I18N_API MeasureUnit: public UObject {
*/
static MeasureUnit getPoundPerSquareInch();
-#ifndef U_HIDE_DRAFT_API
/**
* Returns by pointer, unit of speed: beaufort.
* Caller owns returned value and must free it.
* Also see {@link #getBeaufort()}.
* @param status ICU error code.
- * @draft ICU 73
+ * @stable ICU 73
*/
static MeasureUnit *createBeaufort(UErrorCode &status);
/**
* Returns by value, unit of speed: beaufort.
* Also see {@link #createBeaufort()}.
- * @draft ICU 73
+ * @stable ICU 73
*/
static MeasureUnit getBeaufort();
-#endif /* U_HIDE_DRAFT_API */
/**
* Returns by pointer, unit of speed: kilometer-per-hour.
diff --git a/icu4c/source/i18n/unicode/measure.h b/icu4c/source/i18n/unicode/measure.h
index fbef17c8f..86d7b5121 100644
--- a/icu4c/source/i18n/unicode/measure.h
+++ b/icu4c/source/i18n/unicode/measure.h
@@ -124,7 +124,7 @@ class U_I18N_API Measure: public UObject {
* @return The class ID for all objects of this class.
* @stable ICU 53
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -137,7 +137,7 @@ class U_I18N_API Measure: public UObject {
* other classes have different class IDs.
* @stable ICU 53
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
protected:
/**
diff --git a/icu4c/source/i18n/unicode/messageformat2.h b/icu4c/source/i18n/unicode/messageformat2.h
new file mode 100644
index 000000000..d23ac8409
--- /dev/null
+++ b/icu4c/source/i18n/unicode/messageformat2.h
@@ -0,0 +1,399 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT2_H
+#define MESSAGEFORMAT2_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+/**
+ * \file
+ * \brief C++ API: Formats messages using the draft MessageFormat 2.0.
+ */
+
+#include "unicode/messageformat2_arguments.h"
+#include "unicode/messageformat2_data_model.h"
+#include "unicode/messageformat2_function_registry.h"
+#include "unicode/unistr.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ class Environment;
+ class MessageContext;
+ class ResolvedSelector;
+ class StaticErrors;
+
+ /**
+ * <p>MessageFormatter is a Technical Preview API implementing MessageFormat 2.0.
+ *
+ * <p>See <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/syntax.md">the
+ * description of the syntax with examples and use cases</a> and the corresponding
+ * <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf">ABNF</a> grammar.</p>
+ *
+ * The MessageFormatter class is mutable and movable. It is not copyable.
+ * (It is mutable because if it has a custom function registry, the registry may include
+ * `FormatterFactory` objects implementing custom formatters, which are allowed to contain
+ * mutable state.)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API MessageFormatter : public UObject {
+ // Note: This class does not currently inherit from the existing
+ // `Format` class.
+ public:
+ /**
+ * Move assignment operator:
+ * The source MessageFormatter will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageFormatter& operator=(MessageFormatter&&) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~MessageFormatter();
+
+ /**
+ * Formats the message to a string, using the data model that was previously set or parsed,
+ * and the given `arguments` object.
+ *
+ * @param arguments Reference to message arguments
+ * @param status Input/output error code used to indicate syntax errors, data model
+ * errors, resolution errors, formatting errors, selection errors, as well
+ * as other errors (such as memory allocation failures). Partial output
+ * is still provided in the presence of most error types.
+ * @return The string result of formatting the message with the given arguments.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnicodeString formatToString(const MessageArguments& arguments, UErrorCode &status);
+
+ /**
+ * Not yet implemented; formats the message to a `FormattedMessage` object,
+ * using the data model that was previously set or parsed,
+ * and the given `arguments` object.
+ *
+ * @param arguments Reference to message arguments
+ * @param status Input/output error code used to indicate syntax errors, data model
+ * errors, resolution errors, formatting errors, selection errors, as well
+ * as other errors (such as memory allocation failures). Partial output
+ * is still provided in the presence of most error types.
+ * @return The `FormattedMessage` representing the formatted message.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedMessage format(const MessageArguments& arguments, UErrorCode &status) const {
+ (void) arguments;
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return FormattedMessage(status);
+ }
+
+ /**
+ * Accesses the locale that this `MessageFormatter` object was created with.
+ *
+ * @return A reference to the locale.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Locale& getLocale() const { return locale; }
+
+ /**
+ * Serializes the data model as a string in MessageFormat 2.0 syntax.
+ *
+ * @return result A string representation of the data model.
+ * The string is a valid MessageFormat 2.0 message.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnicodeString getPattern() const;
+
+ /**
+ * Accesses the data model referred to by this
+ * `MessageFormatter` object.
+ *
+ * @return A reference to the data model.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const MFDataModel& getDataModel() const;
+
+ /**
+ * The mutable Builder class allows each part of the MessageFormatter to be initialized
+ * separately; calling its `build()` method yields an immutable MessageFormatter.
+ *
+ * Not copyable or movable.
+ */
+ class U_I18N_API Builder : public UObject {
+ private:
+ friend class MessageFormatter;
+
+ // The pattern to be parsed to generate the formatted message
+ UnicodeString pattern;
+ bool hasPattern = false;
+ bool hasDataModel = false;
+ // The data model to be used to generate the formatted message
+ // Initialized either by `setDataModel()`, or by the parser
+ // through a call to `setPattern()`
+ MFDataModel dataModel;
+ // Normalized representation of the pattern;
+ // ignored if `setPattern()` wasn't called
+ UnicodeString normalizedInput;
+ // Errors (internal representation of parse errors)
+ // Ignored if `setPattern()` wasn't called
+ StaticErrors* errors;
+ Locale locale;
+ // Not owned
+ const MFFunctionRegistry* customMFFunctionRegistry;
+
+ public:
+ /**
+ * Sets the locale to use for formatting.
+ *
+ * @param locale The desired locale.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setLocale(const Locale& locale);
+ /**
+ * Sets the pattern (contents of the message) and parses it
+ * into a data model. If a data model was
+ * previously set, it is removed.
+ *
+ * @param pattern A string in MessageFormat 2.0 syntax.
+ * @param parseError Struct to receive information on the position
+ * of an error within the pattern.
+ * @param status Input/output error code. If the
+ * pattern cannot be parsed, set to failure code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setPattern(const UnicodeString& pattern, UParseError& parseError, UErrorCode& status);
+ /**
+ * Sets a custom function registry.
+ *
+ * @param functionRegistry Reference to the function registry to use.
+ * `functionRegistry` is not copied,
+ * and the caller must ensure its lifetime contains
+ * the lifetime of the `MessageFormatter` object built by this
+ * builder.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setFunctionRegistry(const MFFunctionRegistry& functionRegistry);
+ /**
+ * Sets a data model. If a pattern was previously set, it is removed.
+ *
+ * @param dataModel Data model to format. Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setDataModel(MFDataModel&& dataModel);
+ /**
+ * Constructs a new immutable MessageFormatter using the pattern or data model
+ * that was previously set, and the locale (if it was previously set)
+ * or default locale (otherwise).
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * @param status Input/output error code. If neither the pattern
+ * nor the data model is set, set to failure code.
+ * @return The new MessageFormatter object
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageFormatter build(UErrorCode& status) const;
+ /**
+ * Default constructor.
+ * Returns a Builder with the default locale and with no
+ * data model or pattern set. Either `setPattern()`
+ * or `setDataModel()` has to be called before calling `build()`.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ }; // class MessageFormatter::Builder
+
+ // TODO: Shouldn't be public; only used for testing
+ /**
+ * Returns a string consisting of the input with optional spaces removed.
+ *
+ * @return A normalized string representation of the input
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getNormalizedPattern() const { return normalizedInput; }
+
+ private:
+ friend class Builder;
+ friend class MessageContext;
+
+ MessageFormatter(const MessageFormatter::Builder& builder, UErrorCode &status);
+
+ MessageFormatter() = delete; // default constructor not implemented
+
+ // Do not define default assignment operator
+ const MessageFormatter &operator=(const MessageFormatter &) = delete;
+
+ ResolvedSelector resolveVariables(const Environment& env, const data_model::Operand&, MessageContext&, UErrorCode &) const;
+ ResolvedSelector resolveVariables(const Environment& env, const data_model::Expression&, MessageContext&, UErrorCode &) const;
+
+ // Selection methods
+
+ // Takes a vector of FormattedPlaceholders
+ void resolveSelectors(MessageContext&, const Environment& env, UErrorCode&, UVector&) const;
+ // Takes a vector of vectors of strings (input) and a vector of PrioritizedVariants (output)
+ void filterVariants(const UVector&, UVector&, UErrorCode&) const;
+ // Takes a vector of vectors of strings (input) and a vector of PrioritizedVariants (input/output)
+ void sortVariants(const UVector&, UVector&, UErrorCode&) const;
+ // Takes a vector of strings (input) and a vector of strings (output)
+ void matchSelectorKeys(const UVector&, MessageContext&, ResolvedSelector&& rv, UVector&, UErrorCode&) const;
+ // Takes a vector of FormattedPlaceholders (input),
+ // and a vector of vectors of strings (output)
+ void resolvePreferences(MessageContext&, UVector&, UVector&, UErrorCode&) const;
+
+ // Formatting methods
+ [[nodiscard]] FormattedPlaceholder formatLiteral(const data_model::Literal&) const;
+ void formatPattern(MessageContext&, const Environment&, const data_model::Pattern&, UErrorCode&, UnicodeString&) const;
+ // Formats a call to a formatting function
+ // Dispatches on argument type
+ [[nodiscard]] FormattedPlaceholder evalFormatterCall(FormattedPlaceholder&& argument,
+ MessageContext& context,
+ UErrorCode& status) const;
+ // Dispatches on function name
+ [[nodiscard]] FormattedPlaceholder evalFormatterCall(const FunctionName& functionName,
+ FormattedPlaceholder&& argument,
+ FunctionOptions&& options,
+ MessageContext& context,
+ UErrorCode& status) const;
+ // Formats an expression that appears as a selector
+ ResolvedSelector formatSelectorExpression(const Environment& env, const data_model::Expression&, MessageContext&, UErrorCode&) const;
+ // Formats an expression that appears in a pattern or as the definition of a local variable
+ [[nodiscard]] FormattedPlaceholder formatExpression(const Environment&, const data_model::Expression&, MessageContext&, UErrorCode&) const;
+ [[nodiscard]] FunctionOptions resolveOptions(const Environment& env, const OptionMap&, MessageContext&, UErrorCode&) const;
+ [[nodiscard]] FormattedPlaceholder formatOperand(const Environment&, const data_model::Operand&, MessageContext&, UErrorCode&) const;
+ [[nodiscard]] FormattedPlaceholder evalArgument(const data_model::VariableName&, MessageContext&, UErrorCode&) const;
+ void formatSelectors(MessageContext& context, const Environment& env, UErrorCode &status, UnicodeString& result) const;
+
+ // Function registry methods
+ bool hasCustomMFFunctionRegistry() const {
+ return (customMFFunctionRegistry != nullptr);
+ }
+
+ // Precondition: custom function registry exists
+ // Note: this is non-const because the values in the MFFunctionRegistry are mutable
+ // (a FormatterFactory can have mutable state)
+ const MFFunctionRegistry& getCustomMFFunctionRegistry() const;
+
+ bool isCustomFormatter(const FunctionName&) const;
+ FormatterFactory* lookupFormatterFactory(const FunctionName&, UErrorCode& status) const;
+ bool isBuiltInSelector(const FunctionName&) const;
+ bool isBuiltInFormatter(const FunctionName&) const;
+ bool isCustomSelector(const FunctionName&) const;
+ const SelectorFactory* lookupSelectorFactory(MessageContext&, const FunctionName&, UErrorCode&) const;
+ bool isSelector(const FunctionName& fn) const { return isBuiltInSelector(fn) || isCustomSelector(fn); }
+ bool isFormatter(const FunctionName& fn) const { return isBuiltInFormatter(fn) || isCustomFormatter(fn); }
+ const Formatter* lookupFormatter(const FunctionName&, UErrorCode&) const;
+
+ Selector* getSelector(MessageContext&, const FunctionName&, UErrorCode&) const;
+ Formatter* getFormatter(const FunctionName&, UErrorCode&) const;
+ bool getDefaultFormatterNameByType(const UnicodeString&, FunctionName&) const;
+
+ // Checking for resolution errors
+ void checkDeclarations(MessageContext&, Environment*&, UErrorCode&) const;
+ void check(MessageContext&, const Environment&, const data_model::Expression&, UErrorCode&) const;
+ void check(MessageContext&, const Environment&, const data_model::Operand&, UErrorCode&) const;
+ void check(MessageContext&, const Environment&, const OptionMap&, UErrorCode&) const;
+
+ void initErrors(UErrorCode&);
+ void clearErrors() const;
+ void cleanup() noexcept;
+
+ // The locale this MessageFormatter was created with
+ /* const */ Locale locale;
+
+ // Registry for built-in functions
+ MFFunctionRegistry standardMFFunctionRegistry;
+ // Registry for custom functions; may be null if no custom registry supplied
+ // Note: this is *not* owned by the MessageFormatter object
+ // The reason for this choice is to have a non-destructive MessageFormatter::Builder,
+ // while also not requiring the function registry to be deeply-copyable. Making the
+ // function registry copyable would impose a requirement on any implementations
+ // of the FormatterFactory and SelectorFactory interfaces to implement a custom
+ // clone() method, which is necessary to avoid sharing between copies of the
+ // function registry (and thus double-frees)
+ // Not deeply immutable (the values in the function registry are mutable,
+ // as a FormatterFactory can have mutable state
+ const MFFunctionRegistry* customMFFunctionRegistry;
+
+ // Data model, representing the parsed message
+ MFDataModel dataModel;
+
+ // Normalized version of the input string (optional whitespace removed)
+ UnicodeString normalizedInput;
+
+ // Errors -- only used while parsing and checking for data model errors; then
+ // the MessageContext keeps track of errors
+ // Must be a raw pointer to avoid including the internal header file
+ // defining StaticErrors
+ // Owned by `this`
+ StaticErrors* errors;
+
+ }; // class MessageFormatter
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_H
+
+// eof
diff --git a/icu4c/source/i18n/unicode/messageformat2_arguments.h b/icu4c/source/i18n/unicode/messageformat2_arguments.h
new file mode 100644
index 000000000..f79865a43
--- /dev/null
+++ b/icu4c/source/i18n/unicode/messageformat2_arguments.h
@@ -0,0 +1,138 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT2_ARGUMENTS_H
+#define MESSAGEFORMAT2_ARGUMENTS_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+/**
+ * \file
+ * \brief C++ API: Formats messages using the draft MessageFormat 2.0.
+ */
+
+#include "unicode/messageformat2_data_model_names.h"
+#include "unicode/messageformat2_formattable.h"
+#include "unicode/unistr.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#include <map>
+
+U_NAMESPACE_BEGIN
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MessageFormatDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<UnicodeString>;
+template class U_I18N_API LocalPointerBase<message2::Formattable>;
+template class U_I18N_API LocalArray<UnicodeString>;
+template class U_I18N_API LocalArray<message2::Formattable>;
+#endif
+/// @endcond
+
+namespace message2 {
+
+ class MessageContext;
+
+ // Arguments
+ // ----------
+
+ /**
+ *
+ * The `MessageArguments` class represents the named arguments to a message.
+ * It is immutable and movable. It is not copyable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API MessageArguments : public UObject {
+ public:
+ /**
+ * Message arguments constructor, which takes a map and returns a container
+ * of arguments that can be passed to a `MessageFormatter`.
+ *
+ * @param args A reference to a map from strings (argument names) to `message2::Formattable`
+ * objects (argument values). The keys and values of the map are copied into the result.
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageArguments(const std::map<UnicodeString, Formattable>& args, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ argumentNames = LocalArray<UnicodeString>(new UnicodeString[argsLen = (int32_t) args.size()]);
+ arguments = LocalArray<Formattable>(new Formattable[argsLen]);
+ if (!argumentNames.isValid() || !arguments.isValid()) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ int32_t i = 0;
+ for (auto iter = args.begin(); iter != args.end(); ++iter) {
+ argumentNames[i] = iter->first;
+ arguments[i] = iter->second;
+ i++;
+ }
+ }
+ /**
+ * Move operator:
+ * The source MessageArguments will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageArguments& operator=(MessageArguments&&) noexcept;
+ /**
+ * Default constructor.
+ * Returns an empty arguments mapping.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageArguments() = default;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~MessageArguments();
+ private:
+ friend class MessageContext;
+
+ const Formattable* getArgument(const data_model::VariableName&, UErrorCode&) const;
+
+ // Avoids using Hashtable so that code constructing a Hashtable
+ // doesn't have to appear in this header file
+ LocalArray<UnicodeString> argumentNames;
+ LocalArray<Formattable> arguments;
+ int32_t argsLen = 0;
+ }; // class MessageArguments
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_ARGUMENTS_H
+
+// eof
diff --git a/icu4c/source/i18n/unicode/messageformat2_data_model.h b/icu4c/source/i18n/unicode/messageformat2_data_model.h
new file mode 100644
index 000000000..942a03f73
--- /dev/null
+++ b/icu4c/source/i18n/unicode/messageformat2_data_model.h
@@ -0,0 +1,3090 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT_DATA_MODEL_H
+#define MESSAGEFORMAT_DATA_MODEL_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/localpointer.h"
+#include "unicode/messageformat2_data_model_names.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#include <algorithm>
+#include <cstddef>
+#include <iterator>
+#include <optional>
+#include <variant>
+#include <vector>
+
+U_NAMESPACE_BEGIN
+
+class UVector;
+
+// Helpers
+
+// Note: this _must_ be declared `inline` or else gcc will generate code
+// for its instantiations, which needs to be avoided because it returns
+// a std::vector
+template<typename T>
+static inline std::vector<T> toStdVector(const T* arr, int32_t len) {
+ std::vector<T> result;
+ for (int32_t i = 0; i < len; i++) {
+ result.push_back(arr[i]);
+ }
+ return result;
+}
+
+#if defined(U_REAL_MSVC)
+#pragma warning(push)
+// Ignore warning 4251 as these templates are instantiated later in this file,
+// after the classes used to instantiate them have been defined.
+#pragma warning(disable: 4251)
+#endif
+
+namespace message2 {
+ class Checker;
+ class MFDataModel;
+ class MessageFormatter;
+ class Parser;
+ class Serializer;
+
+
+ namespace data_model {
+ class Binding;
+ class Literal;
+ class Operator;
+
+ /**
+ * The `Reserved` class represents a `reserved` annotation, as in the `reserved` nonterminal
+ * in the MessageFormat 2 grammar or the `Reserved` interface
+ * defined in
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#expressions
+ *
+ * `Reserved` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Reserved : public UMemory {
+ public:
+ /**
+ * A `Reserved` is a sequence of literals.
+ *
+ * @return The number of literals.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int32_t numParts() const;
+ /**
+ * Indexes into the sequence.
+ * Precondition: i < numParts()
+ *
+ * @param i Index of the part being accessed.
+ * @return A reference to he i'th literal in the sequence
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Literal& getPart(int32_t i) const;
+
+ /**
+ * The mutable `Reserved::Builder` class allows the reserved sequence to be
+ * constructed one part at a time.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ UVector* parts; // Not a LocalPointer for the same reason as in `SelectorKeys::Builder`
+
+ public:
+ /**
+ * Adds a single literal to the reserved sequence.
+ *
+ * @param part The literal to be added. Passed by move.
+ * @param status Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(Literal&& part, UErrorCode& status) noexcept;
+ /**
+ * Constructs a new immutable `Reserved` using the list of parts
+ * set with previous `add()` calls.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * param status Input/output error code
+ * @return The new Reserved object
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Reserved build(UErrorCode& status) const noexcept;
+ /**
+ * Default constructor.
+ * Returns a builder with an empty Reserved sequence.
+ *
+ * param status Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Reserved::Builder
+ /**
+ * Non-member swap function.
+ * @param r1 will get r2's contents
+ * @param r2 will get r1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Reserved& r1, Reserved& r2) noexcept {
+ using std::swap;
+
+ swap(r1.bogus, r2.bogus);
+ swap(r1.parts, r2.parts);
+ swap(r1.len, r2.len);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Reserved(const Reserved& other);
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Reserved& operator=(Reserved) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Reserved into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Reserved() { parts = LocalArray<Literal>(); }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Reserved();
+ private:
+ friend class Builder;
+ friend class Operator;
+
+ // True if a copy failed; this has to be distinguished
+ // from a valid `Reserved` with empty parts
+ bool bogus = false;
+
+ // Possibly-empty list of parts
+ // `literal` reserved as a quoted literal; `reserved-char` / `reserved-escape`
+ // strings represented as unquoted literals
+ /* const */ LocalArray<Literal> parts;
+ int32_t len = 0;
+
+ Reserved(const UVector& parts, UErrorCode& status) noexcept;
+ // Helper
+ static void initLiterals(Reserved&, const Reserved&);
+ };
+
+ /**
+ * The `Literal` class corresponds to the `literal` nonterminal in the MessageFormat 2 grammar,
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf and the
+ * `Literal` interface defined in
+ * // https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#expressions
+ *
+ * `Literal` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Literal : public UObject {
+ public:
+ /**
+ * Returns the quoted representation of this literal (enclosed in '|' characters)
+ *
+ * @return A string representation of the literal enclosed in quote characters.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnicodeString quoted() const;
+ /**
+ * Returns the parsed string contents of this literal.
+ *
+ * @return A string representation of this literal.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& unquoted() const;
+ /**
+ * Determines if this literal appeared as a quoted literal in the message.
+ *
+ * @return true if and only if this literal appeared as a quoted literal in the
+ * message.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isQuoted() const { return thisIsQuoted; }
+ /**
+ * Literal constructor.
+ *
+ * @param q True if and only if this literal was parsed with the `quoted` nonterminal
+ * (appeared enclosed in '|' characters in the message text).
+ * @param s The string contents of this literal; escape sequences are assumed to have
+ * been interpreted already.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Literal(UBool q, const UnicodeString& s) : thisIsQuoted(q), contents(s) {}
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Literal(const Literal& other) : thisIsQuoted(other.thisIsQuoted), contents(other.contents) {}
+ /**
+ * Non-member swap function.
+ * @param l1 will get l2's contents
+ * @param l2 will get l1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Literal& l1, Literal& l2) noexcept {
+ using std::swap;
+
+ swap(l1.thisIsQuoted, l2.thisIsQuoted);
+ swap(l1.contents, l2.contents);
+ }
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Literal& operator=(Literal) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Literal into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Literal() = default;
+ /**
+ * Less than operator. Compares `this.stringContents()` with
+ * `other.stringContents()`. This method is used in representing
+ * the mapping from key lists to patterns in a message with variants,
+ * and is not expected to be useful otherwise.
+ *
+ * @param other The Literal to compare to this one.
+ * @return true if the parsed string corresponding to this `Literal`
+ * is less than the parsed string corresponding to the other `Literal`
+ * (according to `UnicodeString`'s less-than operator).
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator<(const Literal& other) const;
+ /**
+ * Equality operator. Compares `this.stringContents()` with
+ * `other.stringContents()`. This method is used in representing
+ * the mapping from key lists to patterns in a message with variants,
+ * and is not expected to be useful otherwise.
+ *
+ * @param other The Literal to compare to this one.
+ * @return true if the parsed string corresponding to this `Literal`
+ * equals the parsed string corresponding to the other `Literal`
+ * (according to `UnicodeString`'s equality operator).
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator==(const Literal& other) const;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Literal();
+
+ private:
+ friend class Reserved::Builder;
+
+ /* const */ bool thisIsQuoted = false;
+ /* const */ UnicodeString contents;
+ };
+ } // namespace data_model
+} // namespace message2
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Literal>;
+template class U_I18N_API LocalArray<message2::data_model::Literal>;
+#endif
+#if defined(U_REAL_MSVC)
+#pragma warning(pop)
+#endif
+/// @endcond
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::variants and std::optionals
+// that are used as a data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
+struct U_I18N_API std::_Nontrivial_dummy_type;
+template class U_I18N_API std::_Variant_storage_<false, icu::UnicodeString, icu::message2::data_model::Literal>;
+#endif
+template class U_I18N_API std::variant<icu::UnicodeString, icu::message2::data_model::Literal>;
+template class U_I18N_API std::optional<std::variant<icu::UnicodeString, icu::message2::data_model::Literal>>;
+template class U_I18N_API std::optional<icu::message2::data_model::Literal>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ namespace data_model {
+
+ /**
+ * The `Operand` class corresponds to the `operand` nonterminal in the MessageFormat 2 grammar,
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf .
+ * It represents a `Literal | VariableRef` -- see the `operand?` field of the `FunctionRef`
+ * interface defined at:
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#expressions
+ * with the difference that it can also represent a null operand (the absent operand in an
+ * `annotation` with no operand).
+ *
+ * `Operand` is immutable and is copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Operand : public UObject {
+ public:
+ /**
+ * Determines if this operand represents a variable.
+ *
+ * @return True if and only if the operand is a variable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isVariable() const;
+ /**
+ * Determines if this operand represents a literal.
+ *
+ * @return True if and only if the operand is a literal.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isLiteral() const;
+ /**
+ * Determines if this operand is the null operand.
+ *
+ * @return True if and only if the operand is the null operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual UBool isNull() const;
+ /**
+ * Returns a reference to this operand's variable name.
+ * Precondition: isVariable()
+ *
+ * @return A reference to the name of the variable
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& asVariable() const;
+ /**
+ * Returns a reference to this operand's literal contents.
+ * Precondition: isLiteral()
+ *
+ * @return A reference to the literal
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Literal& asLiteral() const;
+ /**
+ * Default constructor.
+ * Creates a null Operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operand() : contents(std::nullopt) {}
+ /**
+ * Variable operand constructor.
+ *
+ * @param v The variable name; an operand corresponding
+ * to a reference to `v` is returned.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit Operand(const UnicodeString& v) : contents(VariableName(v)) {}
+ /**
+ * Literal operand constructor.
+ *
+ * @param l The literal to use for this operand; an operand
+ * corresponding to `l` is returned.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit Operand(const Literal& l) : contents(l) {}
+ /**
+ * Non-member swap function.
+ * @param o1 will get o2's contents
+ * @param o2 will get o1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Operand& o1, Operand& o2) noexcept {
+ using std::swap;
+ (void) o1;
+ (void) o2;
+ swap(o1.contents, o2.contents);
+ }
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual Operand& operator=(Operand) noexcept;
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operand(const Operand&);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Operand();
+ private:
+ std::optional<std::variant<VariableName, Literal>> contents;
+ }; // class Operand
+
+ /**
+ * The `Key` class corresponds to the `key` nonterminal in the MessageFormat 2 grammar,
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf .
+ * It also corresponds to
+ * the `Literal | CatchallKey` that is the
+ * element type of the `keys` array in the `Variant` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#messages
+ *
+ * A key is either a literal or the wildcard symbol (represented in messages as '*')
+ *
+ * `Key` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Key : public UObject {
+ public:
+ /**
+ * Determines if this is a wildcard key
+ *
+ * @return True if and only if this is the wildcard key
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isWildcard() const { return !contents.has_value(); }
+ /**
+ * Returns the contents of this key as a literal.
+ * Precondition: !isWildcard()
+ *
+ * @return The literal contents of the key
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Literal& asLiteral() const;
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Key(const Key& other) : contents(other.contents) {}
+ /**
+ * Wildcard constructor; constructs a Key representing the
+ * catchall or wildcard key, '*'.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Key() : contents(std::nullopt) {}
+ /**
+ * Literal key constructor.
+ *
+ * @param lit A Literal to use for this key. The result matches the
+ * literal `lit`.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit Key(const Literal& lit) : contents(lit) {}
+ /**
+ * Non-member swap function.
+ * @param k1 will get k2's contents
+ * @param k2 will get k1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Key& k1, Key& k2) noexcept {
+ using std::swap;
+
+ swap(k1.contents, k2.contents);
+ }
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Key& operator=(Key) noexcept;
+ /**
+ * Less than operator. Compares the literal of `this` with the literal of `other`.
+ * This method is used in representing the mapping from key lists to patterns
+ * in a message with variants, and is not expected to be useful otherwise.
+ *
+ * @param other The Key to compare to this one.
+ * @return true if the two `Key`s are not wildcards and if `this.asLiteral()`
+ * < `other.asLiteral()`.
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator<(const Key& other) const;
+ /**
+ * Equality operator. Compares the literal of `this` with the literal of `other`.
+ * This method is used in representing the mapping from key lists to patterns
+ * in a message with variants, and is not expected to be useful otherwise.
+ *
+ * @param other The Key to compare to this one.
+ * @return true if either both `Key`s are wildcards, or `this.asLiteral()`
+ * == `other.asLiteral()`.
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator==(const Key& other) const;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Key();
+ private:
+ /* const */ std::optional<Literal> contents;
+ }; // class Key
+ } // namespace data_model
+} // namespace message2
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Key>;
+template class U_I18N_API LocalArray<message2::data_model::Key>;
+#endif
+/// @endcond
+
+namespace message2 {
+ namespace data_model {
+ /**
+ * The `SelectorKeys` class represents the key list for a single variant.
+ * It corresponds to the `keys` array in the `Variant` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#messages
+ *
+ * `SelectorKeys` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API SelectorKeys : public UObject {
+ public:
+ /**
+ * Returns the underlying list of keys.
+ *
+ * @return The list of keys for this variant.
+ * Returns an empty list if allocating this `SelectorKeys`
+ * object previously failed.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Key> getKeys() const {
+ return toStdVector<Key>(keys.getAlias(), len);
+ }
+ /**
+ * The mutable `SelectorKeys::Builder` class allows the key list to be constructed
+ * one key at a time.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class SelectorKeys;
+ UVector* keys; // This is a raw pointer and not a LocalPointer<UVector> to avoid undefined behavior warnings,
+ // since UVector is forward-declared
+ // The vector owns its elements
+ public:
+ /**
+ * Adds a single key to the list.
+ *
+ * @param key The key to be added. Passed by move
+ * @param status Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(Key&& key, UErrorCode& status) noexcept;
+ /**
+ * Constructs a new immutable `SelectorKeys` using the list of keys
+ * set with previous `add()` calls.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * @param status Input/output error code
+ * @return The new SelectorKeys object
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorKeys build(UErrorCode& status) const;
+ /**
+ * Default constructor.
+ * Returns a Builder with an empty list of keys.
+ *
+ * @param status Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class SelectorKeys::Builder
+ /**
+ * Less than operator. Compares the two key lists lexicographically.
+ * This method makes it possible for a `SelectorKeys` to be used as a map
+ * key, which allows variants to be represented as a map. It is not expected
+ * to be useful otherwise.
+ *
+ * @param other The SelectorKeys to compare to this one.
+ * @return true if `this` is less than `other`, comparing the two key lists
+ * lexicographically.
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator<(const SelectorKeys& other) const;
+ /**
+ * Default constructor.
+ * Puts the SelectorKeys into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorKeys() : len(0) {}
+ /**
+ * Non-member swap function.
+ * @param s1 will get s2's contents
+ * @param s2 will get s1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(SelectorKeys& s1, SelectorKeys& s2) noexcept {
+ using std::swap;
+
+ swap(s1.len, s2.len);
+ swap(s1.keys, s2.keys);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorKeys(const SelectorKeys& other);
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorKeys& operator=(SelectorKeys other) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~SelectorKeys();
+ private:
+ friend class Builder;
+ friend class message2::Checker;
+ friend class message2::MessageFormatter;
+ friend class message2::Serializer;
+
+ /* const */ LocalArray<Key> keys;
+ /* const */ int32_t len;
+
+ const Key* getKeysInternal() const;
+ SelectorKeys(const UVector& ks, UErrorCode& status);
+ }; // class SelectorKeys
+
+
+ } // namespace data_model
+
+
+ namespace data_model {
+ class Operator;
+
+ /**
+ * An `Option` pairs an option name with an Operand.
+ *
+ * `Option` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Option : public UObject {
+ public:
+ /**
+ * Accesses the right-hand side of the option.
+ *
+ * @return A reference to the operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Operand& getValue() const { return rand; }
+ /**
+ * Accesses the left-hand side of the option.
+ *
+ * @return A reference to the option name.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getName() const { return name; }
+ /**
+ * Constructor. Returns an `Option` representing the
+ * named option "name=rand".
+ *
+ * @param n The name of the option.
+ * @param r The value of the option.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Option(const UnicodeString& n, Operand&& r) : name(n), rand(std::move(r)) {}
+ /**
+ * Default constructor.
+ * Returns an Option in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Option() {}
+ /**
+ * Non-member swap function.
+ * @param o1 will get o2's contents
+ * @param o2 will get o1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Option& o1, Option& o2) noexcept {
+ using std::swap;
+
+ swap(o1.name, o2.name);
+ swap(o1.rand, o2.rand);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Option(const Option& other);
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Option& operator=(Option other) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Option();
+ private:
+ /* const */ UnicodeString name;
+ /* const */ Operand rand;
+ }; // class Option
+ } // namespace data_model
+} // namespace message2
+
+ /// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Option>;
+template class U_I18N_API LocalArray<message2::data_model::Option>;
+#endif
+/// @endcond
+
+namespace message2 {
+ namespace data_model {
+ // Internal only
+ #ifndef U_IN_DOXYGEN
+ // Options
+ // This is a wrapper class around a vector of options that provides lookup operations
+ class U_I18N_API OptionMap : public UObject {
+ public:
+ int32_t size() const;
+ // Needs to take an error code b/c an earlier copy might have failed
+ const Option& getOption(int32_t, UErrorCode&) const;
+ friend inline void swap(OptionMap& m1, OptionMap& m2) noexcept {
+ using std::swap;
+
+ swap(m1.bogus, m2.bogus);
+ swap(m1.options, m2.options);
+ swap(m1.len, m2.len);
+ }
+ OptionMap() : len(0) {}
+ OptionMap(const OptionMap&);
+ OptionMap& operator=(OptionMap);
+ std::vector<Option> getOptions() const {
+ return toStdVector<Option>(options.getAlias(), len);
+ }
+ OptionMap(const UVector&, UErrorCode&);
+ OptionMap(Option*, int32_t);
+ virtual ~OptionMap();
+
+ class U_I18N_API Builder : public UObject {
+ private:
+ UVector* options;
+ bool checkDuplicates = true;
+ public:
+ Builder& add(Option&& opt, UErrorCode&);
+ Builder(UErrorCode&);
+ static Builder attributes(UErrorCode&);
+ // As this class is private, build() is destructive
+ OptionMap build(UErrorCode&);
+ friend inline void swap(Builder& m1, Builder& m2) noexcept {
+ using std::swap;
+
+ swap(m1.options, m2.options);
+ swap(m1.checkDuplicates, m2.checkDuplicates);
+ }
+ Builder(Builder&&);
+ Builder(const Builder&) = delete;
+ Builder& operator=(Builder) noexcept;
+ virtual ~Builder();
+ }; // class OptionMap::Builder
+ private:
+ friend class message2::Serializer;
+
+ bool bogus = false;
+ LocalArray<Option> options;
+ int32_t len;
+ }; // class OptionMap
+ #endif
+
+ // Internal use only
+ #ifndef U_IN_DOXYGEN
+ class U_I18N_API Callable : public UObject {
+ public:
+ friend inline void swap(Callable& c1, Callable& c2) noexcept {
+ using std::swap;
+
+ swap(c1.name, c2.name);
+ swap(c1.options, c2.options);
+ }
+ const FunctionName& getName() const { return name; }
+ const OptionMap& getOptions() const { return options; }
+ Callable(const FunctionName& f, const OptionMap& opts) : name(f), options(opts) {}
+ Callable& operator=(Callable) noexcept;
+ Callable(const Callable&);
+ Callable() = default;
+ virtual ~Callable();
+ private:
+ /* const */ FunctionName name;
+ /* const */ OptionMap options;
+ };
+ #endif
+ } // namespace data_model
+} // namespace message2
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::variant that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
+template class U_I18N_API std::_Variant_storage_<false, icu::message2::data_model::Reserved,icu::message2::data_model::Callable>;
+#endif
+template class U_I18N_API std::variant<icu::message2::data_model::Reserved,icu::message2::data_model::Callable>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ namespace data_model {
+ /**
+ * The `Operator` class corresponds to the `FunctionRef | Reserved` type in the
+ * `Expression` interface defined in
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#patterns
+ *
+ * It represents the annotation that an expression can have: either a function name paired
+ * with a map from option names to operands (possibly empty),
+ * or a reserved sequence, which has no meaning and results in an error if the formatter
+ * is invoked.
+ *
+ * `Operator` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Operator : public UObject {
+ public:
+ /**
+ * Determines if this operator is a reserved annotation.
+ *
+ * @return true if and only if this operator represents a reserved sequence.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isReserved() const { return std::holds_alternative<Reserved>(contents); }
+ /**
+ * Accesses the function name.
+ * Precondition: !isReserved()
+ *
+ * @return The function name of this operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const FunctionName& getFunctionName() const;
+ /**
+ * Accesses the underlying reserved sequence.
+ * Precondition: isReserved()
+ *
+ * @return The reserved sequence represented by this operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Reserved& asReserved() const;
+ /**
+ * Accesses function options.
+ * Precondition: !isReserved()
+ *
+ * @return A vector of function options for this operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Option> getOptions() const {
+ const Callable* f = std::get_if<Callable>(&contents);
+ // This case should never happen, as the precondition is !isReserved()
+ if (f == nullptr) { return {}; }
+ const OptionMap& opts = f->getOptions();
+ return opts.getOptions();
+ }
+ /**
+ * The mutable `Operator::Builder` class allows the operator to be constructed
+ * incrementally.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class Operator;
+ bool isReservedSequence = false;
+ bool hasFunctionName = false;
+ bool hasOptions = false;
+ Reserved asReserved;
+ FunctionName functionName;
+ OptionMap::Builder options;
+ public:
+ /**
+ * Sets this operator to be a reserved sequence.
+ * If a function name and/or options were previously set,
+ * clears them.
+ *
+ * @param reserved The reserved sequence to set as the contents of this Operator.
+ * (Passed by move.)
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setReserved(Reserved&& reserved);
+ /**
+ * Sets this operator to be a function annotation and sets its name
+ * to `func`.
+ * If a reserved sequence was previously set, clears it.
+ *
+ * @param func The function name.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setFunctionName(FunctionName&& func);
+ /**
+ * Sets this operator to be a function annotation and adds a
+ * single option.
+ * If a reserved sequence was previously set, clears it.
+ *
+ * @param key The name of the option.
+ * @param value The value (right-hand side) of the option.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addOption(const UnicodeString &key, Operand&& value, UErrorCode& status) noexcept;
+ /**
+ * Constructs a new immutable `Operator` using the `reserved` annotation
+ * or the function name and options that were previously set.
+ * If neither `setReserved()` nor `setFunctionName()` was previously
+ * called, then `status` is set to U_INVALID_STATE_ERROR.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * The `build()` method is non-const for internal implementation reasons,
+ * but is observably const.
+ *
+ * @param status Input/output error code.
+ * @return The new Operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operator build(UErrorCode& status);
+ /**
+ * Default constructor.
+ * Returns a Builder with no function name or reserved sequence set.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Operator::Builder
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operator(const Operator& other) noexcept;
+ /**
+ * Non-member swap function.
+ * @param o1 will get o2's contents
+ * @param o2 will get o1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Operator& o1, Operator& o2) noexcept {
+ using std::swap;
+
+ swap(o1.contents, o2.contents);
+ }
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operator& operator=(Operator) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Operator into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operator() : contents(Reserved()) {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Operator();
+ private:
+ friend class Binding;
+ friend class Builder;
+ friend class message2::Checker;
+ friend class message2::MessageFormatter;
+ friend class message2::Serializer;
+
+ // Function call constructor
+ Operator(const FunctionName& f, const UVector& options, UErrorCode&);
+ // Reserved sequence constructor
+ Operator(const Reserved& r) : contents(r) {}
+
+ const OptionMap& getOptionsInternal() const;
+ Operator(const FunctionName&, const OptionMap&);
+ /* const */ std::variant<Reserved, Callable> contents;
+ }; // class Operator
+ } // namespace data_model
+} // namespace message2
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::optional that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API std::optional<icu::message2::data_model::Operator>;
+template class U_I18N_API std::optional<icu::message2::data_model::Reserved>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ namespace data_model {
+ // Internal only
+ typedef enum UMarkupType {
+ UMARKUP_OPEN = 0,
+ UMARKUP_CLOSE,
+ UMARKUP_STANDALONE,
+ UMARKUP_COUNT
+ } UMarkupType;
+
+ /**
+ * The `Markup` class corresponds to the `markup` nonterminal in the MessageFormat 2
+ * grammar and the `markup` interface defined in
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model/message.json
+ *
+ * `Markup` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Markup : public UObject {
+ public:
+ /**
+ * Checks if this markup is an opening tag.
+ *
+ * @return True if and only if this represents an opening tag.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isOpen() const { return (type == UMARKUP_OPEN); }
+ /**
+ * Checks if this markup is an closing tag.
+ *
+ * @return True if and only if this represents an closing tag.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isClose() const { return (type == UMARKUP_CLOSE); }
+ /**
+ * Checks if this markup is an standalone tag.
+ *
+ * @return True if and only if this represents a standalone tag.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isStandalone() const { return (type == UMARKUP_STANDALONE); }
+ /**
+ * Gets the name of this markup
+ *
+ * @return A reference to the string identifying the markup
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getName() const { return name; }
+ /**
+ * Gets the options of this markup
+ *
+ * @return A reference to the string identifying the markup
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Option> getOptions() const { return options.getOptions(); }
+ /**
+ * Gets the attributes of this markup
+ *
+ * @return A vector of attributes
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Option> getAttributes() const { return attributes.getOptions(); }
+ /**
+ * Default constructor.
+ * Puts the Markup into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Markup() {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Markup();
+ /**
+ * The mutable `Markup::Builder` class allows the markup to be constructed
+ * incrementally.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class Markup;
+
+ UnicodeString name;
+ OptionMap::Builder options;
+ OptionMap::Builder attributes;
+ UMarkupType type = UMARKUP_COUNT;
+ public:
+ /**
+ * Sets the name of this markup.
+ *
+ * @param n A string representing the name.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setName(const UnicodeString& n) { name = n; return *this; }
+ /**
+ * Sets this to be an opening markup.
+ *
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setOpen() { type = UMARKUP_OPEN; return *this; }
+ /**
+ * Sets this to be an closing markup.
+ *
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setClose() { type = UMARKUP_CLOSE; return *this; }
+ /**
+ * Sets this to be a standalone markup.
+ *
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setStandalone() { type = UMARKUP_STANDALONE; return *this; }
+ /**
+ * Adds a single option.
+ *
+ * @param key The name of the option.
+ * @param value The value (right-hand side) of the option.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addOption(const UnicodeString &key, Operand&& value, UErrorCode& status);
+ /**
+ * Adds a single attribute.
+ *
+ * @param key The name of the attribute.
+ * @param value The value (right-hand side) of the attribute.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addAttribute(const UnicodeString &key, Operand&& value, UErrorCode& status);
+ /**
+ * Constructs a new immutable `Markup` using the name and type
+ * and (optionally) options and attributes that were previously set.
+ * If `setName()` and at least one of `setOpen()`, `setClose()`, and `setStandalone()`
+ * were not previously called,
+ * then `status` is set to U_INVALID_STATE_ERROR.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ * The `build()` method is non-const for internal implementation reasons,
+ * but is observably const.
+ *
+ * @param status Input/output error code.
+ * @return The new Markup.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Markup build(UErrorCode& status);
+ /**
+ * Default constructor.
+ * Returns a Builder with no name, type, options, or attributes set.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Markup::Builder
+
+ private:
+ friend class Builder;
+ friend class message2::Serializer;
+
+ UMarkupType type;
+ UnicodeString name;
+ OptionMap options;
+ OptionMap attributes;
+ const OptionMap& getOptionsInternal() const { return options; }
+ const OptionMap& getAttributesInternal() const { return attributes; }
+ Markup(UMarkupType, UnicodeString, OptionMap&&, OptionMap&&);
+ }; // class Markup
+
+ /**
+ * The `Expression` class corresponds to the `expression` nonterminal in the MessageFormat 2
+ * grammar and the `Expression` interface defined in
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#patterns
+ *
+ * It represents either an operand with no annotation; an annotation with no operand;
+ * or an operand annotated with an annotation.
+ *
+ * `Expression` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Expression : public UObject {
+ public:
+ /**
+ * Checks if this expression is an annotation
+ * with no operand.
+ *
+ * @return True if and only if the expression has
+ * an annotation and has no operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isStandaloneAnnotation() const;
+ /**
+ * Checks if this expression has a function
+ * annotation (with or without an operand). A reserved
+ * sequence is not a function annotation.
+ *
+ * @return True if and only if the expression has an annotation
+ * that is a function.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isFunctionCall() const;
+ /**
+ * Returns true if and only if this expression is
+ * annotated with a reserved sequence.
+ *
+ * @return True if and only if the expression has an
+ * annotation that is a reserved sequence,
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isReserved() const;
+ /**
+ * Accesses the function or reserved sequence
+ * annotating this expression.
+ * If !(isFunctionCall() || isReserved()), sets
+ * `status` to U_INVALID_STATE_ERROR.
+ *
+ * @param status Input/output error code.
+ * @return A non-owned pointer to the operator of this expression,
+ * which does not outlive the expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Operator* getOperator(UErrorCode& status) const;
+ /**
+ * Accesses the operand of this expression.
+ *
+ * @return A reference to the operand of this expression,
+ * which may be the null operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Operand& getOperand() const;
+ /**
+ * Gets the attributes of this expression
+ *
+ * @return A vector of attributes
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Option> getAttributes() const { return attributes.getOptions(); }
+ /**
+ * The mutable `Expression::Builder` class allows the operator to be constructed
+ * incrementally.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class Expression;
+
+ bool hasOperand = false;
+ bool hasOperator = false;
+ Operand rand;
+ Operator rator;
+ OptionMap::Builder attributes;
+ public:
+ /**
+ * Sets the operand of this expression.
+ *
+ * @param rAnd The operand to set. Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setOperand(Operand&& rAnd);
+ /**
+ * Sets the operator of this expression.
+ *
+ * @param rAtor The operator to set. Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setOperator(Operator&& rAtor);
+ /**
+ * Adds a single attribute.
+ *
+ * @param key The name of the attribute.
+ * @param value The value (right-hand side) of the attribute.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addAttribute(const UnicodeString &key, Operand&& value, UErrorCode& status);
+ /**
+ * Constructs a new immutable `Expression` using the operand and operator that
+ * were previously set. If neither `setOperand()` nor `setOperator()` was
+ * previously called, or if `setOperand()` was called with the null operand
+ * and `setOperator()` was never called, then `status` is set to
+ * U_INVALID_STATE_ERROR.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ * The `build()` method is non-const for internal implementation reasons,
+ * but is observably const.
+
+ * @param status Input/output error code.
+ * @return The new Expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Expression build(UErrorCode& status);
+ /**
+ * Default constructor.
+ * Returns a Builder with no operator or operand set.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Expression::Builder
+ /**
+ * Non-member swap function.
+ * @param e1 will get e2's contents
+ * @param e2 will get e1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Expression& e1, Expression& e2) noexcept {
+ using std::swap;
+
+ swap(e1.rator, e2.rator);
+ swap(e1.rand, e2.rand);
+ swap(e1.attributes, e2.attributes);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Expression(const Expression& other);
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Expression& operator=(Expression) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Expression into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Expression();
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Expression();
+ private:
+ friend class message2::Serializer;
+
+ /*
+ Internally, an expression is represented as the application of an optional operator to an operand.
+ The operand is always present; for function calls with no operand, it's represented
+ as an operand for which `isNull()` is true.
+
+ Operator | Operand
+ --------------------------------
+ { |42| :fun opt=value } => (FunctionName=fun, | Literal(quoted=true, contents="42")
+ options={opt: value})
+ { abcd } => null | Literal(quoted=false, contents="abcd")
+ { : fun opt=value } => (FunctionName=fun,
+ options={opt: value}) | NullOperand()
+ */
+
+ Expression(const Operator &rAtor, const Operand &rAnd, const OptionMap& attrs) : rator(rAtor), rand(rAnd), attributes(attrs) {}
+ Expression(const Operand &rAnd, const OptionMap& attrs) : rator(std::nullopt), rand(Operand(rAnd)), attributes(attrs) {}
+ Expression(const Operator &rAtor, const OptionMap& attrs) : rator(rAtor), rand(), attributes(attrs) {}
+ /* const */ std::optional<Operator> rator;
+ /* const */ Operand rand;
+ /* const */ OptionMap attributes;
+ const OptionMap& getAttributesInternal() const { return attributes; }
+ }; // class Expression
+ } // namespace data_model
+} // namespace message2
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Expression>;
+template class U_I18N_API LocalArray<message2::data_model::Expression>;
+#endif
+/// @endcond
+
+namespace message2 {
+ namespace data_model {
+ /**
+ * The `UnsupportedStatement` class corresponds to the `reserved-statement` nonterminal in the MessageFormat 2
+ * grammar and the `unsupported-statement` type defined in:
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model/message.json#L169
+ *
+ * It represents a keyword (string) together with an optional
+ * `Reserved` annotation and a non-empty list of expressions.
+ *
+ * `UnsupportedStatement` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API UnsupportedStatement : public UObject {
+ public:
+ /**
+ * Accesses the keyword of this statement.
+ *
+ * @return A reference to a string.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getKeyword() const { return keyword; }
+ /**
+ * Accesses the `reserved-body` of this statement.
+ *
+ * @param status Input/output error code. Set to U_ILLEGAL_ARGUMENT_ERROR
+ * if this unsupported statement has no body.
+ * @return A non-owned pointer to a `Reserved` annotation,
+ * which is non-null if U_SUCCESS(status).
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Reserved* getBody(UErrorCode& status) const;
+ /**
+ * Accesses the expressions of this statement.
+ *
+ * @return A vector of Expressions.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Expression> getExpressions() const {
+ if (expressionsLen <= 0 || !expressions.isValid()) {
+ // This case should never happen, but we can't use an assertion here
+ return {};
+ }
+ return toStdVector<Expression>(expressions.getAlias(), expressionsLen);
+ }
+ /**
+ * The mutable `UnsupportedStatement::Builder` class allows the statement to be constructed
+ * incrementally.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class UnsupportedStatement;
+ friend class message2::Parser;
+
+ UnicodeString keyword;
+ std::optional<Reserved> body;
+ UVector* expressions; // Vector of expressions;
+ // not a LocalPointer for
+ // the same reason as in `SelectorKeys::builder`
+ public:
+ /**
+ * Sets the keyword of this statement.
+ *
+ * @param k The keyword to set.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setKeyword(const UnicodeString& k);
+ /**
+ * Sets the body of this statement.
+ *
+ * @param r The `Reserved` annotation to set as the body. Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setBody(Reserved&& r);
+ /**
+ * Adds an expression to this statement.
+ *
+ * @param e The expression to add. Passed by move.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addExpression(Expression&& e, UErrorCode& status);
+ /**
+ * Constructs a new immutable `UnsupportedStatement` using the keyword,
+ * body and (if applicable) expressions that were previously set.
+ * If `setKeyword()` was never called, then `status` is set to
+ * U_INVALID_STATE_ERROR. If `setBody()` was never called, the body is
+ * treated as absent (not an error). If `addExpression()` was not called
+ * at least once, then `status` is set to U_INVALID_STATE_ERROR.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ * @param status Input/output error code.
+ * @return The new UnsupportedStatement
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnsupportedStatement build(UErrorCode& status) const;
+ /**
+ * Default constructor.
+ * Returns a Builder with no keyword or body set.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class UnsupportedStatement::Builder
+ /**
+ * Non-member swap function.
+ * @param s1 will get s2's contents
+ * @param s2 will get s1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(UnsupportedStatement& s1, UnsupportedStatement& s2) noexcept {
+ using std::swap;
+
+ swap(s1.keyword, s2.keyword);
+ swap(s1.body, s2.body);
+ swap(s1.expressions, s2.expressions);
+ swap(s1.expressionsLen, s2.expressionsLen);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnsupportedStatement(const UnsupportedStatement& other);
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnsupportedStatement& operator=(UnsupportedStatement) noexcept;
+ /**
+ * Default constructor.
+ * Puts the UnsupportedStatement into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnsupportedStatement() : expressions(LocalArray<Expression>()) {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~UnsupportedStatement();
+ private:
+ friend class message2::Serializer;
+
+ /* const */ UnicodeString keyword;
+ /* const */ std::optional<Reserved> body;
+ /* const */ LocalArray<Expression> expressions;
+ /* const */ int32_t expressionsLen = 0;
+
+ const Expression* getExpressionsInternal() const { return expressions.getAlias(); }
+
+ UnsupportedStatement(const UnicodeString&, const std::optional<Reserved>&, const UVector&, UErrorCode&);
+ }; // class UnsupportedStatement
+
+ class Pattern;
+
+ // Despite the comments, `PatternPart` is internal-only
+ /**
+ * A `PatternPart` is a single element (text or expression) in a `Pattern`.
+ * It corresponds to the `body` field of the `Pattern` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#patterns
+ *
+ * `PatternPart` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class PatternPart : public UObject {
+ public:
+ /**
+ * Checks if the part is a text part.
+ *
+ * @return True if and only if this is a text part.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isText() const { return std::holds_alternative<UnicodeString>(piece); }
+ /**
+ * Checks if the part is a markup part.
+ *
+ * @return True if and only if this is a markup part.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isMarkup() const { return std::holds_alternative<Markup>(piece); }
+ /**
+ * Checks if the part is an expression part.
+ *
+ * @return True if and only if this is an expression part.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isExpression() const { return std::holds_alternative<Expression>(piece); }
+ /**
+ * Accesses the expression of the part.
+ * Precondition: isExpression()
+ *
+ * @return A reference to the part's underlying expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Expression& contents() const;
+ /**
+ * Accesses the expression of the part.
+ * Precondition: isMarkup()
+ *
+ * @return A reference to the part's underlying expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Markup& asMarkup() const;
+ /**
+ * Accesses the text contents of the part.
+ * Precondition: isText()
+ *
+ * @return A reference to a string representing the part's text..
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& asText() const;
+ /**
+ * Non-member swap function.
+ * @param p1 will get p2's contents
+ * @param p2 will get p1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(PatternPart& p1, PatternPart& p2) noexcept {
+ using std::swap;
+
+ swap(p1.piece, p2.piece);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ PatternPart(const PatternPart& other);
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ PatternPart& operator=(PatternPart) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~PatternPart();
+ /**
+ * Text part constructor. Returns a text pattern part
+ * with text `t`.
+ *
+ * @param t A text string.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit PatternPart(const UnicodeString& t) : piece(t) {}
+ /**
+ * Expression part constructor. Returns an Expression pattern
+ * part with expression `e`.
+ *
+ * @param e An Expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit PatternPart(Expression&& e) : piece(e) {}
+ /**
+ * Markup part constructor. Returns a Markup pattern
+ * part with markup `m`
+ *
+ * @param m A Markup.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit PatternPart(Markup&& m) : piece(m) {}
+ /**
+ * Default constructor.
+ * Puts the PatternPart into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ PatternPart() = default;
+ private:
+ friend class Pattern;
+
+ std::variant<UnicodeString, Expression, Markup> piece;
+ }; // class PatternPart
+ } // namespace data_model
+} // namespace message2
+
+ /// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::PatternPart>;
+template class U_I18N_API LocalArray<message2::data_model::PatternPart>;
+template class U_I18N_API LocalPointerBase<message2::data_model::UnsupportedStatement>;
+template class U_I18N_API LocalArray<message2::data_model::UnsupportedStatement>;
+#endif
+/// @endcond
+
+namespace message2 {
+ namespace data_model {
+ /**
+ * A `Pattern` is a sequence of formattable parts.
+ * It corresponds to the `Pattern` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#patterns
+ *
+ * `Pattern` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Pattern : public UObject {
+ private:
+ friend class PatternPart;
+
+ public:
+ struct Iterator;
+ /**
+ * Returns the parts of this pattern
+ *
+ * @return A forward iterator of variants. Each element is either a string (text part)
+ * or an expression part.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Iterator begin() const {
+ return Iterator(this, 0);
+ }
+ /**
+ * Returns a special value to mark the end of iteration
+ *
+ * @return A forward iterator of variants. This should only be used for comparisons
+ * against an iterator returned by incrementing begin().
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Iterator end() const {
+ return Iterator(this, len);
+ }
+ /**
+ * The mutable `Pattern::Builder` class allows the pattern to be
+ * constructed one part at a time.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class Pattern;
+
+ UVector* parts; // Not a LocalPointer for the same reason as in `SelectorKeys::Builder`
+
+ public:
+ /**
+ * Adds a single expression part to the pattern.
+ *
+ * @param part The part to be added (passed by move)
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(Expression&& part, UErrorCode& status) noexcept;
+ /**
+ * Adds a single markup part to the pattern.
+ *
+ * @param part The part to be added (passed by move)
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(Markup&& part, UErrorCode& status) noexcept;
+ /**
+ * Adds a single text part to the pattern. Copies `part`.
+ *
+ * @param part The part to be added (passed by move)
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(UnicodeString&& part, UErrorCode& status) noexcept;
+ /**
+ * Constructs a new immutable `Pattern` using the list of parts
+ * set with previous `add()` calls.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * @param status Input/output error code.
+ * @return The pattern object
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Pattern build(UErrorCode& status) const noexcept;
+ /**
+ * Default constructor.
+ * Returns a Builder with an empty sequence of PatternParts.
+ *
+ * @param status Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Pattern::Builder
+
+ /**
+ * Default constructor.
+ * Puts the Pattern into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Pattern() : parts(LocalArray<PatternPart>()) {}
+ /**
+ * Non-member swap function.
+ * @param p1 will get p2's contents
+ * @param p2 will get p1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Pattern& p1, Pattern& p2) noexcept {
+ using std::swap;
+
+ swap(p1.bogus, p2.bogus);
+ swap(p1.len, p2.len);
+ swap(p1.parts, p2.parts);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Pattern(const Pattern& other);
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Pattern& operator=(Pattern) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Pattern();
+
+ /**
+ * The `Pattern::Iterator` class provides an iterator over the formattable
+ * parts of a pattern.
+ *
+ * `Pattern::Iterator` is mutable and is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ struct U_I18N_API Iterator {
+ private:
+ using iterator_category = std::forward_iterator_tag;
+ using difference_type = std::ptrdiff_t;
+ using value_type = std::variant<UnicodeString, Expression, Markup>;
+ using pointer = value_type*;
+ using reference = const value_type&;
+
+ friend class Pattern;
+ Iterator(const Pattern* p, int32_t i) : pos(i), pat(p) {}
+ friend bool operator== (const Iterator& a, const Iterator& b) { return (a.pat == b.pat && a.pos == b.pos); }
+
+ int32_t pos;
+ const Pattern* pat;
+
+ public:
+ /**
+ * Dereference operator (gets the element at the current iterator position)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ reference operator*() const {
+ const PatternPart& part = pat->parts[pos];
+ return patternContents(part);
+ }
+ /**
+ * Increment operator (advances to the next iterator position)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Iterator operator++() { pos++; return *this; }
+ /**
+ * Inequality comparison operator (used for comparing an iterator to the result of end())
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend bool operator!= (const Iterator& a, const Iterator& b) { return !(a == b); }
+ }; // struct Iterator
+
+ private:
+ friend class Builder;
+ friend class message2::MessageFormatter;
+ friend class message2::Serializer;
+
+ // Set to true if a copy constructor fails;
+ // needed in order to distinguish an uninitialized
+ // Pattern from a 0-length pattern
+ bool bogus = false;
+
+ // Possibly-empty array of parts
+ int32_t len = 0;
+ LocalArray<PatternPart> parts;
+
+ Pattern(const UVector& parts, UErrorCode& status);
+ // Helper
+ static void initParts(Pattern&, const Pattern&);
+
+ /**
+ * Returns the size.
+ *
+ * @return The number of parts in the pattern.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int32_t numParts() const;
+ /**
+ * Returns the `i`th part in the pattern.
+ * Precondition: i < numParts()
+ *
+ * @param i Index of the part being accessed.
+ * @return A reference to the part at index `i`.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const PatternPart& getPart(int32_t i) const;
+
+ // Gets around not being able to declare Pattern::Iterator as a friend
+ // in PatternPart
+ static const std::variant<UnicodeString, Expression, Markup>&
+ patternContents(const PatternPart& p) { return p.piece; }
+ }; // class Pattern
+
+ /**
+ * A `Variant` pairs a list of keys with a pattern
+ * It corresponds to the `Variant` interface
+ * defined in https://github.com/unicode-org/message-format-wg/tree/main/spec/data-model
+ *
+ * `Variant` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Variant : public UObject {
+ public:
+ /**
+ * Accesses the pattern of the variant.
+ *
+ * @return A reference to the pattern.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Pattern& getPattern() const { return p; }
+ /**
+ * Accesses the keys of the variant.
+ *
+ * @return A reference to the keys.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const SelectorKeys& getKeys() const { return k; }
+ /**
+ * Constructor. Returns a variant that formats to `pattern`
+ * when `keys` match the selector expressions in the enclosing
+ * `match` construct.
+ *
+ * @param keys A reference to a `SelectorKeys`.
+ * @param pattern A pattern (passed by move)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Variant(const SelectorKeys& keys, Pattern&& pattern) : k(keys), p(std::move(pattern)) {}
+ /**
+ * Non-member swap function.
+ * @param v1 will get v2's contents
+ * @param v2 will get v1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Variant& v1, Variant& v2) noexcept {
+ using std::swap;
+
+ swap(v1.k, v2.k);
+ swap(v1.p, v2.p);
+ }
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Variant& operator=(Variant other) noexcept;
+ /**
+ * Default constructor.
+ * Returns a Variant in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Variant() = default;
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Variant(const Variant&);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Variant();
+ private:
+ /* const */ SelectorKeys k;
+ /* const */ Pattern p;
+ }; // class Variant
+ } // namespace data_model
+
+ namespace data_model {
+ /**
+ * A `Binding` pairs a variable name with an expression.
+ * It corresponds to the `Declaration` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#messages
+ *
+ * `Binding` is immutable and copyable. It is not movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Binding : public UObject {
+ public:
+ /**
+ * Accesses the right-hand side of a binding.
+ *
+ * @return A reference to the expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Expression& getValue() const;
+ /**
+ * Accesses the left-hand side of the binding.
+ *
+ * @return A reference to the variable name.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const VariableName& getVariable() const { return var; }
+ /**
+ * Constructor for input binding.
+ *
+ * @param variableName The variable name (left-hand side) of the binding. Passed by move.
+ * @param rhs The right-hand side of the input binding. Passed by move.
+ * `rhs` must have an operand that is a variable reference to `variableName`.
+ * If `rhs` has an operator, it must be a function call.
+ * If either of these properties is violated, `errorCode` is set to
+ * U_INVALID_STATE_ERROR.
+ * @param errorCode Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ static Binding input(UnicodeString&& variableName, Expression&& rhs, UErrorCode& errorCode);
+ /**
+ * Returns true if and only if this binding represents a local declaration.
+ * Otherwise, it's an input declaration.
+ *
+ * @return True if this binding represents a variable and expression;
+ * false if it represents a variable plus an annotation.
+ */
+ UBool isLocal() const { return local; }
+ /**
+ * Constructor.
+ *
+ * @param v A variable name.
+ * @param e An expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Binding(const VariableName& v, Expression&& e) : var(v), expr(std::move(e)), local(true), annotation(nullptr) {}
+ /**
+ * Non-member swap function.
+ * @param b1 will get b2's contents
+ * @param b2 will get b1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Binding& b1, Binding& b2) noexcept {
+ using std::swap;
+
+ swap(b1.var, b2.var);
+ swap(b1.expr, b2.expr);
+ swap(b1.local, b2.local);
+ b1.updateAnnotation();
+ b2.updateAnnotation();
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Binding(const Binding& other);
+ /**
+ * Copy assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Binding& operator=(Binding) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Binding into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Binding() : local(true) {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Binding();
+ private:
+ friend class message2::Checker;
+ friend class message2::MessageFormatter;
+ friend class message2::Parser;
+ friend class message2::Serializer;
+
+ /* const */ VariableName var;
+ /* const */ Expression expr;
+ /* const */ bool local;
+
+ // The following field is always nullptr for a local
+ // declaration, and possibly nullptr for an .input declaration
+ // If non-null, the referent is a member of `expr` so
+ // its lifetime is the same as the lifetime of the enclosing Binding
+ // (as long as there's no mutation)
+ const Callable* annotation = nullptr;
+
+ const OptionMap& getOptionsInternal() const;
+
+ bool hasAnnotation() const { return !local && (annotation != nullptr); }
+ void updateAnnotation();
+ }; // class Binding
+ } // namespace data_model
+} // namespace message2
+
+ /// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Variant>;
+template class U_I18N_API LocalPointerBase<message2::data_model::Binding>;
+template class U_I18N_API LocalArray<message2::data_model::Variant>;
+template class U_I18N_API LocalArray<message2::data_model::Binding>;
+#endif
+/// @endcond
+
+namespace message2 {
+ using namespace data_model;
+
+
+ // Internal only
+
+ class MFDataModel;
+
+ #ifndef U_IN_DOXYGEN
+ class Matcher : public UObject {
+ public:
+ Matcher& operator=(Matcher);
+ Matcher(const Matcher&);
+ /**
+ * Non-member swap function.
+ * @param m1 will get m2's contents
+ * @param m2 will get m1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Matcher& m1, Matcher& m2) noexcept {
+ using std::swap;
+
+ if (m1.bogus) {
+ m2.bogus = true;
+ return;
+ }
+ if (m2.bogus) {
+ m1.bogus = true;
+ return;
+ }
+ swap(m1.selectors, m2.selectors);
+ swap(m1.numSelectors, m2.numSelectors);
+ swap(m1.variants, m2.variants);
+ swap(m1.numVariants, m2.numVariants);
+ }
+ virtual ~Matcher();
+ private:
+
+ friend class MFDataModel;
+
+ Matcher(Expression* ss, int32_t ns, Variant* vs, int32_t nv);
+ Matcher() {}
+
+ // A Matcher may have numSelectors=0 and numVariants=0
+ // (this is a data model error, but it's representable).
+ // So we have to keep a separate flag to track failed copies.
+ bool bogus = false;
+
+ // The expressions that are being matched on.
+ LocalArray<Expression> selectors;
+ // The number of selectors
+ int32_t numSelectors = 0;
+ // The list of `when` clauses (case arms).
+ LocalArray<Variant> variants;
+ // The number of variants
+ int32_t numVariants = 0;
+ }; // class Matcher
+ #endif
+} // namespace message2
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::variant that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
+template class U_I18N_API std::_Variant_storage_<false, icu::message2::Matcher,icu::message2::data_model::Pattern>;
+#endif
+template class U_I18N_API std::variant<icu::message2::Matcher,icu::message2::data_model::Pattern>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ // -----------------------------------------------------------------------
+ // Public MFDataModel class
+
+ /**
+ *
+ * The `MFDataModel` class describes a parsed representation of the text of a message.
+ * This representation is public as higher-level APIs for messages will need to know its public
+ * interface: for example, to re-instantiate a parsed message with different values for imported
+ variables.
+ *
+ * The MFDataModel API implements <a target="github"
+ href="https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md">the
+ * specification of the abstract syntax (data model representation)</a> for MessageFormat.
+ *
+ * `MFDataModel` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API MFDataModel : public UMemory {
+ /*
+ Classes that represent nodes in the data model are nested inside the
+ `MFDataModel` class.
+
+ Classes such as `Expression`, `Pattern` and `VariantMap` are immutable and
+ are constructed using the builder pattern.
+
+ Most classes representing nodes have copy constructors. This is because builders
+ contain immutable data that must be copied when calling `build()`, since the builder
+ could go out of scope before the immutable result of the builder does. Copying is
+ also necessary to prevent unexpected mutation if intermediate builders are saved
+ and mutated again after calling `build()`.
+
+ The copy constructors perform a deep copy, for example by copying the entire
+ list of options for an `Operator` (and copying the entire underlying vector.)
+ Some internal fields should be `const`, but are declared as non-`const` to make
+ the copy constructor simpler to implement. (These are noted throughout.) In
+ other words, those fields are `const` except during the execution of a copy
+ constructor.
+
+ On the other hand, intermediate `Builder` methods that return a `Builder&`
+ mutate the state of the builder, so in code like:
+
+ Expression::Builder& exprBuilder = Expression::builder()-> setOperand(foo);
+ Expression::Builder& exprBuilder2 = exprBuilder.setOperator(bar);
+
+ the call to `setOperator()` would mutate `exprBuilder`, since `exprBuilder`
+ and `exprBuilder2` are references to the same object.
+
+ An alternate choice would be to make `build()` destructive, so that copying would
+ be unnecessary. Or, both copying and moving variants of `build()` could be
+ provided. Copying variants of the intermediate `Builder` methods could be
+ provided as well, if this proved useful.
+ */
+ public:
+ /**
+ * Accesses the local variable declarations for this data model.
+ *
+ * @return A vector of bindings for local variables.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Binding> getLocalVariables() const {
+ std::vector<Binding> result;
+ if (!bogus) {
+ return toStdVector<Binding>(bindings.getAlias(), bindingsLen);
+ }
+ return {};
+ }
+ /**
+ * Accesses the selectors. Returns an empty vector if this is a pattern message.
+ *
+ * @return A vector of selectors.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const std::vector<Expression> getSelectors() const {
+ if (std::holds_alternative<Pattern>(body)) {
+ return {};
+ }
+ const Matcher* match = std::get_if<Matcher>(&body);
+ // match must be non-null, given the previous check
+ return toStdVector<Expression>(match->selectors.getAlias(), match->numSelectors);
+ }
+ /**
+ * Accesses the variants. Returns an empty vector if this is a pattern message.
+ *
+ * @return A vector of variants.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Variant> getVariants() const {
+ // Return empty vector if no variants
+ if (std::holds_alternative<Pattern>(body)) {
+ return {};
+ }
+ const Matcher* match = std::get_if<Matcher>(&body);
+ // match must be non-null, given the previous check
+ return toStdVector<Variant>(match->variants.getAlias(), match->numVariants);
+ return {};
+ }
+ /**
+ * Accesses the unsupported statements for this data model.
+ *
+ * @return A vector of unsupported statements.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<UnsupportedStatement> getUnsupportedStatements() const {
+ std::vector<UnsupportedStatement> result;
+ if (!bogus) {
+ return toStdVector<UnsupportedStatement>(unsupportedStatements.getAlias(), unsupportedStatementsLen);
+ }
+ return {};
+ }
+ /**
+ * Accesses the pattern (in a message without selectors).
+ * Returns a reference to an empty pattern if the message has selectors.
+ *
+ * @return A reference to the pattern.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Pattern& getPattern() const;
+
+ /**
+ * The mutable `MFDataModel::Builder` class allows the data model to be
+ * constructed incrementally.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder;
+
+ /**
+ * Default constructor.
+ * Puts the MFDataModel into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFDataModel();
+ /**
+ * Non-member swap function.
+ * @param m1 will get m2's contents
+ * @param m2 will get m1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(MFDataModel& m1, MFDataModel& m2) noexcept {
+ using std::swap;
+
+ if (m1.bogus) {
+ m2.bogus = true;
+ return;
+ }
+ if (m2.bogus) {
+ m1.bogus = true;
+ return;
+ }
+ swap(m1.body, m2.body);
+ swap(m1.bindings, m2.bindings);
+ swap(m1.bindingsLen, m2.bindingsLen);
+ swap(m1.unsupportedStatements, m2.unsupportedStatements);
+ swap(m1.unsupportedStatementsLen, m2.unsupportedStatementsLen);
+ }
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFDataModel& operator=(MFDataModel) noexcept;
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFDataModel(const MFDataModel& other);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~MFDataModel();
+
+ /**
+ * The mutable `MFDataModel::Builder` class allows the data model to be
+ * constructed incrementally. Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class MFDataModel;
+
+ void checkDuplicate(const VariableName&, UErrorCode&) const;
+ void buildSelectorsMessage(UErrorCode&);
+ bool hasPattern = true;
+ bool hasSelectors = false;
+ Pattern pattern;
+ // The following members are not LocalPointers for the same reason as in SelectorKeys::Builder
+ UVector* selectors = nullptr;
+ UVector* variants = nullptr;
+ UVector* bindings = nullptr;
+ UVector* unsupportedStatements = nullptr;
+ public:
+ /**
+ * Adds a binding, There must not already be a binding
+ * with the same name.
+ *
+ * @param b The binding. Passed by move.
+ * @param status Input/output error code. Set to U_DUPLICATE_DECLARATION_ERROR
+ * if `addBinding()` was previously called with a binding
+ * with the same variable name as `b`.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addBinding(Binding&& b, UErrorCode& status);
+ /**
+ * Adds an unsupported statement.
+ *
+ * @param s The statement. Passed by move.
+ * @param status Input/output error code.
+ *
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addUnsupportedStatement(UnsupportedStatement&& s, UErrorCode& status);
+ /**
+ * Adds a selector expression. Copies `expression`.
+ * If a pattern was previously set, clears the pattern.
+ *
+ * @param selector Expression to add as a selector. Passed by move.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addSelector(Expression&& selector, UErrorCode& errorCode) noexcept;
+ /**
+ * Adds a single variant.
+ * If a pattern was previously set using `setPattern()`, clears the pattern.
+ *
+ * @param keys Keys for the variant. Passed by move.
+ * @param pattern Pattern for the variant. Passed by move.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addVariant(SelectorKeys&& keys, Pattern&& pattern, UErrorCode& errorCode) noexcept;
+ /**
+ * Sets the body of the message as a pattern.
+ * If selectors and/or variants were previously set, clears them.
+ *
+ * @param pattern Pattern to represent the body of the message.
+ * Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setPattern(Pattern&& pattern);
+ /**
+ * Constructs a new immutable data model.
+ * If `setPattern()` has not been called and if `addSelector()` and
+ * `addVariant()` were not each called at least once,
+ * `status` is set to `U_INVALID_STATE_ERROR`.
+ * If `addSelector()` was called and `addVariant()` was never called,
+ * or vice versa, then `status` is set to U_INVALID_STATE_ERROR.
+ * Otherwise, either a Pattern or Selectors message is constructed
+ * based on the pattern that was previously set, or selectors and variants
+ * that were previously set.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * @param status Input/output error code.
+ * @return The new MFDataModel
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFDataModel build(UErrorCode& status) const noexcept;
+ /**
+ * Default constructor.
+ * Returns a Builder with no pattern or selectors set.
+ * Either `setPattern()` or both `addSelector()` and
+ * `addVariant()` must be called before calling `build()`
+ * on the resulting builder.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Builder
+
+ private:
+ friend class Checker;
+ friend class MessageFormatter;
+ friend class Serializer;
+
+ Pattern empty; // Provided so that `getPattern()` can return a result
+ // if called on a selectors message
+ bool hasPattern() const { return std::holds_alternative<Pattern>(body); }
+
+ bool bogus = false; // Set if a copy constructor fails
+
+ // A message body is either a matcher (selector list and variant list),
+ // or a single pattern
+ std::variant<Matcher, Pattern> body;
+
+ // Bindings for local variables
+ /* const */ LocalArray<Binding> bindings;
+ int32_t bindingsLen = 0;
+
+ // Unsupported statements
+ // (Treated as a type of `declaration` in the data model spec;
+ // stored separately for convenience)
+ /* const */ LocalArray<UnsupportedStatement> unsupportedStatements;
+ int32_t unsupportedStatementsLen = 0;
+
+ const Binding* getLocalVariablesInternal() const;
+ const Expression* getSelectorsInternal() const;
+ const Variant* getVariantsInternal() const;
+ const UnsupportedStatement* getUnsupportedStatementsInternal() const;
+
+ int32_t numSelectors() const {
+ const Matcher* matcher = std::get_if<Matcher>(&body);
+ return (matcher == nullptr ? 0 : matcher->numSelectors);
+ }
+ int32_t numVariants() const {
+ const Matcher* matcher = std::get_if<Matcher>(&body);
+ return (matcher == nullptr ? 0 : matcher->numVariants);
+ }
+
+ // Helper
+ void initBindings(const Binding*);
+
+ MFDataModel(const Builder& builder, UErrorCode&) noexcept;
+ }; // class MFDataModel
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_DATA_MODEL_H
+
+// eof
+
diff --git a/icu4c/source/i18n/unicode/messageformat2_data_model_names.h b/icu4c/source/i18n/unicode/messageformat2_data_model_names.h
new file mode 100644
index 000000000..fb3070793
--- /dev/null
+++ b/icu4c/source/i18n/unicode/messageformat2_data_model_names.h
@@ -0,0 +1,42 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT_DATA_MODEL_NAMES_H
+#define MESSAGEFORMAT_DATA_MODEL_NAMES_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/unistr.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ namespace data_model {
+ typedef UnicodeString VariableName;
+ typedef UnicodeString FunctionName;
+ } // namespace data_model
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_DATA_MODEL_NAMES_H
+
+// eof
+
diff --git a/icu4c/source/i18n/unicode/messageformat2_formattable.h b/icu4c/source/i18n/unicode/messageformat2_formattable.h
new file mode 100644
index 000000000..8a779adb9
--- /dev/null
+++ b/icu4c/source/i18n/unicode/messageformat2_formattable.h
@@ -0,0 +1,1017 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT2_FORMATTABLE_H
+#define MESSAGEFORMAT2_FORMATTABLE_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/chariter.h"
+#include "unicode/numberformatter.h"
+#include "unicode/messageformat2_data_model_names.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#include <map>
+#include <variant>
+
+U_NAMESPACE_BEGIN
+
+class Hashtable;
+class UVector;
+
+namespace message2 {
+
+ class Formatter;
+ class MessageContext;
+ class Selector;
+
+ // Formattable
+ // ----------
+
+ /**
+ * `FormattableObject` is an abstract class that can be implemented in order to define
+ * an arbitrary class that can be passed to a custom formatter or selector function.
+ * To be passed in such a way, it must be wrapped in a `Formattable` object.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormattableObject : public UObject {
+ public:
+ /**
+ * Returns an arbitrary string representing the type of this object.
+ * It's up to the implementor of this class, as well as the implementors
+ * of any custom functions that rely on particular values of this tag
+ * corresponding to particular classes that the object contents can be
+ * downcast to, to ensure that the type tags are used soundly.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual const UnicodeString& tag() const = 0;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~FormattableObject();
+ }; // class FormattableObject
+
+ class Formattable;
+} // namespace message2
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::variant that is used
+// to represent the message2::Formattable class.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
+template class U_I18N_API std::_Variant_storage_<false,
+ double,
+ int64_t,
+ icu::UnicodeString,
+ icu::Formattable,
+ const icu::message2::FormattableObject *,
+ std::pair<const icu::message2::Formattable *,int32_t>>;
+#endif
+typedef std::pair<const icu::message2::Formattable*, int32_t> P;
+template class U_I18N_API std::variant<double,
+ int64_t,
+ icu::UnicodeString,
+ icu::Formattable,
+ const icu::message2::FormattableObject*,
+ P>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ /**
+ * The `Formattable` class represents a typed value that can be formatted,
+ * originating either from a message argument or a literal in the code.
+ * ICU's Formattable class is not used in MessageFormat 2 because it's unsafe to copy an
+ * icu::Formattable value that contains an object. (See ICU-20275).
+ *
+ * `Formattable` is immutable (not deeply immutable) and
+ * is movable and copyable.
+ * (Copying does not do a deep copy when the wrapped value is an array or
+ * object. Likewise, while a pointer to a wrapped array or object is `const`,
+ * the referents of the pointers may be mutated by other code.)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Formattable : public UObject {
+ public:
+
+ /**
+ * Gets the data type of this Formattable object.
+ * @return the data type of this Formattable object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UFormattableType getType() const;
+
+ /**
+ * Gets the double value of this object. If this object is not of type
+ * UFMT_DOUBLE, then the result is undefined and the error code is set.
+ *
+ * @param status Input/output error code.
+ * @return the double value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ double getDouble(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (isDecimal() && getType() == UFMT_DOUBLE) {
+ return (std::get_if<icu::Formattable>(&contents))->getDouble();
+ }
+ if (std::holds_alternative<double>(contents)) {
+ return *(std::get_if<double>(&contents));
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return 0;
+ }
+
+ /**
+ * Gets the long value of this object. If this object is not of type
+ * UFMT_LONG then the result is undefined and the error code is set.
+ *
+ * @param status Input/output error code.
+ * @return the long value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int32_t getLong(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (isDecimal() && getType() == UFMT_LONG) {
+ return std::get_if<icu::Formattable>(&contents)->getLong();
+ }
+ if (std::holds_alternative<int64_t>(contents)) {
+ return static_cast<int32_t>(*(std::get_if<int64_t>(&contents)));
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return 0;
+ }
+
+ /**
+ * Gets the int64 value of this object. If this object is not of type
+ * kInt64 then the result is undefined and the error code is set.
+ * If conversion to int64 is desired, call getInt64()
+ *
+ * @param status Input/output error code.
+ * @return the int64 value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int64_t getInt64Value(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (isDecimal() && getType() == UFMT_INT64) {
+ return std::get_if<icu::Formattable>(&contents)->getInt64();
+ }
+ if (std::holds_alternative<int64_t>(contents)) {
+ return *(std::get_if<int64_t>(&contents));
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return 0;
+ }
+
+ /**
+ * Gets the int64 value of this object. If this object is of a numeric
+ * type and the magnitude is too large to fit in an int64, then
+ * the maximum or minimum int64 value, as appropriate, is returned
+ * and the status is set to U_INVALID_FORMAT_ERROR. If the
+ * magnitude fits in an int64, then a casting conversion is
+ * performed, with truncation of any fractional part. If this object is
+ * not a numeric type, then 0 is returned and
+ * the status is set to U_INVALID_FORMAT_ERROR.
+ * @param status the error code
+ * @return the int64 value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int64_t getInt64(UErrorCode& status) const;
+ /**
+ * Gets the string value of this object. If this object is not of type
+ * kString then the result is undefined and the error code is set.
+ *
+ * @param status Input/output error code.
+ * @return A reference to the string value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getString(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (std::holds_alternative<UnicodeString>(contents)) {
+ return *std::get_if<UnicodeString>(&contents);
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return bogusString;
+ }
+
+ /**
+ * Gets the Date value of this object. If this object is not of type
+ * kDate then the result is undefined and the error code is set.
+ *
+ * @param status Input/output error code.
+ * @return the Date value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UDate getDate(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (isDate()) {
+ return *std::get_if<double>(&contents);
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return 0;
+ }
+
+ /**
+ * Returns true if the data type of this Formattable object
+ * is kDouble
+ * @return true if this is a pure numeric object
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isNumeric() const { return (getType() == UFMT_DOUBLE || getType() == UFMT_LONG || getType() == UFMT_INT64); }
+
+ /**
+ * Gets the array value and count of this object. If this object
+ * is not of type kArray then the result is undefined and the error code is set.
+ *
+ * @param count fill-in with the count of this object.
+ * @param status Input/output error code.
+ * @return the array value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Formattable* getArray(int32_t& count, UErrorCode& status) const;
+
+ /**
+ * Returns a pointer to the FormattableObject contained within this
+ * formattable, or if this object does not contain a FormattableObject,
+ * returns nullptr and sets the error code.
+ *
+ * @param status Input/output error code.
+ * @return a FormattableObject pointer, or nullptr
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const FormattableObject* getObject(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ // Can't return a reference since FormattableObject
+ // is an abstract class
+ if (getType() == UFMT_OBJECT) {
+ return *std::get_if<const FormattableObject*>(&contents);
+ // TODO: should assert that if type is object, object is non-null
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return nullptr;
+ }
+ /**
+ * Non-member swap function.
+ * @param f1 will get f2's contents
+ * @param f2 will get f1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Formattable& f1, Formattable& f2) noexcept {
+ using std::swap;
+
+ swap(f1.contents, f2.contents);
+ swap(f1.holdsDate, f2.holdsDate);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(const Formattable&);
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable& operator=(Formattable) noexcept;
+ /**
+ * Default constructor. Leaves the Formattable in a
+ * valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable() : contents(0.0) {}
+ /**
+ * String constructor.
+ *
+ * @param s A string to wrap as a Formattable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(const UnicodeString& s) : contents(s) {}
+ /**
+ * Double constructor.
+ *
+ * @param d A double value to wrap as a Formattable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(double d) : contents(d) {}
+ /**
+ * Int64 constructor.
+ *
+ * @param i An int64 value to wrap as a Formattable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(int64_t i) : contents(i) {}
+ /**
+ * Date factory method.
+ *
+ * @param d A UDate value to wrap as a Formattable.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ static Formattable forDate(UDate d) {
+ Formattable f;
+ f.contents = d;
+ f.holdsDate = true;
+ return f;
+ }
+ /**
+ * Creates a Formattable object of an appropriate numeric type from a
+ * a decimal number in string form. The Formattable will retain the
+ * full precision of the input in decimal format, even when it exceeds
+ * what can be represented by a double or int64_t.
+ *
+ * @param number the unformatted (not localized) string representation
+ * of the Decimal number.
+ * @param status the error code. Possible errors include U_INVALID_FORMAT_ERROR
+ * if the format of the string does not conform to that of a
+ * decimal number.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ static Formattable forDecimal(std::string_view number, UErrorCode& status);
+ /**
+ * Array constructor.
+ *
+ * @param arr An array of Formattables, which is adopted.
+ * @param len The length of the array.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(const Formattable* arr, int32_t len) : contents(std::pair(arr, len)) {}
+ /**
+ * Object constructor.
+ *
+ * @param obj A FormattableObject (not adopted).
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(const FormattableObject* obj) : contents(obj) {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Formattable();
+ /**
+ * Converts the Formattable object to an ICU Formattable object.
+ * If this has type UFMT_OBJECT or kArray, then `status` is set to
+ * U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * @param status Input/output error code.
+ * @return An icu::Formattable value with the same value as this.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ icu::Formattable asICUFormattable(UErrorCode& status) const;
+ private:
+
+ std::variant<double,
+ int64_t,
+ UnicodeString,
+ icu::Formattable, // represents a Decimal
+ const FormattableObject*,
+ std::pair<const Formattable*, int32_t>> contents;
+ bool holdsDate = false; // otherwise, we get type errors about UDate being a duplicate type
+ UnicodeString bogusString; // :((((
+
+ UBool isDecimal() const {
+ return std::holds_alternative<icu::Formattable>(contents);
+ }
+ UBool isDate() const {
+ return std::holds_alternative<double>(contents) && holdsDate;
+ }
+ }; // class Formattable
+
+/**
+ * Internal use only, but has to be included here as part of the implementation
+ * of the header-only `FunctionOptions::getOptions()` method
+ *
+ * A `ResolvedFunctionOption` represents the result of evaluating
+ * a single named function option. It pairs the given name with the `Formattable`
+ * value resulting from evaluating the option's value.
+ *
+ * `ResolvedFunctionOption` is immutable and is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+#ifndef U_IN_DOXYGEN
+class U_I18N_API ResolvedFunctionOption : public UObject {
+ private:
+
+ /* const */ UnicodeString name;
+ /* const */ Formattable value;
+
+ public:
+ const UnicodeString& getName() const { return name; }
+ const Formattable& getValue() const { return value; }
+ ResolvedFunctionOption(const UnicodeString& n, const Formattable& f) : name(n), value(f) {}
+ ResolvedFunctionOption() {}
+ ResolvedFunctionOption(ResolvedFunctionOption&&);
+ ResolvedFunctionOption& operator=(ResolvedFunctionOption&& other) noexcept {
+ name = std::move(other.name);
+ value = std::move(other.value);
+ return *this;
+ }
+ virtual ~ResolvedFunctionOption();
+}; // class ResolvedFunctionOption
+#endif
+
+/**
+ * Mapping from option names to `message2::Formattable` objects, obtained
+ * by calling `getOptions()` on a `FunctionOptions` object.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+using FunctionOptionsMap = std::map<UnicodeString, message2::Formattable>;
+
+/**
+ * Structure encapsulating named options passed to a custom selector or formatter.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+class U_I18N_API FunctionOptions : public UObject {
+ public:
+ /**
+ * Returns a map of all name-value pairs provided as options to this function.
+ * The syntactic order of options is not guaranteed to
+ * be preserved.
+ *
+ * This class is immutable and movable but not copyable.
+ *
+ * @return A map from strings to `message2::Formattable` objects representing
+ * the results of resolving each option value.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptionsMap getOptions() const {
+ int32_t len;
+ const ResolvedFunctionOption* resolvedOptions = getResolvedFunctionOptions(len);
+ FunctionOptionsMap result;
+ for (int32_t i = 0; i < len; i++) {
+ const ResolvedFunctionOption& opt = resolvedOptions[i];
+ result[opt.getName()] = opt.getValue();
+ }
+ return result;
+ }
+ /**
+ * Default constructor.
+ * Returns an empty mapping.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptions() { options = nullptr; }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~FunctionOptions();
+ /**
+ * Move assignment operator:
+ * The source FunctionOptions will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptions& operator=(FunctionOptions&&) noexcept;
+ /**
+ * Move constructor:
+ * The source FunctionOptions will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptions(FunctionOptions&&);
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptions& operator=(const FunctionOptions&) = delete;
+ private:
+ friend class MessageFormatter;
+ friend class StandardFunctions;
+
+ explicit FunctionOptions(UVector&&, UErrorCode&);
+
+ const ResolvedFunctionOption* getResolvedFunctionOptions(int32_t& len) const;
+ UBool getFunctionOption(const UnicodeString&, Formattable&) const;
+ // Returns empty string if option doesn't exist
+ UnicodeString getStringFunctionOption(const UnicodeString&) const;
+ int32_t optionsCount() const { return functionOptionsLen; }
+
+ // Named options passed to functions
+ // This is not a Hashtable in order to make it possible for code in a public header file
+ // to construct a std::map from it, on-the-fly. Otherwise, it would be impossible to put
+ // that code in the header because it would have to call internal Hashtable methods.
+ ResolvedFunctionOption* options;
+ int32_t functionOptionsLen = 0;
+}; // class FunctionOptions
+
+
+ // TODO doc comments
+ // Encapsulates either a formatted string or formatted number;
+ // more output types could be added in the future.
+
+ /**
+ * A `FormattedValue` represents the result of formatting a `message2::Formattable`.
+ * It contains either a string or a formatted number. (More types could be added
+ * in the future.)
+ *
+ * `FormattedValue` is immutable and movable. It is not copyable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormattedValue : public UObject {
+ public:
+ /**
+ * Formatted string constructor.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit FormattedValue(const UnicodeString&);
+ /**
+ * Formatted number constructor.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit FormattedValue(number::FormattedNumber&&);
+ /**
+ * Default constructor. Leaves the FormattedValue in
+ * a valid but undefined state.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedValue() : type(kString) {}
+ /**
+ * Returns true iff this is a formatted string.
+ *
+ * @return True if and only if this value is a formatted string.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isString() const { return type == kString; }
+ /**
+ * Returns true iff this is a formatted number.
+ *
+ * @return True if and only if this value is a formatted number.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isNumber() const { return type == kNumber; }
+ /**
+ * Gets the string contents of this value. If !isString(), then
+ * the result is undefined.
+ * @return A reference to a formatted string.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getString() const { return stringOutput; }
+ /**
+ * Gets the number contents of this value. If !isNumber(), then
+ * the result is undefined.
+ * @return A reference to a formatted number.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const number::FormattedNumber& getNumber() const { return numberOutput; }
+ /**
+ * Move assignment operator:
+ * The source FormattedValue will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedValue& operator=(FormattedValue&&) noexcept;
+ /**
+ * Move constructor:
+ * The source FormattedValue will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedValue(FormattedValue&& other) { *this = std::move(other); }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~FormattedValue();
+ private:
+ enum Type {
+ kString,
+ kNumber
+ };
+ Type type;
+ UnicodeString stringOutput;
+ number::FormattedNumber numberOutput;
+ }; // class FormattedValue
+
+ /**
+ * A `FormattablePlaceholder` encapsulates an input value (a `message2::Formattable`)
+ * together with an optional output value (a `message2::FormattedValue`).
+ * More information, such as source line/column numbers, could be added to the class
+ * in the future.
+ *
+ * `FormattablePlaceholder` is immutable (not deeply immutable) and movable.
+ * It is not copyable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormattedPlaceholder : public UObject {
+ public:
+ /**
+ * Fallback constructor. Constructs a value that represents a formatting error,
+ * without recording an input `Formattable` as the source.
+ *
+ * @param s An error string. (See the MessageFormat specification for details
+ * on fallback strings.)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit FormattedPlaceholder(const UnicodeString& s) : fallback(s), type(kFallback) {}
+ /**
+ * Constructor for fully formatted placeholders.
+ *
+ * @param input A `FormattedPlaceholder` containing the fallback string and source
+ * `Formattable` used to construct the formatted value.
+ * @param output A `FormattedValue` representing the formatted output of `input`.
+ * Passed by move.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder(const FormattedPlaceholder& input, FormattedValue&& output)
+ : fallback(input.fallback), source(input.source),
+ formatted(std::move(output)), previousOptions(FunctionOptions()), type(kEvaluated) {}
+ /**
+ * Constructor for fully formatted placeholders with options.
+ *
+ * @param input A `FormattedPlaceholder` containing the fallback string and source
+ * `Formattable` used to construct the formatted value.
+ * @param opts Function options that were used to construct `output`. May be the empty map.
+ * @param output A `FormattedValue` representing the formatted output of `input`.
+ * Passed by move.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder(const FormattedPlaceholder& input, FunctionOptions&& opts, FormattedValue&& output)
+ : fallback(input.fallback), source(input.source),
+ formatted(std::move(output)), previousOptions(std::move(opts)), type(kEvaluated) {}
+ /**
+ * Constructor for unformatted placeholders.
+ *
+ * @param input A `Formattable` object.
+ * @param fb Fallback string to use if an error occurs while formatting the input.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder(const Formattable& input, const UnicodeString& fb)
+ : fallback(fb), source(input), type(kUnevaluated) {}
+ /**
+ * Default constructor. Leaves the FormattedPlaceholder in a
+ * valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder() : type(kNull) {}
+ /**
+ * Returns the source `Formattable` value for this placeholder.
+ * The result is undefined if this is a null operand.
+ *
+ * @return A message2::Formattable value.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const message2::Formattable& asFormattable() const;
+ /**
+ * Returns true iff this is a fallback placeholder.
+ *
+ * @return True if and only if this placeholder was constructed from a fallback string,
+ * with no `Formattable` source or formatting output.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isFallback() const { return type == kFallback; }
+ /**
+ * Returns true iff this is a null placeholder.
+ *
+ * @return True if and only if this placeholder represents the absent argument to a formatter
+ * that was invoked without an argument.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isNullOperand() const { return type == kNull; }
+ /**
+ * Returns true iff this has formatting output.
+ *
+ * @return True if and only if this was constructed from both an input `Formattable` and
+ * output `FormattedValue`.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isEvaluated() const { return (type == kEvaluated); }
+ /**
+ * Returns true iff this represents a valid argument to the formatter.
+ *
+ * @return True if and only if this is neither the null argument nor a fallback placeholder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool canFormat() const { return !(isFallback() || isNullOperand()); }
+ /**
+ * Gets the fallback value of this placeholder, to be used in its place if an error occurs while
+ * formatting it.
+ * @return A reference to this placeholder's fallback string.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getFallback() const { return fallback; }
+ /**
+ * Returns the options of this placeholder. The result is the empty map if !isEvaluated().
+ * @return A reference to an option map, capturing the options that were used
+ * in producing the output of this `FormattedPlaceholder`
+ * (or empty if there is no output)
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const FunctionOptions& options() const { return previousOptions; }
+
+ /**
+ * Returns the formatted output of this placeholder. The result is undefined if !isEvaluated().
+ * @return A fully formatted `FormattedPlaceholder`.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const FormattedValue& output() const { return formatted; }
+ /**
+ * Move assignment operator:
+ * The source FormattedPlaceholder will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder& operator=(FormattedPlaceholder&&) noexcept;
+ /**
+ * Move constructor:
+ * The source FormattedPlaceholder will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder(FormattedPlaceholder&& other) { *this = std::move(other); }
+ /**
+ * Formats this as a string, using defaults. If this is
+ * either the null operand or is a fallback value, the return value is the result of formatting the
+ * fallback value (which is the default fallback string if this is the null operand).
+ * If there is no formatted output and the input is object- or array-typed,
+ * then the argument is treated as a fallback value, since there is no default formatter
+ * for objects or arrays.
+ *
+ * @param locale The locale to use for formatting numbers or dates
+ * @param status Input/output error code
+ * @return The result of formatting this placeholder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnicodeString formatToString(const Locale& locale,
+ UErrorCode& status) const;
+
+ private:
+ friend class MessageFormatter;
+
+ enum Type {
+ kFallback, // Represents the result of formatting that encountered an error
+ kNull, // Represents the absence of both an output and an input (not necessarily an error)
+ kUnevaluated, // `source` should be valid, but there's no result yet
+ kEvaluated, // `formatted` exists
+ };
+ UnicodeString fallback;
+ Formattable source;
+ FormattedValue formatted;
+ FunctionOptions previousOptions; // Ignored unless type is kEvaluated
+ Type type;
+ }; // class FormattedPlaceholder
+
+ /**
+ * Not yet implemented: The result of a message formatting operation. Based on
+ * ICU4J's FormattedMessage.java.
+ *
+ * The class will contain information allowing the result to be viewed as a string,
+ * iterator, etc. (TBD)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormattedMessage : public icu::FormattedValue {
+ public:
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ FormattedMessage(UErrorCode& status) {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ int32_t length(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return -1;
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ char16_t charAt(int32_t index, UErrorCode& status) const {
+ (void) index;
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return 0;
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ StringPiece subSequence(int32_t start, int32_t end, UErrorCode& status) const {
+ (void) start;
+ (void) end;
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return "";
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ UnicodeString toString(UErrorCode& status) const override {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return {};
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ UnicodeString toTempString(UErrorCode& status) const override {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return {};
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ Appendable& appendTo(Appendable& appendable, UErrorCode& status) const override {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return appendable;
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override {
+ (void) cfpos;
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return false;
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ CharacterIterator* toCharacterIterator(UErrorCode& status) {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return nullptr;
+ }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ virtual ~FormattedMessage();
+ }; // class FormattedMessage
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_FORMATTABLE_H
+
+// eof
diff --git a/icu4c/source/i18n/unicode/messageformat2_function_registry.h b/icu4c/source/i18n/unicode/messageformat2_function_registry.h
new file mode 100644
index 000000000..b8429e3b8
--- /dev/null
+++ b/icu4c/source/i18n/unicode/messageformat2_function_registry.h
@@ -0,0 +1,429 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT2_FUNCTION_REGISTRY_H
+#define MESSAGEFORMAT2_FUNCTION_REGISTRY_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model_names.h"
+#include "unicode/messageformat2_formattable.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#include <map>
+
+U_NAMESPACE_BEGIN
+
+class Hashtable;
+class UVector;
+
+namespace message2 {
+
+ using namespace data_model;
+
+ /**
+ * Interface that factory classes for creating formatters must implement.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormatterFactory : public UObject {
+ // TODO: the coding guidelines say that interface classes
+ // shouldn't inherit from UObject, but if I change it so these
+ // classes don't, and the individual formatter factory classes
+ // inherit from public FormatterFactory, public UObject, then
+ // memory leaks ensue
+ public:
+ /**
+ * Constructs a new formatter object. This method is not const;
+ * formatter factories with local state may be defined.
+ *
+ * @param locale Locale to be used by the formatter.
+ * @param status Input/output error code.
+ * @return The new Formatter, which is non-null if U_SUCCESS(status).
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual Formatter* createFormatter(const Locale& locale, UErrorCode& status) = 0;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~FormatterFactory();
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormatterFactory& operator=(const FormatterFactory&) = delete;
+ }; // class FormatterFactory
+
+ /**
+ * Interface that factory classes for creating selectors must implement.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API SelectorFactory : public UObject {
+ public:
+ /**
+ * Constructs a new selector object.
+ *
+ * @param locale Locale to be used by the selector.
+ * @param status Input/output error code.
+ * @return The new selector, which is non-null if U_SUCCESS(status).
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual Selector* createSelector(const Locale& locale, UErrorCode& status) const = 0;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~SelectorFactory();
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorFactory& operator=(const SelectorFactory&) = delete;
+ }; // class SelectorFactory
+
+ /**
+ * Defines mappings from names of formatters and selectors to functions implementing them.
+ * The required set of formatter and selector functions is defined in the spec. Users can
+ * also define custom formatter and selector functions.
+ *
+ * `MFFunctionRegistry` is immutable and movable. It is not copyable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API MFFunctionRegistry : public UObject {
+ private:
+
+ using FormatterMap = Hashtable; // Map from stringified function names to FormatterFactory*
+ using SelectorMap = Hashtable; // Map from stringified function names to SelectorFactory*
+
+ public:
+ /**
+ * Looks up a formatter factory by the name of the formatter. The result is non-const,
+ * since formatter factories may have local state. Returns the result by pointer
+ * rather than by reference since it can fail.
+ *
+ * @param formatterName Name of the desired formatter.
+ * @return A pointer to the `FormatterFactory` registered under `formatterName`, or null
+ * if no formatter was registered under that name. The pointer is not owned
+ * by the caller.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormatterFactory* getFormatter(const FunctionName& formatterName) const;
+ /**
+ * Looks up a selector factory by the name of the selector. (This returns the result by pointer
+ * rather than by reference since `FormatterFactory` is an abstract class.)
+ *
+ * @param selectorName Name of the desired selector.
+ * @return A pointer to the `SelectorFactory` registered under `selectorName`, or null
+ * if no formatter was registered under that name.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const SelectorFactory* getSelector(const FunctionName& selectorName) const;
+ /**
+ * Looks up a formatter factory by a type tag. This method gets the name of the default formatter registered
+ * for that type. If no formatter was explicitly registered for this type, it returns false.
+ *
+ * @param formatterType Type tag for the desired `FormattableObject` type to be formatted.
+ * @param name Output parameter; initialized to the name of the default formatter for `formatterType`
+ * if one has been registered. Its value is undefined otherwise.
+ * @return True if and only if the function registry contains a default formatter for `formatterType`.
+ * If the return value is false, then the value of `name` is undefined.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool getDefaultFormatterNameByType(const UnicodeString& formatterType, FunctionName& name) const;
+ /**
+ * The mutable Builder class allows each formatter and selector factory
+ * to be initialized separately; calling its `build()` method yields an
+ * immutable MFFunctionRegistry object.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UObject {
+ private:
+ // Must use raw pointers to avoid instantiating `LocalPointer` on an internal type
+ FormatterMap* formatters;
+ SelectorMap* selectors;
+ Hashtable* formattersByType;
+
+ // Do not define copy constructor/assignment operator
+ Builder& operator=(const Builder&) = delete;
+ Builder(const Builder&) = delete;
+
+ public:
+ /*
+ Notes about `adoptFormatter()`'s type signature:
+
+ Alternative considered: take a non-owned FormatterFactory*
+ This is unsafe.
+
+ Alternative considered: take a FormatterFactory&
+ This requires getFormatter() to cast the reference to a pointer,
+ as it must return an unowned FormatterFactory* since it can fail.
+ That is also unsafe, since the caller could delete the pointer.
+
+ The "TemperatureFormatter" test from the previous ICU4J version doesn't work now,
+ as it only works if the `formatterFactory` argument is non-owned.
+ If registering a non-owned FormatterFactory is desirable, this could
+ be re-thought.
+ */
+ /**
+ * Registers a formatter factory to a given formatter name.
+ *
+ * @param formatterName Name of the formatter being registered.
+ * @param formatterFactory A pointer to a FormatterFactory object to use
+ * for creating `formatterName` formatters. This argument is adopted.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& adoptFormatter(const data_model::FunctionName& formatterName, FormatterFactory* formatterFactory, UErrorCode& errorCode);
+ /**
+ * Registers a formatter factory to a given type tag.
+ * (See `FormattableObject` for details on type tags.)
+ *
+ * @param type Tag for objects to be formatted with this formatter.
+ * @param functionName A reference to the name of the function to use for
+ * creating formatters for `formatterType` objects.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setDefaultFormatterNameByType(const UnicodeString& type, const data_model::FunctionName& functionName, UErrorCode& errorCode);
+
+ /**
+ * Registers a selector factory to a given selector name. Adopts `selectorFactory`.
+ *
+ * @param selectorName Name of the selector being registered.
+ * @param selectorFactory A SelectorFactory object to use for creating `selectorName`
+ * selectors.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& adoptSelector(const data_model::FunctionName& selectorName, SelectorFactory* selectorFactory, UErrorCode& errorCode);
+ /**
+ * Creates an immutable `MFFunctionRegistry` object with the selectors and formatters
+ * that were previously registered. The builder cannot be used after this call.
+ * The `build()` method is destructive to avoid the need for a deep copy of the
+ * `FormatterFactory` and `SelectorFactory` objects (this would be necessary because
+ * `FormatterFactory` can have mutable state), which in turn would require implementors
+ * of those interfaces to implement a `clone()` method.
+ *
+ * @return The new MFFunctionRegistry
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFFunctionRegistry build();
+ /**
+ * Default constructor.
+ * Returns a Builder with no functions registered.
+ *
+ * @param errorCode Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& errorCode);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ }; // class MFFunctionRegistry::Builder
+
+ /**
+ * Move assignment operator:
+ * The source MFFunctionRegistry will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFFunctionRegistry& operator=(MFFunctionRegistry&&) noexcept;
+ /**
+ * Move constructor:
+ * The source MFFunctionRegistry will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFFunctionRegistry(MFFunctionRegistry&& other) { *this = std::move(other); }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~MFFunctionRegistry();
+
+ private:
+ friend class MessageContext;
+ friend class MessageFormatter;
+
+ // Do not define copy constructor or copy assignment operator
+ MFFunctionRegistry& operator=(const MFFunctionRegistry&) = delete;
+ MFFunctionRegistry(const MFFunctionRegistry&) = delete;
+
+ MFFunctionRegistry(FormatterMap* f, SelectorMap* s, Hashtable* byType);
+
+ MFFunctionRegistry() {}
+
+ // Debugging; should only be called on a function registry with
+ // all the standard functions registered
+ void checkFormatter(const char*) const;
+ void checkSelector(const char*) const;
+ void checkStandard() const;
+
+ bool hasFormatter(const data_model::FunctionName& f) const;
+ bool hasSelector(const data_model::FunctionName& s) const;
+ void cleanup() noexcept;
+
+ // Must use raw pointers to avoid instantiating `LocalPointer` on an internal type
+ FormatterMap* formatters = nullptr;
+ SelectorMap* selectors = nullptr;
+ // Mapping from strings (type tags) to FunctionNames
+ Hashtable* formattersByType = nullptr;
+ }; // class MFFunctionRegistry
+
+ /**
+ * Interface that formatter classes must implement.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Formatter : public UObject {
+ public:
+ /**
+ * Formats the input passed in `context` by setting an output using one of the
+ * `FormattingContext` methods or indicating an error.
+ *
+ * @param toFormat Placeholder, including a source formattable value and possibly
+ * the output of a previous formatter applied to it; see
+ * `message2::FormattedPlaceholder` for details. Passed by move.
+ * @param options The named function options. Passed by move
+ * @param status Input/output error code. Should not be set directly by the
+ * custom formatter, which should use `FormattingContext::setFormattingWarning()`
+ * to signal errors. The custom formatter may pass `status` to other ICU functions
+ * that can signal errors using this mechanism.
+ *
+ * @return The formatted value.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual FormattedPlaceholder format(FormattedPlaceholder&& toFormat,
+ FunctionOptions&& options,
+ UErrorCode& status) const = 0;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Formatter();
+ }; // class Formatter
+
+ /**
+ * Interface that selector classes must implement.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Selector : public UObject {
+ public:
+ /**
+ * Compares the input to an array of keys, and returns an array of matching
+ * keys sorted by preference.
+ *
+ * @param toFormat The unnamed function argument; passed by move.
+ * @param options A reference to the named function options.
+ * @param keys An array of strings that are compared to the input
+ * (`context.getFormattableInput()`) in an implementation-specific way.
+ * @param keysLen The length of `keys`.
+ * @param prefs An array of strings with length `keysLen`. The contents of
+ * the array is undefined. `selectKey()` should set the contents
+ * of `prefs` to a subset of `keys`, with the best match placed at the lowest index.
+ * @param prefsLen A reference that `selectKey()` should set to the length of `prefs`,
+ * which must be less than or equal to `keysLen`.
+ * @param status Input/output error code. Should not be set directly by the
+ * custom selector, which should use `FormattingContext::setSelectorError()`
+ * to signal errors. The custom selector may pass `status` to other ICU functions
+ * that can signal errors using this mechanism.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual void selectKey(FormattedPlaceholder&& toFormat,
+ FunctionOptions&& options,
+ const UnicodeString* keys,
+ int32_t keysLen,
+ UnicodeString* prefs,
+ int32_t& prefsLen,
+ UErrorCode& status) const = 0;
+ // Note: This takes array arguments because the internal MessageFormat code has to
+ // call this method, and can't include any code that constructs std::vectors.
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Selector();
+ }; // class Selector
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_FUNCTION_REGISTRY_H
+
+// eof
diff --git a/icu4c/source/i18n/unicode/msgfmt.h b/icu4c/source/i18n/unicode/msgfmt.h
index a8a61f90e..cb47ba487 100644
--- a/icu4c/source/i18n/unicode/msgfmt.h
+++ b/icu4c/source/i18n/unicode/msgfmt.h
@@ -444,7 +444,7 @@ public:
* @return the locale of the object.
* @stable ICU 2.0
*/
- virtual const Locale& getLocale(void) const;
+ virtual const Locale& getLocale() const;
/**
* Applies the given pattern string to this message format.
@@ -850,7 +850,7 @@ public:
* other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for
@@ -863,7 +863,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
#ifndef U_HIDE_INTERNAL_API
/**
diff --git a/icu4c/source/i18n/unicode/nounit.h b/icu4c/source/i18n/unicode/nounit.h
index 96aca35d0..6646074ce 100644
--- a/icu4c/source/i18n/unicode/nounit.h
+++ b/icu4c/source/i18n/unicode/nounit.h
@@ -43,7 +43,7 @@ namespace NoUnit {
* @stable ICU 68
*/
static inline MeasureUnit U_EXPORT2 base() {
- return MeasureUnit();
+ return {};
}
/**
diff --git a/icu4c/source/i18n/unicode/numberformatter.h b/icu4c/source/i18n/unicode/numberformatter.h
index 069324a9e..b02d987ce 100644
--- a/icu4c/source/i18n/unicode/numberformatter.h
+++ b/icu4c/source/i18n/unicode/numberformatter.h
@@ -93,15 +93,13 @@ class IFixedDecimal;
class FieldPositionIteratorHandler;
class FormattedStringBuilder;
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
// Forward declarations:
class NumberParserImpl;
class MultiplierParseHandler;
-}
-}
+} // namespace numparse::impl
namespace units {
@@ -2497,11 +2495,18 @@ class U_I18N_API UnlocalizedNumberFormatter
explicit UnlocalizedNumberFormatter(
NumberFormatterSettings<UnlocalizedNumberFormatter>&& src) noexcept;
+ explicit UnlocalizedNumberFormatter(const impl::MacroProps &macros);
+
+ explicit UnlocalizedNumberFormatter(impl::MacroProps &&macros);
+
// To give the fluent setters access to this class's constructor:
friend class NumberFormatterSettings<UnlocalizedNumberFormatter>;
// To give NumberFormatter::with() access to this class's constructor:
friend class NumberFormatter;
+
+ // To give LNF::withoutLocale() access to this class's constructor:
+ friend class LocalizedNumberFormatter;
};
/**
@@ -2604,6 +2609,25 @@ class U_I18N_API LocalizedNumberFormatter
*/
Format* toFormat(UErrorCode& status) const;
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Disassociate the locale from this formatter.
+ *
+ * @return The fluent chain.
+ * @draft ICU 75
+ */
+ UnlocalizedNumberFormatter withoutLocale() const &;
+
+ /**
+ * Overload of withoutLocale() for use on an rvalue reference.
+ *
+ * @return The fluent chain.
+ * @see #withoutLocale
+ * @draft ICU 75
+ */
+ UnlocalizedNumberFormatter withoutLocale() &&;
+#endif // U_HIDE_DRAFT_API
+
/**
* Default constructor: puts the formatter into a valid but undefined state.
*
diff --git a/icu4c/source/i18n/unicode/numberrangeformatter.h b/icu4c/source/i18n/unicode/numberrangeformatter.h
index 8ca20f31d..b8bbc1ba0 100644
--- a/icu4c/source/i18n/unicode/numberrangeformatter.h
+++ b/icu4c/source/i18n/unicode/numberrangeformatter.h
@@ -462,11 +462,18 @@ class U_I18N_API UnlocalizedNumberRangeFormatter
explicit UnlocalizedNumberRangeFormatter(
NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>&& src) noexcept;
+ explicit UnlocalizedNumberRangeFormatter(const impl::RangeMacroProps &macros);
+
+ explicit UnlocalizedNumberRangeFormatter(impl::RangeMacroProps &&macros);
+
// To give the fluent setters access to this class's constructor:
friend class NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>;
// To give NumberRangeFormatter::with() access to this class's constructor:
friend class NumberRangeFormatter;
+
+ // To give LNRF::withoutLocale() access to this class's constructor:
+ friend class LocalizedNumberRangeFormatter;
};
/**
@@ -496,6 +503,25 @@ class U_I18N_API LocalizedNumberRangeFormatter
FormattedNumberRange formatFormattableRange(
const Formattable& first, const Formattable& second, UErrorCode& status) const;
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Disassociate the locale from this formatter.
+ *
+ * @return The fluent chain.
+ * @draft ICU 75
+ */
+ UnlocalizedNumberRangeFormatter withoutLocale() const &;
+
+ /**
+ * Overload of withoutLocale() for use on an rvalue reference.
+ *
+ * @return The fluent chain.
+ * @see #withoutLocale
+ * @draft ICU 75
+ */
+ UnlocalizedNumberRangeFormatter withoutLocale() &&;
+#endif // U_HIDE_DRAFT_API
+
/**
* Default constructor: puts the formatter into a valid but undefined state.
*
diff --git a/icu4c/source/i18n/unicode/numfmt.h b/icu4c/source/i18n/unicode/numfmt.h
index e1aa30927..aabbad4f1 100644
--- a/icu4c/source/i18n/unicode/numfmt.h
+++ b/icu4c/source/i18n/unicode/numfmt.h
@@ -199,23 +199,21 @@ public:
* @stable ICU 4.8
*/
kRoundUnnecessary,
-#ifndef U_HIDE_DRAFT_API
/**
* Rounds ties toward the odd number.
- * @draft ICU 73
+ * @stable ICU 73
*/
kRoundHalfOdd,
/**
* Rounds ties toward +∞.
- * @draft ICU 73
+ * @stable ICU 73
*/
kRoundHalfCeiling,
/**
* Rounds ties toward -∞.
- * @draft ICU 73
+ * @stable ICU 73
*/
kRoundHalfFloor,
-#endif /* U_HIDE_DRAFT_API */
};
/**
@@ -707,7 +705,7 @@ public:
* only.
* @stable ICU 2.0
*/
- UBool isParseIntegerOnly(void) const;
+ UBool isParseIntegerOnly() const;
/**
* Sets whether or not numbers should be parsed as integers only.
@@ -735,7 +733,7 @@ public:
* @see #setLenient
* @stable ICU 4.8
*/
- virtual UBool isLenient(void) const;
+ virtual UBool isLenient() const;
/**
* Create a default style NumberFormat for the current default locale.
@@ -898,7 +896,7 @@ public:
* @return a StringEnumeration over the locales available at the time of the call
* @stable ICU 2.6
*/
- static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
+ static StringEnumeration* U_EXPORT2 getAvailableLocales();
#endif /* UCONFIG_NO_SERVICE */
/**
@@ -910,7 +908,7 @@ public:
* @see setGroupingUsed
* @stable ICU 2.0
*/
- UBool isGroupingUsed(void) const;
+ UBool isGroupingUsed() const;
/**
* Set whether or not grouping will be used in this format.
@@ -928,7 +926,7 @@ public:
* @see setMaximumIntegerDigits
* @stable ICU 2.0
*/
- int32_t getMaximumIntegerDigits(void) const;
+ int32_t getMaximumIntegerDigits() const;
/**
* Sets the maximum number of digits allowed in the integer portion of a
@@ -952,7 +950,7 @@ public:
* @see setMinimumIntegerDigits
* @stable ICU 2.0
*/
- int32_t getMinimumIntegerDigits(void) const;
+ int32_t getMinimumIntegerDigits() const;
/**
* Sets the minimum number of digits allowed in the integer portion of a
@@ -974,7 +972,7 @@ public:
* @see setMaximumFractionDigits
* @stable ICU 2.0
*/
- int32_t getMaximumFractionDigits(void) const;
+ int32_t getMaximumFractionDigits() const;
/**
* Sets the maximum number of digits allowed in the fraction portion of a
@@ -996,7 +994,7 @@ public:
* @see setMinimumFractionDigits
* @stable ICU 2.0
*/
- int32_t getMinimumFractionDigits(void) const;
+ int32_t getMinimumFractionDigits() const;
/**
* Sets the minimum number of digits allowed in the fraction portion of a
@@ -1062,7 +1060,7 @@ public:
* @return A rounding mode
* @stable ICU 60
*/
- virtual ERoundingMode getRoundingMode(void) const;
+ virtual ERoundingMode getRoundingMode() const;
/**
* Set the rounding mode. If a subclass does not support rounding, this will do nothing.
@@ -1081,7 +1079,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override.
@@ -1094,7 +1092,7 @@ public:
* other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
protected:
@@ -1204,7 +1202,7 @@ public:
* be listed by getAvailableLocales.
* @stable ICU 2.6
*/
- virtual UBool visible(void) const = 0;
+ virtual UBool visible() const = 0;
/**
* Return the locale names directly supported by this factory. The number of names
@@ -1255,7 +1253,7 @@ public:
/**
* @stable ICU 2.6
*/
- virtual UBool visible(void) const override;
+ virtual UBool visible() const override;
/**
* @stable ICU 2.6
diff --git a/icu4c/source/i18n/unicode/numsys.h b/icu4c/source/i18n/unicode/numsys.h
index 51a6e147b..58072ff66 100644
--- a/icu4c/source/i18n/unicode/numsys.h
+++ b/icu4c/source/i18n/unicode/numsys.h
@@ -185,7 +185,7 @@ public:
* @stable ICU 4.2
*
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/icu4c/source/i18n/unicode/plurfmt.h b/icu4c/source/i18n/unicode/plurfmt.h
index 8e6cbb445..b18489d7f 100644
--- a/icu4c/source/i18n/unicode/plurfmt.h
+++ b/icu4c/source/i18n/unicode/plurfmt.h
@@ -190,11 +190,6 @@ public:
* @param status output param set to success/failure code on exit, which
* must not indicate a failure before the function call.
* @stable ICU 4.0
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/plurfmtsample/plurfmtsample.cpp PluralFormatExample1
- * \snippet samples/plurfmtsample/plurfmtsample.cpp PluralFormatExample
- * <p>
*/
PluralFormat(const Locale& locale, const PluralRules& rules, UErrorCode& status);
@@ -513,7 +508,7 @@ public:
* @stable ICU 4.0
*
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/icu4c/source/i18n/unicode/plurrule.h b/icu4c/source/i18n/unicode/plurrule.h
index b7d95175f..7e2fe37f7 100644
--- a/icu4c/source/i18n/unicode/plurrule.h
+++ b/icu4c/source/i18n/unicode/plurrule.h
@@ -553,7 +553,7 @@ public:
* @stable ICU 4.0
*
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/icu4c/source/i18n/unicode/rbnf.h b/icu4c/source/i18n/unicode/rbnf.h
index f9a1c8f93..f42d91d77 100644
--- a/icu4c/source/i18n/unicode/rbnf.h
+++ b/icu4c/source/i18n/unicode/rbnf.h
@@ -436,7 +436,16 @@ enum URBNFRuleSetTag {
* <tr>
* <td>&lt;&lt;</td>
* <td>in normal rule</td>
- * <td>Divide the number by the rule's divisor and format the quotient</td>
+ * <td>Divide the number by the rule's divisor, perform floor() on the quotient,
+ * and format the resulting value.<br>
+ * If there is a DecimalFormat pattern between the &lt; characters and the
+ * rule does NOT also contain a &gt;&gt; substitution, we DON'T perform
+ * floor() on the quotient-- the quotient is passed through to the DecimalFormat
+ * intact. That is, for the value 1,900:<br>
+ * - "1/1000: &lt;&lt; thousand;" will produce "one thousand"<br>
+ * - "1/1000: &lt;0&lt; thousand;" will produce "2 thousand" (NOT "1 thousand")<br>
+ * - "1/1000: &lt;0&lt; seconds &gt;0&gt; milliseconds;" will produce "1 second 900 milliseconds"
+ * </td>
* </tr>
* <tr>
* <td></td>
@@ -764,7 +773,7 @@ public:
* @return the number of locales for which we have localized rule set display names.
* @stable ICU 3.2
*/
- virtual int32_t getNumberOfRuleSetDisplayNameLocales(void) const;
+ virtual int32_t getNumberOfRuleSetDisplayNameLocales() const;
/**
* Return the index'th display name locale.
@@ -978,7 +987,7 @@ public:
* @see #setLenient
* @stable ICU 2.0
*/
- virtual inline UBool isLenient(void) const override;
+ virtual inline UBool isLenient() const override;
#endif
@@ -1017,7 +1026,7 @@ public:
* @return A rounding mode
* @stable ICU 60
*/
- virtual ERoundingMode getRoundingMode(void) const override;
+ virtual ERoundingMode getRoundingMode() const override;
/**
* Set the rounding mode.
@@ -1032,14 +1041,14 @@ public:
*
* @stable ICU 2.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
*
* @stable ICU 2.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Sets the decimal format symbols, which is generally not changed
@@ -1122,7 +1131,7 @@ private:
#if !UCONFIG_NO_COLLATION
inline UBool
-RuleBasedNumberFormat::isLenient(void) const {
+RuleBasedNumberFormat::isLenient() const {
return lenient;
}
diff --git a/icu4c/source/i18n/unicode/rbtz.h b/icu4c/source/i18n/unicode/rbtz.h
index 1cc3483eb..3393b3d97 100644
--- a/icu4c/source/i18n/unicode/rbtz.h
+++ b/icu4c/source/i18n/unicode/rbtz.h
@@ -217,7 +217,7 @@ public:
* @return The TimeZone's raw GMT offset.
* @stable ICU 3.8
*/
- virtual int32_t getRawOffset(void) const override;
+ virtual int32_t getRawOffset() const override;
/**
* Queries if this time zone uses daylight savings time.
@@ -225,7 +225,7 @@ public:
* false, otherwise.
* @stable ICU 3.8
*/
- virtual UBool useDaylightTime(void) const override;
+ virtual UBool useDaylightTime() const override;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -313,8 +313,8 @@ public:
int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override;
private:
- void deleteRules(void);
- void deleteTransitions(void);
+ void deleteRules();
+ void deleteTransitions();
UVector* copyRules(UVector* source);
TimeZoneRule* findRuleInFinal(UDate date, UBool local,
int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
@@ -346,7 +346,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -359,7 +359,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/unicode/search.h b/icu4c/source/i18n/unicode/search.h
index a8004efc4..d4fd9ce93 100644
--- a/icu4c/source/i18n/unicode/search.h
+++ b/icu4c/source/i18n/unicode/search.h
@@ -124,7 +124,7 @@ public:
* @return current index in the text being searched.
* @stable ICU 2.0
*/
- virtual int32_t getOffset(void) const = 0;
+ virtual int32_t getOffset() const = 0;
/**
* Sets the text searching attributes located in the enum
@@ -163,7 +163,7 @@ public:
* @see #last
* @stable ICU 2.0
*/
- int32_t getMatchedStart(void) const;
+ int32_t getMatchedStart() const;
/**
* Returns the length of text in the string which matches the search
@@ -179,8 +179,8 @@ public:
* @see #last
* @stable ICU 2.0
*/
- int32_t getMatchedLength(void) const;
-
+ int32_t getMatchedLength() const;
+
/**
* Returns the text that was matched by the most recent call to
* <tt>first</tt>, <tt>next</tt>, <tt>previous</tt>, or <tt>last</tt>.
@@ -224,7 +224,7 @@ public:
* @see #setBreakIterator
* @stable ICU 2.0
*/
- const BreakIterator * getBreakIterator(void) const;
+ const BreakIterator* getBreakIterator() const;
/**
* Set the string text to be searched. Text iteration will hence begin at
@@ -260,7 +260,7 @@ public:
* @return text string to be searched.
* @stable ICU 2.0
*/
- const UnicodeString & getText(void) const;
+ const UnicodeString& getText() const;
// operator overloading ----------------------------------------------
@@ -291,7 +291,7 @@ public:
* @return cloned object
* @stable ICU 2.0
*/
- virtual SearchIterator* safeClone(void) const = 0;
+ virtual SearchIterator* safeClone() const = 0;
/**
* Returns the first index at which the string text matches the search
diff --git a/icu4c/source/i18n/unicode/selfmt.h b/icu4c/source/i18n/unicode/selfmt.h
index 180238031..ead514548 100644
--- a/icu4c/source/i18n/unicode/selfmt.h
+++ b/icu4c/source/i18n/unicode/selfmt.h
@@ -337,7 +337,7 @@ public:
* ICU "poor man's RTTI", returns a UClassID for this class.
* @stable ICU 4.4
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/icu4c/source/i18n/unicode/simplenumberformatter.h b/icu4c/source/i18n/unicode/simplenumberformatter.h
index 32b79a94d..5aa33c694 100644
--- a/icu4c/source/i18n/unicode/simplenumberformatter.h
+++ b/icu4c/source/i18n/unicode/simplenumberformatter.h
@@ -30,6 +30,8 @@
U_NAMESPACE_BEGIN
+/* forward declaration */
+class SimpleDateFormat;
namespace number { // icu::number
@@ -41,22 +43,19 @@ class AdoptingSignumModifierStore;
} // icu::number::impl
-#ifndef U_HIDE_DRAFT_API
-
-
/**
* An input type for SimpleNumberFormatter.
*
* This class is mutable and not intended for public subclassing. This class is movable but not copyable.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
class U_I18N_API SimpleNumber : public UMemory {
public:
/**
* Creates a SimpleNumber for an integer.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
static SimpleNumber forInt64(int64_t value, UErrorCode& status);
@@ -65,43 +64,50 @@ class U_I18N_API SimpleNumber : public UMemory {
*
* This function immediately mutates the inner value.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
void multiplyByPowerOfTen(int32_t power, UErrorCode& status);
/**
- * Rounds the value currently stored in the SimpleNumber to the given power of 10.
+ * Rounds the value currently stored in the SimpleNumber to the given power of 10,
+ * which can be before or after the decimal separator.
*
- * This function immediately mutates the inner value.
+ * This function does not change minimum integer digits.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
void roundTo(int32_t power, UNumberFormatRoundingMode roundingMode, UErrorCode& status);
+#ifndef U_HIDE_DRAFT_API
/**
- * Truncates the most significant digits to the given maximum number of integer digits.
+ * Sets the number of integer digits to the given amount, truncating if necessary.
*
- * This function immediately mutates the inner value.
+ * @draft ICU 75
+ */
+ void setMaximumIntegerDigits(uint32_t maximumIntegerDigits, UErrorCode& status);
+#endif // U_HIDE_DRAFT_API
+
+#ifndef U_HIDE_DEPRECATED_API
+ /**
+ * Alias for setMaximumIntegerDigits.
+ * Will be removed after ICU 75.
*
- * @draft ICU 73
+ * @deprecated ICU 75
*/
void truncateStart(uint32_t maximumIntegerDigits, UErrorCode& status);
+#endif // U_HIDE_DEPRECATED_API
/**
* Pads the beginning of the number with zeros up to the given minimum number of integer digits.
*
- * This setting is applied upon formatting the number.
- *
- * @draft ICU 73
+ * @stable ICU 73
*/
void setMinimumIntegerDigits(uint32_t minimumIntegerDigits, UErrorCode& status);
/**
* Pads the end of the number with zeros up to the given minimum number of fraction digits.
*
- * This setting is applied upon formatting the number.
- *
- * @draft ICU 73
+ * @stable ICU 73
*/
void setMinimumFractionDigits(uint32_t minimumFractionDigits, UErrorCode& status);
@@ -112,7 +118,7 @@ class U_I18N_API SimpleNumber : public UMemory {
*
* NOTE: This does not support accounting sign notation.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
void setSign(USimpleNumberSign sign, UErrorCode& status);
@@ -121,14 +127,14 @@ class U_I18N_API SimpleNumber : public UMemory {
*
* NOTE: This number will fail to format; use forInt64() to create a SimpleNumber with a value.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumber() = default;
/**
* Destruct this SimpleNumber, cleaning up any memory it might own.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
~SimpleNumber() {
cleanup();
@@ -137,7 +143,7 @@ class U_I18N_API SimpleNumber : public UMemory {
/**
* SimpleNumber move constructor.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumber(SimpleNumber&& other) noexcept {
fData = other.fData;
@@ -148,7 +154,7 @@ class U_I18N_API SimpleNumber : public UMemory {
/**
* SimpleNumber move assignment.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumber& operator=(SimpleNumber&& other) noexcept {
cleanup();
@@ -169,6 +175,9 @@ class U_I18N_API SimpleNumber : public UMemory {
USimpleNumberSign fSign = UNUM_SIMPLE_NUMBER_NO_SIGN;
friend class SimpleNumberFormatter;
+
+ // Uses the private constructor to avoid a heap allocation
+ friend class icu::SimpleDateFormat;
};
@@ -180,14 +189,14 @@ class U_I18N_API SimpleNumber : public UMemory {
*
* This class is immutable and not intended for public subclassing. This class is movable but not copyable.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
class U_I18N_API SimpleNumberFormatter : public UMemory {
public:
/**
* Creates a new SimpleNumberFormatter with all locale defaults.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
static SimpleNumberFormatter forLocale(
const icu::Locale &locale,
@@ -196,7 +205,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
/**
* Creates a new SimpleNumberFormatter, overriding the grouping strategy.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
static SimpleNumberFormatter forLocaleAndGroupingStrategy(
const icu::Locale &locale,
@@ -209,7 +218,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
* IMPORTANT: For efficiency, this function borrows the symbols. The symbols MUST remain valid
* for the lifetime of the SimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
static SimpleNumberFormatter forLocaleAndSymbolsAndGroupingStrategy(
const icu::Locale &locale,
@@ -223,7 +232,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
* The SimpleNumber argument is "consumed". A new SimpleNumber object should be created for
* every formatting operation.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
FormattedNumber format(SimpleNumber value, UErrorCode &status) const;
@@ -232,7 +241,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
*
* For more control over the formatting, use SimpleNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
FormattedNumber formatInt64(int64_t value, UErrorCode &status) const {
return format(SimpleNumber::forInt64(value, status), status);
@@ -249,7 +258,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
/**
* Destruct this SimpleNumberFormatter, cleaning up any memory it might own.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
~SimpleNumberFormatter() {
cleanup();
@@ -258,14 +267,14 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
/**
* Creates a shell, initialized but non-functional SimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumberFormatter() = default;
/**
* SimpleNumberFormatter: Move constructor.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumberFormatter(SimpleNumberFormatter&& other) noexcept {
fGroupingStrategy = other.fGroupingStrategy;
@@ -280,7 +289,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
/**
* SimpleNumberFormatter: Move assignment.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumberFormatter& operator=(SimpleNumberFormatter&& other) noexcept {
cleanup();
@@ -316,8 +325,6 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
};
-#endif // U_HIDE_DRAFT_API
-
} // namespace number
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/unicode/simpletz.h b/icu4c/source/i18n/unicode/simpletz.h
index 9005c9ccb..bf45c9185 100644
--- a/icu4c/source/i18n/unicode/simpletz.h
+++ b/icu4c/source/i18n/unicode/simpletz.h
@@ -636,7 +636,7 @@ public:
* @return The TimeZone's raw GMT offset.
* @stable ICU 2.0
*/
- virtual int32_t getRawOffset(void) const override;
+ virtual int32_t getRawOffset() const override;
/**
* Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add
@@ -666,7 +666,7 @@ public:
* but not 0.
* @stable ICU 2.0
*/
- virtual int32_t getDSTSavings(void) const override;
+ virtual int32_t getDSTSavings() const override;
/**
* Queries if this TimeZone uses Daylight Savings Time.
@@ -674,7 +674,7 @@ public:
* @return True if this TimeZone uses Daylight Savings Time; false otherwise.
* @stable ICU 2.0
*/
- virtual UBool useDaylightTime(void) const override;
+ virtual UBool useDaylightTime() const override;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -773,7 +773,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -786,7 +786,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
private:
/**
@@ -882,8 +882,8 @@ private:
/* Private for BasicTimeZone implementation */
void checkTransitionRules(UErrorCode& status) const;
void initTransitionRules(UErrorCode& status);
- void clearTransitionRules(void);
- void deleteTransitionRules(void);
+ void clearTransitionRules();
+ void deleteTransitionRules();
UBool transitionRulesInitialized;
InitialTimeZoneRule* initialRule;
TimeZoneTransition* firstTransition;
diff --git a/icu4c/source/i18n/unicode/smpdtfmt.h b/icu4c/source/i18n/unicode/smpdtfmt.h
index 4343bfbca..a37485a93 100644
--- a/icu4c/source/i18n/unicode/smpdtfmt.h
+++ b/icu4c/source/i18n/unicode/smpdtfmt.h
@@ -69,7 +69,8 @@ class SimpleNumberFormatter;
* getDateInstance(), getDateInstance(), or getDateTimeInstance() rather than
* explicitly constructing an instance of SimpleDateFormat. This way, the client
* is guaranteed to get an appropriate formatting pattern for whatever locale the
- * program is running in. However, if the client needs something more unusual than
+ * program is running in. If the client needs more control, they should consider using
+ * DateFormat::createInstanceForSkeleton(). However, if the client needs something more unusual than
* the default patterns in the locales, he can construct a SimpleDateFormat directly
* and give it an appropriate pattern (or use one of the factory methods on DateFormat
* and modify the pattern after the fact with toPattern() and applyPattern().
@@ -77,46 +78,32 @@ class SimpleNumberFormatter;
* <p><strong>Date and Time Patterns:</strong></p>
*
* <p>Date and time formats are specified by <em>date and time pattern</em> strings.
+ * The full syntax for date and time patterns can be found at
+ * <a href="https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns">https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns</a>.
+ *
* Within date and time pattern strings, all unquoted ASCII letters [A-Za-z] are reserved
- * as pattern letters representing calendar fields. <code>SimpleDateFormat</code> supports
- * the date and time formatting algorithm and pattern letters defined by
- * <a href="http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table">UTS#35
- * Unicode Locale Data Markup Language (LDML)</a> and further documented for ICU in the
- * <a href="https://unicode-org.github.io/icu/userguide/format_parse/datetime/#date-field-symbol-table">ICU
- * User Guide</a>. The following pattern letters are currently available (note that the actual
- * values depend on CLDR and may change from the examples shown here):</p>
+ * as pattern letters representing calendar fields. Some of the most commonly used pattern letters are:</p>
*
* <table border="1">
* <tr>
- * <th>Field</th>
* <th style="text-align: center">Sym.</th>
* <th style="text-align: center">No.</th>
* <th>Example</th>
* <th>Description</th>
* </tr>
* <tr>
- * <th rowspan="3">era</th>
- * <td style="text-align: center" rowspan="3">G</td>
+ * <td style="text-align: center">G</td>
* <td style="text-align: center">1..3</td>
* <td>AD</td>
- * <td rowspan="3">Era - Replaced with the Era string for the current date. One to three letters for the
+ * <td>Era - Replaced with the Era string for the current date. One to three letters for the
* abbreviated form, four letters for the long (wide) form, five for the narrow form.</td>
* </tr>
* <tr>
- * <td style="text-align: center">4</td>
- * <td>Anno Domini</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>A</td>
- * </tr>
- * <tr>
- * <th rowspan="6">year</th>
* <td style="text-align: center">y</td>
* <td style="text-align: center">1..n</td>
* <td>1996</td>
* <td>Year. Normally the length specifies the padding, but for two letters it also specifies the maximum
- * length. Example:<div align="center">
+ * length. Example:<div style="text-align: center">
* <center>
* <table border="1" cellpadding="2" cellspacing="0">
* <tr>
@@ -172,49 +159,11 @@ class SimpleNumberFormatter;
* </td>
* </tr>
* <tr>
- * <td style="text-align: center">Y</td>
- * <td style="text-align: center">1..n</td>
- * <td>1997</td>
- * <td>Year (in "Week of Year" based calendars). Normally the length specifies the padding,
- * but for two letters it also specifies the maximum length. This year designation is used in ISO
- * year-week calendar as defined by ISO 8601, but can be used in non-Gregorian based calendar systems
- * where week date processing is desired. May not always be the same value as calendar year.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">u</td>
- * <td style="text-align: center">1..n</td>
- * <td>4601</td>
- * <td>Extended year. This is a single number designating the year of this calendar system, encompassing
- * all supra-year fields. For example, for the Julian calendar system, year numbers are positive, with an
- * era of BCE or CE. An extended year value for the Julian calendar system assigns positive values to CE
- * years and negative values to BCE years, with 1 BCE being year 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center" rowspan="3">U</td>
- * <td style="text-align: center">1..3</td>
- * <td>&#30002;&#23376;</td>
- * <td rowspan="3">Cyclic year name. Calendars such as the Chinese lunar calendar (and related calendars)
- * and the Hindu calendars use 60-year cycles of year names. Use one through three letters for the abbreviated
- * name, four for the full (wide) name, or five for the narrow name (currently the data only provides abbreviated names,
- * which will be used for all requested name widths). If the calendar does not provide cyclic year name data,
- * or if the year value to be formatted is out of the range of years for which cyclic name data is provided,
- * then numeric formatting is used (behaves like 'y').</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>(currently also &#30002;&#23376;)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>(currently also &#30002;&#23376;)</td>
- * </tr>
- * <tr>
- * <th rowspan="6">quarter</th>
* <td rowspan="3" style="text-align: center">Q</td>
* <td style="text-align: center">1..2</td>
* <td>02</td>
- * <td rowspan="3">Quarter - Use one or two for the numerical quarter, three for the abbreviation, or four for the
- * full (wide) name (five for the narrow name is not yet supported).</td>
+ * <td rowspan="3">Quarter - Use one or two for the numerical quarter, three for the abbreviation, or four
+ * for the full (wide) name (five for the narrow name is not yet supported).</td>
* </tr>
* <tr>
* <td style="text-align: center">3</td>
@@ -225,48 +174,12 @@ class SimpleNumberFormatter;
* <td>2nd quarter</td>
* </tr>
* <tr>
- * <td rowspan="3" style="text-align: center">q</td>
- * <td style="text-align: center">1..2</td>
- * <td>02</td>
- * <td rowspan="3"><b>Stand-Alone</b> Quarter - Use one or two for the numerical quarter, three for the abbreviation,
- * or four for the full name (five for the narrow name is not yet supported).</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Q2</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>2nd quarter</td>
- * </tr>
- * <tr>
- * <th rowspan="8">month</th>
* <td rowspan="4" style="text-align: center">M</td>
* <td style="text-align: center">1..2</td>
* <td>09</td>
* <td rowspan="4">Month - Use one or two for the numerical month, three for the abbreviation, four for
* the full (wide) name, or five for the narrow name. With two ("MM"), the month number is zero-padded
- * if necessary (e.g. "08")</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Sep</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>September</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>S</td>
- * </tr>
- * <tr>
- * <td rowspan="4" style="text-align: center">L</td>
- * <td style="text-align: center">1..2</td>
- * <td>09</td>
- * <td rowspan="4"><b>Stand-Alone</b> Month - Use one or two for the numerical month, three for the abbreviation,
- * four for the full (wide) name, or 5 for the narrow name. With two ("LL"), the month number is zero-padded if
- * necessary (e.g. "08")</td>
+ * if necessary (e.g. "08").</td>
* </tr>
* <tr>
* <td style="text-align: center">3</td>
@@ -281,21 +194,6 @@ class SimpleNumberFormatter;
* <td>S</td>
* </tr>
* <tr>
- * <th rowspan="2">week</th>
- * <td style="text-align: center">w</td>
- * <td style="text-align: center">1..2</td>
- * <td>27</td>
- * <td>Week of Year. Use "w" to show the minimum number of digits, or "ww" to always show two digits
- * (zero-padding if necessary, e.g. "08").</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">W</td>
- * <td style="text-align: center">1</td>
- * <td>3</td>
- * <td>Week of Month</td>
- * </tr>
- * <tr>
- * <th rowspan="4">day</th>
* <td style="text-align: center">d</td>
* <td style="text-align: center">1..2</td>
* <td>1</td>
@@ -303,29 +201,6 @@ class SimpleNumberFormatter;
* two digits (zero-padding if necessary, e.g. "08").</td>
* </tr>
* <tr>
- * <td style="text-align: center">D</td>
- * <td style="text-align: center">1..3</td>
- * <td>345</td>
- * <td>Day of year</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">F</td>
- * <td style="text-align: center">1</td>
- * <td>2</td>
- * <td>Day of Week in Month. The example is for the 2nd Wed in July</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">g</td>
- * <td style="text-align: center">1..n</td>
- * <td>2451334</td>
- * <td>Modified Julian day. This is different from the conventional Julian day number in two regards.
- * First, it demarcates days at local zone midnight, rather than noon GMT. Second, it is a local number;
- * that is, it depends on the local time zone. It can be thought of as a single number that encompasses
- * all the date-related fields.</td>
- * </tr>
- * <tr>
- * <th rowspan="14">week<br>
- * day</th>
* <td rowspan="4" style="text-align: center">E</td>
* <td style="text-align: center">1..3</td>
* <td>Tue</td>
@@ -345,61 +220,12 @@ class SimpleNumberFormatter;
* <td>Tu</td>
* </tr>
* <tr>
- * <td rowspan="5" style="text-align: center">e</td>
- * <td style="text-align: center">1..2</td>
- * <td>2</td>
- * <td rowspan="5">Local day of week. Same as E except adds a numeric value that will depend on the local
- * starting day of the week, using one or two letters. For this example, Monday is the first day of the week.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Tue</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Tuesday</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>T</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">6</td>
- * <td>Tu</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">c</td>
- * <td style="text-align: center">1</td>
- * <td>2</td>
- * <td rowspan="5"><b>Stand-Alone</b> local day of week - Use one letter for the local numeric value (same
- * as 'e'), three for the short day, four for the full (wide) name, five for the narrow name, or six for
- * the short name.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Tue</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Tuesday</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>T</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">6</td>
- * <td>Tu</td>
- * </tr>
- * <tr>
- * <th>period</th>
* <td style="text-align: center">a</td>
* <td style="text-align: center">1</td>
* <td>AM</td>
* <td>AM or PM</td>
* </tr>
* <tr>
- * <th rowspan="4">hour</th>
* <td style="text-align: center">h</td>
* <td style="text-align: center">1..2</td>
* <td>11</td>
@@ -416,27 +242,13 @@ class SimpleNumberFormatter;
* 12-hour-cycle format (h or K). Use HH for zero padding.</td>
* </tr>
* <tr>
- * <td style="text-align: center">K</td>
- * <td style="text-align: center">1..2</td>
- * <td>0</td>
- * <td>Hour [0-11]. When used in a skeleton, only matches K or h, see above. Use KK for zero padding.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">k</td>
- * <td style="text-align: center">1..2</td>
- * <td>24</td>
- * <td>Hour [1-24]. When used in a skeleton, only matches k or H, see above. Use kk for zero padding.</td>
- * </tr>
- * <tr>
- * <th>minute</th>
* <td style="text-align: center">m</td>
* <td style="text-align: center">1..2</td>
* <td>59</td>
* <td>Minute. Use "m" to show the minimum number of digits, or "mm" to always show two digits
- * (zero-padding if necessary, e.g. "08").</td>
+ * (zero-padding if necessary, e.g. "08")..</td>
* </tr>
* <tr>
- * <th rowspan="3">second</th>
* <td style="text-align: center">s</td>
* <td style="text-align: center">1..2</td>
* <td>12</td>
@@ -444,28 +256,10 @@ class SimpleNumberFormatter;
* (zero-padding if necessary, e.g. "08").</td>
* </tr>
* <tr>
- * <td style="text-align: center">S</td>
- * <td style="text-align: center">1..n</td>
- * <td>3450</td>
- * <td>Fractional Second - truncates (like other time fields) to the count of letters when formatting.
- * Appends zeros if more than 3 letters specified. Truncates at three significant digits when parsing.
- * (example shows display using pattern SSSS for seconds value 12.34567)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">A</td>
- * <td style="text-align: center">1..n</td>
- * <td>69540000</td>
- * <td>Milliseconds in day. This field behaves <i>exactly</i> like a composite of all time-related fields,
- * not including the zone fields. As such, it also reflects discontinuities of those fields on DST transition
- * days. On a day of DST onset, it will jump forward. On a day of DST cessation, it will jump backward. This
- * reflects the fact that is must be combined with the offset field to obtain a unique local time value.</td>
- * </tr>
- * <tr>
- * <th rowspan="23">zone</th>
* <td rowspan="2" style="text-align: center">z</td>
* <td style="text-align: center">1..3</td>
* <td>PDT</td>
- * <td>The <i>short specific non-location format</i>.
+ * <td>Time zone. The <i>short specific non-location format</i>.
* Where that is unavailable, falls back to the <i>short localized GMT format</i> ("O").</td>
* </tr>
* <tr>
@@ -475,43 +269,10 @@ class SimpleNumberFormatter;
* Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO").</td>
* </tr>
* <tr>
- * <td rowspan="3" style="text-align: center">Z</td>
- * <td style="text-align: center">1..3</td>
- * <td>-0800</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * The format is equivalent to RFC 822 zone format (when optional seconds field is absent).
- * This is equivalent to the "xxxx" specifier.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>GMT-8:00</td>
- * <td>The <i>long localized GMT format</i>.
- * This is equivalent to the "OOOO" specifier.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.
- * This is equivalent to the "XXXXX" specifier.</td>
- * </tr>
- * <tr>
- * <td rowspan="2" style="text-align: center">O</td>
- * <td style="text-align: center">1</td>
- * <td>GMT-8</td>
- * <td>The <i>short localized GMT format</i>.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>GMT-08:00</td>
- * <td>The <i>long localized GMT format</i>.</td>
- * </tr>
- * <tr>
* <td rowspan="2" style="text-align: center">v</td>
* <td style="text-align: center">1</td>
* <td>PT</td>
- * <td>The <i>short generic non-location format</i>.
+ * <td>Time zone. The <i>short generic non-location format</i>.
* Where that is unavailable, falls back to the <i>generic location format</i> ("VVVV"),
* then the <i>short localized GMT format</i> as the final fallback.</td>
* </tr>
@@ -521,109 +282,6 @@ class SimpleNumberFormatter;
* <td>The <i>long generic non-location format</i>.
* Where that is unavailable, falls back to <i>generic location format</i> ("VVVV").
* </tr>
- * <tr>
- * <td rowspan="4" style="text-align: center">V</td>
- * <td style="text-align: center">1</td>
- * <td>uslax</td>
- * <td>The short time zone ID.
- * Where that is unavailable, the special short time zone ID <i>unk</i> (Unknown Zone) is used.<br>
- * <i><b>Note</b>: This specifier was originally used for a variant of the short specific non-location format,
- * but it was deprecated in the later version of the LDML specification. In CLDR 23/ICU 51, the definition of
- * the specifier was changed to designate a short time zone ID.</i></td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>America/Los_Angeles</td>
- * <td>The long time zone ID.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Los Angeles</td>
- * <td>The exemplar city (location) for the time zone.
- * Where that is unavailable, the localized exemplar city name for the special zone <i>Etc/Unknown</i> is used
- * as the fallback (for example, "Unknown City"). </td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Los Angeles Time</td>
- * <td>The <i>generic location format</i>.
- * Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO";
- * Note: Fallback is only necessary with a GMT-style Time Zone ID, like Etc/GMT-830.)<br>
- * This is especially useful when presenting possible timezone choices for user selection,
- * since the naming is more uniform than the "v" format.</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">X</td>
- * <td style="text-align: center">1</td>
- * <td>-08<br>
- * +0530<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours field and optional minutes field.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>-0800<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours and minutes fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>-08:00<br>
- * Z</td>
- * <td>The <i>ISO8601 extended format</i> with hours and minutes fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>-0800<br>
- * -075258<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58<br>
- * Z</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">x</td>
- * <td style="text-align: center">1</td>
- * <td>-08<br>
- * +0530</td>
- * <td>The <i>ISO8601 basic format</i> with hours field and optional minutes field.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>-0800</td>
- * <td>The <i>ISO8601 basic format</i> with hours and minutes fields.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>-08:00</td>
- * <td>The <i>ISO8601 extended format</i> with hours and minutes fields.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>-0800<br>
- * -075258</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)</td>
- * </tr>
* </table>
*
* <P>
@@ -1057,7 +715,7 @@ public:
* with this date-time formatter.
* @stable ICU 2.0
*/
- virtual const DateFormatSymbols* getDateFormatSymbols(void) const;
+ virtual const DateFormatSymbols* getDateFormatSymbols() const;
/**
* Set the date/time formatting symbols. The caller no longer owns the
@@ -1085,7 +743,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -1098,7 +756,7 @@ public:
* other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Set the calendar to be used by this date format. Initially, the default
@@ -1133,7 +791,7 @@ public:
* @return the time zone format associated with this date/time formatter.
* @internal ICU 49 technology preview
*/
- virtual const TimeZoneFormat* getTimeZoneFormat(void) const;
+ virtual const TimeZoneFormat* getTimeZoneFormat() const;
/**
* Set a particular UDisplayContext value in the formatter, such as
@@ -1216,16 +874,16 @@ public:
* @return locale in this simple date formatter
* @internal ICU 4.0
*/
- const Locale& getSmpFmtLocale(void) const;
+ const Locale& getSmpFmtLocale() const;
#endif /* U_HIDE_INTERNAL_API */
private:
friend class DateFormat;
friend class DateIntervalFormat;
- void initializeDefaultCentury(void);
+ void initializeDefaultCentury();
- void initializeBooleanAttributes(void);
+ void initializeBooleanAttributes();
SimpleDateFormat() = delete; // default constructor not implemented
diff --git a/icu4c/source/i18n/unicode/sortkey.h b/icu4c/source/i18n/unicode/sortkey.h
index 401b5abad..a9b6fee83 100644
--- a/icu4c/source/i18n/unicode/sortkey.h
+++ b/icu4c/source/i18n/unicode/sortkey.h
@@ -162,7 +162,7 @@ public:
* @return Returns true if the key is in an invalid, false otherwise.
* @stable ICU 2.0
*/
- UBool isBogus(void) const;
+ UBool isBogus() const;
/**
* Returns a pointer to the collation key values. The storage is owned
@@ -231,7 +231,7 @@ public:
* @see UnicodeString#hashCode
* @stable ICU 2.0
*/
- int32_t hashCode(void) const;
+ int32_t hashCode() const;
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
@@ -272,12 +272,12 @@ private:
* Set the CollationKey to a "bogus" or invalid state
* @return this CollationKey
*/
- CollationKey& setToBogus(void);
+ CollationKey& setToBogus();
/**
* Resets this CollationKey to an empty state
* @return this CollationKey
*/
- CollationKey& reset(void);
+ CollationKey& reset();
/**
* Allow private access to RuleBasedCollator
diff --git a/icu4c/source/i18n/unicode/stsearch.h b/icu4c/source/i18n/unicode/stsearch.h
index b916aebf2..bbad9d22a 100644
--- a/icu4c/source/i18n/unicode/stsearch.h
+++ b/icu4c/source/i18n/unicode/stsearch.h
@@ -264,7 +264,7 @@ public:
* If a collator is created in the constructor, it will be destroyed here.
* @stable ICU 2.0
*/
- virtual ~StringSearch(void);
+ virtual ~StringSearch();
/**
* Clone this object.
@@ -324,7 +324,7 @@ public:
* @return current index in the text being searched.
* @stable ICU 2.0
*/
- virtual int32_t getOffset(void) const override;
+ virtual int32_t getOffset() const override;
/**
* Set the target text to be searched.
diff --git a/icu4c/source/i18n/unicode/tblcoll.h b/icu4c/source/i18n/unicode/tblcoll.h
index 43cf35d1a..0c018beb8 100644
--- a/icu4c/source/i18n/unicode/tblcoll.h
+++ b/icu4c/source/i18n/unicode/tblcoll.h
@@ -449,7 +449,7 @@ public:
* IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Returns the class ID for this class. This is useful only for comparing to
@@ -462,7 +462,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
#ifndef U_HIDE_DEPRECATED_API
/**
diff --git a/icu4c/source/i18n/unicode/timezone.h b/icu4c/source/i18n/unicode/timezone.h
index e512ef7f9..1c3be8e32 100644
--- a/icu4c/source/i18n/unicode/timezone.h
+++ b/icu4c/source/i18n/unicode/timezone.h
@@ -163,7 +163,7 @@ public:
* @see getUnknown
* @stable ICU 2.0
*/
- static const TimeZone* U_EXPORT2 getGMT(void);
+ static const TimeZone* U_EXPORT2 getGMT();
/**
* Creates a <code>TimeZone</code> for the given ID.
@@ -364,7 +364,7 @@ public:
* @see getUnknown
* @stable ICU 2.0
*/
- static TimeZone* U_EXPORT2 createDefault(void);
+ static TimeZone* U_EXPORT2 createDefault();
#ifndef U_HIDE_INTERNAL_API
/**
@@ -644,7 +644,7 @@ public:
* @return The TimeZone's raw GMT offset.
* @stable ICU 2.0
*/
- virtual int32_t getRawOffset(void) const = 0;
+ virtual int32_t getRawOffset() const = 0;
/**
* Fills in "ID" with the TimeZone's ID.
@@ -813,7 +813,7 @@ public:
*
* @stable ICU 2.0
*/
- virtual UBool useDaylightTime(void) const = 0;
+ virtual UBool useDaylightTime() const = 0;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -857,7 +857,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. This method is to
@@ -870,8 +870,8 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
-
+ virtual UClassID getDynamicClassID() const override = 0;
+
/**
* Returns the amount of time to be added to local standard time
* to get local wall clock time.
diff --git a/icu4c/source/i18n/unicode/tmutamt.h b/icu4c/source/i18n/unicode/tmutamt.h
index 88e892fb0..c73673b62 100644
--- a/icu4c/source/i18n/unicode/tmutamt.h
+++ b/icu4c/source/i18n/unicode/tmutamt.h
@@ -126,8 +126,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 4.2
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
-
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -140,8 +139,7 @@ public:
* other classes have different class IDs.
* @stable ICU 4.2
*/
- virtual UClassID getDynamicClassID(void) const override;
-
+ virtual UClassID getDynamicClassID() const override;
/**
* Get the time unit.
diff --git a/icu4c/source/i18n/unicode/tmutfmt.h b/icu4c/source/i18n/unicode/tmutfmt.h
index 02e0563a0..4f4684a4d 100644
--- a/icu4c/source/i18n/unicode/tmutfmt.h
+++ b/icu4c/source/i18n/unicode/tmutfmt.h
@@ -171,7 +171,7 @@ public:
* @return The class ID for all objects of this class.
* @deprecated ICU 53
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -184,7 +184,7 @@ public:
* other classes have different class IDs.
* @deprecated ICU 53
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
private:
Hashtable* fTimeUnitToCountToPatterns[TimeUnit::UTIMEUNIT_FIELD_COUNT];
diff --git a/icu4c/source/i18n/unicode/translit.h b/icu4c/source/i18n/unicode/translit.h
index 9ae32967f..cde8450c8 100644
--- a/icu4c/source/i18n/unicode/translit.h
+++ b/icu4c/source/i18n/unicode/translit.h
@@ -938,7 +938,7 @@ public:
* transliterator needs to examine
* @stable ICU 2.0
*/
- int32_t getMaximumContextLength(void) const;
+ int32_t getMaximumContextLength() const;
protected:
@@ -962,7 +962,7 @@ public:
* @see #getAvailableIDs
* @stable ICU 2.0
*/
- virtual const UnicodeString& getID(void) const;
+ virtual const UnicodeString& getID() const;
/**
* Returns a name for this transliterator that is appropriate for
@@ -1008,7 +1008,7 @@ public:
* if this transliterator uses no filter.
* @stable ICU 2.0
*/
- const UnicodeFilter* getFilter(void) const;
+ const UnicodeFilter* getFilter() const;
/**
* Returns the filter used by this transliterator, or <tt>nullptr</tt> if this
@@ -1019,7 +1019,7 @@ public:
* transliterator uses no filter.
* @stable ICU 2.4
*/
- UnicodeFilter* orphanFilter(void);
+ UnicodeFilter* orphanFilter();
/**
* Changes the filter used by this transliterator. If the filter
@@ -1374,7 +1374,7 @@ public:
* @return the number of registered source specifiers.
* @stable ICU 2.0
*/
- static int32_t U_EXPORT2 countAvailableSources(void);
+ static int32_t U_EXPORT2 countAvailableSources();
/**
* Return a registered source specifier.
@@ -1448,7 +1448,7 @@ protected:
* Non-mutexed internal method
* @internal
*/
- static int32_t _countAvailableSources(void);
+ static int32_t _countAvailableSources();
/**
* Non-mutexed internal method
@@ -1510,7 +1510,7 @@ public:
* @return The class ID for class Transliterator.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID <b>polymorphically</b>. This method
@@ -1527,7 +1527,7 @@ public:
* different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
private:
static UBool initializeRegistry(UErrorCode &status);
@@ -1541,7 +1541,7 @@ public:
* @return the number of IDs currently registered with the system.
* @obsolete ICU 3.4 use getAvailableIDs() instead
*/
- static int32_t U_EXPORT2 countAvailableIDs(void);
+ static int32_t U_EXPORT2 countAvailableIDs();
/**
* Return the index-th available ID. index must be between 0
@@ -1559,7 +1559,7 @@ public:
#endif /* U_HIDE_OBSOLETE_API */
};
-inline int32_t Transliterator::getMaximumContextLength(void) const {
+inline int32_t Transliterator::getMaximumContextLength() const {
return maximumContextLength;
}
diff --git a/icu4c/source/i18n/unicode/tzfmt.h b/icu4c/source/i18n/unicode/tzfmt.h
index 4bd80e0e3..5f93dd745 100644
--- a/icu4c/source/i18n/unicode/tzfmt.h
+++ b/icu4c/source/i18n/unicode/tzfmt.h
@@ -431,7 +431,7 @@ public:
* @see ParseOption
* @stable ICU 50
*/
- uint32_t getDefaultParseOptions(void) const;
+ uint32_t getDefaultParseOptions() const;
/**
* Sets the default parse options.
@@ -656,7 +656,7 @@ public:
* ICU "poor man's RTTI", returns a UClassID for this class.
* @stable ICU 50
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/icu4c/source/i18n/unicode/tzrule.h b/icu4c/source/i18n/unicode/tzrule.h
index 9ec1e9617..835e6b262 100644
--- a/icu4c/source/i18n/unicode/tzrule.h
+++ b/icu4c/source/i18n/unicode/tzrule.h
@@ -80,7 +80,7 @@ public:
* @return The standard time offset from UTC in milliseconds.
* @stable ICU 3.8
*/
- int32_t getRawOffset(void) const;
+ int32_t getRawOffset() const;
/**
* Gets the amount of daylight saving delta time from the standard time.
@@ -88,7 +88,7 @@ public:
* in milliseconds.
* @stable ICU 3.8
*/
- int32_t getDSTSavings(void) const;
+ int32_t getDSTSavings() const;
/**
* Returns if this rule represents the same rule and offsets as another.
@@ -340,7 +340,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -353,7 +353,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
/**
@@ -461,7 +461,7 @@ public:
* rule used by this time zone rule.
* @stable ICU 3.8
*/
- const DateTimeRule* getRule(void) const;
+ const DateTimeRule* getRule() const;
/**
* Gets the first year when this rule takes effect.
@@ -469,7 +469,7 @@ public:
* with 0 == 1 BCE, -1 == 2 BCE, etc.
* @stable ICU 3.8
*/
- int32_t getStartYear(void) const;
+ int32_t getStartYear() const;
/**
* Gets the end year when this rule takes effect.
@@ -477,7 +477,7 @@ public:
* with 0 == 1 BCE, -1 == 2 BCE, etc.
* @stable ICU 3.8
*/
- int32_t getEndYear(void) const;
+ int32_t getEndYear() const;
/**
* Gets the time when this rule takes effect in the given year.
@@ -581,7 +581,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -594,7 +594,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
/**
@@ -679,7 +679,7 @@ public:
* @return The time type used of the start times used by this rule.
* @stable ICU 3.8
*/
- DateTimeRule::TimeRuleType getTimeType(void) const;
+ DateTimeRule::TimeRuleType getTimeType() const;
/**
* Gets a start time at the index stored in this rule.
@@ -697,7 +697,7 @@ public:
* @return The number of start times.
* @stable ICU 3.8
*/
- int32_t countStartTimes(void) const;
+ int32_t countStartTimes() const;
/**
* Returns if this rule represents the same rule and offsets as another.
@@ -792,7 +792,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -805,7 +805,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
diff --git a/icu4c/source/i18n/unicode/tztrans.h b/icu4c/source/i18n/unicode/tztrans.h
index 5adbeb35e..57751c6fc 100644
--- a/icu4c/source/i18n/unicode/tztrans.h
+++ b/icu4c/source/i18n/unicode/tztrans.h
@@ -102,7 +102,7 @@ public:
* @return The time of the transition in milliseconds since the 1970 Jan 1 epoch time.
* @stable ICU 3.8
*/
- UDate getTime(void) const;
+ UDate getTime() const;
/**
* Sets the time of transition in milliseconds.
@@ -116,7 +116,7 @@ public:
* @return The time zone rule used after the transition.
* @stable ICU 3.8
*/
- const TimeZoneRule* getFrom(void) const;
+ const TimeZoneRule* getFrom() const;
/**
* Sets the rule used before the transition. The caller remains
@@ -155,7 +155,7 @@ public:
* @return The time zone rule used after the transition.
* @stable ICU 3.8
*/
- const TimeZoneRule* getTo(void) const;
+ const TimeZoneRule* getTo() const;
private:
UDate fTime;
@@ -174,7 +174,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -187,7 +187,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/unicode/ucal.h b/icu4c/source/i18n/unicode/ucal.h
index f351b6c9d..0eb4b21d3 100644
--- a/icu4c/source/i18n/unicode/ucal.h
+++ b/icu4c/source/i18n/unicode/ucal.h
@@ -442,7 +442,6 @@ enum UCalendarDateFields {
*/
UCAL_IS_LEAP_MONTH,
-#ifndef U_HIDE_DRAFT_API
/**
* Field number indicating the month. This is a calendar-specific value.
* Differ from UCAL_MONTH, this value is continuous and unique within a
@@ -464,10 +463,9 @@ enum UCalendarDateFields {
* and there is an extra "Leap Month 5" which associated with UCAL_ORDINAL_MONTH
* value 5 before "Month 6" of year 4664.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UCAL_ORDINAL_MONTH,
-#endif // U_HIDE_DRAFT_API
/* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
* it is needed for layout of Calendar, DateFormat, and other objects */
@@ -476,12 +474,7 @@ enum UCalendarDateFields {
* One more than the highest normal UCalendarDateFields value.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
-#ifdef U_HIDE_DRAFT_API
- // Must include all fields that will be in structs
- UCAL_FIELD_COUNT = UCAL_IS_LEAP_MONTH + 2,
-#else // U_HIDE_DRAFT_API (for UCAL_ORDINAL_MONTH)
UCAL_FIELD_COUNT = UCAL_ORDINAL_MONTH + 1,
-#endif // U_HIDE_DRAFT_API (for UCAL_ORDINAL_MONTH)
#endif // U_FORCE_HIDE_DEPRECATED_API
diff --git a/icu4c/source/i18n/unicode/usimplenumberformatter.h b/icu4c/source/i18n/unicode/usimplenumberformatter.h
index ef89b46b9..b67d7e56d 100644
--- a/icu4c/source/i18n/unicode/usimplenumberformatter.h
+++ b/icu4c/source/i18n/unicode/usimplenumberformatter.h
@@ -50,31 +50,28 @@
* </pre>
*/
-#ifndef U_HIDE_DRAFT_API
-
-
/**
* An explicit sign option for a SimpleNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
typedef enum USimpleNumberSign {
/**
* Render a plus sign.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UNUM_SIMPLE_NUMBER_PLUS_SIGN,
/**
* Render no sign.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UNUM_SIMPLE_NUMBER_NO_SIGN,
/**
* Render a minus sign.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UNUM_SIMPLE_NUMBER_MINUS_SIGN,
} USimpleNumberSign;
@@ -84,7 +81,7 @@ struct USimpleNumber;
/**
* C-compatible version of icu::number::SimpleNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
typedef struct USimpleNumber USimpleNumber;
@@ -93,7 +90,7 @@ struct USimpleNumberFormatter;
/**
* C-compatible version of icu::number::SimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
typedef struct USimpleNumberFormatter USimpleNumberFormatter;
@@ -101,7 +98,7 @@ typedef struct USimpleNumberFormatter USimpleNumberFormatter;
/**
* Creates a new USimpleNumber to be formatted with a USimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI USimpleNumber* U_EXPORT2
usnum_openForInt64(int64_t value, UErrorCode* ec);
@@ -112,7 +109,7 @@ usnum_openForInt64(int64_t value, UErrorCode* ec);
*
* This can be used to reset the number value after formatting.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_setToInt64(USimpleNumber* unumber, int64_t value, UErrorCode* ec);
@@ -123,18 +120,19 @@ usnum_setToInt64(USimpleNumber* unumber, int64_t value, UErrorCode* ec);
*
* This function immediately mutates the inner value.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_multiplyByPowerOfTen(USimpleNumber* unumber, int32_t power, UErrorCode* ec);
/**
- * Rounds the value currently stored in the USimpleNumber to the given power of 10.
+ * Rounds the value currently stored in the USimpleNumber to the given power of 10,
+ * which can be before or after the decimal separator.
*
- * This function immediately mutates the inner value.
+ * This function does not change minimum integer digits.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_roundTo(USimpleNumber* unumber, int32_t power, UNumberFormatRoundingMode roundingMode, UErrorCode* ec);
@@ -143,9 +141,7 @@ usnum_roundTo(USimpleNumber* unumber, int32_t power, UNumberFormatRoundingMode r
/**
* Pads the beginning of the number with zeros up to the given minimum number of integer digits.
*
- * This setting is applied upon formatting the number.
- *
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_setMinimumIntegerDigits(USimpleNumber* unumber, int32_t minimumIntegerDigits, UErrorCode* ec);
@@ -154,23 +150,33 @@ usnum_setMinimumIntegerDigits(USimpleNumber* unumber, int32_t minimumIntegerDigi
/**
* Pads the end of the number with zeros up to the given minimum number of fraction digits.
*
- * This setting is applied upon formatting the number.
- *
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_setMinimumFractionDigits(USimpleNumber* unumber, int32_t minimumFractionDigits, UErrorCode* ec);
+#ifndef U_HIDE_DRAFT_API
/**
- * Truncates digits from the beginning of the number to the given maximum number of integer digits.
+ * Sets the number of integer digits to the given amount, truncating if necessary.
*
- * This function immediately mutates the inner value.
+ * @draft ICU 75
+ */
+U_CAPI void U_EXPORT2
+usnum_setMaximumIntegerDigits(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec);
+#endif // U_HIDE_DRAFT_API
+
+
+#ifndef U_HIDE_DEPRECATED_API
+/**
+ * Alias for setMaximumIntegerDigits.
+ * Will be removed after ICU 75.
*
- * @draft ICU 73
+ * @deprecated ICU 75
*/
U_CAPI void U_EXPORT2
usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec);
+#endif // U_HIDE_DEPRECATED_API
/**
@@ -180,7 +186,7 @@ usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UError
*
* NOTE: This does not support accounting sign notation.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_setSign(USimpleNumber* unumber, USimpleNumberSign sign, UErrorCode* ec);
@@ -189,7 +195,7 @@ usnum_setSign(USimpleNumber* unumber, USimpleNumberSign sign, UErrorCode* ec);
/**
* Creates a new USimpleNumberFormatter with all locale defaults.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI USimpleNumberFormatter* U_EXPORT2
usnumf_openForLocale(const char* locale, UErrorCode* ec);
@@ -198,7 +204,7 @@ usnumf_openForLocale(const char* locale, UErrorCode* ec);
/**
* Creates a new USimpleNumberFormatter, overriding the grouping strategy.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI USimpleNumberFormatter* U_EXPORT2
usnumf_openForLocaleAndGroupingStrategy(
@@ -211,7 +217,7 @@ usnumf_openForLocaleAndGroupingStrategy(
* The USimpleNumber is cleared after calling this function. It can be re-used via
* usnum_setToInt64.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnumf_format(
@@ -226,7 +232,7 @@ usnumf_format(
*
* For more control over the formatting, use USimpleNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnumf_formatInt64(
@@ -241,7 +247,7 @@ usnumf_formatInt64(
*
* NOTE: Normally, a USimpleNumber should be adopted by usnumf_formatAndAdoptNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_close(USimpleNumber* unumber);
@@ -250,7 +256,7 @@ usnum_close(USimpleNumber* unumber);
/**
* Frees the memory held by a USimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnumf_close(USimpleNumberFormatter* uformatter);
@@ -275,7 +281,7 @@ U_NAMESPACE_BEGIN
*
* @see LocalPointerBase
* @see LocalPointer
- * @draft ICU 73
+ * @stable ICU 73
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberPointer, USimpleNumber, usnum_close);
@@ -292,14 +298,12 @@ U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberPointer, USimpleNumber, usnum_clos
*
* @see LocalPointerBase
* @see LocalPointer
- * @draft ICU 73
+ * @stable ICU 73
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberFormatterPointer, USimpleNumberFormatter, usnumf_close);
U_NAMESPACE_END
#endif // U_SHOW_CPLUSPLUS_API
-#endif // U_HIDE_DRAFT_API
-
#endif /* #if !UCONFIG_NO_FORMATTING */
#endif //__USIMPLENUMBERFORMATTER_H__
diff --git a/icu4c/source/i18n/unicode/vtzone.h b/icu4c/source/i18n/unicode/vtzone.h
index 93f4ecb93..5e5e8d7d7 100644
--- a/icu4c/source/i18n/unicode/vtzone.h
+++ b/icu4c/source/i18n/unicode/vtzone.h
@@ -289,7 +289,7 @@ public:
* @return The TimeZone's raw GMT offset.
* @stable ICU 3.8
*/
- virtual int32_t getRawOffset(void) const override;
+ virtual int32_t getRawOffset() const override;
/**
* Queries if this time zone uses daylight savings time.
@@ -297,7 +297,7 @@ public:
* false, otherwise.
* @stable ICU 3.8
*/
- virtual UBool useDaylightTime(void) const override;
+ virtual UBool useDaylightTime() const override;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -445,7 +445,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -458,7 +458,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/icu4c/source/i18n/units_converter.cpp b/icu4c/source/i18n/units_converter.cpp
index 6758c129e..84ea1c176 100644
--- a/icu4c/source/i18n/units_converter.cpp
+++ b/icu4c/source/i18n/units_converter.cpp
@@ -180,7 +180,7 @@ void addFactorElement(Factor &factor, StringPiece elementStr, Signum signum, UEr
Factor extractFactorConversions(StringPiece stringFactor, UErrorCode &status) {
Factor result;
Signum signum = Signum::POSITIVE;
- auto factorData = stringFactor.data();
+ const auto* factorData = stringFactor.data();
for (int32_t i = 0, start = 0, n = stringFactor.length(); i < n; i++) {
if (factorData[i] == '*' || factorData[i] == '/') {
StringPiece factorElement = stringFactor.substr(start, i - start);
@@ -202,11 +202,11 @@ Factor extractFactorConversions(StringPiece stringFactor, UErrorCode &status) {
// Load factor for a single source
Factor loadSingleFactor(StringPiece source, const ConversionRates &ratesInfo, UErrorCode &status) {
- const auto conversionUnit = ratesInfo.extractConversionInfo(source, status);
- if (U_FAILURE(status)) return Factor();
+ const auto* const conversionUnit = ratesInfo.extractConversionInfo(source, status);
+ if (U_FAILURE(status)) return {};
if (conversionUnit == nullptr) {
status = U_INTERNAL_PROGRAM_ERROR;
- return Factor();
+ return {};
}
Factor result = extractFactorConversions(conversionUnit->factor.toStringPiece(), status);
@@ -270,49 +270,97 @@ UBool checkSimpleUnit(const MeasureUnitImpl &unit, UErrorCode &status) {
return true;
}
+// Map the MeasureUnitImpl for a simpleUnit to a SingleUnitImpl, then use that
+// SingleUnitImpl's simpleUnitID to get the corresponding ConversionRateInfo;
+// from that we get the specialMappingName (which may be empty if the simple unit
+// converts to base using factor + offset instelad of a special mapping).
+CharString getSpecialMappingName(const MeasureUnitImpl &simpleUnit, const ConversionRates &ratesInfo,
+ UErrorCode &status) {
+ if (!checkSimpleUnit(simpleUnit, status)) {
+ return {};
+ }
+ SingleUnitImpl singleUnit = *simpleUnit.singleUnits[0];
+ const auto* const conversionUnit =
+ ratesInfo.extractConversionInfo(singleUnit.getSimpleUnitID(), status);
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ if (conversionUnit == nullptr) {
+ status = U_INTERNAL_PROGRAM_ERROR;
+ return {};
+ }
+ CharString result;
+ result.copyFrom(conversionUnit->specialMappingName, status);
+ return result;
+}
+
/**
* Extract conversion rate from `source` to `target`
*/
// In ICU4J, this function is partially inlined in the UnitsConverter constructor.
+// TODO ICU-22683: Consider splitting handling of special mappings into separate class
void loadConversionRate(ConversionRate &conversionRate, const MeasureUnitImpl &source,
const MeasureUnitImpl &target, Convertibility unitsState,
const ConversionRates &ratesInfo, UErrorCode &status) {
- // Represents the conversion factor from the source to the target.
- Factor finalFactor;
-
- // Represents the conversion factor from the source to the base unit that specified in the conversion
- // data which is considered as the root of the source and the target.
- Factor sourceToBase = loadCompoundFactor(source, ratesInfo, status);
- Factor targetToBase = loadCompoundFactor(target, ratesInfo, status);
-
- // Merger Factors
- finalFactor.multiplyBy(sourceToBase);
- if (unitsState == Convertibility::CONVERTIBLE) {
- finalFactor.divideBy(targetToBase);
- } else if (unitsState == Convertibility::RECIPROCAL) {
- finalFactor.multiplyBy(targetToBase);
- } else {
- status = UErrorCode::U_ARGUMENT_TYPE_MISMATCH;
- return;
- }
- finalFactor.substituteConstants();
+ conversionRate.specialSource = getSpecialMappingName(source, ratesInfo, status);
+ conversionRate.specialTarget = getSpecialMappingName(target, ratesInfo, status);
+
+ if (conversionRate.specialSource.isEmpty() && conversionRate.specialTarget.isEmpty()) {
+ // Represents the conversion factor from the source to the target.
+ Factor finalFactor;
+
+ // Represents the conversion factor from the source to the base unit that specified in the conversion
+ // data which is considered as the root of the source and the target.
+ Factor sourceToBase = loadCompoundFactor(source, ratesInfo, status);
+ Factor targetToBase = loadCompoundFactor(target, ratesInfo, status);
+
+ // Merger Factors
+ finalFactor.multiplyBy(sourceToBase);
+ if (unitsState == Convertibility::CONVERTIBLE) {
+ finalFactor.divideBy(targetToBase);
+ } else if (unitsState == Convertibility::RECIPROCAL) {
+ finalFactor.multiplyBy(targetToBase);
+ } else {
+ status = UErrorCode::U_ARGUMENT_TYPE_MISMATCH;
+ return;
+ }
- conversionRate.factorNum = finalFactor.factorNum;
- conversionRate.factorDen = finalFactor.factorDen;
+ finalFactor.substituteConstants();
- // This code corresponds to ICU4J's ConversionRates.getOffset().
- // In case of simple units (such as: celsius or fahrenheit), offsets are considered.
- if (checkSimpleUnit(source, status) && checkSimpleUnit(target, status)) {
- conversionRate.sourceOffset =
- sourceToBase.offset * sourceToBase.factorDen / sourceToBase.factorNum;
- conversionRate.targetOffset =
- targetToBase.offset * targetToBase.factorDen / targetToBase.factorNum;
- }
- // TODO(icu-units#127): should we consider failure if there's an offset for
- // a not-simple-unit? What about kilokelvin / kilocelsius?
+ conversionRate.factorNum = finalFactor.factorNum;
+ conversionRate.factorDen = finalFactor.factorDen;
- conversionRate.reciprocal = unitsState == Convertibility::RECIPROCAL;
+ // This code corresponds to ICU4J's ConversionRates.getOffset().
+ // In case of simple units (such as: celsius or fahrenheit), offsets are considered.
+ if (checkSimpleUnit(source, status) && checkSimpleUnit(target, status)) {
+ conversionRate.sourceOffset =
+ sourceToBase.offset * sourceToBase.factorDen / sourceToBase.factorNum;
+ conversionRate.targetOffset =
+ targetToBase.offset * targetToBase.factorDen / targetToBase.factorNum;
+ }
+ // TODO(icu-units#127): should we consider failure if there's an offset for
+ // a not-simple-unit? What about kilokelvin / kilocelsius?
+
+ conversionRate.reciprocal = unitsState == Convertibility::RECIPROCAL;
+ } else if (conversionRate.specialSource.isEmpty() || conversionRate.specialTarget.isEmpty()) {
+ // Still need to set factorNum/factorDen for either source to base or base to target
+ if (unitsState != Convertibility::CONVERTIBLE) {
+ status = UErrorCode::U_ARGUMENT_TYPE_MISMATCH;
+ return;
+ }
+ Factor finalFactor;
+ if (conversionRate.specialSource.isEmpty()) {
+ // factorNum/factorDen is for source to base only
+ finalFactor = loadCompoundFactor(source, ratesInfo, status);
+ } else {
+ // factorNum/factorDen is for base to target only
+ finalFactor = loadCompoundFactor(target, ratesInfo, status);
+ }
+ finalFactor.substituteConstants();
+ conversionRate.factorNum = finalFactor.factorNum;
+ conversionRate.factorDen = finalFactor.factorDen;
+ }
}
struct UnitIndexAndDimension : UMemory {
@@ -430,7 +478,7 @@ MeasureUnitImpl U_I18N_API extractCompoundBaseUnit(const MeasureUnitImpl &source
const auto &singleUnit = *singleUnits[i];
// Extract `ConversionRateInfo` using the absolute unit. For example: in case of `square-meter`,
// we will use `meter`
- const auto rateInfo =
+ const auto* const rateInfo =
conversionRates.extractConversionInfo(singleUnit.getSimpleUnitID(), status);
if (U_FAILURE(status)) {
return result;
@@ -569,6 +617,23 @@ int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit,
return 0;
}
+ CharString firstSpecial = getSpecialMappingName(firstUnit, ratesInfo, status);
+ CharString secondSpecial = getSpecialMappingName(secondUnit, ratesInfo, status);
+ if (!firstSpecial.isEmpty() || !secondSpecial.isEmpty()) {
+ if (firstSpecial.isEmpty()) {
+ // non-specials come first
+ return -1;
+ }
+ if (secondSpecial.isEmpty()) {
+ // non-specials come first
+ return 1;
+ }
+ // both are specials, compare lexicographically
+ StringPiece firstSpecialPiece = firstSpecial.toStringPiece();
+ StringPiece secondSpecialPiece = secondSpecial.toStringPiece();
+ return firstSpecialPiece.compare(secondSpecialPiece);
+ }
+
// Represents the conversion factor from the firstUnit to the base
// unit that specified in the conversion data which is considered as
// the root of the firstUnit and the secondUnit.
@@ -593,8 +658,115 @@ int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit,
return 0;
}
+// TODO per CLDR-17421 and ICU-22683: consider getting the data below from CLDR
+static double minMetersPerSecForBeaufort[] = {
+ // Minimum m/s (base) values for each Bft value, plus an extra artificial value;
+ // when converting from Bft to m/s, the middle of the range will be used
+ // (Values from table in Wikipedia, except for artificial value).
+ // Since this is 0 based, max Beaufort value is thus array dimension minus 2.
+ 0.0, // 0 Bft
+ 0.3, // 1
+ 1.6, // 2
+ 3.4, // 3
+ 5.5, // 4
+ 8.0, // 5
+ 10.8, // 6
+ 13.9, // 7
+ 17.2, // 8
+ 20.8, // 9
+ 24.5, // 10
+ 28.5, // 11
+ 32.7, // 12
+ 36.9, // 13
+ 41.4, // 14
+ 46.1, // 15
+ 51.1, // 16
+ 55.8, // 17
+ 61.4, // artificial end of range 17 to give reasonable midpoint
+};
+
+static int maxBeaufort = UPRV_LENGTHOF(minMetersPerSecForBeaufort) - 2;
+
+// Convert from what should be discrete scale values for a particular unit like beaufort
+// to a corresponding value in the base unit (which can have any decimal value, like meters/sec).
+// First we round the scale value to the nearest integer (in case it is specified with a fractional value),
+// then we map that to a value in middle of the range of corresponding base values.
+// This can handle different scales, specified by minBaseForScaleValues[].
+double UnitsConverter::scaleToBase(double scaleValue, double minBaseForScaleValues[], int scaleMax) const {
+ if (scaleValue < 0) {
+ scaleValue = -scaleValue;
+ }
+ scaleValue += 0.5; // adjust up for later truncation
+ if (scaleValue > (double)scaleMax) {
+ scaleValue = (double)scaleMax;
+ }
+ int scaleInt = (int)scaleValue;
+ return (minBaseForScaleValues[scaleInt] + minBaseForScaleValues[scaleInt+1])/2.0;
+}
+
+// Binary search to find the range that includes key;
+// if key (non-negative) is in the range rangeStarts[i] to just under rangeStarts[i+1],
+// then we return i; if key is >= rangeStarts[max] then we return max.
+// Note that max is the maximum scale value, not the number of elements in the array
+// (which should be larger than max).
+// The ranges for index 0 start at 0.0.
+static int bsearchRanges(double rangeStarts[], int max, double key) {
+ if (key >= rangeStarts[max]) {
+ return max;
+ }
+ int beg = 0, mid = 0, end = max + 1;
+ while (beg < end) {
+ mid = (beg + end) / 2;
+ if (key < rangeStarts[mid]) {
+ end = mid;
+ } else if (key > rangeStarts[mid+1]) {
+ beg = mid+1;
+ } else {
+ break;
+ }
+ }
+ return mid;
+}
+
+// Convert from a value in the base unit (which can have any decimal value, like meters/sec) to a corresponding
+// discrete value in a scale (like beaufort), where each scale value represents a range of base values.
+// We binary-search the ranges to find the one that contains the specified base value, and return its index.
+// This can handle different scales, specified by minBaseForScaleValues[].
+double UnitsConverter::baseToScale(double baseValue, double minBaseForScaleValues[], int scaleMax) const {
+ if (baseValue < 0) {
+ baseValue = -baseValue;
+ }
+ int scaleIndex = bsearchRanges(minBaseForScaleValues, scaleMax, baseValue);
+ return (double)scaleIndex;
+}
+
double UnitsConverter::convert(double inputValue) const {
- double result =
+ double result = inputValue;
+ if (!conversionRate_.specialSource.isEmpty() || !conversionRate_.specialTarget.isEmpty()) {
+ double base = inputValue;
+ // convert input (=source) to base
+ if (!conversionRate_.specialSource.isEmpty()) {
+ // We have a special mapping from source to base (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ base = (conversionRate_.specialSource == StringPiece("beaufort"))?
+ scaleToBase(inputValue, minMetersPerSecForBeaufort, maxBeaufort): inputValue;
+ } else {
+ // Standard mapping (using factor) from source to base.
+ base = inputValue * conversionRate_.factorNum / conversionRate_.factorDen;
+ }
+ // convert base to result (=target)
+ if (!conversionRate_.specialTarget.isEmpty()) {
+ // We have a special mapping from base to target (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ result = (conversionRate_.specialTarget == StringPiece("beaufort"))?
+ baseToScale(base, minMetersPerSecForBeaufort, maxBeaufort): base;
+ } else {
+ // Standard mapping (using factor) from base to target.
+ result = base * conversionRate_.factorDen / conversionRate_.factorNum;
+ }
+ return result;
+ }
+ result =
inputValue + conversionRate_.sourceOffset; // Reset the input to the target zero index.
// Convert the quantity to from the source scale to the target scale.
result *= conversionRate_.factorNum / conversionRate_.factorDen;
@@ -613,6 +785,30 @@ double UnitsConverter::convert(double inputValue) const {
double UnitsConverter::convertInverse(double inputValue) const {
double result = inputValue;
+ if (!conversionRate_.specialSource.isEmpty() || !conversionRate_.specialTarget.isEmpty()) {
+ double base = inputValue;
+ // convert input (=target) to base
+ if (!conversionRate_.specialTarget.isEmpty()) {
+ // We have a special mapping from target to base (not using factor).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ base = (conversionRate_.specialTarget == StringPiece("beaufort"))?
+ scaleToBase(inputValue, minMetersPerSecForBeaufort, maxBeaufort): inputValue;
+ } else {
+ // Standard mapping (using factor) from target to base.
+ base = inputValue * conversionRate_.factorNum / conversionRate_.factorDen;
+ }
+ // convert base to result (=source)
+ if (!conversionRate_.specialSource.isEmpty()) {
+ // We have a special mapping from base to source (not using factor).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ result = (conversionRate_.specialSource == StringPiece("beaufort"))?
+ baseToScale(base, minMetersPerSecForBeaufort, maxBeaufort): base;
+ } else {
+ // Standard mapping (using factor) from base to source.
+ result = base * conversionRate_.factorDen / conversionRate_.factorNum;
+ }
+ return result;
+ }
if (conversionRate_.reciprocal) {
if (result == 0) {
return uprv_getInfinity();
diff --git a/icu4c/source/i18n/units_converter.h b/icu4c/source/i18n/units_converter.h
index 8dc40cd10..01fa55706 100644
--- a/icu4c/source/i18n/units_converter.h
+++ b/icu4c/source/i18n/units_converter.h
@@ -110,10 +110,14 @@ void U_I18N_API addSingleFactorConstant(StringPiece baseStr, int32_t power, Sign
/**
* Represents the conversion rate between `source` and `target`.
+ * TODO ICU-22683: COnsider moving the handling of special mappings (e.g. beaufort) to a separate
+ * struct.
*/
struct U_I18N_API ConversionRate : public UMemory {
const MeasureUnitImpl source;
const MeasureUnitImpl target;
+ CharString specialSource;
+ CharString specialTarget;
double factorNum = 1;
double factorDen = 1;
double sourceOffset = 0;
@@ -121,7 +125,7 @@ struct U_I18N_API ConversionRate : public UMemory {
bool reciprocal = false;
ConversionRate(MeasureUnitImpl &&source, MeasureUnitImpl &&target)
- : source(std::move(source)), target(std::move(target)) {}
+ : source(std::move(source)), target(std::move(target)), specialSource(), specialTarget() {}
};
enum Convertibility {
@@ -224,6 +228,21 @@ class U_I18N_API UnitsConverter : public UMemory {
* Initialises the object.
*/
void init(const ConversionRates &ratesInfo, UErrorCode &status);
+
+ /**
+ * Convert from what should be discrete scale values for a particular unit like beaufort
+ * to a corresponding value in the base unit (which can have any decimal value, like meters/sec).
+ * This can handle different scales, specified by minBaseForScaleValues[].
+ */
+ double scaleToBase(double scaleValue, double minBaseForScaleValues[], int scaleMax) const;
+
+ /**
+ * Convert from a value in the base unit (which can have any decimal value, like meters/sec) to a corresponding
+ * discrete value in a scale (like beaufort), where each scale value represents a range of base values.
+ * This can handle different scales, specified by minBaseForScaleValues[].
+ */
+ double baseToScale(double baseValue, double minBaseForScaleValues[], int scaleMax) const;
+
};
} // namespace units
diff --git a/icu4c/source/i18n/units_data.cpp b/icu4c/source/i18n/units_data.cpp
index b1e069660..19a43f168 100644
--- a/icu4c/source/i18n/units_data.cpp
+++ b/icu4c/source/i18n/units_data.cpp
@@ -6,6 +6,7 @@
#if !UCONFIG_NO_FORMATTING
#include "bytesinkutil.h"
+#include "charstr.h"
#include "cstring.h"
#include "measunit_impl.h"
#include "number_decimalquantity.h"
@@ -80,6 +81,7 @@ class ConversionRateDataSink : public ResourceSink {
UnicodeString baseUnit = ICU_Utility::makeBogusString();
UnicodeString factor = ICU_Utility::makeBogusString();
UnicodeString offset = ICU_Utility::makeBogusString();
+ UnicodeString special = ICU_Utility::makeBogusString();
UnicodeString systems = ICU_Utility::makeBogusString();
for (int32_t i = 0; unitTable.getKeyAndValue(i, key, value); i++) {
if (uprv_strcmp(key, "target") == 0) {
@@ -88,12 +90,14 @@ class ConversionRateDataSink : public ResourceSink {
factor = value.getUnicodeString(status);
} else if (uprv_strcmp(key, "offset") == 0) {
offset = value.getUnicodeString(status);
+ } else if (uprv_strcmp(key, "special") == 0) {
+ special = value.getUnicodeString(status); // the name of a special mapping used instead of factor + optional offset.
} else if (uprv_strcmp(key, "systems") == 0) {
systems = value.getUnicodeString(status);
}
}
if (U_FAILURE(status)) { return; }
- if (baseUnit.isBogus() || factor.isBogus()) {
+ if (baseUnit.isBogus() || (factor.isBogus() && special.isBogus())) {
// We could not find a usable conversion rate: bad resource.
status = U_MISSING_RESOURCE_ERROR;
return;
@@ -107,13 +111,15 @@ class ConversionRateDataSink : public ResourceSink {
} else {
cr->sourceUnit.append(srcUnit, status);
cr->baseUnit.appendInvariantChars(baseUnit, status);
- cr->factor.appendInvariantChars(factor, status);
- cr->systems.appendInvariantChars(systems, status);
- trimSpaces(cr->factor, status);
+ if (!factor.isBogus()) {
+ cr->factor.appendInvariantChars(factor, status);
+ trimSpaces(cr->factor, status);
+ }
if (!offset.isBogus()) cr->offset.appendInvariantChars(offset, status);
+ if (!special.isBogus()) cr->specialMappingName.appendInvariantChars(special, status);
+ cr->systems.appendInvariantChars(systems, status);
}
}
- return;
}
private:
@@ -382,7 +388,7 @@ void U_I18N_API getAllConversionRates(MaybeStackVector<ConversionRateInfo> &resu
const ConversionRateInfo *ConversionRates::extractConversionInfo(StringPiece source,
UErrorCode &status) const {
for (size_t i = 0, n = conversionInfo_.length(); i < n; ++i) {
- if (conversionInfo_[i]->sourceUnit.toStringPiece() == source) return conversionInfo_[i];
+ if (conversionInfo_[i]->sourceUnit == source) return conversionInfo_[i];
}
status = U_INTERNAL_PROGRAM_ERROR;
@@ -396,12 +402,8 @@ U_I18N_API UnitPreferences::UnitPreferences(UErrorCode &status) {
}
CharString getKeyWordValue(const Locale &locale, StringPiece kw, UErrorCode &status) {
- CharString result;
- if (U_FAILURE(status)) { return result; }
- {
- CharStringByteSink sink(&result);
- locale.getKeywordValue(kw, sink, status);
- }
+ if (U_FAILURE(status)) { return {}; }
+ auto result = locale.getKeywordValue<CharString>(kw, status);
if (U_SUCCESS(status) && result.isEmpty()) {
status = U_MISSING_RESOURCE_ERROR;
}
@@ -437,10 +439,8 @@ MaybeStackVector<UnitPreference>
}
}
- char regionBuf[8];
- ulocimp_getRegionForSupplementalData(locale.getName(), false, regionBuf, 8, &status);
- CharString region(regionBuf, status);
-
+ CharString region = ulocimp_getRegionForSupplementalData(locale.getName(), true, status);
+
// Check the locale system tag, e.g `ms=metric`.
UErrorCode internalMeasureTagStatus = U_ZERO_ERROR;
CharString localeSystem = getKeyWordValue(locale, "measure", internalMeasureTagStatus);
diff --git a/icu4c/source/i18n/units_data.h b/icu4c/source/i18n/units_data.h
index ad5033513..ccfe5fbef 100644
--- a/icu4c/source/i18n/units_data.h
+++ b/icu4c/source/i18n/units_data.h
@@ -31,7 +31,7 @@ class U_I18N_API ConversionRateInfo : public UMemory {
ConversionRateInfo() {}
ConversionRateInfo(StringPiece sourceUnit, StringPiece baseUnit, StringPiece factor,
StringPiece offset, UErrorCode &status)
- : sourceUnit(), baseUnit(), factor(), offset() {
+ : sourceUnit(), baseUnit(), factor(), offset(), specialMappingName() {
this->sourceUnit.append(sourceUnit, status);
this->baseUnit.append(baseUnit, status);
this->factor.append(factor, status);
@@ -41,6 +41,7 @@ class U_I18N_API ConversionRateInfo : public UMemory {
CharString baseUnit;
CharString factor;
CharString offset;
+ CharString specialMappingName; // the name of a special mapping used instead of factor + optional offset.
CharString systems;
};
diff --git a/icu4c/source/i18n/units_router.cpp b/icu4c/source/i18n/units_router.cpp
index 03c9b4d1d..0a51cda9f 100644
--- a/icu4c/source/i18n/units_router.cpp
+++ b/icu4c/source/i18n/units_router.cpp
@@ -77,7 +77,7 @@ void UnitsRouter::init(const MeasureUnit &inputUnit, const Locale &locale, Strin
prefs.getPreferencesFor(category.toStringPiece(), usage, locale, status);
for (int32_t i = 0, n = unitPrefs.length(); i < n; ++i) {
U_ASSERT(unitPrefs[i] != nullptr);
- const auto preference = unitPrefs[i];
+ const auto* const preference = unitPrefs[i];
MeasureUnitImpl complexTargetUnitImpl =
MeasureUnitImpl::forIdentifier(preference->unit.data(), status);
diff --git a/icu4c/source/i18n/unum.cpp b/icu4c/source/i18n/unum.cpp
index eb6c86252..7c35473f2 100644
--- a/icu4c/source/i18n/unum.cpp
+++ b/icu4c/source/i18n/unum.cpp
@@ -167,9 +167,9 @@ unum_clone(const UNumberFormat *fmt,
UErrorCode *status)
{
if(U_FAILURE(*status))
- return 0;
-
- Format *res = 0;
+ return nullptr;
+
+ Format* res = nullptr;
const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
const DecimalFormat* df = dynamic_cast<const DecimalFormat*>(nf);
if (df != nullptr) {
@@ -180,9 +180,9 @@ unum_clone(const UNumberFormat *fmt,
res = rbnf->clone();
}
- if(res == 0) {
+ if (res == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
+ return nullptr;
}
return (UNumberFormat*) res;
@@ -218,13 +218,13 @@ unum_formatInt64(const UNumberFormat* fmt,
}
FieldPosition fp;
-
- if(pos != 0)
+
+ if (pos != nullptr)
fp.setField(pos->field);
((const NumberFormat*)fmt)->format(number, res, fp, *status);
- if(pos != 0) {
+ if (pos != nullptr) {
pos->beginIndex = fp.getBeginIndex();
pos->endIndex = fp.getEndIndex();
}
@@ -251,13 +251,13 @@ unum_formatDouble( const UNumberFormat* fmt,
}
FieldPosition fp;
-
- if(pos != 0)
+
+ if (pos != nullptr)
fp.setField(pos->field);
((const NumberFormat*)fmt)->format(number, res, fp, *status);
-
- if(pos != 0) {
+
+ if (pos != nullptr) {
pos->beginIndex = fp.getBeginIndex();
pos->endIndex = fp.getEndIndex();
}
@@ -311,7 +311,7 @@ unum_formatDecimal(const UNumberFormat* fmt,
}
FieldPosition fp;
- if(pos != 0) {
+ if (pos != nullptr) {
fp.setField(pos->field);
}
@@ -327,7 +327,7 @@ unum_formatDecimal(const UNumberFormat* fmt,
resultStr.setTo(result, 0, resultLength);
}
((const NumberFormat*)fmt)->format(numFmtbl, resultStr, fp, *status);
- if(pos != 0) {
+ if (pos != nullptr) {
pos->beginIndex = fp.getBeginIndex();
pos->endIndex = fp.getEndIndex();
}
@@ -355,7 +355,7 @@ unum_formatDoubleCurrency(const UNumberFormat* fmt,
}
FieldPosition fp;
- if (pos != 0) {
+ if (pos != nullptr) {
fp.setField(pos->field);
}
CurrencyAmount *tempCurrAmnt = new CurrencyAmount(number, currency, *status);
@@ -366,8 +366,8 @@ unum_formatDoubleCurrency(const UNumberFormat* fmt,
}
Formattable n(tempCurrAmnt);
((const NumberFormat*)fmt)->format(n, res, fp, *status);
-
- if (pos != 0) {
+
+ if (pos != nullptr) {
pos->beginIndex = fp.getBeginIndex();
pos->endIndex = fp.getEndIndex();
}
@@ -388,18 +388,18 @@ parseRes(Formattable& res,
const UnicodeString src((UBool)(textLength == -1), text, textLength);
ParsePosition pp;
-
- if(parsePos != 0)
+
+ if (parsePos != nullptr)
pp.setIndex(*parsePos);
((const NumberFormat*)fmt)->parse(src, res, pp);
if(pp.getErrorIndex() != -1) {
*status = U_PARSE_ERROR;
- if(parsePos != 0) {
+ if (parsePos != nullptr) {
*parsePos = pp.getErrorIndex();
}
- } else if(parsePos != 0) {
+ } else if (parsePos != nullptr) {
*parsePos = pp.getIndex();
}
}
@@ -923,7 +923,6 @@ unum_setContext(UNumberFormat* fmt, UDisplayContext value, UErrorCode* status)
return;
}
((NumberFormat*)fmt)->setContext(value, *status);
- return;
}
U_CAPI UDisplayContext U_EXPORT2
@@ -978,12 +977,12 @@ unum_formatUFormattable(const UNumberFormat* fmt,
FieldPosition fp;
- if(pos != 0)
+ if (pos != nullptr)
fp.setField(pos->field);
((const NumberFormat*)fmt)->format(*(Formattable::fromUFormattable(number)), res, fp, *status);
- if(pos != 0) {
+ if (pos != nullptr) {
pos->beginIndex = fp.getBeginIndex();
pos->endIndex = fp.getEndIndex();
}
diff --git a/icu4c/source/i18n/upluralrules.cpp b/icu4c/source/i18n/upluralrules.cpp
index 9c4731281..e6b2313f2 100644
--- a/icu4c/source/i18n/upluralrules.cpp
+++ b/icu4c/source/i18n/upluralrules.cpp
@@ -54,7 +54,7 @@ UnicodeString select(const PluralRules &rules, const Formattable& obj, const Num
}
}
}
- return UnicodeString();
+ return {};
}
} // namespace
diff --git a/icu4c/source/i18n/uregex.cpp b/icu4c/source/i18n/uregex.cpp
index 2a520209f..534310d60 100644
--- a/icu4c/source/i18n/uregex.cpp
+++ b/icu4c/source/i18n/uregex.cpp
@@ -1204,11 +1204,11 @@ uregex_replaceAllUText(URegularExpression *regexp2,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, true, status) == false) {
- return 0;
+ return nullptr;
}
if (replacementText == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
dest = regexp->fMatcher->replaceAll(replacementText, dest, *status);
@@ -1265,11 +1265,11 @@ uregex_replaceFirstUText(URegularExpression *regexp2,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, true, status) == false) {
- return 0;
+ return nullptr;
}
if (replacementText == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return 0;
+ return nullptr;
}
dest = regexp->fMatcher->replaceFirst(replacementText, dest, *status);
diff --git a/icu4c/source/i18n/usearch.cpp b/icu4c/source/i18n/usearch.cpp
index 6d9b60cef..cc92b1cca 100644
--- a/icu4c/source/i18n/usearch.cpp
+++ b/icu4c/source/i18n/usearch.cpp
@@ -1905,7 +1905,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch,
// 1. The match extended to the last CE from the target text, which is OK, or
// 2. The last CE that was part of the match is in an expansion that extends
// to the first CE after the match. In this case, we reject the match.
- const CEI *nextCEI = 0;
+ const CEI* nextCEI = nullptr;
if (strsrch->search->elementComparisonType == 0) {
nextCEI = ceb.get(targetIx + targetIxOffset);
maxLimit = nextCEI->lowIndex;
diff --git a/icu4c/source/i18n/uspoof.cpp b/icu4c/source/i18n/uspoof.cpp
index 47dac8418..51cf99564 100644
--- a/icu4c/source/i18n/uspoof.cpp
+++ b/icu4c/source/i18n/uspoof.cpp
@@ -58,99 +58,26 @@ uspoof_cleanup() {
}
void U_CALLCONV initializeStatics(UErrorCode &status) {
- static const char16_t *inclusionPat =
- u"['\\-.\\:\\u00B7\\u0375\\u058A\\u05F3\\u05F4\\u06FD\\u06FE\\u0F0B\\u2010"
- u"\\u2019\\u2027\\u30A0\\u30FB]";
- gInclusionSet = new UnicodeSet(UnicodeString(inclusionPat), status);
- if (gInclusionSet == nullptr) {
+ gInclusionSet = new UnicodeSet();
+ gRecommendedSet = new UnicodeSet();
+ if (gInclusionSet == nullptr || gRecommendedSet == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
+ delete gInclusionSet;
+ gInclusionSet = nullptr;
+ delete gRecommendedSet;
+ gRecommendedSet = nullptr;
return;
}
- gInclusionSet->freeze();
-
- // Note: data from IdentifierStatus.txt & IdentifierType.txt
- // There is tooling to generate this constant in the unicodetools project:
- // org.unicode.text.tools.RecommendedSetGenerator
- // It will print the Java and C++ code to the console for easy copy-paste into this file.
- static const char16_t *recommendedPat =
- u"[0-9A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u0131\\u0134-\\u013E"
- u"\\u0141-\\u0148\\u014A-\\u017E\\u018F\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-"
- u"\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B\\u021E"
- u"\\u021F\\u0226-\\u0233\\u0259\\u02BB\\u02BC\\u02EC\\u0300-\\u0304\\u0306-"
- u"\\u030C\\u030F-\\u0311\\u0313\\u0314\\u031B\\u0323-\\u0328\\u032D\\u032E"
- u"\\u0330\\u0331\\u0335\\u0338\\u0339\\u0342\\u0345\\u037B-\\u037D\\u0386"
- u"\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03CE\\u03FC-\\u045F\\u048A-"
- u"\\u04FF\\u0510-\\u0529\\u052E\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0586"
- u"\\u05B4\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u063F\\u0641-\\u0655\\u0660-"
- u"\\u0669\\u0670-\\u0672\\u0674\\u0679-\\u068D\\u068F-\\u06A0\\u06A2-\\u06D3"
- u"\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0750-\\u07B1\\u0870-\\u0887"
- u"\\u0889-\\u088E\\u08A0-\\u08AC\\u08B2\\u08B5-\\u08C9\\u0901-\\u094D\\u094F"
- u"\\u0950\\u0956\\u0957\\u0960-\\u0963\\u0966-\\u096F\\u0971-\\u0977\\u0979-"
- u"\\u097F\\u0981-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-"
- u"\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE"
- u"\\u09D7\\u09E0-\\u09E3\\u09E6-\\u09F1\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A"
- u"\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A35\\u0A38\\u0A39"
- u"\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A5C\\u0A66-\\u0A74"
- u"\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0"
- u"\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD"
- u"\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B05-"
- u"\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-"
- u"\\u0B39\\u0B3C-\\u0B43\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5F-"
- u"\\u0B61\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90"
- u"\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-"
- u"\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0"
- u"\\u0BD7\\u0BE6-\\u0BEF\\u0C01-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-"
- u"\\u0C33\\u0C35-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55"
- u"\\u0C56\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C80\\u0C82\\u0C83\\u0C85-"
- u"\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-"
- u"\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CE0-\\u0CE3"
- u"\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-"
- u"\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D43\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-"
- u"\\u0D57\\u0D60\\u0D61\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-"
- u"\\u0D8E\\u0D91-\\u0D96\\u0D9A-\\u0DA5\\u0DA7-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD"
- u"\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDE\\u0DF2\\u0E01-"
- u"\\u0E32\\u0E34-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84"
- u"\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB2\\u0EB4-\\u0EBD\\u0EC0-"
- u"\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDE\\u0EDF\\u0F00\\u0F20-"
- u"\\u0F29\\u0F35\\u0F37\\u0F3E-\\u0F42\\u0F44-\\u0F47\\u0F49-\\u0F4C\\u0F4E-"
- u"\\u0F51\\u0F53-\\u0F56\\u0F58-\\u0F5B\\u0F5D-\\u0F68\\u0F6A-\\u0F6C\\u0F71"
- u"\\u0F72\\u0F74\\u0F7A-\\u0F80\\u0F82-\\u0F84\\u0F86-\\u0F92\\u0F94-\\u0F97"
- u"\\u0F99-\\u0F9C\\u0F9E-\\u0FA1\\u0FA3-\\u0FA6\\u0FA8-\\u0FAB\\u0FAD-\\u0FB8"
- u"\\u0FBA-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10C7\\u10CD\\u10D0-"
- u"\\u10F0\\u10F7-\\u10FA\\u10FD-\\u10FF\\u1200-\\u1248\\u124A-\\u124D\\u1250-"
- u"\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0"
- u"\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-"
- u"\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u1780-"
- u"\\u17A2\\u17A5-\\u17A7\\u17A9-\\u17B3\\u17B6-\\u17CD\\u17D0\\u17D2\\u17D7"
- u"\\u17DC\\u17E0-\\u17E9\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00-\\u1E99\\u1E9E"
- u"\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D"
- u"\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F70\\u1F72\\u1F74\\u1F76"
- u"\\u1F78\\u1F7A\\u1F7C\\u1F80-\\u1FB4\\u1FB6-\\u1FBA\\u1FBC\\u1FC2-\\u1FC4"
- u"\\u1FC6-\\u1FC8\\u1FCA\\u1FCC\\u1FD0-\\u1FD2\\u1FD6-\\u1FDA\\u1FE0-\\u1FE2"
- u"\\u1FE4-\\u1FEA\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FF8\\u1FFA\\u1FFC\\u2D27"
- u"\\u2D2D\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-"
- u"\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-"
- u"\\u3007\\u3041-\\u3096\\u3099\\u309A\\u309D\\u309E\\u30A1-\\u30FA\\u30FC-"
- u"\\u30FE\\u3105-\\u312D\\u312F\\u31A0-\\u31BF\\u3400-\\u4DBF\\u4E00-\\u9FFF"
- u"\\uA67F\\uA717-\\uA71F\\uA788\\uA78D\\uA792\\uA793\\uA7AA\\uA7C0-\\uA7CA"
- u"\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA9E7-\\uA9FE\\uAA60-\\uAA76\\uAA7A-"
- u"\\uAA7F\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-"
- u"\\uAB2E\\uAB66\\uAB67\\uAC00-\\uD7A3\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14"
- u"\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29\\U00011301\\U00011303"
- u"\\U0001133B\\U0001133C\\U00016FF0\\U00016FF1\\U0001B11F-\\U0001B122"
- u"\\U0001B132\\U0001B150-\\U0001B152\\U0001B155\\U0001B164-\\U0001B167"
- u"\\U0001DF00-\\U0001DF1E\\U0001DF25-\\U0001DF2A\\U0001E08F\\U0001E7E0-"
- u"\\U0001E7E6\\U0001E7E8-\\U0001E7EB\\U0001E7ED\\U0001E7EE\\U0001E7F0-"
- u"\\U0001E7FE\\U00020000-\\U0002A6DF\\U0002A700-\\U0002B739\\U0002B740-"
- u"\\U0002B81D\\U0002B820-\\U0002CEA1\\U0002CEB0-\\U0002EBE0\\U0002EBF0-"
- u"\\U0002EE5D\\U00030000-\\U0003134A\\U00031350-\\U000323AF]";
-
- gRecommendedSet = new UnicodeSet(UnicodeString(recommendedPat), status);
- if (gRecommendedSet == nullptr) {
- status = U_MEMORY_ALLOCATION_ERROR;
+ gInclusionSet->applyIntPropertyValue(UCHAR_IDENTIFIER_TYPE, U_ID_TYPE_INCLUSION, status);
+ gRecommendedSet->applyIntPropertyValue(UCHAR_IDENTIFIER_TYPE, U_ID_TYPE_RECOMMENDED, status);
+ if (U_FAILURE(status)) {
delete gInclusionSet;
+ gInclusionSet = nullptr;
+ delete gRecommendedSet;
+ gRecommendedSet = nullptr;
return;
}
+ gInclusionSet->freeze();
gRecommendedSet->freeze();
gNfdNormalizer = Normalizer2::getNFDInstance(status);
ucln_i18n_registerCleanup(UCLN_I18N_SPOOF, uspoof_cleanup);
diff --git a/icu4c/source/i18n/uspoof_conf.cpp b/icu4c/source/i18n/uspoof_conf.cpp
index 42dba1c03..dbbf62728 100644
--- a/icu4c/source/i18n/uspoof_conf.cpp
+++ b/icu4c/source/i18n/uspoof_conf.cpp
@@ -393,7 +393,6 @@ void ConfusabledataBuilder::build(const char * confusables, int32_t confusablesL
// All of the intermediate allocated data belongs to the ConfusabledataBuilder
// object (this), and is deleted in the destructor.
- return;
}
//
diff --git a/icu4c/source/i18n/uspoof_impl.cpp b/icu4c/source/i18n/uspoof_impl.cpp
index 7a6084a10..93402e670 100644
--- a/icu4c/source/i18n/uspoof_impl.cpp
+++ b/icu4c/source/i18n/uspoof_impl.cpp
@@ -108,7 +108,7 @@ USpoofChecker *SpoofImpl::asUSpoofChecker() {
// received from the C API.
//
const SpoofImpl *SpoofImpl::validateThis(const USpoofChecker *sc, UErrorCode &status) {
- auto* This = validate(sc, status);
+ const auto* This = validate(sc, status);
if (U_FAILURE(status)) {
return nullptr;
}
diff --git a/icu4c/source/i18n/utrans.cpp b/icu4c/source/i18n/utrans.cpp
index 390335f33..1e4970c3d 100644
--- a/icu4c/source/i18n/utrans.cpp
+++ b/icu4c/source/i18n/utrans.cpp
@@ -323,7 +323,7 @@ utrans_enum_unext(UEnumeration *uenum,
int32_t* resultLength,
UErrorCode *pErrorCode) {
if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
- return 0;
+ return nullptr;
}
UTransEnumeration *ute=(UTransEnumeration *)uenum;
@@ -405,7 +405,7 @@ utrans_trans(const UTransliterator* trans,
utrans_ENTRY(status);
- if (trans == 0 || rep == 0 || repFunc == 0 || limit == 0) {
+ if (trans == nullptr || rep == nullptr || repFunc == nullptr || limit == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -424,7 +424,7 @@ utrans_transIncremental(const UTransliterator* trans,
utrans_ENTRY(status);
- if (trans == 0 || rep == 0 || repFunc == 0 || pos == 0) {
+ if (trans == nullptr || rep == nullptr || repFunc == nullptr || pos == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -445,7 +445,7 @@ utrans_transUChars(const UTransliterator* trans,
utrans_ENTRY(status);
- if (trans == 0 || text == 0 || limit == 0) {
+ if (trans == nullptr || text == nullptr || limit == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -475,7 +475,7 @@ utrans_transIncrementalUChars(const UTransliterator* trans,
utrans_ENTRY(status);
- if (trans == 0 || text == 0 || pos == 0) {
+ if (trans == nullptr || text == nullptr || pos == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
diff --git a/icu4c/source/i18n/vtzone.cpp b/icu4c/source/i18n/vtzone.cpp
index 25af556aa..31ad09c72 100644
--- a/icu4c/source/i18n/vtzone.cpp
+++ b/icu4c/source/i18n/vtzone.cpp
@@ -985,12 +985,8 @@ VTimeZone::VTimeZone(const VTimeZone& source)
}
VTimeZone::~VTimeZone() {
- if (tz != nullptr) {
- delete tz;
- }
- if (vtzlines != nullptr) {
- delete vtzlines;
- }
+ delete tz;
+ delete vtzlines;
}
VTimeZone&
@@ -2132,12 +2128,8 @@ VTimeZone::writeZone(VTZWriter& w, BasicTimeZone& basictz,
cleanupWriteZone:
- if (finalStdRule != nullptr) {
- delete finalStdRule;
- }
- if (finalDstRule != nullptr) {
- delete finalDstRule;
- }
+ delete finalStdRule;
+ delete finalDstRule;
}
void
diff --git a/icu4c/source/i18n/vzone.cpp b/icu4c/source/i18n/vzone.cpp
index 5517e5144..50935618e 100644
--- a/icu4c/source/i18n/vzone.cpp
+++ b/icu4c/source/i18n/vzone.cpp
@@ -87,8 +87,6 @@ vzone_write(VZone* zone, char16_t* & result, int32_t & resultLength, UErrorCode&
resultLength = s.length();
result = (char16_t*)uprv_malloc(resultLength);
memcpy(result,s.getBuffer(),resultLength);
-
- return;
}
U_CAPI void U_EXPORT2
@@ -99,8 +97,6 @@ vzone_writeFromStart(VZone* zone, UDate start, char16_t* & result, int32_t & res
resultLength = s.length();
result = (char16_t*)uprv_malloc(resultLength);
memcpy(result,s.getBuffer(),resultLength);
-
- return;
}
U_CAPI void U_EXPORT2
@@ -111,8 +107,6 @@ vzone_writeSimple(VZone* zone, UDate time, char16_t* & result, int32_t & resultL
resultLength = s.length();
result = (char16_t*)uprv_malloc(resultLength);
memcpy(result,s.getBuffer(),resultLength);
-
- return;
}
U_CAPI int32_t U_EXPORT2
diff --git a/icu4c/source/i18n/windtfmt.cpp b/icu4c/source/i18n/windtfmt.cpp
index 6d705b299..0241ec3b4 100644
--- a/icu4c/source/i18n/windtfmt.cpp
+++ b/icu4c/source/i18n/windtfmt.cpp
@@ -30,7 +30,6 @@
#include "unicode/timezone.h"
#include "unicode/utmscale.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "ulocimp.h"
@@ -104,11 +103,7 @@ static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeSt
UErrorCode status = U_ZERO_ERROR;
// Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
- CharString asciiBCP47Tag;
- {
- CharStringByteSink sink(&asciiBCP47Tag);
- ulocimp_toLanguageTag(locale.getName(), sink, false, &status);
- }
+ CharString asciiBCP47Tag = ulocimp_toLanguageTag(locale.getName(), false, status);
if (U_SUCCESS(status))
{
@@ -412,4 +407,3 @@ U_NAMESPACE_END
#endif /* #if !UCONFIG_NO_FORMATTING */
#endif // U_PLATFORM_USES_ONLY_WIN32_API
-
diff --git a/icu4c/source/i18n/winnmfmt.cpp b/icu4c/source/i18n/winnmfmt.cpp
index bf0bd2009..a23e3eb8c 100644
--- a/icu4c/source/i18n/winnmfmt.cpp
+++ b/icu4c/source/i18n/winnmfmt.cpp
@@ -24,7 +24,6 @@
#include "unicode/locid.h"
#include "unicode/ustring.h"
-#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "uassert.h"
@@ -149,11 +148,7 @@ static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeSt
UErrorCode status = U_ZERO_ERROR;
// Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
- CharString asciiBCP47Tag;
- {
- CharStringByteSink sink(&asciiBCP47Tag);
- ulocimp_toLanguageTag(locale.getName(), sink, false, &status);
- }
+ CharString asciiBCP47Tag = ulocimp_toLanguageTag(locale.getName(), false, status);
if (U_SUCCESS(status))
{
diff --git a/icu4c/source/i18n/zrule.cpp b/icu4c/source/i18n/zrule.cpp
index 1ba0c9705..39f6eeedf 100644
--- a/icu4c/source/i18n/zrule.cpp
+++ b/icu4c/source/i18n/zrule.cpp
@@ -45,7 +45,6 @@ zrule_getName(ZRule* rule, char16_t* name, int32_t nameLength) {
s = ((TimeZoneRule*)rule)->TimeZoneRule::getName(s);
nameLength = s.length();
memcpy(name, s.getBuffer(), nameLength);
- return;
}
U_CAPI int32_t U_EXPORT2
@@ -96,7 +95,6 @@ izrule_getName(IZRule* rule, char16_t* & name, int32_t & nameLength) {
nameLength = s.length();
name = (char16_t*)uprv_malloc(nameLength);
memcpy(name, s.getBuffer(), nameLength);
- return;
}
U_CAPI int32_t U_EXPORT2
diff --git a/icu4c/source/icudefs.mk.in b/icu4c/source/icudefs.mk.in
index 2c358167a..61b537097 100644
--- a/icu4c/source/icudefs.mk.in
+++ b/icu4c/source/icudefs.mk.in
@@ -129,7 +129,7 @@ SED = @SED@
# configure prevents user defined DEFS, and configure's DEFS is not needed
# So we ignore the DEFS that comes from configure
# U_ATTRIBUTE_DEPRECATED is defined to hide warnings about deprecated API warnings.
-DEFS = -DU_ATTRIBUTE_DEPRECATED=
+DEFS = -DU_ALL_IMPLEMENTATION -DU_ATTRIBUTE_DEPRECATED=
# CFLAGS is for C only flags
CFLAGS = @CFLAGS@
# CXXFLAGS is for C++ only flags
diff --git a/icu4c/source/io/Android.bp b/icu4c/source/io/Android.bp
new file mode 100644
index 000000000..253ba48ff
--- /dev/null
+++ b/icu4c/source/io/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2024 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ default_team: "trendy_team_java_core_libraries",
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "external_icu_icu4c_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Unicode-DFS
+ default_applicable_licenses: ["external_icu_icu4c_license"],
+}
+
+cc_library_static {
+ name: "libicuio",
+ cppflags: [
+ "-DU_IO_IMPLEMENTATION",
+ "-DANDROID_LINK_SHARED_ICU4C",
+ ],
+ srcs: [
+ "*.c",
+ "*.cpp",
+ ],
+ shared_libs: [
+ "libicuuc",
+ "libicui18n",
+ ],
+ rtti: true,
+ export_include_dirs: ["."],
+}
diff --git a/icu4c/source/io/io.vcxproj b/icu4c/source/io/io.vcxproj
index ff3485fd4..b4b31a6d0 100644
--- a/icu4c/source/io/io.vcxproj
+++ b/icu4c/source/io/io.vcxproj
@@ -36,7 +36,6 @@
<ClCompile>
<AdditionalIncludeDirectories>..\..\include;..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>U_IO_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
diff --git a/icu4c/source/io/locbund.cpp b/icu4c/source/io/locbund.cpp
index 3f6d6309a..a863e9021 100644
--- a/icu4c/source/io/locbund.cpp
+++ b/icu4c/source/io/locbund.cpp
@@ -72,8 +72,8 @@ u_locbund_init(ULocaleBundle *result, const char *loc)
{
int32_t len;
- if(result == 0)
- return 0;
+ if (result == nullptr)
+ return nullptr;
if (loc == nullptr) {
loc = uloc_getDefault();
@@ -83,8 +83,8 @@ u_locbund_init(ULocaleBundle *result, const char *loc)
len = (int32_t)strlen(loc);
result->fLocale = (char*) uprv_malloc(len + 1);
- if(result->fLocale == 0) {
- return 0;
+ if (result->fLocale == nullptr) {
+ return nullptr;
}
uprv_strcpy(result->fLocale, loc);
diff --git a/icu4c/source/io/sprintf.cpp b/icu4c/source/io/sprintf.cpp
index 48d9bcc27..792ad00fd 100644
--- a/icu4c/source/io/sprintf.cpp
+++ b/icu4c/source/io/sprintf.cpp
@@ -43,7 +43,7 @@ u_sprintf_write(void *context,
u_localized_print_string *output = (u_localized_print_string *)context;
/* just calculating buffer size */
- if (output->str == 0) {
+ if (output->str == nullptr) {
return count;
}
@@ -65,7 +65,7 @@ u_sprintf_pad_and_justify(void *context,
int32_t lengthOfResult = resultLen;
/* just calculating buffer size */
- if (output->str == 0 &&
+ if (output->str == nullptr &&
info->fWidth != -1 && resultLen < info->fWidth) {
return info->fWidth;
}
@@ -195,7 +195,7 @@ u_vsnprintf(char16_t *buffer,
/* convert from the default codepage to Unicode */
if (size >= (int32_t)MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
pattern = (char16_t *)uprv_malloc(size * sizeof(char16_t));
- if(pattern == 0) {
+ if (pattern == nullptr) {
return 0;
}
}
@@ -247,7 +247,7 @@ u_vsnprintf_u(char16_t *buffer,
outStr.len = count;
outStr.available = count;
- if(u_locbund_init(&outStr.fBundle, "en_US_POSIX") == 0) {
+ if (u_locbund_init(&outStr.fBundle, "en_US_POSIX") == nullptr) {
return 0;
}
diff --git a/icu4c/source/io/sscanf.cpp b/icu4c/source/io/sscanf.cpp
index 8940127eb..deef15d40 100644
--- a/icu4c/source/io/sscanf.cpp
+++ b/icu4c/source/io/sscanf.cpp
@@ -75,7 +75,7 @@ u_vsscanf(const char16_t *buffer,
/* convert from the default codepage to Unicode */
if (size >= (int32_t)MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
pattern = (char16_t *)uprv_malloc(size * sizeof(char16_t));
- if(pattern == 0) {
+ if (pattern == nullptr) {
return 0;
}
}
@@ -114,7 +114,7 @@ u_vsscanf_u(const char16_t *buffer,
inStr.str.fPos = (char16_t *)buffer;
inStr.str.fLimit = buffer + u_strlen(buffer);
- if(u_locbund_init(&inStr.str.fBundle, "en_US_POSIX") == 0) {
+ if (u_locbund_init(&inStr.str.fBundle, "en_US_POSIX") == nullptr) {
return 0;
}
diff --git a/icu4c/source/io/ufile.cpp b/icu4c/source/io/ufile.cpp
index 9e87e4058..9d8330743 100644
--- a/icu4c/source/io/ufile.cpp
+++ b/icu4c/source/io/ufile.cpp
@@ -69,11 +69,11 @@ finit_owner(FILE *f,
UErrorCode status = U_ZERO_ERROR;
UFILE *result;
if(f == nullptr) {
- return 0;
+ return nullptr;
}
result = (UFILE*) uprv_malloc(sizeof(UFILE));
if(result == nullptr) {
- return 0;
+ return nullptr;
}
uprv_memset(result, 0, sizeof(UFILE));
@@ -86,10 +86,10 @@ finit_owner(FILE *f,
#if !UCONFIG_NO_FORMATTING
/* if locale is 0, use the default */
- if(u_locbund_init(&result->str.fBundle, locale) == 0) {
+ if (u_locbund_init(&result->str.fBundle, locale) == nullptr) {
/* DO NOT FCLOSE HERE! */
uprv_free(result);
- return 0;
+ return nullptr;
}
#endif
@@ -138,8 +138,8 @@ u_fopen(const char *filename,
{
UFILE *result;
FILE *systemFile = fopen(filename, perm);
- if(systemFile == 0) {
- return 0;
+ if (systemFile == nullptr) {
+ return nullptr;
}
result = finit_owner(systemFile, locale, codepage, true);
@@ -238,10 +238,10 @@ u_fstropen(char16_t *stringBuf,
#if !UCONFIG_NO_FORMATTING
/* if locale is 0, use the default */
- if(u_locbund_init(&result->str.fBundle, locale) == 0) {
+ if (u_locbund_init(&result->str.fBundle, locale) == nullptr) {
/* DO NOT FCLOSE HERE! */
uprv_free(result);
- return 0;
+ return nullptr;
}
#endif
@@ -330,7 +330,7 @@ u_fsetlocale(UFILE *file,
{
u_locbund_close(&file->str.fBundle);
- return u_locbund_init(&file->str.fBundle, locale) == 0 ? -1 : 0;
+ return u_locbund_init(&file->str.fBundle, locale) == nullptr ? -1 : 0;
}
#endif
@@ -344,7 +344,7 @@ u_fgetcodepage(UFILE *file)
if (file->fConverter) {
codepage = ucnv_getName(file->fConverter, &status);
if(U_FAILURE(status))
- return 0;
+ return nullptr;
}
return codepage;
}
diff --git a/icu4c/source/io/ufmt_cmn.cpp b/icu4c/source/io/ufmt_cmn.cpp
index 3d8f6413d..852627293 100644
--- a/icu4c/source/io/ufmt_cmn.cpp
+++ b/icu4c/source/io/ufmt_cmn.cpp
@@ -230,17 +230,16 @@ ufmt_defaultCPToUnicode(const char *s, int32_t sSize,
char16_t *alias;
UErrorCode status = U_ZERO_ERROR;
UConverter *defConverter = u_getDefaultConverter(&status);
-
- if(U_FAILURE(status) || defConverter == 0)
- return 0;
+
+ if (U_FAILURE(status) || defConverter == nullptr)
+ return nullptr;
if(sSize <= 0) {
sSize = static_cast<int32_t>(uprv_strlen(s)) + 1;
}
/* perform the conversion in one swoop */
- if(target != 0) {
-
+ if (target != nullptr) {
alias = target;
ucnv_toUnicode(defConverter, &alias, alias + tSize, &s, s + sSize - 1,
nullptr, true, &status);
diff --git a/icu4c/source/io/uprintf.cpp b/icu4c/source/io/uprintf.cpp
index 7effa6199..c2e1f308a 100644
--- a/icu4c/source/io/uprintf.cpp
+++ b/icu4c/source/io/uprintf.cpp
@@ -176,7 +176,7 @@ u_vfprintf( UFILE *f,
/* convert from the default codepage to Unicode */
if (size >= MAX_UCHAR_BUFFER_SIZE(buffer)) {
pattern = (char16_t *)uprv_malloc(size * sizeof(char16_t));
- if(pattern == 0) {
+ if (pattern == nullptr) {
return 0;
}
}
diff --git a/icu4c/source/io/uprntf_p.cpp b/icu4c/source/io/uprntf_p.cpp
index 399d2dc75..06d0f789d 100644
--- a/icu4c/source/io/uprntf_p.cpp
+++ b/icu4c/source/io/uprntf_p.cpp
@@ -301,7 +301,7 @@ u_printf_double_handler(const u_printf_stream_handler *handler,
format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* save the formatter's state */
@@ -329,7 +329,7 @@ u_printf_double_handler(const u_printf_stream_handler *handler,
}
/* format the number */
- resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+ resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, nullptr, &status);
if (U_FAILURE(status)) {
resultLen = 0;
@@ -378,7 +378,7 @@ u_printf_integer_handler(const u_printf_stream_handler *handler,
format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* set the appropriate flags on the formatter */
@@ -396,7 +396,7 @@ u_printf_integer_handler(const u_printf_stream_handler *handler,
}
/* format the number */
- resultLen = unum_formatInt64(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+ resultLen = unum_formatInt64(format, num, result, UPRINTF_BUFFER_SIZE, nullptr, &status);
if (U_FAILURE(status)) {
resultLen = 0;
@@ -511,7 +511,7 @@ u_printf_uinteger_handler(const u_printf_stream_handler *handler,
format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* set the appropriate flags on the formatter */
@@ -526,7 +526,7 @@ u_printf_uinteger_handler(const u_printf_stream_handler *handler,
/* To mirror other stdio implementations, we ignore the sign argument */
/* format the number */
- resultLen = unum_formatInt64(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+ resultLen = unum_formatInt64(format, num, result, UPRINTF_BUFFER_SIZE, nullptr, &status);
if (U_FAILURE(status)) {
resultLen = 0;
@@ -587,7 +587,7 @@ u_printf_scientific_handler(const u_printf_stream_handler *handler,
format = u_locbund_getNumberFormat(formatBundle, UNUM_SCIENTIFIC);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* set the appropriate flags on the formatter */
@@ -649,7 +649,7 @@ u_printf_scientific_handler(const u_printf_stream_handler *handler,
}
/* format the number */
- resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+ resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, nullptr, &status);
if (U_FAILURE(status)) {
resultLen = 0;
@@ -704,7 +704,7 @@ u_printf_percent_handler(const u_printf_stream_handler *handler,
format = u_locbund_getNumberFormat(formatBundle, UNUM_PERCENT);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* save the formatter's state */
@@ -732,7 +732,7 @@ u_printf_percent_handler(const u_printf_stream_handler *handler,
}
/* format the number */
- resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+ resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, nullptr, &status);
if (U_FAILURE(status)) {
resultLen = 0;
@@ -907,7 +907,7 @@ u_printf_spellout_handler(const u_printf_stream_handler *handler,
format = u_locbund_getNumberFormat(formatBundle, UNUM_SPELLOUT);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* save the formatter's state */
@@ -935,7 +935,7 @@ u_printf_spellout_handler(const u_printf_stream_handler *handler,
}
/* format the number */
- resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+ resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, nullptr, &status);
if (U_FAILURE(status)) {
resultLen = 0;
@@ -1582,7 +1582,7 @@ u_printf_parse(const u_printf_stream_handler *streamHandler,
/* call the handler function */
handler = g_u_printf_infos[ handlerNum ].handler;
- if(handler != 0) {
+ if (handler != nullptr) {
*written += (*handler)(streamHandler, context, formatBundle, info, &args);
}
else {
diff --git a/icu4c/source/io/uscanf.cpp b/icu4c/source/io/uscanf.cpp
index 2d72ccf51..5e1040fdb 100644
--- a/icu4c/source/io/uscanf.cpp
+++ b/icu4c/source/io/uscanf.cpp
@@ -76,7 +76,7 @@ u_vfscanf(UFILE *f,
/* convert from the default codepage to Unicode */
if (size >= MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
pattern = (char16_t *)uprv_malloc(size * sizeof(char16_t));
- if(pattern == 0) {
+ if (pattern == nullptr) {
return 0;
}
}
diff --git a/icu4c/source/io/uscanf_p.cpp b/icu4c/source/io/uscanf_p.cpp
index 0a41dfe07..3def83e1f 100644
--- a/icu4c/source/io/uscanf_p.cpp
+++ b/icu4c/source/io/uscanf_p.cpp
@@ -457,7 +457,7 @@ u_scanf_double_handler(UFILE *input,
format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
@@ -528,7 +528,7 @@ u_scanf_scientific_handler(UFILE *input,
format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_SCIENTIFIC);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* set the appropriate flags on the formatter */
@@ -635,7 +635,7 @@ u_scanf_scidbl_handler(UFILE *input,
genericFormat = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
/* handle error */
- if(scientificFormat == 0 || genericFormat == 0)
+ if (scientificFormat == nullptr || genericFormat == nullptr)
return 0;
/* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
@@ -720,7 +720,7 @@ u_scanf_integer_handler(UFILE *input,
format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* for integer types, do not attempt to parse fractions */
@@ -806,7 +806,7 @@ u_scanf_percent_handler(UFILE *input,
format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_PERCENT);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
@@ -1040,7 +1040,7 @@ u_scanf_spellout_handler(UFILE *input,
format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_SPELLOUT);
/* handle error */
- if(format == 0)
+ if (format == nullptr)
return 0;
/* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
@@ -1430,8 +1430,7 @@ u_scanf_parse(UFILE *f,
/* call the handler function */
handler = g_u_scanf_infos[ handlerNum ].handler;
- if(handler != 0) {
-
+ if (handler != nullptr) {
/* reset count to 1 so that += for alias works. */
count = 1;
diff --git a/icu4c/source/io/ustream.cpp b/icu4c/source/io/ustream.cpp
index fd783b3b2..2bc212da0 100644
--- a/icu4c/source/io/ustream.cpp
+++ b/icu4c/source/io/ustream.cpp
@@ -53,7 +53,7 @@ operator<<(STD_OSTREAM& stream, const UnicodeString& str)
do {
errorCode = U_ZERO_ERROR;
s = buffer;
- ucnv_fromUnicode(converter, &s, sLimit, &us, uLimit, 0, false, &errorCode);
+ ucnv_fromUnicode(converter, &s, sLimit, &us, uLimit, nullptr, false, &errorCode);
*s = 0;
// write this chunk
@@ -114,7 +114,7 @@ operator>>(STD_ISTREAM& stream, UnicodeString& str)
this code won't work on stateful encodings like ISO-2022 or an EBCDIC stateful encoding.
We flush on the last byte to ensure that we output truncated multibyte characters.
*/
- ucnv_toUnicode(converter, &us, uLimit, &s, sLimit, 0, !continueReading, &errorCode);
+ ucnv_toUnicode(converter, &us, uLimit, &s, sLimit, nullptr, !continueReading, &errorCode);
if(U_FAILURE(errorCode)) {
/* Something really bad happened. setstate() isn't always an available API */
stream.clear(stream.failbit);
diff --git a/icu4c/source/layoutex/layoutex.vcxproj b/icu4c/source/layoutex/layoutex.vcxproj
index ba548fc33..41fdacec7 100644
--- a/icu4c/source/layoutex/layoutex.vcxproj
+++ b/icu4c/source/layoutex/layoutex.vcxproj
@@ -46,7 +46,6 @@
<ClCompile>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>.\x86\Release/layoutex.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
<ObjectFileName>.\x86\Release/</ObjectFileName>
@@ -69,7 +68,6 @@
</Midl>
<ClCompile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>.\x86\Debug/layoutex.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
<ObjectFileName>.\x86\Debug/</ObjectFileName>
@@ -96,7 +94,6 @@
<ClCompile>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>.\x64\Release/layoutex.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
<ObjectFileName>.\x64\Release/</ObjectFileName>
@@ -117,7 +114,6 @@
</Midl>
<ClCompile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>.\x64\Debug/layoutex.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
<ObjectFileName>.\x64\Debug/</ObjectFileName>
@@ -138,15 +134,9 @@
<ItemGroup>
<ClCompile Include="LXUtilities.cpp" />
<ClCompile Include="ParagraphLayout.cpp" />
- <ClCompile Include="playout.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="plruns.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="RunArrays.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="playout.cpp" />
+ <ClCompile Include="plruns.cpp" />
+ <ClCompile Include="RunArrays.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="LXUtilities.h" />
diff --git a/icu4c/source/layoutex/playout.cpp b/icu4c/source/layoutex/playout.cpp
index 08dac2623..0cdacf7ae 100644
--- a/icu4c/source/layoutex/playout.cpp
+++ b/icu4c/source/layoutex/playout.cpp
@@ -215,7 +215,7 @@ pl_getLineVisualRun(const pl_line *line, le_int32 runIndex)
ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line;
if (ll == nullptr) {
- return 0;
+ return nullptr;
}
return (pl_visualRun *) ll->getVisualRun(runIndex);
diff --git a/icu4c/source/runConfigureICU b/icu4c/source/runConfigureICU
index 00a568729..7909c9835 100755
--- a/icu4c/source/runConfigureICU
+++ b/icu4c/source/runConfigureICU
@@ -46,7 +46,8 @@ The following names can be supplied as the argument for platform:
FreeBSD Use the clang/clang++ or GNU gcc/g++ compilers on FreeBSD
HP-UX/ACC Use the HP ANSI C/Advanced C++ compilers on HP-UX 11
IBMi Use the iCC compilers on IBM i, i5/OS, OS/400
- Linux Use the clang/clang++ or GNU gcc/g++ compilers on Linux
+ Linux Use the default cc/c++ compilers on Linux
+ Linux/clang Use the clang/clang++ compilers on Linux
Linux/gcc Use the GNU gcc/g++ compilers on Linux
Linux/ECC Use the Intel ECC compiler on Linux
Linux/ICC Use the Intel ICC compiler on Linux
@@ -259,9 +260,19 @@ case $platform in
DEBUG_CFLAGS='-g'
DEBUG_CXXFLAGS='-g'
;;
+ Linux/clang)
+ THE_OS="Linux"
+ THE_COMP="the Clang C++"
+ CC=clang; export CC
+ CXX=clang++; export CXX
+ RELEASE_CFLAGS='-O3'
+ RELEASE_CXXFLAGS='-O3'
+ DEBUG_CFLAGS='-g'
+ DEBUG_CXXFLAGS='-g'
+ ;;
Linux*)
THE_OS="Linux"
- THE_COMP="the clang or else GNU C++"
+ THE_COMP="the default C++"
RELEASE_CFLAGS='-O3'
RELEASE_CXXFLAGS='-O3'
DEBUG_CFLAGS='-g'
diff --git a/icu4c/source/samples/Makefile.in b/icu4c/source/samples/Makefile.in
index 8f2514bfd..79ae9805d 100644
--- a/icu4c/source/samples/Makefile.in
+++ b/icu4c/source/samples/Makefile.in
@@ -22,8 +22,8 @@ include @platform_make_fragment@
## Files to remove for 'make clean'
CLEANFILES = *~
-SUBDIRS = date cal
-ALLSUBDIRS = cal citer coll csdet date datecal ufortune uresb datefmt msgfmt numfmt props strsrch translit uciter8 ucnv udata ustring dtitvfmtsample dtptngsample plurfmtsample
+SUBDIRS =
+ALLSUBDIRS = coll strsrch translit
## List of phony targets
.PHONY : all all-local all-recursive install install-local \
diff --git a/icu4c/source/samples/all/all.sln b/icu4c/source/samples/all/all.sln
index fb4f726e4..35e0a8d5d 100644
--- a/icu4c/source/samples/all/all.sln
+++ b/icu4c/source/samples/all/all.sln
@@ -2,56 +2,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2036
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "break", "..\break\break.vcxproj", "{DEEADF02-9C14-4854-A395-E505D2904D65}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "..\cal\cal.vcxproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "case", "..\case\case.vcxproj", "{2316BE8C-189D-4C8B-B506-9D9EE25AC46D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "date", "..\date\date.vcxproj", "{38B5751A-C6F9-4409-950C-F4F9DA17275F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "datefmt", "..\datefmt\datefmt.vcxproj", "{6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgfmt", "..\msgfmt\msgfmt.vcxproj", "{5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "numfmt", "..\numfmt\numfmt.vcxproj", "{721FBD47-E458-4C35-90DA-FF192907D5E2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "props", "..\props\props.vcxproj", "{ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reader", "..\udata\reader.vcxproj", "{BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "resources", "..\uresb\resources.vcxproj", "{69437707-2FEF-4E2C-8C3F-6E6B3D241366}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strsrch", "..\strsrch\strsrch.vcxproj", "{E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "translit", "..\translit\translit.vcxproj", "{D1BEC124-303A-4F44-BA70-55769B8FE96A}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uciter8", "..\uciter8\uciter8.vcxproj", "{94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ucnv", "..\ucnv\ucnv.vcxproj", "{8C95060E-61F5-464E-BB42-95B788C0D7E4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ufortune", "..\ufortune\ufortune.vcxproj", "{25F534DF-93C9-4853-A88E-DB7D8CF74042}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ugrep", "..\ugrep\ugrep.vcxproj", "{63166CEB-02CC-472C-B3B7-E6C559939BDA}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uresb", "..\uresb\uresb.vcxproj", "{92580BF4-F4DA-4024-B3F8-444F982BC72F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ustring", "..\ustring\ustring.vcxproj", "{FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "writer", "..\udata\writer.vcxproj", "{40A90302-F173-4629-A003-F571D2D93D16}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "citer", "..\citer\citer.vcxproj", "{247E2681-6C84-408B-B40C-5DB50BC5E18F}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "coll", "..\coll\coll.vcxproj", "{7664D0D2-0263-4BFB-AE19-9A1CAD231440}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csdet", "..\csdet\csdet.vcxproj", "{683745AD-3BC2-4B89-898B-93490D7F2757}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dtitvfmtsample", "..\dtitvfmtsample\dtitvfmtsample.vcxproj", "{8945255B-473B-4C47-9425-E92384338CAA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plurfmtsample", "..\plurfmtsample\plurfmtsample.vcxproj", "{B500B731-ED1A-4761-94ED-B22DFE25FF2B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dtptngsample", "..\dtptngsample\dtptngsample.vcxproj", "{115886F0-7DFB-4B8B-BE79-83162EE8713B}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -60,86 +18,6 @@ Global
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.ActiveCfg = Debug|x64
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.Build.0 = Debug|x64
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x86.ActiveCfg = Debug|Win32
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x86.Build.0 = Debug|Win32
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.ActiveCfg = Release|x64
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.Build.0 = Release|x64
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x86.ActiveCfg = Release|Win32
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x86.Build.0 = Release|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x86.ActiveCfg = Debug|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x86.Build.0 = Debug|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x86.ActiveCfg = Release|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x86.Build.0 = Release|Win32
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.ActiveCfg = Debug|x64
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.Build.0 = Debug|x64
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x86.ActiveCfg = Debug|Win32
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x86.Build.0 = Debug|Win32
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.ActiveCfg = Release|x64
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.Build.0 = Release|x64
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x86.ActiveCfg = Release|Win32
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x86.Build.0 = Release|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x86.ActiveCfg = Debug|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x86.Build.0 = Debug|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x86.ActiveCfg = Release|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x86.Build.0 = Release|Win32
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.ActiveCfg = Debug|x64
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.Build.0 = Debug|x64
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x86.ActiveCfg = Debug|Win32
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x86.Build.0 = Debug|Win32
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.ActiveCfg = Release|x64
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.Build.0 = Release|x64
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x86.ActiveCfg = Release|Win32
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x86.Build.0 = Release|Win32
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.ActiveCfg = Debug|x64
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.Build.0 = Debug|x64
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x86.ActiveCfg = Debug|Win32
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x86.Build.0 = Debug|Win32
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.ActiveCfg = Release|x64
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.Build.0 = Release|x64
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x86.ActiveCfg = Release|Win32
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x86.Build.0 = Release|Win32
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.ActiveCfg = Debug|x64
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.Build.0 = Debug|x64
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x86.ActiveCfg = Debug|Win32
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x86.Build.0 = Debug|Win32
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.ActiveCfg = Release|x64
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.Build.0 = Release|x64
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x86.ActiveCfg = Release|Win32
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x86.Build.0 = Release|Win32
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.ActiveCfg = Debug|x64
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.Build.0 = Debug|x64
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x86.ActiveCfg = Debug|Win32
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x86.Build.0 = Debug|Win32
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.ActiveCfg = Release|x64
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.Build.0 = Release|x64
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x86.ActiveCfg = Release|Win32
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x86.Build.0 = Release|Win32
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.ActiveCfg = Debug|x64
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.Build.0 = Debug|x64
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x86.ActiveCfg = Debug|Win32
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x86.Build.0 = Debug|Win32
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.ActiveCfg = Release|x64
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.Build.0 = Release|x64
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x86.ActiveCfg = Release|Win32
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x86.Build.0 = Release|Win32
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.ActiveCfg = Debug|x64
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.Build.0 = Debug|x64
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x86.ActiveCfg = Debug|Win32
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x86.Build.0 = Debug|Win32
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.ActiveCfg = Release|x64
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.Build.0 = Release|x64
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x86.ActiveCfg = Release|Win32
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x86.Build.0 = Release|Win32
{E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x64.ActiveCfg = Debug|x64
{E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x64.Build.0 = Debug|x64
{E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x86.ActiveCfg = Debug|Win32
@@ -156,28 +34,6 @@ Global
{D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x64.Build.0 = Release|x64
{D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x86.ActiveCfg = Release|Win32
{D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x86.Build.0 = Release|Win32
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.ActiveCfg = Debug|x64
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.Build.0 = Debug|x64
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x86.ActiveCfg = Debug|Win32
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x86.Build.0 = Debug|Win32
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.ActiveCfg = Release|x64
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.Build.0 = Release|x64
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x86.ActiveCfg = Release|Win32
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x86.Build.0 = Release|Win32
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.ActiveCfg = Debug|x64
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.Build.0 = Debug|x64
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x86.ActiveCfg = Debug|Win32
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x86.Build.0 = Debug|Win32
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.ActiveCfg = Release|x64
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.Build.0 = Release|x64
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x86.ActiveCfg = Release|Win32
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x86.Build.0 = Release|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.ActiveCfg = Debug|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x86.ActiveCfg = Debug|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x86.Build.0 = Debug|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.ActiveCfg = Release|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x86.ActiveCfg = Release|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x86.Build.0 = Release|Win32
{63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x64.ActiveCfg = Debug|x64
{63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x64.Build.0 = Debug|x64
{63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x86.ActiveCfg = Debug|Win32
@@ -186,38 +42,6 @@ Global
{63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x64.Build.0 = Release|x64
{63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x86.ActiveCfg = Release|Win32
{63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x86.Build.0 = Release|Win32
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.ActiveCfg = Debug|x64
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.Build.0 = Debug|x64
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x86.ActiveCfg = Debug|Win32
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x86.Build.0 = Debug|Win32
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.ActiveCfg = Release|x64
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.Build.0 = Release|x64
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x86.ActiveCfg = Release|Win32
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x86.Build.0 = Release|Win32
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.ActiveCfg = Debug|x64
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.Build.0 = Debug|x64
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x86.ActiveCfg = Debug|Win32
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x86.Build.0 = Debug|Win32
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.ActiveCfg = Release|x64
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.Build.0 = Release|x64
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x86.ActiveCfg = Release|Win32
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x86.Build.0 = Release|Win32
- {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.ActiveCfg = Debug|x64
- {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.Build.0 = Debug|x64
- {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x86.ActiveCfg = Debug|Win32
- {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x86.Build.0 = Debug|Win32
- {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.ActiveCfg = Release|x64
- {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.Build.0 = Release|x64
- {40A90302-F173-4629-A003-F571D2D93D16}.Release|x86.ActiveCfg = Release|Win32
- {40A90302-F173-4629-A003-F571D2D93D16}.Release|x86.Build.0 = Release|Win32
- {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|x64.ActiveCfg = Debug|x64
- {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|x64.Build.0 = Debug|x64
- {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|x86.ActiveCfg = Debug|Win32
- {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|x86.Build.0 = Debug|Win32
- {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|x64.ActiveCfg = Release|x64
- {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|x64.Build.0 = Release|x64
- {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|x86.ActiveCfg = Release|Win32
- {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|x86.Build.0 = Release|Win32
{7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x64.ActiveCfg = Debug|x64
{7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x64.Build.0 = Debug|x64
{7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x86.ActiveCfg = Debug|Win32
@@ -226,38 +50,6 @@ Global
{7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x64.Build.0 = Release|x64
{7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x86.ActiveCfg = Release|Win32
{7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x86.Build.0 = Release|Win32
- {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|x64.ActiveCfg = Debug|x64
- {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|x64.Build.0 = Debug|x64
- {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|x86.ActiveCfg = Debug|Win32
- {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|x86.Build.0 = Debug|Win32
- {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x64.ActiveCfg = Release|x64
- {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x64.Build.0 = Release|x64
- {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x86.ActiveCfg = Release|Win32
- {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x86.Build.0 = Release|Win32
- {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x64.ActiveCfg = Debug|x64
- {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x64.Build.0 = Debug|x64
- {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x86.ActiveCfg = Debug|Win32
- {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x86.Build.0 = Debug|Win32
- {8945255B-473B-4C47-9425-E92384338CAA}.Release|x64.ActiveCfg = Release|x64
- {8945255B-473B-4C47-9425-E92384338CAA}.Release|x64.Build.0 = Release|x64
- {8945255B-473B-4C47-9425-E92384338CAA}.Release|x86.ActiveCfg = Release|Win32
- {8945255B-473B-4C47-9425-E92384338CAA}.Release|x86.Build.0 = Release|Win32
- {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x64.ActiveCfg = Debug|x64
- {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x64.Build.0 = Debug|x64
- {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x86.ActiveCfg = Debug|Win32
- {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x86.Build.0 = Debug|Win32
- {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x64.ActiveCfg = Release|x64
- {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x64.Build.0 = Release|x64
- {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x86.ActiveCfg = Release|Win32
- {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x86.Build.0 = Release|Win32
- {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x64.ActiveCfg = Debug|x64
- {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x64.Build.0 = Debug|x64
- {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x86.ActiveCfg = Debug|Win32
- {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x86.Build.0 = Debug|Win32
- {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x64.ActiveCfg = Release|x64
- {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x64.Build.0 = Release|x64
- {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x86.ActiveCfg = Release|Win32
- {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/icu4c/source/samples/all/samplecheck.bat b/icu4c/source/samples/all/samplecheck.bat
index ab69cb226..2c45935f0 100644
--- a/icu4c/source/samples/all/samplecheck.bat
+++ b/icu4c/source/samples/all/samplecheck.bat
@@ -42,120 +42,18 @@ echo Testing ICU samples in %ICU_ICUDIR% arch=%ICU_ARCH% type=%ICU_DBRL%
set PATH=%ICU_BINDIR%;%PATH%
pushd %ICU_BINDIR%
-set SAMPLE_BREAK=%ICU_SAMPLESDIR%\break\%ICU_ARCH%\%ICU_DBRL%\break.exe
-set SAMPLE_CAL=%ICU_SAMPLESDIR%\cal\%ICU_ARCH%\%ICU_DBRL%\cal.exe
-set SAMPLE_CASE=%ICU_SAMPLESDIR%\case\%ICU_ARCH%\%ICU_DBRL%\case.exe
-set SAMPLE_CITER=%ICU_SAMPLESDIR%\citer\%ICU_ARCH%\%ICU_DBRL%\citer.exe
set SAMPLE_COLL=%ICU_SAMPLESDIR%\coll\%ICU_ARCH%\%ICU_DBRL%\coll.exe
-set SAMPLE_CSDET=%ICU_SAMPLESDIR%\csdet\%ICU_ARCH%\%ICU_DBRL%\csdet.exe
-set SAMPLE_DATE=%ICU_SAMPLESDIR%\date\%ICU_ARCH%\%ICU_DBRL%\date.exe
-set SAMPLE_DATEFMT=%ICU_SAMPLESDIR%\datefmt\%ICU_ARCH%\%ICU_DBRL%\datefmt.exe
-set SAMPLE_DTITVFMT=%ICU_SAMPLESDIR%\dtitvfmtsample\%ICU_ARCH%\%ICU_DBRL%\dtitvfmtsample.exe
-set SAMPLE_DTPTNG=%ICU_SAMPLESDIR%\dtptngsample\%ICU_ARCH%\%ICU_DBRL%\dtptngsample.exe
-set SAMPLE_MSGFMT=%ICU_SAMPLESDIR%\msgfmt\%ICU_ARCH%\%ICU_DBRL%\msgfmt.exe
-set SAMPLE_NUMFMT=%ICU_SAMPLESDIR%\numfmt\%ICU_ARCH%\%ICU_DBRL%\numfmt.exe
-set SAMPLE_PLURFMTSAMPLE=%ICU_SAMPLESDIR%\plurfmtsample\%ICU_ARCH%\%ICU_DBRL%\plurfmtsample.exe
-set SAMPLE_PROPS=%ICU_SAMPLESDIR%\props\%ICU_ARCH%\%ICU_DBRL%\props.exe
set SAMPLE_STRSRCH=%ICU_SAMPLESDIR%\strsrch\%ICU_ARCH%\%ICU_DBRL%\strsrch.exe
set SAMPLE_TRANSLIT=%ICU_SAMPLESDIR%\translit\%ICU_ARCH%\%ICU_DBRL%\translit.exe
-set SAMPLE_UCITER8=%ICU_SAMPLESDIR%\uciter8\%ICU_ARCH%\%ICU_DBRL%\uciter8.exe
-set SAMPLE_UCNV=%ICU_SAMPLESDIR%\ucnv\%ICU_ARCH%\%ICU_DBRL%\ucnv.exe
-REM udata needs changes to the vcxproj to change the output locations for writer/reader.
-rem set SAMPLE_UDATA_WRITER=%ICU_SAMPLESDIR%\udata\%ICU_ARCH%\%ICU_DBRL%\writer.exe
-rem set SAMPLE_UDATA_READER=%ICU_SAMPLESDIR%\udata\%ICU_ARCH%\%ICU_DBRL%\reader.exe
-set SAMPLE_UFORTUNE=%ICU_SAMPLESDIR%\ufortune\%ICU_ARCH%\%ICU_DBRL%\ufortune.exe
set SAMPLE_UGREP=%ICU_SAMPLESDIR%\ugrep\%ICU_ARCH%\%ICU_DBRL%\ugrep.exe
-REM There is also the 'resources' project in VS.
-set SAMPLE_URESB=%ICU_SAMPLESDIR%\uresb\%ICU_ARCH%\%ICU_DBRL%\uresb.exe
-set SAMPLE_USTRING=%ICU_SAMPLESDIR%\ustring\%ICU_ARCH%\%ICU_DBRL%\ustring.exe
-@set THT=break
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_BREAK%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=cal
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_CAL%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=case
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_CASE%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=citer
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_CITER%
-if ERRORLEVEL 1 goto :SampleError
-
@set THT=coll
@echo.
@echo ==== %THT% =========================================================================
%SAMPLE_COLL%
if ERRORLEVEL 1 goto :SampleError
-@set THT=csdet
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_CSDET% %ICU_SAMPLESDIR%\csdet\readme.txt
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=date
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_DATE%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=datefmt
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_DATEFMT%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=dtitvfmtsample
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_DTITVFMT%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=dtptngsample
-@echo.
-@echo ==== %THT% =========================================================================
-pushd %ICU_SAMPLESDIR%\dtptngsample\%ICU_ARCH%\%ICU_DBRL%
-%SAMPLE_DTPTNG%
-popd
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=msgfmt
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_MSGFMT% arg1 arg2
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=numfmt
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_NUMFMT%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=plurfmtsample
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_PLURFMTSAMPLE%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=props
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_PROPS%
-if ERRORLEVEL 1 goto :SampleError
-
@set THT=strsrch
@echo.
@echo ==== %THT% =========================================================================
@@ -168,43 +66,6 @@ if ERRORLEVEL 1 goto :SampleError
%SAMPLE_TRANSLIT%
if ERRORLEVEL 1 goto :SampleError
-@set THT=citer8
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_UCITER8%
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=ucnv
-@echo.
-@echo ==== %THT% =========================================================================
-pushd %ICU_SAMPLESDIR%\ucnv
-%SAMPLE_UCNV%
-popd
-if ERRORLEVEL 1 goto :SampleError
-
-REM TODO: udata needs changes to the vcxproj file to fix the output locations for writer/reader.
-@set THT=udata
-@echo.
-@echo ==== %THT% =========================================================================
-pushd %ICU_SAMPLESDIR%\udata\%ICU_ARCH%\%ICU_DBRL%
-@echo TODO: udata needs changes to the vcxproj file to fix the output locations for writer/reader.
-@echo Skipping %THT%
-rem %SAMPLE_UDATA_WRITER%
-rem %SAMPLE_UDATA_READER%
-popd
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=ufortune
-@echo.
-@echo ==== %THT% =========================================================================
-if "%ICU_ARCH%" == "x64" (
- @echo The ufortune sample currently only runs on x86.
- @echo Skipping %THT%.
-) else (
- %SAMPLE_UFORTUNE%
- if ERRORLEVEL 1 goto :SampleError
-)
-
@set THT=ugrep
@echo.
@echo ==== %THT% =========================================================================
@@ -212,22 +73,6 @@ echo Looking for "ICU" in '%ICU_SAMPLESDIR%\ugrep\readme.txt' with ugrep.exe
%SAMPLE_UGREP% ICU %ICU_SAMPLESDIR%\ugrep\readme.txt
if ERRORLEVEL 1 goto :SampleError
-@set THT=uresb
-@echo.
-@echo ==== %THT% =========================================================================
-pushd %ICU_SAMPLESDIR%\uresb
-%SAMPLE_URESB% en
-%SAMPLE_URESB% root
-%SAMPLE_URESB% sr
-popd
-if ERRORLEVEL 1 goto :SampleError
-
-@set THT=ustring
-@echo.
-@echo ==== %THT% =========================================================================
-%SAMPLE_USTRING%
-if ERRORLEVEL 1 goto :SampleError
-
rem All done
diff --git a/icu4c/source/samples/break/Android.bp b/icu4c/source/samples/break/Android.bp
deleted file mode 100644
index 0376c528c..000000000
--- a/icu4c/source/samples/break/Android.bp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- To run on host,
- m icu4c_sample_break && ANDROID_DATA=$ANDROID_HOST_OUT \
- ANDROID_TZDATA_ROOT=$ANDROID_HOST_OUT/com.android.tzdata/ \
- ANDROID_I18N_ROOT=$ANDROID_HOST_OUT/com.android.i18n/ \
- $ANDROID_HOST_OUT/nativetest/icu4c_sample_break/icu4c_sample_break
-
- To run on device,
- m icu4c_sample_break && adb push $ANDROID_PRODUCT_OUT/data/nativetest/icu4c_sample_break/icu4c_sample_break \
- /data/local/tmp/ && adb shell /data/local/tmp/icu4c_sample_break
-
-*/
-package {
- default_team: "trendy_team_java_core_libraries",
- // See: http://go/android-license-faq
- // A large-scale-change added 'default_applicable_licenses' to import
- // all of the 'license_kinds' from "external_icu_icu4c_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Unicode-DFS
- default_applicable_licenses: ["external_icu_icu4c_license"],
-}
-
-cc_test {
- name: "icu4c_sample_break",
- host_supported: true,
- srcs: [
- "break.cpp",
- "ubreak.c",
- ],
- shared_libs: ["libicuuc"],
- cflags: [
- "-DANDROID_LINK_SHARED_ICU4C",
- ],
- gtest: false,
-}
diff --git a/icu4c/source/samples/break/Makefile b/icu4c/source/samples/break/Makefile
deleted file mode 100644
index 4fda8820b..000000000
--- a/icu4c/source/samples/break/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2002 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-#### definitions
-# Name of your target
-TARGET=break
-
-# All object files (C or C++)
-OBJECTS=break.o ubreak.o
-
-#### rules
-# Load in standard makefile definitions
-include ../defs.mk
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/break/break.cpp b/icu4c/source/samples/break/break.cpp
deleted file mode 100644
index 9df7cd4b2..000000000
--- a/icu4c/source/samples/break/break.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2002-2003, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-*/
-
-#include <stdio.h>
-#include <unicode/brkiter.h>
-#include <stdlib.h>
-
-using namespace icu;
-
-U_CFUNC int c_main();
-
-void printUnicodeString(const UnicodeString &s) {
- char charBuf[1000];
- s.extract(0, s.length(), charBuf, sizeof(charBuf)-1, 0);
- charBuf[sizeof(charBuf)-1] = 0;
- printf("%s", charBuf);
-}
-
-
-void printTextRange( BreakIterator& iterator,
- int32_t start, int32_t end )
-{
- CharacterIterator *strIter = iterator.getText().clone();
- UnicodeString s;
- strIter->getText(s);
-
- printf(" %ld %ld\t", (long)start, (long)end);
- printUnicodeString(UnicodeString(s, 0, start));
- printf("|");
- printUnicodeString(UnicodeString(s, start, end-start));
- printf("|");
- printUnicodeString(UnicodeString(s, end));
- puts("");
- delete strIter;
-}
-
-
-/* Print each element in order: */
-void printEachForward( BreakIterator& boundary)
-{
- int32_t start = boundary.first();
- for (int32_t end = boundary.next();
- end != BreakIterator::DONE;
- start = end, end = boundary.next())
- {
- printTextRange( boundary, start, end );
- }
-}
-
-/* Print each element in reverse order: */
-void printEachBackward( BreakIterator& boundary)
-{
- int32_t end = boundary.last();
- for (int32_t start = boundary.previous();
- start != BreakIterator::DONE;
- end = start, start = boundary.previous())
- {
- printTextRange( boundary, start, end );
- }
-}
-
-/* Print the first element */
-void printFirst(BreakIterator& boundary)
-{
- int32_t start = boundary.first();
- int32_t end = boundary.next();
- printTextRange( boundary, start, end );
-}
-
-/* Print the last element */
-void printLast(BreakIterator& boundary)
-{
- int32_t end = boundary.last();
- int32_t start = boundary.previous();
- printTextRange( boundary, start, end );
-}
-
-/* Print the element at a specified position */
-void printAt(BreakIterator &boundary, int32_t pos )
-{
- int32_t end = boundary.following(pos);
- int32_t start = boundary.previous();
- printTextRange( boundary, start, end );
-}
-
-/* Creating and using text boundaries */
-int main()
-{
- puts("ICU Break Iterator Sample Program\n");
- puts("C++ Break Iteration\n");
- BreakIterator* boundary;
- UnicodeString stringToExamine("Aaa bbb ccc. Ddd eee fff.");
- printf("Examining: ");
- printUnicodeString(stringToExamine);
- puts("");
-
- //print each sentence in forward and reverse order
- UErrorCode status = U_ZERO_ERROR;
- boundary = BreakIterator::createSentenceInstance(
- Locale::getUS(), status );
- if (U_FAILURE(status)) {
- printf("failed to create sentence break iterator. status = %s",
- u_errorName(status));
- exit(1);
- }
-
- boundary->setText(stringToExamine);
- puts("\n Sentence Boundaries... ");
- puts("----- forward: -----------");
- printEachForward(*boundary);
- puts("----- backward: ----------");
- printEachBackward(*boundary);
- delete boundary;
-
- //print each word in order
- printf("\n Word Boundaries... \n");
- boundary = BreakIterator::createWordInstance(
- Locale::getUS(), status);
- boundary->setText(stringToExamine);
- puts("----- forward: -----------");
- printEachForward(*boundary);
- //print first element
- puts("----- first: -------------");
- printFirst(*boundary);
- //print last element
- puts("----- last: --------------");
- printLast(*boundary);
- //print word at charpos 10
- puts("----- at pos 10: ---------");
- printAt(*boundary, 10 );
-
- delete boundary;
-
- puts("\nEnd C++ Break Iteration");
-
- // Call the C version
- return c_main();
-}
diff --git a/icu4c/source/samples/break/break.sln b/icu4c/source/samples/break/break.sln
deleted file mode 100644
index 80cca4245..000000000
--- a/icu4c/source/samples/break/break.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "break", "break.vcxproj", "{DEEADF02-9C14-4854-A395-E505D2904D65}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|Win32.ActiveCfg = Debug|Win32
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|Win32.Build.0 = Debug|Win32
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.ActiveCfg = Debug|x64
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.Build.0 = Debug|x64
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|Win32.ActiveCfg = Release|Win32
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|Win32.Build.0 = Release|Win32
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.ActiveCfg = Release|x64
- {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/break/break.vcxproj b/icu4c/source/samples/break/break.vcxproj
deleted file mode 100644
index d9a51001d..000000000
--- a/icu4c/source/samples/break/break.vcxproj
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{DEEADF02-9C14-4854-A395-E505D2904D65}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <!-- Options that are common to *all* project configurations -->
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/break.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/break.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/break.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/break.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/break.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/break.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/break.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/break.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/break.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/break.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/break.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/break.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/break.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/break.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/break.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/break.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="break.cpp" />
- <ClCompile Include="ubreak.c" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/break/break.vcxproj.filters b/icu4c/source/samples/break/break.vcxproj.filters
deleted file mode 100644
index 016ad4ab9..000000000
--- a/icu4c/source/samples/break/break.vcxproj.filters
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{3cfd1084-1652-4648-bb97-9b38a2780005}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{34cb1edc-aa5a-4702-b867-a867ebe8496c}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{6aea4120-7995-4705-b3b7-7013af485c18}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="break.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="ubreak.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/break/readme.txt b/icu4c/source/samples/break/readme.txt
deleted file mode 100644
index debedd1e7..000000000
--- a/icu4c/source/samples/break/readme.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
-break: Boundary Analysis
-
-This sample demonstrates
- Using ICU to determine the linguistic boundaries within text
-
-
-Files:
- break.cpp Main source file in C++
- ubreak.c Main source file in C
- break.sln Windows MSVC workspace. Double-click this to get started.
- break.vcproj Windows MSVC project file
-
-To Build break on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\break\break.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the break directory, e.g.
- cd c:\icu\source\samples\break\debug
- 4. Run it (Warning: Be careful, 'break' is also a system command on many systems)
- .\break
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/break
- gmake ICU_PREFIX=<icu install directory)
-
- To Run on Unixes
- cd <icu directory>/source/samples/break
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- break
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/break/ubreak.c b/icu4c/source/samples/break/ubreak.c
deleted file mode 100644
index 10d7d0b49..000000000
--- a/icu4c/source/samples/break/ubreak.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2002, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unicode/ustring.h>
-#include <unicode/ubrk.h>
-
-U_CFUNC int c_main(void);
-
-void printTextRange(UChar* str, int32_t start, int32_t end)
-{
- char charBuf[1000];
- UChar savedEndChar;
-
- savedEndChar = str[end];
- str[end] = 0;
- u_austrncpy(charBuf, str+start, sizeof(charBuf)-1);
- charBuf[sizeof(charBuf)-1]=0;
- printf("string[%2d..%2d] \"%s\"\n", start, end-1, charBuf);
- str[end] = savedEndChar;
-}
-
-
-
-/* Print each element in order: */
-void printEachForward( UBreakIterator* boundary, UChar* str) {
- int32_t end;
- int32_t start = ubrk_first(boundary);
- for (end = ubrk_next(boundary); end != UBRK_DONE; start = end, end =
- ubrk_next(boundary)) {
- printTextRange(str, start, end );
- }
-}
-
-
-/* Print each element in reverse order: */
-void printEachBackward( UBreakIterator* boundary, UChar* str) {
- int32_t start;
- int32_t end = ubrk_last(boundary);
- for (start = ubrk_previous(boundary); start != UBRK_DONE; end = start,
- start =ubrk_previous(boundary)) {
- printTextRange( str, start, end );
- }
-}
-
-/* Print first element */
-void printFirst(UBreakIterator* boundary, UChar* str) {
- int32_t end;
- int32_t start = ubrk_first(boundary);
- end = ubrk_next(boundary);
- printTextRange( str, start, end );
-}
-
-/* Print last element */
-void printLast(UBreakIterator* boundary, UChar* str) {
- int32_t start;
- int32_t end = ubrk_last(boundary);
- start = ubrk_previous(boundary);
- printTextRange(str, start, end );
-}
-
-/* Print the element at a specified position */
-
-void printAt(UBreakIterator* boundary, int32_t pos , UChar* str) {
- int32_t start;
- int32_t end = ubrk_following(boundary, pos);
- start = ubrk_previous(boundary);
- printTextRange(str, start, end );
-}
-
-/* Creating and using text boundaries*/
-
-int c_main( void ) {
- UBreakIterator *boundary;
- char cStringToExamine[] = "Aaa bbb ccc. Ddd eee fff.";
- UChar stringToExamine[sizeof(cStringToExamine)+1];
- UErrorCode status = U_ZERO_ERROR;
-
- printf("\n\n"
- "C Boundary Analysis\n"
- "-------------------\n\n");
-
- printf("Examining: %s\n", cStringToExamine);
- u_uastrcpy(stringToExamine, cStringToExamine);
-
- /*print each sentence in forward and reverse order*/
- boundary = ubrk_open(UBRK_SENTENCE, "en_us", stringToExamine,
- -1, &status);
- if (U_FAILURE(status)) {
- printf("ubrk_open error: %s\n", u_errorName(status));
- exit(1);
- }
-
- printf("\n----- Sentence Boundaries, forward: -----------\n");
- printEachForward(boundary, stringToExamine);
- printf("\n----- Sentence Boundaries, backward: ----------\n");
- printEachBackward(boundary, stringToExamine);
- ubrk_close(boundary);
-
- /*print each word in order*/
- boundary = ubrk_open(UBRK_WORD, "en_us", stringToExamine,
- u_strlen(stringToExamine), &status);
- printf("\n----- Word Boundaries, forward: -----------\n");
- printEachForward(boundary, stringToExamine);
- printf("\n----- Word Boundaries, backward: ----------\n");
- printEachBackward(boundary, stringToExamine);
- /*print first element*/
- printf("\n----- first: -------------\n");
- printFirst(boundary, stringToExamine);
- /*print last element*/
- printf("\n----- last: --------------\n");
- printLast(boundary, stringToExamine);
- /*print word at charpos 10 */
- printf("\n----- at pos 10: ---------\n");
- printAt(boundary, 10 , stringToExamine);
-
- ubrk_close(boundary);
-
- printf("\nEnd of C boundary analysis\n");
- return 0;
-}
diff --git a/icu4c/source/samples/cal/Makefile.in b/icu4c/source/samples/cal/Makefile.in
deleted file mode 100644
index f69635069..000000000
--- a/icu4c/source/samples/cal/Makefile.in
+++ /dev/null
@@ -1,78 +0,0 @@
-## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html
-##
-## Makefile.in for ICU - samples/cal
-## Copyright (c) 1999-2011, International Business Machines Corporation and
-## others. All Rights Reserved.
-
-## Source directory information
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-
-## Install directory information
-top_builddir = ../..
-
-include $(top_builddir)/icudefs.mk
-
-## Build directory information
-subdir = samples/cal
-
-## Extra files to remove for 'make clean'
-CLEANFILES = *~ $(DEPS)
-
-## Target information
-TARGET = icucal$(EXEEXT)
-
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n
-LIBS = $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
-
-OBJECTS = uprint.o cal.o
-
-DEPS = $(OBJECTS:.o=.d)
-
-## List of phony targets
-.PHONY : all all-local install install-local clean clean-local \
-distclean distclean-local dist dist-local check check-local
-
-## Clear suffix list
-.SUFFIXES :
-
-## List of standard targets
-all: all-local
-install: install-local
-clean: clean-local
-distclean : distclean-local
-dist: dist-local
-check: all check-local
-
-all-local: $(TARGET)
-
-install-local: all-local
-
-dist-local:
-
-clean-local:
- test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
- $(RMV) $(OBJECTS) $(TARGET)
-
-distclean-local: clean-local
- $(RMV) Makefile
-
-check-local:
- -$(INVOKE) ./$(TARGET)
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-$(TARGET) : $(OBJECTS)
- $(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
- $(POST_BUILD_STEP)
-
-ifeq (,$(MAKECMDGOALS))
--include $(DEPS)
-else
-ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
--include $(DEPS)
-endif
-endif
diff --git a/icu4c/source/samples/cal/cal.c b/icu4c/source/samples/cal/cal.c
deleted file mode 100644
index 95fe48ff8..000000000
--- a/icu4c/source/samples/cal/cal.c
+++ /dev/null
@@ -1,766 +0,0 @@
-/*
-***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-***********************************************************************
-**********************************************************************
-* Copyright (C) 1998-2012, International Business Machines Corporation
-* and others. All Rights Reserved.
-**********************************************************************
-*
-* File date.c
-*
-* Modification History:
-*
-* Date Name Description
-* 06/16/99 stephen Creation.
-*******************************************************************************
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "unicode/uloc.h"
-#include "unicode/udat.h"
-#include "unicode/ucal.h"
-#include "unicode/ustring.h"
-#include "unicode/uclean.h"
-
-#include "uprint.h"
-
-#if UCONFIG_NO_FORMATTING
-
-int main(int argc, char **argv)
-{
- printf("%s: Sorry, UCONFIG_NO_FORMATTING was turned on (see uconfig.h). No formatting can be done. \n", argv[0]);
- return 0;
-}
-#else
-
-
-/* Protos */
-static void usage(void);
-
-static void version(void);
-
-static void cal(int32_t month, int32_t year,
- UBool useLongNames, UErrorCode *status);
-
-static void get_symbols(const UDateFormat *fmt,
- UDateFormatSymbolType type,
- UChar *array[],
- int32_t arrayLength,
- int32_t lowestIndex,
- int32_t firstIndex,
- UErrorCode *status);
-
-static void free_symbols(UChar *array[],
- int32_t arrayLength);
-
-static void get_days(const UDateFormat *fmt,
- UChar *days [], UBool useLongNames,
- int32_t fdow, UErrorCode *status);
-
-static void free_days(UChar *days[]);
-
-static void get_months(const UDateFormat *fmt,
- UChar *months [], UBool useLongNames,
- UErrorCode *status);
-
-static void free_months(UChar *months[]);
-
-static void indent(int32_t count, FILE *f);
-
-static void print_days(UChar *days [], FILE *f, UErrorCode *status);
-
-static void print_month(UCalendar *c,
- UChar *days [],
- UBool useLongNames, int32_t fdow,
- UErrorCode *status);
-
-static void print_year(UCalendar *c,
- UChar *days [], UChar *months [],
- UBool useLongNames, int32_t fdow,
- UErrorCode *status);
-
-/* The version of cal */
-#define CAL_VERSION "1.0"
-
-/* Number of days in a week */
-#define DAY_COUNT 7
-
-/* Number of months in a year (yes, 13) */
-#define MONTH_COUNT 13
-
-/* Separation between months in year view */
-#define MARGIN_WIDTH 4
-
-/* Size of stack buffers */
-#define BUF_SIZE 64
-
-/* Patterm string - "MMM yyyy" */
-static const UChar sShortPat [] = { 0x004D, 0x004D, 0x004D, 0x0020,
-0x0079, 0x0079, 0x0079, 0x0079 };
-/* Pattern string - "MMMM yyyy" */
-static const UChar sLongPat [] = { 0x004D, 0x004D, 0x004D, 0x004D, 0x0020,
-0x0079, 0x0079, 0x0079, 0x0079 };
-
-
-int
-main(int argc,
- char **argv)
-{
- int printUsage = 0;
- int printVersion = 0;
- UBool useLongNames = 0;
- int optInd = 1;
- char *arg;
- int32_t month = -1, year = -1;
- UErrorCode status = U_ZERO_ERROR;
-
-
- /* parse the options */
- for(optInd = 1; optInd < argc; ++optInd) {
- arg = argv[optInd];
-
- /* version info */
- if(strcmp(arg, "-v") == 0 || strcmp(arg, "--version") == 0) {
- printVersion = 1;
- }
- /* usage info */
- else if(strcmp(arg, "-h") == 0 || strcmp(arg, "--help") == 0) {
- printUsage = 1;
- }
- /* use long day names */
- else if(strcmp(arg, "-l") == 0 || strcmp(arg, "--long") == 0) {
- useLongNames = 1;
- }
- /* POSIX.1 says all arguments after -- are not options */
- else if(strcmp(arg, "--") == 0) {
- /* skip the -- */
- ++optInd;
- break;
- }
- /* unrecognized option */
- else if(strncmp(arg, "-", strlen("-")) == 0) {
- printf("cal: invalid option -- %s\n", arg+1);
- printUsage = 1;
- }
- /* done with options, display cal */
- else {
- break;
- }
- }
-
- /* Get the month and year to display, if specified */
- if(optInd != argc) {
-
- /* Month and year specified */
- if(argc - optInd == 2) {
- sscanf(argv[optInd], "%d", (int*)&month);
- sscanf(argv[optInd + 1], "%d", (int*)&year);
-
- /* Make sure the month value is legal */
- if(month < 0 || month > 12) {
- printf("icucal: Bad value for month -- %d\n", (int)month);
-
- /* Display usage */
- printUsage = 1;
- }
-
- /* Adjust because months are 0-based */
- --month;
- }
- /* Only year specified */
- else {
- sscanf(argv[optInd], "%d", (int*)&year);
- }
- }
-
- /* print usage info */
- if(printUsage) {
- usage();
- return 0;
- }
-
- /* print version info */
- if(printVersion) {
- version();
- return 0;
- }
-
- /* print the cal */
- cal(month, year, useLongNames, &status);
-
- /* ICU cleanup. Deallocate any memory ICU may be holding. */
- u_cleanup();
-
- return (U_FAILURE(status) ? 1 : 0);
-}
-
-/* Usage information */
-static void
-usage()
-{
- puts("Usage: icucal [OPTIONS] [[MONTH] YEAR]");
- puts("");
- puts("Options:");
- puts(" -h, --help Print this message and exit.");
- puts(" -v, --version Print the version number of cal and exit.");
- puts(" -l, --long Use long names.");
- puts("");
- puts("Arguments (optional):");
- puts(" MONTH An integer (1-12) indicating the month to display");
- puts(" YEAR An integer indicating the year to display");
- puts("");
- puts("For an interesting calendar, look at October 1582");
-}
-
-/* Version information */
-static void
-version()
-{
- printf("icucal version %s (ICU version %s), created by Stephen F. Booth.\n",
- CAL_VERSION, U_ICU_VERSION);
- puts(U_COPYRIGHT_STRING);
-}
-
-static void
-cal(int32_t month,
- int32_t year,
- UBool useLongNames,
- UErrorCode *status)
-{
- UCalendar *c;
- UChar *days [DAY_COUNT];
- UChar *months [MONTH_COUNT];
- int32_t fdow;
-
- if(U_FAILURE(*status)) return;
-
- /* Create a new calendar */
- c = ucal_open(0, -1, uloc_getDefault(), UCAL_TRADITIONAL, status);
-
- /* Determine if we are printing a calendar for one month or for a year */
-
- /* Print an entire year */
- if(month == -1 && year != -1) {
-
- /* Set the year */
- ucal_set(c, UCAL_YEAR, year);
-
- /* Determine the first day of the week */
- fdow = ucal_getAttribute(c, UCAL_FIRST_DAY_OF_WEEK);
-
- /* Print the calendar for the year */
- print_year(c, days, months, useLongNames, fdow, status);
- }
-
- /* Print only one month */
- else {
-
- /* Set the month and the year, if specified */
- if(month != -1)
- ucal_set(c, UCAL_MONTH, month);
- if(year != -1)
- ucal_set(c, UCAL_YEAR, year);
-
- /* Determine the first day of the week */
- fdow = ucal_getAttribute(c, UCAL_FIRST_DAY_OF_WEEK);
-
- /* Print the calendar for the month */
- print_month(c, days, useLongNames, fdow, status);
- }
-
- /* Clean up */
- ucal_close(c);
-}
-/*
- * Get a set of DateFormat symbols of a given type.
- *
- * lowestIndex is the index of the first symbol to fetch.
- * (e.g. it will be one to fetch day names, since Sunday is
- * day 1 *not* day 0.)
- *
- * firstIndex is the index of the symbol to place first in
- * the output array. This is used when fetching day names
- * in locales where the week doesn't start on Sunday.
- */
-static void get_symbols(const UDateFormat *fmt,
- UDateFormatSymbolType type,
- UChar *array[],
- int32_t arrayLength,
- int32_t lowestIndex,
- int32_t firstIndex,
- UErrorCode *status)
-{
- int32_t count, i;
-
- if (U_FAILURE(*status)) {
- return;
- }
-
- count = udat_countSymbols(fmt, type);
-
- if(count != arrayLength + lowestIndex) {
- return;
- }
-
- for(i = 0; i < arrayLength; i++) {
- int32_t idx = (i + firstIndex) % arrayLength;
- int32_t size = 1 + udat_getSymbols(fmt, type, idx + lowestIndex, NULL, 0, status);
-
- array[idx] = (UChar *) malloc(sizeof(UChar) * size);
-
- *status = U_ZERO_ERROR;
- udat_getSymbols(fmt, type, idx + lowestIndex, array[idx], size, status);
- }
-}
-
-/* Free the symbols allocated by get_symbols(). */
-static void free_symbols(UChar *array[],
- int32_t arrayLength)
-{
- int32_t i;
-
- for(i = 0; i < arrayLength; i++) {
- free(array[i]);
- }
-}
-
-/* Get the day names for the specified locale, in either long or short
-form. Also, reorder the days so that they are in the proper order
-for the locale (not all locales begin weeks on Sunday; in France,
-weeks start on Monday) */
-static void
-get_days(const UDateFormat *fmt,
- UChar *days [],
- UBool useLongNames,
- int32_t fdow,
- UErrorCode *status)
-{
- UDateFormatSymbolType dayType = (useLongNames ? UDAT_WEEKDAYS : UDAT_SHORT_WEEKDAYS);
-
- if(U_FAILURE(*status))
- return;
-
- /* fdow is 1-based */
- --fdow;
-
- get_symbols(fmt, dayType, days, DAY_COUNT, 1, fdow, status);
-}
-
-static void free_days(UChar *days[])
-{
- free_symbols(days, DAY_COUNT);
-}
-
-/* Get the month names for the specified locale, in either long or
-short form. */
-static void
-get_months(const UDateFormat *fmt,
- UChar *months [],
- UBool useLongNames,
- UErrorCode *status)
-{
- UDateFormatSymbolType monthType = (useLongNames ? UDAT_MONTHS : UDAT_SHORT_MONTHS);
-
- if(U_FAILURE(*status))
- return;
-
- get_symbols(fmt, monthType, months, MONTH_COUNT - 1, 0, 0, status); /* some locales have 13 months, no idea why */
-}
-
-static void free_months(UChar *months[])
-{
- free_symbols(months, MONTH_COUNT - 1);
-}
-
-/* Indent a certain number of spaces */
-static void
-indent(int32_t count,
- FILE *f)
-{
- char c [BUF_SIZE];
-
- if(count <= 0)
- {
- return;
- }
-
- if(count < BUF_SIZE) {
- memset(c, (int)' ', count);
- fwrite(c, sizeof(char), count, f);
- }
- else {
- int32_t i;
- for(i = 0; i < count; ++i)
- putc(' ', f);
- }
-}
-
-/* Print the days */
-static void
-print_days(UChar *days [],
- FILE *f,
- UErrorCode *status)
-{
- int32_t i;
-
- if(U_FAILURE(*status)) return;
-
- /* Print the day names */
- for(i = 0; i < DAY_COUNT; ++i) {
- uprint(days[i], f, status);
- putc(' ', f);
- }
-}
-
-/* Print out a calendar for c's current month */
-static void
-print_month(UCalendar *c,
- UChar *days [],
- UBool useLongNames,
- int32_t fdow,
- UErrorCode *status)
-{
- int32_t width, pad, i, day;
- int32_t lens [DAY_COUNT];
- int32_t firstday, current;
- UNumberFormat *nfmt;
- UDateFormat *dfmt;
- UChar s [BUF_SIZE];
- const UChar *pat = (useLongNames ? sLongPat : sShortPat);
- int32_t len = (useLongNames ? 9 : 8);
-
- if(U_FAILURE(*status)) return;
-
-
- /* ========== Generate the header containing the month and year */
-
- /* Open a formatter with a month and year only pattern */
- dfmt = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL,NULL,0,pat, len,status);
-
- /* Format the date */
- udat_format(dfmt, ucal_getMillis(c, status), s, BUF_SIZE, 0, status);
-
-
- /* ========== Get the day names */
- get_days(dfmt, days, useLongNames, fdow, status);
-
- /* ========== Print the header */
-
- /* Calculate widths for justification */
- width = 6; /* 6 spaces, 1 between each day name */
- for(i = 0; i < DAY_COUNT; ++i) {
- lens[i] = u_strlen(days[i]);
- width += lens[i];
- }
-
- /* Print the header, centered among the day names */
- pad = width - u_strlen(s);
- indent(pad / 2, stdout);
- uprint(s, stdout, status);
- putc('\n', stdout);
-
-
- /* ========== Print the day names */
-
- print_days(days, stdout, status);
- putc('\n', stdout);
-
-
- /* ========== Print the calendar */
-
- /* Get the first of the month */
- ucal_set(c, UCAL_DATE, 1);
- firstday = ucal_get(c, UCAL_DAY_OF_WEEK, status);
-
- /* The day of the week for the first day of the month is based on
- 1-based days of the week, which were also reordered when placed
- in the days array. Account for this here by offsetting by the
- first day of the week for the locale, which is also 1-based. */
- firstday -= fdow;
-
- /* Open the formatter */
- nfmt = unum_open(UNUM_DECIMAL, NULL,0,NULL,NULL, status);
-
- /* Indent the correct number of spaces for the first week */
- current = firstday;
- if(current < 0)
- {
- current += 7;
- }
- for(i = 0; i < current; ++i)
- indent(lens[i] + 1, stdout);
-
- /* Finally, print out the days */
- day = ucal_get(c, UCAL_DATE, status);
- do {
-
- /* Format the current day string */
- unum_format(nfmt, day, s, BUF_SIZE, 0, status);
-
- /* Calculate the justification and indent */
- pad = lens[current] - u_strlen(s);
- indent(pad, stdout);
-
- /* Print the day number out, followed by a space */
- uprint(s, stdout, status);
- putc(' ', stdout);
-
- /* Update the current day */
- ++current;
- current %= DAY_COUNT;
-
- /* If we're at day 0 (first day of the week), insert a newline */
- if(current == 0) {
- putc('\n', stdout);
- }
-
- /* Go to the next day */
- ucal_add(c, UCAL_DATE, 1, status);
- day = ucal_get(c, UCAL_DATE, status);
-
- } while(day != 1);
-
- /* Output a trailing newline */
- putc('\n', stdout);
-
- /* Clean up */
- free_days(days);
- unum_close(nfmt);
- udat_close(dfmt);
-}
-
-/* Print out a calendar for c's current year */
-static void
-print_year(UCalendar *c,
- UChar *days [],
- UChar *months [],
- UBool useLongNames,
- int32_t fdow,
- UErrorCode *status)
-{
- int32_t width, pad, i, j;
- int32_t lens [DAY_COUNT];
- UNumberFormat *nfmt;
- UDateFormat *dfmt;
- UChar s [BUF_SIZE];
- const UChar pat [] = { 0x0079, 0x0079, 0x0079, 0x0079 };
- int32_t len = 4;
- UCalendar *left_cal, *right_cal;
- int32_t left_day, right_day;
- int32_t left_firstday, right_firstday, left_current, right_current;
- int32_t left_month, right_month;
-
- if(U_FAILURE(*status)) return;
-
- /* Alias */
- left_cal = c;
-
- /* ========== Generate the header containing the year (only) */
-
- /* Open a formatter with a month and year only pattern */
- dfmt = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL,NULL,0,pat, len, status);
-
- /* Format the date */
- udat_format(dfmt, ucal_getMillis(left_cal, status), s, BUF_SIZE, 0, status);
-
- /* ========== Get the month and day names */
- get_days(dfmt, days, useLongNames, fdow, status);
- get_months(dfmt, months, useLongNames, status);
-
- /* ========== Print the header, centered */
-
- /* Calculate widths for justification */
- width = 6; /* 6 spaces, 1 between each day name */
- for(i = 0; i < DAY_COUNT; ++i) {
- lens[i] = u_strlen(days[i]);
- width += lens[i];
- }
-
- /* width is the width for 1 calendar; we are displaying in 2 cols
- with MARGIN_WIDTH spaces between months */
-
- /* Print the header, centered among the day names */
- pad = 2 * width + MARGIN_WIDTH - u_strlen(s);
- indent(pad / 2, stdout);
- uprint(s, stdout, status);
- putc('\n', stdout);
- putc('\n', stdout);
-
- /* Generate a copy of the calendar to use */
- right_cal = ucal_open(0, -1, uloc_getDefault(), UCAL_TRADITIONAL, status);
- ucal_setMillis(right_cal, ucal_getMillis(left_cal, status), status);
-
- /* Open the formatter */
- nfmt = unum_open(UNUM_DECIMAL,NULL, 0,NULL,NULL, status);
-
- /* ========== Calculate and display the months, two at a time */
- for(i = 0; i < MONTH_COUNT - 1; i += 2) {
-
- /* Print the month names for the two current months */
- pad = width - u_strlen(months[i]);
- indent(pad / 2, stdout);
- uprint(months[i], stdout, status);
- indent(pad / 2 + MARGIN_WIDTH, stdout);
- pad = width - u_strlen(months[i + 1]);
- indent(pad / 2, stdout);
- uprint(months[i + 1], stdout, status);
- putc('\n', stdout);
-
- /* Print the day names, twice */
- print_days(days, stdout, status);
- indent(MARGIN_WIDTH, stdout);
- print_days(days, stdout, status);
- putc('\n', stdout);
-
- /* Setup the two calendars */
- ucal_set(left_cal, UCAL_MONTH, i);
- ucal_set(left_cal, UCAL_DATE, 1);
- ucal_set(right_cal, UCAL_MONTH, i + 1);
- ucal_set(right_cal, UCAL_DATE, 1);
-
- left_firstday = ucal_get(left_cal, UCAL_DAY_OF_WEEK, status);
- right_firstday = ucal_get(right_cal, UCAL_DAY_OF_WEEK, status);
-
- /* The day of the week for the first day of the month is based on
- 1-based days of the week. However, the days were reordered
- when placed in the days array. Account for this here by
- offsetting by the first day of the week for the locale, which
- is also 1-based. */
-
- /* We need to mod by DAY_COUNT since fdow can be > firstday. IE,
- if fdow = 2 = Monday (like in France) and the first day of the
- month is a 1 = Sunday, we want firstday to be 6, not -1 */
- left_firstday += (DAY_COUNT - fdow);
- left_firstday %= DAY_COUNT;
-
- right_firstday += (DAY_COUNT - fdow);
- right_firstday %= DAY_COUNT;
-
- left_current = left_firstday;
- right_current = right_firstday;
-
- left_day = ucal_get(left_cal, UCAL_DATE, status);
- right_day = ucal_get(right_cal, UCAL_DATE, status);
-
- left_month = ucal_get(left_cal, UCAL_MONTH, status);
- right_month = ucal_get(right_cal, UCAL_MONTH, status);
-
- /* Finally, print out the days */
- while(left_month == i || right_month == i + 1) {
-
- /* If the left month is finished printing, but the right month
- still has days to be printed, indent the width of the days
- strings and reset the left calendar's current day to 0 */
- if(left_month != i && right_month == i + 1) {
- indent(width + 1, stdout);
- left_current = 0;
- }
-
- while(left_month == i) {
-
- /* If the day is the first, indent the correct number of
- spaces for the first week */
- if(left_day == 1) {
- for(j = 0; j < left_current; ++j)
- indent(lens[j] + 1, stdout);
- }
-
- /* Format the current day string */
- unum_format(nfmt, left_day, s, BUF_SIZE, 0, status);
-
- /* Calculate the justification and indent */
- pad = lens[left_current] - u_strlen(s);
- indent(pad, stdout);
-
- /* Print the day number out, followed by a space */
- uprint(s, stdout, status);
- putc(' ', stdout);
-
- /* Update the current day */
- ++left_current;
- left_current %= DAY_COUNT;
-
- /* Go to the next day */
- ucal_add(left_cal, UCAL_DATE, 1, status);
- left_day = ucal_get(left_cal, UCAL_DATE, status);
-
- /* Determine the month */
- left_month = ucal_get(left_cal, UCAL_MONTH, status);
-
- /* If we're at day 0 (first day of the week), break and go to
- the next month */
- if(left_current == 0) {
- break;
- }
- }
-
- /* If the current day isn't 0, indent to make up for missing
- days at the end of the month */
- if(left_current != 0) {
- for(j = left_current; j < DAY_COUNT; ++j)
- indent(lens[j] + 1, stdout);
- }
-
- /* Indent between the two months */
- indent(MARGIN_WIDTH, stdout);
-
- while(right_month == i + 1) {
-
- /* If the day is the first, indent the correct number of
- spaces for the first week */
- if(right_day == 1) {
- for(j = 0; j < right_current; ++j)
- indent(lens[j] + 1, stdout);
- }
-
- /* Format the current day string */
- unum_format(nfmt, right_day, s, BUF_SIZE, 0, status);
-
- /* Calculate the justification and indent */
- pad = lens[right_current] - u_strlen(s);
- indent(pad, stdout);
-
- /* Print the day number out, followed by a space */
- uprint(s, stdout, status);
- putc(' ', stdout);
-
- /* Update the current day */
- ++right_current;
- right_current %= DAY_COUNT;
-
- /* Go to the next day */
- ucal_add(right_cal, UCAL_DATE, 1, status);
- right_day = ucal_get(right_cal, UCAL_DATE, status);
-
- /* Determine the month */
- right_month = ucal_get(right_cal, UCAL_MONTH, status);
-
- /* If we're at day 0 (first day of the week), break out */
- if(right_current == 0) {
- break;
- }
-
- }
-
- /* Output a newline */
- putc('\n', stdout);
- }
-
- /* Output a trailing newline */
- putc('\n', stdout);
- }
-
- /* Clean up */
- free_months(months);
- free_days(days);
- udat_close(dfmt);
- unum_close(nfmt);
- ucal_close(right_cal);
-}
-
-#endif
diff --git a/icu4c/source/samples/cal/cal.sln b/icu4c/source/samples/cal/cal.sln
deleted file mode 100644
index 19f41e9f0..000000000
--- a/icu4c/source/samples/cal/cal.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "cal.vcxproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64
- {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/cal/cal.vcxproj b/icu4c/source/samples/cal/cal.vcxproj
deleted file mode 100644
index 51f721b60..000000000
--- a/icu4c/source/samples/cal/cal.vcxproj
+++ /dev/null
@@ -1,158 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{F7659D77-09CF-4FE9-ACEE-927287AA9509}</ProjectGuid>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <!-- Options that are common to *all* project configurations -->
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <WarningLevel>Level3</WarningLevel>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/cal.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/cal.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/cal.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/cal.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/cal.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/cal.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/cal.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/cal.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/cal.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/cal.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <BrowseInformation>true</BrowseInformation>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/cal.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/cal.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/cal.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/cal.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <BrowseInformation>true</BrowseInformation>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/cal.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/cal.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="cal.c" />
- <ClCompile Include="uprint.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="uprint.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/cal/cal.vcxproj.filters b/icu4c/source/samples/cal/cal.vcxproj.filters
deleted file mode 100644
index 1d14d63b2..000000000
--- a/icu4c/source/samples/cal/cal.vcxproj.filters
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{3e036a59-b898-49e5-9d06-4878387b4a02}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{ace55cd2-56c0-4c6d-965b-8866c5396b04}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{823558d3-c303-4670-9e92-d8f5c02e39e2}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="cal.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="uprint.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="uprint.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/cal/readme.txt b/icu4c/source/samples/cal/readme.txt
deleted file mode 100644
index c9a73aa71..000000000
--- a/icu4c/source/samples/cal/readme.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
-icucal: a sample program which displays the calendar.
-
-This sample demonstrates
- Formatting a calendar
- Outputting text in the default codepage to the console
-
-
-Files:
- cal.c Main source file
- uprint.h codepage output convenience header
- uprint.h codepage output convenience implementation
- cal.sln Windows MSVC workspace. Double-click this to get started.
- cal.vcproj Windows MSVC project file
-
-To Build icucal on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\cal\cal.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the cal directory, e.g.
- cd c:\icu\source\samples\cal\debug
- 4. Run it
- cal
-
-To Build on Unixes
- 1. Build ICU. icucal is built automatically by default unless samples are turned off.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- To Run on Unixes
- cd <icu directory>/source/samples/cal
-
- gmake check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- cal
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/cal/uprint.c b/icu4c/source/samples/cal/uprint.c
deleted file mode 100644
index 59c5d3b83..000000000
--- a/icu4c/source/samples/cal/uprint.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-***********************************************************************
-**********************************************************************
-* Copyright (C) 1998-2001, International Business Machines Corporation
-* and others. All Rights Reserved.
-**********************************************************************
-*
-* File date.c
-*
-* Modification History:
-*
-* Date Name Description
-* 06/14/99 stephen Creation.
-*******************************************************************************
-*/
-
-#include "uprint.h"
-#include <stdbool.h>
-#include "unicode/ucnv.h"
-#include "unicode/ustring.h"
-
-#define BUF_SIZE 128
-
-/* Print a ustring to the specified FILE* in the default codepage */
-void
-uprint(const UChar *s,
- FILE *f,
- UErrorCode *status)
-{
- /* converter */
- UConverter *converter;
- char buf [BUF_SIZE];
- int32_t sourceLen;
- const UChar *mySource;
- const UChar *mySourceEnd;
- char *myTarget;
- int32_t arraySize;
-
- if(s == 0) return;
-
- /* set up the conversion parameters */
- sourceLen = u_strlen(s);
- mySource = s;
- mySourceEnd = mySource + sourceLen;
- myTarget = buf;
- arraySize = BUF_SIZE;
-
- /* open a default converter */
- converter = ucnv_open(0, status);
-
- /* if we failed, clean up and exit */
- if(U_FAILURE(*status)) goto finish;
-
- /* perform the conversion */
- do {
- /* reset the error code */
- *status = U_ZERO_ERROR;
-
- /* perform the conversion */
- ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize,
- &mySource, mySourceEnd, NULL,
- true, status);
-
- /* Write the converted data to the FILE* */
- fwrite(buf, sizeof(char), myTarget - buf, f);
-
- /* update the conversion parameters*/
- myTarget = buf;
- arraySize = BUF_SIZE;
- }
- while(*status == U_BUFFER_OVERFLOW_ERROR);
-
- finish:
-
- /* close the converter */
- ucnv_close(converter);
-}
diff --git a/icu4c/source/samples/cal/uprint.h b/icu4c/source/samples/cal/uprint.h
deleted file mode 100644
index 49db38b72..000000000
--- a/icu4c/source/samples/cal/uprint.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-***********************************************************************
-**********************************************************************
-* Copyright (C) 1998-2004, International Business Machines Corporation
-* and others. All Rights Reserved.
-**********************************************************************
-*
-* File uprint.h
-*
-* Modification History:
-*
-* Date Name Description
-* 06/14/99 stephen Creation.
-*******************************************************************************
-*/
-
-#ifndef UPRINT_H
-#define UPRINT_H 1
-
-#include <stdio.h>
-
-#include "unicode/utypes.h"
-
-/* Print a ustring to the specified FILE* in the default codepage */
-U_CFUNC void uprint(const UChar *s, FILE *f, UErrorCode *status);
-
-#endif /* ! UPRINT_H */
diff --git a/icu4c/source/samples/case/Makefile b/icu4c/source/samples/case/Makefile
deleted file mode 100644
index 171c922ec..000000000
--- a/icu4c/source/samples/case/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2003 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-#### definitions
-# Name of your target
-TARGET=case
-
-# All object files (C or C++)
-OBJECTS=case.o ucase.o
-
-#### rules
-# Load in standard makefile definitions
-include ../defs.mk
-
-LDFLAGS += $(LDFLAGS_USTDIO)
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/case/case.cpp b/icu4c/source/samples/case/case.cpp
deleted file mode 100644
index 578e18436..000000000
--- a/icu4c/source/samples/case/case.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2003-2004, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-*/
-
-#include <unicode/unistr.h>
-#include <unicode/ustdio.h>
-#include <unicode/brkiter.h>
-#include <stdlib.h>
-
-using namespace icu;
-
-U_CFUNC int c_main(UFILE *out);
-
-void printUnicodeString(UFILE *out, const UnicodeString &s) {
- UnicodeString other = s;
- u_fprintf(out, "\"%S\"", other.getTerminatedBuffer());
-}
-
-
-int main()
-{
- UFILE *out;
- UErrorCode status = U_ZERO_ERROR;
- out = u_finit(stdout, nullptr, nullptr);
- if(!out) {
- fprintf(stderr, "Could not initialize (finit()) over stdout! \n");
- return 1;
- }
- ucnv_setFromUCallBack(u_fgetConverter(out), UCNV_FROM_U_CALLBACK_ESCAPE,
- nullptr, nullptr, nullptr, &status);
- if(U_FAILURE(status)) {
- u_fprintf(out, "Warning- couldn't set the substitute callback - err %s\n", u_errorName(status));
- }
-
- /* End Demo boilerplate */
-
- u_fprintf(out,"ICU Case Mapping Sample Program\n\n");
- u_fprintf(out, "C++ Case Mapping\n\n");
-
- UnicodeString string("This is a test");
- /* lowercase = "istanbul" */
- char16_t lowercase[] = {0x69, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0};
- /* uppercase = "LATIN CAPITAL I WITH DOT ABOVE STANBUL" */
- char16_t uppercase[] = {0x0130, 0x53, 0x54, 0x41, 0x4e, 0x42, 0x55, 0x4C, 0};
-
- UnicodeString upper(uppercase);
- UnicodeString lower(lowercase);
-
- u_fprintf(out, "\nstring: ");
- printUnicodeString(out, string);
- string.toUpper(); /* string = "THIS IS A TEST" */
- u_fprintf(out, "\ntoUpper(): ");
- printUnicodeString(out, string);
- string.toLower(); /* string = "this is a test" */
- u_fprintf(out, "\ntoLower(): ");
- printUnicodeString(out, string);
-
- u_fprintf(out, "\n\nlowercase=%S, uppercase=%S\n", lowercase, uppercase);
-
-
- string = upper;
- string.toLower(Locale("tr", "TR")); /* Turkish lower case map string =
- lowercase */
- u_fprintf(out, "\nupper.toLower: ");
- printUnicodeString(out, string);
-
- string = lower;
- string.toUpper(Locale("tr", "TR")); /* Turkish upper case map string =
- uppercase */
- u_fprintf(out, "\nlower.toUpper: ");
- printUnicodeString(out, string);
-
-
- u_fprintf(out, "\nEnd C++ sample\n\n");
-
- // Call the C version
- int rc = c_main(out);
- u_fclose(out);
- return rc;
-}
-
diff --git a/icu4c/source/samples/case/case.sln b/icu4c/source/samples/case/case.sln
deleted file mode 100644
index 46622a279..000000000
--- a/icu4c/source/samples/case/case.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "case", "case.vcxproj", "{2316BE8C-189D-4C8B-B506-9D9EE25AC46D}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|Win32.ActiveCfg = Debug|Win32
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|Win32.Build.0 = Debug|Win32
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.ActiveCfg = Debug|x64
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.Build.0 = Debug|x64
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|Win32.ActiveCfg = Release|Win32
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|Win32.Build.0 = Release|Win32
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.ActiveCfg = Release|x64
- {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/case/case.vcxproj b/icu4c/source/samples/case/case.vcxproj
deleted file mode 100644
index 38be307d6..000000000
--- a/icu4c/source/samples/case/case.vcxproj
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{2316BE8C-189D-4C8B-B506-9D9EE25AC46D}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <!-- Options that are common to *all* project configurations -->
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <WarningLevel>Level3</WarningLevel>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/case.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/case.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/case.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Debug/case.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/case.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/case.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/case.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/case.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/case.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/case.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/case.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/case.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/case.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/case.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/case.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/case.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="case.cpp" />
- <ClCompile Include="ucase.c" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/case/case.vcxproj.filters b/icu4c/source/samples/case/case.vcxproj.filters
deleted file mode 100644
index 7dca1cef4..000000000
--- a/icu4c/source/samples/case/case.vcxproj.filters
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{43ee3899-8fc9-43ee-afb1-56fc646637b4}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{f8bfa07a-99cc-427e-900b-d224ca9d1a65}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{4a483140-b33a-4ddb-a2b5-e481b417d590}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="case.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="ucase.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/case/readme.txt b/icu4c/source/samples/case/readme.txt
deleted file mode 100644
index df3cb5f97..000000000
--- a/icu4c/source/samples/case/readme.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2003-2005, International Business Machines Corporation and others. All Rights Reserved.
-case: case mapping
-
-This sample demonstrates
- Using ICU to convert between different cases
-
-
-Files:
- case.cpp Main source file in C++
- ucase.c Main source file in C
- case.sln Windows MSVC workspace. Double-click this to get started.
- case.vcproj Windows MSVC project file
-
-To Build case on Windows
- 1. Install and build ICU
- 2. In MSVC, open the solution file icu\samples\case\case.sln
- (or, use the workspace All, in icu\samples\all\all.sln )
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the case directory, e.g.
- cd c:\icu\source\samples\case\debug
- 4. Run it
- case
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/case
- gmake ICU_PREFIX=<icu install directory)
-
- To Run on Unixes
- cd <icu directory>/source/samples/case
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- case
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/case/ucase.c b/icu4c/source/samples/case/ucase.c
deleted file mode 100644
index 3cabe22d6..000000000
--- a/icu4c/source/samples/case/ucase.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2003-2004, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-****
-*
-* Case folding examples, in C
-*
-*******************************************************************************
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "unicode/uchar.h"
-#include "unicode/ustring.h"
-#include "unicode/utypes.h"
-#include "unicode/ustdio.h"
-
-/* Note: don't use 'k' or 'K' because we might be on EBCDIC */
-
-int c_main(UFILE *out)
-{
- UChar32 ch;
- UErrorCode errorCode = U_ZERO_ERROR;
- static const UChar upper[] = {0x61, 0x42, 0x49, 0}; /* upper = "aBI" */
- static const UChar lower[] = {0x61, 0x42, 0x69, 0}; /* lower = "abi" */
- /* unfold = "aB LATIN SMALL LETTER DOTLESS I" */
- static const UChar unfold[] = {0x61, 0x42, 0x131, 0} ;
- UChar buffer[32];
- const UChar char_k = 0x006b; /* 'k' */
- const UChar char_K = 0x004b; /* 'K' */
-
- int length;
-
- printf("** C Case Mapping Sample\n");
-
- /* uchar.h APIs, single character case mapping */
- ch = u_toupper(char_k); /* ch = 'K' */
- u_fprintf(out, "toupper(%C) = %C\n", char_k, ch);
- ch = u_tolower(ch); /* ch = 'k' */
- u_fprintf(out, "tolower() = %C\n", ch);
- ch = u_totitle(char_k); /* ch = 'K' */
- u_fprintf(out, "totitle(%C) = %C\n", char_k, ch);
- ch = u_foldCase(char_K, U_FOLD_CASE_DEFAULT); /* ch = 'k' */
- u_fprintf(out, "u_foldCase(%C, U_FOLD_CASE_DEFAULT) = %C\n", char_K, (UChar) ch);
-
- /* ustring.h APIs, UChar * string case mapping with a Turkish locale */
- /* result buffer = "ab?" latin small letter a, latin small letter b, latin
- small letter dotless i */
- length = u_strToLower(buffer, sizeof(buffer)/sizeof(buffer[0]), upper,
- sizeof(upper)/sizeof(upper[0]), "tr", &errorCode);
- if(U_FAILURE(errorCode) || buffer[length]!=0) {
- u_fprintf(out, "error in u_strToLower(Turkish locale)=%ld error=%s\n", length,
- u_errorName(errorCode));
- }
-
- u_fprintf(out, "u_strToLower(%S, turkish) -> %S\n", upper, buffer);
-
-
- /* ustring.h APIs, UChar * string case mapping with a English locale */
- /* result buffer = "ABI" latin CAPITAL letter A, latin capital letter B,
- latin capital letter I */
- length = u_strToUpper(buffer, sizeof(buffer)/sizeof(buffer[0]), upper,
- sizeof(upper)/sizeof(upper[0]), "en", &errorCode);
- if(U_FAILURE(errorCode) || buffer[length]!=0) {
- u_fprintf(out, "error in u_strToLower(English locale)=%ld error=%s\n", length,
- u_errorName(errorCode));
- }
- u_fprintf(out, "u_strToUpper(%S, english) -> %S\n", lower, buffer);
-
-
- /* ustring.h APIs, UChar * string case folding */
- /* result buffer = "abi" */
- length = u_strFoldCase(buffer, sizeof(buffer)/sizeof(buffer[0]), unfold,
- sizeof(unfold)/sizeof(unfold[0]), U_FOLD_CASE_DEFAULT,
- &errorCode);
- if(U_FAILURE(errorCode) || buffer[length]!=0) {
- u_fprintf(out, "error in u_strFoldCase()=%ld error=%s\n", length,
- u_errorName(errorCode));
- }
- u_fprintf(out, "u_strFoldCase(%S, U_FOLD_CASE_DEFAULT) -> %S\n", unfold, buffer);
- u_fprintf(out, "\n** end of C sample\n");
-
- return 0;
-}
diff --git a/icu4c/source/samples/citer/Makefile b/icu4c/source/samples/citer/Makefile
deleted file mode 100644
index 14b87e080..000000000
--- a/icu4c/source/samples/citer/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2003-2005 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-# Name of your target
-TARGET=citer
-
-# All object files (C or C++)
-OBJECTS=citer.o
-
-# Load in standard makefile definitions
-include ../defs.mk
-
-LDFLAGS += $(LDFLAGS_USTDIO)
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/citer/citer.cpp b/icu4c/source/samples/citer/citer.cpp
deleted file mode 100644
index d9a095f3f..000000000
--- a/icu4c/source/samples/citer/citer.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2002-2011, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-*/
-
-#include "unicode/uchriter.h"
-#include "unicode/schriter.h"
-#include "unicode/ustring.h"
-#include <stdio.h>
-#include <unicode/brkiter.h>
-#include <unicode/ustdio.h>
-#include <stdlib.h>
-
-static UFILE *out;
-
-using icu::CharacterIterator;
-using icu::StringCharacterIterator;
-using icu::UCharCharacterIterator;
-using icu::UnicodeString;
-
-void printUnicodeString(const UnicodeString &s)
-{
- u_fprintf(out, "%S", &s);
-}
-
-void printUChar(UChar32 ch)
-{
- if(ch < 127) {
- u_fprintf(out, "%C", (char16_t) ch);
- } else if (ch == CharacterIterator::DONE) {
- u_fprintf(out, "[CharacterIterator::DONE = 0xFFFF]");
- } else {
- u_fprintf(out, "[%X]", ch);
- }
-}
-
-class Test
-{
-public:
- void TestUChariter();
- void TestStringiter();
-};
-
-void Test::TestUChariter() {
- const char testChars[] = "Now is the time for all good men to come "
- "to the aid of their country.";
-
- UnicodeString testString(testChars,"");
- const char16_t *testText = testString.getTerminatedBuffer();
-
- UCharCharacterIterator iter(testText, u_strlen(testText));
- UCharCharacterIterator* test2 = iter.clone();
-
- u_fprintf(out, "testText = %s", testChars);
-
- if (iter != *test2 ) {
- u_fprintf(out, "clone() or equals() failed: Two clones tested unequal\n");
- }
-
- UnicodeString result1, result2;
- // getting and comparing the text within the iterators
- iter.getText(result1);
- test2->getText(result2);
- if (result1 != result2) {
- u_fprintf(out, "iter.getText() != clone.getText()\n");
- }
-
- u_fprintf(out, "\n");
-
- // Demonstrates seeking forward using the iterator.
- u_fprintf(out, "Forward = ");
-
- char16_t c = iter.first();
- printUChar(c); // The first char
- int32_t i = 0;
-
- if (iter.startIndex() != 0 || iter.endIndex() != u_strlen(testText)) {
- u_fprintf(out, "startIndex() or endIndex() failed\n");
- }
-
-
- // Testing forward iteration...
- do {
- if (c == CharacterIterator::DONE && i != u_strlen(testText)) {
- u_fprintf(out, "Iterator reached end prematurely");
- }
- else if (c != testText[i]) {
- u_fprintf(out, "Character mismatch at position %d\n", i);
- }
- if (iter.current() != c) {
- u_fprintf(out, "current() isn't working right");
- }
- if (iter.getIndex() != i) {
- u_fprintf(out, "getIndex() isn't working right\n");
- }
- if (c != CharacterIterator::DONE) {
- c = iter.next();
- i++;
- }
-
- u_fprintf(out, "|");
- printUChar(c);
-
- } while (c != CharacterIterator::DONE);
-
- delete test2;
- u_fprintf(out, "\n");
-}
-
-
-void Test::TestStringiter() {
- const char testChars[] = "Now is the time for all good men to come "
- "to the aid of their country.";
-
- UnicodeString testString(testChars,"");
- const char16_t *testText = testString.getTerminatedBuffer();
-
- StringCharacterIterator iter(testText, u_strlen(testText));
- StringCharacterIterator* test2 = iter.clone();
-
- if (iter != *test2 ) {
- u_fprintf(out, "clone() or equals() failed: Two clones tested unequal\n");
- }
-
- UnicodeString result1, result2;
- // getting and comparing the text within the iterators
- iter.getText(result1);
- test2->getText(result2);
- if (result1 != result2) {
- u_fprintf(out, "getText() failed\n");
- }
-
- u_fprintf(out, "Backwards: ");
-
- char16_t c = iter.last();
- int32_t i = iter.endIndex();
-
- printUChar(c);
- i--; // already printed out the last char
-
- if (iter.startIndex() != 0 || iter.endIndex() != u_strlen(testText)) {
- u_fprintf(out, "startIndex() or endIndex() failed\n");
- }
-
- // Testing backward iteration over a range...
- do {
- if (c == CharacterIterator::DONE) {
- u_fprintf(out, "Iterator reached end prematurely\n");
- }
- else if (c != testText[i]) {
- u_fprintf(out, "Character mismatch at position %d\n", i);
- }
- if (iter.current() != c) {
- u_fprintf(out, "current() isn't working right\n");
- }
- if (iter.getIndex() != i) {
- u_fprintf(out, "getIndex() isn't working right [%d should be %d]\n", iter.getIndex(), i);
- }
- if (c != CharacterIterator::DONE) {
- c = iter.previous();
- i--;
- }
-
- u_fprintf(out, "|");
- printUChar(c);
- } while (c != CharacterIterator::DONE);
-
- u_fprintf(out, "\n");
- delete test2;
-}
-
-/* Creating and using text boundaries */
-int main()
-{
- UErrorCode status = U_ZERO_ERROR;
-
- out = u_finit(stdout, nullptr, nullptr);
-
- u_fprintf(out, "ICU Iteration Sample Program (C++)\n\n");
-
- Test t;
-
- u_fprintf(out, "\n");
- u_fprintf(out, "Test::TestUCharIter()\n");
-
- t.TestUChariter();
-
- u_fprintf(out, "-----\n");
- u_fprintf(out, "Test::TestStringchariter()\n");
-
- t.TestStringiter();
-
- u_fprintf(out, "-----\n");
-
- return 0;
-}
diff --git a/icu4c/source/samples/citer/citer.vcxproj b/icu4c/source/samples/citer/citer.vcxproj
deleted file mode 100644
index c92114424..000000000
--- a/icu4c/source/samples/citer/citer.vcxproj
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{247E2681-6C84-408B-B40C-5DB50BC5E18F}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <MinimalRebuild>true</MinimalRebuild>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug\citer.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <MinimalRebuild>true</MinimalRebuild>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug\citer.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release\citer.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release\citer.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="citer.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/citer/citer.vcxproj.filters b/icu4c/source/samples/citer/citer.vcxproj.filters
deleted file mode 100644
index ee4112d2e..000000000
--- a/icu4c/source/samples/citer/citer.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="citer.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/citer/readme.txt b/icu4c/source/samples/citer/readme.txt
deleted file mode 100644
index 59ef8b582..000000000
--- a/icu4c/source/samples/citer/readme.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2003-2010, International Business Machines Corporation and others. All Rights Reserved.
-citer: Character Iteration
-
-This sample demonstrates
- Demonstrating ICU's CharacterIterator
-
-
-Files:
- citer.cpp Main source file in C++
- citer.sln Windows MSVC workspace. Double-click this to get started.
- citer.vcproj Windows MSVC project file
-
-To Build citer on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\citer\citer.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the citer directory, e.g.
- cd c:\icu\source\samples\citer\debug
- (note that it may be in a different relative directory than most of the other samples).
- 4. Run it
- citer
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/citer
- gmake ICU_PREFIX=<icu install directory)
-
- To Run on Unixes
- cd <icu directory>/source/samples/citer
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- citer
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/coll/coll.cpp b/icu4c/source/samples/coll/coll.cpp
index c524c71ae..ed3ec0adc 100644
--- a/icu4c/source/samples/coll/coll.cpp
+++ b/icu4c/source/samples/coll/coll.cpp
@@ -46,7 +46,7 @@ const char gHelpString[] =
* on the command line by the user.
*/
char const *opt_locale = "en_US";
-char *opt_rules = 0;
+char *opt_rules = nullptr;
UBool opt_help = false;
UBool opt_norm = false;
UBool opt_french = false;
@@ -57,7 +57,7 @@ UBool opt_case = false;
int opt_level = 0;
char const *opt_source = "abc";
char const *opt_target = "abd";
-UCollator * collator = 0;
+UCollator *collator = nullptr;
/**
* Definitions for the command line options
@@ -82,7 +82,7 @@ OptSpec opts[] = {
{"-level", OptSpec::NUM, &opt_level},
{"-help", OptSpec::FLAG, &opt_help},
{"-?", OptSpec::FLAG, &opt_help},
- {0, OptSpec::FLAG, 0}
+ {nullptr, OptSpec::FLAG, nullptr}
};
/**
@@ -93,7 +93,7 @@ UBool processOptions(int argc, const char **argv, OptSpec opts[])
for (int argNum = 1; argNum < argc; argNum ++) {
const char *pArgName = argv[argNum];
OptSpec *pOpt;
- for (pOpt = opts; pOpt->name != 0; pOpt ++) {
+ for (pOpt = opts; pOpt->name != nullptr; pOpt++) {
if (strcmp(pOpt->name, pArgName) == 0) {
switch (pOpt->type) {
case OptSpec::FLAG:
@@ -128,7 +128,7 @@ UBool processOptions(int argc, const char **argv, OptSpec opts[])
break;
}
}
- if (pOpt->name == 0)
+ if (pOpt->name == nullptr)
{
fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
return false;
@@ -165,7 +165,7 @@ UBool processCollator()
UErrorCode status = U_ZERO_ERROR;
char16_t rules[100];
- if (opt_rules != 0) {
+ if (opt_rules != nullptr) {
u_unescape(opt_rules, rules, 100);
collator = ucol_openRules(rules, -1, UCOL_OFF, UCOL_TERTIARY,
nullptr, &status);
diff --git a/icu4c/source/samples/csdet/Makefile b/icu4c/source/samples/csdet/Makefile
deleted file mode 100644
index 3b70a3a86..000000000
--- a/icu4c/source/samples/csdet/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2007 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-#### definitions
-# Name of your target
-TARGET=csdet
-
-# All object files (C or C++)
-OBJECTS=csdet.o
-
-#### rules
-# Load in standard makefile definitions
-include ../defs.mk
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/csdet/csdet.c b/icu4c/source/samples/csdet/csdet.c
deleted file mode 100644
index 5b20dbfe3..000000000
--- a/icu4c/source/samples/csdet/csdet.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-********************************************************************************
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-********************************************************************************
-********************************************************************************
- * Copyright (C) 2005-2006, International Business Machines
- * Corporation and others. All Rights Reserved.
- *******************************************************************************
- */
-
-#include "unicode/utypes.h"
-#include "unicode/ucsdet.h"
-
-#include <string.h>
-#include <stdio.h>
-
-#define BUFFER_SIZE 8192
-
-int main(int argc, char *argv[])
-{
- static char buffer[BUFFER_SIZE];
- int32_t arg;
-
- if( argc <= 1 ) {
- printf("Usage: %s [filename]...\n", argv[0]);
- return -1;
- }
-
- for(arg = 1; arg < argc; arg += 1) {
- FILE *file;
- char *filename = argv[arg];
- int32_t inputLength, match, matchCount = 0;
- UCharsetDetector* csd;
- const UCharsetMatch **csm;
- UErrorCode status = U_ZERO_ERROR;
-
- if (arg > 1) {
- printf("\n");
- }
-
- file = fopen(filename, "rb");
-
- if (file == NULL) {
- printf("Cannot open file \"%s\"\n\n", filename);
- continue;
- }
-
- printf("%s:\n", filename);
-
- inputLength = (int32_t) fread(buffer, 1, BUFFER_SIZE, file);
-
- fclose(file);
-
- csd = ucsdet_open(&status);
- ucsdet_setText(csd, buffer, inputLength, &status);
-
- csm = ucsdet_detectAll(csd, &matchCount, &status);
-
- for(match = 0; match < matchCount; match += 1) {
- const char *name = ucsdet_getName(csm[match], &status);
- const char *lang = ucsdet_getLanguage(csm[match], &status);
- int32_t confidence = ucsdet_getConfidence(csm[match], &status);
-
- if (lang == NULL || strlen(lang) == 0) {
- lang = "**";
- }
-
- printf("%s (%s) %d\n", name, lang, confidence);
- }
-
- ucsdet_close(csd);
- }
-
- return 0;
-}
-
diff --git a/icu4c/source/samples/csdet/csdet.vcxproj b/icu4c/source/samples/csdet/csdet.vcxproj
deleted file mode 100644
index 234a7b84e..000000000
--- a/icu4c/source/samples/csdet/csdet.vcxproj
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{683745AD-3BC2-4B89-898B-93490D7F2757}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)csdet.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)csdet.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)csdet.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)csdet.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="csdet.c" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/csdet/csdet.vcxproj.filters b/icu4c/source/samples/csdet/csdet.vcxproj.filters
deleted file mode 100644
index 5db334a0b..000000000
--- a/icu4c/source/samples/csdet/csdet.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="csdet.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/csdet/readme.txt b/icu4c/source/samples/csdet/readme.txt
deleted file mode 100644
index 550dfe904..000000000
--- a/icu4c/source/samples/csdet/readme.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2001-2010 International Business Machines
-Corporation and others. All Rights Reserved.
-uresb: Resource Bundle
-
-This sample demonstrates
- Using ICU's CharSet Detection API
-
-
-Files:
- csdet.c Main source file
- *.txt Various sample .txt files
-
-To Build uresb on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\uresb\uresb.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the uresb directory, e.g.
- cd c:\icu\source\samples\uresb\debug
- 4. Run it (with a locale name, ex. english)
- csdet eucJP.txt
- WARNING: The .txt files must be in the same directory as the executable, which is not the case by default on some systems.
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/uresb
- gmake ICU_PREFIX=<icu install directory) ICU_PATH=<icu source directory>
-
- To Run on Unixes
- cd <icu directory>/source/samples/uresb
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- csdet eucJP.txt
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/date/Makefile.in b/icu4c/source/samples/date/Makefile.in
deleted file mode 100644
index cbc020e76..000000000
--- a/icu4c/source/samples/date/Makefile.in
+++ /dev/null
@@ -1,78 +0,0 @@
-## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html
-##
-## Makefile.in for ICU - samples/date
-## Copyright (c) 1999-2012, International Business Machines Corporation and
-## others. All Rights Reserved.
-
-## Source directory information
-
-srcdir=@srcdir@
-top_srcdir=@top_srcdir@
-
-top_builddir = ../..
-
-include $(top_builddir)/icudefs.mk
-
-## Build directory information
-subdir = samples/date
-
-## Extra files to remove for 'make clean'
-CLEANFILES = *~ $(DEPS)
-
-## Target information
-TARGET = icudate$(EXEEXT)
-
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n
-LIBS = $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
-
-OBJECTS = uprint.o date.o
-
-DEPS = $(OBJECTS:.o=.d)
-
-## List of phony targets
-.PHONY : all all-local install install-local clean clean-local \
-distclean distclean-local dist dist-local check check-local
-
-## Clear suffix list
-.SUFFIXES :
-
-## List of standard targets
-all: all-local
-install: install-local
-clean: clean-local
-distclean : distclean-local
-dist: dist-local
-check: all check-local
-
-all-local: $(TARGET)
-
-install-local: all-local
-
-dist-local:
-
-clean-local:
- test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
- $(RMV) $(OBJECTS) $(TARGET)
-
-distclean-local: clean-local
- $(RMV) Makefile
-
-check-local:
- -$(INVOKE) ./$(TARGET) $(ICUDATE_OPTS)
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-$(TARGET) : $(OBJECTS)
- $(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
- $(POST_BUILD_STEP)
-
-ifeq (,$(MAKECMDGOALS))
--include $(DEPS)
-else
-ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
--include $(DEPS)
-endif
-endif
diff --git a/icu4c/source/samples/date/date.c b/icu4c/source/samples/date/date.c
deleted file mode 100644
index a8abb369b..000000000
--- a/icu4c/source/samples/date/date.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
-*************************************************************************
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*************************************************************************
-***********************************************************************
-* Copyright (C) 1998-2012, International Business Machines
-* Corporation and others. All Rights Reserved.
-**********************************************************************
-*
-* File date.c
-*
-* Modification History:
-*
-* Date Name Description
-* 06/11/99 stephen Creation.
-* 06/16/99 stephen Modified to use uprint.
-* 08/11/11 srl added Parse and milli/second in/out
-*******************************************************************************
-*/
-
-#include <stdbool.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "unicode/utypes.h"
-#include "unicode/ustring.h"
-#include "unicode/uclean.h"
-
-#include "unicode/ucnv.h"
-#include "unicode/udat.h"
-#include "unicode/ucal.h"
-
-#include "uprint.h"
-
-int main(int argc, char **argv);
-
-#if UCONFIG_NO_FORMATTING || UCONFIG_NO_CONVERSION
-
-int main(int argc, char **argv)
-{
- printf("%s: Sorry, UCONFIG_NO_FORMATTING or UCONFIG_NO_CONVERSION was turned on (see uconfig.h). No formatting can be done. \n", argv[0]);
- return 0;
-}
-#else
-
-
-/* Protos */
-static void usage(void);
-static void version(void);
-static void date(UDate when, const UChar *tz, UDateFormatStyle style, const char *format, const char *locale, UErrorCode *status);
-static UDate getWhen(const char *millis, const char *seconds, const char *format, const char *locale, UDateFormatStyle style, const char *parse, const UChar *tz, UErrorCode *status);
-
-UConverter *cnv = NULL;
-
-/* The version of date */
-#define DATE_VERSION "1.0"
-
-/* "GMT" */
-static const UChar GMT_ID [] = { 0x0047, 0x004d, 0x0054, 0x0000 };
-
-#define FORMAT_MILLIS "%"
-#define FORMAT_SECONDS "%%"
-
-int
-main(int argc,
- char **argv)
-{
- int printUsage = 0;
- int printVersion = 0;
- int optInd = 1;
- char *arg;
- const UChar *tz = 0;
- UDateFormatStyle style = UDAT_DEFAULT;
- UErrorCode status = U_ZERO_ERROR;
- const char *format = NULL;
- const char *locale = NULL;
- char *parse = NULL;
- char *seconds = NULL;
- char *millis = NULL;
- UDate when;
-
- /* parse the options */
- for(optInd = 1; optInd < argc; ++optInd) {
- arg = argv[optInd];
-
- /* version info */
- if(strcmp(arg, "-v") == 0 || strcmp(arg, "--version") == 0) {
- printVersion = 1;
- }
- /* usage info */
- else if(strcmp(arg, "-h") == 0 || strcmp(arg, "--help") == 0) {
- printUsage = 1;
- }
- /* display date in gmt */
- else if(strcmp(arg, "-u") == 0 || strcmp(arg, "--gmt") == 0) {
- tz = GMT_ID;
- }
- /* display date in gmt */
- else if(strcmp(arg, "-f") == 0 || strcmp(arg, "--full") == 0) {
- style = UDAT_FULL;
- }
- /* display date in long format */
- else if(strcmp(arg, "-l") == 0 || strcmp(arg, "--long") == 0) {
- style = UDAT_LONG;
- }
- /* display date in medium format */
- else if(strcmp(arg, "-m") == 0 || strcmp(arg, "--medium") == 0) {
- style = UDAT_MEDIUM;
- }
- /* display date in short format */
- else if(strcmp(arg, "-s") == 0 || strcmp(arg, "--short") == 0) {
- style = UDAT_SHORT;
- }
- else if(strcmp(arg, "-F") == 0 || strcmp(arg, "--format") == 0) {
- if ( optInd + 1 < argc ) {
- optInd++;
- format = argv[optInd];
- }
- } else if(strcmp(arg, "-r") == 0) {
- if ( optInd + 1 < argc ) {
- optInd++;
- seconds = argv[optInd];
- }
- } else if(strcmp(arg, "-R") == 0) {
- if ( optInd + 1 < argc ) {
- optInd++;
- millis = argv[optInd];
- }
- } else if(strcmp(arg, "-P") == 0) {
- if ( optInd + 1 < argc ) {
- optInd++;
- parse = argv[optInd];
- }
- }
- else if (strcmp(arg, "-L") == 0) {
- if (optInd + 1 < argc) {
- optInd++;
- locale = argv[optInd];
- }
- }
- /* POSIX.1 says all arguments after -- are not options */
- else if(strcmp(arg, "--") == 0) {
- /* skip the -- */
- ++optInd;
- break;
- }
- /* unrecognized option */
- else if(strncmp(arg, "-", strlen("-")) == 0) {
- printf("icudate: invalid option -- %s\n", arg+1);
- printUsage = 1;
- }
- /* done with options, display date */
- else {
- break;
- }
- }
-
- /* print usage info */
- if(printUsage) {
- usage();
- return 0;
- }
-
- /* print version info */
- if(printVersion) {
- version();
- return 0;
- }
-
- /* get the 'when' (or now) */
- when = getWhen(millis, seconds, format, locale, style, parse, tz, &status);
- if(parse != NULL) {
- format = FORMAT_MILLIS; /* output in millis */
- }
-
- /* print the date */
- date(when, tz, style, format, locale, &status);
-
- ucnv_close(cnv);
-
- u_cleanup();
- return (U_FAILURE(status) ? 1 : 0);
-}
-
-/* Usage information */
-static void
-usage()
-{
- puts("Usage: icudate [OPTIONS]");
- puts("Options:");
- puts(" -h, --help Print this message and exit.");
- puts(" -v, --version Print the version number of date and exit.");
- puts(" -u, --gmt Display the date in Greenwich Mean Time.");
- puts(" -f, --full Use full display format.");
- puts(" -l, --long Use long display format.");
- puts(" -m, --medium Use medium display format.");
- puts(" -s, --short Use short display format.");
- puts(" -F <format>, --format <format> Use <format> as the display format.");
- puts(" (Special formats: \"%\" alone is Millis since 1970, \"%%\" alone is Seconds since 1970)");
- puts(" -r <seconds> Use <seconds> as the time (Epoch 1970) rather than now.");
- puts(" -R <millis> Use <millis> as the time (Epoch 1970) rather than now.");
- puts(" -P <string> Parse <string> as the time, output in millis format.");
- puts(" -L <string> Use the locale <string> instead of the default ICU locale.");
-}
-
-/* Version information */
-static void
-version()
-{
- UErrorCode status = U_ZERO_ERROR;
- const char *tzVer;
- int len = 256;
- UChar tzName[256];
- printf("icudate version %s, created by Stephen F. Booth.\n",
- DATE_VERSION);
- puts(U_COPYRIGHT_STRING);
- tzVer = ucal_getTZDataVersion(&status);
- if(U_FAILURE(status)) {
- tzVer = u_errorName(status);
- }
- printf("\n");
- printf("ICU Version: %s\n", U_ICU_VERSION);
- printf("ICU Data (major+min): %s\n", U_ICUDATA_NAME);
- printf("Default Locale: %s\n", uloc_getDefault());
- printf("Time Zone Data Version: %s\n", tzVer);
- printf("Default Time Zone: ");
- status = U_ZERO_ERROR;
- u_init(&status);
- len = ucal_getDefaultTimeZone(tzName, len, &status);
- if(U_FAILURE(status)) {
- fprintf(stderr, " ** Error getting default zone: %s\n", u_errorName(status));
- }
- uprint(tzName, stdout, &status);
- printf("\n\n");
-}
-
-static int32_t charsToUCharsDefault(UChar *uchars, int32_t ucharsSize, const char*chars, int32_t charsSize, UErrorCode *status) {
- int32_t len=-1;
- if(U_FAILURE(*status)) return len;
- if(cnv==NULL) {
- cnv = ucnv_open(NULL, status);
- }
- if(cnv&&U_SUCCESS(*status)) {
- len = ucnv_toUChars(cnv, uchars, ucharsSize, chars,charsSize, status);
- }
- return len;
-}
-
-/* Format the date */
-static void
-date(UDate when,
- const UChar *tz,
- UDateFormatStyle style,
- const char *format,
- const char *locale,
- UErrorCode *status )
-{
- UChar *s = 0;
- int32_t len = 0;
- UDateFormat *fmt;
- UChar uFormat[100];
-
- if(U_FAILURE(*status)) return;
-
- if( format != NULL ) {
- if(!strcmp(format,FORMAT_MILLIS)) {
- printf("%.0f\n", when);
- return;
- } else if(!strcmp(format, FORMAT_SECONDS)) {
- printf("%.3f\n", when/1000.0);
- return;
- }
- }
-
- fmt = udat_open(style, style, locale, tz, -1,NULL,0, status);
- if ( format != NULL ) {
- charsToUCharsDefault(uFormat,sizeof(uFormat)/sizeof(uFormat[0]),format,-1,status);
- udat_applyPattern(fmt,false,uFormat,-1);
- }
- len = udat_format(fmt, when, 0, len, 0, status);
- if(*status == U_BUFFER_OVERFLOW_ERROR) {
- *status = U_ZERO_ERROR;
- s = (UChar*) malloc(sizeof(UChar) * (len+1));
- if(s == 0) goto finish;
- udat_format(fmt, when, s, len + 1, 0, status);
- }
- if(U_FAILURE(*status)) goto finish;
-
- /* print the date string */
- uprint(s, stdout, status);
-
- /* print a trailing newline */
- printf("\n");
-
- finish:
- if(U_FAILURE(*status)) {
- fprintf(stderr, "Error in Print: %s\n", u_errorName(*status));
- }
- udat_close(fmt);
- free(s);
-}
-
-static UDate getWhen(const char *millis, const char *seconds, const char *format, const char *locale,
- UDateFormatStyle style, const char *parse, const UChar *tz, UErrorCode *status) {
- UDateFormat *fmt = NULL;
- UChar uFormat[100];
- UChar uParse[256];
- UDate when=0;
- int32_t parsepos = 0;
-
- if(millis != NULL) {
- sscanf(millis, "%lf", &when);
- return when;
- } else if(seconds != NULL) {
- sscanf(seconds, "%lf", &when);
- return when*1000.0;
- }
-
- if(parse!=NULL) {
- if( format != NULL ) {
- if(!strcmp(format,FORMAT_MILLIS)) {
- sscanf(parse, "%lf", &when);
- return when;
- } else if(!strcmp(format, FORMAT_SECONDS)) {
- sscanf(parse, "%lf", &when);
- return when*1000.0;
- }
- }
-
- fmt = udat_open(style, style, locale, tz, -1,NULL,0, status);
- if ( format != NULL ) {
- charsToUCharsDefault(uFormat,sizeof(uFormat)/sizeof(uFormat[0]), format,-1,status);
- udat_applyPattern(fmt,false,uFormat,-1);
- }
-
- charsToUCharsDefault(uParse,sizeof(uParse)/sizeof(uParse[0]), parse,-1,status);
- when = udat_parse(fmt, uParse, -1, &parsepos, status);
- if(U_FAILURE(*status)) {
- fprintf(stderr, "Error in Parse: %s\n", u_errorName(*status));
- if(parsepos > 0 && parsepos <= (int32_t)strlen(parse)) {
- fprintf(stderr, "ERR>\"%s\" @%d\n"
- "ERR> %*s^\n",
- parse,parsepos,parsepos,"");
-
- }
- }
-
- udat_close(fmt);
- return when;
- } else {
- return ucal_getNow();
- }
-}
-
-#endif
diff --git a/icu4c/source/samples/date/date.sln b/icu4c/source/samples/date/date.sln
deleted file mode 100644
index 0ec4cd584..000000000
--- a/icu4c/source/samples/date/date.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "date", "date.vcxproj", "{38B5751A-C6F9-4409-950C-F4F9DA17275F}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.ActiveCfg = Debug|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.Build.0 = Debug|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.ActiveCfg = Release|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64
- {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/date/date.vcxproj b/icu4c/source/samples/date/date.vcxproj
deleted file mode 100644
index 3d20f9576..000000000
--- a/icu4c/source/samples/date/date.vcxproj
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{38B5751A-C6F9-4409-950C-F4F9DA17275F}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/date.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <CompileAs>Default</CompileAs>
- <PrecompiledHeaderFile />
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/date.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/date.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/date.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- <PrecompiledHeaderFile />
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/date.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/date.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/date.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- <PrecompiledHeaderFile />
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/date.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/date.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/date.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- <PrecompiledHeaderFile />
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/date.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/date.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="date.c" />
- <ClCompile Include="uprint.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="uprint.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/date/date.vcxproj.filters b/icu4c/source/samples/date/date.vcxproj.filters
deleted file mode 100644
index 4c6f43d86..000000000
--- a/icu4c/source/samples/date/date.vcxproj.filters
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{5d1a92f4-cd62-4008-981f-9b9ce42ff51d}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{384d6dc3-d172-42ad-b155-2995c3a6821a}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{b7a5bc57-56cb-42af-9127-0a3369186ee8}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="date.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="uprint.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="uprint.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/date/readme.txt b/icu4c/source/samples/date/readme.txt
deleted file mode 100644
index 72c46615e..000000000
--- a/icu4c/source/samples/date/readme.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
-icudate: a sample program which displays the current date
-
-This sample demonstrates
- Formatting a date
- Outputting text in the default codepage to the console
-
-
-Files:
- date.c Main source file
- uprint.h codepage output convenience header
- uprint.h codepage output convenience implementation
- date.sln Windows MSVC workspace. Double-click this to get started.
- date.vcproj Windows MSVC project file
-
-To Build icudate on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\date\date.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the icudate directory, e.g.
- cd c:\icu\source\samples\date\debug
- 4. Run it (Warning: Be careful, 'date' is also a system command on many systems)
- .\date
-
-To Build on Unixes
- 1. Build ICU. icudate is built automatically by default unless samples are turned off.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- To Run on Unixes
- cd <icu directory>/source/samples/date
-
- gmake check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- date
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/date/uprint.c b/icu4c/source/samples/date/uprint.c
deleted file mode 100644
index f9015805c..000000000
--- a/icu4c/source/samples/date/uprint.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-***********************************************************************
-**********************************************************************
-* Copyright (C) 1998-2001, International Business Machines Corporation
-* and others. All Rights Reserved.
-**********************************************************************
-*
-* File date.c
-*
-* Modification History:
-*
-* Date Name Description
-* 06/14/99 stephen Creation.
-*******************************************************************************
-*/
-
-#include "uprint.h"
-
-#include <stdbool.h>
-#include "unicode/ucnv.h"
-#include "unicode/ustring.h"
-
-#define BUF_SIZE 128
-
-/* Print a ustring to the specified FILE* in the default codepage */
-void
-uprint(const UChar *s,
- FILE *f,
- UErrorCode *status)
-{
- /* converter */
- UConverter *converter;
- char buf [BUF_SIZE];
- int32_t sourceLen;
- const UChar *mySource;
- const UChar *mySourceEnd;
- char *myTarget;
- int32_t arraySize;
-
- if(s == 0) return;
-
- /* set up the conversion parameters */
- sourceLen = u_strlen(s);
- mySource = s;
- mySourceEnd = mySource + sourceLen;
- myTarget = buf;
- arraySize = BUF_SIZE;
-
- /* open a default converter */
- converter = ucnv_open(0, status);
-
- /* if we failed, clean up and exit */
- if(U_FAILURE(*status)) goto finish;
-
- /* perform the conversion */
- do {
- /* reset the error code */
- *status = U_ZERO_ERROR;
-
- /* perform the conversion */
- ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize,
- &mySource, mySourceEnd, NULL,
- true, status);
-
- /* Write the converted data to the FILE* */
- fwrite(buf, sizeof(char), myTarget - buf, f);
-
- /* update the conversion parameters*/
- myTarget = buf;
- arraySize = BUF_SIZE;
- }
- while(*status == U_BUFFER_OVERFLOW_ERROR);
-
- finish:
-
- /* close the converter */
- ucnv_close(converter);
-}
diff --git a/icu4c/source/samples/date/uprint.h b/icu4c/source/samples/date/uprint.h
deleted file mode 100644
index 2f60ecbc0..000000000
--- a/icu4c/source/samples/date/uprint.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-********************************************************************************
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-********************************************************************************
-**********************************************************************
-* Copyright (C) 1998-2004, International Business Machines Corporation
-* and others. All Rights Reserved.
-**********************************************************************
-*
-* File uprint.h
-*
-* Modification History:
-*
-* Date Name Description
-* 06/14/99 stephen Creation.
-*******************************************************************************
-*/
-
-#ifndef UPRINT_H
-#define UPRINT_H 1
-
-#include <stdio.h>
-
-#include "unicode/utypes.h"
-
-/* Print a ustring to the specified FILE* in the default codepage */
-U_CFUNC void uprint(const UChar *s, FILE *f, UErrorCode *status);
-
-#endif /* ! UPRINT_H */
diff --git a/icu4c/source/samples/datecal/Makefile b/icu4c/source/samples/datecal/Makefile
deleted file mode 100644
index 013992b66..000000000
--- a/icu4c/source/samples/datecal/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2006 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-#### definitions
-# Name of your target
-TARGET=datecal
-
-# All object files (C or C++)
-OBJECTS=cal.o ccal.o
-
-#### rules
-# Load in standard makefile definitions
-include ../defs.mk
-
-LDFLAGS += $(LDFLAGS_USTDIO)
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/datecal/cal.cpp b/icu4c/source/samples/datecal/cal.cpp
deleted file mode 100644
index 3af2fe1a3..000000000
--- a/icu4c/source/samples/datecal/cal.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2002-2012, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-*/
-
-#include "unicode/calendar.h"
-#include "unicode/gregocal.h"
-#include <stdio.h>
-
-using namespace icu;
-
-extern "C" void c_main();
-
-void cpp_main()
-{
- UErrorCode status = U_ZERO_ERROR;
- puts("C++ sample");
- GregorianCalendar* gc = new GregorianCalendar(status);
- if (U_FAILURE(status)) {
- puts("Couldn't create GregorianCalendar");
- return;
- }
- /* set up the date */
- gc->set(2000, UCAL_FEBRUARY, 26);
- gc->set(UCAL_HOUR_OF_DAY, 23);
- gc->set(UCAL_MINUTE, 0);
- gc->set(UCAL_SECOND, 0);
- gc->set(UCAL_MILLISECOND, 0);
- /* Iterate through the days and print it out. */
- for (int32_t i = 0; i < 30; i++) {
- /* print out the date. */
- /* You should use the DateFormat to properly format it */
- printf("year: %d, month: %d (%d in the implementation), day: %d\n",
- gc->get(UCAL_YEAR, status),
- gc->get(UCAL_MONTH, status) + 1,
- gc->get(UCAL_MONTH, status),
- gc->get(UCAL_DATE, status));
- if (U_FAILURE(status))
- {
- puts("Calendar::get failed");
- return;
- }
- /* Add a day to the date */
- gc->add(UCAL_DATE, 1, status);
- if (U_FAILURE(status)) {
- puts("Calendar::add failed");
- return;
- }
- }
- delete gc;
-}
-
-
-/* Creating and using text boundaries */
-int main()
-{
- puts("Date-Calendar sample program");
-
- cpp_main();
-
- c_main();
-
- return 0;
-}
-
diff --git a/icu4c/source/samples/datecal/ccal.c b/icu4c/source/samples/datecal/ccal.c
deleted file mode 100644
index b9ce3dece..000000000
--- a/icu4c/source/samples/datecal/ccal.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2002-2003, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-*/
-
-#include "unicode/ucal.h"
-#include <stdio.h>
-
-void c_main()
-{
- puts("----");
- puts("C Sample");
-
-UErrorCode status = U_ZERO_ERROR;
-int32_t i;
-UCalendar *cal = ucal_open(NULL, -1, NULL, UCAL_GREGORIAN, &status);
-if (U_FAILURE(status)) {
- puts("Couldn't create GregorianCalendar");
- return;
- }
- /* set up the date */
- ucal_set(cal, UCAL_YEAR, 2000);
- ucal_set(cal, UCAL_MONTH, UCAL_FEBRUARY); /* FEBRUARY */
- ucal_set(cal, UCAL_DATE, 26);
- ucal_set(cal, UCAL_HOUR_OF_DAY, 23);
- ucal_set(cal, UCAL_MINUTE, 0);
- ucal_set(cal, UCAL_SECOND, 0);
- ucal_set(cal, UCAL_MILLISECOND, 0);
- /* Iterate through the days and print it out. */
- for (i = 0; i < 30; i++) {
- /* print out the date. */
- /* You should use the udat_* API to properly format it */
- printf("year: %d, month: %d (%d in the implementation), day: %d\n",
- ucal_get(cal, UCAL_YEAR, &status),
- ucal_get(cal, UCAL_MONTH, &status) + 1,
- ucal_get(cal, UCAL_MONTH, &status),
- ucal_get(cal, UCAL_DATE, &status));
- if (U_FAILURE(status)) {
- puts("Calendar::get failed");
- return;
- }
- /* Add a day to the date */
- ucal_add(cal, UCAL_DATE, 1, &status);
- if (U_FAILURE(status))
- {
- puts("Calendar::add failed");
- return;
- }
- }
- ucal_close(cal);
-}
diff --git a/icu4c/source/samples/datefmt/Makefile b/icu4c/source/samples/datefmt/Makefile
deleted file mode 100644
index c9032a782..000000000
--- a/icu4c/source/samples/datefmt/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2002 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-# Name of your target
-TARGET=datefmt
-
-# All object files (C or C++)
-OBJECTS=main.o util.o
-
-# Load in standard makefile definitions
-include ../defs.mk
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/datefmt/README.TXT b/icu4c/source/samples/datefmt/README.TXT
deleted file mode 100644
index 2ec4782f7..000000000
--- a/icu4c/source/samples/datefmt/README.TXT
+++ /dev/null
@@ -1,107 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
-
-IMPORTANT:
-
-This sample was originally intended as an exercise for the ICU Workshop (September 2000).
-The code currently provided in the solution file is the answer to the exercises, each step can still be found in the 'answers' subdirectory.
-
-
-
-** Workshop homepage is:
- http://www.icu-project.org/docs/workshop_2000/agenda.html
-
- #Date/Time/Number Formatting Support
- 9:30am - 10:30am
- Alan Liu
-
- Topics:
- 1. What is the date/time support in ICU?
- 2. What is the timezone support in ICU?
- 3. What kind of formatting and parsing support is available in ICU, i.e.
- NumberFormat, DateFormat, MessageFormat?
-
-
-INSTRUCTIONS
-------------
-
-This exercise was first developed and tested on ICU release 1.6.0, Win32,
-Microsoft Visual C++ 6.0. It should work on other ICU releases and
-other platforms as well.
-
- MSVC:
- Open the file "datefmt.sln" in Microsoft Visual C++.
-
- Unix:
- - Build and install ICU with a prefix, for example '--prefix=/home/srl/ICU'
- - Set the variable ICU_PREFIX=/home/srl/ICU and use GNU make in
- this directory.
- - You may use 'make check' to invoke this sample.
-
-PROBLEMS
---------
-
-Problem 0:
-
- Set up the program, build it, and run it. To start with, the
- program prints out a list of languages.
-
-Problem 1: Basic Date Formatting (Easy)
-
- Create a calendar, and use it to get the UDate for June 4, 1999,
- 0:00 GMT (or any date of your choosing). You will have to create a
- TimeZone (use the createZone() function already defined in main.cpp)
- and a Calendar object, and make the calendar use the time zone.
-
- Once you have the UDate, create a DateFormat object in each of the
- languages in the LANGUAGE array, and display the date in that
- language. Use the DateFormat::createDateInstance() method to create
- the date formatter.
-
-Problem 2: Date Formatting, Specific Time Zone (Medium)
-
- To really localize a time display, one can also specify the time
- zone in which the time should be displayed. For each language,
- also create different time zones from the TIMEZONE list.
-
- To format a date with a specific calendar and zone, you must deal with
- three objects: a DateFormat, a Calendar, and a TimeZone. Each object
- must be linked to another in correct sequence: The Calendar must use
- the TimeZone, and the DateFormat must use the Calendar.
-
- DateFormat =uses=> Calendar =uses=> TimeZone
-
- Use either setFoo() or adoptFoo() methods, depending on where you
- want to have ownership.
-
- NOTE: It's not always desirable to change the time to a local time
- zone before display. For instance, if some even occurs at 0:00 GMT
- on the first of the month, it's probably clearer to just state that.
- Stating that it occurs at 5:00 PM PDT on the day before in the
- summer, and 4:00 PM PST on the day before in the winter will just
- confuse the issue.
-
-
-NOTES
------
-
-To see a list of system TimeZone IDs, use the TimeZone::create-
-AvailableIDs() methods. Alternatively, look at the file
-icu/docs/tz.htm. This has a hyperlinked list of current system zones.
-
-
-ANSWERS
--------
-
-The exercise includes answers. These are in the "answers" directory,
-and are numbered 1, 2, etc.
-
-If you get stuck and you want to move to the next step, copy the
-answers file into the main directory in order to proceed. E.g.,
-"main_1.cpp" contains the original "main.cpp" file. "main_2.cpp"
-contains the "main.cpp" file after problem 1. Etc.
-
-
-Have fun!
diff --git a/icu4c/source/samples/datefmt/answers/main_0.cpp b/icu4c/source/samples/datefmt/answers/main_0.cpp
deleted file mode 100644
index 9bea9b279..000000000
--- a/icu4c/source/samples/datefmt/answers/main_0.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/calendar.h"
-#include "unicode/datefmt.h"
-#include "unicode/uclean.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-/**
- * If the ID supplied to TimeZone is not a valid system ID,
- * TimeZone::createTimeZone() will return a GMT zone object. In order
- * to detect this error, we check the ID of the returned zone against
- * the ID we requested. If they don't match, we fail with an error.
- */
-TimeZone* createZone(const UnicodeString& id) {
- UnicodeString str;
- TimeZone* zone = TimeZone::createTimeZone(id);
- if (zone->getID(str) != id) {
- delete zone;
- printf("Error: TimeZone::createTimeZone(");
- uprintf(id);
- printf(") returned zone with ID ");
- uprintf(str);
- printf("\n");
- exit(1);
- }
- return zone;
-}
-
-int main(int argc, char **argv) {
-
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
-
- // The languages in which we will display the date
- static char* LANGUAGE[] = {
- "en", "de", "fr"
- };
- static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]);
-
- // The time zones in which we will display the time
- static char* TIMEZONE[] = {
- "America/Los_Angeles",
- "America/New_York",
- "Europe/Paris",
- "Europe/Berlin"
- };
- static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]);
-
- for (int32_t i=0; i<N_LANGUAGE; ++i) {
- Locale loc(LANGUAGE[i]);
-
- // Display the formatted date string
- printf("Date (%s)\n", LANGUAGE[i]);
- }
-
- printf("Exiting successfully\n");
- u_cleanup();
- return 0;
-}
diff --git a/icu4c/source/samples/datefmt/answers/main_1.cpp b/icu4c/source/samples/datefmt/answers/main_1.cpp
deleted file mode 100644
index 41253df06..000000000
--- a/icu4c/source/samples/datefmt/answers/main_1.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/calendar.h"
-#include "unicode/datefmt.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-/**
- * If the ID supplied to TimeZone is not a valid system ID,
- * TimeZone::createTimeZone() will return a GMT zone object. In order
- * to detect this error, we check the ID of the returned zone against
- * the ID we requested. If they don't match, we fail with an error.
- */
-TimeZone* createZone(const UnicodeString& id) {
- UnicodeString str;
- TimeZone* zone = TimeZone::createTimeZone(id);
- if (zone->getID(str) != id) {
- delete zone;
- printf("Error: TimeZone::createTimeZone(");
- uprintf(id);
- printf(") returned zone with ID ");
- uprintf(str);
- printf("\n");
- exit(1);
- }
- return zone;
-}
-
-int main(int argc, char **argv) {
-
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
-
- // The languages in which we will display the date
- static char* LANGUAGE[] = {
- "en", "de", "fr"
- };
- static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]);
-
- // The time zones in which we will display the time
- static char* TIMEZONE[] = {
- "America/Los_Angeles",
- "America/New_York",
- "Europe/Paris",
- "Europe/Berlin"
- };
- static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]);
-
- for (int32_t i=0; i<N_LANGUAGE; ++i) {
- Locale loc(LANGUAGE[i]);
-
- // Display the formatted date string
- printf("Date (%s)\n", LANGUAGE[i]);
- }
-
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/datefmt/answers/main_2.cpp b/icu4c/source/samples/datefmt/answers/main_2.cpp
deleted file mode 100644
index 775cecf4a..000000000
--- a/icu4c/source/samples/datefmt/answers/main_2.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/calendar.h"
-#include "unicode/datefmt.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-/**
- * If the ID supplied to TimeZone is not a valid system ID,
- * TimeZone::createTimeZone() will return a GMT zone object. In order
- * to detect this error, we check the ID of the returned zone against
- * the ID we requested. If they don't match, we fail with an error.
- */
-TimeZone* createZone(const UnicodeString& id) {
- UnicodeString str;
- TimeZone* zone = TimeZone::createTimeZone(id);
- if (zone->getID(str) != id) {
- delete zone;
- printf("Error: TimeZone::createTimeZone(");
- uprintf(id);
- printf(") returned zone with ID ");
- uprintf(str);
- printf("\n");
- exit(1);
- }
- return zone;
-}
-
-int main(int argc, char **argv) {
-
- Calendar *cal;
- TimeZone *zone;
- DateFormat *fmt;
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
- UDate date;
-
- // The languages in which we will display the date
- static char* LANGUAGE[] = {
- "en", "de", "fr"
- };
- static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]);
-
- // The time zones in which we will display the time
- static char* TIMEZONE[] = {
- "America/Los_Angeles",
- "America/New_York",
- "Europe/Paris",
- "Europe/Berlin"
- };
- static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]);
-
- // Create a calendar
- cal = Calendar::createInstance(status);
- check(status, "Calendar::createInstance");
- zone = createZone("GMT"); // Create a GMT zone
- cal->adoptTimeZone(zone);
- cal->clear();
- cal->set(1999, Calendar::JUNE, 4);
- date = cal->getTime(status);
- check(status, "Calendar::getTime");
-
- for (int32_t i=0; i<N_LANGUAGE; ++i) {
- Locale loc(LANGUAGE[i]);
-
- // Create a formatter for DATE
- fmt = DateFormat::createDateInstance(DateFormat::kFull, loc);
-
- // Format the date
- str.remove();
- fmt->format(date, str, status);
-
- // Display the formatted date string
- printf("Date (%s): ", LANGUAGE[i]);
- uprintf(escape(str));
- printf("\n\n");
- }
-
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/datefmt/answers/main_3.cpp b/icu4c/source/samples/datefmt/answers/main_3.cpp
deleted file mode 100644
index 4aba5600d..000000000
--- a/icu4c/source/samples/datefmt/answers/main_3.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/calendar.h"
-#include "unicode/datefmt.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-/**
- * If the ID supplied to TimeZone is not a valid system ID,
- * TimeZone::createTimeZone() will return a GMT zone object. In order
- * to detect this error, we check the ID of the returned zone against
- * the ID we requested. If they don't match, we fail with an error.
- */
-TimeZone* createZone(const UnicodeString& id) {
- UnicodeString str;
- TimeZone* zone = TimeZone::createTimeZone(id);
- if (zone->getID(str) != id) {
- delete zone;
- printf("Error: TimeZone::createTimeZone(");
- uprintf(id);
- printf(") returned zone with ID ");
- uprintf(str);
- printf("\n");
- exit(1);
- }
- return zone;
-}
-
-int main(int argc, char **argv) {
-
- Calendar *cal;
- TimeZone *zone;
- DateFormat *fmt;
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
- UDate date;
-
- // The languages in which we will display the date
- static char* LANGUAGE[] = {
- "en", "de", "fr"
- };
- static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]);
-
- // The time zones in which we will display the time
- static char* TIMEZONE[] = {
- "America/Los_Angeles",
- "America/New_York",
- "Europe/Paris",
- "Europe/Berlin"
- };
- static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]);
-
- // Create a calendar
- cal = Calendar::createInstance(status);
- check(status, "Calendar::createInstance");
- zone = createZone("GMT"); // Create a GMT zone
- cal->adoptTimeZone(zone);
- cal->clear();
- cal->set(1999, Calendar::JUNE, 4);
- date = cal->getTime(status);
- check(status, "Calendar::getTime");
-
- for (int32_t i=0; i<N_LANGUAGE; ++i) {
- Locale loc(LANGUAGE[i]);
-
- // Create a formatter for DATE and TIME
- fmt = DateFormat::createDateTimeInstance(
- DateFormat::kFull, DateFormat::kFull, loc);
-
- for (int32_t j=0; j<N_TIMEZONE; ++j) {
-
- cal->adoptTimeZone(createZone(TIMEZONE[j]));
- fmt->setCalendar(*cal);
-
- // Format the date
- str.remove();
- fmt->format(date, str, status);
-
- // Display the formatted date string
- printf("Date (%s, %s): ", LANGUAGE[i], TIMEZONE[j]);
- uprintf(escape(str));
- printf("\n\n");
- }
-
- delete fmt;
- }
-
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/datefmt/datefmt.sln b/icu4c/source/samples/datefmt/datefmt.sln
deleted file mode 100644
index 346439ad1..000000000
--- a/icu4c/source/samples/datefmt/datefmt.sln
+++ /dev/null
@@ -1,27 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.24720.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "datefmt", "datefmt.vcxproj", "{6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|Win32.ActiveCfg = Debug|Win32
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|Win32.Build.0 = Debug|Win32
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.ActiveCfg = Debug|x64
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.Build.0 = Debug|x64
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|Win32.ActiveCfg = Release|Win32
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|Win32.Build.0 = Release|Win32
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.ActiveCfg = Release|x64
- {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/datefmt/datefmt.vcxproj b/icu4c/source/samples/datefmt/datefmt.vcxproj
deleted file mode 100644
index 00dcd6d67..000000000
--- a/icu4c/source/samples/datefmt/datefmt.vcxproj
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/datefmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/datefmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/datefmt.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/datefmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/datefmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/datefmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/datefmt.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/datefmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/datefmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/datefmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/datefmt.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/datefmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/datefmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/datefmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/datefmt.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/datefmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="main.cpp" />
- <ClCompile Include="util.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/datefmt/datefmt.vcxproj.filters b/icu4c/source/samples/datefmt/datefmt.vcxproj.filters
deleted file mode 100644
index 4db10cd14..000000000
--- a/icu4c/source/samples/datefmt/datefmt.vcxproj.filters
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{a5cbb044-7694-4d1d-98c1-bb578ee7f1ea}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{aadf5a92-1812-45ce-90a0-e9db3945d7c5}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{9eff3ddc-6822-4225-81fc-a867b9e592c0}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="main.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="util.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/datefmt/main.cpp b/icu4c/source/samples/datefmt/main.cpp
deleted file mode 100644
index b7c8a13aa..000000000
--- a/icu4c/source/samples/datefmt/main.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-/*************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/calendar.h"
-#include "unicode/datefmt.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-using namespace icu;
-
-/**
- * If the ID supplied to TimeZone is not a valid system ID,
- * TimeZone::createTimeZone() will return a GMT zone object. In order
- * to detect this error, we check the ID of the returned zone against
- * the ID we requested. If they don't match, we fail with an error.
- */
-TimeZone* createZone(const UnicodeString& id) {
- UnicodeString str;
- TimeZone* zone = TimeZone::createTimeZone(id);
- if (zone->getID(str) != id) {
- delete zone;
- printf("Error: TimeZone::createTimeZone(");
- uprintf(id);
- printf(") returned zone with ID ");
- uprintf(str);
- printf("\n");
- exit(1);
- }
- return zone;
-}
-
-int main(int argc, char **argv) {
-
- Calendar *cal;
- TimeZone *zone;
- DateFormat *fmt;
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
- UDate date;
-
- // The languages in which we will display the date
- static const char* LANGUAGE[] = {
- "en", "de", "fr"
- };
- static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]);
-
- // The time zones in which we will display the time
- static const char* TIMEZONE[] = {
- "America/Los_Angeles",
- "America/New_York",
- "Europe/Paris",
- "Europe/Berlin"
- };
- static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]);
-
- // Create a calendar
- cal = Calendar::createInstance(status);
- check(status, "Calendar::createInstance");
- zone = createZone("GMT"); // Create a GMT zone
- cal->adoptTimeZone(zone);
- cal->clear();
- cal->set(1999, Calendar::JUNE, 4);
- date = cal->getTime(status);
- check(status, "Calendar::getTime");
-
- for (int32_t i=0; i<N_LANGUAGE; ++i) {
- Locale loc(LANGUAGE[i]);
-
- // Create a formatter for DATE and TIME
- fmt = DateFormat::createDateTimeInstance(
- DateFormat::kFull, DateFormat::kFull, loc);
-
- for (int32_t j=0; j<N_TIMEZONE; ++j) {
-
- cal->adoptTimeZone(createZone(TIMEZONE[j]));
- fmt->setCalendar(*cal);
-
- // Format the date
- str.remove();
- fmt->format(date, str, status);
-
- // Display the formatted date string
- printf("Date (%s, %s): ", LANGUAGE[i], TIMEZONE[j]);
- uprintf(escape(str));
- printf("\n\n");
- }
-
- delete fmt;
- }
-
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/datefmt/util.cpp b/icu4c/source/samples/datefmt/util.cpp
deleted file mode 100644
index 32d08eddd..000000000
--- a/icu4c/source/samples/datefmt/util.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unistr.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-using namespace icu;
-
-// Verify that a UErrorCode is successful; exit(1) if not
-void check(UErrorCode& status, const char* msg) {
- if (U_FAILURE(status)) {
- printf("ERROR: %s (%s)\n", u_errorName(status), msg);
- exit(1);
- }
- // printf("Ok: %s\n", msg);
-}
-
-// Append a hex string to the target
-static UnicodeString& appendHex(uint32_t number,
- int8_t digits,
- UnicodeString& target) {
- static const UnicodeString DIGIT_STRING("0123456789ABCDEF");
- while (digits > 0) {
- target += DIGIT_STRING[(number >> ((--digits) * 4)) & 0xF];
- }
- return target;
-}
-
-// Replace nonprintable characters with unicode escapes
-UnicodeString escape(const UnicodeString &source) {
- int32_t i;
- UnicodeString target;
- target += "\"";
- for (i=0; i<source.length(); ++i) {
- char16_t ch = source[i];
- if (ch < 0x09 || (ch > 0x0A && ch < 0x20) || ch > 0x7E) {
- target += "\\u";
- appendHex(ch, 4, target);
- } else {
- target += ch;
- }
- }
- target += "\"";
- return target;
-}
-
-// Print the given string to stdout
-void uprintf(const UnicodeString &str) {
- char *buf = 0;
- int32_t len = str.length();
- // int32_t bufLen = str.extract(0, len, buf); // Preflight
- /* Preflighting seems to be broken now, so assume 1-1 conversion,
- plus some slop. */
- int32_t bufLen = len + 16;
- int32_t actualLen;
- buf = new char[bufLen + 1];
- actualLen = str.extract(0, len, buf/*, bufLen*/); // Default codepage conversion
- buf[actualLen] = 0;
- printf("%s", buf);
- delete[] buf;
-}
diff --git a/icu4c/source/samples/datefmt/util.h b/icu4c/source/samples/datefmt/util.h
deleted file mode 100644
index 27d6c806c..000000000
--- a/icu4c/source/samples/datefmt/util.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unistr.h"
-
-using namespace icu;
-
-// Verify that a UErrorCode is successful; exit(1) if not
-void check(UErrorCode& status, const char* msg);
-
-// Replace nonprintable characters with unicode escapes
-UnicodeString escape(const UnicodeString &source);
-
-// Print the given string to stdout
-void uprintf(const UnicodeString &str);
diff --git a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.cpp b/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.cpp
deleted file mode 100644
index 912a849ce..000000000
--- a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/******************************************************************************
-* Copyright (C) 2008-2014, International Business Machines Corporation and
-* others. All Rights Reserved.
-*******************************************************************************
-*/
-//! [dtitvfmtPreDefined1]
-#include <iostream>
-#include "unicode/dtitvfmt.h"
-#include "unicode/ustdio.h"
-//! [dtitvfmtPreDefined1]
-
-using namespace std;
-using namespace icu;
-
-static void dtitvfmtPreDefined() {
-
- u_printf("===============================================================================\n");
- u_printf(" dtitvfmtPreDefined()\n");
- u_printf("\n");
- u_printf(" Use DateIntervalFormat to get date interval format for pre-defined skeletons:\n");
- u_printf(" yMMMd, MMMMd, jm per locale\n");
- u_printf("===============================================================================\n");
-
- //! [dtitvfmtPreDefined]
- UFILE *out = u_finit(stdout, nullptr, "UTF-8");
- UErrorCode status =U_ZERO_ERROR;
- // create 3 Date Intervals
- UnicodeString data[] = {
- UnicodeString("2007-10-10 10:10:10"),
- UnicodeString("2008-10-10 10:10:10"),
- UnicodeString("2008-11-10 10:10:10"),
- UnicodeString("2008-11-10 15:10:10")
- };
- Calendar *cal = Calendar::createInstance(status);
- cal->set(2007,10,10,10,10,10);
- UDate date1 = cal->getTime(status);
- cal->set(2008,10,10,10,10,10);
- UDate date2 = cal->getTime(status);
- cal->set(2008,11,10,10,10,10);
- UDate date3 = cal->getTime(status);
- cal->set(2008,11,10,15,10,10);
- UDate date4 = cal->getTime(status);
- DateInterval* dtitvsample[] = {
- new DateInterval(date1,date2),
- new DateInterval(date2,date3),
- new DateInterval(date3,date4),
- };
- UnicodeString skeletons[] = {
- UnicodeString("yMMMd"),
- UnicodeString("MMMMd"),
- UnicodeString("jm"),
- UnicodeString("")
- };
- u_fprintf(out,"%-10s%-22s%-22s%-35s%-35s\n", "Skeleton","from","to","Date Interval in en_US","Date Interval in Ja");
- int i=0;
- UnicodeString formatEn,formatJa;
- FieldPosition pos=0;
- for (int j=0; !skeletons[j].isEmpty() ;j++) {
- u_fprintf(out,"%-10S%-22S%-22S",skeletons[j].getTerminatedBuffer(),data[i].getTerminatedBuffer(),data[i+1].getTerminatedBuffer());
- //create a DateIntervalFormat instance for given skeleton, locale
- DateIntervalFormat* dtitvfmtEn = DateIntervalFormat::createInstance(skeletons[j], Locale::getEnglish(),status);
- DateIntervalFormat* dtitvfmtJa = DateIntervalFormat::createInstance(skeletons[j], Locale::getJapanese(),status);
- formatEn.remove();
- formatJa.remove();
- //get the DateIntervalFormat
- dtitvfmtEn->format(dtitvsample[i],formatEn,pos,status);
- dtitvfmtJa->format(dtitvsample[i],formatJa,pos,status);
- u_fprintf(out,"%-35S%-35S\n", formatEn.getTerminatedBuffer(),formatJa.getTerminatedBuffer());
- delete dtitvfmtEn;
- delete dtitvfmtJa;
- i++;
- }
- u_fclose(out);
- //! [dtitvfmtPreDefined]
-}
-
-static void dtitvfmtCustomized() {
-
- u_printf("===============================================================================\n");
- u_printf("\n");
- u_printf(" dtitvfmtCustomized()\n");
- u_printf("\n");
- u_printf(" Use DateIntervalFormat to create customized date interval format for yMMMd, Hm");
- u_printf("\n");
- u_printf("================================================================================\n");
- //! [dtitvfmtCustomized]
- UFILE *out = u_finit(stdout, nullptr, "UTF-8");
- UErrorCode status =U_ZERO_ERROR;
- UnicodeString data[] = {
- UnicodeString("2007-9-10 10:10:10"),
- UnicodeString("2007-10-10 10:10:10"),
- UnicodeString("2007-10-10 22:10:10")
- };
- // to create 2 Date Intervals
- Calendar *cal1 = Calendar::createInstance(status);
- cal1->set(2007,9,10,10,10,10);
- Calendar *cal2 = Calendar::createInstance(status);
- cal2->set(2007,10,10,10,10,10);
- Calendar *cal3 = Calendar::createInstance(status);
- cal3->set(2007,10,10,22,10,10);
- DateInterval* dtitvsample[] = {
- new DateInterval(cal1->getTime(status),cal2->getTime(status)),
- new DateInterval(cal2->getTime(status),cal3->getTime(status))
- };
- UnicodeString skeletons[] = {
- UnicodeString("yMMMd"),
- UnicodeString("Hm"),
- UnicodeString("")
- };
- u_printf("%-10s%-22s%-22s%-45s%-35s\n", "Skeleton", "from","to", "Date Interval in en_US","Date Interval in Ja");
- // Create an empty DateIntervalInfo object
- DateIntervalInfo dtitvinf = DateIntervalInfo(status);
- // Set Date Time internal pattern for MONTH, HOUR_OF_DAY
- dtitvinf.setIntervalPattern("yMMMd", UCAL_MONTH, "y 'Diff' MMM d --- MMM d",status);
- dtitvinf.setIntervalPattern("Hm", UCAL_HOUR_OF_DAY, "yyyy MMM d HH:mm ~ HH:mm",status);
- // Set fallback interval pattern
- dtitvinf.setFallbackIntervalPattern("{0} ~~~ {1}",status);
- // Get the DateIntervalFormat with the custom pattern
- UnicodeString formatEn,formatJa;
- FieldPosition pos=0;
- for (int i=0;i<2;i++){
- for (int j=0;!skeletons[j].isEmpty();j++) {
- u_fprintf(out,"%-10S%-22S%-22S", skeletons[i].getTerminatedBuffer(),data[j].getTerminatedBuffer(), data[j+1].getTerminatedBuffer());
- DateIntervalFormat* dtitvfmtEn = DateIntervalFormat::createInstance(skeletons[i],Locale::getEnglish(),dtitvinf,status);
- DateIntervalFormat* dtitvfmtJa = DateIntervalFormat::createInstance(skeletons[i],Locale::getJapanese(),dtitvinf,status);
- formatEn.remove();
- formatJa.remove();
- dtitvfmtEn->format(dtitvsample[j],formatEn,pos,status);
- dtitvfmtJa->format(dtitvsample[j],formatJa,pos,status);
- u_fprintf(out,"%-45S%-35S\n", formatEn.getTerminatedBuffer(),formatJa.getTerminatedBuffer());
- }
- }
- u_fclose(out);
- //! [dtitvfmtCustomized]
-}
-
-int main (int argc, char* argv[])
-{
- dtitvfmtPreDefined();
- dtitvfmtCustomized();
- return 0;
-}
diff --git a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj b/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj
deleted file mode 100644
index aea18b217..000000000
--- a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{8945255B-473B-4C47-9425-E92384338CAA}</ProjectGuid>
- <RootNamespace>samples</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>.\x86\Debug\</OutDir>
- <IntDir>.\x86\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>.\x64\Debug\</OutDir>
- <IntDir>.\x64\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>.\x86\Release\</OutDir>
- <IntDir>.\x86\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>.\x64\Release\</OutDir>
- <IntDir>.\x64\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>.\x86\Debug/dtitvfmtsample.exe</OutputFile>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>.\x64\Debug/dtitvfmtsample.exe</OutputFile>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dtitvfmtsample.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters b/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters
deleted file mode 100644
index 93d143f65..000000000
--- a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dtitvfmtsample.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/dtptngsample/dtptngsample.cpp b/icu4c/source/samples/dtptngsample/dtptngsample.cpp
deleted file mode 100644
index b55f31c50..000000000
--- a/icu4c/source/samples/dtptngsample/dtptngsample.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/********************************************************************
- * COPYRIGHT:
- * Copyright (c) 2008-2014, International Business Machines Corporation and
- * others. All Rights Reserved.
- ********************************************************************/
-//! [getBestPatternExample1]
-#include <iostream>
-#include "unicode/smpdtfmt.h"
-#include "unicode/dtptngen.h"
-#include "unicode/ustdio.h"
-//! [getBestPatternExample1]
-
-using namespace std;
-using namespace icu;
-
-static void getBestPatternExample() {
-
- u_printf("========================================================================\n");
- u_printf(" getBestPatternExample()\n");
- u_printf("\n");
- u_printf(" Use DateTimePatternGenerator to create customized date/time pattern:\n");
- u_printf(" yQQQQ,yMMMM, MMMMd, hhmm, jjmm per locale\n");
- u_printf("========================================================================\n");
- //! [getBestPatternExample]
- UnicodeString skeletons [] = {
- UnicodeString("yQQQQ"), // year + full name of quarter, i.e., 4th quarter 1999
- UnicodeString("yMMMM"), // year + full name of month, i.e., October 1999
- UnicodeString("MMMMd"), // full name of month + day of the month, i.e., October 25
- UnicodeString("hhmm"), // 12-hour-cycle format, i.e., 1:32 PM
- UnicodeString("jjmm"), // preferred hour format for the given locale, i.e., 24-hour-cycle format for fr_FR
- 0,
- };
-
- Locale locales[] = {
- Locale ("en_US"),
- Locale ("fr_FR"),
- Locale ("zh_CN"),
- };
-
- const char* filename = "sample.txt";
- /* open a UTF-8 file for writing */
- UFILE* f = u_fopen(filename, "w", nullptr,"UTF-8");
- UnicodeString dateReturned;
- UErrorCode status =U_ZERO_ERROR;
- Calendar *cal = Calendar::createInstance(status);
- cal->set (1999,9,13,23,58,59);
- UDate date = cal->getTime(status);
- u_fprintf(f, "%-20S%-20S%-20S%-20S\n", UnicodeString("Skeleton").getTerminatedBuffer(),UnicodeString("en_US").getTerminatedBuffer(),UnicodeString("fr_FR").getTerminatedBuffer(),UnicodeString("zh_CN").getTerminatedBuffer());
- for (int i=0;!skeletons[i].isEmpty();i++) {
- u_fprintf(f, "%-20S",skeletons[i].getTerminatedBuffer());
- for (int j=0;j<sizeof(locales)/sizeof(locales[0]);j++) {
- // create a DateTimePatternGenerator instance for given locale
- DateTimePatternGenerator *dtfg= DateTimePatternGenerator::createInstance(locales[j],status);
- // use getBestPattern method to get the best pattern for the given skeleton
- UnicodeString pattern = dtfg->getBestPattern(skeletons[i],status);
- // Constructs a SimpleDateFormat with the best pattern generated above and the given locale
- SimpleDateFormat *sdf = new SimpleDateFormat(pattern,locales[j],status);
- dateReturned.remove();
- // Get the format of the given date
- sdf->format(date,dateReturned,status);
- /* write Unicode string to file */
- u_fprintf(f, "%-20S", dateReturned.getTerminatedBuffer());
- delete dtfg;
- delete sdf;
- }
- u_fprintf(f,"\n");
- }
- /* close the file resource */
- u_fclose(f);
- delete cal;
- //! [getBestPatternExample]
-}
-
-static void addPatternExample() {
-
- u_printf("========================================================================\n");
- u_printf(" addPatternExample()\n");
- u_printf("\n");
- u_printf(" Use addPattern API to add new '. von' to existing pattern\n");
- u_printf("========================================================================\n");
- //! [addPatternExample]
- UErrorCode status =U_ZERO_ERROR;
- UnicodeString conflictingPattern,dateReturned, pattern;
- Locale locale=Locale::getFrance();
- Calendar *cal = Calendar::createInstance(status);
- cal->set (1999,9,13,23,58,59);
- UDate date = cal->getTime(status);
- // Create an DateTimePatternGenerator instance for the given locale
- DateTimePatternGenerator *dtfg= DateTimePatternGenerator::createInstance(locale,status);
- SimpleDateFormat *sdf = new SimpleDateFormat(dtfg->getBestPattern("MMMMddHmm",status),locale,status);
- // Add '. von' to the existing pattern
- dtfg->addPattern("dd'. von' MMMM", true, conflictingPattern,status);
- // Apply the new pattern
- sdf->applyPattern(dtfg->getBestPattern("MMMMddHmm",status));
- dateReturned = sdf->format(date, dateReturned, status);
- pattern =sdf->toPattern(pattern);
- u_printf("%s\n", "New Pattern for FRENCH: ");
- u_printf("%S\n", pattern.getTerminatedBuffer());
- u_printf("%s\n", "Date Time in new Pattern: ");
- u_printf("%S\n", dateReturned.getTerminatedBuffer());
- delete dtfg;
- delete sdf;
- delete cal;
-
- //! [addPatternExample]
- /* output of the sample code:
- ************************************************************************************************
- New Pattern for FRENCH: dd. 'von' MMMM HH:mm
- Date Time in new Pattern: 13. von octobre 23:58
-
- *************************************************************************************************/
- }
-
-static void replaceFieldTypesExample() {
- // Use repalceFieldTypes API to replace zone 'zzzz' with 'vvvv'
- u_printf("========================================================================\n");
- u_printf(" replaceFieldTypeExample()\n");
- u_printf("\n");
- u_printf(" Use replaceFieldTypes API to replace zone 'zzzz' with 'vvvv'\n");
- u_printf("========================================================================\n");
- //! [replaceFieldTypesExample]
- UFILE *out = u_finit(stdout, nullptr, "UTF-8");
- UErrorCode status =U_ZERO_ERROR;
- UnicodeString pattern,dateReturned;
- Locale locale =Locale::getFrance();
- Calendar *cal = Calendar::createInstance(status);
- cal->set (1999,9,13,23,58,59);
- UDate date = cal->getTime(status);
- TimeZone *zone = TimeZone::createTimeZone(UnicodeString("Europe/Paris"));
- DateTimePatternGenerator *dtfg = DateTimePatternGenerator::createInstance(locale,status);
- SimpleDateFormat *sdf = new SimpleDateFormat("EEEE d MMMM y HH:mm:ss zzzz",locale,status);
- sdf->setTimeZone(*zone);
- pattern = sdf->toPattern(pattern);
- u_fprintf(out, "%S\n", UnicodeString("Pattern before replacement:").getTerminatedBuffer());
- u_fprintf(out, "%S\n", pattern.getTerminatedBuffer());
- dateReturned.remove();
- dateReturned = sdf->format(date, dateReturned, status);
- u_fprintf(out, "%S\n", UnicodeString("Date/Time format in fr_FR:").getTerminatedBuffer());
- u_fprintf(out, "%S\n", dateReturned.getTerminatedBuffer());
- // Replace zone "zzzz" in the pattern with "vvvv"
- UnicodeString newPattern = dtfg->replaceFieldTypes(pattern, "vvvv", status);
- // Apply the new pattern
- sdf->applyPattern(newPattern);
- dateReturned.remove();
- dateReturned = sdf->format(date, dateReturned, status);
- u_fprintf(out, "%S\n", UnicodeString("Pattern after replacement:").getTerminatedBuffer());
- u_fprintf(out, "%S\n", newPattern.getTerminatedBuffer());
- u_fprintf(out, "%S\n", UnicodeString("Date/Time format in fr_FR:").getTerminatedBuffer());
- u_fprintf(out, "%S\n", dateReturned.getTerminatedBuffer());
- delete sdf;
- delete dtfg;
- delete zone;
- delete cal;
- u_fclose(out);
- //! [replaceFieldTypesExample]
- }
-
-int main (int argc, char* argv[])
-{
- getBestPatternExample();
- addPatternExample();
- replaceFieldTypesExample();
- return 0;
-}
diff --git a/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj b/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj
deleted file mode 100644
index 542b3439f..000000000
--- a/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{115886F0-7DFB-4B8B-BE79-83162EE8713B}</ProjectGuid>
- <RootNamespace>samples</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>.\x86\Debug\</OutDir>
- <IntDir>.\x86\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>.\x64\Debug\</OutDir>
- <IntDir>.\x64\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>.\x86\Release\</OutDir>
- <IntDir>.\x86\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>.\x64\Release\</OutDir>
- <IntDir>.\x64\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\common;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>.\x86\debug/dtptngsample.exe</OutputFile>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\common;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>.\x64\debug/dtptngsample.exe</OutputFile>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dtptngsample.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj.filters b/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj.filters
deleted file mode 100644
index f2c89e842..000000000
--- a/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dtptngsample.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/layout/FontMap.GDI b/icu4c/source/samples/layout/FontMap.GDI
deleted file mode 100644
index 59c599898..000000000
--- a/icu4c/source/samples/layout/FontMap.GDI
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (C) 2001-2010, International Business Machines
-# Corporation and others. All Rights Reserved.
-#
-# This is a sample FontMap file for Windows.
-# Fonts are specified by font name, as shown
-# in the "Fonts" folder.
-
- DEVANAGARI: Raghindi
- THAI: Courier MonoThai
- DEFAULT: Code2000
-
diff --git a/icu4c/source/samples/layout/FontMap.Gnome b/icu4c/source/samples/layout/FontMap.Gnome
deleted file mode 100644
index ece82d74e..000000000
--- a/icu4c/source/samples/layout/FontMap.Gnome
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (C) 2001-2005, International Business Machines
-# Corporation and others. All Rights Reserved.
-# This is a sample FontMap file for Linux.
-# Fonts are specified by file names.
-
- DEVANAGARI: raghu.ttf
- THAI: angsd___.ttf
- DEFAULT: CODE2000.TTF
diff --git a/icu4c/source/samples/layout/FontMap.cpp b/icu4c/source/samples/layout/FontMap.cpp
deleted file mode 100644
index 37ceb7eb1..000000000
--- a/icu4c/source/samples/layout/FontMap.cpp
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others. *
- * License & terms of use: http://www.unicode.org/copyright.html *
- ******************************************************************************
- ******************************************************************************
- * Copyright (C) 1998-2006, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "unicode/utypes.h"
-#include "unicode/uscript.h"
-
-#include "layout/LETypes.h"
-#include "layout/LEScripts.h"
-#include "layout/LEFontInstance.h"
-
-#include "GUISupport.h"
-#include "FontMap.h"
-
-FontMap::FontMap(const char *fileName, le_int16 pointSize, GUISupport *guiSupport, LEErrorCode &status)
- : fPointSize(pointSize), fFontCount(0), fAscent(0), fDescent(0), fLeading(0), fGUISupport(guiSupport)
-{
- le_int32 defaultFont = -1, i, script;
- le_bool haveFonts = false;
-
-/**/
- for (i = 0; i < scriptCodeCount; i += 1) {
- fFontIndices[i] = -1;
- fFontNames[i] = nullptr;
- fFontInstances[i] = nullptr;
- }
- /**/
-
- if (LE_FAILURE(status)) {
- return;
- }
-
- char *c, *scriptName, *fontName, *line, buffer[BUFFER_SIZE];
- FILE *file;
-
- file = fopen(fileName, "r");
-
- if (file == nullptr) {
- sprintf(errorMessage, "Could not open the font map file: %s.", fileName);
- fGUISupport->postErrorMessage(errorMessage, "Font Map Error");
- status = LE_FONT_FILE_NOT_FOUND_ERROR;
- return;
- }
-
- while (fgets(buffer, BUFFER_SIZE, file) != nullptr) {
- UScriptCode scriptCode;
- UErrorCode scriptStatus = U_ZERO_ERROR;
-
- line = strip(buffer);
- if (line[0] == '#' || line[0] == 0) {
- continue;
- }
-
- c = strchr(line, ':');
- c[0] = 0;
-
- fontName = strip(&c[1]);
- scriptName = strip(line);
-
- if (strcmp(scriptName, "DEFAULT") == 0) {
- defaultFont = getFontIndex(fontName);
- haveFonts = true;
- continue;
- }
-
- le_int32 fillCount = uscript_getCode(scriptName, &scriptCode, 1, &scriptStatus);
-
- if (U_FAILURE(scriptStatus) || fillCount <= 0 ||
- scriptStatus == U_USING_FALLBACK_WARNING || scriptStatus == U_USING_DEFAULT_WARNING) {
- sprintf(errorMessage, "The script name %s is invalid.", line);
- fGUISupport->postErrorMessage(errorMessage, "Font Map Error");
- continue;
- }
-
- script = (le_int32) scriptCode;
-
- if (fFontIndices[script] >= 0) {
- // FIXME: complain that this is a duplicate entry and bail (?)
- fFontIndices[script] = -1;
- }
-
- fFontIndices[script] = getFontIndex(fontName);
- haveFonts = true;
- }
-
- if (defaultFont >= 0) {
- for (script = 0; script < scriptCodeCount; script += 1) {
- if (fFontIndices[script] < 0) {
- fFontIndices[script] = defaultFont;
- }
- }
- }
-
- if (! haveFonts) {
- sprintf(errorMessage, "The font map file %s does not contain any valid scripts.", fileName);
- fGUISupport->postErrorMessage(errorMessage, "Font Map Error");
- status = LE_ILLEGAL_ARGUMENT_ERROR;
- }
-
- fclose(file);
-}
-
-FontMap::~FontMap()
-{
- le_int32 font;
-
- for (font = 0; font < fFontCount; font += 1) {
- if (fFontNames[font] != nullptr) {
- delete[] (char *) fFontNames[font];
- }
- }
-
- for (font = 0; font < fFontCount; font += 1) {
- if (fFontInstances[font] != nullptr) {
- delete fFontInstances[font];
- }
- }
-}
-
-le_int32 FontMap::getFontIndex(const char *fontName)
-{
- le_int32 index;
-
- for (index = 0; index < fFontCount; index += 1) {
- if (strcmp(fontName, fFontNames[index]) == 0) {
- return index;
- }
- }
-
- if (fFontCount < (le_int32) scriptCodeCount) {
- index = fFontCount++;
- } else {
- // The font name table is full. Since there can
- // only be scriptCodeCount fonts in use at once,
- // there should be at least one that's not being
- // referenced; find it and reuse it's index.
-
- for (index = 0; index < fFontCount; index += 1) {
- le_int32 script;
-
- for (script = 0; script < scriptCodeCount; script += 1) {
- if (fFontIndices[script] == index) {
- break;
- }
- }
-
- if (script >= scriptCodeCount) {
- break;
- }
- }
- }
-
- if (index >= scriptCodeCount) {
- return -1;
- }
-
- le_int32 len = strlen(fontName);
- char *s = new char[len + 1];
-
- fFontNames[index] = strcpy(s, fontName);
- return index;
-}
-
-char *FontMap::strip(char *s)
-{
- le_int32 start, end, len;
-
- start = 0;
- len = strlen(s);
-
- while (start < len && isspace(s[start])) {
- start += 1;
- }
-
- end = len - 1;
-
- while (end > start && isspace(s[end])) {
- end -= 1;
- }
-
- if (end < len) {
- s[end + 1] = '\0';
- }
-
- return &s[start];
-}
-
-const LEFontInstance *FontMap::getScriptFont(le_int32 scriptCode, LEErrorCode &status)
-{
- if (LE_FAILURE(status)) {
- return nullptr;
- }
-
- if (scriptCode <= -1 || scriptCode >= scriptCodeCount) {
- status = LE_ILLEGAL_ARGUMENT_ERROR;
- return nullptr;
- }
-
-
- le_int32 fontIndex = fFontIndices[scriptCode];
-
- if (fontIndex < 0) {
- sprintf(errorMessage, "No font was set for script %s", uscript_getName((UScriptCode) scriptCode));
- fGUISupport->postErrorMessage(errorMessage, "Font Map Error");
- status = LE_FONT_FILE_NOT_FOUND_ERROR;
- return nullptr;
- }
-
- if (fFontInstances[fontIndex] == nullptr) {
- fFontInstances[fontIndex] = openFont(fFontNames[fontIndex], fPointSize, status);
-
- if (LE_FAILURE(status)) {
- sprintf(errorMessage, "Could not open font file %s", fFontNames[fontIndex]);
- fGUISupport->postErrorMessage(errorMessage, "Font Map Error");
- return nullptr;
- }
- }
-
- return fFontInstances[fontIndex];
-}
-
-le_int32 FontMap::getAscent() const
-{
- if (fAscent <= 0) {
- ((FontMap *) this)->getMaxMetrics();
- }
-
- return fAscent;
-}
-
-le_int32 FontMap::getDescent() const
-{
- if (fDescent <= 0) {
- ((FontMap *) this)->getMaxMetrics();
- }
-
- return fDescent;
-}
-
-le_int32 FontMap::getLeading() const
-{
- if (fLeading <= 0) {
- ((FontMap *) this)->getMaxMetrics();
- }
-
- return fLeading;
-}
-
-void FontMap::getMaxMetrics()
-{
- for (le_int32 i = 0; i < fFontCount; i += 1) {
- LEErrorCode status = LE_NO_ERROR;
- le_int32 ascent, descent, leading;
-
- if (fFontInstances[i] == nullptr) {
- fFontInstances[i] = openFont(fFontNames[i], fPointSize, status);
-
- if (LE_FAILURE(status)) {
- continue;
- }
- }
-
- ascent = fFontInstances[i]->getAscent();
- descent = fFontInstances[i]->getDescent();
- leading = fFontInstances[i]->getLeading();
-
- if (ascent > fAscent) {
- fAscent = ascent;
- }
-
- if (descent > fDescent) {
- fDescent = descent;
- }
-
- if (leading > fLeading) {
- fLeading = leading;
- }
- }
-}
-
diff --git a/icu4c/source/samples/layout/FontMap.h b/icu4c/source/samples/layout/FontMap.h
deleted file mode 100644
index cdc8fd579..000000000
--- a/icu4c/source/samples/layout/FontMap.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others. *
- * License & terms of use: http://www.unicode.org/copyright.html *
- ******************************************************************************
- ******************************************************************************
- * Copyright (C) 1998-2003, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-
-#ifndef __FONTMAP_H
-#define __FONTMAP_H
-
-#include "layout/LETypes.h"
-#include "layout/LEScripts.h"
-#include "layout/LEFontInstance.h"
-
-#include "GUISupport.h"
-
-#define BUFFER_SIZE 128
-
-class FontMap
-{
-public:
- FontMap(const char *fileName, le_int16 pointSize, GUISupport *guiSupport, LEErrorCode &status);
-
- virtual ~FontMap();
-
- virtual const LEFontInstance *getScriptFont(le_int32 scriptCode, LEErrorCode &status);
-
- virtual le_int16 getPointSize() const;
-
- virtual le_int32 getAscent() const;
-
- virtual le_int32 getDescent() const;
-
- virtual le_int32 getLeading() const;
-
-protected:
- virtual const LEFontInstance *openFont(const char *fontName, le_int16 pointSize, LEErrorCode &status) = 0;
-
- char errorMessage[256];
-
-private:
- static char *strip(char *s);
- le_int32 getFontIndex(const char *fontName);
- void getMaxMetrics();
-
- le_int16 fPointSize;
- le_int32 fFontCount;
-
- le_int32 fAscent;
- le_int32 fDescent;
- le_int32 fLeading;
-
- GUISupport *fGUISupport;
-
- const LEFontInstance *fFontInstances[scriptCodeCount];
- const char *fFontNames[scriptCodeCount];
- le_int32 fFontIndices[scriptCodeCount];
-};
-
-inline le_int16 FontMap::getPointSize() const
-{
- return fPointSize;
-}
-
-#endif
-
diff --git a/icu4c/source/samples/layout/FontTableCache.cpp b/icu4c/source/samples/layout/FontTableCache.cpp
deleted file mode 100644
index 542930413..000000000
--- a/icu4c/source/samples/layout/FontTableCache.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * Copyright (C) 2003 - 2008, International Business Machines
- * Corporation and others. All Rights Reserved.
- *************************************************************************
- */
-
-#include "layout/LETypes.h"
-
-#include "FontTableCache.h"
-
-#define TABLE_CACHE_INIT 5
-#define TABLE_CACHE_GROW 5
-
-struct FontTableCacheEntry
-{
- LETag tag;
- const void *table;
-};
-
-FontTableCache::FontTableCache()
- : fTableCacheCurr(0), fTableCacheSize(TABLE_CACHE_INIT)
-{
- fTableCache = LE_NEW_ARRAY(FontTableCacheEntry, fTableCacheSize);
-
- if (fTableCache == nullptr) {
- fTableCacheSize = 0;
- return;
- }
-
- for (int i = 0; i < fTableCacheSize; i += 1) {
- fTableCache[i].tag = 0;
- fTableCache[i].table = nullptr;
- }
-}
-
-FontTableCache::~FontTableCache()
-{
- for (int i = fTableCacheCurr - 1; i >= 0; i -= 1) {
- freeFontTable(fTableCache[i].table);
-
- fTableCache[i].tag = 0;
- fTableCache[i].table = nullptr;
- }
-
- fTableCacheCurr = 0;
-
- LE_DELETE_ARRAY(fTableCache);
- fTableCache = nullptr;
-}
-
-void FontTableCache::freeFontTable(const void *table) const
-{
- LE_DELETE_ARRAY(table);
-}
-
-const void *FontTableCache::find(LETag tableTag) const
-{
- for (int i = 0; i < fTableCacheCurr; i += 1) {
- if (fTableCache[i].tag == tableTag) {
- return fTableCache[i].table;
- }
- }
-
- const void *table = readFontTable(tableTag);
-
- ((FontTableCache *) this)->add(tableTag, table);
-
- return table;
-}
-
-void FontTableCache::add(LETag tableTag, const void *table)
-{
- if (fTableCacheCurr >= fTableCacheSize) {
- le_int32 newSize = fTableCacheSize + TABLE_CACHE_GROW;
-
- fTableCache = (FontTableCacheEntry *) LE_GROW_ARRAY(fTableCache, newSize);
-
- for (le_int32 i = fTableCacheSize; i < newSize; i += 1) {
- fTableCache[i].tag = 0;
- fTableCache[i].table = nullptr;
- }
-
- fTableCacheSize = newSize;
- }
-
- fTableCache[fTableCacheCurr].tag = tableTag;
- fTableCache[fTableCacheCurr].table = table;
-
- fTableCacheCurr += 1;
-}
diff --git a/icu4c/source/samples/layout/FontTableCache.h b/icu4c/source/samples/layout/FontTableCache.h
deleted file mode 100644
index e928b9151..000000000
--- a/icu4c/source/samples/layout/FontTableCache.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- **********************************************************************
- * Copyright (C) 2003-2008, International Business Machines
- * Corporation and others. All Rights Reserved.
- **********************************************************************
- */
-
-#ifndef __FONTTABLECACHE_H
-
-#define __FONTTABLECACHE_H
-
-#include "layout/LETypes.h"
-
-struct FontTableCacheEntry;
-
-class FontTableCache
-{
-public:
- FontTableCache();
-
- virtual ~FontTableCache();
-
- const void *find(LETag tableTag) const;
-
-protected:
- virtual const void *readFontTable(LETag tableTag) const = 0;
- virtual void freeFontTable(const void *table) const;
-
-private:
-
- void add(LETag tableTag, const void *table);
-
- FontTableCacheEntry *fTableCache;
- le_int32 fTableCacheCurr;
- le_int32 fTableCacheSize;
-};
-
-#endif
-
diff --git a/icu4c/source/samples/layout/GDIFontInstance.cpp b/icu4c/source/samples/layout/GDIFontInstance.cpp
deleted file mode 100644
index 97d3c6e78..000000000
--- a/icu4c/source/samples/layout/GDIFontInstance.cpp
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2008, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GDIFontInstance.cpp
- *
- * created on: 08/09/2000
- * created by: Eric R. Mader
- */
-
-#include <windows.h>
-
-#include "layout/LETypes.h"
-#include "layout/LESwaps.h"
-#include "layout/LEFontInstance.h"
-
-#include "GDIFontInstance.h"
-#include "sfnt.h"
-#include "cmaps.h"
-
-GDISurface::GDISurface(HDC theHDC)
- : fHdc(theHDC), fCurrentFont(nullptr)
-{
- // nothing else to do
-}
-
-GDISurface::~GDISurface()
-{
- // nothing to do
-}
-
-void GDISurface::setHDC(HDC theHDC)
-{
- fHdc = theHDC;
- fCurrentFont = nullptr;
-}
-
-void GDISurface::setFont(const GDIFontInstance *font)
-{
-#if 0
- if (fCurrentFont != font) {
- fCurrentFont = font;
- SelectObject(fHdc, font->getFont());
- }
-#else
- SelectObject(fHdc, font->getFont());
-#endif
-}
-
-void GDISurface::drawGlyphs(const LEFontInstance *font, const LEGlyphID *glyphs, le_int32 count, const float *positions,
- le_int32 x, le_int32 y, le_int32 width, le_int32 height)
-{
- TTGlyphID *ttGlyphs = LE_NEW_ARRAY(TTGlyphID, count);
- le_int32 *dx = LE_NEW_ARRAY(le_int32, count);
- float *ps = LE_NEW_ARRAY(float, count * 2 + 2);
- le_int32 out = 0;
- RECT clip;
-
- clip.top = 0;
- clip.left = 0;
- clip.bottom = height;
- clip.right = width;
-
- for (le_int32 g = 0; g < count; g += 1) {
- TTGlyphID ttGlyph = (TTGlyphID) LE_GET_GLYPH(glyphs[g]);
-
- if (ttGlyph < 0xFFFE) {
- ttGlyphs[out] = ttGlyph;
- dx[out] = (le_int32) (positions[g * 2 + 2] - positions[g * 2]);
- ps[out * 2] = positions[g * 2];
- ps[out * 2 + 1] = positions[g * 2 + 1];
- out += 1;
- }
- }
-
- le_int32 dyStart, dyEnd;
-
- setFont((GDIFontInstance *) font);
-
- dyStart = dyEnd = 0;
-
- while (dyEnd < out) {
- float yOffset = ps[dyStart * 2 + 1];
- float xOffset = ps[dyStart * 2];
-
- while (dyEnd < out && yOffset == ps[dyEnd * 2 + 1]) {
- dyEnd += 1;
- }
-
- ExtTextOut(fHdc, x + (le_int32) xOffset, y + (le_int32) yOffset - font->getAscent(), ETO_CLIPPED | ETO_GLYPH_INDEX, &clip,
- (LPCWSTR) &ttGlyphs[dyStart], dyEnd - dyStart, (INT *) &dx[dyStart]);
-
- dyStart = dyEnd;
- }
-
- LE_DELETE_ARRAY(ps);
- LE_DELETE_ARRAY(dx);
- LE_DELETE_ARRAY(ttGlyphs);
-}
-
-GDIFontInstance::GDIFontInstance(GDISurface *surface, TCHAR *faceName, le_int16 pointSize, LEErrorCode &status)
- : FontTableCache(), fSurface(surface), fFont(nullptr),
- fPointSize(pointSize), fUnitsPerEM(0), fAscent(0), fDescent(0), fLeading(0),
- fDeviceScaleX(1), fDeviceScaleY(1), fMapper(nullptr)
-{
- LOGFONT lf;
- FLOAT dpiX, dpiY;
- POINT pt;
- OUTLINETEXTMETRIC otm;
- HDC hdc = surface->getHDC();
-
- if (LE_FAILURE(status)) {
- return;
- }
-
- SaveDC(hdc);
-
- SetGraphicsMode(hdc, GM_ADVANCED);
- ModifyWorldTransform(hdc, nullptr, MWT_IDENTITY);
- SetViewportOrgEx(hdc, 0, 0, nullptr);
- SetWindowOrgEx(hdc, 0, 0, nullptr);
-
- dpiX = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSX);
- dpiY = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSY);
-
-#if 1
- pt.x = (int) (pointSize * dpiX / 72);
- pt.y = (int) (pointSize * dpiY / 72);
-
- DPtoLP(hdc, &pt, 1);
-#else
- pt.x = pt.y = pointSize;
-#endif
-
- lf.lfHeight = - pt.y;
- lf.lfWidth = 0;
- lf.lfEscapement = 0;
- lf.lfOrientation = 0;
- lf.lfWeight = 0;
- lf.lfItalic = 0;
- lf.lfUnderline = 0;
- lf.lfStrikeOut = 0;
- lf.lfCharSet = DEFAULT_CHARSET;
- lf.lfOutPrecision = 0;
- lf.lfClipPrecision = 0;
- lf.lfQuality = 0;
- lf.lfPitchAndFamily = 0;
-
- lstrcpy(lf.lfFaceName, faceName);
-
- fFont = CreateFontIndirect(&lf);
-
- if (fFont == nullptr) {
- status = LE_FONT_FILE_NOT_FOUND_ERROR;
- return;
- }
-
- SelectObject(hdc, fFont);
-
- UINT ret = GetOutlineTextMetrics(hdc, sizeof otm, &otm);
-
- if (ret == 0) {
- status = LE_MISSING_FONT_TABLE_ERROR;
- goto restore;
- }
-
- fUnitsPerEM = otm.otmEMSquare;
- fAscent = otm.otmTextMetrics.tmAscent;
- fDescent = otm.otmTextMetrics.tmDescent;
- fLeading = otm.otmTextMetrics.tmExternalLeading;
-
- status = initMapper();
-
- if (LE_FAILURE(status)) {
- goto restore;
- }
-
-#if 0
- status = initFontTableCache();
-#endif
-
-restore:
- RestoreDC(hdc, -1);
-}
-
-GDIFontInstance::GDIFontInstance(GDISurface *surface, const char *faceName, le_int16 pointSize, LEErrorCode &status)
- : FontTableCache(), fSurface(surface), fFont(nullptr),
- fPointSize(pointSize), fUnitsPerEM(0), fAscent(0), fDescent(0), fLeading(0),
- fDeviceScaleX(1), fDeviceScaleY(1), fMapper(nullptr)
-{
- LOGFONTA lf;
- FLOAT dpiX, dpiY;
- POINT pt;
- OUTLINETEXTMETRIC otm;
- HDC hdc = surface->getHDC();
-
- if (LE_FAILURE(status)) {
- return;
- }
-
- SaveDC(hdc);
-
- SetGraphicsMode(hdc, GM_ADVANCED);
- ModifyWorldTransform(hdc, nullptr, MWT_IDENTITY);
- SetViewportOrgEx(hdc, 0, 0, nullptr);
- SetWindowOrgEx(hdc, 0, 0, nullptr);
-
- dpiX = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSX);
- dpiY = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSY);
-
- fDeviceScaleX = dpiX / 72;
- fDeviceScaleY = dpiY / 72;
-
-#if 1
- pt.x = (int) (pointSize * fDeviceScaleX);
- pt.y = (int) (pointSize * fDeviceScaleY);
-
- DPtoLP(hdc, &pt, 1);
-#else
- pt.x = pt.y = pointSize;
-#endif
-
- lf.lfHeight = - pt.y;
- lf.lfWidth = 0;
- lf.lfEscapement = 0;
- lf.lfOrientation = 0;
- lf.lfWeight = 0;
- lf.lfItalic = 0;
- lf.lfUnderline = 0;
- lf.lfStrikeOut = 0;
- lf.lfCharSet = DEFAULT_CHARSET;
- lf.lfOutPrecision = 0;
- lf.lfClipPrecision = 0;
- lf.lfQuality = 0;
- lf.lfPitchAndFamily = 0;
-
- strcpy(lf.lfFaceName, faceName);
-
- fFont = CreateFontIndirectA(&lf);
-
- if (fFont == nullptr) {
- status = LE_FONT_FILE_NOT_FOUND_ERROR;
- return;
- }
-
- SelectObject(hdc, fFont);
-
- UINT ret = GetOutlineTextMetrics(hdc, sizeof otm, &otm);
-
- if (ret != 0) {
- fUnitsPerEM = otm.otmEMSquare;
- fAscent = otm.otmTextMetrics.tmAscent;
- fDescent = otm.otmTextMetrics.tmDescent;
- fLeading = otm.otmTextMetrics.tmExternalLeading;
- } else {
- const HEADTable *headTable = nullptr;
- const HHEATable *hheaTable = nullptr;
-
- // read unitsPerEm from 'head' table
- headTable = (const HEADTable *) readFontTable(LE_HEAD_TABLE_TAG);
-
- if (headTable == nullptr) {
- status = LE_MISSING_FONT_TABLE_ERROR;
- goto restore;
- }
-
- fUnitsPerEM = SWAPW(headTable->unitsPerEm);
- freeFontTable((const void *)headTable);
-
- hheaTable = (HHEATable *) readFontTable(LE_HHEA_TABLE_TAG);
-
- if (hheaTable == nullptr) {
- status = LE_MISSING_FONT_TABLE_ERROR;
- goto restore;
- }
-
- fAscent = (le_int32) yUnitsToPoints((float) SWAPW(hheaTable->ascent));
- fDescent = (le_int32) yUnitsToPoints((float) SWAPW(hheaTable->descent));
- fLeading = (le_int32) yUnitsToPoints((float) SWAPW(hheaTable->lineGap));
-
- freeFontTable((const void *) hheaTable);
- }
-
- status = initMapper();
-
- if (LE_FAILURE(status)) {
- goto restore;
- }
-
-#if 0
- status = initFontTableCache();
-#endif
-
-restore:
- RestoreDC(hdc, -1);
-}
-
-GDIFontInstance::~GDIFontInstance()
-{
-#if 0
- flushFontTableCache();
- delete[] fTableCache;
-#endif
-
- if (fFont != nullptr) {
- // FIXME: call RemoveObject first?
- DeleteObject(fFont);
- }
-
- delete fMapper;
- fMapper = nullptr;
-}
-
-LEErrorCode GDIFontInstance::initMapper()
-{
- LETag cmapTag = LE_CMAP_TABLE_TAG;
- const CMAPTable *cmap = (const CMAPTable *) readFontTable(cmapTag);
-
- if (cmap == nullptr) {
- return LE_MISSING_FONT_TABLE_ERROR;
- }
-
- fMapper = CMAPMapper::createUnicodeMapper(cmap);
-
- if (fMapper == nullptr) {
- return LE_MISSING_FONT_TABLE_ERROR;
- }
-
- return LE_NO_ERROR;
-}
-
-const void *GDIFontInstance::getFontTable(LETag tableTag) const
-{
- return FontTableCache::find(tableTag);
-}
-
-const void *GDIFontInstance::readFontTable(LETag tableTag) const
-{
- fSurface->setFont(this);
-
- HDC hdc = fSurface->getHDC();
- DWORD stag = SWAPL(tableTag);
- DWORD len = GetFontData(hdc, stag, 0, nullptr, 0);
- void *result = nullptr;
-
- if (len != GDI_ERROR) {
- result = LE_NEW_ARRAY(char, len);
- GetFontData(hdc, stag, 0, result, len);
- }
-
- return result;
-}
-
-void GDIFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
-{
- advance.fX = 0;
- advance.fY = 0;
-
- if (glyph == 0xFFFE || glyph == 0xFFFF) {
- return;
- }
-
-
- GLYPHMETRICS metrics;
- DWORD result;
- MAT2 identity = {{0, 1}, {0, 0}, {0, 0}, {0, 1}};
- HDC hdc = fSurface->getHDC();
-
- fSurface->setFont(this);
-
- result = GetGlyphOutline(hdc, glyph, GGO_GLYPH_INDEX | GGO_METRICS, &metrics, 0, nullptr, &identity);
-
- if (result == GDI_ERROR) {
- return;
- }
-
- advance.fX = metrics.gmCellIncX;
- return;
-}
-
-le_bool GDIFontInstance::getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const
-{
-#if 0
- hsFixedPoint2 pt;
- le_bool result;
-
- result = fFontInstance->getGlyphPoint(glyph, pointNumber, pt);
-
- if (result) {
- point.fX = xUnitsToPoints(pt.fX);
- point.fY = yUnitsToPoints(pt.fY);
- }
-
- return result;
-#else
- return false;
-#endif
-}
-
diff --git a/icu4c/source/samples/layout/GDIFontInstance.h b/icu4c/source/samples/layout/GDIFontInstance.h
deleted file mode 100644
index e0ab1e0e4..000000000
--- a/icu4c/source/samples/layout/GDIFontInstance.h
+++ /dev/null
@@ -1,162 +0,0 @@
-
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2003, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GDIFontInstance.h
- *
- * created on: 08/09/2000
- * created by: Eric R. Mader
- */
-
-#ifndef __GDIFONTINSTANCE_H
-#define __GDIFONTINSTANCE_H
-
-#include <windows.h>
-
-#include "layout/LETypes.h"
-#include "layout/LEFontInstance.h"
-#include "RenderingSurface.h"
-#include "FontTableCache.h"
-#include "cmaps.h"
-
-class GDIFontInstance;
-
-class GDISurface : public RenderingSurface
-{
-public:
- GDISurface(HDC theHDC);
- virtual ~GDISurface();
-
- virtual void drawGlyphs(const LEFontInstance *font, const LEGlyphID *glyphs, le_int32 count,
- const float *positions, le_int32 x, le_int32 y, le_int32 width, le_int32 height);
-
- void setFont(const GDIFontInstance *font);
- HDC getHDC() const;
- void setHDC(HDC theHDC);
-
-private:
- HDC fHdc;
- const GDIFontInstance *fCurrentFont;
-};
-
-inline HDC GDISurface::getHDC() const
-{
- return fHdc;
-}
-
-class GDIFontInstance : public LEFontInstance, protected FontTableCache
-{
-protected:
- GDISurface *fSurface;
- HFONT fFont;
-
- le_int32 fPointSize;
- le_int32 fUnitsPerEM;
- le_int32 fAscent;
- le_int32 fDescent;
- le_int32 fLeading;
-
- float fDeviceScaleX;
- float fDeviceScaleY;
-
- CMAPMapper *fMapper;
-
- virtual const void *readFontTable(LETag tableTag) const;
-
- virtual LEErrorCode initMapper();
-
-public:
- GDIFontInstance(GDISurface *surface, TCHAR *faceName, le_int16 pointSize, LEErrorCode &status);
- GDIFontInstance(GDISurface *surface, const char *faceName, le_int16 pointSize, LEErrorCode &status);
- //GDIFontInstance(GDISurface *surface, le_int16 pointSize);
-
- virtual ~GDIFontInstance();
-
- HFONT getFont() const;
-
- virtual const void *getFontTable(LETag tableTag) const;
-
- virtual le_int32 getUnitsPerEM() const;
-
- virtual le_int32 getAscent() const;
-
- virtual le_int32 getDescent() const;
-
- virtual le_int32 getLeading() const;
-
- virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch) const;
-
- virtual void getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const;
-
- virtual le_bool getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const;
-
- float getXPixelsPerEm() const;
-
- float getYPixelsPerEm() const;
-
- float getScaleFactorX() const;
-
- float getScaleFactorY() const;
-};
-
-inline HFONT GDIFontInstance::getFont() const
-{
- return fFont;
-}
-
-inline le_int32 GDIFontInstance::getUnitsPerEM() const
-{
- return fUnitsPerEM;
-}
-
-inline le_int32 GDIFontInstance::getAscent() const
-{
- return fAscent;
-}
-
-inline le_int32 GDIFontInstance::getDescent() const
-{
- return fDescent;
-}
-
-inline le_int32 GDIFontInstance::getLeading() const
-{
- return fLeading;
-}
-
-inline LEGlyphID GDIFontInstance::mapCharToGlyph(LEUnicode32 ch) const
-{
- return fMapper->unicodeToGlyph(ch);
-}
-
-inline float GDIFontInstance::getXPixelsPerEm() const
-{
- return (float) fPointSize;
-}
-
-inline float GDIFontInstance::getYPixelsPerEm() const
-{
- return (float) fPointSize;
-}
-
-inline float GDIFontInstance::getScaleFactorX() const
-{
- return fDeviceScaleX;
-}
-
-inline float GDIFontInstance::getScaleFactorY() const
-{
- return fDeviceScaleY;
-}
-
-#endif
diff --git a/icu4c/source/samples/layout/GDIFontMap.cpp b/icu4c/source/samples/layout/GDIFontMap.cpp
deleted file mode 100644
index 3ecc9a662..000000000
--- a/icu4c/source/samples/layout/GDIFontMap.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others. *
- * License & terms of use: http://www.unicode.org/copyright.html *
- ******************************************************************************
- ******************************************************************************
- * Copyright (C) 1998-2003, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-
-#include <windows.h>
-
-#include "layout/LEFontInstance.h"
-
-#include "GDIFontInstance.h"
-
-#include "GUISupport.h"
-#include "FontMap.h"
-#include "GDIFontMap.h"
-
-GDIFontMap::GDIFontMap(GDISurface *surface, const char *fileName, le_int16 pointSize, GUISupport *guiSupport, LEErrorCode &status)
- : FontMap(fileName, pointSize, guiSupport, status), fSurface(surface)
-{
- // nothing to do?
-}
-
-GDIFontMap::~GDIFontMap()
-{
- // anything?
-}
-
-const LEFontInstance *GDIFontMap::openFont(const char *fontName, le_int16 pointSize, LEErrorCode &status)
-{
- LEFontInstance *result = new GDIFontInstance(fSurface, fontName, pointSize, status);
-
- if (LE_FAILURE(status)) {
- delete result;
- result = nullptr;
- }
-
- return result;
-}
diff --git a/icu4c/source/samples/layout/GDIFontMap.h b/icu4c/source/samples/layout/GDIFontMap.h
deleted file mode 100644
index 2c07c230c..000000000
--- a/icu4c/source/samples/layout/GDIFontMap.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others. *
- * License & terms of use: http://www.unicode.org/copyright.html *
- ******************************************************************************
- ******************************************************************************
- * Copyright (C) 1998-2003, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-
-#ifndef __GDIFONTMAP_H
-#define __GDIFONTMAP_H
-
-#include <windows.h>
-
-#include "unicode/uscript.h"
-
-#include "layout/LETypes.h"
-#include "layout/LEFontInstance.h"
-
-#include "FontMap.h"
-#include "GUISupport.h"
-#include "GDIFontInstance.h"
-
-#define BUFFER_SIZE 128
-
-class GDIFontMap : public FontMap
-{
-public:
- GDIFontMap(GDISurface *surface, const char *fileName, le_int16 pointSize, GUISupport *guiSupport, LEErrorCode &status);
-
- virtual ~GDIFontMap();
-
-protected:
- virtual const LEFontInstance *openFont(const char *fontName, le_int16 pointSize, LEErrorCode &status);
-
-private:
- GDISurface *fSurface;
-};
-
-#endif
diff --git a/icu4c/source/samples/layout/GDIGUISupport.cpp b/icu4c/source/samples/layout/GDIGUISupport.cpp
deleted file mode 100644
index a0ad38466..000000000
--- a/icu4c/source/samples/layout/GDIGUISupport.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2001, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GDIGUISupport.h
- *
- * created on: 11/06/2001
- * created by: Eric R. Mader
- */
-
-#include <windows.h>
-
-#include "GDIGUISupport.h"
-
-void GDIGUISupport::postErrorMessage(const char *message, const char *title)
-{
- MessageBoxA(nullptr, message, title, MB_ICONERROR);
-}
-
diff --git a/icu4c/source/samples/layout/GDIGUISupport.h b/icu4c/source/samples/layout/GDIGUISupport.h
deleted file mode 100644
index c77d40baf..000000000
--- a/icu4c/source/samples/layout/GDIGUISupport.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2005, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GDIGUISupport.h
- *
- * created on: 11/06/2001
- * created by: Eric R. Mader
- */
-
-#ifndef __GDIGUISUPPORT_H
-#define __GDIGUISUPPORT_H
-
-#include "GUISupport.h"
-
-class GDIGUISupport : public GUISupport
-{
-public:
- GDIGUISupport() {};
- virtual ~GDIGUISupport() {};
-
- virtual void postErrorMessage(const char *message, const char *title);
-};
-
-#endif
diff --git a/icu4c/source/samples/layout/GUISupport.h b/icu4c/source/samples/layout/GUISupport.h
deleted file mode 100644
index a88bf5f87..000000000
--- a/icu4c/source/samples/layout/GUISupport.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2005, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GUISupport.h
- *
- * created on: 11/06/2001
- * created by: Eric R. Mader
- */
-
-#ifndef __GUISUPPORT_H
-#define __GUISUPPORT_H
-
-class GUISupport
-{
-public:
- GUISupport() {};
- virtual ~GUISupport() {};
-
- virtual void postErrorMessage(const char *message, const char *title) = 0;
-};
-
-#endif
diff --git a/icu4c/source/samples/layout/GnomeFontInstance.cpp b/icu4c/source/samples/layout/GnomeFontInstance.cpp
deleted file mode 100644
index b8af64a47..000000000
--- a/icu4c/source/samples/layout/GnomeFontInstance.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2007, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GnomeFontInstance.cpp
- *
- * created on: 08/30/2001
- * created by: Eric R. Mader
- */
-
-#include <gnome.h>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_GLYPH_H
-#include FT_RENDER_H
-#include FT_TRUETYPE_TABLES_H
-#include <cairo.h>
-#include <cairo-ft.h>
-
-#include "layout/LETypes.h"
-#include "layout/LESwaps.h"
-
-#include "GnomeFontInstance.h"
-#include "sfnt.h"
-#include "cmaps.h"
-
-GnomeSurface::GnomeSurface(GtkWidget *theWidget)
- : fWidget(theWidget)
-{
- fCairo = gdk_cairo_create(fWidget->window);
-}
-
-GnomeSurface::~GnomeSurface()
-{
- cairo_destroy(fCairo);
-}
-
-void GnomeSurface::drawGlyphs(const LEFontInstance *font, const LEGlyphID *glyphs, le_int32 count,
- const float *positions, le_int32 x, le_int32 y, le_int32 /*width*/, le_int32 /*height*/)
-{
- GnomeFontInstance *gFont = (GnomeFontInstance *) font;
-
- gFont->rasterizeGlyphs(fCairo, glyphs, count, positions, x, y);
-}
-
-GnomeFontInstance::GnomeFontInstance(FT_Library engine, const char *fontPathName, le_int16 pointSize, LEErrorCode &status)
- : FontTableCache(), fPointSize(pointSize), fUnitsPerEM(0), fAscent(0), fDescent(0), fLeading(0),
- fDeviceScaleX(1), fDeviceScaleY(1), fMapper(nullptr)
-{
- FT_Error error;
-
- fFace = nullptr;
- fCairoFace = nullptr;
-
- error = FT_New_Face(engine, fontPathName, 0, &fFace);
-
- if (error != 0) {
- printf("OOPS! Got error code %d\n", error);
- status = LE_FONT_FILE_NOT_FOUND_ERROR;
- return;
- }
-
- // FIXME: what about the display resolution?
- fDeviceScaleX = ((float) 96) / 72;
- fDeviceScaleY = ((float) 96) / 72;
-
- error = FT_Set_Char_Size(fFace, 0, pointSize << 6, 92, 92);
-
- fCairoFace = cairo_ft_font_face_create_for_ft_face(fFace, 0);
-
- fUnitsPerEM = fFace->units_per_EM;
-
- fAscent = (le_int32) (yUnitsToPoints(fFace->ascender) * fDeviceScaleY);
- fDescent = (le_int32) -(yUnitsToPoints(fFace->descender) * fDeviceScaleY);
- fLeading = (le_int32) (yUnitsToPoints(fFace->height) * fDeviceScaleY) - fAscent - fDescent;
-
- // printf("Face = %s, unitsPerEM = %d, ascent = %d, descent = %d\n", fontPathName, fUnitsPerEM, fAscent, fDescent);
-
- if (error != 0) {
- status = LE_MEMORY_ALLOCATION_ERROR;
- return;
- }
-
- status = initMapper();
-}
-
-GnomeFontInstance::~GnomeFontInstance()
-{
- cairo_font_face_destroy(fCairoFace);
-
- if (fFace != nullptr) {
- FT_Done_Face(fFace);
- }
-}
-
-LEErrorCode GnomeFontInstance::initMapper()
-{
- LETag cmapTag = LE_CMAP_TABLE_TAG;
- const CMAPTable *cmap = (const CMAPTable *) readFontTable(cmapTag);
-
- if (cmap == nullptr) {
- return LE_MISSING_FONT_TABLE_ERROR;
- }
-
- fMapper = CMAPMapper::createUnicodeMapper(cmap);
-
- if (fMapper == nullptr) {
- return LE_MISSING_FONT_TABLE_ERROR;
- }
-
- return LE_NO_ERROR;
-}
-
-const void *GnomeFontInstance::getFontTable(LETag tableTag) const
-{
- return FontTableCache::find(tableTag);
-}
-
-const void *GnomeFontInstance::readFontTable(LETag tableTag) const
-{
- FT_ULong len = 0;
- FT_Byte *result = nullptr;
-
- FT_Load_Sfnt_Table(fFace, tableTag, 0, nullptr, &len);
-
- if (len > 0) {
- result = LE_NEW_ARRAY(FT_Byte, len);
- FT_Load_Sfnt_Table(fFace, tableTag, 0, result, &len);
- }
-
- return result;
-}
-
-void GnomeFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
-{
- advance.fX = 0;
- advance.fY = 0;
-
- if (glyph >= 0xFFFE) {
- return;
- }
-
- FT_Error error;
-
- error = FT_Load_Glyph(fFace, glyph, FT_LOAD_DEFAULT);
-
- if (error != 0) {
- return;
- }
-
- advance.fX = fFace->glyph->metrics.horiAdvance >> 6;
- return;
-}
-
-le_bool GnomeFontInstance::getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const
-{
- FT_Error error;
-
- error = FT_Load_Glyph(fFace, glyph, FT_LOAD_DEFAULT);
-
- if (error != 0) {
- return false;
- }
-
- if (pointNumber >= fFace->glyph->outline.n_points) {
- return false;
- }
-
- point.fX = fFace->glyph->outline.points[pointNumber].x >> 6;
- point.fY = fFace->glyph->outline.points[pointNumber].y >> 6;
-
- return true;
-}
-
-void GnomeFontInstance::rasterizeGlyphs(cairo_t *cairo, const LEGlyphID *glyphs, le_int32 glyphCount, const float *positions,
- le_int32 x, le_int32 y) const
-{
- cairo_glyph_t *glyph_t = LE_NEW_ARRAY(cairo_glyph_t, glyphCount);
- le_int32 in, out;
-
- for (in = 0, out = 0; in < glyphCount; in += 1) {
- TTGlyphID glyph = LE_GET_GLYPH(glyphs[in]);
-
- if (glyph < 0xFFFE) {
- glyph_t[out].index = glyph;
- glyph_t[out].x = x + positions[in*2];
- glyph_t[out].y = y + positions[in*2 + 1];
-
- out += 1;
- }
- }
-
- cairo_set_font_face(cairo, fCairoFace);
- cairo_set_font_size(cairo, getXPixelsPerEm() * getScaleFactorX());
- cairo_show_glyphs(cairo, glyph_t, out);
-
- LE_DELETE_ARRAY(glyph_t);
-}
diff --git a/icu4c/source/samples/layout/GnomeFontInstance.h b/icu4c/source/samples/layout/GnomeFontInstance.h
deleted file mode 100644
index 9d48bc39f..000000000
--- a/icu4c/source/samples/layout/GnomeFontInstance.h
+++ /dev/null
@@ -1,172 +0,0 @@
-
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2006, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GnomeFontInstance.h
- *
- * created on: 08/30/2001
- * created by: Eric R. Mader
- */
-
-#ifndef __GNOMEFONTINSTANCE_H
-#define __GNOMEFONTINSTANCE_H
-
-#include <gnome.h>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_GLYPH_H
-#include <cairo.h>
-
-#include "layout/LETypes.h"
-#include "layout/LEFontInstance.h"
-
-#include "RenderingSurface.h"
-#include "FontTableCache.h"
-#include "cmaps.h"
-
-class GnomeSurface : public RenderingSurface
-{
-public:
- GnomeSurface(GtkWidget *theWidget);
- virtual ~GnomeSurface();
-
- virtual void drawGlyphs(const LEFontInstance *font, const LEGlyphID *glyphs, le_int32 count,
- const float *positions, le_int32 x, le_int32 y, le_int32 width, le_int32 height);
-
- GtkWidget *getWidget() const;
- void setWidget(GtkWidget *theWidget);
-
-private:
- GtkWidget *fWidget;
- cairo_t *fCairo;
-};
-
-class GnomeFontInstance : public LEFontInstance, protected FontTableCache
-{
- protected:
- FT_Face fFace;
-// FT_Glyph fGlyph;
-
- cairo_font_face_t *fCairoFace;
-
- le_int32 fPointSize;
- le_int32 fUnitsPerEM;
- le_int32 fAscent;
- le_int32 fDescent;
- le_int32 fLeading;
-
- float fDeviceScaleX;
- float fDeviceScaleY;
-
- CMAPMapper *fMapper;
-
- virtual const void *readFontTable(LETag tableTag) const;
-
- virtual LEErrorCode initMapper();
-
- public:
- GnomeFontInstance(FT_Library engine, const char *fontPathName, le_int16 pointSize, LEErrorCode &status);
-
- virtual ~GnomeFontInstance();
-
- virtual const void *getFontTable(LETag tableTag) const;
-
- virtual le_int32 getUnitsPerEM() const;
-
- virtual le_int32 getAscent() const;
-
- virtual le_int32 getDescent() const;
-
- virtual le_int32 getLeading() const;
-
- virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch) const;
-
- virtual void getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const;
-
- virtual le_bool getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const;
-
- float getXPixelsPerEm() const;
-
- float getYPixelsPerEm() const;
-
- float getScaleFactorX() const;
-
- float getScaleFactorY() const;
-
- void rasterizeGlyphs(cairo_t *cairo, const LEGlyphID *glyphs, le_int32 glyphCount, const float *positions,
- le_int32 x, le_int32 y) const;
-};
-
-inline GtkWidget *GnomeSurface::getWidget() const
-{
- return fWidget;
-}
-
-inline void GnomeSurface::setWidget(GtkWidget *theWidget)
-{
- fWidget = theWidget;
-}
-
-/*
-inline FT_Instance GnomeFontInstance::getFont() const
-{
- return fInstance;
-}
-*/
-
-inline le_int32 GnomeFontInstance::getUnitsPerEM() const
-{
- return fUnitsPerEM;
-}
-
-inline le_int32 GnomeFontInstance::getAscent() const
-{
- return fAscent;
-}
-
-inline le_int32 GnomeFontInstance::getDescent() const
-{
- return fDescent;
-}
-
-inline le_int32 GnomeFontInstance::getLeading() const
-{
- return fLeading;
-}
-
-inline LEGlyphID GnomeFontInstance::mapCharToGlyph(LEUnicode32 ch) const
-{
- return fMapper->unicodeToGlyph(ch);
-}
-
-inline float GnomeFontInstance::getXPixelsPerEm() const
-{
- return (float) fPointSize;
-}
-
-inline float GnomeFontInstance::getYPixelsPerEm() const
-{
- return (float) fPointSize;
-}
-
-inline float GnomeFontInstance::getScaleFactorX() const
-{
- return fDeviceScaleX;
-}
-
-inline float GnomeFontInstance::getScaleFactorY() const
-{
- return fDeviceScaleY;
-}
-
-#endif
diff --git a/icu4c/source/samples/layout/GnomeFontMap.cpp b/icu4c/source/samples/layout/GnomeFontMap.cpp
deleted file mode 100644
index e7634b982..000000000
--- a/icu4c/source/samples/layout/GnomeFontMap.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others. *
- * License & terms of use: http://www.unicode.org/copyright.html *
- ******************************************************************************
- ******************************************************************************
- * Copyright (C) 1998-2006, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-
-#include <stdio.h>
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-
-#include "layout/LEFontInstance.h"
-#include "GnomeFontInstance.h"
-
-#include "GUISupport.h"
-#include "FontMap.h"
-#include "GnomeFontMap.h"
-
-GnomeFontMap::GnomeFontMap(FT_Library engine, const char *fileName, le_int16 pointSize, GUISupport *guiSupport, LEErrorCode &status)
- : FontMap(fileName, pointSize, guiSupport, status), fEngine(engine)
-{
- // nothing to do?
-}
-
-GnomeFontMap::~GnomeFontMap()
-{
- // anything?
-}
-
-const LEFontInstance *GnomeFontMap::openFont(const char *fontName, le_int16 pointSize, LEErrorCode &status)
-{
- LEFontInstance *result = new GnomeFontInstance(fEngine, fontName, pointSize, status);
-
- if (LE_FAILURE(status)) {
- delete result;
- result = nullptr;
- }
-
- return result;
-}
diff --git a/icu4c/source/samples/layout/GnomeFontMap.h b/icu4c/source/samples/layout/GnomeFontMap.h
deleted file mode 100644
index 7fc166bb3..000000000
--- a/icu4c/source/samples/layout/GnomeFontMap.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *******************************************************************************
- ******************************************************************************
- * Copyright (C) 1998-2006, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-
-#ifndef __GNOMEFONTMAP_H
-#define __GNOMEFONTMAP_H
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-
-#include "unicode/uscript.h"
-
-#include "layout/LETypes.h"
-#include "layout/LEFontInstance.h"
-
-#include "GUISupport.h"
-#include "FontMap.h"
-
-#define BUFFER_SIZE 128
-
-class GnomeFontMap : public FontMap
-{
- public:
- GnomeFontMap(FT_Library engine, const char *fileName, le_int16 pointSize, GUISupport *guiSupport, LEErrorCode &status);
-
- virtual ~GnomeFontMap();
-
- protected:
- virtual const LEFontInstance *openFont(const char *fontName, le_int16 pointSize, LEErrorCode &status);
-
- private:
- FT_Library fEngine;
-};
-
-#endif
diff --git a/icu4c/source/samples/layout/GnomeGUISupport.cpp b/icu4c/source/samples/layout/GnomeGUISupport.cpp
deleted file mode 100644
index e008d05c9..000000000
--- a/icu4c/source/samples/layout/GnomeGUISupport.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2001, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GnomeGUISupport.cpp
- *
- * created on: 11/06/2001
- * created by: Eric R. Mader
- */
-
-#if 1
-#include <gnome.h>
-#else
-#include <stdio.h>
-#endif
-
-#include "GnomeGUISupport.h"
-
-void GnomeGUISupport::postErrorMessage(const char *message, const char *title)
-{
-#if 1
- gchar *s;
- GtkWidget *error;
-
- s = g_strconcat(title, ":\n", message, nullptr);
- error = gnome_error_dialog(s);
- gtk_widget_show(error);
- g_free(s);
-#else
- fprintf(stderr, "%s: %s\n", title, message);
-#endif
-}
-
-
diff --git a/icu4c/source/samples/layout/GnomeGUISupport.h b/icu4c/source/samples/layout/GnomeGUISupport.h
deleted file mode 100644
index b11f5be69..000000000
--- a/icu4c/source/samples/layout/GnomeGUISupport.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2005, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: GnomeGUISupport.h
- *
- * created on: 11/06/2001
- * created by: Eric R. Mader
- */
-
-#ifndef __GNOMEGUISUPPORT_H
-#define __GNOMEGUISUPPORT_H
-
-#include "GUISupport.h"
-
-class GnomeGUISupport : public GUISupport
-{
-public:
- GnomeGUISupport() {};
- virtual ~GnomeGUISupport() {};
-
- virtual void postErrorMessage(const char *message, const char *title);
-};
-
-#endif
diff --git a/icu4c/source/samples/layout/LayoutSample.rc b/icu4c/source/samples/layout/LayoutSample.rc
deleted file mode 100644
index 9b4447134..000000000
--- a/icu4c/source/samples/layout/LayoutSample.rc
+++ /dev/null
@@ -1,123 +0,0 @@
-//Microsoft Developer Studio generated resource script.
-//
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-/*
-*******************************************************************************
-*
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2002-2003, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-*/
-#include <winresrc.h>
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-LAYOUTSAMPLE MENU DISCARDABLE
-BEGIN
- POPUP "&File"
- BEGIN
- MENUITEM "&New Sample\tCtrl+N", IDM_FILE_NEWSAMPLE
- MENUITEM "&Open...\tCtrl+O", IDM_FILE_OPEN
- MENUITEM SEPARATOR
- MENUITEM "&Close\tCtrl+W", IDM_FILE_CLOSE
- MENUITEM "E&xit\tCtrl+Q", IDM_FILE_EXIT
- END
- POPUP "&Help"
- BEGIN
- MENUITEM "&About Layout Sample...", IDM_HELP_ABOUTLAYOUTSAMPLE
- END
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Accelerator
-//
-
-LAYOUTSAMPLE ACCELERATORS DISCARDABLE
-BEGIN
- "N", IDM_FILE_NEWSAMPLE, VIRTKEY, CONTROL, NOINVERT
- "O", IDM_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT
- "Q", IDM_FILE_EXIT, VIRTKEY, CONTROL, NOINVERT
- "W", IDM_FILE_CLOSE, VIRTKEY, CONTROL, NOINVERT
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE DISCARDABLE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE DISCARDABLE
-BEGIN
- "/*\r\n"
- "*******************************************************************************\r\n"
- "*\r\n"
- "* Copyright (C) 2002-2003, International Business Machines\r\n"
- "* Corporation and others. All Rights Reserved.\r\n"
- "*\r\n"
- "*******************************************************************************\r\n"
- "*/\r\n"
- "#include <winresrc.h>\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE DISCARDABLE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-#endif // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/icu4c/source/samples/layout/Makefile.in b/icu4c/source/samples/layout/Makefile.in
deleted file mode 100644
index a8c4a2447..000000000
--- a/icu4c/source/samples/layout/Makefile.in
+++ /dev/null
@@ -1,110 +0,0 @@
-## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html
-##
-## Makefile.in for ICU - samples/layout
-## Copyright (c) 2001-2011, International Business Machines Corporation and
-## others. All Rights Reserved.
-
-## Source directory information
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-
-top_builddir = ../..
-
-include $(top_builddir)/icudefs.mk
-
-## Platform-specific setup
-include @platform_make_fragment@
-
-## Build directory information
-subdir = samples/layout
-
-## Extra files to remove for 'make clean'
-CLEANFILES = *~ $(DEPS)
-
-## Target information
-TARGET = gnomelayout
-CTARGET = cgnomelayout
-
-CPPFLAGS += -DLE_USE_CMEMORY `pkg-config --cflags libgnomeui-2.0 freetype2 cairo` -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/layoutex -I$(top_srcdir)/layout -I$(top_srcdir) -g
-
-LIBS = $(LIBICULX) $(LIBICULE) $(LIBICUUC) $(LIBICUI18N) @LIBS@ @LIB_M@ `pkg-config --libs libgnomeui-2.0 freetype2 cairo`
-
-COMMON=cmaps.o UnicodeReader.o GnomeGUISupport.o FontMap.o GnomeFontMap.o ScriptCompositeFontInstance.o GnomeFontInstance.o FontTableCache.o paragraph.o
-
-OBJECTS=gnomelayout.o
-
-COBJECTS=gnomeglue.o pflow.o rsurface.o ucreader.o cgnomelayout.o
-
-DEPS = $(OBJECTS:.o=.d)
-
-## List of phony targets
-.PHONY : all all-local install install-local clean clean-local \
-distclean distclean-local dist dist-local check check-local
-
-## Clear suffix list
-.SUFFIXES :
-
-## List of standard targets
-all: all-local
-install: install-local
-clean: clean-local
-distclean : distclean-local
-dist: dist-local
-check: all check-local
-c-all: c-all-local
-c-check: c-all c-check-local
-
-all-local: $(TARGET)
-
-c-all-local: $(CTARGET)
-
-install-local:
-
-dist-local:
-
-clean-local:
- test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
- $(RMV) $(COMMON) $(OBJECTS) $(COBJECTS) $(TARGET)
-
-distclean-local: clean-local
- $(RMV) Makefile
-
-check-local: all-local
- $(INVOKE) ./$(TARGET)
-
-c-check-local: c-all-local
- $(INVOKE) ./$(CTARGET)
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-# The following two rules make it possible to
-# compile scrptrun.cpp from the extra/scrptrun directory.
-# they were copied from the default rules in mh-linux which
-# is probably OK because this sample will only run on Linux...
-scrptrun.d: $(top_srcdir)/extra/scrptrun/scrptrun.cpp
- $(SHELL) -ec '$(GEN_DEPS.cc) $< \
- | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
- [ -s $@ ] || rm -f $@'
-
-scrptrun.o: $(top_srcdir)/extra/scrptrun/scrptrun.cpp
- $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
-
-$(TARGET) : $(COMMON) $(OBJECTS)
- $(LINK.cc) -o $@ $^ $(LIBS)
-
-$(CTARGET) : $(COMMON) $(COBJECTS)
- $(LINK.cc) -o $@ $^ $(LIBS)
-
-invoke:
- ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
-
-ifeq (,$(MAKECMDGOALS))
--include $(DEPS)
-else
-ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
--include $(DEPS)
-endif
-endif
diff --git a/icu4c/source/samples/layout/RenderingSurface.h b/icu4c/source/samples/layout/RenderingSurface.h
deleted file mode 100644
index 42b7e6026..000000000
--- a/icu4c/source/samples/layout/RenderingSurface.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2003, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: RenderingFontInstance.h
- *
- * created on: 02/20/2003
- * created by: Eric R. Mader
- */
-
-#ifndef __RENDERINGSURFACE_H
-#define __RENDERINGSURFACE_H
-
-#include "layout/LETypes.h"
-#include "layout/LEFontInstance.h"
-
-class RenderingSurface
-{
-public:
- RenderingSurface() {};
- virtual ~RenderingSurface() {};
-
- virtual void drawGlyphs(const LEFontInstance *font, const LEGlyphID *glyphs, le_int32 count,
- const float *positions, le_int32 x, le_int32 y, le_int32 width, le_int32 height) = 0;
-};
-
-#endif
diff --git a/icu4c/source/samples/layout/Sample.txt b/icu4c/source/samples/layout/Sample.txt
deleted file mode 100644
index 367821b79..000000000
--- a/icu4c/source/samples/layout/Sample.txt
+++ /dev/null
@@ -1 +0,0 @@
-The LayoutEngine does all the work necessary to display Unicode text written in languages with complex writing systems such as Hindi (हिन्दी) Thai (ไทย) and Arabic (العربية). Here's a sample of some text written in Sanskrit: श्रीमद् भगवद्गीता अध्याय अर्जुन विषाद योग धृतराष्ट्र उवाच। धर्मक्षेत्रे कुरुक्षेत्रे समवेता युयुत्सवः मामकाः पाण्डवाश्चैव किमकुर्वत संजय Here's a sample of some text written in Arabic: أساسًا، تتعامل الحواسيب فقط مع الأرقام، وتقوم بتخزين الأحرف والمحارف الأخرى بعد أن تُعطي رقما معينا لكل واحد منها. وقبل اختراع "يونِكود"، كان هناك مئات الأنظمة للتشفير وتخصيص هذه الأرقام للمحارف، ولم يوجد نظام تشفير واحد يحتوي على جميع المحارف الضرورية and here's a sample of some text written in Thai: บทที่๑พายุไซโคลนโดโรธีอาศัยอยู่ท่ามกลางทุ่งใหญ่ในแคนซัสกับลุงเฮนรีชาวไร่และป้าเอ็มภรรยาชาวไร่บ้านของพวกเขาหลังเล็กเพราะไม้สร้างบ้านต้องขนมาด้วยเกวียนเป็นระยะทางหลายไมล์
diff --git a/icu4c/source/samples/layout/ScriptCompositeFontInstance.cpp b/icu4c/source/samples/layout/ScriptCompositeFontInstance.cpp
deleted file mode 100644
index bdeb2e420..000000000
--- a/icu4c/source/samples/layout/ScriptCompositeFontInstance.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2003, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: ScriptCompositeFontInstance.cpp
- *
- * created on: 02/05/2003
- * created by: Eric R. Mader
- */
-
-#include "layout/LETypes.h"
-
-#include "unicode/uscript.h"
-
-#include "FontMap.h"
-
-#include "ScriptCompositeFontInstance.h"
-
-const char ScriptCompositeFontInstance::fgClassID=0;
-
-ScriptCompositeFontInstance::ScriptCompositeFontInstance(FontMap *fontMap)
- : fFontMap(fontMap)
-{
- // nothing else to do
-}
-
-ScriptCompositeFontInstance::~ScriptCompositeFontInstance()
-{
- delete fFontMap;
- fFontMap = nullptr;
-}
-
-void ScriptCompositeFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
-{
- LEErrorCode status = LE_NO_ERROR;
- le_int32 script = LE_GET_SUB_FONT(glyph);
- const LEFontInstance *font = fFontMap->getScriptFont(script, status);
-
- advance.fX = 0;
- advance.fY = 0;
-
- if (LE_SUCCESS(status)) {
- font->getGlyphAdvance(LE_GET_GLYPH(glyph), advance);
- }
-}
-
-le_bool ScriptCompositeFontInstance::getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const
-{
- LEErrorCode status = LE_NO_ERROR;
- le_int32 script = LE_GET_SUB_FONT(glyph);
- const LEFontInstance *font = fFontMap->getScriptFont(script, status);
-
- if (LE_SUCCESS(status)) {
- return font->getGlyphPoint(LE_GET_GLYPH(glyph), pointNumber, point);
- }
-
- return false;
-}
-
-const LEFontInstance *ScriptCompositeFontInstance::getSubFont(const LEUnicode chars[], le_int32 *offset, le_int32 limit, le_int32 script, LEErrorCode &success) const
-{
- if (LE_FAILURE(success)) {
- return nullptr;
- }
-
- if (chars == nullptr || *offset < 0 || limit < 0 || *offset >= limit || script < 0 || script >= scriptCodeCount) {
- success = LE_ILLEGAL_ARGUMENT_ERROR;
- return nullptr;
- }
-
- const LEFontInstance *result = fFontMap->getScriptFont(script, success);
-
- if (LE_FAILURE(success)) {
- return nullptr;
- }
-
- *offset = limit;
- return result;
-}
-
-// This is the really stupid version that doesn't look in any other font for the character...
-// It would be better to also look in the "DEFAULT:" font. Another thing to do would be to
-// look in all the fonts in some order, script code order being the most obvious...
-LEGlyphID ScriptCompositeFontInstance::mapCharToGlyph(LEUnicode32 ch) const
-{
- UErrorCode error = U_ZERO_ERROR;
- LEErrorCode status = LE_NO_ERROR;
- le_int32 script = uscript_getScript(ch, &error);
- const LEFontInstance *scriptFont = fFontMap->getScriptFont(script, status);
- LEGlyphID subFont = LE_SET_SUB_FONT(0, script);
-
- if (LE_FAILURE(status)) {
- return subFont;
- }
-
- LEGlyphID glyph = scriptFont->mapCharToGlyph(ch);
-
- return LE_SET_GLYPH(subFont, glyph);
-}
-
diff --git a/icu4c/source/samples/layout/ScriptCompositeFontInstance.h b/icu4c/source/samples/layout/ScriptCompositeFontInstance.h
deleted file mode 100644
index 9e636cb3d..000000000
--- a/icu4c/source/samples/layout/ScriptCompositeFontInstance.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * %W% %E%
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
- *
- */
-
-#ifndef __SCRIPTCOMPOSITEFONTINSTANCE_H
-#define __SCRIPTCOMPOSITEFONTINSTANCE_H
-
-#include "layout/LETypes.h"
-#include "layout/LEFontInstance.h"
-
-#include "FontMap.h"
-
-// U_NAMESPACE_BEGIN
-
-class ScriptCompositeFontInstance : public LEFontInstance
-{
-public:
-
- ScriptCompositeFontInstance(FontMap *fontMap);
-
- virtual ~ScriptCompositeFontInstance();
-
- /**
- * Get a physical font which can render the given text. For composite fonts,
- * if there is no single physical font which can render all of the text,
- * return a physical font which can render an initial substring of the text,
- * and set the <code>offset</code> parameter to the end of that substring.
- *
- * Internally, the LayoutEngine works with runs of text all in the same
- * font and script, so it is best to call this method with text which is
- * in a single script, passing the script code in as a hint. If you don't
- * know the script of the text, you can use zero, which is the script code
- * for characters used in more than one script.
- *
- * The default implementation of this method is intended for instances of
- * <code>LEFontInstance</code> which represent a physical font. It returns
- * <code>this</code> and indicates that the entire string can be rendered.
- *
- * This method will return a valid <code>LEFontInstance</code> unless you
- * have passed illegal parameters, or an internal error has been encountered.
- * For composite fonts, it may return the warning <code>LE_NO_SUBFONT_WARNING</code>
- * to indicate that the returned font may not be able to render all of
- * the text. Whenever a valid font is returned, the <code>offset</code> parameter
- * will be advanced by at least one.
- *
- * Subclasses which implement composite fonts must override this method.
- * Where it makes sense, they should use the script code as a hint to render
- * characters from the COMMON script in the font which is used for the given
- * script. For example, if the input text is a series of Arabic words separated
- * by spaces, and the script code passed in is <code>arabScriptCode</code> you
- * should return the font used for Arabic characters for all of the input text,
- * including the spaces. If, on the other hand, the input text contains characters
- * which cannot be rendered by the font used for Arabic characters, but which can
- * be rendered by another font, you should return that font for those characters.
- *
- * @param chars - the array of Unicode characters.
- * @param offset - a pointer to the starting offset in the text. On exit this
- * will be set the the limit offset of the text which can be
- * rendered using the returned font.
- * @param limit - the limit offset for the input text.
- * @param script - the script hint.
- * @param success - set to an error code if the arguments are illegal, or no font
- * can be returned for some reason. May also be set to
- * <code>LE_NO_SUBFONT_WARNING</code> if the subfont which
- * was returned cannot render all of the text.
- *
- * @return an <code>LEFontInstance</code> for the sub font which can render the characters, or
- * <code>nullptr</code> if there is an error.
- *
- * @see LEScripts.h
- */
- virtual const LEFontInstance *getSubFont(const LEUnicode chars[], le_int32 *offset, le_int32 limit, le_int32 script, LEErrorCode &success) const;
-
- /**
- * This method maps a single character to a glyph index, using the
- * font's character to glyph map.
- *
- * @param ch - the character
- *
- * @return the glyph index
- */
- virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch) const;
-
- virtual const void *getFontTable(LETag tableTag) const;
-
- virtual le_int32 getUnitsPerEM() const;
-
- virtual le_int32 getAscent() const;
-
- virtual le_int32 getDescent() const;
-
- virtual le_int32 getLeading() const;
-
- virtual void getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const;
-
- virtual le_bool getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const;
-
- float getXPixelsPerEm() const;
-
- float getYPixelsPerEm() const;
-
- float getScaleFactorX() const;
-
- float getScaleFactorY() const;
-
- /**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
- */
- virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
-
- /**
- * ICU "poor man's RTTI", returns a UClassID for this class.
- */
- static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
-
-protected:
- FontMap *fFontMap;
-
-private:
-
- /**
- * The address of this static class variable serves as this class's ID
- * for ICU "poor man's RTTI".
- */
- static const char fgClassID;
-};
-
-inline const void *ScriptCompositeFontInstance::getFontTable(LETag /*tableTag*/) const
-{
- return nullptr;
-}
-
-// Can't get units per EM without knowing which sub-font, so
-// return a value that will make units == points
-inline le_int32 ScriptCompositeFontInstance::getUnitsPerEM() const
-{
- return 1;
-}
-
-inline le_int32 ScriptCompositeFontInstance::getAscent() const
-{
- return fFontMap->getAscent();
-}
-
-inline le_int32 ScriptCompositeFontInstance::getDescent() const
-{
- return fFontMap->getDescent();
-}
-
-inline le_int32 ScriptCompositeFontInstance::getLeading() const
-{
- return fFontMap->getLeading();
-}
-
-inline float ScriptCompositeFontInstance::getXPixelsPerEm() const
-{
- return fFontMap->getPointSize();
-}
-
-inline float ScriptCompositeFontInstance::getYPixelsPerEm() const
-{
- return fFontMap->getPointSize();
-}
-
-// Can't get a scale factor without knowing the sub-font, so
-// return 1.0.
-inline float ScriptCompositeFontInstance::getScaleFactorX() const
-{
- return 1.0;
-}
-
-// Can't get a scale factor without knowing the sub-font, so
-// return 1.0
-inline float ScriptCompositeFontInstance::getScaleFactorY() const
-{
- return 1.0;
-}
-
-// U_NAMESPACE_END
-#endif
diff --git a/icu4c/source/samples/layout/Surface.cpp b/icu4c/source/samples/layout/Surface.cpp
deleted file mode 100644
index 5b0686a07..000000000
--- a/icu4c/source/samples/layout/Surface.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * Copyright (C) 2003, International Business Machines
- * Corporation and others. All Rights Reserved.
- */
-void GDISurface::setFont(RenderingFontInstance *font)
-{
- GDIFontInstance *gFont = (GDIFontInstance *) font;
-
- if (fCurrentFont != font) {
- fCurrentFont = font;
- SelectObject(fHdc, gFont->fFont);
- }
-}
-
-void GDISurface::drawGlyphs(RenderingFontInstance *font, const LEGlyphID *glyphs, le_int32 count, const le_int32 *dx,
- le_int32 x, le_int32 y, le_int32 width, le_int32 height)
-{
- RECT clip;
-
- clip.top = 0;
- clip.left = 0;
- clip.bottom = height;
- clip.right = width;
-
- setFont(font);
-
- ExtTextOut(fHdc, x, y - fAscent, ETO_CLIPPED | ETO_GLYPH_INDEX, &clip,
- glyphs, count, (INT *) dx);
-}
-
diff --git a/icu4c/source/samples/layout/Surface.h b/icu4c/source/samples/layout/Surface.h
deleted file mode 100644
index 40a0c5d4b..000000000
--- a/icu4c/source/samples/layout/Surface.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * Copyright (C) 2003, International Business Machines
- * Corporation and others. All Rights Reserved.
- */
-class Surface
-{
-public:
- Surface(/*what?*/);
-
- void setFont(RenderingFontInstance *font);
-
- void drawGlyphs(RenderingFontInstance *font, const LEGlyphID *glyphs, le_int32 count, const le_int32 *dx,
- le_int32 x, le_int32 y, le_int32 width, le_int32 height);
-};
diff --git a/icu4c/source/samples/layout/UnicodeReader.cpp b/icu4c/source/samples/layout/UnicodeReader.cpp
deleted file mode 100644
index 172a22e44..000000000
--- a/icu4c/source/samples/layout/UnicodeReader.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others. *
- * License & terms of use: http://www.unicode.org/copyright.html *
- ******************************************************************************
- ******************************************************************************
- * Copyright (C) 1998-2005, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "unicode/utypes.h"
-#include "unicode/unistr.h"
-
-#include "layout/LETypes.h"
-
-#include "GUISupport.h"
-#include "UnicodeReader.h"
-
-#define BYTE(b) (((int) b) & 0xFF)
-
-/*
- * Read the text from a file. The text must start with a Unicode Byte
- * Order Mark (BOM) so that we know what order to read the bytes in.
- */
-const char16_t *UnicodeReader::readFile(const char *fileName, GUISupport *guiSupport, int32_t &charCount)
-{
- FILE *f;
- int32_t fileSize;
-
- char16_t *charBuffer;
- char *byteBuffer;
- char startBytes[4] = {'\xA5', '\xA5', '\xA5', '\xA5'};
- char errorMessage[128];
- const char *cp = "";
- int32_t signatureLength = 0;
-
- f = fopen(fileName, "rb");
-
- if( f == nullptr ) {
- sprintf(errorMessage,"Couldn't open %s: %s \n", fileName, strerror(errno));
- guiSupport->postErrorMessage(errorMessage, "Text File Error");
- return 0;
- }
-
- fseek(f, 0, SEEK_END);
- fileSize = ftell(f);
-
- fseek(f, 0, SEEK_SET);
- fread(startBytes, sizeof(char), 4, f);
-
- if (startBytes[0] == '\xFE' && startBytes[1] == '\xFF') {
- cp = "UTF-16BE";
- signatureLength = 2;
- } else if (startBytes[0] == '\xFF' && startBytes[1] == '\xFE') {
- if (startBytes[2] == '\x00' && startBytes[3] == '\x00') {
- cp = "UTF-32LE";
- signatureLength = 4;
- } else {
- cp = "UTF-16LE";
- signatureLength = 2;
- }
- } else if (startBytes[0] == '\xEF' && startBytes[1] == '\xBB' && startBytes[2] == '\xBF') {
- cp = "UTF-8";
- signatureLength = 3;
- } else if (startBytes[0] == '\x0E' && startBytes[1] == '\xFE' && startBytes[2] == '\xFF') {
- cp = "SCSU";
- signatureLength = 3;
- } else if (startBytes[0] == '\x00' && startBytes[1] == '\x00' &&
- startBytes[2] == '\xFE' && startBytes[3] == '\xFF') {
- cp = "UTF-32BE";
- signatureLength = 4;
- } else {
- sprintf(errorMessage, "Couldn't detect the encoding of %s: (%2.2X, %2.2X, %2.2X, %2.2X)\n", fileName,
- BYTE(startBytes[0]), BYTE(startBytes[1]), BYTE(startBytes[2]), BYTE(startBytes[3]));
- guiSupport->postErrorMessage(errorMessage, "Text File Error");
- fclose(f);
- return 0;
- }
-
- fileSize -= signatureLength;
- fseek(f, signatureLength, SEEK_SET);
- byteBuffer = new char[fileSize];
-
- if(byteBuffer == 0) {
- sprintf(errorMessage,"Couldn't get memory for reading %s: %s \n", fileName, strerror(errno));
- guiSupport->postErrorMessage(errorMessage, "Text File Error");
- fclose(f);
- return 0;
- }
-
- fread(byteBuffer, sizeof(char), fileSize, f);
- if( ferror(f) ) {
- sprintf(errorMessage,"Couldn't read %s: %s \n", fileName, strerror(errno));
- guiSupport->postErrorMessage(errorMessage, "Text File Error");
- fclose(f);
- delete[] byteBuffer;
- return 0;
- }
- fclose(f);
-
- UnicodeString myText(byteBuffer, fileSize, cp);
-
- delete[] byteBuffer;
-
- charCount = myText.length();
- charBuffer = LE_NEW_ARRAY(char16_t, charCount + 1);
- if(charBuffer == 0) {
- sprintf(errorMessage,"Couldn't get memory for reading %s: %s \n", fileName, strerror(errno));
- guiSupport->postErrorMessage(errorMessage, "Text File Error");
- return 0;
- }
-
- myText.extract(0, myText.length(), charBuffer);
- charBuffer[charCount] = 0; // NUL terminate for easier reading in the debugger
-
- return charBuffer;
-}
-
diff --git a/icu4c/source/samples/layout/UnicodeReader.h b/icu4c/source/samples/layout/UnicodeReader.h
deleted file mode 100644
index 6868f403b..000000000
--- a/icu4c/source/samples/layout/UnicodeReader.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others. *
- * License & terms of use: http://www.unicode.org/copyright.html *
- ******************************************************************************
- ******************************************************************************
- * Copyright (C) 1998-2001, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-
-#ifndef __UNICODEREADER_H
-#define __UNICODEREADER_H
-
-#include "unicode/utypes.h"
-
-#include "GUISupport.h"
-
-class UnicodeReader
-{
-public:
- UnicodeReader()
- {
- // nothing...
- }
-
- ~UnicodeReader()
- {
- // nothing, too
- }
-
- static const char16_t *readFile(const char *fileName, GUISupport *guiSupport, int32_t &charCount);
-};
-
-#endif
-
diff --git a/icu4c/source/samples/layout/arraymem.h b/icu4c/source/samples/layout/arraymem.h
deleted file mode 100644
index 8939984af..000000000
--- a/icu4c/source/samples/layout/arraymem.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#ifndef __ARRAYMEM_H
-#define __ARRAYMEM_H
-
-#include <stdlib.h>
-
-#define ARRAY_SIZE(array) (sizeof array / sizeof array[0])
-
-#define ARRAY_COPY(dst, src, count) memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0])
-
-#define NEW_ARRAY(type,count) (type *) malloc((count) * sizeof(type))
-
-#define DELETE_ARRAY(array) free((void *) (array))
-
-#define GROW_ARRAY(array,newSize) realloc((void *) (array), (newSize) * sizeof (array)[0])
-
-#endif
diff --git a/icu4c/source/samples/layout/cgnomelayout.c b/icu4c/source/samples/layout/cgnomelayout.c
deleted file mode 100644
index 24d86ef95..000000000
--- a/icu4c/source/samples/layout/cgnomelayout.c
+++ /dev/null
@@ -1,350 +0,0 @@
-
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- ****************************************************************************** *
- *
- * Copyright (C) 1999-2007, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- ****************************************************************************** *
- */
-
-#include <stdbool.h>
-
-#include <gnome.h>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-
-#include "pflow.h"
-
-#include "gnomeglue.h"
-
-#include "arraymem.h"
-
-struct Context
-{
- long width;
- long height;
- pf_flow *paragraph;
-};
-
-typedef struct Context Context;
-
-static FT_Library engine;
-static gs_guiSupport *guiSupport;
-static fm_fontMap *fontMap;
-static le_font *font;
-
-static GSList *appList = NULL;
-
-GtkWidget *newSample(const gchar *fileName);
-void closeSample(GtkWidget *sample);
-
-static void showabout(GtkWidget *widget, gpointer data)
-{
- GtkWidget *aboutBox;
- const gchar *documentedBy[] = {NULL};
- const gchar *writtenBy[] = {
- "Eric Mader",
- NULL
- };
-
- aboutBox = gnome_about_new("Gnome Layout Sample",
- "0.1",
- "Copyright (C) 1998-2006 By International Business Machines Corporation and others. All Rights Reserved.",
- "A simple demo of the ICU LayoutEngine.",
- writtenBy,
- documentedBy,
- "",
- NULL);
-
- gtk_widget_show(aboutBox);
-}
-
-#if 0
-static void notimpl(GtkObject *object, gpointer data)
-{
- gnome_ok_dialog("Not implemented...");
-}
-#endif
-
-static gchar *prettyTitle(const gchar *path)
-{
- const gchar *name = g_basename(path);
- gchar *title = g_strconcat("Gnome Layout Sample - ", name, NULL);
-
- return title;
-}
-
-static void openOK(GtkObject *object, gpointer data)
-{
- GtkFileSelection *fileselection = GTK_FILE_SELECTION(data);
- GtkWidget *app = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(fileselection), "app"));
- Context *context = (Context *) gtk_object_get_data(GTK_OBJECT(app), "context");
- gchar *fileName = g_strdup(gtk_file_selection_get_filename(fileselection));
- pf_flow *newPara;
-
- gtk_widget_destroy(GTK_WIDGET(fileselection));
-
- newPara = pf_factory(fileName, font, guiSupport);
-
- if (newPara != NULL) {
- gchar *title = prettyTitle(fileName);
- GtkWidget *area = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(app), "area"));
-
- if (context->paragraph != NULL) {
- pf_close(context->paragraph);
- }
-
- context->paragraph = newPara;
- gtk_window_set_title(GTK_WINDOW(app), title);
-
- gtk_widget_hide(area);
- pf_breakLines(context->paragraph, context->width, context->height);
- gtk_widget_show_all(area);
-
- g_free(title);
- }
-
- g_free(fileName);
-}
-
-static void openfile(GtkObject *object, gpointer data)
-{
- GtkWidget *app = GTK_WIDGET(data);
- GtkWidget *fileselection;
- GtkWidget *okButton;
- GtkWidget *cancelButton;
-
- fileselection =
- gtk_file_selection_new("Open File");
-
- gtk_object_set_data(GTK_OBJECT(fileselection), "app", app);
-
- okButton =
- GTK_FILE_SELECTION(fileselection)->ok_button;
-
- cancelButton =
- GTK_FILE_SELECTION(fileselection)->cancel_button;
-
- gtk_signal_connect(GTK_OBJECT(fileselection), "destroy",
- GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
-
- gtk_signal_connect(GTK_OBJECT(okButton), "clicked",
- GTK_SIGNAL_FUNC(openOK), fileselection);
-
- gtk_signal_connect_object(GTK_OBJECT(cancelButton), "clicked",
- GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(fileselection));
-
- gtk_window_set_modal(GTK_WINDOW(fileselection), true);
- gtk_widget_show(fileselection);
- gtk_main();
-}
-
-static void newapp(GtkObject *object, gpointer data)
-{
- GtkWidget *app = newSample("Sample.txt");
-
- gtk_widget_show_all(app);
-}
-
-static void closeapp(GtkWidget *widget, gpointer data)
-{
- GtkWidget *app = GTK_WIDGET(data);
-
- closeSample(app);
-}
-
-static void shutdown(GtkObject *object, gpointer data)
-{
- gtk_main_quit();
-}
-
-GnomeUIInfo fileMenu[] =
-{
- GNOMEUIINFO_MENU_NEW_ITEM((gchar *) "_New Sample",
- (gchar *) "Create a new Gnome Layout Sample",
- newapp, NULL),
-
- GNOMEUIINFO_MENU_OPEN_ITEM(openfile, NULL),
- GNOMEUIINFO_SEPARATOR,
- GNOMEUIINFO_MENU_CLOSE_ITEM(closeapp, NULL),
- GNOMEUIINFO_MENU_EXIT_ITEM(shutdown, NULL),
- GNOMEUIINFO_END
-};
-
-GnomeUIInfo helpMenu[] =
-{
- /* GNOMEUIINFO_HELP("gnomelayout"), */
- GNOMEUIINFO_MENU_ABOUT_ITEM(showabout, NULL),
- GNOMEUIINFO_END
-};
-
-GnomeUIInfo mainMenu[] =
-{
- GNOMEUIINFO_SUBTREE(N_((gchar *) "File"), fileMenu),
- GNOMEUIINFO_SUBTREE(N_((gchar *) "Help"), helpMenu),
- GNOMEUIINFO_END
-};
-
-static gint eventDelete(GtkWidget *widget, GdkEvent *event, gpointer data)
-{
- closeSample(widget);
-
- /* indicate that closeapp already destroyed the window */
- return true;
-}
-
-static gint eventConfigure(GtkWidget *widget, GdkEventConfigure *event, Context *context)
-{
- if (context->paragraph != NULL) {
- context->width = event->width;
- context->height = event->height;
-
- if (context->width > 0 && context->height > 0) {
- pf_breakLines(context->paragraph, context->width, context->height);
- }
- }
-
- return true;
-}
-
-static gint eventExpose(GtkWidget *widget, GdkEvent *event, Context *context)
-{
- if (context->paragraph != NULL) {
- gint maxLines = pf_getLineCount(context->paragraph) - 1;
- gint firstLine = 0, lastLine = context->height / pf_getLineHeight(context->paragraph);
- rs_surface *surface = rs_gnomeRenderingSurfaceOpen(widget);
-
- pf_draw(context->paragraph, surface, firstLine, (maxLines < lastLine)? maxLines : lastLine);
-
- rs_gnomeRenderingSurfaceClose(surface);
- }
-
- return true;
-}
-
-GtkWidget *newSample(const gchar *fileName)
-{
- Context *context = NEW_ARRAY(Context, 1);
- gchar *title;
- GtkWidget *app;
- GtkWidget *area;
- GtkStyle *style;
- int i;
-
- context->width = 600;
- context->height = 400;
- context->paragraph = pf_factory(fileName, font, guiSupport);
-
- title = prettyTitle(fileName);
- app = gnome_app_new("gnomeLayout", title);
-
- gtk_object_set_data(GTK_OBJECT(app), "context", context);
-
- gtk_window_set_default_size(GTK_WINDOW(app), 600 - 24, 400);
-
- gnome_app_create_menus_with_data(GNOME_APP(app), mainMenu, app);
-
- gtk_signal_connect(GTK_OBJECT(app), "delete_event",
- GTK_SIGNAL_FUNC(eventDelete), NULL);
-
- area = gtk_drawing_area_new();
- gtk_object_set_data(GTK_OBJECT(app), "area", area);
-
- style = gtk_style_copy(gtk_widget_get_style(area));
-
- for (i = 0; i < 5; i += 1) {
- style->fg[i] = style->white;
- }
-
- gtk_widget_set_style(area, style);
-
- gnome_app_set_contents(GNOME_APP(app), area);
-
- gtk_signal_connect(GTK_OBJECT(area),
- "expose_event",
- GTK_SIGNAL_FUNC(eventExpose),
- context);
-
- gtk_signal_connect(GTK_OBJECT(area),
- "configure_event",
- GTK_SIGNAL_FUNC(eventConfigure),
- context);
-
- appList = g_slist_prepend(appList, app);
-
- g_free(title);
-
- return app;
-}
-
-void closeSample(GtkWidget *app)
-{
- Context *context = (Context *) gtk_object_get_data(GTK_OBJECT(app), "context");
-
- if (context->paragraph != NULL) {
- pf_close(context->paragraph);
- }
-
- DELETE_ARRAY(context);
-
- appList = g_slist_remove(appList, app);
-
- gtk_widget_destroy(app);
-
- if (appList == NULL) {
- gtk_main_quit();
- }
-}
-
-int main (int argc, char *argv[])
-{
- LEErrorCode fontStatus = LE_NO_ERROR;
- poptContext ptctx;
- GtkWidget *app;
- const char *defaultArgs[] = {"Sample.txt", NULL};
- const char **args;
- int i;
-
- FT_Init_FreeType(&engine);
-
- gnome_init_with_popt_table("gnomelayout", "0.1", argc, argv, NULL, 0, &ptctx);
-
- guiSupport = gs_gnomeGuiSupportOpen();
- fontMap = fm_gnomeFontMapOpen(engine, "FontMap.Gnome", 24, guiSupport, &fontStatus);
- font = le_scriptCompositeFontOpen(fontMap);
-
- if (LE_FAILURE(fontStatus)) {
- FT_Done_FreeType(engine);
- return 1;
- }
-
- args = poptGetArgs(ptctx);
-
- if (args == NULL) {
- args = defaultArgs;
- }
-
- for (i = 0; args[i] != NULL; i += 1) {
- app = newSample(args[i]);
-
- gtk_widget_show_all(app);
- }
-
- poptFreeContext(ptctx);
-
- gtk_main();
-
- le_fontClose(font);
- gs_gnomeGuiSupportClose(guiSupport);
-
- FT_Done_FreeType(engine);
-
- exit(0);
-}
diff --git a/icu4c/source/samples/layout/clayout.c b/icu4c/source/samples/layout/clayout.c
deleted file mode 100644
index b10771021..000000000
--- a/icu4c/source/samples/layout/clayout.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2007, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: Layout.cpp
- *
- * created on: 08/03/2000
- * created by: Eric R. Mader
- */
-
-#include <windows.h>
-#include <stdbool.h>
-#include <stdio.h>
-
-#include "playout.h"
-#include "pflow.h"
-
-#include "gdiglue.h"
-#include "ucreader.h"
-
-#include "arraymem.h"
-
-#include "resource.h"
-
-struct Context
-{
- le_int32 width;
- le_int32 height;
- pf_flow *paragraph;
-};
-
-typedef struct Context Context;
-
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-
-#define APP_NAME "LayoutSample"
-
-TCHAR szAppName[] = TEXT(APP_NAME);
-
-void PrettyTitle(HWND hwnd, char *fileName)
-{
- char title[MAX_PATH + 64];
-
- sprintf(title, "%s - %s", APP_NAME, fileName);
-
- SetWindowTextA(hwnd, title);
-}
-
-void InitParagraph(HWND hwnd, Context *context)
-{
- SCROLLINFO si;
-
- if (context->paragraph != NULL) {
- // FIXME: does it matter what we put in the ScrollInfo
- // if the window's been minimized?
- if (context->width > 0 && context->height > 0) {
- pf_breakLines(context->paragraph, context->width, context->height);
- }
-
- si.cbSize = sizeof si;
- si.fMask = SIF_RANGE | SIF_PAGE | SIF_DISABLENOSCROLL;
- si.nMin = 0;
- si.nMax = pf_getLineCount(context->paragraph) - 1;
- si.nPage = context->height / pf_getLineHeight(context->paragraph);
- SetScrollInfo(hwnd, SB_VERT, &si, true);
- }
-}
-
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
-{
- HWND hwnd;
- HACCEL hAccel;
- MSG msg;
- WNDCLASS wndclass;
- LEErrorCode status = LE_NO_ERROR;
-
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
- wndclass.lpfnWndProc = WndProc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = sizeof(LONG);
- wndclass.hInstance = hInstance;
- wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
- wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
- wndclass.lpszMenuName = szAppName;
- wndclass.lpszClassName = szAppName;
-
- if (!RegisterClass(&wndclass)) {
- MessageBox(NULL, TEXT("This demo only runs on Windows 2000!"), szAppName, MB_ICONERROR);
-
- return 0;
- }
-
- hAccel = LoadAccelerators(hInstance, szAppName);
-
- hwnd = CreateWindow(szAppName, NULL,
- WS_OVERLAPPEDWINDOW | WS_VSCROLL,
- CW_USEDEFAULT, CW_USEDEFAULT,
- 600, 400,
- NULL, NULL, hInstance, NULL);
-
- ShowWindow(hwnd, iCmdShow);
- UpdateWindow(hwnd);
-
- while (GetMessage(&msg, NULL, 0, 0)) {
- if (!TranslateAccelerator(hwnd, hAccel, &msg)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
-
- UnregisterClass(szAppName, hInstance);
- return msg.wParam;
-}
-
-LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- HDC hdc;
- Context *context;
- static le_int32 windowCount = 0;
- static fm_fontMap *fontMap = NULL;
- static rs_surface *surface = NULL;
- static gs_guiSupport *guiSupport = NULL;
- static le_font *font = NULL;
-
- switch (message) {
- case WM_CREATE:
- {
- LEErrorCode fontStatus = LE_NO_ERROR;
-
- hdc = GetDC(hwnd);
- guiSupport = gs_gdiGuiSupportOpen();
- surface = rs_gdiRenderingSurfaceOpen(hdc);
-
- fontMap = fm_gdiFontMapOpen(surface, "FontMap.GDI", 24, guiSupport, &fontStatus);
- font = le_scriptCompositeFontOpen(fontMap);
-
- if (LE_FAILURE(fontStatus)) {
- ReleaseDC(hwnd, hdc);
- return -1;
- }
-
- context = NEW_ARRAY(Context, 1);
-
- context->width = 600;
- context->height = 400;
-
- context->paragraph = pf_factory("Sample.txt", font, guiSupport);
- SetWindowLongPtr(hwnd, 0, (LONG_PTR) context);
-
- windowCount += 1;
- ReleaseDC(hwnd, hdc);
-
- PrettyTitle(hwnd, "Sample.txt");
- return 0;
- }
-
- case WM_SIZE:
- {
- context = (Context *) GetWindowLongPtr(hwnd, 0);
- context->width = LOWORD(lParam);
- context->height = HIWORD(lParam);
-
- InitParagraph(hwnd, context);
- return 0;
- }
-
- case WM_VSCROLL:
- {
- SCROLLINFO si;
- le_int32 vertPos;
-
- si.cbSize = sizeof si;
- si.fMask = SIF_ALL;
- GetScrollInfo(hwnd, SB_VERT, &si);
-
- vertPos = si.nPos;
-
- switch (LOWORD(wParam))
- {
- case SB_TOP:
- si.nPos = si.nMin;
- break;
-
- case SB_BOTTOM:
- si.nPos = si.nMax;
- break;
-
- case SB_LINEUP:
- si.nPos -= 1;
- break;
-
- case SB_LINEDOWN:
- si.nPos += 1;
- break;
-
- case SB_PAGEUP:
- si.nPos -= si.nPage;
- break;
-
- case SB_PAGEDOWN:
- si.nPos += si.nPage;
- break;
-
- case SB_THUMBTRACK:
- si.nPos = si.nTrackPos;
- break;
-
- default:
- break;
- }
-
- si.fMask = SIF_POS;
- SetScrollInfo(hwnd, SB_VERT, &si, true);
- GetScrollInfo(hwnd, SB_VERT, &si);
-
- context = (Context *) GetWindowLongPtr(hwnd, 0);
-
- if (context->paragraph != NULL && si.nPos != vertPos) {
- ScrollWindow(hwnd, 0, pf_getLineHeight(context->paragraph) * (vertPos - si.nPos), NULL, NULL);
- UpdateWindow(hwnd);
- }
-
- return 0;
- }
-
- case WM_PAINT:
- {
- PAINTSTRUCT ps;
- SCROLLINFO si;
- le_int32 firstLine, lastLine;
-
- hdc = BeginPaint(hwnd, &ps);
- SetBkMode(hdc, TRANSPARENT);
-
- si.cbSize = sizeof si;
- si.fMask = SIF_ALL;
- GetScrollInfo(hwnd, SB_VERT, &si);
-
- firstLine = si.nPos;
-
- context = (Context *) GetWindowLongPtr(hwnd, 0);
-
- if (context->paragraph != NULL) {
- rs_gdiRenderingSurfaceSetHDC(surface, hdc);
-
- // NOTE: si.nPos + si.nPage may include a partial line at the bottom
- // of the window. We need this because scrolling assumes that the
- // partial line has been painted.
- lastLine = min (si.nPos + (le_int32) si.nPage, pf_getLineCount(context->paragraph) - 1);
-
- pf_draw(context->paragraph, surface, firstLine, lastLine);
- }
-
- EndPaint(hwnd, &ps);
- return 0;
- }
-
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDM_FILE_OPEN:
- {
- OPENFILENAMEA ofn;
- char szFileName[MAX_PATH], szTitleName[MAX_PATH];
- static char szFilter[] = "Text Files (.txt)\0*.txt\0"
- "All Files (*.*)\0*.*\0\0";
-
- ofn.lStructSize = sizeof (OPENFILENAMEA);
- ofn.hwndOwner = hwnd;
- ofn.hInstance = NULL;
- ofn.lpstrFilter = szFilter;
- ofn.lpstrCustomFilter = NULL;
- ofn.nMaxCustFilter = 0;
- ofn.nFilterIndex = 0;
- ofn.lpstrFile = szFileName;
- ofn.nMaxFile = MAX_PATH;
- ofn.lpstrFileTitle = szTitleName;
- ofn.nMaxFileTitle = MAX_PATH;
- ofn.lpstrInitialDir = NULL;
- ofn.lpstrTitle = NULL;
- ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
- ofn.nFileOffset = 0;
- ofn.nFileExtension = 0;
- ofn.lpstrDefExt = "txt";
- ofn.lCustData = 0L;
- ofn.lpfnHook = NULL;
- ofn.lpTemplateName = NULL;
-
- szFileName[0] = '\0';
-
- if (GetOpenFileNameA(&ofn)) {
- pf_flow *newParagraph;
-
- hdc = GetDC(hwnd);
- rs_gdiRenderingSurfaceSetHDC(surface, hdc);
-
- newParagraph = pf_factory(szFileName, font, guiSupport);
-
- if (newParagraph != NULL) {
- context = (Context *) GetWindowLongPtr(hwnd, 0);
-
- if (context->paragraph != NULL) {
- pf_close(context->paragraph);
- }
-
- context->paragraph = newParagraph;
- InitParagraph(hwnd, context);
- PrettyTitle(hwnd, szTitleName);
- InvalidateRect(hwnd, NULL, true);
-
- }
- }
-
- //ReleaseDC(hwnd, hdc);
-
- return 0;
- }
-
- case IDM_FILE_EXIT:
- case IDM_FILE_CLOSE:
- SendMessage(hwnd, WM_CLOSE, 0, 0);
- return 0;
-
- case IDM_HELP_ABOUTLAYOUTSAMPLE:
- MessageBox(hwnd, TEXT("Windows Layout Sample 0.1\n")
- TEXT("Copyright (C) 1998-2005 By International Business Machines Corporation and others.\n")
- TEXT("Author: Eric Mader"),
- szAppName, MB_ICONINFORMATION | MB_OK);
- return 0;
-
- }
- break;
-
-
- case WM_DESTROY:
- {
- context = (Context *) GetWindowLongPtr(hwnd, 0);
-
- if (context != NULL && context->paragraph != NULL) {
- pf_close(context->paragraph);
- }
-
- DELETE_ARRAY(context);
-
- if (--windowCount <= 0) {
- le_fontClose(font);
- rs_gdiRenderingSurfaceClose(surface);
- gs_gdiGuiSupportClose(guiSupport);
-
- PostQuitMessage(0);
- }
-
- return 0;
- }
-
- default:
- return DefWindowProc(hwnd, message, wParam, lParam);
- }
-
- return 0;
-}
diff --git a/icu4c/source/samples/layout/cmaps.cpp b/icu4c/source/samples/layout/cmaps.cpp
deleted file mode 100644
index 7f2576f82..000000000
--- a/icu4c/source/samples/layout/cmaps.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- ****************************************************************************** *
- *
- * Copyright (C) 1999-2003, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- ****************************************************************************** *
- * file name: cmaps.cpp
- *
- * created on: ??/??/2001
- * created by: Eric R. Mader
- */
-
-#include "layout/LETypes.h"
-#include "layout/LESwaps.h"
-
-#include "sfnt.h"
-#include "cmaps.h"
-
-#define SWAPU16(code) ((LEUnicode16) SWAPW(code))
-#define SWAPU32(code) ((LEUnicode32) SWAPL(code))
-
-//
-// Finds the high bit by binary searching
-// through the bits in value.
-//
-le_uint8 highBit(le_uint32 value)
-{
- le_uint8 bit = 0;
-
- if (value >= 1 << 16) {
- value >>= 16;
- bit += 16;
- }
-
- if (value >= 1 << 8) {
- value >>= 8;
- bit += 8;
- }
-
- if (value >= 1 << 4) {
- value >>= 4;
- bit += 4;
- }
-
- if (value >= 1 << 2) {
- value >>= 2;
- bit += 2;
- }
-
- if (value >= 1 << 1) {
- value >>= 1;
- bit += 1;
- }
-
- return bit;
-}
-
-CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
-{
- le_uint16 i;
- le_uint16 nSubtables = SWAPW(cmap->numberSubtables);
- const CMAPEncodingSubtable *subtable = nullptr;
- le_uint32 offset1 = 0, offset10 = 0;
-
- for (i = 0; i < nSubtables; i += 1) {
- const CMAPEncodingSubtableHeader *esh = &cmap->encodingSubtableHeaders[i];
-
- if (SWAPW(esh->platformID) == 3) {
- switch (SWAPW(esh->platformSpecificID)) {
- case 1:
- offset1 = SWAPL(esh->encodingOffset);
- break;
-
- case 10:
- offset10 = SWAPL(esh->encodingOffset);
- break;
- }
- }
- }
-
-
- if (offset10 != 0)
- {
- subtable = (const CMAPEncodingSubtable *) ((const char *) cmap + offset10);
- } else if (offset1 != 0) {
- subtable = (const CMAPEncodingSubtable *) ((const char *) cmap + offset1);
- } else {
- return nullptr;
- }
-
- switch (SWAPW(subtable->format)) {
- case 4:
- return new CMAPFormat4Mapper(cmap, (const CMAPFormat4Encoding *) subtable);
-
- case 12:
- {
- const CMAPFormat12Encoding *encoding = (const CMAPFormat12Encoding *) subtable;
-
- return new CMAPGroupMapper(cmap, encoding->groups, SWAPL(encoding->nGroups));
- }
-
- default:
- break;
- }
-
- return nullptr;
-}
-
-CMAPFormat4Mapper::CMAPFormat4Mapper(const CMAPTable *cmap, const CMAPFormat4Encoding *header)
- : CMAPMapper(cmap)
-{
- le_uint16 segCount = SWAPW(header->segCountX2) / 2;
-
- fEntrySelector = SWAPW(header->entrySelector);
- fRangeShift = SWAPW(header->rangeShift) / 2;
- fEndCodes = &header->endCodes[0];
- fStartCodes = &header->endCodes[segCount + 1]; // + 1 for reservedPad...
- fIdDelta = &fStartCodes[segCount];
- fIdRangeOffset = &fIdDelta[segCount];
-}
-
-LEGlyphID CMAPFormat4Mapper::unicodeToGlyph(LEUnicode32 unicode32) const
-{
- if (unicode32 >= 0x10000) {
- return 0;
- }
-
- LEUnicode16 unicode = (LEUnicode16) unicode32;
- le_uint16 index = 0;
- le_uint16 probe = 1 << fEntrySelector;
- TTGlyphID result = 0;
-
- if (SWAPU16(fStartCodes[fRangeShift]) <= unicode) {
- index = fRangeShift;
- }
-
- while (probe > (1 << 0)) {
- probe >>= 1;
-
- if (SWAPU16(fStartCodes[index + probe]) <= unicode) {
- index += probe;
- }
- }
-
- if (unicode >= SWAPU16(fStartCodes[index]) && unicode <= SWAPU16(fEndCodes[index])) {
- if (fIdRangeOffset[index] == 0) {
- result = (TTGlyphID) unicode;
- } else {
- le_uint16 offset = unicode - SWAPU16(fStartCodes[index]);
- le_uint16 rangeOffset = SWAPW(fIdRangeOffset[index]);
- le_uint16 *glyphIndexTable = (le_uint16 *) ((char *) &fIdRangeOffset[index] + rangeOffset);
-
- result = SWAPW(glyphIndexTable[offset]);
- }
-
- result += SWAPW(fIdDelta[index]);
- } else {
- result = 0;
- }
-
- return LE_SET_GLYPH(0, result);
-}
-
-CMAPFormat4Mapper::~CMAPFormat4Mapper()
-{
- // parent destructor does it all
-}
-
-CMAPGroupMapper::CMAPGroupMapper(const CMAPTable *cmap, const CMAPGroup *groups, le_uint32 nGroups)
- : CMAPMapper(cmap), fGroups(groups)
-{
- le_uint8 bit = highBit(nGroups);
- fPower = 1 << bit;
- fRangeOffset = nGroups - fPower;
-}
-
-LEGlyphID CMAPGroupMapper::unicodeToGlyph(LEUnicode32 unicode32) const
-{
- le_int32 probe = fPower;
- le_int32 range = 0;
-
- if (SWAPU32(fGroups[fRangeOffset].startCharCode) <= unicode32) {
- range = fRangeOffset;
- }
-
- while (probe > (1 << 0)) {
- probe >>= 1;
-
- if (SWAPU32(fGroups[range + probe].startCharCode) <= unicode32) {
- range += probe;
- }
- }
-
- if (SWAPU32(fGroups[range].startCharCode) <= unicode32 && SWAPU32(fGroups[range].endCharCode) >= unicode32) {
- return (LEGlyphID) (SWAPU32(fGroups[range].startGlyphCode) + unicode32 - SWAPU32(fGroups[range].startCharCode));
- }
-
- return 0;
-}
-
-CMAPGroupMapper::~CMAPGroupMapper()
-{
- // parent destructor does it all
-}
-
diff --git a/icu4c/source/samples/layout/cmaps.h b/icu4c/source/samples/layout/cmaps.h
deleted file mode 100644
index 35fc2e080..000000000
--- a/icu4c/source/samples/layout/cmaps.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- ******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- ******************************************************************************
- ****************************************************************************** *
- *
- * Copyright (C) 1999-2003, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- ****************************************************************************** *
- * file name: cmaps.h
- *
- * created on: ??/??/2001
- * created by: Eric R. Mader
- */
-
-#ifndef __CMAPS_H
-#define __CMAPS_H
-
-#include "layout/LETypes.h"
-#include "sfnt.h"
-
-class CMAPMapper
-{
-public:
- virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const = 0;
-
- virtual ~CMAPMapper();
-
- static CMAPMapper *createUnicodeMapper(const CMAPTable *cmap);
-
-protected:
- CMAPMapper(const CMAPTable *cmap);
-
- CMAPMapper() {};
-
-private:
- const CMAPTable *fcmap;
-};
-
-class CMAPFormat4Mapper : public CMAPMapper
-{
-public:
- CMAPFormat4Mapper(const CMAPTable *cmap, const CMAPFormat4Encoding *header);
-
- virtual ~CMAPFormat4Mapper();
-
- virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const;
-
-protected:
- CMAPFormat4Mapper() {};
-
-private:
- le_uint16 fEntrySelector;
- le_uint16 fRangeShift;
- const le_uint16 *fEndCodes;
- const le_uint16 *fStartCodes;
- const le_uint16 *fIdDelta;
- const le_uint16 *fIdRangeOffset;
-};
-
-class CMAPGroupMapper : public CMAPMapper
-{
-public:
- CMAPGroupMapper(const CMAPTable *cmap, const CMAPGroup *groups, le_uint32 nGroups);
-
- virtual ~CMAPGroupMapper();
-
- virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const;
-
-protected:
- CMAPGroupMapper() {};
-
-private:
- le_int32 fPower;
- le_int32 fRangeOffset;
- const CMAPGroup *fGroups;
-};
-
-inline CMAPMapper::CMAPMapper(const CMAPTable *cmap)
- : fcmap(cmap)
-{
- // nothing else to do
-}
-
-inline CMAPMapper::~CMAPMapper()
-{
- LE_DELETE_ARRAY(fcmap);
-}
-
-#endif
-
diff --git a/icu4c/source/samples/layout/gdiglue.cpp b/icu4c/source/samples/layout/gdiglue.cpp
deleted file mode 100644
index 49ca8837f..000000000
--- a/icu4c/source/samples/layout/gdiglue.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#include <windows.h>
-
-#include "unicode/utypes.h"
-#include "loengine.h"
-#include "rsurface.h"
-#include "gsupport.h"
-
-#include "gdiglue.h"
-
-#include "LETypes.h"
-#include "LEFontInstance.h"
-#include "GDIGUISupport.h"
-#include "GDIFontMap.h"
-#include "ScriptCompositeFontInstance.h"
-
-
-U_CDECL_BEGIN
-
-gs_guiSupport *gs_gdiGuiSupportOpen()
-{
- return (gs_guiSupport *) new GDIGUISupport();
-}
-
-void gs_gdiGuiSupportClose(gs_guiSupport *guiSupport)
-{
- GDIGUISupport *gs = (GDIGUISupport *) guiSupport;
-
- delete gs;
-}
-
-rs_surface *rs_gdiRenderingSurfaceOpen(HDC hdc)
-{
- return (rs_surface *) new GDISurface(hdc);
-}
-
-void rs_gdiRenderingSurfaceSetHDC(rs_surface *surface, HDC hdc)
-{
- GDISurface *rs = (GDISurface *) surface;
-
- rs->setHDC(hdc);
-}
-
-void rs_gdiRenderingSurfaceClose(rs_surface *surface)
-{
- GDISurface *rs = (GDISurface *) surface;
-
- delete rs;
-}
-
-fm_fontMap *fm_gdiFontMapOpen(rs_surface *surface, const char *fileName, le_int16 pointSize, gs_guiSupport *guiSupport, LEErrorCode *status)
-{
- return (fm_fontMap *) new GDIFontMap((GDISurface *) surface, fileName, pointSize, (GDIGUISupport *) guiSupport, *status);
-}
-
-void fm_fontMapClose(fm_fontMap *fontMap)
-{
- GDIFontMap *fm = (GDIFontMap *) fontMap;
-
- delete fm;
-}
-
-le_font *le_scriptCompositeFontOpen(fm_fontMap *fontMap)
-{
- return (le_font *) new ScriptCompositeFontInstance((FontMap *) fontMap);
-}
-
-void le_fontClose(le_font *font)
-{
- LEFontInstance *fi = (LEFontInstance *) font;
-
- delete fi;
-}
-
-U_CDECL_END
diff --git a/icu4c/source/samples/layout/gdiglue.h b/icu4c/source/samples/layout/gdiglue.h
deleted file mode 100644
index 7efe947a4..000000000
--- a/icu4c/source/samples/layout/gdiglue.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#ifndef __GDIGLUE_H
-#define __GDIGLUE_H
-
-#include <windows.h>
-
-#include "unicode/utypes.h"
-
-#include "LETypes.h"
-#include "loengine.h"
-#include "gsupport.h"
-#include "rsurface.h"
-
-typedef void fm_fontMap;
-
-U_CDECL_BEGIN
-
-gs_guiSupport *gs_gdiGuiSupportOpen();
-void gs_gdiGuiSupportClose(gs_guiSupport *guiSupport);
-
-rs_surface *rs_gdiRenderingSurfaceOpen(HDC hdc);
-void rs_gdiRenderingSurfaceSetHDC(rs_surface *surface, HDC hdc);
-void rs_gdiRenderingSurfaceClose(rs_surface *surface);
-
-fm_fontMap *fm_gdiFontMapOpen(rs_surface *surface, const char *fileName, le_int16 pointSize, gs_guiSupport *guiSupport, LEErrorCode *status);
-void fm_fontMapClose(fm_fontMap *fontMap);
-
-le_font *le_scriptCompositeFontOpen(fm_fontMap *fontMap);
-void le_fontClose(le_font *font);
-
-U_CDECL_END
-
-#endif
diff --git a/icu4c/source/samples/layout/gnomeglue.cpp b/icu4c/source/samples/layout/gnomeglue.cpp
deleted file mode 100644
index 2ee545706..000000000
--- a/icu4c/source/samples/layout/gnomeglue.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#include <gnome.h>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-
-#include "unicode/utypes.h"
-#include "loengine.h"
-#include "rsurface.h"
-#include "gsupport.h"
-
-#include "gnomeglue.h"
-
-#include "LETypes.h"
-#include "LEFontInstance.h"
-#include "GnomeGUISupport.h"
-#include "GnomeFontMap.h"
-#include "GnomeFontInstance.h"
-#include "ScriptCompositeFontInstance.h"
-
-
-U_CDECL_BEGIN
-
-gs_guiSupport *gs_gnomeGuiSupportOpen()
-{
- return (gs_guiSupport *) new GnomeGUISupport();
-}
-
-void gs_gnomeGuiSupportClose(gs_guiSupport *guiSupport)
-{
- GnomeGUISupport *gs = (GnomeGUISupport *) guiSupport;
-
- delete gs;
-}
-
-rs_surface *rs_gnomeRenderingSurfaceOpen(GtkWidget *theWidget)
-{
- return (rs_surface *) new GnomeSurface(theWidget);
-}
-
-void rs_gnomeRenderingSurfaceClose(rs_surface *surface)
-{
- GnomeSurface *rs = (GnomeSurface *) surface;
-
- delete rs;
-}
-
-fm_fontMap *fm_gnomeFontMapOpen(FT_Library engine, const char *fileName, le_int16 pointSize, gs_guiSupport *guiSupport, LEErrorCode *status)
-{
- return (fm_fontMap *) new GnomeFontMap(engine, fileName, pointSize, (GnomeGUISupport *) guiSupport, *status);
-}
-
-void fm_fontMapClose(fm_fontMap *fontMap)
-{
- GnomeFontMap *fm = (GnomeFontMap *) fontMap;
-
- delete fm;
-}
-
-le_font *le_scriptCompositeFontOpen(fm_fontMap *fontMap)
-{
- return (le_font *) new ScriptCompositeFontInstance((FontMap *) fontMap);
-}
-
-void le_fontClose(le_font *font)
-{
- LEFontInstance *fi = (LEFontInstance *) font;
-
- delete fi;
-}
-
-U_CDECL_END
diff --git a/icu4c/source/samples/layout/gnomeglue.h b/icu4c/source/samples/layout/gnomeglue.h
deleted file mode 100644
index 13e434e1a..000000000
--- a/icu4c/source/samples/layout/gnomeglue.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#ifndef __GNOMEGLUE_H
-#define __GNOMEGLUE_H
-
-#include <gnome.h>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-
-#include "unicode/utypes.h"
-
-#include "LETypes.h"
-#include "loengine.h"
-#include "gsupport.h"
-#include "rsurface.h"
-
-typedef void fm_fontMap;
-
-U_CDECL_BEGIN
-
-gs_guiSupport *gs_gnomeGuiSupportOpen();
-void gs_gnomeGuiSupportClose(gs_guiSupport *guiSupport);
-
-rs_surface *rs_gnomeRenderingSurfaceOpen(GtkWidget *theWidget);
-void rs_gnomeRenderingSurfaceClose(rs_surface *surface);
-
-fm_fontMap *fm_gnomeFontMapOpen(FT_Library engine, const char *fileName, le_int16 pointSize, gs_guiSupport *guiSupport, LEErrorCode *status);
-void fm_fontMapClose(fm_fontMap *fontMap);
-
-le_font *le_scriptCompositeFontOpen(fm_fontMap *fontMap);
-void le_fontClose(le_font *font);
-
-U_CDECL_END
-
-#endif
diff --git a/icu4c/source/samples/layout/gnomelayout.cpp b/icu4c/source/samples/layout/gnomelayout.cpp
deleted file mode 100644
index ea1e0d652..000000000
--- a/icu4c/source/samples/layout/gnomelayout.cpp
+++ /dev/null
@@ -1,347 +0,0 @@
-
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- ****************************************************************************** *
- *
- * Copyright (C) 1999-2007, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- ****************************************************************************** *
- * file name: gnomelayout.cpp
- *
- * created on: 09/04/2001
- * created by: Eric R. Mader
- */
-
-#include <gnome.h>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-
-#include "unicode/ustring.h"
-#include "unicode/uscript.h"
-
-#include "GnomeFontInstance.h"
-
-#include "paragraph.h"
-
-#include "GnomeGUISupport.h"
-#include "GnomeFontMap.h"
-#include "UnicodeReader.h"
-#include "ScriptCompositeFontInstance.h"
-
-#define ARRAY_LENGTH(array) (sizeof array / sizeof array[0])
-
-struct Context
-{
- long width;
- long height;
- Paragraph *paragraph;
-};
-
-static FT_Library engine;
-static GnomeGUISupport *guiSupport;
-static GnomeFontMap *fontMap;
-static ScriptCompositeFontInstance *font;
-
-static GSList *appList = nullptr;
-
-GtkWidget *newSample(const gchar *fileName);
-void closeSample(GtkWidget *sample);
-
-void showabout(GtkWidget */*widget*/, gpointer /*data*/)
-{
- GtkWidget *aboutBox;
- const gchar *documentedBy[] = {nullptr};
- const gchar *writtenBy[] = {
- "Eric Mader",
- nullptr
- };
-
- aboutBox = gnome_about_new("Gnome Layout Sample",
- "0.1",
- "Copyright (C) 1998-2006 By International Business Machines Corporation and others. All Rights Reserved.",
- "A simple demo of the ICU LayoutEngine.",
- writtenBy,
- documentedBy,
- "",
- nullptr);
-
- gtk_widget_show(aboutBox);
-}
-
-void notimpl(GtkObject */*object*/, gpointer /*data*/)
-{
- gnome_ok_dialog("Not implemented...");
-}
-
-gchar *prettyTitle(const gchar *path)
-{
- const gchar *name = g_basename(path);
- gchar *title = g_strconcat("Gnome Layout Sample - ", name, nullptr);
-
- return title;
-}
-
-void openOK(GtkObject */*object*/, gpointer data)
-{
- GtkFileSelection *fileselection = GTK_FILE_SELECTION(data);
- GtkWidget *app = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(fileselection), "app"));
- Context *context = (Context *) gtk_object_get_data(GTK_OBJECT(app), "context");
- gchar *fileName = g_strdup(gtk_file_selection_get_filename(fileselection));
- Paragraph *newPara;
-
- gtk_widget_destroy(GTK_WIDGET(fileselection));
-
- newPara = Paragraph::paragraphFactory(fileName, font, guiSupport);
-
- if (newPara != nullptr) {
- gchar *title = prettyTitle(fileName);
- GtkWidget *area = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(app), "area"));
-
- if (context->paragraph != nullptr) {
- delete context->paragraph;
- }
-
- context->paragraph = newPara;
- gtk_window_set_title(GTK_WINDOW(app), title);
-
- gtk_widget_hide(area);
- context->paragraph->breakLines(context->width, context->height);
- gtk_widget_show_all(area);
-
- g_free(title);
- }
-
- g_free(fileName);
-}
-
-void openfile(GtkObject */*object*/, gpointer data)
-{
- GtkWidget *app = GTK_WIDGET(data);
- GtkWidget *fileselection;
- GtkWidget *okButton;
- GtkWidget *cancelButton;
-
- fileselection =
- gtk_file_selection_new("Open File");
-
- gtk_object_set_data(GTK_OBJECT(fileselection), "app", app);
-
- okButton =
- GTK_FILE_SELECTION(fileselection)->ok_button;
-
- cancelButton =
- GTK_FILE_SELECTION(fileselection)->cancel_button;
-
- gtk_signal_connect(GTK_OBJECT(fileselection), "destroy",
- GTK_SIGNAL_FUNC(gtk_main_quit), nullptr);
-
- gtk_signal_connect(GTK_OBJECT(okButton), "clicked",
- GTK_SIGNAL_FUNC(openOK), fileselection);
-
- gtk_signal_connect_object(GTK_OBJECT(cancelButton), "clicked",
- GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(fileselection));
-
- gtk_window_set_modal(GTK_WINDOW(fileselection), true);
- gtk_widget_show(fileselection);
- gtk_main();
-}
-
-void newapp(GtkObject */*object*/, gpointer /*data*/)
-{
- GtkWidget *app = newSample("Sample.txt");
-
- gtk_widget_show_all(app);
-}
-
-void closeapp(GtkWidget */*widget*/, gpointer data)
-{
- GtkWidget *app = GTK_WIDGET(data);
-
- closeSample(app);
-}
-
-void shutdown(GtkObject */*object*/, gpointer /*data*/)
-{
- gtk_main_quit();
-}
-
-GnomeUIInfo fileMenu[] =
-{
- GNOMEUIINFO_MENU_NEW_ITEM((gchar *) "_New Sample",
- (gchar *) "Create a new Gnome Layout Sample",
- newapp, nullptr),
-
- GNOMEUIINFO_MENU_OPEN_ITEM(openfile, nullptr),
- GNOMEUIINFO_SEPARATOR,
- GNOMEUIINFO_MENU_CLOSE_ITEM(closeapp, nullptr),
- GNOMEUIINFO_MENU_EXIT_ITEM(shutdown, nullptr),
- GNOMEUIINFO_END
-};
-
-GnomeUIInfo helpMenu[] =
-{
- // GNOMEUIINFO_HELP("gnomelayout"),
- GNOMEUIINFO_MENU_ABOUT_ITEM(showabout, nullptr),
- GNOMEUIINFO_END
-};
-
-GnomeUIInfo mainMenu[] =
-{
- GNOMEUIINFO_SUBTREE(N_((gchar *) "File"), fileMenu),
- GNOMEUIINFO_SUBTREE(N_((gchar *) "Help"), helpMenu),
- GNOMEUIINFO_END
-};
-
-gint eventDelete(GtkWidget *widget, GdkEvent */*event*/, gpointer /*data*/)
-{
- closeSample(widget);
-
- // indicate that closeapp already destroyed the window
- return true;
-}
-
-gint eventConfigure(GtkWidget */*widget*/, GdkEventConfigure *event, Context *context)
-{
- if (context->paragraph != nullptr) {
- context->width = event->width;
- context->height = event->height;
-
- if (context->width > 0 && context->height > 0) {
- context->paragraph->breakLines(context->width, context->height);
- }
- }
-
- return true;
-}
-
-gint eventExpose(GtkWidget *widget, GdkEvent */*event*/, Context *context)
-{
- if (context->paragraph != nullptr) {
- gint maxLines = context->paragraph->getLineCount() - 1;
- gint firstLine = 0, lastLine = context->height / context->paragraph->getLineHeight();
- GnomeSurface surface(widget);
-
- context->paragraph->draw(&surface, firstLine, (maxLines < lastLine)? maxLines : lastLine);
- }
-
- return true;
-}
-
-GtkWidget *newSample(const gchar *fileName)
-{
- Context *context = new Context();
-
- context->width = 600;
- context->height = 400;
- context->paragraph = Paragraph::paragraphFactory(fileName, font, guiSupport);
-
- gchar *title = prettyTitle(fileName);
- GtkWidget *app = gnome_app_new("gnomeLayout", title);
-
- gtk_object_set_data(GTK_OBJECT(app), "context", context);
-
- gtk_window_set_default_size(GTK_WINDOW(app), 600 - 24, 400);
-
- gnome_app_create_menus_with_data(GNOME_APP(app), mainMenu, app);
-
- gtk_signal_connect(GTK_OBJECT(app), "delete_event",
- GTK_SIGNAL_FUNC(eventDelete), nullptr);
-
- GtkWidget *area = gtk_drawing_area_new();
- gtk_object_set_data(GTK_OBJECT(app), "area", area);
-
- GtkStyle *style = gtk_style_copy(gtk_widget_get_style(area));
-
- for (int i = 0; i < 5; i += 1) {
- style->fg[i] = style->white;
- }
-
- gtk_widget_set_style(area, style);
-
- gnome_app_set_contents(GNOME_APP(app), area);
-
- gtk_signal_connect(GTK_OBJECT(area),
- "expose_event",
- GTK_SIGNAL_FUNC(eventExpose),
- context);
-
- gtk_signal_connect(GTK_OBJECT(area),
- "configure_event",
- GTK_SIGNAL_FUNC(eventConfigure),
- context);
-
- appList = g_slist_prepend(appList, app);
-
- g_free(title);
-
- return app;
-}
-
-void closeSample(GtkWidget *app)
-{
- Context *context = (Context *) gtk_object_get_data(GTK_OBJECT(app), "context");
-
- if (context->paragraph != nullptr) {
- delete context->paragraph;
- }
-
- delete context;
-
- appList = g_slist_remove(appList, app);
-
- gtk_widget_destroy(app);
-
- if (appList == nullptr) {
- gtk_main_quit();
- }
-}
-
-int main (int argc, char *argv[])
-{
- LEErrorCode fontStatus = LE_NO_ERROR;
- poptContext ptctx;
- GtkWidget *app;
-
- FT_Init_FreeType(&engine);
-
- gnome_init_with_popt_table("gnomelayout", "0.1", argc, argv, nullptr, 0, &ptctx);
-
- guiSupport = new GnomeGUISupport();
- fontMap = new GnomeFontMap(engine, "FontMap.Gnome", 24, guiSupport, fontStatus);
- font = new ScriptCompositeFontInstance(fontMap);
-
- if (LE_FAILURE(fontStatus)) {
- FT_Done_FreeType(engine);
- return 1;
- }
-
- const char *defaultArgs[] = {"Sample.txt", nullptr};
- const char **args = poptGetArgs(ptctx);
-
- if (args == nullptr) {
- args = defaultArgs;
- }
-
- for (int i = 0; args[i] != nullptr; i += 1) {
- app = newSample(args[i]);
-
- gtk_widget_show_all(app);
- }
-
- poptFreeContext(ptctx);
-
- gtk_main();
-
- delete font;
- delete guiSupport;
-
- FT_Done_FreeType(engine);
-
- exit(0);
-}
diff --git a/icu4c/source/samples/layout/gsupport.h b/icu4c/source/samples/layout/gsupport.h
deleted file mode 100644
index 4bb6e6c03..000000000
--- a/icu4c/source/samples/layout/gsupport.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#ifndef __GSUPPORT_H
-#define __GSUPPORT_H
-
-typedef void gs_guiSupport;
-
-void gs_postErrorMessage(gs_guiSupport *guiSupport, const char *message, const char *title);
-
-#endif
diff --git a/icu4c/source/samples/layout/layout.cpp b/icu4c/source/samples/layout/layout.cpp
deleted file mode 100644
index fd5769379..000000000
--- a/icu4c/source/samples/layout/layout.cpp
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2007, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: Layout.cpp
- *
- * created on: 08/03/2000
- * created by: Eric R. Mader
- */
-
-#include <windows.h>
-#include <stdio.h>
-
-#include "paragraph.h"
-
-#include "GDIGUISupport.h"
-#include "GDIFontMap.h"
-#include "UnicodeReader.h"
-#include "ScriptCompositeFontInstance.h"
-
-#include "resource.h"
-
-#define ARRAY_LENGTH(array) (sizeof array / sizeof array[0])
-
-struct Context
-{
- le_int32 width;
- le_int32 height;
- Paragraph *paragraph;
-};
-
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-
-#define APP_NAME "LayoutSample"
-
-TCHAR szAppName[] = TEXT(APP_NAME);
-
-void PrettyTitle(HWND hwnd, char *fileName)
-{
- char title[MAX_PATH + 64];
-
- sprintf(title, "%s - %s", APP_NAME, fileName);
-
- SetWindowTextA(hwnd, title);
-}
-
-void InitParagraph(HWND hwnd, Context *context)
-{
- SCROLLINFO si;
-
- if (context->paragraph != nullptr) {
- // FIXME: does it matter what we put in the ScrollInfo
- // if the window's been minimized?
- if (context->width > 0 && context->height > 0) {
- context->paragraph->breakLines(context->width, context->height);
- }
-
- si.cbSize = sizeof si;
- si.fMask = SIF_RANGE | SIF_PAGE | SIF_DISABLENOSCROLL;
- si.nMin = 0;
- si.nMax = context->paragraph->getLineCount() - 1;
- si.nPage = context->height / context->paragraph->getLineHeight();
- SetScrollInfo(hwnd, SB_VERT, &si, true);
- }
-}
-
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
-{
- HWND hwnd;
- HACCEL hAccel;
- MSG msg;
- WNDCLASS wndclass;
- LEErrorCode status = LE_NO_ERROR;
-
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
- wndclass.lpfnWndProc = WndProc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = sizeof(LONG);
- wndclass.hInstance = hInstance;
- wndclass.hIcon = LoadIcon(nullptr, IDI_APPLICATION);
- wndclass.hCursor = LoadCursor(nullptr, IDC_ARROW);
- wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
- wndclass.lpszMenuName = szAppName;
- wndclass.lpszClassName = szAppName;
-
- if (!RegisterClass(&wndclass)) {
- MessageBox(nullptr, TEXT("This demo only runs on Windows 2000!"), szAppName, MB_ICONERROR);
-
- return 0;
- }
-
- hAccel = LoadAccelerators(hInstance, szAppName);
-
- hwnd = CreateWindow(szAppName, nullptr,
- WS_OVERLAPPEDWINDOW | WS_VSCROLL,
- CW_USEDEFAULT, CW_USEDEFAULT,
- 600, 400,
- nullptr, nullptr, hInstance, nullptr);
-
- ShowWindow(hwnd, iCmdShow);
- UpdateWindow(hwnd);
-
- while (GetMessage(&msg, nullptr, 0, 0)) {
- if (!TranslateAccelerator(hwnd, hAccel, &msg)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
-
- UnregisterClass(szAppName, hInstance);
- return msg.wParam;
-}
-
-LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- HDC hdc;
- Context *context;
- static le_int32 windowCount = 0;
- static GDIFontMap *fontMap = nullptr;
- static GDISurface *surface = nullptr;
- static GDIGUISupport *guiSupport = new GDIGUISupport();
- static ScriptCompositeFontInstance *font = nullptr;
-
- switch (message) {
- case WM_CREATE:
- {
- LEErrorCode fontStatus = LE_NO_ERROR;
-
- hdc = GetDC(hwnd);
- surface = new GDISurface(hdc);
-
- fontMap = new GDIFontMap(surface, "FontMap.GDI", 24, guiSupport, fontStatus);
- font = new ScriptCompositeFontInstance(fontMap);
-
- if (LE_FAILURE(fontStatus)) {
- ReleaseDC(hwnd, hdc);
- return -1;
- }
-
- context = new Context();
-
- context->width = 600;
- context->height = 400;
-
- context->paragraph = Paragraph::paragraphFactory("Sample.txt", font, guiSupport);
- SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR) context);
-
- windowCount += 1;
- ReleaseDC(hwnd, hdc);
-
- PrettyTitle(hwnd, "Sample.txt");
- return 0;
- }
-
- case WM_SIZE:
- {
- context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- context->width = LOWORD(lParam);
- context->height = HIWORD(lParam);
-
- InitParagraph(hwnd, context);
- return 0;
- }
-
- case WM_VSCROLL:
- {
- SCROLLINFO si;
- le_int32 vertPos;
-
- si.cbSize = sizeof si;
- si.fMask = SIF_ALL;
- GetScrollInfo(hwnd, SB_VERT, &si);
-
- vertPos = si.nPos;
-
- switch (LOWORD(wParam))
- {
- case SB_TOP:
- si.nPos = si.nMin;
- break;
-
- case SB_BOTTOM:
- si.nPos = si.nMax;
- break;
-
- case SB_LINEUP:
- si.nPos -= 1;
- break;
-
- case SB_LINEDOWN:
- si.nPos += 1;
- break;
-
- case SB_PAGEUP:
- si.nPos -= si.nPage;
- break;
-
- case SB_PAGEDOWN:
- si.nPos += si.nPage;
- break;
-
- case SB_THUMBTRACK:
- si.nPos = si.nTrackPos;
- break;
-
- default:
- break;
- }
-
- si.fMask = SIF_POS;
- SetScrollInfo(hwnd, SB_VERT, &si, true);
- GetScrollInfo(hwnd, SB_VERT, &si);
-
- context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
-
- if (context->paragraph != nullptr && si.nPos != vertPos) {
- ScrollWindow(hwnd, 0, context->paragraph->getLineHeight() * (vertPos - si.nPos), nullptr, nullptr);
- UpdateWindow(hwnd);
- }
-
- return 0;
- }
-
- case WM_PAINT:
- {
- PAINTSTRUCT ps;
- SCROLLINFO si;
- le_int32 firstLine, lastLine;
-
- hdc = BeginPaint(hwnd, &ps);
- SetBkMode(hdc, TRANSPARENT);
-
- si.cbSize = sizeof si;
- si.fMask = SIF_ALL;
- GetScrollInfo(hwnd, SB_VERT, &si);
-
- firstLine = si.nPos;
-
- context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
-
- if (context->paragraph != nullptr) {
- surface->setHDC(hdc);
-
- // NOTE: si.nPos + si.nPage may include a partial line at the bottom
- // of the window. We need this because scrolling assumes that the
- // partial line has been painted.
- lastLine = min (si.nPos + (le_int32) si.nPage, context->paragraph->getLineCount() - 1);
-
- context->paragraph->draw(surface, firstLine, lastLine);
- }
-
- EndPaint(hwnd, &ps);
- return 0;
- }
-
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDM_FILE_OPEN:
- {
- OPENFILENAMEA ofn;
- char szFileName[MAX_PATH], szTitleName[MAX_PATH];
- static char szFilter[] = "Text Files (.txt)\0*.txt\0"
- "All Files (*.*)\0*.*\0\0";
-
- ofn.lStructSize = sizeof (OPENFILENAMEA);
- ofn.hwndOwner = hwnd;
- ofn.hInstance = nullptr;
- ofn.lpstrFilter = szFilter;
- ofn.lpstrCustomFilter = nullptr;
- ofn.nMaxCustFilter = 0;
- ofn.nFilterIndex = 0;
- ofn.lpstrFile = szFileName;
- ofn.nMaxFile = MAX_PATH;
- ofn.lpstrFileTitle = szTitleName;
- ofn.nMaxFileTitle = MAX_PATH;
- ofn.lpstrInitialDir = nullptr;
- ofn.lpstrTitle = nullptr;
- ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
- ofn.nFileOffset = 0;
- ofn.nFileExtension = 0;
- ofn.lpstrDefExt = "txt";
- ofn.lCustData = 0L;
- ofn.lpfnHook = nullptr;
- ofn.lpTemplateName = nullptr;
-
- szFileName[0] = '\0';
-
- if (GetOpenFileNameA(&ofn)) {
- hdc = GetDC(hwnd);
- surface->setHDC(hdc);
-
- Paragraph *newParagraph = Paragraph::paragraphFactory(szFileName, font, guiSupport);
-
- if (newParagraph != nullptr) {
- context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
-
- if (context->paragraph != nullptr) {
- delete context->paragraph;
- }
-
- context->paragraph = newParagraph;
- InitParagraph(hwnd, context);
- PrettyTitle(hwnd, szTitleName);
- InvalidateRect(hwnd, nullptr, true);
-
- }
- }
-
- //ReleaseDC(hwnd, hdc);
-
- return 0;
- }
-
- case IDM_FILE_EXIT:
- case IDM_FILE_CLOSE:
- SendMessage(hwnd, WM_CLOSE, 0, 0);
- return 0;
-
- case IDM_HELP_ABOUTLAYOUTSAMPLE:
- MessageBox(hwnd, TEXT("Windows Layout Sample 0.1\n")
- TEXT("Copyright (C) 1998-2005 By International Business Machines Corporation and others.\n")
- TEXT("Author: Eric Mader"),
- szAppName, MB_ICONINFORMATION | MB_OK);
- return 0;
-
- }
- break;
-
-
- case WM_DESTROY:
- {
- context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
-
- if (context != nullptr && context->paragraph != nullptr) {
- delete context->paragraph;
- }
-
- delete context;
-
- if (--windowCount <= 0) {
- delete font;
- delete surface;
-
- PostQuitMessage(0);
- }
-
- return 0;
- }
-
- default:
- return DefWindowProc(hwnd, message, wParam, lParam);
- }
-
- return 0;
-}
diff --git a/icu4c/source/samples/layout/layout.sln b/icu4c/source/samples/layout/layout.sln
deleted file mode 100644
index 7ee452a33..000000000
--- a/icu4c/source/samples/layout/layout.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layout", "layout.vcxproj", "{497500ED-DE1D-4B20-B529-F41B5A0FBEEB}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Debug|Win32.ActiveCfg = Debug|Win32
- {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Debug|Win32.Build.0 = Debug|Win32
- {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Debug|x64.ActiveCfg = Debug|x64
- {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Debug|x64.Build.0 = Debug|x64
- {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Release|Win32.ActiveCfg = Release|Win32
- {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Release|Win32.Build.0 = Release|Win32
- {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Release|x64.ActiveCfg = Release|x64
- {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/layout/layout.vcxproj b/icu4c/source/samples/layout/layout.vcxproj
deleted file mode 100644
index 31ac1d942..000000000
--- a/icu4c/source/samples/layout/layout.vcxproj
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{497500ED-DE1D-4B20-B529-F41B5A0FBEEB}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/layout.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;NDEBUG;_CONSOLE;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/layout.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>..\..\..\lib\iculx.lib;..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/layout.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <ProgramDatabaseFile>.\x86\Release/layout.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\x64\Release/layout.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN64;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/layout.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>..\..\..\lib64\iculx.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/layout.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <ProgramDatabaseFile>.\x64\Release/layout.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/layout.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;_DEBUG;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/layout.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>..\..\..\lib\iculxd.lib;..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/layout.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/layout.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\x64\Debug/layout.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;WIN64;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/layout.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>..\..\..\lib64\iculxd.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/layout.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/layout.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="cmaps.cpp" />
- <ClCompile Include="FontMap.cpp" />
- <ClCompile Include="FontTableCache.cpp" />
- <ClCompile Include="GDIFontInstance.cpp" />
- <ClCompile Include="GDIFontMap.cpp" />
- <ClCompile Include="GDIGUISupport.cpp" />
- <ClCompile Include="layout.cpp" />
- <ClCompile Include="paragraph.cpp" />
- <ClCompile Include="ScriptCompositeFontInstance.cpp" />
- <ClCompile Include="UnicodeReader.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="LayoutSample.rc" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="cmaps.h" />
- <ClInclude Include="FontMap.h" />
- <ClInclude Include="FontTableCache.h" />
- <ClInclude Include="GDIFontInstance.h" />
- <ClInclude Include="GDIFontMap.h" />
- <ClInclude Include="GDIGUISupport.h" />
- <ClInclude Include="GUISupport.h" />
- <ClInclude Include="paragraph.h" />
- <ClInclude Include="RenderingSurface.h" />
- <ClInclude Include="resource.h" />
- <ClInclude Include="ScriptCompositeFontInstance.h" />
- <ClInclude Include="sfnt.h" />
- <ClInclude Include="UnicodeReader.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/layout/layout.vcxproj.filters b/icu4c/source/samples/layout/layout.vcxproj.filters
deleted file mode 100644
index 4a28bdf48..000000000
--- a/icu4c/source/samples/layout/layout.vcxproj.filters
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{d95d859b-6ae7-4ac2-953c-511411f74b77}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{8e82936c-dd21-49c1-9174-d88411b4b9c7}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{d7b63b8f-73c9-48ca-b0cb-fa6a537901c4}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="cmaps.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="FontMap.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="FontTableCache.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="GDIFontInstance.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="GDIFontMap.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="GDIGUISupport.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="layout.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="paragraph.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="ScriptCompositeFontInstance.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="UnicodeReader.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="LayoutSample.rc">
- <Filter>Source Files</Filter>
- </ResourceCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="cmaps.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="FontMap.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="FontTableCache.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="GDIFontInstance.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="GDIFontMap.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="GDIGUISupport.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="GUISupport.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="paragraph.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="RenderingSurface.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="resource.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="ScriptCompositeFontInstance.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="sfnt.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="UnicodeReader.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/layout/paragraph.cpp b/icu4c/source/samples/layout/paragraph.cpp
deleted file mode 100644
index 5bfc074f9..000000000
--- a/icu4c/source/samples/layout/paragraph.cpp
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2015, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: Paragraph.cpp
- *
- * created on: 09/06/2000
- * created by: Eric R. Mader
- */
-
-#include "unicode/utypes.h"
-#include "unicode/uchar.h"
-#include "unicode/ubidi.h"
-#include "unicode/ustring.h"
-
-#include "layout/ParagraphLayout.h"
-
-#include "RenderingSurface.h"
-
-#include "paragraph.h"
-#include "UnicodeReader.h"
-
-#define MARGIN 10
-#define LINE_GROW 32
-#define PARA_GROW 8
-
-#define CH_LF 0x000A
-#define CH_CR 0x000D
-#define CH_LSEP 0x2028
-#define CH_PSEP 0x2029
-
-static LEUnicode *skipLineEnd(LEUnicode *ptr)
-{
- if (ptr[0] == CH_CR && ptr[1] == CH_LF) {
- ptr += 1;
- }
-
- return ptr + 1;
-}
-
-static le_int32 findRun(const RunArray *runArray, le_int32 offset)
-{
- le_int32 runCount = runArray->getCount();
-
- for (le_int32 run = 0; run < runCount; run += 1) {
- if (runArray->getLimit(run) > offset) {
- return run;
- }
- }
-
- return -1;
-}
-
-static void subsetFontRuns(const FontRuns *fontRuns, le_int32 start, le_int32 limit, FontRuns *sub)
-{
- le_int32 startRun = findRun(fontRuns, start);
- le_int32 endRun = findRun(fontRuns, limit - 1);
-
- sub->reset();
-
- for (le_int32 run = startRun; run <= endRun; run += 1) {
- const LEFontInstance *runFont = fontRuns->getFont(run);
- le_int32 runLimit = fontRuns->getLimit(run) - start;
-
- if (run == endRun) {
- runLimit = limit - start;
- }
-
- sub->add(runFont, runLimit);
- }
-}
-
-Paragraph::Paragraph(const LEUnicode chars[], int32_t charCount, const FontRuns *fontRuns, LEErrorCode &status)
- : fParagraphLayout(nullptr), fParagraphCount(0), fParagraphMax(PARA_GROW), fParagraphGrow(PARA_GROW),
- fLineCount(0), fLinesMax(LINE_GROW), fLinesGrow(LINE_GROW), fLines(nullptr), fChars(nullptr),
- fLineHeight(-1), fAscent(-1), fWidth(-1), fHeight(-1), fParagraphLevel(UBIDI_DEFAULT_LTR)
-{
- static const LEUnicode separators[] = {CH_LF, CH_CR, CH_LSEP, CH_PSEP, 0x0000};
-
- if (LE_FAILURE(status)) {
- return;
- }
-
- le_int32 ascent = 0;
- le_int32 descent = 0;
- le_int32 leading = 0;
-
- LocaleRuns *locales = nullptr;
- FontRuns fr(0);
-
- fLines = LE_NEW_ARRAY(const ParagraphLayout::Line *, fLinesMax);
- fParagraphLayout = LE_NEW_ARRAY(ParagraphLayout *, fParagraphMax);
-
- fChars = LE_NEW_ARRAY(LEUnicode, charCount + 1);
- LE_ARRAY_COPY(fChars, chars, charCount);
- fChars[charCount] = 0;
-
- LEUnicode *pStart = &fChars[0];
-
- while (*pStart != 0) {
- LEUnicode *pEnd = u_strpbrk(pStart, separators);
- le_int32 pAscent, pDescent, pLeading;
- ParagraphLayout *paragraphLayout = nullptr;
-
- if (pEnd == nullptr) {
- pEnd = &fChars[charCount];
- }
-
- if (pEnd != pStart) {
- subsetFontRuns(fontRuns, pStart - fChars, pEnd - fChars, &fr);
-
- paragraphLayout = new ParagraphLayout(pStart, pEnd - pStart, &fr, nullptr, nullptr, locales, fParagraphLevel, false, status);
-
- if (LE_FAILURE(status)) {
- delete paragraphLayout;
- break; // return? something else?
- }
-
- if (fParagraphLevel == UBIDI_DEFAULT_LTR) {
- fParagraphLevel = paragraphLayout->getParagraphLevel();
- }
-
- pAscent = paragraphLayout->getAscent();
- pDescent = paragraphLayout->getDescent();
- pLeading = paragraphLayout->getLeading();
-
- if (pAscent > ascent) {
- ascent = pAscent;
- }
-
- if (pDescent > descent) {
- descent = pDescent;
- }
-
- if (pLeading > leading) {
- leading = pLeading;
- }
- }
-
- if (fParagraphCount >= fParagraphMax) {
- fParagraphLayout = (ParagraphLayout **) LE_GROW_ARRAY(fParagraphLayout, fParagraphMax + fParagraphGrow);
- fParagraphMax += fParagraphGrow;
- }
-
- fParagraphLayout[fParagraphCount++] = paragraphLayout;
-
- if (*pEnd == 0) {
- break;
- }
-
- pStart = skipLineEnd(pEnd);
- }
-
- fLineHeight = ascent + descent + leading;
- fAscent = ascent;
-}
-
-Paragraph::~Paragraph()
-{
- for (le_int32 line = 0; line < fLineCount; line += 1) {
- delete /*(LineInfo *)*/ fLines[line];
- }
-
- for (le_int32 paragraph = 0; paragraph < fParagraphCount; paragraph += 1) {
- delete fParagraphLayout[paragraph];
- }
-
- LE_DELETE_ARRAY(fLines);
- LE_DELETE_ARRAY(fParagraphLayout);
- LE_DELETE_ARRAY(fChars);
-}
-
-void Paragraph::addLine(const ParagraphLayout::Line *line)
-{
- if (fLineCount >= fLinesMax) {
- fLines = (const ParagraphLayout::Line **) LE_GROW_ARRAY(fLines, fLinesMax + fLinesGrow);
- fLinesMax += fLinesGrow;
- }
-
- fLines[fLineCount++] = line;
-}
-
-void Paragraph::breakLines(le_int32 width, le_int32 height)
-{
- fHeight = height;
-
- // don't re-break if the width hasn't changed
- if (fWidth == width) {
- return;
- }
-
- fWidth = width;
-
- float lineWidth = (float) (width - 2 * MARGIN);
- const ParagraphLayout::Line *line;
-
- // Free the old LineInfo's...
- for (le_int32 li = 0; li < fLineCount; li += 1) {
- delete fLines[li];
- }
-
- fLineCount = 0;
-
- for (le_int32 p = 0; p < fParagraphCount; p += 1) {
- ParagraphLayout *paragraphLayout = fParagraphLayout[p];
-
- if (paragraphLayout != nullptr) {
- paragraphLayout->reflow();
- while ((line = paragraphLayout->nextLine(lineWidth)) != nullptr) {
- addLine(line);
- }
- } else {
- addLine(nullptr);
- }
- }
-}
-
-void Paragraph::draw(RenderingSurface *surface, le_int32 firstLine, le_int32 lastLine)
-{
- le_int32 li, x, y;
-
- x = MARGIN;
- y = fAscent;
-
- for (li = firstLine; li <= lastLine; li += 1) {
- const ParagraphLayout::Line *line = fLines[li];
-
- if (line != nullptr) {
- le_int32 runCount = line->countRuns();
- le_int32 run;
-
- if (fParagraphLevel == UBIDI_RTL) {
- le_int32 lastX = line->getWidth();
-
- x = (fWidth - lastX - MARGIN);
- }
-
-
- for (run = 0; run < runCount; run += 1) {
- const ParagraphLayout::VisualRun *visualRun = line->getVisualRun(run);
- le_int32 glyphCount = visualRun->getGlyphCount();
- const LEFontInstance *font = visualRun->getFont();
- const LEGlyphID *glyphs = visualRun->getGlyphs();
- const float *positions = visualRun->getPositions();
-
- surface->drawGlyphs(font, glyphs, glyphCount, positions, x, y, fWidth, fHeight);
- }
- }
-
- y += fLineHeight;
- }
-}
-
-Paragraph *Paragraph::paragraphFactory(const char *fileName, const LEFontInstance *font, GUISupport *guiSupport)
-{
- LEErrorCode status = LE_NO_ERROR;
- le_int32 charCount;
- const char16_t *text = UnicodeReader::readFile(fileName, guiSupport, charCount);
- Paragraph *result = nullptr;
-
- if (text == nullptr) {
- return nullptr;
- }
-
- FontRuns fontRuns(0);
-
- fontRuns.add(font, charCount);
-
- result = new Paragraph(text, charCount, &fontRuns, status);
-
- if (LE_FAILURE(status)) {
- delete result;
- result = nullptr;
- }
-
- LE_DELETE_ARRAY(text);
-
- return result;
-}
-
diff --git a/icu4c/source/samples/layout/paragraph.h b/icu4c/source/samples/layout/paragraph.h
deleted file mode 100644
index 822c1cfb9..000000000
--- a/icu4c/source/samples/layout/paragraph.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2007, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: Paragraph.h
- *
- * created on: 09/06/2000
- * created by: Eric R. Mader
- */
-#ifndef __PARAGRAPH_H
-#define __PARAGRAPH_H
-
-#include "unicode/utypes.h"
-#include "unicode/ubidi.h"
-
-#include "layout/LEFontInstance.h"
-#include "layout/ParagraphLayout.h"
-
-#include "GUISupport.h"
-#include "RenderingSurface.h"
-
-U_NAMESPACE_USE
-
-#define MARGIN 10
-
-#if 0
-class LineInfo;
-#endif
-
-class Paragraph
-{
-public:
- Paragraph(const LEUnicode chars[], le_int32 charCount, const FontRuns *fontRuns, LEErrorCode &status);
-
- ~Paragraph();
-
- le_int32 getAscent();
- le_int32 getLineHeight();
- le_int32 getLineCount();
- void breakLines(le_int32 width, le_int32 height);
- void draw(RenderingSurface *surface, le_int32 firstLine, le_int32 lastLine);
-
- static Paragraph *paragraphFactory(const char *fileName, const LEFontInstance *font, GUISupport *guiSupport);
-
-private:
- void addLine(const ParagraphLayout::Line *line);
-
- ParagraphLayout **fParagraphLayout;
-
- le_int32 fParagraphCount;
- le_int32 fParagraphMax;
- le_int32 fParagraphGrow;
-
- le_int32 fLineCount;
- le_int32 fLinesMax;
- le_int32 fLinesGrow;
-
- const ParagraphLayout::Line **fLines;
- LEUnicode *fChars;
-
- le_int32 fLineHeight;
- le_int32 fAscent;
- le_int32 fWidth;
- le_int32 fHeight;
- UBiDiLevel fParagraphLevel;
-};
-
-inline le_int32 Paragraph::getLineHeight()
-{
- return fLineHeight;
-}
-
-inline le_int32 Paragraph::getLineCount()
-{
- return fLineCount;
-}
-
-inline le_int32 Paragraph::getAscent()
-{
- return fAscent;
-}
-
-#endif
-
-
diff --git a/icu4c/source/samples/layout/pflow.c b/icu4c/source/samples/layout/pflow.c
deleted file mode 100644
index 52967c234..000000000
--- a/icu4c/source/samples/layout/pflow.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#include <stdbool.h>
-
-#include "unicode/utypes.h"
-#include "unicode/uchar.h"
-#include "unicode/ubidi.h"
-#include "unicode/ustring.h"
-
-#include "layout/LETypes.h"
-
-#include "layout/loengine.h"
-#include "layout/playout.h"
-#include "layout/plruns.h"
-
-#include "pflow.h"
-
-#include "arraymem.h"
-#include "ucreader.h"
-
-/*
- * Move the line below out of this comment
- * to add a locale run to the pl_paragraphs
- * that are created.
-#define TEST_LOCALE "zh_TW"
- */
-
-#define MARGIN 10
-#define LINE_GROW 32
-#define PARA_GROW 8
-
-#define CH_LF 0x000A
-#define CH_CR 0x000D
-#define CH_LSEP 0x2028
-#define CH_PSEP 0x2029
-
-struct pf_object
-{
- pl_paragraph **fParagraphLayout;
-
- le_int32 fParagraphCount;
- le_int32 fParagraphMax;
- le_int32 fParagraphGrow;
-
- le_int32 fLineCount;
- le_int32 fLinesMax;
- le_int32 fLinesGrow;
-
- pl_line **fLines;
-
- LEUnicode *fChars;
-
- le_int32 fLineHeight;
- le_int32 fAscent;
- le_int32 fWidth;
- le_int32 fHeight;
- UBiDiLevel fParagraphLevel;
-};
-
-typedef struct pf_object pf_object;
-
-
-static LEUnicode *skipLineEnd(LEUnicode *ptr)
-{
- if (ptr[0] == CH_CR && ptr[1] == CH_LF) {
- ptr += 1;
- }
-
- return ptr + 1;
-}
-
-static le_int32 findFontRun(const pl_fontRuns *fontRuns, le_int32 offset)
-{
- le_int32 runCount = pl_getFontRunCount(fontRuns);
- le_int32 run;
-
- for (run = 0; run < runCount; run += 1) {
- if (pl_getFontRunLimit(fontRuns, run) > offset) {
- return run;
- }
- }
-
- return -1;
-}
-
-static void subsetFontRuns(const pl_fontRuns *fontRuns, le_int32 start, le_int32 limit, pl_fontRuns *sub)
-{
- le_int32 startRun = findFontRun(fontRuns, start);
- le_int32 endRun = findFontRun(fontRuns, limit - 1);
- le_int32 run;
-
- pl_resetFontRuns(sub);
-
- for (run = startRun; run <= endRun; run += 1) {
- const le_font *runFont = pl_getFontRunFont(fontRuns, run);
- le_int32 runLimit = pl_getFontRunLimit(fontRuns, run) - start;
-
- if (run == endRun) {
- runLimit = limit - start;
- }
-
- pl_addFontRun(sub, runFont, runLimit);
- }
-}
-
-pf_flow *pf_create(const LEUnicode chars[], le_int32 charCount, const pl_fontRuns *fontRuns, LEErrorCode *status)
-{
- pf_object *flow;
- le_int32 ascent = 0;
- le_int32 descent = 0;
- le_int32 leading = 0;
- pl_localeRuns *locales = NULL;
- pl_fontRuns *fr;
- LEUnicode *pStart;
- static const LEUnicode separators[] = {CH_LF, CH_CR, CH_LSEP, CH_PSEP, 0x0000};
-
- if (LE_FAILURE(*status)) {
- return NULL;
- }
-
- flow = NEW_ARRAY(pf_object, 1);
-
- flow->fParagraphLayout = NULL;
- flow->fParagraphCount = 0;
- flow->fParagraphMax = PARA_GROW;
- flow->fParagraphGrow = PARA_GROW;
- flow->fLineCount = 0;
- flow->fLinesMax = LINE_GROW;
- flow->fLinesGrow = LINE_GROW;
- flow->fLines = NULL;
- flow->fChars = NULL;
- flow->fLineHeight = -1;
- flow->fAscent = -1;
- flow->fWidth = -1;
- flow->fHeight = -1;
- flow->fParagraphLevel = UBIDI_DEFAULT_LTR;
-
- fr = pl_openEmptyFontRuns(0);
-
-#ifdef TEST_LOCALE
- locales = pl_openEmptyLocaleRuns(0);
-#endif
-
- flow->fLines = NEW_ARRAY(pl_line *, flow->fLinesMax);
- flow->fParagraphLayout = NEW_ARRAY(pl_paragraph *, flow->fParagraphMax);
-
- flow->fChars = NEW_ARRAY(LEUnicode, charCount + 1);
- LE_ARRAY_COPY(flow->fChars, chars, charCount);
- flow->fChars[charCount] = 0;
-
- pStart = &flow->fChars[0];
-
- while (*pStart != 0) {
- LEUnicode *pEnd = u_strpbrk(pStart, separators);
- le_int32 pAscent, pDescent, pLeading;
- pl_paragraph *paragraphLayout = NULL;
-
- if (pEnd == NULL) {
- pEnd = &flow->fChars[charCount];
- }
-
- if (pEnd != pStart) {
- subsetFontRuns(fontRuns, pStart - flow->fChars, pEnd - flow->fChars, fr);
-
-#ifdef TEST_LOCALE
- pl_resetLocaleRuns(locales);
- pl_addLocaleRun(locales, TEST_LOCALE, pEnd - pStart);
-#endif
-
- paragraphLayout = pl_create(pStart, pEnd - pStart, fr, NULL, NULL, locales, flow->fParagraphLevel, false, status);
-
- if (LE_FAILURE(*status)) {
- break; /* return? something else? */
- }
-
- if (flow->fParagraphLevel == UBIDI_DEFAULT_LTR) {
- flow->fParagraphLevel = pl_getParagraphLevel(paragraphLayout);
- }
-
- pAscent = pl_getAscent(paragraphLayout);
- pDescent = pl_getDescent(paragraphLayout);
- pLeading = pl_getLeading(paragraphLayout);
-
- if (pAscent > ascent) {
- ascent = pAscent;
- }
-
- if (pDescent > descent) {
- descent = pDescent;
- }
-
- if (pLeading > leading) {
- leading = pLeading;
- }
- }
-
- if (flow->fParagraphCount >= flow->fParagraphMax) {
- flow->fParagraphLayout = (pl_paragraph **) GROW_ARRAY(flow->fParagraphLayout, flow->fParagraphMax + flow->fParagraphGrow);
- flow->fParagraphMax += flow->fParagraphGrow;
- }
-
- flow->fParagraphLayout[flow->fParagraphCount++] = paragraphLayout;
-
- if (*pEnd == 0) {
- break;
- }
-
- pStart = skipLineEnd(pEnd);
- }
-
- flow->fLineHeight = ascent + descent + leading;
- flow->fAscent = ascent;
-
- pl_closeLocaleRuns(locales);
- pl_closeFontRuns(fr);
-
- return (pf_flow *) flow;
-}
-
-void pf_close(pf_flow *flow)
-{
- pf_object *obj = (pf_object *) flow;
- le_int32 i;
-
- for (i = 0; i < obj->fLineCount; i += 1) {
- DELETE_ARRAY(obj->fLines[i]);
- }
-
- DELETE_ARRAY(obj->fLines);
-
- for (i = 0; i < obj->fParagraphCount; i += 1) {
- pl_close(obj->fParagraphLayout[i]);
- }
-
- DELETE_ARRAY(obj->fParagraphLayout);
-
- DELETE_ARRAY(obj->fChars);
-
- DELETE_ARRAY(obj);
-}
-
-
-le_int32 pf_getAscent(pf_flow *flow)
-{
- pf_object *obj = (pf_object *) flow;
-
- return obj->fAscent;
-}
-
-le_int32 pf_getLineHeight(pf_flow *flow)
-{
- pf_object *obj = (pf_object *) flow;
-
- return obj->fLineHeight;
-}
-
-le_int32 pf_getLineCount(pf_flow *flow)
-{
- pf_object *obj = (pf_object *) flow;
-
- return obj->fLineCount;
-}
-
-static void addLine(pf_object *obj, pl_line *line)
-{
- if (obj->fLineCount >= obj->fLinesMax) {
- obj->fLines = (pl_line **) GROW_ARRAY(obj->fLines, obj->fLinesMax + obj->fLinesGrow);
- obj->fLinesMax += obj->fLinesGrow;
- }
-
- obj->fLines[obj->fLineCount++] = line;
-}
-
-void pf_breakLines(pf_flow *flow, le_int32 width, le_int32 height)
-{
- pf_object *obj = (pf_object *) flow;
- le_int32 li, p;
- float lineWidth;
- pl_line *line;
-
- obj->fHeight = height;
-
- /* don't re-break if the width hasn't changed */
- if (obj->fWidth == width) {
- return;
- }
-
- obj->fWidth = width;
-
- lineWidth = (float) (width - 2 * MARGIN);
-
- /* Free the old Lines... */
- for (li = 0; li < obj->fLineCount; li += 1) {
- pl_closeLine(obj->fLines[li]);
- }
-
- obj->fLineCount = 0;
-
- for (p = 0; p < obj->fParagraphCount; p += 1) {
- pl_paragraph *paragraphLayout = obj->fParagraphLayout[p];
-
- if (paragraphLayout != NULL) {
- pl_reflow(paragraphLayout);
- while ((line = pl_nextLine(paragraphLayout, lineWidth)) != NULL) {
- addLine(obj, line);
- }
- } else {
- addLine(obj, NULL);
- }
- }
-}
-
-void pf_draw(pf_flow *flow, rs_surface *surface, le_int32 firstLine, le_int32 lastLine)
-{
- pf_object *obj = (pf_object *) flow;
- le_int32 li, x, y;
-
- x = MARGIN;
- y = obj->fAscent;
-
- for (li = firstLine; li <= lastLine; li += 1) {
- const pl_line *line = obj->fLines[li];
-
- if (line != NULL) {
- le_int32 runCount = pl_countLineRuns(line);
- le_int32 run;
-
- if (obj->fParagraphLevel == UBIDI_RTL) {
- le_int32 lastX = pl_getLineWidth(line);
-
- x = (obj->fWidth - lastX - MARGIN);
- }
-
-
- for (run = 0; run < runCount; run += 1) {
- const pl_visualRun *visualRun = pl_getLineVisualRun(line, run);
- le_int32 glyphCount = pl_getVisualRunGlyphCount(visualRun);
- const le_font *font = pl_getVisualRunFont(visualRun);
- const LEGlyphID *glyphs = pl_getVisualRunGlyphs(visualRun);
- const float *positions = pl_getVisualRunPositions(visualRun);
-
- rs_drawGlyphs(surface, font, glyphs, glyphCount, positions, x, y, obj->fWidth, obj->fHeight);
- }
- }
-
- y += obj->fLineHeight;
- }
-}
-
-pf_flow *pf_factory(const char *fileName, const le_font *font, gs_guiSupport *guiSupport)
-{
- LEErrorCode status = LE_NO_ERROR;
- le_int32 charCount;
- const UChar *text = uc_readFile(fileName, guiSupport, &charCount);
- pl_fontRuns *fontRuns;
- pf_flow *result = NULL;
-
- if (text == NULL) {
- return NULL;
- }
-
- fontRuns = pl_openEmptyFontRuns(0);
-
- pl_addFontRun(fontRuns, font, charCount);
-
- result = pf_create(text, charCount, fontRuns, &status);
-
- if (LE_FAILURE(status)) {
- pf_close(result);
- result = NULL;
- }
-
- pl_closeFontRuns(fontRuns);
-
- DELETE_ARRAY(text);
-
- return result;
-}
-
diff --git a/icu4c/source/samples/layout/pflow.h b/icu4c/source/samples/layout/pflow.h
deleted file mode 100644
index d759a8f42..000000000
--- a/icu4c/source/samples/layout/pflow.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#ifndef __PFLOW_H
-#define __PFLOW_H
-
-#include "unicode/utypes.h"
-#include "layout/LETypes.h"
-
-#include "layout/plruns.h"
-#include "layout/playout.h"
-
-#include "gsupport.h"
-#include "rsurface.h"
-
-typedef void pf_flow;
-
-pf_flow *pf_create(const LEUnicode chars[], le_int32 charCount, const pl_fontRuns *fontRuns, LEErrorCode *status);
-
-void pf_close(pf_flow *flow);
-
-le_int32 pf_getAscent(pf_flow *flow);
-le_int32 pf_getLineHeight(pf_flow *flow);
-le_int32 pf_getLineCount(pf_flow *flow);
-void pf_breakLines(pf_flow *flow, le_int32 width, le_int32 height);
-void pf_draw(pf_flow *flow, rs_surface *surface, le_int32 firstLine, le_int32 lastLine);
-
-pf_flow *pf_factory(const char *fileName, const le_font *font, gs_guiSupport *guiSupport);
-
-#endif
diff --git a/icu4c/source/samples/layout/readme.html b/icu4c/source/samples/layout/readme.html
deleted file mode 100644
index 32c89d8c0..000000000
--- a/icu4c/source/samples/layout/readme.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
- <meta name="COPYRIGHT" content=
- "Copyright (C) 2016 and later: Unicode, Inc. and others.
- License &amp; terms of use: http://www.unicode.org/copyright.html
-
- Copyright (c) 2001-2010 IBM Corporation and others. All Rights Reserved." />
- <meta name="Author" content="Eric Mader" />
-
- <title>Readme file for the ICU LayoutEngine demo</title>
-</head>
-
-<body>
- <h2>What is the layout demo?</h2>
-
- <p>The layout demo displays a paragraph of text that is laid out using the
- LayoutEngine. There are two versions of this demo, "layout.exe" which runs on
- Windows 2000, and "gnomelayout" which runs on Linux. Both programs read a
- file containing the Unicode text to display, and a file that says which font
- to use to display each script.</p>
-
- <h2>How do I build the layout demo?</h2>First, you need to build ICU,
- including the LayoutEngine.
-
- <p>On Windows, the layout project should be listed as a dependency of all, so
- layout will build when you build all. If it doesn't for some reason, just
- select the layout project in the project toolbar and build it.</p>
-
- <p>On Linux systems, you need to add the "--enable-layout=yes" option when
- you invoke the runConfigureICU script. When you've done that, layout should
- build when you do "make all install"</p>
-
- <p>To build the demo on Windows, just open the layout project in
- &lt;icu&gt;\source\samples\layout and build it.</p>
-
- <p>On Linux systems, connect to &lt;top-build-dir&gt;/samples/layout and do
- "make all". To build the layout demo on Linux, you'll need the
- gnome-libs-devel and freetype-devel packages, which should be part of your
- Linux distribution. The demo uses the FreeType 1 library, and the make files
- assume that the FreeType header files are in /usr/include/freetype1, and that
- the freetype library is /usr/lib/libttf.so. This is how RedHat Linux 7.2
- installs FreeType 1. If your system is different, you may need to add sym
- links to where the files are stored on your system, or modify
- &lt;top-src-dir&gt;/samples/layout/Makefile.in to reference the files
- correctly for your system.</p>
-
- <h2>How do I run the demo?</h2>
-
- <p>Before you can run the demo, you'll need to get the fonts it uses. For
- legal reasons, we can't include these fonts with ICU, but you can download
- them from the web. To do this, you'll need access to a computer running
- Windows. Here's how to get the fonts:</p>
-
- <p>First, download the Thai font. Go to <a href=
- "http://www.freelang.net/fonts/index.php">freelang.net</a> and
- click on the link for the Courier Thai font. This will download a .ZIP file.
- Extract the Courpro.ttf font. On Windows, copy this font file to your
- Fonts folder (note the name of the font after it is installed), on Linux, copy this font file to the directory from which
- you'll run the layout demo.</p>
-
- <p>Next is the Hindi font. Download the font from <a href=
- "http://www.ffonts.net/Raghindi.font.download">Raghindi</a>. On Linux, you can download the font into the
- directory from which you'll run the layout demo. On Windows, you'll need to
- install it in your Fonts folder.</p>
-
- <p>There's still one more font to get, the Code2000 Unicode font. Go to James
- Kass' <a href="http://www.code2000.net/">Unicode Support In Your
- Browser</a> page and click on the link that says "Click Here to download
- Code2000 shareware demo Unicode font." This will download a .ZIP file which
- contains CODE2000.TTF and CODE2000.HTM. Expand this .ZIP file. If you're
- going to run the layout demo on Linux, put the CODE2000.TTF file in the
- directory from which you'll run the demo. On Windows, copy the font to your
- fonts folder.</p>
-
- <p><strong>Note:</strong> The Code2000 font is shareware. If you want to use
- it for longer than a trial period, you should send a shareware fee to James.
- Directions for how to do this are in CODE2000.HTM.</p>
-
- <p>Be sure that your FontMap.GDI (on Windows) or FontMap.Gnome file (on Linux) contains accurate
- font names for each script type. For example, the following is a valid FontMap.GDI (assuming you have the correct fonts):
- <br><br>DEVANAGARI: Raghindi<br>THAI: Courier MonoThai<br>DEFAULT: Code2000<br><br>Note that only the Code2000 default font is strictly necessary,
- and that the other two can simply be commented out by a '#' if you do not wish to use them.</p>
-
- <p>Also note that the FontMap and the sample.txt files have to be in the same directory as the layout executable.</p>
-
- <p>That's it! Now all you have to do is run letest (CTRL+F5 in Visual C++, or
- "./gnomelayout" in Linux)</p>
-
- <h2>How can I customize the layout demo?</h2>
-
- <p>The text that the layout demo displays is read from the file "Sample.txt."
- You can change the text by editing this file using a Unicode-aware text
- editor. (it is in UTF8 format with a BOM as the first character; the demo can
- also read UTF16 and UTF32 format files) Remember that the text will be
- displayed in a single paragraph; you can include CR and LF characters in the
- text, but they will be ignored.</p>
-
- <p>If you add scripts to the text other than Arabic, Devanagari, Latin or
- Thai, you'll need to find a font which contains the characters in that
- script, and add an entry to the FontMap file ("FontMap.GDI" on Windows,
- "FontMap.Gnome" on Linux) This file contains a single entry per line. Each
- entry contains a script name followed by a colon, and then a font name.</p>
-
- <p>Here is the list of legal script names:</p>
-
- <blockquote>
- <tt>ARABIC</tt><br />
- <tt>ARMENIAN</tt><br />
- <tt>BENGALI</tt><br />
- <tt>BOPOMOFO</tt><br />
- <span style="font-family: monospace;">BUHID</span><br />
- <tt>CANADIAN_ABORIGINAL</tt><br />
- <tt>CHEROKEE</tt><br />
- <tt>CYRILLIC</tt><br />
- <tt>DESERET</tt><br />
- <tt>DEVANAGARI</tt><br />
- <tt>ETHIOPIC</tt><br />
- <tt>GEORGIAN</tt><br />
- <tt>GOTHIC</tt><br />
- <tt>GREEK</tt><br />
- <tt>GUJARATI</tt><br />
- <tt>GURMUKHI</tt><br />
- <tt>HAN</tt><br />
- <tt>HANGUL</tt><br />
- <span style="font-family: monospace;">HANUNOO</span><br />
- <tt>HEBREW</tt><br />
- <tt>HIRAGANA</tt><br />
- <tt>KANNADA</tt><br />
- <tt>KATAKANA</tt><br />
- <tt>KHMER</tt><br />
- <tt>LATIN</tt><br />
- <tt>MALAYALAM</tt><br />
- <tt>MONGOLIAN</tt><br />
- <tt>MYANMAR</tt><br />
- <tt>OGHAM</tt><br />
- <tt>OLD_ITALIC</tt><br />
- <tt>ORIYA</tt><br />
- <tt>RUNIC</tt><br />
- <tt>SINHALA</tt><br />
- <tt>SYRIAC</tt><br />
- <span style="font-family: monospace;">TAGALOG<br />
- TAGBANWA</span><br />
- <tt>TAMIL</tt><br />
- <tt>TELUGU</tt><br />
- <tt>THAANA</tt><br />
- <tt>THAI</tt><br />
- <tt>TIBETAN</tt><br />
- <tt>YI<br /></tt>
- </blockquote>
-
- <p>You can also use the script name "DEFAULT" to represent all scripts which
- you don't explicitly list in the FontMap file.</p>
-
- <p>On Windows use the full name of the font as it appears in the Windows
- Fonts folder (eg. "Times New Roman") On Linux, use the file name of the font
- file (e.g. "Times.TTF") If you're running on Windows, you'll need to install
- the new fonts in your Fonts folder. If you're running on Linux, put them in
- the directory from which you'll run the demo.</p><br />
-</body>
-</html>
diff --git a/icu4c/source/samples/layout/resource.h b/icu4c/source/samples/layout/resource.h
deleted file mode 100644
index f4fdeed67..000000000
--- a/icu4c/source/samples/layout/resource.h
+++ /dev/null
@@ -1,25 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-// Corporation and others. All Rights Reserved.
-// Copyright (c) 2001-2003 International Business Machines
-// Corporation and others. All Rights Reserved.
-// Used by LayoutSample.rc
-//
-#define IDM_FILE_NEWSAMPLE 40001
-#define IDM_FILE_OPEN 40002
-#define IDM_FILE_CLOSE 40003
-#define IDM_FILE_EXIT 40004
-#define IDM_HELP_ABOUTLAYOUTSAMPLE 40005
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 104
-#define _APS_NEXT_COMMAND_VALUE 40006
-#define _APS_NEXT_CONTROL_VALUE 1000
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/icu4c/source/samples/layout/rsurface.cpp b/icu4c/source/samples/layout/rsurface.cpp
deleted file mode 100644
index b48357e0d..000000000
--- a/icu4c/source/samples/layout/rsurface.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#include "loengine.h"
-#include "rsurface.h"
-
-#include "LETypes.h"
-#include "LEFontInstance.h"
-#include "RenderingSurface.h"
-
-U_CDECL_BEGIN
-
-void rs_drawGlyphs(rs_surface *surface, const le_font *font, const LEGlyphID *glyphs, le_int32 count,
- const float *positions, le_int32 x, le_int32 y, le_int32 width, le_int32 height)
-{
- RenderingSurface *rs = (RenderingSurface *) surface;
-
- rs->drawGlyphs((const LEFontInstance *) font, glyphs, count, positions, x, y, width, height);
-}
-
-U_CDECL_END
diff --git a/icu4c/source/samples/layout/rsurface.h b/icu4c/source/samples/layout/rsurface.h
deleted file mode 100644
index 3292d79fc..000000000
--- a/icu4c/source/samples/layout/rsurface.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#ifndef __RSURFACE_H
-#define __RSURFACE_H
-
-#include "loengine.h"
-
-typedef void rs_surface;
-
-U_CDECL_BEGIN
-
-void rs_drawGlyphs(rs_surface *surface, const le_font *font, const LEGlyphID *glyphs, le_int32 count,
- const float *positions, le_int32 x, le_int32 y, le_int32 width, le_int32 height);
-
-U_CDECL_END
-
-#endif
diff --git a/icu4c/source/samples/layout/sfnt.h b/icu4c/source/samples/layout/sfnt.h
deleted file mode 100644
index 107374441..000000000
--- a/icu4c/source/samples/layout/sfnt.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- ******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- ******************************************************************************
- ****************************************************************************** *
- *
- * Copyright (C) 1999-2001, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- ****************************************************************************** *
- * file name: sfnt.h
- *
- * created on: ??/??/2001
- * created by: Eric R. Mader
- */
-
-#ifndef __SFNT_H
-#define __SFNT_H
-
-#include "LETypes.h"
-
-
-#ifndef ANY_NUMBER
-#define ANY_NUMBER 1
-#endif
-
-struct DirectoryEntry
-{
- le_uint32 tag;
- le_uint32 checksum;
- le_uint32 offset;
- le_uint32 length;
-};
-
-struct SFNTDirectory
-{
- le_uint32 scalerType;
- le_uint16 numTables;
- le_uint16 searchRange;
- le_uint16 entrySelector;
- le_uint16 rangeShift;
- DirectoryEntry tableDirectory[ANY_NUMBER];
-};
-
-
-struct CMAPEncodingSubtableHeader
-{
- le_uint16 platformID;
- le_uint16 platformSpecificID;
- le_uint32 encodingOffset;
-};
-
-struct CMAPTable
-{
- le_uint16 version;
- le_uint16 numberSubtables;
- CMAPEncodingSubtableHeader encodingSubtableHeaders[ANY_NUMBER];
-};
-
-struct CMAPEncodingSubtable
-{
- le_uint16 format;
- le_uint16 length;
- le_uint16 language;
-};
-
-struct CMAPFormat0Encoding : CMAPEncodingSubtable
-{
- le_uint8 glyphIndexArray[256];
-};
-
-struct CMAPFormat2Subheader
-{
- le_uint16 firstCode;
- le_uint16 entryCount;
- le_int16 idDelta;
- le_uint16 idRangeOffset;
-};
-
-struct CMAPFormat2Encoding : CMAPEncodingSubtable
-{
- le_uint16 subHeadKeys[256];
- CMAPFormat2Subheader subheaders[ANY_NUMBER];
-};
-
-struct CMAPFormat4Encoding : CMAPEncodingSubtable
-{
- le_uint16 segCountX2;
- le_uint16 searchRange;
- le_uint16 entrySelector;
- le_uint16 rangeShift;
- le_uint16 endCodes[ANY_NUMBER];
-// le_uint16 reservedPad;
-// le_uint16 startCodes[ANY_NUMBER];
-// le_uint16 idDelta[ANY_NUMBER];
-// le_uint16 idRangeOffset[ANY_NUMBER];
-// le_uint16 glyphIndexArray[ANY_NUMBER];
-};
-
-struct CMAPFormat6Encoding : CMAPEncodingSubtable
-{
- le_uint16 firstCode;
- le_uint16 entryCount;
- le_uint16 glyphIndexArray[ANY_NUMBER];
-};
-
-struct CMAPEncodingSubtable32
-{
- le_uint32 format;
- le_uint32 length;
- le_uint32 language;
-};
-
-struct CMAPGroup
-{
- le_uint32 startCharCode;
- le_uint32 endCharCode;
- le_uint32 startGlyphCode;
-};
-
-struct CMAPFormat8Encoding : CMAPEncodingSubtable32
-{
- le_uint32 is32[65536/32];
- le_uint32 nGroups;
- CMAPGroup groups[ANY_NUMBER];
-};
-
-struct CMAPFormat10Encoding : CMAPEncodingSubtable32
-{
- le_uint32 startCharCode;
- le_uint32 numCharCodes;
- le_uint16 glyphs[ANY_NUMBER];
-};
-
-struct CMAPFormat12Encoding : CMAPEncodingSubtable32
-{
- le_uint32 nGroups;
- CMAPGroup groups[ANY_NUMBER];
-};
-
-typedef le_int32 fixed;
-
-struct BigDate
-{
- le_uint32 bc;
- le_uint32 ad;
-};
-
-struct HEADTable
-{
- fixed version;
- fixed fontRevision;
- le_uint32 checksumAdjustment;
- le_uint32 magicNumber;
- le_uint16 flags;
- le_uint16 unitsPerEm;
- BigDate created;
- BigDate modified;
- le_int16 xMin;
- le_int16 yMin;
- le_int16 xMax;
- le_int16 yMax;
- le_int16 lowestRecPPEM;
- le_int16 fontDirectionHint;
- le_int16 indexToLocFormat;
- le_int16 glyphDataFormat;
-};
-
-struct MAXPTable
-{
- fixed version;
- le_uint16 numGlyphs;
- le_uint16 maxPoints;
- le_uint16 maxContours;
- le_uint16 maxComponentPoints;
- le_uint16 maxComponentContours;
- le_uint16 maxZones;
- le_uint16 maxTwilightPoints;
- le_uint16 maxStorage;
- le_uint16 maxFunctionDefs;
- le_uint16 maxInstructionDefs;
- le_uint16 maxStackElements;
- le_uint16 maxSizeOfInstructions;
- le_uint16 maxComponentElements;
- le_uint16 maxComponentDepth;
-};
-
-struct HHEATable
-{
- fixed version;
- le_int16 ascent;
- le_int16 descent;
- le_int16 lineGap;
- le_uint16 advanceWidthMax;
- le_int16 minLeftSideBearing;
- le_int16 minRightSideBearing;
- le_int16 xMaxExtent;
- le_int16 caretSlopeRise;
- le_int16 caretSlopeRun;
- le_int16 caretOffset;
- le_int16 reserved1;
- le_int16 reserved2;
- le_int16 reserved3;
- le_int16 reserved4;
- le_int16 metricDataFormat;
- le_uint16 numOfLongHorMetrics;
-};
-
-struct LongHorMetric
-{
- le_uint16 advanceWidth;
- le_int16 leftSideBearing;
-};
-
-struct HMTXTable
-{
- LongHorMetric hMetrics[ANY_NUMBER]; // ANY_NUMBER = numOfLongHorMetrics from hhea table
-// le_int16 leftSideBearing[ANY_NUMBER]; // ANY_NUMBER = numGlyphs - numOfLongHorMetrics
-};
-
-#endif
-
diff --git a/icu4c/source/samples/layout/ucreader.cpp b/icu4c/source/samples/layout/ucreader.cpp
deleted file mode 100644
index fd0345c6b..000000000
--- a/icu4c/source/samples/layout/ucreader.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#include "unicode/utypes.h"
-
-#include "ucreader.h"
-#include "gsupport.h"
-#include "UnicodeReader.h"
-
-U_CDECL_BEGIN
-
-const char16_t *uc_readFile(const char *fileName, gs_guiSupport *guiSupport, int32_t *charCount)
-{
- return UnicodeReader::readFile(fileName, (GUISupport *) guiSupport, *charCount);
-}
-
-U_CDECL_END
diff --git a/icu4c/source/samples/layout/ucreader.h b/icu4c/source/samples/layout/ucreader.h
deleted file mode 100644
index 1f82ecc61..000000000
--- a/icu4c/source/samples/layout/ucreader.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
- *
- */
-
-#ifndef __UCREADER_H
-#define __UCREADER_H
-
-#include "unicode/utypes.h"
-#include "gsupport.h"
-
-U_CDECL_BEGIN
-
-const char16_t *uc_readFile(const char *fileName, gs_guiSupport *guiSupport, int32_t *charCount);
-
-U_CDECL_END
-
-#endif
diff --git a/icu4c/source/samples/legacy/Makefile b/icu4c/source/samples/legacy/Makefile
deleted file mode 100644
index f3dfda63d..000000000
--- a/icu4c/source/samples/legacy/Makefile
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2001-2004 IBM, Inc. and others
-# conversion sample code
-
-
-# Usage:
-# - configure and build ICU [see the docs] .. use "--prefix=" something
-# (I used --prefix=/home/srl/III )
-#
-# - do 'make install' of icu
-#
-# - set the variable ICU_PREFIX to point at $(prefix)
-# (will look for $(prefix)/lib/icu/Makefile.inc )
-#
-# - set the variable ICU_LEGACY (read the README)
-# ( Will look for ICU_LEGACY/include/unicode/ucol.h )
-#
-# - do 'make' in this directory
-
-#ICU_PREFIX=/home/weiv/build/current
-#ICU_LEGACY = /home/weiv/build/icu-1-8-1
-
-LEGACY_INCLUDE = $(ICU_LEGACY)/include
-
-ICU_INC=$(ICU_PREFIX)/lib/icu/Makefile.inc
-ICUPATH=
-
--include $(ICU_INC)
-
-# Name of your target
-TARGET=legacy
-
-# All object files (C or C++)
-OBJECTS=legacy.o newcol.o oldcol.o
-
-CLEANFILES=*~ $(TARGET).out
-
-DEPS=$(OBJECTS:.o=.d)
-
-# turn on super warnings
-#CPPFLAGS += -Wall
-
-all: $(TARGET) $(ICU_INC)
-
-.PHONY: all clean distclean check report
-
-oldcol.o : oldcol.cpp $(LEGACY_INCLUDE)/unicode/ucol.h
- $(CXX) -I$(LEGACY_INCLUDE) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -c oldcol.cpp
-
-distclean clean:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
- -$(RMV) $(OBJECTS) $(TARGET)
- -$(RMV) $(DEPS)
-
-# Can change this to LINK.c if it is a C only program
-# Can add more libraries here.
-$(TARGET): $(OBJECTS)
- $(LINK.cc) -o $@ $^ $(ICULIBS) $(ICU_PREFIX)/lib/libicuuc.so.18 $(ICU_PREFIX)/lib/libicui18n.so.18
-
-# Make check: simply runs the sample, logged to a file
-check: $(TARGET)
- $(INVOKE) ./$(TARGET) | tee $(TARGET).out
-
-# Make report: creates a 'report file' with both source and sample run
-report: $(TARGET).report
-
-$(TARGET).report: check $(TARGET).cpp
- more $(TARGET).cpp $(TARGET).out > $@
-
-$(ICU_INC):
- @echo ICU_PREFIX variable is not set correctly
- @echo "Please read the directions at the top of this file (Makefile)"
- @echo "And the README"
- @echo "Can't open $(ICU_INC)"
- @false
-
-$(LEGACY_INCLUDE)/unicode/ucol.h:
- @echo ICU_LEGACY variable is not set correctly.
- @echo "Please read the directions at the top of this file (Makefile)"
- @echo "And the README"
- @echo "Can't open $@"
- @false
-
-ifneq ($(MAKECMDGOALS),distclean)
--include $(DEPS)
-endif
diff --git a/icu4c/source/samples/legacy/README b/icu4c/source/samples/legacy/README
deleted file mode 100644
index cecf961e3..000000000
--- a/icu4c/source/samples/legacy/README
+++ /dev/null
@@ -1,44 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002, International Business Machines Corporation and others. All Rights Reserved.
-This example demonstrates running an instance of ICU 1.8.1. together with a current version of ICU. It only tests u_getVersion and several collation APIs.
-
-Generally, one should be able to simultaneously use one or more versions of ICU 2.0 or higher and one version of ICU 1.8.1 or lower.
-
-What is it all about: Let's say you have a 10 Tb database indexed using ICU 1.8.1. sortkeys. New ICU comes out, with neat new features you would like to use, but also with new sortkeys and you don't care to reindex your 10 Tb database. What to do then??? You can use ICU 1.8.1. in one of your compilation units and current version in all the others. So, you can use old collation until you decide to reindex.
-
-You cannot mix two versions of ICU in the same compilation unit. You cannot automatically use more than one legacy version of ICU.
-
-In order to make the compilation unit use old version of ICU, you have to do a couple of things:
-1) change it's include path so that it includes header files from the old versions
-2) explicitly add old libraries to the linker.
-3) make sure old data can be found (if legacy code needs data).
-
-Building and running of the example:
-
-Linux:
-To make it work, you should build and install both the current ICU and ICU 1.8.1. Put both data libraries to wherever ICU_DATA points (usually it is $(prefix)/share/icu/$(icu_version)/). If data libraries are used, then check for $(prefix)/lib/icu/1.8.1 which should contain libicudata.so and libicudt18*.so
-2. Copy libicuuc.so.18* and libicui18n.so.18* to $(prefix)/lib directory, together with current libraries).
-3. Should work on other Unixes.
-
-
-Change $ICU_PREFIX to point to the current installation, and $ICU_LEGACY to point to 1.8.1 installation. $ICU_LEGACY is needed solely to access the 1.8.1 include directory through $LEGACY_INCLUDE variable, so if you want to move the 1.8.1. include directory, you can set $LEGACY_INCLUDE directly to that directory.
-
-Run make check. You should get two different libraries running at the same time.
-
-Win32:
-Build both current ICU and ICU 1.8.1. Take icuuc18.dll, icuin18.dll and icudt18l.dll and put them somewhere in PATH (a sane place would be wherever current dlls go).
-
-Edit the include directory for oldcol.cpp so that it points to the include directory of ICU 1.8.1.
-Edit the two library entries with path so that they point to .lib files for your version of ICU.
-
-Hit F7, followed by ctrl-F5.
-
-Troubleshooting (all platforms):
-Sample won't compile: this is quite unlikely, but the most probable reason is that include files cannot be found.
-Sample won't link: The path for 1.8.1. libraries is broken. Edit it so that it reflects the path to your libraries.
-Linker says: "Undefined symbol u_getVersion()" (or something similar): path to 1.8.1. libraries is bad.
-Linker says: "Undefined symbol u_getVersion()_X_Y" (or something similar): path to current libraries is bad.
-Legacy crashes horribly: Sorry, didn't put any error checking. If legacy crashes that's most probably because it cannot find the data libraries. You can see which data library is not found by the part of the program that is running. Make sure program can find tha data library either by putting it where ever ICU_DATA points to OR by putting the DLL version of the data library somewhere on your PATH.
-
diff --git a/icu4c/source/samples/legacy/legacy.cpp b/icu4c/source/samples/legacy/legacy.cpp
deleted file mode 100644
index 862080625..000000000
--- a/icu4c/source/samples/legacy/legacy.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2001 - 2005, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: main.cpp
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2001jul24
-* created by: Vladimir Weinstein
-*/
-
-/******************************************************************************
- * main program demonstrating using two versions of ICU in the same project
- ******************************************************************************/
-
-#include <stdio.h>
-#include "unicode/utypes.h"
-#include "unicode/ustring.h"
-
-extern "C" void test_current(char16_t data[][5], uint32_t size, uint32_t maxLen, uint8_t keys[][32]);
-extern "C" void test_legacy(char16_t data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]);
-
-void printZTUChar(const char16_t *str) {
- while(*str != 0) {
- if(*str > 0x1F && *str < 0x80) {
- fprintf(stdout, "%c", (*str) & 0xFF);
- } else {
- fprintf(stdout, "\\u%04X", *str);
- }
- str++;
- }
-}
-
-void printArray(const char* const comment, const char16_t UArray[][5], int32_t arraySize) {
- fprintf (stdout, "%s\n", comment);
- int32_t i = 0;
- for(i = 0; i<arraySize; i++) {
- fprintf(stdout, "%d ", i);
- printZTUChar(UArray[i]);
- fprintf(stdout, "\n");
- }
-}
-
-void printKeys(const char *comment, uint8_t keys[][32], int32_t keySize) {
- int32_t i = 0;
- uint8_t *currentKey = nullptr;
- fprintf(stdout, "%s\n", comment);
- for(i = 0; i<keySize; i++) {
- currentKey = keys[i];
- while(*currentKey != 0) {
- if(*currentKey == 1) {
- fprintf(stdout, "01 ");
- } else {
- fprintf(stdout, "%02X", *currentKey);
- }
- currentKey++;
- }
- fprintf(stdout, " 00\n");
- }
-}
-
-
-//int main(int argc, const char * const argv[]) {
-int main(int, const char * const *) {
- static const char* test[4] = {
- "\\u304D\\u3085\\u3046\\u0000",
- "\\u30AD\\u30E6\\u30A6\\u0000",
- "\\u304D\\u3086\\u3046\\u0000",
- "\\u30AD\\u30E5\\u30A6\\u0000"
- };
-
-#if 0
- static const char* test2[4] = {
- "dbc\\u0000",
- "cbc\\u0000",
- "bbc\\u0000",
- "abc\\u0000"
- };
-#endif
-
- static char16_t uTest[4][5];
-
- static uint8_t keys[4][32];
-
- uint32_t i = 0;
-
- for(i = 0; i<4; i++) {
- u_unescape(test[i], uTest[i], 5);
- }
- printArray("Before current", uTest, 4);
- test_current(uTest, 4, 5, keys);
- printArray("After current", uTest, 4);
- printKeys("Current keys", keys, 4);
-
- for(i = 0; i<4; i++) {
- u_unescape(test[i], uTest[i], 5);
- }
- printArray("Before legacy", uTest, 4);
- test_legacy(uTest, 4, 5, keys);
- printArray("After legacy", uTest, 4);
- printKeys("Legacy keys", keys, 4);
-
-
- return 0;
-}
diff --git a/icu4c/source/samples/legacy/legacy.sln b/icu4c/source/samples/legacy/legacy.sln
deleted file mode 100644
index b2b176fb2..000000000
--- a/icu4c/source/samples/legacy/legacy.sln
+++ /dev/null
@@ -1,27 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.24720.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "legacy", "legacy.vcxproj", "{57F56795-1802-4605-88A0-013AAE9998F6}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|Win32.ActiveCfg = Debug|Win32
- {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|Win32.Build.0 = Debug|Win32
- {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|x64.ActiveCfg = Debug|x64
- {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|x64.Build.0 = Debug|x64
- {57F56795-1802-4605-88A0-013AAE9998F6}.Release|Win32.ActiveCfg = Release|Win32
- {57F56795-1802-4605-88A0-013AAE9998F6}.Release|Win32.Build.0 = Release|Win32
- {57F56795-1802-4605-88A0-013AAE9998F6}.Release|x64.ActiveCfg = Release|x64
- {57F56795-1802-4605-88A0-013AAE9998F6}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/legacy/legacy.vcxproj b/icu4c/source/samples/legacy/legacy.vcxproj
deleted file mode 100644
index 655a7cab4..000000000
--- a/icu4c/source/samples/legacy/legacy.vcxproj
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{57F56795-1802-4605-88A0-013AAE9998F6}</ProjectGuid>
- <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/legacy.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/legacy.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/legacy.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/legacy.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\x64\Release/legacy.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/legacy.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/legacy.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/legacy.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/legacy.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/legacy.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/legacy.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/legacy.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\x64\Debug/legacy.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/legacy.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/legacy.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/legacy.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="legacy.cpp" />
- <ClCompile Include="newcol.cpp" />
- <ClCompile Include="oldcol.cpp">
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
- </ClCompile>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/legacy/legacy.vcxproj.filters b/icu4c/source/samples/legacy/legacy.vcxproj.filters
deleted file mode 100644
index 6349bbd3a..000000000
--- a/icu4c/source/samples/legacy/legacy.vcxproj.filters
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{28feb3e5-286e-4bae-8a94-1831f7734250}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{82030ac6-467e-4020-a013-5b05ba72e3c8}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{f2650fcf-69b6-4d3c-b3ff-8eb4b63775c9}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="legacy.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="newcol.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="oldcol.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/legacy/newcol.cpp b/icu4c/source/samples/legacy/newcol.cpp
deleted file mode 100644
index 89dbfd519..000000000
--- a/icu4c/source/samples/legacy/newcol.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2001 - 2005, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: newcol.cpp
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2001jul24
-* created by: Vladimir Weinstein
-*/
-
-/******************************************************************************
- * This is the module that uses new collation
- ******************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "unicode/ucol.h"
-
-// Very simple example code - sticks a sortkey in the buffer
-// Not much error checking
-int32_t getSortKey_current(const char *locale, const char16_t *string, int32_t sLen, uint8_t *buffer, int32_t bLen) {
- UErrorCode status = U_ZERO_ERROR;
- UCollator *coll = ucol_open(locale, &status);
- if(U_FAILURE(status)) {
- return -1;
- }
- int32_t result = ucol_getSortKey(coll, string, sLen, buffer, bLen);
- ucol_close(coll);
- return result;
-}
-
-// This one can be used for passing to qsort function
-// Not thread safe or anything
-static UCollator *compareCollator = nullptr;
-
-int compare_current(const void *string1, const void *string2) {
- if(compareCollator != nullptr) {
- UCollationResult res = ucol_strcoll(compareCollator, (char16_t *) string1, -1, (char16_t *) string2, -1);
- if(res == UCOL_LESS) {
- return -1;
- } else if(res == UCOL_GREATER) {
- return 1;
- } else {
- return 0;
- }
- } else {
- return 0;
- }
-}
-
-void initCollator_current(const char *locale) {
- UErrorCode status = U_ZERO_ERROR;
- compareCollator = ucol_open(locale, &status);
-}
-
-void closeCollator_current() {
- ucol_close(compareCollator);
- compareCollator = nullptr;
-}
-
-
-extern "C" void test_current(char16_t data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]) {
- uint32_t i = 0;
- int32_t keySize = 0;
- UVersionInfo uvi;
-
- u_getVersion(uvi);
- fprintf(stderr, "Entered current, version: [%d.%d.%d.%d]\nMoving to sortkeys\n", uvi[0], uvi[1], uvi[2], uvi[3]);
-
- for(i = 0; i<size; i++) {
- keySize = getSortKey_current("ja", data[i], -1, keys[i], 32);
- fprintf(stderr, "For i=%d, size of sortkey is %d\n", i, keySize);
- }
-
- fprintf(stderr, "Done sortkeys, doing qsort test\n");
-
- initCollator_current("ja");
- qsort(data, size, maxlen*sizeof(char16_t), compare_current);
- closeCollator_current();
-
- fprintf(stderr, "Done current!\n");
-}
-
-
diff --git a/icu4c/source/samples/legacy/oldcol.cpp b/icu4c/source/samples/legacy/oldcol.cpp
deleted file mode 100644
index 01ad0b86f..000000000
--- a/icu4c/source/samples/legacy/oldcol.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 2001-2005, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: oldcol.cpp
- * encoding: UTF-8
- * tab size: 8 (not used)
- * indentation:4
- *
- * created on: 2001jul24
- * created by: Vladimir Weinstein
- */
-
-/******************************************************************************
- * This is the module that uses old collation
- ******************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unicode/putil.h>
-#include <unicode/ucol.h>
-
-// Very simple example code - sticks a sortkey in the buffer
-// Not much error checking
-int32_t getSortKey_legacy(const char *locale, const char16_t *string, int32_t sLen, uint8_t *buffer, int32_t bLen) {
- UErrorCode status = U_ZERO_ERROR;
- UCollator *coll = ucol_open(locale, &status);
- if(U_FAILURE(status)) {
- return -1;
- }
- int32_t result = ucol_getSortKey(coll, string, sLen, buffer, bLen);
- ucol_close(coll);
- return result;
-}
-
-// This one can be used for passing to qsort function
-// Not thread safe or anything
-static UCollator *compareCollator = nullptr;
-
-int compare_legacy(const void *string1, const void *string2) {
- if(compareCollator != nullptr) {
- UCollationResult res = ucol_strcoll(compareCollator, (char16_t *) string1, -1, (char16_t *) string2, -1);
- if(res == UCOL_LESS) {
- return -1;
- } else if(res == UCOL_GREATER) {
- return 1;
- } else {
- return 0;
- }
- } else {
- return 0;
- }
-}
-
-void initCollator_legacy(const char *locale) {
- UErrorCode status = U_ZERO_ERROR;
- compareCollator = ucol_open(locale, &status);
-
- if(U_FAILURE(status))
- {
- fprintf(stderr, "initCollator_legacy(%s): error opening collator, %s!\n", locale, u_errorName(status));
- fprintf(stderr, "Note: ICU data directory is %s\n", u_getDataDirectory());
- fprintf(stderr, "Read the README!\n");
- exit(0);
- }
-}
-
-void closeCollator_legacy() {
- if(compareCollator != nullptr)
- {
- ucol_close(compareCollator);
- }
- else
- {
- fprintf(stderr, "closeCollator_legacy(): collator was already nullptr!\n");
- }
- compareCollator = nullptr;
-}
-
-
-extern "C" void test_legacy(char16_t data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[4][32]) {
- uint32_t i = 0;
- int32_t keySize = 0;
-
- UVersionInfo uvi;
-
- u_getVersion(uvi);
- fprintf(stderr, "Entered legacy, version: [%d.%d.%d.%d]\nMoving to sortkeys\n", uvi[0], uvi[1], uvi[2], uvi[3]);
-
- for(i = 0; i<size; i++) {
- keySize = getSortKey_legacy("ja", data[i], -1, keys[i], 32);
- fprintf(stderr, "For i=%d, size of sortkey is %d\n", i, keySize);
- }
-
- fprintf(stderr, "Done sortkeys, doing qsort test\n");
-
- initCollator_legacy("ja");
- qsort(data, size, maxlen*sizeof(char16_t), compare_legacy);
- closeCollator_legacy();
-
- fprintf(stderr, "Done legacy!\n");
-}
-
-
diff --git a/icu4c/source/samples/msgfmt/Makefile b/icu4c/source/samples/msgfmt/Makefile
deleted file mode 100644
index 1dfae0705..000000000
--- a/icu4c/source/samples/msgfmt/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2002 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-#### definitions
-# Name of your target
-TARGET=msgfmt
-
-# All object files (C or C++)
-OBJECTS=main.o util.o
-
-#### rules
-# Load in standard makefile definitions
-include ../defs.mk
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/msgfmt/README.TXT b/icu4c/source/samples/msgfmt/README.TXT
deleted file mode 100644
index d16d0136e..000000000
--- a/icu4c/source/samples/msgfmt/README.TXT
+++ /dev/null
@@ -1,98 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
-
-
-IMPORTANT:
-
-This sample was originally intended as an exercise for the ICU Workshop (September 2000).
-The code currently provided in the solution file is the answer to the exercises, each step can still be found in the 'answers' subdirectory.
-
-
-
-
- http://www.icu-project.org/docs/workshop_2000/agenda.html
-
- Day 2: September 12th 2000
- Pre-requisites:
- 1. All the hardware and software requirements from Day 1.
- 2. Attended or fully understand Day 1 material.
- 3. Read through the ICU user's guide at https://unicode-org.github.io/icu/userguide/.
-
- #Date/Time/Number Formatting Support
- 9:30am - 10:30am
- Alan Liu
-
- Topics:
- 1. What is the date/time support in ICU?
- 2. What is the timezone support in ICU?
- 3. What kind of formatting and parsing support is available in ICU, i.e.
- NumberFormat, DateFormat, MessageFormat?
-
-
-INSTRUCTIONS
-------------
-
-
-This exercise was first developed and tested on ICU release 1.6.0, Win32,
-Microsoft Visual C++ 6.0. It should work on other ICU releases and
-other platforms as well.
-
- MSVC:
- Open the file "msgfmt.sln" in Microsoft Visual C++.
-
- Unix:
- - Build and install ICU with a prefix, for example '--prefix=/home/srl/ICU'
- - Set the variable ICU_PREFIX=/home/srl/ICU and use GNU make in
- this directory.
- - You may use 'make check' to invoke this sample.
-
-PROBLEMS
---------
-
-Problem 0:
-
- Set up the program, build it, and run it. To start with, the
- program prints out the word "Message".
-
-Problem 1: Basic Message Formatting (Easy)
-
- Use a MessageFormat to create a message that prints out "Received
- <n> argument(s) on <d>.", where n is the number of command line
- arguments (use argc-1), and d is the date (use Calendar::getNow()).
-
- HINT: Your message pattern should have a "number" element and a
- "date" element, and you will need to use Formattable.
-
-Problem 2: ChoiceFormat (Medium)
-
- We can do better than "argument(s)". Instead, we can display more
- idiomatic strings, such as "no arguments", "one argument", "two
- arguments", and for higher values, we can use a number format.
-
- This kind of value-based switching is done using a ChoiceFormat.
- However, you seldom needs to create a ChoiceFormat by itself.
- Instead, most of the time you will supply the ChoiceFormat pattern
- within a MessageFormat pattern.
-
- Use a ChoiceFormat pattern within the MessageFormat pattern, instead
- of the "number" element, to display more idiomatic strings.
-
- EXTRA: Embed a number element within the choice element to handle
- values greater than two.
-
-
-ANSWERS
--------
-
-The exercise includes answers. These are in the "answers" directory,
-and are numbered 1, 2, etc.
-
-If you get stuck and you want to move to the next step, copy the
-answers file into the main directory in order to proceed. E.g.,
-"main_1.cpp" contains the original "main.cpp" file. "main_2.cpp"
-contains the "main.cpp" file after problem 1. Etc.
-
-
-Have fun!
diff --git a/icu4c/source/samples/msgfmt/answers/main_0.cpp b/icu4c/source/samples/msgfmt/answers/main_0.cpp
deleted file mode 100644
index c0b36d7e2..000000000
--- a/icu4c/source/samples/msgfmt/answers/main_0.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-/**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- ***********************************************************************
- ***********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- ***********************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/msgfmt.h"
-#include "unicode/uclean.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-int main(int argc, char **argv) {
-
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
-
- printf("Message: ");
- uprintf(str);
- printf("\n");
-
- u_cleanup();
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/msgfmt/answers/main_1.cpp b/icu4c/source/samples/msgfmt/answers/main_1.cpp
deleted file mode 100644
index bbe7fc70b..000000000
--- a/icu4c/source/samples/msgfmt/answers/main_1.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- ***********************************************************************
- ***********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2002, International Business Machines Corporation and
- * others. All Rights Reserved.
- ***********************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/msgfmt.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-int main(int argc, char **argv) {
-
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
-
- printf("Message: ");
- uprintf(str);
- printf("\n");
-
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/msgfmt/answers/main_2.cpp b/icu4c/source/samples/msgfmt/answers/main_2.cpp
deleted file mode 100644
index e8891aa01..000000000
--- a/icu4c/source/samples/msgfmt/answers/main_2.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- ***********************************************************************
- ***********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2002, International Business Machines Corporation and
- * others. All Rights Reserved.
- ***********************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/msgfmt.h"
-#include "unicode/calendar.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-// The message format pattern. It takes a single argument, an integer,
-// and formats it as "no", "one", or a number, using a NumberFormat.
-static UnicodeString PATTERN(
- "Received {0,choice,0#no|1#one|1& {0,number,integer}} arguments"
- " on {1,date,long}."
-);
-
-int main(int argc, char **argv) {
-
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
- FieldPosition pos;
-
- // Create a message format
- MessageFormat msg(PATTERN, status);
- check(status, "MessageFormat::ct");
-
- // Create the argument list
- Formattable msgArgs[2];
- msgArgs[0].setLong(argc-1);
- msgArgs[1].setDate(Calendar::getNow());
-
- // Format the arguments
- msg.format(msgArgs, 2, str, pos, status);
- check(status, "MessageFormat::format");
-
- printf("Message: ");
- uprintf(str);
- printf("\n");
-
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/msgfmt/answers/main_3.cpp b/icu4c/source/samples/msgfmt/answers/main_3.cpp
deleted file mode 100644
index d335a7e83..000000000
--- a/icu4c/source/samples/msgfmt/answers/main_3.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- ***********************************************************************
- ***********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2002, International Business Machines Corporation and
- * others. All Rights Reserved.
- ***********************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/msgfmt.h"
-#include "unicode/calendar.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-// The message format pattern. It takes a single argument, an integer,
-// and formats it as "no", "one", or a number, using a NumberFormat.
-static UnicodeString PATTERN(
- "Received {0,choice,0#no arguments|1#one argument|2#{0,number,integer} arguments}"
- " on {1,date,long}."
-);
-
-int main(int argc, char **argv) {
-
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
- FieldPosition pos;
-
- // Create a message format
- MessageFormat msg(PATTERN, status);
- check(status, "MessageFormat::ct");
-
- // Create the argument list
- Formattable msgArgs[2];
- msgArgs[0].setLong(argc-1);
- msgArgs[1].setDate(Calendar::getNow());
-
- // Format the arguments
- msg.format(msgArgs, 2, str, pos, status);
- check(status, "MessageFormat::format");
-
- printf("Message: ");
- uprintf(str);
- printf("\n");
-
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/msgfmt/main.cpp b/icu4c/source/samples/msgfmt/main.cpp
deleted file mode 100644
index cdcdbbfd1..000000000
--- a/icu4c/source/samples/msgfmt/main.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- ***********************************************************************
- ***********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2003, International Business Machines Corporation and
- * others. All Rights Reserved.
- ***********************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/msgfmt.h"
-#include "unicode/calendar.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "util.h"
-
-// The message format pattern. It takes a single argument, an integer,
-// and formats it as "no", "one", or a number, using a NumberFormat.
-static UnicodeString PATTERN(
- "Received {0,choice,0#no arguments|1#one argument|2#{0,number,integer} arguments}"
- " on {1,date,long}."
-);
-
-int main(int argc, char **argv) {
-
- UErrorCode status = U_ZERO_ERROR;
- UnicodeString str;
- FieldPosition pos;
-
- // Create a message format
- MessageFormat msg(PATTERN, status);
- check(status, "MessageFormat::ct");
-
- // Create the argument list
- Formattable msgArgs[2];
- msgArgs[0].setLong(argc-1);
- msgArgs[1].setDate(Calendar::getNow());
-
- // Format the arguments
- msg.format(msgArgs, 2, str, pos, status);
- check(status, "MessageFormat::format");
-
- printf("Message: ");
- uprintf(str);
- printf("\n");
-
- printf("Exiting successfully\n");
- return 0;
-}
diff --git a/icu4c/source/samples/msgfmt/msgfmt.sln b/icu4c/source/samples/msgfmt/msgfmt.sln
deleted file mode 100644
index f90def09d..000000000
--- a/icu4c/source/samples/msgfmt/msgfmt.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgfmt", "msgfmt.vcxproj", "{5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|Win32.ActiveCfg = Debug|Win32
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|Win32.Build.0 = Debug|Win32
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.ActiveCfg = Debug|x64
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.Build.0 = Debug|x64
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|Win32.ActiveCfg = Release|Win32
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|Win32.Build.0 = Release|Win32
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.ActiveCfg = Release|x64
- {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/msgfmt/msgfmt.vcxproj b/icu4c/source/samples/msgfmt/msgfmt.vcxproj
deleted file mode 100644
index b1a90405b..000000000
--- a/icu4c/source/samples/msgfmt/msgfmt.vcxproj
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/msgfmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/msgfmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/msgfmt.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/msgfmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/msgfmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/msgfmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/msgfmt.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/msgfmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/msgfmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/msgfmt.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/msgfmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/msgfmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/msgfmt.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/msgfmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="main.cpp" />
- <ClCompile Include="util.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/msgfmt/msgfmt.vcxproj.filters b/icu4c/source/samples/msgfmt/msgfmt.vcxproj.filters
deleted file mode 100644
index 43f6e5d67..000000000
--- a/icu4c/source/samples/msgfmt/msgfmt.vcxproj.filters
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{ee7c4dbe-02ac-43f8-89cf-260b2bebecc9}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{b140c5d1-fe3d-4fbc-9931-fd1a6a555dc7}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{66a2f758-b543-469a-a2c9-754e37e23a81}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="main.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="util.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/msgfmt/util.cpp b/icu4c/source/samples/msgfmt/util.cpp
deleted file mode 100644
index 72aa7445c..000000000
--- a/icu4c/source/samples/msgfmt/util.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- ***********************************************************************
- ***********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2010, International Business Machines Corporation and
- * others. All Rights Reserved.
- ***********************************************************************/
-
-#include "unicode/unistr.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-using namespace icu;
-
-// Verify that a UErrorCode is successful; exit(1) if not
-void check(UErrorCode& status, const char* msg) {
- if (U_FAILURE(status)) {
- printf("ERROR: %s (%s)\n", u_errorName(status), msg);
- exit(1);
- }
- // printf("Ok: %s\n", msg);
-}
-
-// Append a hex string to the target
-static UnicodeString& appendHex(uint32_t number,
- int8_t digits,
- UnicodeString& target) {
- static const UnicodeString DIGIT_STRING("0123456789ABCDEF");
- while (digits > 0) {
- target += DIGIT_STRING[(number >> ((--digits) * 4)) & 0xF];
- }
- return target;
-}
-
-// Replace nonprintable characters with unicode escapes
-UnicodeString escape(const UnicodeString &source) {
- int32_t i;
- UnicodeString target;
- target += "\"";
- for (i=0; i<source.length(); ++i) {
- char16_t ch = source[i];
- if (ch < 0x09 || (ch > 0x0A && ch < 0x20) || ch > 0x7E) {
- target += "\\u";
- appendHex(ch, 4, target);
- } else {
- target += ch;
- }
- }
- target += "\"";
- return target;
-}
-
-// Print the given string to stdout
-void uprintf(const UnicodeString &str) {
- char *buf = 0;
- int32_t len = str.length();
- // int32_t bufLen = str.extract(0, len, buf); // Preflight
- /* Preflighting seems to be broken now, so assume 1-1 conversion,
- plus some slop. */
- int32_t bufLen = len + 16;
- int32_t actualLen;
- buf = new char[bufLen + 1];
- actualLen = str.extract(0, len, buf/*, bufLen*/); // Default codepage conversion
- buf[actualLen] = 0;
- printf("%s", buf);
- delete [] buf;
-}
diff --git a/icu4c/source/samples/msgfmt/util.h b/icu4c/source/samples/msgfmt/util.h
deleted file mode 100644
index 4b64f5a60..000000000
--- a/icu4c/source/samples/msgfmt/util.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- ***********************************************************************
- ***********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2002, International Business Machines Corporation and
- * others. All Rights Reserved.
- ***********************************************************************/
-
-#include "unicode/unistr.h"
-
-using namespace icu;
-
-// Verify that a UErrorCode is successful; exit(1) if not
-void check(UErrorCode& status, const char* msg);
-
-// Replace nonprintable characters with unicode escapes
-UnicodeString escape(const UnicodeString &source);
-
-// Print the given string to stdout
-void uprintf(const UnicodeString &str);
diff --git a/icu4c/source/samples/numfmt/Makefile b/icu4c/source/samples/numfmt/Makefile
deleted file mode 100644
index 5affb9224..000000000
--- a/icu4c/source/samples/numfmt/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2002 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-#### definitions
-# Name of your target
-TARGET=numfmt
-
-# All object files (C or C++)
-OBJECTS=main.o util.o capi.o
-
-#### rules
-# Load in standard makefile definitions
-include ../defs.mk
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/numfmt/capi.c b/icu4c/source/samples/numfmt/capi.c
deleted file mode 100644
index 5f833c6c1..000000000
--- a/icu4c/source/samples/numfmt/capi.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2002, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unum.h"
-#include "unicode/ustring.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-static void uprintf(const UChar* str) {
- char buf[256];
- u_austrcpy(buf, str);
- printf("%s", buf);
-}
-
-void capi() {
- UNumberFormat *fmt;
- UErrorCode status = U_ZERO_ERROR;
- /* The string "987654321.123" as UChars */
- UChar str[] = { 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33,
- 0x32, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x33, 0 };
- UChar buf[256];
- int32_t needed;
- double a;
-
- /* Create a formatter for the US locale */
- fmt = unum_open(
- UNUM_DECIMAL, /* style */
- 0, /* pattern */
- 0, /* patternLength */
- "en_US", /* locale */
- 0, /* parseErr */
- &status);
- if (U_FAILURE(status)) {
- printf("FAIL: unum_open\n");
- exit(1);
- }
-
- /* Use the formatter to parse a number. When using the C API,
- we have to specify whether we want a double or a long in advance.
-
- We pass in NULL for the position pointer in order to get the
- default behavior which is to parse from the start. */
- a = unum_parseDouble(fmt, str, u_strlen(str), NULL, &status);
- if (U_FAILURE(status)) {
- printf("FAIL: unum_parseDouble\n");
- exit(1);
- }
-
- /* Show the result */
- printf("unum_parseDouble(\"");
- uprintf(str);
- printf("\") => %g\n", a);
-
- /* Use the formatter to format the same number back into a string
- in the US locale. The return value is the buffer size needed.
- We're pretty sure we have enough space, but in a production
- application one would check this value.
-
- We pass in NULL for the UFieldPosition pointer because we don't
- care to receive that data. */
- needed = unum_formatDouble(fmt, a, buf, 256, NULL, &status);
- if (U_FAILURE(status)) {
- printf("FAIL: format_parseDouble\n");
- exit(1);
- }
-
- /* Show the result */
- printf("unum_formatDouble(%g) => \"", a);
- uprintf(buf);
- printf("\"\n");
-
- /* Release the storage used by the formatter */
- unum_close(fmt);
-}
diff --git a/icu4c/source/samples/numfmt/main.cpp b/icu4c/source/samples/numfmt/main.cpp
deleted file mode 100644
index ad9df5e65..000000000
--- a/icu4c/source/samples/numfmt/main.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2014, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/utypes.h"
-#include "unicode/unistr.h"
-#include "unicode/numfmt.h"
-#include "unicode/dcfmtsym.h"
-#include "unicode/decimfmt.h"
-#include "unicode/locid.h"
-#include "unicode/uclean.h"
-#include "util.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-extern "C" void capi();
-void cppapi();
-
-static void
-showCurrencyFormatting(UBool useICU26API);
-
-int main(int argc, char **argv) {
- printf("%s output is in UTF-8\n", argv[0]);
-
- printf("C++ API\n");
- cppapi();
-
- printf("C API\n");
- capi();
-
- showCurrencyFormatting(false);
- showCurrencyFormatting(true);
-
- u_cleanup(); // Release any additional storage held by ICU.
-
- printf("Exiting successfully\n");
- return 0;
-}
-
-/**
- * Sample code for the C++ API to NumberFormat.
- */
-void cppapi() {
- Locale us("en", "US");
- UErrorCode status = U_ZERO_ERROR;
-
- // Create a number formatter for the US locale
- NumberFormat *fmt = NumberFormat::createInstance(us, status);
- check(status, "NumberFormat::createInstance");
-
- // Parse a string. The string uses the digits '0' through '9'
- // and the decimal separator '.', standard in the US locale
- UnicodeString str("9876543210.123");
- Formattable result;
- fmt->parse(str, result, status);
- check(status, "NumberFormat::parse");
-
- printf("NumberFormat::parse(\""); // Display the result
- uprintf(str);
- printf("\") => ");
- uprintf(formattableToString(result));
- printf("\n");
-
- // Take the number parsed above, and use the formatter to
- // format it.
- str.remove(); // format() will APPEND to this string
- fmt->format(result, str, status);
- check(status, "NumberFormat::format");
-
- printf("NumberFormat::format("); // Display the result
- uprintf(formattableToString(result));
- printf(") => \"");
- uprintf(str);
- printf("\"\n");
-
- delete fmt; // Release the storage used by the formatter
-
-}
-
-// currency formatting ----------------------------------------------------- ***
-
-/*
- * Set a currency on a NumberFormat with pre-ICU 2.6 APIs.
- * This is a "hack" that will not work properly for all cases because
- * only ICU 2.6 introduced a more complete framework and data for this.
- *
- * @param nf The NumberFormat on which to set the currency; takes effect on
- * currency-formatting NumberFormat instances.
- * This must actually be a DecimalFormat instance.
- * The display style of the output is controlled by nf (its pattern,
- * usually from the display locale ID used to create this instance)
- * while the currency symbol and number of decimals are set for
- * the currency.
- * @param currency The 3-letter ISO 4217 currency code, NUL-terminated.
- * @param errorCode ICU error code, must pass U_SUCCESS() on input.
- */
-static void
-setNumberFormatCurrency_2_4(NumberFormat &nf, const char *currency, UErrorCode &errorCode) {
- // argument checking
- if(U_FAILURE(errorCode)) {
- return;
- }
- if(currency==nullptr || strlen(currency)!=3) {
- errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return;
- }
-
- // check that the formatter is a DecimalFormat instance
- // necessary because we will cast to the DecimalFormat subclass to set
- // the currency symbol
- DecimalFormat *dnf=dynamic_cast<DecimalFormat *>(&nf);
- if(dnf==nullptr) {
- errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return;
- }
-
- // map the currency code to a locale ID
- // only the currencies in this array are supported
- // it would be possible to map to a locale ID, instantiate a currency
- // formatter for that and copy its values, but that would be slower,
- // and we have to hardcode something here anyway
- static const struct {
- // ISO currency ID
- const char *currency;
-
- // fractionDigits==minimumFractionDigits==maximumFractionDigits
- // for these currencies
- int32_t fractionDigits;
-
- /*
- * Set the rounding increment to 0 if it is implied with the number of
- * fraction digits. Setting an explicit rounding increment makes
- * number formatting slower.
- * In other words, set it to something other than 0 only for unusual
- * cases like "nickel rounding" (0.05) when the increment differs from
- * 10^(-maximumFractionDigits).
- */
- double roundingIncrement;
-
- // Unicode string with the desired currency display symbol or name
- char16_t symbol[16];
- } currencyMap[]={
- { "USD", 2, 0.0, { 0x24, 0 } },
- { "GBP", 2, 0.0, { 0xa3, 0 } },
- { "EUR", 2, 0.0, { 0x20ac, 0 } },
- { "JPY", 0, 0.0, { 0xa5, 0 } }
- };
-
- int32_t i;
-
- for(i=0; i<UPRV_LENGTHOF(currencyMap); ++i) {
- if(strcmp(currency, currencyMap[i].currency)==0) {
- break;
- }
- }
- if(i==UPRV_LENGTHOF(currencyMap)) {
- // a more specific error code would be useful in a real application
- errorCode=U_UNSUPPORTED_ERROR;
- return;
- }
-
- // set the currency-related data into the caller's formatter
-
- nf.setMinimumFractionDigits(currencyMap[i].fractionDigits);
- nf.setMaximumFractionDigits(currencyMap[i].fractionDigits);
-
- dnf->setRoundingIncrement(currencyMap[i].roundingIncrement);
-
- DecimalFormatSymbols symbols(*dnf->getDecimalFormatSymbols());
- symbols.setSymbol(DecimalFormatSymbols::kCurrencySymbol, currencyMap[i].symbol);
- dnf->setDecimalFormatSymbols(symbols); // do not adopt symbols: Jitterbug 2889
-}
-
-/*
- * Set a currency on a NumberFormat with ICU 2.6 APIs.
- *
- * @param nf The NumberFormat on which to set the currency; takes effect on
- * currency-formatting NumberFormat instances.
- * The display style of the output is controlled by nf (its pattern,
- * usually from the display locale ID used to create this instance)
- * while the currency symbol and number of decimals are set for
- * the currency.
- * @param currency The 3-letter ISO 4217 currency code, NUL-terminated.
- * @param errorCode ICU error code, must pass U_SUCCESS() on input.
- */
-static void
-setNumberFormatCurrency_2_6(NumberFormat &nf, const char *currency, UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) {
- return;
- }
- if(currency==nullptr || strlen(currency)!=3) {
- errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return;
- }
-
- // invariant-character conversion to UChars (see utypes.h and putil.h)
- char16_t uCurrency[4];
- u_charsToUChars(currency, uCurrency, 4);
-
- // set the currency
- // in ICU 3.0 this API (which was @draft ICU 2.6) gained a UErrorCode& argument
-#if (U_ICU_VERSION_MAJOR_NUM < 3)
- nf.setCurrency(uCurrency);
-#else
- nf.setCurrency(uCurrency, errorCode);
-#endif
-}
-
-static const char *const
-sampleLocaleIDs[]={
- // use locale IDs complete with country code to be sure to
- // pick up number/currency format patterns
- "en_US", "en_GB", "de_DE", "ja_JP", "fr_FR", "hi_IN"
-};
-
-static const char *const
-sampleCurrencies[]={
- "USD", "GBP", "EUR", "JPY"
-};
-
-static void
-showCurrencyFormatting(UBool useICU26API) {
- NumberFormat *nf;
- int32_t i, j;
-
- UnicodeString output;
-
- UErrorCode errorCode;
-
- // TODO: Using printf() here assumes that the runtime encoding is ASCII-friendly
- // and can therefore be mixed with UTF-8
-
- for(i=0; i<UPRV_LENGTHOF(sampleLocaleIDs); ++i) {
- printf("show currency formatting (method for %s) in the locale \"%s\"\n",
- useICU26API ? "ICU 2.6" : "before ICU 2.6",
- sampleLocaleIDs[i]);
-
- // get a currency formatter for this locale ID
- errorCode=U_ZERO_ERROR;
- nf=NumberFormat::createCurrencyInstance(sampleLocaleIDs[i], errorCode);
- if(U_FAILURE(errorCode)) {
- printf("NumberFormat::createCurrencyInstance(%s) failed - %s\n",
- sampleLocaleIDs[i], u_errorName(errorCode));
- continue;
- }
-
- for(j=0; j<UPRV_LENGTHOF(sampleCurrencies); ++j) {
- printf(" - format currency \"%s\": ", sampleCurrencies[j]);
-
- // set the actual currency to be formatted
- if(useICU26API) {
- setNumberFormatCurrency_2_6(*nf, sampleCurrencies[j], errorCode);
- } else {
- setNumberFormatCurrency_2_4(*nf, sampleCurrencies[j], errorCode);
- }
- if(U_FAILURE(errorCode)) {
- printf("setNumberFormatCurrency(%s) failed - %s\n",
- sampleCurrencies[j], u_errorName(errorCode));
- continue;
- }
-
- // output=formatted currency value
- output.remove();
- nf->format(12345678.93, output);
- output+=(char16_t)0x0a; // '\n'
- uprintf(output);
- }
- }
-}
diff --git a/icu4c/source/samples/numfmt/numfmt.sln b/icu4c/source/samples/numfmt/numfmt.sln
deleted file mode 100644
index f691efd24..000000000
--- a/icu4c/source/samples/numfmt/numfmt.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "numfmt", "numfmt.vcxproj", "{721FBD47-E458-4C35-90DA-FF192907D5E2}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|Win32.ActiveCfg = Debug|Win32
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|Win32.Build.0 = Debug|Win32
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.ActiveCfg = Debug|x64
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.Build.0 = Debug|x64
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|Win32.ActiveCfg = Release|Win32
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|Win32.Build.0 = Release|Win32
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.ActiveCfg = Release|x64
- {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/numfmt/numfmt.vcxproj b/icu4c/source/samples/numfmt/numfmt.vcxproj
deleted file mode 100644
index 4ea39eb54..000000000
--- a/icu4c/source/samples/numfmt/numfmt.vcxproj
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{721FBD47-E458-4C35-90DA-FF192907D5E2}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/numfmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/numfmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/numfmt.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/numfmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\x64\Debug/numfmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/numfmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/numfmt.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/numfmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/numfmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/numfmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/numfmt.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/numfmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/numfmt.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/numfmt.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/numfmt.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/numfmt.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="capi.c" />
- <ClCompile Include="main.cpp" />
- <ClCompile Include="util.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="util.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/numfmt/numfmt.vcxproj.filters b/icu4c/source/samples/numfmt/numfmt.vcxproj.filters
deleted file mode 100644
index 91ba2a2a1..000000000
--- a/icu4c/source/samples/numfmt/numfmt.vcxproj.filters
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{88ce2f55-7fa8-4f41-8f4b-218bc68250c4}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{d646ea9a-5f23-4c6a-9db6-b028a0f18de5}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{1fc0ba57-7696-49f7-a631-29ca4759be0e}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="capi.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="main.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="util.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="util.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/numfmt/readme.txt b/icu4c/source/samples/numfmt/readme.txt
deleted file mode 100644
index e332f5678..000000000
--- a/icu4c/source/samples/numfmt/readme.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
-numfmt: a sample program which displays number formatting in C and C++
-
-This sample demonstrates
- Formatting a number
- Outputting text in the default codepage to the console
-
-Files:
- main.cpp Main source file in C++
- capi.c C version
- util.cpp formatted output convenience implementation
- util.h formatted output convenience header
- numfmt.sln Windows MSVC workspace. Double-click this to get started.
- numfmt.vcproj Windows MSVC project file
-
-To Build on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\numfmt\numfmt.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the numfmt directory, e.g.
- cd c:\icu\source\samples\numfmt\debug
- 4. Run it
- numfmt
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/numfmt
- gmake ICU_PREFIX=<icu install directory)
-
- To Run on Unixes
- cd <icu directory>/source/samples/numfmt
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- numfmt
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/numfmt/util.cpp b/icu4c/source/samples/numfmt/util.cpp
deleted file mode 100644
index 7d9640d03..000000000
--- a/icu4c/source/samples/numfmt/util.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2009, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#define __STDC_FORMAT_MACROS 1
-#include <inttypes.h>
-
-#include "unicode/unistr.h"
-#include "unicode/fmtable.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-using namespace icu;
-
-enum {
- U_SPACE=0x20,
- U_DQUOTE=0x22,
- U_COMMA=0x2c,
- U_LEFT_SQUARE_BRACKET=0x5b,
- U_BACKSLASH=0x5c,
- U_RIGHT_SQUARE_BRACKET=0x5d,
- U_SMALL_U=0x75
-};
-
-// Verify that a UErrorCode is successful; exit(1) if not
-void check(UErrorCode& status, const char* msg) {
- if (U_FAILURE(status)) {
- printf("ERROR: %s (%s)\n", u_errorName(status), msg);
- exit(1);
- }
- // printf("Ok: %s\n", msg);
-}
-
-// Append a hex string to the target
-static UnicodeString& appendHex(uint32_t number,
- int8_t digits,
- UnicodeString& target) {
- uint32_t digit;
- while (digits > 0) {
- digit = (number >> ((--digits) * 4)) & 0xF;
- target += (char16_t)(digit < 10 ? 0x30 + digit : 0x41 - 10 + digit);
- }
- return target;
-}
-
-// Replace nonprintable characters with unicode escapes
-UnicodeString escape(const UnicodeString &source) {
- int32_t i;
- UnicodeString target;
- target += (char16_t)U_DQUOTE;
- for (i=0; i<source.length(); ++i) {
- char16_t ch = source[i];
- if (ch < 0x09 || (ch > 0x0D && ch < 0x20) || ch > 0x7E) {
- (target += (char16_t)U_BACKSLASH) += (char16_t)U_SMALL_U;
- appendHex(ch, 4, target);
- } else {
- target += ch;
- }
- }
- target += (char16_t)U_DQUOTE;
- return target;
-}
-
-// Print the given string to stdout using the UTF-8 converter
-void uprintf(const UnicodeString &str) {
- char stackBuffer[100];
- char *buf = 0;
-
- int32_t bufLen = str.extract(0, 0x7fffffff, stackBuffer, sizeof(stackBuffer), "UTF-8");
- if(bufLen < sizeof(stackBuffer)) {
- buf = stackBuffer;
- } else {
- buf = new char[bufLen + 1];
- bufLen = str.extract(0, 0x7fffffff, buf, bufLen + 1, "UTF-8");
- }
- printf("%s", buf);
- if(buf != stackBuffer) {
- delete[] buf;
- }
-}
-
-// Create a display string for a formattable
-UnicodeString formattableToString(const Formattable& f) {
- switch (f.getType()) {
- case Formattable::kDate:
- // TODO: Finish implementing this
- return UNICODE_STRING_SIMPLE("Formattable_DATE_TBD");
- case Formattable::kDouble:
- {
- char buf[256];
- sprintf(buf, "%gD", f.getDouble());
- return UnicodeString(buf, "");
- }
- case Formattable::kLong:
- {
- char buf[256];
- sprintf(buf, "%" PRId32 "L", f.getLong());
- return UnicodeString(buf, "");
- }
- case Formattable::kInt64:
- {
- char buf[256];
- sprintf(buf, "%" PRId64 "L", f.getInt64());
- return UnicodeString(buf, "");
- }
- case Formattable::kString:
- return UnicodeString((char16_t)U_DQUOTE).append(f.getString()).append((char16_t)U_DQUOTE);
- case Formattable::kArray:
- {
- int32_t i, count;
- const Formattable* array = f.getArray(count);
- UnicodeString result((char16_t)U_LEFT_SQUARE_BRACKET);
- for (i=0; i<count; ++i) {
- if (i > 0) {
- (result += (char16_t)U_COMMA) += (char16_t)U_SPACE;
- }
- result += formattableToString(array[i]);
- }
- result += (char16_t)U_RIGHT_SQUARE_BRACKET;
- return result;
- }
- default:
- return UNICODE_STRING_SIMPLE("INVALID_Formattable");
- }
-}
diff --git a/icu4c/source/samples/numfmt/util.h b/icu4c/source/samples/numfmt/util.h
deleted file mode 100644
index 86a698cdd..000000000
--- a/icu4c/source/samples/numfmt/util.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *************************************************************************
- *************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2002, International Business Machines Corporation and
- * others. All Rights Reserved.
- *************************************************************************/
-
-#include "unicode/unistr.h"
-#include "unicode/fmtable.h"
-
-using namespace icu;
-
-#ifndef UPRV_LENGTHOF
-#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
-#endif
-
-// Verify that a UErrorCode is successful; exit(1) if not
-void check(UErrorCode& status, const char* msg);
-
-// Replace nonprintable characters with unicode escapes
-UnicodeString escape(const UnicodeString &source);
-
-// Print the given string to stdout
-void uprintf(const UnicodeString &str);
-
-// Create a display string for a formattable
-UnicodeString formattableToString(const Formattable& f);
diff --git a/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp b/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp
deleted file mode 100644
index b03e63541..000000000
--- a/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/********************************************************************************
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-********************************************************************************
-********************************************************************************
-* Copyright (C) 2008-2013, International Business Machines Corporation and
-* others. All Rights Reserved.
-********************************************************************************
-*/
-
-//! [PluralFormatExample1]
-#include <iostream>
-#include "unicode/plurfmt.h"
-#include "unicode/msgfmt.h"
-#include "unicode/ustdio.h"
-//! [PluralFormatExample1]
-
-using namespace std;
-using namespace icu;
-
-static void PluralFormatExample() {
-
- u_printf("=============================================================================\n");
- u_printf(" PluralFormatExample()\n");
- u_printf("\n");
- u_printf(" Use PluralFormat and Messageformat to get Plural Form for languages below:\n");
- u_printf(" English, Slovenian\n");
- u_printf("=============================================================================\n");
-
- //! [PluralFormatExample]
- UErrorCode status =U_ZERO_ERROR;
- Locale locEn = Locale("en");
- Locale locSl = Locale("sl");
-
- UnicodeString patEn = UnicodeString("one{dog} other{dogs}"); // English 'dog'
- UnicodeString patSl = UnicodeString("one{pes} two{psa} few{psi} other{psov}"); // Slovenian translation of dog in Plural Form
-
- // Create a new PluralFormat for a given locale locale and pattern string
- PluralFormat plfmtEn = PluralFormat(locEn, patEn,status);
- PluralFormat plfmtSl = PluralFormat(locSl, patSl,status);
- // Constructs a MessageFormat for given pattern and locale.
- MessageFormat* msgfmtEn = new MessageFormat("{0,number} {1}", locEn,status);
- MessageFormat* msgfmtSl = new MessageFormat("{0,number} {1}", locSl,status);
-
- int numbers[] = {0, 1, 2, 3, 4, 5, 10, 100, 101, 102};
- u_printf("Output by using PluralFormat and MessageFormat API\n");
- u_printf("%-16s%-16s%-16s\n","Number", "English","Slovenian");
-
- // Use MessageFormat.format () to format the objects and append to the given StringBuffer
- for (int i=0;i<sizeof(numbers)/sizeof(int);i++) {
- UnicodeString msgEn,msgSl;
- FieldPosition fpos = 0;
- Formattable argEn[]={Formattable(numbers[i]), Formattable(plfmtEn.format(numbers[i],status))};
- Formattable argSl[]={Formattable(numbers[i]), Formattable(plfmtSl.format(numbers[i],status))};
- msgfmtEn->format(argEn,2,msgEn,fpos,status);
- msgfmtSl->format(argSl,2,msgSl,fpos,status);
- u_printf("%-16d%-16S%-16S\n", numbers[i], msgEn.getTerminatedBuffer(),msgSl.getTerminatedBuffer());
- }
-
- u_printf("\n");
-
- // Equivalent code with message format pattern
- UnicodeString msgPatEn = "{0,plural, one{# dog} other{# dogs}}";
- UnicodeString msgPatSl = "{0,plural, one{# pes} two{# psa} few{# psi} other{# psov}}";
-
- MessageFormat* altMsgfmtEn = new MessageFormat(msgPatEn, locEn,status);
- MessageFormat* altMsgfmtSl = new MessageFormat(msgPatSl, locSl,status);
- u_printf("Same Output by using MessageFormat API only\n");
- u_printf("%-16s%-16s%-16s\n","Number", "English","Slovenian");
- for (int i=0;i<sizeof(numbers)/sizeof(int);i++) {
- UnicodeString msgEn,msgSl;
- Formattable arg[] = {numbers[i]};
- FieldPosition fPos =0;
- altMsgfmtEn->format(arg, 1, msgEn, fPos, status);
- altMsgfmtSl->format(arg, 1, msgSl, fPos,status);
- u_printf("%-16d%-16S%-16S\n", numbers[i], msgEn.getTerminatedBuffer(), msgSl.getTerminatedBuffer());
- }
-
- delete msgfmtEn;
- delete msgfmtSl;
- delete altMsgfmtEn;
- delete altMsgfmtSl;
- //! [PluralFormatExample]
-
- /* output of the sample code:
- ********************************************************************
- Number English Slovenian
- 0 0 dogs 0 psov
- 1 1 dog 1 pes
- 2 2 dogs 2 psa
- 3 3 dogs 3 psi
- 4 4 dogs 4 psi
- 5 5 dogs 5 psov
- 10 10 dogs 10 psov
- 100 100 dogs 100 psov
- 101 101 dogs 101 pes
- 102 102 dogs 102 psa
-
- *********************************************************************/
-}
-int main (int argc, char* argv[])
-{
- PluralFormatExample();
- return 0;
-}
diff --git a/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj b/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj
deleted file mode 100644
index c0d3246ae..000000000
--- a/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{B500B731-ED1A-4761-94ED-B22DFE25FF2B}</ProjectGuid>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>.\x86\Debug\</OutDir>
- <IntDir>.\x86\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>.\x64\Debug\</OutDir>
- <IntDir>.\x64\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>.\x86\Release\</OutDir>
- <IntDir>.\x86\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>.\x64\Release\</OutDir>
- <IntDir>.\x64\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>.\x86\Debug\plurfmtsample.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>.\x64\Debug\plurfmtsample.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <OutputFile>.\x86\Release\plurfmtsample.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <OutputFile>.\x64\Release\plurfmtsample.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="plurfmtsample.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters b/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters
deleted file mode 100644
index 9089a0411..000000000
--- a/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="plurfmtsample.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/props/Makefile b/icu4c/source/samples/props/Makefile
deleted file mode 100644
index e4ed2520e..000000000
--- a/icu4c/source/samples/props/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2002 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-#### definitions
-# Name of your target
-TARGET=props
-
-# All object files (C or C++)
-OBJECTS=props.o
-
-#### rules
-# Load in standard makefile definitions
-include ../defs.mk
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/props/props.cpp b/icu4c/source/samples/props/props.cpp
deleted file mode 100644
index 0f5c4ea39..000000000
--- a/icu4c/source/samples/props/props.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2000, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: props.cpp
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2000sep22
-* created by: Markus W. Scherer
-*
-* This file contains sample code that illustrates the use of the ICU APIs
-* for Unicode character properties.
-*/
-
-#define __STDC_FORMAT_MACROS 1
-#include <inttypes.h>
-
-#include <stdio.h>
-#include "unicode/utypes.h"
-#include "unicode/uchar.h"
-#include "unicode/uclean.h"
-
-static void
-printProps(UChar32 codePoint) {
- char buffer[100];
- UErrorCode errorCode;
-
- /* get the character name */
- errorCode=U_ZERO_ERROR;
- u_charName(codePoint, U_UNICODE_CHAR_NAME, buffer, sizeof(buffer), &errorCode);
-
- /* print the code point and the character name */
- printf("U+%04" PRId32 "\t%s\n", codePoint, buffer);
-
- /* print some properties */
- printf(" general category (numeric enum value): %u\n", u_charType(codePoint));
-
- /* note: these APIs do not provide the data from SpecialCasing.txt */
- printf(" is lowercase: %d uppercase: U+%04" PRId32 "\n", u_islower(codePoint), u_toupper(codePoint));
-
- printf(" is digit: %d decimal digit value: %d\n", u_isdigit(codePoint), u_charDigitValue(codePoint));
-
- printf(" BiDi directional category (numeric enum value): %u\n", u_charDirection(codePoint));
-}
-
-/* Note: In ICU 2.0, the Unicode class is deprecated - it is a pure wrapper around the C APIs above. */
-
-extern int
-main(int argc, const char *argv[]) {
- static const UChar32
- codePoints[]={
- 0xd, 0x20, 0x2d, 0x35, 0x65, 0x284, 0x665, 0x5678, 0x23456, 0x10317, 0x1D01F, 0x10fffd
- };
- int i;
-
- for(i=0; i<sizeof(codePoints)/sizeof(codePoints[0]); ++i) {
- printProps(codePoints[i]);
- puts("");
- }
-
- u_cleanup();
- return 0;
-}
diff --git a/icu4c/source/samples/props/props.sln b/icu4c/source/samples/props/props.sln
deleted file mode 100644
index 7027a11d3..000000000
--- a/icu4c/source/samples/props/props.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "props", "props.vcxproj", "{ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|Win32.ActiveCfg = Debug|Win32
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|Win32.Build.0 = Debug|Win32
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.ActiveCfg = Debug|x64
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.Build.0 = Debug|x64
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|Win32.ActiveCfg = Release|Win32
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|Win32.Build.0 = Release|Win32
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.ActiveCfg = Release|x64
- {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/props/props.vcxproj b/icu4c/source/samples/props/props.vcxproj
deleted file mode 100644
index 17869e176..000000000
--- a/icu4c/source/samples/props/props.vcxproj
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/props.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/props.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/props.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/props.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\x64\Release/props.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/props.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/props.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/props.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
-
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/props.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/props.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/props.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/props.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\x64\Debug/props.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/props.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/props.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/props.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
-
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="props.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/props/props.vcxproj.filters b/icu4c/source/samples/props/props.vcxproj.filters
deleted file mode 100644
index f4007503e..000000000
--- a/icu4c/source/samples/props/props.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{2e5ed8fa-dbb6-411e-906e-128c69e6ab1f}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{07db40cb-b9b6-43df-b10e-240fb0d4747b}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{4526d88f-8075-44ec-8845-dcb0bfbb23fa}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="props.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/props/readme.txt b/icu4c/source/samples/props/readme.txt
deleted file mode 100644
index 3a4b32232..000000000
--- a/icu4c/source/samples/props/readme.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
-props: Unicode Character Properties
-
-This sample demonstrates
- Using ICU to determine the properties of Unicode characters
-
-
-Files:
- props.cpp Main source file in C++
- props.sln Windows MSVC workspace. Double-click this to get started.
- props.vcproj Windows MSVC project file
-
-To Build props on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\props\props.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the props directory, e.g.
- cd c:\icu\source\samples\props\debug
- 4. Run it
- props
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/props
- gmake ICU_PREFIX=<icu install directory)
-
- To Run on Unixes
- cd <icu directory>/source/samples/props
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- props
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/readme.txt b/icu4c/source/samples/readme.txt
index 1dfef216d..d599dddb7 100644
--- a/icu4c/source/samples/readme.txt
+++ b/icu4c/source/samples/readme.txt
@@ -7,56 +7,14 @@
This directory contains sample code using ICU4C routines. Below is a
short description of the contents of this directory.
-break - demonstrates how to use BreakIterators in C and C++.
-
-cal - prints out a calendar.
-
-case - demonstrates how to do Unicode case conversion in C and C++.
-
coll - shows how collation compares strings
-csdet - demonstrates using ICU's CharSet Detection API
-
-date - prints out the current date, localized.
-
-datecal - demonstrates how a calendar object provides information
-
-datefmt - an exercise using the date formatting API
-
-dtitvfmtsample - shows how date interval format uses predefined skeletons
-
-dtptngsample - uses DateTimePatternGenerator to create customized date/time pattern
-
-layout - demonstrates the ICU LayoutEngine (obsolete)
-
-legacy - demonstrates using two versions of ICU in one application (obsolete)
-
-msgfmt - demonstrates the use of the Message Format
-
-numfmt - demonstrates the use of the number format
-
-plurfmtsample - uses PluralFormat and Messageformat to get Plural Form
-
-props - demonstrates the use of Unicode properties
-
strsrch - demonstrates how to search for patterns in Unicode text using the usearch interface.
translit - demonstrates the use of ICU transliteration
-uciter8 - demonstrates how to leniently read 8-bit Unicode text.
-
-ucnv - demonstrates the use of ICU codepage conversion
-
-udata - demonstrates the use of ICU low level data routines (reader/writer in 'all' MSVC solution)
-
-ufortune - demonstrates packaging and use of resources in an application
-
ugrep - demonstrates ICU Regular Expressions.
-uresb - demonstrates building and loading resource bundles
-
-ustring - demonstrates ICU string manipulation functions
-
==
* Where can I find more sample code?
@@ -86,6 +44,3 @@ ustring - demonstrates ICU string manipulation functions
- type 'make all-samples' from this directory
(other targets: clean-samples, check-samples)
Note: 'make all-samples' won't work correctly in out of source builds.
-
- Note that legacy and layout are obsolete samples that may not compile or run without
- adjustments to their makefiles.
diff --git a/icu4c/source/samples/strsrch/strsrch.cpp b/icu4c/source/samples/strsrch/strsrch.cpp
index 3c2e7eb05..f1a525786 100644
--- a/icu4c/source/samples/strsrch/strsrch.cpp
+++ b/icu4c/source/samples/strsrch/strsrch.cpp
@@ -48,7 +48,7 @@ const char gHelpString[] =
* on the command line by the user.
*/
char const *opt_locale = "en_US";
-char * opt_rules = 0;
+char *opt_rules = nullptr;
UBool opt_help = false;
UBool opt_norm = false;
UBool opt_french = false;
@@ -61,8 +61,8 @@ UBool opt_canonical = false;
int opt_level = 0;
char const *opt_source = "International Components for Unicode";
char const *opt_pattern = "Unicode";
-UCollator * collator = 0;
-UStringSearch * search = 0;
+UCollator *collator = nullptr;
+UStringSearch *search = nullptr;
char16_t rules[100];
char16_t source[100];
char16_t pattern[100];
@@ -92,7 +92,7 @@ OptSpec opts[] = {
{"-canonical", OptSpec::FLAG, &opt_canonical},
{"-help", OptSpec::FLAG, &opt_help},
{"-?", OptSpec::FLAG, &opt_help},
- {0, OptSpec::FLAG, 0}
+ {nullptr, OptSpec::FLAG, nullptr}
};
/**
@@ -103,7 +103,7 @@ UBool processOptions(int argc, const char **argv, OptSpec opts[])
for (int argNum = 1; argNum < argc; argNum ++) {
const char *pArgName = argv[argNum];
OptSpec *pOpt;
- for (pOpt = opts; pOpt->name != 0; pOpt ++) {
+ for (pOpt = opts; pOpt->name != nullptr; pOpt++) {
if (strcmp(pOpt->name, pArgName) == 0) {
switch (pOpt->type) {
case OptSpec::FLAG:
@@ -138,7 +138,7 @@ UBool processOptions(int argc, const char **argv, OptSpec opts[])
break;
}
}
- if (pOpt->name == 0)
+ if (pOpt->name == nullptr)
{
fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
return false;
@@ -155,7 +155,7 @@ UBool processCollator()
// Set up an ICU collator
UErrorCode status = U_ZERO_ERROR;
- if (opt_rules != 0) {
+ if (opt_rules != nullptr) {
u_unescape(opt_rules, rules, 100);
collator = ucol_openRules(rules, -1, UCOL_OFF, UCOL_TERTIARY,
nullptr, &status);
diff --git a/icu4c/source/samples/translit/answers/main_1.cpp b/icu4c/source/samples/translit/answers/main_1.cpp
index d8227df8a..9191c9b93 100644
--- a/icu4c/source/samples/translit/answers/main_1.cpp
+++ b/icu4c/source/samples/translit/answers/main_1.cpp
@@ -9,7 +9,6 @@
***********************************************************************/
#include "unicode/translit.h"
-#include "unicode/rbt.h"
#include "unicode/unistr.h"
#include "unicode/calendar.h"
#include "unicode/datefmt.h"
diff --git a/icu4c/source/samples/translit/answers/main_2.cpp b/icu4c/source/samples/translit/answers/main_2.cpp
index 8603bad98..f418ca1ce 100644
--- a/icu4c/source/samples/translit/answers/main_2.cpp
+++ b/icu4c/source/samples/translit/answers/main_2.cpp
@@ -9,7 +9,6 @@
***********************************************************************/
#include "unicode/translit.h"
-#include "unicode/rbt.h"
#include "unicode/unistr.h"
#include "unicode/calendar.h"
#include "unicode/datefmt.h"
@@ -18,6 +17,8 @@
#include "util.h"
#include "unaccent.h"
+using icu::Transliterator;
+
int main(int argc, char **argv) {
Calendar *cal;
@@ -41,8 +42,8 @@ int main(int argc, char **argv) {
defFmt->setCalendar(*cal);
// Create a Greek-Latin Transliterator
- greek_latin = Transliterator::createInstance("Greek-Latin");
- if (greek_latin == 0) {
+ greek_latin = Transliterator::createInstance("Greek-Latin", UTRANS_FORWARD, status);
+ if (greek_latin == nullptr) {
printf("ERROR: Transliterator::createInstance() failed\n");
exit(1);
}
diff --git a/icu4c/source/samples/translit/answers/main_3.cpp b/icu4c/source/samples/translit/answers/main_3.cpp
index a240200e4..63a0822a7 100644
--- a/icu4c/source/samples/translit/answers/main_3.cpp
+++ b/icu4c/source/samples/translit/answers/main_3.cpp
@@ -9,7 +9,7 @@
***********************************************************************/
#include "unicode/translit.h"
-#include "unicode/rbt.h"
+#include "rbt.h"
#include "unicode/unistr.h"
#include "unicode/calendar.h"
#include "unicode/datefmt.h"
@@ -18,6 +18,8 @@
#include "util.h"
#include "unaccent.h"
+using icu::Transliterator;
+
// RuleBasedTransliterator rules to remove accents from characters
// so they can be displayed as ASCIIx
UnicodeString UNACCENT_RULES(
@@ -53,16 +55,19 @@ int main(int argc, char **argv) {
defFmt->setCalendar(*cal);
// Create a Greek-Latin Transliterator
- greek_latin = Transliterator::createInstance("Greek-Latin");
- if (greek_latin == 0) {
+ greek_latin = Transliterator::createInstance("Greek-Latin", UTRANS_FORWARD, status);
+ if (greek_latin == nullptr) {
printf("ERROR: Transliterator::createInstance() failed\n");
exit(1);
}
// Create a custom Transliterator
+ UParseError parseError;
rbtUnaccent = new RuleBasedTransliterator("RBTUnaccent",
UNACCENT_RULES,
UTRANS_FORWARD,
+ nullptr,
+ parseError,
status);
check(status, "RuleBasedTransliterator::ct");
diff --git a/icu4c/source/samples/translit/answers/main_4.cpp b/icu4c/source/samples/translit/answers/main_4.cpp
index 59d0b5816..bfe851716 100644
--- a/icu4c/source/samples/translit/answers/main_4.cpp
+++ b/icu4c/source/samples/translit/answers/main_4.cpp
@@ -9,7 +9,7 @@
***********************************************************************/
#include "unicode/translit.h"
-#include "unicode/rbt.h"
+#include "rbt.h"
#include "unicode/unistr.h"
#include "unicode/calendar.h"
#include "unicode/datefmt.h"
@@ -18,6 +18,8 @@
#include "util.h"
#include "unaccent.h"
+using icu::Transliterator;
+
// RuleBasedTransliterator rules to remove accents from characters
// so they can be displayed as ASCIIx
UnicodeString UNACCENT_RULES(
@@ -54,16 +56,19 @@ int main(int argc, char **argv) {
defFmt->setCalendar(*cal);
// Create a Greek-Latin Transliterator
- greek_latin = Transliterator::createInstance("Greek-Latin");
- if (greek_latin == 0) {
+ greek_latin = Transliterator::createInstance("Greek-Latin", UTRANS_FORWARD, status);
+ if (greek_latin == nullptr) {
printf("ERROR: Transliterator::createInstance() failed\n");
exit(1);
}
// Create a custom Transliterator
+ UParseError parseError;
rbtUnaccent = new RuleBasedTransliterator("RBTUnaccent",
UNACCENT_RULES,
UTRANS_FORWARD,
+ nullptr,
+ parseError,
status);
check(status, "RuleBasedTransliterator::ct");
diff --git a/icu4c/source/samples/translit/answers/unaccent.cpp b/icu4c/source/samples/translit/answers/unaccent.cpp
index d18c1868d..3592f0db0 100644
--- a/icu4c/source/samples/translit/answers/unaccent.cpp
+++ b/icu4c/source/samples/translit/answers/unaccent.cpp
@@ -9,12 +9,18 @@
#include "unaccent.h"
+using icu::Replaceable;
+using icu::Transliterator;
+using icu::UnicodeString;
+
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UnaccentTransliterator)
+
/**
* Constructor
*/
UnaccentTransliterator::UnaccentTransliterator() :
- normalizer("", Normalizer::DECOMP),
- Transliterator("Unaccent", 0) {
+ normalizer("", UNORM_NFD),
+ Transliterator("Unaccent", nullptr) {
}
/**
diff --git a/icu4c/source/samples/translit/answers/unaccent.h b/icu4c/source/samples/translit/answers/unaccent.h
index a2cf7a340..839d4a95d 100644
--- a/icu4c/source/samples/translit/answers/unaccent.h
+++ b/icu4c/source/samples/translit/answers/unaccent.h
@@ -11,6 +11,10 @@
#include "unicode/translit.h"
#include "unicode/normlzr.h"
+using icu::Normalizer;
+using icu::Replaceable;
+using icu::Transliterator;
+
class UnaccentTransliterator : public Transliterator {
public:
@@ -25,6 +29,9 @@ class UnaccentTransliterator : public Transliterator {
*/
virtual ~UnaccentTransliterator();
+ virtual UClassID getDynamicClassID() const override;
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
+
protected:
/**
diff --git a/icu4c/source/samples/translit/main.cpp b/icu4c/source/samples/translit/main.cpp
index e10ab953a..4bcc0a940 100644
--- a/icu4c/source/samples/translit/main.cpp
+++ b/icu4c/source/samples/translit/main.cpp
@@ -56,7 +56,7 @@ int main(int argc, char **argv) {
// Create a Greek-Latin Transliterator
greek_latin = Transliterator::createInstance("Greek-Latin", UTRANS_FORWARD, status);
- if (greek_latin == 0) {
+ if (greek_latin == nullptr) {
printf("ERROR: Transliterator::createInstance() failed\n");
exit(1);
}
diff --git a/icu4c/source/samples/translit/unaccent.cpp b/icu4c/source/samples/translit/unaccent.cpp
index b191326a9..57eca2618 100644
--- a/icu4c/source/samples/translit/unaccent.cpp
+++ b/icu4c/source/samples/translit/unaccent.cpp
@@ -17,7 +17,7 @@ const char UnaccentTransliterator::fgClassID = 0;
*/
UnaccentTransliterator::UnaccentTransliterator() :
normalizer("", UNORM_NFD),
- Transliterator("Unaccent", 0) {
+ Transliterator("Unaccent", nullptr) {
}
/**
diff --git a/icu4c/source/samples/translit/util.cpp b/icu4c/source/samples/translit/util.cpp
index db2b4dbb6..def5e859c 100644
--- a/icu4c/source/samples/translit/util.cpp
+++ b/icu4c/source/samples/translit/util.cpp
@@ -54,7 +54,7 @@ UnicodeString escape(const UnicodeString &source) {
// Print the given string to stdout
void uprintf(const UnicodeString &str) {
- char *buf = 0;
+ char* buf = nullptr;
int32_t len = str.length();
// int32_t bufLen = str.extract(0, len, buf); // Preflight
/* Preflighting seems to be broken now, so assume 1-1 conversion,
diff --git a/icu4c/source/samples/uciter8/Makefile b/icu4c/source/samples/uciter8/Makefile
deleted file mode 100644
index 6aeb11a0b..000000000
--- a/icu4c/source/samples/uciter8/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2003 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-# Name of your target
-TARGET=uciter8
-
-# All object files (C or C++)
-OBJECTS=uciter8.o uit_len8.o
-
-# Load in standard makefile definitions
-include ../defs.mk
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/uciter8/readme.txt b/icu4c/source/samples/uciter8/readme.txt
deleted file mode 100644
index 46e5a6f82..000000000
--- a/icu4c/source/samples/uciter8/readme.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2003-2005, International Business Machines Corporation and others. All Rights Reserved.
-uciter8: Lenient reading of 8-bit Unicode with a UCharIterator
-
-This sample demonstrates reading
-8-bit Unicode text leniently, accepting a mix of UTF-8 and CESU-8
-and also accepting single surrogates.
-UTF-8-style macros are defined as well as a UCharIterator.
-The macros are incomplete (do not assemble code points from pairs of surrogates)
-but sufficient for the iterator.
-
-If you wish to use the lenient-UTF/CESU-8 UCharIterator in a context outside of
-this sample, then copy the uit_len8.c file,
-as well as either the uit_len8.h header or just the prototype that it contains.
-
-*** Warning: ***
-This UCharIterator reads an arbitrary mix of UTF-8 and CESU-8 text.
-It does not conform to any one Unicode charset specification,
-and its use may lead to security risks.
-
-
-Files:
- uciter8.c Main source file in C
- uit_len8.c Lenient-UTF/CESU-8 UCharIterator implementation
- uit_len8.h Header file with the prototoype for the lenient-UTF/CESU-8 UCharIterator
- uciter8.sln Windows MSVC workspace. Double-click this to get started.
- uciter8.vcproj Windows MSVC project file
-
-To Build uciter8 on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\uciter8\uciter8.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the uciter8 directory, e.g.
- cd c:\icu\source\samples\uciter8\debug
- 4. Run it
- uciter8
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/uciter8
- gmake ICU_PREFIX=<icu install directory)
-
-To Run on Unixes
- cd <icu directory>/source/samples/uciter8
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- uciter8
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
diff --git a/icu4c/source/samples/uciter8/uciter8.c b/icu4c/source/samples/uciter8/uciter8.c
deleted file mode 100644
index aa828dbbb..000000000
--- a/icu4c/source/samples/uciter8/uciter8.c
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2003-2014, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: uciter8.c
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2003jan10
-* created by: Markus W. Scherer
-*
-* This file contains sample code that illustrates reading
-* 8-bit Unicode text leniently, accepting a mix of UTF-8 and CESU-8
-* and also accepting single surrogates.
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include "unicode/utypes.h"
-#include "unicode/uiter.h"
-#include "uit_len8.h"
-
-#ifndef UPRV_LENGTHOF
-#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
-#endif
-
-#define log_err printf
-
-/* UCharIterator test ------------------------------------------------------- */
-
-/*
- * The following code is a copy of the UCharIterator test code in
- * source/test/cintltst/custrtst.c,
- * testing the lenient-8 iterator instead of the UTF-8 one.
- */
-
-/*
- * Compare results from two iterators, should be same.
- * Assume that the text is not empty and that
- * iteration start==0 and iteration limit==length.
- */
-static void
-compareIterators(UCharIterator *iter1, const char *n1,
- UCharIterator *iter2, const char *n2) {
- int32_t i, pos1, pos2, middle, length;
- UChar32 c1, c2;
-
- /* compare lengths */
- length=iter1->getIndex(iter1, UITER_LENGTH);
- pos2=iter2->getIndex(iter2, UITER_LENGTH);
- if(length!=pos2) {
- log_err("%s->getIndex(length)=%d != %d=%s->getIndex(length)\n", n1, length, pos2, n2);
- return;
- }
-
- /* set into the middle */
- middle=length/2;
-
- pos1=iter1->move(iter1, middle, UITER_ZERO);
- if(pos1!=middle) {
- log_err("%s->move(from 0 to middle %d)=%d does not move to the middle\n", n1, middle, pos1);
- return;
- }
-
- pos2=iter2->move(iter2, middle, UITER_ZERO);
- if(pos2!=middle) {
- log_err("%s->move(from 0 to middle %d)=%d does not move to the middle\n", n2, middle, pos2);
- return;
- }
-
- /* test current() */
- c1=iter1->current(iter1);
- c2=iter2->current(iter2);
- if(c1!=c2) {
- log_err("%s->current()=U+%04x != U+%04x=%s->current() at middle=%d\n", n1, c1, c2, n2, middle);
- return;
- }
-
- /* move forward 3 UChars */
- for(i=0; i<3; ++i) {
- c1=iter1->next(iter1);
- c2=iter2->next(iter2);
- if(c1!=c2) {
- log_err("%s->next()=U+%04x != U+%04x=%s->next() at %d (started in middle)\n", n1, c1, c2, n2, iter1->getIndex(iter1, UITER_CURRENT));
- return;
- }
- }
-
- /* move backward 5 UChars */
- for(i=0; i<5; ++i) {
- c1=iter1->previous(iter1);
- c2=iter2->previous(iter2);
- if(c1!=c2) {
- log_err("%s->previous()=U+%04x != U+%04x=%s->previous() at %d (started in middle)\n", n1, c1, c2, n2, iter1->getIndex(iter1, UITER_CURRENT));
- return;
- }
- }
-
- /* iterate forward from the beginning */
- pos1=iter1->move(iter1, 0, UITER_START);
- if(pos1<0) {
- log_err("%s->move(start) failed\n", n1);
- return;
- }
- if(!iter1->hasNext(iter1)) {
- log_err("%s->hasNext() at the start returns false\n", n1);
- return;
- }
-
- pos2=iter2->move(iter2, 0, UITER_START);
- if(pos2<0) {
- log_err("%s->move(start) failed\n", n2);
- return;
- }
- if(!iter2->hasNext(iter2)) {
- log_err("%s->hasNext() at the start returns false\n", n2);
- return;
- }
-
- do {
- c1=iter1->next(iter1);
- c2=iter2->next(iter2);
- if(c1!=c2) {
- log_err("%s->next()=U+%04x != U+%04x=%s->next() at %d\n", n1, c1, c2, n2, iter1->getIndex(iter1, UITER_CURRENT));
- return;
- }
- } while(c1>=0);
-
- if(iter1->hasNext(iter1)) {
- log_err("%s->hasNext() at the end returns true\n", n1);
- return;
- }
- if(iter2->hasNext(iter2)) {
- log_err("%s->hasNext() at the end returns true\n", n2);
- return;
- }
-
- /* back to the middle */
- pos1=iter1->move(iter1, middle, UITER_ZERO);
- if(pos1!=middle) {
- log_err("%s->move(from end to middle %d)=%d does not move to the middle\n", n1, middle, pos1);
- return;
- }
-
- pos2=iter2->move(iter2, middle, UITER_ZERO);
- if(pos2!=middle) {
- log_err("%s->move(from end to middle %d)=%d does not move to the middle\n", n2, middle, pos2);
- return;
- }
-
- /* move to index 1 */
- pos1=iter1->move(iter1, 1, UITER_ZERO);
- if(pos1!=1) {
- log_err("%s->move(from middle %d to 1)=%d does not move to 1\n", n1, middle, pos1);
- return;
- }
-
- pos2=iter2->move(iter2, 1, UITER_ZERO);
- if(pos2!=1) {
- log_err("%s->move(from middle %d to 1)=%d does not move to 1\n", n2, middle, pos2);
- return;
- }
-
- /* iterate backward from the end */
- pos1=iter1->move(iter1, 0, UITER_LIMIT);
- if(pos1<0) {
- log_err("%s->move(limit) failed\n", n1);
- return;
- }
- if(!iter1->hasPrevious(iter1)) {
- log_err("%s->hasPrevious() at the end returns false\n", n1);
- return;
- }
-
- pos2=iter2->move(iter2, 0, UITER_LIMIT);
- if(pos2<0) {
- log_err("%s->move(limit) failed\n", n2);
- return;
- }
- if(!iter2->hasPrevious(iter2)) {
- log_err("%s->hasPrevious() at the end returns false\n", n2);
- return;
- }
-
- do {
- c1=iter1->previous(iter1);
- c2=iter2->previous(iter2);
- if(c1!=c2) {
- log_err("%s->previous()=U+%04x != U+%04x=%s->previous() at %d\n", n1, c1, c2, n2, iter1->getIndex(iter1, UITER_CURRENT));
- return;
- }
- } while(c1>=0);
-
- if(iter1->hasPrevious(iter1)) {
- log_err("%s->hasPrevious() at the start returns true\n", n1);
- return;
- }
- if(iter2->hasPrevious(iter2)) {
- log_err("%s->hasPrevious() at the start returns true\n", n2);
- return;
- }
-}
-
-/*
- * Test the iterator's getState() and setState() functions.
- * iter1 and iter2 must be set up for the same iterator type and the same string
- * but may be physically different structs (different addresses).
- *
- * Assume that the text is not empty and that
- * iteration start==0 and iteration limit==length.
- * It must be 2<=middle<=length-2.
- */
-static void
-testIteratorState(UCharIterator *iter1, UCharIterator *iter2, const char *n, int32_t middle) {
- UChar32 u[4];
-
- UErrorCode errorCode;
- UChar32 c;
- uint32_t state;
- int32_t i, j;
-
- /* get four UChars from the middle of the string */
- iter1->move(iter1, middle-2, UITER_ZERO);
- for(i=0; i<4; ++i) {
- c=iter1->next(iter1);
- if(c<0) {
- /* the test violates the assumptions, see comment above */
- log_err("test error: %s[%d]=%d\n", n, middle-2+i, c);
- return;
- }
- u[i]=c;
- }
-
- /* move to the middle and get the state */
- iter1->move(iter1, -2, UITER_CURRENT);
- state=uiter_getState(iter1);
-
- /* set the state into the second iterator and compare the results */
- errorCode=U_ZERO_ERROR;
- uiter_setState(iter2, state, &errorCode);
- if(U_FAILURE(errorCode)) {
- log_err("%s->setState(0x%x) failed: %s\n", n, state, u_errorName(errorCode));
- return;
- }
-
- c=iter2->current(iter2);
- if(c!=u[2]) {
- log_err("%s->current(at %d)=U+%04x!=U+%04x\n", n, middle, c, u[2]);
- }
-
- c=iter2->previous(iter2);
- if(c!=u[1]) {
- log_err("%s->previous(at %d)=U+%04x!=U+%04x\n", n, middle-1, c, u[1]);
- }
-
- iter2->move(iter2, 2, UITER_CURRENT);
- c=iter2->next(iter2);
- if(c!=u[3]) {
- log_err("%s->next(at %d)=U+%04x!=U+%04x\n", n, middle+1, c, u[3]);
- }
-
- iter2->move(iter2, -3, UITER_CURRENT);
- c=iter2->previous(iter2);
- if(c!=u[0]) {
- log_err("%s->previous(at %d)=U+%04x!=U+%04x\n", n, middle-2, c, u[0]);
- }
-
- /* move the second iterator back to the middle */
- iter2->move(iter2, 1, UITER_CURRENT);
- iter2->next(iter2);
-
- /* check that both are in the middle */
- i=iter1->getIndex(iter1, UITER_CURRENT);
- j=iter2->getIndex(iter2, UITER_CURRENT);
- if(i!=middle) {
- log_err("%s->getIndex(current)=%d!=%d as expected\n", n, i, middle);
- }
- if(i!=j) {
- log_err("%s->getIndex(current)=%d!=%d after setState()\n", n, j, i);
- }
-
- /* compare lengths */
- i=iter1->getIndex(iter1, UITER_LENGTH);
- j=iter2->getIndex(iter2, UITER_LENGTH);
- if(i!=j) {
- log_err("%s->getIndex(length)=%d!=%d before/after setState()\n", n, i, j);
- }
-}
-
-static void
-TestLenient8Iterator() {
- static const UChar text[]={
- 0x61, 0x62, 0x63,
- /* dffd 107fd d801 dffd - in UTF-16, U+107fd=<d801 dffd> */
- 0xdffd, 0xd801, 0xdffd, 0xd801, 0xdffd,
- 0x78, 0x79, 0x7a, 0
- };
- static const uint8_t bytes[]={
- 0x61, 0x62, 0x63,
- /* dffd 107fd d801 dffd - mixture */
- 0xed, 0xbf, 0xbd, 0xf0, 0x90, 0x9f, 0xbd, 0xed, 0xa0, 0x81, 0xed, 0xbf, 0xbd,
- 0x78, 0x79, 0x7a, 0
- };
-
- UCharIterator iter1, iter2;
- UChar32 c1, c2;
- int32_t length;
-
- puts("test a UCharIterator for lenient 8-bit Unicode (accept single surrogates)");
-
- /* compare the same string between UTF-16 and lenient-8 UCharIterators */
- uiter_setString(&iter1, text, -1);
- uiter_setLenient8(&iter2, (const char *)bytes, sizeof(bytes)-1);
- compareIterators(&iter1, "UTF16Iterator", &iter2, "Lenient8Iterator");
-
- /* try again with length=-1 */
- uiter_setLenient8(&iter2, (const char *)bytes, -1);
- compareIterators(&iter1, "UTF16Iterator", &iter2, "Lenient8Iterator_1");
-
- /* test get/set state */
- length=UPRV_LENGTHOF(text)-1;
- uiter_setLenient8(&iter1, (const char*)bytes, -1);
- testIteratorState(&iter1, &iter2, "Lenient8IteratorState", length/2);
- testIteratorState(&iter1, &iter2, "Lenient8IteratorStatePlus1", length/2+1);
-
- /* ---------------------------------------------------------------------- */
-
- puts("no output so far means that the lenient-8 iterator works fine");
-
- puts("iterate forward:\nUTF-16\tlenient-8");
- uiter_setString(&iter1, text, -1);
- iter1.move(&iter1, 0, UITER_START);
- iter2.move(&iter2, 0, UITER_START);
- for(;;) {
- c1=iter1.next(&iter1);
- c2=iter2.next(&iter2);
- if(c1<0 && c2<0) {
- break;
- }
- if(c1<0) {
- printf("\t%04x\n", c2);
- } else if(c2<0) {
- printf("%04x\n", c1);
- } else {
- printf("%04x\t%04x\n", c1, c2);
- }
- }
-}
-
-extern int
-main(int argc, const char *argv[]) {
- TestLenient8Iterator();
- return 0;
-}
diff --git a/icu4c/source/samples/uciter8/uciter8.sln b/icu4c/source/samples/uciter8/uciter8.sln
deleted file mode 100644
index 8fe98ffb3..000000000
--- a/icu4c/source/samples/uciter8/uciter8.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uciter8", "uciter8.vcxproj", "{94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|Win32.ActiveCfg = Debug|Win32
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|Win32.Build.0 = Debug|Win32
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.ActiveCfg = Debug|x64
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.Build.0 = Debug|x64
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|Win32.ActiveCfg = Release|Win32
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|Win32.Build.0 = Release|Win32
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.ActiveCfg = Release|x64
- {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/uciter8/uciter8.vcxproj b/icu4c/source/samples/uciter8/uciter8.vcxproj
deleted file mode 100644
index fdbfa44d3..000000000
--- a/icu4c/source/samples/uciter8/uciter8.vcxproj
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <!-- Options that are common to *all* project configurations -->
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/uciter8.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/uciter8.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/uciter8.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/uciter8.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/uciter8.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/uciter8.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/uciter8.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/uciter8.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/uciter8.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/uciter8.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/uciter8.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/uciter8.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/uciter8.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/uciter8.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/uciter8.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/uciter8.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="uciter8.c" />
- <ClCompile Include="uit_len8.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="uit_len8.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/uciter8/uciter8.vcxproj.filters b/icu4c/source/samples/uciter8/uciter8.vcxproj.filters
deleted file mode 100644
index d9b14f960..000000000
--- a/icu4c/source/samples/uciter8/uciter8.vcxproj.filters
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{539093c3-5b8d-4243-9153-abe14e9601b8}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{a04b6e49-ecbb-408f-a73c-9797cf0d45ae}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{b1a5a5b9-75a4-4bd6-8283-9eba59b3489d}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="uciter8.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="uit_len8.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="uit_len8.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/uciter8/uit_len8.c b/icu4c/source/samples/uciter8/uit_len8.c
deleted file mode 100644
index d2d3c54af..000000000
--- a/icu4c/source/samples/uciter8/uit_len8.c
+++ /dev/null
@@ -1,562 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2003-2006, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: uit_len8.c
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2003feb10
-* created by: Markus W. Scherer
-*
-* This file contains the implementation of the "lenient UTF-8" UCharIterator
-* as used in the uciter8 sample code.
-* UTF-8-style macros are defined as well as the UCharIterator.
-* The macros are incomplete (do not assemble code points from pairs of
-* surrogates, see comment below)
-* but sufficient for the iterator.
-*/
-
-#include <string.h>
-#include "unicode/utypes.h"
-#include "unicode/uiter.h"
-
-/* lenient UTF-8/CESU-8 macros ---------------------------------------------- */
-
-/*
- * This code leniently reads 8-bit Unicode strings,
- * which could contain a mix of UTF-8 and CESU-8.
- * More precisely:
- * - supplementary code points may be encoded with dedicated 4-byte sequences
- * (UTF-8 style)
- * - supplementary code points may be encoded with
- * pairs of 3-byte sequences, one for each surrogate of the UTF-16 form
- * (CESU-8 style)
- * - single surrogates are allowed, encoded with their "natural" 3-byte sequences
- *
- * Limitation:
- * Right now, the macros do not attempt to assemble code points from pairs of
- * separately encoded surrogates.
- * This would not be sufficient for processing based on these macros,
- * but it is sufficient for a UCharIterator that returns only UChars anyway.
- *
- * The code is copied and modified from utf_impl.c and utf8.h.
- *
- * Change 2006feb08: Much of the implementation code is replaced by calling
- * the utf_impl.c functions which accept a new "strict" parameter value
- * of -2 implementing exactly this leniency.
- */
-
-#define L8_NEXT(s, i, length, c) { \
- (c)=(uint8_t)(s)[(i)++]; \
- if((c)>=0x80) { \
- if(U8_IS_LEAD(c)) { \
- (c)=utf8_nextCharSafeBody((const uint8_t *)s, &(i), (int32_t)(length), c, -2); \
- } else { \
- (c)=U_SENTINEL; \
- } \
- } \
-}
-
-#define L8_PREV(s, start, i, c) { \
- (c)=(uint8_t)(s)[--(i)]; \
- if((c)>=0x80) { \
- if((c)<=0xbf) { \
- (c)=utf8_prevCharSafeBody((const uint8_t *)s, start, &(i), c, -2); \
- } else { \
- (c)=U_SENTINEL; \
- } \
- } \
-}
-
-/* lenient-8 UCharIterator -------------------------------------------------- */
-
-/*
- * This is a copy of the UTF-8 UCharIterator in uiter.cpp,
- * except that it uses the lenient-8-bit-Unicode macros above.
- */
-
-/*
- * Minimal implementation:
- * Maintain a single-UChar buffer for an additional surrogate.
- * The caller must not modify start and limit because they are used internally.
- *
- * Use UCharIterator fields as follows:
- * context pointer to UTF-8 string
- * length UTF-16 length of the string; -1 until lazy evaluation
- * start current UTF-8 index
- * index current UTF-16 index; may be -1="unknown" after setState()
- * limit UTF-8 length of the string
- * reservedField supplementary code point
- *
- * Since UCharIterator delivers 16-bit code units, the iteration can be
- * currently in the middle of the byte sequence for a supplementary code point.
- * In this case, reservedField will contain that code point and start will
- * point to after the corresponding byte sequence. The UTF-16 index will be
- * one less than what it would otherwise be corresponding to the UTF-8 index.
- * Otherwise, reservedField will be 0.
- */
-
-/*
- * Possible optimization for NUL-terminated UTF-8 and UTF-16 strings:
- * Add implementations that do not call strlen() for iteration but check for NUL.
- */
-
-static int32_t U_CALLCONV
-lenient8IteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
- switch(origin) {
- case UITER_ZERO:
- case UITER_START:
- return 0;
- case UITER_CURRENT:
- if(iter->index<0) {
- /* the current UTF-16 index is unknown after setState(), count from the beginning */
- const uint8_t *s;
- UChar32 c;
- int32_t i, limit, index;
-
- s=(const uint8_t *)iter->context;
- i=index=0;
- limit=iter->start; /* count up to the UTF-8 index */
- while(i<limit) {
- L8_NEXT(s, i, limit, c);
- if(c<=0xffff) {
- ++index;
- } else {
- index+=2;
- }
- }
-
- iter->start=i; /* just in case setState() did not get us to a code point boundary */
- if(i==iter->limit) {
- iter->length=index; /* in case it was <0 or wrong */
- }
- if(iter->reservedField!=0) {
- --index; /* we are in the middle of a supplementary code point */
- }
- iter->index=index;
- }
- return iter->index;
- case UITER_LIMIT:
- case UITER_LENGTH:
- if(iter->length<0) {
- const uint8_t *s;
- UChar32 c;
- int32_t i, limit, length;
-
- s=(const uint8_t *)iter->context;
- if(iter->index<0) {
- /*
- * the current UTF-16 index is unknown after setState(),
- * we must first count from the beginning to here
- */
- i=length=0;
- limit=iter->start;
-
- /* count from the beginning to the current index */
- while(i<limit) {
- L8_NEXT(s, i, limit, c);
- if(c<=0xffff) {
- ++length;
- } else {
- length+=2;
- }
- }
-
- /* assume i==limit==iter->start, set the UTF-16 index */
- iter->start=i; /* just in case setState() did not get us to a code point boundary */
- iter->index= iter->reservedField!=0 ? length-1 : length;
- } else {
- i=iter->start;
- length=iter->index;
- if(iter->reservedField!=0) {
- ++length;
- }
- }
-
- /* count from the current index to the end */
- limit=iter->limit;
- while(i<limit) {
- L8_NEXT(s, i, limit, c);
- if(c<=0xffff) {
- ++length;
- } else {
- length+=2;
- }
- }
- iter->length=length;
- }
- return iter->length;
- default:
- /* not a valid origin */
- /* Should never get here! */
- return -1;
- }
-}
-
-static int32_t U_CALLCONV
-lenient8IteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) {
- const uint8_t *s;
- UChar32 c;
- int32_t pos; /* requested UTF-16 index */
- int32_t i; /* UTF-8 index */
- UBool havePos;
-
- /* calculate the requested UTF-16 index */
- switch(origin) {
- case UITER_ZERO:
- case UITER_START:
- pos=delta;
- havePos=true;
- /* iter->index<0 (unknown) is possible */
- break;
- case UITER_CURRENT:
- if(iter->index>=0) {
- pos=iter->index+delta;
- havePos=true;
- } else {
- /* the current UTF-16 index is unknown after setState(), use only delta */
- pos=0;
- havePos=false;
- }
- break;
- case UITER_LIMIT:
- case UITER_LENGTH:
- if(iter->length>=0) {
- pos=iter->length+delta;
- havePos=true;
- } else {
- /* pin to the end, avoid counting the length */
- iter->index=-1;
- iter->start=iter->limit;
- iter->reservedField=0;
- if(delta>=0) {
- return UITER_UNKNOWN_INDEX;
- } else {
- /* the current UTF-16 index is unknown, use only delta */
- pos=0;
- havePos=false;
- }
- }
- break;
- default:
- return -1; /* Error */
- }
-
- if(havePos) {
- /* shortcuts: pinning to the edges of the string */
- if(pos<=0) {
- iter->index=iter->start=iter->reservedField=0;
- return 0;
- } else if(iter->length>=0 && pos>=iter->length) {
- iter->index=iter->length;
- iter->start=iter->limit;
- iter->reservedField=0;
- return iter->index;
- }
-
- /* minimize the number of L8_NEXT/PREV operations */
- if(iter->index<0 || pos<iter->index/2) {
- /* go forward from the start instead of backward from the current index */
- iter->index=iter->start=iter->reservedField=0;
- } else if(iter->length>=0 && (iter->length-pos)<(pos-iter->index)) {
- /*
- * if we have the UTF-16 index and length and the new position is
- * closer to the end than the current index,
- * then go backward from the end instead of forward from the current index
- */
- iter->index=iter->length;
- iter->start=iter->limit;
- iter->reservedField=0;
- }
-
- delta=pos-iter->index;
- if(delta==0) {
- return iter->index; /* nothing to do */
- }
- } else {
- /* move relative to unknown UTF-16 index */
- if(delta==0) {
- return UITER_UNKNOWN_INDEX; /* nothing to do */
- } else if(-delta>=iter->start) {
- /* moving backwards by more UChars than there are UTF-8 bytes, pin to 0 */
- iter->index=iter->start=iter->reservedField=0;
- return 0;
- } else if(delta>=(iter->limit-iter->start)) {
- /* moving forward by more UChars than the remaining UTF-8 bytes, pin to the end */
- iter->index=iter->length; /* may or may not be <0 (unknown) */
- iter->start=iter->limit;
- iter->reservedField=0;
- return iter->index>=0 ? iter->index : UITER_UNKNOWN_INDEX;
- }
- }
-
- /* delta!=0 */
-
- /* move towards the requested position, pin to the edges of the string */
- s=(const uint8_t *)iter->context;
- pos=iter->index; /* could be <0 (unknown) */
- i=iter->start;
- if(delta>0) {
- /* go forward */
- int32_t limit=iter->limit;
- if(iter->reservedField!=0) {
- iter->reservedField=0;
- ++pos;
- --delta;
- }
- while(delta>0 && i<limit) {
- L8_NEXT(s, i, limit, c);
- if(c<0xffff) {
- ++pos;
- --delta;
- } else if(delta>=2) {
- pos+=2;
- delta-=2;
- } else /* delta==1 */ {
- /* stop in the middle of a supplementary code point */
- iter->reservedField=c;
- ++pos;
- break; /* delta=0; */
- }
- }
- if(i==limit) {
- if(iter->length<0 && iter->index>=0) {
- iter->length= iter->reservedField==0 ? pos : pos+1;
- } else if(iter->index<0 && iter->length>=0) {
- iter->index= iter->reservedField==0 ? iter->length : iter->length-1;
- }
- }
- } else /* delta<0 */ {
- /* go backward */
- if(iter->reservedField!=0) {
- iter->reservedField=0;
- i-=4; /* we stayed behind the supplementary code point; go before it now */
- --pos;
- ++delta;
- }
- while(delta<0 && i>0) {
- L8_PREV(s, 0, i, c);
- if(c<0xffff) {
- --pos;
- ++delta;
- } else if(delta<=-2) {
- pos-=2;
- delta+=2;
- } else /* delta==-1 */ {
- /* stop in the middle of a supplementary code point */
- i+=4; /* back to behind this supplementary code point for consistent state */
- iter->reservedField=c;
- --pos;
- break; /* delta=0; */
- }
- }
- }
-
- iter->start=i;
- if(iter->index>=0) {
- return iter->index=pos;
- } else {
- /* we started with index<0 (unknown) so pos is bogus */
- if(i<=1) {
- return iter->index=i; /* reached the beginning */
- } else {
- /* we still don't know the UTF-16 index */
- return UITER_UNKNOWN_INDEX;
- }
- }
-}
-
-static UBool U_CALLCONV
-lenient8IteratorHasNext(UCharIterator *iter) {
- return iter->reservedField!=0 || iter->start<iter->limit;
-}
-
-static UBool U_CALLCONV
-lenient8IteratorHasPrevious(UCharIterator *iter) {
- return iter->start>0;
-}
-
-static UChar32 U_CALLCONV
-lenient8IteratorCurrent(UCharIterator *iter) {
- if(iter->reservedField!=0) {
- return U16_TRAIL(iter->reservedField);
- } else if(iter->start<iter->limit) {
- const uint8_t *s=(const uint8_t *)iter->context;
- UChar32 c;
- int32_t i=iter->start;
-
- L8_NEXT(s, i, iter->limit, c);
- if(c<0) {
- return 0xfffd;
- } else if(c<=0xffff) {
- return c;
- } else {
- return U16_LEAD(c);
- }
- } else {
- return U_SENTINEL;
- }
-}
-
-static UChar32 U_CALLCONV
-lenient8IteratorNext(UCharIterator *iter) {
- int32_t index;
-
- if(iter->reservedField!=0) {
- UChar trail=U16_TRAIL(iter->reservedField);
- iter->reservedField=0;
- if((index=iter->index)>=0) {
- iter->index=index+1;
- }
- return trail;
- } else if(iter->start<iter->limit) {
- const uint8_t *s=(const uint8_t *)iter->context;
- UChar32 c;
-
- L8_NEXT(s, iter->start, iter->limit, c);
- if((index=iter->index)>=0) {
- iter->index=++index;
- if(iter->length<0 && iter->start==iter->limit) {
- iter->length= c<=0xffff ? index : index+1;
- }
- } else if(iter->start==iter->limit && iter->length>=0) {
- iter->index= c<=0xffff ? iter->length : iter->length-1;
- }
- if(c<0) {
- return 0xfffd;
- } else if(c<=0xffff) {
- return c;
- } else {
- iter->reservedField=c;
- return U16_LEAD(c);
- }
- } else {
- return U_SENTINEL;
- }
-}
-
-static UChar32 U_CALLCONV
-lenient8IteratorPrevious(UCharIterator *iter) {
- int32_t index;
-
- if(iter->reservedField!=0) {
- UChar lead=U16_LEAD(iter->reservedField);
- iter->reservedField=0;
- iter->start-=4; /* we stayed behind the supplementary code point; go before it now */
- if((index=iter->index)>0) {
- iter->index=index-1;
- }
- return lead;
- } else if(iter->start>0) {
- const uint8_t *s=(const uint8_t *)iter->context;
- UChar32 c;
-
- L8_PREV(s, 0, iter->start, c);
- if((index=iter->index)>0) {
- iter->index=index-1;
- } else if(iter->start<=1) {
- iter->index= c<=0xffff ? iter->start : iter->start+1;
- }
- if(c<0) {
- return 0xfffd;
- } else if(c<=0xffff) {
- return c;
- } else {
- iter->start+=4; /* back to behind this supplementary code point for consistent state */
- iter->reservedField=c;
- return U16_TRAIL(c);
- }
- } else {
- return U_SENTINEL;
- }
-}
-
-static uint32_t U_CALLCONV
-lenient8IteratorGetState(const UCharIterator *iter) {
- uint32_t state=(uint32_t)(iter->start<<1);
- if(iter->reservedField!=0) {
- state|=1;
- }
- return state;
-}
-
-static void U_CALLCONV
-lenient8IteratorSetState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- /* do nothing */
- } else if(iter==NULL) {
- *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- } else if(state==lenient8IteratorGetState(iter)) {
- /* setting to the current state: no-op */
- } else {
- int32_t index=(int32_t)(state>>1); /* UTF-8 index */
- state&=1; /* 1 if in surrogate pair, must be index>=4 */
-
- if((state==0 ? index<0 : index<4) || iter->limit<index) {
- *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
- } else {
- iter->start=index; /* restore UTF-8 byte index */
- if(index<=1) {
- iter->index=index;
- } else {
- iter->index=-1; /* unknown UTF-16 index */
- }
- if(state==0) {
- iter->reservedField=0;
- } else {
- /* verified index>=4 above */
- UChar32 c;
- L8_PREV((const uint8_t *)iter->context, 0, index, c);
- if(c<=0xffff) {
- *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
- } else {
- iter->reservedField=c;
- }
- }
- }
- }
-}
-
-static const UCharIterator lenient8Iterator={
- 0, 0, 0, 0, 0, 0,
- lenient8IteratorGetIndex,
- lenient8IteratorMove,
- lenient8IteratorHasNext,
- lenient8IteratorHasPrevious,
- lenient8IteratorCurrent,
- lenient8IteratorNext,
- lenient8IteratorPrevious,
- NULL,
- lenient8IteratorGetState,
- lenient8IteratorSetState
-};
-
-U_CAPI void U_EXPORT2
-uiter_setLenient8(UCharIterator *iter, const char *s, int32_t length) {
- if(iter!=0) {
- if(s!=0 && length>=-1) {
- *iter=lenient8Iterator;
- iter->context=s;
- if(length>=0) {
- iter->limit=length;
- } else {
- iter->limit=(int32_t)strlen(s);
- }
- iter->length= iter->limit<=1 ? iter->limit : -1;
- } else {
- /* set no-op iterator */
- uiter_setString(iter, NULL, 0);
- }
- }
-}
diff --git a/icu4c/source/samples/uciter8/uit_len8.h b/icu4c/source/samples/uciter8/uit_len8.h
deleted file mode 100644
index bda4265e6..000000000
--- a/icu4c/source/samples/uciter8/uit_len8.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2003, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: uit_len8.h
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2003feb10
-* created by: Markus W. Scherer
-*
-* This file contains the declaration for a "lenient UTF-8" UCharIterator
-* as used in the uciter8 sample code.
-*/
-
-#ifndef __UIT_LEN8_H__
-#define __UIT_LEN8_H__
-
-#include "unicode/utypes.h"
-#include "unicode/uiter.h"
-
-U_CAPI void U_EXPORT2
-uiter_setLenient8(UCharIterator *iter, const char *s, int32_t length);
-
-#endif
diff --git a/icu4c/source/samples/ucnv/Makefile b/icu4c/source/samples/ucnv/Makefile
deleted file mode 100644
index b97363ff4..000000000
--- a/icu4c/source/samples/ucnv/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2002 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-# Name of your target
-TARGET=convsamp
-
-# All object files (C or C++)
-OBJECTS=convsamp.o flagcb.o
-
-# Load in standard makefile definitions
-include ../defs.mk
-
-# extra files to clean up
-CLEANFILES += *.out data40.utf16 data41.utf16
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/ucnv/convsamp.cpp b/icu4c/source/samples/ucnv/convsamp.cpp
deleted file mode 100644
index 45a687618..000000000
--- a/icu4c/source/samples/ucnv/convsamp.cpp
+++ /dev/null
@@ -1,1144 +0,0 @@
-/*************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-**************************************************************************
-**************************************************************************
-*
-* Copyright (C) 2000-2016, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-***************************************************************************
-* file name: convsamp.c
-* encoding: ASCII (7-bit)
-*
-* created on: 2000may30
-* created by: Steven R. Loomis
-*
-* Sample code for the ICU conversion routines.
-*
-* Note: Nothing special is needed to build this sample. Link with
-* the icu UC and icu I18N libraries.
-*
-* I use 'assert' for error checking, you probably will want
-* something more flexible. '***BEGIN SAMPLE***' and
-* '***END SAMPLE***' mark pieces suitable for stand alone
-* code snippets.
-*
-*
-* Each test can define it's own BUFFERSIZE
-*
-*/
-
-#define DEBUG_TMI 0 /* define to 1 to enable Too Much Information */
-
-#include <stdio.h>
-#include <ctype.h> /* for isspace, etc. */
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h> /* malloc */
-
-#include "unicode/utypes.h" /* Basic ICU data types */
-#include "unicode/ucnv.h" /* C Converter API */
-#include "unicode/ustring.h" /* some more string fcns*/
-#include "unicode/uchar.h" /* char names */
-#include "unicode/uloc.h"
-#include "unicode/unistr.h"
-
-#include "flagcb.h"
-
-/* Some utility functions */
-#ifndef UPRV_LENGTHOF
-#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
-#endif
-
-static const char16_t kNone[] = { 0x0000 };
-
-#define U_ASSERT(x) { if(U_FAILURE(x)) {fflush(stdout);fflush(stderr); fprintf(stderr, #x " == %s\n", u_errorName(x)); assert(U_SUCCESS(x)); }}
-
-/* Print a char16_t if possible, in seven characters. */
-void prettyPrintUChar(char16_t c)
-{
- if( (c <= 0x007F) &&
- (isgraph(c)) ) {
- printf(" '%c' ", (char)(0x00FF&c));
- } else if ( c > 0x007F ) {
- char buf[1000];
- UErrorCode status = U_ZERO_ERROR;
- int32_t o;
-
- o = u_charName(c, U_EXTENDED_CHAR_NAME, buf, 1000, &status);
- if(U_SUCCESS(status) && (o>0) ) {
- buf[6] = 0;
- printf("%7s", buf);
- } else {
- printf(" ??????");
- }
- } else {
- switch((char)(c & 0x007F)) {
- case ' ':
- printf(" ' ' ");
- break;
- case '\t':
- printf(" \\t ");
- break;
- case '\n':
- printf(" \\n ");
- break;
- default:
- printf(" _ ");
- break;
- }
- }
-}
-
-
-void printUChars(const char *name = "?",
- const char16_t *uch = kNone,
- int32_t len = -1 )
-{
- int32_t i;
-
- if( (len == -1) && (uch) ) {
- len = u_strlen(uch);
- }
-
- printf("%5s: ", name);
- for( i = 0; i <len; i++) {
- printf("%-6d ", i);
- }
- printf("\n");
-
- printf("%5s: ", "uni");
- for( i = 0; i <len; i++) {
- printf("\\u%04X ", (int)uch[i]);
- }
- printf("\n");
-
- printf("%5s:", "ch");
- for( i = 0; i <len; i++) {
- prettyPrintUChar(uch[i]);
- }
- printf("\n");
-}
-
-void printBytes(const char *name = "?",
- const char *uch = "",
- int32_t len = -1 )
-{
- int32_t i;
-
- if( (len == -1) && (uch) ) {
- len = static_cast<int32_t>(strlen(uch));
- }
-
- printf("%5s: ", name);
- for( i = 0; i <len; i++) {
- printf("%-4d ", i);
- }
- printf("\n");
-
- printf("%5s: ", "uni");
- for( i = 0; i <len; i++) {
- printf("\\x%02X ", 0x00FF & (int)uch[i]);
- }
- printf("\n");
-
- printf("%5s:", "ch");
- for( i = 0; i <len; i++) {
- if(isgraph(0x00FF & (int)uch[i])) {
- printf(" '%c' ", (char)uch[i]);
- } else {
- printf(" ");
- }
- }
- printf("\n");
-}
-
-void printUChar(UChar32 ch32)
-{
- if(ch32 > 0xFFFF) {
- printf("ch: U+%06X\n", ch32);
- }
- else {
- char16_t ch = (char16_t)ch32;
- printUChars("C", &ch, 1);
- }
-}
-
-/*******************************************************************
- Very simple C sample to convert the word 'Moscow' in Russian in Unicode,
- followed by an exclamation mark (!) into the KOI8-R Russian code page.
-
- This example first creates a char16_t String out of the Unicode chars.
-
- targetSize must be set to the amount of space available in the target
- buffer. After fromUChars is called,
- len will contain the number of bytes in target[] which were
- used in the resulting codepage. In this case, there is a 1:1 mapping
- between the input and output characters. The exclamation mark has the
- same value in both KOI8-R and Unicode.
-
- src: 0 1 2 3 4 5 6
- uni: \u041C \u043E \u0441 \u043A \u0432 \u0430 \u0021
- ch: CYRILL CYRILL CYRILL CYRILL CYRILL CYRILL '!'
-
- targ: 0 1 2 3 4 5 6
- uni: \xED \xCF \xD3 \xCB \xD7 \xC1 \x21
- ch: '!'
-
-
-Converting FROM unicode
- to koi8-r.
- You must call ucnv_close to clean up the memory used by the
- converter.
-
- 'len' returns the number of OUTPUT bytes resulting from the
- conversion.
- */
-
-UErrorCode convsample_02()
-{
- printf("\n\n==============================================\n"
- "Sample 02: C: simple Unicode -> koi8-r conversion\n");
-
-
- // **************************** START SAMPLE *******************
- // "cat<cat>OK"
- char16_t source[] = { 0x041C, 0x043E, 0x0441, 0x043A, 0x0432,
- 0x0430, 0x0021, 0x0000 };
- char target[100];
- UErrorCode status = U_ZERO_ERROR;
- UConverter *conv;
- int32_t len;
-
- // set up the converter
- //! [ucnv_open]
- conv = ucnv_open("koi8-r", &status);
- //! [ucnv_open]
- assert(U_SUCCESS(status));
-
- // convert to koi8-r
- len = ucnv_fromUChars(conv, target, 100, source, -1, &status);
- assert(U_SUCCESS(status));
-
- // close the converter
- ucnv_close(conv);
-
- // ***************************** END SAMPLE ********************
-
- // Print it out
- printUChars("src", source);
- printf("\n");
- printBytes("targ", target, len);
-
- return U_ZERO_ERROR;
-}
-
-
-UErrorCode convsample_03()
-{
- printf("\n\n==============================================\n"
- "Sample 03: C: print out all converters\n");
-
- int32_t count;
- int32_t i;
-
- // **************************** START SAMPLE *******************
- count = ucnv_countAvailable();
- printf("Available converters: %d\n", count);
-
- for(i=0;i<count;i++)
- {
- printf("%s ", ucnv_getAvailableName(i));
- }
-
- // ***************************** END SAMPLE ********************
-
- printf("\n");
-
- return U_ZERO_ERROR;
-}
-
-
-
-#define BUFFERSIZE 17 /* make it interesting :) */
-
-/*
- Converting from a codepage to Unicode in bulk..
- What is the best way to determine the buffer size?
-
- The 'buffersize' is in bytes of input.
- For a given converter, dividing this by the minimum char size
- give you the maximum number of Unicode characters that could be
- expected for a given number of input bytes.
- see: ucnv_getMinCharSize()
-
- For example, a single byte codepage like 'Latin-3' has a
- minimum char size of 1. (It takes at least 1 byte to represent
- each Unicode char.) So the unicode buffer has the same number of
- UChars as the input buffer has bytes.
-
- In a strictly double byte codepage such as cp1362 (Windows
- Korean), the minimum char size is 2. So, only half as many Unicode
- chars as bytes are needed.
-
- This work to calculate the buffer size is an optimization. Any
- size of input and output buffer can be used, as long as the
- program handles the following cases: If the input buffer is empty,
- the source pointer will be equal to sourceLimit. If the output
- buffer has overflowed, U_BUFFER_OVERFLOW_ERROR will be returned.
- */
-
-UErrorCode convsample_05()
-{
- printf("\n\n==============================================\n"
- "Sample 05: C: count the number of letters in a UTF-8 document\n");
-
- FILE *f;
- int32_t count;
- char inBuf[BUFFERSIZE];
- const char *source;
- const char *sourceLimit;
- char16_t *uBuf;
- char16_t *target;
- char16_t *targetLimit;
- char16_t *p;
- int32_t uBufSize = 0;
- UConverter *conv;
- UErrorCode status = U_ZERO_ERROR;
- uint32_t letters=0, total=0;
-
- f = fopen("data01.txt", "r");
- if(!f)
- {
- fprintf(stderr, "Couldn't open file 'data01.txt' (UTF-8 data file).\n");
- return U_FILE_ACCESS_ERROR;
- }
-
- // **************************** START SAMPLE *******************
- conv = ucnv_open("utf-8", &status);
- assert(U_SUCCESS(status));
-
- uBufSize = (BUFFERSIZE/ucnv_getMinCharSize(conv));
- printf("input bytes %d / min chars %d = %d UChars\n",
- BUFFERSIZE, ucnv_getMinCharSize(conv), uBufSize);
- uBuf = (char16_t*)malloc(uBufSize * sizeof(char16_t));
- assert(uBuf!=nullptr);
-
- // grab another buffer's worth
- while((!feof(f)) &&
- ((count=static_cast<int32_t>(fread(inBuf, 1, BUFFERSIZE , f))) > 0) )
- {
- // Convert bytes to unicode
- source = inBuf;
- sourceLimit = inBuf + count;
-
- do
- {
- target = uBuf;
- targetLimit = uBuf + uBufSize;
-
- ucnv_toUnicode(conv, &target, targetLimit,
- &source, sourceLimit, nullptr,
- feof(f)?true:false, /* pass 'flush' when eof */
- /* is true (when no more data will come) */
- &status);
-
- if(status == U_BUFFER_OVERFLOW_ERROR)
- {
- // simply ran out of space - we'll reset the target ptr the next
- // time through the loop.
- status = U_ZERO_ERROR;
- }
- else
- {
- // Check other errors here.
- assert(U_SUCCESS(status));
- // Break out of the loop (by force)
- }
-
- // Process the Unicode
- // Todo: handle UTF-16/surrogates
-
- for(p = uBuf; p<target; p++)
- {
- if(u_isalpha(*p))
- letters++;
- total++;
- }
- } while (source < sourceLimit); // while simply out of space
- }
-
- printf("%d letters out of %d total UChars.\n", letters, total);
-
- // ***************************** END SAMPLE ********************
- ucnv_close(conv);
-
- printf("\n");
-
- fclose(f);
-
- return U_ZERO_ERROR;
-}
-#undef BUFFERSIZE
-
-#define BUFFERSIZE 1024
-typedef struct
-{
- UChar32 codepoint;
- uint32_t frequency;
-} CharFreqInfo;
-
-UErrorCode convsample_06()
-{
- printf("\n\n==============================================\n"
- "Sample 06: C: frequency distribution of letters in a UTF-8 document\n");
-
- FILE *f;
- int32_t count;
- char inBuf[BUFFERSIZE];
- const char *source;
- const char *sourceLimit;
- int32_t uBufSize = 0;
- UConverter *conv;
- UErrorCode status = U_ZERO_ERROR;
- uint32_t letters=0, total=0;
-
- CharFreqInfo *info;
- UChar32 charCount = 0x10000; /* increase this if you want to handle non bmp.. todo: automatically bump it.. */
- UChar32 p;
-
- uint32_t ie = 0;
- uint32_t gh = 0;
- UChar32 l = 0;
-
- f = fopen("data06.txt", "r");
- if(!f)
- {
- fprintf(stderr, "Couldn't open file 'data06.txt' (UTF-8 data file).\n");
- return U_FILE_ACCESS_ERROR;
- }
-
- info = (CharFreqInfo*)malloc(sizeof(CharFreqInfo) * charCount);
- if(!info)
- {
- fprintf(stderr, " Couldn't allocate %d bytes for freq counter\n", static_cast<int>(sizeof(CharFreqInfo)*charCount));
- }
-
- /* reset frequencies */
- for(p=0;p<charCount;p++)
- {
- info[p].codepoint = p;
- info[p].frequency = 0;
- }
-
- // **************************** START SAMPLE *******************
- conv = ucnv_open("utf-8", &status);
- assert(U_SUCCESS(status));
-
- uBufSize = (BUFFERSIZE/ucnv_getMinCharSize(conv));
- printf("input bytes %d / min chars %d = %d UChars\n",
- BUFFERSIZE, ucnv_getMinCharSize(conv), uBufSize);
-
- // grab another buffer's worth
- while((!feof(f)) &&
- ((count=static_cast<int32_t>(fread(inBuf, 1, BUFFERSIZE , f))) > 0) )
- {
- // Convert bytes to unicode
- source = inBuf;
- sourceLimit = inBuf + count;
-
- while(source < sourceLimit)
- {
- p = ucnv_getNextUChar(conv, &source, sourceLimit, &status);
- if(U_FAILURE(status))
- {
- fprintf(stderr, "%s @ %d\n", u_errorName(status), total);
- status = U_ZERO_ERROR;
- continue;
- }
- U_ASSERT(status);
- total++;
-
- if(u_isalpha(p))
- letters++;
-
- if((u_tolower(l) == 'i') && (u_tolower(p) == 'e'))
- ie++;
-
- if((u_tolower(l) == 'g') && (u_tolower(p) == 0x0127))
- gh++;
-
- if(p>charCount)
- {
- fprintf(stderr, "U+%06X: oh.., we only handle BMP characters so far.. redesign!\n", p);
- free(info);
- fclose(f);
- ucnv_close(conv);
- return U_UNSUPPORTED_ERROR;
- }
- info[p].frequency++;
- l = p;
- }
- }
-
- fclose(f);
- ucnv_close(conv);
-
- printf("%d letters out of %d total UChars.\n", letters, total);
- printf("%d ie digraphs, %d gh digraphs.\n", ie, gh);
-
- // now, we could sort it..
-
- // qsort(info, charCount, sizeof(info[0]), charfreq_compare);
-
- for(p=0;p<charCount;p++)
- {
- if(info[p].frequency)
- {
- printf("% 5d U+%06X ", info[p].frequency, p);
- if(p <= 0xFFFF)
- {
- prettyPrintUChar((char16_t)p);
- }
- printf("\n");
- }
- }
- free(info);
- // ***************************** END SAMPLE ********************
-
- printf("\n");
-
- return U_ZERO_ERROR;
-}
-#undef BUFFERSIZE
-
-
-/******************************************************
- You must call ucnv_close to clean up the memory used by the
- converter.
-
- 'len' returns the number of OUTPUT bytes resulting from the
- conversion.
- */
-
-UErrorCode convsample_12()
-{
- printf("\n\n==============================================\n"
- "Sample 12: C: simple sjis -> unicode conversion\n");
-
-
- // **************************** START SAMPLE *******************
-
- char source[] = { 0x63, 0x61, 0x74, (char)0x94, 0x4C, (char)0x82, 0x6E, (char)0x82, 0x6A, 0x00 };
- char16_t target[100];
- UErrorCode status = U_ZERO_ERROR;
- UConverter *conv;
- int32_t len;
-
- // set up the converter
- conv = ucnv_open("shift_jis", &status);
- assert(U_SUCCESS(status));
-
- // convert to Unicode
- // Note: we can use strlen, we know it's an 8 bit null terminated codepage
- target[6] = 0xFDCA;
- len = ucnv_toUChars(conv, target, 100, source, static_cast<int32_t>(strlen(source)), &status);
- U_ASSERT(status);
- // close the converter
- ucnv_close(conv);
-
- // ***************************** END SAMPLE ********************
-
- // Print it out
- printBytes("src", source, static_cast<int32_t>(strlen(source)) );
- printf("\n");
- printUChars("targ", target, len);
-
- return U_ZERO_ERROR;
-}
-
-/******************************************************************
- C: Convert from codepage to Unicode one at a time.
-*/
-
-UErrorCode convsample_13()
-{
- printf("\n\n==============================================\n"
- "Sample 13: C: simple Big5 -> unicode conversion, char at a time\n");
-
-
- const char sourceChars[] = { 0x7a, 0x68, 0x3d, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xe5, (char)0x2e };
- // const char sourceChars[] = { 0x7a, 0x68, 0x3d, 0xe4, 0xb8, 0xad, 0xe6, 0x96, 0x87, 0x2e };
- const char *source, *sourceLimit;
- UChar32 target;
- UErrorCode status = U_ZERO_ERROR;
- UConverter *conv = nullptr;
- int32_t srcCount=0;
- int32_t dstCount=0;
-
- srcCount = sizeof(sourceChars);
-
- conv = ucnv_open("Big5", &status);
- U_ASSERT(status);
-
- source = sourceChars;
- sourceLimit = sourceChars + sizeof(sourceChars);
-
- // **************************** START SAMPLE *******************
-
-
- printBytes("src", source, static_cast<int32_t>(sourceLimit - source));
-
- while(source < sourceLimit)
- {
- puts("");
- target = ucnv_getNextUChar (conv,
- &source,
- sourceLimit,
- &status);
-
- // printBytes("src",source,sourceLimit-source);
- U_ASSERT(status);
- printUChar(target);
- dstCount++;
- }
-
-
- // ************************** END SAMPLE *************************
-
- printf("src=%d bytes, dst=%d uchars\n", srcCount, dstCount);
- ucnv_close(conv);
-
- return U_ZERO_ERROR;
-}
-
-
-
-
-UBool convsample_20_didSubstitute(const char *source)
-{
- char16_t uchars[100];
- char bytes[100];
- UConverter *conv = nullptr;
- UErrorCode status = U_ZERO_ERROR;
- uint32_t len, len2;
- UBool flagVal;
-
- FromUFLAGContext * context = nullptr;
-
- printf("\n\n==============================================\n"
- "Sample 20: C: Test for substitution using callbacks\n");
-
- /* print out the original source */
- printBytes("src", source);
- printf("\n");
-
- /* First, convert from UTF8 to unicode */
- conv = ucnv_open("utf-8", &status);
- U_ASSERT(status);
-
- len = ucnv_toUChars(conv, uchars, 100, source, static_cast<int32_t>(strlen(source)), &status);
- U_ASSERT(status);
-
- printUChars("uch", uchars, len);
- printf("\n");
-
- /* Now, close the converter */
- ucnv_close(conv);
-
- /* Now, convert to windows-1252 */
- conv = ucnv_open("windows-1252", &status);
- U_ASSERT(status);
-
- /* Converter starts out with the SUBSTITUTE callback set. */
-
- /* initialize our callback */
- context = flagCB_fromU_openContext();
-
- /* Set our special callback */
- ucnv_setFromUCallBack(conv,
- flagCB_fromU,
- context,
- &(context->subCallback),
- &(context->subContext),
- &status);
-
- U_ASSERT(status);
-
- len2 = ucnv_fromUChars(conv, bytes, 100, uchars, len, &status);
- U_ASSERT(status);
-
- flagVal = context->flag; /* it's about to go away when we close the cnv */
-
- ucnv_close(conv);
-
- /* print out the original source */
- printBytes("bytes", bytes, len2);
-
- return flagVal; /* true if callback was called */
-}
-
-UErrorCode convsample_20()
-{
- const char *sample1 = "abc\xdf\xbf";
- const char *sample2 = "abc_def";
-
-
- if(convsample_20_didSubstitute(sample1))
- {
- printf("DID substitute.\n******\n");
- }
- else
- {
- printf("Did NOT substitute.\n*****\n");
- }
-
- if(convsample_20_didSubstitute(sample2))
- {
- printf("DID substitute.\n******\n");
- }
- else
- {
- printf("Did NOT substitute.\n*****\n");
- }
-
- return U_ZERO_ERROR;
-}
-
-// 21 - C, callback, with clone and debug
-
-
-
-UBool convsample_21_didSubstitute(const char *source)
-{
- char16_t uchars[100];
- char bytes[100];
- UConverter *conv = nullptr, *cloneCnv = nullptr;
- UErrorCode status = U_ZERO_ERROR;
- uint32_t len, len2;
- UBool flagVal = false;
- UConverterFromUCallback junkCB;
-
- FromUFLAGContext *flagCtx = nullptr,
- *cloneFlagCtx = nullptr;
-
- debugCBContext *debugCtx1 = nullptr,
- *debugCtx2 = nullptr,
- *cloneDebugCtx = nullptr;
-
- printf("\n\n==============================================\n"
- "Sample 21: C: Test for substitution w/ callbacks & clones \n");
-
- /* print out the original source */
- printBytes("src", source);
- printf("\n");
-
- /* First, convert from UTF8 to unicode */
- conv = ucnv_open("utf-8", &status);
- U_ASSERT(status);
-
- len = ucnv_toUChars(conv, uchars, 100, source, static_cast<int32_t>(strlen(source)), &status);
- U_ASSERT(status);
-
- printUChars("uch", uchars, len);
- printf("\n");
-
- /* Now, close the converter */
- ucnv_close(conv);
-
- /* Now, convert to windows-1252 */
- conv = ucnv_open("windows-1252", &status);
- U_ASSERT(status);
-
- /* Converter starts out with the SUBSTITUTE callback set. */
-
- /* initialize our callback */
- /* from the 'bottom' innermost, out
- * CNV -> debugCtx1[debug] -> flagCtx[flag] -> debugCtx2[debug] */
-
-#if DEBUG_TMI
- printf("flagCB_fromU = %p\n", &flagCB_fromU);
- printf("debugCB_fromU = %p\n", &debugCB_fromU);
-#endif
-
- debugCtx1 = debugCB_openContext();
- flagCtx = flagCB_fromU_openContext();
- debugCtx2 = debugCB_openContext();
-
- debugCtx1->subCallback = flagCB_fromU; /* debug1 -> flag */
- debugCtx1->subContext = flagCtx;
-
- flagCtx->subCallback = debugCB_fromU; /* flag -> debug2 */
- flagCtx->subContext = debugCtx2;
-
- debugCtx2->subCallback = UCNV_FROM_U_CALLBACK_SUBSTITUTE;
- debugCtx2->subContext = nullptr;
-
- /* Set our special callback */
-
- ucnv_setFromUCallBack(conv,
- debugCB_fromU,
- debugCtx1,
- &(debugCtx2->subCallback),
- &(debugCtx2->subContext),
- &status);
-
- U_ASSERT(status);
-
-#if DEBUG_TMI
- printf("Callback chain now: Converter %p -> debug1:%p-> (%p:%p)==flag:%p -> debug2:%p -> cb %p\n",
- conv, debugCtx1, debugCtx1->subCallback,
- debugCtx1->subContext, flagCtx, debugCtx2, debugCtx2->subCallback);
-#endif
-
- cloneCnv = ucnv_safeClone(conv, nullptr, nullptr, &status);
-
- U_ASSERT(status);
-
-#if DEBUG_TMI
- printf("Cloned converter from %p -> %p. Closing %p.\n", conv, cloneCnv, conv);
-#endif
-
- ucnv_close(conv);
-
-#if DEBUG_TMI
- printf("%p closed.\n", conv);
-#endif
-
- U_ASSERT(status);
- /* Now, we have to extract the context */
- cloneDebugCtx = nullptr;
- cloneFlagCtx = nullptr;
-
- ucnv_getFromUCallBack(cloneCnv, &junkCB, (const void **)&cloneDebugCtx);
- if(cloneDebugCtx != nullptr) {
- cloneFlagCtx = (FromUFLAGContext*) cloneDebugCtx -> subContext;
- }
-
- printf("Cloned converter chain: %p -> %p[debug1] -> %p[flag] -> %p[debug2] -> substitute\n",
- cloneCnv, cloneDebugCtx, cloneFlagCtx, cloneFlagCtx?cloneFlagCtx->subContext:nullptr );
-
- len2 = ucnv_fromUChars(cloneCnv, bytes, 100, uchars, len, &status);
- U_ASSERT(status);
-
- if(cloneFlagCtx != nullptr) {
- flagVal = cloneFlagCtx->flag; /* it's about to go away when we close the cnv */
- } else {
- printf("** Warning, couldn't get the subcallback \n");
- }
-
- ucnv_close(cloneCnv);
-
- /* print out the original source */
- printBytes("bytes", bytes, len2);
-
- return flagVal; /* true if callback was called */
-}
-
-UErrorCode convsample_21()
-{
- const char *sample1 = "abc\xdf\xbf";
- const char *sample2 = "abc_def";
-
- if(convsample_21_didSubstitute(sample1))
- {
- printf("DID substitute.\n******\n");
- }
- else
- {
- printf("Did NOT substitute.\n*****\n");
- }
-
- if(convsample_21_didSubstitute(sample2))
- {
- printf("DID substitute.\n******\n");
- }
- else
- {
- printf("Did NOT substitute.\n*****\n");
- }
-
- return U_ZERO_ERROR;
-}
-
-
-// 40- C, cp37 -> UTF16 [data02.bin -> data40.utf16]
-
-#define BUFFERSIZE 17 /* make it interesting :) */
-
-UErrorCode convsample_40()
-{
- printf("\n\n==============================================\n"
- "Sample 40: C: convert data02.bin from cp37 to UTF16 [data40.utf16]\n");
-
- FILE *f;
- FILE *out;
- int32_t count;
- char inBuf[BUFFERSIZE];
- const char *source;
- const char *sourceLimit;
- char16_t *uBuf;
- char16_t *target;
- char16_t *targetLimit;
- int32_t uBufSize = 0;
- UConverter *conv = nullptr;
- UErrorCode status = U_ZERO_ERROR;
- uint32_t inbytes=0, total=0;
-
- f = fopen("data02.bin", "rb");
- if(!f)
- {
- fprintf(stderr, "Couldn't open file 'data02.bin' (cp37 data file).\n");
- return U_FILE_ACCESS_ERROR;
- }
-
- out = fopen("data40.utf16", "wb");
- if(!out)
- {
- fprintf(stderr, "Couldn't create file 'data40.utf16'.\n");
- fclose(f);
- return U_FILE_ACCESS_ERROR;
- }
-
- // **************************** START SAMPLE *******************
- conv = ucnv_openCCSID(37, UCNV_IBM, &status);
- assert(U_SUCCESS(status));
-
- uBufSize = (BUFFERSIZE/ucnv_getMinCharSize(conv));
- printf("input bytes %d / min chars %d = %d UChars\n",
- BUFFERSIZE, ucnv_getMinCharSize(conv), uBufSize);
- uBuf = (char16_t*)malloc(uBufSize * sizeof(char16_t));
- assert(uBuf!=nullptr);
-
- // grab another buffer's worth
- while((!feof(f)) &&
- ((count=static_cast<int32_t>(fread(inBuf, 1, BUFFERSIZE , f))) > 0) )
- {
- inbytes += count;
-
- // Convert bytes to unicode
- source = inBuf;
- sourceLimit = inBuf + count;
-
- do
- {
- target = uBuf;
- targetLimit = uBuf + uBufSize;
-
- ucnv_toUnicode( conv, &target, targetLimit,
- &source, sourceLimit, nullptr,
- feof(f)?true:false, /* pass 'flush' when eof */
- /* is true (when no more data will come) */
- &status);
-
- if(status == U_BUFFER_OVERFLOW_ERROR)
- {
- // simply ran out of space - we'll reset the target ptr the next
- // time through the loop.
- status = U_ZERO_ERROR;
- }
- else
- {
- // Check other errors here.
- assert(U_SUCCESS(status));
- // Break out of the loop (by force)
- }
-
- // Process the Unicode
- // Todo: handle UTF-16/surrogates
- assert(fwrite(uBuf, sizeof(uBuf[0]), (target-uBuf), out) == (size_t)(target-uBuf));
- total += static_cast<uint32_t>((target-uBuf));
- } while (source < sourceLimit); // while simply out of space
- }
-
- printf("%d bytes in, %d UChars out.\n", inbytes, total);
-
- // ***************************** END SAMPLE ********************
- ucnv_close(conv);
-
- fclose(f);
- fclose(out);
- printf("\n");
-
- return U_ZERO_ERROR;
-}
-#undef BUFFERSIZE
-
-
-
-// 46- C, UTF16 -> latin2 [data40.utf16 -> data46.out]
-
-#define BUFFERSIZE 24 /* make it interesting :) */
-
-UErrorCode convsample_46()
-{
- printf("\n\n==============================================\n"
- "Sample 46: C: convert data40.utf16 from UTF16 to latin2 [data46.out]\n");
-
- FILE *f;
- FILE *out;
- int32_t count;
- char16_t inBuf[BUFFERSIZE];
- const char16_t *source;
- const char16_t *sourceLimit;
- char *buf;
- char *target;
- char *targetLimit;
-
- int32_t bufSize = 0;
- UConverter *conv = nullptr;
- UErrorCode status = U_ZERO_ERROR;
- uint32_t inchars=0, total=0;
-
- f = fopen("data40.utf16", "rb");
- if(!f)
- {
- fprintf(stderr, "Couldn't open file 'data40.utf16' (did you run convsample_40() ?)\n");
- return U_FILE_ACCESS_ERROR;
- }
-
- out = fopen("data46.out", "wb");
- if(!out)
- {
- fprintf(stderr, "Couldn't create file 'data46.out'.\n");
- fclose(f);
- return U_FILE_ACCESS_ERROR;
- }
-
- // **************************** START SAMPLE *******************
- conv = ucnv_open( "iso-8859-2", &status);
- assert(U_SUCCESS(status));
-
- bufSize = (BUFFERSIZE*ucnv_getMaxCharSize(conv));
- printf("input UChars[16] %d * max charsize %d = %d bytes output buffer\n",
- BUFFERSIZE, ucnv_getMaxCharSize(conv), bufSize);
- buf = (char*)malloc(bufSize * sizeof(char));
- assert(buf!=nullptr);
-
- // grab another buffer's worth
- while((!feof(f)) &&
- ((count=static_cast<int32_t>(fread(inBuf, sizeof(char16_t), BUFFERSIZE , f))) > 0) )
- {
- inchars += count;
-
- // Convert bytes to unicode
- source = inBuf;
- sourceLimit = inBuf + count;
-
- do
- {
- target = buf;
- targetLimit = buf + bufSize;
-
- ucnv_fromUnicode( conv, &target, targetLimit,
- &source, sourceLimit, nullptr,
- feof(f)?true:false, /* pass 'flush' when eof */
- /* is true (when no more data will come) */
- &status);
-
- if(status == U_BUFFER_OVERFLOW_ERROR)
- {
- // simply ran out of space - we'll reset the target ptr the next
- // time through the loop.
- status = U_ZERO_ERROR;
- }
- else
- {
- // Check other errors here.
- assert(U_SUCCESS(status));
- // Break out of the loop (by force)
- }
-
- // Process the Unicode
- assert(fwrite(buf, sizeof(buf[0]), (target-buf), out) == (size_t)(target-buf));
- total += static_cast<uint32_t>((target-buf));
- } while (source < sourceLimit); // while simply out of space
- }
-
- printf("%d Uchars (%d bytes) in, %d chars out.\n", inchars, static_cast<int>(inchars * sizeof(char16_t)), total);
-
- // ***************************** END SAMPLE ********************
- ucnv_close(conv);
-
- fclose(f);
- fclose(out);
- printf("\n");
-
- return U_ZERO_ERROR;
-}
-#undef BUFFERSIZE
-
-#define BUFFERSIZE 219
-
-void convsample_50() {
- printf("\n\n==============================================\n"
- "Sample 50: C: ucnv_detectUnicodeSignature\n");
-
- //! [ucnv_detectUnicodeSignature]
- UErrorCode err = U_ZERO_ERROR;
- UBool discardSignature = true; /* set to true to throw away the initial U+FEFF */
- char input[] = { '\xEF','\xBB', '\xBF','\x41','\x42','\x43' };
- int32_t signatureLength = 0;
- const char *encoding = ucnv_detectUnicodeSignature(input,sizeof(input),&signatureLength,&err);
- UConverter *conv = nullptr;
- char16_t output[100];
- char16_t *target = output, *out;
- const char *source = input;
- if(encoding!=nullptr && U_SUCCESS(err)){
- // should signature be discarded ?
- conv = ucnv_open(encoding, &err);
- // do the conversion
- ucnv_toUnicode(conv,
- &target, output + UPRV_LENGTHOF(output),
- &source, input + sizeof(input),
- nullptr, true, &err);
- out = output;
- if (discardSignature){
- ++out; // ignore initial U+FEFF
- }
- while(out != target) {
- printf("%04x ", *out++);
- }
- puts("");
- }
- //! [ucnv_detectUnicodeSignature]
- puts("");
-}
-
-
-
-/* main */
-
-int main()
-{
-
- printf("Default Converter=%s\n", ucnv_getDefaultName() );
-
- convsample_02(); // C , u->koi8r, conv
- convsample_03(); // C, iterate
-
- convsample_05(); // C, utf8->u, getNextUChar
- convsample_06(); // C freq counter thingy
-
- convsample_12(); // C, sjis->u, conv
- convsample_13(); // C, big5->u, getNextU
-
- convsample_20(); // C, callback
- convsample_21(); // C, callback debug
-
- convsample_40(); // C, cp37 -> UTF16 [data02.bin -> data40.utf16]
-
- convsample_46(); // C, UTF16 -> latin3 [data41.utf16 -> data46.out]
-
- convsample_50(); // C, detect unicode signature
-
- printf("End of converter samples.\n");
-
- fflush(stdout);
- fflush(stderr);
-
- return 0;
-}
diff --git a/icu4c/source/samples/ucnv/data01.txt b/icu4c/source/samples/ucnv/data01.txt
deleted file mode 100644
index 5b53359cd..000000000
--- a/icu4c/source/samples/ucnv/data01.txt
+++ /dev/null
@@ -1,15 +0,0 @@
--*- Coding: utf-8 ; -*- // for emacs
-[some latin, devanagari, and cyrillic text]
-raj Rajasthani राजेस्थानी
- Konkani कोंकणी
- Haryanvi हरियानवी
-rm Rhaeto-Romance रहेय्टो-रोमान्स
-rn Kirundi किरून्दी
-ro Romanian रूमानीयन्
-ru Russian रुसी футбол
-том
-атом
-Нева
-Fid-dinja hawn aktar imġienen minn nies f'sensiehom.
-Il-mistoqsija oħt il-għerf. (Asking is the sister of knowing.)
-aфутбол중앙일보-の“日本語”
diff --git a/icu4c/source/samples/ucnv/data02.bin b/icu4c/source/samples/ucnv/data02.bin
deleted file mode 100644
index e1a5aad9e..000000000
--- a/icu4c/source/samples/ucnv/data02.bin
+++ /dev/null
@@ -1 +0,0 @@
-@@@|KK@@%@zaaKKKaaa%%ȉ@@Ԩ@@Ö@㈉@@K@K@%Յ@薙z@Ӆ@P@@™Kk@@Ȗ@⣙K%%ŕ@@@@@@Ö@@@@k%¨@KK@㖦@P@ÖKk%@@Ó}@ֆ@@@ĉ@Ö@@@▤@ĉ@@Յ@薙K@%%@ㅁk@Ök@K%%ׁ@%%戁@@ㅁo@%%㈅@@@@@@@@È@@с^@@@@@@@K@ɣ@@@k@@@@@@@@%@k@@@@@k@@@K%%ɢ@@@@@@@@ㅁ@דo@%%腢k@^@@@@@@㈅@@@㈅@^@@@@@@@@@@@@%@k@@@@@@@@^@@@@@@@@@@@@@@k@@%@@@@@@@@@@K%%Ȗ@@@ㅁ@ד@äo%%ɕ@È@@@@@@`k@@@@k@@@@@k@@@@@@@@k%@@@@@@k@@^@K@㈅@@@@@k@@@@@@@@@@@%@@@@k@@@@@@@@^@@@k@@@k@@@@@%@@K@戅@@@@k@@@@@@@@@@k@@@@@@@@@@%k@@@@@@@@@@@^@@`@k@@k@@@@@@@@@K% \ No newline at end of file
diff --git a/icu4c/source/samples/ucnv/data06.txt b/icu4c/source/samples/ucnv/data06.txt
deleted file mode 100644
index 98b97c9c6..000000000
--- a/icu4c/source/samples/ucnv/data06.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-// *******************************************************************************
-// *
-// * Copyright (C) 2016 and later: Unicode, Inc. and others.
-// * License & terms of use: http://www.unicode.org/copyright.html
-// *
-// *******************************************************************************
-// *******************************************************************************
-// *
-// * Copyright (C) 1997-2000, International Business Machines
-// * Corporation and others. All Rights Reserved.
-// *
-// *******************************************************************************
-
-
-
-fa {
-
- Version { "x0.0" }
-
-
- DayAbbreviations {
- "ی∔",
- "د∔",
- "س∔",
- "چ∔",
- "پ∔",
- "ج∔",
- "ش∔",
- }
- DayNames {
- "یی‌شنبه",
- "دوشنبه",
- "سه‌شنبه",
- "چهارشنبه",
- "پنج‌شنبه",
- "جمعه",
- "شنبه",
- }
- MonthAbbreviations {
- "ژان",
- "فور",
- "مار",
- "آور",
- "مـه",
- "ژون",
- "ژوی",
- "اوت",
- "سپت",
- "اكت",
- "نوا",
- "دسا",
- "",
- }
- MonthNames {
- "ژانویه",
- "فورویه",
- "مارس",
- "آوریل",
- "مه",
- "ژوئن",
- "ژوئیه",
- "اوت",
- "سپتامبر",
- "اكتبر",
- "نوامبر",
- "دسامبر",
- "",
- }
- NumberElements {
- "٫",
- "٬",
- ";",
- "%",
- "0",
- "#",
- "-",
- "E",
- "‰",
- "∞",
- "�",
- }
- NumberPatterns {
- "#,##0.###;-#,##0.###",
- "#,##0.#¤;#,##0.#- ¤",
- "#,##0%",
- }
- LocaleID{ "29"}
- // /**************** Info Below is needed ****************/
- // CollationElements{}
- // Countries{}
- // Eras{}
- // Languages{}
- // ShortLanguage { }
- // localPatternChars{}
- //
-}
diff --git a/icu4c/source/samples/ucnv/flagcb.c b/icu4c/source/samples/ucnv/flagcb.c
deleted file mode 100644
index da275a170..000000000
--- a/icu4c/source/samples/ucnv/flagcb.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/**************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- **************************************************************************
- **************************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2007, International Business Machines Corporation and
- * others. All Rights Reserved.
- **************************************************************************/
-
-#include "unicode/utypes.h"
-#include "unicode/ucnv.h"
-#include "flagcb.h"
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#define DEBUG_TMI 0 /* set to 1 for Too Much Information (TMI) */
-
-U_CAPI FromUFLAGContext* U_EXPORT2 flagCB_fromU_openContext()
-{
- FromUFLAGContext *ctx;
-
- ctx = (FromUFLAGContext*) malloc(sizeof(FromUFLAGContext));
-
- ctx->subCallback = NULL;
- ctx->subContext = NULL;
- ctx->flag = false;
-
- return ctx;
-}
-
-U_CAPI void U_EXPORT2 flagCB_fromU(
- const void *context,
- UConverterFromUnicodeArgs *fromUArgs,
- const UChar* codeUnits,
- int32_t length,
- UChar32 codePoint,
- UConverterCallbackReason reason,
- UErrorCode * err)
-{
- /* First step - based on the reason code, take action */
-
- if(reason == UCNV_UNASSIGNED) { /* whatever set should be trapped here */
- ((FromUFLAGContext*)context)->flag = true;
- }
-
- if(reason == UCNV_CLONE) {
- /* The following is the recommended way to implement UCNV_CLONE
- in a callback. */
- UConverterFromUCallback saveCallback;
- const void *saveContext;
- FromUFLAGContext *old, *cloned;
- UErrorCode subErr = U_ZERO_ERROR;
-
-#if DEBUG_TMI
- printf("*** FLAGCB: cloning %p ***\n", context);
-#endif
- old = (FromUFLAGContext*)context;
- cloned = flagCB_fromU_openContext();
-
- memcpy(cloned, old, sizeof(FromUFLAGContext));
-
-#if DEBUG_TMI
- printf("%p: my subcb=%p:%p\n", old, old->subCallback,
- old->subContext);
- printf("%p: cloned subcb=%p:%p\n", cloned, cloned->subCallback,
- cloned->subContext);
-#endif
-
- /* We need to get the sub CB to handle cloning,
- * so we have to set up the following, temporarily:
- *
- * - Set the callback+context to the sub of this (flag) cb
- * - preserve the current cb+context, it could be anything
- *
- * Before:
- * CNV -> FLAG -> subcb -> ...
- *
- * After:
- * CNV -> subcb -> ...
- *
- * The chain from 'something' on is saved, and will be restored
- * at the end of this block.
- *
- */
-
- ucnv_setFromUCallBack(fromUArgs->converter,
- cloned->subCallback,
- cloned->subContext,
- &saveCallback,
- &saveContext,
- &subErr);
-
- if( cloned->subCallback != NULL ) {
- /* Now, call the sub callback if present */
- cloned->subCallback(cloned->subContext, fromUArgs, codeUnits,
- length, codePoint, reason, err);
- }
-
- ucnv_setFromUCallBack(fromUArgs->converter,
- saveCallback, /* Us */
- cloned, /* new context */
- &cloned->subCallback, /* IMPORTANT! Accept any change in CB or context */
- &cloned->subContext,
- &subErr);
-
- if(U_FAILURE(subErr)) {
- *err = subErr;
- }
- }
-
- /* process other reasons here if need be */
-
- /* Always call the subCallback if present */
- if(((FromUFLAGContext*)context)->subCallback != NULL &&
- reason != UCNV_CLONE) {
- ((FromUFLAGContext*)context)->subCallback( ((FromUFLAGContext*)context)->subContext,
- fromUArgs,
- codeUnits,
- length,
- codePoint,
- reason,
- err);
- }
-
- /* cleanup - free the memory AFTER calling the sub CB */
- if(reason == UCNV_CLOSE) {
- free((void*)context);
- }
-}
-
-/* Debugging callback, just outputs what happens */
-
-/* Test safe clone callback */
-
-static uint32_t debugCB_nextSerial()
-{
- static uint32_t n = 1;
-
- return (n++);
-}
-
-static void debugCB_print_log(debugCBContext *q, const char *name)
-{
- if(q==NULL) {
- printf("debugCBontext: %s is NULL!!\n", name);
- } else {
- if(q->magic != 0xC0FFEE) {
- fprintf(stderr, "debugCBContext: %p:%d's magic is %x, supposed to be 0xC0FFEE\n",
- q,q->serial, q->magic);
- }
- printf("debugCBContext %p:%d=%s - magic %x\n",
- q, q->serial, name, q->magic);
- }
-}
-
-static debugCBContext *debugCB_clone(debugCBContext *ctx)
-{
- debugCBContext *newCtx;
- newCtx = malloc(sizeof(debugCBContext));
-
- newCtx->serial = debugCB_nextSerial();
- newCtx->magic = 0xC0FFEE;
-
- newCtx->subCallback = ctx->subCallback;
- newCtx->subContext = ctx->subContext;
-
-#if DEBUG_TMI
- printf("debugCB_clone: %p:%d -> new context %p:%d\n", ctx, ctx->serial, newCtx, newCtx->serial);
-#endif
-
- return newCtx;
-}
-
-void debugCB_fromU(const void *context,
- UConverterFromUnicodeArgs *fromUArgs,
- const UChar* codeUnits,
- int32_t length,
- UChar32 codePoint,
- UConverterCallbackReason reason,
- UErrorCode * err)
-{
- debugCBContext *ctx = (debugCBContext*)context;
- /*UConverterFromUCallback junkFrom;*/
-
-#if DEBUG_TMI
- printf("debugCB_fromU: Context %p:%d called, reason %d on cnv %p [err=%s]\n", ctx, ctx->serial, reason, fromUArgs->converter, u_errorName(*err));
-#endif
-
- if(ctx->magic != 0xC0FFEE) {
- fprintf(stderr, "debugCB_fromU: Context %p:%d magic is 0x%x should be 0xC0FFEE.\n", ctx,ctx->serial, ctx->magic);
- return;
- }
-
- if(reason == UCNV_CLONE) {
- /* see comments in above flagCB clone code */
-
- UConverterFromUCallback saveCallback;
- const void *saveContext;
- debugCBContext *cloned;
- UErrorCode subErr = U_ZERO_ERROR;
-
- /* "recreate" it */
-#if DEBUG_TMI
- printf("debugCB_fromU: cloning..\n");
-#endif
- cloned = debugCB_clone(ctx);
-
- if(cloned == NULL) {
- fprintf(stderr, "debugCB_fromU: internal clone failed on %p\n", ctx);
- *err = U_MEMORY_ALLOCATION_ERROR;
- return;
- }
-
- ucnv_setFromUCallBack(fromUArgs->converter,
- cloned->subCallback,
- cloned->subContext,
- &saveCallback,
- &saveContext,
- &subErr);
-
- if( cloned->subCallback != NULL) {
-#if DEBUG_TMI
- printf("debugCB_fromU:%p calling subCB %p\n", ctx, cloned->subCallback);
-#endif
- /* call subCB if present */
- cloned->subCallback(cloned->subContext, fromUArgs, codeUnits,
- length, codePoint, reason, err);
- } else {
- printf("debugCB_fromU:%p, NOT calling subCB, it's NULL\n", ctx);
- }
-
- /* set back callback */
- ucnv_setFromUCallBack(fromUArgs->converter,
- saveCallback, /* Us */
- cloned, /* new context */
- &cloned->subCallback, /* IMPORTANT! Accept any change in CB or context */
- &cloned->subContext,
- &subErr);
-
- if(U_FAILURE(subErr)) {
- *err = subErr;
- }
- }
-
- /* process other reasons here */
-
- /* always call subcb if present */
- if(ctx->subCallback != NULL && reason != UCNV_CLONE) {
- ctx->subCallback(ctx->subContext,
- fromUArgs,
- codeUnits,
- length,
- codePoint,
- reason,
- err);
- }
-
- if(reason == UCNV_CLOSE) {
-#if DEBUG_TMI
- printf("debugCB_fromU: Context %p:%d closing\n", ctx, ctx->serial);
-#endif
- free(ctx);
- }
-
-#if DEBUG_TMI
- printf("debugCB_fromU: leaving cnv %p, ctx %p: err %s\n", fromUArgs->converter, ctx, u_errorName(*err));
-#endif
-}
-
-debugCBContext *debugCB_openContext()
-{
- debugCBContext *ctx;
-
- ctx = malloc(sizeof(debugCBContext));
-
- if(ctx != NULL) {
- ctx->magic = 0xC0FFEE;
- ctx->serial = debugCB_nextSerial();
- ctx->subCallback = NULL;
- ctx->subContext = NULL;
-
-#if DEBUG_TMI
- fprintf(stderr, "debugCB:openContext opened[%p] = serial #%d\n", ctx, ctx->serial);
-#endif
-
- }
-
-
- return ctx;
-}
diff --git a/icu4c/source/samples/ucnv/flagcb.h b/icu4c/source/samples/ucnv/flagcb.h
deleted file mode 100644
index 2058903b5..000000000
--- a/icu4c/source/samples/ucnv/flagcb.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* © 2016 and later: Unicode, Inc. and others.
- License & terms of use: http://www.unicode.org/copyright.html
-
- Copyright (c) 2000 IBM, Inc. and Others.
- FLAGCB.H - interface to 'flagging' callback which
- simply marks the fact that the callback was called.
-*/
-
-#ifndef _FLAGCB
-#define _FLAGCB
-
-#include "unicode/utypes.h"
-#include "unicode/ucnv.h"
-
-/* The structure of a FromU Flag context.
- (conceivably there could be a ToU Flag Context) */
-
-typedef struct
-{
- UConverterFromUCallback subCallback;
- const void *subContext;
- UBool flag;
-} FromUFLAGContext;
-
-/**
- * open the context
- */
-
-U_CAPI FromUFLAGContext* U_EXPORT2 flagCB_fromU_openContext();
-
-/**
- * the actual callback
- */
-U_CAPI void U_EXPORT2 flagCB_fromU(
- const void *context,
- UConverterFromUnicodeArgs *fromUArgs,
- const UChar* codeUnits,
- int32_t length,
- UChar32 codePoint,
- UConverterCallbackReason reason,
- UErrorCode * err);
-
-
-
-typedef struct
-{
- UConverterFromUCallback subCallback;
- const void *subContext;
- uint32_t magic; /* 0xC0FFEE to identify that the object is OK */
- uint32_t serial; /* minted from nextSerial */
-} debugCBContext;
-
-U_CAPI void debugCB_fromU(const void *context,
- UConverterFromUnicodeArgs *fromUArgs,
- const UChar* codeUnits,
- int32_t length,
- UChar32 codePoint,
- UConverterCallbackReason reason,
- UErrorCode * err);
-
-U_CAPI debugCBContext *debugCB_openContext();
-
-#endif
diff --git a/icu4c/source/samples/ucnv/readme.txt b/icu4c/source/samples/ucnv/readme.txt
deleted file mode 100644
index 10987656d..000000000
--- a/icu4c/source/samples/ucnv/readme.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (C) 2002-2010, International Business Machines
-Corporation and others. All Rights Reserved.
-
-convsamp: a sample program which demonstrates using ICU conversion
-
-This sample demonstrates
- Opening and closing converters using the C api
- String manipulation in C
- Writing a custom conversion callback function
-
-
-Files:
- convsamp.c Main source file
- flagcb.h codepage output convenience header
- flagcb.c codepage output convenience implementation
- ucnv.sln Windows MSVC workspace. Double-click this to get started.
- ucnv.vcproj Windows MSVC project file
-
-To Build ucnv on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\ucnv\ucnv.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the ufortune directory, e.g.
- cd c:\icu\source\samples\ucnv\debug
- 4. Run it
- ucnv
- WARNING: The .bin and .txt files must be in the same directory as the executable, which is not the case by default on some systems.
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Build
- set the variable ICU_PREFIX=<icu install>
- gmake all
-
- To Run on Unixes
- cd <icu directory>/source/samples/ucnv
-
- gmake check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- convsamp
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/ucnv/ucnv.sln b/icu4c/source/samples/ucnv/ucnv.sln
deleted file mode 100644
index 40673e3b8..000000000
--- a/icu4c/source/samples/ucnv/ucnv.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ucnv", "ucnv.vcxproj", "{8C95060E-61F5-464E-BB42-95B788C0D7E4}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|Win32.ActiveCfg = Debug|Win32
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|Win32.Build.0 = Debug|Win32
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.ActiveCfg = Debug|x64
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.Build.0 = Debug|x64
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|Win32.ActiveCfg = Release|Win32
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|Win32.Build.0 = Release|Win32
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.ActiveCfg = Release|x64
- {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/ucnv/ucnv.vcxproj b/icu4c/source/samples/ucnv/ucnv.vcxproj
deleted file mode 100644
index b131e4881..000000000
--- a/icu4c/source/samples/ucnv/ucnv.vcxproj
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{8C95060E-61F5-464E-BB42-95B788C0D7E4}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <!-- Options that are common to *all* project configurations -->
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/ucnv.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/ucnv.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/ucnv.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/ucnv.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/ucnv.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/ucnv.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/ucnv.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/ucnv.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/ucnv.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/ucnv.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/ucnv.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/ucnv.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/ucnv.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/ucnv.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/ucnv.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/ucnv.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="convsamp.cpp" />
- <ClCompile Include="flagcb.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="flagcb.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/ucnv/ucnv.vcxproj.filters b/icu4c/source/samples/ucnv/ucnv.vcxproj.filters
deleted file mode 100644
index d150370ae..000000000
--- a/icu4c/source/samples/ucnv/ucnv.vcxproj.filters
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{a6fcae56-1378-4c39-8eba-41a0b2ce48cc}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{3f311d2a-87ba-4d72-a595-0996b7f3b3ee}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{1ac535db-fcad-45d6-87f2-3eb87a31a25f}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="convsamp.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="flagcb.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="flagcb.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/udata/Makefile b/icu4c/source/samples/udata/Makefile
deleted file mode 100644
index 138a95c47..000000000
--- a/icu4c/source/samples/udata/Makefile
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2012 IBM, Inc. and others
-# udata sample code
-# Usage:
-# - configure, build, install ICU
-# - ensure that 'icu-config' is in the PATH (PREFIX/bin/icu-config)
-# - if ICU is not built relative to this directory,
-# set the variable ICU_PATH to the 'icu' directory
-# (i.e. /foo/icu )
-# - do 'make' in this directory
-
-
-# Include ICU standard definitions
-include ../defs.mk
-
-# look for the ICU_PATH variable, guess if not there
-ICU_DEFAULT_PATH=../../..
-
-ifeq ($(strip $(ICU_PATH)),)
- ICU_PATH=$(ICU_DEFAULT_PATH)
-endif
-
-# Name of your target
-TARGET1=reader
-TARGET2=writer
-
-# All object files (C or C++)
-OBJECTS1=reader.o
-OBJECTS2=writer.o
-OBJECTS=$(OBJECTS1) $(OBJECTS2)
-
-CLEANFILES=*~ $(TARGET).out $(TARGET1).out $(TARGET2).out
-
-all: $(TARGET1) $(TARGET2)
-
-# The following lines are to make sure ICU_PATH is set properly.
-writer.o: $(ICU_PATH)/source/tools/toolutil/uoptions.h
-
-$(ICU_PATH)/source/tools/toolutil/uoptions.h:
- @echo
- @echo "*** Please read the directions at the top of this file (Makefile)"
- @echo "*** Can't open $@ - check ICU_PATH"
- @echo
- @false
-
-# Only the writer needs these, actually.
-CPPFLAGS += -I$(ICU_PATH)/source/tools/toolutil
-LDFLAGS += -L$(ICU_PATH)/source/tools/toolutil $(shell icu-config --ldflags-toolutil)
-
-
-.PHONY: all clean distclean check report
-
-distclean clean:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
- -$(RMV) $(OBJECTS) $(TARGET1) $(TARGET2)
-
-# Can change this to LINK.c if it is a C only program
-# Can add more libraries here.
-$(TARGET1): $(OBJECTS1)
- $(CXX) -o $@ $(LDFLAGS)
-
-$(TARGET2): $(OBJECTS2)
- $(CXX) -o $@ $(LDFLAGS) -licui18n -licuuc
-
-# Make check: simply runs the sample, logged to a file
-check: $(TARGET1) $(TARGET2)
- $(INVOKE) ./$(TARGET2) | tee $(TARGET2).out
- $(INVOKE) ./$(TARGET1) | tee $(TARGET1).out
-
-
diff --git a/icu4c/source/samples/udata/reader.c b/icu4c/source/samples/udata/reader.c
deleted file mode 100644
index cc3241761..000000000
--- a/icu4c/source/samples/udata/reader.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- *******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- *******************************************************************************
- *******************************************************************************
- *
- * Copyright (C) 1999-2009, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: reader.c
- * encoding: UTF-8
- * tab size: 8 (not used)
- * indentation:4
- *
- * created on: 2000sep5
- * created by: Vladimir Weinstein
- */
-
-/*******************************************************************************
- * Derived from Madhu Katragadda gentest
- *******************************************************************************/
-
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef WIN32
-#include <direct.h>
-#else
-#include <unistd.h>
-#endif
-#include "unicode/utypes.h"
-#include "unicode/putil.h"
-#include "unicode/udata.h"
-
-#define DATA_NAME "mypkg_example"
-#define DATA_TYPE "dat"
-
-/* UDataInfo cf. udata.h */
-static const UDataInfo dataInfo={
- sizeof(UDataInfo),
- 0,
-
- U_IS_BIG_ENDIAN,
- U_CHARSET_FAMILY,
- sizeof(UChar),
- 0,
-
- 0x4D, 0x79, 0x44, 0x74, /* dataFormat="MyDt" */
- 1, 0, 0, 0, /* formatVersion */
- 1, 0, 0, 0 /* dataVersion */
-};
-
-static UBool
-isAcceptable(void *context,
- const char *type, const char *name,
- const UDataInfo *pInfo){
-
- if( pInfo->size>=20 &&
- pInfo->isBigEndian==U_IS_BIG_ENDIAN &&
- pInfo->charsetFamily==U_CHARSET_FAMILY &&
- pInfo->dataFormat[0]==0x4D && /* dataFormat="MyDt" */
- pInfo->dataFormat[1]==0x79 &&
- pInfo->dataFormat[2]==0x44 &&
- pInfo->dataFormat[3]==0x74 &&
- pInfo->formatVersion[0]==1 &&
- pInfo->dataVersion[0]==1 ) {
- return true;
- } else {
- return false;
- }
-
-
-}
-
-extern int
-main(int argc, const char *argv[]) {
- UDataMemory *result = NULL;
- UErrorCode status=U_ZERO_ERROR;
-
- uint16_t intValue = 0;
-
- char *string = NULL;
- uint16_t *intPointer = NULL;
-
- const void *dataMemory = NULL;
- char curPathBuffer[1024];
-
-#ifdef WIN32
- char *currdir = _getcwd(NULL, 0);
-#else
- char *currdir = getcwd(NULL, 0);
-#endif
-
- /* need to put "current/dir" as path */
- strcpy(curPathBuffer, currdir);
-
- result=udata_openChoice(curPathBuffer, DATA_TYPE, DATA_NAME, isAcceptable, NULL, &status);
-
- if(currdir != NULL) {
- free(currdir);
- }
-
- if(U_FAILURE(status)){
- printf("Failed to open data file example.dat in %s with error number %d\n", curPathBuffer, status);
- return -1;
- }
-
- dataMemory = udata_getMemory(result);
-
- intPointer = (uint16_t *)dataMemory;
-
- printf("Read value %d from data file\n", *intPointer);
-
- string = (char *) (intPointer+1);
-
- printf("Read string %s from data file\n", string);
-
- if(U_SUCCESS(status)){
- udata_close(result);
- }
-
- return 0;
-}
-
-
-
-
-
-
-
diff --git a/icu4c/source/samples/udata/reader.vcxproj b/icu4c/source/samples/udata/reader.vcxproj
deleted file mode 100644
index ab97c1b4e..000000000
--- a/icu4c/source/samples/udata/reader.vcxproj
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>.\x86\Debug\</OutDir>
- <IntDir>.\x86\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>.\x64\Debug\</OutDir>
- <IntDir>.\x64\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>.\x86\Release\</OutDir>
- <IntDir>.\x86\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>.\x64\Release\</OutDir>
- <IntDir>.\x64\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>
- <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\reader_Win32_Debug/reader.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\reader_x64_Debug/reader.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\reader_x64_Debug/reader.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\reader_x64_Debug/</AssemblerListingLocation>
- <ObjectFileName>.\reader_x64_Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\reader_x64_Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\reader_x64_Debug/reader.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\reader_x64_Debug/reader.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>
- <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\reader_Win32_Release/reader.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\reader_x64_Release/reader.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\reader_x64_Release/reader.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\reader_x64_Release/</AssemblerListingLocation>
- <ObjectFileName>.\reader_x64_Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\reader_x64_Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\reader_x64_Release/reader.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\reader_x64_Release/reader.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="reader.c">
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>
- </ClCompile>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/udata/reader.vcxproj.filters b/icu4c/source/samples/udata/reader.vcxproj.filters
deleted file mode 100644
index 085a2be41..000000000
--- a/icu4c/source/samples/udata/reader.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{70f91413-5190-4f71-88a6-42eddfb11351}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{e31be275-f3ff-42ca-8017-1ddab3cbd23b}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{ce6ba23d-b7db-40f6-8e79-a1d386c0c707}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="reader.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/udata/readme.txt b/icu4c/source/samples/udata/readme.txt
deleted file mode 100644
index 746748420..000000000
--- a/icu4c/source/samples/udata/readme.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
-udata: Low level ICU data
-
-This sample demonstrates
- Using the low level ICU data handling interfaces (udata) to create
- and later access user data.
-
-Files:
- writer.c C source for Writer application, will generate data file to be read by Reader.
- reader.c C source for Reader application, will read file created by Writer
- udata.sln Windows MSVC workspace. Double-click this to get started.
- udata.vcproj Windows MSVC project file
-
-To Build udata on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\udata\udata.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the udata directory, e.g.
- cd c:\icu\source\samples\udata\debug
- 4. Run it
- writer
- reader
- IMPORTANT: On some systems, the reader and writer executables may not be in the same directory. If this is the case, this will likely cause a problem with reader looking for the .dat file in the wrong directory).
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- You will need to set ICU_PATH to the location of your ICU source tree, for example ICU_PATH=/home/srl/icu (containing source, etc.)
- cd <icu directory>/source/samples/udata
- gmake ICU_PATH=<icu source directory> ICU_PREFIX=<icu install directory)
-
- To Run on Unixes
- cd <icu directory>/source/samples/udata
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- writer
- reader
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/udata/udata.sln b/icu4c/source/samples/udata/udata.sln
deleted file mode 100644
index 8a3747df4..000000000
--- a/icu4c/source/samples/udata/udata.sln
+++ /dev/null
@@ -1,35 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reader", "reader.vcxproj", "{BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "writer", "writer.vcxproj", "{40A90302-F173-4629-A003-F571D2D93D16}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|Win32.ActiveCfg = Debug|Win32
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|Win32.Build.0 = Debug|Win32
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.ActiveCfg = Debug|x64
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.Build.0 = Debug|x64
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|Win32.ActiveCfg = Release|Win32
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|Win32.Build.0 = Release|Win32
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.ActiveCfg = Release|x64
- {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.Build.0 = Release|x64
- {40A90302-F173-4629-A003-F571D2D93D16}.Debug|Win32.ActiveCfg = Debug|Win32
- {40A90302-F173-4629-A003-F571D2D93D16}.Debug|Win32.Build.0 = Debug|Win32
- {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.ActiveCfg = Debug|x64
- {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.Build.0 = Debug|x64
- {40A90302-F173-4629-A003-F571D2D93D16}.Release|Win32.ActiveCfg = Release|Win32
- {40A90302-F173-4629-A003-F571D2D93D16}.Release|Win32.Build.0 = Release|Win32
- {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.ActiveCfg = Release|x64
- {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/udata/writer.c b/icu4c/source/samples/udata/writer.c
deleted file mode 100644
index a5b3a9685..000000000
--- a/icu4c/source/samples/udata/writer.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 1999-2006, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: writer.c
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2000sep5
-* created by: Vladimir Weinstein
-*/
-
-/******************************************************************************
- * A program to write simple binary data readable by udata - example for
- * ICU workshop
- ******************************************************************************/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef WIN32
-#include <direct.h>
-#else
-#include <unistd.h>
-#endif
-#include "unicode/utypes.h"
-#include "unicode/udata.h"
-
-/* this is private - available only through toolutil */
-#include "unewdata.h"
-
-#define DATA_NAME "mypkg_example"
-#define DATA_TYPE "dat"
-
-/* UDataInfo cf. udata.h */
-static const UDataInfo dataInfo={
- sizeof(UDataInfo),
- 0,
-
- U_IS_BIG_ENDIAN,
- U_CHARSET_FAMILY,
- sizeof(UChar),
- 0,
-
- 0x4D, 0x79, 0x44, 0x74, /* dataFormat="MyDt" */
- 1, 0, 0, 0, /* formatVersion */
- 1, 0, 0, 0 /* dataVersion */
-};
-
-
-/* Exercise: add writing out other data types */
-/* see icu/source/tools/toolutil/unewdata.h */
-/* for other possibilities */
-
-extern int
-main(int argc, const char *argv[]) {
- UNewDataMemory *pData;
- UErrorCode errorCode=U_ZERO_ERROR;
- char stringValue[]={'E', 'X', 'A', 'M', 'P', 'L', 'E', '\0'};
- uint16_t intValue=2000;
-
- long dataLength;
- size_t size;
-#ifdef WIN32
- char *currdir = _getcwd(NULL, 0);
-#else
- char *currdir = getcwd(NULL, 0);
-#endif
-
- pData=udata_create(currdir, DATA_TYPE, DATA_NAME, &dataInfo,
- U_COPYRIGHT_STRING, &errorCode);
-
- if(currdir != NULL) {
- free(currdir);
- }
-
-
- if(U_FAILURE(errorCode)) {
- fprintf(stderr, "Error: unable to create data memory, error %d\n", errorCode);
- exit(errorCode);
- }
-
- /* write the data to the file */
- /* a 16 bit value and a String*/
- printf("Writing uint16_t value of %d\n", intValue);
- udata_write16(pData, intValue);
- printf("Writing string value of %s\n", stringValue);
- udata_writeString(pData, stringValue, sizeof(stringValue));
-
- /* finish up */
- dataLength=udata_finish(pData, &errorCode);
- if(U_FAILURE(errorCode)) {
- fprintf(stderr, "Error: error %d writing the output file\n", errorCode);
- exit(errorCode);
- }
- size=sizeof(stringValue) + sizeof(intValue);
-
-
- if(dataLength!=(long)size) {
- fprintf(stderr, "Error: data length %ld != calculated size %zu\n", dataLength, size);
- exit(U_INTERNAL_PROGRAM_ERROR);
- }
- return 0;
-}
diff --git a/icu4c/source/samples/udata/writer.vcxproj b/icu4c/source/samples/udata/writer.vcxproj
deleted file mode 100644
index a0abdb379..000000000
--- a/icu4c/source/samples/udata/writer.vcxproj
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{40A90302-F173-4629-A003-F571D2D93D16}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>.\x86\Debug\</OutDir>
- <IntDir>.\x86\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>.\x64\Debug\</OutDir>
- <IntDir>.\x64\Debug\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>.\x86\Release\</OutDir>
- <IntDir>.\x86\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>.\x64\Release\</OutDir>
- <IntDir>.\x64\Release\</IntDir>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/writer.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/writer.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/writer.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/writer.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/writer.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/writer.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/writer.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/writer.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/writer.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/writer.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/writer.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/writer.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/writer.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/writer.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release\writer.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release\writer.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="writer.c" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/udata/writer.vcxproj.filters b/icu4c/source/samples/udata/writer.vcxproj.filters
deleted file mode 100644
index 27ab4e4e7..000000000
--- a/icu4c/source/samples/udata/writer.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{95d01528-6508-4b1e-8aae-1c97e5b51225}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{354349b6-2a7e-4803-8654-f1123e58d086}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{629cf2c5-7334-4b9c-9592-17e16293f7f0}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="writer.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/ufortune/Makefile b/icu4c/source/samples/ufortune/Makefile
deleted file mode 100644
index 77302f46e..000000000
--- a/icu4c/source/samples/ufortune/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2001-2003 IBM, Inc. and others
-
-#
-# File
-# icu/source/samples/ufortune/Makefile
-#
-# Usage:
-# - configure and build ICU [see the docs] .. use "--prefix=" something
-#
-# - do 'make install' of icu
-#
-# - make sure the script 'icu-config' is executable in your PATH
-#
-# - do 'gmake' in this directory
-# - do 'gmake check' to run the sample.
-
-
-# Load ICU information
-include ../defs.mk
-
-include fortunedefs.mk
-
-# Name of your target
-TARGET=ufortune
-
-# All object files (C or C++)
-OBJECTS=ufortune.o
-
-# dir containing resources
-RESDIR=resources
-
-# hook variables to tell rules.mk we want subdirectory processing
-ALL_SUBDIR= all-$(RESDIR)
-CLEAN_SUBDIR= clean-$(RESDIR)
-
-# Need: ustdio, and to link with ufortune
-XTRALIBS=$(RESLDFLAGS)
-LDFLAGS += $(LDFLAGS_USTDIO)
-CPPFLAGS += $(RESCPPFLAGS)
-
-### Include standard rules
-include ../rules.mk
-
-# subdirectory processing
-all-$(RESDIR):
- $(MAKE) -C $(RESDIR)
-
-clean-$(RESDIR):
- -$(MAKE) -C $(RESDIR) clean
-
-
-install-$(RESDIR):
- $(MAKE) -C $(RESDIR) install
-
-install: install-$(RESDIR)
diff --git a/icu4c/source/samples/ufortune/fortunedefs.mk b/icu4c/source/samples/ufortune/fortunedefs.mk
deleted file mode 100644
index d2bcb59fd..000000000
--- a/icu4c/source/samples/ufortune/fortunedefs.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2001-2011 IBM, Inc. and others
-# common makefile between ufortune and ufortune/resources
-
-# mode of resource bundle -
-# you can change this to:
-# dll - will create a dynamically linked library
-# (may require 'make install' in resources subdir for
-# proper library installation)
-#
-# static - will statically link data into ufortune
-#
-# common - will create fortune_resources.dat in the resources subdir
-# (must be locatable by ICU_PATH - use 'make check')
-#
-# files - will use separate files, such as es.res, fi.res, etc.
-# (use 'make check')
-#
-RESMODE=static
-
-# Resource shortname
-RESNAME=fortune_resources
-
-RESLDFLAGS=
-# Don't call udata_setAppData unless we are linked with the data
-RESCPPFLAGS=-DUFORTUNE_NOSETAPPDATA
-CHECK_VARS= ICU_DATA=$(RESDIR)
-
-# DLL and static modes are identical here
-ifeq ($(RESMODE),dll)
-RESLDFLAGS= -L$(RESDIR) -l$(RESNAME)
-RESCPPFLAGS=
-CHECK_VARS=
-endif
-
-ifeq ($(RESMODE),static)
-RESLDFLAGS= -L$(RESDIR) -l$(RESNAME)
-RESCPPFLAGS=
-CHECK_VARS=
-endif
-
diff --git a/icu4c/source/samples/ufortune/readme.txt b/icu4c/source/samples/ufortune/readme.txt
deleted file mode 100644
index ead27a742..000000000
--- a/icu4c/source/samples/ufortune/readme.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
-ufortune: a sample program demonstrating the use of ICU resource files by an application.
-
-This sample demonstrates
- Defining resources for use by an application
- Compiling and packaging them into a dll
- Referencing the resource-containing dll from application code
- Loading resource data using ICU's API
-
-Files:
- ./ufortune.c source code for the sample
- ./ufortune.sln Windows MSVC workspace. Double-click this to get started.
- ./ufortune.vcproj Windows MSVC project file.
- ./Makefile Makefile for Unixes. Needs gmake.
- resources/root.txt Default resources (text for messages in English)
- resources/es.txt Spanish language resources source file..
- resources/res-file-list.txt List of resource source files to be built
- resources/Makefile Makefile for compiling resources, for Unixes.
-
-
-To Build ufortune on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\ufortune\ufortune.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the ufortune directory, e.g.
- cd c:\icu\source\samples\ufortune\debug
- 4. Run it
- ufortune
-
-
-To Build on Unixes
- 1. Build ICU. Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Build the sample
- cd <icu directory>/source/samples/ufortune
- export ICU_PREFIX= <icu install directory>
- gmake
-
- To Run on Unixes
- cd <icu directory>/source/samples/ufortune
-
- gmake check
- or
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- ufortune
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
diff --git a/icu4c/source/samples/ufortune/resources/Makefile b/icu4c/source/samples/ufortune/resources/Makefile
deleted file mode 100644
index d10169a4a..000000000
--- a/icu4c/source/samples/ufortune/resources/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2001-2011 IBM, Inc. and others
-#
-# File
-# icu/source/samples/ufortune/resources/Makefile
-#
-# Usage:
-# See the instructions in the parent Makefile,
-# icu/source/samples/ufortune/Makefile.
-# This subproject builds the ICU resource files for ufortune.
-# It is normally invoked from the parent directory,
-# although the resources can be built from here.
-#
-# Two ICU tools are run from this makefile:
-# genrb compiles a resource source file (.txt) into
-# a binary .res file.
-# pkgdata combines all of the .res files into a single
-# shared library that can then be linked with the
-# main application.
-#
-# pkgdata will recursively generate and run yet
-# another makefile, which in turn runs two more
-# icu tools. gencmn combines the individual .res
-# files, and genccode emits the data as C source
-# code that can then be built into a .so
-#
-
-include ../../defs.mk
-
-# No conventional target - this dir is resources only.
-TARGET=
-CLEANFILES += *.[co] *.lst $(RESNAME)_*.mak $(RESNAME).dat $(RESFILES) *.ao README*resources.txt $(RESNAME)_dat*
-
-include ../fortunedefs.mk
-
-# target file for resource bundle - this must be set, or 'make all' won't
-# build any resources.
-ifeq ($(RESMODE),dll)
-RESTARGET=lib$(RESNAME)*.$(SO)*
-endif
-ifeq ($(RESMODE),static)
-RESTARGET=lib$(RESNAME).a
-endif
-
-# Resource files. Add new ones for additional locales here.
-# keep in sync with the file RESLIST
-RESFILES=root.res es.res
-
-# list of resource bundles - keep in sync with RESFILES
-RESLIST=res-file-list.txt
-
-## Include standard rules
-include ../../rules.mk
-
-# for installing the library
-install: res-install
-
-es.res: es.txt
- @echo "generating $@"
- $(GENRB) $(GENRBOPT) $^
-
diff --git a/icu4c/source/samples/ufortune/resources/es.txt b/icu4c/source/samples/ufortune/resources/es.txt
deleted file mode 100644
index c2849f62d..000000000
--- a/icu4c/source/samples/ufortune/resources/es.txt
+++ /dev/null
@@ -1,474 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-//
-// Copyright (C) 2001-2006, International Business Machines
-// Corporation and others. All Rights Reserved.
-
-//
-// es.txt
-//
-// Spanish resource file for ufortune sample program for ICU.
-//
-
-// ufortune has three resources
-// usage - the usage string to display if there's a command line error
-// or in response to -? or --help.
-// optionMessage - the error text to display in response to an unrecognized
-// option on the command line.
-// fortunes - An array of strings, the fortune messages.
-//
-
-es {
-
- usage {"usage: ufortune [-v] [-l locale]"}
- optionMessage {"unrecognized command line option:"}
-
-
-
- fortunes {
-
-
-"Todo lo que no tiene solución no se soluciona, y lo que la tiene tampoco.
- -- Bill Gates. (1952?) Fundador de Microsoft. Del manual de Windows 95. ",
-
-"El hombre todavía puede apagar el ordenador. Sin embargo, tendremos que esforzarnos mucho para conservar este privilegio.
- -- J. Weizembaum. Sociólogo norteamericano experto en ordenadores. ",
-
-"El ordenador ha sido hasta ahora el producto más genial de la vagancia humana.
- -- Slogan de IBM. ",
-
-"La página WEB es el soporte interactivo ideal para ofrecer un servicio, facilitar información, hacer negocio, etc de un modo más completo y directo que cualquier otro.
- -- Vinton Cerf. (1934) Padre de Internet. (Fundador de Internet Society). ",
-
-"Todavía hay mucha gente que ofrece contenidos por el mero placer de saber que la información puede resultar útil a otras personas.
- -- Vinton Cerf. (1934) Padre de Internet. (Fundador de Internet Society). ",
-
-"En no mucho tiempo contaremos con unas líneas inteligentes y que estarán totalmente integradas con la Red.
- -- Vinton Cerf. (1934) Padre de Internet. (Fundador de Internet Society). ",
-
-"En el futuro no se usará MODEM para acceder a Internet.
- -- Vinton Cerf. (1934) Padre de Internet. (Fundador de Internet Society). ",
-
-"En el año 2005 los chips serán tan baratos que los encontraremos en todas partes: la nevera, la lavadora y cualquier otro electrodoméstico.
- -- Vinton Cerf. (1934) Padre de Internet. (Fundador de Internet Society). ",
-
-"Internet 2 será 100 veces más rápida.
- -- Irving Wladawsky-Berger. Director General de la División Internet de IBM. ",
-
-"Windows 95 está colgando su sistema. Por favor espere...
- -- Nugar. Internauta y Webmaster panameño. ",
-
-"No pensábamos en el negocio, sino en Internet como una forma de comunicación global.
- -- Jerry Yang. Uno de los creadores de Yahoo!. ",
-
-"iusfbvksagsvkjsh bvkdns Maldita Gata!!! Bájate del tecladonlagnlbhl
- -- Stepi taglines. ",
-
-"Sueter ke mis mesages pashan po el coretor otójraf
- -- Stepi taglines. ",
-
-"User error: Replace user, hit any key to continue.
- -- Stepi taglines. ",
-
-"SOFTWARE: Aquello que solamente puedes maldecir.
- -- Yo. ",
-
-"HARDWARE: Lo que puedes partir con un hacha.
- -- Yo. ",
-
-"¿Cuál es la patrona de los informáticos? - Santa Tecla.
- -- Yo. ",
-
-"Eres más falso que Windows 95 a prueba de fallos.
- -- Yo. ",
-
-"Gabardinas Windows 95 se cuelgan solas.
- -- Yo. ",
-
-"El hijo de Bill Gates fue por causa de un 'ERROR DE PROTECCION GENERAL'.
- -- Yo. ",
-
-"¿Alguien sabe qué es lo bueno de Windows 95?... Yo tampoco.
- -- Yo. ",
-
-"Multitarea: Dos o más programas pueden fallar simultáneamente.
- -- Yo. ",
-
-"...aquella masa de solidificada razón de dieciséis kilómetros de longitud, a la que los hombres llamaban Multivac, el más complejo ordenador jamás construido.
- -- Isaac Asimov. (1920-1992) Escritor y científico estadounidense. Fragmento del cuento 'El chistoso'. ",
-
-"Press (Ctrl)(Alt)(Del) to continue...
- -- PC Users. La mejor revista de computación del mundo. ",
-
-"Si debbuging es el proceso de eliminar errores, entonces la programación debe ser el proceso de ponerlos.
- -- PC Users. La mejor revista de computación del mundo. ",
-
-"Hay dos formas de escribir programas sin errores. Sólo la tercera funciona.
- -- PC Users. La mejor revista de computación del mundo. ",
-
-"No confíes en una PC que no puedas tirar por la ventana.
- -- Steve Wozniak. ",
-
-"Si los arquitectos hiciesen edificios de la misma forma en que los programadores escriben programas, el primer pájaro carpintero que pasase por aquí destruiría la civilización.
- -- Gerald Weimberg. ",
-
-"Las PCs no son inteligentes, sólo creen que lo son.
- -- PC Users. La mejor revista de computación del mundo. ",
-
-"S pd lr sto, usd pd btnr n ben trbjo cm prgdor d P.
- -- PC Users. La mejor revista de computación del mundo. ",
-
-"SHIFT TO LEFT! SHIFT TO THE RIGHT! POP UP, PUSH DOWN, BYTE, BYTE, BYTE!
- -- Universidad de Massachussets. Utilizado en la toga del equipo para las olimpiadas informáticas. ",
-
-"Por cada error que se le atribuye a una PC siempre se encuentran al menos dos errores humanos: el de culpar a la PC y el de confiar en ella.
- -- PC Users. La mejor revista de computación del mundo. PC Users Nº 68. ",
-
-"Todo programa hace algo perfectamente bien, aunque no sea exactamente lo que nosotros queremos que haga.
- -- R.S. Pressmann. PC Users Nº 68. ",
-
-"El programa es totalmente perfecto, por lo tanto la PC es que debe andar mal.
- -- Cualquier programador. PC Users Nº 68. ",
-
-"El veloz murciélago hindú comia feliz cardillo y kiwi, La cigueña tocaba el saxofón detrás del palenque de paja.
- -- Microsoft. Frase de ejemplo para probar los fonts de Windows. (¿De dónde la sacaron?). ",
-
-"La red mundial de Internet nos permite a hombres y mujeres llegar a los rincones más desconocidos y comunicarnos, es como llegar con la luz del sol a los lugares donde todo parece noche.
- -- Hebe de Bonafini. Presidenta de Madres de Plaza de Mayo. ",
-
-"En China hay 1200 millones de personas que podrían entrar a Internet, pero por ahora tiene otros asuntos prioritarios que atender, como muchos otros paises.
- -- Matt Stein. Representante internacional de Yahoo. ",
-
-"Ahora ya no se pregunta si tenés email, te lo piden directamente.
- -- Matt Stein. Representante internacional de Yahoo. ",
-
-"En Argentina veo que el mercado se está expandiendo rápido, casi todo el mundo habla de Internet y hay muchos expertos. La gente común conoce el tema.
- -- Matt Stein. Representante internacional de Yahoo. ",
-
-"...pronto no se necesitará un computadora para acceder a la Red, estarán los asistentes personales, la TV, los relojes inteligentes y otros.
- -- Matt Stein. Representante internacional de Yahoo. ",
-
-"Los programadores de verdad hacen 'copy con program.exe'
- -- PC Users. La mejor revista de computación del mundo. ",
-
-"Las computadoras de Minardi usan Windows 95.
- -- Esteban Tuero. ",
-
-"El casco del Titanic fue diseñado con Windows 95.
- -- Www.frases.com. ",
-
-"Dinner not ready: (A)bort (R)etry (P)izza (M)cDonalds?
- -- Www.frases.com. ",
-
-"Amante: Versión shareware de esposa.
- -- Www.frases.com. ",
-
-"Las computadoras hacen lo que usted manda. No lo que usted quiere.
- -- Www.frases.com. ",
-
-"No preciso comer ni dormir. ¡Compré un MODEM!
- -- Www.frases.com. ",
-
-"Mi mujer me dijo: O el MODEM o yo. (A veces la extraño).
- -- Www.frases.com. ",
-
-"¿Cuál es la diferencia entre un virus y Windows 95? - El virus funciona.
- -- Www.frases.com. ",
-
-"¿Qué es 200 veces peor que OS/2?: AS-400.
- -- Www.frases.com. ",
-
-"La piratería es un crimen. No ataque barcos.
- -- Www.frases.com. ",
-
-"¿Usted tiene un micro? El mío es enorme...
- -- Www.frases.com. ",
-
-"DoubleSpace: Compactando datos y Expandiendo Problemas.
- -- Www.frases.com. ",
-
-"¿Usted le sonrió a su computador hoy? ¿Si? ¡Más que imbécil!
- -- Www.frases.com. ",
-
-"Merdasemerompiólabarraespaciadora.
- -- Www.frases.com. ",
-
-"Si no consigue encontrar el problema, seguro es el BIOS (Bichito Ignorante Operando Sistema).
- -- Www.frases.com. ",
-
-"¿US Robotics? ¿Para qué? Mi Zoltrix vue$$@@!!‘œœ/!(*!3...
- -- Www.frases.com. ",
-
-"¿Por qué uso drogas? Tengo una 286...
- -- Www.frases.com. ",
-
-"El computador nació para resolver problemas que antes no existían.
- -- Www.frases.com. ",
-
-"Amar es... borrar el Windows del disco de ella.
- -- Www.frases.com. ",
-
-"HTML: Hoy Tá Más Lento.
- -- Www.frases.com. ",
-
-"WWW: Wait, Wait, Wait...
- -- Www.frases.com. ",
-
-"Nueva tecnología de periféricos: Plug-and-Crack!
- -- Www.frases.com. ",
-
-"¿Sabe por qué Intel no llamó 586 al Pentium? Porque ellos sumaron 486+100 y les dió 585,99999976542
- -- Www.frases.com. ",
-
-"¿De dónde venimos? ¿Para dónde vamos? - ¿La respuesta, estará en Internet?
- -- Www.frases.com. ",
-
-"A mi me gustaría criar homepages, pero no sé que comen.
- -- Www.frases.com. ",
-
-"Windows 95 es realmente un sistema multitarea. Es el único que consigue formatear un diskette y colgar el micro al mismo tiempo.
- -- Www.frases.com. ",
-
-"Windows 95: La gracia para quien lo vé, la desgracia de quien lo usa.
- -- Www.frases.com. ",
-
-"yO connsigg diggtr 400 caartrerrees prr minnuut
- -- Www.frases.com. ",
-
-"Scan report: Windows found. Remove it? (Y/Y)
- -- Www.frases.com. ",
-
-"Si Bill Gates es un dios, Windows debe ser una plaga divina.
- -- Www.frases.com. ",
-
-"BBS e Internet: Métodos infalibles para duplicar su cuenta telefónica.
- -- Www.frases.com. ",
-
-"No se te ocurra usar el teléfono para llamar a los bomberos. Estoy en lo mejor de un download!!!
- -- Www.frases.com. ",
-
-"Si Internet se está tornando una enfermedad, mi destino ya esta trazado...
- -- Www.frases.com. ",
-
-"Compre un MODEM, navegue en Internet: gane amigos y pierda a su mujer.
- -- Www.frases.com. ",
-
-"Si Jesús salva, Norton hace Backup.
- -- Www.frases.com. ",
-
-"Computador que es un carro, siempre tiene un burro adelante.
- -- Www.frases.com. ",
-
-"Error: Preservativo agujereado. (A)bortar (I)gnorar (C)asar?
- -- Www.frases.com. ",
-
-"Un gay se sienta ante una PC y escribe: ¡Oh máquina maravillosa ¿por qué no me hablas? Y la PC responde: Yo no hablo, COMPUTO!
- -- Www.frases.com. ",
-
-"UNDELETE *.* /P/O/R/F/A/V/O/R
- -- Www.frases.com. ",
-
-"RAM: Raramente Adecuada Memoria.
- -- Www.frases.com. ",
-
-"Winchester: Chester for Windows???
- -- Www.frases.com. ",
-
-"La más nueva tecnología de transferencia de datos entre computadores es DPA / DPA (Diskette Para Allá , Diskette Para Acá).
- -- Www.frases.com. ",
-
-"Novia embarazada: (A)borta (R)econoce (H)uye?
- -- Www.frases.com. ",
-
-"Deltree Windows, THE REAL DOUBLESPACE!!!!
- -- Www.frases.com. ",
-
-"Chernobil usaba Windows 95 para monitorear sus reactores.
- -- Www.frases.com. ",
-
-"Papá, ¿qué significa formatting drive C?
- -- Www.frases.com. ",
-
-"El Universo por nosotros conocido es apenas una versión beta.
- -- Www.frases.com. ",
-
-"Windows 95: Ahora para Mega Drive y Nintendo!
- -- Www.frases.com. ",
-
-"Como transformar un 486 DX4 en XT: digite win
- -- Www.frases.com. ",
-
-"Programador huérfano busca placa-madre.
- -- Www.frases.com. ",
-
-"Teclado no instalado! Presione para continuar.
- -- Www.frases.com. ",
-
-"Mouse no encontrado. ¿Usted tiene gato? (S/N)
- -- Www.frases.com. ",
-
-"Windows 95. 95 veces tendrá que re-instalarlo.
- -- Www.frases.com. ",
-
-"Si su Windows no le dá problemas. ¡Reclame a Microsoft!
- -- Www.frases.com. ",
-
-"Error: Sector not found. ¿Busco atrás del sofá? (S/N)
- -- Www.frases.com. ",
-
-"MACINTOSH: Machine Always Crashes; If Not, Then OS Hangs.
- -- Www.frases.com. ",
-
-"Error al accesar la FAT. ¿Intento accesar a tu hermana? (S/N)
- -- Www.frases.com. ",
-
-"Los gatos de Intel tienen 6,99995634563 vidas.
- -- Www.frases.com. ",
-
-"Aquel que nunca perdió un archivo, que tire el primer diskette.
- -- Www.frases.com. ",
-
-"Chip, imposible comer uno, es horrible!
- -- Www.frases.com. ",
-
-"Multitarea: Destrozar muchas cosas al mismo tiempo.
- -- Www.frases.com. ",
-
-"Bill Gates, 1981: 640K son suficientes para cualquiera.
- -- Www.frases.com. ",
-
-"No confunda MODEM con MODESS... el slot es diferente.
- -- Www.frases.com. ",
-
-"Chequeando virus... Todos los virus funcionan perfectamente.
- -- Www.frases.com. ",
-
-"Donald usa teclado. Mickey, Mouse.
- -- Www.frases.com. ",
-
-"Errar es Humano. Redondear es Pentium.
- -- Www.frases.com. ",
-
-"Mi HD tiene 100K de bad-sector y 130M de bad-windows.
- -- Www.frases.com. ",
-
-"Papá ¿porqué el imán no se pega en tus diskettes?
- -- Www.frases.com. ",
-
-"Ya que la primera impresión es lo que vale, entonces use una impresora LASER.
- -- Www.frases.com. ",
-
-"SeR²qu®lehace mAlelcaféalte‘lado?
- -- Www.frases.com. ",
-
-"qUIEN mE sACO lA tECLA cAPSLOCK/
- -- Www.frases.com. ",
-
-"Técnico por teléfono: Inserte el disco 3. Usuario: No cabe, ya metí dos, no entran más.
- -- Www.frases.com. ",
-
-"¡Ah! Aquellos DLLs estaban ocupando mucho espacio.
- -- Www.frases.com. ",
-
-"La mayoría de los virus son transmitidos por la orina del MOUSE.
- -- Www.frases.com. ",
-
-"Archivo no encontrado... ¿Falsifico? (S/N)
- -- Www.frases.com. ",
-
-"Email de Esteban Tuero: ultimo.lugar@grid.f1.com
- -- Www.frases.com. ",
-
-"Preserve el planeta: use monitores CGA.
- -- Www.frases.com. ",
-
-"Press any key to continue or other key to quit.
- -- Www.frases.com. ",
-
-"¿Quién es ese General Failure? ¿Porque se mete con mi disco rígido?
- -- Www.frases.com. ",
-
-"Chips de computadora, disponibles en dos sabores: batata y silicio.
- -- Www.frases.com. ",
-
-"Backup no encontrado. (J)a! J(a)! Ja(!).
- -- Www.frases.com. ",
-
-"Cuanto más inútil el programa, mejor el manual.
- -- Www.frases.com. ",
-
-"Programa de computador: Extraña forma de vida que tiene la capacidad de transformar comandos en mensajes de error.
- -- Www.frases.com. ",
-
-"OUT OF MEMORY. Please use MEMOROL x 10Mg.
- -- Www.frases.com. ",
-
-"Cálmese. Son sólo 0s y 1s.
- -- Www.frases.com. ",
-
-"Muestrame tus bookmarks, y te diré quien eres.
- -- Www.frases.com. ",
-
-"System Error: Press F13 to continue.
- -- Www.frases.com. ",
-
-"Yo gusto de Windows 95, es él que no gusta de mí.
- -- Www.frases.com. ",
-
-"En la película Independence Day, no fue un virus lo que los americanos colocaron en el computador de la Nave Madre. ¡Instalaron Windows 95!
- -- Www.frases.com. ",
-
-"/=*=\ ¡Cuidado! Si usted tuviese una TK-85 eso sería una nave enemiga.
- -- Www.frases.com. ",
-
-"La Navidad de las personas viciadas por la computadora es diferente: El 25 de diciembre, Papá Noel baja por el MODEM y desde el puerto serie dice: ¡Feliz Navidad, ROM, ROM, ROM!
- -- Www.frases.com. ",
-
-"Usuario: ¿Usuario?, ¿qué usuario???? El que te conectó atrás del armario.
- -- Www.frases.com. ",
-
-"Bienaventurados los pesimistas, porque ellos harán backups.
- -- Www.frases.com. ",
-
-"Existen dos tipos de personas en el mundo de la informática: Las que ya perdieron su HD y las que lo perderán algún dia.
- -- Www.frases.com. ",
-
-"Internet es el florecimiento de los sitios eróticos familiares.
- -- Gerard Van der Leun. Jefe de redacción de la revista Penthouse. ",
-
-"Toda la industria de valores se mudará a la Red.
- -- Louis Gerstner. Gerente General de IBM. ",
-
-"La computadora converge con la televisión como lo hizo el automóvil con el caballo.
- -- George Gilder. ",
-
-"Los nombres de dominio se han convertido en commodities.
- -- Jon Postel. Presidente de IANA. ",
-
-"La idea de que las computadoras deberían hablar un lenguaje unificado fue robada de los tiempos en que los cavernícolas se comunicaban a través de sus pinturas rupestres.
- -- Scott McNeally. Sun Microsystems. ",
-
-"Creo que para el año 2000, las network computers (NCs) superarán en ventas a las computadoras personales (PCs).
- -- Larry Ellison. Gerente General de Oracle. ",
-
-"Cuando percibí que todos finalmente tendrían su propio home page, tuve la inspiración de regalar home pages y organizarlas en categorías.
- -- David Bohnett. Presidente de Geocities. (Idolo). ",
-
-"Creo que hay un mercado mundial para alrededor de cinco computadoras.
- -- Tomas J. Watson. Fundador de IBM. ",
-
-"No hay ninguna razón para que un individuo tenga una computadora en su casa.
- -- Kennet Olsen. Fundador de Digital Equipment Corporation. ",
-
-"Los ordenadores son inútiles. Sólo pueden darte respuestas.
- -- Pablo Picasso. (1881-1973) Pintor español. ",
-
-"El éxito de un sistema de computación depende en gran medida de los controles que se le efectuan.
- -- Ley de la programación de ordenadores. ",
-
-"No se fíe de los ordenadores, pero menos aun de los seres humanos.
- -- Primera Ley de fiabilidad de Gilb. "
-
- }
-}
-
diff --git a/icu4c/source/samples/ufortune/resources/fortune_resources.mak b/icu4c/source/samples/ufortune/resources/fortune_resources.mak
deleted file mode 100644
index 1643222ca..000000000
--- a/icu4c/source/samples/ufortune/resources/fortune_resources.mak
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2001-2009 IBM, Inc. and others
-#
-# fortune_resources.mak
-#
-# Windows nmake makefile for compiling and packaging the resources
-# for the ICU sample program "ufortune".
-#
-# This makefile is normally invoked by the pre-link step in the
-# MSVC project file for ufortune
-
-#
-# List of resource files to be built.
-# When adding a resource source (.txt) file for a new locale, the corresponding
-# .res file must be added to this list, AND to the file res-file-list.txt
-#
-RESFILES= root.res es.res
-
-#
-# ICUDIR the location of ICU, used to locate the tools for
-# compiling and packaging resources.
-#
-ICUDIR=..\..\..\..
-
-#
-# The directory that contains the tools.
-#
-!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
-BIN=bin64
-!ELSE
-BIN=bin
-!ENDIF
-
-#
-# File name extensions for inference rule matching.
-# clear out the built-in ones (for .c and the like), and add
-# the definition for .txt to .res.
-#
-.SUFFIXES : .txt
-
-#
-# Inference rule, for compiling a .txt file into a .res file.
-# -t fools make into thinking there are files such as es.res, etc
-#
-.txt.res:
- $(ICUDIR)\$(BIN)\genrb -d . $*.txt
-
-#
-# all - nmake starts here by default
-#
-all: fortune_resources.dll
-
-fortune_resources.dll: $(RESFILES)
- $(ICUDIR)\$(BIN)\pkgdata --name fortune_resources -v --mode dll -d . res-file-list.txt
-
diff --git a/icu4c/source/samples/ufortune/resources/res-file-list.txt b/icu4c/source/samples/ufortune/resources/res-file-list.txt
deleted file mode 100644
index aa183e9df..000000000
--- a/icu4c/source/samples/ufortune/resources/res-file-list.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-root.res
-es.res
diff --git a/icu4c/source/samples/ufortune/resources/root.txt b/icu4c/source/samples/ufortune/resources/root.txt
deleted file mode 100644
index fc95f38f9..000000000
--- a/icu4c/source/samples/ufortune/resources/root.txt
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-//
-// Copyright (C) 2001-2003, International Business Machines
-// Corporation and others. All Rights Reserved.
-//
-// root.txt
-//
-// root resource file for ufortune.
-// This data will be used as a fall-back if no other resource bundle
-// matches the requested locale.
-//
-
-// ufortune has three resources
-// usage - the usage string to display if there's a command line error
-// or in response to -? or --help.
-// optionMessage - the error text to display in response to an unrecognized
-// option on the command line.
-// fortunes - An array of strings, the fortune messages.
-//
-
-root {
-
- usage {"usage: ufortune [-v] [-l locale]"}
- optionMessage {"unrecognized command line option:"}
-
-
-//
-// These fortune messages are from BSD fortune data files.
-
- fortunes {
-
-
-"186,282 miles per second:
-
-It isn't just a good idea, it's the law!",
-
-"2180, U.S. History question:
- What 20th Century U.S. President was almost impeached and what
-office did he later hold?",
-
-"$3,000,000",
-
-"355/113 -- Not the famous irrational number PI, but an incredible
-simulation!\"",
-
-"3 syncs represent the trinity - init, the child and the eternal zombie
-process. In doing 3, you're paying homage to each and I think such
-traditions are important in this shallow, mercurial business we find
-ourselves in.
- -- Jordan K. Hubbard",
-
-"43rd Law of Computing:
- Anything that can go wr
-fortune: Segmentation violation -- Core dumped",
-
-"7:30, Channel 5: The Bionic Dog (Action/Adventure)
- The Bionic Dog drinks too much and kicks over the National
- Redwood Forest.",
-
-"7:30, Channel 5: The Bionic Dog (Action/Adventure)
- The Bionic Dog gets a hormonal short-circuit and violates the
- Mann Act with an interstate Greyhound bus.",
-
-"99 blocks of crud on the disk,
-99 blocks of crud!
-You patch a bug, and dump it again:
-100 blocks of crud on the disk!
-
-100 blocks of crud on the disk,
-100 blocks of crud!
-You patch a bug, and dump it again:
-101 blocks of crud on the disk! ...",
-
-"A \"No\" uttered from deepest conviction is better and greater than a
-\"Yes\" merely uttered to please, or what is worse, to avoid trouble.
- -- Mahatma Ghandi",
-
-"A [golf] ball hitting a tree shall be deemed not to have hit the tree.
-Hitting a tree is simply bad luck and has no place in a scientific
-game. The player should estimate the distance the ball would have
-traveled if it had not hit the tree and play the ball from there,
-preferably atop a nice firm tuft of grass.
- -- Donald A. Metz",
-
-"A [golf] ball sliced or hooked into the rough shall be lifted and
-placed in the fairway at a point equal to the distance it carried or
-rolled into the rough. Such veering right or left frequently results
-from friction between the face of the club and the cover of the ball
-and the player should not be penalized for the erratic behavior of the
-ball resulting from such uncontrollable physical
-phenomena.
- -- Donald A. Metz",
-
-"A baby is an alimentary canal with a loud voice at one end and no
-responsibility at the other.",
-
-"A baby is God's opinion that the world should go on.
- -- Carl Sandburg",
-
-"A bachelor is a selfish, undeserving guy who has cheated some woman out
-of a divorce.
- -- Don Quinn",
-
-"A banker is a fellow who lends you his umbrella when the sun is shining
-and wants it back the minute it begins to rain.
- -- Mark Twain",
-
-"A billion here, a couple of billion there -- first thing you know it
-adds up to be real money.
- -- Senator Everett McKinley Dirksen",
-
-"A bird in the bush usually has a friend in there with him.",
-
-"A bird in the hand is worth what it will bring.",
-
-"A bird in the hand makes it awfully hard to blow your nose.",
-
-"... A booming voice says, \"Wrong, cretin!\", and you notice that you
-have turned into a pile of dust.",
-
-"A bore is someone who persists in holding his own views after we have
-enlightened him with ours.",
-
-"A budget is just a method of worrying before you spend money, as well
-as afterward.",
-
-"A candidate is a person who gets money from the rich and votes from the
-poor to protect them from each other.",
-
-"A celebrity is a person who is known for his well-knownness.",
-
-"A child can go only so far in life without potty training. It is not
-mere coincidence that six of the last seven presidents were potty
-trained, not to mention nearly half of the nation's state legislators.
- -- Dave Barry",
-
-"A child of five could understand this! Fetch me a child of five.",
-
-"A chubby man with a white beard and a red suit will approach you soon.
-Avoid him. He's a Commie.",
-
-"A citizen of America will cross the ocean to fight for democracy, but
-won't cross the street to vote in a national election.
- -- Bill Vaughan",
-
-"A city is a large community where people are lonesome together
- -- Herbert Prochnow",
-
-"A classic is something that everybody wants to have read and nobody
-wants to read.
- -- Mark Twain",
-
-"A closed mouth gathers no foot.",
-
-"A computer, to print out a fact,
-Will divide, multiply, and subtract.
- But this output can be
- No more than debris,
-If the input was short of exact.
- -- Gigo",
-
-"A conclusion is simply the place where someone got tired of thinking.",
-
-"A CONS is an object which cares.
- -- Bernie Greenberg.",
-
-"A consultant is a person who borrows your watch, tells you what time it
-is, pockets the watch, and sends you a bill for it.",
-
-"A continuing flow of paper is sufficient to continue the flow of paper.
- -- Dyer",
-
-"A copy of the universe is not what is required of art; one of the
-damned things is ample.
- -- Rebecca West",
-
-"A countryman between two lawyers is like a fish between two cats.
- -- Ben Franklin",
-
-"A crusader's wife slipped from the garrison
-And had an affair with a Saracen.
- She was not oversexed,
- Or jealous or vexed,
-She just wanted to make a comparison.",
-
-"A cynic is a person searching for an honest man, with a stolen
-lantern.
- -- Edgar A. Shoaff",
-
-"A day for firm decisions!!!!! Or is it?",
-
-"A day without sunshine is like night.",
-
-"A diplomat is a man who can convince his wife she'd look stout in a fur
-coat.",
-
-"A diplomat is someone who can tell you to go to hell in such a way that
-you will look forward to the trip.",
-
-" A disciple of another sect once came to Drescher as he was
-eating his morning meal. \"I would like to give you this personality
-test\", said the outsider, \"because I want you to be happy.\"
- Drescher took the paper that was offered him and put it into
-the toaster -- \"I wish the toaster to be happy too\".",
-
-"A diva who specializes in risque arias is an off-coloratura soprano ...",
-
-" A doctor, an architect, and a computer scientist were arguing
-about whose profession was the oldest. In the course of their
-arguments, they got all the way back to the Garden of Eden, whereupon
-the doctor said, \"The medical profession is clearly the oldest, because
-Eve was made from Adam's rib, as the story goes, and that was a simply
-incredible surgical feat.\" "
- }
-}
diff --git a/icu4c/source/samples/ufortune/ufortune.c b/icu4c/source/samples/ufortune/ufortune.c
deleted file mode 100644
index edc4c3372..000000000
--- a/icu4c/source/samples/ufortune/ufortune.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-**************************************************************************
-**************************************************************************
-*
-* Copyright (C) 2001-2006, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-**************************************************************************
-*
-* ufortune - An ICU resources sample program
-*
-* Demonstrates
-* Defining resources for use by an application
-* Compiling and packaging them into a dll
-* Referencing the resource-containing dll from application code
-* Loading resource data using ICU's API
-*
-* Created Nov. 7, 2001 by Andy Heninger
-*
-* ufortune is a variant of the Unix "fortune" command, with
-* ICU resources that contain the fortune-cookie sayings.
-* Using resources allows fortunes in different languages to
-* be selected based on locale.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include "unicode/udata.h" /* ICU API for data handling. */
-#include "unicode/ures.h" /* ICU API for resource loading */
-#include "unicode/ustdio.h" /* ICU API for reading & writing Unicode data */
- /* to files, possibly including character */
- /* set conversions. */
-#include "unicode/ustring.h"
-
-#ifndef UFORTUNE_NOSETAPPDATA
-/*
- * Resource Data Reference. The data is packaged as a dll (or .so or
- * whatever, depending on the platform) that exports a data
- * symbol. The application (that's us) references that symbol,
- * here, and will pass the data address to ICU, which will then
- * be able to fetch resources from the data.
- */
-extern const void U_IMPORT *fortune_resources_dat;
-#endif
-
-void u_write(const UChar *what, int len);
-
-
-/*
- * main() This one function is all of the application code.
- */
-int main(int argc, char **argv)
-{
- UBool displayUsage = false; /* Set true if command line err or help */
- /* option was requested. */
- UBool verbose = false; /* Set true if -v command line option. */
- char *optionError = NULL; /* If command line contains an unrecognized */
- /* option, this will point to it. */
- char *locale=NULL; /* Locale name. Null for system default, */
- /* otherwise set from command line. */
- const char * programName = argv[0]; /* Program invocation name. */
-
-
- UFILE *u_stdout; /* Unicode stdout file. */
- UErrorCode err = U_ZERO_ERROR; /* Error return, used for most ICU */
- /* functions. */
-
- UResourceBundle *myResources; /* ICU Resource "handles" */
- UResourceBundle *fortunes_r;
-
- int32_t numFortunes; /* Number of fortune strings available. */
- int i;
-
- const UChar *resString; /* Points to strings fetched from Resources. */
- int32_t len;
-
-
- /* Process command line options.
- * -l locale specify a locale
- * -v verbose mode. Display extra messages.
- * -? or --help display a usage line
- */
- for (i=1; i<argc; i++) {
- if (strcmp(argv[i], "-l") ==0) {
- if (++i < argc) {
- locale = argv[i];
- }
- continue;
- }
- if (strcmp(argv[i], "-v") == 0) {
- verbose = true;
- continue;}
- if (strcmp(argv[i], "-?") == 0 ||
- strcmp(argv[i], "--help") == 0) {
- displayUsage = true;
- continue;}
- optionError = argv[i];
- displayUsage = true;
- break;
- }
-
- /* ICU's icuio package provides a convenient way to write Unicode
- * data to stdout. The string data that we get from resources
- * will be UChar * strings, which icuio can handle nicely.
- */
- u_stdout = u_finit(stdout, NULL /*locale*/, NULL /*codepage */);
- if (verbose) {
- u_fprintf(u_stdout, "%s: checking output via icuio.\n", programName);
- }
-
-#ifndef UFORTUNE_NOSETAPPDATA
- /* Tell ICU where our resource data is located in memory.
- * The data lives in the Fortune_Resources dll, and we just
- * pass the address of an exported symbol from that library
- * to ICU.
- */
- udata_setAppData("fortune_resources", &fortune_resources_dat, &err);
- if (U_FAILURE(err)) {
- fprintf(stderr, "%s: udata_setAppData failed with error \"%s\"\n", programName, u_errorName(err));
- exit(-1);
- }
-#endif
-
- /* Open our resources.
- */
- myResources = ures_open("fortune_resources", locale, &err);
- if (U_FAILURE(err)) {
- fprintf(stderr, "%s: ures_open failed with error \"%s\"\n", programName, u_errorName(err));
- exit(-1);
- }
- if (verbose) {
- u_fprintf(u_stdout, "status from ures_open(\"fortune_resources\", %s) is %s\n",
- locale? locale: " ", u_errorName(err));
- }
-
- /*
- * Display any command line option usage errors and/or the
- * usage help message. These messages come from our resource bundle.
- */
- if (optionError != NULL) {
- const UChar *msg = ures_getStringByKey(myResources, "optionMessage", &len, &err);
- if (U_FAILURE(err)) {
- fprintf(stderr, "%s: ures_getStringByKey(\"optionMessage\") failed, %s\n",
- programName, u_errorName(err));
- exit(-1);
- }
- u_file_write(msg, len, u_stdout); /* msg is UChar *, from resource */
- u_fprintf(u_stdout, " %s\n", optionError); /* optionError is char *, from argv */
- }
-
- if (displayUsage) {
- const UChar *usage;
- int returnValue=0;
-
- usage = ures_getStringByKey(myResources, "usage", &len, &err);
- if (U_FAILURE(err)) {
- fprintf(stderr, "%s: ures_getStringByKey(\"usage\") failed, %s\n", programName, u_errorName(err));
- exit(-1);
- }
- u_file_write(usage, len, u_stdout);
- if (optionError != NULL) {returnValue = -1;}
- return returnValue;
- }
-
- /*
- * Open the "fortunes" resources from within the already open resources
- */
- fortunes_r = ures_getByKey(myResources, "fortunes", NULL, &err);
- if (U_FAILURE(err)) {
- fprintf(stderr, "%s: ures_getByKey(\"fortunes\") failed, %s\n", programName, u_errorName(err));
- exit(-1);
- }
-
-
- /*
- * Pick up and display a random fortune
- *
- */
- numFortunes = ures_countArrayItems(myResources, "fortunes", &err);
- if (U_FAILURE(err)) {
- fprintf(stderr, "%s: ures_countArrayItems(\"fortunes\") failed, %s\n", programName, u_errorName(err));
- exit(-1);
- }
- if (numFortunes <= 0) {
- fprintf(stderr, "%s: no fortunes found.\n", programName);
- exit(-1);
- }
-
- i = time(NULL) % numFortunes; /* Use time to pick a somewhat-random fortune. */
- resString = ures_getStringByIndex(fortunes_r, i, &len, &err);
- if (U_FAILURE(err)) {
- fprintf(stderr, "%s: ures_getStringByIndex(%d) failed, %s\n", programName, i, u_errorName(err));
- exit(-1);
- }
-
- u_file_write(resString, len, u_stdout); /* Write out the message */
- u_fputc(0x0a, u_stdout); /* and a trailing newline */
-
- return 0;
-}
-
diff --git a/icu4c/source/samples/ufortune/ufortune.sln b/icu4c/source/samples/ufortune/ufortune.sln
deleted file mode 100644
index c071818c4..000000000
--- a/icu4c/source/samples/ufortune/ufortune.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ufortune", "ufortune.vcxproj", "{25F534DF-93C9-4853-A88E-DB7D8CF74042}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|Win32.ActiveCfg = Debug|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|Win32.Build.0 = Debug|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.ActiveCfg = Debug|x64
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.Build.0 = Debug|x64
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|Win32.ActiveCfg = Release|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|Win32.Build.0 = Release|Win32
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.ActiveCfg = Release|x64
- {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/ufortune/ufortune.vcxproj b/icu4c/source/samples/ufortune/ufortune.vcxproj
deleted file mode 100644
index cdb926b4a..000000000
--- a/icu4c/source/samples/ufortune/ufortune.vcxproj
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{25F534DF-93C9-4853-A88E-DB7D8CF74042}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir>.\$(Platform)\$(Configuration)\</OutDir>
- <IntDir>.\$(Platform)\$(Configuration)\</IntDir>
- <!-- The ICU projects use "Win32" to mean "x86", so we need to special case it. -->
- <OutDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)\</IntDir>
- <!-- Disable Incremental Linking for Release builds as it prevents Link-time Code Generation -->
- <LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
- <LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
- </PropertyGroup>
- <!-- Options that are common to *all* project configurations -->
- <ItemDefinitionGroup>
- <Midl>
- <TypeLibraryName>$(OutDir)\ufortune.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <WarningLevel>Level3</WarningLevel>
- <CompileAs>Default</CompileAs>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <PrecompiledHeaderOutputFile>$(OutDir)/ufortune.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
- <ObjectFileName>$(OutDir)/</ObjectFileName>
- <ProgramDataBaseFileName>$(OutDir)/ufortune.pdb</ProgramDataBaseFileName>
- </ClCompile>
- <ResourceCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ResourceCompile>
- <Link>
- <AdditionalLibraryDirectories>..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <!-- Options that are common to all 'Debug' project configurations -->
- <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
- <ClCompile>
- <BrowseInformation>true</BrowseInformation>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <!-- Options that are common to all 'Release' project configurations -->
- <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="ufortune.c" />
- </ItemGroup>
- <ItemGroup>
- <None Include="resources\es.txt" />
- <None Include="resources\res-file-list.txt" />
- <None Include="resources\root.txt" />
- <CustomBuild Include="resources\fortune_resources.mak">
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cd resources
-nmake -f fortune_resources.mak CFG=x86\Debug
-copy Fortune_Resources.DLL "$(TargetDir)"
-</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cd resources
-nmake -f fortune_resources.mak CFG=x86\Release
-copy Fortune_Resources.DLL "$(TargetDir)"
-</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/ufortune/ufortune.vcxproj.filters b/icu4c/source/samples/ufortune/ufortune.vcxproj.filters
deleted file mode 100644
index d1649e9a1..000000000
--- a/icu4c/source/samples/ufortune/ufortune.vcxproj.filters
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{6ab67213-fd7b-45cd-b44f-8deffb1990ac}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{b342f76f-065b-4c8c-9abc-4e524e21ab35}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{492bec7f-3152-419a-afa7-8735518021f6}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Makefile">
- <UniqueIdentifier>{aa083dae-ee83-4d36-bb4f-8a592bf805d1}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="ufortune.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <None Include="resources\es.txt">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="resources\res-file-list.txt">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="resources\root.txt">
- <Filter>Resource Files</Filter>
- </None>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="resources\fortune_resources.mak">
- <Filter>Makefile</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/ugrep/ugrep.cpp b/icu4c/source/samples/ugrep/ugrep.cpp
index ede3baec9..3b1bca4ba 100644
--- a/icu4c/source/samples/ugrep/ugrep.cpp
+++ b/icu4c/source/samples/ugrep/ugrep.cpp
@@ -52,11 +52,10 @@ UBool displayLineNum = false;
const char *fileName;
int fileLen; // Length, in UTF-16 Code Units.
-char16_t *ucharBuf = 0; // Buffer, holds converted file. (Simple minded program, always reads
- // the whole file at once.
-
-char *charBuf = 0; // Buffer, for original, unconverted file data.
+char16_t *ucharBuf = nullptr; // Buffer, holds converted file. (Simple minded program, always reads
+ // the whole file at once.
+char *charBuf = nullptr; // Buffer, for original, unconverted file data.
//
// Info regarding the line currently being processed
@@ -69,7 +68,7 @@ int lineNum;
// Converter, used on output to convert Unicode data back to char *
// so that it will display in non-Unicode terminal windows.
//
-UConverter *outConverter = 0;
+UConverter *outConverter = nullptr;
//
// Function forward declarations
@@ -278,7 +277,7 @@ void readFile(const char *name) {
// Open the file and determine its size.
//
FILE *file = fopen(name, "rb");
- if (file == 0 ) {
+ if (file == nullptr) {
fprintf(stderr, "ugrep: Could not open file \"%s\"\n", fileName);
return;
}
@@ -425,7 +424,7 @@ void printMatch() {
UErrorCode status = U_ZERO_ERROR;
// If we haven't already created a converter for output, do it now.
- if (outConverter == 0) {
+ if (outConverter == nullptr) {
outConverter = ucnv_open(nullptr, &status);
if (U_FAILURE(status)) {
fprintf(stderr, "ugrep: Error opening default converter: \"%s\"\n",
diff --git a/icu4c/source/samples/uresb/Makefile b/icu4c/source/samples/uresb/Makefile
deleted file mode 100644
index c5ab9e82b..000000000
--- a/icu4c/source/samples/uresb/Makefile
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2000-2005 IBM, Inc. and others
-# conversion sample code
-# Usage:
-# - configure, build, install ICU
-# - ensure that 'icu-config' is in the PATH (PREFIX/bin/icu-config)
-# - if ICU is not built relative to this directory,
-# set the variable ICU_PATH to the 'icu' directory
-# (i.e. /foo/icu )
-# - do 'make' in this directory
-
-include ../defs.mk
-
-ICU_DEFAULT_PATH=../../..
-
-ifeq ($(strip $(ICU_PATH)),)
- ICU_PATH=$(ICU_DEFAULT_PATH)
-endif
-
-GENRBOPT = -s. -d.
-
-# Name of your target
-TARGET=uresb
-PKG=$(TARGET)
-RES_SRC=root.txt en.txt sr.txt
-RESOURCES=$(RES_SRC:%.txt=%.res)
-
-# All object files (C or C++)
-OBJECTS=uresb.o
-
-CLEANFILES=*~ $(TARGET).out
-
-all: $(RESOURCES) $(TARGET)
-
-uresb.o: $(ICU_PATH)/source/tools/toolutil/uoptions.h
-
-$(ICU_PATH)/source/tools/toolutil/uoptions.h:
- @echo "Please read the directions at the top of this file (Makefile)"
- @echo "Can't open $@ - check ICU_PATH"
- @false
-
-CPPFLAGS += -I$(ICU_PATH)/source/tools/toolutil
-LDFLAGS += -L$(ICU_PATH)/source/tools/toolutil $(shell icu-config --ldflags-toolutil --ldflags-icuio)
-
-.PHONY: all clean distclean check report
-
-distclean clean:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
- -$(RMV) $(OBJECTS) $(TARGET) $(RESOURCES)
-
-
-## resources
-%.res: %.txt
- @echo "generating $@"
- $(GENRB) $(GENRBOPT) $^
-
-## Special for a special codepage
-sr.res : sr.txt
- @echo "generating $@"
- $(GENRB) $(GENRBOPT) -e cp1251 $?
-
-# Can change this to LINK.c if it is a C only program
-# Can add more libraries here.
-$(TARGET): $(OBJECTS)
- $(CC) -o $(TARGET) $(LDFLAGS)
-
-# Make check: simply runs the sample, logged to a file
-check: $(TARGET) $(RESOURCES)
- $(INVOKE) ./$(TARGET) en | tee $(TARGET).out
-
-# Make report: creates a 'report file' with both source and sample run
-report: $(TARGET).report
-
-$(TARGET).report: check $(TARGET).cpp
- more $(TARGET).cpp $(TARGET).out > $@
-
-
-
diff --git a/icu4c/source/samples/uresb/en.txt b/icu4c/source/samples/uresb/en.txt
deleted file mode 100644
index edecd8186..000000000
--- a/icu4c/source/samples/uresb/en.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-//
-// Copyright (C) 2000-2003, International Business Machines
-// Corporation and others. All Rights Reserved.
-
-en {
- errorcodes {
- "No error",
- "Illegal argument passed",
- "Missing resource",
- "Format is invalid",
- "File access error",
- "Internal program error",
- "Message parse error",
- "Memory allocation error",
- "Index out of bounds error",
- "Parse error",
- "Invalid char found",
- "Truncated char found",
- "Illegal char found",
- "Invalid table format",
- "Invalid table file",
- "Buffer overflow error",
- "Unsupported error",
- "Resource type mismatch",
- "Illegal escape sequence",
- "Unsupported escape sequence"
- }
- helpTopics {
- udata { "This is udata help topic" }
- resourcebundles { "This is resource bundle help topic" }
- collation { "This is collation help topic" }
- breakit { "This is break iterator help topic" }
- translit { "This is transliteration help topic" }
- unicode { "This is unicode help topic" }
- format { "This is format help topic" }
- }
-
- helpKeywords {
- udata { "udata" }
- resourcebundles { "resources" }
- collation { "collation" }
- breakit { "breakit" }
- translit { "transliteration" }
- unicode { "unicode" }
- format { "format" }
- }
-}
diff --git a/icu4c/source/samples/uresb/readme.txt b/icu4c/source/samples/uresb/readme.txt
deleted file mode 100644
index a33c36530..000000000
--- a/icu4c/source/samples/uresb/readme.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2001-2010 International Business Machines
-Corporation and others. All Rights Reserved.
-uresb: Resource Bundle
-
-This sample demonstrates
- Building a resource bundle
- Using ICU to print data from a resource bundle
-
-
-Files:
- uresb.c Main source file in C
- uresb.sln Windows MSVC workspace. Double-click this to get started.
- uresb.vcproj Windows MSVC project file
- resources.dsp Windows project file for resources
- resources.mak Windows makefile for resources
-
- root.txt Root resource bundle
- en.txt English translation
- sr.txt Serbian translation (cp1251)
-
-To Build uresb on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\uresb\uresb.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the uresb directory, e.g.
- cd c:\icu\source\samples\uresb\debug
- 4. Run it (with a locale name, ex. english)
- uresb en
- WARNING: The .txt files must be in the same directory as the executable, which is not the case by default on some systems.
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/uresb
- gmake ICU_PREFIX=<icu install directory) ICU_PATH=<icu source directory>
-
- To Run on Unixes
- cd <icu directory>/source/samples/uresb
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- uresb
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
diff --git a/icu4c/source/samples/uresb/resources.mak b/icu4c/source/samples/uresb/resources.mak
deleted file mode 100644
index df399b54d..000000000
--- a/icu4c/source/samples/uresb/resources.mak
+++ /dev/null
@@ -1,31 +0,0 @@
-## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html
-##
-## Copyright (c) 2001-2009 International Business Machines
-## Corporation and others. All Rights Reserved.
-PACKAGE_NAME = uresb
-TARGETS = en.res root.res sr.res
-
-!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
-GENRB = ..\..\..\bin64\genrb.exe
-!ELSE
-GENRB = ..\..\..\bin\genrb.exe
-!ENDIF
-
-GENRBOPT = -s . -d .
-
-all : $(TARGETS)
- @echo All targets are up to date
-
-clean :
- -erase $(TARGETS)
-
-en.res : en.txt
- $(GENRB) $(GENRBOPT) $?
-
-root.res : root.txt
- $(GENRB) $(GENRBOPT) $?
-
-sr.res : sr.txt
- $(GENRB) $(GENRBOPT) --encoding cp1251 $?
-
diff --git a/icu4c/source/samples/uresb/resources.vcxproj b/icu4c/source/samples/uresb/resources.vcxproj
deleted file mode 100644
index 4b98a1288..000000000
--- a/icu4c/source/samples/uresb/resources.vcxproj
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{69437707-2FEF-4E2C-8C3F-6E6B3D241366}</ProjectGuid>
- <Keyword>MakeFileProj</Keyword>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Makefile</ConfigurationType>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\resources_Win32_Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\resources_Win32_Debug\</IntDir>
- <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /f "resources.mak" CFG=x86\Debug</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /f "resources.mak" /a CFG=x86\Debug</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /f "resources.mak" clean CFG=x86\Debug</NMakeCleanCommandLine>
- <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">uresb_root.res</NMakeOutput>
- <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
- <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
- <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
- <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">nmake /f "resources.mak" CFG=x64\Debug</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">nmake /f "resources.mak" /a CFG=x64\Debug</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">nmake /f "resources.mak" clean CFG=x64\Debug</NMakeCleanCommandLine>
- <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">uresb_root.res</NMakeOutput>
- <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
- <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
- <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
- <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\resources_Win32_Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\resources_Win32_Release\</IntDir>
- <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">nmake /f "resources.mak" CFG=x86\Release</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">nmake /f "resources.mak" /a CFG=x86\Release</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">nmake /f "resources.mak" clean CFG=x86\Release</NMakeCleanCommandLine>
- <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">uresb_root.res</NMakeOutput>
- <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
- <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
- <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
- <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">nmake /f "resources.mak" CFG=x64\Release</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">nmake /f "resources.mak" /a CFG=x64\Release</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">nmake /f "resources.mak" clean CFG=x64\Release</NMakeCleanCommandLine>
- <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|x64'">uresb_root.res</NMakeOutput>
- <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
- <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
- <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
- <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
- </PropertyGroup>
- <ItemDefinitionGroup>
- </ItemDefinitionGroup>
- <ItemGroup>
- <None Include="en.txt" />
- <None Include="root.txt" />
- <None Include="sr.txt" />
- <None Include="resources.mak" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/uresb/resources.vcxproj.filters b/icu4c/source/samples/uresb/resources.vcxproj.filters
deleted file mode 100644
index 6df6733eb..000000000
--- a/icu4c/source/samples/uresb/resources.vcxproj.filters
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{6b52e0ef-641f-45e1-b497-f06105317781}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;txt</Extensions>
- </Filter>
- <Filter Include="Build Script">
- <UniqueIdentifier>{a4e32c14-ea1d-4778-b403-912d60e3ad79}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <None Include="en.txt">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="root.txt">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="sr.txt">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="resources.mak">
- <Filter>Build Script</Filter>
- </None>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/uresb/root.txt b/icu4c/source/samples/uresb/root.txt
deleted file mode 100644
index 9624d31c5..000000000
--- a/icu4c/source/samples/uresb/root.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-//
-// Copyright (c) 2001-2003 International Business Machines
-// Corporation and others. All Rights Reserved.
-root {
- errorcodes {
- "U_ZERO_ERROR",
- "U_ILLEGAL_ARGUMENT_ERROR",
- "U_MISSING_RESOURCE_ERROR",
- "U_INVALID_FORMAT_ERROR",
- "U_FILE_ACCESS_ERROR",
- "U_INTERNAL_PROGRAM_ERROR",
- "U_MESSAGE_PARSE_ERROR",
- "U_MEMORY_ALLOCATION_ERROR",
- "U_INDEX_OUTOFBOUNDS_ERROR",
- "U_PARSE_ERROR",
- "U_INVALID_CHAR_FOUND",
- "U_TRUNCATED_CHAR_FOUND",
- "U_ILLEGAL_CHAR_FOUND",
- "U_INVALID_TABLE_FORMAT",
- "U_INVALID_TABLE_FILE",
- "U_BUFFER_OVERFLOW_ERROR",
- "U_UNSUPPORTED_ERROR",
- "U_RESOURCE_TYPE_MISMATCH",
- "U_ILLEGAL_ESCAPE_SEQUENCE",
- "U_UNSUPPORTED_ESCAPE_SEQUENCE"
- }
- helpTopics {
- udata { "ROOT udata help topic" }
- resourcebundles { "ROOT resource bundle help topic" }
- collation { "ROOT collation help topic" }
- breakit { "ROOT break iterator help topic" }
- translit { "ROOT transliteration help topic" }
- unicode { "ROOT unicode help topic" }
- format { "ROOT format help topic" }
- }
-
- helpKeywords {
- udata { "udata" }
- resourcebundles { "resources" }
- collation { "collation" }
- breakit { "breakit" }
- translit { "transliteration" }
- unicode { "unicode" }
- format { "format" }
- }
-}
-
-
diff --git a/icu4c/source/samples/uresb/sr.txt b/icu4c/source/samples/uresb/sr.txt
deleted file mode 100644
index 922f50544..000000000
--- a/icu4c/source/samples/uresb/sr.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-//
-// Copyright (c) 2001-2003 International Business Machines
-// Corporation and others. All Rights Reserved.
-// Use --encoding cp1251 for genrb
-
-sr {
- errorcodes {
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "
- }
- helpTopics {
- udata { "This is udata help topic" }
- resourcebundles { "This is resource bundle help topic" }
- collation { "This is collation help topic" }
- breakit { "This is break iterator help topic" }
- translit { "This is transliteration help topic" }
- unicode { "This is unicode help topic" }
- format { "This is format help topic" }
- }
-
- helpKeywords {
- udata { "udata" }
- resourcebundles { "resources" }
- collation { "collation" }
- breakit { "breakit" }
- translit { "transliteration" }
- unicode { "unicode" }
- format { "format" }
- }
-}
diff --git a/icu4c/source/samples/uresb/uresb.c b/icu4c/source/samples/uresb/uresb.c
deleted file mode 100644
index dc859308a..000000000
--- a/icu4c/source/samples/uresb/uresb.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 1999-2007, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: uresb.c
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2000sep6
-* created by: Vladimir Weinstein
-*/
-
-/******************************************************************************
- * This program prints out resource bundles - example for
- * ICU workshop
- * TODO: make a complete i18n layout for this program.
- ******************************************************************************/
-
-#include "unicode/putil.h"
-#include "unicode/ures.h"
-#include "unicode/ustdio.h"
-#include "unicode/uloc.h"
-#include "unicode/ustring.h"
-#include "uoptions.h"
-#include "toolutil.h"
-
-#include <string.h>
-#include <stdlib.h>
-#ifdef WIN32
-#include <direct.h>
-#else
-#include <unistd.h>
-#endif
-
-#define URESB_DEFAULTTRUNC 40
-
-static char *currdir = NULL;
-/*--locale sr_YU and --encoding cp855
- * are interesting on Win32
- */
-
-static const char *locale = NULL;
-static const char *encoding = NULL;
-static const char *resPath = NULL;
-static const int32_t indentsize = 4;
-static UFILE *outerr = NULL;
-static int32_t truncsize = URESB_DEFAULTTRUNC;
-static UBool trunc = false;
-
-const UChar baderror[] = { 0x0042, 0x0041, 0x0044, 0x0000 };
-
-const UChar *getErrorName(UErrorCode errorNumber);
-void reportError(UErrorCode *status);
-static UChar *quotedString(const UChar *string);
-void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent, UErrorCode *status);
-void printIndent(UFILE *out, int32_t indent);
-void printHex(UFILE *out, const int8_t *what);
-
-static UOption options[]={
- UOPTION_HELP_H,
- UOPTION_HELP_QUESTION_MARK,
- { "locale", NULL, NULL, NULL, 'l', UOPT_REQUIRES_ARG, 0 },
- UOPTION_ENCODING,
- { "path", NULL, NULL, NULL, 'p', UOPT_OPTIONAL_ARG, 0 },
- { "truncate", NULL, NULL, NULL, 't', UOPT_OPTIONAL_ARG, 0 },
- UOPTION_VERBOSE
-};
-
-static UBool VERBOSE = false;
-
-extern int
-main(int argc, char* argv[]) {
-
- UResourceBundle *bundle = NULL;
- UErrorCode status = U_ZERO_ERROR;
- UFILE *out = NULL;
- int32_t i = 0;
- const char* arg;
- char resPathBuffer[1024];
-#ifdef WIN32
- currdir = _getcwd(NULL, 0);
-#else
- currdir = getcwd(NULL, 0);
-#endif
-
- argc=u_parseArgs(argc, argv, sizeof(options)/sizeof(options[0]), options);
-
- /* error handling, printing usage message */
- if(argc<0) {
- fprintf(stderr,
- "error in command line argument \"%s\"\n",
- argv[-argc]);
- }
- if(argc<2 || options[0].doesOccur || options[1].doesOccur) {
- fprintf(stderr,
- "usage: %s [-options] locale(s)\n",
- argv[0]);
- return argc<0 ? U_ILLEGAL_ARGUMENT_ERROR : U_ZERO_ERROR;
- }
-
- if(options[2].doesOccur) {
- locale = options[2].value;
- } else {
- locale = 0;
- }
-
- if(options[3].doesOccur) {
- encoding = options[3].value;
- } else {
- encoding = NULL;
- }
-
- if(options[4].doesOccur) {
- if(options[4].value != NULL) {
- resPath = options[4].value; /* we'll use users resources */
- } else {
- resPath = NULL; /* we'll use ICU system resources for dumping */
- }
- } else {
- strcpy(resPathBuffer, currdir);
- /*strcat(resPathBuffer, U_FILE_SEP_STRING);
- strcat(resPathBuffer, "uresb");*/
- resPath = resPathBuffer; /* we'll just dump uresb samples resources */
- }
-
- if(options[5].doesOccur) {
- trunc = true;
- if(options[5].value != NULL) {
- truncsize = atoi(options[5].value); /* user defined printable size */
- } else {
- truncsize = URESB_DEFAULTTRUNC; /* we'll use default omitting size */
- }
- } else {
- trunc = false;
- }
-
- if(options[6].doesOccur) {
- VERBOSE = true;
- }
-
- outerr = u_finit(stderr, locale, encoding);
- out = u_finit(stdout, locale, encoding);
-
- for(i = 1; i < argc; ++i) {
- status = U_ZERO_ERROR;
- arg = getLongPathname(argv[i]);
-
- u_fprintf(out, "uresb: processing file \"%s\" in path \"%s\"\n", arg, resPath);
- bundle = ures_open(resPath, arg, &status);
- if(U_SUCCESS(status)) {
- u_fprintf(out, "%s\n", arg);
- printOutBundle(out, bundle, 0, &status);
- } else {
- reportError(&status);
- }
-
- ures_close(bundle);
- }
-
-
-
- u_fclose(out);
- u_fclose(outerr);
- return 0;
-}
-
-void printIndent(UFILE *out, int32_t indent) {
- char inchar[256];
- int32_t i = 0;
- for(i = 0; i<indent; i++) {
- inchar[i] = ' ';
- }
- inchar[indent] = '\0';
- u_fprintf(out, "%s", inchar);
-}
-
-void printHex(UFILE *out, const int8_t *what) {
- u_fprintf(out, "%02X", (uint8_t)*what);
-}
-
-static UChar *quotedString(const UChar *string) {
- int len = u_strlen(string);
- int alen = len;
- const UChar *sp;
- UChar *newstr, *np;
-
- for (sp = string; *sp; ++sp) {
- switch (*sp) {
- case '\n':
- case 0x0022:
- ++alen;
- break;
- }
- }
-
- newstr = (UChar *) malloc((1 + alen) * sizeof(*newstr));
- for (sp = string, np = newstr; *sp; ++sp) {
- switch (*sp) {
- case '\n':
- *np++ = 0x005C;
- *np++ = 0x006E;
- break;
-
- case 0x0022:
- *np++ = 0x005C;
-
- default:
- *np++ = *sp;
- break;
- }
- }
- *np = 0;
-
- return newstr;
-}
-
-void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent, UErrorCode *status) {
- int32_t i = 0;
- const char *key = ures_getKey(resource);
-
- switch(ures_getType(resource)) {
- case URES_STRING :
- {
- int32_t len=0;
- const UChar*thestr = ures_getString(resource, &len, status);
- UChar *string = quotedString(thestr);
-
- /* TODO: String truncation */
- /*
- if(trunc && len > truncsize) {
- printIndent(out, indent);
- u_fprintf(out, "// WARNING: this string, size %d is truncated to %d\n", len, truncsize/2);
- len = truncsize/2;
- }
- */
- printIndent(out, indent);
- if(key != NULL) {
- u_fprintf(out, "%s { \"%S\" } ", key, string);
- } else {
- u_fprintf(out, "\"%S\",", string);
- }
- if(VERBOSE) {
- u_fprintf(out, " // STRING");
- }
- u_fprintf(out, "\n");
- free(string);
- }
- break;
- case URES_INT :
- printIndent(out, indent);
- if(key != NULL) {
- u_fprintf(out, "%s", key);
- }
- u_fprintf(out, ":int { %li } ", ures_getInt(resource, status));
-
- if(VERBOSE) {
- u_fprintf(out, " // INT");
- }
- u_fprintf(out, "\n");
- break;
- case URES_BINARY :
- {
- int32_t len = 0;
- const int8_t *data = (const int8_t *)ures_getBinary(resource, &len, status);
- if(trunc && len > truncsize) {
- printIndent(out, indent);
- u_fprintf(out, "// WARNING: this resource, size %li is truncated to %li\n", len, truncsize/2);
- len = truncsize/2;
- }
- if(U_SUCCESS(*status)) {
- printIndent(out, indent);
- if(key != NULL) {
- u_fprintf(out, "%s", key);
- }
- u_fprintf(out, ":binary { ");
- for(i = 0; i<len; i++) {
- printHex(out, data++);
- }
- u_fprintf(out, " }");
- if(VERBOSE) {
- u_fprintf(out, " // BINARY");
- }
- u_fprintf(out, "\n");
-
- } else {
- reportError(status);
- }
- }
- break;
- case URES_INT_VECTOR :
- {
- int32_t len = 0;
- const int32_t *data = ures_getIntVector(resource, &len, status);
- if(U_SUCCESS(*status)) {
- printIndent(out, indent);
- if(key != NULL) {
- u_fprintf(out, "%s", key);
- }
- u_fprintf(out, ":intvector { ");
- for(i = 0; i<len-1; i++) {
- u_fprintf(out, "%d, ", data[i]);
- }
- if(len > 0) {
- u_fprintf(out, "%d ", data[len-1]);
- }
- u_fprintf(out, "}");
- if(VERBOSE) {
- u_fprintf(out, " // INTVECTOR");
- }
- u_fprintf(out, "\n");
-
- } else {
- reportError(status);
- }
- }
- break;
- case URES_TABLE :
- case URES_ARRAY :
- {
- UResourceBundle *t = NULL;
- ures_resetIterator(resource);
- printIndent(out, indent);
- if(key != NULL) {
- u_fprintf(out, "%s ", key);
- }
- u_fprintf(out, "{");
- if(VERBOSE) {
- if(ures_getType(resource) == URES_TABLE) {
- u_fprintf(out, " // TABLE");
- } else {
- u_fprintf(out, " // ARRAY");
- }
- }
- u_fprintf(out, "\n");
-
- while(ures_hasNext(resource)) {
- t = ures_getNextResource(resource, t, status);
- printOutBundle(out, t, indent+indentsize, status);
- }
-
- printIndent(out, indent);
- u_fprintf(out, "}\n");
- ures_close(t);
- }
- break;
- default:
- break;
- }
-
-}
-
-void reportError(UErrorCode *status) {
- u_fprintf(outerr, "Error %d(%s) : %U happened!\n", *status, u_errorName(*status), getErrorName(*status));
-}
-
-
-const UChar *getErrorName(UErrorCode errorNumber) {
- UErrorCode status = U_ZERO_ERROR;
- int32_t len = 0;
-
- UResourceBundle *error = ures_open(currdir, locale, &status);
-
- UResourceBundle *errorcodes = ures_getByKey(error, "errorcodes", NULL, &status);
-
- const UChar *result = ures_getStringByIndex(errorcodes, errorNumber, &len, &status);
-
- ures_close(errorcodes);
- ures_close(error);
-
- if(U_SUCCESS(status)) {
- return result;
- } else {
- return baderror;
- }
-
-}
diff --git a/icu4c/source/samples/uresb/uresb.sln b/icu4c/source/samples/uresb/uresb.sln
deleted file mode 100644
index 8020fbb9f..000000000
--- a/icu4c/source/samples/uresb/uresb.sln
+++ /dev/null
@@ -1,38 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "resources", "resources.vcxproj", "{69437707-2FEF-4E2C-8C3F-6E6B3D241366}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uresb", "uresb.vcxproj", "{92580BF4-F4DA-4024-B3F8-444F982BC72F}"
- ProjectSection(ProjectDependencies) = postProject
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366} = {69437707-2FEF-4E2C-8C3F-6E6B3D241366}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|Win32.ActiveCfg = Debug|Win32
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|Win32.Build.0 = Debug|Win32
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.ActiveCfg = Debug|x64
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.Build.0 = Debug|x64
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|Win32.ActiveCfg = Release|Win32
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|Win32.Build.0 = Release|Win32
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.ActiveCfg = Release|x64
- {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.Build.0 = Release|x64
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|Win32.ActiveCfg = Debug|Win32
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|Win32.Build.0 = Debug|Win32
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.ActiveCfg = Debug|x64
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.Build.0 = Debug|x64
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|Win32.ActiveCfg = Release|Win32
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|Win32.Build.0 = Release|Win32
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.ActiveCfg = Release|x64
- {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/uresb/uresb.vcxproj b/icu4c/source/samples/uresb/uresb.vcxproj
deleted file mode 100644
index 52ab5d05d..000000000
--- a/icu4c/source/samples/uresb/uresb.vcxproj
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{92580BF4-F4DA-4024-B3F8-444F982BC72F}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <!-- Options that are common to *all* project configurations -->
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/uresb.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/uresb.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <Culture>0x0c1a</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/uresb.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/uresb.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/uresb.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/uresb.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <Culture>0x0c1a</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/uresb.exe</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/uresb.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
-
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/uresb.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/uresb.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <Culture>0x0c1a</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/uresb.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/uresb.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/uresb.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/uresb.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <ResourceCompile>
- <Culture>0x0c1a</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/uresb.exe</OutputFile>
- <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/uresb.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="uresb.c" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="resources.vcxproj">
- <Project>{69437707-2fef-4e2c-8c3f-6e6b3d241366}</Project>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/uresb/uresb.vcxproj.filters b/icu4c/source/samples/uresb/uresb.vcxproj.filters
deleted file mode 100644
index b505ea3fd..000000000
--- a/icu4c/source/samples/uresb/uresb.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{8ee7965d-1f49-4d43-822c-1769f483fb4d}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{360c4d2a-1def-4b5d-854c-d069c425e6bb}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{5ff61356-999a-4b96-8195-2cdac0185df9}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="uresb.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/ustring/Makefile b/icu4c/source/samples/ustring/Makefile
deleted file mode 100644
index f83464eb8..000000000
--- a/icu4c/source/samples/ustring/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#
-# Copyright (c) 2002 IBM, Inc. and others
-# sample code makefile
-
-# Usage:
-# - configure, build, install ICU (make install)
-# - make sure "icu-config" (in the ICU installed bin directory) is on
-# the path
-# - do 'make' in this directory
-
-# Name of your target
-TARGET=ustring
-
-# All object files (C or C++)
-OBJECTS=ustring.o
-
-# Load in standard makefile definitions
-include ../defs.mk
-
-# the actual rules (this is a simple sample)
-include ../rules.mk
diff --git a/icu4c/source/samples/ustring/readme.txt b/icu4c/source/samples/ustring/readme.txt
deleted file mode 100644
index 513ea183c..000000000
--- a/icu4c/source/samples/ustring/readme.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html
-
-Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
-ustring: Unicode String Manipulation
-
-This sample demonstrates
- Using ICU to manipulate UnicodeString objects
-
-
-Files:
- ustring.cpp Main source file in C++
- ustring.sln Windows MSVC workspace. Double-click this to get started.
- ustring.vcproj Windows MSVC project file
-
-To Build ustring on Windows
- 1. Install and build ICU
- 2. In MSVC, open the workspace file icu\samples\ustring\ustring.sln
- 3. Choose a Debug or Release build.
- 4. Build.
-
-To Run on Windows
- 1. Start a command shell window
- 2. Add ICU's bin directory to the path, e.g.
- set PATH=c:\icu\bin;%PATH%
- (Use the path to where ever ICU is on your system.)
- 3. cd into the ustring directory, e.g.
- cd c:\icu\source\samples\ustring\debug
- 4. Run it
- ustring
-
-To Build on Unixes
- 1. Build ICU.
- Specify an ICU install directory when running configure,
- using the --prefix option. The steps to build ICU will look something
- like this:
- cd <icu directory>/source
- runConfigureICU <platform-name> --prefix <icu install directory> [other options]
- gmake all
-
- 2. Install ICU,
- gmake install
-
- 3. Compile
- cd <icu directory>/source/samples/ustring
- gmake ICU_PREFIX=<icu install directory)
-
- To Run on Unixes
- cd <icu directory>/source/samples/ustring
-
- gmake ICU_PREFIX=<icu install directory> check
- -or-
-
- export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
- ustring
-
-
- Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
- If in doubt, run the sample using "gmake check", and note the name of
- the variable that is used there. LD_LIBRARY_PATH is the correct name
- for Linux and Solaris.
-
-
diff --git a/icu4c/source/samples/ustring/ustring.cpp b/icu4c/source/samples/ustring/ustring.cpp
deleted file mode 100644
index 519831605..000000000
--- a/icu4c/source/samples/ustring/ustring.cpp
+++ /dev/null
@@ -1,622 +0,0 @@
-/*
-*******************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-*******************************************************************************
-*******************************************************************************
-*
-* Copyright (C) 2000-2014, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: ustring.c
-* encoding: UTF-8
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2000aug15
-* created by: Markus W. Scherer
-*
-* This file contains sample code that illustrates the use of Unicode strings
-* with ICU.
-*/
-
-#define __STDC_FORMAT_MACROS 1
-#include <inttypes.h>
-
-#include <stdio.h>
-#include "unicode/utypes.h"
-#include "unicode/uchar.h"
-#include "unicode/locid.h"
-#include "unicode/ustring.h"
-#include "unicode/ucnv.h"
-#include "unicode/unistr.h"
-
-using namespace icu;
-
-#ifndef UPRV_LENGTHOF
-#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
-#endif
-
-// helper functions -------------------------------------------------------- ***
-
-// default converter for the platform encoding
-static UConverter *cnv=nullptr;
-
-static void
-printUString(const char *announce, const char16_t *s, int32_t length) {
- static char out[200];
- UChar32 c;
- int32_t i;
- UErrorCode errorCode=U_ZERO_ERROR;
-
- /*
- * Convert to the "platform encoding". See notes in printUnicodeString().
- * ucnv_fromUChars(), like most ICU APIs understands length==-1
- * to mean that the string is NUL-terminated.
- */
- ucnv_fromUChars(cnv, out, sizeof(out), s, length, &errorCode);
- if(U_FAILURE(errorCode) || errorCode==U_STRING_NOT_TERMINATED_WARNING) {
- printf("%sproblem converting string from Unicode: %s\n", announce, u_errorName(errorCode));
- return;
- }
-
- printf("%s%s {", announce, out);
-
- /* output the code points (not code units) */
- if(length>=0) {
- /* s is not NUL-terminated */
- for(i=0; i<length; /* U16_NEXT post-increments */) {
- U16_NEXT(s, i, length, c);
- printf(" %04x", c);
- }
- } else {
- /* s is NUL-terminated */
- for(i=0; /* condition in loop body */; /* U16_NEXT post-increments */) {
- U16_NEXT(s, i, length, c);
- if(c==0) {
- break;
- }
- printf(" %04x", c);
- }
- }
- printf(" }\n");
-}
-
-static void
-printUnicodeString(const char *announce, const UnicodeString &s) {
- static char out[200];
- int32_t i, length;
-
- // output the string, converted to the platform encoding
-
- // Note for Windows: The "platform encoding" defaults to the "ANSI codepage",
- // which is different from the "OEM codepage" in the console window.
- // However, if you pipe the output into a file and look at it with Notepad
- // or similar, then "ANSI" characters will show correctly.
- // Production code should be aware of what encoding is required,
- // and use a UConverter or at least a charset name explicitly.
- out[s.extract(0, 99, out)]=0;
- printf("%s%s {", announce, out);
-
- // output the code units (not code points)
- length=s.length();
- for(i=0; i<length; ++i) {
- printf(" %04x", s.charAt(i));
- }
- printf(" }\n");
-}
-
-// sample code for utf.h macros -------------------------------------------- ***
-
-static void
-demo_utf_h_macros() {
- static char16_t input[]={ 0x0061, 0xd800, 0xdc00, 0xdbff, 0xdfff, 0x0062 };
- UChar32 c;
- int32_t i;
- UBool isError;
-
- printf("\n* demo_utf_h_macros() -------------- ***\n\n");
-
- printUString("iterate forward through: ", input, UPRV_LENGTHOF(input));
- for(i=0; i<UPRV_LENGTHOF(input); /* U16_NEXT post-increments */) {
- /* Iterating forwards
- Codepoint at offset 0: U+0061
- Codepoint at offset 1: U+10000
- Codepoint at offset 3: U+10ffff
- Codepoint at offset 5: U+0062
- */
- printf("Codepoint at offset %d: U+", i);
- U16_NEXT(input, i, UPRV_LENGTHOF(input), c);
- printf("%04x\n", c);
- }
-
- puts("");
-
- isError=false;
- i=1; /* write position, gets post-incremented so needs to be in an l-value */
- U16_APPEND(input, i, UPRV_LENGTHOF(input), 0x0062, isError);
-
- printUString("iterate backward through: ", input, UPRV_LENGTHOF(input));
- for(i=UPRV_LENGTHOF(input); i>0; /* U16_PREV pre-decrements */) {
- U16_PREV(input, 0, i, c);
- /* Iterating backwards
- Codepoint at offset 5: U+0062
- Codepoint at offset 3: U+10ffff
- Codepoint at offset 2: U+dc00 -- unpaired surrogate because lead surr. overwritten
- Codepoint at offset 1: U+0062 -- by this BMP code point
- Codepoint at offset 0: U+0061
- */
- printf("Codepoint at offset %d: U+%04x\n", i, c);
- }
-}
-
-// sample code for Unicode strings in C ------------------------------------ ***
-
-static void demo_C_Unicode_strings() {
- printf("\n* demo_C_Unicode_strings() --------- ***\n\n");
-
- static const char16_t text[]={ 0x41, 0x42, 0x43, 0 }; /* "ABC" */
- static const char16_t appendText[]={ 0x61, 0x62, 0x63, 0 }; /* "abc" */
- static const char16_t cmpText[]={ 0x61, 0x53, 0x73, 0x43, 0 }; /* "aSsC" */
- char16_t buffer[32];
- int32_t compare;
- int32_t length=u_strlen(text); /* length=3 */
-
- /* simple ANSI C-style functions */
- buffer[0]=0; /* empty, NUL-terminated string */
- u_strncat(buffer, text, 1); /* append just n=1 character ('A') */
- u_strcat(buffer, appendText); /* buffer=="Aabc" */
- length=u_strlen(buffer); /* length=4 */
- printUString("should be \"Aabc\": ", buffer, -1);
-
- /* bitwise comparing buffer with text */
- compare=u_strcmp(buffer, text);
- if(compare<=0) {
- printf("String comparison error, expected \"Aabc\" > \"ABC\"\n");
- }
-
- /* Build "A<sharp s>C" in the buffer... */
- u_strcpy(buffer, text);
- buffer[1]=0xdf; /* sharp s, case-compares equal to "ss" */
- printUString("should be \"A<sharp s>C\": ", buffer, -1);
-
- /* Compare two strings case-insensitively using full case folding */
- compare=u_strcasecmp(buffer, cmpText, U_FOLD_CASE_DEFAULT);
- if(compare!=0) {
- printf("String case insensitive comparison error, expected \"AbC\" to be equal to \"ABC\"\n");
- }
-}
-
-// sample code for case mappings with C APIs -------------------------------- ***
-
-static void demoCaseMapInC() {
- /*
- * input=
- * "aB<capital sigma>"
- * "iI<small dotless i><capital dotted I> "
- * "<sharp s> <small lig. ffi>"
- * "<small final sigma><small sigma><capital sigma>"
- */
- static const char16_t input[]={
- 0x61, 0x42, 0x3a3,
- 0x69, 0x49, 0x131, 0x130, 0x20,
- 0xdf, 0x20, 0xfb03,
- 0x3c2, 0x3c3, 0x3a3, 0
- };
- char16_t buffer[32];
-
- UErrorCode errorCode;
- UChar32 c;
- int32_t i, j, length;
- UBool isError;
-
- printf("\n* demoCaseMapInC() ----------------- ***\n\n");
-
- /*
- * First, use simple case mapping functions which provide
- * 1:1 code point mappings without context/locale ID.
- *
- * Note that some mappings will not be "right" because some "real"
- * case mappings require context, depend on the locale ID,
- * and/or result in a change in the number of code points.
- */
- printUString("input string: ", input, -1);
-
- /* uppercase */
- isError=false;
- for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
- U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
- if(c==0) {
- break; /* stop at terminating NUL, no need to terminate buffer */
- }
- c=u_toupper(c);
- U16_APPEND(buffer, j, UPRV_LENGTHOF(buffer), c, isError);
- }
- printUString("simple-uppercased: ", buffer, j);
- /* lowercase */
- isError=false;
- for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
- U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
- if(c==0) {
- break; /* stop at terminating NUL, no need to terminate buffer */
- }
- c=u_tolower(c);
- U16_APPEND(buffer, j, UPRV_LENGTHOF(buffer), c, isError);
- }
- printUString("simple-lowercased: ", buffer, j);
- /* titlecase */
- isError=false;
- for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
- U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
- if(c==0) {
- break; /* stop at terminating NUL, no need to terminate buffer */
- }
- c=u_totitle(c);
- U16_APPEND(buffer, j, UPRV_LENGTHOF(buffer), c, isError);
- }
- printUString("simple-titlecased: ", buffer, j);
- /* case-fold/default */
- isError=false;
- for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
- U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
- if(c==0) {
- break; /* stop at terminating NUL, no need to terminate buffer */
- }
- c=u_foldCase(c, U_FOLD_CASE_DEFAULT);
- U16_APPEND(buffer, j, UPRV_LENGTHOF(buffer), c, isError);
- }
- printUString("simple-case-folded/default: ", buffer, j);
- /* case-fold/Turkic */
- isError=false;
- for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
- U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
- if(c==0) {
- break; /* stop at terminating NUL, no need to terminate buffer */
- }
- c=u_foldCase(c, U_FOLD_CASE_EXCLUDE_SPECIAL_I);
- U16_APPEND(buffer, j, UPRV_LENGTHOF(buffer), c, isError);
- }
- printUString("simple-case-folded/Turkic: ", buffer, j);
-
- /*
- * Second, use full case mapping functions which provide
- * 1:n code point mappings (n can be 0!) and are sensitive to context and locale ID.
- *
- * Note that lower/upper/titlecasing take a locale ID while case-folding
- * has bit flag options instead, by design of the Unicode SpecialCasing.txt UCD file.
- *
- * Also, string titlecasing requires a BreakIterator to find starts of words.
- * The sample code here passes in a nullptr pointer; u_strToTitle() will open and close a default
- * titlecasing BreakIterator automatically.
- * For production code where many strings are titlecased it would be more efficient
- * to open a BreakIterator externally and pass it in.
- */
- printUString("\ninput string: ", input, -1);
-
- /* lowercase/English */
- errorCode=U_ZERO_ERROR;
- length=u_strToLower(buffer, UPRV_LENGTHOF(buffer), input, -1, "en", &errorCode);
- if(U_SUCCESS(errorCode)) {
- printUString("full-lowercased/en: ", buffer, length);
- } else {
- printf("error in u_strToLower(en)=%" PRId32 " error=%s\n", length, u_errorName(errorCode));
- }
- /* lowercase/Turkish */
- errorCode=U_ZERO_ERROR;
- length=u_strToLower(buffer, UPRV_LENGTHOF(buffer), input, -1, "tr", &errorCode);
- if(U_SUCCESS(errorCode)) {
- printUString("full-lowercased/tr: ", buffer, length);
- } else {
- printf("error in u_strToLower(tr)=%" PRId32 " error=%s\n", length, u_errorName(errorCode));
- }
- /* uppercase/English */
- errorCode=U_ZERO_ERROR;
- length=u_strToUpper(buffer, UPRV_LENGTHOF(buffer), input, -1, "en", &errorCode);
- if(U_SUCCESS(errorCode)) {
- printUString("full-uppercased/en: ", buffer, length);
- } else {
- printf("error in u_strToUpper(en)=%" PRId32 " error=%s\n", length, u_errorName(errorCode));
- }
- /* uppercase/Turkish */
- errorCode=U_ZERO_ERROR;
- length=u_strToUpper(buffer, UPRV_LENGTHOF(buffer), input, -1, "tr", &errorCode);
- if(U_SUCCESS(errorCode)) {
- printUString("full-uppercased/tr: ", buffer, length);
- } else {
- printf("error in u_strToUpper(tr)=%" PRId32 " error=%s\n", length, u_errorName(errorCode));
- }
- /* titlecase/English */
- errorCode=U_ZERO_ERROR;
- length=u_strToTitle(buffer, UPRV_LENGTHOF(buffer), input, -1, nullptr, "en", &errorCode);
- if(U_SUCCESS(errorCode)) {
- printUString("full-titlecased/en: ", buffer, length);
- } else {
- printf("error in u_strToTitle(en)=%" PRId32 " error=%s\n", length, u_errorName(errorCode));
- }
- /* titlecase/Turkish */
- errorCode=U_ZERO_ERROR;
- length=u_strToTitle(buffer, UPRV_LENGTHOF(buffer), input, -1, nullptr, "tr", &errorCode);
- if(U_SUCCESS(errorCode)) {
- printUString("full-titlecased/tr: ", buffer, length);
- } else {
- printf("error in u_strToTitle(tr)=%" PRId32 " error=%s\n", length, u_errorName(errorCode));
- }
- /* case-fold/default */
- errorCode=U_ZERO_ERROR;
- length=u_strFoldCase(buffer, UPRV_LENGTHOF(buffer), input, -1, U_FOLD_CASE_DEFAULT, &errorCode);
- if(U_SUCCESS(errorCode)) {
- printUString("full-case-folded/default: ", buffer, length);
- } else {
- printf("error in u_strFoldCase(default)=%" PRId32 " error=%s\n", length, u_errorName(errorCode));
- }
- /* case-fold/Turkic */
- errorCode=U_ZERO_ERROR;
- length=u_strFoldCase(buffer, UPRV_LENGTHOF(buffer), input, -1, U_FOLD_CASE_EXCLUDE_SPECIAL_I, &errorCode);
- if(U_SUCCESS(errorCode)) {
- printUString("full-case-folded/Turkic: ", buffer, length);
- } else {
- printf("error in u_strFoldCase(Turkic)=%" PRId32 " error=%s\n", length, u_errorName(errorCode));
- }
-}
-
-// sample code for case mappings with C++ APIs ------------------------------ ***
-
-static void demoCaseMapInCPlusPlus() {
- /*
- * input=
- * "aB<capital sigma>"
- * "iI<small dotless i><capital dotted I> "
- * "<sharp s> <small lig. ffi>"
- * "<small final sigma><small sigma><capital sigma>"
- */
- static const char16_t input[]={
- 0x61, 0x42, 0x3a3,
- 0x69, 0x49, 0x131, 0x130, 0x20,
- 0xdf, 0x20, 0xfb03,
- 0x3c2, 0x3c3, 0x3a3, 0
- };
-
- printf("\n* demoCaseMapInCPlusPlus() --------- ***\n\n");
-
- UnicodeString s(input), t;
- const Locale &en=Locale::getEnglish();
- Locale tr("tr");
-
- /*
- * Full case mappings as in demoCaseMapInC(), using UnicodeString functions.
- * These functions modify the string object itself.
- * Since we want to keep the input string around, we copy it each time
- * and case-map the copy.
- */
- printUnicodeString("input string: ", s);
-
- /* lowercase/English */
- printUnicodeString("full-lowercased/en: ", (t=s).toLower(en));
- /* lowercase/Turkish */
- printUnicodeString("full-lowercased/tr: ", (t=s).toLower(tr));
- /* uppercase/English */
- printUnicodeString("full-uppercased/en: ", (t=s).toUpper(en));
- /* uppercase/Turkish */
- printUnicodeString("full-uppercased/tr: ", (t=s).toUpper(tr));
- /* titlecase/English */
- printUnicodeString("full-titlecased/en: ", (t=s).toTitle(nullptr, en));
- /* titlecase/Turkish */
- printUnicodeString("full-titlecased/tr: ", (t=s).toTitle(nullptr, tr));
- /* case-folde/default */
- printUnicodeString("full-case-folded/default: ", (t=s).foldCase(U_FOLD_CASE_DEFAULT));
- /* case-folde/Turkic */
- printUnicodeString("full-case-folded/Turkic: ", (t=s).foldCase(U_FOLD_CASE_EXCLUDE_SPECIAL_I));
-}
-
-// sample code for UnicodeString storage models ----------------------------- ***
-
-static const char16_t readonly[]={
- 0x61, 0x31, 0x20ac
-};
-static char16_t writeable[]={
- 0x62, 0x32, 0xdbc0, 0xdc01 // includes a surrogate pair for a supplementary code point
-};
-static char out[100];
-
-static void
-demoUnicodeStringStorage() {
- // These sample code lines illustrate how to use UnicodeString, and the
- // comments tell what happens internally. There are no APIs to observe
- // most of this programmatically, except for stepping into the code
- // with a debugger.
- // This is by design to hide such details from the user.
- int32_t i;
-
- printf("\n* demoUnicodeStringStorage() ------- ***\n\n");
-
- // * UnicodeString with internally stored contents
- // instantiate a UnicodeString from a single code point
- // the few (2) UChars will be stored in the object itself
- UnicodeString one((UChar32)0x24001);
- // this copies the few UChars into the "two" object
- UnicodeString two=one;
- printf("length of short string copy: %d\n", two.length());
- // set "one" to contain the 3 UChars from readonly
- // this setTo() variant copies the characters
- one.setTo(readonly, UPRV_LENGTHOF(readonly));
-
- // * UnicodeString with allocated contents
- // build a longer string that will not fit into the object's buffer
- one+=UnicodeString(writeable, UPRV_LENGTHOF(writeable));
- one+=one;
- one+=one;
- printf("length of longer string: %d\n", one.length());
- // copying will use the same allocated buffer and increment the reference
- // counter
- two=one;
- printf("length of longer string copy: %d\n", two.length());
-
- // * UnicodeString using readonly-alias to a const char16_t array
- // construct a string that aliases a readonly buffer
- UnicodeString three(false, readonly, UPRV_LENGTHOF(readonly));
- printUnicodeString("readonly-alias string: ", three);
- // copy-on-write: any modification to the string results in
- // a copy to either the internal buffer or to a newly allocated one
- three.setCharAt(1, 0x39);
- printUnicodeString("readonly-aliasing string after modification: ", three);
- // the aliased array is not modified
- for(i=0; i<three.length(); ++i) {
- printf("readonly buffer[%d] after modifying its string: 0x%" PRId32 "\n",
- i, readonly[i]);
- }
- // setTo() readonly alias
- one.setTo(false, writeable, UPRV_LENGTHOF(writeable));
- // copying the readonly-alias object with fastCopyFrom() (new in ICU 2.4)
- // will readonly-alias the same buffer
- two.fastCopyFrom(one);
- printUnicodeString("fastCopyFrom(readonly alias of \"writeable\" array): ", two);
- printf("verify that a fastCopyFrom(readonly alias) uses the same buffer pointer: %d (should be 1)\n",
- one.getBuffer()==two.getBuffer());
- // a normal assignment will clone the contents (new in ICU 2.4)
- two=one;
- printf("verify that a regular copy of a readonly alias uses a different buffer pointer: %d (should be 0)\n",
- one.getBuffer()==two.getBuffer());
-
- // * UnicodeString using writeable-alias to a non-const char16_t array
- UnicodeString four(writeable, UPRV_LENGTHOF(writeable), UPRV_LENGTHOF(writeable));
- printUnicodeString("writeable-alias string: ", four);
- // a modification writes through to the buffer
- four.setCharAt(1, 0x39);
- for(i=0; i<four.length(); ++i) {
- printf("writeable-alias backing buffer[%d]=0x%" PRId32 " "
- "after modification\n", i, writeable[i]);
- }
- // a copy will not alias any more;
- // instead, it will get a copy of the contents into allocated memory
- two=four;
- two.setCharAt(1, 0x21);
- for(i=0; i<two.length(); ++i) {
- printf("writeable-alias backing buffer[%d]=0x%" PRId32 " after "
- "modification of string copy\n", i, writeable[i]);
- }
- // setTo() writeable alias, capacity==length
- one.setTo(writeable, UPRV_LENGTHOF(writeable), UPRV_LENGTHOF(writeable));
- // grow the string - it will not fit into the backing buffer any more
- // and will get copied before modification
- one.append((char16_t)0x40);
- // shrink it back so it would fit
- one.truncate(one.length()-1);
- // we still operate on the copy
- one.setCharAt(1, 0x25);
- printf("string after growing too much and then shrinking[1]=0x%" PRId32 "\n"
- " backing store for this[1]=0x%" PRId32 "\n",
- one.charAt(1), writeable[1]);
- // if we need it in the original buffer, then extract() to it
- // extract() does not do anything if the string aliases that same buffer
- // i=min(one.length(), length of array)
- if(one.length()<UPRV_LENGTHOF(writeable)) {
- i=one.length();
- } else {
- i=UPRV_LENGTHOF(writeable);
- }
- one.extract(0, i, writeable);
- for(i=0; i<UPRV_LENGTHOF(writeable); ++i) {
- printf("writeable-alias backing buffer[%d]=0x%" PRId32 " after re-extract\n",
- i, writeable[i]);
- }
-}
-
-// sample code for UnicodeString instantiations ----------------------------- ***
-
-static void
-demoUnicodeStringInit() {
- // *** Make sure to read about invariant characters in utypes.h! ***
- // Initialization of Unicode strings from C literals works _only_ for
- // invariant characters!
-
- printf("\n* demoUnicodeStringInit() ---------- ***\n\n");
-
- // the string literal is 32 chars long - this must be counted for the macro
- UnicodeString invariantOnly=UNICODE_STRING("such characters are safe 123 %-.", 32);
-
- /*
- * In C, we need two macros: one to declare the char16_t[] array, and
- * one to populate it; the second one is a noop on platforms where
- * wchar_t is compatible with char16_t and ASCII-based.
- * The length of the string literal must be counted for both macros.
- */
- /* declare the invString array for the string */
- U_STRING_DECL(invString, "such characters are safe 123 %-.", 32);
- /* populate it with the characters */
- U_STRING_INIT(invString, "such characters are safe 123 %-.", 32);
-
- // compare the C and C++ strings
- printf("C and C++ Unicode strings are equal: %d\n", invariantOnly==UnicodeString(true, invString, 32));
-
- /*
- * convert between char * and char16_t * strings that
- * contain only invariant characters
- */
- static const char *cs1="such characters are safe 123 %-.";
- static char16_t us1[40];
- static char cs2[40];
- u_charsToUChars(cs1, us1, 33); /* include the terminating NUL */
- u_UCharsToChars(us1, cs2, 33);
- printf("char * -> char16_t * -> char * with only "
- "invariant characters: \"%s\"\n",
- cs2);
-
- // initialize a UnicodeString from a string literal that contains
- // escape sequences written with invariant characters
- // do not forget to duplicate the backslashes for ICU to see them
- // then, count each double backslash only once!
- UnicodeString german=UNICODE_STRING(
- "Sch\\u00f6nes Auto: \\u20ac 11240.\\fPrivates Zeichen: \\U00102345\\n", 64).
- unescape();
- printUnicodeString("german UnicodeString from unescaping:\n ", german);
-
- /*
- * C: convert and unescape a char * string with only invariant
- * characters to fill a char16_t * string
- */
- char16_t buffer[200];
- int32_t length;
- length=u_unescape(
- "Sch\\u00f6nes Auto: \\u20ac 11240.\\fPrivates Zeichen: \\U00102345\\n",
- buffer, UPRV_LENGTHOF(buffer));
- printf("german C Unicode string from char * unescaping: (length %d)\n ", length);
- printUnicodeString("", UnicodeString(buffer));
-}
-
-extern int
-main(int argc, const char *argv[]) {
- UErrorCode errorCode=U_ZERO_ERROR;
-
- // Note: Using a global variable for any object is not exactly thread-safe...
-
- // You can change this call to e.g. ucnv_open("UTF-8", &errorCode) if you pipe
- // the output to a file and look at it with a Unicode-capable editor.
- // This will currently affect only the printUString() function, see the code above.
- // printUnicodeString() could use this, too, by changing to an extract() overload
- // that takes a UConverter argument.
- cnv=ucnv_open(nullptr, &errorCode);
- if(U_FAILURE(errorCode)) {
- fprintf(stderr, "error %s opening the default converter\n", u_errorName(errorCode));
- return errorCode;
- }
-
- ucnv_setFromUCallBack(cnv, UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_C, nullptr, nullptr, &errorCode);
- if(U_FAILURE(errorCode)) {
- fprintf(stderr, "error %s setting the escape callback in the default converter\n", u_errorName(errorCode));
- ucnv_close(cnv);
- return errorCode;
- }
-
- demo_utf_h_macros();
- demo_C_Unicode_strings();
- demoCaseMapInC();
- demoCaseMapInCPlusPlus();
- demoUnicodeStringStorage();
- demoUnicodeStringInit();
-
- ucnv_close(cnv);
- return 0;
-}
diff --git a/icu4c/source/samples/ustring/ustring.sln b/icu4c/source/samples/ustring/ustring.sln
deleted file mode 100644
index a09640711..000000000
--- a/icu4c/source/samples/ustring/ustring.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ustring", "ustring.vcxproj", "{FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|Win32.ActiveCfg = Debug|Win32
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|Win32.Build.0 = Debug|Win32
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.ActiveCfg = Debug|x64
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.Build.0 = Debug|x64
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|Win32.ActiveCfg = Release|Win32
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|Win32.Build.0 = Release|Win32
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.ActiveCfg = Release|x64
- {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/icu4c/source/samples/ustring/ustring.vcxproj b/icu4c/source/samples/ustring/ustring.vcxproj
deleted file mode 100644
index 644dc95d6..000000000
--- a/icu4c/source/samples/ustring/ustring.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="Globals">
- <ProjectGuid>{FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}</ProjectGuid>
- </PropertyGroup>
- <PropertyGroup Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <!-- The following import will include the 'default' configuration options for VS projects. -->
- <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- </PropertyGroup>
- <!-- Options that are common to *all* project configurations -->
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Release/ustring.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Release/ustring.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Release/ustring.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x86\Release/ustring.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Release/ustring.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Release/ustring.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Release/ustring.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ProgramDatabaseFile>.\x64\Release/ustring.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\x86\Debug/ustring.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x86\Debug/ustring.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x86\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x86\Debug/ustring.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x86\Debug/ustring.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TypeLibraryName>.\x64\Debug/ustring.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <PrecompiledHeaderOutputFile>.\x64\Debug/ustring.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
- <ObjectFileName>.\x64\Debug/</ObjectFileName>
- <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>.\x64\Debug/ustring.exe</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>.\x64\Debug/ustring.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="ustring.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/samples/ustring/ustring.vcxproj.filters b/icu4c/source/samples/ustring/ustring.vcxproj.filters
deleted file mode 100644
index 31f8410ee..000000000
--- a/icu4c/source/samples/ustring/ustring.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{db876e6b-bc8f-42c4-87ea-ce2103aa8083}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{b2781636-f094-4ad5-ae54-d1d1cd35789d}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{cc4ad0cf-56aa-411d-a9fb-75442955c3a9}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="ustring.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/icu4c/source/stubdata/Android.bp b/icu4c/source/stubdata/Android.bp
index 071c4f004..d9457eeb5 100644
--- a/icu4c/source/stubdata/Android.bp
+++ b/icu4c/source/stubdata/Android.bp
@@ -40,6 +40,7 @@ prebuilt_root_host {
filename_from_src: true,
relative_install_path: "com.android.i18n/etc/icu",
visibility: [
+ "//external/icu/icu4c/source/common",
"//frameworks/layoutlib",
],
dist: {
diff --git a/icu4c/source/stubdata/icudt74l.dat b/icu4c/source/stubdata/icudt74l.dat
deleted file mode 100644
index 2fb995563..000000000
--- a/icu4c/source/stubdata/icudt74l.dat
+++ /dev/null
Binary files differ
diff --git a/icu4c/source/stubdata/icudt75l.dat b/icu4c/source/stubdata/icudt75l.dat
new file mode 100644
index 000000000..9e1ba17e9
--- /dev/null
+++ b/icu4c/source/stubdata/icudt75l.dat
Binary files differ
diff --git a/icu4c/source/stubdata/stubdata.vcxproj b/icu4c/source/stubdata/stubdata.vcxproj
index d5108b494..0b2c61cb0 100644
--- a/icu4c/source/stubdata/stubdata.vcxproj
+++ b/icu4c/source/stubdata/stubdata.vcxproj
@@ -37,7 +37,6 @@
<ClCompile>
<AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
<PrecompiledHeaderOutputFile>$(OutDir)/icudt.pch</PrecompiledHeaderOutputFile>
diff --git a/icu4c/source/test/Android.bp b/icu4c/source/test/Android.bp
index 7216c7d5c..ba3784adf 100644
--- a/icu4c/source/test/Android.bp
+++ b/icu4c/source/test/Android.bp
@@ -53,6 +53,7 @@ cc_defaults {
static_libs: [
"libicuctest",
+ "libicuio",
"libicutoolutil",
],
target: {
diff --git a/icu4c/source/test/cintltst/callcoll.c b/icu4c/source/test/cintltst/callcoll.c
index ff9023db0..855ce5d8b 100644
--- a/icu4c/source/test/cintltst/callcoll.c
+++ b/icu4c/source/test/cintltst/callcoll.c
@@ -739,7 +739,7 @@ void genericRulesStarter(const char *rules, const char * const s[], uint32_t siz
genericRulesStarterWithResult(rules, s, size, UCOL_LESS);
}
-static void TestTertiary()
+static void TestTertiary(void)
{
int32_t len,i;
UCollator *myCollation;
@@ -764,7 +764,7 @@ static void TestTertiary()
myCollation = 0;
}
-static void TestPrimary( )
+static void TestPrimary(void)
{
int32_t len,i;
UCollator *myCollation;
@@ -790,7 +790,7 @@ static void TestPrimary( )
myCollation = 0;
}
-static void TestSecondary()
+static void TestSecondary(void)
{
int32_t i;
int32_t len;
@@ -815,7 +815,7 @@ static void TestSecondary()
myCollation = 0;
}
-static void TestIdentical()
+static void TestIdentical(void)
{
int32_t i;
int32_t len;
@@ -839,7 +839,7 @@ static void TestIdentical()
myCollation = 0;
}
-static void TestExtra()
+static void TestExtra(void)
{
int32_t i, j;
int32_t len;
@@ -1173,7 +1173,7 @@ static void TestSurrogates(void)
*
*/
static void
-TestInvalidRules(){
+TestInvalidRules(void){
#define MAX_ERROR_STATES 2
static const char* rulesArr[MAX_ERROR_STATES] = {
@@ -1219,7 +1219,7 @@ TestInvalidRules(){
}
static void
-TestJitterbug1098(){
+TestJitterbug1098(void){
UChar rule[1000];
UCollator* c1 = NULL;
UErrorCode status = U_ZERO_ERROR;
diff --git a/icu4c/source/test/cintltst/capitst.c b/icu4c/source/test/cintltst/capitst.c
index 5d76ea054..479709631 100644
--- a/icu4c/source/test/cintltst/capitst.c
+++ b/icu4c/source/test/cintltst/capitst.c
@@ -271,7 +271,7 @@ void TestGetDefaultRules(){
/* Collator Properties
ucol_open, ucol_strcoll, getStrength/setStrength
getDecomposition/setDecomposition, getDisplayName*/
-void TestProperty()
+void TestProperty(void)
{
UCollator *col, *ruled;
const UChar *rules;
@@ -449,7 +449,7 @@ void TestProperty()
}
/* Test RuleBasedCollator and getRules*/
-void TestRuleBasedColl()
+void TestRuleBasedColl(void)
{
UCollator *col1, *col2, *col3, *col4;
UCollationElements *iter1, *iter2;
@@ -562,7 +562,7 @@ void TestRuleBasedColl()
ucol_close(col1);
}
-void TestCompare()
+void TestCompare(void)
{
UErrorCode status = U_ZERO_ERROR;
UCollator *col;
@@ -612,7 +612,7 @@ void TestCompare()
---------------------------------------------
tests decomposition setting
*/
-void TestDecomposition() {
+void TestDecomposition(void) {
UErrorCode status = U_ZERO_ERROR;
UCollator *en_US, *el_GR, *vi_VN;
en_US = ucol_open("en_US", &status);
@@ -651,7 +651,7 @@ void TestDecomposition() {
#define CLONETEST_COLLATOR_COUNT 4
-void TestSafeClone() {
+void TestSafeClone(void) {
UChar test1[6];
UChar test2[6];
static const UChar umlautUStr[] = {0x00DC, 0};
@@ -808,7 +808,7 @@ void TestSafeClone() {
}
}
-void TestClone() {
+void TestClone(void) {
UChar test1[6];
UChar test2[6];
static const UChar umlautUStr[] = {0x00DC, 0};
@@ -926,7 +926,7 @@ void TestClone() {
}
}
-void TestCloneBinary(){
+void TestCloneBinary(void){
UErrorCode err = U_ZERO_ERROR;
UCollator * col = ucol_open("en_US", &err);
UCollator * c;
@@ -1046,7 +1046,7 @@ static void TestBengaliSortKey(void)
TestOpenVsOpenRules ensures that collators from ucol_open and ucol_openRules
will generate identical sort keys
*/
-void TestOpenVsOpenRules(){
+void TestOpenVsOpenRules(void){
/* create an array of all the locales */
int32_t numLocales = uloc_countAvailable();
@@ -1189,7 +1189,7 @@ void TestOpenVsOpenRules(){
----------------------------------------------------------------------------
ctor -- Tests the getSortKey
*/
-void TestSortKey()
+void TestSortKey(void)
{
uint8_t *sortk1 = NULL, *sortk2 = NULL, *sortk3 = NULL, *sortkEmpty = NULL;
int32_t sortklen, osortklen;
@@ -1334,7 +1334,7 @@ void TestSortKey()
free(sortk2);
}
-void TestHashCode()
+void TestHashCode(void)
{
uint8_t *sortk1, *sortk2, *sortk3;
int32_t sortk1len, sortk2len, sortk3len;
@@ -1388,7 +1388,7 @@ void TestHashCode()
* Tests the UCollatorElements API.
*
*/
-void TestElemIter()
+void TestElemIter(void)
{
int32_t offset;
int32_t order1, order2, order3;
@@ -1518,7 +1518,7 @@ doAssert( (ucol_tertiaryOrder(order1) != ucol_tertiaryOrder(order3)), "The terti
log_verbose("testing CollationElementIterator ends...\n");
}
-void TestGetLocale() {
+void TestGetLocale(void) {
UErrorCode status = U_ZERO_ERROR;
const char *rules = "&a<x<y<z";
UChar rlz[256] = {0};
@@ -1619,7 +1619,7 @@ void TestGetLocale() {
}
-void TestGetAll()
+void TestGetAll(void)
{
int32_t i, count;
count=ucol_countAvailable();
@@ -1646,7 +1646,7 @@ static int compare_teststruct(const void *string1, const void *string2) {
return(strcmp((const char *)((struct teststruct *)string1)->key, (const char *)((struct teststruct *)string2)->key));
}
-void TestBounds() {
+void TestBounds(void) {
UErrorCode status = U_ZERO_ERROR;
UCollator *coll = ucol_open("sh", &status);
@@ -1861,7 +1861,7 @@ void TestSortKeyBufferOverrun(void) {
ucol_close(coll);
}
-static void TestAttribute()
+static void TestAttribute(void)
{
UErrorCode error = U_ZERO_ERROR;
UCollator *coll = ucol_open(NULL, &error);
@@ -1964,7 +1964,7 @@ static void TestAttribute()
ucol_close(coll);
}
-void TestGetTailoredSet() {
+void TestGetTailoredSet(void) {
struct {
const char *rules;
const char *tests[20];
diff --git a/icu4c/source/test/cintltst/cbiapts.c b/icu4c/source/test/cintltst/cbiapts.c
index 7fc43289a..147bdc968 100644
--- a/icu4c/source/test/cintltst/cbiapts.c
+++ b/icu4c/source/test/cintltst/cbiapts.c
@@ -156,7 +156,7 @@ static void freeToUCharStrings(void **hook) {
#if !UCONFIG_NO_FILE_IO
-static void TestBreakIteratorCAPI()
+static void TestBreakIteratorCAPI(void)
{
UErrorCode status = U_ZERO_ERROR;
UBreakIterator *word, *sentence, *line, *character, *b, *bogus;
@@ -633,7 +633,7 @@ static UBreakIterator * testOpenRules(char *rules) {
* TestBreakIteratorRules - Verify that a break iterator can be created from
* a set of source rules.
*/
-static void TestBreakIteratorRules() {
+static void TestBreakIteratorRules(void) {
/* Rules will keep together any run of letters not including 'a', OR
* keep together 'abc', but only when followed by 'def', OTHERWISE
* just return one char at a time.
@@ -720,7 +720,7 @@ static void TestBreakIteratorRules() {
ubrk_close(bi);
}
-static void TestBreakIteratorRuleError() {
+static void TestBreakIteratorRuleError(void) {
/*
* TestBreakIteratorRuleError - Try to create a BI from rules with syntax errors,
* check that the error is reported correctly.
@@ -754,7 +754,7 @@ static void TestBreakIteratorRuleError() {
/*
* TestsBreakIteratorStatusVals() Test the ubrk_getRuleStatusVec() function
*/
-static void TestBreakIteratorStatusVec() {
+static void TestBreakIteratorStatusVec(void) {
#define RULE_STRING_LENGTH 200
UChar rules[RULE_STRING_LENGTH];
diff --git a/icu4c/source/test/cintltst/cbiditst.c b/icu4c/source/test/cintltst/cbiditst.c
index ce4c1ce57..37d69df48 100644
--- a/icu4c/source/test/cintltst/cbiditst.c
+++ b/icu4c/source/test/cintltst/cbiditst.c
@@ -4539,8 +4539,7 @@ overrideBidiClass(const void *context, UChar32 c) {
DEF, DEF, DEF, LRO, B, RLO, BN, DEF /* 78-7F */
};
static const int nEntries = UPRV_LENGTHOF(customClasses);
- const char *dummy = context; /* just to avoid a compiler warning */
- dummy++;
+ (void)context; /* just to avoid a compiler warning */
return c >= nEntries ? U_BIDI_CLASS_DEFAULT : customClasses[c];
}
diff --git a/icu4c/source/test/cintltst/ccaltst.c b/icu4c/source/test/cintltst/ccaltst.c
index 2bf33e8d8..921260c70 100644
--- a/icu4c/source/test/cintltst/ccaltst.c
+++ b/icu4c/source/test/cintltst/ccaltst.c
@@ -112,7 +112,7 @@ static const UCalGetTypeTest ucalGetTypeTests[] = {
{ NULL, 0, NULL } /* terminator */
};
-static void TestCalendar()
+static void TestCalendar(void)
{
UCalendar *caldef = 0, *caldef2 = 0, *calfr = 0, *calit = 0, *calfrclone = 0;
UEnumeration* uenum = NULL;
@@ -527,7 +527,7 @@ static void TestCalendar()
/*------------------------------------------------------*/
/*Testing the getMillis, setMillis, setDate and setDateTime functions extensively*/
-static void TestGetSetDateAPI()
+static void TestGetSetDateAPI(void)
{
UCalendar *caldef = 0, *caldef2 = 0, *caldef3 = 0;
UChar tzID[4];
@@ -795,7 +795,7 @@ static void TestGetSetDateAPI()
/**
* Confirm the functioning of the calendar field related functions.
*/
-static void TestFieldGetSet()
+static void TestFieldGetSet(void)
{
UCalendar *cal = 0;
UChar tzID[4];
@@ -955,7 +955,7 @@ static const TransitionItem transitionItems[] = {
/**
* Execute adding and rolling in Calendar extensively,
*/
-static void TestAddRollExtensive()
+static void TestAddRollExtensive(void)
{
const TransitionItem * itemPtr;
UCalendar *cal = 0;
@@ -1149,7 +1149,7 @@ static void TestAddRollExtensive()
/*------------------------------------------------------ */
/*Testing the Limits for various Fields of Calendar*/
-static void TestGetLimits()
+static void TestGetLimits(void)
{
UCalendar *cal = 0;
int32_t min, max, gr_min, le_max, ac_min, ac_max, val;
@@ -1245,7 +1245,7 @@ static void TestGetLimits()
* Test that the days of the week progress properly when add is called repeatedly
* for increments of 24 days.
*/
-static void TestDOWProgression()
+static void TestDOWProgression(void)
{
int32_t initialDOW, DOW, newDOW, expectedDOW;
UCalendar *cal = 0;
@@ -1311,7 +1311,7 @@ static void TestDOWProgression()
/**
* Confirm that the offset between local time and GMT behaves as expected.
*/
-static void TestGMTvsLocal()
+static void TestGMTvsLocal(void)
{
log_verbose("\nTesting the offset between the GMT and local time\n");
testZones(1999, 1, 1, 12, 0, 0);
@@ -1551,7 +1551,7 @@ static void verify2(const char* msg, UCalendar* c, UDateFormat* dat, int32_t yea
}
-void TestGregorianChange() {
+void TestGregorianChange(void) {
static const UChar utc[] = { 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0 }; /* "Etc/GMT" */
const int32_t dayMillis = 86400 * INT64_C(1000); /* 1 day = 86400 seconds */
UCalendar *cal;
@@ -1615,7 +1615,7 @@ void TestGregorianChange() {
ucal_close(cal);
}
-static void TestGetKeywordValuesForLocale() {
+static void TestGetKeywordValuesForLocale(void) {
#define PREFERRED_SIZE 26
#define MAX_NUMBER_OF_KEYWORDS 5
const char *PREFERRED[PREFERRED_SIZE][MAX_NUMBER_OF_KEYWORDS+1] = {
@@ -1816,7 +1816,7 @@ static const UChar logDateFormat[] = { 0x0045,0x0045,0x0045,0x0020,0x004D,0x004D
0x0073,0x0073,0x002E,0x0053,0x0053,0x0053,0 }; /* "EEE MMM dd yyyy G HH:mm:ss.SSS" */
enum { kFormattedDateMax = 2*UPRV_LENGTHOF(logDateFormat) };
-static void TestWeekend() {
+static void TestWeekend(void) {
const TestWeekendDatesList * testDatesPtr = testDates;
const TestDaysOfWeekList * testDaysPtr = testDays;
int32_t count, subCount;
@@ -1956,7 +1956,7 @@ static const TFDItem tfdItems[] = {
{ NULL, NULL, 0.0, 0.0, false, 0, 0, 0, 0, 0, 0 } /* terminator */
};
-void TestFieldDifference() {
+void TestFieldDifference(void) {
const TFDItem * tfdItemPtr;
for (tfdItemPtr = tfdItems; tfdItemPtr->timezone != NULL; tfdItemPtr++) {
UErrorCode status = U_ZERO_ERROR;
@@ -2031,7 +2031,7 @@ void TestFieldDifference() {
}
}
-void TestAmbiguousWallTime() {
+void TestAmbiguousWallTime(void) {
UErrorCode status = U_ZERO_ERROR;
UChar tzID[32];
UCalendar* ucal;
@@ -2162,7 +2162,7 @@ static const EraTestItem eraTestItems[] = {
static const UChar zoneGMT[] = { 0x47,0x4D,0x54,0 };
-void TestAddRollEra0AndEraBounds() {
+void TestAddRollEra0AndEraBounds(void) {
const EraTestItem * eraTestItemPtr;
for (eraTestItemPtr = eraTestItems; eraTestItemPtr->locale != NULL; eraTestItemPtr++) {
UErrorCode status = U_ZERO_ERROR;
@@ -2385,7 +2385,7 @@ static const TZTransitionItem tzTransitionItems[] = {
{ NULL, NULL, 0, 0, 0, false, false } /* terminator */
};
-void TestGetTZTransition() {
+void TestGetTZTransition(void) {
UErrorCode status = U_ZERO_ERROR;
UCalendar * ucal = ucal_open(zoneGMT, -1, "en", UCAL_GREGORIAN, &status);
if ( U_SUCCESS(status) ) {
@@ -2455,7 +2455,7 @@ static const UChar sBogusWithVariantCharacters[] = /* Bogus with Variant charact
{0x48,0xE8,0x2113,0x2113,0xF4,0x20,0x57,0xF4,0x159,0x2113,0x3B4,0x00};
#endif
-void TestGetWindowsTimeZoneID() {
+void TestGetWindowsTimeZoneID(void) {
UErrorCode status;
UChar winID[64];
int32_t len;
@@ -2489,7 +2489,7 @@ void TestGetWindowsTimeZoneID() {
}
}
-void TestGetTimeZoneIDByWindowsID() {
+void TestGetTimeZoneIDByWindowsID(void) {
UErrorCode status;
UChar tzID[64];
int32_t len;
@@ -2543,7 +2543,7 @@ void TestGetTimeZoneIDByWindowsID() {
// The following currently assumes that Reiwa is the last known/valid era.
// Filed ICU-20551 to generalize this when we have more time...
-void TestJpnCalAddSetNextEra() {
+void TestJpnCalAddSetNextEra(void) {
UErrorCode status = U_ZERO_ERROR;
UCalendar *jCal = ucal_open(NULL, 0, "ja_JP@calendar=japanese", UCAL_DEFAULT, &status);
if ( U_FAILURE(status) ) {
@@ -2588,7 +2588,7 @@ void TestJpnCalAddSetNextEra() {
}
}
-void TestUcalOpenBufferRead() {
+void TestUcalOpenBufferRead(void) {
// ICU-21004: The issue shows under valgrind or as an Address Sanitizer failure.
UErrorCode status = U_ZERO_ERROR;
// string length: 157 + 1 + 100 = 258
@@ -2602,7 +2602,7 @@ void TestUcalOpenBufferRead() {
* Testing ucal_getTimeZoneOffsetFromLocal
*/
void
-TestGetTimeZoneOffsetFromLocal() {
+TestGetTimeZoneOffsetFromLocal(void) {
static const UChar utc[] = u"Etc/GMT";
const int32_t HOUR = 60*60*1000;
@@ -2814,7 +2814,7 @@ TestGetTimeZoneOffsetFromLocal() {
}
void
-TestFWWithISO8601() {
+TestFWWithISO8601(void) {
/* UCAL_SUNDAY is 1, UCAL_MONDAY is 2, ..., UCAL_SATURDAY is 7 */
const char* LOCALES[] = {
"",
@@ -2843,7 +2843,7 @@ TestFWWithISO8601() {
}
void
-TestGetIanaTimeZoneID() {
+TestGetIanaTimeZoneID(void) {
const UChar* UNKNOWN = u"Etc/Unknown";
typedef struct {
const UChar* id;
diff --git a/icu4c/source/test/cintltst/ccapitst.c b/icu4c/source/test/cintltst/ccapitst.c
index 376388bf4..fbcf7b6c4 100644
--- a/icu4c/source/test/cintltst/ccapitst.c
+++ b/icu4c/source/test/cintltst/ccapitst.c
@@ -15,6 +15,7 @@
******************************************************************************
*/
+#include <stdalign.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
@@ -37,9 +38,6 @@
#define MAX_FILE_LEN 1024*20
#define UCS_FILE_NAME_SIZE 512
-/* Similar to C++ alignof(type) */
-#define ALIGNOF(type) offsetof (struct { char c; type member; }, member)
-
/*returns an action other than the one provided*/
#if !UCONFIG_NO_LEGACY_CONVERSION
static UConverterFromUCallback otherUnicodeAction(UConverterFromUCallback MIA);
@@ -238,7 +236,7 @@ static void ListNames(void) {
}
-static void TestConvert()
+static void TestConvert(void)
{
#if !UCONFIG_NO_LEGACY_CONVERSION
char myptr[4];
@@ -1150,7 +1148,7 @@ static void TestFlushCache(void) {
* aliases map back to itself. Check some hard-coded UTF-8 and
* ISO_2022 aliases to make sure they work.
*/
-static void TestAlias() {
+static void TestAlias(void) {
int32_t i, ncnv;
UErrorCode status = U_ZERO_ERROR;
@@ -1338,7 +1336,7 @@ static void TestDuplicateAlias(void) {
/* Test safe clone callback */
-static uint32_t TSCC_nextSerial()
+static uint32_t TSCC_nextSerial(void)
{
static uint32_t n = 1;
@@ -1489,7 +1487,7 @@ static void TSCC_print_log(TSCCContext *q, const char *name)
}
}
-static void TestConvertSafeCloneCallback()
+static void TestConvertSafeCloneCallback(void)
{
UErrorCode err = U_ZERO_ERROR;
TSCCContext from1, to1;
@@ -1668,7 +1666,7 @@ containsAnyOtherByte(uint8_t *p, int32_t length, uint8_t b) {
return false;
}
-static void TestConvertSafeClone()
+static void TestConvertSafeClone(void)
{
/* one 'regular' & all the 'private stateful' converters */
static const char *const names[] = {
@@ -1837,7 +1835,7 @@ static void TestConvertSafeClone()
/* close the original immediately to make sure that the clone works by itself */
ucnv_close(cnv);
- if( actualSizes[idx] <= (bufferSizes[j] - (int32_t)ALIGNOF(UConverter)) &&
+ if( actualSizes[idx] <= (bufferSizes[j] - (int32_t)alignof(UConverter)) &&
err == U_SAFECLONE_ALLOCATED_WARNING
) {
log_err("ucnv_safeClone(%s) did a heap clone although the buffer was large enough\n", names[idx]);
@@ -1906,7 +1904,7 @@ static void TestConvertSafeClone()
}
-static void TestConvertClone()
+static void TestConvertClone(void)
{
/* one 'regular' & all the 'private stateful' converters */
static const char *const names[] = {
@@ -2037,7 +2035,7 @@ static void TestConvertClone()
}
}
-static void TestCCSID() {
+static void TestCCSID(void) {
#if !UCONFIG_NO_LEGACY_CONVERSION
UConverter *cnv;
UErrorCode errorCode;
@@ -2101,7 +2099,7 @@ TestJ932(void)
*
* Bug report and test code provided by Edward J. Batutis.
*/
-static void bug1()
+static void bug1(void)
{
#if !UCONFIG_NO_LEGACY_CONVERSION
char char_in[CHUNK_SIZE+32];
@@ -2147,7 +2145,7 @@ static void bug1()
}
/* bug2: pre-flighting loop bug: simple overflow causes bug */
-static void bug2()
+static void bug2(void)
{
/* US-ASCII "1234567890" */
static const char source[]={ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };
@@ -2221,7 +2219,7 @@ static void bug2()
* bug3: when the characters expand going from source to target codepage
* you get bug3 in addition to bug2
*/
-static void bug3()
+static void bug3(void)
{
#if !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
char char_in[CHUNK_SIZE*4];
@@ -2391,7 +2389,7 @@ convertExMultiStreaming(UConverter *srcCnv, UConverter *targetCnv,
7, testName, expectCode);
}
-static void TestConvertEx() {
+static void TestConvertEx(void) {
#if !UCONFIG_NO_LEGACY_CONVERSION
static const uint8_t
utf8[]={
@@ -2785,7 +2783,7 @@ static void testFromBadUTF8(UConverter *utf8Cnv, UConverter *cnv, const char *co
}
/* Test illegal UTF-8 input. */
-static void TestConvertExFromUTF8() {
+static void TestConvertExFromUTF8(void) {
static const char *const converterNames[]={
#if !UCONFIG_NO_LEGACY_CONVERSION
"windows-1252",
@@ -2828,7 +2826,7 @@ static void TestConvertExFromUTF8() {
ucnv_close(utf8Cnv);
}
-static void TestConvertExFromUTF8_C5F0() {
+static void TestConvertExFromUTF8_C5F0(void) {
static const char *const converterNames[]={
#if !UCONFIG_NO_LEGACY_CONVERSION
"windows-1251",
@@ -2914,7 +2912,7 @@ static void TestConvertExFromUTF8_C5F0() {
}
static void
-TestConvertAlgorithmic() {
+TestConvertAlgorithmic(void) {
#if !UCONFIG_NO_LEGACY_CONVERSION
static const uint8_t
utf8[]={
@@ -3337,7 +3335,7 @@ cleanup:
}
static void
-TestEBCDICSwapLFNL() {
+TestEBCDICSwapLFNL(void) {
static const struct {
const char *name;
UBool swap;
@@ -3362,7 +3360,7 @@ TestEBCDICSwapLFNL() {
}
#endif
-static void TestFromUCountPending(){
+static void TestFromUCountPending(void){
#if !UCONFIG_NO_LEGACY_CONVERSION
UErrorCode status = U_ZERO_ERROR;
/* const UChar expectedUnicode[] = { 0x20ac, 0x0005, 0x0006, 0x000b, 0xdbc4, 0xde34, 0xd84d, 0xdc56, 0xfffd}; */
@@ -3466,7 +3464,7 @@ static void TestFromUCountPending(){
}
static void
-TestToUCountPending(){
+TestToUCountPending(void){
#if !UCONFIG_NO_LEGACY_CONVERSION
UErrorCode status = U_ZERO_ERROR;
static const struct {
@@ -3664,7 +3662,7 @@ compareNames(const char **names) {
}
static void
-TestCompareNames() {
+TestCompareNames(void) {
static const char *equalUTF8[]={ "=", "UTF-8", "utf_8", "u*T@f08", "Utf 8", NULL };
static const char *equalIBM[]={ "=", "ibm-37", "IBM037", "i-B-m 00037", "ibm-0037", "IBM00037", NULL };
static const char *lessMac[]={ "<", "macos-0_1-10.2", "macos-1-10.0.2", "macos-1-10.2", NULL };
@@ -3677,7 +3675,7 @@ TestCompareNames() {
}
static void
-TestSubstString() {
+TestSubstString(void) {
static const UChar surrogate[1]={ 0xd900 };
char buffer[16];
@@ -3768,7 +3766,7 @@ TestSubstString() {
}
static void
-InvalidArguments() {
+InvalidArguments(void) {
UConverter *cnv;
UErrorCode errorCode;
char charBuffer[2] = {1, 1};
@@ -3821,7 +3819,7 @@ InvalidArguments() {
ucnv_close(cnv);
}
-static void TestGetName() {
+static void TestGetName(void) {
static const char *const names[] = {
"Unicode", "UTF-16",
"UnicodeBigUnmarked", "UTF-16BE",
@@ -3845,7 +3843,7 @@ static void TestGetName() {
}
}
-static void TestUTFBOM() {
+static void TestUTFBOM(void) {
static const UChar a16[] = { 0x61 };
static const char *const names[] = {
"UTF-16",
diff --git a/icu4c/source/test/cintltst/ccurrtst.c b/icu4c/source/test/cintltst/ccurrtst.c
index f2111f4e2..f54af9cf9 100644
--- a/icu4c/source/test/cintltst/ccurrtst.c
+++ b/icu4c/source/test/cintltst/ccurrtst.c
@@ -37,7 +37,7 @@ void addCurrencyCollTest(TestNode** root)
}
-void currTest()
+void currTest(void)
{
/* All the currency symbols, in UCA order*/
static const UChar currency[][2] =
diff --git a/icu4c/source/test/cintltst/cdateintervalformattest.c b/icu4c/source/test/cintltst/cdateintervalformattest.c
index 4c535830a..298dcae42 100644
--- a/icu4c/source/test/cintltst/cdateintervalformattest.c
+++ b/icu4c/source/test/cintltst/cdateintervalformattest.c
@@ -94,7 +94,7 @@ enum {
kFormatBufLen = 128
};
-static void TestDateIntervalFormat()
+static void TestDateIntervalFormat(void)
{
const DateIntervalFormatTestItem * testItemPtr;
UErrorCode status = U_ZERO_ERROR;
@@ -317,7 +317,7 @@ static const LocaleAndSkeletonItem locSkelItems[] = {
enum { kSizeUBuf = 96, kSizeBBuf = 192 };
-static void TestFPos_SkelWithSeconds()
+static void TestFPos_SkelWithSeconds(void)
{
const LocaleAndSkeletonItem * locSkelItemPtr;
for (locSkelItemPtr = locSkelItems; locSkelItemPtr->locale != NULL; locSkelItemPtr++) {
@@ -359,7 +359,7 @@ static void TestFPos_SkelWithSeconds()
}
}
-static void TestFormatToResult() {
+static void TestFormatToResult(void) {
UErrorCode ec = U_ZERO_ERROR;
UDateIntervalFormat* fmt = udtitvfmt_open("de", u"dMMMMyHHmm", -1, zoneGMT, -1, &ec);
UFormattedDateInterval* fdi = udtitvfmt_openResult(&ec);
@@ -420,7 +420,7 @@ static void TestFormatToResult() {
udtitvfmt_closeResult(fdi);
}
-static void TestFormatCalendarToResult() {
+static void TestFormatCalendarToResult(void) {
UErrorCode ec = U_ZERO_ERROR;
UCalendar* ucal1 = ucal_open(zoneGMT, -1, "de", UCAL_DEFAULT, &ec);
ucal_setMillis(ucal1, Date201009270800, &ec);
diff --git a/icu4c/source/test/cintltst/cdattst.c b/icu4c/source/test/cintltst/cdattst.c
index c390f1e4a..ec2af5a0d 100644
--- a/icu4c/source/test/cintltst/cdattst.c
+++ b/icu4c/source/test/cintltst/cdattst.c
@@ -51,6 +51,7 @@ static void TestNarrowQuarters(void);
static void TestExtraneousCharacters(void);
static void TestParseTooStrict(void);
static void TestHourCycle(void);
+static void TestLocaleNameCrash(void);
void addDateForTest(TestNode** root);
@@ -76,9 +77,10 @@ void addDateForTest(TestNode** root)
TESTCASE(TestExtraneousCharacters);
TESTCASE(TestParseTooStrict);
TESTCASE(TestHourCycle);
+ TESTCASE(TestLocaleNameCrash);
}
/* Testing the DateFormat API */
-static void TestDateFormat()
+static void TestDateFormat(void)
{
UDateFormat *def, *fr, *it, *de, *def1, *fr_pat;
UDateFormat *any;
@@ -438,7 +440,7 @@ enum { kDateOrTimeOutMax = 96, kDateAndTimeOutMax = 192 };
static const UDate minutesTolerance = 2 * 60.0 * 1000.0;
static const UDate daysTolerance = 2 * 24.0 * 60.0 * 60.0 * 1000.0;
-static void TestRelativeDateFormat()
+static void TestRelativeDateFormat(void)
{
UDate today = 0.0;
const UDateFormatStyle * stylePtr;
@@ -588,7 +590,7 @@ static void TestRelativeDateFormat()
}
/*Testing udat_getSymbols() and udat_setSymbols() and udat_countSymbols()*/
-static void TestSymbols()
+static void TestSymbols(void)
{
UDateFormat *def, *fr, *zhChiCal, *esMX;
UErrorCode status = U_ZERO_ERROR;
@@ -862,7 +864,7 @@ free(pattern);
/**
* Test DateFormat(Calendar) API
*/
-static void TestDateFormatCalendar() {
+static void TestDateFormatCalendar(void) {
UDateFormat *date=0, *time=0, *full=0;
UCalendar *cal=0;
UChar buf[256];
@@ -989,7 +991,7 @@ static void TestDateFormatCalendar() {
/**
* Test parsing two digit year against "YY" vs. "YYYY" patterns
*/
-static void TestCalendarDateParse() {
+static void TestCalendarDateParse(void) {
int32_t result;
UErrorCode ec = U_ZERO_ERROR;
@@ -1069,7 +1071,7 @@ static void TestCalendarDateParse() {
/*INTERNAL FUNCTIONS USED*/
-static int getCurrentYear() {
+static int getCurrentYear(void) {
static int currentYear = 0;
if (currentYear == 0) {
UErrorCode status = U_ZERO_ERROR;
@@ -1302,7 +1304,7 @@ static UBool _aux2ExtremeDates(UDateFormat* fmt, UDate small, UDate large,
* 0.75*10^30, etc. A logarithmic search will find 10^15, then 10^7.5
* and 10^22.5, etc.
*/
-static void TestExtremeDates() {
+static void TestExtremeDates(void) {
UDateFormat *fmt;
UErrorCode ec;
UChar buf[256];
@@ -2129,4 +2131,17 @@ static void TestHourCycle(void) {
}
}
+static void TestLocaleNameCrash(void) {
+ UErrorCode status = U_ZERO_ERROR;
+ UDateFormat icudf;
+
+ icudf = udat_open(UDAT_MEDIUM, UDAT_NONE, "notalanguage", NULL, 0, NULL, 0, &status);
+ if ( U_SUCCESS(status) ) {
+ log_verbose("Success: did not crash on udat_open(locale=\"notalanguage\")\n");
+ } else {
+ log_err("FAIL: didn't crash on udat_open(locale=\"notalanguage\"), but got %s.\n", u_errorName(status));
+ }
+ udat_close(icudf);
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/cintltst/cdetst.c b/icu4c/source/test/cintltst/cdetst.c
index 697633c96..778fa297e 100644
--- a/icu4c/source/test/cintltst/cdetst.c
+++ b/icu4c/source/test/cintltst/cdetst.c
@@ -99,7 +99,7 @@ void addGermanCollTest(TestNode** root)
}
-static void TestTertiary( )
+static void TestTertiary(void)
{
int32_t i;
@@ -119,7 +119,7 @@ static void TestTertiary( )
ucol_close(myCollation);
}
-static void TestPrimary()
+static void TestPrimary(void)
{
int32_t i;
diff --git a/icu4c/source/test/cintltst/cdtdptst.c b/icu4c/source/test/cintltst/cdtdptst.c
index 5bc0c152a..174c46955 100644
--- a/icu4c/source/test/cintltst/cdtdptst.c
+++ b/icu4c/source/test/cintltst/cdtdptst.c
@@ -50,7 +50,7 @@ void addDtFrDepTest(TestNode** root)
/**
* Test the parsing of 2-digit years.
*/
-void TestTwoDigitYearDSTParse()
+void TestTwoDigitYearDSTParse(void)
{
UDateFormat *fullFmt, *fmt;
UErrorCode status = U_ZERO_ERROR;
@@ -114,7 +114,7 @@ void TestTwoDigitYearDSTParse()
* correctly. In some instances, this means not being parsed at all, and
* returning an appropriate error.
*/
-void TestPartialParse994()
+void TestPartialParse994(void)
{
int32_t pos;
UDateFormat *f;
@@ -197,7 +197,7 @@ void tryPat994(UDateFormat* format, const char* pattern, const char* s, UDate ex
* Verify the behavior of patterns in which digits for different fields run together
* without intervening separators.
*/
-void TestRunTogetherPattern985()
+void TestRunTogetherPattern985(void)
{
int32_t pos;
UChar *pattern=NULL, *now=NULL, *then=NULL;
@@ -231,7 +231,7 @@ void TestRunTogetherPattern985()
* Verify the handling of Czech June and July, which have the unique attribute that
* one is a proper prefix substring of the other.
*/
-void TestCzechMonths459()
+void TestCzechMonths459(void)
{
int32_t lneed, pos;
UChar *pattern=NULL, *tzID=NULL;
@@ -305,7 +305,7 @@ void TestCzechMonths459()
/**
* Test the handling of single quotes in patterns.
*/
-void TestQuotePattern161()
+void TestQuotePattern161(void)
{
UDateFormat *format = NULL;
UCalendar *cal = NULL;
diff --git a/icu4c/source/test/cintltst/cdtrgtst.c b/icu4c/source/test/cintltst/cdtrgtst.c
index 5ee21e294..54bdc7228 100644
--- a/icu4c/source/test/cintltst/cdtrgtst.c
+++ b/icu4c/source/test/cintltst/cdtrgtst.c
@@ -52,7 +52,7 @@ void addDateForRgrTest(TestNode** root)
/**
* @bug 4029195
*/
-void Test4029195()
+void Test4029195(void)
{
int32_t resultlength, resultlengthneeded;
UChar *fmdt, *todayS, *rt;
@@ -128,7 +128,7 @@ void Test4029195()
* @bug 4056591
* Verify the function of the [s|g]et2DigitYearStart() API.
*/
-void Test4056591()
+void Test4056591(void)
{
int i;
UCalendar *cal;
@@ -210,7 +210,7 @@ void Test4056591()
* SimpleDateFormat does not properly parse date strings without delimiters
* @bug 4059917
*/
-void Test4059917()
+void Test4059917(void)
{
UDateFormat* def;
UChar *myDate;
@@ -311,7 +311,7 @@ void aux917( UDateFormat *fmt, UChar* str)
/**
* @bug 4060212
*/
-void Test4060212()
+void Test4060212(void)
{
int32_t pos;
UCalendar *cal;
@@ -359,7 +359,7 @@ void Test4060212()
/**
* @bug 4061287
*/
-void Test4061287()
+void Test4061287(void)
{
UBool ok;
int32_t pos;
@@ -411,7 +411,7 @@ void Test4061287()
/**
* @bug 4073003
*/
-void Test4073003()
+void Test4073003(void)
{
int32_t pos,i;
UDate d,dd;
@@ -480,7 +480,7 @@ void Test4073003()
/**
* @bug 4162071
**/
-void Test4162071()
+void Test4162071(void)
{
int32_t pos;
UDate x;
diff --git a/icu4c/source/test/cintltst/cestst.c b/icu4c/source/test/cintltst/cestst.c
index 228fe811b..38c432c2d 100644
--- a/icu4c/source/test/cintltst/cestst.c
+++ b/icu4c/source/test/cintltst/cestst.c
@@ -84,7 +84,7 @@ void addSpanishCollTest(TestNode** root)
}
-static void TestTertiary( )
+static void TestTertiary(void)
{
int32_t i;
@@ -103,7 +103,7 @@ static void TestTertiary( )
ucol_close(myCollation);
}
-static void TestPrimary()
+static void TestPrimary(void)
{
int32_t i;
diff --git a/icu4c/source/test/cintltst/cfintst.c b/icu4c/source/test/cintltst/cfintst.c
index d81d90c63..8b8b35c62 100644
--- a/icu4c/source/test/cintltst/cfintst.c
+++ b/icu4c/source/test/cintltst/cfintst.c
@@ -75,7 +75,7 @@ void addFinnishCollTest(TestNode** root)
}
-static void TestTertiary( )
+static void TestTertiary(void)
{
int32_t i;
@@ -93,7 +93,7 @@ static void TestTertiary( )
ucol_close(myCollation);
}
-static void TestPrimary()
+static void TestPrimary(void)
{
int32_t i;
diff --git a/icu4c/source/test/cintltst/cfrtst.c b/icu4c/source/test/cintltst/cfrtst.c
index de356466e..a4e358620 100644
--- a/icu4c/source/test/cintltst/cfrtst.c
+++ b/icu4c/source/test/cintltst/cfrtst.c
@@ -143,7 +143,7 @@ void addFrenchCollTest(TestNode** root)
}
-static void TestTertiary( )
+static void TestTertiary(void)
{
int32_t i;
@@ -168,7 +168,7 @@ static void TestTertiary( )
ucol_close(myCollation);
}
-static void TestSecondary()
+static void TestSecondary(void)
{
int32_t i,j, testAcuteSize;
UCollationResult expected=UCOL_EQUAL;
@@ -199,7 +199,7 @@ static void TestSecondary()
ucol_close(myCollation);
}
-static void TestExtra()
+static void TestExtra(void)
{
int32_t i, j;
UErrorCode status = U_ZERO_ERROR;
@@ -220,7 +220,7 @@ static void TestExtra()
ucol_close(myCollation);
}
-static void TestGetSortKey() {
+static void TestGetSortKey(void) {
/* This is meant to test a buffer reallocation crash while using
French secondary sorting with a large buffer.
The fact that Japanese characters are used is irrelevant. */
diff --git a/icu4c/source/test/cintltst/cg7coll.c b/icu4c/source/test/cintltst/cg7coll.c
index e857afbdd..1bc827ede 100644
--- a/icu4c/source/test/cintltst/cg7coll.c
+++ b/icu4c/source/test/cintltst/cg7coll.c
@@ -135,7 +135,7 @@ void addRuleBasedCollTest(TestNode** root)
}
-static void TestG7Locales()
+static void TestG7Locales(void)
{
UCollator *myCollation;
UErrorCode status = U_ZERO_ERROR;
@@ -195,7 +195,7 @@ static void TestG7Locales()
}
}
-static void TestDemo1()
+static void TestDemo1(void)
{
UCollator *myCollation;
int32_t j, n;
@@ -226,7 +226,7 @@ static void TestDemo1()
ucol_close(myCollation);
}
-static void TestDemo2()
+static void TestDemo2(void)
{
UCollator *myCollation;
int32_t j, n;
@@ -255,7 +255,7 @@ static void TestDemo2()
ucol_close(myCollation);
}
-static void TestDemo3()
+static void TestDemo3(void)
{
UCollator *myCollation;
int32_t j, n;
@@ -285,7 +285,7 @@ static void TestDemo3()
ucol_close(myCollation);
}
-static void TestDemo4()
+static void TestDemo4(void)
{
UCollator *myCollation;
int32_t j, n;
diff --git a/icu4c/source/test/cintltst/chashtst.c b/icu4c/source/test/cintltst/chashtst.c
index 2ea34939b..a4b774d93 100644
--- a/icu4c/source/test/cintltst/chashtst.c
+++ b/icu4c/source/test/cintltst/chashtst.c
@@ -155,7 +155,7 @@ static void TestBasic(void) {
uhash_close(hash);
}
-static void TestAllowZero() {
+static void TestAllowZero(void) {
UErrorCode status = U_ZERO_ERROR;
UHashtable *hash = uhash_open(hashChars, isEqualChars, NULL, &status);
if (U_FAILURE(status)) {
diff --git a/icu4c/source/test/cintltst/cintltst.c b/icu4c/source/test/cintltst/cintltst.c
index 567be7ba9..d0eb7bbd3 100644
--- a/icu4c/source/test/cintltst/cintltst.c
+++ b/icu4c/source/test/cintltst/cintltst.c
@@ -316,7 +316,7 @@ void ctest_setICU_DATA() {
* The ICU data directory must be preserved across these operations.
* Here is a helper function to assist with that.
*/
-static char *safeGetICUDataDirectory() {
+static char *safeGetICUDataDirectory(void) {
const char *dataDir = u_getDataDirectory(); /* Returned string vanashes with u_cleanup */
char *retStr = NULL;
if (dataDir != NULL) {
@@ -326,7 +326,7 @@ static char *safeGetICUDataDirectory() {
return retStr;
}
-UBool ctest_resetICU() {
+UBool ctest_resetICU(void) {
UErrorCode status = U_ZERO_ERROR;
char *dataDir = safeGetICUDataDirectory();
@@ -495,7 +495,7 @@ void *ctst_malloc(size_t size) {
}
#ifdef CTST_LEAK_CHECK
-static void ctst_freeAll() {
+static void ctst_freeAll(void) {
int i;
if(ctst_free == false) { /* only free up to the allocated mark */
for(i=0; i<ctst_allocated; i++) {
diff --git a/icu4c/source/test/cintltst/cintltst.vcxproj b/icu4c/source/test/cintltst/cintltst.vcxproj
index 0183f3bf0..9f3b8129e 100644
--- a/icu4c/source/test/cintltst/cintltst.vcxproj
+++ b/icu4c/source/test/cintltst/cintltst.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;..\..\i18n;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(OutDir)\cintltst.pch</PrecompiledHeaderOutputFile>
@@ -88,9 +87,6 @@
<ClCompile Include="cmsccoll.c" />
<ClCompile Include="cturtst.c" />
<ClCompile Include="encoll.c" />
- <ClCompile Include="usrchdat.c">
- <ExcludedFromBuild>true</ExcludedFromBuild>
- </ClCompile>
<ClCompile Include="usrchtst.c" />
<ClCompile Include="chashtst.c" />
<ClCompile Include="sorttest.c" />
@@ -179,6 +175,7 @@
<ClInclude Include="cjaptst.h" />
<ClInclude Include="cturtst.h" />
<ClInclude Include="encoll.h" />
+ <ClInclude Include="usrchdat.inc" />
<ClInclude Include="ccapitst.h" />
<ClInclude Include="nccbtst.h" />
<ClInclude Include="ncnvfbts.h" />
diff --git a/icu4c/source/test/cintltst/cintltst.vcxproj.filters b/icu4c/source/test/cintltst/cintltst.vcxproj.filters
index 3628b0956..1933d37fc 100644
--- a/icu4c/source/test/cintltst/cintltst.vcxproj.filters
+++ b/icu4c/source/test/cintltst/cintltst.vcxproj.filters
@@ -105,9 +105,6 @@
<ClCompile Include="encoll.c">
<Filter>collation</Filter>
</ClCompile>
- <ClCompile Include="usrchdat.c">
- <Filter>collation</Filter>
- </ClCompile>
<ClCompile Include="usrchtst.c">
<Filter>collation</Filter>
</ClCompile>
@@ -371,6 +368,9 @@
<ClInclude Include="encoll.h">
<Filter>collation</Filter>
</ClInclude>
+ <ClInclude Include="usrchdat.inc">
+ <Filter>collation</Filter>
+ </ClInclude>
<ClInclude Include="ccapitst.h">
<Filter>conversion</Filter>
</ClInclude>
diff --git a/icu4c/source/test/cintltst/citertst.c b/icu4c/source/test/cintltst/citertst.c
index 4c50f32e3..0a44d450a 100644
--- a/icu4c/source/test/cintltst/citertst.c
+++ b/icu4c/source/test/cintltst/citertst.c
@@ -65,7 +65,7 @@ void addCollIterTest(TestNode** root)
static const char * LOCALES[] = {"en_AU", "en_BE", "en_CA"};
-static void TestBug672() {
+static void TestBug672(void) {
UErrorCode status = U_ZERO_ERROR;
UChar pattern[20];
UChar text[50];
@@ -138,7 +138,7 @@ static void TestBug672() {
/* Running this test with normalization enabled showed up a bug in the incremental
normalization code. */
-static void TestBug672Normalize() {
+static void TestBug672Normalize(void) {
UErrorCode status = U_ZERO_ERROR;
UChar pattern[20];
UChar text[50];
@@ -217,7 +217,7 @@ static void TestBug672Normalize() {
* Test for CollationElementIterator previous and next for the whole set of
* unicode characters.
*/
-static void TestUnicodeChar()
+static void TestUnicodeChar(void)
{
UChar source[0x100];
UCollator *en_us;
@@ -283,7 +283,7 @@ static void TestUnicodeChar()
* Test for CollationElementIterator previous and next for the whole set of
* unicode characters with normalization on.
*/
-static void TestNormalizedUnicodeChar()
+static void TestNormalizedUnicodeChar(void)
{
UChar source[0x100];
UCollator *th_th;
@@ -347,7 +347,7 @@ static void TestNormalizedUnicodeChar()
/**
* Test the incremental normalization
*/
-static void TestNormalization()
+static void TestNormalization(void)
{
UErrorCode status = U_ZERO_ERROR;
const char *str =
@@ -418,7 +418,7 @@ static void TestNormalization()
* @bug 4108758 - Make sure it works with contracting characters
*
*/
-static void TestPrevious()
+static void TestPrevious(void)
{
UCollator *coll=NULL;
UChar rule[50];
@@ -558,7 +558,7 @@ static void TestPrevious()
/**
* Test for getOffset() and setOffset()
*/
-static void TestOffset()
+static void TestOffset(void)
{
UErrorCode status= U_ZERO_ERROR;
UCollator *en_us=NULL;
@@ -703,7 +703,7 @@ static void TestOffset()
/**
* Test for setText()
*/
-static void TestSetText()
+static void TestSetText(void)
{
int32_t c,i;
UErrorCode status = U_ZERO_ERROR;
@@ -776,7 +776,7 @@ static void TestSetText()
/** @bug 4108762
* Test for getMaxExpansion()
*/
-static void TestMaxExpansion()
+static void TestMaxExpansion(void)
{
UErrorCode status = U_ZERO_ERROR;
UCollator *coll ;/*= ucol_open("en_US", &status);*/
@@ -934,7 +934,7 @@ static void assertEqual(UCollationElements *i1, UCollationElements *i2)
/**
* Testing iterators with extremely small buffers
*/
-static void TestSmallBuffer()
+static void TestSmallBuffer(void)
{
UErrorCode status = U_ZERO_ERROR;
UCollator *coll;
@@ -1007,7 +1007,7 @@ static void TestSmallBuffer()
/**
* Testing the discontiguous contractions
*/
-static void TestDiscontiguos() {
+static void TestDiscontiguos(void) {
const char *rulestr =
"&z < AB < X\\u0300 < ABC < X\\u0300\\u0315";
UChar rule[50];
diff --git a/icu4c/source/test/cintltst/cjaptst.c b/icu4c/source/test/cintltst/cjaptst.c
index c16ae8f06..4f1e110cb 100644
--- a/icu4c/source/test/cintltst/cjaptst.c
+++ b/icu4c/source/test/cintltst/cjaptst.c
@@ -115,7 +115,7 @@ void addKannaCollTest(TestNode** root)
addTest(root, &TestChooonKigoo, "tscoll/cjacoll/TestChooonKigoo");
}
-static void TestTertiary( )
+static void TestTertiary(void)
{
int32_t i;
UErrorCode status = U_ZERO_ERROR;
@@ -135,7 +135,7 @@ static void TestTertiary( )
}
/* Testing base letters */
-static void TestBase()
+static void TestBase(void)
{
int32_t i;
UErrorCode status = U_ZERO_ERROR;
diff --git a/icu4c/source/test/cintltst/cloctst.c b/icu4c/source/test/cintltst/cloctst.c
index b0b71bfa1..5815b14f2 100644
--- a/icu4c/source/test/cintltst/cloctst.c
+++ b/icu4c/source/test/cintltst/cloctst.c
@@ -64,7 +64,7 @@ static void TestExcessivelyLongIDs(void);
static void TestUldnNameVariants(void);
#endif
-void PrintDataTable();
+void PrintDataTable(void);
/*---------------------------------------------------
table of valid data
@@ -224,6 +224,7 @@ void addLocaleTest(TestNode** root)
TESTCASE(TestBasicGetters);
TESTCASE(TestNullDefault);
TESTCASE(TestPrefixes);
+ TESTCASE(TestVariantLengthLimit);
TESTCASE(TestSimpleResourceInfo);
TESTCASE(TestDisplayNames);
TESTCASE(TestGetDisplayScriptPreFlighting21160);
@@ -295,7 +296,7 @@ void addLocaleTest(TestNode** root)
/* testing uloc(), uloc_getName(), uloc_getLanguage(), uloc_getVariant(), uloc_getCountry() */
-static void TestBasicGetters() {
+static void TestBasicGetters(void) {
int32_t i;
int32_t cap;
UErrorCode status = U_ZERO_ERROR;
@@ -370,7 +371,7 @@ static void TestBasicGetters() {
}
}
-static void TestNullDefault() {
+static void TestNullDefault(void) {
UErrorCode status = U_ZERO_ERROR;
char original[ULOC_FULLNAME_CAPACITY];
@@ -434,7 +435,7 @@ static void TestNullDefault() {
#define PREFIXBUFSIZ 128
-static void TestPrefixes() {
+static void TestPrefixes(void) {
int row = 0;
int n;
const char *loc, *expected;
@@ -568,9 +569,85 @@ static void TestPrefixes() {
}
}
+static void TestVariantLengthLimit(void) {
+ static const char valid[] =
+ "_"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678";
+
+ static const char invalid[] =
+ "_"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678X"; // One character too long.
+
+ const char* const variantsExpected = valid + 2; // Skip initial "__".
+ const int32_t reslenExpected = uprv_strlen(variantsExpected);
+
+ char buffer[UPRV_LENGTHOF(invalid)];
+ UErrorCode status;
+
+ status = U_ZERO_ERROR;
+ int32_t reslen =
+ uloc_getVariant(valid, buffer, UPRV_LENGTHOF(buffer), &status);
+ if (U_FAILURE(status)) {
+ log_err("Unexpected error in uloc_getVariant(): %s\n",
+ myErrorName(status));
+ } else if (reslenExpected != reslen) {
+ log_err("Expected length %d but got length %d.\n",
+ reslenExpected, reslen);
+ } else if (uprv_strcmp(variantsExpected, buffer) != 0) {
+ log_err("Expected variants \"%s\" but got variants \"%s\"\n",
+ variantsExpected, buffer);
+ }
+
+ status = U_ZERO_ERROR;
+ uloc_getVariant(invalid, buffer, UPRV_LENGTHOF(buffer), &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ // The variants are known to be too long, parsing must fail.
+ log_err("Unexpected error in uloc_getVariant(), expected "
+ "U_ILLEGAL_ARGUMENT_ERROR but got %s.\n",
+ myErrorName(status));
+ }
+}
/* testing uloc_getISO3Language(), uloc_getISO3Country(), */
-static void TestSimpleResourceInfo() {
+static void TestSimpleResourceInfo(void) {
int32_t i;
char* testLocale = 0;
UChar* expected = 0;
@@ -696,7 +773,7 @@ static int32_t UCharsToEscapedAscii(const UChar* utext, int32_t len, char* resul
* The lookup of display names must not fall back through the default
* locale because that yields useless results.
*/
-static void TestDisplayNames()
+static void TestDisplayNames(void)
{
UChar buffer[100];
UErrorCode errorCode=U_ZERO_ERROR;
@@ -846,7 +923,7 @@ static void TestDisplayNames()
* ICU-21160 test the pre-flighting call to uloc_getDisplayScript returns the actual length needed
* for the result buffer.
*/
-static void TestGetDisplayScriptPreFlighting21160()
+static void TestGetDisplayScriptPreFlighting21160(void)
{
const char* locale = "und-Latn";
const char* inlocale = "de";
@@ -864,7 +941,7 @@ static void TestGetDisplayScriptPreFlighting21160()
}
/* test for uloc_getAvailable() and uloc_countAvailable()*/
-static void TestGetAvailableLocales()
+static void TestGetAvailableLocales(void)
{
const char *locList;
@@ -889,7 +966,7 @@ static void TestGetAvailableLocales()
}
}
-static void TestGetAvailableLocalesByType() {
+static void TestGetAvailableLocalesByType(void) {
UErrorCode status = U_ZERO_ERROR;
UEnumeration* uenum = uloc_openAvailableByType(ULOC_AVAILABLE_DEFAULT, &status);
@@ -961,7 +1038,7 @@ static void TestGetAvailableLocalesByType() {
}
/* test for u_getDataDirectory, u_setDataDirectory, uloc_getISO3Language */
-static void TestDataDirectory()
+static void TestDataDirectory(void)
{
char oldDirectory[512];
@@ -1197,7 +1274,7 @@ static const DisplayNameBracketsItem displayNameBracketsItems[] = {
enum { kDisplayNameBracketsMax = 128 };
-static void TestDisplayNameBrackets()
+static void TestDisplayNameBrackets(void)
{
const DisplayNameBracketsItem * itemPtr = displayNameBracketsItems;
for (; itemPtr->displayLocale != NULL; itemPtr++) {
@@ -1252,7 +1329,7 @@ static void TestDisplayNameBrackets()
* TestIllegalArgumentWhenNoDataWithNoSubstitute
*/
-static void TestIllegalArgumentWhenNoDataWithNoSubstitute()
+static void TestIllegalArgumentWhenNoDataWithNoSubstitute(void)
{
#if !UCONFIG_NO_FORMATTING
UErrorCode status = U_ZERO_ERROR;
@@ -1320,7 +1397,7 @@ static void TestIllegalArgumentWhenNoDataWithNoSubstitute()
#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
/* test for uloc_getISOLanguages, uloc_getISOCountries */
-static void TestISOFunctions()
+static void TestISOFunctions(void)
{
// Android-changed: Skip this test on Android because we allow extra languages added on devices.
if (true) {
@@ -1457,7 +1534,7 @@ static void TestISOFunctions()
}
#endif
-static void setUpDataTable()
+static void setUpDataTable(void)
{
int32_t i,j;
dataTable = (UChar***)(calloc(sizeof(UChar**),LOCALE_INFO_SIZE));
@@ -1470,7 +1547,7 @@ static void setUpDataTable()
}
}
-static void cleanUpDataTable()
+static void cleanUpDataTable(void)
{
int32_t i,j;
if(dataTable != NULL) {
@@ -1488,7 +1565,7 @@ static void cleanUpDataTable()
/**
* @bug 4011756 4011380
*/
-static void TestISO3Fallback()
+static void TestISO3Fallback(void)
{
const char* test="xx_YY";
@@ -1510,7 +1587,7 @@ static void TestISO3Fallback()
/**
* @bug 4118587
*/
-static void TestSimpleDisplayNames()
+static void TestSimpleDisplayNames(void)
{
/*
This test is different from TestDisplayNames because TestDisplayNames checks
@@ -1555,7 +1632,7 @@ static void TestSimpleDisplayNames()
/**
* @bug 4118595
*/
-static void TestUninstalledISO3Names()
+static void TestUninstalledISO3Names(void)
{
/* This test checks to make sure getISO3Language and getISO3Country work right
even for locales that are not installed (and some installed ones). */
@@ -1588,7 +1665,7 @@ static void TestUninstalledISO3Names()
}
-static void TestVariantParsing()
+static void TestVariantParsing(void)
{
static const char* en_US_custom="en_US_De Anza_Cupertino_California_United States_Earth";
static const char* dispName="English (United States, DE ANZA_CUPERTINO_CALIFORNIA_UNITED STATES_EARTH)";
@@ -3255,7 +3332,7 @@ static UBool isLocaleAvailable(UResourceBundle* resIndex, const char* loc){
return true;
}
-static void TestCalendar() {
+static void TestCalendar(void) {
#if !UCONFIG_NO_FORMATTING
int i;
UErrorCode status = U_ZERO_ERROR;
@@ -3291,7 +3368,7 @@ static void TestCalendar() {
#endif
}
-static void TestDateFormat() {
+static void TestDateFormat(void) {
#if !UCONFIG_NO_FORMATTING
int i;
UErrorCode status = U_ZERO_ERROR;
@@ -3334,7 +3411,7 @@ static void TestDateFormat() {
#endif
}
-static void TestCollation() {
+static void TestCollation(void) {
#if !UCONFIG_NO_COLLATION
int i;
UErrorCode status = U_ZERO_ERROR;
@@ -3406,7 +3483,7 @@ static const char* ULayoutTypeToString(ULayoutType type)
return "Unknown enum value for ULayoutType!";
}
-static void TestOrientation()
+static void TestOrientation(void)
{
static const OrientationStruct toTest [] = {
{ "ar", ULOC_LAYOUT_RTL, ULOC_LAYOUT_TTB },
@@ -3459,7 +3536,7 @@ static void TestOrientation()
}
}
-static void TestULocale() {
+static void TestULocale(void) {
int i;
UErrorCode status = U_ZERO_ERROR;
UResourceBundle *resIndex = ures_open(NULL,"res_index", &status);
@@ -3499,7 +3576,7 @@ static void TestULocale() {
}
-static void TestUResourceBundle() {
+static void TestUResourceBundle(void) {
const char* us1;
const char* us2;
@@ -3547,7 +3624,7 @@ static void TestUResourceBundle() {
ures_close(resIndex);
}
-static void TestDisplayName() {
+static void TestDisplayName(void) {
UChar oldCountry[256] = {'\0'};
UChar newCountry[256] = {'\0'};
@@ -3589,7 +3666,7 @@ static void TestDisplayName() {
}
}
-static void TestGetLocaleForLCID() {
+static void TestGetLocaleForLCID(void) {
int32_t i, length, lengthPre;
const char* testLocale = 0;
UErrorCode status = U_ZERO_ERROR;
@@ -3787,6 +3864,73 @@ const char* const basic_maximize_data[][2] = {
}, {
"_DE@em=emoji",
"de_Latn_DE@em=emoji"
+ }, {
+ // ICU-22547
+ // unicode_language_id = "root" |
+ // (unicode_language_subtag (sep unicode_script_subtag)? | unicode_script_subtag)
+ // (sep unicode_region_subtag)? (sep unicode_variant_subtag)* ;
+ // so "aaaa" is a well-formed unicode_language_id
+ "aaaa",
+ "aaaa",
+ }, {
+ // ICU-22727
+ // unicode_language_subtag = alpha{2,3} | alpha{5,8};
+ // so "bbbbb", "cccccc", "ddddddd", "eeeeeeee" are
+ // well-formed unicode_language_subtag and therefore
+ // well-formed unicode_language_id
+ // but "fffffffff" is not.
+ "bbbbb",
+ "bbbbb",
+ }, {
+ // ICU-22727
+ "cccccc",
+ "cccccc",
+ }, {
+ // ICU-22727
+ "ddddddd",
+ "ddddddd",
+ }, {
+ // ICU-22727
+ "eeeeeeee",
+ "eeeeeeee",
+ }, {
+ // ICU-22546
+ "und-Zzzz",
+ "en_Latn_US" // If change, please also update common/unicode/uloc.h
+ }, {
+ // ICU-22546
+ "en",
+ "en_Latn_US" // If change, please also update common/unicode/uloc.h
+ }, {
+ // ICU-22546
+ "de",
+ "de_Latn_DE" // If change, please also update common/unicode/uloc.h
+ }, {
+ // ICU-22546
+ "sr",
+ "sr_Cyrl_RS" // If change, please also update common/unicode/uloc.h
+ }, {
+ // ICU-22546
+ "sh",
+ // Android patch: addLikelySubtags("sh") returns "sh_Latn_RS" on Android
+ // TODO(b/335896974): Investigate why this patch is needed.
+ "sh_Latn_RS" // If change, please also update common/unicode/uloc.h
+ }, {
+ // ICU-22546
+ "zh_Hani",
+ "zh_Hani_CN" // If change, please also update common/unicode/uloc.h
+ }, {
+ // ICU-22545 & ICU-22742
+ "en_XA",
+ "en_Latn_XA"
+ }, {
+ // ICU-22545 & ICU-22742
+ "ar_XB",
+ "ar_Arab_XB"
+ }, {
+ // ICU-22545 & ICU-22742
+ "ru_XC",
+ "ru_Cyrl_XC"
}
};
@@ -5907,19 +6051,19 @@ const errorData maximizeErrors[] = {
"enfueiujhytdf",
NULL,
U_ILLEGAL_ARGUMENT_ERROR,
- -1
+ 0
},
{
"en_THUJIOGIURJHGJFURYHFJGURYYYHHGJURHG",
NULL,
U_ILLEGAL_ARGUMENT_ERROR,
- -1
+ 0
},
{
"en_THUJIOGIURJHGJFURYHFJGURYYYHHGJURHG",
NULL,
U_ILLEGAL_ARGUMENT_ERROR,
- -1
+ 0
},
{
"en_Latn_US_POSIX@currency=EURO",
@@ -5932,6 +6076,16 @@ const errorData maximizeErrors[] = {
"en_Latn_US_POSIX@currency=EURO",
U_STRING_NOT_TERMINATED_WARNING,
30
+ },
+ {
+ // ICU-22727
+ // unicode_language_subtag = alpha{2,3} | alpha{5,8};
+ // so "bbbbb", "cccccc", "ddddddd", "eeeeeeee" are
+ // well-formed unicode_language_id but "fffffffff" is not.
+ "fffffffff",
+ NULL,
+ U_ILLEGAL_ARGUMENT_ERROR,
+ 0
}
};
@@ -5940,13 +6094,13 @@ const errorData minimizeErrors[] = {
"enfueiujhytdf",
NULL,
U_ILLEGAL_ARGUMENT_ERROR,
- -1
+ 0
},
{
"en_THUJIOGIURJHGJFURYHFJGURYYYHHGJURHG",
NULL,
U_ILLEGAL_ARGUMENT_ERROR,
- -1
+ 0
},
{
"en_Latn_US_POSIX@currency=EURO",
@@ -5971,7 +6125,7 @@ static int32_t getExpectedReturnValue(const errorData* data)
}
else
{
- return -1;
+ return 0;
}
}
@@ -5991,7 +6145,7 @@ static int32_t getBufferSize(const errorData* data, int32_t actualSize)
}
}
-static void TestLikelySubtags()
+static void TestLikelySubtags(void)
{
char buffer[ULOC_FULLNAME_CAPACITY + ULOC_KEYWORD_AND_VALUES_CAPACITY + 1];
int32_t i = 0;
@@ -6018,7 +6172,7 @@ static void TestLikelySubtags()
}
}
else if (uprv_stricmp(maximal, buffer) != 0) {
- log_err(" maximal doesn't match expected %s in uloc_addLikelySubtags(), minimal \"%s\" = %s\n", maximal, minimal, buffer);
+ log_err("1 maximal doesn't match expected %s in uloc_addLikelySubtags(), minimal \"%s\" = %s\n", maximal, minimal, buffer);
}
}
@@ -6071,7 +6225,7 @@ static void TestLikelySubtags()
}
}
else if (uprv_stricmp(maximal, buffer) != 0) {
- log_err(" maximal doesn't match expected \"%s\" in uloc_addLikelySubtags(), minimal \"%s\" = \"%s\"\n", maximal, minimal, buffer);
+ log_err("2 maximal doesn't match expected \"%s\" in uloc_addLikelySubtags(), minimal \"%s\" = \"%s\"\n", maximal, minimal, buffer);
}
}
@@ -6133,7 +6287,7 @@ static void TestLikelySubtags()
}
else if (status == U_BUFFER_OVERFLOW_ERROR || status == U_STRING_NOT_TERMINATED_WARNING) {
if (uprv_strnicmp(maximal, buffer, bufferSize) != 0) {
- log_err(" maximal doesn't match expected %s in uloc_addLikelySubtags(), minimal \"%s\" = %*s\n",
+ log_err("3 maximal doesn't match expected %s in uloc_addLikelySubtags(), minimal \"%s\" = %*s\n",
maximal, minimal, (int)sizeof(buffer), buffer);
}
}
@@ -6890,7 +7044,7 @@ static void TestUnicodeDefines(void) {
TEST_UNICODE_DEFINE(ULOC_KEYWORD_ITEM_SEPARATOR, ULOC_KEYWORD_ITEM_SEPARATOR_UNICODE);
}
-static void TestIsRightToLeft() {
+static void TestIsRightToLeft(void) {
// API test only. More test cases in intltest/LocaleTest.
if(uloc_isRightToLeft("root") || !uloc_isRightToLeft("EN-HEBR")) {
log_err("uloc_isRightToLeft() failed");
@@ -6916,7 +7070,7 @@ static const BadLocaleItem badLocaleItems[] = {
enum { kUBufDispNameMax = 128, kBBufDispNameMax = 256 };
-static void TestBadLocaleIDs() {
+static void TestBadLocaleIDs(void) {
const BadLocaleItem* itemPtr;
for (itemPtr = badLocaleItems; itemPtr->badLocaleID != NULL; itemPtr++) {
UChar ubufExpect[kUBufDispNameMax], ubufGet[kUBufDispNameMax];
@@ -6940,7 +7094,7 @@ static void TestBadLocaleIDs() {
// Test case for ICU-20370.
// The issue shows as an Address Sanitizer failure.
-static void TestBug20370() {
+static void TestBug20370(void) {
const char *localeID = "x-privatebutreallylongtagfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar";
uint32_t lcid = uloc_getLCID(localeID);
if (lcid != 0) {
@@ -6950,7 +7104,7 @@ static void TestBug20370() {
// Test case for ICU-20149
// Handle the duplicate U extension attribute
-static void TestBug20149() {
+static void TestBug20149(void) {
const char *localeID = "zh-u-foo-foo-co-pinyin";
char locale[256];
UErrorCode status = U_ZERO_ERROR;
@@ -7105,7 +7259,7 @@ static const UldnLocAndOpts uldnLocAndOpts[] = {
enum { kUNameBuf = 128, kBNameBuf = 256 };
-static void TestUldnNameVariants() {
+static void TestUldnNameVariants(void) {
const UldnLocAndOpts * uloPtr;
for (uloPtr = uldnLocAndOpts; uloPtr->displayLocale != NULL; uloPtr++) {
UErrorCode status = U_ZERO_ERROR;
@@ -7189,7 +7343,7 @@ static void TestUldnNameVariants() {
}
#endif
-static void TestUsingDefaultWarning() {
+static void TestUsingDefaultWarning(void) {
UChar buff[256];
char errorOutputBuff[256];
UErrorCode status = U_ZERO_ERROR;
@@ -7262,7 +7416,7 @@ static void TestUsingDefaultWarning() {
// Test case for ICU-20575
// This test checks if the environment variable LANG is set,
// and if so ensures that both C and C.UTF-8 cause ICU's default locale to be en_US_POSIX.
-static void TestCDefaultLocale() {
+static void TestCDefaultLocale(void) {
const char *defaultLocale = uloc_getDefault();
char *env_var = getenv("LANG");
if (env_var == NULL) {
@@ -7279,7 +7433,7 @@ static void TestCDefaultLocale() {
}
// Test case for ICU-21449
-static void TestBug21449InfiniteLoop() {
+static void TestBug21449InfiniteLoop(void) {
UErrorCode status = U_ZERO_ERROR;
const char* invalidLocaleId = RES_PATH_SEPARATOR_S;
diff --git a/icu4c/source/test/cintltst/cloctst.h b/icu4c/source/test/cintltst/cloctst.h
index 9e8e547f7..0aee5012c 100644
--- a/icu4c/source/test/cintltst/cloctst.h
+++ b/icu4c/source/test/cintltst/cloctst.h
@@ -25,6 +25,8 @@
**/
static void TestBasicGetters(void);
static void TestPrefixes(void);
+static void TestVariantLengthLimit(void);
+
/**
* Use Locale to access Resource file data and compare against expected values
**/
diff --git a/icu4c/source/test/cintltst/cnormtst.c b/icu4c/source/test/cintltst/cnormtst.c
index 24946e2eb..6f933ac3d 100644
--- a/icu4c/source/test/cintltst/cnormtst.c
+++ b/icu4c/source/test/cintltst/cnormtst.c
@@ -212,23 +212,23 @@ static void TestNormCases(UNormalizationMode mode,
}
}
-void TestDecomp() {
+void TestDecomp(void) {
TestNormCases(UNORM_NFD, canonTests, UPRV_LENGTHOF(canonTests));
}
-void TestCompatDecomp() {
+void TestCompatDecomp(void) {
TestNormCases(UNORM_NFKD, compatTests, UPRV_LENGTHOF(compatTests));
}
-void TestCanonDecompCompose() {
+void TestCanonDecompCompose(void) {
TestNormCases(UNORM_NFC, canonTests, UPRV_LENGTHOF(canonTests));
}
-void TestCompatDecompCompose() {
+void TestCompatDecompCompose(void) {
TestNormCases(UNORM_NFKC, compatTests, UPRV_LENGTHOF(compatTests));
}
-void TestFCD() {
+void TestFCD(void) {
TestNormCases(UNORM_FCD, fcdTests, UPRV_LENGTHOF(fcdTests));
}
@@ -285,7 +285,7 @@ static void TestNull_check(UChar *src, int32_t srcLen,
log_verbose("unorm_normalize(%s) with 0x0000: OK\n", name);
}
-void TestNull()
+void TestNull(void)
{
UChar source_comp[] = { 0x0061, 0x0000, 0x0044, 0x0307 };
@@ -322,7 +322,7 @@ void TestNull()
}
-static void TestQuickCheckResultNO()
+static void TestQuickCheckResultNO(void)
{
const UChar CPNFD[] = {0x00C5, 0x0407, 0x1E00, 0x1F57, 0x220C,
0x30AE, 0xAC00, 0xD7A3, 0xFB36, 0xFB4E};
@@ -369,7 +369,7 @@ static void TestQuickCheckResultNO()
}
-static void TestQuickCheckResultYES()
+static void TestQuickCheckResultYES(void)
{
const UChar CPNFD[] = {0x00C6, 0x017F, 0x0F74, 0x1000, 0x1E9A,
0x2261, 0x3075, 0x4000, 0x5000, 0xF000};
@@ -441,7 +441,7 @@ static void TestQuickCheckResultYES()
}
}
-static void TestQuickCheckResultMAYBE()
+static void TestQuickCheckResultMAYBE(void)
{
const UChar CPNFC[] = {0x0306, 0x0654, 0x0BBE, 0x102E, 0x1161,
0x116A, 0x1173, 0x1175, 0x3099, 0x309A};
@@ -472,7 +472,7 @@ static void TestQuickCheckResultMAYBE()
}
}
-static void TestQuickCheckStringResult()
+static void TestQuickCheckStringResult(void)
{
int count;
UChar *d = NULL;
@@ -528,7 +528,7 @@ static void TestQuickCheckStringResult()
}
}
-void TestQuickCheck()
+void TestQuickCheck(void)
{
TestQuickCheckResultNO();
TestQuickCheckResultYES();
@@ -605,7 +605,7 @@ static void TestIsNormalized(void) {
}
}
-void TestCheckFCD()
+void TestCheckFCD(void)
{
UErrorCode status = U_ZERO_ERROR;
static const UChar FAST_[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
@@ -711,7 +711,7 @@ void TestCheckFCD()
}
static void
-TestAPI() {
+TestAPI(void) {
static const UChar in[]={ 0x68, 0xe4 };
UChar out[20]={ 0xffff, 0xffff, 0xffff, 0xffff };
UErrorCode errorCode;
@@ -767,7 +767,7 @@ enum {
};
static void
-TestNormCoverage() {
+TestNormCoverage(void) {
UChar input[1000], expect[1000], output[1000];
UErrorCode errorCode;
int32_t i, length, inLength, expectLength, hangulPrefixLength, preflightLength;
@@ -1148,7 +1148,7 @@ _testIter(const UChar *src, int32_t srcLength,
}
static void
-TestNextPrevious() {
+TestNextPrevious(void) {
static const UChar
src[]={ /* input string */
0xa0, 0xe4, 0x63, 0x302, 0x327, 0xac00, 0x3133
@@ -1363,7 +1363,7 @@ TestFCNFKCClosure(void) {
}
static void
-TestQuickCheckPerCP() {
+TestQuickCheckPerCP(void) {
UErrorCode errorCode;
UChar32 c, lead, trail;
UChar s[U16_MAX_LENGTH], nfd[16];
@@ -1487,7 +1487,7 @@ TestComposition(void) {
}
static void
-TestGetDecomposition() {
+TestGetDecomposition(void) {
UChar decomp[32];
int32_t length;
@@ -1530,7 +1530,7 @@ TestGetDecomposition() {
}
static void
-TestGetRawDecomposition() {
+TestGetRawDecomposition(void) {
UChar decomp[32];
int32_t length;
@@ -1595,7 +1595,7 @@ TestGetRawDecomposition() {
}
static void
-TestAppendRestoreMiddle() {
+TestAppendRestoreMiddle(void) {
UChar a[20]={ 0x61, 0x62, 0x63, 0x41, 0x327, 0 }; /* last chars are 'A' and 'cedilla' NFC */
static const UChar b[]={ 0x30A, 0x64, 0x65, 0x66, 0 }; /* first char is 'ring above' NFC */
/* NFC: C5 is 'A with ring above' */
@@ -1632,7 +1632,7 @@ TestAppendRestoreMiddle() {
}
static void
-TestGetEasyToUseInstance() {
+TestGetEasyToUseInstance(void) {
static const UChar in[]={
0xA0, /* -> <noBreak> 0020 */
0xC7, 0x301 /* = 1E08 = 0043 0327 0301 */
@@ -1716,7 +1716,7 @@ TestGetEasyToUseInstance() {
}
static void
-TestAPICoverage() {
+TestAPICoverage(void) {
UErrorCode errorCode = U_ZERO_ERROR;
const UNormalizer2 *n2 = unorm2_getNFDInstance(&errorCode);
if (U_FAILURE(errorCode)) {
diff --git a/icu4c/source/test/cintltst/cnumtst.c b/icu4c/source/test/cintltst/cnumtst.c
index 17bfbde3c..d2158d54e 100644
--- a/icu4c/source/test/cintltst/cnumtst.c
+++ b/icu4c/source/test/cintltst/cnumtst.c
@@ -131,7 +131,7 @@ void addNumForTest(TestNode** root)
/* test Parse int 64 */
-static void TestInt64Parse()
+static void TestInt64Parse(void)
{
UErrorCode st = U_ZERO_ERROR;
@@ -171,11 +171,10 @@ static void TestInt64Parse()
}
unum_close(nf);
- return;
}
/* test Number Format API */
-static void TestNumberFormat()
+static void TestNumberFormat(void)
{
UChar *result=NULL;
UChar temp1[512];
@@ -1097,7 +1096,7 @@ static const ParseCurrencyItem parseCurrencyItems[] = {
{ NULL, NULL, NULL, NULL, 0, 0, 0.0, 0, 0, 0.0, NULL }
};
-static void TestParseCurrency()
+static void TestParseCurrency(void)
{
const ParseCurrencyItem * itemPtr;
for (itemPtr = parseCurrencyItems; itemPtr->locale != NULL; ++itemPtr) {
@@ -1208,7 +1207,7 @@ static const SpelloutParseTest spelloutParseTests[] = {
{ NULL, NULL, NULL, 0, 0, 0, 0 } /* terminator */
};
-static void TestSpelloutNumberParse()
+static void TestSpelloutNumberParse(void)
{
const SpelloutParseTest * testPtr;
for (testPtr = spelloutParseTests; testPtr->testname != NULL; ++testPtr) {
@@ -1231,7 +1230,7 @@ static void TestSpelloutNumberParse()
}
}
-static void TestSignificantDigits()
+static void TestSignificantDigits(void)
{
UChar temp[128];
int32_t resultlengthneeded;
@@ -1273,7 +1272,7 @@ static void TestSignificantDigits()
unum_close(fmt);
}
-static void TestSigDigRounding()
+static void TestSigDigRounding(void)
{
UErrorCode status = U_ZERO_ERROR;
UChar expected[128];
@@ -1310,7 +1309,7 @@ static void TestSigDigRounding()
unum_close(fmt);
}
-static void TestNumberFormatPadding()
+static void TestNumberFormatPadding(void)
{
UChar *result=NULL;
UChar temp1[512];
@@ -1433,7 +1432,7 @@ withinErr(double a, double b, double err) {
return uprv_fabs(a - b) < uprv_fabs(a * err);
}
-static void TestInt64Format() {
+static void TestInt64Format(void) {
UChar temp1[512];
UChar result[512];
UNumberFormat *fmt;
@@ -1706,7 +1705,7 @@ static void test_fmt(UNumberFormat* fmt, UBool isDecimal) {
}
}
-static void TestNonExistentCurrency() {
+static void TestNonExistentCurrency(void) {
UNumberFormat *format;
UErrorCode status = U_ZERO_ERROR;
UChar currencySymbol[8];
@@ -1730,7 +1729,7 @@ static void TestNonExistentCurrency() {
unum_close(format);
}
-static void TestRBNFFormat() {
+static void TestRBNFFormat(void) {
UErrorCode status;
UParseError perr;
UChar pat[1024];
@@ -1840,7 +1839,7 @@ static void TestRBNFFormat() {
}
}
-static void TestRBNFRounding() {
+static void TestRBNFRounding(void) {
UChar fmtbuf[FORMAT_BUF_CAPACITY];
UChar expectedBuf[FORMAT_BUF_CAPACITY];
int32_t len;
@@ -3035,7 +3034,7 @@ static void TestVariousStylesAndAttributes(void) {
static const UChar currpat[] = { 0xA4,0x23,0x2C,0x23,0x23,0x30,0x2E,0x30,0x30,0};
static const UChar parsetxt[] = { 0x78,0x30,0x79,0x24,0 }; /* x0y$ */
-static void TestParseCurrPatternWithDecStyle() {
+static void TestParseCurrPatternWithDecStyle(void) {
UErrorCode status = U_ZERO_ERROR;
UNumberFormat *unumfmt = unum_open(UNUM_DECIMAL, NULL, 0, "en_US", NULL, &status);
if (U_FAILURE(status)) {
@@ -3162,7 +3161,7 @@ static void TestFormatForFields(void) {
}
}
-static void Test12052_NullPointer() {
+static void Test12052_NullPointer(void) {
UErrorCode status = U_ZERO_ERROR;
static const UChar input[] = u"199a";
UChar currency[200] = {0};
diff --git a/icu4c/source/test/cintltst/cpluralrulestest.c b/icu4c/source/test/cintltst/cpluralrulestest.c
index e2b4e3629..6ce6cd1c4 100644
--- a/icu4c/source/test/cintltst/cpluralrulestest.c
+++ b/icu4c/source/test/cintltst/cpluralrulestest.c
@@ -76,7 +76,7 @@ enum {
kKeywordBufLen = 32
};
-static void TestPluralRules()
+static void TestPluralRules(void)
{
const PluralRulesTestItem * testItemPtr;
log_verbose("\nTesting uplrules_open() and uplrules_select() with various parameters\n");
@@ -133,7 +133,7 @@ static void TestPluralRules()
}
}
-static void TestOrdinalRules() {
+static void TestOrdinalRules(void) {
U_STRING_DECL(two, "two", 3);
UChar keyword[8];
int32_t length;
@@ -195,7 +195,7 @@ static const KeywordsForLang getKeywordsItems[] = {
{ NULL, { NULL } }
};
-static void TestGetKeywords() {
+static void TestGetKeywords(void) {
/*
* We don't know the order in which the enumeration will return keywords,
* so we have an array with known keywords in a fixed order and then
@@ -260,7 +260,7 @@ static void TestGetKeywords() {
}
}
-static void TestFormatted() {
+static void TestFormatted(void) {
UErrorCode ec = U_ZERO_ERROR;
UNumberFormatter* unumf = NULL;
UFormattedNumber* uresult = NULL;
@@ -300,7 +300,7 @@ cleanup:
unumf_closeResult(uresult);
}
-static void TestSelectRange() {
+static void TestSelectRange(void) {
UErrorCode ec = U_ZERO_ERROR;
UNumberRangeFormatter* unumrf = NULL;
UFormattedNumberRange* uresult = NULL;
diff --git a/icu4c/source/test/cintltst/crelativedateformattest.c b/icu4c/source/test/cintltst/crelativedateformattest.c
index 55643b92f..bb75f1814 100644
--- a/icu4c/source/test/cintltst/crelativedateformattest.c
+++ b/icu4c/source/test/cintltst/crelativedateformattest.c
@@ -348,7 +348,7 @@ static const RelDateTimeFormatTestItem fmtTestItems[] = {
enum { kUBufMax = 64, kBBufMax = 256 };
-static void TestRelDateFmt()
+static void TestRelDateFmt(void)
{
const RelDateTimeFormatTestItem *itemPtr;
log_verbose("\nTesting ureldatefmt_open(), ureldatefmt_format(), ureldatefmt_formatNumeric() with various parameters\n");
@@ -429,7 +429,7 @@ static void TestRelDateFmt()
}
}
-static void TestNumericField()
+static void TestNumericField(void)
{
const RelDateTimeFormatTestItem *itemPtr;
log_verbose("\nTesting ureldatefmt_open(), ureldatefmt_formatForFields(), ureldatefmt_formatNumericForFields() with various parameters\n");
@@ -591,7 +591,7 @@ static const CombineDateTimeTestItem combTestItems[] = {
{ NULL, (UDateRelativeDateTimeFormatterStyle)0, (UDisplayContext)0, NULL, NULL, NULL } /* terminator */
};
-static void TestCombineDateTime()
+static void TestCombineDateTime(void)
{
const CombineDateTimeTestItem *itemPtr;
log_verbose("\nTesting ureldatefmt_combineDateAndTime() with various parameters\n");
@@ -645,7 +645,7 @@ static void TestCombineDateTime()
}
}
-static void TestFields() {
+static void TestFields(void) {
UErrorCode ec = U_ZERO_ERROR;
URelativeDateTimeFormatter* fmt = ureldatefmt_open(
"en-us",
diff --git a/icu4c/source/test/cintltst/crestst.c b/icu4c/source/test/cintltst/crestst.c
index 2ccd2fc98..7d0476462 100644
--- a/icu4c/source/test/cintltst/crestst.c
+++ b/icu4c/source/test/cintltst/crestst.c
@@ -150,7 +150,7 @@ void TestAliasConflict(void) {
}
-void TestResourceBundles()
+void TestResourceBundles(void)
{
// The test expectation only works if the default locale is not one of the
// locale bundle in the testdata which have those info. Therefore, we skip
@@ -180,7 +180,7 @@ void TestResourceBundles()
log_verbose("Passed:= %d Failed= %d \n", pass, fail);
}
-void TestConstruction1()
+void TestConstruction1(void)
{
UResourceBundle *test1 = 0, *test2 = 0;
const UChar *result1, *result2;
@@ -431,12 +431,12 @@ UBool testTag(const char* frag,
return (UBool)(passNum == pass);
}
-void record_pass()
+void record_pass(void)
{
++pass;
}
-void record_fail()
+void record_fail(void)
{
++fail;
}
@@ -446,7 +446,7 @@ void record_fail()
* are set correctly
*/
-static void TestFallback()
+static void TestFallback(void)
{
UErrorCode status = U_ZERO_ERROR;
UResourceBundle *fr_FR = NULL;
diff --git a/icu4c/source/test/cintltst/creststn.c b/icu4c/source/test/cintltst/creststn.c
index 3d2e08583..c3d935d4b 100644
--- a/icu4c/source/test/cintltst/creststn.c
+++ b/icu4c/source/test/cintltst/creststn.c
@@ -51,7 +51,7 @@ static int32_t fail;
*/
static uint32_t
-randul()
+randul(void)
{
uint32_t l=0;
int32_t i;
@@ -72,7 +72,7 @@ randul()
* Return a random double x where 0.0 <= x < 1.0.
*/
static double
-randd()
+randd(void)
{
return ((double)randul()) / UINT32_MAX;
}
@@ -212,6 +212,7 @@ static int32_t bundles_count = UPRV_LENGTHOF(param);
static void TestDecodedBundle(void);
static void TestGetKeywordValues(void);
static void TestGetFunctionalEquivalent(void);
+static void TestGetFunctionalEquivalentVariantLengthLimit(void);
static void TestCLDRStyleAliases(void);
static void TestFallbackCodes(void);
static void TestGetUTF8String(void);
@@ -249,7 +250,10 @@ void addNEWResourceBundleTest(TestNode** root)
addTest(root, &TestGetVersionColl, "tsutil/creststn/TestGetVersionColl");
addTest(root, &TestAliasConflict, "tsutil/creststn/TestAliasConflict");
addTest(root, &TestGetKeywordValues, "tsutil/creststn/TestGetKeywordValues");
- addTest(root, &TestGetFunctionalEquivalent,"tsutil/creststn/TestGetFunctionalEquivalent");
+ addTest(root, &TestGetFunctionalEquivalent,
+ "tsutil/creststn/TestGetFunctionalEquivalent");
+ addTest(root, &TestGetFunctionalEquivalentVariantLengthLimit,
+ "tsutil/creststn/TestGetFunctionalEquivalentVariantLengthLimit");
addTest(root, &TestJB3763, "tsutil/creststn/TestJB3763");
}
@@ -403,7 +407,7 @@ static void TestAliasConflict(void) {
}
}
-static void TestDecodedBundle(){
+static void TestDecodedBundle(void){
UErrorCode error = U_ZERO_ERROR;
@@ -479,7 +483,7 @@ static void TestDecodedBundle(){
ures_close(resB);
}
-static void TestNewTypes() {
+static void TestNewTypes(void) {
UResourceBundle* theBundle = NULL;
char action[256];
const char* testdatapath;
@@ -781,7 +785,7 @@ static void TestNewTypes() {
}
-static void TestEmptyTypes() {
+static void TestEmptyTypes(void) {
UResourceBundle* theBundle = NULL;
char action[256];
const char* testdatapath;
@@ -926,7 +930,7 @@ static void TestEmptyTypes() {
ures_close(theBundle);
}
-static void TestEmptyBundle(){
+static void TestEmptyBundle(void){
UErrorCode status = U_ZERO_ERROR;
const char* testdatapath=NULL;
UResourceBundle *resb=0, *dResB=0;
@@ -950,7 +954,7 @@ static void TestEmptyBundle(){
ures_close(resb);
}
-static void TestBinaryCollationData(){
+static void TestBinaryCollationData(void){
#if !UCONFIG_NO_COLLATION
UErrorCode status=U_ZERO_ERROR;
const char* locale="te";
@@ -1008,7 +1012,7 @@ static void TestBinaryCollationData(){
#endif
}
-static void TestAPI() {
+static void TestAPI(void) {
UErrorCode status=U_ZERO_ERROR;
int32_t len=0;
const char* key=NULL;
@@ -1170,7 +1174,7 @@ static void TestAPI() {
free(utestdatapath);
}
-static void TestErrorConditions(){
+static void TestErrorConditions(void){
UErrorCode status=U_ZERO_ERROR;
const char *key=NULL;
const UChar *value=NULL;
@@ -1405,7 +1409,7 @@ static void TestErrorConditions(){
}
-static void TestGetVersion(){
+static void TestGetVersion(void){
UVersionInfo minVersionArray = {0x01, 0x00, 0x00, 0x00};
UVersionInfo maxVersionArray = {0x50, 0xff, 0xcf, 0xcf};
UVersionInfo versionArray;
@@ -1443,7 +1447,7 @@ static void TestGetVersion(){
}
-static void TestGetVersionColl(){
+static void TestGetVersionColl(void){
#if !UCONFIG_NO_COLLATION
UVersionInfo minVersionArray = {0x00, 0x00, 0x00, 0x00};
UVersionInfo maxVersionArray = {0x50, 0x80, 0xcf, 0xcf};
@@ -1507,7 +1511,7 @@ static void TestGetVersionColl(){
#endif /* !UCONFIG_NO_COLLATION */
}
-static void TestResourceBundles()
+static void TestResourceBundles(void)
{
// The test expectation only works if the default locale is not one of the
// locale bundle in the testdata which have those info. Therefore, we skip
@@ -1539,7 +1543,7 @@ static void TestResourceBundles()
}
-static void TestConstruction1()
+static void TestConstruction1(void)
{
// The test expectation only works if the default locale is not one of the
// locale bundle in the testdata which have those info. Therefore, we skip
@@ -2054,17 +2058,17 @@ static UBool testTag(const char* frag,
return (UBool)(failNum == fail);
}
-static void record_pass()
+static void record_pass(void)
{
++pass;
}
-static void record_fail()
+static void record_fail(void)
{
++fail;
}
-static void TestPreventFallback() {
+static void TestPreventFallback(void) {
UResourceBundle* theBundle = NULL;
const char* testdatapath;
UErrorCode status = U_ZERO_ERROR;
@@ -2124,7 +2128,7 @@ static void TestPreventFallback() {
* are set correctly
*/
-static void TestFallback()
+static void TestFallback(void)
{
UErrorCode status = U_ZERO_ERROR;
UResourceBundle *fr_FR = NULL;
@@ -2181,7 +2185,7 @@ static void TestFallback()
UResourceBundle* myResB = ures_open(NULL,"no_NO_NY",&err);
UResourceBundle* resLocID = ures_getByKey(myResB, "Version", NULL, &err);
const UChar* version = NULL;
- static const UChar versionStr[] = u"44.1"; // 44.1 in nn_NO or in a parent bundle/root
+ static const UChar versionStr[] = u"45"; // 45 in nn_NO or in a parent bundle/root
if(U_FAILURE(err)) {
log_data_err("Expected success when trying to test no_NO_NY aliased to nn_NO for Version "
@@ -2777,6 +2781,100 @@ static void TestGetFunctionalEquivalent(void) {
#endif
}
+static void TestGetFunctionalEquivalentVariantLengthLimit(void) {
+ static const char valid[] =
+ "en_001"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678";
+
+ static const char invalid[] =
+ "en_001"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678X"; // One character too long.
+
+ static const char localeExpected[] = "en_001@calendar=gregorian";
+ const int32_t reslenExpected = uprv_strlen(localeExpected);
+
+ char buffer[UPRV_LENGTHOF(invalid)];
+ UErrorCode status;
+
+ status = U_ZERO_ERROR;
+ int32_t reslen = ures_getFunctionalEquivalent(
+ buffer,
+ UPRV_LENGTHOF(buffer),
+ NULL,
+ "calendar",
+ "calendar",
+ valid,
+ NULL,
+ false,
+ &status);
+ if (U_FAILURE(status)) {
+ log_err("Unexpected error in ures_getFunctionalEquivalent(): %s\n",
+ myErrorName(status));
+ } else if (reslenExpected != reslen) {
+ log_err("Expected length %d but got length %d.\n",
+ reslenExpected, reslen);
+ } else if (uprv_strcmp(localeExpected, buffer) != 0) {
+ log_err("Expected locale \"%s\" but got locale \"%s\"\n",
+ localeExpected, buffer);
+ }
+
+ status = U_ZERO_ERROR;
+ ures_getFunctionalEquivalent(
+ buffer,
+ UPRV_LENGTHOF(buffer),
+ NULL,
+ "calendar",
+ "calendar",
+ invalid,
+ NULL,
+ false,
+ &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ // The variants are known to be too long, parsing must fail.
+ log_err("Unexpected error in ures_getFunctionalEquivalent(), expected "
+ "U_ILLEGAL_ARGUMENT_ERROR but got %s.\n",
+ myErrorName(status));
+ }
+}
+
static void TestXPath(void) {
UErrorCode status = U_ZERO_ERROR;
UResourceBundle *rb = NULL, *alias = NULL;
@@ -3039,7 +3137,7 @@ tres_getString(const UResourceBundle *resB,
* UTF-16 ures_getStringXYZ() that are called internally.
*/
static void
-TestGetUTF8String() {
+TestGetUTF8String(void) {
UResourceBundle *res;
const char *testdatapath;
char buffer8[16];
diff --git a/icu4c/source/test/cintltst/cstrtest.c b/icu4c/source/test/cintltst/cstrtest.c
index d8006fd1c..d6c762f9f 100644
--- a/icu4c/source/test/cintltst/cstrtest.c
+++ b/icu4c/source/test/cintltst/cstrtest.c
@@ -170,7 +170,7 @@ static void TestAPI(void)
/* test invariant-character handling */
static void
-TestInvariant() {
+TestInvariant(void) {
/* all invariant graphic chars and some control codes (not \n!) */
const char invariantChars[]=
"\t\r \"%&'()*+,-./"
@@ -306,7 +306,7 @@ static int32_t getSign(int32_t n) {
}
static void
-TestCompareInvEbcdicAsAscii() {
+TestCompareInvEbcdicAsAscii(void) {
static const char *const invStrings[][2]={
/* invariant-character strings in ascending ASCII order */
/* EBCDIC native */
@@ -359,7 +359,7 @@ static const UChar *asciiInvChars =
u"0123456789 \"%&'()*+,-./:;<=>?_";
static void
-TestLocaleAtSign() {
+TestLocaleAtSign(void) {
static const char *invLocale = "de-Latn_DE@PHONEBOOK";
for (int32_t i = 0;; ++i) {
char ic = invLocale[i];
@@ -374,7 +374,7 @@ TestLocaleAtSign() {
// The at sign is not an invariant character.
static void
-TestNoInvariantAtSign() {
+TestNoInvariantAtSign(void) {
for (int32_t i = 0;; ++i) {
char ic = nativeInvChars[i];
UBool actual = uprv_isAtSign(ic);
@@ -386,7 +386,7 @@ TestNoInvariantAtSign() {
}
static void
-TestInvCharToAscii() {
+TestInvCharToAscii(void) {
for (int32_t i = 0;; ++i) {
char ic = nativeInvChars[i];
uint8_t ac = (uint8_t)asciiInvChars[i];
diff --git a/icu4c/source/test/cintltst/cturtst.c b/icu4c/source/test/cintltst/cturtst.c
index 31eebc494..b3b4ba322 100644
--- a/icu4c/source/test/cintltst/cturtst.c
+++ b/icu4c/source/test/cintltst/cturtst.c
@@ -90,7 +90,7 @@ void addTurkishCollTest(TestNode** root)
}
-static void TestTertiary( )
+static void TestTertiary(void)
{
int32_t i;
@@ -110,7 +110,7 @@ static void TestTertiary( )
ucol_close(myCollation);
}
-static void TestPrimary()
+static void TestPrimary(void)
{
int32_t i;
diff --git a/icu4c/source/test/cintltst/cucdapi.c b/icu4c/source/test/cintltst/cucdapi.c
index 4f9986017..27936f1b2 100644
--- a/icu4c/source/test/cintltst/cucdapi.c
+++ b/icu4c/source/test/cintltst/cucdapi.c
@@ -46,7 +46,7 @@ static void assertEqualScripts(const char *msg,
}
}
-void TestUScriptCodeAPI(){
+void TestUScriptCodeAPI(void){
int i =0;
int numErrors =0;
{
@@ -431,6 +431,8 @@ void TestUScriptCodeAPI(){
"Cypro_Minoan", "Old_Uyghur", "Tangsa", "Toto", "Vithkuqi",
// new in ICU 72
"Kawi", "Nag_Mundari",
+ // new in ICU 75
+ "Aran",
};
static const char* expectedShort[] = {
"Bali", "Batk", "Blis", "Brah", "Cham", "Cirt", "Cyrs", "Egyd", "Egyh", "Egyp",
@@ -471,6 +473,8 @@ void TestUScriptCodeAPI(){
"Cpmn", "Ougr", "Tnsa", "Toto", "Vith",
// new in ICU 72
"Kawi", "Nagm",
+ // new in ICU 75
+ "Aran",
};
int32_t j = 0;
if(UPRV_LENGTHOF(expectedLong)!=(USCRIPT_CODE_LIMIT-USCRIPT_BALINESE)) {
@@ -518,7 +522,7 @@ void TestUScriptCodeAPI(){
}
}
-void TestHasScript() {
+void TestHasScript(void) {
if(!(
!uscript_hasScript(0x063f, USCRIPT_COMMON) &&
uscript_hasScript(0x063f, USCRIPT_ARABIC) && /* main Script value */
@@ -578,7 +582,7 @@ static UBool scriptsContain(UScriptCode scripts[], int32_t length, UScriptCode s
return contain;
}
-void TestGetScriptExtensions() {
+void TestGetScriptExtensions(void) {
UScriptCode scripts[20];
int32_t length;
UErrorCode errorCode;
@@ -666,7 +670,7 @@ void TestGetScriptExtensions() {
}
}
-void TestScriptMetadataAPI() {
+void TestScriptMetadataAPI(void) {
/* API & code coverage. More testing in intltest/ucdtest.cpp. */
UErrorCode errorCode=U_ZERO_ERROR;
UChar sample[8];
@@ -729,7 +733,7 @@ void TestScriptMetadataAPI() {
}
}
-void TestBinaryValues() {
+void TestBinaryValues(void) {
/*
* Unicode 5.1 explicitly defines binary property value aliases.
* Verify that they are all recognized.
diff --git a/icu4c/source/test/cintltst/cucdtst.c b/icu4c/source/test/cintltst/cucdtst.c
index e50c6924c..1173caab2 100644
--- a/icu4c/source/test/cintltst/cucdtst.c
+++ b/icu4c/source/test/cintltst/cucdtst.c
@@ -208,7 +208,7 @@ void addUnicodeTest(TestNode** root)
/*==================================================== */
/* test u_toupper() and u_tolower() */
/*==================================================== */
-static void TestUpperLower()
+static void TestUpperLower(void)
{
const UChar upper[] = {0x41, 0x42, 0x00b2, 0x01c4, 0x01c6, 0x01c9, 0x01c8, 0x01c9, 0x000c, 0x0000};
const UChar lower[] = {0x61, 0x62, 0x00b2, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 0x01c9, 0x000c, 0x0000};
@@ -440,7 +440,7 @@ compareUSets(const USet *a, const USet *b,
}
/* test isLetter(u_isapha()) and isDigit(u_isdigit()) */
-static void TestLetterNumber()
+static void TestLetterNumber(void)
{
UChar i = 0x0000;
@@ -542,7 +542,7 @@ static void testSampleCharProps(UBool propFn(UChar32), const char *propName,
}
/* Tests for isDefined(u_isdefined)(, isBaseForm(u_isbase()), isSpaceChar(u_isspace()), isWhiteSpace(), u_CharDigitValue() */
-static void TestMisc()
+static void TestMisc(void)
{
static const UChar32 sampleSpaces[] = {0x0020, 0x00a0, 0x2000, 0x2001, 0x2005};
static const UChar32 sampleNonSpaces[] = {0x61, 0x62, 0x63, 0x64, 0x74};
@@ -822,7 +822,7 @@ static const struct {
};
static void
-TestPOSIX() {
+TestPOSIX(void) {
uint32_t mask;
int32_t cl, i;
UBool expect;
@@ -841,7 +841,7 @@ TestPOSIX() {
}
/* Tests for isControl(u_iscntrl()) and isPrintable(u_isprint()) */
-static void TestControlPrint()
+static void TestControlPrint(void)
{
const UChar32 sampleControl[] = {0x1b, 0x97, 0x82, 0x2028, 0x2029, 0x200c, 0x202b};
const UChar32 sampleNonControl[] = {0x61, 0x0031, 0x00e2};
@@ -889,7 +889,7 @@ static void TestControlPrint()
}
/* u_isJavaIDStart, u_isJavaIDPart, u_isIDStart(), u_isIDPart(), u_isIDIgnorable()*/
-static void TestIdentifier()
+static void TestIdentifier(void)
{
const UChar32 sampleJavaIDStart[] = {0x0071, 0x00e4, 0x005f};
const UChar32 sampleNonJavaIDStart[] = {0x0020, 0x2030, 0x0082};
@@ -1313,7 +1313,7 @@ enumDefaultsRange(const void *context, UChar32 start, UChar32 limit, UCharCatego
}
/* tests for several properties */
-static void TestUnicodeData()
+static void TestUnicodeData(void)
{
UVersionInfo expectVersionArray;
UVersionInfo versionArray;
@@ -1401,7 +1401,7 @@ static void TestUnicodeData()
u_enumCharTypes(enumDefaultsRange, NULL);
}
-static void TestCodeUnit(){
+static void TestCodeUnit(void){
const UChar codeunit[]={0x0000,0xe065,0x20ac,0xd7ff,0xd800,0xd841,0xd905,0xdbff,0xdc00,0xdc02,0xddee,0xdfff,0};
int32_t i;
@@ -1448,7 +1448,7 @@ static void TestCodeUnit(){
}
}
-static void TestCodePoint(){
+static void TestCodePoint(void){
const UChar32 codePoint[]={
/*surrogate, notvalid(codepoint), not a UnicodeChar, not Error */
0xd800,
@@ -1586,7 +1586,7 @@ static void TestCodePoint(){
}
}
-static void TestCharLength()
+static void TestCharLength(void)
{
const int32_t codepoint[]={
1, 0x0061,
@@ -1770,7 +1770,7 @@ u_charToUChar(char c) {
}
static void
-TestCharNames() {
+TestCharNames(void) {
static char name[80];
UErrorCode errorCode=U_ZERO_ERROR;
struct enumExtCharNamesContext extContext;
@@ -2010,7 +2010,7 @@ TestCharNames() {
}
static void
-TestUCharFromNameUnderflow() {
+TestUCharFromNameUnderflow(void) {
// Ticket #10889: Underflow crash when there is no dash.
const char *name="<NO BREAK SPACE>";
UErrorCode errorCode=U_ZERO_ERROR;
@@ -2074,7 +2074,7 @@ TestUCharFromNameUnderflow() {
/* test u_isMirrored() and u_charMirror() ----------------------------------- */
static void
-TestMirroring() {
+TestMirroring(void) {
USet *set;
UErrorCode errorCode;
@@ -2186,7 +2186,7 @@ CheckScriptRuns(UScriptRun *scriptRun, int32_t *runStarts, const RunTestData *te
}
static void
-TestUScriptRunAPI()
+TestUScriptRunAPI(void)
{
static const RunTestData testData1[] = {
{"\\u0020\\u0946\\u0939\\u093F\\u0928\\u094D\\u0926\\u0940\\u0020", USCRIPT_DEVANAGARI},
@@ -2350,7 +2350,7 @@ TestUScriptRunAPI()
/* test additional, non-core properties */
static void
-TestAdditionalProperties() {
+TestAdditionalProperties(void) {
/* test data for u_charAge() */
static const struct {
UChar32 c;
@@ -3210,7 +3210,7 @@ TestPropertyValues(void) {
/* various tests for consistency of UCD data and API behavior */
static void
-TestConsistency() {
+TestConsistency(void) {
char buffer[300];
USet *set1, *set2, *set3, *set4;
UErrorCode errorCode;
@@ -3540,7 +3540,7 @@ caseFoldingLineFn(void *context,
}
static void
-TestCaseFolding() {
+TestCaseFolding(void) {
CaseFoldingData data={ NULL, 0, 0, {0}, 0, 0 };
char *fields[3][2];
UErrorCode errorCode;
@@ -3580,7 +3580,7 @@ TestCaseFolding() {
uset_close(data.notSeen);
}
-static void TestBinaryCharacterPropertiesAPI() {
+static void TestBinaryCharacterPropertiesAPI(void) {
// API test only. See intltest/ucdtest.cpp for functional test.
UErrorCode errorCode = U_ZERO_ERROR;
const USet *set = u_getBinaryPropertySet(-1, &errorCode);
@@ -3599,7 +3599,7 @@ static void TestBinaryCharacterPropertiesAPI() {
}
}
-static void TestIntCharacterPropertiesAPI() {
+static void TestIntCharacterPropertiesAPI(void) {
// API test only. See intltest/ucdtest.cpp for functional test.
UErrorCode errorCode = U_ZERO_ERROR;
const UCPMap *map = u_getIntPropertyMap(UCHAR_INT_START - 1, &errorCode);
diff --git a/icu4c/source/test/cintltst/currtest.c b/icu4c/source/test/cintltst/currtest.c
index 80ad66f0b..e75c1743e 100644
--- a/icu4c/source/test/cintltst/currtest.c
+++ b/icu4c/source/test/cintltst/currtest.c
@@ -113,6 +113,9 @@ static void TestEnumList(void) {
expectInList("VED", UCURR_NON_DEPRECATED, true);
expectInList("EQE", UCURR_ALL, false);
+
+ // CLDR 45 and ICU-22726
+ expectInList("XCG", UCURR_ALL, true);
}
static void TestEnumListReset(void) {
diff --git a/icu4c/source/test/cintltst/custrtrn.c b/icu4c/source/test/cintltst/custrtrn.c
index d794d79ba..7987dacc9 100644
--- a/icu4c/source/test/cintltst/custrtrn.c
+++ b/icu4c/source/test/cintltst/custrtrn.c
@@ -208,7 +208,7 @@ static void Test_strToUTF32(void){
}
/* test unpaired surrogates */
-static void Test_strToUTF32_surrogates() {
+static void Test_strToUTF32_surrogates(void) {
UErrorCode err = U_ZERO_ERROR;
UChar32 u32Target[400];
int32_t len16, u32DestLen;
@@ -388,7 +388,7 @@ static void Test_strFromUTF32(void){
}
/* test surrogate code points */
-static void Test_strFromUTF32_surrogates() {
+static void Test_strFromUTF32_surrogates(void) {
UErrorCode err = U_ZERO_ERROR;
UChar uTarget[400];
int32_t len32, uDestLen;
@@ -1381,7 +1381,7 @@ static void Test_UChar_WCHART_API(void){
#endif
}
-static void Test_widestrs()
+static void Test_widestrs(void)
{
#if (defined(U_WCHAR_IS_UTF16) || defined(U_WCHAR_IS_UTF32)) || (!UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION)
wchar_t ws[100];
@@ -1425,7 +1425,7 @@ static void Test_widestrs()
}
static void
-Test_WCHART_LongString(){
+Test_WCHART_LongString(void){
#if (defined(U_WCHAR_IS_UTF16) || defined(U_WCHAR_IS_UTF32)) || (!UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION)
UErrorCode status = U_ZERO_ERROR;
const char* testdatapath=loadTestData(&status);
@@ -1513,7 +1513,7 @@ Test_WCHART_LongString(){
#endif
}
-static void Test_strToJavaModifiedUTF8() {
+static void Test_strToJavaModifiedUTF8(void) {
static const UChar src[]={
0x61, 0x62, 0x63, 0xe1, 0xe2, 0xe3,
0xe01, 0xe02, 0xe03, 0xe001, 0xe002, 0xe003,
@@ -1689,7 +1689,7 @@ static void Test_strToJavaModifiedUTF8() {
}
}
-static void Test_strFromJavaModifiedUTF8() {
+static void Test_strFromJavaModifiedUTF8(void) {
static const uint8_t src[]={
0x61, 0x62, 0x63, 0xc3, 0xa1, 0xc3, 0xa2, 0xc3, 0xa3,
0xe0, 0xb8, 0x81, 0xe0, 0xb8, 0x82, 0xe0, 0xb8, 0x83,
@@ -1992,7 +1992,7 @@ static void Test_strFromJavaModifiedUTF8() {
}
/* test that string transformation functions permit NULL source pointer when source length==0 */
-static void TestNullEmptySource() {
+static void TestNullEmptySource(void) {
char dest8[4]={ 3, 3, 3, 3 };
UChar dest16[4]={ 3, 3, 3, 3 };
UChar32 dest32[4]={ 3, 3, 3, 3 };
diff --git a/icu4c/source/test/cintltst/custrtst.c b/icu4c/source/test/cintltst/custrtst.c
index f276b94cc..f59dfa29b 100644
--- a/icu4c/source/test/cintltst/custrtst.c
+++ b/icu4c/source/test/cintltst/custrtst.c
@@ -72,7 +72,7 @@ static const char* raw[3][4] = {
{ "English_United States", "French_France", "Croatian_Croatia", "English_United States"}
};
-static void setUpDataTable()
+static void setUpDataTable(void)
{
int32_t i,j;
if(dataTable == NULL) {
@@ -88,7 +88,7 @@ static void setUpDataTable()
}
}
-static void cleanUpDataTable()
+static void cleanUpDataTable(void)
{
int32_t i,j;
if(dataTable != NULL) {
@@ -104,7 +104,7 @@ static void cleanUpDataTable()
}
/*Tests for u_strcat(),u_strcmp(), u_strlen(), u_strcpy(),u_strncat(),u_strncmp(),u_strncpy, u_uastrcpy(),u_austrcpy(), u_uastrncpy(); */
-static void TestStringFunctions()
+static void TestStringFunctions(void)
{
int32_t i,j,k;
UChar temp[512];
@@ -480,7 +480,7 @@ static void TestStringFunctions()
cleanUpDataTable();
}
-static void TestStringSearching()
+static void TestStringSearching(void)
{
const UChar testString[] = {0x0061, 0x0062, 0x0063, 0x0064, 0x0064, 0x0061, 0};
const UChar testSurrogateString[] = {0xdbff, 0x0061, 0x0062, 0xdbff, 0xdfff, 0x0063, 0x0064, 0x0064, 0xdbff, 0xdfff, 0xdb00, 0xdf00, 0x0061, 0};
@@ -691,7 +691,7 @@ static void TestStringSearching()
* There are some new functions, too - just test them all.
*/
static void
-TestSurrogateSearching() {
+TestSurrogateSearching(void) {
static const UChar s[]={
/* 0 1 2 3 4 5 6 7 8 9 10 11 */
0x61, 0xd801, 0xdc02, 0x61, 0xdc02, 0x61, 0xd801, 0x61, 0xd801, 0xdc02, 0x61, 0
@@ -979,7 +979,7 @@ TestSurrogateSearching() {
}
}
-static void TestStringCopy()
+static void TestStringCopy(void)
{
UChar temp[40];
UChar *result=0;
@@ -1098,7 +1098,7 @@ static void TestStringCopy()
/* test u_unescape() and u_unescapeAt() ------------------------------------- */
static void
-TestUnescape() {
+TestUnescape(void) {
static UChar buffer[200];
static const char* input =
@@ -1130,7 +1130,7 @@ TestUnescape() {
}
static void
-TestUnescapeRepeatedSurrogateLead20725() {
+TestUnescapeRepeatedSurrogateLead20725(void) {
const int32_t repeat = 20000;
const int32_t srclen = repeat * 6 + 1;
char *src = (char*)malloc(srclen);
@@ -1197,7 +1197,7 @@ _testStrHasMoreChar32Than(const UChar *s, int32_t i, int32_t length, int32_t num
}
static void
-TestCountChar32() {
+TestCountChar32(void) {
static const UChar string[]={
0x61, 0x62, 0xd800, 0xdc00,
0xd801, 0xdc01, 0x63, 0xd802,
@@ -1498,7 +1498,7 @@ testIteratorState(UCharIterator *iter1, UCharIterator *iter2, const char *n, int
}
static void
-TestUCharIterator() {
+TestUCharIterator(void) {
static const UChar text[]={
0x61, 0x62, 0x63, 0xd801, 0xdffd, 0x78, 0x79, 0x7a, 0
};
diff --git a/icu4c/source/test/cintltst/encoll.c b/icu4c/source/test/cintltst/encoll.c
index e54f898f0..4bdadd553 100644
--- a/icu4c/source/test/cintltst/encoll.c
+++ b/icu4c/source/test/cintltst/encoll.c
@@ -262,7 +262,7 @@ void addEnglishCollTest(TestNode** root)
}
-static void TestTertiary( )
+static void TestTertiary(void)
{
int32_t testMoreSize;
UCollationResult expected=UCOL_EQUAL;
@@ -305,7 +305,7 @@ static void TestTertiary( )
ucol_close(myCollation);
}
-static void TestPrimary()
+static void TestPrimary(void)
{
int32_t i;
@@ -324,7 +324,7 @@ static void TestPrimary()
ucol_close(myCollation);
}
-static void TestSecondary()
+static void TestSecondary(void)
{
UCollationResult expected=UCOL_EQUAL;
int32_t i,j, testAcuteSize;
diff --git a/icu4c/source/test/cintltst/eurocreg.c b/icu4c/source/test/cintltst/eurocreg.c
index 9aac51b09..618ee98ce 100644
--- a/icu4c/source/test/cintltst/eurocreg.c
+++ b/icu4c/source/test/cintltst/eurocreg.c
@@ -121,7 +121,7 @@ static const char convertersToCheck[][15] = {
UBool isEuroAware(UConverter*);
-void TestEuroRegression()
+void TestEuroRegression(void)
{
int32_t i=0;
diff --git a/icu4c/source/test/cintltst/hpmufn.c b/icu4c/source/test/cintltst/hpmufn.c
index 558120de3..f27e57939 100644
--- a/icu4c/source/test/cintltst/hpmufn.c
+++ b/icu4c/source/test/cintltst/hpmufn.c
@@ -62,7 +62,7 @@ static int32_t gMutexFailures = 0;
* The ICU data directory must be preserved across these operations.
* Here is a helper function to assist with that.
*/
-static char *safeGetICUDataDirectory() {
+static char *safeGetICUDataDirectory(void) {
const char *dataDir = u_getDataDirectory(); /* Returned string vanashes with u_cleanup */
char *retStr = NULL;
if (dataDir != NULL) {
@@ -122,7 +122,7 @@ static void * U_CALLCONV myMemRealloc(const void *context, void *mem, size_t siz
}
-static void TestHeapFunctions() {
+static void TestHeapFunctions(void) {
UErrorCode status = U_ZERO_ERROR;
UResourceBundle *rb = NULL;
char *icuDataDir;
diff --git a/icu4c/source/test/cintltst/idnatest.c b/icu4c/source/test/cintltst/idnatest.c
index bd979f0d4..293e92074 100644
--- a/icu4c/source/test/cintltst/idnatest.c
+++ b/icu4c/source/test/cintltst/idnatest.c
@@ -427,7 +427,7 @@ static const char * const domainNames[] = {
};
static void
-TestToASCII(){
+TestToASCII(void){
int32_t i;
UChar buf[MAX_DEST_SIZE];
@@ -441,7 +441,7 @@ TestToASCII(){
}
static void
-TestToUnicode(){
+TestToUnicode(void){
int32_t i;
UChar buf[MAX_DEST_SIZE];
@@ -455,7 +455,7 @@ TestToUnicode(){
static void
-TestIDNToUnicode(){
+TestIDNToUnicode(void){
int32_t i;
UChar buf[MAX_DEST_SIZE];
UChar expected[MAX_DEST_SIZE];
@@ -484,7 +484,7 @@ TestIDNToUnicode(){
}
static void
-TestIDNToASCII(){
+TestIDNToASCII(void){
int32_t i;
UChar buf[MAX_DEST_SIZE];
UChar expected[MAX_DEST_SIZE];
@@ -564,7 +564,7 @@ testCompareWithSrc(const UChar* s1, int32_t s1Len,
static void
-TestCompare(){
+TestCompare(void){
int32_t i;
const char* testName ="uidna_compare";
@@ -641,7 +641,7 @@ TestCompare(){
}
}
-static void TestJB4490(){
+static void TestJB4490(void){
static const UChar data[][50]= {
{0x00F5,0x00dE,0x00dF,0x00dD, 0x0000},
{0xFB00,0xFB01}
@@ -673,7 +673,7 @@ static void TestJB4490(){
}
}
-static void TestJB4475(){
+static void TestJB4475(void){
static const UChar input[][10] = {
{0x0054,0x0045,0x0053,0x0054,0x0000},/* TEST */
@@ -700,7 +700,7 @@ static void TestJB4475(){
}
}
-static void TestLength(){
+static void TestLength(void){
{
static const char* cl = "my_very_very_very_very_very_very_very_very_very_very_very_very_very_long_and_incredibly_uncreative_domain_label";
UChar ul[128] = {'\0'};
@@ -823,7 +823,7 @@ static void TestLength(){
}
}
}
-static void TestJB5273(){
+static void TestJB5273(void){
static const char INVALID_DOMAIN_NAME[] = "xn--m\\u00FCller.de";
UChar invalid_idn[25] = {'\0'};
int32_t len = u_unescape(INVALID_DOMAIN_NAME, invalid_idn, (int32_t)strlen(INVALID_DOMAIN_NAME));
@@ -857,7 +857,7 @@ static void TestJB5273(){
* Test the new (ICU 4.6/2010) C API that was added for UTS #46.
* Just an API test: Functionality is tested via C++ intltest.
*/
-static void TestUTS46() {
+static void TestUTS46(void) {
static const UChar fA_sharps16[] = { 0x66, 0x41, 0xdf, 0 };
static const char fA_sharps8[] = { 0x66, 0x41, (char)0xc3, (char)0x9f, 0 };
static const UChar fa_sharps16[] = { 0x66, 0x61, 0xdf, 0 };
diff --git a/icu4c/source/test/cintltst/nccbtst.c b/icu4c/source/test/cintltst/nccbtst.c
index 1cf003112..aa2fe21f2 100644
--- a/icu4c/source/test/cintltst/nccbtst.c
+++ b/icu4c/source/test/cintltst/nccbtst.c
@@ -108,7 +108,7 @@ void addTestConvertErrorCallBack(TestNode** root)
addTest(root, &TestCallBackFailure, "tsconv/nccbtst/TestCallBackFailure");
}
-static void TestSkipCallBack()
+static void TestSkipCallBack(void)
{
TestSkip(NEW_MAX_BUFFER, NEW_MAX_BUFFER);
TestSkip(1,NEW_MAX_BUFFER);
@@ -116,7 +116,7 @@ static void TestSkipCallBack()
TestSkip(NEW_MAX_BUFFER, 1);
}
-static void TestStopCallBack()
+static void TestStopCallBack(void)
{
TestStop(NEW_MAX_BUFFER, NEW_MAX_BUFFER);
TestStop(1,NEW_MAX_BUFFER);
@@ -124,7 +124,7 @@ static void TestStopCallBack()
TestStop(NEW_MAX_BUFFER, 1);
}
-static void TestSubCallBack()
+static void TestSubCallBack(void)
{
TestSub(NEW_MAX_BUFFER, NEW_MAX_BUFFER);
TestSub(1,NEW_MAX_BUFFER);
@@ -139,7 +139,7 @@ static void TestSubCallBack()
#endif
}
-static void TestSubWithValueCallBack()
+static void TestSubWithValueCallBack(void)
{
TestSubWithValue(NEW_MAX_BUFFER, NEW_MAX_BUFFER);
TestSubWithValue(1,NEW_MAX_BUFFER);
@@ -148,7 +148,7 @@ static void TestSubWithValueCallBack()
}
#if !UCONFIG_NO_LEGACY_CONVERSION
-static void TestLegalAndOtherCallBack()
+static void TestLegalAndOtherCallBack(void)
{
TestLegalAndOthers(NEW_MAX_BUFFER, NEW_MAX_BUFFER);
TestLegalAndOthers(1,NEW_MAX_BUFFER);
@@ -156,7 +156,7 @@ static void TestLegalAndOtherCallBack()
TestLegalAndOthers(NEW_MAX_BUFFER, 1);
}
-static void TestSingleByteCallBack()
+static void TestSingleByteCallBack(void)
{
TestSingleByte(NEW_MAX_BUFFER, NEW_MAX_BUFFER);
TestSingleByte(1,NEW_MAX_BUFFER);
diff --git a/icu4c/source/test/cintltst/ncnvtst.c b/icu4c/source/test/cintltst/ncnvtst.c
index 371520e21..ed78c6a05 100644
--- a/icu4c/source/test/cintltst/ncnvtst.c
+++ b/icu4c/source/test/cintltst/ncnvtst.c
@@ -140,7 +140,7 @@ void addExtraTests(TestNode** root)
}
/*test surrogate behaviour*/
-static void TestSurrogateBehaviour(){
+static void TestSurrogateBehaviour(void){
log_verbose("Testing for SBCS and LATIN_1\n");
{
UChar sampleText[] = {0x0031, 0xd801, 0xdc01, 0x0032};
@@ -340,7 +340,7 @@ static void TestSurrogateBehaviour(){
}
/*test various error behaviours*/
-static void TestErrorBehaviour(){
+static void TestErrorBehaviour(void){
log_verbose("Testing for SBCS and LATIN_1\n");
{
static const UChar sampleText[] = { 0x0031, 0xd801};
@@ -645,7 +645,7 @@ static void TestErrorBehaviour(){
#if !UCONFIG_NO_LEGACY_CONVERSION
/*test different convertToUnicode error behaviours*/
-static void TestToUnicodeErrorBehaviour()
+static void TestToUnicodeErrorBehaviour(void)
{
log_verbose("Testing error conditions for DBCS\n");
{
@@ -677,7 +677,7 @@ static void TestToUnicodeErrorBehaviour()
}
}
-static void TestGetNextErrorBehaviour(){
+static void TestGetNextErrorBehaviour(void){
/*Test for unassigned character*/
#define INPUT_SIZE 1
static const char input1[INPUT_SIZE]={ 0x70 };
@@ -701,7 +701,7 @@ static void TestGetNextErrorBehaviour(){
#define MAX_UTF8_LEN 4
/*Regression test for utf8 converter*/
-static void TestRegressionUTF8(){
+static void TestRegressionUTF8(void){
UChar32 currCh = 0;
int32_t offset8;
int32_t offset16;
@@ -771,7 +771,7 @@ static void TestRegressionUTF8(){
#define MAX_UTF32_LEN 1
-static void TestRegressionUTF32(){
+static void TestRegressionUTF32(void){
#if !UCONFIG_ONLY_HTML_CONVERSION
UChar32 currCh = 0;
int32_t offset32;
@@ -908,7 +908,7 @@ static void TestRegressionUTF32(){
}
/*Walk through the available converters*/
-static void TestAvailableConverters(){
+static void TestAvailableConverters(void){
UErrorCode status=U_ZERO_ERROR;
UConverter *conv=NULL;
int32_t i=0;
@@ -925,7 +925,7 @@ static void TestAvailableConverters(){
}
-static void TestFlushInternalBuffer(){
+static void TestFlushInternalBuffer(void){
TestWithBufferSize(MAX_LENGTH, 1);
TestWithBufferSize(1, 1);
TestWithBufferSize(1, MAX_LENGTH);
@@ -1852,7 +1852,7 @@ doTestTruncated(const char *cnvName, const uint8_t *bytes, int32_t length) {
}
static void
-TestTruncated() {
+TestTruncated(void) {
static const struct {
const char *cnvName;
uint8_t bytes[8]; /* partial input bytes resulting in no output */
@@ -1902,7 +1902,7 @@ typedef struct NameRange {
} NameRange;
static void
-TestUnicodeSet() {
+TestUnicodeSet(void) {
UErrorCode errorCode;
UConverter *cnv;
USet *set;
diff --git a/icu4c/source/test/cintltst/nucnvtst.c b/icu4c/source/test/cintltst/nucnvtst.c
index f6ed4707b..b2c587aa7 100644
--- a/icu4c/source/test/cintltst/nucnvtst.c
+++ b/icu4c/source/test/cintltst/nucnvtst.c
@@ -1256,7 +1256,7 @@ static void TestNewConvertWithBufferSizes(int32_t outsize, int32_t insize )
}
}
-static void TestCoverageMBCS(){
+static void TestCoverageMBCS(void){
#if 0
UErrorCode status = U_ZERO_ERROR;
const char *directory = loadTestData(&status);
@@ -1370,7 +1370,7 @@ static void TestConverterType(const char *convName, UConverterType convType) {
ucnv_close(myConverter);
}
-static void TestConverterTypesAndStarters()
+static void TestConverterTypesAndStarters(void)
{
#if !UCONFIG_NO_LEGACY_CONVERSION
UConverter* myConverter;
@@ -1513,7 +1513,7 @@ TestAmbiguousConverter(UConverter *cnv) {
}
}
-static void TestAmbiguous()
+static void TestAmbiguous(void)
{
UErrorCode status = U_ZERO_ERROR;
UConverter *ascii_cnv = 0, *sjis_cnv = 0, *cnv;
@@ -1603,7 +1603,7 @@ static void TestAmbiguous()
}
static void
-TestSignatureDetection(){
+TestSignatureDetection(void){
/* with null terminated strings */
{
static const char* data[] = {
@@ -1816,7 +1816,7 @@ TestSignatureDetection(){
}
}
-static void TestUTF7() {
+static void TestUTF7(void) {
/* test input */
static const uint8_t in[]={
/* H - +Jjo- - ! +- +2AHcAQ */
@@ -1859,7 +1859,7 @@ static void TestUTF7() {
ucnv_close(cnv);
}
-static void TestIMAP() {
+static void TestIMAP(void) {
/* test input */
static const uint8_t in[]={
/* H - &Jjo- - ! &- &2AHcAQ- \ */
@@ -1902,7 +1902,7 @@ static void TestIMAP() {
ucnv_close(cnv);
}
-static void TestUTF8() {
+static void TestUTF8(void) {
/* test input */
static const uint8_t in[]={
0x61,
@@ -1967,7 +1967,7 @@ static void TestUTF8() {
ucnv_close(cnv);
}
-static void TestCESU8() {
+static void TestCESU8(void) {
/* test input */
static const uint8_t in[]={
0x61,
@@ -2038,7 +2038,7 @@ static void TestCESU8() {
ucnv_close(cnv);
}
-static void TestUTF16() {
+static void TestUTF16(void) {
/* test input */
static const uint8_t in1[]={
0xfe, 0xff, 0x4e, 0x00, 0xfe, 0xff
@@ -2096,7 +2096,7 @@ static void TestUTF16() {
ucnv_close(cnv);
}
-static void TestUTF16BE() {
+static void TestUTF16BE(void) {
/* test input */
static const uint8_t in[]={
0x00, 0x61,
@@ -2152,7 +2152,7 @@ static void TestUTF16BE() {
}
static void
-TestUTF16LE() {
+TestUTF16LE(void) {
/* test input */
static const uint8_t in[]={
0x61, 0x00,
@@ -2206,7 +2206,7 @@ TestUTF16LE() {
ucnv_close(cnv);
}
-static void TestUTF32() {
+static void TestUTF32(void) {
/* test input */
static const uint8_t in1[]={
0x00, 0x00, 0xfe, 0xff, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0xfe, 0xff
@@ -2265,7 +2265,7 @@ static void TestUTF32() {
}
static void
-TestUTF32BE() {
+TestUTF32BE(void) {
/* test input */
static const uint8_t in[]={
0x00, 0x00, 0x00, 0x61,
@@ -2336,7 +2336,7 @@ TestUTF32BE() {
}
static void
-TestUTF32LE() {
+TestUTF32LE(void) {
/* test input */
static const uint8_t in[]={
0x61, 0x00, 0x00, 0x00,
@@ -2407,7 +2407,7 @@ TestUTF32LE() {
}
static void
-TestLATIN1() {
+TestLATIN1(void) {
/* test input */
static const uint8_t in[]={
0x61,
@@ -2535,7 +2535,7 @@ TestLATIN1() {
}
static void
-TestSBCS() {
+TestSBCS(void) {
/* test input */
static const uint8_t in[]={ 0x61, 0xc0, 0x80, 0xe0, 0xf0, 0xf4};
/* expected test results */
@@ -2570,7 +2570,7 @@ TestSBCS() {
}
static void
-TestDBCS() {
+TestDBCS(void) {
/* test input */
static const uint8_t in[]={
0x44, 0x6a,
@@ -2617,7 +2617,7 @@ TestDBCS() {
}
static void
-TestMBCS() {
+TestMBCS(void) {
/* test input */
static const uint8_t in[]={
0x01,
@@ -2670,7 +2670,7 @@ TestMBCS() {
#if !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_NO_FILE_IO
static void
-TestICCRunout() {
+TestICCRunout(void) {
/* { "ibm-1363", :bin{ a2aea2 }, "\u00a1\u001a", :intvector{ 0, 2 }, :int{1}, :int{0}, "\", "?", :bin{""} } */
const char *cnvName = "ibm-1363";
@@ -3077,7 +3077,7 @@ static int TestJitterbug930(const char* enc){
}
static void
-TestHZ() {
+TestHZ(void) {
/* test input */
static const uint16_t in[]={
0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2014,
@@ -3160,7 +3160,7 @@ cleanup:
}
static void
-TestISCII(){
+TestISCII(void){
/* test input */
static const uint16_t in[]={
/* test full range of Devanagari */
@@ -3303,7 +3303,7 @@ TestISCII(){
}
static void
-TestISO_2022_JP() {
+TestISO_2022_JP(void) {
/* test input */
static const uint16_t in[]={
0x0041,/*0x00E9,*/0x3000, 0x3001, 0x3002, 0x0020, 0x000D, 0x000A,
@@ -3616,7 +3616,7 @@ TestRoundTrippingAllUTF(void){
}
static void
-TestSCSU() {
+TestSCSU(void) {
static const uint16_t germanUTF16[]={
0x00d6, 0x006c, 0x0020, 0x0066, 0x006c, 0x0069, 0x0065, 0x00df, 0x0074
@@ -3795,7 +3795,7 @@ TestSCSU() {
}
#if !UCONFIG_NO_LEGACY_CONVERSION
-static void TestJitterbug2346(){
+static void TestJitterbug2346(void){
char source[] = { 0x1b,0x24,0x42,0x3d,0x45,0x1b,0x28,0x4a,0x0d,0x0a,
0x1b,0x24,0x42,0x3d,0x45,0x1b,0x28,0x4a,0x0d,0x0a};
uint16_t expected[] = {0x91CD,0x000D,0x000A,0x91CD,0x000D,0x000A};
@@ -3844,7 +3844,7 @@ static void TestJitterbug2346(){
}
static void
-TestISO_2022_JP_1() {
+TestISO_2022_JP_1(void) {
/* test input */
static const uint16_t in[]={
0x3000, 0x3001, 0x3002, 0x0020, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, 0x000D, 0x000A,
@@ -3927,7 +3927,7 @@ TestISO_2022_JP_1() {
}
static void
-TestISO_2022_JP_2() {
+TestISO_2022_JP_2(void) {
/* test input */
static const uint16_t in[]={
0x00A8, 0x3003, 0x3005, 0x2015, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x000D, 0x000A,
@@ -4021,7 +4021,7 @@ cleanup:
}
static void
-TestISO_2022_KR() {
+TestISO_2022_KR(void) {
/* test input */
static const uint16_t in[]={
0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D
@@ -4103,7 +4103,7 @@ cleanup:
}
static void
-TestISO_2022_KR_1() {
+TestISO_2022_KR_1(void) {
/* test input */
static const uint16_t in[]={
0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D
@@ -4185,7 +4185,7 @@ cleanup:
free(offsets);
}
-static void TestJitterbug2411(){
+static void TestJitterbug2411(void){
static const char* source = "\x1b\x24\x29\x43\x6b\x6b\x6e\x6e\x6a\x68\x70\x6f\x69\x75\x79\x71\x77\x65\x68\x67\x0A"
"\x1b\x24\x29\x43\x6a\x61\x73\x64\x66\x6a\x61\x73\x64\x66\x68\x6f\x69\x75\x79\x1b\x24\x29\x43";
UConverter* kr=NULL, *kr1=NULL;
@@ -4223,7 +4223,7 @@ static void TestJitterbug2411(){
}
static void
-TestJIS(){
+TestJIS(void){
/* From Unicode moved to testdata/conversion.txt */
/*To Unicode*/
{
@@ -4494,7 +4494,7 @@ cleanup:
#endif
static void
-TestISO_2022_CN() {
+TestISO_2022_CN(void) {
/* test input */
static const uint16_t in[]={
/* jitterbug 951 */
@@ -4666,7 +4666,7 @@ static void TestJitterbug6175(void) {
}
static void
-TestEBCDIC_STATEFUL() {
+TestEBCDIC_STATEFUL(void) {
/* test input */
static const uint8_t in[]={
0x61,
@@ -4733,7 +4733,7 @@ TestEBCDIC_STATEFUL() {
}
static void
-TestGB18030() {
+TestGB18030(void) {
/* test input */
static const uint8_t in[]={
0x24,
@@ -4789,7 +4789,7 @@ TestGB18030() {
}
static void
-TestLMBCS() {
+TestLMBCS(void) {
/* LMBCS-1 string */
static const uint8_t pszLMBCS[]={
0x61,
@@ -5350,7 +5350,7 @@ TestLMBCS() {
}
-static void TestJitterbug255()
+static void TestJitterbug255(void)
{
static const uint8_t testBytes[] = { 0x95, 0xcf, 0x8a, 0xb7, 0x0d, 0x0a, 0x00 };
const char *testBuffer = (const char *)testBytes;
@@ -5376,7 +5376,7 @@ static void TestJitterbug255()
ucnv_close(cnv);
}
-static void TestEBCDICUS4XML()
+static void TestEBCDICUS4XML(void)
{
UChar unicodes_x[] = {0x0000, 0x0000, 0x0000, 0x0000};
static const UChar toUnicodeMaps_x[] = {0x000A, 0x000A, 0x000D, 0x0000};
@@ -5416,7 +5416,7 @@ static void TestEBCDICUS4XML()
#if !UCONFIG_NO_COLLATION
-static void TestJitterbug981(){
+static void TestJitterbug981(void){
const UChar* rules;
int32_t rules_length, target_cap, bytes_needed, buff_size;
UErrorCode status = U_ZERO_ERROR;
@@ -5471,7 +5471,7 @@ static void TestJitterbug981(){
#endif
#if !UCONFIG_NO_LEGACY_CONVERSION
-static void TestJitterbug1293(){
+static void TestJitterbug1293(void){
static const UChar src[] = {0x30DE, 0x30A4, 0x5E83, 0x544A, 0x30BF, 0x30A4, 0x30D7,0x000};
char target[256];
UErrorCode status = U_ZERO_ERROR;
@@ -5500,7 +5500,7 @@ static void TestJitterbug1293(){
}
#endif
-static void TestJB5275_1(){
+static void TestJB5275_1(void){
static const char* data = "\x3B\xB3\x0A" /* Easy characters */
"\xC0\xE9\xBF\xE9\xE8\xD8\x0A" /* Gurmukhi test */
@@ -5548,7 +5548,7 @@ static void TestJB5275_1(){
ucnv_close(conv);
}
-static void TestJB5275(){
+static void TestJB5275(void){
static const char* data =
/* "\xEF\x42\xEF\x41\xA4\xD5\xE5\xB3\xEA\x0A" unsupported sequence \xEF\x41 */
/* "\xEF\x42\xEF\x41\xD4\xDA\xB3\xE8\xEA\x0A" unsupported sequence \xEF\x41 */
@@ -5597,7 +5597,7 @@ static void TestJB5275(){
}
static void
-TestIsFixedWidth() {
+TestIsFixedWidth(void) {
UErrorCode status = U_ZERO_ERROR;
UConverter *cnv = NULL;
int32_t i;
diff --git a/icu4c/source/test/cintltst/reapits.c b/icu4c/source/test/cintltst/reapits.c
index 3d657968e..502d36aad 100644
--- a/icu4c/source/test/cintltst/reapits.c
+++ b/icu4c/source/test/cintltst/reapits.c
@@ -2274,7 +2274,7 @@ static UBool U_CALLCONV MatchCallback(const void *context, int32_t steps) {
return false;
}
-static void TestBug10815() {
+static void TestBug10815(void) {
/* Bug 10815: uregex_findNext() does not set U_REGEX_STOPPED_BY_CALLER
* when the callback function specified by uregex_setMatchCallback() returns false
*/
diff --git a/icu4c/source/test/cintltst/spooftest.c b/icu4c/source/test/cintltst/spooftest.c
index 64562bcbc..9f59051e4 100644
--- a/icu4c/source/test/cintltst/spooftest.c
+++ b/icu4c/source/test/cintltst/spooftest.c
@@ -122,7 +122,7 @@ const char goodLatinUTF8[] = {0x75, 0x77, 0};
// Test open from source rules.
// Run this in isolation to verify initialization.
-static void TestOpenFromSource() {
+static void TestOpenFromSource(void) {
// No TEST_SETUP because that calls uspoof_open().
UErrorCode status = U_ZERO_ERROR;
const char *dataSrcDir;
diff --git a/icu4c/source/test/cintltst/spreptst.c b/icu4c/source/test/cintltst/spreptst.c
index 73e4fe3dc..be374263e 100644
--- a/icu4c/source/test/cintltst/spreptst.c
+++ b/icu4c/source/test/cintltst/spreptst.c
@@ -597,7 +597,7 @@ Test_nfs4_cs_prep(void){
-static void TestBEAMWarning(){
+static void TestBEAMWarning(void){
UErrorCode status = U_ZERO_ERROR;
UParseError parseError;
UStringPrepProfile* profile = NULL;
diff --git a/icu4c/source/test/cintltst/stdnmtst.c b/icu4c/source/test/cintltst/stdnmtst.c
index 818478107..c59ee26d3 100644
--- a/icu4c/source/test/cintltst/stdnmtst.c
+++ b/icu4c/source/test/cintltst/stdnmtst.c
@@ -55,7 +55,7 @@ static int dotestname(const char *name, const char *standard, const char *expect
return res;
}
-static void TestStandardName()
+static void TestStandardName(void)
{
int res = 1;
@@ -139,7 +139,7 @@ static int dotestconv(const char *name, const char *standard, const char *expect
return res;
}
-static void TestCanonicalName()
+static void TestCanonicalName(void)
{
/* Test for some expected results. */
@@ -267,7 +267,7 @@ static UBool doTestUCharNames(const char *name, const char *standard, const char
return 1;
}
-static void TestStandardNames()
+static void TestStandardNames(void)
{
static const char *asciiIANA[] = {
"ANSI_X3.4-1968",
diff --git a/icu4c/source/test/cintltst/tracetst.c b/icu4c/source/test/cintltst/tracetst.c
index 9e43b7d00..e456d68d1 100644
--- a/icu4c/source/test/cintltst/tracetst.c
+++ b/icu4c/source/test/cintltst/tracetst.c
@@ -209,7 +209,7 @@ static void pseudo_ucnv_close(UConverter * cnv)
/*
* TestTraceAPI
*/
-static void TestTraceAPI() {
+static void TestTraceAPI(void) {
UTraceEntry *originalTEntryFunc;
diff --git a/icu4c/source/test/cintltst/ucnvseltst.c b/icu4c/source/test/cintltst/ucnvseltst.c
index ed45ccd50..b4f48ae05 100644
--- a/icu4c/source/test/cintltst/ucnvseltst.c
+++ b/icu4c/source/test/cintltst/ucnvseltst.c
@@ -46,7 +46,7 @@ static const char **gAvailableNames = NULL;
static int32_t gCountAvailable = 0;
static UBool
-getAvailableNames() {
+getAvailableNames(void) {
int32_t i;
if (gAvailableNames != NULL) {
return true;
@@ -69,7 +69,7 @@ getAvailableNames() {
}
static void
-releaseAvailableNames() {
+releaseAvailableNames(void) {
uprv_free((void *)gAvailableNames);
gAvailableNames = NULL;
gCountAvailable = 0;
@@ -377,7 +377,7 @@ serializeAndUnserialize(UConverterSelector *sel, char **buffer, UErrorCode *stat
return sel;
}
-static void TestSelector()
+static void TestSelector(void)
{
TestText text;
USet* excluded_sets[3] = { NULL };
@@ -507,7 +507,7 @@ static void TestSelector()
}
/* Improve code coverage of UPropsVectors */
-static void TestUPropsVector() {
+static void TestUPropsVector(void) {
UErrorCode errorCode = U_ILLEGAL_ARGUMENT_ERROR;
UPropsVectors *pv = upvec_open(100, &errorCode);
if (pv != NULL) {
diff --git a/icu4c/source/test/cintltst/udatatst.c b/icu4c/source/test/cintltst/udatatst.c
index e19fbfe2d..bb919fb8c 100644
--- a/icu4c/source/test/cintltst/udatatst.c
+++ b/icu4c/source/test/cintltst/udatatst.c
@@ -117,7 +117,7 @@ static void lots_of_mallocs()
#endif
#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
-static void TestUDataOpen(){
+static void TestUDataOpen(void){
UDataMemory *result;
UErrorCode status=U_ZERO_ERROR;
const char* memMap[][2]={
@@ -442,7 +442,7 @@ static const ICU_COMMON_Data_Header gEmptyHeader = {
};
-static void TestUDataSetAppData(){
+static void TestUDataSetAppData(void){
/* UDataMemory *dataItem;*/
UErrorCode status=U_ZERO_ERROR;
@@ -497,7 +497,7 @@ static void TestUDataSetAppData(){
dataItem = udata_open("appData1", "res", "te_IN", &status); **/
}
-static char *safeGetICUDataDirectory() {
+static char *safeGetICUDataDirectory(void) {
const char *dataDir = u_getDataDirectory(); /* Returned string vanashes with u_cleanup */
char *retStr = NULL;
if (dataDir != NULL) {
@@ -507,7 +507,7 @@ static char *safeGetICUDataDirectory() {
return retStr;
}
-static void TestUDataFileAccess(){
+static void TestUDataFileAccess(void){
UErrorCode status;
char *icuDataDir;
icuDataDir = safeGetICUDataDirectory(); /* save icu data dir, so we can put it back
@@ -644,7 +644,7 @@ isAcceptable3(void *context,
}
#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
-static void TestUDataOpenChoiceDemo1() {
+static void TestUDataOpenChoiceDemo1(void) {
UDataMemory *result;
UErrorCode status=U_ZERO_ERROR;
@@ -748,7 +748,7 @@ isAcceptable(void *context,
/* This test checks to see if the isAcceptable function is being called correctly. */
-static void TestUDataOpenChoiceDemo2() {
+static void TestUDataOpenChoiceDemo2(void) {
UDataMemory *result;
UErrorCode status=U_ZERO_ERROR;
int i;
@@ -795,7 +795,7 @@ static void TestUDataOpenChoiceDemo2() {
}
}
-static void TestUDataGetInfo() {
+static void TestUDataGetInfo(void) {
UDataMemory *result;
/* UDataInfo cf. udata.h */
@@ -872,7 +872,7 @@ static void TestUDataGetInfo() {
udata_close(result);
}
-static void TestUDataGetMemory() {
+static void TestUDataGetMemory(void) {
UDataMemory *result;
const int32_t *table=NULL;
@@ -920,7 +920,7 @@ static void TestUDataGetMemory() {
}
-static void TestErrorConditions(){
+static void TestErrorConditions(void){
UDataMemory *result=NULL;
UErrorCode status=U_ZERO_ERROR;
@@ -1037,7 +1037,7 @@ static void TestErrorConditions(){
}
/* Test whether apps and ICU can each have their own root.res */
-static void TestAppData()
+static void TestAppData(void)
{
UResourceBundle *icu, *app;
UResourceBundle *tmp = NULL;
@@ -1125,7 +1125,7 @@ static void TestAppData()
}
#endif
-static void TestICUDataName()
+static void TestICUDataName(void)
{
UVersionInfo icuVersion;
char expectDataName[20];
@@ -1635,7 +1635,7 @@ printErrorToString(void *context, const char *fmt, va_list args) {
#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
static void
-TestSwapData() {
+TestSwapData(void) {
char name[100];
UDataSwapper *ds;
UDataMemory *pData;
@@ -1751,7 +1751,7 @@ TestSwapData() {
}
#endif
-static void PointerTableOfContents() {
+static void PointerTableOfContents(void) {
UDataMemory *dataItem;
UErrorCode status=U_ZERO_ERROR;
diff --git a/icu4c/source/test/cintltst/udatpg_test.c b/icu4c/source/test/cintltst/udatpg_test.c
index a28ab2b9d..7f01d5d0b 100644
--- a/icu4c/source/test/cintltst/udatpg_test.c
+++ b/icu4c/source/test/cintltst/udatpg_test.c
@@ -87,7 +87,7 @@ static const UChar sampleFormatted[] = {0x31, 0x30, 0x20, 0x6A, 0x75, 0x69, 0x6C
static const UChar skeleton[]= {0x4d, 0x4d, 0x4d, 0x64, 0}; /* MMMd */
static const UChar timeZoneGMT[] = { 0x0047, 0x004d, 0x0054, 0x0000 }; /* "GMT" */
-static void TestOpenClose() {
+static void TestOpenClose(void) {
UErrorCode errorCode=U_ZERO_ERROR;
UDateTimePatternGenerator *dtpg, *dtpg2;
const UChar *s;
@@ -143,7 +143,7 @@ static const AppendItemNameData appendItemNameData[] = { /* for Finnish */
{ UDATPG_FIELD_COUNT, {0} } /* terminator */
};
-static void TestUsage() {
+static void TestUsage(void) {
UErrorCode errorCode=U_ZERO_ERROR;
UDateTimePatternGenerator *dtpg;
const AppendItemNameData * appItemNameDataPtr;
@@ -254,7 +254,7 @@ static void TestUsage() {
udatpg_close(dtpg);
}
-static void TestBuilder() {
+static void TestBuilder(void) {
UErrorCode errorCode=U_ZERO_ERROR;
UDateTimePatternGenerator *dtpg;
UDateTimePatternConflict conflict;
@@ -409,7 +409,7 @@ static const UChar patn_hpmm_a[] = u"h.mm\u202Fa";
static const UChar patn_Hpmm[] = u"H.mm";
static const UChar patn_hhpmm_a[] = u"hh.mm\u202Fa";
-static void TestOptions() {
+static void TestOptions(void) {
const DTPtnGenOptionsData testData[] = {
/*loc skel options expectedPattern */
{ "en", skel_Hmm, UDATPG_MATCH_NO_OPTIONS, patn_HHcmm },
@@ -461,7 +461,7 @@ typedef struct FieldDisplayNameData {
} FieldDisplayNameData;
enum { kFieldDisplayNameMax = 32, kFieldDisplayNameBytesMax = 64};
-static void TestGetFieldDisplayNames() {
+static void TestGetFieldDisplayNames(void) {
const FieldDisplayNameData testData[] = {
/*loc field width expectedName */
{ "de", UDATPG_QUARTER_FIELD, UDATPG_WIDE, "Quartal" },
@@ -528,7 +528,7 @@ typedef struct HourCycleData {
UDateFormatHourCycle expected;
} HourCycleData;
-static void TestGetDefaultHourCycle() {
+static void TestGetDefaultHourCycle(void) {
const HourCycleData testData[] = {
/*loc expected */
{ "ar_EG", UDAT_HOUR_CYCLE_12 },
@@ -566,7 +566,7 @@ static void TestGetDefaultHourCycle() {
}
// Ensure that calling udatpg_getDefaultHourCycle on an empty instance doesn't call UPRV_UNREACHABLE_EXIT/abort.
-static void TestGetDefaultHourCycleOnEmptyInstance() {
+static void TestGetDefaultHourCycleOnEmptyInstance(void) {
UErrorCode status = U_ZERO_ERROR;
UDateTimePatternGenerator * dtpgen = udatpg_openEmpty(&status);
diff --git a/icu4c/source/test/cintltst/uformattedvaluetst.c b/icu4c/source/test/cintltst/uformattedvaluetst.c
index 392d76e34..edc745a3a 100644
--- a/icu4c/source/test/cintltst/uformattedvaluetst.c
+++ b/icu4c/source/test/cintltst/uformattedvaluetst.c
@@ -37,7 +37,7 @@ void addUFormattedValueTest(TestNode** root) {
}
-static void TestBasic() {
+static void TestBasic(void) {
UErrorCode status = U_ZERO_ERROR;
UConstrainedFieldPosition* ucfpos = ucfpos_open(&status);
assertSuccess("opening ucfpos", &status);
@@ -56,7 +56,7 @@ static void TestBasic() {
ucfpos_close(ucfpos);
}
-void TestSetters() {
+void TestSetters(void) {
UErrorCode status = U_ZERO_ERROR;
UConstrainedFieldPosition* ucfpos = ucfpos_open(&status);
assertSuccess("opening ucfpos", &status);
diff --git a/icu4c/source/test/cintltst/ulistfmttest.c b/icu4c/source/test/cintltst/ulistfmttest.c
index b0a1f6bc3..0696456ac 100644
--- a/icu4c/source/test/cintltst/ulistfmttest.c
+++ b/icu4c/source/test/cintltst/ulistfmttest.c
@@ -69,7 +69,7 @@ enum {
kBBufMax = 256
};
-static void TestUListFmt() {
+static void TestUListFmt(void) {
const ListFmtTestEntry * lftep;
for (lftep = listFmtTestEntries; lftep->locale != NULL ; lftep++ ) {
UErrorCode status = U_ZERO_ERROR;
@@ -135,7 +135,7 @@ static void TestUListFmt() {
}
}
-static void TestUListFmtToValue() {
+static void TestUListFmtToValue(void) {
UErrorCode ec = U_ZERO_ERROR;
UListFormatter* fmt = ulistfmt_open("en", &ec);
UFormattedList* fl = ulistfmt_openResult(&ec);
@@ -216,7 +216,7 @@ static void TestUListFmtToValue() {
ulistfmt_closeResult(fl);
}
-static void TestUListOpenStyled() {
+static void TestUListOpenStyled(void) {
UErrorCode ec = U_ZERO_ERROR;
UListFormatter* fmt = ulistfmt_openForType("en", ULISTFMT_TYPE_OR, ULISTFMT_WIDTH_SHORT, &ec);
UFormattedList* fl = ulistfmt_openResult(&ec);
@@ -256,7 +256,7 @@ static void TestUListOpenStyled() {
#include <stdio.h>
-static void TestUList21871_A() {
+static void TestUList21871_A(void) {
UErrorCode status = U_ZERO_ERROR;
UListFormatter *fmt = ulistfmt_openForType("en", ULISTFMT_TYPE_AND, ULISTFMT_WIDTH_WIDE, &status);
assertSuccess("ulistfmt_openForType", &status);
@@ -304,7 +304,7 @@ static void TestUList21871_A() {
ulistfmt_close(fmt);
}
-static void TestUList21871_B() {
+static void TestUList21871_B(void) {
UErrorCode status = U_ZERO_ERROR;
UListFormatter *fmt = ulistfmt_openForType("en", ULISTFMT_TYPE_AND, ULISTFMT_WIDTH_WIDE, &status);
assertSuccess("ulistfmt_openForType", &status);
diff --git a/icu4c/source/test/cintltst/ulocaletst.c b/icu4c/source/test/cintltst/ulocaletst.c
index 6d3fae84c..a4d58e370 100644
--- a/icu4c/source/test/cintltst/ulocaletst.c
+++ b/icu4c/source/test/cintltst/ulocaletst.c
@@ -35,7 +35,7 @@ static const char* const rawData[][6] = {
{ "x-klingon", "Latn", "ZX", "", "x-klingon_Latn_ZX.utf32be@special", "x-klingon_Latn_ZX.utf32be@special"},
};
-static void TestBasicGetters() {
+static void TestBasicGetters(void) {
for (int32_t i = 0; i < UPRV_LENGTHOF(rawData); i++) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLocaleID(rawData[i][NAME], -1, &status);
@@ -64,7 +64,7 @@ static void VerifyMatch(const char* localeID, const char* tag) {
}
}
-static void TestForLanguageTag() {
+static void TestForLanguageTag(void) {
VerifyMatch("en_US", "en-US");
VerifyMatch("en_GB_OXENDICT", "en-GB-oed");
VerifyMatch("af@calendar=coptic;t=ar-i0-handwrit;x=foo", "af-t-ar-i0-handwrit-u-ca-coptic-x-foo");
@@ -88,7 +88,7 @@ static void TestForLanguageTag() {
VerifyMatch("__1994_BISKE_ROZAJ@x=private", "und-1994-biske-rozaj-x-private");
}
-static void TestGetKeywords() {
+static void TestGetKeywords(void) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLocaleID("de@calendar=buddhist;collation=phonebook", -1, &status);
if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
@@ -117,7 +117,7 @@ static void TestGetKeywords() {
}
}
-static void TestGetKeywordsEmpty() {
+static void TestGetKeywordsEmpty(void) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLocaleID("de", -1, &status);
if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
@@ -130,7 +130,7 @@ static void TestGetKeywordsEmpty() {
}
}
-static void TestGetKeywordsWithPrivateUse() {
+static void TestGetKeywordsWithPrivateUse(void) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLanguageTag("en-US-u-ca-gregory-x-foo", -1, &status);
if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
@@ -157,7 +157,7 @@ static void TestGetKeywordsWithPrivateUse() {
}
}
-static void TestGetUnicodeKeywords() {
+static void TestGetUnicodeKeywords(void) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLocaleID("de@calendar=buddhist;collation=phonebook", -1, &status);
if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
@@ -186,7 +186,7 @@ static void TestGetUnicodeKeywords() {
}
}
-static void TestGetUnicodeKeywordsEmpty() {
+static void TestGetUnicodeKeywordsEmpty(void) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLocaleID("de", -1, &status);
if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
@@ -199,7 +199,7 @@ static void TestGetUnicodeKeywordsEmpty() {
}
}
-static void TestGetUnicodeKeywordsWithPrivateUse() {
+static void TestGetUnicodeKeywordsWithPrivateUse(void) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLanguageTag("en-US-u-ca-gregory-x-foo", -1, &status);
if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
@@ -220,7 +220,7 @@ static void TestGetUnicodeKeywordsWithPrivateUse() {
}
}
-static void TestGetKeywordValue() {
+static void TestGetKeywordValue(void) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLanguageTag("fa-u-nu-thai", -1, &status);
if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
@@ -242,7 +242,7 @@ static void TestGetKeywordValue() {
}
}
-static void TestGetUnicodeKeywordValue() {
+static void TestGetUnicodeKeywordValue(void) {
UErrorCode status = U_ZERO_ERROR;
ULocale* l = ulocale_openForLanguageTag("fa-u-nu-thai", -1, &status);
if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
diff --git a/icu4c/source/test/cintltst/ulocbuildertst.c b/icu4c/source/test/cintltst/ulocbuildertst.c
index af811277b..d128d074b 100644
--- a/icu4c/source/test/cintltst/ulocbuildertst.c
+++ b/icu4c/source/test/cintltst/ulocbuildertst.c
@@ -40,7 +40,7 @@ static void Verify(ULocaleBuilder* bld, const char* expected, const char* msg) {
}
}
-static void TestLocaleBuilder() {
+static void TestLocaleBuilder(void) {
// The following test data are copy from
// icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
@@ -274,7 +274,7 @@ static void TestLocaleBuilder() {
ulocbld_close(bld);
}
-static void TestLocaleBuilderBasic() {
+static void TestLocaleBuilderBasic(void) {
ULocaleBuilder* bld = ulocbld_open();
ulocbld_setLanguage(bld, "zh", -1);
Verify(bld, "zh", "ulocbld_setLanguage('zh') got Error: %s\n");
@@ -331,7 +331,7 @@ static void TestLocaleBuilderBasic() {
ulocbld_close(bld);
}
-static void TestLocaleBuilderBasicWithExtensionsOnDefaultLocale() {
+static void TestLocaleBuilderBasicWithExtensionsOnDefaultLocale(void) {
// Change the default locale to one with extension tags.
UErrorCode status = U_ZERO_ERROR;
char originalDefault[ULOC_FULLNAME_CAPACITY];
@@ -351,7 +351,7 @@ static void TestLocaleBuilderBasicWithExtensionsOnDefaultLocale() {
}
}
-static void TestSetLanguageWellFormed() {
+static void TestSetLanguageWellFormed(void) {
// http://www.unicode.org/reports/tr35/tr35.html#unicode_language_subtag
// unicode_language_subtag = alpha{2,3} | alpha{5,8};
// ICUTC decided also support alpha{4}
@@ -408,7 +408,7 @@ static void TestSetLanguageWellFormed() {
}
}
-static void TestSetLanguageIllFormed() {
+static void TestSetLanguageIllFormed(void) {
static const char* illFormed[] = {
"a",
"z",
@@ -477,7 +477,7 @@ static void TestSetLanguageIllFormed() {
}
}
-static void TestSetScriptWellFormed() {
+static void TestSetScriptWellFormed(void) {
// http://www.unicode.org/reports/tr35/tr35.html#unicode_script_subtag
// unicode_script_subtag = alpha{4} ;
static const char* wellFormedScripts[] = {
@@ -508,7 +508,7 @@ static void TestSetScriptWellFormed() {
ulocbld_close(bld);
}
}
-static void TestSetScriptIllFormed() {
+static void TestSetScriptIllFormed(void) {
static const char* illFormed[] = {
"a",
"z",
@@ -580,7 +580,7 @@ static void TestSetScriptIllFormed() {
}
}
-static void TestSetRegionWellFormed() {
+static void TestSetRegionWellFormed(void) {
// http://www.unicode.org/reports/tr35/tr35.html#unicode_region_subtag
// unicode_region_subtag = (alpha{2} | digit{3})
static const char* wellFormedRegions[] = {
@@ -613,7 +613,7 @@ static void TestSetRegionWellFormed() {
}
}
-static void TestSetRegionIllFormed() {
+static void TestSetRegionIllFormed(void) {
static const char* illFormed[] = {
"a",
"z",
@@ -685,7 +685,7 @@ static void TestSetRegionIllFormed() {
}
}
-static void TestSetVariantWellFormed() {
+static void TestSetVariantWellFormed(void) {
// http://www.unicode.org/reports/tr35/tr35.html#unicode_variant_subtag
// (sep unicode_variant_subtag)*
// unicode_variant_subtag = (alphanum{5,8} | digit alphanum{3}) ;
@@ -763,7 +763,7 @@ static void TestSetVariantWellFormed() {
}
}
-static void TestSetVariantIllFormed() {
+static void TestSetVariantIllFormed(void) {
static const char* illFormed[] = {
"a",
"z",
@@ -871,7 +871,7 @@ static void TestSetVariantIllFormed() {
}
}
-static void TestSetUnicodeLocaleKeywordWellFormed() {
+static void TestSetUnicodeLocaleKeywordWellFormed(void) {
// http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_extensions
// keyword = key (sep type)? ;
// key = alphanum alpha ;
@@ -901,7 +901,7 @@ static void TestSetUnicodeLocaleKeywordWellFormed() {
}
}
-static void TestSetUnicodeLocaleKeywordIllFormedKey() {
+static void TestSetUnicodeLocaleKeywordIllFormedKey(void) {
static const char* illFormed[] = {
"34",
"ab-cde",
@@ -925,7 +925,7 @@ static void TestSetUnicodeLocaleKeywordIllFormedKey() {
}
}
-static void TestSetUnicodeLocaleKeywordIllFormedValue() {
+static void TestSetUnicodeLocaleKeywordIllFormedValue(void) {
static const char* illFormed[] = {
"34",
"ab-",
@@ -952,7 +952,7 @@ static void TestSetUnicodeLocaleKeywordIllFormedValue() {
ulocbld_close(bld);
}
-static void TestAddRemoveUnicodeLocaleAttribute() {
+static void TestAddRemoveUnicodeLocaleAttribute(void) {
ULocaleBuilder* bld = ulocbld_open();
ulocbld_setLanguage(bld, "fr", -1);
ulocbld_addUnicodeLocaleAttribute(bld, "abc", -1);
@@ -1050,7 +1050,7 @@ static void TestAddRemoveUnicodeLocaleAttribute() {
ulocbld_close(bld);
}
-static void TestAddRemoveUnicodeLocaleAttributeWellFormed() {
+static void TestAddRemoveUnicodeLocaleAttributeWellFormed(void) {
// http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_extensions
// attribute = alphanum{3,8} ;
static const char* wellFormedAttributes[] = {
@@ -1126,7 +1126,7 @@ static void TestAddRemoveUnicodeLocaleAttributeWellFormed() {
ulocbld_close(bld);
}
-static void TestAddUnicodeLocaleAttributeIllFormed() {
+static void TestAddUnicodeLocaleAttributeIllFormed(void) {
static const char* illFormed[] = {
"aa",
"34",
@@ -1154,7 +1154,7 @@ static void TestAddUnicodeLocaleAttributeIllFormed() {
}
}
-static void TestSetExtensionU() {
+static void TestSetExtensionU(void) {
ULocaleBuilder* bld = ulocbld_open();
ulocbld_setLanguage(bld, "zhABC", 2);
Verify(bld, "zh",
@@ -1195,7 +1195,7 @@ static void TestSetExtensionU() {
ulocbld_close(bld);
}
-static void TestSetExtensionValidateUWellFormed() {
+static void TestSetExtensionValidateUWellFormed(void) {
static const char* wellFormedExtensions[] = {
// keyword
// keyword = key (sep type)? ;
@@ -1244,7 +1244,7 @@ static void TestSetExtensionValidateUWellFormed() {
}
}
-static void TestSetExtensionValidateUIllFormed() {
+static void TestSetExtensionValidateUIllFormed(void) {
static const char* illFormed[] = {
// bad key
"-",
@@ -1287,7 +1287,7 @@ static void TestSetExtensionValidateUIllFormed() {
}
}
-static void TestSetExtensionT() {
+static void TestSetExtensionT(void) {
ULocaleBuilder* bld = ulocbld_open();
ulocbld_setLanguage(bld, "fr", 2);
Verify(bld, "fr",
@@ -1324,7 +1324,7 @@ static void TestSetExtensionT() {
ulocbld_close(bld);
}
-static void TestSetExtensionValidateTWellFormed() {
+static void TestSetExtensionValidateTWellFormed(void) {
// ((sep tlang (sep tfield)*) | (sep tfield)+)
static const char* wellFormedExtensions[] = {
// tlang
@@ -1387,7 +1387,7 @@ static void TestSetExtensionValidateTWellFormed() {
ulocbld_close(bld);
}
-static void TestSetExtensionValidateTIllFormed() {
+static void TestSetExtensionValidateTIllFormed(void) {
static const char* illFormed[] = {
"a",
"a-",
@@ -1437,7 +1437,7 @@ static void TestSetExtensionValidateTIllFormed() {
ulocbld_close(bld);
}
-static void TestSetExtensionPU() {
+static void TestSetExtensionPU(void) {
ULocaleBuilder* bld = ulocbld_open();
ulocbld_setLanguage(bld, "ar123", 2);
Verify(bld, "ar",
@@ -1465,7 +1465,7 @@ static void TestSetExtensionPU() {
ulocbld_close(bld);
}
-static void TestSetExtensionValidatePUWellFormed() {
+static void TestSetExtensionValidatePUWellFormed(void) {
// ((sep tlang (sep tfield)*) | (sep tfield)+)
static const char* wellFormedExtensions[] = {
"a", // Short subtag
@@ -1499,7 +1499,7 @@ static void TestSetExtensionValidatePUWellFormed() {
ulocbld_close(bld);
}
-static void TestSetExtensionValidatePUIllFormed() {
+static void TestSetExtensionValidatePUIllFormed(void) {
static const char* illFormed[] = {
"123456789", // Too long
"abcdefghi", // Too long
@@ -1522,7 +1522,7 @@ static void TestSetExtensionValidatePUIllFormed() {
ulocbld_close(bld);
}
-static void TestSetExtensionOthers() {
+static void TestSetExtensionOthers(void) {
ULocaleBuilder* bld = ulocbld_open();
ulocbld_setLanguage(bld, "fr", -1);
Verify(bld, "fr",
@@ -1562,7 +1562,7 @@ static void TestSetExtensionOthers() {
ulocbld_close(bld);
}
-static void TestSetExtensionValidateOthersWellFormed() {
+static void TestSetExtensionValidateOthersWellFormed(void) {
static const char* wellFormedExtensions[] = {
"ab",
"abc",
@@ -1616,7 +1616,7 @@ static void TestSetExtensionValidateOthersWellFormed() {
ulocbld_close(bld);
}
-static void TestSetExtensionValidateOthersIllFormed() {
+static void TestSetExtensionValidateOthersIllFormed(void) {
static const char* illFormed[] = {
"0", // Too short
"a", // Too short
@@ -1645,7 +1645,7 @@ static void TestSetExtensionValidateOthersIllFormed() {
ulocbld_close(bld);
}
-static void TestSetLocale() {
+static void TestSetLocale(void) {
ULocaleBuilder* bld1 = ulocbld_open();
ULocaleBuilder* bld2 = ulocbld_open();
UErrorCode status = U_ZERO_ERROR;
@@ -1679,7 +1679,7 @@ static void TestSetLocale() {
ulocbld_close(bld2);
}
-static void TestBuildULocale() {
+static void TestBuildULocale(void) {
ULocaleBuilder* bld1 = ulocbld_open();
UErrorCode status = U_ZERO_ERROR;
@@ -1735,7 +1735,7 @@ static void TestBuildULocale() {
}
-static void TestPosixCases() {
+static void TestPosixCases(void) {
UErrorCode status = U_ZERO_ERROR;
ULocaleBuilder* bld = ulocbld_open();
ulocbld_setLanguage(bld, "en", -1);
diff --git a/icu4c/source/test/cintltst/unumberformattertst.c b/icu4c/source/test/cintltst/unumberformattertst.c
index 93f039f81..be2dd5eb5 100644
--- a/icu4c/source/test/cintltst/unumberformattertst.c
+++ b/icu4c/source/test/cintltst/unumberformattertst.c
@@ -63,7 +63,7 @@ void addUNumberFormatterTest(TestNode** root) {
#define CAPACITY 30
-static void TestSkeletonFormatToString() {
+static void TestSkeletonFormatToString(void) {
UErrorCode ec = U_ZERO_ERROR;
UChar buffer[CAPACITY];
UFormattedNumber* result = NULL;
@@ -104,7 +104,7 @@ static void TestSkeletonFormatToString() {
}
-static void TestSkeletonFormatToFields() {
+static void TestSkeletonFormatToFields(void) {
UErrorCode ec = U_ZERO_ERROR;
UFieldPositionIterator* ufpositer = NULL;
@@ -188,7 +188,7 @@ static void TestSkeletonFormatToFields() {
}
-static void TestExampleCode() {
+static void TestExampleCode(void) {
// This is the example code given in unumberformatter.h.
// Setup:
@@ -219,7 +219,7 @@ static void TestExampleCode() {
}
-static void TestSimpleNumberFormatterExample() {
+static void TestSimpleNumberFormatterExample(void) {
// This is the example in usimplenumberformatter.h
UErrorCode ec = U_ZERO_ERROR;
USimpleNumberFormatter* uformatter = usnumf_openForLocale("bn", &ec);
@@ -239,7 +239,7 @@ static void TestSimpleNumberFormatterExample() {
}
-static void TestSimpleNumberFormatterFull() {
+static void TestSimpleNumberFormatterFull(void) {
UErrorCode ec = U_ZERO_ERROR;
USimpleNumberFormatter* uformatter = usnumf_openForLocaleAndGroupingStrategy("de-CH", UNUM_GROUPING_ON_ALIGNED, &ec);
UFormattedNumber* uresult = unumf_openResult(&ec);
@@ -255,9 +255,9 @@ static void TestSimpleNumberFormatterFull() {
usnum_setToInt64(unumber, 98765, &ec);
usnum_multiplyByPowerOfTen(unumber, -2, &ec);
usnum_roundTo(unumber, -1, UNUM_ROUND_HALFDOWN, &ec);
+ usnum_setMaximumIntegerDigits(unumber, 1, &ec);
usnum_setMinimumIntegerDigits(unumber, 4, &ec);
usnum_setMinimumFractionDigits(unumber, 3, &ec);
- usnum_truncateStart(unumber, 1, &ec);
usnum_setSign(unumber, UNUM_SIMPLE_NUMBER_PLUS_SIGN, &ec);
usnumf_format(uformatter, unumber, uresult, &ec);
@@ -273,7 +273,7 @@ static void TestSimpleNumberFormatterFull() {
}
-static void TestFormattedValue() {
+static void TestFormattedValue(void) {
UErrorCode ec = U_ZERO_ERROR;
UNumberFormatter* uformatter = unumf_openForSkeletonAndLocale(
u".00 compact-short", -1, "en", &ec);
@@ -306,7 +306,7 @@ static void TestFormattedValue() {
}
-static void TestSkeletonParseError() {
+static void TestSkeletonParseError(void) {
UErrorCode ec = U_ZERO_ERROR;
UNumberFormatter* uformatter;
UParseError perror;
@@ -331,7 +331,7 @@ static void TestSkeletonParseError() {
}
-static void TestToDecimalNumber() {
+static void TestToDecimalNumber(void) {
UErrorCode ec = U_ZERO_ERROR;
UNumberFormatter* uformatter = unumf_openForSkeletonAndLocale(
u"currency/USD",
@@ -359,7 +359,7 @@ static void TestToDecimalNumber() {
}
-static void TestPerUnitInArabic() {
+static void TestPerUnitInArabic(void) {
const char* simpleMeasureUnits[] = {
"area-acre",
"digital-bit",
@@ -445,7 +445,7 @@ static void TestPerUnitInArabic() {
}
-static void Test21674_State() {
+static void Test21674_State(void) {
UErrorCode status = U_ZERO_ERROR;
UNumberFormatter* nf = NULL;
UFormattedNumber* result = NULL;
diff --git a/icu4c/source/test/cintltst/unumberrangeformattertst.c b/icu4c/source/test/cintltst/unumberrangeformattertst.c
index ad1375c98..6861538f4 100644
--- a/icu4c/source/test/cintltst/unumberrangeformattertst.c
+++ b/icu4c/source/test/cintltst/unumberrangeformattertst.c
@@ -43,7 +43,7 @@ void addUNumberRangeFormatterTest(TestNode** root) {
#define CAPACITY 30
-static void TestExampleCode() {
+static void TestExampleCode(void) {
// This is the example code given in unumberrangeformatter.h.
// Setup:
@@ -77,7 +77,7 @@ static void TestExampleCode() {
}
-static void TestFormattedValue() {
+static void TestFormattedValue(void) {
UErrorCode ec = U_ZERO_ERROR;
UNumberRangeFormatter* uformatter = unumrf_openForSkeletonWithCollapseAndIdentityFallback(
u"K",
@@ -123,7 +123,7 @@ static void TestFormattedValue() {
}
-static void TestSkeletonParseError() {
+static void TestSkeletonParseError(void) {
UErrorCode ec = U_ZERO_ERROR;
UNumberRangeFormatter* uformatter;
UParseError perror;
@@ -160,7 +160,7 @@ static void TestSkeletonParseError() {
}
-static void TestGetDecimalNumbers() {
+static void TestGetDecimalNumbers(void) {
UErrorCode ec = U_ZERO_ERROR;
UNumberRangeFormatter* uformatter = unumrf_openForSkeletonWithCollapseAndIdentityFallback(
u"currency/USD",
diff --git a/icu4c/source/test/cintltst/uregiontest.c b/icu4c/source/test/cintltst/uregiontest.c
index edb7aa390..0dd896817 100644
--- a/icu4c/source/test/cintltst/uregiontest.c
+++ b/icu4c/source/test/cintltst/uregiontest.c
@@ -362,7 +362,7 @@ static KnownRegion knownRegions[] = {
};
-static void TestKnownRegions() {
+static void TestKnownRegions(void) {
const KnownRegion * rd;
for (rd = knownRegions; rd->code != NULL ; rd++ ) {
UErrorCode status = U_ZERO_ERROR;
@@ -389,7 +389,7 @@ static void TestKnownRegions() {
}
}
-static void TestGetContainedRegions() {
+static void TestGetContainedRegions(void) {
const KnownRegion * rd;
for (rd = knownRegions; rd->code != NULL ; rd++ ) {
UErrorCode status = U_ZERO_ERROR;
@@ -418,7 +418,7 @@ static void TestGetContainedRegions() {
}
}
-static void TestGroupingChildren() {
+static void TestGroupingChildren(void) {
const char* testGroupings[] = {
"003", "021,013,029",
"419", "013,029,005",
@@ -470,7 +470,7 @@ static void TestGroupingChildren() {
}
}
-static void TestGetContainedRegionsWithType() {
+static void TestGetContainedRegionsWithType(void) {
const KnownRegion * rd;
for (rd = knownRegions; rd->code != NULL ; rd++ ) {
UErrorCode status = U_ZERO_ERROR;
@@ -499,7 +499,7 @@ static void TestGetContainedRegionsWithType() {
}
}
-static void TestGetContainingRegion() {
+static void TestGetContainingRegion(void) {
const KnownRegion * rd;
for (rd = knownRegions; rd->code != NULL ; rd++ ) {
UErrorCode status = U_ZERO_ERROR;
@@ -523,7 +523,7 @@ static void TestGetContainingRegion() {
}
}
-static void TestGetContainingRegionWithType() {
+static void TestGetContainingRegionWithType(void) {
const KnownRegion * rd;
for (rd = knownRegions; rd->code != NULL ; rd++ ) {
UErrorCode status = U_ZERO_ERROR;
@@ -563,7 +563,7 @@ static const char ** expectPrefRegionsTestData[] = {
NULL
};
-static void TestGetPreferredValues() {
+static void TestGetPreferredValues(void) {
const char *** testDataPtr = expectPrefRegionsTestData;
const char ** regionListPtr;
while ( (regionListPtr = *testDataPtr++) != NULL ) {
@@ -600,7 +600,7 @@ static void TestGetPreferredValues() {
}
}
-static void TestContains() {
+static void TestContains(void) {
const KnownRegion * rd;
for (rd = knownRegions; rd->code != NULL ; rd++ ) {
UErrorCode status = U_ZERO_ERROR;
diff --git a/icu4c/source/test/cintltst/usettest.c b/icu4c/source/test/cintltst/usettest.c
index c07e4073f..73f26a4fe 100644
--- a/icu4c/source/test/cintltst/usettest.c
+++ b/icu4c/source/test/cintltst/usettest.c
@@ -54,7 +54,7 @@ addUSetTest(TestNode** root) {
* Tests
*------------------------------------------------------------------*/
-static void Testj2269() {
+static void Testj2269(void) {
UErrorCode status = U_ZERO_ERROR;
UChar a[4] = { 0x61, 0x62, 0x63, 0 };
USet *s = uset_open(1, 0);
@@ -82,7 +82,7 @@ static const int32_t STR_ab_LEN = UPRV_LENGTHOF(STR_ab) - 1;
/**
* Basic API test for uset.x
*/
-static void TestAPI() {
+static void TestAPI(void) {
USet* set;
USet* set2;
UErrorCode ec;
@@ -540,7 +540,7 @@ static void expectItems(const USet* set,
}
static void
-TestSerialized() {
+TestSerialized(void) {
uint16_t buffer[1000];
USerializedSet sset;
USet *set;
@@ -583,7 +583,7 @@ TestSerialized() {
* JB#3795.
*/
static void
-TestNonInvariantPattern() {
+TestNonInvariantPattern(void) {
UErrorCode ec = U_ZERO_ERROR;
/* The critical part of this test is that the following pattern
must contain a non-invariant character. */
@@ -608,14 +608,14 @@ static void TestBadPattern(void) {
}
}
-static USet *openIDSet() {
+static USet *openIDSet(void) {
UErrorCode errorCode = U_ZERO_ERROR;
U_STRING_DECL(pattern, "[:ID_Continue:]", 15);
U_STRING_INIT(pattern, "[:ID_Continue:]", 15);
return uset_openPattern(pattern, 15, &errorCode);
}
-static void TestFreezable() {
+static void TestFreezable(void) {
USet *idSet;
USet *frozen;
USet *thawed;
@@ -666,7 +666,7 @@ static void TestFreezable() {
uset_close(thawed);
}
-static void TestSpan() {
+static void TestSpan(void) {
static const UChar s16[2]={ 0xe01, 0x3000 };
static const char* s8="\xE0\xB8\x81\xE3\x80\x80";
diff --git a/icu4c/source/test/cintltst/usrchdat.c b/icu4c/source/test/cintltst/usrchdat.inc
index 301f188f1..301f188f1 100644
--- a/icu4c/source/test/cintltst/usrchdat.c
+++ b/icu4c/source/test/cintltst/usrchdat.inc
diff --git a/icu4c/source/test/cintltst/usrchtst.c b/icu4c/source/test/cintltst/usrchtst.c
index 8c3496a18..828d46d7f 100644
--- a/icu4c/source/test/cintltst/usrchtst.c
+++ b/icu4c/source/test/cintltst/usrchtst.c
@@ -22,7 +22,7 @@
#include "unicode/ustring.h"
#include "ccolltst.h"
#include "cmemory.h"
-#include "usrchdat.c"
+#include "usrchdat.inc"
#include "unicode/ubrk.h"
static UBool TOCLOSE_ = true;
diff --git a/icu4c/source/test/cintltst/utf16tst.c b/icu4c/source/test/cintltst/utf16tst.c
index 2394cbcef..d6253f9c7 100644
--- a/icu4c/source/test/cintltst/utf16tst.c
+++ b/icu4c/source/test/cintltst/utf16tst.c
@@ -67,7 +67,7 @@ addUTF16Test(TestNode** root)
addTest(root, &TestSurrogate, "utf16tst/TestSurrogate");
}
-static void TestCodeUnitValues()
+static void TestCodeUnitValues(void)
{
static uint16_t codeunit[]={0x0000,0xe065,0x20ac,0xd7ff,0xd800,0xd841,0xd905,0xdbff,0xdc00,0xdc02,0xddee,0xdfff,0};
@@ -105,7 +105,7 @@ static void TestCodeUnitValues()
}
}
-static void TestCharLength()
+static void TestCharLength(void)
{
static uint32_t codepoint[]={
1, 0x0061,
@@ -144,7 +144,7 @@ static void TestCharLength()
}
}
-static void TestGetChar()
+static void TestGetChar(void)
{
static UChar input[]={
/* code unit,*/
@@ -223,7 +223,7 @@ static void TestGetChar()
}
}
-static void TestNextPrevChar(){
+static void TestNextPrevChar(void){
static UChar input[]={0x0061, 0xd800, 0xdc00, 0xdbff, 0xdfff, 0x0062, 0xd841, 0xd7ff, 0xd841, 0xdc41, 0xdc00, 0x0000};
static UChar32 result[]={
@@ -398,7 +398,7 @@ static void TestNextPrevChar(){
}
/* keep this in sync with utf8tst.c's TestNulTerminated() */
-static void TestNulTerminated() {
+static void TestNulTerminated(void) {
static const UChar input[]={
/* 0 */ 0x61,
/* 1 */ 0xd801, 0xdc01,
@@ -478,7 +478,7 @@ static void TestNulTerminated() {
} while(c!=0);
}
-static void TestFwdBack(){
+static void TestFwdBack(void){
static UChar input[]={0x0061, 0xd800, 0xdc00, 0xdbff, 0xdfff, 0x0062, 0xd841, 0xd7ff, 0xd841, 0xdc41, 0xdc00, 0x0000};
static uint16_t fwd_unsafe[] ={1, 3, 5, 6, 8, 10, 11, 12};
static uint16_t fwd_safe[] ={1, 3, 5, 6, 7, 8, 10, 11, 12};
@@ -643,7 +643,7 @@ static void TestFwdBack(){
}
}
-static void TestSetChar(){
+static void TestSetChar(void){
static UChar input[]={0x0061, 0xd800, 0xdc00, 0xdbff, 0xdfff, 0x0062, 0xd841, 0xd7ff, 0xd841, 0xdc41, 0xdc00, 0x0000};
static uint16_t start_unsafe[]={0, 1, 1, 3, 3, 5, 6, 7, 8, 8, 9, 11};
static uint16_t start_safe[] ={0, 1, 1, 3, 3, 5, 6, 7, 8, 8, 10, 11};
@@ -703,7 +703,7 @@ static void TestSetChar(){
}
}
-static void TestAppendChar(){
+static void TestAppendChar(void){
#if !U_HIDE_OBSOLETE_UTF_OLD_H
static UChar s[5]={0x0061, 0x0062, 0x0063, 0x0064, 0x0000};
static uint32_t test[]={
@@ -803,7 +803,7 @@ static void TestAppendChar(){
#endif
}
-static void TestAppend() {
+static void TestAppend(void) {
static const UChar32 codePoints[]={
0x61, 0xdf, 0x901, 0x3040,
0xac00, 0xd800, 0xdbff, 0xdcde,
@@ -864,7 +864,7 @@ static void TestAppend() {
}
}
-static void TestSurrogate(){
+static void TestSurrogate(void){
static UChar32 s[] = {0x10000, 0x10ffff, 0x50000, 0x100000, 0x1abcd};
int i = 0;
while (i < 5) {
diff --git a/icu4c/source/test/cintltst/utf8tst.c b/icu4c/source/test/cintltst/utf8tst.c
index d0dd95c7b..a5f3379fe 100644
--- a/icu4c/source/test/cintltst/utf8tst.c
+++ b/icu4c/source/test/cintltst/utf8tst.c
@@ -123,7 +123,7 @@ addUTF8Test(TestNode** root)
addTest(root, &TestSurrogates, "utf8tst/TestSurrogates");
}
-static void TestCodeUnitValues()
+static void TestCodeUnitValues(void)
{
static const uint8_t codeunit[]={0x00, 0x65, 0x7e, 0x7f, 0xc2, 0xc4, 0xf0, 0xf4, 0x80, 0x81, 0xbc, 0xbe,};
@@ -162,7 +162,7 @@ static void TestCodeUnitValues()
}
}
-static void TestCharLength()
+static void TestCharLength(void)
{
static const uint32_t codepoint[]={
1, 0x0061,
@@ -205,7 +205,7 @@ static void TestCharLength()
}
}
-static void TestGetChar()
+static void TestGetChar(void)
{
static const uint8_t input[]={
/* code unit,*/
@@ -291,7 +291,7 @@ static void TestGetChar()
}
}
-static void TestNextPrevChar() {
+static void TestNextPrevChar(void) {
static const uint8_t input[]={
0x61,
0xf0, 0x90, 0x90, 0x81,
@@ -450,7 +450,7 @@ static void TestNextPrevChar() {
}
/* keep this in sync with utf16tst.c's TestNulTerminated() */
-static void TestNulTerminated() {
+static void TestNulTerminated(void) {
static const uint8_t input[]={
/* 0 */ 0x61,
/* 1 */ 0xf0, 0x90, 0x90, 0x81,
@@ -544,7 +544,7 @@ static void TestNulTerminated() {
} while(c!=0);
}
-static void TestNextPrevNonCharacters() {
+static void TestNextPrevNonCharacters(void) {
/* test non-characters */
static const uint8_t nonChars[]={
0xef, 0xb7, 0x90, /* U+fdd0 */
@@ -587,7 +587,7 @@ static void TestNextPrevNonCharacters() {
#endif
}
-static void TestNextPrevCharUnsafe() {
+static void TestNextPrevCharUnsafe(void) {
/*
* Use a (mostly) well-formed UTF-8 string and test at code point boundaries.
* The behavior of _UNSAFE macros for ill-formed strings is undefined.
@@ -657,7 +657,7 @@ static void TestNextPrevCharUnsafe() {
}
}
-static void TestFwdBack() {
+static void TestFwdBack(void) {
static const uint8_t input[]={
0x61,
0xF0, 0x90, 0x90, 0x81,
@@ -769,7 +769,7 @@ static void TestFwdBack() {
#pragma optimize( "", off )
#endif
-static void TestFwdBackUnsafe() {
+static void TestFwdBackUnsafe(void) {
/*
* Use a (mostly) well-formed UTF-8 string and test at code point boundaries.
* The behavior of _UNSAFE macros for ill-formed strings is undefined.
@@ -859,7 +859,7 @@ static void TestFwdBackUnsafe() {
#pragma optimize( "", on )
#endif
-static void TestSetChar() {
+static void TestSetChar(void) {
static const uint8_t input[]
= {0x61, 0xe4, 0xba, 0x8c, 0x7f, 0xfe, 0x62, 0xc5, 0x7f, 0x61, 0x80, 0x80, 0xe0, 0x00 };
static const int16_t start_safe[]
@@ -901,7 +901,7 @@ static void TestSetChar() {
}
}
-static void TestSetCharUnsafe() {
+static void TestSetCharUnsafe(void) {
static const uint8_t input[]
= {0x61, 0xe4, 0xba, 0x8c, 0x7f, 0x2e, 0x62, 0xc5, 0x7f, 0x61, 0x80, 0x80, 0xe0, 0x80, 0x80, 0x00 };
static const int16_t start_unsafe[]
@@ -946,7 +946,7 @@ static void TestSetCharUnsafe() {
}
}
-static void TestTruncateIfIncomplete() {
+static void TestTruncateIfIncomplete(void) {
// Difference from U8_SET_CP_START():
// U8_TRUNCATE_IF_INCOMPLETE() does not look at s[length].
// Therefore, if the last byte is a lead byte, then this macro truncates
@@ -1004,7 +1004,7 @@ static void TestTruncateIfIncomplete() {
}
}
-static void TestAppendChar(){
+static void TestAppendChar(void){
#if !U_HIDE_OBSOLETE_UTF_OLD_H
static const uint8_t s[11]={0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x00};
static const uint32_t test[]={
@@ -1173,7 +1173,7 @@ static void TestAppendChar(){
#endif
}
-static void TestAppend() {
+static void TestAppend(void) {
static const UChar32 codePoints[]={
0x61, 0xdf, 0x901, 0x3040,
0xac00, 0xd800, 0xdbff, 0xdcde,
@@ -1235,7 +1235,7 @@ static void TestAppend() {
}
static void
-TestSurrogates() {
+TestSurrogates(void) {
static const uint8_t b[]={
0xc3, 0x9f, /* 00DF */
0xed, 0x9f, 0xbf, /* D7FF */
diff --git a/icu4c/source/test/cintltst/utmstest.c b/icu4c/source/test/cintltst/utmstest.c
index ba921070f..c797ce892 100644
--- a/icu4c/source/test/cintltst/utmstest.c
+++ b/icu4c/source/test/cintltst/utmstest.c
@@ -443,7 +443,7 @@ static const DotNetDateTimeTicks dotNetDateTimeTicks[]={
* any date that we test, that is, before 0001 AD.
*/
static void
-TestDotNet() {
+TestDotNet(void) {
static const UChar utc[] = { 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0 }; /* "Etc/GMT" */
const int32_t dayMillis = 86400 * INT64_C(1000); /* 1 day = 86400 seconds */
const int64_t dayTicks = 86400 * INT64_C(10000000);
diff --git a/icu4c/source/test/cintltst/utransts.c b/icu4c/source/test/cintltst/utransts.c
index 118625f31..322473b3b 100644
--- a/icu4c/source/test/cintltst/utransts.c
+++ b/icu4c/source/test/cintltst/utransts.c
@@ -142,7 +142,7 @@ static void InitXReplaceableCallbacks(UReplaceableCallbacks* callbacks) {
* Tests
*------------------------------------------------------------------*/
-static void TestAPI() {
+static void TestAPI(void) {
enum { BUF_CAP = 128 };
char buf[BUF_CAP], buf2[BUF_CAP];
UErrorCode status = U_ZERO_ERROR;
@@ -184,7 +184,7 @@ static void TestAPI() {
}
}
-static void TestUnicodeIDs() {
+static void TestUnicodeIDs(void) {
UEnumeration *uenum;
UTransliterator *utrans;
const UChar *id, *id2;
@@ -249,7 +249,7 @@ static void TestUnicodeIDs() {
uenum_close(uenum);
}
-static void TestOpenInverse(){
+static void TestOpenInverse(void){
UErrorCode status=U_ZERO_ERROR;
UTransliterator* t1=NULL;
UTransliterator* inverse1=NULL;
@@ -297,7 +297,7 @@ static void TestOpenInverse(){
}
}
-static void TestClone(){
+static void TestClone(void){
UErrorCode status=U_ZERO_ERROR;
UTransliterator* t1=NULL;
UTransliterator* t2=NULL;
@@ -344,7 +344,7 @@ static void TestClone(){
}
-static void TestRegisterUnregister(){
+static void TestRegisterUnregister(void){
UErrorCode status=U_ZERO_ERROR;
UTransliterator* t1=NULL;
UTransliterator* rules=NULL, *rules2;
@@ -439,7 +439,7 @@ static void TestRegisterUnregister(){
utrans_close(inverse1);
}
-static void TestSimpleRules() {
+static void TestSimpleRules(void) {
/* Test rules */
/* Example: rules 1. ab>x|y
* 2. yc>z
@@ -492,7 +492,7 @@ static void TestSimpleRules() {
"abc ababc aba", "xy abxy z");
}
-static void TestFilter() {
+static void TestFilter(void) {
UErrorCode status = U_ZERO_ERROR;
UChar filt[128];
UChar buf[128];
@@ -558,7 +558,7 @@ static void TestFilter() {
* Test the UReplaceableCallback extractBetween support. We use a
* transliterator known to rely on this call.
*/
-static void TestExtractBetween() {
+static void TestExtractBetween(void) {
UTransliterator *trans;
UErrorCode status = U_ZERO_ERROR;
@@ -587,7 +587,7 @@ static const UChar transSimpleID[] = { 0x79,0x6F,0x2D,0x79,0x6F,0x5F,0x42,0x4A,0
static const char* transSimpleCName = "yo-yo_BJ";
enum { kUBufMax = 512 };
-static void TestGetRulesAndSourceSet() {
+static void TestGetRulesAndSourceSet(void) {
UErrorCode status = U_ZERO_ERROR;
UTransliterator *utrans = utrans_openU(transSimpleID, -1, UTRANS_FORWARD, NULL, 0, NULL, &status);
if ( U_SUCCESS(status) ) {
@@ -672,7 +672,7 @@ static const TransIDSourceTarg dataVarCompItems[] = {
};
enum { kBBufMax = 1024 };
-static void TestDataVariantsCompounds() {
+static void TestDataVariantsCompounds(void) {
const TransIDSourceTarg* itemsPtr;
for (itemsPtr = dataVarCompItems; itemsPtr->transID != NULL; itemsPtr++) {
UErrorCode status = U_ZERO_ERROR;
diff --git a/icu4c/source/test/depstest/dependencies.txt b/icu4c/source/test/depstest/dependencies.txt
index 1486b779f..200c806e8 100644
--- a/icu4c/source/test/depstest/dependencies.txt
+++ b/icu4c/source/test/depstest/dependencies.txt
@@ -125,6 +125,7 @@ group: cplusplus
# even when no code actually uses it.
# ICU must not _use_ the global operator delete.
"operator delete(void*)"
+ "operator delete(void*, unsigned long)"
# ICU also must not use the global operator new.
# "operator new[](unsigned long)"
@@ -993,6 +994,7 @@ group: number_output
# PluralRules internals:
unifiedcache
display_options
+ icu_utility_with_props
group: numberformatter
# ICU 60+ NumberFormatter API
@@ -1093,6 +1095,11 @@ group: formatting
tmunit.o tmutamt.o tmutfmt.o
# messageformat
choicfmt.o msgfmt.o plurfmt.o selfmt.o umsg.o
+ # MessageFormat 2
+ messageformat2.o messageformat2_arguments.o messageformat2_checker.o
+ messageformat2_data_model.o messageformat2_errors.o messageformat2_evaluation.o
+ messageformat2_formattable.o messageformat2_formatter.o
+ messageformat2_function_registry.o messageformat2_parser.o messageformat2_serializer.o
deps
decnumber formattable format units numberformatter number_skeletons numberparser
formatted_value_sbimpl
diff --git a/icu4c/source/test/depstest/depstest.py b/icu4c/source/test/depstest/depstest.py
index 947181a4d..fba45a079 100755
--- a/icu4c/source/test/depstest/depstest.py
+++ b/icu4c/source/test/depstest/depstest.py
@@ -112,6 +112,23 @@ allowed_errors = (
("common/umutex.o", "__once_proxy"),
("common/umutex.o", "__tls_get_addr"),
("common/unifiedcache.o", "std::__throw_system_error(int)"),
+ # Some of the MessageFormat 2 modules reference exception-related symbols
+ # in instantiations of the `std::get()` method that gets an alternative
+ # from a `std::variant`.
+ # These instantiations of `std::get()` are only called by compiler-generated
+ # code (the implementations of built-in `swap()` methods for types
+ # that include a `std::variant`; and `std::__detail::__variant::__gen_vtable_impl()`,
+ # which constructs vtables. The MessageFormat 2 code itself only calls
+ # `std::get_if()`, which is exception-free; never `std::get()`.
+ ("i18n/messageformat2_data_model.o", "typeinfo for std::exception"),
+ ("i18n/messageformat2_data_model.o", "vtable for std::exception"),
+ ("i18n/messageformat2_data_model.o", "std::exception::~exception()"),
+ ("i18n/messageformat2_formattable.o", "typeinfo for std::exception"),
+ ("i18n/messageformat2_formattable.o", "vtable for std::exception"),
+ ("i18n/messageformat2_formattable.o", "std::exception::~exception()"),
+ ("i18n/messageformat2_function_registry.o", "typeinfo for std::exception"),
+ ("i18n/messageformat2_function_registry.o", "vtable for std::exception"),
+ ("i18n/messageformat2_function_registry.o", "std::exception::~exception()")
)
def _Resolve(name, parents):
diff --git a/icu4c/source/test/fuzzer/Makefile.in b/icu4c/source/test/fuzzer/Makefile.in
index 28edbcb49..9cdde71fb 100644
--- a/icu4c/source/test/fuzzer/Makefile.in
+++ b/icu4c/source/test/fuzzer/Makefile.in
@@ -33,7 +33,34 @@ CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcd
DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUIO) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
-FUZZER_TARGETS = break_iterator_fuzzer calendar_fuzzer collator_compare_fuzzer collator_rulebased_fuzzer converter_fuzzer date_format_fuzzer list_format_fuzzer locale_fuzzer locale_morph_fuzzer number_format_fuzzer relative_date_time_formatter_fuzzer ucasemap_fuzzer uloc_canonicalize_fuzzer uloc_for_language_tag_fuzzer uloc_get_name_fuzzer uloc_is_right_to_left_fuzzer uloc_open_keywords_fuzzer unicode_string_codepage_create_fuzzer uregex_open_fuzzer
+FUZZER_TARGETS = \
+ break_iterator_fuzzer \
+ calendar_fuzzer collator_compare_fuzzer \
+ collator_rulebased_fuzzer \
+ converter_fuzzer date_format_fuzzer \
+ date_time_pattern_generator_fuzzer \
+ dtfmtsym_fuzzer \
+ list_format_fuzzer locale_fuzzer \
+ locale_morph_fuzzer \
+ normalizer2_fuzzer \
+ number_format_fuzzer \
+ number_formatter_fuzzer \
+ plurrule_fuzzer \
+ relative_date_time_formatter_fuzzer \
+ rule_based_break_iterator_fuzzer \
+ timezone_create_fuzzer \
+ time_zone_names_fuzzer \
+ ucasemap_fuzzer \
+ uloc_canonicalize_fuzzer \
+ uloc_for_language_tag_fuzzer \
+ uloc_get_name_fuzzer \
+ uloc_is_right_to_left_fuzzer \
+ uloc_open_keywords_fuzzer \
+ unicodeset_fuzzer \
+ unicode_string_codepage_create_fuzzer \
+ uprop_fuzzer \
+ uregex_open_fuzzer \
+
OBJECTS = $(FUZZER_TARGETS:%=%.o)
OBJECTS += fuzzer_driver.o locale_util.o
diff --git a/icu4c/source/test/fuzzer/break_iterator_fuzzer.cpp b/icu4c/source/test/fuzzer/break_iterator_fuzzer.cpp
index a2c9a3e9b..6e1b9b45b 100644
--- a/icu4c/source/test/fuzzer/break_iterator_fuzzer.cpp
+++ b/icu4c/source/test/fuzzer/break_iterator_fuzzer.cpp
@@ -66,6 +66,27 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
for (int32_t p = bi->first(); p != icu::BreakIterator::DONE; p = bi->next()) {}
utext_close(fuzzstr);
+
+ std::string str(reinterpret_cast<const char*>(data), size);
+ icu::Locale locale2(str.c_str()); // ensure null-termination by c_str()
+ switch (rnd8 % 5) {
+ case 0:
+ bi.reset(icu::BreakIterator::createWordInstance(locale2, status));
+ break;
+ case 1:
+ bi.reset(icu::BreakIterator::createLineInstance(locale2, status));
+ break;
+ case 2:
+ bi.reset(icu::BreakIterator::createCharacterInstance(locale2, status));
+ break;
+ case 3:
+ bi.reset(icu::BreakIterator::createSentenceInstance(locale2, status));
+ break;
+ case 4:
+ bi.reset(icu::BreakIterator::createTitleInstance(locale2, status));
+ break;
+ }
+
return 0;
}
diff --git a/icu4c/source/test/fuzzer/calendar_fuzzer.cpp b/icu4c/source/test/fuzzer/calendar_fuzzer.cpp
index c6071fdd4..f6549a900 100644
--- a/icu4c/source/test/fuzzer/calendar_fuzzer.cpp
+++ b/icu4c/source/test/fuzzer/calendar_fuzzer.cpp
@@ -52,6 +52,9 @@ const char* GetRandomCalendarType(uint8_t rnd) {
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
uint16_t rnd;
+ // Set the limit for the test data to 1000 bytes to avoid timeout for a
+ // very long list of operations.
+ if (size > 1000) { size = 1000; }
if (size < 2*sizeof(rnd) + 1) return 0;
icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
// Byte 0 and 1 randomly select a TimeZone
@@ -76,6 +79,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (U_FAILURE(status)) return 0;
std::unique_ptr<icu::Calendar> cal(
icu::Calendar::createInstance(*timeZone, locale, status));
+ printf("locale = %s\n", locale.getName());
if (U_FAILURE(status)) return 0;
cal->clear();
diff --git a/icu4c/source/test/fuzzer/collator_compare_fuzzer.cpp b/icu4c/source/test/fuzzer/collator_compare_fuzzer.cpp
index 3eb9cf025..73e1c0e71 100644
--- a/icu4c/source/test/fuzzer/collator_compare_fuzzer.cpp
+++ b/icu4c/source/test/fuzzer/collator_compare_fuzzer.cpp
@@ -37,22 +37,25 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (size > 4096) {
size = 4096;
}
- std::unique_ptr<char16_t> compbuff1(new char16_t[size/4]);
+ std::unique_ptr<char16_t[]> compbuff1(new char16_t[size/4]);
std::memcpy(compbuff1.get(), data, (size/4)*2);
- data = data + size/2;
- std::unique_ptr<char16_t> compbuff2(new char16_t[size/4]);
- std::memcpy(compbuff2.get(), data, (size/4)*2);
+ std::unique_ptr<char16_t[]> compbuff2(new char16_t[size/4]);
+ std::memcpy(compbuff2.get(), data + size/2, (size/4)*2);
icu::LocalPointer<icu::Collator> fuzzCollator(
icu::Collator::createInstance(locale, status), status);
- if (U_FAILURE(status))
- return 0;
+ if (U_SUCCESS(status)) {
- fuzzCollator->setStrength(strength);
+ fuzzCollator->setStrength(strength);
- fuzzCollator->compare(compbuff1.get(), size/4,
- compbuff2.get(), size/4);
+ fuzzCollator->compare(compbuff1.get(), size/4,
+ compbuff2.get(), size/4);
+ }
+ status = U_ZERO_ERROR;
+ std::string str(reinterpret_cast<const char*>(data), size);
+ fuzzCollator.adoptInstead(
+ icu::Collator::createInstance(icu::Locale(str.c_str()), status));
return 0;
}
diff --git a/icu4c/source/test/fuzzer/collator_rulebased_fuzzer.cpp b/icu4c/source/test/fuzzer/collator_rulebased_fuzzer.cpp
index 98785000a..85e943451 100644
--- a/icu4c/source/test/fuzzer/collator_rulebased_fuzzer.cpp
+++ b/icu4c/source/test/fuzzer/collator_rulebased_fuzzer.cpp
@@ -13,6 +13,11 @@ IcuEnvironment* env = new IcuEnvironment();
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
UErrorCode status = U_ZERO_ERROR;
+ if (size > 2000) {
+ // Limit the effective test data to only 2000 bytes to avoid meaningless
+ // timeout.
+ size = 2000;
+ }
size_t unistr_size = size/2;
std::unique_ptr<char16_t[]> fuzzbuff(new char16_t[unistr_size]);
diff --git a/icu4c/source/test/fuzzer/date_format_fuzzer.cpp b/icu4c/source/test/fuzzer/date_format_fuzzer.cpp
index bdcfad3f8..34b3228f3 100644
--- a/icu4c/source/test/fuzzer/date_format_fuzzer.cpp
+++ b/icu4c/source/test/fuzzer/date_format_fuzzer.cpp
@@ -83,5 +83,12 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (U_SUCCESS(status)) {
df->format(date, appendTo);
}
+
+ std::string str(fuzzData.data(), fuzzData.size());
+ icu::Locale locale2(str.c_str());
+ df.reset(
+ icu::DateFormat::createDateTimeInstance(dateStyle, timeStyle, locale2));
+ df.reset(
+ icu::DateFormat::createDateTimeInstance(dateStyle2, timeStyle2, locale2));
return EXIT_SUCCESS;
}
diff --git a/icu4c/source/test/fuzzer/date_time_pattern_generator_fuzzer.cpp b/icu4c/source/test/fuzzer/date_time_pattern_generator_fuzzer.cpp
new file mode 100644
index 000000000..46a02f6b4
--- /dev/null
+++ b/icu4c/source/test/fuzzer/date_time_pattern_generator_fuzzer.cpp
@@ -0,0 +1,60 @@
+// © 2019 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+#include "unicode/dtptngen.h"
+#include "unicode/localpointer.h"
+#include "unicode/locid.h"
+
+IcuEnvironment* env = new IcuEnvironment();
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ UErrorCode status = U_ZERO_ERROR;
+
+ uint16_t rnd16;
+
+ if (size < 2 + sizeof(rnd16))
+ return 0;
+
+ std::memcpy(&rnd16, data, sizeof(rnd16));
+ size -= sizeof(rnd16);
+ data += sizeof(rnd16);
+ const icu::Locale& locale = GetRandomLocale(rnd16);
+
+ std::unique_ptr<char16_t[]> fuzzbuff(new char16_t[size/2]);
+ std::memcpy(fuzzbuff.get(), data, (size/2)*2);
+ icu::UnicodeString fuzzstr(false, fuzzbuff.get(), size/2);
+
+ icu::LocalPointer<icu::DateTimePatternGenerator > gen(
+ icu::DateTimePatternGenerator::createInstance(locale, status), status);
+ if (U_SUCCESS(status)) {
+
+ status = U_ZERO_ERROR;
+ gen->getSkeleton(fuzzstr, status);
+
+ status = U_ZERO_ERROR;
+ gen->getBaseSkeleton(fuzzstr, status);
+
+ status = U_ZERO_ERROR;
+ gen->getBaseSkeleton(fuzzstr, status);
+
+ status = U_ZERO_ERROR;
+ gen->getPatternForSkeleton(fuzzstr);
+
+ status = U_ZERO_ERROR;
+ gen->getBestPattern(fuzzstr, status);
+
+ status = U_ZERO_ERROR;
+ icu::DateTimePatternGenerator::staticGetSkeleton(fuzzstr, status);
+
+ status = U_ZERO_ERROR;
+ icu::DateTimePatternGenerator::staticGetBaseSkeleton (fuzzstr, status);
+ }
+
+ status = U_ZERO_ERROR;
+ std::string str(reinterpret_cast<const char*>(data), size);
+ gen.adoptInstead(icu::DateTimePatternGenerator::createInstance(icu::Locale(str.c_str()), status));
+ return 0;
+}
diff --git a/icu4c/source/test/fuzzer/dtfmtsym_fuzzer.cpp b/icu4c/source/test/fuzzer/dtfmtsym_fuzzer.cpp
new file mode 100644
index 000000000..680e130f5
--- /dev/null
+++ b/icu4c/source/test/fuzzer/dtfmtsym_fuzzer.cpp
@@ -0,0 +1,75 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU DateFormatSymbols.
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+
+#include "unicode/dtfmtsym.h"
+#include "unicode/locid.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ uint16_t rnd;
+ icu::DateFormatSymbols::DtContextType context;
+ icu::DateFormatSymbols::DtWidthType width;
+ if (size < sizeof(rnd) + sizeof(context) + sizeof(width)) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ icu::Locale locale = GetRandomLocale(rnd);
+ fuzzData.remove_prefix(sizeof(rnd));
+
+ std::memcpy(&context, fuzzData.data(), sizeof(context));
+ fuzzData.remove_prefix(sizeof(context));
+ icu::DateFormatSymbols::DtContextType context_mod =
+ static_cast<icu::DateFormatSymbols::DtContextType>(
+ context % icu::DateFormatSymbols::DtContextType::DT_CONTEXT_COUNT);
+;
+ std::memcpy(&width, fuzzData.data(), sizeof(width));
+ fuzzData.remove_prefix(sizeof(width));
+ icu::DateFormatSymbols::DtWidthType width_mod =
+ static_cast<icu::DateFormatSymbols::DtWidthType>(
+ width % icu::DateFormatSymbols::DtWidthType::DT_WIDTH_COUNT);
+
+ size_t len = fuzzData.size() / sizeof(char16_t);
+ icu::UnicodeString text(false, reinterpret_cast<const char16_t*>(fuzzData.data()), len);
+ const icu::UnicodeString items[] = { text, text, text, text };
+
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::DateFormatSymbols> dfs(
+ new icu::DateFormatSymbols(locale, status));
+ if (U_FAILURE(status)) {
+ return EXIT_SUCCESS;
+ }
+
+ int32_t count;
+ dfs->getEras(count);
+ dfs->getEraNames(count);
+ dfs->getNarrowEras(count);
+ dfs->getMonths(count);
+ dfs->getShortMonths(count);
+ dfs->getMonths(count, context, width);
+ dfs->getMonths(count, context_mod, width_mod);
+ dfs->getWeekdays(count);
+ dfs->getShortWeekdays(count);
+ dfs->getWeekdays(count, context, width);
+ dfs->getWeekdays(count, context_mod, width_mod);
+ dfs->getShortWeekdays(count);
+ dfs->getQuarters(count, context_mod, width_mod);
+ dfs->getAmPmStrings(count);
+
+ icu::UnicodeString output;
+ dfs->getTimeSeparatorString(output);
+ dfs->getYearNames(count, context, width);
+ dfs->getYearNames(count, context_mod, width_mod);
+ dfs->getZodiacNames(count, context, width);
+ dfs->getZodiacNames(count, context_mod, width_mod);
+ dfs->getLeapMonthPatterns(count);
+ int32_t count2;
+ dfs->getZoneStrings(count, count2);
+ dfs->getLocalPatternChars(output);
+
+ return EXIT_SUCCESS;
+}
diff --git a/icu4c/source/test/fuzzer/locale_util.h b/icu4c/source/test/fuzzer/locale_util.h
index 85594454f..5054aff9e 100644
--- a/icu4c/source/test/fuzzer/locale_util.h
+++ b/icu4c/source/test/fuzzer/locale_util.h
@@ -6,6 +6,7 @@
#include <cstdint>
#include <string>
+#include "unicode/utypes.h"
// Takes uint8_t data from fuzzer, and makes a zero terminated string.
std::string MakeZeroTerminatedInput(const uint8_t* data, int32_t size);
diff --git a/icu4c/source/test/fuzzer/normalizer2_fuzzer.cpp b/icu4c/source/test/fuzzer/normalizer2_fuzzer.cpp
new file mode 100644
index 000000000..4258a2766
--- /dev/null
+++ b/icu4c/source/test/fuzzer/normalizer2_fuzzer.cpp
@@ -0,0 +1,83 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU Normalizer2.
+
+#include <cstring>
+
+#include "unicode/normalizer2.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ uint16_t rnd;
+ UChar32 char1, char2;
+ // To avoid timeout, limit the input to 5000 bytes
+ if (size > 5000) {
+ size = 5000;
+ }
+ if (size < sizeof(rnd) + sizeof(char1) + sizeof(char2)) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ fuzzData.remove_prefix(sizeof(rnd));
+ std::memcpy(&char1, fuzzData.data(), sizeof(char1));
+ fuzzData.remove_prefix(sizeof(char1));
+ std::memcpy(&char2, fuzzData.data(), sizeof(char2));
+ fuzzData.remove_prefix(sizeof(char2));
+
+ size_t len = fuzzData.size() / sizeof(char16_t);
+ icu::UnicodeString text(false, reinterpret_cast<const char16_t*>(fuzzData.data()), len);
+
+ UErrorCode status = U_ZERO_ERROR;
+ const icu::Normalizer2* norm = nullptr;
+ switch (rnd % 6) {
+ case 0:
+ norm = icu::Normalizer2::getNFCInstance(status);
+ break;
+ case 1:
+ norm = icu::Normalizer2::getNFDInstance(status);
+ break;
+ case 2:
+ norm = icu::Normalizer2::getNFKCInstance(status);
+ break;
+ case 3:
+ norm = icu::Normalizer2::getNFKDInstance(status);
+ break;
+ case 4:
+ norm = icu::Normalizer2::getNFKCCasefoldInstance(status);
+ break;
+ case 5:
+ norm = icu::Normalizer2::getNFKCSimpleCasefoldInstance(status);
+ break;
+ }
+ if (U_SUCCESS(status)) {
+ norm->normalize(text, status);
+ status = U_ZERO_ERROR;
+
+ icu::UnicodeString out;
+
+ norm->normalize(text, out, status);
+ status = U_ZERO_ERROR;
+
+ norm->normalizeSecondAndAppend(out, text, status);
+ status = U_ZERO_ERROR;
+
+ norm->append(out, text, status);
+ status = U_ZERO_ERROR;
+
+ norm->getDecomposition(char1, out);
+ norm->getRawDecomposition(char1, out);
+ norm->composePair(char1, char2);
+ norm->getCombiningClass(char1);
+ norm->isNormalized(text, status);
+ status = U_ZERO_ERROR;
+
+ norm->quickCheck(text, status);
+ status = U_ZERO_ERROR;
+
+ norm->hasBoundaryBefore(char1);
+ norm->hasBoundaryAfter(char1);
+ norm->isInert(char1);
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/icu4c/source/test/fuzzer/number_formatter_fuzzer.cpp b/icu4c/source/test/fuzzer/number_formatter_fuzzer.cpp
new file mode 100644
index 000000000..660d4be12
--- /dev/null
+++ b/icu4c/source/test/fuzzer/number_formatter_fuzzer.cpp
@@ -0,0 +1,45 @@
+// © 2019 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+#include "unicode/localpointer.h"
+#include "unicode/numberformatter.h"
+
+IcuEnvironment* env = new IcuEnvironment();
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ UErrorCode status = U_ZERO_ERROR;
+
+ int16_t rnd;
+ int64_t value;
+ double doubleValue;
+ if (size < sizeof(rnd) + sizeof(value) + sizeof(doubleValue)) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ icu::Locale locale = GetRandomLocale(rnd);
+ fuzzData.remove_prefix(sizeof(rnd));
+
+ std::memcpy(&value, fuzzData.data(), sizeof(value));
+ fuzzData.remove_prefix(sizeof(value));
+
+ std::memcpy(&doubleValue, fuzzData.data(), sizeof(doubleValue));
+ fuzzData.remove_prefix(sizeof(doubleValue));
+
+ size_t len = fuzzData.size() / sizeof(char16_t);
+ icu::UnicodeString fuzzstr(false, reinterpret_cast<const char16_t*>(fuzzData.data()), len);
+
+ icu::number::UnlocalizedNumberFormatter unf = icu::number::NumberFormatter::forSkeleton(
+ fuzzstr, status);
+
+ icu::number::LocalizedNumberFormatter nf = unf.locale(locale);
+
+ status = U_ZERO_ERROR;
+ nf.formatInt(value, status);
+
+ status = U_ZERO_ERROR;
+ nf.formatDouble(doubleValue, status);
+ return 0;
+}
diff --git a/icu4c/source/test/fuzzer/plurrule_fuzzer.cpp b/icu4c/source/test/fuzzer/plurrule_fuzzer.cpp
new file mode 100644
index 000000000..634d505ae
--- /dev/null
+++ b/icu4c/source/test/fuzzer/plurrule_fuzzer.cpp
@@ -0,0 +1,84 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU PluralRules.
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+
+#include "unicode/plurrule.h"
+#include "unicode/locid.h"
+
+
+void TestPluralRules(icu::PluralRules* pp, int32_t number, double dbl, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ pp->select(number);
+ pp->select(dbl);
+}
+
+void TestPluralRulesWithLocale(
+ const icu::Locale& locale, int32_t number, double dbl, UPluralType type, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ std::unique_ptr<icu::PluralRules> pp(icu::PluralRules::forLocale(locale, status));
+ TestPluralRules(pp.get(), number, dbl, status);
+
+ status = U_ZERO_ERROR;
+ pp.reset(icu::PluralRules::forLocale(locale, type, status));
+ TestPluralRules(pp.get(), number, dbl, status);
+
+ type = static_cast<UPluralType>(
+ static_cast<int>(type) % (static_cast<int>(UPLURAL_TYPE_COUNT)));
+
+ status = U_ZERO_ERROR;
+ pp.reset(icu::PluralRules::forLocale(locale, type, status));
+ TestPluralRules(pp.get(), number, dbl, status);
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ uint16_t rnd;
+ int32_t number;
+ double dbl;
+ UPluralType type;
+ if (size > 5000) {
+ size = 5000;
+ }
+ if (size < sizeof(rnd) + sizeof(number) + sizeof(dbl) + sizeof(type)) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ icu::Locale locale = GetRandomLocale(rnd);
+ fuzzData.remove_prefix(sizeof(rnd));
+
+ std::memcpy(&number, fuzzData.data(), sizeof(number));
+ fuzzData.remove_prefix(sizeof(number));
+
+ std::memcpy(&dbl, fuzzData.data(), sizeof(dbl));
+ fuzzData.remove_prefix(sizeof(dbl));
+
+ std::memcpy(&type, fuzzData.data(), sizeof(type));
+ fuzzData.remove_prefix(sizeof(type));
+
+ size_t len = fuzzData.size() / sizeof(char16_t);
+ icu::UnicodeString text(false, reinterpret_cast<const char16_t*>(fuzzData.data()), len);
+
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::PluralRules> pp(
+ icu::PluralRules::createRules(text, status));
+ TestPluralRules(pp.get(), number, dbl, status);
+
+ status = U_ZERO_ERROR;
+ TestPluralRulesWithLocale(locale, number, dbl, type, status);
+
+ std::string str(fuzzData.data(), fuzzData.size()); // ensure null-terminate
+ // by std::string c_str
+ icu::Locale locale2(str.c_str());
+
+ status = U_ZERO_ERROR;
+ TestPluralRulesWithLocale(locale2, number, dbl, type, status);
+ return EXIT_SUCCESS;
+}
diff --git a/icu4c/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp b/icu4c/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp
index 007d350f2..afcf57d85 100644
--- a/icu4c/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp
+++ b/icu4c/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp
@@ -4,6 +4,7 @@
// Fuzzer for ICU RelativeDateTimeFormatter.
#include <cstring>
+#include <memory>
#include "fuzzer_utils.h"
@@ -48,8 +49,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
context = validCapitalizations[
static_cast<int>(context) %
(sizeof(validCapitalizations) / sizeof(UDisplayContext))];
- formatter.reset(new icu::RelativeDateTimeFormatter(
- locale, nullptr, style, context, status));
+ formatter =
+ std::make_unique<icu::RelativeDateTimeFormatter>(locale, nullptr, style, context, status);
if (U_SUCCESS(status)) {
URelativeDateTimeUnit unit;
diff --git a/icu4c/source/test/fuzzer/rule_based_break_iterator_fuzzer.cpp b/icu4c/source/test/fuzzer/rule_based_break_iterator_fuzzer.cpp
new file mode 100644
index 000000000..7344ecb7d
--- /dev/null
+++ b/icu4c/source/test/fuzzer/rule_based_break_iterator_fuzzer.cpp
@@ -0,0 +1,26 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+#include "unicode/localpointer.h"
+#include "unicode/locid.h"
+#include "unicode/rbbi.h"
+
+IcuEnvironment* env = new IcuEnvironment();
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ UErrorCode status = U_ZERO_ERROR;
+
+ size_t unistr_size = size/2;
+ std::unique_ptr<char16_t[]> fuzzbuff(new char16_t[unistr_size]);
+ std::memcpy(fuzzbuff.get(), data, unistr_size * 2);
+ icu::UnicodeString fuzzstr(false, fuzzbuff.get(), unistr_size);
+
+ UParseError parse;
+ icu::LocalPointer<icu::RuleBasedBreakIterator> brk(
+ new icu::RuleBasedBreakIterator(fuzzstr, parse, status));
+
+ return 0;
+}
diff --git a/icu4c/source/test/fuzzer/time_zone_names_fuzzer.cpp b/icu4c/source/test/fuzzer/time_zone_names_fuzzer.cpp
new file mode 100644
index 000000000..d10481f1d
--- /dev/null
+++ b/icu4c/source/test/fuzzer/time_zone_names_fuzzer.cpp
@@ -0,0 +1,63 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for TimeZoneNames.
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+
+#include "unicode/tznames.h"
+#include "unicode/locid.h"
+
+void TestNames(icu::TimeZoneNames* names, const icu::UnicodeString& text, UDate date, UTimeZoneNameType type) {
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ names->getAvailableMetaZoneIDs(status));
+ status = U_ZERO_ERROR;
+ enumeration.reset(
+ names->getAvailableMetaZoneIDs(text, status));
+ icu::UnicodeString output;
+ names->getMetaZoneID(text, date, output);
+ names->getMetaZoneDisplayName(text, type, output);
+ names->getTimeZoneDisplayName(text, type, output);
+ names->getExemplarLocationName(text, output);
+ names->getDisplayName(text, type, date, output);
+}
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ uint16_t rnd;
+ UDate date;
+
+ UTimeZoneNameType type;
+ if (size < sizeof(rnd) + sizeof(date) + sizeof(type)) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ icu::Locale locale = GetRandomLocale(rnd);
+ fuzzData.remove_prefix(sizeof(rnd));
+
+ std::memcpy(&date, fuzzData.data(), sizeof(date));
+ fuzzData.remove_prefix(sizeof(date));
+
+ std::memcpy(&type, fuzzData.data(), sizeof(type));
+ fuzzData.remove_prefix(sizeof(type));
+
+ size_t len = fuzzData.size() / sizeof(char16_t);
+ icu::UnicodeString text(false, reinterpret_cast<const char16_t*>(fuzzData.data()), len);
+
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::TimeZoneNames> names(
+ icu::TimeZoneNames::createInstance(locale, status));
+ if (U_SUCCESS(status)) {
+ TestNames(names.get(), text, date, type);
+ }
+
+ status = U_ZERO_ERROR;
+ names.reset(
+ icu::TimeZoneNames::createTZDBInstance(locale, status));
+ if (U_SUCCESS(status)) {
+ TestNames(names.get(), text, date, type);
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/icu4c/source/test/fuzzer/timezone_create_fuzzer.cpp b/icu4c/source/test/fuzzer/timezone_create_fuzzer.cpp
new file mode 100644
index 000000000..490c58f1e
--- /dev/null
+++ b/icu4c/source/test/fuzzer/timezone_create_fuzzer.cpp
@@ -0,0 +1,44 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+#include "unicode/localpointer.h"
+#include "unicode/timezone.h"
+
+IcuEnvironment* env = new IcuEnvironment();
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+
+ // Limit the test for at most 1000 Unicode characters.
+ if (size > 2000) {
+ size = 2000;
+ }
+ size_t unistr_size = size/2;
+ std::unique_ptr<char16_t[]> fuzzbuff(new char16_t[unistr_size]);
+ std::memcpy(fuzzbuff.get(), data, unistr_size * 2);
+ icu::UnicodeString fuzzstr(false, fuzzbuff.get(), unistr_size);
+
+ icu::LocalPointer<icu::TimeZone> tz(
+ icu::TimeZone::createTimeZone(fuzzstr));
+
+ icu::TimeZone::getEquivalentID(fuzzstr, size);
+
+ icu::UnicodeString output;
+
+ UErrorCode status = U_ZERO_ERROR;
+ UBool system;
+ icu::TimeZone::getCanonicalID(fuzzstr, output, system, status);
+
+
+ status = U_ZERO_ERROR;
+ icu::TimeZone::getIanaID(fuzzstr, output, status);
+
+ status = U_ZERO_ERROR;
+ icu::TimeZone::getWindowsID(fuzzstr, output, status);
+
+ status = U_ZERO_ERROR;
+ icu::TimeZone::getRegion(fuzzstr, status);
+ return 0;
+}
diff --git a/icu4c/source/test/fuzzer/ucasemap_fuzzer.cpp b/icu4c/source/test/fuzzer/ucasemap_fuzzer.cpp
index ddb03862e..b903ca1ee 100644
--- a/icu4c/source/test/fuzzer/ucasemap_fuzzer.cpp
+++ b/icu4c/source/test/fuzzer/ucasemap_fuzzer.cpp
@@ -51,7 +51,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
int32_t dst_size = size * 2;
std::unique_ptr<char[]> dst(new char[dst_size]);
- auto src = reinterpret_cast<const char*>(fuzzbuff.get());
+ const auto* src = reinterpret_cast<const char*>(fuzzbuff.get());
switch (rnd8 % 4) {
case 0: ucasemap_utf8ToLower(csm.get(), dst.get(), dst_size, src, size,
diff --git a/icu4c/source/test/fuzzer/unicodeset_fuzzer.cpp b/icu4c/source/test/fuzzer/unicodeset_fuzzer.cpp
new file mode 100644
index 000000000..f72b4f471
--- /dev/null
+++ b/icu4c/source/test/fuzzer/unicodeset_fuzzer.cpp
@@ -0,0 +1,57 @@
+// © 2019 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+#include "unicode/coll.h"
+#include "unicode/localpointer.h"
+#include "unicode/uniset.h"
+
+IcuEnvironment* env = new IcuEnvironment();
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ UErrorCode status = U_ZERO_ERROR;
+
+ size_t unistr_size = size/2;
+ std::unique_ptr<char16_t[]> fuzzbuff(new char16_t[unistr_size]);
+ std::memcpy(fuzzbuff.get(), data, unistr_size * 2);
+ icu::UnicodeString fuzzstr(false, fuzzbuff.get(), unistr_size);
+
+ icu::LocalPointer<icu::UnicodeSet> set(
+ new icu::UnicodeSet(fuzzstr, status));
+
+ status = U_ZERO_ERROR;
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->applyPattern (fuzzstr, status);
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->addAll(fuzzstr);
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->add(fuzzstr);
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->retainAll(fuzzstr);
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->complementAll(fuzzstr);
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->removeAll(fuzzstr);
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->retain(fuzzstr);
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->remove(fuzzstr);
+
+ set.adoptInstead(new icu::UnicodeSet());
+ set->complement(fuzzstr);
+
+ set.adoptInstead(icu::UnicodeSet::createFrom(fuzzstr));
+
+ set.adoptInstead(icu::UnicodeSet::createFromAll(fuzzstr));
+ return 0;
+}
diff --git a/icu4c/source/test/fuzzer/uprop_fuzzer.cpp b/icu4c/source/test/fuzzer/uprop_fuzzer.cpp
new file mode 100644
index 000000000..c1f094eca
--- /dev/null
+++ b/icu4c/source/test/fuzzer/uprop_fuzzer.cpp
@@ -0,0 +1,44 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU Unicode Property.
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+
+#include "unicode/uchar.h"
+#include "unicode/locid.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ UProperty prop;
+ UChar32 c32;
+
+ if (size < sizeof(prop) + sizeof(c32)) return 0;
+
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&prop, fuzzData.data(), sizeof(prop));
+ fuzzData.remove_prefix(sizeof(prop));
+
+ std::memcpy(&c32, fuzzData.data(), sizeof(c32));
+ fuzzData.remove_prefix(sizeof(c32));
+
+ u_hasBinaryProperty(c32, prop);
+
+ UErrorCode status = U_ZERO_ERROR;
+ u_getBinaryPropertySet(prop, &status);
+
+ u_getIntPropertyValue(c32, prop);
+ u_getIntPropertyMinValue(prop);
+ u_getIntPropertyMaxValue(prop);
+
+ status = U_ZERO_ERROR;
+ u_getIntPropertyMap(prop, &status);
+
+ size_t unistr_size = fuzzData.length()/2;
+ const UChar* p = (const UChar*)(fuzzData.data());
+ u_stringHasBinaryProperty(p, unistr_size, prop);
+
+ return 0;
+}
diff --git a/icu4c/source/test/hdrtst/testinternalheaders.sh b/icu4c/source/test/hdrtst/testinternalheaders.sh
index eaad8b10d..a6e63b595 100755
--- a/icu4c/source/test/hdrtst/testinternalheaders.sh
+++ b/icu4c/source/test/hdrtst/testinternalheaders.sh
@@ -17,7 +17,7 @@ for file in `ls common/*.h`; do
echo $file
echo '#include "'$file'"' > ht_temp.cpp ;
echo 'void noop() {}' >> ht_temp.cpp ;
- $CXX -c -std=c++11 -I common -DU_COMMON_IMPLEMENTATION -O0 ht_temp.cpp ;
+ $CXX -c -std=c++17 -I common -DU_COMMON_IMPLEMENTATION -O0 ht_temp.cpp ;
if [ $? != 0 ] ; then
ERROR_EXIT=1
fi
@@ -27,7 +27,7 @@ for file in `ls i18n/*.h`; do
echo $file
echo '#include "'$file'"' > ht_temp.cpp ;
echo 'void noop() {}' >> ht_temp.cpp ;
- $CXX -c -std=c++11 -I common -I i18n -DU_I18N_IMPLEMENTATION -O0 ht_temp.cpp ;
+ $CXX -c -std=c++17 -I common -I i18n -DU_I18N_IMPLEMENTATION -O0 ht_temp.cpp ;
if [ $? != 0 ] ; then
ERROR_EXIT=1
fi
@@ -37,7 +37,7 @@ for file in `ls io/*.h`; do
echo $file
echo '#include "'$file'"' > ht_temp.cpp ;
echo 'void noop() {}' >> ht_temp.cpp ;
- $CXX -c -std=c++11 -I common -I i18n -I io -DU_IO_IMPLEMENTATION -O0 ht_temp.cpp ;
+ $CXX -c -std=c++17 -I common -I i18n -I io -DU_IO_IMPLEMENTATION -O0 ht_temp.cpp ;
if [ $? != 0 ] ; then
ERROR_EXIT=1
fi
@@ -61,7 +61,7 @@ for file in `ls tools/toolutil/*.h`; do
echo $file
echo '#include "'$file'"' > ht_temp.cpp ;
echo 'void noop() {}' >> ht_temp.cpp ;
- $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -O0 ht_temp.cpp ;
+ $CXX -c -std=c++17 -I common -I i18n -I io -I tools/toolutil -O0 ht_temp.cpp ;
if [ $? != 0 ] ; then
ERROR_EXIT=1
fi
@@ -78,7 +78,7 @@ for tool in escapesrc genccode gencmn gencolusb gennorm2 genren gentest icupkg i
echo $file
echo '#include "'$file'"' > ht_temp.cpp ;
echo 'void noop() {}' >> ht_temp.cpp ;
- $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/$tool -O0 ht_temp.cpp ;
+ $CXX -c -std=c++17 -I common -I i18n -I io -I tools/toolutil -I tools/$tool -O0 ht_temp.cpp ;
if [ $? != 0 ] ; then
ERROR_EXIT=1
fi
@@ -91,7 +91,7 @@ for file in `ls tools/ctestfw/unicode/*.h`; do
echo $file
echo '#include "'$file'"' > ht_temp.cpp ;
echo 'void noop() {}' >> ht_temp.cpp ;
- $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -O0 ht_temp.cpp ;
+ $CXX -c -std=c++17 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -O0 ht_temp.cpp ;
if [ $? != 0 ] ; then
ERROR_EXIT=1
fi
@@ -113,7 +113,7 @@ for test in intltest iotest testmap thaitest fuzzer; do
echo $file
echo '#include "'$file'"' > ht_temp.cpp ;
echo 'void noop() {}' >> ht_temp.cpp ;
- $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/$test -O0 ht_temp.cpp ;
+ $CXX -c -std=c++17 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/$test -O0 ht_temp.cpp ;
if [ $? != 0 ] ; then
ERROR_EXIT=1
fi
diff --git a/icu4c/source/test/intltest/Makefile.in b/icu4c/source/test/intltest/Makefile.in
index af3493def..e635bce65 100644
--- a/icu4c/source/test/intltest/Makefile.in
+++ b/icu4c/source/test/intltest/Makefile.in
@@ -34,8 +34,8 @@ BUILDDIR := $(BUILDDIR:test\\intltest/../../=)
# Simplify the path for Windows 98
BUILDDIR := $(BUILDDIR:TEST\\INTLTEST/../../=)
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
-CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT= -DUCHAR_TYPE=char16_t
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/io -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
ifdef QNX_TARGET
DEFS += -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
else
@@ -49,6 +49,7 @@ fldset.o dadrfmt.o dadrcal.o dcfmapts.o decoll.o dtfmapts.o dtfmrgts.o dtfmtrtts
dtptngts.o encoll.o escoll.o ficoll.o frcoll.o g7coll.o intltest.o \
itercoll.o itformat.o itmajor.o itutil.o jacoll.o lcukocol.o \
loctest.o localebuildertest.o localematchertest.o \
+messageformat2test.o messageformat2test_builtin.o messageformat2test_custom.o messageformat2test_features.o messageformat2test_fromjson.o messageformat2test_icu.o \
miscdtfm.o mnkytst.o msfmrgts.o nmfmapts.o nmfmtrt.o \
numfmtst.o numrgts.o plurults.o plurfmts.o pptest.o regcoll.o restest.o restsnew.o \
sdtfmtts.o svccoll.o tchcfmt.o selfmts.o \
diff --git a/icu4c/source/test/intltest/aliastst.cpp b/icu4c/source/test/intltest/aliastst.cpp
index 6a055ebbb..90b3db24f 100644
--- a/icu4c/source/test/intltest/aliastst.cpp
+++ b/icu4c/source/test/intltest/aliastst.cpp
@@ -278,12 +278,8 @@ void LocaleAliasTest::TestUResourceBundle() {
log(" new:");
logln(us2);
- if (rb1!=nullptr) {
- delete rb1;
- }
- if (rb2!=nullptr) {
- delete rb2;
- }
+ delete rb1;
+ delete rb2;
}
}
diff --git a/icu4c/source/test/intltest/allcoll.cpp b/icu4c/source/test/intltest/allcoll.cpp
index 6221965cf..fa5efefb2 100644
--- a/icu4c/source/test/intltest/allcoll.cpp
+++ b/icu4c/source/test/intltest/allcoll.cpp
@@ -21,7 +21,7 @@
CollationDummyTest::CollationDummyTest()
-: myCollation(0)
+: myCollation(nullptr)
{
/*UErrorCode status = U_ZERO_ERROR;
UnicodeString rules(true, DEFAULTRULEARRAY, UPRV_LENGTHOF(DEFAULTRULEARRAY));
@@ -32,15 +32,12 @@ CollationDummyTest::CollationDummyTest()
UErrorCode status = U_ZERO_ERROR;
UnicodeString ruleset("& C < ch, cH, Ch, CH & Five, 5 & Four, 4 & one, 1 & Ampersand; '&' & Two, 2 ");
- if (myCollation != nullptr)
- {
- delete myCollation;
- }
+ delete myCollation;
myCollation = new RuleBasedCollator(ruleset, status);
if(U_FAILURE(status)){
errcheckln(status, "ERROR: in creation of rule based collator from ruleset - %s", u_errorName(status));
delete myCollation;
- myCollation = 0;
+ myCollation = nullptr;
}
}
diff --git a/icu4c/source/test/intltest/alphaindextst.cpp b/icu4c/source/test/intltest/alphaindextst.cpp
index f993f59da..2906d7e63 100644
--- a/icu4c/source/test/intltest/alphaindextst.cpp
+++ b/icu4c/source/test/intltest/alphaindextst.cpp
@@ -515,7 +515,7 @@ static const char *localeAndIndexCharactersLists[][2] = {
/* Japanese*/ {"ja", "\\u3042:\\u304B:\\u3055:\\u305F:\\u306A:\\u306F:\\u307E:\\u3084:\\u3089:\\u308F"},
/* Korean*/ {"ko", "\\u3131:\\u3134:\\u3137:\\u3139:\\u3141:\\u3142:\\u3145:\\u3147:\\u3148:\\u314A:\\u314B:\\u314C:\\u314D:\\u314E"},
/* Lithuanian*/ {"lt", "A:B:C:\\u010C:D:E:F:G:H:I:J:K:L:M:N:O:P:R:S:\\u0160:T:U:V:Z:\\u017D"},
- /* Latvian*/ {"lv", "A:B:C:\\u010C:D:E:F:G:\\u0122:H:I:J:K:\\u0136:L:\\u013B:M:N:\\u0145:O:P:Q:R:S:\\u0160:T:U:V:W:X:Z:\\u017D"},
+ /* Latvian*/ {"lv", "A:\\u0100:B:C:\\u010C:D:E:\\u0112:F:G:\\u0122:H:I:Y:\\u012A:J:K:\\u0136:L:\\u013B:M:N:\\u0145:O:P:Q:R:S:\\u0160:T:U:\\u016A:V:W:X:Z:\\u017D"},
/* Norwegian Bokm\\u00E5l*/ {"nb", "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:\\u00C6:\\u00D8:\\u00C5"},
/* Dutch*/ {"nl", "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"},
/* Polish*/ {"pl", "A:B:C:\\u0106:D:E:F:G:H:I:J:K:L:\\u0141:M:N:O:\\u00D3:P:Q:R:S:\\u015A:T:U:V:W:X:Y:Z:\\u0179:\\u017B"},
diff --git a/icu4c/source/test/intltest/apicoll.cpp b/icu4c/source/test/intltest/apicoll.cpp
index e35b763c5..ac5ed932c 100644
--- a/icu4c/source/test/intltest/apicoll.cpp
+++ b/icu4c/source/test/intltest/apicoll.cpp
@@ -64,7 +64,7 @@ void
CollationAPITest::TestProperty(/* char* par */)
{
UErrorCode success = U_ZERO_ERROR;
- Collator *col = 0;
+ Collator *col = nullptr;
/*
* Expected version of the English collator.
* Currently, the major/minor version numbers change when the builder code
@@ -155,7 +155,7 @@ CollationAPITest::TestProperty(/* char* par */)
logln(Collator::getDisplayName(Locale::US, name));
doAssert((name == UnicodeString("English (United States)")), "getDisplayName failed if this is an English machine");
#endif
- delete col; col = 0;
+ delete col; col = nullptr;
RuleBasedCollator *rcol = dynamic_cast<RuleBasedCollator*>(Collator::createInstance("da_DK",
success));
if (U_FAILURE(success)) {
@@ -192,7 +192,7 @@ CollationAPITest::TestProperty(/* char* par */)
logln("Create junk collation: ");
Locale abcd("ab", "CD", "");
success = U_ZERO_ERROR;
- Collator *junk = 0;
+ Collator *junk = nullptr;
junk = Collator::createInstance(abcd, success);
if (U_FAILURE(success))
@@ -420,7 +420,7 @@ CollationAPITest::TestSafeClone() {
for (index = 0; index < CLONETEST_COLLATOR_COUNT; index++)
{
col = someCollators[index]->safeClone();
- if (col == 0) {
+ if (col == nullptr) {
errln("SafeClone of collator should not return null\n");
break;
}
@@ -441,7 +441,7 @@ CollationAPITest::TestHashCode(/* char* par */)
{
logln("hashCode tests begin.");
UErrorCode success = U_ZERO_ERROR;
- Collator *col1 = 0;
+ Collator *col1 = nullptr;
col1 = Collator::createInstance(Locale::getEnglish(), success);
if (U_FAILURE(success))
{
@@ -449,7 +449,7 @@ CollationAPITest::TestHashCode(/* char* par */)
return;
}
- Collator *col2 = 0;
+ Collator *col2 = nullptr;
Locale dk("da", "DK", "");
col2 = Collator::createInstance(dk, success);
if (U_FAILURE(success))
@@ -458,7 +458,7 @@ CollationAPITest::TestHashCode(/* char* par */)
return;
}
- Collator *col3 = 0;
+ Collator *col3 = nullptr;
col3 = Collator::createInstance(Locale::getEnglish(), success);
if (U_FAILURE(success))
{
@@ -499,7 +499,7 @@ void
CollationAPITest::TestCollationKey(/* char* par */)
{
logln("testing CollationKey begins...");
- Collator *col = 0;
+ Collator* col = nullptr;
UErrorCode success=U_ZERO_ERROR;
col = Collator::createInstance(Locale::getEnglish(), success);
if (U_FAILURE(success))
@@ -586,10 +586,10 @@ CollationAPITest::TestCollationKey(/* char* par */)
const uint8_t* byteArray1 = sortk1.getByteArray(cnt1);
const uint8_t* byteArray2 = sortk2.getByteArray(cnt2);
- const uint8_t* byteArray3 = 0;
+ const uint8_t* byteArray3 = nullptr;
byteArray3 = sortk1.getByteArray(cnt3);
- const uint8_t* byteArray4 = 0;
+ const uint8_t* byteArray4 = nullptr;
byteArray4 = sortk2.getByteArray(cnt4);
CollationKey sortk4(byteArray1, cnt1), sortk5(byteArray2, cnt2);
@@ -610,8 +610,8 @@ CollationAPITest::TestCollationKey(/* char* par */)
doAssert(sortk2 == sortk7, "sortk2 == sortk7 Failed.");
doAssert(sortk1 != sortk7, "sortk1 != sortk7 Failed.");
- byteArray1 = 0;
- byteArray2 = 0;
+ byteArray1 = nullptr;
+ byteArray2 = nullptr;
sortk3 = sortk1;
doAssert(sortk1 == sortk3, "sortk1 = sortk3 assignment Failed.");
@@ -634,7 +634,7 @@ void
CollationAPITest::TestElemIter(/* char* par */)
{
logln("testing sortkey begins...");
- Collator *col = 0;
+ Collator* col = nullptr;
UErrorCode success = U_ZERO_ERROR;
col = Collator::createInstance(Locale::getEnglish(), success);
if (U_FAILURE(success))
@@ -794,7 +794,7 @@ CollationAPITest::TestElemIter(/* char* par */)
success=U_UNSUPPORTED_ERROR;
Collator *colerror=nullptr;
colerror=Collator::createInstance(Locale::getEnglish(), success);
- if (colerror != 0 || success == U_ZERO_ERROR){
+ if (colerror != nullptr || success == U_ZERO_ERROR) {
errln("Error: createInstance(UErrorCode != U_ZERO_ERROR) should just return and not create an instance\n");
}
int32_t position=coliter->previous(success);
@@ -958,7 +958,7 @@ void
CollationAPITest::TestCompare(/* char* par */)
{
logln("The compare tests begin : ");
- Collator *col = 0;
+ Collator* col = nullptr;
UErrorCode success = U_ZERO_ERROR;
col = Collator::createInstance(Locale::getEnglish(), success);
if (U_FAILURE(success)) {
@@ -2171,7 +2171,7 @@ void TestCollator::setStrength(Collator::ECollationStrength newStrength)
UClassID TestCollator::getDynamicClassID() const
{
- return 0;
+ return nullptr;
}
void TestCollator::getVersion(UVersionInfo info) const
@@ -2199,7 +2199,7 @@ uint32_t TestCollator::setVariableTop(const char16_t *varTop, int32_t len,
UErrorCode &status)
{
// api not used, this is to make the compiler happy
- if (U_SUCCESS(status) && (varTop == 0 || len < -1)) {
+ if (U_SUCCESS(status) && (varTop == nullptr || len < -1)) {
status = U_ILLEGAL_ARGUMENT_ERROR;
}
return 0;
@@ -2517,6 +2517,13 @@ void CollationAPITest::TestGapTooSmall() {
}
}
+void CollationAPITest::TestNFCNull() {
+ IcuTestErrorCode errorCode(*this, "TestNFCNull");
+ RuleBasedCollator coll(
+ u"&†<†\u0f81\u0f81\u0f81\u0f81\u0f81|†", errorCode);
+ errorCode.expectErrorAndReset(U_UNSUPPORTED_ERROR);
+}
+
void CollationAPITest::dump(UnicodeString msg, RuleBasedCollator* c, UErrorCode& status) {
const char* bigone = "One";
const char* littleone = "one";
@@ -2560,6 +2567,7 @@ void CollationAPITest::runIndexedTest( int32_t index, UBool exec, const char* &n
TESTCASE_AUTO(TestIterNumeric);
TESTCASE_AUTO(TestBadKeywords);
TESTCASE_AUTO(TestGapTooSmall);
+ TESTCASE_AUTO(TestNFCNull);
TESTCASE_AUTO_END;
}
diff --git a/icu4c/source/test/intltest/apicoll.h b/icu4c/source/test/intltest/apicoll.h
index 36796c830..306f13251 100644
--- a/icu4c/source/test/intltest/apicoll.h
+++ b/icu4c/source/test/intltest/apicoll.h
@@ -174,6 +174,7 @@ public:
void TestIterNumeric();
void TestBadKeywords();
void TestGapTooSmall();
+ void TestNFCNull();
private:
// If this is too small for the test data, just increase it.
diff --git a/icu4c/source/test/intltest/astrotst.cpp b/icu4c/source/test/intltest/astrotst.cpp
index 847dce65a..c51e6f247 100644
--- a/icu4c/source/test/intltest/astrotst.cpp
+++ b/icu4c/source/test/intltest/astrotst.cpp
@@ -23,7 +23,7 @@
#define CASE(id,test) case id: name = #test; if (exec) { logln(#test "---"); logln((UnicodeString)""); test(); } break
-AstroTest::AstroTest(): astro(nullptr), gc(nullptr) {
+AstroTest::AstroTest(): gc(nullptr) {
}
void AstroTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
@@ -35,9 +35,8 @@ void AstroTest::runIndexedTest( int32_t index, UBool exec, const char* &name, ch
CASE(1,TestLunarPosition);
CASE(2,TestCoordinates);
CASE(3,TestCoverage);
- CASE(4,TestSunriseTimes);
- CASE(5,TestBasics);
- CASE(6,TestMoonAge);
+ CASE(4,TestBasics);
+ CASE(5,TestMoonAge);
default: name = ""; break;
}
}
@@ -52,12 +51,12 @@ void AstroTest::runIndexedTest( int32_t index, UBool exec, const char* &name, ch
} UPRV_BLOCK_MACRO_END
-void AstroTest::initAstro(UErrorCode &status) {
+void AstroTest::init(UErrorCode &status) {
if(U_FAILURE(status)) return;
- if((astro != nullptr) || (gc != nullptr)) {
- dataerrln("Err: initAstro() called twice!");
- closeAstro(status);
+ if(gc != nullptr) {
+ dataerrln("Err: init() called twice!");
+ close(status);
if(U_SUCCESS(status)) {
status = U_INTERNAL_PROGRAM_ERROR;
}
@@ -65,15 +64,10 @@ void AstroTest::initAstro(UErrorCode &status) {
if(U_FAILURE(status)) return;
- astro = new CalendarAstronomer();
gc = Calendar::createInstance(TimeZone::getGMT()->clone(), status);
}
-void AstroTest::closeAstro(UErrorCode &/*status*/) {
- if(astro != nullptr) {
- delete astro;
- astro = nullptr;
- }
+void AstroTest::close(UErrorCode &/*status*/) {
if(gc != nullptr) {
delete gc;
gc = nullptr;
@@ -82,7 +76,7 @@ void AstroTest::closeAstro(UErrorCode &/*status*/) {
void AstroTest::TestSolarLongitude() {
UErrorCode status = U_ZERO_ERROR;
- initAstro(status);
+ init(status);
ASSERT_OK(status);
struct {
@@ -97,15 +91,11 @@ void AstroTest::TestSolarLongitude() {
gc->clear();
gc->set(tests[i].d[0], tests[i].d[1]-1, tests[i].d[2], tests[i].d[3], tests[i].d[4]);
- astro->setDate(gc->getTime(status));
+ CalendarAstronomer astro(gc->getTime(status));
- double longitude = astro->getSunLongitude();
- //longitude = 0;
- CalendarAstronomer::Equatorial result;
- astro->getSunPosition(result);
- logln((UnicodeString)"Sun position is " + result.toString() + (UnicodeString)"; " /* + result.toHmsString()*/ + " Sun longitude is " + longitude );
+ astro.getSunLongitude();
}
- closeAstro(status);
+ close(status);
ASSERT_OK(status);
}
@@ -113,7 +103,7 @@ void AstroTest::TestSolarLongitude() {
void AstroTest::TestLunarPosition() {
UErrorCode status = U_ZERO_ERROR;
- initAstro(status);
+ init(status);
ASSERT_OK(status);
static const double tests[][7] = {
@@ -124,13 +114,13 @@ void AstroTest::TestLunarPosition() {
for (int32_t i = 0; i < UPRV_LENGTHOF(tests); i++) {
gc->clear();
gc->set((int32_t)tests[i][0], (int32_t)tests[i][1]-1, (int32_t)tests[i][2], (int32_t)tests[i][3], (int32_t)tests[i][4]);
- astro->setDate(gc->getTime(status));
+ CalendarAstronomer astro(gc->getTime(status));
- const CalendarAstronomer::Equatorial& result = astro->getMoonPosition();
+ const CalendarAstronomer::Equatorial& result = astro.getMoonPosition();
logln((UnicodeString)"Moon position is " + result.toString() + (UnicodeString)"; " /* + result->toHmsString()*/);
}
- closeAstro(status);
+ close(status);
ASSERT_OK(status);
}
@@ -138,13 +128,14 @@ void AstroTest::TestLunarPosition() {
void AstroTest::TestCoordinates() {
UErrorCode status = U_ZERO_ERROR;
- initAstro(status);
+ init(status);
ASSERT_OK(status);
CalendarAstronomer::Equatorial result;
- astro->eclipticToEquatorial(result, 139.686111 * CalendarAstronomer::PI / 180.0, 4.875278* CalendarAstronomer::PI / 180.0);
+ CalendarAstronomer astro;
+ astro.eclipticToEquatorial(result, 139.686111 * CalendarAstronomer::PI / 180.0, 4.875278* CalendarAstronomer::PI / 180.0);
logln((UnicodeString)"result is " + result.toString() + (UnicodeString)"; " /* + result.toHmsString()*/ );
- closeAstro(status);
+ close(status);
ASSERT_OK(status);
}
@@ -152,7 +143,7 @@ void AstroTest::TestCoordinates() {
void AstroTest::TestCoverage() {
UErrorCode status = U_ZERO_ERROR;
- initAstro(status);
+ init(status);
ASSERT_OK(status);
GregorianCalendar *cal = new GregorianCalendar(1958, UCAL_AUGUST, 15,status);
UDate then = cal->getTime(status);
@@ -162,21 +153,14 @@ void AstroTest::TestCoverage() {
//Latitude: 34 degrees 05' North
//Longitude: 118 degrees 22' West
double laLat = 34 + 5./60, laLong = 360 - (118 + 22./60);
- CalendarAstronomer *myastro2 = new CalendarAstronomer(laLong, laLat);
double eclLat = laLat * CalendarAstronomer::PI / 360;
double eclLong = laLong * CalendarAstronomer::PI / 360;
- CalendarAstronomer::Ecliptic ecl(eclLat, eclLong);
CalendarAstronomer::Equatorial eq;
- CalendarAstronomer::Horizon hor;
-
- logln("ecliptic: " + ecl.toString());
- CalendarAstronomer *myastro3 = new CalendarAstronomer();
- myastro3->setJulianDay((4713 + 2000) * 365.25);
CalendarAstronomer *astronomers[] = {
- myastro, myastro2, myastro3, myastro2 // check cache
+ myastro, myastro, myastro // check cache
};
for (uint32_t i = 0; i < UPRV_LENGTHOF(astronomers); ++i) {
@@ -184,195 +168,19 @@ void AstroTest::TestCoverage() {
//logln("astro: " + astro);
logln((UnicodeString)" date: " + anAstro->getTime());
- logln((UnicodeString)" cent: " + anAstro->getJulianCentury());
- logln((UnicodeString)" gw sidereal: " + anAstro->getGreenwichSidereal());
- logln((UnicodeString)" loc sidereal: " + anAstro->getLocalSidereal());
- logln((UnicodeString)" equ ecl: " + (anAstro->eclipticToEquatorial(eq,ecl)).toString());
- logln((UnicodeString)" equ long: " + (anAstro->eclipticToEquatorial(eq, eclLong)).toString());
- logln((UnicodeString)" horiz: " + (anAstro->eclipticToHorizon(hor, eclLong)).toString());
- logln((UnicodeString)" sunrise: " + (anAstro->getSunRiseSet(true)));
- logln((UnicodeString)" sunset: " + (anAstro->getSunRiseSet(false)));
- logln((UnicodeString)" moon phase: " + anAstro->getMoonPhase());
- logln((UnicodeString)" moonrise: " + (anAstro->getMoonRiseSet(true)));
- logln((UnicodeString)" moonset: " + (anAstro->getMoonRiseSet(false)));
- logln((UnicodeString)" prev summer solstice: " + (anAstro->getSunTime(CalendarAstronomer::SUMMER_SOLSTICE(), false)));
- logln((UnicodeString)" next summer solstice: " + (anAstro->getSunTime(CalendarAstronomer::SUMMER_SOLSTICE(), true)));
- logln((UnicodeString)" prev full moon: " + (anAstro->getMoonTime(CalendarAstronomer::FULL_MOON(), false)));
- logln((UnicodeString)" next full moon: " + (anAstro->getMoonTime(CalendarAstronomer::FULL_MOON(), true)));
+ logln((UnicodeString)" equ ecl: " + (anAstro->eclipticToEquatorial(eq,eclLat,eclLong)).toString());
}
- delete myastro2;
- delete myastro3;
delete myastro;
delete cal;
- closeAstro(status);
- ASSERT_OK(status);
-}
-
-
-
-void AstroTest::TestSunriseTimes() {
- UErrorCode status = U_ZERO_ERROR;
- initAstro(status);
- ASSERT_OK(status);
-
- // logln("Sunrise/Sunset times for San Jose, California, USA");
- // CalendarAstronomer *astro2 = new CalendarAstronomer(-121.55, 37.20);
- // TimeZone *tz = TimeZone::createTimeZone("America/Los_Angeles");
-
- // We'll use a table generated by the UNSO website as our reference
- // From: http://aa.usno.navy.mil/
- //-Location: W079 25, N43 40
- //-Rise and Set for the Sun for 2001
- //-Zone: 4h West of Greenwich
- int32_t USNO[] = {
- 6,59, 19,45,
- 6,57, 19,46,
- 6,56, 19,47,
- 6,54, 19,48,
- 6,52, 19,49,
- 6,50, 19,51,
- 6,48, 19,52,
- 6,47, 19,53,
- 6,45, 19,54,
- 6,43, 19,55,
- 6,42, 19,57,
- 6,40, 19,58,
- 6,38, 19,59,
- 6,36, 20, 0,
- 6,35, 20, 1,
- 6,33, 20, 3,
- 6,31, 20, 4,
- 6,30, 20, 5,
- 6,28, 20, 6,
- 6,27, 20, 7,
- 6,25, 20, 8,
- 6,23, 20,10,
- 6,22, 20,11,
- 6,20, 20,12,
- 6,19, 20,13,
- 6,17, 20,14,
- 6,16, 20,16,
- 6,14, 20,17,
- 6,13, 20,18,
- 6,11, 20,19,
- };
-
- logln("Sunrise/Sunset times for Toronto, Canada");
- // long = 79 25", lat = 43 40"
- CalendarAstronomer astro3(-(79+25/60), 43+40/60);
-
- // As of ICU4J 2.8 the ICU4J time zones implement pass-through
- // to the underlying JDK. Because of variation in the
- // underlying JDKs, we have to use a fixed-offset
- // SimpleTimeZone to get consistent behavior between JDKs.
- // The offset we want is [-18000000, 3600000] (raw, dst).
- // [aliu 10/15/03]
-
- // TimeZone tz = TimeZone.getTimeZone("America/Montreal");
- SimpleTimeZone tz(-18000000 + 3600000, "Montreal(FIXED)");
-
- GregorianCalendar cal(tz.clone(), Locale::getUS(), status);
- GregorianCalendar cal2(tz.clone(), Locale::getUS(), status);
- cal.clear();
- cal.set(UCAL_YEAR, 2001);
- cal.set(UCAL_MONTH, UCAL_APRIL);
- cal.set(UCAL_DAY_OF_MONTH, 1);
- cal.set(UCAL_HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work
-
- LocalPointer<DateFormat> df_t(DateFormat::createTimeInstance(DateFormat::MEDIUM,Locale::getUS()));
- LocalPointer<DateFormat> df_d(DateFormat::createDateInstance(DateFormat::MEDIUM,Locale::getUS()));
- LocalPointer<DateFormat> df_dt(DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::MEDIUM, Locale::getUS()));
- if(!df_t.isValid() || !df_d.isValid() || !df_dt.isValid()) {
- dataerrln("couldn't create dateformats.");
- closeAstro(status);
- return;
- }
- df_t->adoptTimeZone(tz.clone());
- df_d->adoptTimeZone(tz.clone());
- df_dt->adoptTimeZone(tz.clone());
-
- for (int32_t i=0; i < 30; i++) {
- logln("setDate\n");
- astro3.setDate(cal.getTime(status));
- logln("getRiseSet(true)\n");
- UDate sunrise = astro3.getSunRiseSet(true);
- logln("getRiseSet(false)\n");
- UDate sunset = astro3.getSunRiseSet(false);
- logln("end of getRiseSet\n");
-
- cal2.setTime(cal.getTime(status), status);
- cal2.set(UCAL_SECOND, 0);
- cal2.set(UCAL_MILLISECOND, 0);
-
- cal2.set(UCAL_HOUR_OF_DAY, USNO[4*i+0]);
- cal2.set(UCAL_MINUTE, USNO[4*i+1]);
- UDate exprise = cal2.getTime(status);
- cal2.set(UCAL_HOUR_OF_DAY, USNO[4*i+2]);
- cal2.set(UCAL_MINUTE, USNO[4*i+3]);
- UDate expset = cal2.getTime(status);
- // Compute delta of what we got to the USNO data, in seconds
- int32_t deltarise = (int32_t)uprv_fabs((sunrise - exprise) / 1000);
- int32_t deltaset = (int32_t)uprv_fabs((sunset - expset) / 1000);
-
- // Allow a deviation of 0..MAX_DEV seconds
- // It would be nice to get down to 60 seconds, but at this
- // point that appears to be impossible without a redo of the
- // algorithm using something more advanced than Duffett-Smith.
- int32_t MAX_DEV = 180;
- UnicodeString s1, s2, s3, s4, s5;
- if (deltarise > MAX_DEV || deltaset > MAX_DEV) {
- if (deltarise > MAX_DEV) {
- errln("FAIL: (rise) " + df_d->format(cal.getTime(status),s1) +
- ", Sunrise: " + df_dt->format(sunrise, s2) +
- " (USNO " + df_t->format(exprise,s3) +
- " d=" + deltarise + "s)");
- } else {
- logln(df_d->format(cal.getTime(status),s1) +
- ", Sunrise: " + df_dt->format(sunrise,s2) +
- " (USNO " + df_t->format(exprise,s3) + ")");
- }
- s1.remove(); s2.remove(); s3.remove(); s4.remove(); s5.remove();
- if (deltaset > MAX_DEV) {
- errln("FAIL: (set) " + df_d->format(cal.getTime(status),s1) +
- ", Sunset: " + df_dt->format(sunset,s2) +
- " (USNO " + df_t->format(expset,s3) +
- " d=" + deltaset + "s)");
- } else {
- logln(df_d->format(cal.getTime(status),s1) +
- ", Sunset: " + df_dt->format(sunset,s2) +
- " (USNO " + df_t->format(expset,s3) + ")");
- }
- } else {
- logln(df_d->format(cal.getTime(status),s1) +
- ", Sunrise: " + df_dt->format(sunrise,s2) +
- " (USNO " + df_t->format(exprise,s3) + ")" +
- ", Sunset: " + df_dt->format(sunset,s4) +
- " (USNO " + df_t->format(expset,s5) + ")");
- }
- cal.add(UCAL_DATE, 1, status);
- }
-
- // CalendarAstronomer a = new CalendarAstronomer(-(71+5/60), 42+37/60);
- // cal.clear();
- // cal.set(cal.YEAR, 1986);
- // cal.set(cal.MONTH, cal.MARCH);
- // cal.set(cal.DATE, 10);
- // cal.set(cal.YEAR, 1988);
- // cal.set(cal.MONTH, cal.JULY);
- // cal.set(cal.DATE, 27);
- // a.setDate(cal.getTime());
- // long r = a.getSunRiseSet2(true);
- closeAstro(status);
+ close(status);
ASSERT_OK(status);
}
-
-
void AstroTest::TestBasics() {
UErrorCode status = U_ZERO_ERROR;
- initAstro(status);
+ init(status);
if (U_FAILURE(status)) {
dataerrln("Got error: %s", u_errorName(status));
return;
@@ -383,7 +191,7 @@ void AstroTest::TestBasics() {
LocalPointer<DateFormat> d3(DateFormat::createDateTimeInstance(DateFormat::MEDIUM,DateFormat::MEDIUM,Locale::getUS()));
if (d3.isNull()) {
dataerrln("Got error: %s", u_errorName(status));
- closeAstro(status);
+ close(status);
return;
}
d3->setTimeZone(*TimeZone::getGMT());
@@ -407,8 +215,8 @@ void AstroTest::TestBasics() {
UnicodeString s;
logln(UnicodeString("cal3 = ") + d3->format(cal3.getTime(status),s));
}
- astro->setTime(cal3.getTime(status));
- double jd = astro->getJulianDay() - 2447891.5;
+ CalendarAstronomer astro(cal3.getTime(status));
+ double jd = astro.getJulianDay() - 2447891.5;
double exp = -3444.;
if (jd == exp) {
UnicodeString s;
@@ -428,14 +236,14 @@ void AstroTest::TestBasics() {
// astro.foo();
ASSERT_OK(status);
- closeAstro(status);
+ close(status);
ASSERT_OK(status);
}
void AstroTest::TestMoonAge(){
UErrorCode status = U_ZERO_ERROR;
- initAstro(status);
+ init(status);
ASSERT_OK(status);
// more testcases are around the date 05/20/2012
@@ -461,9 +269,9 @@ void AstroTest::TestMoonAge(){
(int32_t)testcase[i][2]+" Hour "+(int32_t)testcase[i][3]+" Minutes "+(int32_t)testcase[i][4]+
" Seconds "+(int32_t)testcase[i][5]);
gc->set((int32_t)testcase[i][0], (int32_t)testcase[i][1]-1, (int32_t)testcase[i][2], (int32_t)testcase[i][3], (int32_t)testcase[i][4], (int32_t)testcase[i][5]);
- astro->setDate(gc->getTime(status));
+ CalendarAstronomer astro(gc->getTime(status));
double expectedAge = (angle[i]*CalendarAstronomer::PI)/180;
- double got = astro->getMoonAge();
+ double got = astro.getMoonAge();
//logln(testString);
if(!(got>expectedAge-precision && got<expectedAge+precision)){
errln((UnicodeString)"FAIL: expected " + expectedAge +
@@ -473,7 +281,7 @@ void AstroTest::TestMoonAge(){
" got " + got);
}
}
- closeAstro(status);
+ close(status);
ASSERT_OK(status);
}
diff --git a/icu4c/source/test/intltest/astrotst.h b/icu4c/source/test/intltest/astrotst.h
index 236c16fd8..d54b52910 100644
--- a/icu4c/source/test/intltest/astrotst.h
+++ b/icu4c/source/test/intltest/astrotst.h
@@ -34,16 +34,13 @@ public:
void TestCoverage();
- void TestSunriseTimes();
-
void TestBasics();
void TestMoonAge();
private:
- void initAstro(UErrorCode&);
- void closeAstro(UErrorCode&);
+ void init(UErrorCode&);
+ void close(UErrorCode&);
- CalendarAstronomer *astro;
Calendar *gc;
};
diff --git a/icu4c/source/test/intltest/callimts.cpp b/icu4c/source/test/intltest/callimts.cpp
index bfb946db4..3ab6166ac 100644
--- a/icu4c/source/test/intltest/callimts.cpp
+++ b/icu4c/source/test/intltest/callimts.cpp
@@ -416,50 +416,19 @@ CalendarLimitTest::doLimitsTest(Calendar& cal,
", actual_min=" + minActual);
}
if (maxActual < maxLow || maxActual > maxHigh) {
- if ( uprv_strcmp(cal.getType(), "chinese") == 0 &&
- testMillis >= 1802044800000.0 &&
- logKnownIssue("12620", "chinese calendar failures for some actualMax tests")) {
- logln((UnicodeString)"KnownFail: [" + cal.getType() + "] " +
- ymdToString(cal, ymd) +
- " Range for max of " + FIELD_NAME[f] + "(" + f +
- ")=" + maxLow + ".." + maxHigh +
- ", actual_max=" + maxActual);
- } else {
- errln((UnicodeString)"Fail: [" + cal.getType() + "] " +
- ymdToString(cal, ymd) +
- " Range for max of " + FIELD_NAME[f] + "(" + f +
- ")=" + maxLow + ".." + maxHigh +
- ", actual_max=" + maxActual);
- }
+ errln((UnicodeString)"Fail: [" + cal.getType() + "] " +
+ ymdToString(cal, ymd) +
+ " Range for max of " + FIELD_NAME[f] + "(" + f +
+ ")=" + maxLow + ".." + maxHigh +
+ ", actual_max=" + maxActual);
}
if (v < minActual || v > maxActual) {
- // timebomb per #9967, fix with #9972
- if ( uprv_strcmp(cal.getType(), "dangi") == 0 &&
- testMillis >= 1865635198000.0 &&
- logKnownIssue("9972", "as per #9967")) { // Feb 2029 gregorian, end of dangi 4361
- logln((UnicodeString)"KnownFail: [" + cal.getType() + "] " +
- ymdToString(cal, ymd) +
- " " + FIELD_NAME[f] + "(" + f + ")=" + v +
- ", actual=" + minActual + ".." + maxActual +
- ", allowed=(" + minLow + ".." + minHigh + ")..(" +
- maxLow + ".." + maxHigh + ")");
- } else if ( uprv_strcmp(cal.getType(), "chinese") == 0 &&
- testMillis >= 1832544000000.0 &&
- logKnownIssue("12620", "chinese calendar failures for some actualMax tests")) {
- logln((UnicodeString)"KnownFail: [" + cal.getType() + "] " +
- ymdToString(cal, ymd) +
- " " + FIELD_NAME[f] + "(" + f + ")=" + v +
- ", actual=" + minActual + ".." + maxActual +
- ", allowed=(" + minLow + ".." + minHigh + ")..(" +
- maxLow + ".." + maxHigh + ")");
- } else {
- errln((UnicodeString)"Fail: [" + cal.getType() + "] " +
- ymdToString(cal, ymd) +
- " " + FIELD_NAME[f] + "(" + f + ")=" + v +
- ", actual=" + minActual + ".." + maxActual +
- ", allowed=(" + minLow + ".." + minHigh + ")..(" +
- maxLow + ".." + maxHigh + ")");
- }
+ errln((UnicodeString)"Fail: [" + cal.getType() + "] " +
+ ymdToString(cal, ymd) +
+ " " + FIELD_NAME[f] + "(" + f + ")=" + v +
+ ", actual=" + minActual + ".." + maxActual +
+ ", allowed=(" + minLow + ".." + minHigh + ")..(" +
+ maxLow + ".." + maxHigh + ")");
}
}
greg.add(UCAL_DAY_OF_YEAR, 1, status);
diff --git a/icu4c/source/test/intltest/caltest.cpp b/icu4c/source/test/intltest/caltest.cpp
index 73476293f..bace8d762 100644
--- a/icu4c/source/test/intltest/caltest.cpp
+++ b/icu4c/source/test/intltest/caltest.cpp
@@ -189,6 +189,27 @@ void CalendarTest::runIndexedTest( int32_t index, UBool exec, const char* &name,
TESTCASE_AUTO(TestFWWithISO8601);
TESTCASE_AUTO(TestDangiOverflowIsLeapMonthBetween22507);
TESTCASE_AUTO(TestRollWeekOfYear);
+ TESTCASE_AUTO(TestFirstDayOfWeek);
+
+ TESTCASE_AUTO(Test22633ChineseOverflow);
+ TESTCASE_AUTO(Test22633IndianOverflow);
+ TESTCASE_AUTO(Test22633IslamicUmalquraOverflow);
+ TESTCASE_AUTO(Test22633PersianOverflow);
+ TESTCASE_AUTO(Test22633HebrewOverflow);
+ TESTCASE_AUTO(Test22633AMPMOverflow);
+ TESTCASE_AUTO(Test22633SetGetTimeOverflow);
+ TESTCASE_AUTO(Test22633Set2FieldsGetTimeOverflow);
+ TESTCASE_AUTO(Test22633SetAddGetTimeOverflow);
+ TESTCASE_AUTO(Test22633SetRollGetTimeOverflow);
+ TESTCASE_AUTO(Test22633AddTwiceGetTimeOverflow);
+ TESTCASE_AUTO(Test22633RollTwiceGetTimeOverflow);
+
+ TESTCASE_AUTO(Test22633HebrewLargeNegativeDay);
+
+ TESTCASE_AUTO(TestAddOverflow);
+
+
+ TESTCASE_AUTO(TestChineseCalendarComputeMonthStart);
TESTCASE_AUTO_END;
}
@@ -385,7 +406,7 @@ CalendarTest::TestGenericAPI()
int32_t count;
const Locale* loc = Calendar::getAvailableLocales(count);
- if (count < 1 || loc == 0)
+ if (count < 1 || loc == nullptr)
{
dataerrln("FAIL: getAvailableLocales failed");
}
@@ -1248,7 +1269,7 @@ CalendarTest::TestFields060()
int32_t year = 1997;
int32_t month = UCAL_OCTOBER;
int32_t dDate = 22;
- GregorianCalendar *calendar = 0;
+ GregorianCalendar* calendar = nullptr;
calendar = new GregorianCalendar(year, month, dDate, status);
if (failure(status, "new GregorianCalendar", true)) return;
for (int32_t i = 0; i < EXPECTED_FIELDS_length;) {
@@ -1398,8 +1419,6 @@ CalendarTest::TestDOW_LOCALandYEAR_WOY()
if (U_FAILURE(status)) { errln("Error in parse/calculate test for 1582"); return; }
delete sdf;
delete cal;
-
- return;
}
/**
@@ -2076,8 +2095,6 @@ void CalendarTest::Test6703()
cal = Calendar::createInstance(loc3, status);
if (failure(status, "Calendar::createInstance")) return;
delete cal;
-
- return;
}
void CalendarTest::Test3785()
@@ -2123,8 +2140,6 @@ void CalendarTest::Test3785()
if ( act2 != exp2 ) {
errln("Unexpected result from date 2 format\n");
}
-
- return;
}
void CalendarTest::Test1624() {
@@ -2161,7 +2176,6 @@ void CalendarTest::Test1624() {
}
}
}
- return;
}
void CalendarTest::TestTimeStamp() {
@@ -3609,12 +3623,12 @@ void CalendarTest::TestWeekData() {
"en_GB", "und_GB",
"ar_EG", "en_EG",
"ar_SA", "fr_SA",
- 0
+ nullptr
};
UErrorCode status;
- for (int32_t i = 0; LOCALE_PAIRS[i] != 0; i += 2) {
+ for (int32_t i = 0; LOCALE_PAIRS[i] != nullptr; i += 2) {
status = U_ZERO_ERROR;
LocalPointer<Calendar> cal1(Calendar::createInstance(LOCALE_PAIRS[i], status));
LocalPointer<Calendar> cal2(Calendar::createInstance(LOCALE_PAIRS[i + 1], status));
@@ -5552,6 +5566,358 @@ void CalendarTest::TestRollWeekOfYear() {
U_ASSERT(U_SUCCESS(status));
cal->roll(UCAL_WEEK_OF_YEAR, 1, status);
}
+
+void CalendarTest::verifyFirstDayOfWeek(const char* locale, UCalendarDaysOfWeek expected) {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l = Locale::forLanguageTag(locale, status);
+ U_ASSERT(U_SUCCESS(status));
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status), status);
+ U_ASSERT(U_SUCCESS(status));
+ assertEquals(locale,
+ expected, cal->getFirstDayOfWeek(status));
+ U_ASSERT(U_SUCCESS(status));
+}
+
+/**
+ * Test "First Day Overrides" behavior
+ * https://unicode.org/reports/tr35/tr35-dates.html#first-day-overrides
+ * And data in <firstDay> of
+ * https://github.com/unicode-org/cldr/blob/main/common/supplemental/supplementalData.xml
+ *
+ * Examples of region for First Day of a week
+ * Friday: MV
+ * Saturday: AE AF
+ * Sunday: US JP
+ * Monday: GB
+ */
+void CalendarTest::TestFirstDayOfWeek() {
+ // Test -u-fw- value
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-sun-rg-mvzzzz-sd-usca", UCAL_SUNDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-mon-rg-mvzzzz-sd-usca", UCAL_MONDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-tue-rg-mvzzzz-sd-usca", UCAL_TUESDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-wed-rg-mvzzzz-sd-usca", UCAL_WEDNESDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-thu-rg-mvzzzz-sd-usca", UCAL_THURSDAY);
+ verifyFirstDayOfWeek("en-AE-u-ca-iso8601-fw-fri-rg-aezzzz-sd-usca", UCAL_FRIDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-sat-rg-mvzzzz-sd-usca", UCAL_SATURDAY);
+
+ // Test -u-rg- value
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-mvzzzz-sd-usca", UCAL_FRIDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-aezzzz-sd-usca", UCAL_SATURDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-uszzzz-sd-usca", UCAL_SUNDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-gbzzzz-sd-usca", UCAL_MONDAY);
+
+ // Test -u-ca-iso8601
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-sd-mv00", UCAL_MONDAY);
+ verifyFirstDayOfWeek("en-AE-u-ca-iso8601-sd-aeaj", UCAL_MONDAY);
+ verifyFirstDayOfWeek("en-US-u-ca-iso8601-sd-usca", UCAL_MONDAY);
+
+ // Test Region Tags only
+ verifyFirstDayOfWeek("en-MV", UCAL_FRIDAY);
+ verifyFirstDayOfWeek("en-AE", UCAL_SATURDAY);
+ verifyFirstDayOfWeek("en-US", UCAL_SUNDAY);
+ verifyFirstDayOfWeek("dv-GB", UCAL_MONDAY);
+
+ // Test -u-sd-
+ verifyFirstDayOfWeek("en-u-sd-mv00", UCAL_FRIDAY);
+ verifyFirstDayOfWeek("en-u-sd-aeaj", UCAL_SATURDAY);
+ verifyFirstDayOfWeek("en-u-sd-usca", UCAL_SUNDAY);
+ verifyFirstDayOfWeek("dv-u-sd-gbsct", UCAL_MONDAY);
+
+ // Test Add Likely Subtags algorithm produces a region
+ // dv => dv_Thaa_MV => Friday
+ verifyFirstDayOfWeek("dv", UCAL_FRIDAY);
+ // und_Thaa => dv_Thaa_MV => Friday
+ verifyFirstDayOfWeek("und-Thaa", UCAL_FRIDAY);
+
+ // ssh => ssh_Arab_AE => Saturday
+ verifyFirstDayOfWeek("ssh", UCAL_SATURDAY);
+ // wbl_Arab => wbl_Arab_AF => Saturday
+ verifyFirstDayOfWeek("wbl-Arab", UCAL_SATURDAY);
+
+ // en => en_Latn_US => Sunday
+ verifyFirstDayOfWeek("en", UCAL_SUNDAY);
+ // und_Hira => ja_Hira_JP => Sunday
+ verifyFirstDayOfWeek("und-Hira", UCAL_SUNDAY);
+
+ verifyFirstDayOfWeek("zxx", UCAL_MONDAY);
+}
+
+void CalendarTest::Test22633ChineseOverflow() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(Calendar::createInstance(Locale("en@calendar=chinese"), status), status);
+ U_ASSERT(U_SUCCESS(status));
+ cal->setTime(2043071457431218011677338081118001787485161156097100985923226601036925437809699842362992455895409920480414647512899096575018732258582416938813614617757317338664031880042592085084690242819214720523061081124318514531466365480449329351434046537728.000000, status);
+ U_ASSERT(U_SUCCESS(status));
+ cal->set(UCAL_EXTENDED_YEAR, -1594662558);
+ cal->get(UCAL_YEAR, status);
+ assertTrue("Should return success", U_SUCCESS(status));
+
+ cal->setTime(17000065021099877464213620139773683829419175940649608600213244013003611130029599692535053209683880603725167923910423116397083334648012657787978113960494455603744210944.000000, status);
+ cal->add(UCAL_YEAR, 1935762034, status);
+ assertTrue("Should return falure", U_FAILURE(status));
+
+ status = U_ZERO_ERROR;
+ cal->set(UCAL_ERA, 1651667877);
+ cal->add(UCAL_YEAR, 1935762034, status);
+ assertTrue("Should return falure", U_FAILURE(status));
+}
+void CalendarTest::Test22633IndianOverflow() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(Calendar::createInstance(Locale("en@calendar=indian"), status), status);
+ U_ASSERT(U_SUCCESS(status));
+ cal->roll(UCAL_EXTENDED_YEAR, -2120158417, status);
+ assertTrue("Should return success", U_SUCCESS(status));
+}
+void CalendarTest::Test22633IslamicUmalquraOverflow() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(Calendar::createInstance(Locale("en@calendar=islamic-umalqura"), status), status);
+ U_ASSERT(U_SUCCESS(status));
+ cal->roll(UCAL_YEAR, -134404585, status);
+ assertTrue("Should return success", U_SUCCESS(status));
+}
+
+void CalendarTest::Test22633PersianOverflow() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(Calendar::createInstance(Locale("en@calendar=persian"), status), status);
+ U_ASSERT(U_SUCCESS(status));
+ cal->add(UCAL_ORDINAL_MONTH, 1594095615, status);
+ assertTrue("Should return success", U_SUCCESS(status));
+
+ cal->clear();
+ cal->fieldDifference(
+ -874417153152678003697180890506448687181167523704194267774844295805672585701302166100950793070884718009504322601688549650298776623158701367393457997817732662883592665106020013730689242515513560464852918376875667091108609655859551000798163265126400.000000,
+ UCAL_YEAR, status);
+ assertFalse("Should not return success", U_SUCCESS(status));
+}
+
+void CalendarTest::Test22633HebrewOverflow() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(Calendar::createInstance(Locale("en@calendar=hebrew"), status), status);
+ U_ASSERT(U_SUCCESS(status));
+ cal->clear();
+ cal->roll(UCAL_JULIAN_DAY, -335544321, status);
+ assertTrue("Should return success", U_SUCCESS(status));
+ cal->roll(UCAL_JULIAN_DAY, -1812424430, status);
+ assertEquals("Should return U_ILLEGAL_ARGUMENT_ERROR",
+ U_ILLEGAL_ARGUMENT_ERROR, status);
+}
+
+void CalendarTest::Test22633AMPMOverflow() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(Calendar::createInstance(Locale("en"), status), status);
+ U_ASSERT(U_SUCCESS(status));
+ cal->setTimeZone(*TimeZone::getGMT());
+ cal->clear();
+ // Test to set a value > limit should not cause internal overflow.
+ cal->set(UCAL_AM_PM, 370633137);
+ assertEquals("set large odd value for UCAL_AM_PM should be treated as PM",
+ 12.0 * 60.0 * 60.0 *1000.0, cal->getTime(status));
+ assertTrue("Should return success", U_SUCCESS(status));
+
+ cal->set(UCAL_AM_PM, 370633138);
+ assertEquals("set large even value for UCAL_AM_PM should be treated as AM",
+ 0.0, cal->getTime(status));
+ assertTrue("Should return success", U_SUCCESS(status));
+}
+
+void CalendarTest::RunTestOnCalendars(void(TestFunc)(Calendar*, UCalendarDateFields)) {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale locale = Locale::getEnglish();
+ LocalPointer<StringEnumeration> values(
+ Calendar::getKeywordValuesForLocale("calendar", locale, false, status),
+ status);
+ assertTrue("Should return success", U_SUCCESS(status));
+ if (U_FAILURE(status)) {
+ return;
+ }
+ const char* value = nullptr;
+ while ((value = values->next(nullptr, status)) != nullptr && U_SUCCESS(status)) {
+ locale.setKeywordValue("calendar", value, status);
+ assertTrue("Should return success", U_SUCCESS(status));
+
+ LocalPointer<Calendar> cal(Calendar::createInstance(*TimeZone::getGMT(), locale, status), status);
+ assertTrue("Should return success", U_SUCCESS(status));
+ for (int32_t i = 0; i < UCAL_FIELD_COUNT; i++) {
+ TestFunc(cal.getAlias(), static_cast<UCalendarDateFields>(i));
+ }
+ }
+}
+
+// This test is designed to work with undefined behavior sanitizer UBSAN to
+// ensure we do not have math operation overflow int32_t.
+void CalendarTest::Test22633SetGetTimeOverflow() {
+ RunTestOnCalendars([](Calendar* cal, UCalendarDateFields field) {
+ auto f = [](Calendar* cal, UCalendarDateFields field, int32_t value) {
+ UErrorCode status = U_ZERO_ERROR;
+ cal->clear();
+ cal->set(field, value);
+ cal->getTime(status);
+ };
+ f(cal, field, INT32_MAX);
+ f(cal, field, INT32_MIN);
+ });
+}
+
+void CalendarTest::Test22633Set2FieldsGetTimeOverflow() {
+ RunTestOnCalendars([](Calendar* cal, UCalendarDateFields field) {
+ auto f = [](Calendar* cal, UCalendarDateFields field, int32_t value) {
+ for (int32_t j = 0; j < UCAL_FIELD_COUNT; j++) {
+ UCalendarDateFields field2 = static_cast<UCalendarDateFields>(j);
+ UErrorCode status = U_ZERO_ERROR;
+ cal->clear();
+ cal->set(field, value);
+ cal->set(field2, value);
+ cal->getTime(status);
+ }
+ };
+ f(cal, field, INT32_MAX);
+ f(cal, field, INT32_MIN);
+ });
+}
+
+void CalendarTest::Test22633SetAddGetTimeOverflow() {
+ RunTestOnCalendars([](Calendar* cal, UCalendarDateFields field) {
+ auto f = [](Calendar* cal, UCalendarDateFields field, int32_t value) {
+ UErrorCode status = U_ZERO_ERROR;
+ cal->clear();
+ cal->set(field, value);
+ cal->add(field, value, status);
+ status = U_ZERO_ERROR;
+ cal->getTime(status);
+ };
+ f(cal, field, INT32_MAX);
+ f(cal, field, INT32_MIN);
+ });
+}
+
+void CalendarTest::Test22633AddTwiceGetTimeOverflow() {
+ RunTestOnCalendars([](Calendar* cal, UCalendarDateFields field) {
+ auto f = [](Calendar* cal, UCalendarDateFields field, int32_t value) {
+ UErrorCode status = U_ZERO_ERROR;
+ cal->clear();
+ cal->add(field, value, status);
+ status = U_ZERO_ERROR;
+ cal->add(field, value, status);
+ status = U_ZERO_ERROR;
+ cal->getTime(status);
+ };
+ f(cal, field, INT32_MAX);
+ f(cal, field, INT32_MIN);
+ });
+}
+
+void CalendarTest::Test22633SetRollGetTimeOverflow() {
+ RunTestOnCalendars([](Calendar* cal, UCalendarDateFields field) {
+ auto f = [](Calendar* cal, UCalendarDateFields field, int32_t value) {
+ UErrorCode status = U_ZERO_ERROR;
+ cal->clear();
+ cal->set(field, value);
+ cal->roll(field, value, status);
+ status = U_ZERO_ERROR;
+ cal->getTime(status);
+ };
+ f(cal, field, INT32_MAX);
+ f(cal, field, INT32_MIN);
+ });
+}
+
+void CalendarTest::Test22633RollTwiceGetTimeOverflow() {
+ RunTestOnCalendars([](Calendar* cal, UCalendarDateFields field) {
+ auto f = [](Calendar* cal, UCalendarDateFields field, int32_t value) {
+ UErrorCode status = U_ZERO_ERROR;
+ cal->clear();
+ cal->roll(field, value, status);
+ status = U_ZERO_ERROR;
+ cal->roll(field, value, status);
+ status = U_ZERO_ERROR;
+ cal->getTime(status);
+ };
+ f(cal, field, INT32_MAX);
+ f(cal, field, INT32_MIN);
+ });
+}
+
+void CalendarTest::TestChineseCalendarComputeMonthStart() { // ICU-22639
+ UErrorCode status = U_ZERO_ERROR;
+
+ // An extended year for which hasLeapMonthBetweenWinterSolstices is true.
+ constexpr int32_t eyear = 4643;
+ constexpr int64_t monthStart = 2453764;
+
+ LocalPointer<Calendar> calendar(
+ Calendar::createInstance(Locale("en_US@calendar=chinese"), status),
+ status);
+ if (failure(status, "Calendar::createInstance")) return;
+
+ // This test case is a friend of ChineseCalendar and may access internals.
+ const ChineseCalendar& chinese =
+ *dynamic_cast<ChineseCalendar*>(calendar.getAlias());
+
+ // The initial value of hasLeapMonthBetweenWinterSolstices should be false.
+ assertFalse("hasLeapMonthBetweenWinterSolstices [#1]",
+ chinese.hasLeapMonthBetweenWinterSolstices);
+
+ assertEquals("monthStart", monthStart,
+ chinese.handleComputeMonthStart(eyear, 0, false, status));
+
+ // Calling a const method must not haved changed the state of the object.
+ assertFalse("hasLeapMonthBetweenWinterSolstices [#2]",
+ chinese.hasLeapMonthBetweenWinterSolstices);
+}
+
+void CalendarTest::Test22633HebrewLargeNegativeDay() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> calendar(
+ Calendar::createInstance(Locale("en-u-ca-hebrew"), status),
+ status);
+ calendar->clear();
+ calendar->set(UCAL_DAY_OF_YEAR, -2147483648);
+ calendar->get(UCAL_HOUR, status);
+ assertEquals("status return without hang", status, U_ILLEGAL_ARGUMENT_ERROR);
+}
+
+void CalendarTest::TestAddOverflow() {
+ UErrorCode status = U_ZERO_ERROR;
+
+ LocalPointer<Calendar> calendar(
+ Calendar::createInstance(Locale("en"), status),
+ status);
+ if (failure(status, "Calendar::createInstance")) return;
+ for (int32_t i = 0; i < UCAL_FIELD_COUNT; i++) {
+ status = U_ZERO_ERROR;
+ calendar->setTime(0, status);
+ calendar->add(static_cast<UCalendarDateFields>(i), INT32_MAX / 2, status);
+ calendar->add(static_cast<UCalendarDateFields>(i), INT32_MAX, status);
+ if ((i == UCAL_ERA) ||
+ (i == UCAL_YEAR) ||
+ (i == UCAL_YEAR_WOY) ||
+ (i == UCAL_EXTENDED_YEAR) ||
+ (i == UCAL_IS_LEAP_MONTH) ||
+ (i == UCAL_MONTH) ||
+ (i == UCAL_ORDINAL_MONTH) ||
+ (i == UCAL_ZONE_OFFSET) ||
+ (i == UCAL_DST_OFFSET)) {
+ assertTrue("add INT32_MAX should fail", U_FAILURE(status));
+ } else {
+ assertTrue("add INT32_MAX should still success", U_SUCCESS(status));
+ }
+
+ status = U_ZERO_ERROR;
+ calendar->setTime(0, status);
+ calendar->add(static_cast<UCalendarDateFields>(i), INT32_MIN / 2, status);
+ calendar->add(static_cast<UCalendarDateFields>(i), INT32_MIN, status);
+ if ((i == UCAL_YEAR) ||
+ (i == UCAL_YEAR_WOY) ||
+ (i == UCAL_EXTENDED_YEAR) ||
+ (i == UCAL_IS_LEAP_MONTH) ||
+ (i == UCAL_ZONE_OFFSET) ||
+ (i == UCAL_DST_OFFSET)) {
+ assertTrue("add INT32_MIN should fail", U_FAILURE(status));
+ } else {
+ assertTrue("add INT32_MIN should still success", U_SUCCESS(status));
+ }
+ }
+}
#endif /* #if !UCONFIG_NO_FORMATTING */
//eof
diff --git a/icu4c/source/test/intltest/caltest.h b/icu4c/source/test/intltest/caltest.h
index 23ef77940..eabfa8d45 100644
--- a/icu4c/source/test/intltest/caltest.h
+++ b/icu4c/source/test/intltest/caltest.h
@@ -332,7 +332,27 @@ public: // package
void TestDangiOverflowIsLeapMonthBetween22507();
void TestFWWithISO8601();
+ void TestAddOverflow();
void TestRollWeekOfYear();
+ void Test22633ChineseOverflow();
+ void Test22633IndianOverflow();
+ void Test22633IslamicUmalquraOverflow();
+ void Test22633PersianOverflow();
+ void Test22633HebrewOverflow();
+ void Test22633AMPMOverflow();
+ void Test22633SetGetTimeOverflow();
+ void Test22633Set2FieldsGetTimeOverflow();
+ void Test22633SetAddGetTimeOverflow();
+ void Test22633SetRollGetTimeOverflow();
+ void Test22633AddTwiceGetTimeOverflow();
+ void Test22633RollTwiceGetTimeOverflow();
+ void RunTestOnCalendars(void(TestFunc)(Calendar*, UCalendarDateFields));
+
+ void verifyFirstDayOfWeek(const char* locale, UCalendarDaysOfWeek expected);
+ void TestFirstDayOfWeek();
+
+ void TestChineseCalendarComputeMonthStart();
+ void Test22633HebrewLargeNegativeDay();
void RunChineseCalendarInTemporalLeapYearTest(Calendar* cal);
void RunIslamicCalendarInTemporalLeapYearTest(Calendar* cal);
diff --git a/icu4c/source/test/intltest/caltztst.cpp b/icu4c/source/test/intltest/caltztst.cpp
index ebc9f03ff..30ffea020 100644
--- a/icu4c/source/test/intltest/caltztst.cpp
+++ b/icu4c/source/test/intltest/caltztst.cpp
@@ -23,8 +23,8 @@
#include "unicode/smpdtfmt.h"
#include "mutex.h"
-DateFormat* CalendarTimeZoneTest::fgDateFormat = 0;
-Calendar* CalendarTimeZoneTest::fgCalendar = 0;
+DateFormat* CalendarTimeZoneTest::fgDateFormat = nullptr;
+Calendar* CalendarTimeZoneTest::fgCalendar = nullptr;
UBool CalendarTimeZoneTest::failure(UErrorCode status, const char* msg, UBool possibleDataError)
{
@@ -42,27 +42,27 @@ UBool CalendarTimeZoneTest::failure(UErrorCode status, const char* msg, UBool po
DateFormat* CalendarTimeZoneTest::getDateFormat()
{
- DateFormat *theFormat = 0;
+ DateFormat* theFormat = nullptr;
- if (fgDateFormat != 0) // if there's something in the cache
+ if (fgDateFormat != nullptr) // if there's something in the cache
{
Mutex lock;
- if (fgDateFormat != 0) // Someone might have grabbed it.
+ if (fgDateFormat != nullptr) // Someone might have grabbed it.
{
theFormat = fgDateFormat;
- fgDateFormat = 0; // We have exclusive right to this formatter.
+ fgDateFormat = nullptr; // We have exclusive right to this formatter.
}
}
- if(theFormat == 0) // If we weren't able to pull it out of the cache, then we have to create it.
+ if (theFormat == nullptr) // If we weren't able to pull it out of the cache, then we have to create it.
{
UErrorCode status = U_ZERO_ERROR;
theFormat = new SimpleDateFormat(UnicodeString("EEE MMM dd HH:mm:ss zzz yyyy"), status);
if (U_FAILURE(status))
{
delete theFormat;
- theFormat = 0;
+ theFormat = nullptr;
dataerrln("FAIL: Could not create SimpleDateFormat - %s", u_errorName(status));
}
}
@@ -72,14 +72,14 @@ DateFormat* CalendarTimeZoneTest::getDateFormat()
void CalendarTimeZoneTest::releaseDateFormat(DateFormat *adopt)
{
- if(fgDateFormat == 0) // If the cache is empty we must add it back.
+ if (fgDateFormat == nullptr) // If the cache is empty we must add it back.
{
Mutex lock;
- if(fgDateFormat == 0)
+ if (fgDateFormat == nullptr)
{
fgDateFormat = adopt;
- adopt = 0;
+ adopt = nullptr;
}
}
else {
@@ -89,27 +89,27 @@ void CalendarTimeZoneTest::releaseDateFormat(DateFormat *adopt)
Calendar* CalendarTimeZoneTest::getCalendar()
{
- Calendar *theCalendar = 0;
+ Calendar* theCalendar = nullptr;
- if (fgCalendar != 0) // if there's something in the cache
+ if (fgCalendar != nullptr) // if there's something in the cache
{
Mutex lock;
- if (fgCalendar != 0) // Someone might have grabbed it.
+ if (fgCalendar != nullptr) // Someone might have grabbed it.
{
theCalendar = fgCalendar;
- fgCalendar = 0; // We have exclusive right to this calendar.
+ fgCalendar = nullptr; // We have exclusive right to this calendar.
}
}
- if(theCalendar == 0) // If we weren't able to pull it out of the cache, then we have to create it.
+ if (theCalendar == nullptr) // If we weren't able to pull it out of the cache, then we have to create it.
{
UErrorCode status = U_ZERO_ERROR;
theCalendar = Calendar::createInstance(status);
if (U_FAILURE(status))
{
delete theCalendar;
- theCalendar = 0;
+ theCalendar = nullptr;
dataerrln("FAIL: Calendar::createInstance failed: %s", u_errorName(status));
}
}
@@ -118,14 +118,14 @@ Calendar* CalendarTimeZoneTest::getCalendar()
void CalendarTimeZoneTest::releaseCalendar(Calendar* adopt)
{
- if(fgCalendar == 0) // If the cache is empty we must add it back.
+ if (fgCalendar == nullptr) // If the cache is empty we must add it back.
{
Mutex lock;
- if(fgCalendar == 0)
+ if (fgCalendar == nullptr)
{
fgCalendar = adopt;
- adopt = 0;
+ adopt = nullptr;
}
}
else
@@ -148,7 +148,7 @@ CalendarTimeZoneTest::dateToString(UDate d, UnicodeString& str)
{
str.remove();
DateFormat* format = getDateFormat();
- if (format == 0)
+ if (format == nullptr)
{
str += "DATE_FORMAT_FAILURE";
return str;
@@ -164,7 +164,7 @@ CalendarTimeZoneTest::dateToString(UDate d, UnicodeString& str,
{
str.remove();
DateFormat* format = getDateFormat();
- if (format == 0)
+ if (format == nullptr)
{
str += "DATE_FORMAT_FAILURE";
return str;
@@ -183,7 +183,7 @@ UDate
CalendarTimeZoneTest::date(int32_t y, int32_t m, int32_t d, int32_t hr, int32_t min, int32_t sec)
{
Calendar* cal = getCalendar();
- if (cal == 0) return 0.0;
+ if (cal == nullptr) return 0.0;
cal->clear();
cal->set(1900 + y, m, d, hr, min, sec); // Add 1900 to follow java.util.Date protocol
UErrorCode status = U_ZERO_ERROR;
@@ -221,7 +221,7 @@ void
CalendarTimeZoneTest::dateToFields(UDate date, int32_t& y, int32_t& m, int32_t& d, int32_t& hr, int32_t& min, int32_t& sec)
{
Calendar* cal = getCalendar();
- if (cal == 0) return;
+ if (cal == nullptr) return;
UErrorCode status = U_ZERO_ERROR;
cal->setTime(date, status);
y = cal->get(UCAL_YEAR, status) - 1900;
@@ -236,9 +236,9 @@ CalendarTimeZoneTest::dateToFields(UDate date, int32_t& y, int32_t& m, int32_t&
void CalendarTimeZoneTest::cleanup()
{
delete fgDateFormat;
- fgDateFormat = 0;
+ fgDateFormat = nullptr;
delete fgCalendar;
- fgCalendar = 0;
+ fgCalendar = nullptr;
}
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/canittst.cpp b/icu4c/source/test/intltest/canittst.cpp
index 41fafb2aa..ebb457d3b 100644
--- a/icu4c/source/test/intltest/canittst.cpp
+++ b/icu4c/source/test/intltest/canittst.cpp
@@ -60,12 +60,8 @@ nameTrans(nullptr), hexTrans(nullptr)
CanonicalIteratorTest::~CanonicalIteratorTest()
{
#if !UCONFIG_NO_TRANSLITERATION
- if(nameTrans != nullptr) {
delete(nameTrans);
- }
- if(hexTrans != nullptr) {
delete(hexTrans);
- }
#endif
}
diff --git a/icu4c/source/test/intltest/citrtest.cpp b/icu4c/source/test/intltest/citrtest.cpp
index 5ca90dd33..332d02724 100644
--- a/icu4c/source/test/intltest/citrtest.cpp
+++ b/icu4c/source/test/intltest/citrtest.cpp
@@ -101,6 +101,11 @@ public:
return pos;
}
+
+#ifdef move32
+ // One of the system headers right now is sometimes defining a conflicting macro we don't use
+#undef move32
+#endif
virtual int32_t move32(int32_t delta, CharacterIterator::EOrigin origin) override {
switch(origin) {
case kStart:
diff --git a/icu4c/source/test/intltest/compactdecimalformattest.cpp b/icu4c/source/test/intltest/compactdecimalformattest.cpp
index 3a4b1343a..de9bb9ca4 100644
--- a/icu4c/source/test/intltest/compactdecimalformattest.cpp
+++ b/icu4c/source/test/intltest/compactdecimalformattest.cpp
@@ -231,7 +231,8 @@ public:
CompactDecimalFormatTest() {
}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void TestEnglishShort();
void TestSerbianShort();
diff --git a/icu4c/source/test/intltest/convtest.h b/icu4c/source/test/intltest/convtest.h
index 3e01f3f24..19ad636b7 100644
--- a/icu4c/source/test/intltest/convtest.h
+++ b/icu4c/source/test/intltest/convtest.h
@@ -68,8 +68,8 @@ class ConversionTest : public IntlTest {
public:
ConversionTest();
virtual ~ConversionTest();
-
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = nullptr) override;
void TestToUnicode();
void TestFromUnicode();
diff --git a/icu4c/source/test/intltest/cpdtrtst.cpp b/icu4c/source/test/intltest/cpdtrtst.cpp
index 700cff68a..69999afaf 100644
--- a/icu4c/source/test/intltest/cpdtrtst.cpp
+++ b/icu4c/source/test/intltest/cpdtrtst.cpp
@@ -81,7 +81,7 @@ void CompoundTransliteratorTest::TestConstruction(){
delete cpdtrans;
CompoundTransliterator *cpdtrans2=new CompoundTransliterator(transarray[i], i+1);
- if(cpdtrans2 == 0){
+ if (cpdtrans2 == nullptr) {
errln("Construction using CompoundTransliterator(Transliterator* const transliterators[], "
"int32_t count, UnicodeFilter* adoptedFilter = 0) failed");
continue;
@@ -131,12 +131,12 @@ void CompoundTransliteratorTest::TestCloneEqual(){
return;
}
CompoundTransliterator *copyct1=new CompoundTransliterator(*ct1);
- if(copyct1 == 0){
+ if (copyct1 == nullptr) {
errln("copy construction failed");
return;
}
CompoundTransliterator *copyct2=new CompoundTransliterator(*ct2);
- if(copyct2 == 0){
+ if (copyct2 == nullptr) {
errln("copy construction failed");
return;
}
@@ -299,7 +299,7 @@ void CompoundTransliteratorTest::TestGetSetAdoptTransliterator(){
UnicodeString ID3("Latin-Katakana");
Transliterator **transarray2=static_cast<Transliterator **>(uprv_malloc(sizeof(Transliterator*)*1));
transarray2[0] = Transliterator::createInstance(ID3,UTRANS_FORWARD,parseError,status);
- if (transarray2[0] != 0) {
+ if (transarray2[0] != nullptr) {
ct1->adoptTransliterators(transarray2, 1);
}
if(ct1->getCount() != 1 || ct1->getID() != ID3){
diff --git a/icu4c/source/test/intltest/csdetest.cpp b/icu4c/source/test/intltest/csdetest.cpp
index 229c5cb02..690a90f5b 100644
--- a/icu4c/source/test/intltest/csdetest.cpp
+++ b/icu4c/source/test/intltest/csdetest.cpp
@@ -279,7 +279,7 @@ void CharsetDetectionTest::ConstructionTest()
const char* defDisabled[] = {
"IBM420_rtl", "IBM420_ltr",
"IBM424_rtl", "IBM424_ltr",
- 0
+ nullptr
};
LocalUEnumerationPointer eActive(ucsdet_getDetectableCharsets(csd.getAlias(), status));
@@ -304,7 +304,7 @@ void CharsetDetectionTest::ConstructionTest()
// some charsets are disabled by default
found = false;
- for (int32_t i = 0; defDisabled[i] != 0; i++) {
+ for (int32_t i = 0; defDisabled[i] != nullptr; i++) {
if (strcmp(activeName, defDisabled[i]) == 0) {
found = true;
break;
diff --git a/icu4c/source/test/intltest/dadrcal.cpp b/icu4c/source/test/intltest/dadrcal.cpp
index 75f1e4353..725c83275 100644
--- a/icu4c/source/test/intltest/dadrcal.cpp
+++ b/icu4c/source/test/intltest/dadrcal.cpp
@@ -116,7 +116,7 @@ void DataDrivenCalendarTest::testOps(TestData *testData,
+ UnicodeString(" - "));
continue;
}
- testSetting.extract(0, testSetting.length(), toCalLoc, (const char*)0);
+ testSetting.extract(0, testSetting.length(), toCalLoc, (const char*)nullptr);
fromCalendar = Calendar::createInstance(toCalLoc, status);
if (U_FAILURE(status)) {
errln(caseString+": Unable to instantiate calendar for "
@@ -373,7 +373,7 @@ void DataDrivenCalendarTest::testConvert(TestData *testData,
// build to calendar
UnicodeString testSetting = settings->getString("ToCalendar", status);
if (U_SUCCESS(status)) {
- testSetting.extract(0, testSetting.length(), toCalLoc, (const char*)0);
+ testSetting.extract(0, testSetting.length(), toCalLoc, (const char*)nullptr);
toCalendar.adoptInstead(Calendar::createInstance(toCalLoc, status));
if (U_FAILURE(status)) {
dataerrln(UnicodeString("Unable to instantiate ToCalendar for ")+testSetting);
@@ -396,7 +396,7 @@ void DataDrivenCalendarTest::testConvert(TestData *testData,
LocalPointer<Calendar> fromCalendar;
UnicodeString locale = currentCase->getString("locale", status);
if (U_SUCCESS(status)) {
- locale.extract(0, locale.length(), fromCalLoc, (const char*)0); // default codepage. Invariant codepage doesn't have '@'!
+ locale.extract(0, locale.length(), fromCalLoc, (const char*)nullptr); // default codepage. Invariant codepage doesn't have '@'!
fromCalendar.adoptInstead(Calendar::createInstance(fromCalLoc, status));
if (U_FAILURE(status)) {
errln("Unable to instantiate fromCalendar for "+locale);
diff --git a/icu4c/source/test/intltest/dadrfmt.cpp b/icu4c/source/test/intltest/dadrfmt.cpp
index e782169dd..0eeef2712 100644
--- a/icu4c/source/test/intltest/dadrfmt.cpp
+++ b/icu4c/source/test/intltest/dadrfmt.cpp
@@ -159,7 +159,7 @@ void DataDrivenFormatTest::testConvertDate(TestData *testData,
DateFormat *format = nullptr;
// Process: 'locale'
- locale.extract(0, locale.length(), calLoc, (const char*)0); // default codepage. Invariant codepage doesn't have '@'!
+ locale.extract(0, locale.length(), calLoc, (const char*)nullptr); // default codepage. Invariant codepage doesn't have '@'!
Locale loc(calLoc);
if(spec.startsWith(kPATTERN)) {
pattern = UnicodeString(spec,kPATTERN.length());
diff --git a/icu4c/source/test/intltest/dcfmapts.cpp b/icu4c/source/test/intltest/dcfmapts.cpp
index 488ef79f2..18d04c5ce 100644
--- a/icu4c/source/test/intltest/dcfmapts.cpp
+++ b/icu4c/source/test/intltest/dcfmapts.cpp
@@ -1191,10 +1191,10 @@ void IntlTestDecimalFormatAPI::testInvalidObject() {
assertTrue(WHERE, dfAssignmentBogus != dfBogus);
// Verify that cloning our original invalid object gives nullptr.
- auto dfBogusClone = dfBogus.clone();
+ auto* dfBogusClone = dfBogus.clone();
assertTrue(WHERE, dfBogusClone == nullptr);
// Verify that cloning our assigned invalid object gives nullptr.
- auto dfBogusClone2 = dfAssignmentBogus.clone();
+ auto* dfBogusClone2 = dfAssignmentBogus.clone();
assertTrue(WHERE, dfBogusClone2 == nullptr);
// Verify copy constructing from an invalid object is also invalid.
@@ -1206,8 +1206,8 @@ void IntlTestDecimalFormatAPI::testInvalidObject() {
assertTrue(WHERE, dfCopyAssign != dfGood);
assertTrue(WHERE, dfCopyAssign != dfGood2);
assertTrue(WHERE, dfCopyAssign != dfBogus);
- auto dfBogusCopyClone1 = dfCopy.clone();
- auto dfBogusCopyClone2 = dfCopyAssign.clone();
+ auto* dfBogusCopyClone1 = dfCopy.clone();
+ auto* dfBogusCopyClone2 = dfCopyAssign.clone();
assertTrue(WHERE, dfBogusCopyClone1 == nullptr);
assertTrue(WHERE, dfBogusCopyClone2 == nullptr);
}
@@ -1252,7 +1252,7 @@ void IntlTestDecimalFormatAPI::testInvalidObject() {
df->setLenient(true);
- auto dfClone = df->clone();
+ auto* dfClone = df->clone();
assertTrue(WHERE, dfClone == nullptr);
UnicodeString dest;
diff --git a/icu4c/source/test/intltest/dcfmtest.cpp b/icu4c/source/test/intltest/dcfmtest.cpp
index f6d6dc1a6..1b2396312 100644
--- a/icu4c/source/test/intltest/dcfmtest.cpp
+++ b/icu4c/source/test/intltest/dcfmtest.cpp
@@ -393,8 +393,6 @@ void DecimalFormatTest::execParseTest(int32_t lineNum,
errln("file dcfmtest.txt, line %d: expected \"%s\", got \"%s\"",
lineNum, expectedResults.data(), decimalResult.data());
}
-
- return;
}
diff --git a/icu4c/source/test/intltest/decoll.cpp b/icu4c/source/test/intltest/decoll.cpp
index 93b969e98..02efed091 100644
--- a/icu4c/source/test/intltest/decoll.cpp
+++ b/icu4c/source/test/intltest/decoll.cpp
@@ -35,7 +35,7 @@
#include "sfwdchit.h"
CollationGermanTest::CollationGermanTest()
-: myCollation(0)
+: myCollation(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance(Locale::getGermany(), status);
diff --git a/icu4c/source/test/intltest/displayoptions_test.cpp b/icu4c/source/test/intltest/displayoptions_test.cpp
index 2f24dfcc1..ec94cb1dc 100644
--- a/icu4c/source/test/intltest/displayoptions_test.cpp
+++ b/icu4c/source/test/intltest/displayoptions_test.cpp
@@ -17,7 +17,7 @@ class DisplayOptionsTest : public IntlTest {
void testDisplayOptionsGetIdentifier();
void testDisplayOptionsFromIdentifier();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = nullptr) override;
};
void DisplayOptionsTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char *) {
diff --git a/icu4c/source/test/intltest/dtfmtrtts.cpp b/icu4c/source/test/intltest/dtfmtrtts.cpp
index 0da9c04d1..e5d0ff7d0 100644
--- a/icu4c/source/test/intltest/dtfmtrtts.cpp
+++ b/icu4c/source/test/intltest/dtfmtrtts.cpp
@@ -42,7 +42,7 @@ int32_t DateFormatRoundTripTest::SPARSENESS = 0;
int32_t DateFormatRoundTripTest::TRIALS = 4;
int32_t DateFormatRoundTripTest::DEPTH = 5;
-DateFormatRoundTripTest::DateFormatRoundTripTest() : dateFormat(0) {
+DateFormatRoundTripTest::DateFormatRoundTripTest() : dateFormat(nullptr) {
}
DateFormatRoundTripTest::~DateFormatRoundTripTest() {
@@ -517,12 +517,12 @@ void DateFormatRoundTripTest::test(DateFormat *fmt, const Locale &origLocale, UB
const UnicodeString& DateFormatRoundTripTest::fullFormat(UDate d) {
UErrorCode ec = U_ZERO_ERROR;
- if (dateFormat == 0) {
+ if (dateFormat == nullptr) {
dateFormat = new SimpleDateFormat((UnicodeString)"EEE MMM dd HH:mm:ss.SSS zzz yyyy G", ec);
- if (U_FAILURE(ec) || dateFormat == 0) {
+ if (U_FAILURE(ec) || dateFormat == nullptr) {
fgStr = "[FAIL: SimpleDateFormat constructor]";
delete dateFormat;
- dateFormat = 0;
+ dateFormat = nullptr;
return fgStr;
}
}
diff --git a/icu4c/source/test/intltest/dtfmttst.cpp b/icu4c/source/test/intltest/dtfmttst.cpp
index 768d29248..2a77e63c4 100644
--- a/icu4c/source/test/intltest/dtfmttst.cpp
+++ b/icu4c/source/test/intltest/dtfmttst.cpp
@@ -135,6 +135,8 @@ void DateFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &nam
TESTCASE_AUTO(TestNumericFieldStrictParse);
TESTCASE_AUTO(TestHourCycle);
TESTCASE_AUTO(TestHCInLocale);
+ TESTCASE_AUTO(TestBogusLocale);
+ TESTCASE_AUTO(TestLongLocale);
TESTCASE_AUTO_END;
}
@@ -272,9 +274,7 @@ void DateFormatTest::TestWallyWedel()
StringEnumeration* ids = TimeZone::createEnumeration(status);
if (U_FAILURE(status)) {
dataerrln("Unable to create TimeZone enumeration.");
- if (sdf != nullptr) {
- delete sdf;
- }
+ delete sdf;
return;
}
ids_length = ids->count(status);
@@ -324,7 +324,7 @@ void DateFormatTest::TestWallyWedel()
FieldPosition pos(FieldPosition::DONT_CARE);
sdf->format(today,fmtOffset, pos);
// UnicodeString fmtOffset = tzS.toString();
- UnicodeString *fmtDstOffset = 0;
+ UnicodeString* fmtDstOffset = nullptr;
if (fmtOffset.startsWith("GMT") && fmtOffset.length() != 3)
{
//fmtDstOffset = fmtOffset->substring(3);
@@ -334,12 +334,12 @@ void DateFormatTest::TestWallyWedel()
/*
* Show our result.
*/
- UBool ok = fmtDstOffset == 0 || *fmtDstOffset == dstOffset;
+ UBool ok = fmtDstOffset == nullptr || *fmtDstOffset == dstOffset;
if (ok)
{
logln(UnicodeString() + i + " " + *id + " " + dstOffset +
" " + fmtOffset +
- (fmtDstOffset != 0 ? " ok" : " ?"));
+ (fmtDstOffset != nullptr ? " ok" : " ?"));
}
else
{
@@ -921,7 +921,7 @@ DateFormatTest::TestDayOfYearPattern195()
dataerrln("Error calling DateFormat::createDateInstance()");
return;
}
- tryPattern(*sdf, today, 0, expected);
+ tryPattern(*sdf, today, nullptr, expected);
tryPattern(*sdf, today, "G yyyy DDD", expected);
delete sdf;
if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status);
@@ -933,7 +933,7 @@ void
DateFormatTest::tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected)
{
UErrorCode status = U_ZERO_ERROR;
- if (pattern != 0) sdf.applyPattern(pattern);
+ if (pattern != nullptr) sdf.applyPattern(pattern);
UnicodeString thePat;
logln((UnicodeString)"pattern: " + sdf.toPattern(thePat));
UnicodeString formatResult; (*dynamic_cast<DateFormat*>(&sdf)).format(d, formatResult);
@@ -1077,17 +1077,17 @@ static const char* const inputStrings[] = {
#else
// lenient inputStrings
static const char* const inputStrings[] = {
- "bogus string", 0, 0, 0, 0, 0, 0, 0, 0, 0,
- "April 1, 1997", "April 1, 1997", "April 1 1997", "4/1/97", 0, 0, 0, "April 1", 0, 0,
- "Jan 1, 1970", "January 1, 1970", "January 1 1970", "1/1/70", 0, 0, 0, "January 1", 0, 0,
- "Jan 1 2037", "January 1, 2037", "January 1 2037", "1/1/37", 0, 0, 0, "January 1", 0, 0,
- "1/1/70", "January 1, 0070", "January 1 0070", "1/1/70", "1 January, 0070", "1 January 0070", "1 January", "January 1", "0001", 0,
- "5 May 1997", 0, 0, 0, "5 May, 1997", "5 May 1997", "5 May", 0, "0005", 0,
- "16 May", 0, 0, 0, 0, 0, "16 May", 0, "0016", 0,
- "April 30", 0, 0, 0, 0, 0, 0, "April 30", 0, 0,
- "1998", 0, 0, 0, 0, 0, 0, 0, "1998", 0,
- "1", 0, 0, 0, 0, 0, 0, 0, "0001", 0,
- "3:00 pm Jan 1, 1997", 0, 0, 0, 0, 0, 0, 0, "0003", "3:00 PM January 1, 1997",
+ "bogus string", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ "April 1, 1997", "April 1, 1997", "April 1 1997", "4/1/97", nullptr, nullptr, nullptr, "April 1", nullptr, nullptr,
+ "Jan 1, 1970", "January 1, 1970", "January 1 1970", "1/1/70", nullptr, nullptr, nullptr, "January 1", nullptr, nullptr,
+ "Jan 1 2037", "January 1, 2037", "January 1 2037", "1/1/37", nullptr, nullptr, nullptr, "January 1", nullptr, nullptr,
+ "1/1/70", "January 1, 0070", "January 1 0070", "1/1/70", "1 January, 0070", "1 January 0070", "1 January", "January 1", "0001", nullptr,
+ "5 May 1997", nullptr, nullptr, nullptr, "5 May, 1997", "5 May 1997", "5 May", nullptr, "0005", nullptr,
+ "16 May", nullptr, nullptr, nullptr, nullptr, nullptr, "16 May", nullptr, "0016", nullptr,
+ "April 30", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, "April 30", nullptr, nullptr,
+ "1998", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, "1998", nullptr,
+ "1", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, "0001", nullptr,
+ "3:00 pm Jan 1, 1997", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, "0003", "3:00 PM January 1, 1997",
};
#endif
@@ -1152,13 +1152,13 @@ DateFormatTest::TestBadInput135a()
UnicodeString result;
(dynamic_cast<DateFormat*>(dateParse))->format(date, result);
logln((UnicodeString)"Parsed \"" + s + "\" using \"" + dateParse->toPattern(thePat) + "\" to: " + result);
- if (expected == 0)
+ if (expected == nullptr)
errln((UnicodeString)"FAIL: Expected parse failure, got " + result);
else if (!(result == expected))
errln(UnicodeString("FAIL: Parse \"") + s + UnicodeString("\", expected ") + expected + UnicodeString(", got ") + result);
}
}
- else if (expected != 0) {
+ else if (expected != nullptr) {
errln(UnicodeString("FAIL: Expected ") + expected + " from \"" +
s + "\" with \"" + dateParse->toPattern(thePat) + "\"");
}
@@ -1404,8 +1404,8 @@ DateFormatTest::TestFormattingLocaleTimeSeparator()
* Test DateFormat(Calendar) API
*/
void DateFormatTest::TestDateFormatCalendar() {
- DateFormat *date=0, *time=0, *full=0;
- Calendar *cal=0;
+ DateFormat *date = nullptr, *time = nullptr, *full = nullptr;
+ Calendar* cal = nullptr;
UnicodeString str;
ParsePosition pos;
UDate when;
@@ -3819,8 +3819,6 @@ void DateFormatTest::Test6726()
delete fmtl;
delete fmtm;
delete fmts;
-
- return;
}
/**
@@ -3994,9 +3992,7 @@ void DateFormatTest::TestISOEra() {
SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("GGG yyyy-MM-dd'T'HH:mm:ss'Z"), status);
failure(status, "new SimpleDateFormat", true);
if (status == U_MISSING_RESOURCE_ERROR) {
- if (fmt1 != nullptr) {
- delete fmt1;
- }
+ delete fmt1;
return;
}
for(int i=0; i < numData; i+=2) {
@@ -4091,7 +4087,7 @@ void DateFormatTest::TestParsePosition() {
{"'time zone:' VVVV 'date:' yyyy-MM-dd", "xxxx", "time zone: Los Angeles Time date: 2010-02-25", "xxxx"},
{"yG", "", "2012AD", ""},
{"yG", "", "2012", "x"},
- {0, 0, 0, 0},
+ {nullptr, nullptr, nullptr, nullptr},
};
for (int32_t i = 0; TestData[i][0]; i++) {
@@ -4312,14 +4308,10 @@ void DateFormatTest::TestContext()
", expected " + itemPtr->expectedFormat + ", got " + result);
}
}
- if (sdmft) {
- delete sdmft;
- }
+ delete sdmft;
}
}
- if (cal) {
- delete cal;
- }
+ delete cal;
}
// test item for a particular locale + calendar and date format
@@ -5876,6 +5868,25 @@ void DateFormatTest::TestHourCycle() {
}
}
+void DateFormatTest::TestBogusLocale() {
+ IcuTestErrorCode status(*this, "TestBogusLocale");
+ LocalPointer<DateFormat> df;
+
+ df.adoptInstead(DateFormat::createDateTimeInstance(DateFormat::kNone, DateFormat::kMedium,
+ Locale("notalanguage")));
+}
+
+void DateFormatTest::TestLongLocale() {
+ IcuTestErrorCode status(*this, "TestLongLocale");
+ LocalPointer<DateFormat> df;
+
+ // This should not cause a crash
+ std::string s(1023, ' ');
+ s[1] = '-';
+ df.adoptInstead(DateFormat::createDateTimeInstance(DateFormat::kDateTime, DateFormat::kMedium,
+ Locale(s.c_str())));
+}
+
void DateFormatTest::TestHCInLocale() {
IcuTestErrorCode status(*this, "TestHCInLocale");
LocalPointer<Calendar> midnight(Calendar::createInstance(status));
diff --git a/icu4c/source/test/intltest/dtfmttst.h b/icu4c/source/test/intltest/dtfmttst.h
index cafa7cdae..d967f4004 100644
--- a/icu4c/source/test/intltest/dtfmttst.h
+++ b/icu4c/source/test/intltest/dtfmttst.h
@@ -270,6 +270,8 @@ public:
void TestNumericFieldStrictParse();
void TestHourCycle();
void TestHCInLocale();
+ void TestBogusLocale();
+ void TestLongLocale();
private:
UBool showParse(DateFormat &format, const UnicodeString &formattedString);
diff --git a/icu4c/source/test/intltest/dtifmtts.cpp b/icu4c/source/test/intltest/dtifmtts.cpp
index e73ff220d..6bf5bcc25 100644
--- a/icu4c/source/test/intltest/dtifmtts.cpp
+++ b/icu4c/source/test/intltest/dtifmtts.cpp
@@ -2392,6 +2392,22 @@ void DateIntervalFormatTest::testTicket21939() {
UnicodeString pattern;
assertEquals("Wrong pattern", u"M/d/r, h:mm\u202Fa", sdf->toPattern(pattern));
}
+
+ // additional tests for the related ICU-22202
+ dif.adoptInstead(DateIntervalFormat::createInstance(u"Lh", Locale::getEnglish(), err));
+ if (assertSuccess("Error creating DateIntervalFormat", err)) {
+ const DateFormat* df = dif->getDateFormat();
+ const SimpleDateFormat* sdf = dynamic_cast<const SimpleDateFormat*>(df);
+ UnicodeString pattern;
+ assertEquals("Wrong pattern", u"L, h\u202Fa", sdf->toPattern(pattern));
+ }
+ dif.adoptInstead(DateIntervalFormat::createInstance(u"UH", Locale::forLanguageTag("en-u-ca-chinese", err), err));
+ if (assertSuccess("Error creating DateIntervalFormat", err)) {
+ const DateFormat* df = dif->getDateFormat();
+ const SimpleDateFormat* sdf = dynamic_cast<const SimpleDateFormat*>(df);
+ UnicodeString pattern;
+ assertEquals("Wrong pattern", u"r(U), HH", sdf->toPattern(pattern));
+ }
}
void DateIntervalFormatTest::testTicket20710_FieldIdentity() {
diff --git a/icu4c/source/test/intltest/dtptngts.cpp b/icu4c/source/test/intltest/dtptngts.cpp
index f780271bd..1418b7c8d 100644
--- a/icu4c/source/test/intltest/dtptngts.cpp
+++ b/icu4c/source/test/intltest/dtptngts.cpp
@@ -716,7 +716,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
resultDate.remove();
resultDate = sdf.format(testDate, resultDate);
if ( resultDate != patternResults[localeIndex][resultIndex] ) {
- auto* calendar = sdf.getCalendar();
+ const auto* calendar = sdf.getCalendar();
errln(UnicodeString("\nERROR: Test various skeletons[") + (dataIndex-1) + UnicodeString("], localeIndex ") + localeIndex +
u". Got: \"" + resultDate +
u"\" with calendar " + calendar->getType() +
@@ -1434,7 +1434,7 @@ void IntlTestDateTimePatternGeneratorAPI::test20640_HourCyclArsEnNH() {
{"ja_TRADITIONAL", u"H時", u"H:mm", UDAT_HOUR_CYCLE_23},
};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
status.setScope(cas.localeName);
Locale loc(cas.localeName);
diff --git a/icu4c/source/test/intltest/encoll.cpp b/icu4c/source/test/intltest/encoll.cpp
index 97845a32b..a5af09a93 100644
--- a/icu4c/source/test/intltest/encoll.cpp
+++ b/icu4c/source/test/intltest/encoll.cpp
@@ -18,7 +18,7 @@
#include "cmemory.h"
CollationEnglishTest::CollationEnglishTest()
-: myCollation(0)
+: myCollation(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance(Locale::getEnglish(), status);
diff --git a/icu4c/source/test/intltest/escoll.cpp b/icu4c/source/test/intltest/escoll.cpp
index 45afc6a08..827d44f64 100644
--- a/icu4c/source/test/intltest/escoll.cpp
+++ b/icu4c/source/test/intltest/escoll.cpp
@@ -34,7 +34,7 @@
#include "sfwdchit.h"
CollationSpanishTest::CollationSpanishTest()
-: myCollation(0)
+: myCollation(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance(Locale("es", "ES", ""),status);
diff --git a/icu4c/source/test/intltest/ficoll.cpp b/icu4c/source/test/intltest/ficoll.cpp
index 1cd3bcf2f..98a44519b 100644
--- a/icu4c/source/test/intltest/ficoll.cpp
+++ b/icu4c/source/test/intltest/ficoll.cpp
@@ -32,7 +32,7 @@
#include "sfwdchit.h"
CollationFinnishTest::CollationFinnishTest()
-: myCollation(0)
+: myCollation(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance(Locale("fi", "FI", "", "collation=standard"),status);
diff --git a/icu4c/source/test/intltest/fldset.cpp b/icu4c/source/test/intltest/fldset.cpp
index 8352da2fd..4162d9bb4 100644
--- a/icu4c/source/test/intltest/fldset.cpp
+++ b/icu4c/source/test/intltest/fldset.cpp
@@ -47,7 +47,7 @@ UnicodeString FieldsSet::diffFrom(const FieldsSet& other, UErrorCode& status) co
UnicodeString str;
if(!isSameType(other)) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return UnicodeString("U_ILLEGAL_ARGUMENT_ERROR: FieldsSet of a different type!");
+ return {"U_ILLEGAL_ARGUMENT_ERROR: FieldsSet of a different type!"};
}
for (int i=0; i<fieldCount(); i++) {
if (isSet((UCalendarDateFields)i)) {
diff --git a/icu4c/source/test/intltest/formatted_string_builder_test.cpp b/icu4c/source/test/intltest/formatted_string_builder_test.cpp
index c5d95a04e..88088b749 100644
--- a/icu4c/source/test/intltest/formatted_string_builder_test.cpp
+++ b/icu4c/source/test/intltest/formatted_string_builder_test.cpp
@@ -24,7 +24,7 @@ class FormattedStringBuilderTest : public IntlTest {
void testCodePoints();
void testInsertOverflow();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = nullptr) override;
private:
void assertEqualsImpl(const UnicodeString &a, const FormattedStringBuilder &b);
diff --git a/icu4c/source/test/intltest/formattedvaluetest.cpp b/icu4c/source/test/intltest/formattedvaluetest.cpp
index d784f353e..d2befe271 100644
--- a/icu4c/source/test/intltest/formattedvaluetest.cpp
+++ b/icu4c/source/test/intltest/formattedvaluetest.cpp
@@ -16,7 +16,8 @@
class FormattedValueTest : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void testBasic();
void testSetters();
diff --git a/icu4c/source/test/intltest/frcoll.cpp b/icu4c/source/test/intltest/frcoll.cpp
index 76655c24d..def3f1c05 100644
--- a/icu4c/source/test/intltest/frcoll.cpp
+++ b/icu4c/source/test/intltest/frcoll.cpp
@@ -27,7 +27,7 @@
#include "sfwdchit.h"
CollationFrenchTest::CollationFrenchTest()
-: myCollation(0)
+: myCollation(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance(Locale::getCanadaFrench(), status);
diff --git a/icu4c/source/test/intltest/g7coll.cpp b/icu4c/source/test/intltest/g7coll.cpp
index 8ef4fd718..387c6c767 100644
--- a/icu4c/source/test/intltest/g7coll.cpp
+++ b/icu4c/source/test/intltest/g7coll.cpp
@@ -115,7 +115,7 @@ void G7CollationTest::TestG7Locales(/* char* par */)
if (rules.isEmpty() &&
(locale == Locale::getCanadaFrench() || locale == Locale::getJapanese())) {
dataerrln("%s Collator missing rule string", locale.getName());
- if (logKnownIssue("10671", "TestG7Locales does not test ignore-punctuation")) {
+ if (logKnownIssue("ICU-10671", "TestG7Locales does not test ignore-punctuation")) {
continue;
}
} else {
diff --git a/icu4c/source/test/intltest/genderinfotest.cpp b/icu4c/source/test/intltest/genderinfotest.cpp
index 8178fdefa..cbcc0728e 100644
--- a/icu4c/source/test/intltest/genderinfotest.cpp
+++ b/icu4c/source/test/intltest/genderinfotest.cpp
@@ -36,7 +36,8 @@ public:
GenderInfoTest() {
}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void TestGetListGender();
void TestFallback();
diff --git a/icu4c/source/test/intltest/idnaconf.cpp b/icu4c/source/test/intltest/idnaconf.cpp
index 40184482f..8fa1306c9 100644
--- a/icu4c/source/test/intltest/idnaconf.cpp
+++ b/icu4c/source/test/intltest/idnaconf.cpp
@@ -201,7 +201,6 @@ void IdnaConfTest::Call(){
namebase.setToBogus();
namezone.setToBogus();
id.remove();
- return;
}
void IdnaConfTest::Test(){
diff --git a/icu4c/source/test/intltest/incaltst.cpp b/icu4c/source/test/intltest/incaltst.cpp
index a390439a5..5769b9560 100644
--- a/icu4c/source/test/intltest/incaltst.cpp
+++ b/icu4c/source/test/intltest/incaltst.cpp
@@ -105,6 +105,8 @@ void IntlCalendarTest::runIndexedTest( int32_t index, UBool exec, const char* &n
TESTCASE_AUTO(TestConsistencyIslamicUmalqura);
TESTCASE_AUTO(TestConsistencyPersian);
TESTCASE_AUTO(TestConsistencyJapanese);
+ TESTCASE_AUTO(TestIslamicUmalquraCalendarSlow);
+ TESTCASE_AUTO(TestJapaneseLargeEra);
TESTCASE_AUTO_END;
}
@@ -1004,7 +1006,6 @@ void IntlCalendarTest::checkConsistency(const char* locale) {
const char* type = base->getType();
// Do not ignore in quick mode
bool ignoreOrdinaryMonth12Bug = (!quick) && (strcmp("chinese", type) == 0 || strcmp("dangi", type) == 0);
- bool ignoreICU22258 = (!quick) && (strcmp("dangi", type) == 0);
UDate test = Calendar::getNow();
base->setTimeZone(*(TimeZone::getGMT()));
int32_t j;
@@ -1100,12 +1101,6 @@ void IntlCalendarTest::checkConsistency(const char* locale) {
int32_t year = base->get(UCAL_YEAR, status);
int32_t month = base->get(UCAL_MONTH, status) + 1;
int32_t date = base->get(UCAL_DATE, status);
- if (ignoreICU22258 && (year == 4 || year == 34) && month == 12 && date == 30) {
- logKnownIssue("ICU-22258",
- "Dangi Problem in 1988/2/17=>4/12/30 and 1958/2/18=>34/12/30");
- status.reset();
- continue;
- }
errln((UnicodeString)"Round trip conversion produces different "
"time from " + test + " to " + result + " delta: " +
@@ -1124,6 +1119,29 @@ void IntlCalendarTest::checkConsistency(const char* locale) {
}
}
+void IntlCalendarTest::TestIslamicUmalquraCalendarSlow() {
+ IcuTestErrorCode status(*this, "TestIslamicUmalquraCalendarSlow");
+ Locale l("th@calendar=islamic-umalqura");
+ std::unique_ptr<Calendar> cal(
+ Calendar::createInstance(l, status));
+ cal->add(UCAL_YEAR, 1229080905, status);
+ cal->roll(UCAL_WEEK_OF_MONTH, 1499050699, status);
+ cal->fieldDifference(0.000000, UCAL_YEAR_WOY, status);
+ // Ignore the error
+ status.reset();
+}
+
+void IntlCalendarTest::TestJapaneseLargeEra() {
+ IcuTestErrorCode status(*this, "TestJapaneseLargeEra");
+ Locale l("ja@calendar=japanese");
+ std::unique_ptr<Calendar> cal(
+ Calendar::createInstance(l, status));
+ cal->clear();
+ cal->set(UCAL_ERA, 2139062143);
+ cal->add(UCAL_YEAR, 1229539657, status);
+ status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
+}
+
void IntlCalendarTest::simpleTest(const Locale& loc, const UnicodeString& expect, UDate expectDate, UErrorCode& status)
{
UnicodeString tmp;
diff --git a/icu4c/source/test/intltest/incaltst.h b/icu4c/source/test/intltest/incaltst.h
index a29f7b316..8f8ca4300 100644
--- a/icu4c/source/test/intltest/incaltst.h
+++ b/icu4c/source/test/intltest/incaltst.h
@@ -60,6 +60,8 @@ public:
void TestConsistencyIslamicUmalqura();
void TestConsistencyPersian();
void TestConsistencyJapanese();
+ void TestIslamicUmalquraCalendarSlow();
+ void TestJapaneseLargeEra();
protected:
// Test a Gregorian-Like calendar
diff --git a/icu4c/source/test/intltest/intltest.cpp b/icu4c/source/test/intltest/intltest.cpp
index 0dcaba2d0..2b0439e13 100644
--- a/icu4c/source/test/intltest/intltest.cpp
+++ b/icu4c/source/test/intltest/intltest.cpp
@@ -68,8 +68,7 @@ static UBool noKnownIssues = false; // if true, don't emit known issues
// [LIU] Just to get things working
UnicodeString
-UCharToUnicodeString(char16_t c)
-{ return UnicodeString(c); }
+UCharToUnicodeString(char16_t c) { return {c}; }
// [rtg] Just to get things working
UnicodeString
@@ -1417,8 +1416,8 @@ main(int argc, char* argv[])
// initial check for the default converter
errorCode = U_ZERO_ERROR;
- cnv = ucnv_open(0, &errorCode);
- if(cnv != 0) {
+ cnv = ucnv_open(nullptr, &errorCode);
+ if (cnv != nullptr) {
// ok
ucnv_close(cnv);
} else {
@@ -1435,7 +1434,7 @@ main(int argc, char* argv[])
// try more data
cnv = ucnv_open(TRY_CNV_2, &errorCode);
- if(cnv != 0) {
+ if (cnv != nullptr) {
// ok
ucnv_close(cnv);
} else {
@@ -1449,7 +1448,7 @@ main(int argc, char* argv[])
}
}
- UResourceBundle *rb = ures_open(0, "en", &errorCode);
+ UResourceBundle *rb = ures_open(nullptr, "en", &errorCode);
ures_close(rb);
if(U_FAILURE(errorCode)) {
fprintf(stdout,
@@ -2077,7 +2076,7 @@ static char ASSERT_BUF[256];
static const char* extractToAssertBuf(const UnicodeString& message) {
UnicodeString buf;
escape(message, buf);
- buf.extract(0, 0x7FFFFFFF, ASSERT_BUF, sizeof(ASSERT_BUF)-1, 0);
+ buf.extract(0, 0x7FFFFFFF, ASSERT_BUF, sizeof(ASSERT_BUF) - 1, nullptr);
ASSERT_BUF[sizeof(ASSERT_BUF)-1] = 0;
return ASSERT_BUF;
}
@@ -2217,7 +2216,7 @@ char16_t *IntlTest::ReadAndConvertFile(const char *fileName, int &ulen, const ch
// Open the file.
//
f = fopen(fileName, "rb");
- if (f == 0) {
+ if (f == nullptr) {
dataerrln("Error opening test data file %s\n", fileName);
status = U_FILE_ACCESS_ERROR;
return nullptr;
@@ -2292,7 +2291,7 @@ cleanUpAndReturn:
if (U_FAILURE(status)) {
errln("ucnv_toUChars: ICU Error \"%s\"\n", u_errorName(status));
delete []retPtr;
- retPtr = 0;
+ retPtr = nullptr;
ulen = 0;
}
return retPtr;
diff --git a/icu4c/source/test/intltest/intltest.vcxproj b/icu4c/source/test/intltest/intltest.vcxproj
index 71ce12540..1e6c6ea03 100644
--- a/icu4c/source/test/intltest/intltest.vcxproj
+++ b/icu4c/source/test/intltest/intltest.vcxproj
@@ -35,7 +35,6 @@
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\..\i18n;..\..\tools\toolutil;..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
<PrecompiledHeaderOutputFile>$(OutDir)/intltest.pch</PrecompiledHeaderOutputFile>
@@ -71,21 +70,15 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="bytestrietest.cpp" />
- <ClCompile Include="collationtest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="colldata.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="collationtest.cpp" />
+ <ClCompile Include="colldata.cpp" />
<ClCompile Include="erarulestest.cpp" />
<ClCompile Include="numfmtspectest.cpp" />
<ClCompile Include="regiontst.cpp" />
<ClCompile Include="ucharstrietest.cpp" />
<ClCompile Include="itrbbi.cpp" />
<ClCompile Include="lstmbetst.cpp" />
- <ClCompile Include="rbbiapts.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="rbbiapts.cpp" />
<ClCompile Include="rbbitst.cpp" />
<ClCompile Include="rbbimonkeytest.cpp" />
<ClCompile Include="itspoof.cpp" />
@@ -113,29 +106,17 @@
<ClCompile Include="ucaconf.cpp" />
<ClCompile Include="uvectest.cpp" />
<ClCompile Include="v32test.cpp" />
- <ClCompile Include="simplethread.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="strtest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="tsmthred.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="simplethread.cpp" />
+ <ClCompile Include="strtest.cpp" />
+ <ClCompile Include="tsmthred.cpp" />
<ClCompile Include="tsputil.cpp" />
- <ClCompile Include="uobjtest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="uobjtest.cpp" />
<ClCompile Include="astrotst.cpp" />
<ClCompile Include="calcasts.cpp" />
- <ClCompile Include="callimts.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="callimts.cpp" />
<ClCompile Include="calregts.cpp" />
<ClCompile Include="caltest.cpp" />
- <ClCompile Include="caltztst.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="caltztst.cpp" />
<ClCompile Include="compactdecimalformattest.cpp" />
<ClCompile Include="dadrcal.cpp" />
<ClCompile Include="dadrfmt.cpp" />
@@ -146,9 +127,7 @@
<ClCompile Include="dtfmrgts.cpp" />
<ClCompile Include="dtfmtrtts.cpp" />
<ClCompile Include="dtfmttst.cpp" />
- <ClCompile Include="dtifmtts.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="dtifmtts.cpp" />
<ClCompile Include="dtptngts.cpp" />
<ClCompile Include="fldset.cpp" />
<ClCompile Include="formatted_string_builder_test.cpp" />
@@ -160,6 +139,12 @@
<ClCompile Include="itrbnfrt.cpp" />
<ClCompile Include="locnmtst.cpp" />
<ClCompile Include="measfmttest.cpp" />
+ <ClCompile Include="messageformat2test_builtin.cpp" />
+ <ClCompile Include="messageformat2test.cpp" />
+ <ClCompile Include="messageformat2test_custom.cpp" />
+ <ClCompile Include="messageformat2test_features.cpp" />
+ <ClCompile Include="messageformat2test_fromjson.cpp" />
+ <ClCompile Include="messageformat2test_icu.cpp" />
<ClCompile Include="miscdtfm.cpp" />
<ClCompile Include="msfmrgts.cpp" />
<ClCompile Include="nmfmapts.cpp" />
@@ -187,9 +172,7 @@
<ClCompile Include="plurults.cpp" />
<ClCompile Include="pptest.cpp" />
<ClCompile Include="quantityformattertest.cpp" />
- <ClCompile Include="reldatefmttest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="reldatefmttest.cpp" />
<ClCompile Include="scientificnumberformattertest.cpp" />
<ClCompile Include="sdtfmtts.cpp" />
<ClCompile Include="selfmts.cpp" />
@@ -204,75 +187,45 @@
<ClCompile Include="tsnmfmt.cpp" />
<ClCompile Include="tufmtts.cpp" />
<ClCompile Include="tzbdtest.cpp" />
- <ClCompile Include="tzfmttst.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="tzfmttst.cpp" />
<ClCompile Include="tzoffloc.cpp" />
<ClCompile Include="tzregts.cpp" />
<ClCompile Include="tzrulets.cpp" />
- <ClCompile Include="tztest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="unifiedcachetest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="windttst.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="winnmtst.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="tztest.cpp" />
+ <ClCompile Include="unifiedcachetest.cpp" />
+ <ClCompile Include="windttst.cpp" />
+ <ClCompile Include="winnmtst.cpp" />
<ClCompile Include="idnaconf.cpp" />
<ClCompile Include="idnaref.cpp" />
<ClCompile Include="nptrans.cpp" />
<ClCompile Include="punyref.cpp" />
- <ClCompile Include="testidn.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="testidn.cpp" />
<ClCompile Include="testidna.cpp" />
<ClCompile Include="uts46test.cpp" />
<ClCompile Include="aliastst.cpp" />
<ClCompile Include="loctest.cpp" />
<ClCompile Include="restest.cpp" />
<ClCompile Include="restsnew.cpp" />
- <ClCompile Include="intltest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="itmajor.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="itutil.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="intltest.cpp" />
+ <ClCompile Include="itmajor.cpp" />
+ <ClCompile Include="itutil.cpp" />
<ClCompile Include="testutil.cpp" />
<ClCompile Include="textfile.cpp" />
<ClCompile Include="tokiter.cpp" />
- <ClCompile Include="winutil.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="winutil.cpp" />
<ClCompile Include="canittst.cpp" />
<ClCompile Include="normconf.cpp" />
- <ClCompile Include="tstnorm.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="tstnrapi.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="ucdtest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="tstnorm.cpp" />
+ <ClCompile Include="tstnrapi.cpp" />
+ <ClCompile Include="ucdtest.cpp" />
<ClCompile Include="usettest.cpp" />
<ClCompile Include="regextst.cpp" />
- <ClCompile Include="icusvtst.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="icusvtst.cpp" />
<ClCompile Include="citrtest.cpp" />
<ClCompile Include="reptest.cpp" />
<ClCompile Include="sfwdchit.cpp" />
<ClCompile Include="strcase.cpp" />
- <ClCompile Include="ustrtest.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="ustrtest.cpp" />
<ClCompile Include="utxttest.cpp" />
<ClCompile Include="cpdtrtst.cpp" />
<ClCompile Include="ittrans.cpp" />
diff --git a/icu4c/source/test/intltest/intltest.vcxproj.filters b/icu4c/source/test/intltest/intltest.vcxproj.filters
index 5d8777c5a..0a261f2a3 100644
--- a/icu4c/source/test/intltest/intltest.vcxproj.filters
+++ b/icu4c/source/test/intltest/intltest.vcxproj.filters
@@ -571,6 +571,12 @@
<ClCompile Include="uchar_type_build_test.cpp">
<Filter>configuration</Filter>
</ClCompile>
+ <ClCompile Include="messageformat2test_builtin.cpp" />
+ <ClCompile Include="messageformat2test.cpp" />
+ <ClCompile Include="messageformat2test_custom.cpp" />
+ <ClCompile Include="messageformat2test_features.cpp" />
+ <ClCompile Include="messageformat2test_fromjson.cpp" />
+ <ClCompile Include="messageformat2test_icu.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="itrbbi.h">
@@ -961,4 +967,4 @@
<Filter>locales &amp; resources</Filter>
</ClInclude>
</ItemGroup>
-</Project>
+</Project> \ No newline at end of file
diff --git a/icu4c/source/test/intltest/itercoll.cpp b/icu4c/source/test/intltest/itercoll.cpp
index 7a349bda7..310614b66 100644
--- a/icu4c/source/test/intltest/itercoll.cpp
+++ b/icu4c/source/test/intltest/itercoll.cpp
@@ -29,7 +29,7 @@ CollationIteratorTest::CollationIteratorTest()
en_us = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getUS(), status));
if(U_FAILURE(status)) {
delete en_us;
- en_us = 0;
+ en_us = nullptr;
errcheckln(status, "Collator creation failed with %s", u_errorName(status));
return;
}
diff --git a/icu4c/source/test/intltest/itformat.cpp b/icu4c/source/test/intltest/itformat.cpp
index 5c67d189b..aacd19aee 100644
--- a/icu4c/source/test/intltest/itformat.cpp
+++ b/icu4c/source/test/intltest/itformat.cpp
@@ -33,6 +33,7 @@
#include "dtfmapts.h" // DateFormatAPI
#include "dtfmttst.h" // DateFormatTest
#include "tmsgfmt.h" // TestMessageFormat
+#include "messageformat2test.h" // TestMessageFormat2
#include "dtfmrgts.h" // DateFormatRegressionTest
#include "msfmrgts.h" // MessageFormatRegressionTest
#include "miscdtfm.h" // DateFormatMiscTests
@@ -287,6 +288,9 @@ void IntlTestFormat::runIndexedTest( int32_t index, UBool exec, const char* &nam
callTest(*test, par);
}
break;
+#if !UCONFIG_NO_MF2
+ TESTCLASS(60,TestMessageFormat2);
+#endif
default: name = ""; break; //needed to end loop
}
if (exec) {
diff --git a/icu4c/source/test/intltest/itrbnf.cpp b/icu4c/source/test/intltest/itrbnf.cpp
index 3a2383bcd..b764730b6 100644
--- a/icu4c/source/test/intltest/itrbnf.cpp
+++ b/icu4c/source/test/intltest/itrbnf.cpp
@@ -79,6 +79,7 @@ void IntlTestRBNF::runIndexedTest(int32_t index, UBool exec, const char* &name,
TESTCASE(27, TestMinMaxIntegerDigitsIgnored);
TESTCASE(28, TestNorwegianSpellout);
TESTCASE(29, TestNumberingSystem);
+ TESTCASE(30, TestDFRounding);
#else
TESTCASE(0, TestRBNFDisabled);
#endif
@@ -1272,6 +1273,73 @@ IntlTestRBNF::TestDurations()
delete formatter;
}
+void IntlTestRBNF::TestDFRounding()
+{
+ // test for ICU-22611
+ UParseError parseError;
+ UErrorCode err = U_ZERO_ERROR;
+
+ // no decimal places
+ LocalPointer<RuleBasedNumberFormat> nf0(new RuleBasedNumberFormat(u"1000/1000: <##K<;", Locale::getUS(), parseError, err));
+ if (U_FAILURE(err)) {
+ errcheckln(err, "FAIL: could not construct formatter - %s", u_errorName(err));
+ } else {
+ static const char* const integerTestData[][2] = {
+ { "-1400", "-1K" },
+ { "-1900", "-2K" },
+ { "1400", "1K" },
+ { "1900", "2K" },
+ { nullptr, nullptr }
+ };
+ doTest(nf0.getAlias(), integerTestData, false);
+ }
+
+ // 1 decimal place
+ LocalPointer<RuleBasedNumberFormat> nf1(new RuleBasedNumberFormat(u"1000/1000: <##.0K<;", Locale::getUS(), parseError, err));
+ if (U_FAILURE(err)) {
+ errcheckln(err, "FAIL: could not construct formatter - %s", u_errorName(err));
+ } else {
+ static const char* const oneDecimalPlaceTestData[][2] = {
+ { "-1440", "-1.4K" },
+ { "1890", "1.9K" },
+ { nullptr, nullptr }
+ };
+ doTest(nf1.getAlias(), oneDecimalPlaceTestData, false);
+ }
+
+ // with modulus substitution
+ LocalPointer<RuleBasedNumberFormat> nfMod(new RuleBasedNumberFormat(u"1000/1000: <##<K>##>; -x: ->>;", Locale::getUS(), parseError, err));
+ if (U_FAILURE(err)) {
+ errcheckln(err, "FAIL: could not construct formatter - %s", u_errorName(err));
+ } else {
+ static const char* const integerTestData[][2] = {
+ { "-1400", "-1K400" },
+ { "-1900", "-1K900" },
+ { "1400", "1K400" },
+ { "1900", "1K900" },
+ { nullptr, nullptr }
+ };
+ doTest(nfMod.getAlias(), integerTestData, false);
+ }
+
+ // no decimal places, but with rounding mode set to ROUND_FLOOR
+ LocalPointer<RuleBasedNumberFormat> nfFloor(new RuleBasedNumberFormat(u"1000/1000: <##K<;", Locale::getUS(), parseError, err));
+ nfFloor->setMaximumFractionDigits(0);
+ nfFloor->setRoundingMode(NumberFormat::kRoundFloor);
+ if (U_FAILURE(err)) {
+ errcheckln(err, "FAIL: could not construct formatter - %s", u_errorName(err));
+ } else {
+ static const char* const integerTestData[][2] = {
+ { "-1400", "-2K" },
+ { "-1900", "-2K" },
+ { "1400", "1K" },
+ { "1900", "1K" },
+ { nullptr, nullptr }
+ };
+ doTest(nfFloor.getAlias(), integerTestData, false);
+ }
+}
+
void
IntlTestRBNF::TestSpanishSpellout()
{
@@ -1565,6 +1633,7 @@ IntlTestRBNF::TestGermanSpellout()
{ "200", "zwei\\u00ADhundert" },
{ "579", "f\\u00fcnf\\u00ADhundert\\u00ADneun\\u00ADund\\u00ADsiebzig" },
{ "1,000", "ein\\u00ADtausend" },
+ { "1,101", "ein\\u00adtausend\\u00adein\\u00adhundert\\u00adeins" },
{ "2,000", "zwei\\u00ADtausend" },
{ "3,004", "drei\\u00ADtausend\\u00ADvier" },
{ "4,567", "vier\\u00ADtausend\\u00ADf\\u00fcnf\\u00ADhundert\\u00ADsieben\\u00ADund\\u00ADsechzig" },
@@ -1583,6 +1652,30 @@ IntlTestRBNF::TestGermanSpellout()
};
doLenientParseTest(formatter, lpTestData);
#endif
+
+ static const char* testDataYear[][2] = {
+ { "101", "ein\\u00adhundert\\u00adeins" },
+ { "900", "neun\\u00adhundert" },
+ { "1,001", "ein\\u00adtausend\\u00adeins" },
+ { "1,100", "elf\\u00adhundert" },
+ { "1,101", "elf\\u00adhundert\\u00adeins" },
+ { "1,234", "zw\\u00f6lf\\u00adhundert\\u00advier\\u00adund\\u00addrei\\u00dfig" },
+ { "2,001", "zwei\\u00adtausend\\u00adeins" },
+ { "10,001", "zehn\\u00adtausend\\u00adeins" },
+ { "-100", "minus ein\\u00adhundert" },
+ { "12.34", "12,3" },
+ { nullptr, nullptr }
+ };
+
+ status = U_ZERO_ERROR;
+ formatter->setDefaultRuleSet("%spellout-numbering-year", status);
+ if (U_SUCCESS(status)) {
+ logln("testing year rules");
+ doTest(formatter, testDataYear, false);
+ }
+ else {
+ errln("Can't test year rules");
+ }
}
delete formatter;
}
diff --git a/icu4c/source/test/intltest/itrbnf.h b/icu4c/source/test/intltest/itrbnf.h
index 96147ea22..fd6e41078 100644
--- a/icu4c/source/test/intltest/itrbnf.h
+++ b/icu4c/source/test/intltest/itrbnf.h
@@ -60,6 +60,12 @@ class IntlTestRBNF : public IntlTest {
* Perform a simple spot check on the duration-formatting rules
*/
void TestDurations();
+
+ /**
+ * Test that rounding works correctly on multiplier substitutions that use
+ * a DecimalFormat.
+ */
+ void TestDFRounding();
/**
* Perform a simple spot check on the Spanish spellout rules
diff --git a/icu4c/source/test/intltest/itspoof.cpp b/icu4c/source/test/intltest/itspoof.cpp
index e68d9b3c3..728b7e715 100644
--- a/icu4c/source/test/intltest/itspoof.cpp
+++ b/icu4c/source/test/intltest/itspoof.cpp
@@ -838,7 +838,7 @@ void IntlTestSpoof::testCombiningDot() {
{false, u"iz\u0307"},
};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
int32_t failedChecks = uspoof_check2(sc.getAlias(), cas.input, -1, nullptr, &status);
TEST_ASSERT_SUCCESS(status);
int32_t expected = cas.shouldFail ? USPOOF_HIDDEN_OVERLAY : 0;
diff --git a/icu4c/source/test/intltest/jacoll.cpp b/icu4c/source/test/intltest/jacoll.cpp
index affdf4f66..ef323461e 100644
--- a/icu4c/source/test/intltest/jacoll.cpp
+++ b/icu4c/source/test/intltest/jacoll.cpp
@@ -19,7 +19,7 @@
#include "sfwdchit.h"
CollationKanaTest::CollationKanaTest()
-: myCollation(0)
+: myCollation(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance(Locale::getJapan(), status);
diff --git a/icu4c/source/test/intltest/jamotest.cpp b/icu4c/source/test/intltest/jamotest.cpp
index b3f8c0f1d..949b92c75 100644
--- a/icu4c/source/test/intltest/jamotest.cpp
+++ b/icu4c/source/test/intltest/jamotest.cpp
@@ -69,14 +69,14 @@ JamoTest::TestJamo() {
UErrorCode status = U_ZERO_ERROR;
Transliterator* latinJamo = Transliterator::createInstance("Latin-Jamo", UTRANS_FORWARD, parseError, status);
- if (latinJamo == 0 || U_FAILURE(status)) {
+ if (latinJamo == nullptr || U_FAILURE(status)) {
dataerrln("FAIL: createInstance() returned 0 - %s", u_errorName(status));
return;
}
Transliterator* jamoLatin = latinJamo->createInverse(status);
- if (jamoLatin == 0) {
+ if (jamoLatin == nullptr) {
delete latinJamo;
errln("FAIL: createInverse() returned 0");
return;
@@ -163,7 +163,7 @@ void JamoTest::TestPiecemeal() {
UErrorCode status = U_ZERO_ERROR;
t = Transliterator::createInstance("NFD", UTRANS_FORWARD, status); // was Hangul-Jamo
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
dataerrln("FAIL: createInstance failed");
return;
}
@@ -171,7 +171,7 @@ void JamoTest::TestPiecemeal() {
delete t;
t = Transliterator::createInstance("NFC", UTRANS_FORWARD, status); // was Jamo-Hangul
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
errln("FAIL: createInstance failed");
return;
}
@@ -179,7 +179,7 @@ void JamoTest::TestPiecemeal() {
delete t;
t = Transliterator::createInstance("Latin-Jamo", UTRANS_FORWARD, status);
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
dataerrln("FAIL: createInstance failed - %s", u_errorName(status));
return;
}
@@ -187,7 +187,7 @@ void JamoTest::TestPiecemeal() {
delete t;
t = Transliterator::createInstance("Jamo-Latin", UTRANS_FORWARD, status);
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
errln("FAIL: createInstance failed");
return;
}
@@ -195,7 +195,7 @@ void JamoTest::TestPiecemeal() {
delete t;
t = Transliterator::createInstance("Hangul-Latin", UTRANS_FORWARD, status);
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
errln("FAIL: createInstance failed");
return;
}
@@ -203,7 +203,7 @@ void JamoTest::TestPiecemeal() {
delete t;
t = Transliterator::createInstance("Latin-Hangul", UTRANS_FORWARD, status);
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
errln("FAIL: createInstance failed");
return;
}
@@ -211,7 +211,7 @@ void JamoTest::TestPiecemeal() {
delete t;
t = Transliterator::createInstance("Hangul-Latin; Latin-Jamo", UTRANS_FORWARD, status);
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
errln("FAIL: createInstance failed");
return;
}
@@ -219,7 +219,7 @@ void JamoTest::TestPiecemeal() {
delete t;
t = Transliterator::createInstance("Jamo-Latin; Latin-Hangul", UTRANS_FORWARD, status);
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
errln("FAIL: createInstance failed");
return;
}
@@ -227,7 +227,7 @@ void JamoTest::TestPiecemeal() {
delete t;
t = Transliterator::createInstance("Hangul-Latin; Latin-Hangul", UTRANS_FORWARD, status);
- if (U_FAILURE(status) || t == 0) {
+ if (U_FAILURE(status) || t == nullptr) {
errln("FAIL: createInstance failed");
return;
}
@@ -376,7 +376,7 @@ JamoTest::TestRealText() {
UErrorCode status = U_ZERO_ERROR;
Transliterator* latinJamo = Transliterator::createInstance("Latin-Jamo", UTRANS_FORWARD, parseError, status);
Transliterator* jamoHangul = Transliterator::createInstance("NFC(NFD)", UTRANS_FORWARD, parseError, status);
- if (latinJamo == 0 || jamoHangul == 0 || U_FAILURE(status)) {
+ if (latinJamo == nullptr || jamoHangul == nullptr || U_FAILURE(status)) {
delete latinJamo;
delete jamoHangul;
dataerrln("FAIL: createInstance returned nullptr - %s", u_errorName(status));
@@ -384,7 +384,7 @@ JamoTest::TestRealText() {
}
Transliterator* jamoLatin = latinJamo->createInverse(status);
Transliterator* hangulJamo = jamoHangul->createInverse(status);
- if (jamoLatin == 0 || hangulJamo == 0) {
+ if (jamoLatin == nullptr || hangulJamo == nullptr) {
errln("FAIL: createInverse returned nullptr");
delete latinJamo;
delete jamoLatin;
@@ -529,7 +529,7 @@ const char* JamoTest::JAMO_NAMES_RULES =
*/
UnicodeString
JamoTest::nameToJamo(const UnicodeString& input) {
- if (NAME_JAMO == 0) {
+ if (NAME_JAMO == nullptr) {
errln("Failed to create NAME_JAMO");
return input; /* failure! */
}
@@ -544,7 +544,7 @@ JamoTest::nameToJamo(const UnicodeString& input) {
*/
UnicodeString
JamoTest::jamoToName(const UnicodeString& input) {
- if (NAME_JAMO == 0) {
+ if (NAME_JAMO == nullptr) {
errln("Failed to create NAME_JAMO");
return input; /* failure! */
}
diff --git a/icu4c/source/test/intltest/lcukocol.cpp b/icu4c/source/test/intltest/lcukocol.cpp
index 7123e8c29..0d04e98c5 100644
--- a/icu4c/source/test/intltest/lcukocol.cpp
+++ b/icu4c/source/test/intltest/lcukocol.cpp
@@ -31,7 +31,7 @@
#include "sfwdchit.h"
LotusCollationKoreanTest::LotusCollationKoreanTest()
-: myCollation(0)
+: myCollation(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance("ko_kr", status);
@@ -40,7 +40,7 @@ LotusCollationKoreanTest::LotusCollationKoreanTest()
} else {
errcheckln(status, "Couldn't instantiate the collator with %s", u_errorName(status));
delete myCollation;
- myCollation = 0;
+ myCollation = nullptr;
}
}
diff --git a/icu4c/source/test/intltest/listformattertest.h b/icu4c/source/test/intltest/listformattertest.h
index 0f0390010..2c6860c16 100644
--- a/icu4c/source/test/intltest/listformattertest.h
+++ b/icu4c/source/test/intltest/listformattertest.h
@@ -31,7 +31,7 @@ class ListFormatterTest : public IntlTestWithFieldPosition {
ListFormatterTest();
virtual ~ListFormatterTest() {}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
void TestRoot();
void TestBogus();
diff --git a/icu4c/source/test/intltest/loctest.cpp b/icu4c/source/test/intltest/loctest.cpp
index e4e71a675..dc0947bfd 100644
--- a/icu4c/source/test/intltest/loctest.cpp
+++ b/icu4c/source/test/intltest/loctest.cpp
@@ -188,12 +188,12 @@ LocaleTest::LocaleTest()
LocaleTest::~LocaleTest()
{
- if (dataTable != 0) {
+ if (dataTable != nullptr) {
for (int32_t i = 0; i < 33; i++) {
delete []dataTable[i];
}
delete []dataTable;
- dataTable = 0;
+ dataTable = nullptr;
}
}
@@ -202,6 +202,7 @@ void LocaleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, c
TESTCASE_AUTO_BEGIN;
TESTCASE_AUTO(TestBug11421); // Must run early in list to trigger failure.
TESTCASE_AUTO(TestBasicGetters);
+ TESTCASE_AUTO(TestVariantLengthLimit);
TESTCASE_AUTO(TestSimpleResourceInfo);
TESTCASE_AUTO(TestDisplayNames);
TESTCASE_AUTO(TestSimpleObjectStuff);
@@ -232,6 +233,7 @@ void LocaleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, c
#endif
TESTCASE_AUTO(TestSetIsBogus);
TESTCASE_AUTO(TestParallelAPIValues);
+ TESTCASE_AUTO(TestPseudoLocales);
TESTCASE_AUTO(TestAddLikelySubtags);
TESTCASE_AUTO(TestMinimizeSubtags);
TESTCASE_AUTO(TestAddLikelyAndMinimizeSubtags);
@@ -405,6 +407,69 @@ void LocaleTest::TestBasicGetters() {
delete pb;
}
+void LocaleTest::TestVariantLengthLimit() {
+ static constexpr char valid[] =
+ "_"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678";
+
+ static constexpr char invalid[] =
+ "_"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678"
+ "_12345678X"; // One character too long.
+
+ constexpr const char* variantsExpected = valid + 2; // Skip initial "__".
+
+ Locale validLocale(valid);
+ if (validLocale.isBogus()) {
+ errln("Valid locale is unexpectedly bogus.");
+ } else if (uprv_strcmp(variantsExpected, validLocale.getVariant()) != 0) {
+ errln("Expected variants \"%s\" but got variants \"%s\"\n",
+ variantsExpected, validLocale.getVariant());
+ }
+
+ Locale invalidLocale(invalid);
+ if (!invalidLocale.isBogus()) {
+ errln("Invalid locale is unexpectedly NOT bogus.");
+ }
+}
+
void LocaleTest::TestParallelAPIValues() {
logln("Test synchronization between C and C++ API");
if (strcmp(Locale::getChinese().getName(), ULOC_CHINESE) != 0) {
@@ -865,7 +930,7 @@ void LocaleTest::doTestDisplayNames(Locale& displayLocale, int32_t compareIndex)
void LocaleTest::setUpDataTable()
{
- if (dataTable == 0) {
+ if (dataTable == nullptr) {
dataTable = new UnicodeString*[33];
for (int32_t i = 0; i < 33; i++) {
@@ -1429,7 +1494,7 @@ LocaleTest::date(int32_t y, int32_t m, int32_t d, int32_t hr, int32_t min, int32
{
UErrorCode status = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(status);
- if (cal == 0)
+ if (cal == nullptr)
return 0.0;
cal->clear();
cal->set(1900 + y, m, d, hr, min, sec); // Add 1900 to follow java.util.Date protocol
@@ -1622,7 +1687,7 @@ void LocaleTest::Test20639_DeprecatesISO3Language() {
{"ro", "ron"},
{"mo", "mol"},
};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
Locale loc(cas.localeName);
const char* actual = loc.getISO3Language();
assertEquals(cas.localeName, cas.expectedISO3Language, actual);
@@ -1677,6 +1742,119 @@ LocaleTest::TestSetIsBogus() {
}
+void LocaleTest::TestPseudoLocales() {
+ // input locale tag, expected locale tag
+ static const struct {
+ const char* const input;
+ const char* const expected;
+ } test_cases[] = {
+ // language + region, en
+ { "en-XA", "en-Latn-XA" },
+ { "en-XB", "en-Latn-XB" },
+ { "en-XC", "en-Latn-XC" },
+
+ // language + region, ar
+ { "ar-XA", "ar-Arab-XA" },
+ { "ar-XB", "ar-Arab-XB" },
+ { "ar-XC", "ar-Arab-XC" },
+
+ // language + region, something other than en, ar
+ { "ru-XA", "ru-Cyrl-XA" },
+ { "el-XB", "el-Grek-XB" },
+
+ // undefined language - region
+ { "und-XA", "en-Latn-XA" },
+ { "und-XB", "en-Latn-XB" },
+ { "und-XC", "en-Latn-XC" },
+
+ // language + script + region
+ { "und-Latn-XA", "en-Latn-XA" },
+ { "und-Latn-XB", "en-Latn-XB" },
+ { "und-Latn-XC", "en-Latn-XC" },
+ { "und-Arab-XA", "ar-Arab-XA" },
+ { "und-Arab-XB", "ar-Arab-XB" },
+ { "und-Arab-XC", "ar-Arab-XC" },
+ { "und-Cyrl-XA", "ru-Cyrl-XA" },
+ { "und-Grek-XB", "el-Grek-XB" },
+
+ // Make sure the script is not damaged, when correct
+ { "ru-Cyrl-XA", "ru-Cyrl-XA" },
+ { "el-Grek-XB", "el-Grek-XB" },
+
+ // Make sure the script is not damaged, even if it is wrong
+ { "ru-Grek-XA", "ru-Grek-XA" },
+ { "el-Cyrl-XB", "el-Cyrl-XB" },
+
+ // PS Variants
+ { "en-XA-PSACCENT", "en-Latn-XA-psaccent" },
+ { "en-XA-PSBIDI", "en-Latn-XA-psbidi" },
+ { "en-XA-PSCRACK", "en-Latn-XA-pscrack" },
+ { "ar-XB-PSACCENT", "ar-Arab-XB-psaccent" },
+ { "ar-XB-PSBIDI", "ar-Arab-XB-psbidi" },
+ { "ar-XB-PSCRACK", "ar-Arab-XB-pscrack" },
+ { "en-XC-PSACCENT", "en-Latn-XC-psaccent" },
+ { "en-XC-PSBIDI", "en-Latn-XC-psbidi" },
+ { "en-XC-PSCRACK", "en-Latn-XC-pscrack" },
+
+ { "en-US-PSACCENT", "en-Latn-US-psaccent" },
+ { "en-US-PSBIDI", "en-Latn-US-psbidi" },
+ { "en-US-PSCRACK", "en-Latn-US-pscrack" },
+ { "ar-EG-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "ar-EG-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "ar-EG-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "en-PSACCENT", "en-Latn-US-psaccent" },
+ { "en-PSBIDI", "en-Latn-US-psbidi" },
+ { "en-PSCRACK", "en-Latn-US-pscrack" },
+ { "ar-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "ar-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "ar-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "und-US-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-US-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-US-PSCRACK", "en-Latn-US-pscrack" },
+ { "und-EG-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "und-EG-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "und-EG-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "und-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-PSCRACK", "en-Latn-US-pscrack" },
+ { "und-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-PSCRACK", "en-Latn-US-pscrack" },
+ };
+
+ std::string extensions("-u-nu-Deva-hc-h23-fw-mon-mu-celsius-x-somethin-more");
+
+ IcuTestErrorCode status(*this, "TestPseudoLocales()");
+ for (const auto& item : test_cases) {
+ const char* const inputTag = item.input;
+ const char* const expectedTag = item.expected;
+ Locale result = Locale::forLanguageTag(inputTag, status);
+ result.addLikelySubtags(status);
+ status.errIfFailureAndReset("\"%s\"", inputTag);
+ Locale expected = Locale::forLanguageTag(expectedTag, status);
+ status.errIfFailureAndReset("\"%s\"", expectedTag);
+ assertEquals(inputTag, expected.getName(), result.getName());
+
+ // Test extension
+ std::string extendedTag(inputTag);
+ extendedTag.append(extensions);
+
+ result = Locale::forLanguageTag(extendedTag, status);
+ result.addLikelySubtags(status);
+ status.errIfFailureAndReset(extendedTag.c_str());
+
+ std::string expectedExtendedTag(expectedTag);
+ expectedExtendedTag.append(extensions);
+
+ expected = Locale::forLanguageTag(expectedExtendedTag, status);
+ status.errIfFailureAndReset(expectedExtendedTag.c_str());
+ assertEquals(extendedTag.c_str(), expected.getName(), result.getName());
+ }
+}
+
void
LocaleTest::TestAddLikelySubtags() {
IcuTestErrorCode status(*this, "TestAddLikelySubtags()");
@@ -3843,6 +4021,112 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
"und_US",
"en_Latn_US",
"en"
+ }, {
+ // ICU-22547
+ // unicode_language_id = "root" |
+ // (unicode_language_subtag (sep unicode_script_subtag)? | unicode_script_subtag)
+ // (sep unicode_region_subtag)? (sep unicode_variant_subtag)* ;
+ // so "aaaa" is a well-formed unicode_language_id
+ "aaaa",
+ "aaaa",
+ "aaaa",
+ }, {
+ // ICU-22727
+ // unicode_language_subtag = alpha{2,3} | alpha{5,8};
+ // so "bbbbb", "cccccc", "ddddddd", "eeeeeeee" are
+ // well-formed unicode_language_subtag and therefore
+ // well-formed unicode_language_id
+ // but "fffffffff" is not.
+ "bbbbb",
+ "bbbbb",
+ "bbbbb",
+ }, {
+ // ICU-22727
+ "cccccc",
+ "cccccc",
+ "cccccc",
+ }, {
+ // ICU-22727
+ "ddddddd",
+ "ddddddd",
+ "ddddddd",
+ }, {
+ // ICU-22727
+ "eeeeeeee",
+ "eeeeeeee",
+ "eeeeeeee",
+ }, {
+ // ICU-22546
+ "und-Zzzz",
+ "en_Latn_US", // If change, please also update common/unicode/locid.h
+ "en"
+ }, {
+ // ICU-22546
+ "en",
+ "en_Latn_US", // If change, please also update common/unicode/locid.h
+ "en"
+ }, {
+ // ICU-22546
+ "de",
+ "de_Latn_DE", // If change, please also update common/unicode/locid.h
+ "de"
+ }, {
+ // ICU-22546
+ "sr",
+ "sr_Cyrl_RS", // If change, please also update common/unicode/locid.h
+ "sr"
+ }, {
+ // ICU-22546
+ "sh",
+ // Android patch: addLikelySubtags("sh") returns "sh_Latn_RS" on Android
+ // TODO(b/335896974): Investigate why this patch is needed.
+ "sh_Latn_RS",// If change, please also update common/unicode/locid.h
+ "sh"
+ }, {
+ // ICU-22546
+ "zh_Hani",
+ "zh_Hani_CN", // If change, please also update common/unicode/locid.h
+ "zh_Hani"
+ }, {
+ // ICU-22545 & ICU-22742
+ "en_XA",
+ "en_Latn_XA",
+ "en_XA",
+ }, {
+ // ICU-22545 & ICU-22742
+ "ar_XB",
+ "ar_Arab_XB",
+ "ar_XB",
+ }, {
+ // ICU-22545 & ICU-22742
+ "ru_XC",
+ "ru_Cyrl_XC",
+ "ru_XC",
+ }, {
+ // ICU-22742
+ "en_PSACCENT",
+ "en_Latn_US_PSACCENT",
+ "en__PSACCENT"
+ }, {
+ "ar_PSBIDI",
+ "ar_Arab_EG_PSBIDI",
+ "ar__PSBIDI"
+ }, {
+ "ru_PSCRACK",
+ "ru_Cyrl_RU_PSCRACK",
+ "ru__PSCRACK"
+ }, {
+ "ar_PSACCENT",
+ "ar_Arab_EG_PSACCENT",
+ "ar__PSACCENT"
+ }, {
+ "ru_PSBIDI",
+ "ru_Cyrl_RU_PSBIDI",
+ "ru__PSBIDI"
+ }, {
+ "en_PSCRACK",
+ "en_Latn_US_PSCRACK",
+ "en__PSCRACK"
}
};
@@ -4494,7 +4778,7 @@ void LocaleTest::TestGetLocale() {
DateFormat* df =
DateFormat::createDateInstance(DateFormat::kDefault,
Locale::createFromName(req));
- if (df == 0){
+ if (df == nullptr) {
dataerrln("Error calling DateFormat::createDateInstance()");
} else {
SimpleDateFormat* dat = dynamic_cast<SimpleDateFormat*>(df);
@@ -4547,7 +4831,7 @@ void LocaleTest::TestGetLocale() {
// After registering something, the behavior should be different
URegistryKey key = BreakIterator::registerInstance(brk, reqLoc, UBRK_WORD, ec);
- brk = 0; // registerInstance adopts
+ brk = nullptr; // registerInstance adopts
if (U_FAILURE(ec)) {
errln("FAIL: BreakIterator::registerInstance() failed");
} else {
@@ -4571,7 +4855,7 @@ void LocaleTest::TestGetLocale() {
errln("FAIL: BreakIterator::unregister() failed");
}
delete brk;
- brk = 0;
+ brk = nullptr;
}
// After unregistering, should behave normally again
@@ -4615,7 +4899,7 @@ void LocaleTest::TestGetLocale() {
// After registering something, the behavior should be different
URegistryKey key = Collator::registerInstance(coll, reqLoc, ec);
- coll = 0; // registerInstance adopts
+ coll = nullptr; // registerInstance adopts
if (U_FAILURE(ec)) {
errln("FAIL: Collator::registerInstance() failed");
} else {
@@ -4641,7 +4925,7 @@ void LocaleTest::TestGetLocale() {
errln("FAIL: Collator::unregister() failed");
}
delete coll;
- coll = 0;
+ coll = nullptr;
}
// After unregistering, should behave normally again
@@ -4795,9 +5079,9 @@ static Locale _canonicalize(int32_t selector, /* 0==createFromName, 1==createCan
case 1:
return Locale::createCanonical(localeID);
case 2:
- return Locale(localeID);
+ return {localeID};
default:
- return Locale("");
+ return {""};
}
}
@@ -4820,6 +5104,18 @@ void LocaleTest::TestCanonicalization()
{ "no@ny", "no@ny", "no__NY" /* not: "nn" [alan ICU3.0] */ }, /* POSIX ID */
{ "no-no.utf32@B", "no_NO.utf32@B", "no_NO_B" }, /* POSIX ID */
{ "qz-qz@Euro", "qz_QZ@Euro", "qz_QZ_EURO" }, /* qz-qz uses private use iso codes */
+
+ // A very long charset name in IANA charset
+ { "ja_JP.Extended_UNIX_Code_Packed_Format_for_Japanese@B",
+ "ja_JP.Extended_UNIX_Code_Packed_Format_for_Japanese@B", "ja_JP_B" }, /* POSIX ID */
+ // A fake long charset name below the limitation
+ { "ja_JP.1234567890123456789012345678901234567890123456789012345678901234@B",
+ "ja_JP.1234567890123456789012345678901234567890123456789012345678901234@B",
+ "ja_JP_B" }, /* POSIX ID */
+ // A fake long charset name one char above the limitation
+ { "ja_JP.12345678901234567890123456789012345678901234567890123456789012345@B",
+ "BOGUS",
+ "ja_JP_B" }, /* POSIX ID */
// NOTE: uloc_getName() works on en-BOONT, but Locale() parser considers it BOGUS
// TODO: unify this behavior
{ "en-BOONT", "en__BOONT", "en__BOONT" }, /* registered name */
@@ -5593,14 +5889,6 @@ public:
}
};
-bool isKnownSourceForCLDR17099(const std::string& s) {
- if (s.compare("qaa-Cyrl-CH") == 0) {
- return true;
- }
-
- return false;
-}
-
void U_CALLCONV
testLikelySubtagsLineFn(void *context,
char *fields[][2], int32_t fieldCount,
@@ -5611,9 +5899,6 @@ testLikelySubtagsLineFn(void *context,
(void)fieldCount;
LocaleTest* THIS = (LocaleTest*)context;
std::string source(trim(std::string(fields[0][0], fields[0][1]-fields[0][0])));
- if (isKnownSourceForCLDR17099(source) && THIS->logKnownIssue("CLDR-17099", "likelySubtags.txt wrong for qaa-Cyrl-CH")) {
- return;
- }
std::string addLikely(trim(std::string(fields[1][0], fields[1][1]-fields[1][0])));
std::string removeFavorScript(trim(std::string(fields[2][0], fields[2][1]-fields[2][0])));
if (removeFavorScript.length() == 0) {
@@ -5737,7 +6022,7 @@ void LocaleTest::TestKnownCanonicalizedListCorrect()
IcuTestErrorCode status(*this, "TestKnownCanonicalizedListCorrect");
int32_t numOfKnownCanonicalized;
const char* const* knownCanonicalized =
- ulocimp_getKnownCanonicalizedLocaleForTest(&numOfKnownCanonicalized);
+ ulocimp_getKnownCanonicalizedLocaleForTest(numOfKnownCanonicalized);
for (int32_t i = 0; i < numOfKnownCanonicalized; i++) {
std::string msg("Known Canonicalized Locale is not canonicalized: ");
assertTrue((msg + knownCanonicalized[i]).c_str(),
diff --git a/icu4c/source/test/intltest/loctest.h b/icu4c/source/test/intltest/loctest.h
index 80e03e959..b3410242e 100644
--- a/icu4c/source/test/intltest/loctest.h
+++ b/icu4c/source/test/intltest/loctest.h
@@ -23,6 +23,7 @@ public:
* Test methods to set and get data fields
**/
void TestBasicGetters();
+ void TestVariantLengthLimit();
/**
* Test methods to set and get data fields
**/
@@ -128,6 +129,7 @@ public:
void TestKnownCanonicalizedListCorrect();
void TestConstructorAcceptsBCP47();
+ void TestPseudoLocales();
void TestAddLikelySubtags();
void TestMinimizeSubtags();
void TestAddLikelyAndMinimizeSubtags();
diff --git a/icu4c/source/test/intltest/measfmttest.cpp b/icu4c/source/test/intltest/measfmttest.cpp
index 25e227f98..5daa4cdea 100644
--- a/icu4c/source/test/intltest/measfmttest.cpp
+++ b/icu4c/source/test/intltest/measfmttest.cpp
@@ -43,7 +43,8 @@ public:
MeasureFormatTest() {
}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void TestBasic();
void TestCompatible53();
@@ -5743,6 +5744,8 @@ void MeasureFormatTest::TestPrefixes() {
int32_t expectedBase;
int32_t expectedPower;
} cases[] = {
+ {UMEASURE_PREFIX_QUECTO, 10, -30},
+ {UMEASURE_PREFIX_RONTO, 10, -27},
{UMEASURE_PREFIX_YOCTO, 10, -24},
{UMEASURE_PREFIX_ZEPTO, 10, -21},
{UMEASURE_PREFIX_ATTO, 10, -18},
@@ -5764,6 +5767,8 @@ void MeasureFormatTest::TestPrefixes() {
{UMEASURE_PREFIX_EXA, 10, 18},
{UMEASURE_PREFIX_ZETTA, 10, 21},
{UMEASURE_PREFIX_YOTTA, 10, 24},
+ {UMEASURE_PREFIX_RONNA, 10, 27},
+ {UMEASURE_PREFIX_QUETTA, 10, 30},
{UMEASURE_PREFIX_KIBI, 1024, 1},
{UMEASURE_PREFIX_MEBI, 1024, 2},
{UMEASURE_PREFIX_GIBI, 1024, 3},
@@ -5798,8 +5803,7 @@ void MeasureFormatTest::TestParseBuiltIns() {
// Prove that all built-in units are parseable, except "generic" temperature:
MeasureUnit parsed = MeasureUnit::forIdentifier(unit.getIdentifier(), status);
- if (unit == MeasureUnit::getGenericTemperature() ||
- (unit == MeasureUnit::getBeaufort() && logKnownIssue("CLDR-16327", "beaufort currently not convertible"))) {
+ if (unit == MeasureUnit::getGenericTemperature()) {
status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
} else {
status.assertSuccess();
@@ -5832,7 +5836,7 @@ void MeasureFormatTest::TestParseToBuiltIn() {
{"square-yard-yard", MeasureUnit::getCubicYard()},
};
- for (auto &cas : cases) {
+ for (const auto& cas : cases) {
MeasureUnit fromIdent = MeasureUnit::forIdentifier(cas.identifier, status);
status.assertSuccess();
assertEquals("forIdentifier returns a normal built-in unit when it exists",
diff --git a/icu4c/source/test/intltest/messageformat2test.cpp b/icu4c/source/test/intltest/messageformat2test.cpp
new file mode 100644
index 000000000..e674c9485
--- /dev/null
+++ b/icu4c/source/test/intltest/messageformat2test.cpp
@@ -0,0 +1,1075 @@
+// © 2024 and later: Unicode, Inc. and others.
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/calendar.h"
+#include "messageformat2test.h"
+
+using namespace icu::message2;
+
+/*
+ TODO: Tests need to be unified in a single format that
+ both ICU4C and ICU4J can use, rather than being embedded in code.
+
+ Tests are included in their current state to give a sense of
+ how much test coverage has been achieved. Most of the testing is
+ of the parser/serializer; the formatter needs to be tested more
+ thoroughly.
+*/
+
+/*
+Tests reflect the syntax specified in
+
+ https://github.com/unicode-org/message-format-wg/commits/main/spec/message.abnf
+
+as of the following commit from 2023-05-09:
+ https://github.com/unicode-org/message-format-wg/commit/194f6efcec5bf396df36a19bd6fa78d1fa2e0867
+
+*/
+
+static const int32_t numValidTestCases = 55;
+TestResult validTestCases[] = {
+ {"hello {|4.2| :number}", "hello 4.2"},
+ {"hello {|4.2| :number minimumFractionDigits=2}", "hello 4.20"},
+ {"hello {|4.2| :number minimumFractionDigits = 2}", "hello 4.20"},
+ {"hello {|4.2| :number minimumFractionDigits= 2}", "hello 4.20"},
+ {"hello {|4.2| :number minimumFractionDigits =2}", "hello 4.20"},
+ {"hello {|4.2| :number minimumFractionDigits=2 }", "hello 4.20"},
+ {"hello {|4.2| :number minimumFractionDigits=2 bar=3}", "hello 4.20"},
+ {"hello {|4.2| :number minimumFractionDigits=2 bar=3 }", "hello 4.20"},
+ {"hello {|4.2| :number minimumFractionDigits=|2|}", "hello 4.20"},
+ {"content -tag", "content -tag"},
+ {"", ""},
+ // tests for escape sequences in literals
+ {"{|hel\\\\lo|}", "hel\\lo"},
+ {"{|hel\\|lo|}", "hel|lo"},
+ {"{|hel\\|\\\\lo|}", "hel|\\lo"},
+ // tests for text escape sequences
+ {"hel\\{lo", "hel{lo"},
+ {"hel\\}lo", "hel}lo"},
+ {"hel\\\\lo", "hel\\lo"},
+ {"hel\\{\\\\lo", "hel{\\lo"},
+ {"hel\\{\\}lo", "hel{}lo"},
+ // tests for newlines in literals and text
+ {"hello {|wo\nrld|}", "hello wo\nrld"},
+ {"hello wo\nrld", "hello wo\nrld"},
+ // Markup is ignored when formatting to string
+ {"{#tag/} content", " content"},
+ {"{#tag} content", " content"},
+ {"{#tag/} {|content|}", " content"},
+ {"{#tag} {|content|}", " content"},
+ {"{|content|} {#tag/}", "content "},
+ {"{|content|} {#tag}", "content "},
+ {"{/tag} {|content|}", " content"},
+ {"{|content|} {/tag}", "content "},
+ {"{#tag} {|content|} {/tag}", " content "},
+ {"{/tag} {|content|} {#tag}", " content "},
+ {"{#tag/} {|content|} {#tag}", " content "},
+ {"{#tag/} {|content|} {/tag}", " content "},
+ {"{#tag foo=bar/} {|content|}", " content"},
+ {"{#tag foo=bar} {|content|}", " content"},
+ {"{/tag foo=bar} {|content|}", " content"},
+ {"{#tag foo=bar} {|content|} {/tag foo=bar}", " content "},
+ {"{/tag foo=bar} {|content|} {#tag foo=bar}", " content "},
+ {"{#tag foo=bar /} {|content|} {#tag foo=bar}", " content "},
+ {"{#tag foo=bar/} {|content|} {/tag foo=bar}", " content "},
+ // Attributes are ignored
+ {"The value is {horse @horse}.", "The value is horse."},
+ {"hello {|4.2| @number}", "hello 4.2"},
+ {"The value is {horse @horse=cool}.", "The value is horse."},
+ {"hello {|4.2| @number=5}", "hello 4.2"},
+ // Number literals
+ {"{-1}", "-1"},
+ {"{0}", "0"},
+ {"{0.0123}", "0.0123"},
+ {"{1.234e5}", "1.234e5"},
+ {"{1.234E5}", "1.234E5"},
+ {"{1.234E+5}", "1.234E+5"},
+ {"{1.234e-5}", "1.234e-5"},
+ {"{42e5}", "42e5"},
+ {"{42e0}", "42e0"},
+ {"{42e000}", "42e000"},
+ {"{42e369}", "42e369"},
+};
+
+
+static const int32_t numResolutionErrors = 3;
+TestResultError jsonTestCasesResolutionError[] = {
+ {".local $foo = {$bar} .match {$foo :number} one {{one}} * {{other}}", "other", U_MF_UNRESOLVED_VARIABLE_ERROR},
+ {".local $foo = {$bar} .match {$foo :number} one {{one}} * {{other}}", "other", U_MF_UNRESOLVED_VARIABLE_ERROR},
+ {".local $bar = {$none :number} .match {$foo :string} one {{one}} * {{{$bar}}}", "{$none}", U_MF_UNRESOLVED_VARIABLE_ERROR}
+};
+
+static const int32_t numReservedErrors = 34;
+UnicodeString reservedErrors[] = {
+ // tests for reserved syntax
+ "hello {|4.2| %number}",
+ "hello {|4.2| %n|um|ber}",
+ "{+42}",
+ // Private use -- n.b. this implementation doesn't support
+ // any private-use annotations, so it's treated like reserved
+ "hello {|4.2| &num|be|r}",
+ "hello {|4.2| ^num|be|r}",
+ "hello {|4.2| +num|be|r}",
+ "hello {|4.2| ?num|be||r|s}",
+ "hello {|foo| !number}",
+ "hello {|foo| *number}",
+ "hello {#number}",
+ "{<tag}",
+ ".local $bar = {$none ~plural} .match {$foo :string} * {{{$bar}}}",
+ // tests for reserved syntax with escaped chars
+ "hello {|4.2| %num\\\\ber}",
+ "hello {|4.2| %num\\{be\\|r}",
+ "hello {|4.2| %num\\\\\\}ber}",
+ // tests for reserved syntax
+ "hello {|4.2| !}",
+ "hello {|4.2| %}",
+ "hello {|4.2| *}",
+ "hello {|4.2| ^abc|123||5|\\\\}",
+ "hello {|4.2| ^ abc|123||5|\\\\}",
+ "hello {|4.2| ^ abc|123||5|\\\\ \\|def |3.14||2|}",
+ // tests for reserved syntax with trailing whitespace
+ "hello {|4.2| ? }",
+ "hello {|4.2| %xyzz }",
+ "hello {|4.2| >xyzz }",
+ "hello {$foo ~xyzz }",
+ "hello {$x <xyzz }",
+ "{>xyzz }",
+ "{ !xyzz }",
+ "{~xyzz }",
+ "{ <xyzz }",
+ // tests for reserved syntax with space-separated sequences
+ "hello {|4.2| !xy z z }",
+ "hello {|4.2| *num \\\\ b er}",
+ "hello {|4.2| %num \\\\ b |3.14| r }",
+ "hello {|4.2| +num xx \\\\ b |3.14| r }",
+ "hello {$foo +num x \\\\ abcde |3.14| r }",
+ "hello {$foo >num x \\\\ abcde |aaa||3.14||42| r }",
+ "hello {$foo >num x \\\\ abcde |aaa||3.14| |42| r }",
+ 0
+};
+
+static const int32_t numMatches = 15;
+UnicodeString matches[] = {
+ // multiple scrutinees, with or without whitespace
+ "match {$foo :string} {$bar :string} when one * {one} when * * {other}",
+ "match {$foo :string} {$bar :string}when one * {one} when * * {other}",
+ "match {$foo :string}{$bar :string} when one * {one} when * * {other}",
+ "match {$foo :string}{$bar :string}when one * {one} when * * {other}",
+ "match{$foo :string} {$bar :string} when one * {one} when * * {other}",
+ "match{$foo :string} {$bar :string}when one * {one} when * * {other}",
+ "match{$foo :string}{$bar :string} when one * {one} when * * {other}",
+ "match{$foo :string}{$bar :string}when one * {one} when * * {other}",
+ // multiple variants, with or without whitespace
+ "match {$foo :string} {$bar :string} when one * {one} when * * {other}",
+ "match {$foo :string} {$bar :string} when one * {one}when * * {other}",
+ "match {$foo :string} {$bar :string}when one * {one} when * * {other}",
+ "match {$foo :string} {$bar :string}when one * {one}when * * {other}",
+ // one or multiple keys, with or without whitespace before pattern
+ "match {$foo :string} {$bar :string} when one *{one} when * * {foo}",
+ "match {$foo :string} {$bar :string} when one * {one} when * * {foo}",
+ "match {$foo :string} {$bar :string} when one * {one} when * * {foo}",
+ 0
+};
+
+static const int32_t numSyntaxTests = 19;
+// These patterns are tested to ensure they parse without a syntax error
+UnicodeString syntaxTests[] = {
+ "hello {|foo| :number }",
+ // zero, one or multiple options, with or without whitespace before '}'
+ "{:foo}",
+ "{:foo }",
+ "{:foo }",
+ "{:foo k=v}",
+ "{:foo k=v }",
+ "{:foo k1=v1 k2=v2}",
+ "{:foo k1=v1 k2=v2 }",
+ // literals or variables followed by space, with or without an annotation following
+ "{|3.14| }",
+ "{|3.14| }",
+ "{|3.14| :foo}",
+ "{|3.14| :foo }",
+ "{$bar }",
+ "{$bar }",
+ "{$bar :foo}",
+ "{$bar :foo }",
+ // Variable names can contain '-'
+ "{$bar-foo}",
+ // Not a syntax error (is a semantic error)
+ ".local $foo = {|hello|} .local $foo = {$foo} {{{$foo}}}",
+ // Unquoted literal -- should work
+ "good {placeholder}",
+ 0
+};
+
+void
+TestMessageFormat2::runIndexedTest(int32_t index, UBool exec,
+ const char* &name, char* /*par*/) {
+ TESTCASE_AUTO_BEGIN;
+ TESTCASE_AUTO(testAPICustomFunctions);
+ TESTCASE_AUTO(messageFormat1Tests);
+ TESTCASE_AUTO(featureTests);
+ TESTCASE_AUTO(testCustomFunctions);
+ TESTCASE_AUTO(testBuiltInFunctions);
+ TESTCASE_AUTO(testDataModelErrors);
+ TESTCASE_AUTO(testResolutionErrors);
+ TESTCASE_AUTO(testAPI);
+ TESTCASE_AUTO(testAPISimple);
+ TESTCASE_AUTO(testDataModelAPI);
+ TESTCASE_AUTO(testVariousPatterns);
+ TESTCASE_AUTO(testInvalidPatterns);
+ TESTCASE_AUTO(specTests);
+ TESTCASE_AUTO_END;
+}
+
+// Needs more tests
+void TestMessageFormat2::testDataModelAPI() {
+ IcuTestErrorCode errorCode1(*this, "testAPI");
+ UErrorCode errorCode = (UErrorCode) errorCode1;
+
+ using Pattern = data_model::Pattern;
+
+ Pattern::Builder builder(errorCode);
+
+ builder.add("a", errorCode);
+ builder.add("b", errorCode);
+ builder.add("c", errorCode);
+
+ Pattern p = builder.build(errorCode);
+ int32_t i = 0;
+ for (auto iter = p.begin(); iter != p.end(); ++iter) {
+ std::variant<UnicodeString, Expression, Markup> part = *iter;
+ UnicodeString val = *std::get_if<UnicodeString>(&part);
+ if (i == 0) {
+ assertEquals("testDataModelAPI", val, "a");
+ } else if (i == 1) {
+ assertEquals("testDataModelAPI", val, "b");
+ } else if (i == 2) {
+ assertEquals("testDataModelAPI", val, "c");
+ }
+ i++;
+ }
+ assertEquals("testDataModelAPI", i, 3);
+}
+
+// Example for design doc -- version without null and error checks
+void TestMessageFormat2::testAPISimple() {
+ IcuTestErrorCode errorCode1(*this, "testAPI");
+ UErrorCode errorCode = (UErrorCode) errorCode1;
+ UParseError parseError;
+ Locale locale = "en_US";
+
+ // Since this is the example used in the
+ // design doc, it elides null checks and error checks.
+ // To be used in the test suite, it should include those checks
+ // Null checks and error checks elided
+ MessageFormatter::Builder builder(errorCode);
+ MessageFormatter mf = builder.setPattern(u"Hello, {$userName}!", parseError, errorCode)
+ .build(errorCode);
+
+ std::map<UnicodeString, message2::Formattable> argsBuilder;
+ argsBuilder["userName"] = message2::Formattable("John");
+ MessageArguments args(argsBuilder, errorCode);
+
+ UnicodeString result;
+ result = mf.formatToString(args, errorCode);
+ assertEquals("testAPI", result, "Hello, John!");
+
+ mf = builder.setPattern("Today is {$today :date style=full}.", parseError, errorCode)
+ .setLocale(locale)
+ .build(errorCode);
+
+ Calendar* cal(Calendar::createInstance(errorCode));
+ // Sunday, October 28, 2136 8:39:12 AM PST
+ cal->set(2136, Calendar::OCTOBER, 28, 8, 39, 12);
+ UDate date = cal->getTime(errorCode);
+
+ argsBuilder.clear();
+ argsBuilder["today"] = message2::Formattable::forDate(date);
+ args = MessageArguments(argsBuilder, errorCode);
+ result = mf.formatToString(args, errorCode);
+ assertEquals("testAPI", "Today is Sunday, October 28, 2136.", result);
+
+ argsBuilder.clear();
+ argsBuilder["photoCount"] = message2::Formattable((int64_t) 12);
+ argsBuilder["userGender"] = message2::Formattable("feminine");
+ argsBuilder["userName"] = message2::Formattable("Maria");
+ args = MessageArguments(argsBuilder, errorCode);
+
+ mf = builder.setPattern(".match {$photoCount :number} {$userGender :string}\n\
+ 1 masculine {{{$userName} added a new photo to his album.}}\n \
+ 1 feminine {{{$userName} added a new photo to her album.}}\n \
+ 1 * {{{$userName} added a new photo to their album.}}\n \
+ * masculine {{{$userName} added {$photoCount} photos to his album.}}\n \
+ * feminine {{{$userName} added {$photoCount} photos to her album.}}\n \
+ * * {{{$userName} added {$photoCount} photos to their album.}}", parseError, errorCode)
+ .setLocale(locale)
+ .build(errorCode);
+ result = mf.formatToString(args, errorCode);
+ assertEquals("testAPI", "Maria added 12 photos to her album.", result);
+
+ delete cal;
+}
+
+// Design doc example, with more details
+void TestMessageFormat2::testAPI() {
+ IcuTestErrorCode errorCode(*this, "testAPI");
+ TestCase::Builder testBuilder;
+
+ // Pattern: "Hello, {$userName}!"
+ TestCase test(testBuilder.setName("testAPI")
+ .setPattern("Hello, {$userName}!")
+ .setArgument("userName", "John")
+ .setExpected("Hello, John!")
+ .setLocale("en_US")
+ .build());
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Pattern: "{Today is {$today ..."
+ LocalPointer<Calendar> cal(Calendar::createInstance(errorCode));
+ // Sunday, October 28, 2136 8:39:12 AM PST
+ cal->set(2136, Calendar::OCTOBER, 28, 8, 39, 12);
+ UDate date = cal->getTime(errorCode);
+
+ test = testBuilder.setName("testAPI")
+ .setPattern("Today is {$today :date style=full}.")
+ .setDateArgument("today", date)
+ .setExpected("Today is Sunday, October 28, 2136.")
+ .setLocale("en_US")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Pattern matching - plural
+ UnicodeString pattern = ".match {$photoCount :string} {$userGender :string}\n\
+ 1 masculine {{{$userName} added a new photo to his album.}}\n \
+ 1 feminine {{{$userName} added a new photo to her album.}}\n \
+ 1 * {{{$userName} added a new photo to their album.}}\n \
+ * masculine {{{$userName} added {$photoCount} photos to his album.}}\n \
+ * feminine {{{$userName} added {$photoCount} photos to her album.}}\n \
+ * * {{{$userName} added {$photoCount} photos to their album.}}";
+
+
+ int64_t photoCount = 12;
+ test = testBuilder.setName("testAPI")
+ .setPattern(pattern)
+ .setArgument("photoCount", photoCount)
+ .setArgument("userGender", "feminine")
+ .setArgument("userName", "Maria")
+ .setExpected("Maria added 12 photos to her album.")
+ .setLocale("en_US")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Built-in functions
+ pattern = ".match {$photoCount :number} {$userGender :string}\n\
+ 1 masculine {{{$userName} added a new photo to his album.}}\n \
+ 1 feminine {{{$userName} added a new photo to her album.}}\n \
+ 1 * {{{$userName} added a new photo to their album.}}\n \
+ * masculine {{{$userName} added {$photoCount} photos to his album.}}\n \
+ * feminine {{{$userName} added {$photoCount} photos to her album.}}\n \
+ * * {{{$userName} added {$photoCount} photos to their album.}}";
+
+ photoCount = 1;
+ test = testBuilder.setName("testAPI")
+ .setPattern(pattern)
+ .setArgument("photoCount", photoCount)
+ .setArgument("userGender", "feminine")
+ .setArgument("userName", "Maria")
+ .setExpected("Maria added a new photo to her album.")
+ .setLocale("en_US")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+// Custom functions example from the ICU4C API design doc
+// Note: error/null checks are omitted
+void TestMessageFormat2::testAPICustomFunctions() {
+ IcuTestErrorCode errorCode1(*this, "testAPICustomFunctions");
+ UErrorCode errorCode = (UErrorCode) errorCode1;
+ UParseError parseError;
+ Locale locale = "en_US";
+
+ // Set up custom function registry
+ MFFunctionRegistry::Builder builder(errorCode);
+ MFFunctionRegistry functionRegistry =
+ builder.adoptFormatter(data_model::FunctionName("person"), new PersonNameFormatterFactory(), errorCode)
+ .build();
+
+ Person* person = new Person(UnicodeString("Mr."), UnicodeString("John"), UnicodeString("Doe"));
+
+ std::map<UnicodeString, message2::Formattable> argsBuilder;
+ argsBuilder["name"] = message2::Formattable(person);
+ MessageArguments arguments(argsBuilder, errorCode);
+
+ MessageFormatter::Builder mfBuilder(errorCode);
+ UnicodeString result;
+ // This fails, because we did not provide a function registry:
+ MessageFormatter mf = mfBuilder.setPattern("Hello {$name :person formality=informal}", parseError, errorCode)
+ .setLocale(locale)
+ .build(errorCode);
+ result = mf.formatToString(arguments, errorCode);
+ assertEquals("testAPICustomFunctions", U_MF_UNKNOWN_FUNCTION_ERROR, errorCode);
+
+ errorCode = U_ZERO_ERROR;
+ mfBuilder.setFunctionRegistry(functionRegistry).setLocale(locale);
+
+ mf = mfBuilder.setPattern("Hello {$name :person formality=informal}", parseError, errorCode)
+ .build(errorCode);
+ result = mf.formatToString(arguments, errorCode);
+ assertEquals("testAPICustomFunctions", "Hello John", result);
+
+ mf = mfBuilder.setPattern("Hello {$name :person formality=formal}", parseError, errorCode)
+ .build(errorCode);
+ result = mf.formatToString(arguments, errorCode);
+ assertEquals("testAPICustomFunctions", "Hello Mr. Doe", result);
+
+ mf = mfBuilder.setPattern("Hello {$name :person formality=formal length=long}", parseError, errorCode)
+ .build(errorCode);
+ result = mf.formatToString(arguments, errorCode);
+ assertEquals("testAPICustomFunctions", "Hello Mr. John Doe", result);
+
+ // By type
+ MFFunctionRegistry::Builder builderByType(errorCode);
+ FunctionName personFormatterName("person");
+ MFFunctionRegistry functionRegistryByType =
+ builderByType.adoptFormatter(personFormatterName,
+ new PersonNameFormatterFactory(),
+ errorCode)
+ .setDefaultFormatterNameByType("person",
+ personFormatterName,
+ errorCode)
+ .build();
+ mfBuilder.setFunctionRegistry(functionRegistryByType);
+ mf = mfBuilder.setPattern("Hello {$name}", parseError, errorCode)
+ .setLocale(locale)
+ .build(errorCode);
+ result = mf.formatToString(arguments, errorCode);
+ assertEquals("testAPICustomFunctions", U_ZERO_ERROR, errorCode);
+ // Expect "Hello John" because in the custom function we registered,
+ // "informal" is the default formality and "length" is the default length
+ assertEquals("testAPICustomFunctions", "Hello John", result);
+ delete person;
+}
+
+void TestMessageFormat2::testValidPatterns(const TestResult* patterns, int32_t len, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testOtherJsonPatterns");
+
+ for (int32_t i = 0; i < len - 1; i++) {
+ TestUtils::runTestCase(*this, testBuilder.setPattern(patterns[i].pattern)
+ .setExpected(patterns[i].output)
+ .setExpectSuccess()
+ .build(), errorCode);
+ }
+}
+
+void TestMessageFormat2::testResolutionErrors(IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testResolutionErrorPattern");
+
+ for (int32_t i = 0; i < numResolutionErrors - 1; i++) {
+ TestUtils::runTestCase(*this, testBuilder.setPattern(jsonTestCasesResolutionError[i].pattern)
+ .setExpected(jsonTestCasesResolutionError[i].output)
+ .setExpectedError(jsonTestCasesResolutionError[i].expected)
+ .build(), errorCode);
+ }
+}
+
+void TestMessageFormat2::testNoSyntaxErrors(const UnicodeString* patterns, int32_t len, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testNoSyntaxErrors");
+
+ for (int32_t i = 0; i < len - 1; i++) {
+ TestUtils::runTestCase(*this, testBuilder.setPattern(patterns[i])
+ .setNoSyntaxError()
+ .build(), errorCode);
+ }
+}
+
+void TestMessageFormat2::testVariousPatterns() {
+ IcuTestErrorCode errorCode(*this, "jsonTests");
+
+ jsonTests(errorCode);
+ testValidPatterns(validTestCases, numValidTestCases, errorCode);
+ testResolutionErrors(errorCode);
+ testNoSyntaxErrors(reservedErrors, numReservedErrors, errorCode);
+ testNoSyntaxErrors(matches, numMatches, errorCode);
+ testNoSyntaxErrors(syntaxTests, numSyntaxTests, errorCode);
+}
+
+void TestMessageFormat2::specTests() {
+ IcuTestErrorCode errorCode(*this, "specTests");
+
+ runSpecTests(errorCode);
+}
+
+/*
+ Tests a single pattern, which is expected to be invalid.
+
+ `testNum`: Test number (only used for diagnostic output)
+ `s`: The pattern string.
+
+ The error is assumed to be on line 0, offset `s.length()`.
+*/
+void TestMessageFormat2::testInvalidPattern(uint32_t testNum, const UnicodeString& s) {
+ testInvalidPattern(testNum, s, s.length(), 0);
+}
+
+/*
+ Tests a single pattern, which is expected to be invalid.
+
+ `testNum`: Test number (only used for diagnostic output)
+ `s`: The pattern string.
+
+ The error is assumed to be on line 0, offset `expectedErrorOffset`.
+*/
+void TestMessageFormat2::testInvalidPattern(uint32_t testNum, const UnicodeString& s, uint32_t expectedErrorOffset) {
+ testInvalidPattern(testNum, s, expectedErrorOffset, 0);
+}
+
+/*
+ Tests a single pattern, which is expected to be invalid.
+
+ `testNum`: Test number (only used for diagnostic output)
+ `s`: The pattern string.
+ `expectedErrorOffset`: The expected character offset for the parse error.
+
+ The error is assumed to be on line `expectedErrorLine`, offset `expectedErrorOffset`.
+*/
+void TestMessageFormat2::testInvalidPattern(uint32_t testNum, const UnicodeString& s, uint32_t expectedErrorOffset, uint32_t expectedErrorLine) {
+ IcuTestErrorCode errorCode(*this, "testInvalidPattern");
+ char testName[50];
+ snprintf(testName, sizeof(testName), "testInvalidPattern: %d", testNum);
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testName");
+
+ TestUtils::runTestCase(*this, testBuilder.setPattern(s)
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .setExpectedLineNumberAndOffset(expectedErrorLine, expectedErrorOffset)
+ .build(), errorCode);
+}
+
+/*
+ Tests a single pattern, which is expected to cause the parser to
+ emit a data model error
+
+ `testNum`: Test number (only used for diagnostic output)
+ `s`: The pattern string.
+ `expectedErrorCode`: the error code expected to be returned by the formatter
+
+ For now, the line and character numbers are not checked
+*/
+void TestMessageFormat2::testSemanticallyInvalidPattern(uint32_t testNum, const UnicodeString& s, UErrorCode expectedErrorCode) {
+ IcuTestErrorCode errorCode(*this, "testInvalidPattern");
+
+ char testName[50];
+ snprintf(testName, sizeof(testName), "testSemanticallyInvalidPattern: %d", testNum);
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testName").setPattern(s);
+ testBuilder.setExpectedError(expectedErrorCode);
+
+ TestUtils::runTestCase(*this, testBuilder.build(), errorCode);
+}
+
+/*
+ Tests a single pattern, which is expected to cause the formatter
+ to emit a resolution error, selection error, or
+ formatting error
+
+ `testNum`: Test number (only used for diagnostic output)
+ `s`: The pattern string.
+ `expectedErrorCode`: the error code expected to be returned by the formatter
+
+ For now, the line and character numbers are not checked
+*/
+void TestMessageFormat2::testRuntimeErrorPattern(uint32_t testNum, const UnicodeString& s, UErrorCode expectedErrorCode) {
+ IcuTestErrorCode errorCode(*this, "testInvalidPattern");
+ char testName[50];
+ snprintf(testName, sizeof(testName), "testInvalidPattern (errors): %u", testNum);
+
+ TestCase::Builder testBuilder;
+ TestUtils::runTestCase(*this, testBuilder.setName(testName)
+ .setPattern(s)
+ .setExpectedError(expectedErrorCode)
+ .build(), errorCode);
+}
+
+/*
+ Tests a single pattern, which is expected to cause the formatter
+ to emit a resolution error, selection error, or
+ formatting error
+
+ `testNum`: Test number (only used for diagnostic output)
+ `s`: The pattern string.
+ `expectedErrorCode`: the error code expected to be returned by the formatter
+
+ For now, the line and character numbers are not checked
+*/
+void TestMessageFormat2::testRuntimeWarningPattern(uint32_t testNum, const UnicodeString& s, const UnicodeString& expectedResult, UErrorCode expectedErrorCode) {
+ IcuTestErrorCode errorCode(*this, "testInvalidPattern");
+ char testName[50];
+ snprintf(testName, sizeof(testName), "testInvalidPattern (warnings): %u", testNum);
+
+ TestCase::Builder testBuilder;
+ TestUtils::runTestCase(*this, testBuilder.setName(testName)
+ .setPattern(s)
+ .setExpected(expectedResult)
+ .setExpectedError(expectedErrorCode)
+ .build(), errorCode);
+}
+
+void TestMessageFormat2::testDataModelErrors() {
+ uint32_t i = 0;
+ IcuTestErrorCode errorCode(*this, "testDataModelErrors");
+
+ // The following tests are syntactically valid but should trigger a data model error
+
+ // Examples taken from https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md
+
+ // Variant key mismatch
+ testSemanticallyInvalidPattern(++i, ".match {$foo :number} {$bar :number} one{{one}}", U_MF_VARIANT_KEY_MISMATCH_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {$foo :number} {$bar :number} one {{one}}", U_MF_VARIANT_KEY_MISMATCH_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {$foo :number} {$bar :number} one {{one}}", U_MF_VARIANT_KEY_MISMATCH_ERROR);
+
+ testSemanticallyInvalidPattern(++i, ".match {$foo :number} * * {{foo}}", U_MF_VARIANT_KEY_MISMATCH_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {$one :number}\n\
+ 1 2 {{Too many}}\n\
+ * {{Otherwise}}", U_MF_VARIANT_KEY_MISMATCH_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {$one :number} {$two :number}\n\
+ 1 2 {{Two keys}}\n\
+ * {{Missing a key}}\n\
+ * * {{Otherwise}}", U_MF_VARIANT_KEY_MISMATCH_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {$foo :x} {$bar :x} * {{foo}}", U_MF_VARIANT_KEY_MISMATCH_ERROR);
+
+ // Non-exhaustive patterns
+ testSemanticallyInvalidPattern(++i, ".match {$one :number}\n\
+ 1 {{Value is one}}\n\
+ 2 {{Value is two}}", U_MF_NONEXHAUSTIVE_PATTERN_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {$one :number} {$two :number}\n\
+ 1 * {{First is one}}\n\
+ * 1 {{Second is one}}", U_MF_NONEXHAUSTIVE_PATTERN_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {:foo} 1 {{_}}", U_MF_NONEXHAUSTIVE_PATTERN_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {:foo} other {{_}}", U_MF_NONEXHAUSTIVE_PATTERN_ERROR);
+
+ // Duplicate option names
+ testSemanticallyInvalidPattern(++i, "{:foo a=1 b=2 a=1}", U_MF_DUPLICATE_OPTION_NAME_ERROR);
+ testSemanticallyInvalidPattern(++i, "{:foo a=1 a=1}", U_MF_DUPLICATE_OPTION_NAME_ERROR);
+ testSemanticallyInvalidPattern(++i, "{:foo a=1 a=2}", U_MF_DUPLICATE_OPTION_NAME_ERROR);
+ testSemanticallyInvalidPattern(++i, "{|x| :foo a=1 a=2}", U_MF_DUPLICATE_OPTION_NAME_ERROR);
+ testSemanticallyInvalidPattern(++i, "bad {:placeholder option=x option=x}", U_MF_DUPLICATE_OPTION_NAME_ERROR);
+ testSemanticallyInvalidPattern(++i, "bad {:placeholder ns:option=x ns:option=y}", U_MF_DUPLICATE_OPTION_NAME_ERROR);
+
+ // Missing selector annotation
+ testSemanticallyInvalidPattern(++i, ".match {$one}\n\
+ 1 {{Value is one}}\n\
+ * {{Value is not one}}", U_MF_MISSING_SELECTOR_ANNOTATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $one = {|The one|}\n\
+ .match {$one}\n\
+ 1 {{Value is one}}\n\
+ * {{Value is not one}}", U_MF_MISSING_SELECTOR_ANNOTATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {|horse| ^private}\n\
+ 1 {{The value is one.}}\n \
+ * {{The value is not one.}}", U_MF_MISSING_SELECTOR_ANNOTATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {$foo !select} |1| {{one}} * {{other}}",
+ U_MF_MISSING_SELECTOR_ANNOTATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".match {$foo ^select} |1| {{one}} * {{other}}",
+ U_MF_MISSING_SELECTOR_ANNOTATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".input {$foo} .match {$foo} one {{one}} * {{other}}", U_MF_MISSING_SELECTOR_ANNOTATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {$bar} .match {$foo} one {{one}} * {{other}}", U_MF_MISSING_SELECTOR_ANNOTATION_ERROR);
+
+ // Duplicate declaration errors
+ testSemanticallyInvalidPattern(++i, ".local $x = {|1|} .input {$x :number} {{{$x}}}",
+ U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".input {$x :number} .input {$x :string} {{{$x}}}",
+ U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".input {$foo} .input {$foo} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".input {$foo} .local $foo = {42} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {42} .input {$foo} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {:unknown} .local $foo = {42} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {$bar} .local $bar = {42} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {$foo} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {$bar} .local $bar = {$baz} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {$bar :func} .local $bar = {$baz} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {42 :func opt=$foo} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+ testSemanticallyInvalidPattern(++i, ".local $foo = {42 :func opt=$bar} .local $bar = {42} {{_}}", U_MF_DUPLICATE_DECLARATION_ERROR);
+
+ // Disambiguating unsupported statements from match
+ testSemanticallyInvalidPattern(++i, ".matc {-1} {{hello}}", U_MF_UNSUPPORTED_STATEMENT_ERROR);
+ testSemanticallyInvalidPattern(++i, ".m {-1} {{hello}}", U_MF_UNSUPPORTED_STATEMENT_ERROR);
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testDataModelErrors");
+
+ // This should *not* trigger a "missing selector annotation" error
+ TestCase test = testBuilder.setPattern(".local $one = {|The one| :string}\n\
+ .match {$one}\n\
+ 1 {{Value is one}}\n\
+ * {{Value is not one}}")
+ .setExpected("Value is not one")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $one = {|The one| :string}\n\
+ .local $two = {$one}\n\
+ .match {$two}\n\
+ 1 {{Value is one}}\n\
+ * {{Value is not one}}")
+ .setExpected("Value is not one")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testResolutionErrors() {
+ uint32_t i = 0;
+
+ // The following tests are syntactically valid and free of data model errors,
+ // but should trigger a resolution error
+
+ // Unresolved variable
+ testRuntimeWarningPattern(++i, "{$oops}", "{$oops}", U_MF_UNRESOLVED_VARIABLE_ERROR);
+ // .input of $x but $x is not supplied as an argument -- also unresolved variable
+ testRuntimeWarningPattern(++i, ".input {$x :number} {{{$x}}}", "{$x}", U_MF_UNRESOLVED_VARIABLE_ERROR);
+
+ // Unknown function
+ testRuntimeWarningPattern(++i, "The value is {horse :func}.", "The value is {|horse|}.", U_MF_UNKNOWN_FUNCTION_ERROR);
+ testRuntimeWarningPattern(++i, ".match {|horse| :func}\n\
+ 1 {{The value is one.}}\n\
+ * {{The value is not one.}}",
+ "The value is not one.", U_MF_UNKNOWN_FUNCTION_ERROR);
+ // Using formatter as selector
+ // The fallback string will match the '*' variant
+ testRuntimeWarningPattern(++i, ".match {|horse| :number}\n\
+ 1 {{The value is one.}}\n\
+ * {{The value is not one.}}", "The value is not one.", U_MF_SELECTOR_ERROR);
+
+ // Using selector as formatter
+ testRuntimeWarningPattern(++i, ".match {|horse| :string}\n\
+ 1 {{The value is one.}}\n \
+ * {{{|horse| :string}}}",
+ "{|horse|}", U_MF_FORMATTING_ERROR);
+
+ // Unsupported expressions
+ testRuntimeErrorPattern(++i, "hello {|4.2| !number}", U_MF_UNSUPPORTED_EXPRESSION_ERROR);
+ testRuntimeErrorPattern(++i, "{<tag}", U_MF_UNSUPPORTED_EXPRESSION_ERROR);
+ testRuntimeErrorPattern(++i, ".local $bar = {|42| ~plural} .match {|horse| :string} * {{{$bar}}}",
+ U_MF_UNSUPPORTED_EXPRESSION_ERROR);
+
+ // Selector error
+ // Here, the plural selector returns "no match" so the * variant matches
+ testRuntimeWarningPattern(++i, ".match {|horse| :number}\n\
+ 1 {{The value is one.}}\n\
+ * {{The value is not one.}}", "The value is not one.", U_MF_SELECTOR_ERROR);
+ testRuntimeWarningPattern(++i, ".local $sel = {|horse| :number}\n\
+ .match {$sel}\n\
+ 1 {{The value is one.}}\n\
+ * {{The value is not one.}}", "The value is not one.", U_MF_SELECTOR_ERROR);
+}
+
+void TestMessageFormat2::testInvalidPatterns() {
+/*
+ These tests are mostly from the test suite created for the JavaScript implementation of MessageFormat v2:
+ <p>Original JSON file
+ <a href="https://github.com/messageformat/messageformat/blob/master/packages/mf2-messageformat/src/__fixtures/test-messages.json">here</a>.</p>
+ Some have been modified or added to reflect syntax changes that post-date the JSON file.
+
+ */
+ uint32_t i = 0;
+
+ // Unexpected end of input
+ testInvalidPattern(++i, ".local ");
+ testInvalidPattern(++i, ".lo");
+ testInvalidPattern(++i, ".local $foo");
+ testInvalidPattern(++i, ".local $foo = ");
+ testInvalidPattern(++i, "{:fszzz");
+ testInvalidPattern(++i, "{:fszzz ");
+ testInvalidPattern(++i, ".match {$foo} |xyz");
+ testInvalidPattern(++i, "{:f aaa");
+ testInvalidPattern(++i, "{{missing end brace");
+ testInvalidPattern(++i, "{{missing end brace}");
+ testInvalidPattern(++i, "{{missing end {$brace");
+ testInvalidPattern(++i, "{{missing end {$brace}");
+ testInvalidPattern(++i, "{{missing end {$brace}}");
+
+ // Error should be reported at character 0, not end of input
+ testInvalidPattern(++i, "}{|xyz|", 0);
+ testInvalidPattern(++i, "}", 0);
+
+ // %xyz is a valid annotation (`reserved`) so the error should be at the end of input
+ testInvalidPattern(++i, "{{%xyz");
+ // Backslash followed by non-backslash followed by a '{' -- this should be an error
+ // immediately after the first backslash
+ testInvalidPattern(++i, "{{{%\\y{}}", 5);
+
+ // Reserved chars followed by a '|' that doesn't begin a valid literal -- this should be
+ // an error at the first invalid char in the literal
+ testInvalidPattern(++i, "{%abc|\\z}}", 7);
+
+ // Same pattern, but with a valid reserved-char following the erroneous reserved-escape
+ // -- the offset should be the same as with the previous one
+ testInvalidPattern(++i, "{%\\y{p}}", 3);
+ // Erroneous literal inside a reserved string -- the error should be at the first
+ // erroneous literal char
+ testInvalidPattern(++i, "{{{%ab|\\z|cd}}", 8);
+
+ // tests for reserved syntax with bad escaped chars
+ // Single backslash - not allowed
+ testInvalidPattern(++i, "hello {|4.2| %num\\ber}}", 18);
+ // Unescaped '{' -- not allowed
+ testInvalidPattern(++i, "hello {|4.2| %num{be\\|r}}", 17);
+ // Unescaped '}' -- will be interpreted as the end of the reserved
+ // string, and the error will be reported at the index of '|', which is
+ // when the parser determines that "\|" isn't a valid text-escape
+ testInvalidPattern(++i, "hello {|4.2| %num}be\\|r}}", 21);
+ // Unescaped '|' -- will be interpreted as the beginning of a literal
+ // Error at end of input
+ testInvalidPattern(++i, "hello {|4.2| %num\\{be|r}}", 25);
+
+ // Invalid escape sequence in a `text` -- the error should be at the character
+ // following the backslash
+ testInvalidPattern(++i, "a\\qbc", 2);
+
+ // No spaces are required here. The error should be
+ // in the pattern, not before
+ testInvalidPattern(++i, ".match{|y|}|y|{{{|||}}}", 19);
+
+ // Missing spaces betwen keys
+ testInvalidPattern(++i, ".match {|y|}|foo|bar {{{a}}}", 17);
+ testInvalidPattern(++i, ".match {|y|} |quux| |foo|bar {{{a}}}", 25);
+ testInvalidPattern(++i, ".match {|y|} |quux| |foo||bar| {{{a}}}", 26);
+
+ // Error parsing the first key -- the error should be there, not in the
+ // also-erroneous third key
+ testInvalidPattern(++i, ".match {|y|} |\\q| * %{! {z}", 16);
+
+ // Error parsing the second key -- the error should be there, not in the
+ // also-erroneous third key
+ testInvalidPattern(++i, ".match {|y|} * %{! {z} |\\q|", 16);
+
+ // Error parsing the last key -- the error should be there, not in the erroneous
+ // pattern
+ testInvalidPattern(++i, ".match {|y|} * |\\q| {\\z}", 18);
+
+ // Non-expression as scrutinee in pattern -- error should be at the first
+ // non-expression, not the later non-expression
+ testInvalidPattern(++i, ".match {|y|} {\\|} {@} * * * {{a}}", 14);
+
+ // Non-key in variant -- error should be there, not in the next erroneous
+ // variant
+ testInvalidPattern(++i, ".match {|y|} $foo * {{a}} when * :bar {{b}}", 14);
+
+
+ // Error should be within the first erroneous `text` or expression
+ testInvalidPattern(++i, "{{ foo {|bar|} \\q baz ", 16);
+
+ // ':' has to be followed by a function name -- the error should be at the first
+ // whitespace character
+ testInvalidPattern(++i, "{{{: }}}", 4);
+
+ // Expression not starting with a '{'
+ testInvalidPattern(++i, ".local $x = }|foo|}", 12);
+
+ // Error should be at the first declaration not starting with a `.local`
+ testInvalidPattern(++i, ".local $x = {|foo|} .l $y = {|bar|} .local $z {|quux|}", 22);
+
+ // Missing '=' in `.local` declaration
+ testInvalidPattern(++i, ".local $bar {|foo|} {{$bar}}", 12);
+
+ // LHS of declaration doesn't start with a '$'
+ testInvalidPattern(++i, ".local bar = {|foo|} {{$bar}}", 7);
+
+ // `.local` RHS isn't an expression
+ testInvalidPattern(++i, ".local $bar = |foo| {{$bar}}", 14);
+
+ // Trailing characters that are not whitespace
+ testInvalidPattern(++i, "{{extra}}content", 9);
+ testInvalidPattern(++i, ".match {|x|} * {{foo}}extra", 28);
+
+ // Trailing whitespace at end of message should not be accepted either
+ UnicodeString longMsg(".match {$foo :string} {$bar :string} one * {{one}} * * {{other}} ");
+ testInvalidPattern(++i, longMsg, longMsg.length() - 3);
+ testInvalidPattern(++i, "{{hi}} ", 6);
+
+ // Empty expression
+ testInvalidPattern(++i, "empty { }", 8);
+ testInvalidPattern(++i, ".match {} * {{foo}}", 8);
+
+ // ':' not preceding a function name
+ testInvalidPattern(++i, "bad {:}", 6);
+
+ // Missing '=' after option name
+ testInvalidPattern(++i, "{{no-equal {|42| :number m }}}", 27);
+ testInvalidPattern(++i, "{{no-equal {|42| :number minimumFractionDigits 2}}}", 47);
+ testInvalidPattern(++i, "bad {:placeholder option value}", 25);
+
+ // Extra '=' after option value
+ testInvalidPattern(++i, "hello {|4.2| :number min=2=3}", 26),
+ testInvalidPattern(++i, "hello {|4.2| :number min=2max=3}", 26),
+ // Missing whitespace between valid options
+ testInvalidPattern(++i, "hello {|4.2| :number min=|a|max=3}", 28),
+ // Ill-formed RHS of option -- the error should be within the RHS,
+ // not after parsing options
+ testInvalidPattern(++i, "hello {|4.2| :number min=|\\a|}", 27),
+
+
+ // Junk after annotation
+ testInvalidPattern(++i, "no-equal {|42| :number {}", 25);
+
+ // Missing RHS of option
+ testInvalidPattern(++i, "bad {:placeholder option=}", 25);
+ testInvalidPattern(++i, "bad {:placeholder option}", 24);
+
+ // Annotation is not a function or reserved text
+ testInvalidPattern(++i, "bad {$placeholder option}", 18);
+ testInvalidPattern(++i, "no {$placeholder end", 17);
+
+ // Missing expression in selectors
+ testInvalidPattern(++i, ".match * {{foo}}", 8);
+ // Non-expression in selectors
+ testInvalidPattern(++i, ".match |x| * {{foo}}", 7);
+
+ // Missing RHS in variant
+ testInvalidPattern(++i, ".match {|x|} * foo");
+
+ // Text may include newlines; check that the missing closing '}' is
+ // reported on the correct line
+ testInvalidPattern(++i, "{{hello wo\nrld", 3, 1);
+ testInvalidPattern(++i, "{{hello wo\nr\nl\ndddd", 4, 3);
+ // Offset for end-of-input should be 0 here because the line begins
+ // after the '\n', but there is no character after the '\n'
+ testInvalidPattern(++i, "{{hello wo\nr\nl\n", 0, 3);
+
+ // Quoted literals may include newlines; check that the missing closing '|' is
+ // reported on the correct line
+ testInvalidPattern(++i, "hello {|wo\nrld", 3, 1);
+ testInvalidPattern(++i, "hello {|wo\nr\nl\ndddd", 4, 3);
+ // Offset for end-of-input should be 0 here because the line begins
+ // after the '\n', but there is no character after the '\n'
+ testInvalidPattern(++i, "hello {|wo\nr\nl\n", 0, 3);
+
+ // Variable names can't start with a : or -
+ testInvalidPattern(++i, "{$:abc}", 2);
+ testInvalidPattern(++i, "{$-abc}", 2);
+
+ // Missing space before annotation
+ // Note that {{$bar:foo}} and {{$bar-foo}} are valid,
+ // because variable names can contain a ':' or a '-'
+ testInvalidPattern(++i, "{$bar+foo}", 5);
+ testInvalidPattern(++i, "{|3.14|:foo}", 7);
+ testInvalidPattern(++i, "{|3.14|-foo}", 7);
+ testInvalidPattern(++i, "{|3.14|+foo}", 7);
+
+ // Unquoted literals can't begin with a ':'
+ testInvalidPattern(++i, ".local $foo = {$bar} .match {$foo} :one {one} * {other}", 36);
+ testInvalidPattern(++i, ".local $foo = {$bar :fun option=:a} {{bar {$foo}}}", 32);
+
+ // Markup in wrong place
+ testInvalidPattern(++i, "{|foo| {#markup}}", 7);
+ testInvalidPattern(++i, "{|foo| #markup}", 7);
+ testInvalidPattern(++i, "{|foo| {#markup/}}", 7);
+ testInvalidPattern(++i, "{|foo| {/markup}}", 7);
+
+ // .input with non-variable-expression
+ testInvalidPattern(++i, ".input $x = {|1|} {{{$x}}}", 7);
+ testInvalidPattern(++i, ".input $x = {:number} {{{$x}}}", 7);
+ testInvalidPattern(++i, ".input {|1| :number} {{{$x}}}", 7);
+ testInvalidPattern(++i, ".input {:number} {{{$x}}}", 7);
+ testInvalidPattern(++i, ".input {|1|} {{{$x}}}", 7);
+
+ // invalid number literals
+ testInvalidPattern(++i, "{00}", 2);
+ testInvalidPattern(++i, "{042}", 2);
+ testInvalidPattern(++i, "{1.}", 3);
+ testInvalidPattern(++i, "{1e}", 3);
+ testInvalidPattern(++i, "{1E}", 3);
+ testInvalidPattern(++i, "{1.e}", 3);
+ testInvalidPattern(++i, "{1.2e}", 5);
+ testInvalidPattern(++i, "{1.e3}", 3);
+ testInvalidPattern(++i, "{1e+}", 4);
+ testInvalidPattern(++i, "{1e-}", 4);
+ testInvalidPattern(++i, "{1.0e2.0}", 6);
+
+ // The following are from https://github.com/unicode-org/message-format-wg/blob/main/test/syntax-errors.json
+ testInvalidPattern(++i,".", 1);
+ testInvalidPattern(++i, "{", 1);
+ testInvalidPattern(++i, "}", 0);
+ testInvalidPattern(++i, "{}", 1);
+ testInvalidPattern(++i, "{{", 2);
+ testInvalidPattern(++i, "{{}", 3);
+ testInvalidPattern(++i, "{{}}}", 4);
+ testInvalidPattern(++i, "{|foo| #markup}", 7);
+ testInvalidPattern(++i, "{{missing end brace}", 20);
+ testInvalidPattern(++i, "{{missing end braces", 20);
+ testInvalidPattern(++i, "{{missing end {$braces", 22);
+ testInvalidPattern(++i, "{{extra}} content", 9);
+ testInvalidPattern(++i, "empty { } placeholder", 8);
+ testInvalidPattern(++i, "missing space {42:func}", 17);
+ testInvalidPattern(++i, "missing space {|foo|:func}", 20);
+ testInvalidPattern(++i, "missing space {|foo|@bar}", 20);
+ testInvalidPattern(++i, "missing space {:func@bar}", 20);
+ testInvalidPattern(++i, "{:func @bar@baz}", 11);
+ testInvalidPattern(++i, "{:func @bar=42@baz}", 14);
+ testInvalidPattern(++i, "{+reserved@bar}", 10);
+ testInvalidPattern(++i, "{&private@bar}", 9);
+ testInvalidPattern(++i, "bad {:} placeholder", 6);
+ testInvalidPattern(++i, "bad {\\u0000placeholder}", 5);
+ testInvalidPattern(++i, "no-equal {|42| :number minimumFractionDigits 2}", 45);
+ testInvalidPattern(++i, "bad {:placeholder option=}", 25);
+ testInvalidPattern(++i, "bad {:placeholder option value}", 25);
+ testInvalidPattern(++i, "bad {:placeholder option:value}", 30);
+ testInvalidPattern(++i, "bad {:placeholder option}", 24);
+ testInvalidPattern(++i, "bad {:placeholder:}", 18);
+ testInvalidPattern(++i, "bad {::placeholder}", 6);
+ testInvalidPattern(++i, "bad {:placeholder::foo}", 18);
+ testInvalidPattern(++i, "bad {:placeholder option:=x}", 25);
+ testInvalidPattern(++i, "bad {:placeholder :option=x}", 18);
+ testInvalidPattern(++i, "bad {:placeholder option::x=y}", 25);
+ testInvalidPattern(++i, "bad {$placeholder option}", 18);
+ testInvalidPattern(++i, "bad {:placeholder @attribute=}", 29);
+ testInvalidPattern(++i, "bad {:placeholder @attribute=@foo}", 29);
+ testInvalidPattern(++i, "no {placeholder end", 16);
+ testInvalidPattern(++i, "no {$placeholder end", 17);
+ testInvalidPattern(++i, "no {:placeholder end", 20);
+ testInvalidPattern(++i, "no {|placeholder| end", 18);
+ testInvalidPattern(++i, "no {|literal} end", 17);
+ testInvalidPattern(++i, "no {|literal or placeholder end", 31);
+ testInvalidPattern(++i, ".local bar = {|foo|} {{_}}", 7);
+ testInvalidPattern(++i, ".local #bar = {|foo|} {{_}}", 7);
+ testInvalidPattern(++i, ".local $bar {|foo|} {{_}}", 12);
+ testInvalidPattern(++i, ".local $bar = |foo| {{_}}", 14);
+ testInvalidPattern(++i, ".match {#foo} * {{foo}}", 8);
+ testInvalidPattern(++i, ".match {} * {{foo}}", 8);
+ testInvalidPattern(++i, ".match {|foo| :x} {|bar| :x} ** {{foo}}", 30);
+ testInvalidPattern(++i, ".match * {{foo}}", 7);
+ testInvalidPattern(++i, ".match {|x| :x} * foo", 21);
+ testInvalidPattern(++i, ".match {|x| :x} * {{foo}} extra", 31);
+ testInvalidPattern(++i, ".match |x| * {{foo}}", 7);
+
+ // tests for ':' in unquoted literals (not allowed)
+ testInvalidPattern(++i, ".match {|foo| :string} o:ne {{one}} * {{other}}", 24);
+ testInvalidPattern(++i, ".match {|foo| :string} one: {{one}} * {{other}}", 26);
+ testInvalidPattern(++i, ".local $foo = {|42| :number option=a:b} {{bar {$foo}}}", 36);
+ testInvalidPattern(++i, ".local $foo = {|42| :number option=a:b:c} {{bar {$foo}}}", 36);
+ testInvalidPattern(++i, "{$bar:foo}", 5);
+
+ // Disambiguating a wrong .match from an unsupported statement
+ testInvalidPattern(++i, ".match {1} {{_}}", 12);
+}
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
diff --git a/icu4c/source/test/intltest/messageformat2test.h b/icu4c/source/test/intltest/messageformat2test.h
new file mode 100644
index 000000000..661b0ba6d
--- /dev/null
+++ b/icu4c/source/test/intltest/messageformat2test.h
@@ -0,0 +1,206 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef _TESTMESSAGEFORMAT2
+#define _TESTMESSAGEFORMAT2
+
+#include "unicode/rep.h"
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "messageformat2test_utils.h"
+#include "unicode/unistr.h"
+#include "unicode/messageformat2_formattable.h"
+#include "unicode/parseerr.h"
+#include "intltest.h"
+
+/**
+ * TestMessageFormat2 tests MessageFormat2
+ */
+
+struct TestResult {
+ const UnicodeString pattern;
+ const UnicodeString output;
+};
+
+struct TestResultError {
+ const UnicodeString pattern;
+ const UnicodeString output;
+ UErrorCode expected;
+};
+
+class TestMessageFormat2: public IntlTest {
+public:
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+
+ /**
+ * test MessageFormat2 with various given patterns
+ **/
+ void testVariousPatterns(void);
+ void featureTests(void);
+ void messageFormat1Tests(void);
+ void testAPICustomFunctions(void);
+ // Test custom functions
+ void testCustomFunctions(void);
+ // Test standard functions
+ void testBuiltInFunctions(void);
+ void testDataModelErrors(void);
+ void testResolutionErrors(void);
+ // Test the data model API
+ void testDataModelAPI(void);
+ void testAPI(void);
+ void testInvalidPatterns(void);
+ void testAPISimple(void);
+
+private:
+
+ void testSemanticallyInvalidPattern(uint32_t, const UnicodeString&, UErrorCode);
+ void testRuntimeErrorPattern(uint32_t, const UnicodeString&, UErrorCode);
+ void testRuntimeWarningPattern(uint32_t, const UnicodeString&, const UnicodeString&, UErrorCode);
+ void testInvalidPattern(uint32_t, const UnicodeString&);
+ void testInvalidPattern(uint32_t, const UnicodeString&, uint32_t);
+ void testInvalidPattern(uint32_t, const UnicodeString&, uint32_t, uint32_t);
+ void testValidPatterns(const TestResult*, int32_t, IcuTestErrorCode&);
+ void testResolutionErrors(IcuTestErrorCode&);
+ void testNoSyntaxErrors(const UnicodeString*, int32_t, IcuTestErrorCode&);
+ void jsonTests(IcuTestErrorCode&);
+ void specTests();
+ void runSpecTests(IcuTestErrorCode&);
+
+ // Built-in function testing
+ void testDateTime(IcuTestErrorCode&);
+ void testNumbers(IcuTestErrorCode&);
+
+ // Custom function testing
+ void testPersonFormatter(IcuTestErrorCode&);
+ void testCustomFunctionsComplexMessage(IcuTestErrorCode&);
+ void testGrammarCasesFormatter(IcuTestErrorCode&);
+ void testListFormatter(IcuTestErrorCode&);
+ void testMessageRefFormatter(IcuTestErrorCode&);
+
+ // Feature tests
+ void testEmptyMessage(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testPlainText(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testPlaceholders(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testArgumentMissing(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testDefaultLocale(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testSpecialPluralWithDecimals(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testDefaultFunctionAndOptions(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testSimpleSelection(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testComplexSelection(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testSimpleLocalVariable(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testLocalVariableWithSelect(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testDateFormat(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testPlural(message2::TestCase::Builder&, IcuTestErrorCode&);
+
+ void testPluralOrdinal(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testDeclareBeforeUse(message2::TestCase::Builder&, IcuTestErrorCode&);
+
+ // MessageFormat 1 tests
+ void testSample(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testStaticFormat(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testSimpleFormat(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testSelectFormatToPattern(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testMessageFormatDateTimeSkeleton(message2::TestCase::Builder&, IcuTestErrorCode&);
+ void testMf1Behavior(message2::TestCase::Builder&, IcuTestErrorCode&);
+
+}; // class TestMessageFormat2
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+// Custom function classes
+class PersonNameFormatterFactory : public FormatterFactory {
+
+ public:
+ Formatter* createFormatter(const Locale&, UErrorCode&) override;
+};
+
+class Person : public FormattableObject {
+ public:
+ UnicodeString title;
+ UnicodeString firstName;
+ UnicodeString lastName;
+ Person(UnicodeString t, UnicodeString f, UnicodeString l) : title(t), firstName(f), lastName(l), tagName("person") {}
+ ~Person();
+ const UnicodeString& tag() const override { return tagName; }
+ private:
+ const UnicodeString tagName;
+};
+
+class PersonNameFormatter : public Formatter {
+ public:
+ FormattedPlaceholder format(FormattedPlaceholder&&, FunctionOptions&& opts, UErrorCode& errorCode) const override;
+};
+
+class FormattableProperties : public FormattableObject {
+ public:
+ const UnicodeString& tag() const override { return tagName; }
+ FormattableProperties(Hashtable* hash) : properties(hash), tagName("properties") {
+ U_ASSERT(hash != nullptr);
+ }
+ ~FormattableProperties();
+ LocalPointer<Hashtable> properties;
+private:
+ const UnicodeString tagName;
+};
+
+class GrammarCasesFormatterFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale&, UErrorCode&) override;
+};
+
+class GrammarCasesFormatter : public Formatter {
+ public:
+ FormattedPlaceholder format(FormattedPlaceholder&&, FunctionOptions&& opts, UErrorCode& errorCode) const override;
+ static MFFunctionRegistry customRegistry(UErrorCode&);
+ private:
+ void getDativeAndGenitive(const UnicodeString&, UnicodeString& result) const;
+};
+
+class ListFormatterFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale&, UErrorCode&) override;
+};
+
+class ListFormatter : public Formatter {
+ public:
+ FormattedPlaceholder format(FormattedPlaceholder&&, FunctionOptions&& opts, UErrorCode& errorCode) const override;
+ static MFFunctionRegistry customRegistry(UErrorCode&);
+ private:
+ friend class ListFormatterFactory;
+ const Locale& locale;
+ ListFormatter(const Locale& loc) : locale(loc) {}
+};
+
+class ResourceManagerFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale&, UErrorCode&) override;
+};
+
+class ResourceManager : public Formatter {
+ public:
+ FormattedPlaceholder format(FormattedPlaceholder&&, FunctionOptions&& opts, UErrorCode& errorCode) const override;
+ static MFFunctionRegistry customRegistry(UErrorCode&);
+ static Hashtable* properties(UErrorCode&);
+ static UnicodeString propertiesAsString(const Hashtable&);
+ static Hashtable* parseProperties(const UnicodeString&, UErrorCode&);
+
+ private:
+ friend class ResourceManagerFactory;
+ ResourceManager(const Locale& loc) : locale(loc) {}
+ const Locale& locale;
+};
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif
diff --git a/icu4c/source/test/intltest/messageformat2test_builtin.cpp b/icu4c/source/test/intltest/messageformat2test_builtin.cpp
new file mode 100644
index 000000000..3a0a7ceef
--- /dev/null
+++ b/icu4c/source/test/intltest/messageformat2test_builtin.cpp
@@ -0,0 +1,195 @@
+// © 2024 and later: Unicode, Inc. and others.
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/calendar.h"
+#include "messageformat2test.h"
+
+using namespace icu::message2;
+
+/*
+Tests reflect the syntax specified in
+
+ https://github.com/unicode-org/message-format-wg/commits/main/spec/message.abnf
+
+ release LDML45-alpha:
+
+ https://github.com/unicode-org/message-format-wg/releases/tag/LDML45-alpha
+*/
+
+void TestMessageFormat2::testDateTime(IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ LocalPointer<Calendar> cal(Calendar::createInstance(errorCode));
+ TestCase::Builder testBuilder;
+
+ testBuilder.setName("testDateTime");
+ // November 23, 2022 at 7:42:37.123 PM
+ cal->set(2022, Calendar::NOVEMBER, 23, 19, 42, 37);
+ UDate TEST_DATE = cal->getTime(errorCode);
+ UnicodeString date = "date";
+ testBuilder.setLocale(Locale("ro"));
+
+ TestCase test = testBuilder.setPattern("Testing date formatting: {$date :datetime}.")
+ .setExpected("Testing date formatting: 23.11.2022, 19:42.")
+ .setDateArgument(date, TEST_DATE)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Formatted string as argument -- `:date` should format the source Formattable
+ test = testBuilder.setPattern(".local $dateStr = {$date :datetime}\n\
+ {{Testing date formatting: {$dateStr :datetime}}}")
+ .setExpected("Testing date formatting: 23.11.2022, 19:42.")
+ .setExpectSuccess()
+ .setDateArgument(date, TEST_DATE)
+ .build();
+ // Style
+
+ testBuilder.setLocale(Locale("en", "US"));
+
+ test = testBuilder.setPattern("Testing date formatting: {$date :date style=long}.")
+ .setExpected("Testing date formatting: November 23, 2022.")
+ .setDateArgument(date, TEST_DATE)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Testing date formatting: {$date :date style=medium}.")
+ .setExpected("Testing date formatting: Nov 23, 2022.")
+ .setDateArgument(date, TEST_DATE)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Testing date formatting: {$date :date style=short}.")
+ .setExpected("Testing date formatting: 11/23/22.")
+ .setDateArgument(date, TEST_DATE)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Testing date formatting: {$date :time style=long}.")
+ .setExpected(CharsToUnicodeString("Testing date formatting: 7:42:37\\u202FPM PST."))
+ .setDateArgument(date, TEST_DATE)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Testing date formatting: {$date :time style=medium}.")
+ .setExpected(CharsToUnicodeString("Testing date formatting: 7:42:37\\u202FPM."))
+ .setDateArgument(date, TEST_DATE)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Testing date formatting: {$date :time style=short}.")
+ .setExpected(CharsToUnicodeString("Testing date formatting: 7:42\\u202FPM."))
+ .setDateArgument(date, TEST_DATE)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Error cases
+ // Number as argument
+ test = testBuilder.setPattern(".local $num = {|42| :number}\n\
+ {{Testing date formatting: {$num :datetime}}}")
+ .clearArguments()
+ .setExpected("Testing date formatting: {|42|}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ // Literal string as argument
+ test = testBuilder.setPattern("Testing date formatting: {|horse| :datetime}")
+ .setExpected("Testing date formatting: {|horse|}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .build();
+
+ TestUtils::runTestCase(*this, test, errorCode);
+
+}
+
+void TestMessageFormat2::testNumbers(IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ double value = 1234567890.97531;
+ UnicodeString val = "val";
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testNumbers");
+
+ // Literals
+ TestCase test = testBuilder.setPattern("From literal: {123456789 :number}!")
+ .setArgument(val, value)
+ .setExpected("From literal: 123.456.789!")
+ .setLocale(Locale("ro"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("From literal: {|123456789.531| :number}!")
+ .setArgument(val, value)
+ .setExpected("From literal: 123.456.789,531!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // This should fail, because number literals are not treated
+ // as localized numbers
+ test = testBuilder.setPattern("From literal: {|123456789,531| :number}!")
+ .setArgument(val, value)
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("From literal: {|123456789,531|}!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("From literal: {|123456789.531| :number}!")
+ .setArgument(val, value)
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("From literal: \\u1041\\u1042\\u1043,\\u1044\\u1045\\u1046,\\u1047\\u1048\\u1049.\\u1045\\u1043\\u1041!"))
+ .setLocale(Locale("my"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+
+ // Testing that the detection works for various types (without specifying :number)
+ test = testBuilder.setPattern("Default double: {$val}!")
+ .setLocale(Locale("en", "IN"))
+ .setArgument(val, value)
+ .setExpected("Default double: 1,23,45,67,890.97531!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setPattern("Default double: {$val}!")
+ .setLocale(Locale("ro"))
+ .setArgument(val, value)
+ .setExpected("Default double: 1.234.567.890,97531!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setPattern("Default float: {$val}!")
+ .setLocale(Locale("ro"))
+ .setArgument(val, 3.1415926535)
+ .setExpected("Default float: 3,141593!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setPattern("Default int64: {$val}!")
+ .setLocale(Locale("ro"))
+ .setArgument(val, (int64_t) 1234567890123456789)
+ .setExpected("Default int64: 1.234.567.890.123.456.789!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setPattern("Default number: {$val}!")
+ .setLocale(Locale("ro"))
+ .setDecimalArgument(val, "1234567890123456789.987654321", errorCode)
+ .setExpected("Default number: 1.234.567.890.123.456.789,987654!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Omitted CurrencyAmount test from ICU4J since it's not supported by Formattable
+
+}
+
+void TestMessageFormat2::testBuiltInFunctions() {
+ IcuTestErrorCode errorCode(*this, "testBuiltInFunctions");
+
+ testDateTime(errorCode);
+ testNumbers(errorCode);
+}
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/messageformat2test_custom.cpp b/icu4c/source/test/intltest/messageformat2test_custom.cpp
new file mode 100644
index 000000000..2d7d89ee2
--- /dev/null
+++ b/icu4c/source/test/intltest/messageformat2test_custom.cpp
@@ -0,0 +1,732 @@
+// © 2024 and later: Unicode, Inc. and others.
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "plurrule_impl.h"
+
+#include "unicode/listformatter.h"
+#include "messageformat2test.h"
+#include "hash.h"
+#include "intltest.h"
+
+
+using namespace message2;
+using namespace pluralimpl;
+
+/*
+Tests reflect the syntax specified in
+
+ https://github.com/unicode-org/message-format-wg/commits/main/spec/message.abnf
+
+as of the following commit from 2023-05-09:
+ https://github.com/unicode-org/message-format-wg/commit/194f6efcec5bf396df36a19bd6fa78d1fa2e0867
+*/
+
+using namespace data_model;
+
+void TestMessageFormat2::testPersonFormatter(IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ MFFunctionRegistry customRegistry(MFFunctionRegistry::Builder(errorCode)
+ .adoptFormatter(FunctionName("person"), new PersonNameFormatterFactory(), errorCode)
+ .build());
+ UnicodeString name = "name";
+ LocalPointer<Person> person(new Person(UnicodeString("Mr."), UnicodeString("John"), UnicodeString("Doe")));
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testPersonFormatter");
+ testBuilder.setLocale(Locale("en"));
+
+ TestCase test = testBuilder.setPattern("Hello {$name :person formality=formal}")
+ .setArgument(name, person.getAlias())
+ .setExpected("Hello {$name}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Hello {$name :person formality=informal}")
+ .setArgument(name, person.getAlias())
+ .setExpected("Hello {$name}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ testBuilder.setFunctionRegistry(&customRegistry);
+
+ test = testBuilder.setPattern("Hello {$name :person formality=formal}")
+ .setArgument(name, person.getAlias())
+ .setExpected("Hello Mr. Doe")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Hello {$name :person formality=informal}")
+ .setArgument(name, person.getAlias())
+ .setExpected("Hello John")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Hello {$name :person formality=formal length=long}")
+ .setArgument(name, person.getAlias())
+ .setExpected("Hello Mr. John Doe")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Hello {$name :person formality=formal length=medium}")
+ .setArgument(name, person.getAlias())
+ .setExpected("Hello John Doe")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("Hello {$name :person formality=formal length=short}")
+ .setArgument(name, person.getAlias())
+ .setExpected("Hello Mr. Doe")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testCustomFunctionsComplexMessage(IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ MFFunctionRegistry customRegistry(MFFunctionRegistry::Builder(errorCode)
+ .adoptFormatter(FunctionName("person"), new PersonNameFormatterFactory(), errorCode)
+ .build());
+ UnicodeString host = "host";
+ UnicodeString hostGender = "hostGender";
+ UnicodeString guest = "guest";
+ UnicodeString guestCount = "guestCount";
+
+ LocalPointer<Person> jane(new Person(UnicodeString("Ms."), UnicodeString("Jane"), UnicodeString("Doe")));
+ LocalPointer<Person> john(new Person(UnicodeString("Mr."), UnicodeString("John"), UnicodeString("Doe")));
+ LocalPointer<Person> anonymous(new Person(UnicodeString("Mx."), UnicodeString("Anonymous"), UnicodeString("Doe")));
+
+ if (!jane.isValid() || !john.isValid() || !anonymous.isValid()) {
+ ((UErrorCode&) errorCode) = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ UnicodeString message = ".local $hostName = {$host :person length=long}\n\
+ .local $guestName = {$guest :person length=long}\n\
+ .input {$guestCount :number}\n\
+ .match {$hostGender :string} {$guestCount :number}\n\
+ female 0 {{{$hostName} does not give a party.}}\n\
+ female 1 {{{$hostName} invites {$guestName} to her party.}}\n\
+ female 2 {{{$hostName} invites {$guestName} and one other person to her party.}}\n\
+ female * {{{$hostName} invites {$guestCount} people, including {$guestName}, to her party.}}\n\
+ male 0 {{{$hostName} does not give a party.}}\n\
+ male 1 {{{$hostName} invites {$guestName} to his party.}}\n\
+ male 2 {{{$hostName} invites {$guestName} and one other person to his party.}}\n\
+ male * {{{$hostName} invites {$guestCount} people, including {$guestName}, to his party.}}\n\
+ * 0 {{{$hostName} does not give a party.}}\n\
+ * 1 {{{$hostName} invites {$guestName} to their party.}}\n\
+ * 2 {{{$hostName} invites {$guestName} and one other person to their party.}}\n\
+ * * {{{$hostName} invites {$guestCount} people, including {$guestName}, to their party.}}";
+
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testCustomFunctionsComplexMessage");
+ testBuilder.setLocale(Locale("en"));
+ testBuilder.setPattern(message);
+ testBuilder.setFunctionRegistry(&customRegistry);
+
+ TestCase test = testBuilder.setArgument(host, jane.getAlias())
+ .setArgument(hostGender, "female")
+ .setArgument(guest, john.getAlias())
+ .setArgument(guestCount, (int64_t) 3)
+ .setExpected("Ms. Jane Doe invites 3 people, including Mr. John Doe, to her party.")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument(host, jane.getAlias())
+ .setArgument(hostGender, "female")
+ .setArgument(guest, john.getAlias())
+ .setArgument(guestCount, (int64_t) 2)
+ .setExpected("Ms. Jane Doe invites Mr. John Doe and one other person to her party.")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument(host, jane.getAlias())
+ .setArgument(hostGender, "female")
+ .setArgument(guest, john.getAlias())
+ .setArgument(guestCount, (int64_t) 1)
+ .setExpected("Ms. Jane Doe invites Mr. John Doe to her party.")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument(host, john.getAlias())
+ .setArgument(hostGender, "male")
+ .setArgument(guest, jane.getAlias())
+ .setArgument(guestCount, (int64_t) 3)
+ .setExpected("Mr. John Doe invites 3 people, including Ms. Jane Doe, to his party.")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument(host, anonymous.getAlias())
+ .setArgument(hostGender, "unknown")
+ .setArgument(guest, jane.getAlias())
+ .setArgument(guestCount, (int64_t) 2)
+ .setExpected("Mx. Anonymous Doe invites Ms. Jane Doe and one other person to their party.")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testCustomFunctions() {
+ IcuTestErrorCode errorCode(*this, "testCustomFunctions");
+
+ testPersonFormatter(errorCode);
+ testCustomFunctionsComplexMessage(errorCode);
+ testGrammarCasesFormatter(errorCode);
+ testListFormatter(errorCode);
+ testMessageRefFormatter(errorCode);
+}
+
+
+// -------------- Custom function implementations
+
+Formatter* PersonNameFormatterFactory::createFormatter(const Locale& locale, UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return nullptr;
+ }
+
+ // Locale not used
+ (void) locale;
+
+ Formatter* result = new PersonNameFormatter();
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+message2::FormattedPlaceholder PersonNameFormatter::format(FormattedPlaceholder&& arg, FunctionOptions&& options, UErrorCode& errorCode) const {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ message2::FormattedPlaceholder errorVal = message2::FormattedPlaceholder("not a person");
+
+ if (!arg.canFormat() || arg.asFormattable().getType() != UFMT_OBJECT) {
+ return errorVal;
+ }
+ const Formattable& toFormat = arg.asFormattable();
+
+ FunctionOptionsMap opt = options.getOptions();
+ bool hasFormality = opt.count("formality") > 0 && opt["formality"].getType() == UFMT_STRING;
+ bool hasLength = opt.count("length") > 0 && opt["length"].getType() == UFMT_STRING;
+
+ bool useFormal = hasFormality && opt["formality"].getString(errorCode) == "formal";
+ UnicodeString length = hasLength ? opt["length"].getString(errorCode) : "short";
+
+ const FormattableObject* fp = toFormat.getObject(errorCode);
+ U_ASSERT(U_SUCCESS(errorCode));
+
+ if (fp == nullptr || fp->tag() != u"person") {
+ return errorVal;
+ }
+ const Person* p = static_cast<const Person*>(fp);
+
+ UnicodeString title = p->title;
+ UnicodeString firstName = p->firstName;
+ UnicodeString lastName = p->lastName;
+
+ UnicodeString result;
+ if (length == "long") {
+ result += title;
+ result += " ";
+ result += firstName;
+ result += " ";
+ result += lastName;
+ } else if (length == "medium") {
+ if (useFormal) {
+ result += firstName;
+ result += " ";
+ result += lastName;
+ } else {
+ result += title;
+ result += " ";
+ result += firstName;
+ }
+ } else if (useFormal) {
+ // Default to "short" length
+ result += title;
+ result += " ";
+ result += lastName;
+ } else {
+ result += firstName;
+ }
+
+ return FormattedPlaceholder(arg, FormattedValue(std::move(result)));
+}
+
+FormattableProperties::~FormattableProperties() {}
+Person::~Person() {}
+
+/*
+ See ICU4J: CustomFormatterGrammarCaseTest.java
+*/
+Formatter* GrammarCasesFormatterFactory::createFormatter(const Locale& locale, UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return nullptr;
+ }
+
+ // Locale not used
+ (void) locale;
+
+ Formatter* result = new GrammarCasesFormatter();
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+
+/* static */ void GrammarCasesFormatter::getDativeAndGenitive(const UnicodeString& value, UnicodeString& result) const {
+ UnicodeString postfix;
+ if (value.endsWith("ana")) {
+ value.extract(0, value.length() - 3, postfix);
+ postfix += "nei";
+ }
+ else if (value.endsWith("ca")) {
+ value.extract(0, value.length() - 2, postfix);
+ postfix += "căi";
+ }
+ else if (value.endsWith("ga")) {
+ value.extract(0, value.length() - 2, postfix);
+ postfix += "găi";
+ }
+ else if (value.endsWith("a")) {
+ value.extract(0, value.length() - 1, postfix);
+ postfix += "ei";
+ }
+ else {
+ postfix = "lui " + value;
+ }
+ result += postfix;
+}
+
+message2::FormattedPlaceholder GrammarCasesFormatter::format(FormattedPlaceholder&& arg, FunctionOptions&& options, UErrorCode& errorCode) const {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ // Argument must be present
+ if (!arg.canFormat()) {
+ errorCode = U_MF_FORMATTING_ERROR;
+ return message2::FormattedPlaceholder("grammarBB");
+ }
+
+ // Assumes the argument is not-yet-formatted
+ const Formattable& toFormat = arg.asFormattable();
+ UnicodeString result;
+
+ FunctionOptionsMap opt = options.getOptions();
+ switch (toFormat.getType()) {
+ case UFMT_STRING: {
+ const UnicodeString& in = toFormat.getString(errorCode);
+ bool hasCase = opt.count("case") > 0;
+ bool caseIsString = opt["case"].getType() == UFMT_STRING;
+ if (hasCase && caseIsString && (opt["case"].getString(errorCode) == "dative" || opt["case"].getString(errorCode) == "genitive")) {
+ getDativeAndGenitive(in, result);
+ } else {
+ result += in;
+ }
+ U_ASSERT(U_SUCCESS(errorCode));
+ break;
+ }
+ default: {
+ result += toFormat.getString(errorCode);
+ break;
+ }
+ }
+
+ return message2::FormattedPlaceholder(arg, FormattedValue(std::move(result)));
+}
+
+void TestMessageFormat2::testGrammarCasesFormatter(IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ MFFunctionRegistry customRegistry = MFFunctionRegistry::Builder(errorCode)
+ .adoptFormatter(FunctionName("grammarBB"), new GrammarCasesFormatterFactory(), errorCode)
+ .build();
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("testGrammarCasesFormatter - genitive");
+ testBuilder.setFunctionRegistry(&customRegistry);
+ testBuilder.setLocale(Locale("ro"));
+ testBuilder.setPattern("Cartea {$owner :grammarBB case=genitive}");
+ TestCase test = testBuilder.setArgument("owner", "Maria")
+ .setExpected("Cartea Mariei")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("owner", "Rodica")
+ .setExpected("Cartea Rodicăi")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("owner", "Ileana")
+ .setExpected("Cartea Ilenei")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("owner", "Petre")
+ .setExpected("Cartea lui Petre")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ testBuilder.setName("testGrammarCasesFormatter - nominative");
+ testBuilder.setPattern("M-a sunat {$owner :grammarBB case=nominative}");
+
+ test = testBuilder.setArgument("owner", "Maria")
+ .setExpected("M-a sunat Maria")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("owner", "Rodica")
+ .setExpected("M-a sunat Rodica")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("owner", "Ileana")
+ .setExpected("M-a sunat Ileana")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("owner", "Petre")
+ .setExpected("M-a sunat Petre")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+/*
+ See ICU4J: CustomFormatterListTest.java
+*/
+Formatter* ListFormatterFactory::createFormatter(const Locale& locale, UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return nullptr;
+ }
+
+ Formatter* result = new ListFormatter(locale);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+message2::FormattedPlaceholder message2::ListFormatter::format(FormattedPlaceholder&& arg, FunctionOptions&& options, UErrorCode& errorCode) const {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ message2::FormattedPlaceholder errorVal = FormattedPlaceholder("listformat");
+
+ // Argument must be present
+ if (!arg.canFormat()) {
+ errorCode = U_MF_FORMATTING_ERROR;
+ return errorVal;
+ }
+ // Assumes arg is not-yet-formatted
+ const Formattable& toFormat = arg.asFormattable();
+
+ FunctionOptionsMap opt = options.getOptions();
+ bool hasType = opt.count("type") > 0 && opt["type"].getType() == UFMT_STRING;
+ UListFormatterType type = UListFormatterType::ULISTFMT_TYPE_AND;
+ if (hasType) {
+ if (opt["type"].getString(errorCode) == "OR") {
+ type = UListFormatterType::ULISTFMT_TYPE_OR;
+ } else if (opt["type"].getString(errorCode) == "UNITS") {
+ type = UListFormatterType::ULISTFMT_TYPE_UNITS;
+ }
+ }
+ bool hasWidth = opt.count("width") > 0 && opt["width"].getType() == UFMT_STRING;
+ UListFormatterWidth width = UListFormatterWidth::ULISTFMT_WIDTH_WIDE;
+ if (hasWidth) {
+ if (opt["width"].getString(errorCode) == "SHORT") {
+ width = UListFormatterWidth::ULISTFMT_WIDTH_SHORT;
+ } else if (opt["width"].getString(errorCode) == "NARROW") {
+ width = UListFormatterWidth::ULISTFMT_WIDTH_NARROW;
+ }
+ }
+ U_ASSERT(U_SUCCESS(errorCode));
+ LocalPointer<icu::ListFormatter> lf(icu::ListFormatter::createInstance(locale, type, width, errorCode));
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ UnicodeString result;
+
+ switch (toFormat.getType()) {
+ case UFMT_ARRAY: {
+ int32_t n_items;
+ const Formattable* objs = toFormat.getArray(n_items, errorCode);
+ if (U_FAILURE(errorCode)) {
+ errorCode = U_MF_FORMATTING_ERROR;
+ return errorVal;
+ }
+ UnicodeString* parts = new UnicodeString[n_items];
+ if (parts == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return {};
+ }
+ for (int32_t i = 0; i < n_items; i++) {
+ parts[i] = objs[i].getString(errorCode);
+ }
+ U_ASSERT(U_SUCCESS(errorCode));
+ lf->format(parts, n_items, result, errorCode);
+ delete[] parts;
+ break;
+ }
+ default: {
+ result += toFormat.getString(errorCode);
+ U_ASSERT(U_SUCCESS(errorCode));
+ break;
+ }
+ }
+
+ return FormattedPlaceholder(arg, FormattedValue(std::move(result)));
+}
+
+void TestMessageFormat2::testListFormatter(IcuTestErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return;
+ }
+ const message2::Formattable progLanguages[3] = {
+ message2::Formattable("C/C++"),
+ message2::Formattable("Java"),
+ message2::Formattable("Python")
+ };
+
+ TestCase::Builder testBuilder;
+
+ MFFunctionRegistry reg = MFFunctionRegistry::Builder(errorCode)
+ .adoptFormatter(FunctionName("listformat"), new ListFormatterFactory(), errorCode)
+ .build();
+ CHECK_ERROR(errorCode);
+
+ testBuilder.setFunctionRegistry(&reg);
+ testBuilder.setArgument("languages", progLanguages, 3);
+
+ TestCase test = testBuilder.setName("testListFormatter")
+ .setPattern("I know {$languages :listformat type=AND}!")
+ .setExpected("I know C/C++, Java, and Python!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setName("testListFormatter")
+ .setPattern("You are allowed to use {$languages :listformat type=OR}!")
+ .setExpected("You are allowed to use C/C++, Java, or Python!")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+/*
+ See ICU4J: CustomFormatterMessageRefTest.java
+*/
+
+/* static */ Hashtable* message2::ResourceManager::properties(UErrorCode& errorCode) {
+ NULL_ON_ERROR(errorCode);
+
+ UnicodeString* firefox = new UnicodeString(".match {$gcase :string} genitive {{Firefoxin}} * {{Firefox}}");
+ UnicodeString* chrome = new UnicodeString(".match {$gcase :string} genitive {{Chromen}} * {{Chrome}}");
+ UnicodeString* safari = new UnicodeString(".match {$gcase :string} genitive {{Safarin}} * {{Safari}}");
+
+ if (firefox != nullptr && chrome != nullptr && safari != nullptr) {
+ Hashtable* result = new Hashtable(uhash_compareUnicodeString, nullptr, errorCode);
+ if (result == nullptr) {
+ return nullptr;
+ }
+ result->setValueDeleter(uprv_deleteUObject);
+ result->put("safari", safari, errorCode);
+ result->put("firefox", firefox, errorCode);
+ result->put("chrome", chrome, errorCode);
+ return result;
+ }
+
+ // Allocation failed
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ if (firefox != nullptr) {
+ delete firefox;
+ }
+ if (chrome != nullptr) {
+ delete chrome;
+ }
+ if (safari != nullptr) {
+ delete safari;
+ }
+ return nullptr;
+}
+
+Formatter* ResourceManagerFactory::createFormatter(const Locale& locale, UErrorCode& errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return nullptr;
+ }
+
+ Formatter* result = new ResourceManager(locale);
+ if (result == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+using Arguments = MessageArguments;
+
+static Arguments localToGlobal(const FunctionOptionsMap& opts, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return {};
+ }
+ return MessageArguments(opts, status);
+}
+
+message2::FormattedPlaceholder ResourceManager::format(FormattedPlaceholder&& arg, FunctionOptions&& options, UErrorCode& errorCode) const {
+ if (U_FAILURE(errorCode)) {
+ return {};
+ }
+
+ message2::FormattedPlaceholder errorVal = message2::FormattedPlaceholder("msgref");
+
+ // Argument must be present
+ if (!arg.canFormat()) {
+ errorCode = U_MF_FORMATTING_ERROR;
+ return errorVal;
+ }
+
+ // Assumes arg is not-yet-formatted
+ const Formattable& toFormat = arg.asFormattable();
+ UnicodeString in;
+ switch (toFormat.getType()) {
+ case UFMT_STRING: {
+ in = toFormat.getString(errorCode);
+ break;
+ }
+ default: {
+ // Ignore non-strings
+ return errorVal;
+ }
+ }
+ FunctionOptionsMap opt = options.getOptions();
+ bool hasProperties = opt.count("resbundle") > 0 && opt["resbundle"].getType() == UFMT_OBJECT && opt["resbundle"].getObject(errorCode)->tag() == u"properties";
+
+ // If properties were provided, look up the given string in the properties,
+ // yielding a message
+ if (hasProperties) {
+ const FormattableProperties* properties = reinterpret_cast<const FormattableProperties*>(opt["resbundle"].getObject(errorCode));
+ U_ASSERT(U_SUCCESS(errorCode));
+ UnicodeString* msg = static_cast<UnicodeString*>(properties->properties->get(in));
+ if (msg == nullptr) {
+ // No message given for this key -- error out
+ errorCode = U_MF_FORMATTING_ERROR;
+ return errorVal;
+ }
+ MessageFormatter::Builder mfBuilder(errorCode);
+ UParseError parseErr;
+ // Any parse/data model errors will be propagated
+ MessageFormatter mf = mfBuilder.setPattern(*msg, parseErr, errorCode).build(errorCode);
+ Arguments arguments = localToGlobal(opt, errorCode);
+ if (U_FAILURE(errorCode)) {
+ return errorVal;
+ }
+
+ UErrorCode savedStatus = errorCode;
+ UnicodeString result = mf.formatToString(arguments, errorCode);
+ // Here, we want to ignore errors (this matches the behavior in the ICU4J test).
+ // For example: we want $gcase to default to "$gcase" if the gcase option was
+ // omitted.
+ if (U_FAILURE(errorCode)) {
+ errorCode = savedStatus;
+ }
+ return FormattedPlaceholder(arg, FormattedValue(std::move(result)));
+ } else {
+ // Properties must be provided
+ errorCode = U_MF_FORMATTING_ERROR;
+ }
+ return errorVal;
+}
+
+
+void TestMessageFormat2::testMessageRefFormatter(IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ Hashtable* properties = ResourceManager::properties(errorCode);
+ CHECK_ERROR(errorCode);
+ LocalPointer<FormattableProperties> fProperties(new FormattableProperties(properties));
+ if (!fProperties.isValid()) {
+ ((UErrorCode&) errorCode) = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ MFFunctionRegistry reg = MFFunctionRegistry::Builder(errorCode)
+ .adoptFormatter(FunctionName("msgRef"), new ResourceManagerFactory(), errorCode)
+ .build();
+ CHECK_ERROR(errorCode);
+
+ TestCase::Builder testBuilder;
+ testBuilder.setLocale(Locale("ro"));
+ testBuilder.setFunctionRegistry(&reg);
+ testBuilder.setPattern(*((UnicodeString*) properties->get("firefox")));
+ testBuilder.setName("message-ref");
+
+ TestCase test = testBuilder.setArgument("gcase", "whatever")
+ .setExpected("Firefox")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("gcase", "genitive")
+ .setExpected("Firefoxin")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ testBuilder.setPattern(*((UnicodeString*) properties->get("chrome")));
+
+ test = testBuilder.setArgument("gcase", "whatever")
+ .setExpected("Chrome")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("gcase", "genitive")
+ .setExpected("Chromen")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ testBuilder.setArgument("res", fProperties.getAlias());
+
+ testBuilder.setPattern("Please start {$browser :msgRef gcase=genitive resbundle=$res}");
+ test = testBuilder.setArgument("browser", "firefox")
+ .setExpected("Please start Firefoxin")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("browser", "chrome")
+ .setExpected("Please start Chromen")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("browser", "safari")
+ .setExpected("Please start Safarin")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ testBuilder.setPattern("Please start {$browser :msgRef resbundle=$res}");
+ test = testBuilder.setArgument("browser", "firefox")
+ .setExpected("Please start Firefox")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("browser", "chrome")
+ .setExpected("Please start Chrome")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("browser", "safari")
+ .setExpected("Please start Safari")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/messageformat2test_features.cpp b/icu4c/source/test/intltest/messageformat2test_features.cpp
new file mode 100644
index 000000000..f4c2ffdb8
--- /dev/null
+++ b/icu4c/source/test/intltest/messageformat2test_features.cpp
@@ -0,0 +1,478 @@
+// © 2024 and later: Unicode, Inc. and others.
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/gregocal.h"
+#include "messageformat2test.h"
+
+using namespace icu::message2;
+using namespace data_model;
+
+/*
+ Tests based on ICU4J's MessageFormat2Test.java
+and Mf2FeaturesTest.java
+*/
+
+/*
+ TODO: Tests need to be unified in a single format that
+ both ICU4C and ICU4J can use, rather than being embedded in code.
+*/
+
+/*
+Tests reflect the syntax specified in
+
+ https://github.com/unicode-org/message-format-wg/commits/main/spec/message.abnf
+
+as of the following commit from 2023-05-09:
+ https://github.com/unicode-org/message-format-wg/commit/194f6efcec5bf396df36a19bd6fa78d1fa2e0867
+
+*/
+
+void TestMessageFormat2::testEmptyMessage(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ TestUtils::runTestCase(*this, testBuilder.setPattern("")
+ .setExpected("")
+ .build(), errorCode);
+}
+
+void TestMessageFormat2::testPlainText(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ TestUtils::runTestCase(*this, testBuilder.setPattern("Hello World!")
+ .setExpected("Hello World!")
+ .build(), errorCode);
+}
+
+void TestMessageFormat2::testPlaceholders(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ TestUtils::runTestCase(*this, testBuilder.setPattern("Hello, {$userName}!")
+ .setExpected("Hello, John!")
+ .setArgument("userName", "John")
+ .build(), errorCode);
+}
+
+void TestMessageFormat2::testArgumentMissing(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ UnicodeString message = "Hello {$name}, today is {$today :date style=long}.";
+ LocalPointer<Calendar> cal(Calendar::createInstance(errorCode));
+ CHECK_ERROR(errorCode);
+
+ // November 23, 2022 at 7:42:37.123 PM
+ cal->set(2022, Calendar::NOVEMBER, 23, 19, 42, 37);
+ UDate TEST_DATE = cal->getTime(errorCode);
+ CHECK_ERROR(errorCode);
+
+ TestCase test = testBuilder.setPattern(message)
+ .clearArguments()
+ .setArgument("name", "John")
+ .setDateArgument("today", TEST_DATE)
+ .setExpected("Hello John, today is November 23, 2022.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Missing date argument
+ test = testBuilder.setPattern(message)
+ .clearArguments()
+ .setArgument("name", "John")
+ .setExpected("Hello John, today is {$today}.")
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setPattern(message)
+ .clearArguments()
+ .setDateArgument("today", TEST_DATE)
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .setExpected("Hello {$name}, today is November 23, 2022.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Both arguments missing
+ test = testBuilder.setPattern(message)
+ .clearArguments()
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .setExpected("Hello {$name}, today is {$today}.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testDefaultLocale(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ LocalPointer<Calendar> cal(Calendar::createInstance(errorCode));
+ CHECK_ERROR(errorCode);
+ // November 23, 2022 at 7:42:37.123 PM
+ cal->set(2022, Calendar::NOVEMBER, 23, 19, 42, 37);
+ UDate TEST_DATE = cal->getTime(errorCode);
+ CHECK_ERROR(errorCode);
+
+ UnicodeString message = "Date: {$date :date style=long}.";
+ UnicodeString expectedEn = "Date: November 23, 2022.";
+ UnicodeString expectedRo = "Date: 23 noiembrie 2022.";
+
+ testBuilder.setPattern(message);
+
+ TestCase test = testBuilder.clearArguments()
+ .setDateArgument("date", TEST_DATE)
+ .setExpected(expectedEn)
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setExpected(expectedRo)
+ .setLocale(Locale("ro"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ Locale originalLocale = Locale::getDefault();
+ Locale::setDefault(Locale::forLanguageTag("ro", errorCode), errorCode);
+ CHECK_ERROR(errorCode);
+
+ test = testBuilder.setExpected(expectedEn)
+ .setLocale(Locale("en", "US"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setExpected(expectedRo)
+ .setLocale(Locale::forLanguageTag("ro", errorCode))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ Locale::setDefault(originalLocale, errorCode);
+ CHECK_ERROR(errorCode);
+}
+
+void TestMessageFormat2::testSpecialPluralWithDecimals(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ UnicodeString message;
+
+ message = ".local $amount = {$count :number}\n\
+ .match {$amount :number}\n\
+ 1 {{I have {$amount} dollar.}}\n\
+ * {{I have {$amount} dollars.}}";
+
+ TestCase test = testBuilder.setPattern(message)
+ .clearArguments()
+ .setArgument("count", (int64_t) 1)
+ .setExpected("I have 1 dollar.")
+ .setLocale(Locale("en", "US"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testDefaultFunctionAndOptions(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ LocalPointer<Calendar> cal(Calendar::createInstance(errorCode));
+ CHECK_ERROR(errorCode);
+ // November 23, 2022 at 7:42:37.123 PM
+ cal->set(2022, Calendar::NOVEMBER, 23, 19, 42, 37);
+ UDate TEST_DATE = cal->getTime(errorCode);
+ CHECK_ERROR(errorCode);
+
+ TestCase test = testBuilder.setPattern("Testing date formatting: {$date}.")
+ .clearArguments()
+ .setDateArgument("date", TEST_DATE)
+ .setExpected("Testing date formatting: 23.11.2022, 19:42.")
+ .setLocale(Locale("ro"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setPattern("Testing date formatting: {$date :datetime}.")
+ .setExpected("Testing date formatting: 23.11.2022, 19:42.")
+ .setLocale(Locale("ro"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testSimpleSelection(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ (void) testBuilder;
+ (void) errorCode;
+
+ /* Covered by testPlural */
+}
+
+void TestMessageFormat2::testComplexSelection(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ UnicodeString message = ".match {$photoCount :number} {$userGender :string}\n\
+ 1 masculine {{{$userName} added a new photo to his album.}}\n\
+ 1 feminine {{{$userName} added a new photo to her album.}}\n\
+ 1 * {{{$userName} added a new photo to their album.}}\n\
+ * masculine {{{$userName} added {$photoCount} photos to his album.}}\n\
+ * feminine {{{$userName} added {$photoCount} photos to her album.}}\n\
+ * * {{{$userName} added {$photoCount} photos to their album.}}";
+ testBuilder.setPattern(message);
+
+ int64_t count = 1;
+ TestCase test = testBuilder.clearArguments().setArgument("photoCount", count)
+ .setArgument("userGender", "masculine")
+ .setArgument("userName", "John")
+ .setExpected("John added a new photo to his album.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("userGender", "feminine")
+ .setArgument("userName", "Anna")
+ .setExpected("Anna added a new photo to her album.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("userGender", "unknown")
+ .setArgument("userName", "Anonymous")
+ .setExpected("Anonymous added a new photo to their album.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ count = 13;
+ test = testBuilder.clearArguments().setArgument("photoCount", count)
+ .setArgument("userGender", "masculine")
+ .setArgument("userName", "John")
+ .setExpected("John added 13 photos to his album.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("userGender", "feminine")
+ .setArgument("userName", "Anna")
+ .setExpected("Anna added 13 photos to her album.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ test = testBuilder.setArgument("userGender", "unknown")
+ .setArgument("userName", "Anonymous")
+ .setExpected("Anonymous added 13 photos to their album.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testSimpleLocalVariable(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ LocalPointer<Calendar> cal(Calendar::createInstance(errorCode));
+ CHECK_ERROR(errorCode);
+ // November 23, 2022 at 7:42:37.123 PM
+ cal->set(2022, Calendar::NOVEMBER, 23, 19, 42, 37);
+ UDate TEST_DATE = cal->getTime(errorCode);
+ CHECK_ERROR(errorCode);
+
+ testBuilder.setPattern(".input {$expDate :date style=medium}\n\
+ {{Your tickets expire on {$expDate}.}}");
+
+ int64_t count = 1;
+ TestUtils::runTestCase(*this, testBuilder.clearArguments().setArgument("count", count)
+ .setLocale(Locale("en"))
+ .setDateArgument("expDate", TEST_DATE)
+ .setExpected("Your tickets expire on Nov 23, 2022.")
+ .build(), errorCode);
+}
+
+void TestMessageFormat2::testLocalVariableWithSelect(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ LocalPointer<Calendar> cal(Calendar::createInstance(errorCode));
+ CHECK_ERROR(errorCode);
+ // November 23, 2022 at 7:42:37.123 PM
+ cal->set(2022, Calendar::NOVEMBER, 23, 19, 42, 37);
+ UDate TEST_DATE = cal->getTime(errorCode);
+ CHECK_ERROR(errorCode);
+
+ testBuilder.setPattern(".input {$expDate :date style=medium}\n\
+ .match {$count :number}\n\
+ 1 {{Your ticket expires on {$expDate}.}}\n\
+ * {{Your {$count} tickets expire on {$expDate}.}}");
+
+ int64_t count = 1;
+ TestCase test = testBuilder.clearArguments().setArgument("count", count)
+ .setLocale(Locale("en"))
+ .setDateArgument("expDate", TEST_DATE)
+ .setExpected("Your ticket expires on Nov 23, 2022.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ count = 3;
+ test = testBuilder.setArgument("count", count)
+ .setExpected("Your 3 tickets expire on Nov 23, 2022.")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testDateFormat(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ LocalPointer<Calendar> cal(Calendar::createInstance(errorCode));
+ CHECK_ERROR(errorCode);
+
+ cal->set(2022, Calendar::OCTOBER, 27, 0, 0, 0);
+ UDate expiration = cal->getTime(errorCode);
+ CHECK_ERROR(errorCode);
+
+ TestCase test = testBuilder.clearArguments().setPattern("Your card expires on {$exp :date style=medium}!")
+ .setLocale(Locale("en"))
+ .setExpected("Your card expires on Oct 27, 2022!")
+ .setDateArgument("exp", expiration)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setPattern("Your card expires on {$exp :date style=full}!")
+ .setExpected("Your card expires on Thursday, October 27, 2022!")
+ .setDateArgument("exp", expiration)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setPattern("Your card expires on {$exp :date style=long}!")
+ .setExpected("Your card expires on October 27, 2022!")
+ .setDateArgument("exp", expiration)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setPattern("Your card expires on {$exp :date style=medium}!")
+ .setExpected("Your card expires on Oct 27, 2022!")
+ .setDateArgument("exp", expiration)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setPattern("Your card expires on {$exp :date style=short}!")
+ .setExpected("Your card expires on 10/27/22!")
+ .setDateArgument("exp", expiration)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+/*
+ This test would require the calendar to be passed as a UObject* with the datetime formatter
+ doing an RTTI check -- however, that would be awkward, since it would have to check the tag for each
+ possible subclass of `Calendar`. datetime currently has no support for formatting any object argument
+
+ cal.adoptInstead(new GregorianCalendar(2022, Calendar::OCTOBER, 27, errorCode));
+ if (cal.isValid()) {
+ test = testBuilder.setPattern("Your card expires on {$exp :datetime skeleton=yMMMdE}!")
+ .setExpected("Your card expires on Thu, Oct 27, 2022!")
+ .setArgument("exp", cal.orphan(), errorCode)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ }
+*/
+
+ // Implied function based on type of the object to format
+ test = testBuilder.clearArguments().setPattern("Your card expires on {$exp}!")
+ .setExpected(CharsToUnicodeString("Your card expires on 10/27/22, 12:00\\u202FAM!"))
+ .setDateArgument("exp", expiration)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testPlural(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ UnicodeString message = ".match {$count :number}\n\
+ 1 {{You have one notification.}}\n \
+ * {{You have {$count} notifications.}}";
+
+ int64_t count = 1;
+ TestCase test = testBuilder.clearArguments().setPattern(message)
+ .setExpected("You have one notification.")
+ .setArgument("count", count)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ count = 42;
+ test = testBuilder.clearArguments().setExpected("You have 42 notifications.")
+ .setArgument("count", count)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ count = 1;
+ test = testBuilder.clearArguments().setPattern(message)
+ .setExpected("You have one notification.")
+ .setArgument("count", "1")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ count = 42;
+ test = testBuilder.clearArguments().setExpected("You have 42 notifications.")
+ .setArgument("count", "42")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testPluralOrdinal(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ UnicodeString message = ".match {$place :number select=ordinal}\n\
+ 1 {{You got the gold medal}}\n \
+ 2 {{You got the silver medal}}\n \
+ 3 {{You got the bronze medal}}\n\
+ one {{You got in the {$place}st place}}\n\
+ two {{You got in the {$place}nd place}}\n \
+ few {{You got in the {$place}rd place}}\n \
+ * {{You got in the {$place}th place}}";
+
+ TestCase test = testBuilder.clearArguments().setPattern(message)
+ .setExpected("You got the gold medal")
+ .setArgument("place", "1")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setExpected("You got the silver medal")
+ .setArgument("place", "2")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setExpected("You got the bronze medal")
+ .setArgument("place", "3")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setExpected("You got in the 21st place")
+ .setArgument("place", "21")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setExpected("You got in the 32nd place")
+ .setArgument("place", "32")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setExpected("You got in the 23rd place")
+ .setArgument("place", "23")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments().setExpected("You got in the 15th place")
+ .setArgument("place", "15")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testDeclareBeforeUse(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+
+ UnicodeString message = ".local $foo = {$baz :number}\n\
+ .local $bar = {$foo}\n \
+ .local $baz = {$bar}\n \
+ {{The message uses {$baz} and works}}";
+ testBuilder.setPattern(message);
+ testBuilder.setName("declare-before-use");
+
+ TestCase test = testBuilder.clearArguments().setExpected("The message uses {$baz} and works")
+ .setExpectedError(U_MF_DUPLICATE_DECLARATION_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+
+void TestMessageFormat2::featureTests() {
+ IcuTestErrorCode errorCode(*this, "featureTests");
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("featureTests");
+
+ testEmptyMessage(testBuilder, errorCode);
+ testPlainText(testBuilder, errorCode);
+ testPlaceholders(testBuilder, errorCode);
+ testArgumentMissing(testBuilder, errorCode);
+ testDefaultLocale(testBuilder, errorCode);
+ testSpecialPluralWithDecimals(testBuilder, errorCode);
+ testDefaultFunctionAndOptions(testBuilder, errorCode);
+ testSimpleSelection(testBuilder, errorCode);
+ testComplexSelection(testBuilder, errorCode);
+ testSimpleLocalVariable(testBuilder, errorCode);
+ testLocalVariableWithSelect(testBuilder, errorCode);
+
+ testDateFormat(testBuilder, errorCode);
+ testPlural(testBuilder, errorCode);
+ testPluralOrdinal(testBuilder, errorCode);
+ testDeclareBeforeUse(testBuilder, errorCode);
+}
+
+TestCase::~TestCase() {}
+TestCase::Builder::~Builder() {}
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/messageformat2test_fromjson.cpp b/icu4c/source/test/intltest/messageformat2test_fromjson.cpp
new file mode 100644
index 000000000..b7389d033
--- /dev/null
+++ b/icu4c/source/test/intltest/messageformat2test_fromjson.cpp
@@ -0,0 +1,1265 @@
+// © 2024 and later: Unicode, Inc. and others.
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "messageformat2test.h"
+
+using namespace icu::message2;
+
+/*
+ TODO: Tests need to be unified in a single format that
+ both ICU4C and ICU4J can use, rather than being embedded in code.
+
+ Tests are included in their current state to give a sense of
+ how much test coverage has been achieved. Most of the testing is
+ of the parser/serializer; the formatter needs to be tested more
+ thoroughly.
+*/
+
+/*
+Tests reflect the syntax specified in
+
+ https://github.com/unicode-org/message-format-wg/commits/main/spec/message.abnf
+
+as of the following commit from 2023-05-09:
+ https://github.com/unicode-org/message-format-wg/commit/194f6efcec5bf396df36a19bd6fa78d1fa2e0867
+
+*/
+
+/*
+ Transcribed from https://github.com/messageformat/messageformat/blob/main/packages/mf2-messageformat/src/__fixtures/test-messages.json
+https://github.com/messageformat/messageformat/commit/6656c95d66414da29a332a6f5bbb225371f2b9a3
+
+*/
+void TestMessageFormat2::jsonTests(IcuTestErrorCode& errorCode) {
+ TestCase::Builder testBuilder;
+ testBuilder.setName("jsonTests");
+
+ TestCase test = testBuilder.setPattern("hello")
+ .setExpected("hello")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {|world|}")
+ .setExpected("hello world")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {||}")
+ .setExpected("hello ")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {$place}")
+ .setExpected("hello world")
+ .setArgument("place", "world")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {$place-.}")
+ .setExpected("hello world")
+ .setArgument("place-.", "world")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {$place}")
+ .setExpected("hello {$place}")
+ .clearArguments()
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{$one} and {$two}")
+ .setExpected("1.3 and 4.2")
+ .setExpectSuccess()
+ .setArgument("one", 1.3)
+ .setArgument("two", 4.2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ testBuilder.setArgument("one", "1.3").setArgument("two", "4.2");
+ test = testBuilder.build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{$one} et {$two}")
+ .setExpected("1,3 et 4,2")
+ .setLocale(Locale("fr"))
+ .setArgument("one", 1.3)
+ .setArgument("two", 4.2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {|4.2| :number}")
+ .setExpected("hello 4.2")
+ .setLocale(Locale("en"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {|foo| :number}")
+ .setExpected("hello {|foo|}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {:number}")
+ .setExpected("hello {:number}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+
+ test = testBuilder.setPattern("hello {|4.2| :number minimumFractionDigits=2}")
+ .setExpectSuccess()
+ .setExpected("hello 4.20")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {|4.2| :number minimumFractionDigits=|2|}")
+ .setExpected("hello 4.20")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {|4.2| :number minimumFractionDigits=$foo}")
+ .setExpected("hello 4.20")
+ .setArgument("foo", (int64_t) 2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {bar} {{bar {$foo}}}")
+ .setExpected("bar bar")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {|bar|} {{bar {$foo}}}")
+ .setExpected("bar bar")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {|bar|} {{bar {$foo}}}")
+ .setExpected("bar bar")
+ .setArgument("foo", "foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$bar} {{bar {$foo}}}")
+ .setExpected("bar foo")
+ .setArgument("bar", "foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number} {{bar {$foo}}}")
+ .setExpected("bar 4.2")
+ .setArgument("bar", 4.2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number minimumFractionDigits=2} {{bar {$foo}}}")
+ .setExpected("bar 4.20")
+ .setArgument("bar", 4.2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number} {{bar {$foo}}}")
+ .setExpected("bar {$bar}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setArgument("bar", "foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$baz} .local $bar = {$foo} {{bar {$bar}}}")
+ .setExpectSuccess()
+ .setExpected("bar foo")
+ .setArgument("baz", "foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$foo} {{bar {$foo}}}")
+ .setExpectedError(U_MF_DUPLICATE_DECLARATION_ERROR)
+ .setExpected("bar foo")
+ .setArgument("foo", "foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // TODO(duplicates): currently the expected output is based on using
+ // the last definition of the duplicate-declared variable;
+ // perhaps it's better to remove all declarations for $foo before formatting.
+ // however if https://github.com/unicode-org/message-format-wg/pull/704 lands,
+ // it'll be a moot point since the output will be expected to be the fallback string
+ // (This applies to the expected output for all the U_DUPLICATE_DECLARATION_ERROR tests)
+ test = testBuilder.setPattern(".local $foo = {$foo} .local $foo = {42} {{bar {$foo}}}")
+ .setExpectedError(U_MF_DUPLICATE_DECLARATION_ERROR)
+ .setArgument("foo", "foo")
+ .setExpected("bar 42")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {42} .local $foo = {$foo} {{bar {$foo}}}")
+ .setExpectedError(U_MF_DUPLICATE_DECLARATION_ERROR)
+ .setExpected("bar 42")
+ .setArgument("foo", "foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // see TODO(duplicates)
+ test = testBuilder.setPattern(".local $foo = {:unknown} .local $foo = {42} {{bar {$foo}}}")
+ .setExpectedError(U_MF_DUPLICATE_DECLARATION_ERROR)
+ .setExpected("bar 42")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // see TODO(duplicates)
+ test = testBuilder.setPattern(".local $x = {42} .local $y = {$x} .local $x = {13} {{{$x} {$y}}}")
+ .setExpectedError(U_MF_DUPLICATE_DECLARATION_ERROR)
+ .setExpected("13 42")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+/*
+ Shouldn't this be "bar {$bar}"?
+
+ test = testBuilder.setPattern(".local $foo = {$bar} .local $bar = {$baz} {{bar {$foo}}}")
+ .setExpected("bar foo")
+ .setArgument("baz", "foo", errorCode)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+*/
+
+ test = testBuilder.setPattern(".match {$foo :string} |1| {{one}} * {{other}}")
+ .setExpected("one")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} 1 {{one}} * {{other}}")
+ .setExpected("one")
+ .setArgument("foo", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+/*
+ This case can't be tested without a way to set the "foo" argument to null
+
+ test = testBuilder.setPattern(".match {$foo :number} 1 {{one}} * {{other}}")
+ .setExpected("other")
+ .setArgument("foo", "", errorCode)
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+*/
+
+ test = testBuilder.setPattern(".match {$foo :number} one {{one}} * {{other}}")
+ .setExpected("one")
+ .setArgument("foo", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} 1 {{=1}} one {{one}} * {{other}}")
+ .setExpected("=1")
+ .setArgument("foo", "1")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} 1 {{=1}} one {{one}} * {{other}}")
+ .setExpected("=1")
+ .setArgument("foo", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} one {{one}} 1 {{=1}} * {{other}}")
+ .setExpected("=1")
+ .setArgument("foo", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}")
+ .setExpected("one one")
+ .setArgument("foo", (int64_t) 1)
+ .setArgument("bar", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}")
+ .setExpected("one other")
+ .setArgument("foo", (int64_t) 1)
+ .setArgument("bar", (int64_t) 2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}")
+ .setExpected("other")
+ .setArgument("foo", (int64_t) 2)
+ .setArgument("bar", (int64_t) 2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {|foo| :string} *{{foo}}")
+ .setExpectSuccess()
+ .setExpected("foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number} .match {$foo} one {{one}} * {{other}}")
+ .setExpected("one")
+ .setArgument("bar", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number} .match {$foo} one {{one}} * {{other}}")
+ .setExpected("other")
+ .setArgument("bar", (int64_t) 2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}")
+ .setExpected("one")
+ .setArgument("foo", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+/*
+ Note: this differs from https://github.com/messageformat/messageformat/blob/e0087bff312d759b67a9129eac135d318a1f0ce7/packages/mf2-messageformat/src/__fixtures/test-messages.json#L197
+
+ The expected value in the test as defined there is "{$bar}".
+ The value should be "{$none}" per
+https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#fallback-resolution -
+" an error occurs in an expression with a variable operand and the variable refers to a local declaration, the fallback value is formatted based on the expression on the right-hand side of the declaration, rather than the expression in the selector or pattern."
+*/
+ test = testBuilder.setPattern(".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}")
+ .setExpected("{$none}")
+ .setArgument("foo", (int64_t) 2)
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Missing '$' before `bar`
+ test = testBuilder.setPattern(".local bar = {|foo|} {{{$bar}}}")
+ .setExpected("{$bar}")
+ .clearArguments()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Missing '=' after `bar`
+ /*
+ Spec is ambiguous -- see https://github.com/unicode-org/message-format-wg/issues/703 --
+ but we choose the '{$bar}' interpretation for the partial result
+ */
+ test = testBuilder.setPattern(".local $bar {|foo|} {{{$bar}}}")
+ .setExpected("{$bar}")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Missing '{'/'}' around `foo`
+ test = testBuilder.setPattern(".local $bar = |foo| {{{$bar}}}")
+ .setExpected("{$bar}")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Markup is ignored when formatting to string
+ test = testBuilder.setPattern("{#tag}")
+ .setExpectSuccess()
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag/}")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{/tag}")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag}content")
+ .setExpected("content")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag}content{/tag}")
+ .setExpected("content")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{/tag}content")
+ .setExpected("content")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag foo=bar}")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag foo=bar/}")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag foo=|foo| bar=$bar}")
+ .setArgument("bar", "b a r")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{/tag foo=bar}")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("no braces")
+ .setExpected("no braces")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("no braces {$foo}")
+ .setExpected("no braces 2")
+ .setArgument("foo", (int64_t) 2)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{{missing end brace")
+ .setExpected("missing end brace")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{{missing end {$brace")
+ .setExpected("missing end {$brace}")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{extra} content")
+ .setExpected("extra content")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{{extra}} content")
+ .setExpected("extra") // Everything after the closing '{{' should be ignored
+ // per the `complex-body- production in the grammar
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // "empty \0xfffd"
+ static constexpr UChar emptyWithReplacement[] = {
+ 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, REPLACEMENT, 0
+ };
+
+ test = testBuilder.setPattern("empty { }")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .setExpected(UnicodeString(emptyWithReplacement))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{{bad {:}}")
+ .setExpected("bad {:}")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("unquoted {literal}")
+ .setExpected("unquoted literal")
+ .setExpectSuccess()
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(CharsToUnicodeString("bad {\\u0000placeholder}"))
+ .clearExpected()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("no-equal {|42| :number minimumFractionDigits 2}")
+ .setExpected("no-equal 42.00")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("bad {:placeholder option=}")
+ .setExpected("bad {:placeholder}")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("bad {:placeholder option value}")
+ .setExpected("bad {:placeholder}")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("bad {:placeholder option}")
+ .setExpected("bad {:placeholder}")
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("bad {$placeholder option}")
+ .clearExpected()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("no {$placeholder end")
+ .clearExpected()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {} * {{foo}}")
+ .clearExpected()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // "empty \0xfffd"
+ static constexpr UChar replacement[] = {
+ REPLACEMENT, 0
+ };
+
+ test = testBuilder.setPattern(".match {#foo} * {{foo}}")
+ .setExpected(UnicodeString(replacement))
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match * {{foo}}")
+ .clearExpected()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {|x|} * foo")
+ .clearExpected()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {|x|} * {{foo}} extra")
+ .clearExpected()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match |x| * {{foo}}")
+ .clearExpected()
+ .setExpectedError(U_MF_SYNTAX_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} * * {{foo}}")
+ .clearExpected()
+ .setExpectedError(U_MF_VARIANT_KEY_MISMATCH_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} {$bar :number} * {{foo}}")
+ .clearExpected()
+ .setExpectedError(U_MF_VARIANT_KEY_MISMATCH_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+
+/*
+From https://github.com/unicode-org/message-format-wg/tree/main/test ,
+alpha version
+
+*/
+void TestMessageFormat2::runSpecTests(IcuTestErrorCode& errorCode) {
+ TestCase::Builder testBuilder;
+ testBuilder.setName("specTests");
+
+ TestCase test = testBuilder.setPattern("hello {world}")
+ .setExpected("hello world")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello { world\t\n}")
+ .setExpected("hello world")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // TODO:
+ // For some reason, this test fails on Windows if
+ // `pattern` is replaced with "hello {\\u3000world\r}".
+ UnicodeString pattern("hello {");
+ pattern += ((UChar32) 0x3000);
+ pattern += "world\r}";
+ test = testBuilder.setPattern(pattern)
+ .setExpected("hello world")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {$place-.}")
+ .setExpected("hello world")
+ .setArgument("place-.", "world")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$foo} .local $bar = {$foo} {{bar {$bar}}}")
+ .setExpected("bar foo")
+ .setArgument("foo", "foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$foo} .local $bar = {$foo} {{bar {$bar}}}")
+ .setExpected("bar foo")
+ .setArgument("foo", "foo")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $x = {42} .local $y = {$x} {{{$x} {$y}}}")
+ .setExpected("42 42")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag}")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag}content")
+ .setExpected("content")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#ns:tag}content{/ns:tag}")
+ .setExpected("content")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{/tag}content")
+ .setExpected("content")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag foo=bar}")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{#tag a:foo=|foo| b:bar=$bar}")
+ .setArgument("bar", "b a r")
+ .setExpected("")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ /*
+ test = testBuilder.setPattern("{42 @foo @bar=13}")
+ .clearArguments()
+ .setExpected("42")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{42 @foo=$bar}")
+ .setExpected("42")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ */
+
+ test = testBuilder.setPattern("foo {+reserved}")
+ .setExpected("foo {+}")
+ .setExpectedError(U_MF_UNSUPPORTED_EXPRESSION_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("foo {&private}")
+ .setExpected("foo {&}")
+ .setExpectedError(U_MF_UNSUPPORTED_EXPRESSION_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("foo {?reserved @a @b=$c}")
+ .setExpected("foo {?}")
+ .setExpectedError(U_MF_UNSUPPORTED_EXPRESSION_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".foo {42} {{bar}}")
+ .setExpected("bar")
+ .setExpectedError(U_MF_UNSUPPORTED_STATEMENT_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".foo {42}{{bar}}")
+ .setExpected("bar")
+ .setExpectedError(U_MF_UNSUPPORTED_STATEMENT_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".foo |}lit{| {42}{{bar}}")
+ .setExpected("bar")
+ .setExpectedError(U_MF_UNSUPPORTED_STATEMENT_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ /* var2 is implicitly declared and can't be overridden by the second `.input` */
+ test = testBuilder.setPattern(".input {$var :number minimumFractionDigits=$var2} .input {$var2 :number minimumFractionDigits=5} {{{$var} {$var2}}}")
+ .setExpectedError(U_MF_DUPLICATE_DECLARATION_ERROR)
+ .setArgument("var", (int64_t) 1)
+ .setArgument("var2", (int64_t) 3)
+ // Note: the more "correct" fallback output seems like it should be "1.000 3" (ignoring the
+ // overriding .input binding of $var2) but that's hard to achieve
+ // as so-called "implicit declarations" can only be detected after parsing, at which
+ // point the data model can't be modified.
+ // Probably this is going to change anyway so that any data model error gets replaced
+ // with a fallback for the whole message.
+ .setExpected("1.000 3.00000")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ /* var2 is implicitly declared and can't be overridden by the second `.local` */
+ test = testBuilder.setPattern(".local $var = {$var2} .local $var2 = {1} {{{$var} {$var2}}}")
+ .setExpectedError(U_MF_DUPLICATE_DECLARATION_ERROR)
+ .setArgument("var2", (int64_t) 5)
+ // Same comment as above about the output
+ .setExpected("5 1")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ /* var2 is provided as an argument but not used, and should have no effect on formatting */
+ test = testBuilder.setPattern(".local $var2 = {1} {{{$var2}}}")
+ .setExpectSuccess()
+ .setArgument("var2", (int64_t) 5)
+ .setExpected("1")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Functions: integer
+ test = testBuilder.setPattern("hello {4.2 :integer}")
+ .setExpectSuccess()
+ .setExpected("hello 4")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {-4.20 :integer}")
+ .setExpectSuccess()
+ .setExpected("hello -4")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {0.42e+1 :integer}")
+ .setExpectSuccess()
+ .setExpected("hello 4")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :integer} one {{one}} * {{other}}")
+ .setArgument("foo", 1.2)
+ .setExpectSuccess()
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Functions: number (formatting)
+
+ // TODO: Need more test coverage for all the :number and other built-in
+ // function options
+
+ test = testBuilder.setPattern("hello {4.2 :number}")
+ .setExpectSuccess()
+ .setExpected("hello 4.2")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {-4.20 :number}")
+ .setExpectSuccess()
+ .setExpected("hello -4.2")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {0.42e+1 :number}")
+ .setExpectSuccess()
+ .setExpected("hello 4.2")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {foo :number}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("hello {|foo|}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {:number}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("hello {:number}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {4.2 :number minimumFractionDigits=2}")
+ .setExpectSuccess()
+ .setExpected("hello 4.20")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {4.2 :number minimumFractionDigits=|2|}")
+ .setExpectSuccess()
+ .setExpected("hello 4.20")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {4.2 :number minimumFractionDigits=$foo}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 2)
+ .setExpected("hello 4.20")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {|4.2| :number minimumFractionDigits=$foo}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 2)
+ .setExpected("hello 4.20")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number} {{bar {$foo}}}")
+ .setExpectSuccess()
+ .setArgument("bar", 4.2)
+ .setExpected("bar 4.2")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number minimumFractionDigits=2} {{bar {$foo}}}")
+ .setExpectSuccess()
+ .setArgument("bar", 4.2)
+ .setExpected("bar 4.20")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ /*
+ This is underspecified -- commented out until https://github.com/unicode-org/message-format-wg/issues/738
+ is resolved
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number minimumFractionDigits=foo} {{bar {$foo}}}")
+ .setExpectedError(U_MF_FORMATTING_ERROR)
+ .setArgument("bar", 4.2)
+ .setExpected("bar {$bar}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ */
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number} {{bar {$foo}}}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setArgument("bar", "foo")
+ .setExpected("bar {$bar}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$foo :number} {{bar {$foo}}}")
+ .setExpectSuccess()
+ .setArgument("foo", 4.2)
+ .setExpected("bar 4.2")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$foo :number minimumFractionDigits=2} {{bar {$foo}}}")
+ .setExpectSuccess()
+ .setArgument("foo", 4.2)
+ .setExpected("bar 4.20")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ /*
+ This is underspecified -- commented out until https://github.com/unicode-org/message-format-wg/issues/738
+ is resolved
+
+ test = testBuilder.setPattern(".input {$foo :number minimumFractionDigits=foo} {{bar {$foo}}}")
+ .setExpectedError(U_MF_FORMATTING_ERROR)
+ .setArgument("foo", 4.2)
+ .setExpected("bar {$foo}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+ */
+
+ test = testBuilder.setPattern(".input {$foo :number} {{bar {$foo}}}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setArgument("foo", "foo")
+ .setExpected("bar {$foo}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Functions: number (selection)
+
+ test = testBuilder.setPattern(".match {$foo :number} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} 1 {{=1}} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("=1")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} one {{one}} 1 {{=1}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("=1")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setArgument("bar", (int64_t) 1)
+ .setExpected("one one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setArgument("bar", (int64_t) 2)
+ .setExpected("one other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 2)
+ .setArgument("bar", (int64_t) 2)
+ .setExpected("other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$foo :number} .match {$foo} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $foo = {$bar :number} .match {$foo} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("bar", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$foo :number} .local $bar = {$foo} .match {$bar} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$bar :number} .match {$bar} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("bar", (int64_t) 2)
+ .setExpected("other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$bar} .match {$bar :number} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("bar", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$bar} .match {$bar :number} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("bar", (int64_t) 2)
+ .setExpected("other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$bar} .match {$bar :number} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("bar", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$bar} .match {$bar :number} one {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("bar", (int64_t) 2)
+ .setExpected("other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".input {$none} .match {$foo :number} one {{one}} * {{{$none}}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}")
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .setArgument("foo", (int64_t) 2)
+ .setExpected("{$none}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{42 :number @foo @bar=13}")
+ .setExpectSuccess()
+ .setExpected("42")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // Neither `ordinal` nor `selectordinal` exists in this spec version
+ test = testBuilder.setPattern(".match {$foo :ordinal} one {{st}} two {{nd}} few {{rd}} * {{th}}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("th")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {42 :ordinal}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .setExpected("hello {|42|}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :stringordinal} one {{st}} two {{nd}} few {{rd}} * {{th}}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("th")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {42 :stringordinal}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .setExpected("hello {|42|}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+
+ // Same for `plural`
+
+ test = testBuilder.setPattern(".match {$foo :plural} one {{one}} * {{other}}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("hello {42 :plural}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .setExpected("hello {|42|}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // :string
+
+ test = testBuilder.setPattern(".match {$foo :string} |1| {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :string} 1 {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("one")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // The spec test with argument "foo" set to null is omitted, since
+ // this implementation doesn't support null arguments
+
+ test = testBuilder.setPattern(".match {$foo :string} 1 {{one}} * {{other}}")
+ .setExpectSuccess()
+ .setArgument("foo", (double) 42.5)
+ .setExpected("other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".match {$foo :string} 1 {{one}} * {{other}}")
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .clearArguments()
+ .setExpected("other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+
+ // There is no `:select` in this version of the spec
+ test = testBuilder.setPattern(".match {$foo :select} one {{one}} * {{other}}")
+ .setExpectedError(U_MF_UNKNOWN_FUNCTION_ERROR)
+ .setArgument("foo", (int64_t) 1)
+ .setExpected("other")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // :date
+ test = testBuilder.setPattern("{:date}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("{:date}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{horse :date}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("{|horse|}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02| :date}")
+ .setExpectSuccess()
+ .setExpected("1/2/06")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02T15:04:06| :date}")
+ .setExpectSuccess()
+ .setExpected("1/2/06")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02| :date style=long}")
+ .setExpectSuccess()
+ .setExpected("January 2, 2006")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $d = {|2006-01-02| :date style=long} {{{$d :date}}}")
+ .setExpectSuccess()
+ .setExpected("January 2, 2006")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $t = {|2006-01-02T15:04:06| :time} {{{$t :date}}}")
+ .setExpectSuccess()
+ .setExpected("1/2/06")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ // :time
+ test = testBuilder.setPattern("{:time}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("{:time}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{horse :time}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("{|horse|}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02T15:04:06| :time}")
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("3:04\\u202FPM"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02T15:04:06| :time style=medium}")
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("3:04:06\\u202FPM"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $t = {|2006-01-02T15:04:06| :time style=medium} {{{$t :time}}}")
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("3:04:06\\u202FPM"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern(".local $t = {|2006-01-02T15:04:06| :date} {{{$t :time}}}")
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("3:04\\u202FPM"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+
+ // :datetime
+ test = testBuilder.setPattern("{:datetime}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("{:datetime}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{$x :datetime}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("{$x}")
+ .setArgument("x", (int64_t) 1)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{$x :datetime}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("{$x}")
+ .setArgument("x", "true")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{horse :datetime}")
+ .setExpectedError(U_MF_OPERAND_MISMATCH_ERROR)
+ .setExpected("{|horse|}")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02T15:04:06| :datetime}")
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("1/2/06, 3:04\\u202FPM"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02T15:04:06| :datetime year=numeric month=|2-digit|}")
+ .setExpectSuccess()
+ .setExpected("01/2006")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02T15:04:06| :datetime dateStyle=long}")
+ .setExpectSuccess()
+ .setExpected("January 2, 2006")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{|2006-01-02T15:04:06| :datetime timeStyle=medium}")
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("3:04:06\\u202FPM"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setPattern("{$dt :datetime}")
+ .setArgument("dt", "2006-01-02T15:04:06")
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("1/2/06, 3:04\\u202FPM"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+/*
+TODO
+This can't work -- the "style" option is different from "dateStyle" and can't get used
+in the second call to `:datetime`
+See https://github.com/unicode-org/message-format-wg/issues/726
+
+ test = testBuilder.setPattern(".input {$dt :time style=medium} {{{$dt :datetime dateStyle=long}}}")
+ .setArgument("dt", "2006-01-02T15:04:06")
+ .setExpectSuccess()
+ .setExpected(CharsToUnicodeString("January 2, 2006 at 3:04:06\\u202FPM"))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+*/
+
+ // TODO: tests for other function options?
+}
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/messageformat2test_icu.cpp b/icu4c/source/test/intltest/messageformat2test_icu.cpp
new file mode 100644
index 000000000..d1dfa389c
--- /dev/null
+++ b/icu4c/source/test/intltest/messageformat2test_icu.cpp
@@ -0,0 +1,159 @@
+// © 2024 and later: Unicode, Inc. and others.
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/gregocal.h"
+#include "unicode/msgfmt.h"
+#include "messageformat2test.h"
+
+using namespace icu::message2;
+
+/*
+ Tests based on ICU4J's Mf2IcuTest.java
+*/
+
+/*
+ TODO: Tests need to be unified in a single format that
+ both ICU4C and ICU4J can use, rather than being embedded in code.
+*/
+
+/*
+Tests reflect the syntax specified in
+
+ https://github.com/unicode-org/message-format-wg/commits/main/spec/message.abnf
+
+as of the following commit from 2023-05-09:
+ https://github.com/unicode-org/message-format-wg/commit/194f6efcec5bf396df36a19bd6fa78d1fa2e0867
+
+*/
+
+void TestMessageFormat2::testSample(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ TestUtils::runTestCase(*this, testBuilder.setPattern("There are {$count} files on {$where}")
+ .setArgument("count", "abc")
+ .setArgument("where", "def")
+ .setExpected("There are abc files on def")
+ .build(), errorCode);
+}
+
+void TestMessageFormat2::testStaticFormat(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ TestUtils::runTestCase(*this, testBuilder.setPattern("At {$when :time style=medium} on {$when :date style=medium}, \
+there was {$what} on planet {$planet :integer}.")
+ .setArgument("planet", (int64_t) 7)
+ .setDateArgument("when", (UDate) 871068000000)
+ .setArgument("what", "a disturbance in the Force")
+ .setExpected(CharsToUnicodeString("At 12:20:00\\u202FPM on Aug 8, 1997, there was a disturbance in the Force on planet 7."))
+ .build(), errorCode);
+}
+
+void TestMessageFormat2::testSimpleFormat(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ testBuilder.setPattern("The disk \"{$diskName}\" contains {$fileCount} file(s).");
+ testBuilder.setArgument("diskName", "MyDisk");
+
+
+ TestCase test = testBuilder.setArgument("fileCount", (int64_t) 0)
+ .setExpected("The disk \"MyDisk\" contains 0 file(s).")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("fileCount", (int64_t) 1)
+ .setExpected("The disk \"MyDisk\" contains 1 file(s).")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("fileCount", (int64_t) 12)
+ .setExpected("The disk \"MyDisk\" contains 12 file(s).")
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testSelectFormatToPattern(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ UnicodeString pattern = CharsToUnicodeString(".match {$userGender :string}\n\
+ female {{{$userName} est all\\u00E9e \\u00E0 Paris.}}\n\
+ * {{{$userName} est all\\u00E9 \\u00E0 Paris.}}");
+
+ testBuilder.setPattern(pattern);
+
+ TestCase test = testBuilder.setArgument("userName", "Charlotte")
+ .setArgument("userGender", "female")
+ .setExpected(CharsToUnicodeString("Charlotte est all\\u00e9e \\u00e0 Paris."))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("userName", "Guillaume")
+ .setArgument("userGender", "male")
+ .setExpected(CharsToUnicodeString("Guillaume est all\\u00e9 \\u00e0 Paris."))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.setArgument("userName", "Dominique")
+ .setArgument("userGender", "unknown")
+ .setExpected(CharsToUnicodeString("Dominique est all\\u00e9 \\u00e0 Paris."))
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::testMf1Behavior(TestCase::Builder& testBuilder, IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ UDate testDate = UDate(1671782400000); // 2022-12-23
+ UnicodeString user = "John";
+ UnicodeString badArgumentsNames[] = {
+ "userX", "todayX"
+ };
+ UnicodeString goodArgumentsNames[] = {
+ "user", "today"
+ };
+ icu::Formattable oldArgumentsValues[] = {
+ icu::Formattable(user), icu::Formattable(testDate, icu::Formattable::kIsDate)
+ };
+ UnicodeString expectedGood = "Hello John, today is December 23, 2022.";
+
+ LocalPointer<MessageFormat> mf1(new MessageFormat("Hello {user}, today is {today,date,long}.", errorCode));
+ CHECK_ERROR(errorCode);
+
+ UnicodeString result;
+ mf1->format(badArgumentsNames, oldArgumentsValues, 2, result, errorCode);
+ assertEquals("testMf1Behavior", (UBool) true, U_SUCCESS(errorCode));
+ assertEquals("old icu test", "Hello {user}, today is {today}.", result);
+ result.remove();
+ mf1->format(goodArgumentsNames, oldArgumentsValues, 2, result, errorCode);
+ assertEquals("testMf1Behavior", (UBool) true, U_SUCCESS(errorCode));
+ assertEquals("old icu test", expectedGood, result);
+
+ TestCase test = testBuilder.setPattern("Hello {$user}, today is {$today :date style=long}.")
+ .setArgument(badArgumentsNames[0], user)
+ .setDateArgument(badArgumentsNames[1], testDate)
+ .setExpected("Hello {$user}, today is {$today}.")
+ .setExpectedError(U_MF_UNRESOLVED_VARIABLE_ERROR)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+
+ test = testBuilder.clearArguments()
+ .setExpectSuccess()
+ .setArgument(goodArgumentsNames[0], user)
+ .setDateArgument(goodArgumentsNames[1], testDate)
+ .setExpected(expectedGood)
+ .build();
+ TestUtils::runTestCase(*this, test, errorCode);
+}
+
+void TestMessageFormat2::messageFormat1Tests() {
+ IcuTestErrorCode errorCode(*this, "featureTests");
+
+ TestCase::Builder testBuilder;
+ testBuilder.setName("messageFormat1Tests");
+
+ testSample(testBuilder, errorCode);
+ testStaticFormat(testBuilder, errorCode);
+ testSimpleFormat(testBuilder, errorCode);
+ testSelectFormatToPattern(testBuilder, errorCode);
+ testMf1Behavior(testBuilder, errorCode);
+}
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/messageformat2test_utils.h b/icu4c/source/test/intltest/messageformat2test_utils.h
new file mode 100644
index 000000000..add3992f4
--- /dev/null
+++ b/icu4c/source/test/intltest/messageformat2test_utils.h
@@ -0,0 +1,318 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef _TESTMESSAGEFORMAT2_UTILS
+#define _TESTMESSAGEFORMAT2_UTILS
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/locid.h"
+#include "unicode/messageformat2_formattable.h"
+#include "unicode/messageformat2.h"
+#include "intltest.h"
+#include "messageformat2_macros.h"
+#include "messageformat2_serializer.h"
+
+U_NAMESPACE_BEGIN namespace message2 {
+
+class TestCase : public UMemory {
+ private:
+ /* const */ UnicodeString testName;
+ /* const */ UnicodeString pattern;
+ /* const */ Locale locale;
+ /* const */ std::map<UnicodeString, Formattable> arguments;
+ /* const */ UErrorCode expectedError;
+ /* const */ bool expectedNoSyntaxError;
+ /* const */ bool hasExpectedOutput;
+ /* const */ UnicodeString expected;
+ /* const */ bool hasLineNumberAndOffset;
+ /* const */ uint32_t lineNumber;
+ /* const */ uint32_t offset;
+ /* const */ bool ignoreError;
+
+ // Function registry is not owned by the TestCase object
+ const MFFunctionRegistry* functionRegistry = nullptr;
+
+ public:
+ const UnicodeString& getPattern() const { return pattern; }
+ const Locale& getLocale() const { return locale; }
+ std::map<UnicodeString, Formattable> getArguments() const { return std::move(arguments); }
+ const UnicodeString& getTestName() const { return testName; }
+ bool expectSuccess() const {
+ return (!ignoreError && U_SUCCESS(expectedError));
+ }
+ bool expectFailure() const {
+ return (!ignoreError && U_FAILURE(expectedError));
+ }
+ bool expectNoSyntaxError() const {
+ return expectedNoSyntaxError;
+ }
+ UErrorCode expectedErrorCode() const {
+ U_ASSERT(!expectSuccess());
+ return expectedError;
+ }
+ bool lineNumberAndOffsetMatch(uint32_t actualLine, uint32_t actualOffset) const {
+ return (!hasLineNumberAndOffset ||
+ ((actualLine == lineNumber) && actualOffset == offset));
+ }
+ bool outputMatches(const UnicodeString& result) const {
+ return (!hasExpectedOutput || (expected == result));
+ }
+ const UnicodeString& expectedOutput() const {
+ U_ASSERT(hasExpectedOutput);
+ return expected;
+ }
+ uint32_t getLineNumber() const {
+ U_ASSERT(hasLineNumberAndOffset);
+ return lineNumber;
+ }
+ uint32_t getOffset() const {
+ U_ASSERT(hasLineNumberAndOffset);
+ return offset;
+ }
+ bool hasCustomRegistry() const { return functionRegistry != nullptr; }
+ const MFFunctionRegistry* getCustomRegistry() const {
+ U_ASSERT(hasCustomRegistry());
+ return functionRegistry;
+ }
+ TestCase(const TestCase&);
+ TestCase& operator=(TestCase&& other) noexcept = default;
+ virtual ~TestCase();
+
+ class Builder : public UObject {
+ friend class TestCase;
+
+ public:
+ Builder& setName(UnicodeString name) { testName = name; return *this; }
+ Builder& setPattern(UnicodeString pat) { pattern = pat; return *this; }
+ Builder& setArgument(const UnicodeString& k, const UnicodeString& val) {
+ arguments[k] = Formattable(val);
+ return *this;
+ }
+ Builder& setArgument(const UnicodeString& k, const Formattable* val, int32_t count) {
+ U_ASSERT(val != nullptr);
+ arguments[k] = Formattable(val, count);
+ return *this;
+ }
+ Builder& setArgument(const UnicodeString& k, double val) {
+ arguments[k] = Formattable(val);
+ return *this;
+ }
+ Builder& setArgument(const UnicodeString& k, int64_t val) {
+ arguments[k] = Formattable(val);
+ return *this;
+ }
+ Builder& setDateArgument(const UnicodeString& k, UDate date) {
+ arguments[k] = Formattable::forDate(date);
+ return *this;
+ }
+ Builder& setDecimalArgument(const UnicodeString& k, std::string_view decimal, UErrorCode& errorCode) {
+ THIS_ON_ERROR(errorCode);
+ arguments[k] = Formattable::forDecimal(decimal, errorCode);
+ return *this;
+ }
+ Builder& setArgument(const UnicodeString& k, const FormattableObject* val) {
+ U_ASSERT(val != nullptr);
+ arguments[k] = Formattable(val);
+ return *this;
+ }
+ Builder& clearArguments() {
+ arguments.clear();
+ return *this;
+ }
+ Builder& setExpected(UnicodeString e) {
+ hasExpectedOutput = true;
+ expected = e;
+ return *this;
+ }
+ Builder& clearExpected() {
+ hasExpectedOutput = false;
+ return *this;
+ }
+ Builder& setExpectedError(UErrorCode errorCode) {
+ expectedError = U_SUCCESS(errorCode) ? U_ZERO_ERROR : errorCode;
+ return *this;
+ }
+ Builder& setNoSyntaxError() {
+ expectNoSyntaxError = true;
+ return *this;
+ }
+ Builder& setExpectSuccess() {
+ return setExpectedError(U_ZERO_ERROR);
+ }
+ Builder& setLocale(Locale&& loc) {
+ locale = loc;
+ return *this;
+ }
+ Builder& setExpectedLineNumberAndOffset(uint32_t line, uint32_t o) {
+ hasLineNumberAndOffset = true;
+ lineNumber = line;
+ offset = o;
+ return *this;
+ }
+ Builder& setIgnoreError() {
+ ignoreError = true;
+ return *this;
+ }
+ Builder& clearIgnoreError() {
+ ignoreError = false;
+ return *this;
+ }
+ Builder& setFunctionRegistry(const MFFunctionRegistry* reg) {
+ U_ASSERT(reg != nullptr);
+ functionRegistry = reg;
+ return *this;
+ }
+ TestCase build() const {
+ return TestCase(*this);
+ }
+ virtual ~Builder();
+
+ private:
+ UnicodeString testName;
+ UnicodeString pattern;
+ Locale locale;
+ std::map<UnicodeString, Formattable> arguments;
+ bool hasExpectedOutput;
+ UnicodeString expected;
+ UErrorCode expectedError;
+ bool expectNoSyntaxError;
+ bool hasLineNumberAndOffset;
+ uint32_t lineNumber;
+ uint32_t offset;
+ bool ignoreError;
+ const MFFunctionRegistry* functionRegistry = nullptr; // Not owned
+
+ public:
+ Builder() : pattern(""), locale(Locale::getDefault()), hasExpectedOutput(false), expected(""), expectedError(U_ZERO_ERROR), expectNoSyntaxError(false), hasLineNumberAndOffset(false), ignoreError(false) {}
+ };
+
+ private:
+ TestCase(const Builder& builder) :
+ testName(builder.testName),
+ pattern(builder.pattern),
+ locale(builder.locale),
+ arguments(builder.arguments),
+ expectedError(builder.expectedError),
+ expectedNoSyntaxError(builder.expectNoSyntaxError),
+ hasExpectedOutput(builder.hasExpectedOutput),
+ expected(builder.expected),
+ hasLineNumberAndOffset(builder.hasLineNumberAndOffset),
+ lineNumber(builder.hasLineNumberAndOffset ? builder.lineNumber : 0),
+ offset(builder.hasLineNumberAndOffset ? builder.offset : 0),
+ ignoreError(builder.ignoreError),
+ functionRegistry(builder.functionRegistry) {
+ // If an error is not expected, then the expected
+ // output should be present
+ U_ASSERT(expectFailure() || expectNoSyntaxError() || hasExpectedOutput);
+ }
+}; // class TestCase
+
+class TestUtils {
+ public:
+
+ // Runs a single test case
+ static void runTestCase(IntlTest& tmsg,
+ const TestCase& testCase,
+ IcuTestErrorCode& errorCode) {
+ CHECK_ERROR(errorCode);
+
+ UParseError parseError;
+ MessageFormatter::Builder mfBuilder(errorCode);
+ mfBuilder.setPattern(testCase.getPattern(), parseError, errorCode).setLocale(testCase.getLocale());
+
+ if (testCase.hasCustomRegistry()) {
+ mfBuilder.setFunctionRegistry(*testCase.getCustomRegistry());
+ }
+ MessageFormatter mf = mfBuilder.build(errorCode);
+ UnicodeString result;
+
+ if (U_SUCCESS(errorCode)) {
+ result = mf.formatToString(MessageArguments(testCase.getArguments(), errorCode), errorCode);
+ }
+
+ if (testCase.expectSuccess() || (testCase.expectedErrorCode() != U_MF_SYNTAX_ERROR
+ // For now, don't round-trip messages with these errors,
+ // since duplicate options are dropped
+ && testCase.expectedErrorCode() != U_MF_DUPLICATE_OPTION_NAME_ERROR)) {
+ const UnicodeString& in = mf.getNormalizedPattern();
+ UnicodeString out;
+ if (!roundTrip(in, mf.getDataModel(), out)) {
+ failRoundTrip(tmsg, testCase, in, out);
+ }
+ }
+
+ if (testCase.expectNoSyntaxError()) {
+ if (errorCode == U_MF_SYNTAX_ERROR) {
+ failSyntaxError(tmsg, testCase);
+ }
+ errorCode.reset();
+ return;
+ }
+ if (testCase.expectSuccess() && U_FAILURE(errorCode)) {
+ failExpectedSuccess(tmsg, testCase, errorCode);
+ return;
+ }
+ if (testCase.expectFailure() && errorCode != testCase.expectedErrorCode()) {
+ failExpectedFailure(tmsg, testCase, errorCode);
+ return;
+ }
+ if (!testCase.lineNumberAndOffsetMatch(parseError.line, parseError.offset)) {
+ failWrongOffset(tmsg, testCase, parseError.line, parseError.offset);
+ }
+ if (!testCase.outputMatches(result)) {
+ failWrongOutput(tmsg, testCase, result);
+ return;
+ }
+ errorCode.reset();
+ }
+
+ static bool roundTrip(const UnicodeString& normalizedInput, const MFDataModel& dataModel, UnicodeString& result) {
+ Serializer(dataModel, result).serialize();
+ return (normalizedInput == result);
+ }
+
+ static void failSyntaxError(IntlTest& tmsg, const TestCase& testCase) {
+ tmsg.dataerrln(testCase.getTestName());
+ tmsg.logln(testCase.getTestName() + " failed test with pattern: " + testCase.getPattern() + " and error code U_MF_SYNTAX_WARNING; expected no syntax error");
+ }
+
+ static void failExpectedSuccess(IntlTest& tmsg, const TestCase& testCase, IcuTestErrorCode& errorCode) {
+ tmsg.dataerrln(testCase.getTestName());
+ tmsg.logln(testCase.getTestName() + " failed test with pattern: " + testCase.getPattern() + " and error code " + ((int32_t) errorCode));
+ errorCode.reset();
+ }
+ static void failExpectedFailure(IntlTest& tmsg, const TestCase& testCase, IcuTestErrorCode& errorCode) {
+ tmsg.dataerrln(testCase.getTestName());
+ tmsg.logln(testCase.getTestName() + " failed test with wrong error code; pattern: " + testCase.getPattern() + " and error code " + ((int32_t) errorCode) + "(expected error code: " + ((int32_t) testCase.expectedErrorCode()) + " )");
+ errorCode.reset();
+ }
+ static void failWrongOutput(IntlTest& tmsg, const TestCase& testCase, const UnicodeString& result) {
+ tmsg.dataerrln(testCase.getTestName());
+ tmsg.logln(testCase.getTestName() + " failed test with wrong output; pattern: " + testCase.getPattern() + " and expected output = " + testCase.expectedOutput() + " and actual output = " + result);
+ }
+
+ static void failRoundTrip(IntlTest& tmsg, const TestCase& testCase, const UnicodeString& in, const UnicodeString& output) {
+ tmsg.dataerrln(testCase.getTestName());
+ tmsg.logln(testCase.getTestName() + " failed test with wrong output; normalized input = " + in + " serialized data model = " + output);
+ }
+
+ static void failWrongOffset(IntlTest& tmsg, const TestCase& testCase, uint32_t actualLine, uint32_t actualOffset) {
+ tmsg.dataerrln("Test failed with wrong line or character offset in parse error; expected (line %d, offset %d), got (line %d, offset %d)", testCase.getLineNumber(), testCase.getOffset(),
+ actualLine, actualOffset);
+ tmsg.logln(UnicodeString(testCase.getTestName()) + " pattern = " + testCase.getPattern() + " - failed by returning the wrong line number or offset in the parse error");
+ }
+}; // class TestUtils
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif
diff --git a/icu4c/source/test/intltest/mnkytst.cpp b/icu4c/source/test/intltest/mnkytst.cpp
index ef926392c..3bb695011 100644
--- a/icu4c/source/test/intltest/mnkytst.cpp
+++ b/icu4c/source/test/intltest/mnkytst.cpp
@@ -31,7 +31,7 @@
CollationMonkeyTest::CollationMonkeyTest()
: source("-abcdefghijklmnopqrstuvwxyz#&^$@", ""),
- myCollator(0)
+ myCollator(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollator = Collator::createInstance("en_US", status);
diff --git a/icu4c/source/test/intltest/msfmrgts.cpp b/icu4c/source/test/intltest/msfmrgts.cpp
index fa3337eaa..9ea1359ef 100644
--- a/icu4c/source/test/intltest/msfmrgts.cpp
+++ b/icu4c/source/test/intltest/msfmrgts.cpp
@@ -208,7 +208,7 @@ void MessageFormatRegressionTest::Test4031438()
//if(objs[7/*params.length*/] != nullptr)
// errln("Parse failed with more than expected arguments");
- NumberFormat *fmt = 0;
+ NumberFormat* fmt = nullptr;
UnicodeString temp, temp1;
for (int i = 0; i < count; i++) {
@@ -702,7 +702,7 @@ void MessageFormatRegressionTest::Test4118592()
failure(status, "new messageFormat");
UnicodeString pattern("{0,choice,1#YES|2#NO}");
UnicodeString prefix("");
- Formattable *objs = 0;
+ Formattable* objs = nullptr;
for (int i = 0; i < 5; i++) {
UnicodeString formatted;
diff --git a/icu4c/source/test/intltest/numbertest.h b/icu4c/source/test/intltest/numbertest.h
index 1ad8b28da..d384e0f22 100644
--- a/icu4c/source/test/intltest/numbertest.h
+++ b/icu4c/source/test/intltest/numbertest.h
@@ -42,7 +42,7 @@ class AffixUtilsTest : public IntlTest {
void testInvalid();
void testUnescapeWithSymbolProvider();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
UnicodeString unescapeWithDefaults(const SymbolProvider &defaultProvider, UnicodeString input,
@@ -104,8 +104,8 @@ class NumberFormatterApiTest : public IntlTestWithFieldPosition {
void microPropsInternals();
void formatUnitsAliases();
void testIssue22378();
-
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
CurrencyUnit USD;
@@ -213,7 +213,7 @@ class DecimalQuantityTest : public IntlTest {
void testSuppressedExponentUnchangedByInitialScaling();
void testDecimalQuantityParseFormatRoundTrip();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
void assertDoubleEquals(UnicodeString message, double a, double b);
@@ -226,7 +226,7 @@ class DoubleConversionTest : public IntlTest {
public:
void testDoubleConversionApi();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
};
class ModifiersTest : public IntlTest {
@@ -236,7 +236,7 @@ class ModifiersTest : public IntlTest {
void testSimpleModifier();
void testCurrencySpacingEnabledModifier();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
void assertModifierEquals(const Modifier &mod, int32_t expectedPrefixLength, bool expectedStrong,
@@ -254,7 +254,7 @@ class PatternModifierTest : public IntlTest {
void testPatternWithNoPlaceholder();
void testMutableEqualsImmutable();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
UnicodeString getPrefix(const MutablePatternModifier &mod, UErrorCode &status);
@@ -269,7 +269,7 @@ class PatternStringTest : public IntlTestWithFieldPosition {
void testBug13117();
void testCurrencyDecimal();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
};
@@ -286,7 +286,7 @@ class NumberParserTest : public IntlTest {
void test20360_BidiOverflow();
void testInfiniteRecursion();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
};
class NumberSkeletonTest : public IntlTest {
@@ -304,7 +304,7 @@ class NumberSkeletonTest : public IntlTest {
void perUnitToSkeleton();
void measurementSystemOverride();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
void expectedErrorSkeleton(const char16_t** cases, int32_t casesLen);
@@ -325,13 +325,15 @@ class NumberRangeFormatterTest : public IntlTestWithFieldPosition {
void testFieldPositions();
void testCopyMove();
void toObject();
+ void locale();
void testGetDecimalNumbers();
void test21684_Performance();
void test21358_SignPosition();
void test21683_StateLeak();
void testCreateLNRFFromNumberingSystemInSkeleton();
+ void test22288_DifferentStartEndSettings();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
CurrencyUnit USD;
@@ -371,19 +373,20 @@ class SimpleNumberFormatterTest : public IntlTestWithFieldPosition {
public:
void testBasic();
void testWithOptions();
+ void testDigits();
void testSymbols();
void testSign();
void testCopyMove();
void testCAPI();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
};
class NumberPermutationTest : public IntlTest {
public:
void testPermutations();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
};
@@ -401,7 +404,7 @@ class NumberPermutationTest : public IntlTest {
class NumberTest : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override {
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override {
if (exec) {
logln("TestSuite NumberTest: ");
}
diff --git a/icu4c/source/test/intltest/numbertest_api.cpp b/icu4c/source/test/intltest/numbertest_api.cpp
index 4146247ff..f9072eb54 100644
--- a/icu4c/source/test/intltest/numbertest_api.cpp
+++ b/icu4c/source/test/intltest/numbertest_api.cpp
@@ -1346,7 +1346,7 @@ void NumberFormatterApiTest::unitSkeletons() {
u"unit/kibijoule-per-furlong", //
u"unit/kibijoule-per-furlong"},
};
- for (auto &cas : cases) {
+ for (const auto& cas : cases) {
IcuTestErrorCode status(*this, cas.msg);
auto nf = NumberFormatter::forSkeleton(cas.inputSkeleton, status);
if (status.errIfFailureAndReset("NumberFormatter::forSkeleton failed")) {
@@ -1390,7 +1390,7 @@ void NumberFormatterApiTest::unitSkeletons() {
U_NUMBER_SKELETON_SYNTAX_ERROR, //
U_ZERO_ERROR},
};
- for (auto &cas : failCases) {
+ for (const auto& cas : failCases) {
IcuTestErrorCode status(*this, cas.msg);
auto nf = NumberFormatter::forSkeleton(cas.inputSkeleton, status);
if (status.expectErrorAndReset(cas.expectedForSkelStatus, cas.msg)) {
@@ -1680,7 +1680,7 @@ void NumberFormatterApiTest::unitUsage() {
NumberFormatter::with().unit(MeasureUnit::getAcre()).usage("default"),
Locale::getEnglish(),
-uprv_getInfinity(),
- u"-∞ km²");
+ u"-∞ sq mi");
// // TODO(icu-units#131): do we care about NaN?
// // TODO: on some platforms with MSVC, "-NaN sec" is returned.
@@ -2155,7 +2155,7 @@ void NumberFormatterApiTest::unitCurrency() {
NumberFormatter::with().unit(USD).unitWidth(UNUM_UNIT_WIDTH_NARROW),
Locale("en-CA"),
5.43,
- u"US$5.43");
+ u"$5.43");
assertFormatSingle(
u"Currency Difference between Narrow and Short (Short Version)",
@@ -3004,6 +3004,14 @@ void NumberFormatterApiTest::unitLocaleTags() {
"celsius", 0, "default", "celsius", 0.0, u"0 degrees Celsius"},
{u"Test the locale with ms,rg --> ms tag wins", "en-US-u-ms-metric-rg-uszzzz", "foot", 1,
"default", "centimeter", 30.0, u"30 centimeters"},
+
+ // Test the liklihood of the languages
+ {"Test the region of `en` --> region should be US", "en", "celsius", 1, "default", "fahrenheit",
+ 34.0, u"34 degrees Fahrenheit"},
+ {"Test the region of `de` --> region should be DE", "de", "celsius", 1, "default", "celsius",
+ 1.0, u"1 Grad Celsius"},
+ {"Test the region of `ar` --> region should be EG", "ar", "celsius", 1, "default", "celsius",
+ 1.0, u"١ درجة مئوية"},
};
for (const auto &testCase : cases) {
@@ -3011,7 +3019,7 @@ void NumberFormatterApiTest::unitLocaleTags() {
Locale locale(testCase.locale);
auto inputUnit = MeasureUnit::forIdentifier(testCase.inputUnit, status);
auto inputValue = testCase.inputValue;
- auto usage = testCase.usage;
+ const auto* usage = testCase.usage;
auto expectedOutputUnit = MeasureUnit::forIdentifier(testCase.expectedOutputUnit, status);
UnicodeString expectedFormattedNumber = testCase.expectedFormattedNumber;
@@ -3042,9 +3050,9 @@ void NumberFormatterApiTest::percentParity() {
UnlocalizedNumberFormatter uMeasurePermille = NumberFormatter::with().unit(MeasureUnit::getPermille());
int32_t localeCount;
- auto locales = Locale::getAvailableLocales(localeCount);
+ const auto* locales = Locale::getAvailableLocales(localeCount);
for (int32_t i=0; i<localeCount; i++) {
- auto& locale = locales[i];
+ const auto& locale = locales[i];
UnicodeString sNoUnitPercent = uNoUnitPercent.locale(locale)
.formatDouble(50, status).toString(status);
UnicodeString sNoUnitPermille = uNoUnitPermille.locale(locale)
@@ -4889,7 +4897,7 @@ void NumberFormatterApiTest::sign() {
.unitWidth(UNUM_UNIT_WIDTH_NARROW),
Locale::getCanada(),
-444444,
- u"(US$444,444.00)");
+ u"($444,444.00)");
assertFormatSingle(
u"Sign Accounting Negative Short",
@@ -4963,10 +4971,10 @@ void NumberFormatterApiTest::signNearZero() {
{ UNUM_SIGN_NEGATIVE, -0.9, u"-1" },
{ UNUM_SIGN_NEGATIVE, -1.1, u"-1" },
};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
auto sign = cas.sign;
auto input = cas.input;
- auto expected = cas.expected;
+ const auto* expected = cas.expected;
auto actual = NumberFormatter::with()
.sign(sign)
.precision(Precision::integer())
@@ -4995,11 +5003,11 @@ void NumberFormatterApiTest::signCoverage() {
const double inputs[] = {
-uprv_getInfinity(), -1, -0.0, 0, 1, uprv_getInfinity(), uprv_getNaN(), negNaN
};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
auto sign = cas.sign;
for (int32_t i = 0; i < UPRV_LENGTHOF(inputs); i++) {
auto input = inputs[i];
- auto expected = cas.expectedStrings[i];
+ const auto* expected = cas.expectedStrings[i];
auto actual = NumberFormatter::with()
.sign(sign)
.locale(Locale::getUS())
@@ -5186,6 +5194,31 @@ void NumberFormatterApiTest::locale() {
UnicodeString actual = NumberFormatter::withLocale(Locale::getFrench()).formatInt(1234, status)
.toString(status);
assertEquals("Locale withLocale()", u"1\u202f234", actual);
+
+ LocalizedNumberFormatter lnf1 = NumberFormatter::withLocale("en").unitWidth(UNUM_UNIT_WIDTH_FULL_NAME)
+ .scale(Scale::powerOfTen(2));
+ LocalizedNumberFormatter lnf2 = NumberFormatter::with()
+ .notation(Notation::compactLong()).locale("fr").unitWidth(UNUM_UNIT_WIDTH_FULL_NAME);
+ UnlocalizedNumberFormatter unf1 = lnf1.withoutLocale();
+ UnlocalizedNumberFormatter unf2 = std::move(lnf2).withoutLocale();
+
+ assertFormatSingle(
+ u"Formatter after withoutLocale A",
+ u"unit/meter unit-width-full-name scale/100",
+ u"unit/meter unit-width-full-name scale/100",
+ unf1.unit(METER),
+ "it-IT",
+ 2,
+ u"200 metri");
+
+ assertFormatSingle(
+ u"Formatter after withoutLocale B",
+ u"compact-long unit/meter unit-width-full-name",
+ u"compact-long unit/meter unit-width-full-name",
+ unf2.unit(METER),
+ "ja-JP",
+ 2,
+ u"2 メートル");
}
void NumberFormatterApiTest::skeletonUserGuideExamples() {
diff --git a/icu4c/source/test/intltest/numbertest_decimalquantity.cpp b/icu4c/source/test/intltest/numbertest_decimalquantity.cpp
index 87cd7707b..6d389ada8 100644
--- a/icu4c/source/test/intltest/numbertest_decimalquantity.cpp
+++ b/icu4c/source/test/intltest/numbertest_decimalquantity.cpp
@@ -92,7 +92,7 @@ void DecimalQuantityTest::testDecimalQuantityBehaviorStandalone() {
fq.setToLong(90909090909000L);
assertToStringAndHealth(fq, u"<DecimalQuantity 0:0 long 90909090909E3>");
- fq.setMinInteger(2);
+ fq.increaseMinIntegerTo(2);
fq.applyMaxInteger(5);
assertToStringAndHealth(fq, u"<DecimalQuantity 2:0 long 9E3>");
fq.setMinFraction(3);
@@ -353,7 +353,7 @@ void DecimalQuantityTest::testHardDoubleConversion() {
{ 4096.000000000006, u"4096.000000000006" },
{ 4096.000000000007, u"4096.000000000007" } };
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
DecimalQuantity q;
q.setToDouble(cas.input);
q.roundToInfinity();
@@ -410,7 +410,7 @@ void DecimalQuantityTest::testToDouble() {
{ "514.23", 514.23 },
{ "-3.142E-271", -3.142e-271 } };
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
status.setScope(cas.input);
DecimalQuantity q;
q.setToDecNumber({cas.input, -1}, status);
@@ -424,7 +424,7 @@ void DecimalQuantityTest::testMaxDigits() {
DecimalQuantity dq;
dq.setToDouble(876.543);
dq.roundToInfinity();
- dq.setMinInteger(0);
+ dq.increaseMinIntegerTo(0);
dq.applyMaxInteger(2);
dq.setMinFraction(0);
dq.roundToMagnitude(-2, UNUM_ROUND_FLOOR, status);
diff --git a/icu4c/source/test/intltest/numbertest_parse.cpp b/icu4c/source/test/intltest/numbertest_parse.cpp
index b47519ddb..a0264fc86 100644
--- a/icu4c/source/test/intltest/numbertest_parse.cpp
+++ b/icu4c/source/test/intltest/numbertest_parse.cpp
@@ -126,7 +126,7 @@ void NumberParserTest::testBasic() {
{3, u"0", u"0", 1, 0.0}};
parse_flags_t parseFlags = PARSE_FLAG_IGNORE_CASE | PARSE_FLAG_INCLUDE_UNPAIRED_AFFIXES;
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
UnicodeString inputString(cas.inputString);
UnicodeString patternString(cas.patternString);
LocalPointer<const NumberParserImpl> parser(
@@ -227,7 +227,7 @@ void NumberParserTest::testSeriesMatcher() {
{u"+- % ", 7, true},
{u"+-%$", 3, false}};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
UnicodeString input(cas.input);
StringSegment segment(input, false);
@@ -275,7 +275,7 @@ void NumberParserTest::testCombinedCurrencyMatcher() {
{u"euros", u"EUR", u""},
{u"ICU", u"ICU", u"ICU"},
{u"IU$", u"ICU", u"ICU"}};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
UnicodeString input(cas.input);
{
@@ -333,7 +333,7 @@ void NumberParserTest::testAffixPatternMatcher() {
{true, u"abc", 3, u"abc"},
{false, u"hello-to+this%very¤long‰string", 59, u"hello-to+this%very USD long‰string"}};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
UnicodeString affixPattern(cas.affixPattern);
UnicodeString sampleParseableString(cas.sampleParseableString);
int parseFlags = cas.exactMatch ? PARSE_FLAG_EXACT_AFFIX : 0;
diff --git a/icu4c/source/test/intltest/numbertest_patternstring.cpp b/icu4c/source/test/intltest/numbertest_patternstring.cpp
index 0bfd58016..f3ea77015 100644
--- a/icu4c/source/test/intltest/numbertest_patternstring.cpp
+++ b/icu4c/source/test/intltest/numbertest_patternstring.cpp
@@ -100,7 +100,7 @@ void PatternStringTest::testExceptionOnInvalid() {
u"0,,0,",
u"#,##0E0"};
- for (auto pattern : invalidPatterns) {
+ for (const auto* pattern : invalidPatterns) {
UErrorCode status = U_ZERO_ERROR;
ParsedPatternInfo patternInfo;
PatternParser::parseToPatternInfo(pattern, patternInfo, status);
diff --git a/icu4c/source/test/intltest/numbertest_permutation.cpp b/icu4c/source/test/intltest/numbertest_permutation.cpp
index 587e79c42..dc26e589d 100644
--- a/icu4c/source/test/intltest/numbertest_permutation.cpp
+++ b/icu4c/source/test/intltest/numbertest_permutation.cpp
@@ -104,9 +104,9 @@ void NumberPermutationTest::testPermutations() {
// Build up the golden data string as we evaluate all permutations
std::vector<UnicodeString> resultLines;
- resultLines.push_back(u"# © 2019 and later: Unicode, Inc. and others.");
- resultLines.push_back(u"# License & terms of use: http://www.unicode.org/copyright.html");
- resultLines.push_back(UnicodeString());
+ resultLines.emplace_back(u"# © 2019 and later: Unicode, Inc. and others.");
+ resultLines.emplace_back(u"# License & terms of use: http://www.unicode.org/copyright.html");
+ resultLines.emplace_back();
// Take combinations of 3 orthogonal options
for (size_t i = 0; i < skeletonParts.size() - 2; i++) {
@@ -141,7 +141,7 @@ void NumberPermutationTest::testPermutations() {
}
}
- resultLines.push_back(UnicodeString());
+ resultLines.emplace_back();
}
}
}
diff --git a/icu4c/source/test/intltest/numbertest_range.cpp b/icu4c/source/test/intltest/numbertest_range.cpp
index faab35d1a..61263d7ac 100644
--- a/icu4c/source/test/intltest/numbertest_range.cpp
+++ b/icu4c/source/test/intltest/numbertest_range.cpp
@@ -53,11 +53,13 @@ void NumberRangeFormatterTest::runIndexedTest(int32_t index, UBool exec, const c
TESTCASE_AUTO(testFieldPositions);
TESTCASE_AUTO(testCopyMove);
TESTCASE_AUTO(toObject);
+ TESTCASE_AUTO(locale);
TESTCASE_AUTO(testGetDecimalNumbers);
TESTCASE_AUTO(test21684_Performance);
TESTCASE_AUTO(test21358_SignPosition);
TESTCASE_AUTO(test21683_StateLeak);
TESTCASE_AUTO(testCreateLNRFFromNumberingSystemInSkeleton);
+ TESTCASE_AUTO(test22288_DifferentStartEndSettings);
TESTCASE_AUTO_END;
}
@@ -917,6 +919,23 @@ void NumberRangeFormatterTest::toObject() {
}
}
+void NumberRangeFormatterTest::locale() {
+ IcuTestErrorCode status(*this, "locale");
+
+ LocalizedNumberRangeFormatter lnf = NumberRangeFormatter::withLocale("en")
+ .identityFallback(UNUM_IDENTITY_FALLBACK_RANGE);
+ UnlocalizedNumberRangeFormatter unf1 = lnf.withoutLocale();
+ UnlocalizedNumberRangeFormatter unf2 = NumberRangeFormatter::with()
+ .identityFallback(UNUM_IDENTITY_FALLBACK_RANGE)
+ .locale("ar-EG")
+ .withoutLocale();
+
+ FormattedNumberRange res1 = unf1.locale("bn").formatFormattableRange(5, 5, status);
+ assertEquals(u"res1", u"\u09EB\u2013\u09EB", res1.toTempString(status));
+ FormattedNumberRange res2 = unf2.locale("ja-JP").formatFormattableRange(5, 5, status);
+ assertEquals(u"res2", u"5\uFF5E5", res2.toTempString(status));
+}
+
void NumberRangeFormatterTest::testGetDecimalNumbers() {
IcuTestErrorCode status(*this, "testGetDecimalNumbers");
@@ -1018,7 +1037,6 @@ void NumberRangeFormatterTest::test21358_SignPosition() {
}
{
- // TODO(CLDR-14111): Add spacing between range separator and sign
LocalizedNumberRangeFormatter lnrf = NumberRangeFormatter::withLocale("de-CH");
UnicodeString actual = lnrf.formatFormattableRange(2, -3, status).toString(status);
assertEquals("Positive to negative range", u"2–-3", actual);
@@ -1110,7 +1128,7 @@ void NumberRangeFormatterTest::test21683_StateLeak() {
unumrf_formatDoubleRange(nrf, range.start, range.end, result, status);
if (status.errIfFailureAndReset("unumrf_formatDoubleRange")) { goto cleanup; }
- auto* formattedValue = unumrf_resultAsValue(result, status);
+ const auto* formattedValue = unumrf_resultAsValue(result, status);
if (status.errIfFailureAndReset("unumrf_resultAsValue")) { goto cleanup; }
int32_t utf16Length;
@@ -1141,6 +1159,27 @@ cleanup:
ucfpos_close(fpos);
}
+void NumberRangeFormatterTest::test22288_DifferentStartEndSettings() {
+ IcuTestErrorCode status(*this, "test22288_DifferentStartEndSettings");
+ LocalizedNumberRangeFormatter lnrf(NumberRangeFormatter
+ ::withLocale("en")
+ .collapse(UNUM_RANGE_COLLAPSE_UNIT)
+ .numberFormatterFirst(
+ NumberFormatter::with()
+ .unit(CurrencyUnit("USD", status))
+ .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME)
+ .precision(Precision::integer())
+ .roundingMode(UNUM_ROUND_FLOOR))
+ .numberFormatterSecond(
+ NumberFormatter::with()
+ .unit(CurrencyUnit("USD", status))
+ .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME)
+ .precision(Precision::integer())
+ .roundingMode(UNUM_ROUND_CEILING)));
+ FormattedNumberRange result = lnrf.formatFormattableRange(2.5, 2.5, status);
+ assertEquals("Should format successfully", u"2–3 US dollars", result.toString(status));
+}
+
void NumberRangeFormatterTest::assertFormatRange(
const char16_t* message,
const UnlocalizedNumberRangeFormatter& f,
diff --git a/icu4c/source/test/intltest/numbertest_simple.cpp b/icu4c/source/test/intltest/numbertest_simple.cpp
index dd5c26ccf..a9133a83e 100644
--- a/icu4c/source/test/intltest/numbertest_simple.cpp
+++ b/icu4c/source/test/intltest/numbertest_simple.cpp
@@ -18,6 +18,7 @@ void SimpleNumberFormatterTest::runIndexedTest(int32_t index, UBool exec, const
TESTCASE_AUTO_BEGIN;
TESTCASE_AUTO(testBasic);
TESTCASE_AUTO(testWithOptions);
+ TESTCASE_AUTO(testDigits);
TESTCASE_AUTO(testSymbols);
TESTCASE_AUTO(testSign);
TESTCASE_AUTO(testCopyMove);
@@ -51,11 +52,11 @@ void SimpleNumberFormatterTest::testWithOptions() {
IcuTestErrorCode status(*this, "testWithOptions");
SimpleNumber num = SimpleNumber::forInt64(1250000, status);
+ num.setMaximumIntegerDigits(6, status);
num.setMinimumIntegerDigits(6, status);
num.setMinimumFractionDigits(2, status);
num.multiplyByPowerOfTen(-2, status);
num.roundTo(3, UNUM_ROUND_HALFUP, status);
- num.truncateStart(4, status);
SimpleNumberFormatter snf = SimpleNumberFormatter::forLocale("bn", status);
FormattedNumber result = snf.format(std::move(num), status);
@@ -76,6 +77,152 @@ void SimpleNumberFormatterTest::testWithOptions() {
UPRV_LENGTHOF(expectedFieldPositions));
}
+void SimpleNumberFormatterTest::testDigits() {
+ IcuTestErrorCode status(*this, "testDigits");
+
+ SimpleNumberFormatter snf = SimpleNumberFormatter::forLocaleAndGroupingStrategy(
+ "en-US",
+ UNUM_GROUPING_ON_ALIGNED,
+ status
+ );
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("no digit options",
+ u"91,827.3645",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMaximumIntegerDigits(4, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("setMaximumIntegerDigits",
+ u"1,827.3645",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMaximumIntegerDigits(8, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("bigger setMaximumIntegerDigits",
+ u"91,827.3645",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMinimumIntegerDigits(6, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("setMinimumIntegerDigits",
+ u"091,827.3645",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMinimumIntegerDigits(8, status);
+ num.setMinimumIntegerDigits(6, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("double setMinimumIntegerDigits",
+ u"091,827.3645",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMaximumIntegerDigits(4, status);
+ num.setMinimumIntegerDigits(6, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("setMaximumIntegerDigits setMinimumIntegerDigits",
+ u"001,827.3645",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMinimumIntegerDigits(6, status);
+ num.setMaximumIntegerDigits(4, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("setMinimumIntegerDigits setMaximumIntegerDigits",
+ u"1,827.3645",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMaximumIntegerDigits(8, status);
+ num.setMinimumIntegerDigits(6, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("bigger setMaximumIntegerDigits setMinimumIntegerDigits",
+ u"091,827.3645",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.roundTo(-1, UNUM_ROUND_HALFEVEN, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("roundTo",
+ u"91,827.4",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMinimumFractionDigits(5, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("setMinimumFractionDigits",
+ u"91,827.36450",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMinimumFractionDigits(6, status);
+ num.setMinimumFractionDigits(5, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("double setMinimumFractionDigits",
+ u"91,827.36450",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.roundTo(-1, UNUM_ROUND_HALFEVEN, status);
+ num.setMinimumFractionDigits(5, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("roundTo setMinimumFractionDigits",
+ u"91,827.40000",
+ result.toTempString(status));
+ }
+
+ {
+ SimpleNumber num = SimpleNumber::forInt64(918273645, status);
+ num.multiplyByPowerOfTen(-4, status);
+ num.setMinimumFractionDigits(5, status);
+ num.roundTo(-1, UNUM_ROUND_HALFEVEN, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("setMinimumFractionDigits roundTo",
+ u"91,827.40000",
+ result.toTempString(status));
+ }
+}
+
void SimpleNumberFormatterTest::testSymbols() {
IcuTestErrorCode status(*this, "testSymbols");
@@ -199,7 +346,7 @@ void SimpleNumberFormatterTest::testCAPI() {
usnum_setToInt64(unumber.getAlias(), 2335, status);
usnum_multiplyByPowerOfTen(unumber.getAlias(), -2, status);
usnum_roundTo(unumber.getAlias(), -1, UNUM_ROUND_HALFEVEN, status);
- usnum_truncateStart(unumber.getAlias(), 1, status);
+ usnum_setMaximumIntegerDigits(unumber.getAlias(), 1, status);
usnum_setMinimumFractionDigits(unumber.getAlias(), 3, status);
usnum_setMinimumIntegerDigits(unumber.getAlias(), 3, status);
usnumf_format(uformatter.getAlias(), unumber.getAlias(), uresult.getAlias(), status);
diff --git a/icu4c/source/test/intltest/numfmtspectest.cpp b/icu4c/source/test/intltest/numfmtspectest.cpp
index 70d95289b..8bb5b9a61 100644
--- a/icu4c/source/test/intltest/numfmtspectest.cpp
+++ b/icu4c/source/test/intltest/numfmtspectest.cpp
@@ -64,7 +64,8 @@ public:
void TestPercent();
void TestPerMilli();
void TestPadding();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void assertPatternFr(
const char *expected, double x, const char *pattern, UBool possibleDataError=false);
diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp
index 4686b1a87..109d36e5d 100644
--- a/icu4c/source/test/intltest/numfmtst.cpp
+++ b/icu4c/source/test/intltest/numfmtst.cpp
@@ -2053,7 +2053,7 @@ void NumberFormatTest::TestCurrencyNames() {
&isChoiceFormat, &len, &ec)),
possibleDataError);
assertEquals("USD.getName(NARROW_SYMBOL_NAME, en_CA)",
- UnicodeString("US$"),
+ UnicodeString("$"),
UnicodeString(ucurr_getName(USD, "en_CA",
UCURR_NARROW_SYMBOL_NAME,
&isChoiceFormat, &len, &ec)),
@@ -2529,7 +2529,7 @@ void NumberFormatTest::TestIllegalPatterns() {
// Unquoted special characters in the suffix are illegal
"-:000.000|###",
"+:000.000'|###'",
- 0
+ nullptr
};
for (int32_t i=0; DATA[i]; ++i) {
const char* pat=DATA[i];
@@ -2560,7 +2560,7 @@ static const char* KEYWORDS[] = {
/*6*/ "perr:", // <pattern or '-'> <invalid string>
/*7*/ "pat:", // <pattern or '-'> <exp. toPattern or '-' or 'err'>
/*8*/ "fpc:", // <pattern or '-'> <curr.amt> <exp. string> <exp. curr.amt>
- 0
+ nullptr
};
/**
@@ -2570,7 +2570,7 @@ static const char* KEYWORDS[] = {
* the list.
*/
static int32_t keywordIndex(const UnicodeString& tok) {
- for (int32_t i=0; KEYWORDS[i]!=0; ++i) {
+ for (int32_t i = 0; KEYWORDS[i] != nullptr; ++i) {
if (tok==KEYWORDS[i]) {
return i;
}
@@ -2606,8 +2606,8 @@ void NumberFormatTest::TestCases() {
TokenIterator tokens(&reader);
Locale loc("en", "US", "");
- DecimalFormat *ref = 0, *fmt = 0;
- MeasureFormat *mfmt = 0;
+ DecimalFormat *ref = nullptr, *fmt = nullptr;
+ MeasureFormat* mfmt = nullptr;
UnicodeString pat, tok, mloc, str, out, where, currAmt;
Formattable n;
@@ -2761,7 +2761,7 @@ void NumberFormatTest::TestCases() {
testpat = pat;
}
if (exppat == "-") exppat = testpat;
- DecimalFormat* f = 0;
+ DecimalFormat* f = nullptr;
UErrorCode ec2 = U_ZERO_ERROR;
if (existingPat) {
f = fmt;
@@ -9909,7 +9909,7 @@ void NumberFormatTest::Test21134_ToNumberFormatter() {
{
// Case 1: new formatter object
DecimalFormat inner(u"a0b", {"en", status}, status);
- if (auto ptr = inner.toNumberFormatter(status)) {
+ if (const auto* ptr = inner.toNumberFormatter(status)) {
// Copy assignment
outer1 = *ptr;
} else {
@@ -9924,7 +9924,7 @@ void NumberFormatTest::Test21134_ToNumberFormatter() {
inner.format(100, dummy);
inner.format(100, dummy);
inner.format(100, dummy);
- if (auto ptr = inner.toNumberFormatter(status)) {
+ if (const auto* ptr = inner.toNumberFormatter(status)) {
// Copy assignment
outer2 = *ptr;
} else {
@@ -9936,7 +9936,7 @@ void NumberFormatTest::Test21134_ToNumberFormatter() {
// Case 3: currency plural info (different code path)
LocalPointer<DecimalFormat> inner(dynamic_cast<DecimalFormat*>(
DecimalFormat::createInstance("en-US", UNUM_CURRENCY_PLURAL, status)));
- if (auto ptr = inner->toNumberFormatter(status)) {
+ if (const auto* ptr = inner->toNumberFormatter(status)) {
// Copy constructor
outer3.adoptInsteadAndCheckErrorCode(new LocalizedNumberFormatter(*ptr), status);
} else {
@@ -10009,7 +10009,7 @@ void NumberFormatTest::Test13733_StrictAndLenient() {
{u"12$", u"0 ¤¤", 0, 12},
{u"12$", u"0 ¤¤¤", 0, 12},
{u"12$", u"¤¤¤¤0", 0, 12} };
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
UnicodeString inputString(cas.inputString);
UnicodeString patternString(cas.patternString);
int64_t parsedStrictValue = 0;
diff --git a/icu4c/source/test/intltest/numrgts.cpp b/icu4c/source/test/intltest/numrgts.cpp
index 1e4c352d0..56316d35d 100644
--- a/icu4c/source/test/intltest/numrgts.cpp
+++ b/icu4c/source/test/intltest/numrgts.cpp
@@ -1294,7 +1294,7 @@ void NumberFormatRegressionTest::Test4099404()
logln("Bug 4099404 pattern \"000.0#0\" passed");
}*/
delete fmt;
- fmt = 0;
+ fmt = nullptr;
//try {
fmt = new DecimalFormat(UnicodeString("0#0.000"), status);
if( !U_FAILURE(status))
diff --git a/icu4c/source/test/intltest/pluralmaptest.cpp b/icu4c/source/test/intltest/pluralmaptest.cpp
index 91bdc00f8..6b8aa1834 100644
--- a/icu4c/source/test/intltest/pluralmaptest.cpp
+++ b/icu4c/source/test/intltest/pluralmaptest.cpp
@@ -17,7 +17,7 @@
class PluralMapForPluralMapTest : public PluralMap<UnicodeString> {
public:
- bool operator==(const PluralMapForPluralMapTest &other) {
+ bool operator==(const PluralMapForPluralMapTest &other) const {
return equals(other, strEqual);
}
private:
@@ -36,7 +36,7 @@ public:
void TestIterate();
void TestEqual();
void TestCopyAndAssign();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
void addVariant(
PluralMapBase::Category v,
const UnicodeString &value,
diff --git a/icu4c/source/test/intltest/plurfmts.cpp b/icu4c/source/test/intltest/plurfmts.cpp
index 0805c3012..9183ae8da 100644
--- a/icu4c/source/test/intltest/plurfmts.cpp
+++ b/icu4c/source/test/intltest/plurfmts.cpp
@@ -729,7 +729,6 @@ PluralFormatTest::numberFormatTest(PluralFormat* plFmt,
}
}
}
- return;
}
diff --git a/icu4c/source/test/intltest/plurults.cpp b/icu4c/source/test/intltest/plurults.cpp
index 664b27f4b..be951cbd4 100644
--- a/icu4c/source/test/intltest/plurults.cpp
+++ b/icu4c/source/test/intltest/plurults.cpp
@@ -69,6 +69,8 @@ void PluralRulesTest::runIndexedTest( int32_t index, UBool exec, const char* &na
TESTCASE_AUTO(testFixedDecimal);
TESTCASE_AUTO(testSelectTrailingZeros);
TESTCASE_AUTO(testLocaleExtension);
+ TESTCASE_AUTO(testDoubleEqualSign);
+ TESTCASE_AUTO(test22638LongNumberValue);
TESTCASE_AUTO_END;
}
@@ -241,8 +243,8 @@ void PluralRulesTest::testAPI(/*char *par*/)
dataerrln("ERROR: Could not create PluralRules for testing fractions - exiting");
return;
}
- double fData[] = {-101, -100, -1, -0.0, 0, 0.1, 1, 1.999, 2.0, 100, 100.001 };
- bool isKeywordA[] = {true, false, false, false, false, true, false, true, false, false, true };
+ double fData[] = {-101, -100, -1, -0.0, 0, 0.1, 1, 1.999, 2.0, 100, 100.001, 1.39e188 };
+ bool isKeywordA[] = {true, false, false, false, false, true, false, true, false, false, true, true };
for (int32_t i=0; i<UPRV_LENGTHOF(fData); i++) {
if ((newRules->select(fData[i])== KEYWORD_A) != isKeywordA[i]) {
errln("File %s, Line %d, ERROR: plural rules for decimal fractions test failed!\n"
@@ -1065,6 +1067,16 @@ PluralRulesTest::testDoubleValue() {
}
void
+PluralRulesTest::test22638LongNumberValue() {
+ IcuTestErrorCode errorCode(*this, "test22638LongNumberValue");
+ LocalPointer<PluralRules> pr(PluralRules::createRules(
+ u"g:c%4422322222232222222222232222222322222223222222232222222322222223"
+ u"2222222322222232222222322222223222232222222222222322222223222222",
+ errorCode));
+ errorCode.expectErrorAndReset(U_UNEXPECTED_TOKEN);
+}
+
+void
PluralRulesTest::testLongValue() {
IcuTestErrorCode errorCode(*this, "testLongValue");
@@ -1536,7 +1548,6 @@ void PluralRulesTest::testParseErrors() {
errln("file %s, line %d, expected nullptr. Rules: \"%s\"", __FILE__, __LINE__, rules);
}
}
- return;
}
@@ -1638,6 +1649,16 @@ void PluralRulesTest::compareLocaleResults(const char* loc1, const char* loc2, c
}
}
+void PluralRulesTest::testDoubleEqualSign() {
+ IcuTestErrorCode errorCode(*this, "testDoubleEqualSign");
+
+ // ICU-22626
+ // Two '=' in the rul should not leak.
+ LocalPointer<PluralRules> rules(
+ PluralRules::createRules(u"e:c=2=", errorCode), errorCode);
+ errorCode.expectErrorAndReset(U_UNEXPECTED_TOKEN);
+}
+
void PluralRulesTest::testLocaleExtension() {
IcuTestErrorCode errorCode(*this, "testLocaleExtension");
LocalPointer<PluralRules> rules(PluralRules::forLocale("pt@calendar=gregorian", errorCode));
diff --git a/icu4c/source/test/intltest/plurults.h b/icu4c/source/test/intltest/plurults.h
index 98ea9574b..14d397e05 100644
--- a/icu4c/source/test/intltest/plurults.h
+++ b/icu4c/source/test/intltest/plurults.h
@@ -50,6 +50,8 @@ private:
void testFixedDecimal();
void testSelectTrailingZeros();
void testLocaleExtension();
+ void testDoubleEqualSign();
+ void test22638LongNumberValue();
void assertRuleValue(const UnicodeString& rule, double expected);
void assertRuleKeyValue(const UnicodeString& rule, const UnicodeString& key,
diff --git a/icu4c/source/test/intltest/quantityformattertest.cpp b/icu4c/source/test/intltest/quantityformattertest.cpp
index 75e18b94b..e1bacc5d9 100644
--- a/icu4c/source/test/intltest/quantityformattertest.cpp
+++ b/icu4c/source/test/intltest/quantityformattertest.cpp
@@ -29,7 +29,8 @@ public:
QuantityFormatterTest() {
}
void TestBasic();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
};
diff --git a/icu4c/source/test/intltest/rbbiapts.cpp b/icu4c/source/test/intltest/rbbiapts.cpp
index d6d1a890d..9013f18bb 100644
--- a/icu4c/source/test/intltest/rbbiapts.cpp
+++ b/icu4c/source/test/intltest/rbbiapts.cpp
@@ -881,6 +881,35 @@ void RBBIAPITest::TestBug2190() {
delete bi;
}
+void RBBIAPITest::TestBug22580() {
+ UParseError parseError;
+ // Test single ' will not cause infinity loop
+ {
+ UnicodeString rulesString = u"'";
+ UErrorCode status=U_ZERO_ERROR;
+ RuleBasedBreakIterator(rulesString, parseError, status);
+ }
+ if (quick) {
+ return;
+ }
+ // Test any 1 or 2 ASCII chars as rule will not cause infinity loop.
+ // only in exhaust mode
+ for (char16_t u1 = u' '; u1 <= u'~'; u1++) {
+ {
+ UnicodeString rule = u1;
+ UErrorCode status=U_ZERO_ERROR;
+ RuleBasedBreakIterator bi (rule, parseError, status);
+ }
+ for (char16_t u2 = u' '; u2 <= u'~'; u2++) {
+ {
+ UnicodeString rule;
+ rule.append(u1).append(u2);
+ UErrorCode status=U_ZERO_ERROR;
+ RuleBasedBreakIterator bi (rule, parseError, status);
+ }
+ }
+ }
+}
void RBBIAPITest::TestRegistration() {
#if !UCONFIG_NO_SERVICE
@@ -1428,6 +1457,7 @@ void RBBIAPITest::runIndexedTest( int32_t index, UBool exec, const char* &name,
TESTCASE_AUTO(TestQuoteGrouping);
TESTCASE_AUTO(TestRuleStatusVec);
TESTCASE_AUTO(TestBug2190);
+ TESTCASE_AUTO(TestBug22580);
#if !UCONFIG_NO_FILE_IO
TESTCASE_AUTO(TestRegistration);
TESTCASE_AUTO(TestBoilerPlate);
diff --git a/icu4c/source/test/intltest/rbbiapts.h b/icu4c/source/test/intltest/rbbiapts.h
index d65a2bc52..dd0613817 100644
--- a/icu4c/source/test/intltest/rbbiapts.h
+++ b/icu4c/source/test/intltest/rbbiapts.h
@@ -83,6 +83,7 @@ public:
void TestRuleStatusVec();
void TestBug2190();
+ void TestBug22580();
void TestBoilerPlate();
diff --git a/icu4c/source/test/intltest/rbbimonkeytest.cpp b/icu4c/source/test/intltest/rbbimonkeytest.cpp
index cd8436ac3..45fe3e43a 100644
--- a/icu4c/source/test/intltest/rbbimonkeytest.cpp
+++ b/icu4c/source/test/intltest/rbbimonkeytest.cpp
@@ -286,7 +286,7 @@ void BreakRules::compileRules(UCHARBUF *rules, UErrorCode &status) {
}
UnicodeString emptyString;
- for (int32_t lineNumber=0; ;lineNumber++) { // Loop once per input line.
+ for (;;) { // Loop once per input line.
if (U_FAILURE(status)) {
return;
}
diff --git a/icu4c/source/test/intltest/rbbitst.cpp b/icu4c/source/test/intltest/rbbitst.cpp
index 2afe4b391..ecb1c350c 100644
--- a/icu4c/source/test/intltest/rbbitst.cpp
+++ b/icu4c/source/test/intltest/rbbitst.cpp
@@ -144,6 +144,12 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha
TESTCASE_AUTO(TestRandomAccess);
TESTCASE_AUTO(TestExternalBreakEngineWithFakeTaiLe);
TESTCASE_AUTO(TestExternalBreakEngineWithFakeYue);
+ TESTCASE_AUTO(TestBug22579);
+ TESTCASE_AUTO(TestBug22581);
+ TESTCASE_AUTO(TestBug22584);
+ TESTCASE_AUTO(TestBug22585);
+ TESTCASE_AUTO(TestBug22602);
+ TESTCASE_AUTO(TestBug22636);
#if U_ENABLE_TRACING
TESTCASE_AUTO(TestTraceCreateCharacter);
@@ -889,7 +895,7 @@ void RBBITest::TestExtended() {
if (localeMatcher.lookingAt(charIdx-1, status)) {
UnicodeString localeName = localeMatcher.group(1, status);
char localeName8[100];
- localeName.extract(0, localeName.length(), localeName8, sizeof(localeName8), 0);
+ localeName.extract(0, localeName.length(), localeName8, sizeof(localeName8), nullptr);
locale = Locale::createFromName(localeName8);
charIdx += localeMatcher.group(0, status).length() - 1;
TEST_ASSERT_SUCCESS(status);
@@ -1711,21 +1717,21 @@ RBBICharMonkey::RBBICharMonkey() {
fSets = new UVector(status);
// Important: Keep class names the same as the class contents.
- fSets->addElement(fCRLFSet, status); classNames.push_back("CRLF");
- fSets->addElement(fControlSet, status); classNames.push_back("Control");
- fSets->addElement(fExtendSet, status); classNames.push_back("Extended");
- fSets->addElement(fRegionalIndicatorSet, status); classNames.push_back("RegionalIndicator");
+ fSets->addElement(fCRLFSet, status); classNames.emplace_back("CRLF");
+ fSets->addElement(fControlSet, status); classNames.emplace_back("Control");
+ fSets->addElement(fExtendSet, status); classNames.emplace_back("Extended");
+ fSets->addElement(fRegionalIndicatorSet, status); classNames.emplace_back("RegionalIndicator");
if (!fPrependSet->isEmpty()) {
- fSets->addElement(fPrependSet, status); classNames.push_back("Prepend");
+ fSets->addElement(fPrependSet, status); classNames.emplace_back("Prepend");
}
- fSets->addElement(fSpacingSet, status); classNames.push_back("Spacing");
- fSets->addElement(fHangulSet, status); classNames.push_back("Hangul");
- fSets->addElement(fZWJSet, status); classNames.push_back("ZWJ");
- fSets->addElement(fExtendedPictSet, status); classNames.push_back("ExtendedPict");
- fSets->addElement(fViramaSet, status); classNames.push_back("Virama");
- fSets->addElement(fLinkingConsonantSet, status); classNames.push_back("LinkingConsonant");
- fSets->addElement(fExtCccZwjSet, status); classNames.push_back("ExtCcccZwj");
- fSets->addElement(fAnySet, status); classNames.push_back("Any");
+ fSets->addElement(fSpacingSet, status); classNames.emplace_back("Spacing");
+ fSets->addElement(fHangulSet, status); classNames.emplace_back("Hangul");
+ fSets->addElement(fZWJSet, status); classNames.emplace_back("ZWJ");
+ fSets->addElement(fExtendedPictSet, status); classNames.emplace_back("ExtendedPict");
+ fSets->addElement(fViramaSet, status); classNames.emplace_back("Virama");
+ fSets->addElement(fLinkingConsonantSet, status); classNames.emplace_back("LinkingConsonant");
+ fSets->addElement(fExtCccZwjSet, status); classNames.emplace_back("ExtCcccZwj");
+ fSets->addElement(fAnySet, status); classNames.emplace_back("Any");
if (U_FAILURE(status)) {
deferredStatus = status;
@@ -2034,31 +2040,31 @@ RBBIWordMonkey::RBBIWordMonkey()
fOtherSet->removeAll(*fDictionarySet);
// Add classes and their names
- fSets->addElement(fCRSet, status); classNames.push_back("CR");
- fSets->addElement(fLFSet, status); classNames.push_back("LF");
- fSets->addElement(fNewlineSet, status); classNames.push_back("Newline");
- fSets->addElement(fRegionalIndicatorSet, status); classNames.push_back("RegionalIndicator");
- fSets->addElement(fHebrew_LetterSet, status); classNames.push_back("Hebrew");
- fSets->addElement(fALetterSet, status); classNames.push_back("ALetter");
- fSets->addElement(fSingle_QuoteSet, status); classNames.push_back("Single Quote");
- fSets->addElement(fDouble_QuoteSet, status); classNames.push_back("Double Quote");
+ fSets->addElement(fCRSet, status); classNames.emplace_back("CR");
+ fSets->addElement(fLFSet, status); classNames.emplace_back("LF");
+ fSets->addElement(fNewlineSet, status); classNames.emplace_back("Newline");
+ fSets->addElement(fRegionalIndicatorSet, status); classNames.emplace_back("RegionalIndicator");
+ fSets->addElement(fHebrew_LetterSet, status); classNames.emplace_back("Hebrew");
+ fSets->addElement(fALetterSet, status); classNames.emplace_back("ALetter");
+ fSets->addElement(fSingle_QuoteSet, status); classNames.emplace_back("Single Quote");
+ fSets->addElement(fDouble_QuoteSet, status); classNames.emplace_back("Double Quote");
// Omit Katakana from fSets, which omits Katakana characters
// from the test data. They are all in the dictionary set,
// which this (old, to be retired) monkey test cannot handle.
//fSets->addElement(fKatakanaSet, status);
- fSets->addElement(fMidLetterSet, status); classNames.push_back("MidLetter");
- fSets->addElement(fMidNumLetSet, status); classNames.push_back("MidNumLet");
- fSets->addElement(fMidNumSet, status); classNames.push_back("MidNum");
- fSets->addElement(fNumericSet, status); classNames.push_back("Numeric");
- fSets->addElement(fFormatSet, status); classNames.push_back("Format");
- fSets->addElement(fExtendSet, status); classNames.push_back("Extend");
- fSets->addElement(fOtherSet, status); classNames.push_back("Other");
- fSets->addElement(fExtendNumLetSet, status); classNames.push_back("ExtendNumLet");
- fSets->addElement(fWSegSpaceSet, status); classNames.push_back("WSegSpace");
+ fSets->addElement(fMidLetterSet, status); classNames.emplace_back("MidLetter");
+ fSets->addElement(fMidNumLetSet, status); classNames.emplace_back("MidNumLet");
+ fSets->addElement(fMidNumSet, status); classNames.emplace_back("MidNum");
+ fSets->addElement(fNumericSet, status); classNames.emplace_back("Numeric");
+ fSets->addElement(fFormatSet, status); classNames.emplace_back("Format");
+ fSets->addElement(fExtendSet, status); classNames.emplace_back("Extend");
+ fSets->addElement(fOtherSet, status); classNames.emplace_back("Other");
+ fSets->addElement(fExtendNumLetSet, status); classNames.emplace_back("ExtendNumLet");
+ fSets->addElement(fWSegSpaceSet, status); classNames.emplace_back("WSegSpace");
- fSets->addElement(fZWJSet, status); classNames.push_back("ZWJ");
- fSets->addElement(fExtendedPictSet, status); classNames.push_back("ExtendedPict");
+ fSets->addElement(fZWJSet, status); classNames.emplace_back("ZWJ");
+ fSets->addElement(fExtendedPictSet, status); classNames.emplace_back("ExtendedPict");
if (U_FAILURE(status)) {
deferredStatus = status;
@@ -2374,19 +2380,19 @@ RBBISentMonkey::RBBISentMonkey()
fOtherSet->removeAll(*fCloseSet);
fOtherSet->removeAll(*fExtendSet);
- fSets->addElement(fSepSet, status); classNames.push_back("Sep");
- fSets->addElement(fFormatSet, status); classNames.push_back("Format");
- fSets->addElement(fSpSet, status); classNames.push_back("Sp");
- fSets->addElement(fLowerSet, status); classNames.push_back("Lower");
- fSets->addElement(fUpperSet, status); classNames.push_back("Upper");
- fSets->addElement(fOLetterSet, status); classNames.push_back("OLetter");
- fSets->addElement(fNumericSet, status); classNames.push_back("Numeric");
- fSets->addElement(fATermSet, status); classNames.push_back("ATerm");
- fSets->addElement(fSContinueSet, status); classNames.push_back("SContinue");
- fSets->addElement(fSTermSet, status); classNames.push_back("STerm");
- fSets->addElement(fCloseSet, status); classNames.push_back("Close");
- fSets->addElement(fOtherSet, status); classNames.push_back("Other");
- fSets->addElement(fExtendSet, status); classNames.push_back("Extend");
+ fSets->addElement(fSepSet, status); classNames.emplace_back("Sep");
+ fSets->addElement(fFormatSet, status); classNames.emplace_back("Format");
+ fSets->addElement(fSpSet, status); classNames.emplace_back("Sp");
+ fSets->addElement(fLowerSet, status); classNames.emplace_back("Lower");
+ fSets->addElement(fUpperSet, status); classNames.emplace_back("Upper");
+ fSets->addElement(fOLetterSet, status); classNames.emplace_back("OLetter");
+ fSets->addElement(fNumericSet, status); classNames.emplace_back("Numeric");
+ fSets->addElement(fATermSet, status); classNames.emplace_back("ATerm");
+ fSets->addElement(fSContinueSet, status); classNames.emplace_back("SContinue");
+ fSets->addElement(fSTermSet, status); classNames.emplace_back("STerm");
+ fSets->addElement(fCloseSet, status); classNames.emplace_back("Close");
+ fSets->addElement(fOtherSet, status); classNames.emplace_back("Other");
+ fSets->addElement(fExtendSet, status); classNames.emplace_back("Extend");
if (U_FAILURE(status)) {
deferredStatus = status;
@@ -2603,7 +2609,6 @@ int32_t RBBISentMonkey::next(int32_t prevPos) {
}
setAppliedRule(p2, "SB12 Any x Any");
- continue;
}
breakPos = p2;
@@ -2793,55 +2798,55 @@ RBBILineMonkey::RBBILineMonkey() :
fHH->add(u'\u2010'); // Hyphen, '‐'
// Sets and names.
- fSets->addElement(fBK, status); classNames.push_back("fBK");
- fSets->addElement(fCR, status); classNames.push_back("fCR");
- fSets->addElement(fLF, status); classNames.push_back("fLF");
- fSets->addElement(fCM, status); classNames.push_back("fCM");
- fSets->addElement(fNL, status); classNames.push_back("fNL");
- fSets->addElement(fWJ, status); classNames.push_back("fWJ");
- fSets->addElement(fZW, status); classNames.push_back("fZW");
- fSets->addElement(fGL, status); classNames.push_back("fGL");
- fSets->addElement(fCB, status); classNames.push_back("fCB");
- fSets->addElement(fSP, status); classNames.push_back("fSP");
- fSets->addElement(fB2, status); classNames.push_back("fB2");
- fSets->addElement(fBA, status); classNames.push_back("fBA");
- fSets->addElement(fBB, status); classNames.push_back("fBB");
- fSets->addElement(fHY, status); classNames.push_back("fHY");
- fSets->addElement(fH2, status); classNames.push_back("fH2");
- fSets->addElement(fH3, status); classNames.push_back("fH3");
- fSets->addElement(fCL, status); classNames.push_back("fCL");
- fSets->addElement(fCP, status); classNames.push_back("fCP");
- fSets->addElement(fEX, status); classNames.push_back("fEX");
- fSets->addElement(fIN, status); classNames.push_back("fIN");
- fSets->addElement(fJL, status); classNames.push_back("fJL");
- fSets->addElement(fJT, status); classNames.push_back("fJT");
- fSets->addElement(fJV, status); classNames.push_back("fJV");
- fSets->addElement(fNS, status); classNames.push_back("fNS");
- fSets->addElement(fOP, status); classNames.push_back("fOP");
- fSets->addElement(fQU, status); classNames.push_back("fQU");
- fSets->addElement(fIS, status); classNames.push_back("fIS");
- fSets->addElement(fNU, status); classNames.push_back("fNU");
- fSets->addElement(fPO, status); classNames.push_back("fPO");
- fSets->addElement(fPR, status); classNames.push_back("fPR");
- fSets->addElement(fSY, status); classNames.push_back("fSY");
- fSets->addElement(fAI, status); classNames.push_back("fAI");
- fSets->addElement(fAL, status); classNames.push_back("fAL");
- fSets->addElement(fHL, status); classNames.push_back("fHL");
- fSets->addElement(fID, status); classNames.push_back("fID");
- fSets->addElement(fRI, status); classNames.push_back("fRI");
- fSets->addElement(fSG, status); classNames.push_back("fSG");
- fSets->addElement(fEB, status); classNames.push_back("fEB");
- fSets->addElement(fEM, status); classNames.push_back("fEM");
- fSets->addElement(fZWJ, status); classNames.push_back("fZWJ");
+ fSets->addElement(fBK, status); classNames.emplace_back("fBK");
+ fSets->addElement(fCR, status); classNames.emplace_back("fCR");
+ fSets->addElement(fLF, status); classNames.emplace_back("fLF");
+ fSets->addElement(fCM, status); classNames.emplace_back("fCM");
+ fSets->addElement(fNL, status); classNames.emplace_back("fNL");
+ fSets->addElement(fWJ, status); classNames.emplace_back("fWJ");
+ fSets->addElement(fZW, status); classNames.emplace_back("fZW");
+ fSets->addElement(fGL, status); classNames.emplace_back("fGL");
+ fSets->addElement(fCB, status); classNames.emplace_back("fCB");
+ fSets->addElement(fSP, status); classNames.emplace_back("fSP");
+ fSets->addElement(fB2, status); classNames.emplace_back("fB2");
+ fSets->addElement(fBA, status); classNames.emplace_back("fBA");
+ fSets->addElement(fBB, status); classNames.emplace_back("fBB");
+ fSets->addElement(fHY, status); classNames.emplace_back("fHY");
+ fSets->addElement(fH2, status); classNames.emplace_back("fH2");
+ fSets->addElement(fH3, status); classNames.emplace_back("fH3");
+ fSets->addElement(fCL, status); classNames.emplace_back("fCL");
+ fSets->addElement(fCP, status); classNames.emplace_back("fCP");
+ fSets->addElement(fEX, status); classNames.emplace_back("fEX");
+ fSets->addElement(fIN, status); classNames.emplace_back("fIN");
+ fSets->addElement(fJL, status); classNames.emplace_back("fJL");
+ fSets->addElement(fJT, status); classNames.emplace_back("fJT");
+ fSets->addElement(fJV, status); classNames.emplace_back("fJV");
+ fSets->addElement(fNS, status); classNames.emplace_back("fNS");
+ fSets->addElement(fOP, status); classNames.emplace_back("fOP");
+ fSets->addElement(fQU, status); classNames.emplace_back("fQU");
+ fSets->addElement(fIS, status); classNames.emplace_back("fIS");
+ fSets->addElement(fNU, status); classNames.emplace_back("fNU");
+ fSets->addElement(fPO, status); classNames.emplace_back("fPO");
+ fSets->addElement(fPR, status); classNames.emplace_back("fPR");
+ fSets->addElement(fSY, status); classNames.emplace_back("fSY");
+ fSets->addElement(fAI, status); classNames.emplace_back("fAI");
+ fSets->addElement(fAL, status); classNames.emplace_back("fAL");
+ fSets->addElement(fHL, status); classNames.emplace_back("fHL");
+ fSets->addElement(fID, status); classNames.emplace_back("fID");
+ fSets->addElement(fRI, status); classNames.emplace_back("fRI");
+ fSets->addElement(fSG, status); classNames.emplace_back("fSG");
+ fSets->addElement(fEB, status); classNames.emplace_back("fEB");
+ fSets->addElement(fEM, status); classNames.emplace_back("fEM");
+ fSets->addElement(fZWJ, status); classNames.emplace_back("fZWJ");
// TODO: fOP30 & fCP30 overlap with plain fOP. Probably OK, but fOP/CP chars will be over-represented.
- fSets->addElement(fOP30, status); classNames.push_back("fOP30");
- fSets->addElement(fCP30, status); classNames.push_back("fCP30");
- fSets->addElement(fExtPictUnassigned, status); classNames.push_back("fExtPictUnassigned");
- fSets->addElement(fAK, status); classNames.push_back("fAK");
- fSets->addElement(fAP, status); classNames.push_back("fAP");
- fSets->addElement(fAS, status); classNames.push_back("fAS");
- fSets->addElement(fVF, status); classNames.push_back("fVF");
- fSets->addElement(fVI, status); classNames.push_back("fVI");
+ fSets->addElement(fOP30, status); classNames.emplace_back("fOP30");
+ fSets->addElement(fCP30, status); classNames.emplace_back("fCP30");
+ fSets->addElement(fExtPictUnassigned, status); classNames.emplace_back("fExtPictUnassigned");
+ fSets->addElement(fAK, status); classNames.emplace_back("fAK");
+ fSets->addElement(fAP, status); classNames.emplace_back("fAP");
+ fSets->addElement(fAS, status); classNames.emplace_back("fAS");
+ fSets->addElement(fVF, status); classNames.emplace_back("fVF");
+ fSets->addElement(fVI, status); classNames.emplace_back("fVI");
UnicodeString CMx {uR"([[\p{Line_Break=CM}]\u200d])"};
@@ -3538,6 +3543,9 @@ RBBILineMonkey::~RBBILineMonkey() {
//
// type = char | word | line | sent | title
//
+// export = (path) Export test cases to (path)_(type).txt in the UCD
+// test case format.
+//
// Example:
// intltest rbbi/RBBITest/TestMonkey@"type=line loop=-1"
//
@@ -3974,6 +3982,8 @@ void RBBITest::TestMonkey() {
UnicodeString breakType = "all";
Locale locale("en");
UBool useUText = false;
+ UBool scalarsOnly = false;
+ std::string exportPath;
if (quick == false) {
loopCount = 10000;
@@ -3998,6 +4008,19 @@ void RBBITest::TestMonkey() {
p = u.replaceFirst("", status);
}
+ RegexMatcher pathMatcher(" *export *= *([^ ]+) *", p, 0, status);
+ if (pathMatcher.find()) {
+ pathMatcher.group(1, status).toUTF8String(exportPath);
+ pathMatcher.reset();
+ p = pathMatcher.replaceFirst("", status);
+ }
+
+ RegexMatcher s(" *scalars_only", p, 0, status);
+ if (s.find()) {
+ scalarsOnly = true;
+ s.reset();
+ p = s.replaceFirst("", status);
+ }
// m.reset(p);
if (RegexMatcher(UNICODE_STRING_SIMPLE("\\S"), p, 0, status).find()) {
@@ -4013,64 +4036,80 @@ void RBBITest::TestMonkey() {
}
if (breakType == "char" || breakType == "all") {
+ FILE *file = exportPath.empty() ? nullptr : fopen((exportPath + "_char.txt").c_str(), "w");
RBBICharMonkey m;
BreakIterator *bi = BreakIterator::createCharacterInstance(locale, status);
if (U_SUCCESS(status)) {
- RunMonkey(bi, m, "char", seed, loopCount, useUText);
+ RunMonkey(bi, m, "char", seed, loopCount, useUText, file, scalarsOnly);
if (breakType == "all" && useUText==false) {
// Also run a quick test with UText when "all" is specified
- RunMonkey(bi, m, "char", seed, loopCount, true);
+ RunMonkey(bi, m, "char", seed, loopCount, true, nullptr, scalarsOnly);
}
}
else {
errcheckln(status, "Creation of character break iterator failed %s", u_errorName(status));
}
delete bi;
+ if (file != nullptr) {
+ fclose(file);
+ }
}
if (breakType == "word" || breakType == "all") {
logln("Word Break Monkey Test");
+ FILE *file = exportPath.empty() ? nullptr : fopen((exportPath + "_word.txt").c_str(), "w");
RBBIWordMonkey m;
BreakIterator *bi = BreakIterator::createWordInstance(locale, status);
if (U_SUCCESS(status)) {
- RunMonkey(bi, m, "word", seed, loopCount, useUText);
+ RunMonkey(bi, m, "word", seed, loopCount, useUText, file, scalarsOnly);
}
else {
errcheckln(status, "Creation of word break iterator failed %s", u_errorName(status));
}
delete bi;
+ if (file != nullptr) {
+ fclose(file);
+ }
}
if (breakType == "line" || breakType == "all") {
logln("Line Break Monkey Test");
+ FILE *file = exportPath.empty() ? nullptr : fopen((exportPath + "_line.txt").c_str(), "w");
RBBILineMonkey m;
BreakIterator *bi = BreakIterator::createLineInstance(locale, status);
if (loopCount >= 10) {
loopCount = loopCount / 5; // Line break runs slower than the others.
}
if (U_SUCCESS(status)) {
- RunMonkey(bi, m, "line", seed, loopCount, useUText);
+ RunMonkey(bi, m, "line", seed, loopCount, useUText, file, scalarsOnly);
}
else {
errcheckln(status, "Creation of line break iterator failed %s", u_errorName(status));
}
delete bi;
+ if (file != nullptr) {
+ fclose(file);
+ }
}
if (breakType == "sent" || breakType == "all" ) {
logln("Sentence Break Monkey Test");
+ FILE *file = exportPath.empty() ? nullptr : fopen((exportPath + "_sent.txt").c_str(), "w");
RBBISentMonkey m;
BreakIterator *bi = BreakIterator::createSentenceInstance(locale, status);
if (loopCount >= 10) {
loopCount = loopCount / 10; // Sentence runs slower than the other break types
}
if (U_SUCCESS(status)) {
- RunMonkey(bi, m, "sent", seed, loopCount, useUText);
+ RunMonkey(bi, m, "sent", seed, loopCount, useUText, file, scalarsOnly);
}
else {
errcheckln(status, "Creation of line break iterator failed %s", u_errorName(status));
}
delete bi;
+ if (file != nullptr) {
+ fclose(file);
+ }
}
#endif
@@ -4079,14 +4118,19 @@ void RBBITest::TestMonkey() {
//
// Run a RBBI monkey test. Common routine, for all break iterator types.
// Parameters:
-// bi - the break iterator to use
-// mk - MonkeyKind, abstraction for obtaining expected results
-// name - Name of test (char, word, etc.) for use in error messages
-// seed - Seed for starting random number generator (parameter from user)
+// bi - the break iterator to use
+// mk - MonkeyKind, abstraction for obtaining expected results
+// name - Name of test (char, word, etc.) for use in error messages
+// seed - Seed for starting random number generator (parameter from user)
// numIterations
+// exportFile - Pointer to a file to which the test cases will be written in
+// UCD format. May be null.
+// scalarsOnly - Only test sequences of Unicode scalar values; if this is false,
+// arbitrary sequences of code points (including unpaired surrogates)
+// are tested.
//
void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name, uint32_t seed,
- int32_t numIterations, UBool useUText) {
+ int32_t numIterations, UBool useUText, FILE *exportFile, UBool scalarsOnly) {
#if !UCONFIG_NO_REGULAR_EXPRESSIONS
@@ -4151,6 +4195,9 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
errln("%s:%d c < 0", __FILE__, __LINE__);
break;
}
+ if (scalarsOnly && U16_IS_SURROGATE(c)) {
+ continue;
+ }
// Do not assemble a supplementary character from randomly generated separate surrogates.
// (It could be a dictionary character)
if (U16_IS_TRAIL(c) && testText.length() > 0 && U16_IS_LEAD(testText.charAt(testText.length()-1))) {
@@ -4178,6 +4225,7 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
expectedBreaks[breakPos] = 1;
expectedCount++;
U_ASSERT(expectedCount<testText.length());
+ (void)expectedCount; // Used by U_ASSERT().
}
// Find the break positions using forward iteration
@@ -4267,6 +4315,16 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
}
}
+ if (exportFile != nullptr) {
+ for (i = 0; i < testText.length();) {
+ fprintf(exportFile, expectedBreaks[i] ? "÷ " : "× ");
+ char32_t const c = testText.char32At(i);
+ fprintf(exportFile, "%04X ", static_cast<uint32_t>(c));
+ i += U16_LENGTH(c);
+ }
+ fprintf(exportFile, expectedBreaks[testText.length()] ? "÷ # 🐒\n" : "× # 🐒\n");
+ }
+
// Compare the expected and actual results.
for (i=0; i<=testText.length(); i++) {
const char *errorType = nullptr;
@@ -4852,7 +4910,7 @@ void RBBITest::TestReverse(std::unique_ptr<RuleBasedBreakIterator>bi) {
for (int i=0; i<testString.length(); ++i) {
bool isboundary = bi->isBoundary(i);
int ruleStatus = bi->getRuleStatus();
- expectedResults.push_back(std::make_pair(isboundary, ruleStatus));
+ expectedResults.emplace_back(isboundary, ruleStatus);
}
for (int i=testString.length()-1; i>=0; --i) {
@@ -5857,4 +5915,76 @@ void RBBITest::TestExternalBreakEngineWithFakeTaiLe() {
expected2 == actual2);
}
+// Test a single unpaired unpaired char (either surrogate low or high) in
+// an Unicode set will not cause infinity loop.
+void RBBITest::TestBug22585() {
+ UnicodeString rule = u"$a=[";
+ rule.append(0xdecb) // an unpaired surrogate high
+ .append("];");
+ UParseError pe {};
+ UErrorCode ec {U_ZERO_ERROR};
+ RuleBasedBreakIterator bi(rule, pe, ec);
+
+ rule = u"$a=[";
+ rule.append(0xd94e) // an unpaired surrogate low
+ .append("];");
+ ec = U_ZERO_ERROR;
+ RuleBasedBreakIterator bi2(rule, pe, ec);
+}
+
+// Test a long string with a ; in the end will not cause stack overflow.
+void RBBITest::TestBug22602() {
+ UnicodeString rule(25000, (UChar32)'A', 25000-1);
+ rule.append(u";");
+ UParseError pe {};
+ UErrorCode ec {U_ZERO_ERROR};
+ RuleBasedBreakIterator bi(rule, pe, ec);
+}
+
+void RBBITest::TestBug22636() {
+ UParseError pe {};
+ UErrorCode ec {U_ZERO_ERROR};
+ RuleBasedBreakIterator bi(u"A{77777777777777};", pe, ec);
+ assertEquals(WHERE, ec, U_BRK_RULE_SYNTAX);
+ ec = U_ZERO_ERROR;
+ RuleBasedBreakIterator bi2(u"A{2147483648};", pe, ec);
+ assertEquals(WHERE, ec, U_BRK_RULE_SYNTAX);
+ ec = U_ZERO_ERROR;
+ RuleBasedBreakIterator bi3(u"A{2147483647};", pe, ec);
+ assertEquals(WHERE, ec, U_ZERO_ERROR);
+}
+
+void RBBITest::TestBug22584() {
+ // Creating a break iterator from a rule consisting of a very long
+ // literal input string caused a stack overflow when deleting the
+ // parse tree for the input during the rule building process.
+
+ // Failure of this test showed as a crash during the break iterator construction.
+
+ UnicodeString ruleStr(100000, (UChar32)0, 100000);
+ UParseError pe {};
+ UErrorCode ec {U_ZERO_ERROR};
+
+ RuleBasedBreakIterator bi(ruleStr, pe, ec);
+ ec = U_ZERO_ERROR;
+ ruleStr = u"a/b;c";
+ RuleBasedBreakIterator bi2(ruleStr, pe, ec);
+}
+
+void RBBITest::TestBug22579() {
+ // Test not causing null deref in cloneTree
+ UnicodeString ruleStr = u"[{ab}];";
+ UParseError pe {};
+ UErrorCode ec {U_ZERO_ERROR};
+
+ RuleBasedBreakIterator bi(ruleStr, pe, ec);
+}
+void RBBITest::TestBug22581() {
+ // Test duplicate variable setting will not leak the rule compilation
+ UnicodeString ruleStr = u"$foo=[abc]; $foo=[xyz]; $foo;";
+ UParseError pe {};
+ UErrorCode ec {U_ZERO_ERROR};
+
+ RuleBasedBreakIterator bi(ruleStr, pe, ec);
+}
#endif // #if !UCONFIG_NO_BREAK_ITERATION
diff --git a/icu4c/source/test/intltest/rbbitst.h b/icu4c/source/test/intltest/rbbitst.h
index 537a53786..f68d477e1 100644
--- a/icu4c/source/test/intltest/rbbitst.h
+++ b/icu4c/source/test/intltest/rbbitst.h
@@ -17,6 +17,8 @@
#if !UCONFIG_NO_BREAK_ITERATION
+#include <stdio.h>
+
#include <memory>
#include "intltest.h"
@@ -98,6 +100,12 @@ public:
void TestRandomAccess();
void TestExternalBreakEngineWithFakeTaiLe();
void TestExternalBreakEngineWithFakeYue();
+ void TestBug22579();
+ void TestBug22581();
+ void TestBug22584();
+ void TestBug22585();
+ void TestBug22602();
+ void TestBug22636();
#if U_ENABLE_TRACING
void TestTraceCreateCharacter();
@@ -122,7 +130,7 @@ private:
**/
void RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name, uint32_t seed,
- int32_t loopCount, UBool useUText);
+ int32_t loopCount, UBool useUText, FILE *exportFile, UBool scalarsOnly);
// Run one of the Unicode Consortium boundary test data files.
void runUnicodeTestData(const char *fileName, RuleBasedBreakIterator *bi);
diff --git a/icu4c/source/test/intltest/regcoll.cpp b/icu4c/source/test/intltest/regcoll.cpp
index 3f07bb1ae..7fdca21a2 100644
--- a/icu4c/source/test/intltest/regcoll.cpp
+++ b/icu4c/source/test/intltest/regcoll.cpp
@@ -27,7 +27,7 @@ CollationRegressionTest::CollationRegressionTest()
en_us = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getUS(), status));
if(U_FAILURE(status)) {
delete en_us;
- en_us = 0;
+ en_us = nullptr;
errcheckln(status, "Collator creation failed with %s", u_errorName(status));
return;
}
@@ -1249,6 +1249,25 @@ void CollationRegressionTest::TestBeforeWithTooStrongAfter() {
}
}
+void CollationRegressionTest::TestICU22555InfinityLoop() {
+ char16_t data[] = {
+ 0x0020, 0x0026, 0x4000, 0x002c, 0x6601, 0x0106, 0xff7f, 0xff99,
+ 0x003b, 0x1141, 0x106a, 0x1006, 0x0001, 0x0080, 0x1141, 0x106a,
+ 0x0026, 0x00ff, 0xff6f, 0xff99, 0x013b, 0x1141, 0x1067, 0x1026,
+ 0x0601, 0x0080, 0x5f03, 0x17e3, 0x0000, 0x3e00, 0x3e3e, 0x0055,
+ 0x8080, 0x0000, 0x01e4, 0x0000, 0x0300, 0x003d, 0x4cff, 0x8053,
+ 0x7a65, 0x0000, 0x6400, 0x5f00, 0x0150, 0x9090, 0x9090, 0x2f5f,
+ 0x0053, 0xffe4, 0x002c, 0x0300, 0x1f3d, 0x55f7, 0x8053, 0x1750,
+ 0x3d00, 0xff00, 0x00ff, 0xff6f, 0x0099, 0x03fa, 0x0303, 0x0303,
+ 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303,
+ 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303,
+ };
+ icu::UnicodeString rule(false, data, sizeof(data)/sizeof(char16_t));
+ UErrorCode status = U_ZERO_ERROR;
+ icu::LocalPointer<icu::RuleBasedCollator> col1(
+ new icu::RuleBasedCollator(rule, status));
+}
+
void CollationRegressionTest::TestICU22517() {
IcuTestErrorCode errorCode(*this, "TestICU22517");
char16_t data[] = u"&a=b쫊쫊쫊쫊쫊쫊쫊쫊";
@@ -1421,6 +1440,7 @@ void CollationRegressionTest::runIndexedTest(int32_t index, UBool exec, const ch
TESTCASE_AUTO(TestBeforeWithTooStrongAfter);
TESTCASE_AUTO(TestICU22277);
TESTCASE_AUTO(TestICU22517);
+ TESTCASE_AUTO(TestICU22555InfinityLoop);
TESTCASE_AUTO_END;
}
diff --git a/icu4c/source/test/intltest/regcoll.h b/icu4c/source/test/intltest/regcoll.h
index 76ba733c7..ab6575d5e 100644
--- a/icu4c/source/test/intltest/regcoll.h
+++ b/icu4c/source/test/intltest/regcoll.h
@@ -242,6 +242,8 @@ public:
void TestICU22517();
+ void TestICU22555InfinityLoop();
+
private:
//------------------------------------------------------------------------
// Internal utilities
diff --git a/icu4c/source/test/intltest/reldatefmttest.cpp b/icu4c/source/test/intltest/reldatefmttest.cpp
index 43d084fe2..d9506f462 100644
--- a/icu4c/source/test/intltest/reldatefmttest.cpp
+++ b/icu4c/source/test/intltest/reldatefmttest.cpp
@@ -831,7 +831,8 @@ public:
RelativeDateTimeFormatterTest() {
}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void TestEnglish();
void TestEnglishCaps();
diff --git a/icu4c/source/test/intltest/restest.cpp b/icu4c/source/test/intltest/restest.cpp
index 455c69395..95af882f2 100644
--- a/icu4c/source/test/intltest/restest.cpp
+++ b/icu4c/source/test/intltest/restest.cpp
@@ -313,7 +313,7 @@ ResourceBundleTest::TestConstruction()
char *versionID1 = new char[1+strlen(version1)]; // + 1 for zero byte
char *versionID2 = new char[1+ strlen(version2)]; // + 1 for zero byte
- strcpy(versionID1, "44.0"); // hardcoded, please change if the default.txt file or ResourceBundle::kVersionSeparater is changed.
+ strcpy(versionID1, "45.0"); // hardcoded, please change if the default.txt file or ResourceBundle::kVersionSeparater is changed.
strcpy(versionID2, "55.0"); // hardcoded, please change if the te_IN.txt file or ResourceBundle::kVersionSeparater is changed.
diff --git a/icu4c/source/test/intltest/restsnew.cpp b/icu4c/source/test/intltest/restsnew.cpp
index 755669213..d2f2dd5b8 100644
--- a/icu4c/source/test/intltest/restsnew.cpp
+++ b/icu4c/source/test/intltest/restsnew.cpp
@@ -164,12 +164,12 @@ param[] =
// "IN" means inherits
// "NE" or "ne" means "does not exist"
- { "root", 0, U_ZERO_ERROR, e_Root, { true, false, false }, { true, false, false } },
- { "te", 0, U_ZERO_ERROR, e_te, { false, true, false }, { true, true, false } },
- { "te_IN", 0, U_ZERO_ERROR, e_te_IN, { false, false, true }, { true, true, true } },
- { "te_NE", 0, U_USING_FALLBACK_WARNING, e_te, { false, true, false }, { true, true, false } },
- { "te_IN_NE", 0, U_USING_FALLBACK_WARNING, e_te_IN, { false, false, true }, { true, true, true } },
- { "ne", 0, U_USING_DEFAULT_WARNING, e_Root, { true, false, false }, { true, false, false } }
+ { "root", nullptr, U_ZERO_ERROR, e_Root, { true, false, false }, { true, false, false } },
+ { "te", nullptr, U_ZERO_ERROR, e_te, { false, true, false }, { true, true, false } },
+ { "te_IN", nullptr, U_ZERO_ERROR, e_te_IN, { false, false, true }, { true, true, true } },
+ { "te_NE", nullptr, U_USING_FALLBACK_WARNING, e_te, { false, true, false }, { true, true, false } },
+ { "te_IN_NE", nullptr, U_USING_FALLBACK_WARNING, e_te_IN, { false, false, true }, { true, true, true } },
+ { "ne", nullptr, U_USING_DEFAULT_WARNING, e_Root, { true, false, false }, { true, false, false } }
};
static int32_t bundles_count = UPRV_LENGTHOF(param);
@@ -325,7 +325,7 @@ NewResourceBundleTest::TestConstruction()
char *versionID1 = new char[1 + strlen(U_ICU_VERSION) + strlen(version1)]; // + 1 for zero byte
char *versionID2 = new char[1 + strlen(U_ICU_VERSION) + strlen(version2)]; // + 1 for zero byte
- strcpy(versionID1, "44.0"); // hardcoded, please change if the default.txt file or ResourceBundle::kVersionSeparater is changed.
+ strcpy(versionID1, "45.0"); // hardcoded, please change if the default.txt file or ResourceBundle::kVersionSeparater is changed.
strcpy(versionID2, "55.0"); // hardcoded, please change if the te_IN.txt file or ResourceBundle::kVersionSeparater is changed.
diff --git a/icu4c/source/test/intltest/scientificnumberformattertest.cpp b/icu4c/source/test/intltest/scientificnumberformattertest.cpp
index 76cf60a96..67b7ff9c5 100644
--- a/icu4c/source/test/intltest/scientificnumberformattertest.cpp
+++ b/icu4c/source/test/intltest/scientificnumberformattertest.cpp
@@ -23,7 +23,8 @@
class ScientificNumberFormatterTest : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void TestBasic();
void TestFarsi();
diff --git a/icu4c/source/test/intltest/simpleformattertest.cpp b/icu4c/source/test/intltest/simpleformattertest.cpp
index 6e14887e9..9755568b4 100644
--- a/icu4c/source/test/intltest/simpleformattertest.cpp
+++ b/icu4c/source/test/intltest/simpleformattertest.cpp
@@ -36,7 +36,8 @@ public:
void TestFormatReplaceOptimizationNoOffsets();
void TestFormatReplaceNoOptimizationNoOffsets();
void TestQuotingLikeMessageFormat();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void verifyOffsets(
const int32_t *expected,
diff --git a/icu4c/source/test/intltest/srchtest.cpp b/icu4c/source/test/intltest/srchtest.cpp
index 1d9ac49ff..d8abe9dc7 100644
--- a/icu4c/source/test/intltest/srchtest.cpp
+++ b/icu4c/source/test/intltest/srchtest.cpp
@@ -12,7 +12,7 @@
#include "srchtest.h"
#if !UCONFIG_NO_BREAK_ITERATION
-#include "../cintltst/usrchdat.c"
+#include "../cintltst/usrchdat.inc"
#endif
#include "unicode/stsearch.h"
#include "unicode/ustring.h"
@@ -57,10 +57,10 @@ StringSearchTest::StringSearchTest()
delete m_fr_fr_;
delete m_de_;
delete m_es_;
- m_en_us_ = 0;
- m_fr_fr_ = 0;
- m_de_ = 0;
- m_es_ = 0;
+ m_en_us_ = nullptr;
+ m_fr_fr_ = nullptr;
+ m_de_ = nullptr;
+ m_es_ = nullptr;
errln("Collator creation failed with %s", u_errorName(status));
return;
}
@@ -925,9 +925,7 @@ void StringSearchTest::TestBreakIterator()
if (U_FAILURE(status) ||
strsrch->getBreakIterator() != breaker) {
errln("Error setting break iterator");
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
}
if (!assertEqualWithStringSearch(strsrch, search)) {
collator->setStrength(getECollationStrength(UCOL_TERTIARY));
@@ -1128,9 +1126,7 @@ void StringSearchTest::TestPattern()
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
if (strsrch->getPattern() != pattern) {
@@ -1138,9 +1134,7 @@ void StringSearchTest::TestPattern()
}
if (!assertEqualWithStringSearch(strsrch, &PATTERN[0])) {
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
@@ -1150,9 +1144,7 @@ void StringSearchTest::TestPattern()
if (pattern != strsrch->getPattern()) {
errln("Error setting pattern");
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
strsrch->reset();
@@ -1161,9 +1153,7 @@ void StringSearchTest::TestPattern()
}
if (!assertEqualWithStringSearch(strsrch, &PATTERN[1])) {
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
@@ -1173,9 +1163,7 @@ void StringSearchTest::TestPattern()
if (pattern != strsrch->getPattern()) {
errln("Error setting pattern");
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
strsrch->reset();
@@ -1184,9 +1172,7 @@ void StringSearchTest::TestPattern()
}
if (!assertEqualWithStringSearch(strsrch, &PATTERN[0])) {
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
/* enormous pattern size to see if this crashes */
@@ -1200,9 +1186,7 @@ void StringSearchTest::TestPattern()
errln("Error setting pattern with size 512, %s", u_errorName(status));
}
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
}
void StringSearchTest::TestText()
@@ -1431,9 +1415,7 @@ void StringSearchTest::TestGetMatch()
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
@@ -1494,9 +1476,7 @@ void StringSearchTest::TestSetMatch()
nullptr, status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
@@ -1554,9 +1534,7 @@ void StringSearchTest::TestReset()
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
return;
}
strsrch->setAttribute(USEARCH_OVERLAP, USEARCH_ON, status);
@@ -1941,9 +1919,7 @@ void StringSearchTest::TestCollatorCanonical()
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, USEARCH_ON, status);
if (!assertEqualWithStringSearch(strsrch, &COLLATORCANONICAL[1])) {
delete strsrch;
- if (tailored != nullptr) {
- delete tailored;
- }
+ delete tailored;
return;
}
@@ -1956,9 +1932,7 @@ void StringSearchTest::TestCollatorCanonical()
if (!assertEqualWithStringSearch(strsrch, &COLLATORCANONICAL[0])) {
}
delete strsrch;
- if (tailored != nullptr) {
- delete tailored;
- }
+ delete tailored;
}
void StringSearchTest::TestPatternCanonical()
@@ -2024,9 +1998,7 @@ void StringSearchTest::TestPatternCanonical()
}
ENDTESTPATTERN:
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
}
void StringSearchTest::TestTextCanonical()
@@ -2083,9 +2055,7 @@ void StringSearchTest::TestTextCanonical()
goto ENDTESTPATTERN;
}
ENDTESTPATTERN:
- if (strsrch != nullptr) {
- delete strsrch;
- }
+ delete strsrch;
}
void StringSearchTest::TestCompositeBoundariesCanonical()
diff --git a/icu4c/source/test/intltest/static_unisets_test.cpp b/icu4c/source/test/intltest/static_unisets_test.cpp
index 16aa6ef4a..e17528957 100644
--- a/icu4c/source/test/intltest/static_unisets_test.cpp
+++ b/icu4c/source/test/intltest/static_unisets_test.cpp
@@ -16,7 +16,7 @@ class StaticUnicodeSetsTest : public IntlTest {
void testSetCoverage();
void testNonEmpty();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
private:
void assertInSet(const UnicodeString& localeName, const UnicodeString &setName,
diff --git a/icu4c/source/test/intltest/strcase.cpp b/icu4c/source/test/intltest/strcase.cpp
index d17e94b18..31d2be275 100644
--- a/icu4c/source/test/intltest/strcase.cpp
+++ b/icu4c/source/test/intltest/strcase.cpp
@@ -42,7 +42,7 @@ public:
StringCaseTest();
virtual ~StringCaseTest();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
void TestCaseConversion();
@@ -1671,7 +1671,7 @@ void StringCaseTest::TestBug13127() {
// Test case crashed when the bug was present.
const char16_t *s16 = u"日本語";
UnicodeString s(true, s16, -1);
- s.toTitle(0, Locale::getEnglish());
+ s.toTitle(nullptr, Locale::getEnglish());
}
void StringCaseTest::TestInPlaceTitle() {
diff --git a/icu4c/source/test/intltest/string_segment_test.cpp b/icu4c/source/test/intltest/string_segment_test.cpp
index 1ba025623..3519ebdae 100644
--- a/icu4c/source/test/intltest/string_segment_test.cpp
+++ b/icu4c/source/test/intltest/string_segment_test.cpp
@@ -16,7 +16,7 @@ class StringSegmentTest : public IntlTest {
void testGetCodePoint();
void testCommonPrefixLength();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
};
static const char16_t* SAMPLE_STRING = u"📻 radio 📻";
diff --git a/icu4c/source/test/intltest/strtest.cpp b/icu4c/source/test/intltest/strtest.cpp
index dff7bc409..9b28e8107 100644
--- a/icu4c/source/test/intltest/strtest.cpp
+++ b/icu4c/source/test/intltest/strtest.cpp
@@ -14,10 +14,7 @@
* created by: Markus W. Scherer
*/
-#ifdef U_HAVE_STRING_VIEW
#include <string_view>
-#endif
-
#include <cstddef>
#include <string.h>
#include <limits>
@@ -246,9 +243,7 @@ void StringTest::runIndexedTest(int32_t index, UBool exec, const char *&name, ch
TESTCASE_AUTO(TestStringPieceComparisons);
TESTCASE_AUTO(TestStringPieceFind);
TESTCASE_AUTO(TestStringPieceOther);
-#ifdef U_HAVE_STRING_VIEW
TESTCASE_AUTO(TestStringPieceStringView);
-#endif
TESTCASE_AUTO(TestStringPieceU8);
TESTCASE_AUTO(TestByteSink);
TESTCASE_AUTO(TestCheckedArrayByteSink);
@@ -512,7 +507,6 @@ StringTest::TestStringPieceOther() {
assertEquals("data()", piece.data(), other.data());
}
-#ifdef U_HAVE_STRING_VIEW
void
StringTest::TestStringPieceStringView() {
static constexpr char msg[] = "Kapow!";
@@ -523,7 +517,6 @@ StringTest::TestStringPieceStringView() {
assertEquals("size()", piece.size(), view.size());
assertEquals("data()", piece.data(), view.data());
}
-#endif
void
StringTest::TestStringPieceU8() {
diff --git a/icu4c/source/test/intltest/strtest.h b/icu4c/source/test/intltest/strtest.h
index 05fc9cf66..d6aa0f7bb 100644
--- a/icu4c/source/test/intltest/strtest.h
+++ b/icu4c/source/test/intltest/strtest.h
@@ -46,9 +46,7 @@ private:
void TestStringPieceFind();
void TestStringPieceComparisons();
void TestStringPieceOther();
-#ifdef U_HAVE_STRING_VIEW
void TestStringPieceStringView();
-#endif
void TestStringPieceU8();
void TestByteSink();
void TestCheckedArrayByteSink();
diff --git a/icu4c/source/test/intltest/testidna.cpp b/icu4c/source/test/intltest/testidna.cpp
index 30a462c46..77a8c145f 100644
--- a/icu4c/source/test/intltest/testidna.cpp
+++ b/icu4c/source/test/intltest/testidna.cpp
@@ -1408,7 +1408,7 @@ UnicodeString TestIDNA::testCompareReferenceImpl(UnicodeString& src,
+ " Got: " + UnicodeString(u_errorName(gotStatus))
+ " for Source: "+ prettify(srcUChars)
+ " Options: " + options);
- return UnicodeString("");
+ return {""};
}
// now we know that both implementations yielded same error
@@ -1430,7 +1430,7 @@ UnicodeString TestIDNA::testCompareReferenceImpl(UnicodeString& src,
+ " with "+ UnicodeString(uIDNAName)
+" for input: " + prettify(srcUChars));
}
- return UnicodeString("");
+ return {""};
}
void TestIDNA::testCompareReferenceImpl(const char16_t* src, int32_t srcLen){
diff --git a/icu4c/source/test/intltest/textfile.cpp b/icu4c/source/test/intltest/textfile.cpp
index 540ce3886..1bff5e004 100644
--- a/icu4c/source/test/intltest/textfile.cpp
+++ b/icu4c/source/test/intltest/textfile.cpp
@@ -21,13 +21,13 @@
// #define CCP
TextFile::TextFile(const char* _name, const char* _encoding, UErrorCode& ec) :
- file(0),
- name(0), encoding(0),
- buffer(0),
+ file(nullptr),
+ name(nullptr), encoding(nullptr),
+ buffer(nullptr),
capacity(0),
lineNo(0)
{
- if (U_FAILURE(ec) || _name == 0 || _encoding == 0) {
+ if (U_FAILURE(ec) || _name == nullptr || _encoding == nullptr) {
if (U_SUCCESS(ec)) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
}
@@ -60,15 +60,15 @@ TextFile::TextFile(const char* _name, const char* _encoding, UErrorCode& ec) :
uprv_strcat(buffer, name);
file = T_FileStream_open(buffer, "rb");
- if (file == 0) {
+ if (file == nullptr) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
}
TextFile::~TextFile() {
- if (file != 0) T_FileStream_close(file);
- if (buffer != 0) uprv_free(buffer);
+ if (file != nullptr) T_FileStream_close(file);
+ if (buffer != nullptr) uprv_free(buffer);
#ifdef CCP
uprv_free(name);
uprv_free(encoding);
@@ -168,10 +168,10 @@ UBool TextFile::ensureCapacity(int32_t mincapacity) {
// Simple realloc() no good; contents not preserved
// Note: 'buffer' may be 0
char* newbuffer = (char*) uprv_malloc(mincapacity);
- if (newbuffer == 0) {
+ if (newbuffer == nullptr) {
return false;
}
- if (buffer != 0) {
+ if (buffer != nullptr) {
uprv_strncpy(newbuffer, buffer, capacity);
uprv_free(buffer);
}
diff --git a/icu4c/source/test/intltest/thcoll.cpp b/icu4c/source/test/intltest/thcoll.cpp
index 8beceb108..c3e45e7d0 100644
--- a/icu4c/source/test/intltest/thcoll.cpp
+++ b/icu4c/source/test/intltest/thcoll.cpp
@@ -45,7 +45,7 @@ CollationThaiTest::CollationThaiTest() {
//coll->setStrength(Collator::TERTIARY);
} else {
delete coll;
- coll = 0;
+ coll = nullptr;
}
}
@@ -78,7 +78,7 @@ void CollationThaiTest::runIndexedTest(int32_t index, UBool exec, const char* &n
* using regular and iterative comparison.
*/
void CollationThaiTest::TestNamesList() {
- if (coll == 0) {
+ if (coll == nullptr) {
errln("Error: could not construct Thai collator");
return;
}
@@ -125,7 +125,7 @@ void CollationThaiTest::TestNamesList() {
* preceding the following line.
*/
void CollationThaiTest::TestDictionary() {
- if (coll == 0) {
+ if (coll == nullptr) {
errln("Error: could not construct Thai collator");
return;
}
@@ -244,7 +244,7 @@ void CollationThaiTest::TestCornerCases() {
};
const int32_t TESTS_length = UPRV_LENGTHOF(TESTS);
- if (coll == 0) {
+ if (coll == nullptr) {
errln("Error: could not construct Thai collator");
return;
}
diff --git a/icu4c/source/test/intltest/tmsgfmt.cpp b/icu4c/source/test/intltest/tmsgfmt.cpp
index 467b55328..ad676d1c2 100644
--- a/icu4c/source/test/intltest/tmsgfmt.cpp
+++ b/icu4c/source/test/intltest/tmsgfmt.cpp
@@ -81,7 +81,7 @@ TestMessageFormat::runIndexedTest(int32_t index, UBool exec,
void TestMessageFormat::testBug3()
{
double myNumber = -123456;
- DecimalFormat *form = 0;
+ DecimalFormat* form = nullptr;
Locale locale[] = {
Locale("ar", "", ""),
Locale("be", "", ""),
@@ -374,7 +374,7 @@ void TestMessageFormat::PatternTest()
void TestMessageFormat::sample()
{
- MessageFormat *form = 0;
+ MessageFormat* form = nullptr;
UnicodeString buffer1, buffer2;
UErrorCode success = U_ZERO_ERROR;
form = new MessageFormat("There are {0} files on {1}", success);
@@ -863,7 +863,7 @@ void TestMessageFormat::testCopyConstructor()
UErrorCode success = U_ZERO_ERROR;
MessageFormat *x = new MessageFormat("There are {0} files on {1}", success);
MessageFormat *z = new MessageFormat("There are {0} files on {1} created", success);
- MessageFormat *y = 0;
+ MessageFormat* y = nullptr;
y = new MessageFormat(*x);
if ( (*x == *y) &&
(*x != *z) &&
@@ -922,7 +922,7 @@ void TestMessageFormat::testClone()
UErrorCode success = U_ZERO_ERROR;
MessageFormat *x = new MessageFormat("There are {0} files on {1}", success);
MessageFormat *z = new MessageFormat("There are {0} files on {1} created", success);
- MessageFormat *y = 0;
+ MessageFormat* y = nullptr;
y = x->clone();
if ( (*x == *y) &&
(*x != *z) &&
@@ -1210,8 +1210,8 @@ void TestMessageFormat::testAdopt()
int32_t count, countCmp;
const Format** formats = msg.getFormats(count);
const Format** formatsCmp = msgCmp.getFormats(countCmp);
- const Format** formatsChg = 0;
- const Format** formatsAct = 0;
+ const Format** formatsChg = nullptr;
+ const Format** formatsAct = nullptr;
int32_t countAct;
const Format* a;
const Format* b;
@@ -2019,7 +2019,7 @@ void TestMessageFormat::TestMessageFormatNumberSkeleton() {
{ u"{0,number,'::'0.00}", "en", 50, u"::50.00" }, // pattern literal
};
- for (auto& cas : cases) {
+ for (const auto& cas : cases) {
status.setScope(cas.messagePattern);
MessageFormat msgf(cas.messagePattern, cas.localeName, status);
UnicodeString sb;
diff --git a/icu4c/source/test/intltest/transapi.cpp b/icu4c/source/test/intltest/transapi.cpp
index e098e47eb..cde9798d2 100644
--- a/icu4c/source/test/intltest/transapi.cpp
+++ b/icu4c/source/test/intltest/transapi.cpp
@@ -74,7 +74,7 @@ void TransliteratorAPITest::TestgetID() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* t= Transliterator::createInstance(trans, UTRANS_FORWARD, parseError, status);
- if(t==0 || U_FAILURE(status)){
+ if (t == nullptr || U_FAILURE(status)) {
dataerrln("FAIL: construction of Latin-Greek - %s",u_errorName(status));
return;
}else{
@@ -91,7 +91,7 @@ void TransliteratorAPITest::TestgetID() {
continue;
}
t = Transliterator::createInstance(ID, UTRANS_FORWARD, parseError, status);
- if(t == 0){
+ if (t == nullptr) {
errln("FAIL: " + ID);
continue;
}
@@ -106,7 +106,7 @@ void TransliteratorAPITest::TestgetID() {
Transliterator* t1=Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
Transliterator* t2=Transliterator::createInstance("Latin-Greek", UTRANS_FORWARD, parseError, status);
- if(t1 ==0 || t2 == 0){
+ if (t1 == nullptr || t2 == nullptr) {
errln("FAIL: construction");
return;
}
@@ -120,7 +120,7 @@ void TransliteratorAPITest::TestgetID() {
Transliterator* t5=Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
- if(t5 == 0)
+ if (t5 == nullptr)
errln("FAIL: construction");
else if(t1->getID() != t5->getID() || t5->getID() != t3->getID() || t1->getID() != t3->getID())
errln("FAIL: getID or clone failed");
@@ -140,7 +140,7 @@ void TransliteratorAPITest::TestgetInverse() {
Transliterator* invt1 = Transliterator::createInstance("Latin-Katakana", UTRANS_FORWARD, parseError, status);
Transliterator* t2 = Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
Transliterator* invt2 = Transliterator::createInstance("Devanagari-Latin", UTRANS_FORWARD, parseError, status);
- if(t1 == 0 || invt1 == 0 || t2 == 0 || invt2 == 0) {
+ if (t1 == nullptr || invt1 == nullptr || t2 == nullptr || invt2 == nullptr) {
dataerrln("FAIL: in instantiation - %s", u_errorName(status));
return;
}
@@ -171,7 +171,7 @@ void TransliteratorAPITest::TestgetInverse() {
};
for(uint32_t i=0; i<UPRV_LENGTHOF(TransID); i=i+2){
Transliterator *trans1=Transliterator::createInstance(TransID[i], UTRANS_FORWARD, parseError, status);
- if(t1 == 0){
+ if (t1 == nullptr) {
errln("FAIL: in instantiation for" + TransID[i]);
continue;
}
@@ -196,7 +196,7 @@ void TransliteratorAPITest::TestClone(){
UParseError parseError;
t1=Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
t2=Transliterator::createInstance("Latin-Greek", UTRANS_FORWARD, parseError, status);
- if(t1 == 0 || t2 == 0){
+ if (t1 == nullptr || t2 == nullptr) {
dataerrln("FAIL: construction - %s", u_errorName(status));
return;
}
@@ -245,7 +245,7 @@ void TransliteratorAPITest::TestGetDisplayName() {
for (uint32_t i=0; i<UPRV_LENGTHOF(dispNames); i=i+2 ) {
t = Transliterator::createInstance(dispNames[i+0], UTRANS_FORWARD, parseError, status);
- if(t==0){
+ if (t == nullptr) {
dataerrln("FAIL: construction: " + dispNames[i+0] + " - " + u_errorName(status));
status = U_ZERO_ERROR;
continue;
@@ -294,7 +294,7 @@ void TransliteratorAPITest::TestTransliterate1(){
for(uint32_t i=0;i<UPRV_LENGTHOF(Data); i=i+3){
t=Transliterator::createInstance(Data[i+0], UTRANS_FORWARD, parseError, status);
- if(t==0){
+ if (t == nullptr) {
dataerrln("FAIL: construction: " + Data[i+0] + " Error: " + u_errorName(status));
dataerrln("PreContext: " + prettify(parseError.preContext) + " PostContext: " + prettify( parseError.postContext) );
status = U_ZERO_ERROR;
@@ -341,7 +341,7 @@ void TransliteratorAPITest::TestTransliterate2(){
for(uint32_t i=0; i<UPRV_LENGTHOF(Data2); i=i+6){
t=Transliterator::createInstance(Data2[i+0], UTRANS_FORWARD, parseError, status);
- if(t==0){
+ if (t == nullptr) {
dataerrln("FAIL: construction: " + prettify(Data2[i+0]) + " - " + u_errorName(status));
continue;
}
@@ -400,7 +400,7 @@ void TransliteratorAPITest::TestTransliterate3(){
return;
}
- if(t == 0)
+ if (t == nullptr)
errln("FAIL : construction");
for(uint32_t i=0; i<UPRV_LENGTHOF(Data); i=i+3){
start=getInt(Data[i+0]);
@@ -417,7 +417,7 @@ void TransliteratorAPITest::TestSimpleKeyboardTransliterator(){
UErrorCode status=U_ZERO_ERROR;
UParseError parseError;
Transliterator* t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(t == 0) {
+ if (t == nullptr) {
UnicodeString context;
if (parseError.preContext[0]) {
@@ -557,7 +557,7 @@ void TransliteratorAPITest::TestKeyboardTransliterator2(){
UParseError parseError;
rs="Initial String: add--";
t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(t == 0)
+ if (t == nullptr)
dataerrln("FAIL : construction - %s", u_errorName(status));
else {
keyboardAux(t, Data, rs, 0, 20);
@@ -566,7 +566,7 @@ void TransliteratorAPITest::TestKeyboardTransliterator2(){
rs="Hindi --";
t=Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
- if(t == 0)
+ if (t == nullptr)
dataerrln("FAIL : construction - %s", u_errorName(status));
else
keyboardAux(t, Data, rs, 20, 40);
@@ -593,7 +593,7 @@ void TransliteratorAPITest::TestKeyboardTransliterator3(){
UTransPosition index={0, 0, 0, 0};
logln("Testing transliterate(Replaceable, int32_t, UErrorCode)");
Transliterator *t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(t == 0 || U_FAILURE(status)) {
+ if (t == nullptr || U_FAILURE(status)) {
errln("Error creating transliterator %s", u_errorName(status));
delete t;
return;
@@ -782,7 +782,7 @@ void TransliteratorAPITest::TestGetAdoptFilter(){
UErrorCode status = U_ZERO_ERROR;
UParseError parseError;
Transliterator *t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(t == 0 || U_FAILURE(status)) {
+ if (t == nullptr || U_FAILURE(status)) {
errln("Error creating transliterator %s", u_errorName(status));
delete t;
return;
@@ -967,7 +967,7 @@ void TransliteratorAPITest::callEverything(const Transliterator *tr, int line) {
UClassID classID = tr->getDynamicClassID();
CEASSERT(classID == clonedTR->getDynamicClassID());
- CEASSERT(classID != 0);
+ CEASSERT(classID != nullptr);
delete clonedTR;
}
diff --git a/icu4c/source/test/intltest/transtst.cpp b/icu4c/source/test/intltest/transtst.cpp
index 33341ac1e..ae80e4014 100644
--- a/icu4c/source/test/intltest/transtst.cpp
+++ b/icu4c/source/test/intltest/transtst.cpp
@@ -219,35 +219,35 @@ void TransliteratorTest::TestInstantiation() {
assertSuccess("count()", ec);
UnicodeString name;
for (int32_t i=0; i<n; ++i) {
- const UnicodeString& id = *avail->snext(ec);
+ const UnicodeString* const id = avail->snext(ec);
if (!assertSuccess("snext()", ec) ||
- !assertTrue("snext()!=nullptr", (&id)!=nullptr, true)) {
+ !assertTrue("snext()!=nullptr", id != nullptr, true)) {
break;
}
UnicodeString id2 = Transliterator::getAvailableID(i);
- if (id.length() < 1) {
+ if (id->length() < 1) {
errln(UnicodeString("FAIL: getAvailableID(") +
i + ") returned empty string");
continue;
}
- if (id != id2) {
+ if (*id != id2) {
errln(UnicodeString("FAIL: getAvailableID(") +
i + ") != getAvailableIDs().snext()");
continue;
}
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
- Transliterator* t = Transliterator::createInstance(id,
+ Transliterator* t = Transliterator::createInstance(*id,
UTRANS_FORWARD, parseError,status);
name.truncate(0);
- Transliterator::getDisplayName(id, name);
- if (t == 0) {
+ Transliterator::getDisplayName(*id, name);
+ if (t == nullptr) {
#if UCONFIG_NO_BREAK_ITERATION
// If UCONFIG_NO_BREAK_ITERATION is on, then only Thai should fail.
- if (id.compare((UnicodeString)"Thai-Latn") != 0 &&
- id.compare((UnicodeString)"Thai-Latin") != 0)
+ if (id->compare((UnicodeString)"Thai-Latn") != 0 &&
+ id->compare((UnicodeString)"Thai-Latin") != 0)
#endif
- dataerrln(UnicodeString("FAIL: Couldn't create ") + id +
+ dataerrln(UnicodeString("FAIL: Couldn't create ") + *id +
/*", parse error " + parseError.code +*/
", line " + parseError.line +
", offset " + parseError.offset +
@@ -263,15 +263,15 @@ void TransliteratorTest::TestInstantiation() {
--i; // Compensate for deleted entry
}
} else {
- logln(UnicodeString("OK: ") + name + " (" + id + ")");
+ logln(UnicodeString("OK: ") + name + " (" + *id + ")");
// Now test toRules
UnicodeString rules;
t->toRules(rules, true);
Transliterator *u = Transliterator::createFromRules("x",
rules, UTRANS_FORWARD, parseError,status);
- if (u == 0) {
- errln(UnicodeString("FAIL: ") + id +
+ if (u == nullptr) {
+ errln(UnicodeString("FAIL: ") + *id +
".createFromRules() => bad rules" +
/*", parse error " + parseError.code +*/
", line " + parseError.line +
@@ -293,7 +293,7 @@ void TransliteratorTest::TestInstantiation() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString id("<Not a valid Transliterator ID>");
Transliterator* t = Transliterator::createInstance(id, UTRANS_FORWARD, parseError, status);
- if (t != 0) {
+ if (t != nullptr) {
errln("FAIL: " + id + " returned a transliterator");
delete t;
} else {
@@ -458,7 +458,7 @@ void TransliteratorTest::TestKeyboard() {
"c", "Apsc",
"a", "AycA",
"psch", "AycAY",
- 0, "AycAY", // null means finishKeyboardTransliteration
+ nullptr, "AycAY", // nullptr means finishKeyboardTransliteration
};
keyboardAux(*t, DATA, UPRV_LENGTHOF(DATA));
@@ -493,7 +493,7 @@ void TransliteratorTest::TestKeyboard2() {
"s", "AycAps", // modified for rollback - "AycAy",
"c", "AycApsc", // modified for rollback - "AycAyc",
"h", "AycAY",
- 0, "AycAY", // null means finishKeyboardTransliteration
+ nullptr, "AycAY", // nullptr means finishKeyboardTransliteration
};
keyboardAux(*t, DATA, UPRV_LENGTHOF(DATA));
@@ -520,7 +520,7 @@ void TransliteratorTest::TestKeyboard3() {
"c", "abyc",
"t", "abyct", // modified for rollback - "abycy",
"h", "abycz",
- 0, "abycz", // null means finishKeyboardTransliteration
+ nullptr, "abycz", // nullptr means finishKeyboardTransliteration
};
UParseError parseError;
@@ -541,7 +541,7 @@ void TransliteratorTest::keyboardAux(const Transliterator& t,
UnicodeString s;
for (int32_t i=0; i<DATA_length; i+=2) {
UnicodeString log;
- if (DATA[i] != 0) {
+ if (DATA[i] != nullptr) {
log = s + " + "
+ DATA[i]
+ " -> ";
@@ -609,7 +609,7 @@ void TransliteratorTest::TestCompoundKana() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* t = Transliterator::createInstance("Latin-Hiragana;Hiragana-Latin", UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
dataerrln("FAIL: construction of Latin-Hiragana;Hiragana-Latin failed - %s", u_errorName(status));
} else {
expect(*t, "aaaaa", "aaaaa");
@@ -627,7 +627,7 @@ void TransliteratorTest::TestCompoundHex() {
Transliterator* b = Transliterator::createInstance("Hex-Any", UTRANS_FORWARD, parseError, status);
Transliterator* transab[] = { a, b };
Transliterator* transba[] = { b, a };
- if (a == 0 || b == 0) {
+ if (a == nullptr || b == nullptr) {
errln("FAIL: construction failed");
delete a;
delete b;
@@ -684,7 +684,7 @@ void TransliteratorTest::TestFiltering() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* hex = Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if (hex == 0) {
+ if (hex == nullptr) {
errln("FAIL: createInstance(Any-Hex) failed");
return;
}
@@ -1083,7 +1083,7 @@ void TransliteratorTest::TestHiraganaKatakana() {
UErrorCode status = U_ZERO_ERROR;
Transliterator* hk = Transliterator::createInstance("Hiragana-Katakana", UTRANS_FORWARD, parseError, status);
Transliterator* kh = Transliterator::createInstance("Katakana-Hiragana", UTRANS_FORWARD, parseError, status);
- if (hk == 0 || kh == 0) {
+ if (hk == nullptr || kh == nullptr) {
dataerrln("FAIL: createInstance failed - %s", u_errorName(status));
delete hk;
delete kh;
@@ -1130,7 +1130,7 @@ void TransliteratorTest::TestCopyJ476() {
// The real test here is what happens when the destructors are
// called. So we let one object get destructed, and check to
// see that its copy still works.
- Transliterator *t2 = 0;
+ Transliterator* t2 = nullptr;
{
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
@@ -1157,7 +1157,7 @@ void TransliteratorTest::TestInterIndic() {
UErrorCode status = U_ZERO_ERROR;
UParseError parseError;
Transliterator* dg = Transliterator::createInstance(ID, UTRANS_FORWARD, parseError, status);
- if (dg == 0) {
+ if (dg == nullptr) {
dataerrln("FAIL: createInstance(" + ID + ") returned nullptr - " + u_errorName(status));
return;
}
@@ -1203,7 +1203,7 @@ void TransliteratorTest::TestFilterIDs() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance(ID, UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
errln("FAIL: createInstance(" + ID + ") returned nullptr");
return;
}
@@ -1217,7 +1217,7 @@ void TransliteratorTest::TestFilterIDs() {
// Check the inverse
Transliterator *u = t->createInverse(status);
- if (u == 0) {
+ if (u == nullptr) {
errln("FAIL: " + ID + ".createInverse() returned nullptr");
} else if (u->getID() != uID) {
errln("FAIL: " + ID + ".createInverse().getID() => " +
@@ -1241,7 +1241,7 @@ void TransliteratorTest::TestCaseMap() {
Transliterator::createInstance("Any-Lower[^xyzXYZ]", UTRANS_FORWARD, parseError, status);
Transliterator* toTitle =
Transliterator::createInstance("Any-Title[^xyzXYZ]", UTRANS_FORWARD, parseError, status);
- if (toUpper==0 || toLower==0 || toTitle==0) {
+ if (toUpper == nullptr || toLower == nullptr || toTitle == nullptr) {
errln("FAIL: createInstance returned nullptr");
delete toUpper;
delete toLower;
@@ -1271,7 +1271,7 @@ void TransliteratorTest::TestNameMap() {
Transliterator::createInstance("Any-Name[^abc]", UTRANS_FORWARD, parseError, status);
Transliterator* name2uni =
Transliterator::createInstance("Name-Any", UTRANS_FORWARD, parseError, status);
- if (uni2name==0 || name2uni==0) {
+ if (uni2name == nullptr || name2uni == nullptr) {
errln("FAIL: createInstance returned nullptr");
delete uni2name;
delete name2uni;
@@ -1290,7 +1290,7 @@ void TransliteratorTest::TestNameMap() {
// round trip
Transliterator* t =
Transliterator::createInstance("Any-Name;Name-Any", UTRANS_FORWARD, parseError, status);
- if (t==0) {
+ if (t == nullptr) {
errln("FAIL: createInstance returned nullptr");
delete t;
return;
@@ -1322,7 +1322,7 @@ void TransliteratorTest::TestLiberalizedID() {
UErrorCode status= U_ZERO_ERROR;
for (int32_t i=0; i<DATA_length; i+=3) {
Transliterator *t = Transliterator::createInstance(DATA[i], UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
dataerrln(UnicodeString("FAIL: ") + DATA[i+2] +
" cannot create ID \"" + DATA[i] + "\" - " + u_errorName(status));
} else {
@@ -1437,7 +1437,7 @@ void TransliteratorTest::TestNormalizationTransliterator() {
"\\uFF76\\u3099", "\\uFF76\\u3099", "\\uFF76\\u3099" , // hw_ka + ten
"A\\u0300\\u0316", "A\\u0316\\u0300", "\\u00C0\\u0316" ,
- 0 // end
+ nullptr // end
};
const char* COMPAT[] = {
@@ -1454,7 +1454,7 @@ void TransliteratorTest::TestNormalizationTransliterator() {
"\\u30AB\\u3099", "\\u30AB\\u3099", "\\u30AC" , // ka + ten
"\\uFF76\\u3099", "\\u30AB\\u3099", "\\u30AC" , // hw_ka + ten
- 0 // end
+ nullptr // end
};
int32_t i;
@@ -1501,7 +1501,7 @@ void TransliteratorTest::TestNormalizationTransliterator() {
Transliterator *t = Transliterator::createInstance("NFD; [x]Remove",
UTRANS_FORWARD,
pe, status);
- if (t == 0) {
+ if (t == nullptr) {
errln("FAIL: createInstance failed");
}
expect(*t, CharsToUnicodeString("\\u010dx"),
@@ -1528,7 +1528,7 @@ void TransliteratorTest::TestBasicTransliteratorEvenWithoutData() {
u"\u0124e \uFB01nd x", // [:Nonspacing Mark:] Remove;
u"He \uFB01nd x", // NFD; [:Nonspacing Mark:] Remove; NFC;
// end
- 0
+ nullptr
};
const char* BASIC_TRANSLITERATOR_ID[] = {
@@ -1545,7 +1545,7 @@ void TransliteratorTest::TestBasicTransliteratorEvenWithoutData() {
"[:Nonspacing Mark:] Remove;",
"NFD; [:Nonspacing Mark:] Remove; NFC;",
// end
- 0
+ nullptr
};
const char* BASIC_TRANSLITERATOR_RULES[] = {
"::Lower; ::NFKD;",
@@ -1553,7 +1553,7 @@ void TransliteratorTest::TestBasicTransliteratorEvenWithoutData() {
"::[:Nonspacing Mark:] Remove;",
"::NFD; ::[:Nonspacing Mark:] Remove; ::NFC;",
// end
- 0
+ nullptr
};
for (int32_t i=0; BASIC_TRANSLITERATOR_ID[i]; i++) {
UErrorCode status = U_ZERO_ERROR;
@@ -1602,7 +1602,7 @@ void TransliteratorTest::TestCompoundRBT() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createFromRules("Test", rule, UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
errln("FAIL: createFromRules failed");
return;
}
@@ -1620,7 +1620,7 @@ void TransliteratorTest::TestCompoundRBT() {
// Now test toRules
t = Transliterator::createInstance("Greek-Latin; Latin-Cyrillic", UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
dataerrln("FAIL: createInstance failed - %s", u_errorName(status));
return;
}
@@ -1636,7 +1636,7 @@ void TransliteratorTest::TestCompoundRBT() {
// Round trip the result of toRules
t = Transliterator::createFromRules("Test", r, UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
errln("FAIL: createFromRules #2 failed");
return;
} else {
@@ -1658,7 +1658,7 @@ void TransliteratorTest::TestCompoundRBT() {
// to what the regenerated ID will look like.
UnicodeString id("Upper(Lower);(NFKC)", "");
t = Transliterator::createInstance(id, UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
errln("FAIL: createInstance #2 failed");
return;
}
@@ -1670,7 +1670,7 @@ void TransliteratorTest::TestCompoundRBT() {
}
Transliterator *u = t->createInverse(status);
- if (u == 0) {
+ if (u == nullptr) {
errln("FAIL: createInverse failed");
delete t;
return;
@@ -1708,7 +1708,7 @@ void TransliteratorTest::TestCompoundFilter() {
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance
("Greek-Latin; Latin-Greek; Lower", UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
dataerrln("FAIL: createInstance failed - %s", u_errorName(status));
return;
}
@@ -1730,7 +1730,7 @@ void TransliteratorTest::TestRemove() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance("Remove[abc]", UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
errln("FAIL: createInstance failed");
return;
}
@@ -1819,7 +1819,7 @@ void TransliteratorTest::TestToRules() {
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createFromRules("ID",
UnicodeString(DATA[d+1], -1, US_INV), UTRANS_FORWARD, parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
dataerrln("FAIL: createFromRules failed - %s", u_errorName(status));
return;
}
@@ -2024,7 +2024,7 @@ void TransliteratorTest::TestQuantifier() {
class TestTrans : public Transliterator {
public:
- TestTrans(const UnicodeString& id) : Transliterator(id, 0) {
+ TestTrans(const UnicodeString& id) : Transliterator(id, nullptr) {
}
virtual TestTrans* clone() const override {
return new TestTrans(getID());
@@ -2094,7 +2094,7 @@ void TransliteratorTest::TestSTV() {
const char* SOURCES[] = { nullptr, "Seoridf", "Oewoir" };
for (i=0; i<3; ++i) {
Transliterator *t = new TestTrans(IDS[i]);
- if (t == 0) {
+ if (t == nullptr) {
errln("FAIL: out of memory");
return;
}
@@ -2151,7 +2151,7 @@ void TransliteratorTest::TestSTV() {
for (j=0; j<3; ++j) {
if (SOURCES[j] == nullptr) continue;
if (s.caseCompare(SOURCES[j],0)==0) {
- if (j!=2 || !logKnownIssue("21911", "ICU4C cannot create inverse of (or unregister) Any-Xxxx/Variant transform created from both-direction transform")) {
+ if (j!=2 || !logKnownIssue("ICU-21911", "ICU4C cannot create inverse of (or unregister) Any-Xxxx/Variant transform created from both-direction transform")) {
errln((UnicodeString)"FAIL: unregister(" + s + "-*) failed");
}
}
@@ -2167,7 +2167,7 @@ void TransliteratorTest::TestCompoundInverse() {
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance
("Greek-Latin; Title()", UTRANS_REVERSE,parseError, status);
- if (t == 0) {
+ if (t == nullptr) {
dataerrln("FAIL: createInstance - %s", u_errorName(status));
return;
}
@@ -2293,12 +2293,12 @@ void TransliteratorTest::TestNullInverse() {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance("Null", UTRANS_FORWARD, pe, ec);
- if (t == 0 || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
errln("FAIL: createInstance");
return;
}
Transliterator *u = t->createInverse(ec);
- if (u == 0 || U_FAILURE(ec)) {
+ if (u == nullptr || U_FAILURE(ec)) {
errln("FAIL: createInverse");
delete t;
return;
@@ -2318,12 +2318,12 @@ void TransliteratorTest::TestAliasInverseID() {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance(ID, UTRANS_FORWARD, pe, ec);
- if (t == 0 || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
dataerrln("FAIL: createInstance - %s", u_errorName(ec));
return;
}
Transliterator *u = t->createInverse(ec);
- if (u == 0 || U_FAILURE(ec)) {
+ if (u == nullptr || U_FAILURE(ec)) {
errln("FAIL: createInverse");
delete t;
return;
@@ -2346,12 +2346,12 @@ void TransliteratorTest::TestCompoundInverseID() {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance(ID, UTRANS_FORWARD, pe, ec);
- if (t == 0 || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
dataerrln("FAIL: createInstance - %s", u_errorName(ec));
return;
}
Transliterator *u = t->createInverse(ec);
- if (u == 0 || U_FAILURE(ec)) {
+ if (u == nullptr || U_FAILURE(ec)) {
errln("FAIL: createInverse");
delete t;
return;
@@ -2470,7 +2470,7 @@ void TransliteratorTest::TestNewEngine() {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance("Latin-Hiragana", UTRANS_FORWARD, pe, ec);
- if (t == 0 || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
dataerrln("FAIL: createInstance Latin-Hiragana - %s", u_errorName(ec));
return;
}
@@ -3685,7 +3685,7 @@ void TransliteratorTest::TestIncrementalProgress() {
#if UCONFIG_NO_BREAK_ITERATION
&& id.compare((UnicodeString)"Latin-Thai/") != 0
#endif
- && !(logKnownIssue("21911", "ICU4C cannot create inverse of Any-Xxxx/Variant transform created from both-direction transform") &&
+ && !(logKnownIssue("ICU-21911", "ICU4C cannot create inverse of Any-Xxxx/Variant transform created from both-direction transform") &&
id.startsWith((UnicodeString)"Any-") &&
(id.endsWith((UnicodeString)"/UNGEGN") || id.startsWith((UnicodeString)"Any-Ethiopic/") || id.startsWith((UnicodeString)"Any-Braille/") ||
id.endsWith((UnicodeString)"/Gurage_2013") || id.endsWith((UnicodeString)"/Gutgarts") || id.endsWith((UnicodeString)"/Tekie_Alibekit") ||
@@ -3968,7 +3968,7 @@ void TransliteratorTest::TestAnyX() {
UErrorCode status = U_ZERO_ERROR;
Transliterator* anyLatin =
Transliterator::createInstance("Any-Latin", UTRANS_FORWARD, parseError, status);
- if (anyLatin==0) {
+ if (anyLatin == nullptr) {
dataerrln("FAIL: createInstance returned nullptr - %s", u_errorName(status));
delete anyLatin;
return;
@@ -4469,7 +4469,7 @@ void TransliteratorTest::TestBeginEnd() {
UErrorCode status = U_ZERO_ERROR;
Transliterator* reversed = Transliterator::createFromRules("Reversed", UnicodeString(BEGIN_END_RULES[17]),
UTRANS_REVERSE, parseError, status);
- if (reversed == 0 || U_FAILURE(status)) {
+ if (reversed == nullptr || U_FAILURE(status)) {
reportParseError(UnicodeString("FAIL: Couldn't create reversed transliterator"), parseError, status);
} else {
expect(*reversed, UnicodeString("xy XY XYZ yz YZ"), UnicodeString("xy abc xaba yz aba"));
@@ -4658,7 +4658,7 @@ void TransliteratorTest::TestHalfwidthFullwidth() {
UErrorCode status = U_ZERO_ERROR;
Transliterator* hf = Transliterator::createInstance("Halfwidth-Fullwidth", UTRANS_FORWARD, parseError, status);
Transliterator* fh = Transliterator::createInstance("Fullwidth-Halfwidth", UTRANS_FORWARD, parseError, status);
- if (hf == 0 || fh == 0) {
+ if (hf == nullptr || fh == nullptr) {
dataerrln("FAIL: createInstance failed - %s", u_errorName(status));
delete hf;
delete fh;
@@ -4713,7 +4713,7 @@ void TransliteratorTest::TestThai() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* tr = Transliterator::createInstance("Any-Latin", UTRANS_FORWARD, parseError, status);
- if (tr == 0) {
+ if (tr == nullptr) {
dataerrln("FAIL: createInstance failed - %s", u_errorName(status));
return;
}
@@ -4852,18 +4852,18 @@ void TransliteratorTest::expect(const Transliterator& t,
const UnicodeString& source,
const UnicodeString& expectedResult,
UTransPosition *pos) {
- if (pos == 0) {
+ if (pos == nullptr) {
UnicodeString result(source);
t.transliterate(result);
expectAux(t.getID() + ":String", source, result, expectedResult);
}
UTransPosition index={0, 0, 0, 0};
- if (pos != 0) {
+ if (pos != nullptr) {
index = *pos;
}
UnicodeString rsource(source);
- if (pos == 0) {
+ if (pos == nullptr) {
t.transliterate(rsource);
} else {
// Do it all at once -- below we do it incrementally
@@ -4875,7 +4875,7 @@ void TransliteratorTest::expect(const Transliterator& t,
// must be the same after we finalize (see below).
UnicodeString log;
rsource.remove();
- if (pos != 0) {
+ if (pos != nullptr) {
rsource = source;
formatInput(log, rsource, index);
log.append(" -> ");
diff --git a/icu4c/source/test/intltest/transtst.h b/icu4c/source/test/intltest/transtst.h
index 606bd9308..b0a55675c 100644
--- a/icu4c/source/test/intltest/transtst.h
+++ b/icu4c/source/test/intltest/transtst.h
@@ -381,24 +381,24 @@ private:
void expect(const UnicodeString& rules,
const UnicodeString& source,
const UnicodeString& expectedResult,
- UTransPosition *pos=0);
+ UTransPosition* pos = nullptr);
void expect(const UnicodeString& id,
const UnicodeString& rules,
const UnicodeString& source,
const UnicodeString& expectedResult,
- UTransPosition *pos=0);
+ UTransPosition* pos = nullptr);
void expect(const Transliterator& t,
const UnicodeString& source,
const UnicodeString& expectedResult,
const Transliterator& reverseTransliterator);
-
+
void expect(const Transliterator& t,
const UnicodeString& source,
const UnicodeString& expectedResult,
- UTransPosition *pos=0);
-
+ UTransPosition* pos = nullptr);
+
void expectAux(const UnicodeString& tag,
const UnicodeString& source,
const UnicodeString& result,
diff --git a/icu4c/source/test/intltest/trcoll.cpp b/icu4c/source/test/intltest/trcoll.cpp
index 8b24cc3e1..4f8368b84 100644
--- a/icu4c/source/test/intltest/trcoll.cpp
+++ b/icu4c/source/test/intltest/trcoll.cpp
@@ -18,7 +18,7 @@
#include "sfwdchit.h"
CollationTurkishTest::CollationTurkishTest()
-: myCollation(0)
+: myCollation(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance(Locale("tr", "", ""),status);
diff --git a/icu4c/source/test/intltest/trnserr.cpp b/icu4c/source/test/intltest/trnserr.cpp
index d3bf770b0..9b70d4d72 100644
--- a/icu4c/source/test/intltest/trnserr.cpp
+++ b/icu4c/source/test/intltest/trnserr.cpp
@@ -64,7 +64,7 @@ void TransliteratorErrorTest::TestTransliteratorErrors() {
UTransPosition pos;
Transliterator* t= Transliterator::createInstance(trans, UTRANS_FORWARD, parseError, status);
- if(t==0 || U_FAILURE(status)){
+ if (t == nullptr || U_FAILURE(status)) {
dataerrln("FAIL: construction of Latin-Greek - %s", u_errorName(status));
return;
}
@@ -136,7 +136,7 @@ void TransliteratorErrorTest::TestTransliteratorErrors() {
errln("FAIL: The input string was modified though the offsets were out of bounds.");
}
Transliterator* t1= Transliterator::createInstance(bogusID, UTRANS_FORWARD, parseError, status);
- if(t1!=0 || U_SUCCESS(status)){
+ if (t1 != nullptr || U_SUCCESS(status)) {
delete t1;
errln("FAIL: construction of bogus ID \"LATINGREEK-GREEKLATIN\"");
}
@@ -263,7 +263,7 @@ void TransliteratorErrorTest::TestRBTErrors() {
class StubTransliterator: public Transliterator{
public:
- StubTransliterator(): Transliterator(UNICODE_STRING_SIMPLE("Any-Null"), 0) {}
+ StubTransliterator(): Transliterator(UNICODE_STRING_SIMPLE("Any-Null"), nullptr) {}
virtual void handleTransliterate(Replaceable& ,UTransPosition& offsets,UBool) const override {
offsets.start = offsets.limit;
}
diff --git a/icu4c/source/test/intltest/tsdate.cpp b/icu4c/source/test/intltest/tsdate.cpp
index 37ba1e79b..abce2d697 100644
--- a/icu4c/source/test/intltest/tsdate.cpp
+++ b/icu4c/source/test/intltest/tsdate.cpp
@@ -111,7 +111,7 @@ IntlTestDateFormat::testLocale(/*char* par, */const Locale& locale, const Unicod
void IntlTestDateFormat::testFormat(/* char* par */)
{
- if (fFormat == 0)
+ if (fFormat == nullptr)
{
dataerrln("FAIL: DateFormat creation failed");
return;
diff --git a/icu4c/source/test/intltest/tsmthred.cpp b/icu4c/source/test/intltest/tsmthred.cpp
index 7a03227ed..0d7b3fb89 100644
--- a/icu4c/source/test/intltest/tsmthred.cpp
+++ b/icu4c/source/test/intltest/tsmthred.cpp
@@ -207,7 +207,6 @@ void TestArabicShapeThreads::doTailTest() {
return;
}
}
- return;
}
@@ -825,17 +824,17 @@ void MultithreadTest::TestCollators()
testFile = fopen(buffer, "rb");
- if(testFile == 0) {
+ if (testFile == nullptr) {
strcpy(buffer+bufLen, "_SHORT");
strcat(buffer, ext);
testFile = fopen(buffer, "rb");
- if(testFile == 0) {
+ if (testFile == nullptr) {
strcpy(buffer+bufLen, "_STUB");
strcat(buffer, ext);
testFile = fopen(buffer, "rb");
- if (testFile == 0) {
+ if (testFile == nullptr) {
*(buffer+bufLen) = 0;
dataerrln("could not open any of the conformance test files, tried opening base %s", buffer);
return;
diff --git a/icu4c/source/test/intltest/tsnmfmt.cpp b/icu4c/source/test/intltest/tsnmfmt.cpp
index eee7b099f..79ed77397 100644
--- a/icu4c/source/test/intltest/tsnmfmt.cpp
+++ b/icu4c/source/test/intltest/tsnmfmt.cpp
@@ -162,14 +162,14 @@ IntlTestNumberFormat::testFormat(/* char* par */)
if (U_FAILURE(fStatus))
{
dataerrln((UnicodeString)"**** FAIL: createXxxInstance failed. - " + u_errorName(fStatus));
- if (fFormat != 0)
+ if (fFormat != nullptr)
errln("**** FAIL: Non-null format returned by createXxxInstance upon failure.");
delete fFormat;
- fFormat = 0;
+ fFormat = nullptr;
return;
}
-
- if (fFormat == 0)
+
+ if (fFormat == nullptr)
{
errln((UnicodeString)"**** FAIL: Null format returned by createXxxInstance.");
return;
diff --git a/icu4c/source/test/intltest/tstnorm.cpp b/icu4c/source/test/intltest/tstnorm.cpp
index ce72e6981..bc5086614 100644
--- a/icu4c/source/test/intltest/tstnorm.cpp
+++ b/icu4c/source/test/intltest/tstnorm.cpp
@@ -1210,7 +1210,9 @@ BasicNormalizerTest::TestCompare() {
if( nfcNorm2->composePair(0x20, 0x301)>=0 ||
nfcNorm2->composePair(0x61, 0x305)>=0 ||
nfcNorm2->composePair(0x1100, 0x1160)>=0 ||
- nfcNorm2->composePair(0xac00, 0x11a7)>=0
+ nfcNorm2->composePair(0xac00, 0x11a7)>=0 ||
+ nfcNorm2->composePair(0x1100, 0x80000020)>= 0 || // ICU-22635
+ nfcNorm2->composePair(0xac00, 0x80000020)>= 0 // ICU-22635
) {
errln("NFC.composePair() incorrectly composes some pairs of characters");
}
diff --git a/icu4c/source/test/intltest/tstnrapi.cpp b/icu4c/source/test/intltest/tstnrapi.cpp
index 1bda58175..5a9099469 100644
--- a/icu4c/source/test/intltest/tstnrapi.cpp
+++ b/icu4c/source/test/intltest/tstnrapi.cpp
@@ -53,7 +53,7 @@ BasicNormalizerTest::TestNormalizerAPI() {
errln("error in Normalizer(Normalizer(CharacterIterator)).clone()->next().hashCode()==copy.hashCode()");
}
delete clone;
- clone=0;
+ clone = nullptr;
// test compose() and decompose()
UnicodeString tel, nfkc, nfkd;
diff --git a/icu4c/source/test/intltest/tzfmttst.cpp b/icu4c/source/test/intltest/tzfmttst.cpp
index 567528cb5..8f5b94bb8 100644
--- a/icu4c/source/test/intltest/tzfmttst.cpp
+++ b/icu4c/source/test/intltest/tzfmttst.cpp
@@ -87,6 +87,9 @@ TimeZoneFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name
TESTCASE(7, TestFormatTZDBNamesAllZoneCoverage);
TESTCASE(8, TestAdoptDefaultThreadSafe);
TESTCASE(9, TestCentralTime);
+ TESTCASE(10, TestBogusLocale);
+ TESTCASE(11, Test22614GetMetaZoneNamesNotCrash);
+ TESTCASE(12, Test22615NonASCIIID);
default: name = ""; break;
}
}
@@ -334,8 +337,7 @@ TimeZoneFormatTest::TestTimeZoneRoundTrip() {
}
} else {
// Specific or generic: raw offset must be preserved.
- if (inRaw != outRaw && !(uprv_strncmp(LOCALES[locidx].getName(),"ku",2)==0 && tzid->compare(u"America/Miquelon",16)==0
- && logKnownIssue("CLDR-17024", "TestTimeZoneRoundTrip exhaustive fail with tz=America/Miquelon, locale=ku"))) {
+ if (inRaw != outRaw) {
errln((UnicodeString)"Raw offset round trip failed; tz=" + *tzid
+ ", locale=" + LOCALES[locidx].getName() + ", pattern=" + PATTERNS[patidx]
+ ", time=" + DATES[datidx] + ", str=" + tzstr
@@ -535,13 +537,13 @@ void TimeZoneFormatTest::RunTimeRoundTripTests(int32_t threadNumber) {
UBool REALLY_VERBOSE = false;
// These patterns are ambiguous at DST->STD local time overlap
- const char* AMBIGUOUS_DST_DECESSION[] = { "v", "vvvv", "V", "VV", "VVV", "VVVV", 0 };
+ const char* AMBIGUOUS_DST_DECESSION[] = { "v", "vvvv", "V", "VV", "VVV", "VVVV", nullptr };
// These patterns are ambiguous at STD->STD/DST->DST local time overlap
- const char* AMBIGUOUS_NEGATIVE_SHIFT[] = { "z", "zzzz", "v", "vvvv", "V", "VV", "VVV", "VVVV", 0 };
+ const char* AMBIGUOUS_NEGATIVE_SHIFT[] = { "z", "zzzz", "v", "vvvv", "V", "VV", "VVV", "VVVV", nullptr };
// These patterns only support integer minutes offset
- const char* MINUTES_OFFSET[] = { "X", "XX", "XXX", "x", "xx", "xxx", 0 };
+ const char* MINUTES_OFFSET[] = { "X", "XX", "XXX", "x", "xx", "xxx", nullptr };
// Workaround for #6338
//UnicodeString BASEPATTERN("yyyy-MM-dd'T'HH:mm:ss.SSS");
@@ -985,9 +987,9 @@ TimeZoneFormatTest::TestISOFormat() {
},
// 108000000
{
- 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 0
+ nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr
}
};
@@ -995,7 +997,7 @@ TimeZoneFormatTest::TestISOFormat() {
"X", "XX", "XXX", "XXXX", "XXXXX",
"x", "xx", "xxx", "xxxx", "xxxxx",
"Z", // equivalent to "xxxx"
- 0
+ nullptr
};
const int32_t MIN_OFFSET_UNIT[] = {
@@ -1016,7 +1018,7 @@ TimeZoneFormatTest::TestISOFormat() {
for (uint32_t i = 0; i < UPRV_LENGTHOF(OFFSET); i++) {
SimpleTimeZone* tz = new SimpleTimeZone(OFFSET[i], UnicodeString("Zone Offset:") + OFFSET[i] + "ms");
sdf->adoptTimeZone(tz);
- for (int32_t j = 0; PATTERN[j] != 0; j++) {
+ for (int32_t j = 0; PATTERN[j] != nullptr; j++) {
sdf->applyPattern(UnicodeString(PATTERN[j]));
UnicodeString result;
sdf->format(d, result);
@@ -1045,8 +1047,8 @@ TimeZoneFormatTest::TestISOFormat() {
return;
}
for (int32_t i = 0; ISO_STR[i][0] != nullptr; i++) {
- for (int32_t j = 0; PATTERN[j] != 0; j++) {
- if (ISO_STR[i][j] == 0) {
+ for (int32_t j = 0; PATTERN[j] != nullptr; j++) {
+ if (ISO_STR[i][j] == nullptr) {
continue;
}
ParsePosition pos(0);
@@ -1153,7 +1155,7 @@ TimeZoneFormatTest::TestFormat() {
UTZFMT_TIME_TYPE_UNKNOWN
},
- {0, 0, 0.0, UTZFMT_STYLE_GENERIC_LOCATION, 0, UTZFMT_TIME_TYPE_UNKNOWN}
+ {nullptr, nullptr, 0.0, UTZFMT_STYLE_GENERIC_LOCATION, nullptr, UTZFMT_TIME_TYPE_UNKNOWN}
};
for (int32_t i = 0; DATA[i].locale; i++) {
@@ -1243,7 +1245,7 @@ TimeZoneFormatTest::TestFormatTZDBNames() {
UTZFMT_TIME_TYPE_STANDARD
},
- {0, 0, 0.0, UTZFMT_STYLE_GENERIC_LOCATION, 0, UTZFMT_TIME_TYPE_UNKNOWN}
+ {nullptr, nullptr, 0.0, UTZFMT_STYLE_GENERIC_LOCATION, nullptr, UTZFMT_TIME_TYPE_UNKNOWN}
};
for (int32_t i = 0; DATA[i].locale; i++) {
@@ -1287,14 +1289,14 @@ TimeZoneFormatTest::TestFormatCustomZone() {
{ "abc", 3600000, "GMT+01:00" }, // unknown ID
{ "$abc", -3600000, "GMT-01:00" }, // unknown, with ASCII variant char '$'
{ "\\u00c1\\u00df\\u00c7", 5400000, "GMT+01:30"}, // unknown, with non-ASCII chars
- { 0, 0, 0 }
+ { nullptr, 0, nullptr }
};
UDate now = Calendar::getNow();
for (int32_t i = 0; ; i++) {
const char *id = TESTDATA[i].id;
- if (id == 0) {
+ if (id == nullptr) {
break;
}
UnicodeString tzid = UnicodeString(id, -1, US_INV).unescape();
@@ -1315,6 +1317,63 @@ TimeZoneFormatTest::TestFormatCustomZone() {
}
void
+TimeZoneFormatTest::Test22615NonASCIIID() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<TimeZoneNames> tzdb(TimeZoneNames::createTZDBInstance(Locale("en"), status));
+ // A test to ensure under the debugging build non ASCII id will not cause
+ // internal assertion error.
+ UnicodeString id(9, u'\u00C0', 8);
+ UnicodeString output;
+ tzdb->getMetaZoneDisplayName(id, UTZNM_SHORT_STANDARD, output);
+ assertTrue("getMetaZoneID of non ASCII id should return bogus string",
+ output.isBogus());
+
+ status = U_ZERO_ERROR;
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ tzdb->getAvailableMetaZoneIDs(id, status));
+ assertSuccess("getAvailableMetaZoneIDs should success", status);
+ assertEquals("getAvailableMetaZoneIDs with non ASCII id return 0 ids",
+ 0, enumeration->count(status));
+ assertSuccess("count should success", status);
+
+ output.remove();
+ tzdb->getMetaZoneID(id, 0, output);
+ assertTrue("getMetaZoneID of non ASCII id should return bogus string",
+ output.isBogus());
+
+ output.remove();
+ tzdb->getMetaZoneDisplayName(id, UTZNM_EXEMPLAR_LOCATION, output);
+ assertTrue("getMetaZoneDisplayName of non ASCII id should return bogus string",
+ output.isBogus());
+
+ output.remove();
+ tzdb->getTimeZoneDisplayName(id, UTZNM_SHORT_DAYLIGHT, output);
+ assertTrue("getTimeZoneDisplayName of non ASCII id should return bogus string",
+ output.isBogus());
+
+ output.remove();
+ tzdb->getExemplarLocationName(id, output);
+ assertTrue("getExemplarLocationName of non ASCII id should return bogus string",
+ output.isBogus());
+
+ output.remove();
+ tzdb->getDisplayName(id, UTZNM_LONG_GENERIC, 0, output);
+ assertTrue("getDisplayName of non ASCII id should return bogus string",
+ output.isBogus());
+}
+
+void
+TimeZoneFormatTest::Test22614GetMetaZoneNamesNotCrash() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<TimeZoneNames> tzdbNames(TimeZoneNames::createTZDBInstance(Locale("en"), status));
+ UnicodeString name;
+ for (int32_t i = 124; i < 150; i++) {
+ name.remove();
+ UnicodeString mzId(i+1, u'A', i);
+ tzdbNames->getMetaZoneDisplayName(mzId, UTZNM_SHORT_STANDARD, name);
+ }
+}
+void
TimeZoneFormatTest::TestFormatTZDBNamesAllZoneCoverage() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<StringEnumeration> tzids(TimeZone::createEnumeration(status));
@@ -1410,4 +1469,14 @@ TimeZoneFormatTest::TestCentralTime() {
}
}
}
+void
+TimeZoneFormatTest::TestBogusLocale() {
+ Locale bogus("not a lang");
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::TimeZoneFormat> tzfmt(
+ icu::TimeZoneFormat::createInstance(bogus, status));
+ if (U_FAILURE(status)) {
+ errln(u"Failed to createInstance with bogus locale");
+ }
+}
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/tzfmttst.h b/icu4c/source/test/intltest/tzfmttst.h
index 8bbf5bc2b..88258cf9b 100644
--- a/icu4c/source/test/intltest/tzfmttst.h
+++ b/icu4c/source/test/intltest/tzfmttst.h
@@ -31,6 +31,9 @@ class TimeZoneFormatTest : public IntlTest {
void TestFormatTZDBNamesAllZoneCoverage();
void TestAdoptDefaultThreadSafe();
void TestCentralTime();
+ void TestBogusLocale();
+ void Test22614GetMetaZoneNamesNotCrash();
+ void Test22615NonASCIIID();
void RunTimeRoundTripTests(int32_t threadNumber);
void RunAdoptDefaultThreadSafeTests(int32_t threadNumber);
diff --git a/icu4c/source/test/intltest/tzregts.cpp b/icu4c/source/test/intltest/tzregts.cpp
index 95fc1b55b..ab217b638 100644
--- a/icu4c/source/test/intltest/tzregts.cpp
+++ b/icu4c/source/test/intltest/tzregts.cpp
@@ -882,8 +882,7 @@ TimeZoneRegressionTest::Test4162593()
* Starting time
* Transition expected between start+1H and start+2H
*/
- TimeZone *DATA_TZ [] = {
- 0, 0, 0 };
+ TimeZone* DATA_TZ[] = {nullptr, nullptr, nullptr};
int32_t DATA_INT [] [5] = {
// These years must be AFTER the Gregorian cutover
diff --git a/icu4c/source/test/intltest/tzrulets.cpp b/icu4c/source/test/intltest/tzrulets.cpp
index 14ce88bcd..e15e3ee14 100644
--- a/icu4c/source/test/intltest/tzrulets.cpp
+++ b/icu4c/source/test/intltest/tzrulets.cpp
@@ -92,9 +92,7 @@ TestZIDEnumeration::TestZIDEnumeration(UBool all)
}
TestZIDEnumeration::~TestZIDEnumeration() {
- if (tzenum != nullptr) {
- delete tzenum;
- }
+ delete tzenum;
}
const UnicodeString*
diff --git a/icu4c/source/test/intltest/tztest.cpp b/icu4c/source/test/intltest/tztest.cpp
index 53e02a9e2..cca4e909f 100644
--- a/icu4c/source/test/intltest/tztest.cpp
+++ b/icu4c/source/test/intltest/tztest.cpp
@@ -156,10 +156,18 @@ TimeZoneTest::TestGenericAPI()
// Africa/Casablanca Europe/Dublin America/Godthab America/Nuuk
if (id == u"Africa/Casablanca" || id == u"Europe/Dublin" ||
id == u"America/Godthab" || id == u"America/Nuuk" ||
- id == u"Africa/El_Aaiun") {
+ id == u"Africa/El_Aaiun" ||
+ id == u"Asia/Qostanay" || // Due to changes in tz2024a
+ id == u"Asia/Almaty" || // Due to changes in tz2024a
+ id == u"America/Scoresbysund" // break after the update of tz2023d
+ ) {
logKnownIssue( "ICU-22274", "detectHostTimeZone()'s raw offset != host timezone's offset in TimeZone " + id);
} else {
- errln("FAIL: detectHostTimeZone()'s raw offset != host timezone's offset");
+ errln("FAIL: detectHostTimeZone()'s raw offset != host timezone's offset.\n"
+ "hostZone->getRawOffset()=%d\n"
+ "but uprv_timezone() return %d and "
+ "uprv_timezone() * -1000=%d",
+ hostZoneRawOffset, tzoffset, tzoffset * -1000);
}
}
delete hostZone;
@@ -334,7 +342,7 @@ void
TimeZoneTest::TestPRTOffset()
{
TimeZone* tz = TimeZone::createTimeZone("PRT");
- if (tz == 0) {
+ if (tz == nullptr) {
errln("FAIL: TimeZone(PRT) is null");
}
else {
@@ -486,7 +494,7 @@ TimeZoneTest::TestGetAvailableIDs913()
const UnicodeString* id = s->snext(ec);
if (i==0 || i==middle || i==(s_length-1)) {
TimeZone *z = TimeZone::createTimeZone(*id);
- if (z == 0) {
+ if (z == nullptr) {
errln(UnicodeString("FAIL: createTimeZone(") +
*id + ") -> 0");
} else if (z->getID(str) != *id) {
@@ -544,18 +552,18 @@ TimeZoneTest::TestGetAvailableIDs913()
logln(buf);
TimeZone *tz = TimeZone::createTimeZone("PST");
- if (tz != 0) logln("getTimeZone(PST) = " + tz->getID(str));
+ if (tz != nullptr) logln("getTimeZone(PST) = " + tz->getID(str));
else errln("FAIL: getTimeZone(PST) = null");
delete tz;
tz = TimeZone::createTimeZone("America/Los_Angeles");
- if (tz != 0) logln("getTimeZone(America/Los_Angeles) = " + tz->getID(str));
+ if (tz != nullptr) logln("getTimeZone(America/Los_Angeles) = " + tz->getID(str));
else errln("FAIL: getTimeZone(PST) = null");
delete tz;
// @bug 4096694
tz = TimeZone::createTimeZone("NON_EXISTENT");
UnicodeString temp;
- if (tz == 0)
+ if (tz == nullptr)
errln("FAIL: getTimeZone(NON_EXISTENT) = null");
else if (tz->getID(temp) != UCAL_UNKNOWN_ZONE_ID)
errln("FAIL: getTimeZone(NON_EXISTENT) = " + temp);
@@ -1171,40 +1179,60 @@ void TimeZoneTest::TestCustomParse()
struct
{
- const char *customId;
+ const char16_t *customId;
int32_t expectedOffset;
}
kData[] =
{
// ID Expected offset in seconds
- {"GMT", kUnparseable}, //Isn't custom. [returns normal GMT]
- {"GMT-YOUR.AD.HERE", kUnparseable},
- {"GMT0", kUnparseable},
- {"GMT+0", (0)},
- {"GMT+1", (1*60*60)},
- {"GMT-0030", (-30*60)},
- {"GMT+15:99", kUnparseable},
- {"GMT+", kUnparseable},
- {"GMT-", kUnparseable},
- {"GMT+0:", kUnparseable},
- {"GMT-:", kUnparseable},
- {"GMT-YOUR.AD.HERE", kUnparseable},
- {"GMT+0010", (10*60)}, // Interpret this as 00:10
- {"GMT-10", (-10*60*60)},
- {"GMT+30", kUnparseable},
- {"GMT-3:30", (-(3*60+30)*60)},
- {"GMT-230", (-(2*60+30)*60)},
- {"GMT+05:13:05", ((5*60+13)*60+5)},
- {"GMT-71023", (-((7*60+10)*60+23))},
- {"GMT+01:23:45:67", kUnparseable},
- {"GMT+01:234", kUnparseable},
- {"GMT-2:31:123", kUnparseable},
- {"GMT+3:75", kUnparseable},
- {"GMT-01010101", kUnparseable},
- {0, 0}
+ {u"GMT", kUnparseable}, //Isn't custom. [returns normal GMT]
+ {u"GMT-YOUR.AD.HERE", kUnparseable},
+ {u"GMT0", kUnparseable},
+ {u"GMT+0", (0)},
+ {u"GMT+1", (1*60*60)},
+ {u"GMT-0030", (-30*60)},
+ {u"GMT+15:99", kUnparseable},
+ {u"GMT+", kUnparseable},
+ {u"GMT-", kUnparseable},
+ {u"GMT+0:", kUnparseable},
+ {u"GMT-:", kUnparseable},
+ {u"GMT-YOUR.AD.HERE", kUnparseable},
+ {u"GMT+0010", (10*60)}, // Interpret this as 00:10
+ {u"GMT-10", (-10*60*60)},
+ {u"GMT+30", kUnparseable},
+ {u"GMT-3:30", (-(3*60+30)*60)},
+ {u"GMT-230", (-(2*60+30)*60)},
+ {u"GMT+05:13:05", ((5*60+13)*60+5)},
+ {u"GMT-71023", (-((7*60+10)*60+23))},
+ {u"GMT+01:23:45:67", kUnparseable},
+ {u"GMT+01:234", kUnparseable},
+ {u"GMT-2:31:123", kUnparseable},
+ {u"GMT+3:75", kUnparseable},
+ {u"GMT-01010101", kUnparseable},
+ {u"GMT-4E58", kUnparseable}, // ICU-22637
+ {u"GMT-4e58", kUnparseable}, // ICU-22637
+ {u"GMT-1E01", kUnparseable}, // ICU-22637
+ {u"GMT-2E01", kUnparseable}, // ICU-22637
+ {u"GMT-2e01", kUnparseable}, // ICU-22637
+ {u"GMT-9e02", kUnparseable}, // ICU-22637
+ {u"GMT-1e03", kUnparseable}, // ICU-22637
+ {u"GMT-2e03", kUnparseable}, // ICU-22637
+ {u"GMT-500M", kUnparseable}, // ICU-22637
+ {u"GMT-500T", kUnparseable}, // ICU-22637
+ {u"GMT-9E00", kUnparseable}, // ICU-22637
+ {u"GMT-0X0F", kUnparseable}, // ICU-22637
+ {u"GMT-0x0F", kUnparseable}, // ICU-22637
+ {u"GMT-0x12", kUnparseable}, // ICU-22637
+ {u"GMT-B111", kUnparseable}, // ICU-22637
+ {u"GMT-b111", kUnparseable}, // ICU-22637
+ {u"GMT-0b11", kUnparseable}, // ICU-22637
+ {u"GMT-๑๒", (-((12*60)*60))}, // ICU-22637
+ {u"GMT-๑๒:๓๔", (-((12*60+34)*60))}, // ICU-22637
+ {u"GMT+๑๒:๓๔:๕๖", ((12*60+34)*60+56)}, // ICU-22637
+ {nullptr, 0}
};
- for (i=0; kData[i].customId != 0; i++) {
+ for (i = 0; kData[i].customId != nullptr; i++) {
UnicodeString id(kData[i].customId);
int32_t exp = kData[i].expectedOffset;
TimeZone *zone = TimeZone::createTimeZone(id);
@@ -1860,14 +1888,14 @@ void TimeZoneTest::TestHistorical() {
{"America/Goose_Bay", -84391200, -3*H}, // Sun Apr 30 03:00:00 GMT-03:00 1967
{"America/Goose_Bay", -68670001, -3*H}, // Sun Oct 29 01:59:59 GMT-03:00 1967
{"America/Goose_Bay", -68670000, -4*H}, // Sun Oct 29 01:00:00 GMT-04:00 1967
- {0, 0, 0}
+ {nullptr, 0, 0}
};
-
- for (int32_t i=0; DATA[i].id!=0; ++i) {
+
+ for (int32_t i = 0; DATA[i].id != nullptr; ++i) {
const char* id = DATA[i].id;
TimeZone *tz = TimeZone::createTimeZone(id);
UnicodeString s;
- if (tz == 0) {
+ if (tz == nullptr) {
errln("FAIL: Cannot create %s", id);
} else if (tz->getID(s) != UnicodeString(id)) {
dataerrln((UnicodeString)"FAIL: createTimeZone(" + id + ") => " + s);
@@ -2189,7 +2217,7 @@ void TimeZoneTest::TestCanonicalID() {
{"Pacific/Truk", "Pacific/Port_Moresby"},
{"Pacific/Wake", "Pacific/Funafuti"},
{"Pacific/Wallis", "Pacific/Funafuti"},
- {0, 0}
+ {nullptr, nullptr}
};
// Following IDs are aliases of Etc/GMT in CLDR,
@@ -2202,7 +2230,7 @@ void TimeZoneTest::TestCanonicalID() {
"Etc/UCT", "UCT",
"Etc/UTC", "UTC",
"Etc/Universal", "Universal",
- "Etc/Zulu", "Zulu", 0
+ "Etc/Zulu", "Zulu", nullptr
};
// Walk through equivalency groups
@@ -2235,7 +2263,7 @@ void TimeZoneTest::TestCanonicalID() {
continue;
}
// Some exceptional cases
- for (k = 0; excluded1[k].alias != 0; k++) {
+ for (k = 0; excluded1[k].alias != nullptr; k++) {
if (tmpCanonical == excluded1[k].alias) {
tmpCanonical = excluded1[k].zone;
break;
@@ -2256,7 +2284,7 @@ void TimeZoneTest::TestCanonicalID() {
if (bFoundCanonical == false) {
// test exclusion because of differences between Olson tzdata and CLDR
UBool isExcluded = false;
- for (k = 0; excluded2[k] != 0; k++) {
+ for (k = 0; excluded2[k] != nullptr; k++) {
if (*tzid == UnicodeString(excluded2[k])) {
isExcluded = true;
break;
@@ -2282,21 +2310,21 @@ void TimeZoneTest::TestCanonicalID() {
{"GMT+430", "GMT+04:30", false},
{"GMT-12:15", "GMT-12:15", false},
{"GMT-091015", "GMT-09:10:15", false},
- {"GMT+1:90", 0, false},
+ {"GMT+1:90", nullptr, false},
{"America/Argentina/Buenos_Aires", "America/Buenos_Aires", true},
{"Etc/Unknown", "Etc/Unknown", false},
- {"bogus", 0, false},
- {"", 0, false},
+ {"bogus", nullptr, false},
+ {"", nullptr, false},
{"America/Marigot", "America/Marigot", true}, // Olson link, but CLDR canonical (#8953)
{"Europe/Bratislava", "Europe/Bratislava", true}, // Same as above
- {0, 0, false}
+ {nullptr, nullptr, false}
};
UBool isSystemID;
- for (i = 0; data[i].id != 0; i++) {
+ for (i = 0; data[i].id != nullptr; i++) {
TimeZone::getCanonicalID(UnicodeString(data[i].id), canonicalID, isSystemID, ec);
if (U_FAILURE(ec)) {
- if (ec != U_ILLEGAL_ARGUMENT_ERROR || data[i].expected != 0) {
+ if (ec != U_ILLEGAL_ARGUMENT_ERROR || data[i].expected != nullptr) {
errln((UnicodeString)"FAIL: getCanonicalID(\"" + data[i].id
+ "\") returned status U_ILLEGAL_ARGUMENT_ERROR");
}
@@ -2444,10 +2472,10 @@ void TimeZoneTest::TestGetRegion()
// {"Asia/Riyadh87", "001"}, // this should be "SA" actually, but not in zone.tab
{"Atlantic/Jan_Mayen", "SJ"},
{"Pacific/Truk", "FM"},
- {"Etc/Unknown", 0}, // CLDR canonical, but not a sysmte zone ID
- {"bogus", 0}, // bogus
- {"GMT+08:00", 0}, // a custom ID, not a system zone ID
- {0, 0}
+ {"Etc/Unknown", nullptr}, // CLDR canonical, but not a sysmte zone ID
+ {"bogus", nullptr}, // bogus
+ {"GMT+08:00", nullptr}, // a custom ID, not a system zone ID
+ {nullptr, nullptr}
};
int32_t i;
@@ -2457,7 +2485,7 @@ void TimeZoneTest::TestGetRegion()
sts = U_ZERO_ERROR;
TimeZone::getRegion(data[i].id, region, sizeof(region), sts);
if (U_SUCCESS(sts)) {
- if (data[i].region == 0) {
+ if (data[i].region == nullptr) {
errln((UnicodeString)"Fail: getRegion(\"" + data[i].id + "\") returns "
+ region + " [expected: U_ILLEGAL_ARGUMENT_ERROR]");
} else if (uprv_strcmp(region, data[i].region) != 0) {
@@ -2465,7 +2493,7 @@ void TimeZoneTest::TestGetRegion()
+ region + " [expected: " + data[i].region + "]");
}
} else if (sts == U_ILLEGAL_ARGUMENT_ERROR) {
- if (data[i].region != 0) {
+ if (data[i].region != nullptr) {
dataerrln((UnicodeString)"Fail: getRegion(\"" + data[i].id
+ "\") returns error status U_ILLEGAL_ARGUMENT_ERROR [expected: "
+ data[i].region + "]");
@@ -2546,10 +2574,10 @@ void TimeZoneTest::TestGetWindowsID() {
{"Asia/Khandyga", "Yakutsk Standard Time"},
{"Australia/Eucla", "Aus Central W. Standard Time"}, // formerly no Windows ID mapping, now has one
{"Bogus", ""},
- {0, 0},
+ {nullptr, nullptr},
};
- for (int32_t i = 0; TESTDATA[i].id != 0; i++) {
+ for (int32_t i = 0; TESTDATA[i].id != nullptr; i++) {
UErrorCode sts = U_ZERO_ERROR;
UnicodeString windowsID;
@@ -2565,19 +2593,19 @@ void TimeZoneTest::TestGetIDForWindowsID() {
const char *region;
const char *id;
} TESTDATA[] = {
- {"Eastern Standard Time", 0, "America/New_York"},
- {"Eastern Standard Time", "US", "America/New_York"},
- {"Eastern Standard Time", "CA", "America/Toronto"},
- {"Eastern Standard Time", "CN", "America/New_York"},
- {"China Standard Time", 0, "Asia/Shanghai"},
- {"China Standard Time", "CN", "Asia/Shanghai"},
- {"China Standard Time", "HK", "Asia/Hong_Kong"},
- {"Mid-Atlantic Standard Time", 0, ""}, // No tz database mapping
- {"Bogus", 0, ""},
- {0, 0, 0},
+ {"Eastern Standard Time", nullptr, "America/New_York"},
+ {"Eastern Standard Time", "US", "America/New_York"},
+ {"Eastern Standard Time", "CA", "America/Toronto"},
+ {"Eastern Standard Time", "CN", "America/New_York"},
+ {"China Standard Time", nullptr, "Asia/Shanghai"},
+ {"China Standard Time", "CN", "Asia/Shanghai"},
+ {"China Standard Time", "HK", "Asia/Hong_Kong"},
+ {"Mid-Atlantic Standard Time", nullptr, ""}, // No tz database mapping
+ {"Bogus", nullptr, ""},
+ {nullptr, nullptr, nullptr},
};
- for (int32_t i = 0; TESTDATA[i].winid != 0; i++) {
+ for (int32_t i = 0; TESTDATA[i].winid != nullptr; i++) {
UErrorCode sts = U_ZERO_ERROR;
UnicodeString id;
@@ -2633,7 +2661,7 @@ void TimeZoneTest::TestGetIanaID() {
const char16_t* expected;
} TESTDATA[] = {
{u"", UNKNOWN},
- {0, UNKNOWN},
+ {nullptr, UNKNOWN},
{UNKNOWN, UNKNOWN},
{u"America/New_York", u"America/New_York"},
{u"Asia/Calcutta", u"Asia/Kolkata"},
@@ -2643,10 +2671,10 @@ void TimeZoneTest::TestGetIanaID() {
{u"Etc/GMT+20", UNKNOWN},
{u"PST8PDT", u"PST8PDT"},
{u"GMT-08:00", UNKNOWN},
- {0, 0}
+ {nullptr, nullptr}
};
- for (int32_t i = 0; TESTDATA[i].expected != 0; i++) {
+ for (int32_t i = 0; TESTDATA[i].expected != nullptr; i++) {
UErrorCode sts = U_ZERO_ERROR;
UnicodeString inputID(TESTDATA[i].id);
UnicodeString ianaID;
diff --git a/icu4c/source/test/intltest/ucaconf.cpp b/icu4c/source/test/intltest/ucaconf.cpp
index 845b153f3..311d38807 100644
--- a/icu4c/source/test/intltest/ucaconf.cpp
+++ b/icu4c/source/test/intltest/ucaconf.cpp
@@ -127,17 +127,17 @@ void UCAConformanceTest::openTestFile(const char *type)
testFile = fopen(buffer, "rb");
- if(testFile == 0) {
+ if (testFile == nullptr) {
uprv_strcpy(buffer+bufLen, "_SHORT");
uprv_strcat(buffer, ext);
testFile = fopen(buffer, "rb");
- if(testFile == 0) {
+ if (testFile == nullptr) {
uprv_strcpy(buffer+bufLen, "_STUB");
uprv_strcat(buffer, ext);
testFile = fopen(buffer, "rb");
- if (testFile == 0) {
+ if (testFile == nullptr) {
*(buffer+bufLen) = 0;
dataerrln("Could not open any of the conformance test files, tried opening base %s\n", buffer);
return;
@@ -172,7 +172,7 @@ normalizeResult(int32_t result) {
void UCAConformanceTest::testConformance(const Collator *coll)
{
- if(testFile == 0) {
+ if (testFile == nullptr) {
return;
}
uint32_t skipFlags = 0;
diff --git a/icu4c/source/test/intltest/ucdtest.cpp b/icu4c/source/test/intltest/ucdtest.cpp
index a63b86e21..5828c52bb 100644
--- a/icu4c/source/test/intltest/ucdtest.cpp
+++ b/icu4c/source/test/intltest/ucdtest.cpp
@@ -12,9 +12,11 @@
#include "unicode/putil.h"
#include "unicode/uscript.h"
#include "unicode/uset.h"
+#include "charstr.h"
#include "cstring.h"
#include "hash.h"
#include "patternprops.h"
+#include "ppucd.h"
#include "normalizer2impl.h"
#include "testutil.h"
#include "uparse.h"
@@ -80,6 +82,9 @@ void UnicodeTest::runIndexedTest( int32_t index, UBool exec, const char* &name,
TESTCASE_AUTO(TestPropertyNames);
TESTCASE_AUTO(TestIDSUnaryOperator);
TESTCASE_AUTO(TestIDCompatMath);
+ TESTCASE_AUTO(TestBinaryPropertyUsingPpucd);
+ TESTCASE_AUTO(TestIDStatus);
+ TESTCASE_AUTO(TestIDType);
TESTCASE_AUTO_END;
}
@@ -1024,3 +1029,263 @@ void UnicodeTest::TestIDCompatMath() {
assertTrue("idcmStart.contains(U+1D7C3)", idcmStart.contains(0x1D7C3));
assertFalse("idcmStart.contains(U+1D7C4)", idcmStart.contains(0x1D7C4));
}
+
+U_NAMESPACE_BEGIN
+
+class BuiltInPropertyNames : public PropertyNames {
+public:
+ ~BuiltInPropertyNames() override {}
+
+ int32_t getPropertyEnum(const char *name) const override {
+ return u_getPropertyEnum(name);
+ }
+
+ int32_t getPropertyValueEnum(int32_t property, const char *name) const override {
+ return u_getPropertyValueEnum((UProperty) property, name);
+ }
+};
+
+U_NAMESPACE_END
+
+void UnicodeTest::TestBinaryPropertyUsingPpucd() {
+ IcuTestErrorCode errorCode(*this, "TestBinaryPropertyUsingPpucd()");
+
+ // Initialize PPUCD parsing object using file in repo and using
+ // property names present in built-in data in ICU
+ char buffer[500];
+ // get path to `source/data/unidata/` including trailing `/`
+ char *unidataPath = getUnidataPath(buffer);
+ if(unidataPath == nullptr) {
+ errln("exiting early because unable to open ppucd.txt from ICU source tree");
+ return;
+ }
+ CharString ppucdPath(unidataPath, errorCode);
+ ppucdPath.appendPathPart("ppucd.txt", errorCode);
+ PreparsedUCD ppucd(ppucdPath.data(), errorCode);
+ if(errorCode.isFailure()) {
+ errln("unable to open %s - %s\n",
+ ppucdPath.data(), errorCode.errorName());
+ return;
+ }
+ BuiltInPropertyNames builtInPropNames;
+ ppucd.setPropertyNames(&builtInPropNames);
+
+ // Define which binary properties we want to compare
+ constexpr UProperty propsUnderTest[] = {
+ UCHAR_IDS_UNARY_OPERATOR,
+ UCHAR_ID_COMPAT_MATH_START,
+ UCHAR_ID_COMPAT_MATH_CONTINUE,
+ };
+
+ // Allocate & initialize UnicodeSets per binary property from PPUCD data
+ UnicodeSet ppucdPropSets[std::size(propsUnderTest)];
+
+ // Iterate through PPUCD file, accumulating each line's data into each UnicodeSet per property
+ PreparsedUCD::LineType lineType;
+ UnicodeSet newValues;
+ while((lineType=ppucd.readLine(errorCode))!=PreparsedUCD::NO_LINE && errorCode.isSuccess()) {
+ if(ppucd.lineHasPropertyValues()) {
+ const UniProps *lineProps=ppucd.getProps(newValues, errorCode);
+
+ for(uint32_t i = 0; i < std::size(propsUnderTest); i++) {
+ UProperty prop = propsUnderTest[i];
+ if (!newValues.contains(prop)) {
+ continue;
+ }
+ if (lineProps->binProps[prop]) {
+ ppucdPropSets[i].add(lineProps->start, lineProps->end);
+ } else {
+ ppucdPropSets[i].remove(lineProps->start, lineProps->end);
+ }
+ }
+ }
+ }
+
+ if(errorCode.isFailure()) {
+ errln("exiting early due to parsing error");
+ return;
+ }
+
+ // Assert that the PPUCD data and the ICU data are equivalent for all properties
+ for(uint32_t i = 0; i < std::size(propsUnderTest); i++) {
+ UnicodeSet icuPropSet;
+ UProperty prop = propsUnderTest[i];
+ icuPropSet.applyIntPropertyValue(prop, 1, errorCode);
+ std::string msg =
+ std::string()
+ + "ICU & PPUCD versions of property "
+ + u_getPropertyName(prop, U_LONG_PROPERTY_NAME);
+ assertTrue(msg.c_str(), ppucdPropSets[i] == icuPropSet);
+ }
+}
+
+namespace {
+
+int32_t getIDStatus(UChar32 c) {
+ return u_getIntPropertyValue(c, UCHAR_IDENTIFIER_STATUS);
+}
+
+} // namespace
+
+void UnicodeTest::TestIDStatus() {
+ IcuTestErrorCode errorCode(*this, "TestIDStatus()");
+ assertEquals("ID_Status(slash)=Restricted", U_ID_STATUS_RESTRICTED, getIDStatus(0x2F));
+ assertEquals("ID_Status(digit 0)=Allowed", U_ID_STATUS_ALLOWED, getIDStatus(0x30));
+ assertEquals("ID_Status(colon)=Allowed", U_ID_STATUS_ALLOWED, getIDStatus(0x3A));
+ assertEquals("ID_Status(semicolon)=Restricted", U_ID_STATUS_RESTRICTED, getIDStatus(0x3B));
+ assertEquals("ID_Status(Greek small alpha)=Allowed", U_ID_STATUS_ALLOWED, getIDStatus(0x03B1));
+ assertEquals("ID_Status(Greek small archaic koppa)=Restricted", U_ID_STATUS_RESTRICTED, getIDStatus(0x03D9));
+ assertEquals("ID_Status(Hangul syllable)=Allowed", U_ID_STATUS_ALLOWED, getIDStatus(0xAC00));
+ assertEquals("ID_Status(surrogate)=Restricted", U_ID_STATUS_RESTRICTED, getIDStatus(0xD800));
+ assertEquals("ID_Status(Arabic tail fragment)=Restricted", U_ID_STATUS_RESTRICTED, getIDStatus(0xFE73));
+ assertEquals("ID_Status(Hentaigana ko-3)=Restricted", U_ID_STATUS_RESTRICTED, getIDStatus(0x1B03A));
+ assertEquals("ID_Status(Katakana small ko)=Allowed", U_ID_STATUS_ALLOWED, getIDStatus(0x1B155));
+ assertEquals("ID_Status(U+2EE5D)=Allowed", U_ID_STATUS_ALLOWED, getIDStatus(0x2EE5D));
+ assertEquals("ID_Status(U+10FFFF)=Restricted", U_ID_STATUS_RESTRICTED, getIDStatus(0x10FFFF));
+
+ // Property names work and get the correct sets.
+ UnicodeSet idStatus(u"[:Identifier_Status=Allowed:]", errorCode);
+ // Unicode 15.1: 112778 Allowed characters; normally grows over time
+ assertTrue("Allowed number of characters", idStatus.size() >= 112778);
+ assertFalse("Allowed.contains(slash)", idStatus.contains(0x2F));
+ assertTrue("Allowed.contains(digit 0)", idStatus.contains(0x30));
+ assertTrue("Allowed.contains(colon)", idStatus.contains(0x3A));
+ assertFalse("Allowed.contains(semicolon)", idStatus.contains(0x3B));
+ assertTrue("Allowed.contains(Greek small alpha)", idStatus.contains(0x03B1));
+ assertFalse("Allowed.contains(Greek small archaic koppa)", idStatus.contains(0x03D9));
+ assertTrue("Allowed.contains(Hangul syllable)", idStatus.contains(0xAC00));
+ assertFalse("Allowed.contains(surrogate)", idStatus.contains(0xD800));
+ assertFalse("Allowed.contains(Arabic tail fragment)", idStatus.contains(0xFE73));
+ assertFalse("Allowed.contains(Hentaigana ko-3)", idStatus.contains(0x1B03A));
+ assertTrue("Allowed.contains(Katakana small ko)", idStatus.contains(0x1B155));
+ assertTrue("Allowed.contains(U+2EE5D)", idStatus.contains(0x2EE5D));
+ assertFalse("Allowed.contains(U+10FFFF)", idStatus.contains(0x10FFFF));
+}
+
+namespace {
+
+UnicodeString getIDTypes(UChar32 c) {
+ UErrorCode errorCode = U_ZERO_ERROR;
+ UIdentifierType types[10];
+ int32_t length = u_getIDTypes(c, types, UPRV_LENGTHOF(types), &errorCode);
+ if (U_FAILURE(errorCode)) {
+ return UnicodeString(u_errorName(errorCode), -1, US_INV);
+ }
+ // The order of values is undefined, but for simplicity we assume the order
+ // that the current implementation yields. Otherwise we would have to sort the values.
+ uint32_t typeBits = 0;
+ UnicodeString result;
+ for (int32_t i = 0; i < length; ++i) {
+ if (i != 0) {
+ result.append(u' ');
+ }
+ auto t = types[i];
+ typeBits |= 1UL << t;
+ const char *s = u_getPropertyValueName(UCHAR_IDENTIFIER_TYPE, t, U_LONG_PROPERTY_NAME);
+ if (s != nullptr) {
+ result.append(UnicodeString(s, -1, US_INV));
+ } else {
+ result.append(u"???");
+ }
+ }
+ // Check that u_hasIDType() agrees.
+ // Includes undefined behavior with t > largest enum constant.
+ for (int32_t i = 0; i < 16; ++i) {
+ UIdentifierType t = (UIdentifierType)i;
+ bool expected = (typeBits & (1UL << i)) != 0;
+ bool actual = u_hasIDType(c, t);
+ if (actual != expected) {
+ result.append(u" != u_hasIDType() ");
+ result = result + i;
+ break;
+ }
+ }
+ return result;
+}
+
+} // namespace
+
+void UnicodeTest::TestIDType() {
+ IcuTestErrorCode errorCode(*this, "TestIDType()");
+ // Note: Types other than Recommended and Inclusion may well change over time.
+ assertEquals("ID_Type(slash)", u"Not_XID", getIDTypes(0x2F));
+ assertEquals("ID_Type(digit 0)", u"Recommended", getIDTypes(0x30));
+ assertEquals("ID_Type(colon)", u"Inclusion", getIDTypes(0x3A));
+ assertEquals("ID_Type(semicolon)", u"Not_XID", getIDTypes(0x3B));
+ assertEquals("ID_Type(Greek small alpha)", u"Recommended", getIDTypes(0x03B1));
+ assertEquals("ID_Type(Greek small archaic koppa)", u"Obsolete", getIDTypes(0x03D9));
+ assertEquals("ID_Type(Hangul syllable)", u"Recommended", getIDTypes(0xAC00));
+ assertEquals("ID_Type(surrogate)", u"Not_Character", getIDTypes(0xD800));
+ assertEquals("ID_Type(Arabic tail fragment)", u"Technical", getIDTypes(0xFE73));
+ assertEquals("ID_Type(Linear B syllable)", u"Exclusion", getIDTypes(0x10000));
+ assertEquals("ID_Type(Hentaigana ko-3)", u"Obsolete", getIDTypes(0x1B03A));
+ assertEquals("ID_Type(Katakana small ko)", u"Recommended", getIDTypes(0x1B155));
+ assertEquals("ID_Type(U+2EE5D)", u"Recommended", getIDTypes(0x2EE5D));
+ assertEquals("ID_Type(U+10FFFF)", u"Not_Character", getIDTypes(0x10FFFF));
+
+ assertEquals("ID_Type(CYRILLIC THOUSANDS SIGN)", u"Not_XID Obsolete", getIDTypes(0x0482));
+ assertEquals("ID_Type(SYRIAC FEMININE DOT)", u"Technical Limited_Use", getIDTypes(0x0740));
+ assertEquals("ID_Type(NKO LETTER JONA JA)", u"Obsolete Limited_Use", getIDTypes(0x07E8));
+ assertEquals("ID_Type(SYRIAC END OF PARAGRAPH)", u"Not_XID Limited_Use", getIDTypes(0x0700));
+ assertEquals("ID_Type(LATIN SMALL LETTER EZH)=", u"Technical Uncommon_Use", getIDTypes(0x0292));
+ assertEquals("ID_Type(MUSICAL SYMBOL KIEVAN C CLEF)", u"Not_XID Technical Uncommon_Use", getIDTypes(0x1D1DE));
+ assertEquals("ID_Type(MRO LETTER TA)", u"Exclusion Uncommon_Use", getIDTypes(0x16A40));
+ assertEquals("ID_Type(GREEK MUSICAL LEIMMA)", u"Not_XID Obsolete", getIDTypes(0x1D245));
+
+ // error handling
+ UIdentifierType types[2];
+ UErrorCode failure = U_ZERO_ERROR;
+ u_getIDTypes(0, types, -1, &failure);
+ assertEquals("u_getIDTypes(capacity<0)", U_ILLEGAL_ARGUMENT_ERROR, failure);
+
+ failure = U_ZERO_ERROR;
+ u_getIDTypes(0, nullptr, 1, &failure);
+ assertEquals("u_getIDTypes(nullptr)", U_ILLEGAL_ARGUMENT_ERROR, failure);
+
+ failure = U_ZERO_ERROR;
+ int32_t length = u_getIDTypes(0x30, types, 0, &failure);
+ assertEquals("u_getIDTypes(digit 0, capacity 0) overflow", U_BUFFER_OVERFLOW_ERROR, failure);
+ assertEquals("u_getIDTypes(digit 0, capacity 0) length", 1, length);
+
+ failure = U_ZERO_ERROR;
+ length = u_getIDTypes(0x1D1DE, types, 0, &failure);
+ assertEquals("u_getIDTypes(Kievan C clef, capacity 2) overflow", U_BUFFER_OVERFLOW_ERROR, failure);
+ assertEquals("u_getIDTypes(Kievan C clef, capacity 2) length", 3, length);
+
+ // Property names work and get the correct sets.
+ UnicodeSet rec(u"[:Identifier_Type=Recommended:]", errorCode);
+ UnicodeSet incl(u"[:Identifier_Type=Inclusion:]", errorCode);
+ UnicodeSet limited(u"[:Identifier_Type=Limited_Use:]", errorCode);
+ UnicodeSet uncommon(u"[:Identifier_Type=Uncommon_Use:]", errorCode);
+ UnicodeSet notChar(u"[:Identifier_Type=Not_Character:]", errorCode);
+ // Unicode 15.1 set sizes; normally grows over time except Not_Character shrinks
+ assertTrue("Recommended number of characters", rec.size() >= 112761);
+ assertTrue("Inclusion number of characters", incl.size() >= 17);
+ assertTrue("Limited_Use number of characters", limited.size() >= 5268);
+ assertTrue("Uncommon_Use number of characters", uncommon.size() >= 398);
+ assertTrue("Not_Character number of characters",
+ 800000 <= notChar.size() && notChar.size() <= 964293);
+ assertFalse("Recommended.contains(slash)", rec.contains(0x2F));
+ assertTrue("Recommended.contains(digit 0)", rec.contains(0x30));
+ assertTrue("Inclusion.contains(colon)", incl.contains(0x3A));
+ assertTrue("Recommended.contains(U+2EE5D)", rec.contains(0x2EE5D));
+ assertTrue("Limited_Use.contains(SYRIAC FEMININE DOT)", limited.contains(0x0740));
+ assertTrue("Limited_Use.contains(NKO LETTER JONA JA)", limited.contains(0x7E8));
+ assertTrue("Not_Character.contains(surrogate)", notChar.contains(0xd800));
+ assertTrue("Not_Character.contains(U+10FFFF)", notChar.contains(0x10FFFF));
+ assertTrue("Uncommon_Use.contains(LATIN SMALL LETTER EZH)", uncommon.contains(0x0292));
+ assertTrue("Uncommon_Use.contains(MUSICAL SYMBOL KIEVAN C CLEF)", uncommon.contains(0x1D1DE));
+
+ // More mutually exclusive types, including some otherwise combinable ones.
+ UnicodeSet dep(u"[:Identifier_Type=Deprecated:]", errorCode);
+ UnicodeSet di(u"[:Identifier_Type=Default_Ignorable:]", errorCode);
+ UnicodeSet notNFKC(u"[:Identifier_Type=Not_NFKC:]", errorCode);
+ UnicodeSet excl(u"[:Identifier_Type=Exclusion:]", errorCode);
+ UnicodeSet allExclusive;
+ allExclusive.addAll(rec).addAll(incl).addAll(limited).addAll(excl).
+ addAll(notNFKC).addAll(di).addAll(dep).addAll(notChar);
+ assertEquals("num chars in mutually exclusive types",
+ rec.size() + incl.size() + limited.size() + excl.size() +
+ notNFKC.size() + di.size() + dep.size() + notChar.size(),
+ allExclusive.size());
+}
diff --git a/icu4c/source/test/intltest/ucdtest.h b/icu4c/source/test/intltest/ucdtest.h
index 6c83744c0..d8a02c3e2 100644
--- a/icu4c/source/test/intltest/ucdtest.h
+++ b/icu4c/source/test/intltest/ucdtest.h
@@ -52,6 +52,9 @@ public:
void TestPropertyNames();
void TestIDSUnaryOperator();
void TestIDCompatMath();
+ void TestBinaryPropertyUsingPpucd();
+ void TestIDStatus();
+ void TestIDType();
private:
diff --git a/icu4c/source/test/intltest/uchar_type_build_test.cpp b/icu4c/source/test/intltest/uchar_type_build_test.cpp
index ca9335441..f31f26bf2 100644
--- a/icu4c/source/test/intltest/uchar_type_build_test.cpp
+++ b/icu4c/source/test/intltest/uchar_type_build_test.cpp
@@ -2,6 +2,203 @@
// License & terms of use: http://www.unicode.org/copyright.html#License
// ICU-22356 Test that client code can be built with UCHAR_TYPE redefined.
+#undef U_ALL_IMPLEMENTATION
#undef UCHAR_TYPE
#define UCHAR_TYPE uint16_t
+#include "unicode/alphaindex.h"
+#include "unicode/appendable.h"
+#include "unicode/basictz.h"
+#include "unicode/brkiter.h"
+#include "unicode/bytestream.h"
+#include "unicode/bytestrie.h"
+#include "unicode/bytestriebuilder.h"
+#include "unicode/calendar.h"
+#include "unicode/caniter.h"
+#include "unicode/casemap.h"
+#include "unicode/char16ptr.h"
+#include "unicode/chariter.h"
+#include "unicode/choicfmt.h"
+#include "unicode/coleitr.h"
+#include "unicode/coll.h"
+#include "unicode/compactdecimalformat.h"
+#include "unicode/curramt.h"
+#include "unicode/currpinf.h"
+#include "unicode/currunit.h"
+#include "unicode/datefmt.h"
+#include "unicode/dbbi.h"
+#include "unicode/dcfmtsym.h"
+#include "unicode/decimfmt.h"
+#include "unicode/displayoptions.h"
+#include "unicode/docmain.h"
+#include "unicode/dtfmtsym.h"
+#include "unicode/dtintrv.h"
+#include "unicode/dtitvfmt.h"
+#include "unicode/dtitvinf.h"
+#include "unicode/dtptngen.h"
+#include "unicode/dtrule.h"
+#include "unicode/edits.h"
+#include "unicode/enumset.h"
+#include "unicode/errorcode.h"
+#include "unicode/fieldpos.h"
+#include "unicode/filteredbrk.h"
+#include "unicode/fmtable.h"
+#include "unicode/format.h"
+#include "unicode/formattednumber.h"
+#include "unicode/formattedvalue.h"
+#include "unicode/fpositer.h"
+#include "unicode/gender.h"
+#include "unicode/gregocal.h"
+#include "unicode/icudataver.h"
+#include "unicode/icuplug.h"
+#include "unicode/idna.h"
+#include "unicode/listformatter.h"
+#include "unicode/localebuilder.h"
+#include "unicode/localematcher.h"
+#include "unicode/localpointer.h"
+#include "unicode/locdspnm.h"
+#include "unicode/locid.h"
+#include "unicode/measfmt.h"
+#include "unicode/measunit.h"
+#include "unicode/measure.h"
+#include "unicode/messagepattern.h"
+#include "unicode/msgfmt.h"
+#include "unicode/normalizer2.h"
+#include "unicode/normlzr.h"
+#include "unicode/nounit.h"
+#include "unicode/numberformatter.h"
+#include "unicode/numberrangeformatter.h"
+#include "unicode/numfmt.h"
+#include "unicode/numsys.h"
+#include "unicode/parseerr.h"
+#include "unicode/parsepos.h"
+#include "unicode/platform.h"
+#include "unicode/plurfmt.h"
+#include "unicode/plurrule.h"
+#include "unicode/ptypes.h"
+#include "unicode/putil.h"
+#include "unicode/rbbi.h"
+#include "unicode/rbnf.h"
+#include "unicode/rbtz.h"
+#include "unicode/regex.h"
+#include "unicode/region.h"
+#include "unicode/reldatefmt.h"
+#include "unicode/rep.h"
+#include "unicode/resbund.h"
+#include "unicode/schriter.h"
+#include "unicode/scientificnumberformatter.h"
+#include "unicode/search.h"
+#include "unicode/selfmt.h"
+#include "unicode/simpleformatter.h"
+#include "unicode/simplenumberformatter.h"
+#include "unicode/simpletz.h"
+#include "unicode/smpdtfmt.h"
+#include "unicode/sortkey.h"
+#include "unicode/std_string.h"
+#include "unicode/strenum.h"
+#include "unicode/stringoptions.h"
+#include "unicode/stringpiece.h"
+#include "unicode/stringtriebuilder.h"
+#include "unicode/stsearch.h"
+#include "unicode/symtable.h"
+#include "unicode/tblcoll.h"
+#include "unicode/timezone.h"
+#include "unicode/tmunit.h"
+#include "unicode/tmutamt.h"
+#include "unicode/tmutfmt.h"
+#include "unicode/translit.h"
+#include "unicode/tzfmt.h"
+#include "unicode/tznames.h"
+#include "unicode/tzrule.h"
+#include "unicode/tztrans.h"
+#include "unicode/ubidi.h"
+#include "unicode/ubiditransform.h"
+#include "unicode/ubrk.h"
+#include "unicode/ucal.h"
+#include "unicode/ucasemap.h"
+#include "unicode/ucat.h"
+#include "unicode/uchar.h"
+#include "unicode/ucharstrie.h"
+#include "unicode/ucharstriebuilder.h"
+#include "unicode/uchriter.h"
+#include "unicode/uclean.h"
+#include "unicode/ucnv.h"
+#include "unicode/ucnv_cb.h"
+#include "unicode/ucnv_err.h"
+#include "unicode/ucnvsel.h"
+#include "unicode/ucol.h"
+#include "unicode/ucoleitr.h"
+#include "unicode/uconfig.h"
+#include "unicode/ucpmap.h"
+#include "unicode/ucptrie.h"
+#include "unicode/ucsdet.h"
+#include "unicode/ucurr.h"
+#include "unicode/udat.h"
+#include "unicode/udata.h"
+#include "unicode/udateintervalformat.h"
+#include "unicode/udatpg.h"
+#include "unicode/udisplaycontext.h"
+#include "unicode/udisplayoptions.h"
+#include "unicode/uenum.h"
+#include "unicode/ufieldpositer.h"
+#include "unicode/uformattable.h"
+#include "unicode/uformattednumber.h"
+#include "unicode/uformattedvalue.h"
+#include "unicode/ugender.h"
+#include "unicode/uidna.h"
+#include "unicode/uiter.h"
+#include "unicode/uldnames.h"
+#include "unicode/ulistformatter.h"
+#include "unicode/uloc.h"
+#include "unicode/ulocale.h"
+#include "unicode/ulocbuilder.h"
+#include "unicode/ulocdata.h"
+#include "unicode/umachine.h"
+#include "unicode/umisc.h"
+#include "unicode/umsg.h"
+#include "unicode/umutablecptrie.h"
+#include "unicode/unifilt.h"
+#include "unicode/unifunct.h"
+#include "unicode/unimatch.h"
+#include "unicode/unirepl.h"
+#include "unicode/uniset.h"
+#include "unicode/unistr.h"
+#include "unicode/unorm.h"
+#include "unicode/unorm2.h"
+#include "unicode/unum.h"
+#include "unicode/unumberformatter.h"
+#include "unicode/unumberoptions.h"
+#include "unicode/unumberrangeformatter.h"
+#include "unicode/unumsys.h"
+#include "unicode/uobject.h"
+#include "unicode/upluralrules.h"
+#include "unicode/uregex.h"
+#include "unicode/uregion.h"
+#include "unicode/ureldatefmt.h"
+#include "unicode/urename.h"
+#include "unicode/urep.h"
#include "unicode/ures.h"
+#include "unicode/uscript.h"
+#include "unicode/usearch.h"
+#include "unicode/uset.h"
+#include "unicode/usetiter.h"
+#include "unicode/ushape.h"
+#include "unicode/usimplenumberformatter.h"
+#include "unicode/uspoof.h"
+#include "unicode/usprep.h"
+#include "unicode/ustdio.h"
+#include "unicode/ustream.h"
+#include "unicode/ustring.h"
+#include "unicode/ustringtrie.h"
+#include "unicode/utext.h"
+#include "unicode/utf.h"
+#include "unicode/utf16.h"
+#include "unicode/utf32.h"
+#include "unicode/utf8.h"
+#include "unicode/utf_old.h"
+#include "unicode/utmscale.h"
+#include "unicode/utrace.h"
+#include "unicode/utrans.h"
+#include "unicode/utypes.h"
+#include "unicode/uvernum.h"
+#include "unicode/uversion.h"
+#include "unicode/vtzone.h"
diff --git a/icu4c/source/test/intltest/unifiedcachetest.cpp b/icu4c/source/test/intltest/unifiedcachetest.cpp
index 6e5352fc6..8ba0906f0 100644
--- a/icu4c/source/test/intltest/unifiedcachetest.cpp
+++ b/icu4c/source/test/intltest/unifiedcachetest.cpp
@@ -69,7 +69,8 @@ class UnifiedCacheTest : public IntlTest {
public:
UnifiedCacheTest() {
}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override;
+ void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
+
private:
void TestEvictionPolicy();
void TestBounded();
diff --git a/icu4c/source/test/intltest/units_data_test.cpp b/icu4c/source/test/intltest/units_data_test.cpp
index 6b785865a..8489c100b 100644
--- a/icu4c/source/test/intltest/units_data_test.cpp
+++ b/icu4c/source/test/intltest/units_data_test.cpp
@@ -52,6 +52,8 @@ void UnitsDataTest::testGetUnitCategory() {
// Tests are:
// {"liter-per-100-kilometer", "consumption"},
// {"mile-per-gallon", "consumption"},
+ // {"knot", "speed"},
+ // {"beaufort", "speed"},
{"cubic-meter-per-meter", "consumption"},
{"meter-per-cubic-meter", "consumption"},
{"kilogram-meter-per-square-meter-square-second", "pressure"},
@@ -78,7 +80,7 @@ void UnitsDataTest::testGetAllConversionRates() {
cri->sourceUnit.data(), cri->baseUnit.data(), cri->factor.data(), cri->offset.data());
assertTrue("sourceUnit", cri->sourceUnit.length() > 0);
assertTrue("baseUnit", cri->baseUnit.length() > 0);
- assertTrue("factor", cri->factor.length() > 0);
+ assertTrue("factor || special", cri->factor.length() > 0 || cri->specialMappingName.length() > 0);
}
}
@@ -132,8 +134,8 @@ void UnitsDataTest::testGetPreferencesFor() {
};
IcuTestErrorCode status(*this, "testGetPreferencesFor");
UnitPreferencesOpenedUp preferences(status);
- auto *metadata = preferences.getInternalMetadata();
- auto *unitPrefs = preferences.getInternalUnitPrefs();
+ const auto* metadata = preferences.getInternalMetadata();
+ const auto* unitPrefs = preferences.getInternalUnitPrefs();
assertTrue(UnicodeString("Metadata count: ") + metadata->length() + " > 200",
metadata->length() > 200);
assertTrue(UnicodeString("Preferences count: ") + unitPrefs->length() + " > 250",
diff --git a/icu4c/source/test/intltest/units_test.cpp b/icu4c/source/test/intltest/units_test.cpp
index e321c6f0c..c1dbf5579 100644
--- a/icu4c/source/test/intltest/units_test.cpp
+++ b/icu4c/source/test/intltest/units_test.cpp
@@ -145,6 +145,9 @@ void UnitsTest::testExtractConvertibility() {
{"percent", "portion", CONVERTIBLE}, //
{"ofhg", "kilogram-per-square-meter-square-second", CONVERTIBLE}, //
{"second-per-meter", "meter-per-second", RECIPROCAL}, //
+ {"mile-per-hour", "meter-per-second", CONVERTIBLE}, //
+ {"knot", "meter-per-second", CONVERTIBLE}, //
+ {"beaufort", "meter-per-second", CONVERTIBLE}, //
};
for (const auto &testCase : testCases) {
@@ -299,6 +302,19 @@ void UnitsTest::testConverter() {
{"ton", "pound", 1.0, 2000},
{"stone", "pound", 1.0, 14},
{"stone", "kilogram", 1.0, 6.35029},
+ // Speed
+ {"mile-per-hour", "meter-per-second", 1.0, 0.44704},
+ {"knot", "meter-per-second", 1.0, 0.514444},
+ {"beaufort", "meter-per-second", 1.0, 0.95},
+ {"beaufort", "meter-per-second", 4.0, 6.75},
+ {"beaufort", "meter-per-second", 7.0, 15.55},
+ {"beaufort", "meter-per-second", 10.0, 26.5},
+ {"beaufort", "meter-per-second", 13.0, 39.15},
+ {"beaufort", "mile-per-hour", 1.0, 2.12509},
+ {"beaufort", "mile-per-hour", 4.0, 15.099319971367215},
+ {"beaufort", "mile-per-hour", 7.0, 34.784359341445956},
+ {"beaufort", "mile-per-hour", 10.0, 59.2788},
+ {"beaufort", "mile-per-hour", 13.0, 87.5761},
// Temperature
{"celsius", "fahrenheit", 0.0, 32.0},
{"celsius", "fahrenheit", 10.0, 50.0},
@@ -455,7 +471,7 @@ void unitsTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount, U
return;
}
UnicodeString uExpected = UnicodeString::fromUTF8(utf8Expected);
- double expected = unum_parseDouble(nf, uExpected.getBuffer(), uExpected.length(), 0, status);
+ double expected = unum_parseDouble(nf, uExpected.getBuffer(), uExpected.length(), nullptr, status);
unum_close(nf);
if (status.errIfFailureAndReset("unum_parseDouble(\"%s\") failed", utf8Expected)) {
return;
@@ -508,7 +524,10 @@ void unitsTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount, U
double inverted = converter.convertInverse(got);
msg.clear();
msg.append("Converting back to ", status).append(x, status).append(" from ", status).append(y, status);
- unitsTest->assertEqualsNear(msg.data(), 1000, inverted, 0.0001);
+ if (strncmp(x.data(), "beaufort", 8)
+ && log_knownIssue("CLDR-17454", "unitTest.txt for beaufort doesn't scale correctly") ) {
+ unitsTest->assertEqualsNear(msg.data(), 1000, inverted, 0.0001);
+ }
}
/**
diff --git a/icu4c/source/test/intltest/usettest.cpp b/icu4c/source/test/intltest/usettest.cpp
index b7bf21e43..91bf0392b 100644
--- a/icu4c/source/test/intltest/usettest.cpp
+++ b/icu4c/source/test/intltest/usettest.cpp
@@ -1816,9 +1816,9 @@ void UnicodeSetTest::TestSurrogate() {
"[abc\\uD800\\uDC00]",
// "[abc\uD800\uDC00]", // Can't do this on C -- only Java
"[abc\\U00010000]",
- 0
+ nullptr
};
- for (int i=0; DATA[i] != 0; ++i) {
+ for (int i = 0; DATA[i] != nullptr; ++i) {
UErrorCode ec = U_ZERO_ERROR;
logln((UnicodeString)"Test pattern " + i + " :" + UnicodeString(DATA[i], -1, US_INV));
UnicodeString str = UnicodeString(DATA[i], -1, US_INV);
diff --git a/icu4c/source/test/intltest/ustrtest.cpp b/icu4c/source/test/intltest/ustrtest.cpp
index 26c51b9c2..57c0a7fdc 100644
--- a/icu4c/source/test/intltest/ustrtest.cpp
+++ b/icu4c/source/test/intltest/ustrtest.cpp
@@ -1057,9 +1057,9 @@ UnicodeStringTest::TestMiscellaneous()
test1.append((char16_t)7); // must not be able to modify the string here
test1.setCharAt(3, 7);
test1.reverse();
- if( test1.length()!=0 ||
- test1.charAt(0)!=0xffff || test1.charAt(3)!=0xffff ||
- test1.getBuffer(10)!=0 || test1.getBuffer()!=0
+ if (test1.length() != 0 ||
+ test1.charAt(0) != 0xffff || test1.charAt(3) != 0xffff ||
+ test1.getBuffer(10) != nullptr || test1.getBuffer() != nullptr
) {
errln("UnicodeString::getBuffer(minCapacity) allows read or write access to the UnicodeString");
}
@@ -1190,7 +1190,7 @@ UnicodeStringTest::TestStackAllocation()
char16_t testString[] ={
0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x63, 0x72, 0x61, 0x7a, 0x79, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0 };
char16_t guardWord = 0x4DED;
- UnicodeString* test = 0;
+ UnicodeString* test = nullptr;
test = new UnicodeString(testString);
if (*test != "This is a crazy test.")
@@ -1466,7 +1466,7 @@ UnicodeStringTest::TestBogus() {
if (test1.hashCode() != test2.hashCode() || test1.hashCode() == test3.hashCode()) {
errln("hashCode() failed");
}
- if(test3.getBuffer()!=0 || test3.getBuffer(20)!=0 || test3.getTerminatedBuffer()!=0) {
+ if (test3.getBuffer() != nullptr || test3.getBuffer(20) != nullptr || test3.getTerminatedBuffer() != nullptr) {
errln("bogus.getBuffer()!=0");
}
if (test1.indexOf(test3) != -1) {
@@ -1485,25 +1485,25 @@ UnicodeStringTest::TestBogus() {
// verify that non-assignment modifications fail and do not revive a bogus string
test3.setToBogus();
test3.append((char16_t)0x61);
- if(!test3.isBogus() || test3.getBuffer()!=0) {
+ if (!test3.isBogus() || test3.getBuffer() != nullptr) {
errln("bogus.append('a') worked but must not");
}
test3.setToBogus();
test3.findAndReplace(UnicodeString((char16_t)0x61), test2);
- if(!test3.isBogus() || test3.getBuffer()!=0) {
+ if (!test3.isBogus() || test3.getBuffer() != nullptr) {
errln("bogus.findAndReplace() worked but must not");
}
test3.setToBogus();
test3.trim();
- if(!test3.isBogus() || test3.getBuffer()!=0) {
+ if (!test3.isBogus() || test3.getBuffer() != nullptr) {
errln("bogus.trim() revived bogus but must not");
}
test3.setToBogus();
test3.remove(1);
- if(!test3.isBogus() || test3.getBuffer()!=0) {
+ if (!test3.isBogus() || test3.getBuffer() != nullptr) {
errln("bogus.remove(1) revived bogus but must not");
}
@@ -1584,12 +1584,12 @@ UnicodeStringTest::TestBogus() {
}
test3.setToBogus();
- if(test3.remove().isBogus() || test3.getBuffer()==0 || !test3.isEmpty()) {
+ if (test3.remove().isBogus() || test3.getBuffer() == nullptr || !test3.isEmpty()) {
errln("bogus.remove() failed");
}
test3.setToBogus();
- if(test3.remove(0, INT32_MAX).isBogus() || test3.getBuffer()==0 || !test3.isEmpty()) {
+ if (test3.remove(0, INT32_MAX).isBogus() || test3.getBuffer() == nullptr || !test3.isEmpty()) {
errln("bogus.remove(0, INT32_MAX) failed");
}
@@ -1611,7 +1611,7 @@ UnicodeStringTest::TestBogus() {
}
test3.setToBogus();
- if(!test3.isBogus() || test3.getBuffer()!=0) {
+ if (!test3.isBogus() || test3.getBuffer() != nullptr) {
errln("setToBogus() failed to make a string bogus");
}
diff --git a/icu4c/source/test/intltest/utxttest.cpp b/icu4c/source/test/intltest/utxttest.cpp
index 21ea2c298..fb8c9c32d 100644
--- a/icu4c/source/test/intltest/utxttest.cpp
+++ b/icu4c/source/test/intltest/utxttest.cpp
@@ -446,11 +446,10 @@ void UTextTest::TestCopyMove(const UnicodeString &us, UText *ut, UBool move,
// Compare the results of the two parallel tests
int32_t usi = 0; // UnicodeString position, utf-16 index.
int64_t uti = 0; // UText position, native index.
- int32_t cpi; // char32 position (code point index)
UChar32 usc; // code point from Unicode String
UChar32 utc; // code point from UText
utext_setNativeIndex(targetUT, 0);
- for (cpi=0; ; cpi++) {
+ for (;;) {
usc = targetUS.char32At(usi);
utc = utext_next32(targetUT);
if (utc < 0) {
@@ -522,12 +521,11 @@ void UTextTest::TestReplace(
//
int32_t usi = 0; // UnicodeString position, utf-16 index.
int64_t uti = 0; // UText position, native index.
- int32_t cpi; // char32 position (code point index)
UChar32 usc; // code point from Unicode String
UChar32 utc; // code point from UText
int64_t expectedNativeLength = 0;
utext_setNativeIndex(targetUT, 0);
- for (cpi=0; ; cpi++) {
+ for (;;) {
usc = targetUS.char32At(usi);
utc = utext_next32(targetUT);
if (utc < 0) {
diff --git a/icu4c/source/test/iotest/iotest.vcxproj b/icu4c/source/test/iotest/iotest.vcxproj
index 7ed7342ae..fc52b1b42 100644
--- a/icu4c/source/test/iotest/iotest.vcxproj
+++ b/icu4c/source/test/iotest/iotest.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
<PrecompiledHeaderOutputFile>$(OutDir)\iotest.pch</PrecompiledHeaderOutputFile>
@@ -72,7 +71,6 @@
<ClCompile Include="filetst.c" />
<ClCompile Include="iotest.cpp" />
<ClCompile Include="stream.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="strtst.c" />
<ClCompile Include="trnstst.c" />
diff --git a/icu4c/source/test/letest/FontObject.cpp b/icu4c/source/test/letest/FontObject.cpp
index 54dabf856..7abb3d0ec 100644
--- a/icu4c/source/test/letest/FontObject.cpp
+++ b/icu4c/source/test/letest/FontObject.cpp
@@ -9,14 +9,16 @@
#include <stdio.h>
-#include "LETypes.h"
+#include "layout/LETypes.h"
#include "FontObject.h"
-#include "LESwaps.h"
+#include "layout/LESwaps.h"
+
+using icu::LESwaps;
FontObject::FontObject(char *fileName)
: directory(nullptr), numTables(0), searchRange(0),entrySelector(0),
cmapTable(nullptr), cmSegCount(0), cmSearchRange(0), cmEntrySelector(0),
- cmEndCodes(nullptr), cmStartCodes(nullptr), cmIdDelta(0), cmIdRangeOffset(0),
+ cmEndCodes(nullptr), cmStartCodes(nullptr), cmIdDelta(nullptr), cmIdRangeOffset(nullptr),
headTable(nullptr), hmtxTable(nullptr), numGlyphs(0), numOfLongHorMetrics(0), file(nullptr)
{
file = fopen(fileName, "rb");
@@ -134,7 +136,7 @@ void FontObject::initUnicodeCMAP()
{
CMAPEncodingSubtable *encodingSubtable = findCMAP(3, 1);
- if (encodingSubtable == 0 ||
+ if (encodingSubtable == nullptr ||
SWAPW(encodingSubtable->format) != 4) {
printf("Can't find unicode 'cmap'");
return;
diff --git a/icu4c/source/test/letest/FontObject.h b/icu4c/source/test/letest/FontObject.h
index e8c9c9d0f..4a1569cce 100644
--- a/icu4c/source/test/letest/FontObject.h
+++ b/icu4c/source/test/letest/FontObject.h
@@ -13,7 +13,7 @@
#include <stdio.h>
-#include "LETypes.h"
+#include "layout/LETypes.h"
#ifndef ANY_NUMBER
diff --git a/icu4c/source/test/letest/PortableFontInstance.cpp b/icu4c/source/test/letest/PortableFontInstance.cpp
index e5faad723..76c7504ab 100644
--- a/icu4c/source/test/letest/PortableFontInstance.cpp
+++ b/icu4c/source/test/letest/PortableFontInstance.cpp
@@ -187,7 +187,6 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
error_exit:
fclose(fFile);
fFile = nullptr;
- return;
}
PortableFontInstance::~PortableFontInstance()
diff --git a/icu4c/source/test/letest/SimpleFontInstance.cpp b/icu4c/source/test/letest/SimpleFontInstance.cpp
index e707e5809..80bdf3d70 100644
--- a/icu4c/source/test/letest/SimpleFontInstance.cpp
+++ b/icu4c/source/test/letest/SimpleFontInstance.cpp
@@ -20,7 +20,7 @@
#include "layout/LEFontInstance.h"
#ifndef USING_ICULEHB
-#include "CanonShaping.h"
+#include "layout/CanonShaping.h"
#endif
#include "SimpleFontInstance.h"
@@ -34,8 +34,6 @@ SimpleFontInstance::SimpleFontInstance(float pointSize, LEErrorCode &status)
fAscent = (le_int32) yUnitsToPoints(2000.0);
fDescent = (le_int32) yUnitsToPoints(600.0);
-
- return;
}
SimpleFontInstance::~SimpleFontInstance()
diff --git a/icu4c/source/test/letest/cletest.vcxproj b/icu4c/source/test/letest/cletest.vcxproj
index 804c6a3cf..86a6e0326 100644
--- a/icu4c/source/test/letest/cletest.vcxproj
+++ b/icu4c/source/test/letest/cletest.vcxproj
@@ -89,6 +89,8 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <LanguageStandard>stdcpp17</LanguageStandard>
+ <LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<Link>
<AdditionalDependencies>..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;..\..\..\lib\icutestd.lib;..\..\..\lib\icutud.lib;..\..\..\lib\iculed.lib;..\..\..\lib\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>
diff --git a/icu4c/source/test/letest/gendata.vcxproj b/icu4c/source/test/letest/gendata.vcxproj
index f29232bf6..fcef1792d 100644
--- a/icu4c/source/test/letest/gendata.vcxproj
+++ b/icu4c/source/test/letest/gendata.vcxproj
@@ -86,6 +86,8 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>Default</CompileAs>
+ <LanguageStandard>stdcpp17</LanguageStandard>
+ <LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
diff --git a/icu4c/source/test/letest/letest.cpp b/icu4c/source/test/letest/letest.cpp
index 5643c01b3..2d50a45a3 100644
--- a/icu4c/source/test/letest/letest.cpp
+++ b/icu4c/source/test/letest/letest.cpp
@@ -46,13 +46,6 @@ U_NAMESPACE_USE
U_CDECL_BEGIN
-static void U_CALLCONV ScriptTest()
-{
- if ((int)scriptCodeCount != (int)USCRIPT_CODE_LIMIT) {
- log_err("ScriptCodes::scriptCodeCount = %d, but UScriptCode::USCRIPT_CODE_LIMIT = %d\n", scriptCodeCount, USCRIPT_CODE_LIMIT);
- }
-}
-
static void U_CALLCONV ParamTest()
{
LEErrorCode status = LE_NO_ERROR;
@@ -331,7 +324,8 @@ le_bool compareResults(const char *testID, TestResult *expected, TestResult *act
{
/* NOTE: we'll stop on the first failure 'cause once there's one error, it may cascade... */
if (actual->glyphCount != expected->glyphCount) {
- log_err("Test %s: incorrect glyph count: expected %d, got %d\n",
+ log_knownIssue("ICU-22628",
+ "Test %s: incorrect glyph count: expected %d, got %d\n",
testID, expected->glyphCount, actual->glyphCount);
return false;
}
@@ -968,7 +962,6 @@ U_CDECL_END
static void addAllTests(TestNode **root)
{
- addTest(root, &ScriptTest, "api/ScriptTest");
addTest(root, &ParamTest, "api/ParameterTest");
addTest(root, &FactoryTest, "api/FactoryTest");
addTest(root, &AccessTest, "layout/AccessTest");
diff --git a/icu4c/source/test/letest/letest.vcxproj b/icu4c/source/test/letest/letest.vcxproj
index 5936d5eed..44be57e1c 100644
--- a/icu4c/source/test/letest/letest.vcxproj
+++ b/icu4c/source/test/letest/letest.vcxproj
@@ -86,6 +86,8 @@
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<CompileAs>Default</CompileAs>
+ <LanguageStandard>stdcpp17</LanguageStandard>
+ <LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
diff --git a/icu4c/source/test/letest/testdata.cpp b/icu4c/source/test/letest/testdata.cpp
index af58dfefd..ea8ff5f12 100644
--- a/icu4c/source/test/letest/testdata.cpp
+++ b/icu4c/source/test/letest/testdata.cpp
@@ -16,8 +16,8 @@
* generated by: gendata.cpp
*/
-#include "LETypes.h"
-#include "LEScripts.h"
+#include "layout/LETypes.h"
+#include "layout/LEScripts.h"
#include "letest.h"
const char *fontVersionString0 = "Version 0.99";
diff --git a/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h b/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h
index 397064d24..d41dcc55e 100644
--- a/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h
+++ b/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h
@@ -110,7 +110,7 @@ public:
void printUnicodeString(const UnicodeString &s) {
char charBuf[1000];
- s.extract(0, s.length(), charBuf, sizeof(charBuf)-1, 0);
+ s.extract(0, s.length(), charBuf, sizeof(charBuf) - 1, nullptr);
charBuf[sizeof(charBuf)-1] = 0;
printf("%s", charBuf);
}
@@ -129,7 +129,7 @@ public:
// Print the given string to stdout (for debugging purposes)
void uprintf(const UnicodeString &str) {
- char *buf = 0;
+ char* buf = nullptr;
int32_t len = str.length();
int32_t bufLen = len + 16;
int32_t actualLen;
@@ -215,7 +215,7 @@ public:
// Print the given string to stdout (for debugging purposes)
void uprintf(const UnicodeString &str) {
- char *buf = 0;
+ char* buf = nullptr;
int32_t len = str.length();
int32_t bufLen = len + 16;
int32_t actualLen;
@@ -665,7 +665,7 @@ public:
// Print the given string to stdout using the UTF-8 converter (for debugging purposes only)
void uprintf(const UnicodeString &str) {
char stackBuffer[100];
- char *buf = 0;
+ char* buf = nullptr;
int32_t bufLen = str.extract(0, 0x7fffffff, stackBuffer, sizeof(stackBuffer), "UTF-8");
if(bufLen < sizeof(stackBuffer)) {
diff --git a/icu4c/source/test/perf/collationperf/collperf.cpp b/icu4c/source/test/perf/collationperf/collperf.cpp
index 530ae4343..5d8374519 100644
--- a/icu4c/source/test/perf/collationperf/collperf.cpp
+++ b/icu4c/source/test/perf/collationperf/collperf.cpp
@@ -89,7 +89,7 @@ inline int CompareStringW(DWORD, DWORD, char16_t *, int, char16_t *, int) {retur
#include <sys/time.h>
unsigned long timeGetTime() {
struct timeval t;
- gettimeofday(&t, 0);
+ gettimeofday(&t, nullptr);
unsigned long val = t.tv_sec * 1000; // Let it overflow. Who cares.
val += t.tv_usec / 1000;
return val;
@@ -106,10 +106,10 @@ const int SORT_DEFAULT = 0;
// Command line option variables
// These global variables are set according to the options specified
// on the command line by the user.
-char * opt_fName = 0;
+char* opt_fName = nullptr;
const char * opt_locale = "en_US";
int opt_langid = 0; // Defaults to value corresponding to opt_locale.
-char * opt_rules = 0;
+char* opt_rules = nullptr;
UBool opt_help = false;
int opt_loopCount = 1;
int opt_iLoopCount = 1;
@@ -177,7 +177,7 @@ OptSpec opts[] = {
{"-dump", OptSpec::FLAG, &opt_dump},
{"-help", OptSpec::FLAG, &opt_help},
{"-?", OptSpec::FLAG, &opt_help},
- {0, OptSpec::FLAG, 0}
+ {nullptr, OptSpec::FLAG, nullptr}
};
@@ -229,7 +229,7 @@ UBool ProcessOptions(int argc, const char **argv, OptSpec opts[])
for (argNum=1; argNum<argc; argNum++) {
pArgName = argv[argNum];
- for (pOpt = opts; pOpt->name != 0; pOpt++) {
+ for (pOpt = opts; pOpt->name != nullptr; pOpt++) {
if (strcmp(pOpt->name, pArgName) == 0) {
switch (pOpt->type) {
case OptSpec::FLAG:
@@ -260,7 +260,7 @@ UBool ProcessOptions(int argc, const char **argv, OptSpec opts[])
break;
}
}
- if (pOpt->name == 0)
+ if (pOpt->name == nullptr)
{
fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
return false;
@@ -1174,10 +1174,10 @@ void UnixConvert() {
for (line=0; line < gNumFileLines; line++) {
int sizeNeeded = ucnv_fromUChars(cvrtr,
- 0, // ptr to target buffer.
- 0, // length of target buffer.
+ nullptr, // ptr to target buffer.
+ 0, // length of target buffer.
gFileLines[line].name,
- -1, // source is null terminated
+ -1, // source is null terminated
&status);
if (status != U_BUFFER_OVERFLOW_ERROR && status != U_ZERO_ERROR) {
//fprintf(stderr, "Conversion from Unicode, something is wrong.\n");
@@ -1375,7 +1375,7 @@ char16_t UCharFile::get() {
UCollator *openRulesCollator() {
UCharFile f(opt_rules);
if (f.error()) {
- return 0;
+ return nullptr;
}
int bufLen = 10000;
@@ -1389,7 +1389,7 @@ UCollator *openRulesCollator() {
break;
}
if (f.error()) {
- return 0;
+ return nullptr;
}
i++;
if (i >= bufLen) {
@@ -1398,7 +1398,7 @@ UCollator *openRulesCollator() {
buf = (char16_t *)realloc(buf, bufLen);
if (buf == nullptr) {
free(tmp);
- return 0;
+ return nullptr;
}
}
}
@@ -1409,7 +1409,7 @@ UCollator *openRulesCollator() {
UCOL_DEFAULT_STRENGTH, nullptr, &status);
if (U_FAILURE(status)) {
fprintf(stderr, "ICU ucol_openRules() open failed.: %d\n", status);
- return 0;
+ return nullptr;
}
free(buf);
return coll;
@@ -1426,7 +1426,7 @@ UCollator *openRulesCollator() {
//
//----------------------------------------------------------------------------------------
int main(int argc, const char** argv) {
- if (ProcessOptions(argc, argv, opts) != true || opt_help || opt_fName == 0) {
+ if (ProcessOptions(argc, argv, opts) != true || opt_help || opt_fName == nullptr) {
printf(gUsageString);
exit (1);
}
@@ -1440,9 +1440,9 @@ int main(int argc, const char** argv) {
//
UErrorCode status = U_ZERO_ERROR;
- if (opt_rules != 0) {
+ if (opt_rules != nullptr) {
gCol = openRulesCollator();
- if (gCol == 0) {return -1;}
+ if (gCol == nullptr) { return -1; }
}
else {
gCol = ucol_open(opt_locale, &status);
@@ -1527,7 +1527,7 @@ int main(int argc, const char** argv) {
// Set the UNIX locale
//
if (opt_unix) {
- if (setlocale(LC_ALL, opt_locale) == 0) {
+ if (setlocale(LC_ALL, opt_locale) == nullptr) {
fprintf(stderr, "setlocale(LC_ALL, %s) failed.\n", opt_locale);
exit(-1);
}
diff --git a/icu4c/source/test/perf/collperf2/collperf2.vcxproj b/icu4c/source/test/perf/collperf2/collperf2.vcxproj
index 42422e26e..48a246cae 100644
--- a/icu4c/source/test/perf/collperf2/collperf2.vcxproj
+++ b/icu4c/source/test/perf/collperf2/collperf2.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
diff --git a/icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp b/icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
index 61178fa2b..06e791e9f 100644
--- a/icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
+++ b/icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
@@ -281,7 +281,7 @@ public:
}
protected:
virtual UNumberFormat* initFmt() {
- return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus);
+ return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, nullptr, &setupStatus);
}
virtual const char *getClassName() {
return "NumTest";
@@ -290,7 +290,7 @@ public:
NumTest(const char *pat, const char *num, double expect, const char *FILE, int LINE)
: HowExpensiveTest("(n/a)",FILE, LINE),
fExpect(expect),
- fFmt(0),
+ fFmt(nullptr),
fPat(pat, -1, US_INV),
fString(num,-1,US_INV),
fStr(fString.getTerminatedBuffer()),
@@ -409,7 +409,7 @@ public:
}
protected:
virtual UNumberFormat* initFmt() {
- return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus);
+ return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, nullptr, &setupStatus);
}
virtual const char *getClassName() {
return "NumFmtTest";
@@ -418,7 +418,7 @@ public:
NumFmtTest(const char *pat, const char *num, double expect, const char *FILE, int LINE)
: HowExpensiveTest("(n/a)",FILE, LINE),
fExpect(expect),
- fFmt(0),
+ fFmt(nullptr),
fPat(pat, -1, US_INV),
fString(num,-1,US_INV),
fStr(fString.getTerminatedBuffer()),
@@ -496,29 +496,29 @@ protected:
virtual UNumberFormat* initFmt() {
switch(fMode) {
case kPattern:
- return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus);
+ return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, nullptr, &setupStatus);
case kApplyPattern:
{
- UNumberFormat *fmt = unum_open(UNUM_DECIMAL, nullptr, -1, TEST_LOCALE, 0, &setupStatus);
+ UNumberFormat *fmt = unum_open(UNUM_DECIMAL, nullptr, -1, TEST_LOCALE, nullptr, &setupStatus);
unum_applyPattern(fmt, false, fPat.getTerminatedBuffer(), -1, nullptr, &setupStatus);
return fmt;
}
case kGroupOff:
{
- UNumberFormat *fmt = unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus);
+ UNumberFormat *fmt = unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, nullptr, &setupStatus);
unum_setAttribute(fmt, UNUM_GROUPING_USED, UNUM_NO);
return fmt;
}
case kApplyGroupOff:
{
- UNumberFormat *fmt = unum_open(UNUM_DECIMAL, nullptr, -1, TEST_LOCALE, 0, &setupStatus);
+ UNumberFormat *fmt = unum_open(UNUM_DECIMAL, nullptr, -1, TEST_LOCALE, nullptr, &setupStatus);
unum_applyPattern(fmt, false, fPat.getTerminatedBuffer(), -1, nullptr, &setupStatus);
unum_setAttribute(fmt, UNUM_GROUPING_USED, UNUM_NO);
return fmt;
}
default:
case kDefault:
- return unum_open(UNUM_DEFAULT, nullptr, -1, TEST_LOCALE, 0, &setupStatus);
+ return unum_open(UNUM_DEFAULT, nullptr, -1, TEST_LOCALE, nullptr, &setupStatus);
}
}
virtual const char *getClassName() {
@@ -542,7 +542,7 @@ public:
: HowExpensiveTest("(n/a)",FILE, LINE),
fMode(mode),
fExpect(expect),
- fFmt(0),
+ fFmt(nullptr),
fPat(pat, -1, US_INV),
fString(num,-1,US_INV),
fStr(fString.getTerminatedBuffer()),
@@ -633,7 +633,7 @@ public:
NumFmtStringPieceTest(const char *pat, const char *num, const StringPiece& expect, const char *FILE, int LINE)
: HowExpensiveTest("(n/a)",FILE, LINE),
fExpect(expect),
- fFmt(0),
+ fFmt(nullptr),
fPat(pat, -1, US_INV),
fString(num,-1,US_INV),
fStr(fString.getTerminatedBuffer()),
diff --git a/icu4c/source/test/perf/leperf/FontObject.cpp b/icu4c/source/test/perf/leperf/FontObject.cpp
index 0b5d0a11c..8cbc086fc 100644
--- a/icu4c/source/test/perf/leperf/FontObject.cpp
+++ b/icu4c/source/test/perf/leperf/FontObject.cpp
@@ -13,14 +13,16 @@
#include <stdio.h>
-#include "LETypes.h"
+#include "layout/LETypes.h"
#include "FontObject.h"
-#include "LESwaps.h"
+#include "layout/LESwaps.h"
+
+using icu::LESwaps;
FontObject::FontObject(char *fileName)
: directory(nullptr), numTables(0), searchRange(0),entrySelector(0),
cmapTable(nullptr), cmSegCount(0), cmSearchRange(0), cmEntrySelector(0),
- cmEndCodes(nullptr), cmStartCodes(nullptr), cmIdDelta(0), cmIdRangeOffset(0),
+ cmEndCodes(nullptr), cmStartCodes(nullptr), cmIdDelta(nullptr), cmIdRangeOffset(nullptr),
headTable(nullptr), hmtxTable(nullptr), numGlyphs(0), numOfLongHorMetrics(0), file(nullptr)
{
file = fopen(fileName, "rb");
@@ -138,7 +140,7 @@ void FontObject::initUnicodeCMAP()
{
CMAPEncodingSubtable *encodingSubtable = findCMAP(3, 1);
- if (encodingSubtable == 0 ||
+ if (encodingSubtable == nullptr ||
SWAPW(encodingSubtable->format) != 4) {
printf("Can't find unicode 'cmap'");
return;
diff --git a/icu4c/source/test/perf/leperf/FontObject.h b/icu4c/source/test/perf/leperf/FontObject.h
index 95a438594..b58f5c08d 100644
--- a/icu4c/source/test/perf/leperf/FontObject.h
+++ b/icu4c/source/test/perf/leperf/FontObject.h
@@ -17,7 +17,7 @@
#include <stdio.h>
-#include "LETypes.h"
+#include "layout/LETypes.h"
#ifndef ANY_NUMBER
diff --git a/icu4c/source/test/perf/leperf/Makefile.in b/icu4c/source/test/perf/leperf/Makefile.in
index 0538e20ee..27b0fb315 100644
--- a/icu4c/source/test/perf/leperf/Makefile.in
+++ b/icu4c/source/test/perf/leperf/Makefile.in
@@ -24,7 +24,7 @@ CLEANFILES = *~ $(DEPS)
## Target information
TARGET = leperf
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/layout/.. -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io -I$(top_srcdir)/i18n
+CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io -I$(top_srcdir)/i18n
LIBS = $(LIBCTESTFW) $(LIBICUIO) $(LIBICULE) $(LIBICUUC) $(LIBICUI18N) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
OBJECTS = $(TARGET).o
diff --git a/icu4c/source/test/perf/leperf/PortableFontInstance.cpp b/icu4c/source/test/perf/leperf/PortableFontInstance.cpp
index b8fdd8c5a..3da53b7c3 100644
--- a/icu4c/source/test/perf/leperf/PortableFontInstance.cpp
+++ b/icu4c/source/test/perf/leperf/PortableFontInstance.cpp
@@ -190,7 +190,6 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
error_exit:
fclose(fFile);
fFile = nullptr;
- return;
}
PortableFontInstance::~PortableFontInstance()
diff --git a/icu4c/source/test/perf/leperf/SimpleFontInstance.cpp b/icu4c/source/test/perf/leperf/SimpleFontInstance.cpp
index a562f488b..36ca2cc79 100644
--- a/icu4c/source/test/perf/leperf/SimpleFontInstance.cpp
+++ b/icu4c/source/test/perf/leperf/SimpleFontInstance.cpp
@@ -35,8 +35,6 @@ SimpleFontInstance::SimpleFontInstance(float pointSize, LEErrorCode &status)
fAscent = (le_int32) yUnitsToPoints(2000.0);
fDescent = (le_int32) yUnitsToPoints(600.0);
-
- return;
}
SimpleFontInstance::~SimpleFontInstance()
diff --git a/icu4c/source/test/perf/leperf/cfonts.cpp b/icu4c/source/test/perf/leperf/cfonts.cpp
index 62f7aeea9..09328e893 100644
--- a/icu4c/source/test/perf/leperf/cfonts.cpp
+++ b/icu4c/source/test/perf/leperf/cfonts.cpp
@@ -7,8 +7,8 @@
*
*/
-#include "LETypes.h"
-#include "loengine.h"
+#include "layout/LETypes.h"
+#include "layout/loengine.h"
#include "PortableFontInstance.h"
#include "SimpleFontInstance.h"
diff --git a/icu4c/source/test/perf/leperf/letrperf.cpp b/icu4c/source/test/perf/leperf/letrperf.cpp
deleted file mode 100644
index baed01169..000000000
--- a/icu4c/source/test/perf/leperf/letrperf.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-/**************************************************************************
-*
-* © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-***************************************************************************
-***************************************************************************
-*
-* Copyright (C) 2013, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-************************************************************************/
-/**
- * Usage:
- * build against a configured (but not built) ICU.
- * example: cc -O2 test_LETableReference.cpp -I. -I/xsrl/II/include -I/xsrl/E/icu/source/tools/ctestfw
- */
-#include "unicode/utimer.h"
-#include "LETableReference.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-#define ITEM_COUNT 10000
-
-long *items = 0;
-
-struct OneObject {
- long items[ITEM_COUNT];
-};
-
-struct Long {
- long v;
-};
-
-struct CompObject {
- Long items[ITEM_COUNT];
-};
-
-
-void time_null(void * /*ref*/) {
- for(int i=0;i<ITEM_COUNT;i++) {
- if(items[i]==2) {
- return;
- }
- }
- puts("error");
- abort();
-}
-
-void time_obj(void * ref) {
- OneObject &obj = *((OneObject*)ref);
- for(int i=0;i<ITEM_COUNT;i++) {
- if(obj.items[i]==2) {
- return;
- }
- }
- puts("error");
- abort();
-}
-void time_obj2(void * ref) {
- long *items2 = ((OneObject*)ref)->items;
- for(int i=0;i<ITEM_COUNT;i++) {
- if(items2[i]==2) {
- return;
- }
- }
- puts("error");
- abort();
-}
-
-void time_letr1(void * ref) {
- OneObject &obj = *((OneObject*)ref);
- LETableReference data((const le_uint8*)ref, sizeof(OneObject));
- LEErrorCode success = LE_NO_ERROR;
-
- LEReferenceTo<OneObject> stuff(data, success);
- if(LE_FAILURE(success)) {
- puts("failure");
- abort();
- }
- long *items2 = ((OneObject*)ref)->items;
- for(int i=0;i<ITEM_COUNT;i++) {
- if(items[i]==2) {
- return;
- }
- }
- puts("error");
- abort();
-}
-
-
-void time_letr2(void * ref) {
- OneObject &obj = *((OneObject*)ref);
- LETableReference data((const le_uint8*)ref, sizeof(OneObject));
- LEErrorCode success = LE_NO_ERROR;
-
- long *items2 = ((OneObject*)ref)->items;
- for(int i=0;i<ITEM_COUNT;i++) {
- LEReferenceTo<OneObject> stuff(data, success);
- if(LE_FAILURE(success)) {
- puts("failure");
- abort();
- }
- if(items[i]==2) {
- return;
- }
- }
- puts("error");
- abort();
-}
-
-static void time_letr3(void * ref) {
- LETableReference data((const le_uint8*)ref, sizeof(OneObject));
- LEErrorCode success = LE_NO_ERROR;
- LEReferenceTo<CompObject> comp(data, success);
- LEReferenceToArrayOf<Long> longs(comp, success, (size_t)0, ITEM_COUNT);
- if(LE_FAILURE(success)) {
- puts("failure");
- abort();
- }
-
- for(int i=0;i<ITEM_COUNT;i++) {
- const Long &item = longs.getObject(i, success);
- if(LE_FAILURE(success)) {
- puts("failure");
- abort();
- }
- if(item.v==2) {
- return;
- }
- }
- puts("error");
- abort();
-}
-
-
-int main() {
- double runTime = 2.0;
- printf("Test of LETableReference<> timing. %.1fs per run.\n", runTime);
- items = new long[ITEM_COUNT];
- OneObject *oo = new OneObject();
- CompObject *oo2 = new CompObject();
- for(int i=0;i<ITEM_COUNT-1;i++) {
- items[i] = oo->items[i] = oo2->items[i].v = (i%1024)+3;
- }
- items[ITEM_COUNT-1] = oo->items[ITEM_COUNT-1] = oo2->items[ITEM_COUNT-1].v = 2; // last one
-
- puts("will call once..");
- time_letr3((void*)oo2);
- puts("testing all..");
-
- int32_t loopCount;
- double time_taken;
-
-#define showTime(x,y) printf("%s:\ttesting...\r", #x); fflush(stdout); \
- time_taken = utimer_loopUntilDone(runTime, &loopCount, x, y); \
- printf("%s:\t%.1fs\t#%d\t%.1f/s\n", #x, time_taken, loopCount, loopCount/(double)time_taken);
-
- // clear out cache
- {
- double oldTime = runTime;
- runTime = 0.25;
- showTime(time_null, nullptr);
- showTime(time_null, nullptr);
- showTime(time_null, nullptr);
- showTime(time_null, nullptr);
- runTime = oldTime;
- }
- puts("-- ready to start --");
-
-
- showTime(time_null, nullptr);
- showTime(time_obj, (void*)oo);
- showTime(time_obj2, (void*)oo);
- showTime(time_letr1, (void*)oo2);
- showTime(time_letr2, (void*)oo2);
- showTime(time_letr3, (void*)oo2);
- showTime(time_null, nullptr);
-
- delete [] items;
- delete oo;
- delete oo2;
-}
diff --git a/icu4c/source/test/perf/leperf/xmlreader.h b/icu4c/source/test/perf/leperf/xmlreader.h
index 298d9b819..978b7b402 100644
--- a/icu4c/source/test/perf/leperf/xmlreader.h
+++ b/icu4c/source/test/perf/leperf/xmlreader.h
@@ -10,7 +10,7 @@
#ifndef __XMLREADER_H
#define __XMLREADER_H
-#include "LETypes.h"
+#include "layout/LETypes.h"
#include "letest.h"
typedef void (*TestCaseCallback) (const char *testID,
diff --git a/icu4c/source/test/perf/localecanperf/localecanperf.cpp b/icu4c/source/test/perf/localecanperf/localecanperf.cpp
index 336fb35bd..19fc99d5e 100644
--- a/icu4c/source/test/perf/localecanperf/localecanperf.cpp
+++ b/icu4c/source/test/perf/localecanperf/localecanperf.cpp
@@ -18,11 +18,11 @@
class LocaleCreateCanonical : public UPerfFunction {
public:
LocaleCreateCanonical() {
- testCases.push_back("en");
- testCases.push_back("en-US");
- testCases.push_back("ja-JP");
- testCases.push_back("zh-Hant-CN");
- testCases.push_back("hy-SU");
+ testCases.emplace_back("en");
+ testCases.emplace_back("en-US");
+ testCases.emplace_back("ja-JP");
+ testCases.emplace_back("zh-Hant-CN");
+ testCases.emplace_back("hy-SU");
}
~LocaleCreateCanonical() { }
virtual void call(UErrorCode* /* status */)
diff --git a/icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj b/icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj
index b3146ea03..2d752026b 100644
--- a/icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj
+++ b/icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj
@@ -89,6 +89,8 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
+ <LanguageStandard>stdcpp17</LanguageStandard>
+ <LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
diff --git a/icu4c/source/test/perf/ubrkperf/ubrkperfold.cpp b/icu4c/source/test/perf/ubrkperf/ubrkperfold.cpp
deleted file mode 100644
index 3e5c6f308..000000000
--- a/icu4c/source/test/perf/ubrkperf/ubrkperfold.cpp
+++ /dev/null
@@ -1,776 +0,0 @@
-/***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html
- *
- ***********************************************************************
- ***********************************************************************
- * COPYRIGHT:
- * Copyright (C) 2001-2012 IBM, Inc. All Rights Reserved.
- *
- ***********************************************************************/
-/********************************************************************************
-*
-* File ubrkperf.cpp
-*
-* Modification History:
-* Name Description
-* Vladimir Weinstein First Version, based on collperf
-*
-*********************************************************************************
-*/
-
-//
-// This program tests break iterator performance
-// Currently we test only ICU APIs with the future possibility of testing *nix & win32 APIs
-// (if any)
-// A text file is required as input. It must be in utf-8 or utf-16 format,
-// and include a byte order mark. Either LE or BE format is OK.
-//
-
-const char gUsageString[] =
- "usage: ubrkperf options...\n"
- "-help Display this message.\n"
- "-file file_name utf-16/utf-8 format file.\n"
- "-locale name ICU locale to use. Default is en_US\n"
- "-langid 0x1234 Windows Language ID number. Default to value for -locale option\n"
- " see http://msdn.microsoft.com/library/psdk/winbase/nls_8xo3.htm\n"
- "-win Run test using Windows native services. (currently not working) (ICU is default)\n"
- "-unix Run test using Unix word breaking services. (currently not working) \n"
- "-mac Run test using MacOSX word breaking services.\n"
- "-uselen Use API with string lengths. Default is null-terminated strings\n"
- "-char Use character break iterator\n"
- "-word Use word break iterator\n"
- "-line Use line break iterator\n"
- "-sentence Use sentence break iterator\n"
- "-loop nnnn Loopcount for test. Adjust for reasonable total running time.\n"
- "-iloop n Inner Loop Count. Default = 1. Number of calls to function\n"
- " under test at each call point. For measuring test overhead.\n"
- "-terse Terse numbers-only output. Intended for use by scripts.\n"
- "-dump Display stuff.\n"
- "-capi Use C APIs instead of C++ APIs (currently not working)\n"
- "-next Do the next test\n"
- "-isBound Do the isBound test\n"
- ;
-
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <locale.h>
-#include <errno.h>
-#include <sys/stat.h>
-
-#include <unicode/utypes.h>
-#include <unicode/ucol.h>
-#include <unicode/ucoleitr.h>
-#include <unicode/uloc.h>
-#include <unicode/ustring.h>
-#include <unicode/ures.h>
-#include <unicode/uchar.h>
-#include <unicode/ucnv.h>
-#include <unicode/utf8.h>
-
-#include <unicode/brkiter.h>
-
-
-#if U_PLATFORM_HAS_WIN32_API
-#include <windows.h>
-#else
-//
-// Stubs for Windows API functions when building on UNIXes.
-//
-#include <sys/time.h>
-unsigned long timeGetTime() {
- struct timeval t;
- gettimeofday(&t, 0);
- unsigned long val = t.tv_sec * 1000; // Let it overflow. Who cares.
- val += t.tv_usec / 1000;
- return val;
-};
-#define MAKELCID(a,b) 0
-#endif
-
-
-//
-// Command line option variables
-// These global variables are set according to the options specified
-// on the command line by the user.
-char * opt_fName = 0;
-char * opt_locale = "en_US";
-int opt_langid = 0; // Defaults to value corresponding to opt_locale.
-char * opt_rules = 0;
-UBool opt_help = false;
-int opt_time = 0;
-int opt_loopCount = 0;
-int opt_passesCount= 1;
-UBool opt_terse = false;
-UBool opt_icu = true;
-UBool opt_win = false; // Run with Windows native functions.
-UBool opt_unix = false; // Run with UNIX strcoll, strxfrm functions.
-UBool opt_mac = false; // Run with MacOSX word break services.
-UBool opt_uselen = false;
-UBool opt_dump = false;
-UBool opt_char = false;
-UBool opt_word = false;
-UBool opt_line = false;
-UBool opt_sentence = false;
-UBool opt_capi = false;
-
-UBool opt_next = false;
-UBool opt_isBound = false;
-
-
-
-//
-// Definitions for the command line options
-//
-struct OptSpec {
- const char *name;
- enum {FLAG, NUM, STRING} type;
- void *pVar;
-};
-
-OptSpec opts[] = {
- {"-file", OptSpec::STRING, &opt_fName},
- {"-locale", OptSpec::STRING, &opt_locale},
- {"-langid", OptSpec::NUM, &opt_langid},
- {"-win", OptSpec::FLAG, &opt_win},
- {"-unix", OptSpec::FLAG, &opt_unix},
- {"-mac", OptSpec::FLAG, &opt_mac},
- {"-uselen", OptSpec::FLAG, &opt_uselen},
- {"-loop", OptSpec::NUM, &opt_loopCount},
- {"-time", OptSpec::NUM, &opt_time},
- {"-passes", OptSpec::NUM, &opt_passesCount},
- {"-char", OptSpec::FLAG, &opt_char},
- {"-word", OptSpec::FLAG, &opt_word},
- {"-line", OptSpec::FLAG, &opt_line},
- {"-sentence", OptSpec::FLAG, &opt_sentence},
- {"-terse", OptSpec::FLAG, &opt_terse},
- {"-dump", OptSpec::FLAG, &opt_dump},
- {"-capi", OptSpec::FLAG, &opt_capi},
- {"-next", OptSpec::FLAG, &opt_next},
- {"-isBound", OptSpec::FLAG, &opt_isBound},
- {"-help", OptSpec::FLAG, &opt_help},
- {"-?", OptSpec::FLAG, &opt_help},
- {0, OptSpec::FLAG, 0}
-};
-
-
-//---------------------------------------------------------------------------
-//
-// Global variables pointing to and describing the test file
-//
-//---------------------------------------------------------------------------
-
-//DWORD gWinLCID;
-BreakIterator *brkit = nullptr;
-char16_t *text = nullptr;
-int32_t textSize = 0;
-
-
-
-#if U_PLATFORM_IS_DARWIN_BASED
-#include <ApplicationServices/ApplicationServices.h>
-enum{
- kUCTextBreakAllMask = (kUCTextBreakClusterMask | kUCTextBreakWordMask | kUCTextBreakLineMask)
- };
-UCTextBreakType breakTypes[4] = {kUCTextBreakCharMask, kUCTextBreakClusterMask, kUCTextBreakWordMask, kUCTextBreakLineMask};
-TextBreakLocatorRef breakRef;
-UCTextBreakType macBreakType;
-
-void createMACBrkIt() {
- OSStatus status = noErr;
- LocaleRef lref;
- status = LocaleRefFromLocaleString(opt_locale, &lref);
- status = UCCreateTextBreakLocator(lref, 0, kUCTextBreakAllMask, (TextBreakLocatorRef*)&breakRef);
- if(opt_char == true) {
- macBreakType = kUCTextBreakClusterMask;
- } else if(opt_word == true) {
- macBreakType = kUCTextBreakWordMask;
- } else if(opt_line == true) {
- macBreakType = kUCTextBreakLineMask;
- } else if(opt_sentence == true) {
- // error
- // brkit = BreakIterator::createSentenceInstance(opt_locale, status);
- } else {
- // default is character iterator
- macBreakType = kUCTextBreakClusterMask;
- }
-}
-#endif
-
-void createICUBrkIt() {
- //
- // Set up an ICU break iterator
- //
- UErrorCode status = U_ZERO_ERROR;
- if(opt_char == true) {
- brkit = BreakIterator::createCharacterInstance(opt_locale, status);
- } else if(opt_word == true) {
- brkit = BreakIterator::createWordInstance(opt_locale, status);
- } else if(opt_line == true) {
- brkit = BreakIterator::createLineInstance(opt_locale, status);
- } else if(opt_sentence == true) {
- brkit = BreakIterator::createSentenceInstance(opt_locale, status);
- } else {
- // default is character iterator
- brkit = BreakIterator::createCharacterInstance(opt_locale, status);
- }
- if (status==U_USING_DEFAULT_WARNING && opt_terse==false) {
- fprintf(stderr, "Warning, U_USING_DEFAULT_WARNING for %s\n", opt_locale);
- }
- if (status==U_USING_FALLBACK_WARNING && opt_terse==false) {
- fprintf(stderr, "Warning, U_USING_FALLBACK_ERROR for %s\n", opt_locale);
- }
-
-}
-
-//---------------------------------------------------------------------------
-//
-// ProcessOptions() Function to read the command line options.
-//
-//---------------------------------------------------------------------------
-UBool ProcessOptions(int argc, const char **argv, OptSpec opts[])
-{
- int i;
- int argNum;
- const char *pArgName;
- OptSpec *pOpt;
-
- for (argNum=1; argNum<argc; argNum++) {
- pArgName = argv[argNum];
- for (pOpt = opts; pOpt->name != 0; pOpt++) {
- if (strcmp(pOpt->name, pArgName) == 0) {
- switch (pOpt->type) {
- case OptSpec::FLAG:
- *(UBool *)(pOpt->pVar) = true;
- break;
- case OptSpec::STRING:
- argNum ++;
- if (argNum >= argc) {
- fprintf(stderr, "value expected for \"%s\" option.\n", pOpt->name);
- return false;
- }
- *(const char **)(pOpt->pVar) = argv[argNum];
- break;
- case OptSpec::NUM:
- argNum ++;
- if (argNum >= argc) {
- fprintf(stderr, "value expected for \"%s\" option.\n", pOpt->name);
- return false;
- }
- char *endp;
- i = strtol(argv[argNum], &endp, 0);
- if (endp == argv[argNum]) {
- fprintf(stderr, "integer value expected for \"%s\" option.\n", pOpt->name);
- return false;
- }
- *(int *)(pOpt->pVar) = i;
- }
- break;
- }
- }
- if (pOpt->name == 0)
- {
- fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
- return false;
- }
- }
-return true;
-}
-
-
-void doForwardTest() {
- if (opt_terse == false) {
- printf("Doing the forward test\n");
- }
- int32_t noBreaks = 0;
- int32_t i = 0;
- unsigned long startTime = timeGetTime();
- unsigned long elapsedTime = 0;
- if(opt_icu) {
- createICUBrkIt();
- brkit->setText(UnicodeString(text, textSize));
- brkit->first();
- if (opt_terse == false) {
- printf("Warmup\n");
- }
- int j;
- while((j = brkit->next()) != BreakIterator::DONE) {
- noBreaks++;
- //fprintf(stderr, "%d ", j);
- }
-
- if (opt_terse == false) {
- printf("Measure\n");
- }
- startTime = timeGetTime();
- for(i = 0; i < opt_loopCount; i++) {
- brkit->first();
- while(brkit->next() != BreakIterator::DONE) {
- }
- }
-
- elapsedTime = timeGetTime()-startTime;
- } else if(opt_mac) {
-#if U_PLATFORM_IS_DARWIN_BASED
- createMACBrkIt();
- UniChar* filePtr = text;
- OSStatus status = noErr;
- UniCharCount startOffset = 0, breakOffset = 0, numUniChars = textSize;
- startOffset = 0;
- //printf("\t---Search forward--\n");
-
- while (startOffset < numUniChars)
- {
- status = UCFindTextBreak(breakRef, macBreakType, kUCTextBreakLeadingEdgeMask, filePtr, numUniChars,
- startOffset, &breakOffset);
- //require_action(status == noErr, EXIT, printf( "**UCFindTextBreak failed: startOffset %d, status %d\n", (int)startOffset, (int)status));
- //require_action((breakOffset <= numUniChars),EXIT, printf("**UCFindTextBreak breakOffset too big: startOffset %d, breakOffset %d\n", (int)startOffset, (int)breakOffset));
-
- // Output break
- //printf("\t%d\n", (int)breakOffset);
-
- // Increment counters
- noBreaks++;
- startOffset = breakOffset;
- }
- startTime = timeGetTime();
- for(i = 0; i < opt_loopCount; i++) {
- startOffset = 0;
-
- while (startOffset < numUniChars)
- {
- status = UCFindTextBreak(breakRef, macBreakType, kUCTextBreakLeadingEdgeMask, filePtr, numUniChars,
- startOffset, &breakOffset);
- // Increment counters
- startOffset = breakOffset;
- }
- }
- elapsedTime = timeGetTime()-startTime;
- UCDisposeTextBreakLocator(&breakRef);
-#endif
-
-
- }
-
-
- if (opt_terse == false) {
- int32_t loopTime = (int)(float(1000) * ((float)elapsedTime/(float)opt_loopCount));
- int32_t timePerCU = (int)(float(1000) * ((float)loopTime/(float)textSize));
- int32_t timePerBreak = (int)(float(1000) * ((float)loopTime/(float)noBreaks));
- printf("forward break iteration average loop time %d\n", loopTime);
- printf("number of code units %d average time per code unit %d\n", textSize, timePerCU);
- printf("number of breaks %d average time per break %d\n", noBreaks, timePerBreak);
- } else {
- printf("time=%d\nevents=%d\nsize=%d\n", elapsedTime, noBreaks, textSize);
- }
-
-
-}
-
-void doIsBoundTest() {
- int32_t noBreaks = 0, hit = 0;
- int32_t i = 0, j = 0;
- unsigned long startTime = timeGetTime();
- unsigned long elapsedTime = 0;
- createICUBrkIt();
- brkit->setText(UnicodeString(text, textSize));
- brkit->first();
- for(j = 0; j < textSize; j++) {
- if(brkit->isBoundary(j)) {
- noBreaks++;
- //fprintf(stderr, "%d ", j);
- }
- }
- /*
- while(brkit->next() != BreakIterator::DONE) {
- noBreaks++;
- }
- */
-
- startTime = timeGetTime();
- for(i = 0; i < opt_loopCount; i++) {
- for(j = 0; j < textSize; j++) {
- if(brkit->isBoundary(j)) {
- hit++;
- }
- }
- }
-
- elapsedTime = timeGetTime()-startTime;
- int32_t loopTime = (int)(float(1000) * ((float)elapsedTime/(float)opt_loopCount));
- if (opt_terse == false) {
- int32_t timePerCU = (int)(float(1000) * ((float)loopTime/(float)textSize));
- int32_t timePerBreak = (int)(float(1000) * ((float)loopTime/(float)noBreaks));
- printf("forward break iteration average loop time %d\n", loopTime);
- printf("number of code units %d average time per code unit %d\n", textSize, timePerCU);
- printf("number of breaks %d average time per break %d\n", noBreaks, timePerBreak);
- } else {
- printf("time=%d\nevents=%d\nsize=%d\n", elapsedTime, noBreaks, textSize);
- }
-}
-
-//----------------------------------------------------------------------------------------
-//
-// UnixConvert -- Convert the lines of the file to the encoding for UNIX
-// Since it appears that Unicode support is going in the general
-// direction of the use of UTF-8 locales, that is the approach
-// that is used here.
-//
-//----------------------------------------------------------------------------------------
-void UnixConvert() {
-#if 0
- int line;
-
- UConverter *cvrtr; // An ICU code page converter.
- UErrorCode status = U_ZERO_ERROR;
-
-
- cvrtr = ucnv_open("utf-8", &status); // we are just doing UTF-8 locales for now.
- if (U_FAILURE(status)) {
- fprintf(stderr, "ICU Converter open failed.: %d\n", &status);
- exit(-1);
- }
- // redo for unix
- for (line=0; line < gNumFileLines; line++) {
- int sizeNeeded = ucnv_fromUChars(cvrtr,
- 0, // ptr to target buffer.
- 0, // length of target buffer.
- gFileLines[line].name,
- -1, // source is null terminated
- &status);
- if (status != U_BUFFER_OVERFLOW_ERROR && status != U_ZERO_ERROR) {
- fprintf(stderr, "Conversion from Unicode, something is wrong.\n");
- exit(-1);
- }
- status = U_ZERO_ERROR;
- gFileLines[line].unixName = new char[sizeNeeded+1];
- sizeNeeded = ucnv_fromUChars(cvrtr,
- gFileLines[line].unixName, // ptr to target buffer.
- sizeNeeded+1, // length of target buffer.
- gFileLines[line].name,
- -1, // source is null terminated
- &status);
- if (U_FAILURE(status)) {
- fprintf(stderr, "ICU Conversion Failed.: %d\n", status);
- exit(-1);
- }
- gFileLines[line].unixName[sizeNeeded] = 0;
- };
- ucnv_close(cvrtr);
-#endif
-}
-
-
-//----------------------------------------------------------------------------------------
-//
-// class UCharFile Class to hide all the gorp to read a file in
-// and produce a stream of UChars.
-//
-//----------------------------------------------------------------------------------------
-class UCharFile {
-public:
- UCharFile(const char *fileName);
- ~UCharFile();
- char16_t get();
- UBool eof() {return fEof;};
- UBool error() {return fError;};
- int32_t size() { return fFileSize; };
-
-private:
- UCharFile (const UCharFile &other) {}; // No copy constructor.
- UCharFile & operator = (const UCharFile &other) {return *this;}; // No assignment op
-
- FILE *fFile;
- const char *fName;
- UBool fEof;
- UBool fError;
- char16_t fPending2ndSurrogate;
- int32_t fFileSize;
-
- enum {UTF16LE, UTF16BE, UTF8} fEncoding;
-};
-
-UCharFile::UCharFile(const char * fileName) {
- fEof = false;
- fError = false;
- fName = fileName;
- struct stat buf;
- int32_t result = stat(fileName, &buf);
- if(result != 0) {
- fprintf(stderr, "Error getting info\n");
- fFileSize = -1;
- } else {
- fFileSize = buf.st_size;
- }
- fFile = fopen(fName, "rb");
- fPending2ndSurrogate = 0;
- if (fFile == nullptr) {
- fprintf(stderr, "Can not open file \"%s\"\n", opt_fName);
- fError = true;
- return;
- }
- //
- // Look for the byte order mark at the start of the file.
- //
- int BOMC1, BOMC2, BOMC3;
- BOMC1 = fgetc(fFile);
- BOMC2 = fgetc(fFile);
-
- if (BOMC1 == 0xff && BOMC2 == 0xfe) {
- fEncoding = UTF16LE; }
- else if (BOMC1 == 0xfe && BOMC2 == 0xff) {
- fEncoding = UTF16BE; }
- else if (BOMC1 == 0xEF && BOMC2 == 0xBB && (BOMC3 = fgetc(fFile)) == 0xBF ) {
- fEncoding = UTF8; }
- else
- {
- fprintf(stderr, "collperf: file \"%s\" encoding must be UTF-8 or UTF-16, and "
- "must include a BOM.\n", fileName);
- fError = true;
- return;
- }
-}
-
-
-UCharFile::~UCharFile() {
- fclose(fFile);
-}
-
-
-
-char16_t UCharFile::get() {
- char16_t c;
- switch (fEncoding) {
- case UTF16LE:
- {
- int cL, cH;
- cL = fgetc(fFile);
- cH = fgetc(fFile);
- c = cL | (cH << 8);
- if (cH == EOF) {
- c = 0;
- fEof = true;
- }
- break;
- }
- case UTF16BE:
- {
- int cL, cH;
- cH = fgetc(fFile);
- cL = fgetc(fFile);
- c = cL | (cH << 8);
- if (cL == EOF) {
- c = 0;
- fEof = true;
- }
- break;
- }
- case UTF8:
- {
- if (fPending2ndSurrogate != 0) {
- c = fPending2ndSurrogate;
- fPending2ndSurrogate = 0;
- break;
- }
-
- int ch = fgetc(fFile); // Note: c and ch are separate cause eof test doesn't work on char16_t type.
- if (ch == EOF) {
- c = 0;
- fEof = true;
- break;
- }
-
- if (ch <= 0x7f) {
- // It's ascii. No further utf-8 conversion.
- c = ch;
- break;
- }
-
- // Figure out the length of the char and read the rest of the bytes
- // into a temp array.
- int nBytes;
- if (ch >= 0xF0) {nBytes=4;}
- else if (ch >= 0xE0) {nBytes=3;}
- else if (ch >= 0xC0) {nBytes=2;}
- else {
- fprintf(stderr, "not likely utf-8 encoded file %s contains corrupt data at offset %d.\n", fName, ftell(fFile));
- fError = true;
- return 0;
- }
-
- unsigned char bytes[10];
- bytes[0] = (unsigned char)ch;
- int i;
- for (i=1; i<nBytes; i++) {
- bytes[i] = fgetc(fFile);
- if (bytes[i] < 0x80 || bytes[i] >= 0xc0) {
- fprintf(stderr, "utf-8 encoded file %s contains corrupt data at offset %d. Expected %d bytes, byte %d is invalid. First byte is %02X\n", fName, ftell(fFile), nBytes, i, ch);
- fError = true;
- return 0;
- }
- }
-
- // Convert the bytes from the temp array to a Unicode char.
- i = 0;
- uint32_t cp;
- U8_NEXT_UNSAFE(bytes, i, cp);
- c = (char16_t)cp;
-
- if (cp >= 0x10000) {
- // The code point needs to be broken up into a utf-16 surrogate pair.
- // Process first half this time through the main loop, and
- // remember the other half for the next time through.
- char16_t utf16Buf[3];
- i = 0;
- UTF16_APPEND_CHAR_UNSAFE(utf16Buf, i, cp);
- fPending2ndSurrogate = utf16Buf[1];
- c = utf16Buf[0];
- }
- break;
- };
- }
- return c;
-}
-
-
-//----------------------------------------------------------------------------------------
-//
-// Main -- process command line, read in and pre-process the test file,
-// call other functions to do the actual tests.
-//
-//----------------------------------------------------------------------------------------
-int main(int argc, const char** argv) {
- if (ProcessOptions(argc, argv, opts) != true || opt_help || opt_fName == 0) {
- printf(gUsageString);
- exit (1);
- }
- // Make sure that we've only got one API selected.
- if (opt_mac || opt_unix || opt_win) opt_icu = false;
- if (opt_mac || opt_unix) opt_win = false;
- if (opt_mac) opt_unix = false;
-
- UErrorCode status = U_ZERO_ERROR;
-
-
-
- //
- // Set up a Windows LCID
- //
- /*
- if (opt_langid != 0) {
- gWinLCID = MAKELCID(opt_langid, SORT_DEFAULT);
- }
- else {
- gWinLCID = uloc_getLCID(opt_locale);
- }
- */
-
- //
- // Set the UNIX locale
- //
- if (opt_unix) {
- if (setlocale(LC_ALL, opt_locale) == 0) {
- fprintf(stderr, "setlocale(LC_ALL, %s) failed.\n", opt_locale);
- exit(-1);
- }
- }
-
- // Read in the input file.
- // File assumed to be utf-16.
- // Lines go onto heap buffers. Global index array to line starts is created.
- // Lines themselves are null terminated.
- //
-
- UCharFile f(opt_fName);
- if (f.error()) {
- exit(-1);
- }
- int32_t fileSize = f.size();
- const int STARTSIZE = 70000;
- int32_t bufSize = 0;
- int32_t charCount = 0;
- if(fileSize != -1) {
- text = (char16_t *)malloc(fileSize*sizeof(char16_t));
- bufSize = fileSize;
- } else {
- text = (char16_t *)malloc(STARTSIZE*sizeof(char16_t));
- bufSize = STARTSIZE;
- }
- if(text == nullptr) {
- fprintf(stderr, "Allocating buffer failed\n");
- exit(-1);
- }
-
-
- // Read the file, split into lines, and save in memory.
- // Loop runs once per utf-16 value from the input file,
- // (The number of bytes read from file per loop iteration depends on external encoding.)
- for (;;) {
-
- char16_t c = f.get();
- if(f.eof()) {
- break;
- }
- if (f.error()){
- exit(-1);
- }
- // We now have a good UTF-16 value in c.
- text[charCount++] = c;
- if(charCount == bufSize) {
- text = (char16_t *)realloc(text, 2*bufSize*sizeof(char16_t));
- if(text == nullptr) {
- fprintf(stderr, "Reallocating buffer failed\n");
- exit(-1);
- }
- bufSize *= 2;
- }
- }
-
-
- if (opt_terse == false) {
- printf("file \"%s\", %d charCount code units.\n", opt_fName, charCount);
- }
-
- textSize = charCount;
-
-
-
-
- //
- // Dump file contents if requested.
- //
- if (opt_dump) {
- // dump file, etc... possibly
- }
-
-
- //
- // We've got the file read into memory. Go do something with it.
- //
- int32_t i = 0;
- for(i = 0; i < opt_passesCount; i++) {
- if(opt_loopCount != 0) {
- if(opt_next) {
- doForwardTest();
- } else if(opt_isBound) {
- doIsBoundTest();
- } else {
- doForwardTest();
- }
- } else if(opt_time != 0) {
-
- }
- }
-
- if(text != nullptr) {
- free(text);
- }
- if(brkit != nullptr) {
- delete brkit;
- }
-
- return 0;
-}
diff --git a/icu4c/source/test/perf/ubrkperf/ubrkperfold.dsp b/icu4c/source/test/perf/ubrkperf/ubrkperfold.dsp
deleted file mode 100644
index ee79dfb5f..000000000
--- a/icu4c/source/test/perf/ubrkperf/ubrkperfold.dsp
+++ /dev/null
@@ -1,168 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ubrkperfold" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ubrkperfold - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ubrkperfold.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ubrkperfold.mak" CFG="ubrkperfold - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ubrkperfold - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ubrkperfold - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ubrkperfold - Win64 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ubrkperfold - Win64 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ubrkperfold - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /Ob2 /I "..\..\..\include" /I "..\..\tools\ctestfw" /I "..\..\common" /I "..\..\i18n" /I "..\..\tools\toolutil" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 icuuc.lib icuin.lib ctestfw.lib icutu.lib kernel32.lib user32.lib advapi32.lib shell32.lib winmm.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\lib\\"
-# Begin Custom Build
-InputPath=.\Release\ubrkperfold.exe
-SOURCE="$(InputPath)"
-
-"c:\dev\0_icu\bin\ubrkperf20.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- copy $(InputPath) c:\dev\0_icu\bin\ubrkperf20.exe
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "ubrkperfold - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
-# ADD CPP /nologo /G6 /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\include" /I "..\..\..\tools\ctestfw" /I "..\..\..\common" /I "..\..\..\i18n" /I "..\..\..\tools\toolutil" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 icuucd.lib icuind.lib icutud.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\lib\\"
-
-!ELSEIF "$(CFG)" == "ubrkperfold - Win64 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /Op /I "..\..\..\include" /I "..\..\tools\ctestfw" /I "..\..\common" /I "..\..\i18n" /I "..\..\tools\toolutil" /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /Wp64 /Zm600 /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IX86 /machine:IA64
-# ADD LINK32 icuuc.lib icuin.lib ctestfw.lib icutu.lib kernel32.lib user32.lib advapi32.lib shell32.lib winmm.lib /nologo /subsystem:console /machine:IX86 /libpath:"..\..\..\lib\\" /machine:IA64
-
-!ELSEIF "$(CFG)" == "ubrkperfold - Win64 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Op /I "..\..\..\include" /I "..\..\tools\ctestfw" /I "..\..\common" /I "..\..\i18n" /I "..\..\tools\toolutil" /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /GZ /Wp64 /Zm600 /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /machine:IA64
-# ADD LINK32 icuucd.lib icuind.lib icutud.lib winmm.lib /nologo /subsystem:console /incremental:no /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\lib\\" /machine:IA64
-
-!ENDIF
-
-# Begin Target
-
-# Name "ubrkperfold - Win32 Release"
-# Name "ubrkperfold - Win32 Debug"
-# Name "ubrkperfold - Win64 Release"
-# Name "ubrkperfold - Win64 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\ubrkperfold.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/icu4c/source/test/perf/unisetperf/draft/bitset.cpp b/icu4c/source/test/perf/unisetperf/draft/bitset.cpp
index 974c1891d..12c824ce8 100644
--- a/icu4c/source/test/perf/unisetperf/draft/bitset.cpp
+++ b/icu4c/source/test/perf/unisetperf/draft/bitset.cpp
@@ -22,10 +22,17 @@
* Uses the original set for supplementary code points.
*/
+#include "unicode/uniset.h"
+#include "unicode/uobject.h"
+#include "unicode/usetiter.h"
#include "unicode/utypes.h"
#include "unicont.h"
#include "cmemory.h" // for UPRV_LENGTHOF
+using icu::UObject;
+using icu::UnicodeSet;
+using icu::UnicodeSetIterator;
+
/*
* Hash table for up to 1k 64-bit words, for 1 bit per BMP code point.
* Hashes 64-bit words and maps them to 16-bit integers which are
@@ -171,7 +178,7 @@ public:
latin1Set[6]=(uint32_t)bits[3];
latin1Set[7]=(uint32_t)(bits[3]>>32);
- restSet.remove(0, 0xffff);
+ restSet->remove(0, 0xffff);
}
~BitSet() {
@@ -196,7 +203,7 @@ private:
int64_t shortBits[32];
int64_t *bits;
- uint32_t latin1Bits[8];
+ uint32_t latin1Set[8];
UnicodeSet *restSet;
};
diff --git a/icu4c/source/test/perf/unisetperf/draft/trieset.cpp b/icu4c/source/test/perf/unisetperf/draft/trieset.cpp
index 8d2f8134c..e05458cc4 100644
--- a/icu4c/source/test/perf/unisetperf/draft/trieset.cpp
+++ b/icu4c/source/test/perf/unisetperf/draft/trieset.cpp
@@ -21,8 +21,17 @@
* for supplementary code points.
*/
+#include "cmemory.h"
+#include "unicode/uniset.h"
+#include "unicode/uobject.h"
+#include "unicode/usetiter.h"
#include "unicode/utypes.h"
#include "unicont.h"
+#include "utrie.h"
+
+using icu::UObject;
+using icu::UnicodeSet;
+using icu::UnicodeSetIterator;
#define UTRIE_GET8_LATIN1(trie) ((const uint8_t *)(trie)->data32+UTRIE_DATA_BLOCK_LENGTH)
@@ -89,7 +98,7 @@ public:
latin1=UTRIE_GET8_LATIN1(&trie);
}
- restSet.remove(0, 0xffff);
+ restSet->remove(0, 0xffff);
}
~TrieSet() {
diff --git a/icu4c/source/test/perf/ustrperf/stringperf.h b/icu4c/source/test/perf/ustrperf/stringperf.h
index 264bbf92a..b846ddf12 100644
--- a/icu4c/source/test/perf/ustrperf/stringperf.h
+++ b/icu4c/source/test/perf/ustrperf/stringperf.h
@@ -70,8 +70,8 @@ public:
virtual long getEventsPerIteration(){
int loops = LOOPS;
- if (catICU) { delete catICU;}
- if (catStd) { delete catStd;}
+ delete catICU;
+ delete catStd;
if (bCatenatePrealloc) {
diff --git a/icu4c/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt b/icu4c/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt
index 417c1001d..25a0f1460 100644
--- a/icu4c/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt
+++ b/icu4c/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt
@@ -1,7 +1,7 @@
# Test data for Likely Subtags
# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Test data for https://www.unicode.org/reports/tr35/tr35.html#Likely_Subtags
@@ -788,7 +788,7 @@ pt-TL ; pt-Latn-TL ; pt-TL ;
qaa ; FAIL ; ;
qaa-CH ; FAIL ; ;
qaa-Cyrl ; FAIL ; ;
-qaa-Cyrl-CH ; ; ;
+qaa-Cyrl-CH ; FAIL ; ;
qu ; qu-Latn-PE ; qu ;
qu-AQ ; qu-Latn-AQ ; qu-AQ ;
qu-BO ; qu-Latn-BO ; qu-BO ;
diff --git a/icu4c/source/test/testdata/cldr/localeIdentifiers/localeCanonicalization.txt b/icu4c/source/test/testdata/cldr/localeIdentifiers/localeCanonicalization.txt
index bce4a8a4f..2e4bb5929 100644
--- a/icu4c/source/test/testdata/cldr/localeIdentifiers/localeCanonicalization.txt
+++ b/icu4c/source/test/testdata/cldr/localeIdentifiers/localeCanonicalization.txt
@@ -1,7 +1,7 @@
# Test data for locale identifier canonicalization
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
diff --git a/icu4c/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt b/icu4c/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt
index fd9986c00..ed0fdcd7b 100644
--- a/icu4c/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt
+++ b/icu4c/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt
@@ -1,7 +1,7 @@
# Test data for locale display name generation
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
# Format:
# @locale=<locale to display in>
@@ -65,7 +65,6 @@ en-u-co-gb2312; English (Simplified Chinese Sort Order - GB2312)
en-u-co-phonebk; English (Phonebook Sort Order)
en-u-co-phonetic; English (Phonetic Sort Order)
en-u-co-pinyin; English (Pinyin Sort Order)
-en-u-co-reformed; English (Reformed Sort Order)
en-u-co-search; English (General-Purpose Search)
en-u-co-searchjl; English (Search By Hangul Initial Consonant)
en-u-co-standard; English (Standard Sort Order)
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/_header.txt b/icu4c/source/test/testdata/cldr/personNameTest/_header.txt
index d32b3c067..a060992b4 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/_header.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/_header.txt
@@ -1,6 +1,6 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for personName formats
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
+# \ No newline at end of file
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/_readme.txt b/icu4c/source/test/testdata/cldr/personNameTest/_readme.txt
index c45acdf84..fe3dca10f 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/_readme.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/_readme.txt
@@ -1,5 +1,5 @@
# Test data for personName formats
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/af.txt b/icu4c/source/test/testdata/cldr/personNameTest/af.txt
index 726da7aa1..06efa0df3 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/af.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/af.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: af
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/am.txt b/icu4c/source/test/testdata/cldr/personNameTest/am.txt
index ac7b469a2..3fc2478d5 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/am.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/am.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: am
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ar.txt b/icu4c/source/test/testdata/cldr/personNameTest/ar.txt
index 6776b1de5..a45007061 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ar.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ar.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ar
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/as.txt b/icu4c/source/test/testdata/cldr/personNameTest/as.txt
index 6eeadad5c..38aafe03b 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/as.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/as.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: as
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/az.txt b/icu4c/source/test/testdata/cldr/personNameTest/az.txt
index 2f1c236be..a28f8bfe0 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/az.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/az.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: az
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/be.txt b/icu4c/source/test/testdata/cldr/personNameTest/be.txt
index 5be3444c8..d93e284e9 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/be.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/be.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: be
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/bg.txt b/icu4c/source/test/testdata/cldr/personNameTest/bg.txt
index 78861df6c..97ff654d5 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/bg.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/bg.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bg
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/bn.txt b/icu4c/source/test/testdata/cldr/personNameTest/bn.txt
index 50982f61a..3e344225f 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/bn.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/bn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bn
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/bs.txt b/icu4c/source/test/testdata/cldr/personNameTest/bs.txt
index c6687f31c..b2306853c 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/bs.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/bs.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bs
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ca.txt b/icu4c/source/test/testdata/cldr/personNameTest/ca.txt
index 259fec0cb..3f1309c05 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ca.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ca.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ca
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/catalog.txt b/icu4c/source/test/testdata/cldr/personNameTest/catalog.txt
index 55f5de7cd..4d6db7134 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/catalog.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/catalog.txt
@@ -1,10 +1,9 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for personName formats
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-af.txt
+#af.txt
am.txt
ar.txt
as.txt
@@ -19,31 +18,21 @@ cs.txt
cy.txt
da.txt
de.txt
-de_CH.txt
dsb.txt
el.txt
en.txt
-en_AU.txt
-en_CA.txt
-en_GB.txt
-en_IN.txt
es.txt
-es_419.txt
-es_MX.txt
-es_US.txt
et.txt
eu.txt
fa.txt
fi.txt
fil.txt
fr.txt
-fr_CA.txt
ga.txt
gd.txt
gl.txt
gu.txt
ha.txt
-ha_NE.txt
he.txt
hi.txt
hi_Latn.txt
@@ -82,7 +71,6 @@ pa.txt
pl.txt
ps.txt
pt.txt
-pt_PT.txt
qu.txt
ro.txt
ru.txt
@@ -94,12 +82,9 @@ sl.txt
so.txt
sq.txt
sr.txt
-sr_Cyrl_BA.txt
sr_Latn.txt
-sr_Latn_BA.txt
sv.txt
sw.txt
-sw_KE.txt
ta.txt
te.txt
tg.txt
@@ -113,10 +98,8 @@ uz.txt
vi.txt
wo.txt
yo.txt
-yo_BJ.txt
yue.txt
yue_Hans.txt
zh.txt
zh_Hant.txt
-zh_Hant_HK.txt
zu.txt \ No newline at end of file
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/chr.txt b/icu4c/source/test/testdata/cldr/personNameTest/chr.txt
index d1941bac6..79c0413f0 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/chr.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/chr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: chr
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/cs.txt b/icu4c/source/test/testdata/cldr/personNameTest/cs.txt
index 56e0c6289..ba810bc2d 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/cs.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/cs.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: cs
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/cy.txt b/icu4c/source/test/testdata/cldr/personNameTest/cy.txt
index dd32a7a68..4efcf7d98 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/cy.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/cy.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: cy
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/da.txt b/icu4c/source/test/testdata/cldr/personNameTest/da.txt
index bda38f8d1..8df996418 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/da.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/da.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: da
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/de.txt b/icu4c/source/test/testdata/cldr/personNameTest/de.txt
index e719c9b60..8cb75f208 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/de.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/de.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: de
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/de_CH.txt b/icu4c/source/test/testdata/cldr/personNameTest/de_CH.txt
deleted file mode 100644
index e2e11de09..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/de_CH.txt
+++ /dev/null
@@ -1,772 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: de_CH
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Lena
-name ; locale; de_CH
-
-expectedResult; Lena
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; L
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Iris
-name ; surname; Falke
-name ; locale; de_CH
-
-expectedResult; Falke, Iris
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Iris Falke
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Falke, I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; sorting; short; referring; formal
-
-expectedResult; I. Falke
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Iris F.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Falke
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Iris
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; FI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IF
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; F
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Max
-name ; given2; Ben
-name ; surname; Mustermann
-name ; locale; de_CH
-
-expectedResult; Mustermann, Max Ben
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; Max Ben Mustermann
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Mustermann, Max B.
-
-parameters; surnameFirst; medium; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Max B. Mustermann
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Mustermann, M. B.
-
-parameters; surnameFirst; short; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; M. B. Mustermann
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Mustermann, Max
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Max Mustermann
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Mustermann, M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mustermann
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Max M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Max
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MBM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MMB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MM
-
-parameters; givenFirst; long; monogram; informal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; Dr.
-name ; given; Paul
-name ; given-informal; Pauli
-name ; given2; Vinzent
-name ; surname-prefix; von
-name ; surname-core; Fischer
-name ; surname2; Müller
-name ; generation; jr.
-name ; credentials; MdB
-name ; locale; de_CH
-
-expectedResult; von Fischer, Dr. Paul Vinzent jr. MdB
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Dr. Paul Vinzent von Fischer jr. MdB
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Fischer, Paul V. jr. MdB
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Paul V. von Fischer jr. MdB
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Fischer, Paul Vinzent von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Fischer, Paul V. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Fischer, P. V. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; von Fischer, P. V.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Fischer, Pauli
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; P. V. von Fischer
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Pauli von Fischer
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Dr. von Fischer
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Fischer, P.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Pauli v. F.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Pauli
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; PVV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VPV
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; PV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VP
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Tomás
-name ; locale; ko_AQ
-
-expectedResult; Tomás
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; T
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Adélaïde
-name ; surname; Lemaître
-name ; locale; ko_AQ
-
-expectedResult; Lemaître, Adélaïde
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adélaïde Lemaître
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Lemaître, A.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; sorting; short; referring; formal
-
-expectedResult; A. Lemaître
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Adélaïde L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adélaïde
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Lemaître
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; AL
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; LA
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Kjetil
-name ; given2; Bjørn
-name ; surname; Løseth
-name ; locale; ko_AQ
-
-expectedResult; Løseth, Kjetil Bjørn
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; Kjetil Bjørn Løseth
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Løseth, Kjetil B.
-
-parameters; surnameFirst; medium; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Kjetil B. Løseth
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Løseth, Kjetil
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kjetil Løseth
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Løseth, K. B.
-
-parameters; surnameFirst; short; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; K. B. Løseth
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Løseth, K.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kjetil L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Kjetil
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Løseth
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; KBL
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; LKB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; KL
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; LK
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Anna Cornelia
-name ; given-informal; Nele
-name ; given2; Eva Sophia
-name ; surname-prefix; van den
-name ; surname-core; Wolf
-name ; surname2; Becker Schmidt
-name ; generation; jr.
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; van den Wolf, Prof. Dr. Anna Cornelia Eva Sophia jr. M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Prof. Dr. Anna Cornelia Eva Sophia van den Wolf jr. M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; van den Wolf, Anna Cornelia E. S. jr. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Anna Cornelia E. S. van den Wolf jr. M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wolf, Anna Cornelia Eva Sophia van den
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Wolf, Anna Cornelia E. S. van den
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; van den Wolf, A. C. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wolf, A. C. E. S. van den
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. C. E. S. van den Wolf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Prof. Dr. van den Wolf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Wolf, A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; van den Wolf, Nele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Nele van den Wolf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Nele v. d. W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Nele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/dsb.txt b/icu4c/source/test/testdata/cldr/personNameTest/dsb.txt
index fcf81ed62..e94c3af1e 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/dsb.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/dsb.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: dsb
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/el.txt b/icu4c/source/test/testdata/cldr/personNameTest/el.txt
index b7ad436f9..0835e9086 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/el.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/el.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: el
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/en.txt b/icu4c/source/test/testdata/cldr/personNameTest/en.txt
index 06f447f2b..d1dabbbf6 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/en.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/en.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: en
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/en_AU.txt b/icu4c/source/test/testdata/cldr/personNameTest/en_AU.txt
deleted file mode 100644
index d130d4ed4..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/en_AU.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_AU
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_AU
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_AU
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_AU
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_AU
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/en_CA.txt b/icu4c/source/test/testdata/cldr/personNameTest/en_CA.txt
deleted file mode 100644
index 3424bc2ad..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/en_CA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_CA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_CA
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_CA
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_CA
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr.
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr.
-name ; credentials; MP
-name ; locale; en_CA
-
-expectedResult; Mr. Bertram Wilberforce Henry Robert Wooster Jr., MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr. Bertram Wilberforce Henry Robert Jr., MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr., MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr., MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr. Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr.
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl Jr., MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof. Dr. Ada Cornelia César Martín Jr., MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr., MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr., MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Prof. Dr. von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/en_GB.txt b/icu4c/source/test/testdata/cldr/personNameTest/en_GB.txt
deleted file mode 100644
index ff38d8a29..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/en_GB.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_GB
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_GB
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_GB
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_GB
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, MSH
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue W
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; MSH Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson MSH
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Watson MS
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_GB
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce HR Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce HR Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce HR
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster, BWHR
-
-parameters; sorting; short; referring; formal
-
-expectedResult; BWHR Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster BWHR
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Wooster BW
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bertie W
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, ZH
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber ZH
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Zäzilia S
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; ZH Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Stöber Z
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia CM von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; von Brühl Ada Cornelia CM Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia CM von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Brühl, ACCM von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; ACCM von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl ACCM
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl AC
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele vB
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/en_IN.txt b/icu4c/source/test/testdata/cldr/personNameTest/en_IN.txt
deleted file mode 100644
index 8c5b8db1b..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/en_IN.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_IN
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_IN
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_IN
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_IN
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_IN
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/es.txt b/icu4c/source/test/testdata/cldr/personNameTest/es.txt
index 3cb56375b..f9a219c1d 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/es.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/es.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: es
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/es_419.txt b/icu4c/source/test/testdata/cldr/personNameTest/es_419.txt
deleted file mode 100644
index 3821f6ea0..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/es_419.txt
+++ /dev/null
@@ -1,830 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_419
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_419
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_419
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_419
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz, J. L. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Miguel Ángel
-name ; given-informal; Migue
-name ; given2; Juan Antonio
-name ; surname-core; Pablo
-name ; surname2; Pérez
-name ; generation; II
-name ; locale; es_419
-
-expectedResult; Pablo Pérez, Sr. Miguel Ángel Juan Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Sr. Miguel Ángel Juan Antonio Pablo II
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Pablo Pérez Miguel Ángel Juan Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Pablo, Sr. Miguel Ángel Juan Antonio
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Pablo Pérez, Sr. Miguel Ángel J. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Miguel Ángel J. A. Pablo
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Pablo Miguel Ángel J. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Pablo Pérez, Migue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; M. Á. J. A. Pablo
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Migue Pablo Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Pablo M. Á. J. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Pablo Pérez Migue
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. Pablo Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; Pablo, Migue
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Migue Pablo
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Pablo M. Á.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Pablo Migue
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. Pablo
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Migue P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Migue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MPP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; PMJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; PM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Peter
-name ; locale; ko_AQ
-
-expectedResult; Peter
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; P
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Martine
-name ; surname; Sodersen
-name ; locale; ko_AQ
-
-expectedResult; Sodersen, Martine
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Martine Sodersen
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Sodersen Martine
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Sodersen, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. Sodersen
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sodersen M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Martine S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Sodersen
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Martine
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Christopher
-name ; given2; Hans
-name ; surname; Jacobsen
-name ; locale; ko_AQ
-
-expectedResult; Jacobsen, Christopher Hans
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Christopher Hans Jacobsen
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Jacobsen Christopher Hans
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Jacobsen, Christopher H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Christopher H. Jacobsen
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Jacobsen Christopher H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Jacobsen, Christopher
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Christopher Jacobsen
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Jacobsen Christopher
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Jacobsen, C. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; C. H. Jacobsen
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Christopher J.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Jacobsen C. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Christopher
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Jacobsen C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Jacobsen
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; JCH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; CJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; JC
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; C
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; von
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dra. Mary Sue Marie von Miller II, Dr./Dra.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-
-expectedResult; von Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; von Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue M. von Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. von Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; von Miller Jones, Marge
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; Marge von Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; von Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Prof. Dra. von Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; M. S. M. von Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Miller, Marge
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marge von Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge v. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MVJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/es_MX.txt b/icu4c/source/test/testdata/cldr/personNameTest/es_MX.txt
deleted file mode 100644
index 74c4a52d2..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/es_MX.txt
+++ /dev/null
@@ -1,831 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_MX
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_MX
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_MX
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_MX
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz, J. L. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Marcelo Miguel
-name ; given-informal; Marce
-name ; given2; Javier Ariel
-name ; surname-core; Romero
-name ; surname2; Pérez
-name ; generation; Júnior
-name ; credentials; Miembro del Parlamento
-name ; locale; es_MX
-
-expectedResult; Romero Pérez Marcelo Miguel Javier Ariel Miembro del Parlamento
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Marcelo Miguel J. A. Romero Miembro del Parlamento
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Romero Marcelo Miguel J. A. Miembro del Parlamento
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Romero Pérez, Sr. Marcelo Miguel Javier Ariel
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Sr. Marcelo Miguel Javier Ariel Romero Pérez
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Romero, Sr. Marcelo Miguel Javier Ariel
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Romero Pérez, Sr. Marcelo Miguel J. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Romero Pérez, Marce
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; M. M. J. A. Romero
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marce Romero Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Romero M. M. J. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Romero Pérez Marce
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. Romero Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; Romero, Marce
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marce Romero
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Romero M. M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Romero Marce
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. Romero
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Marce R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marce
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MRP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RMJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; RM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Mohammed
-name ; locale; ko_AQ
-
-expectedResult; Mohammed
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; M
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Zäzilia
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Z. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; Käthe
-name ; given2; Kate
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe Kate
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Käthe Kate Müller
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Müller Käthe Kate
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Müller, Käthe K.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Käthe K. Müller
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Müller Käthe K.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Müller, K. K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; K. K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller K. K.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MKK
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; von
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Prof. Dra. Mary Sue Marie von Miller Jones
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; von Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue M. von Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. von Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; von Miller Jones, Marge
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; Marge von Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; von Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Prof. Dra. von Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; M. S. M. von Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Miller, Marge
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marge von Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge v. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MVJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/es_US.txt b/icu4c/source/test/testdata/cldr/personNameTest/es_US.txt
deleted file mode 100644
index 8af3e97c7..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/es_US.txt
+++ /dev/null
@@ -1,801 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_US
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_US
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_US
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_US
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Alejandro Martín
-name ; given-informal; Ale
-name ; given2; Carlos Miguel
-name ; surname-core; García
-name ; surname2; Pérez
-name ; generation; Júnior
-name ; credentials; Miembro del Parlamento
-name ; locale; es_US
-
-expectedResult; Sr. Alejandro Martín Carlos Miguel García Júnior, Miembro del Parlamento
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; García Pérez Alejandro Martín Carlos Miguel Miembro del Parlamento
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Alejandro Martín C. M. García Miembro del Parlamento
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; García Alejandro Martín C. M. Miembro del Parlamento
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; García Pérez, Alejandro Martín Carlos Miguel
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García, Sr. Alejandro Martín Carlos Miguel
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; García, Sr. Alejandro Martín C. M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; A. M. C. M. García
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García A. M. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Ale García Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; García Pérez Ale
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; García A. M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ale García
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Ale
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. García
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Ale G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; AGP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; Ale
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; GA
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Aziz
-name ; locale; ko_AQ
-
-expectedResult; Aziz
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Kate
-name ; surname; Smith
-name ; locale; ko_AQ
-
-expectedResult; Smith, Kate
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kate Smith
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Smith Kate
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; K. Smith
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Smith K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kate S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Smith
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Kate
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Sarah
-name ; given2; Anna
-name ; surname; Johnson
-name ; locale; ko_AQ
-
-expectedResult; Johnson, Sarah Anna
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; Johnson Sarah Anna
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Sarah Anna Johnson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Johnson, Sarah A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Johnson Sarah A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Sarah A. Johnson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Johnson S. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Johnson Sarah
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. A. Johnson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sarah Johnson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Johnson S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sarah J.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Johnson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Sarah
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JSA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; de
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dra. Mary Sue Marie de Miller II, Dr./Dra.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; de Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; de Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; de Miller, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; de Miller Jones, Mary Sue Marie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; de Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Mary Sue M. de Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. de Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; de Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Marge de Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Prof. Dra. de Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; de Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; M. S. M. de Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; de Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; de Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge de Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Marge d. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; DMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MDJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; DM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; D
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/et.txt b/icu4c/source/test/testdata/cldr/personNameTest/et.txt
index 543ce3eb9..9344dfae1 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/et.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/et.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: et
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/eu.txt b/icu4c/source/test/testdata/cldr/personNameTest/eu.txt
index eb47d520f..7446c34b7 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/eu.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/eu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: eu
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/fa.txt b/icu4c/source/test/testdata/cldr/personNameTest/fa.txt
index ee9efab2b..8113fcb39 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/fa.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/fa.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fa
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/fi.txt b/icu4c/source/test/testdata/cldr/personNameTest/fi.txt
index 7a456e390..9ab44f71b 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/fi.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/fi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fi
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/fil.txt b/icu4c/source/test/testdata/cldr/personNameTest/fil.txt
index c966189a0..160cbc5e7 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/fil.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/fil.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fil
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/fr.txt b/icu4c/source/test/testdata/cldr/personNameTest/fr.txt
index fba3bd02f..1bee09713 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/fr.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/fr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fr
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/fr_CA.txt b/icu4c/source/test/testdata/cldr/personNameTest/fr_CA.txt
deleted file mode 100644
index e6791fb5a..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/fr_CA.txt
+++ /dev/null
@@ -1,831 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: fr_CA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Adèle
-name ; locale; fr_CA
-
-expectedResult; Adèle
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Louise
-name ; surname; Péricourt
-name ; locale; fr_CA
-
-expectedResult; Péricourt, Louise
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Louise Péricourt
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Péricourt Louise
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Péricourt, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; L. Péricourt
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Péricourt L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Louise P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Péricourt
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Louise
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; LP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; PL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Marie-Agnès
-name ; given2; Suzanne
-name ; surname; Gilot
-name ; locale; fr_CA
-
-expectedResult; Gilot, Marie-Agnès Suzanne
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Gilot Marie-Agnès Suzanne
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Marie-Agnès Suzanne Gilot
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Gilot, Marie-Agnès S.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Gilot Marie-Agnès S.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Marie-Agnès S. Gilot
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Gilot, Marie-Agnès
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Gilot Marie-Agnès
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marie-Agnès Gilot
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Gilot, M.-A. S.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Gilot M.-A. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; M.-A. S. Gilot
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marie-Agnès G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Gilot M.-A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Marie-Agnès
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Gilot
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GMS
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MSG
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; GM
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; MG
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; M.
-name ; given; Jean-Nicolas
-name ; given-informal; Nico
-name ; given2; Louis Marcel
-name ; surname-prefix; de
-name ; surname-core; Larochellière
-name ; surname2; Drainville
-name ; generation; fils
-name ; locale; fr_CA
-
-expectedResult; M. de Larochellière Jean-Nicolas Louis Marcel fils
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; M. Jean-Nicolas Louis Marcel de Larochellière fils
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Larochellière, Jean-Nicolas Louis Marcel de
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Larochellière, Jean-Nicolas L. M. de
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; de Larochellière Jean-Nicolas L. M.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Jean-Nicolas L. M. de Larochellière
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Larochellière, J.-N. L. M. de
-
-parameters; sorting; short; referring; formal
-
-expectedResult; de Larochellière J.-N. L. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; J.-N. L. M. de Larochellière
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; de Larochellière J.-N.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Larochellière, Nico de
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; de Larochellière Nico
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Nico de Larochellière
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; M. de Larochellière
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Nico d. L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Nico
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JLL
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; LJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JL
-
-parameters; givenFirst; medium; monogram; formal
-
-expectedResult; LJ
-
-parameters; surnameFirst; medium; monogram; formal
-
-expectedResult; LN
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; NL
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; N
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Asmar
-name ; locale; ko_AQ
-
-expectedResult; Asmar
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Hermione
-name ; surname; Granger
-name ; locale; ko_AQ
-
-expectedResult; Granger, Hermione
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Granger Hermione
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Hermione Granger
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Granger, H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Hermione G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Granger H.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; H. Granger
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hermione
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Granger
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GH
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; HG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; H
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; Ginevra
-name ; given2; Molly
-name ; surname; Weasley
-name ; locale; ko_AQ
-
-expectedResult; Weasley, Ginevra Molly
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Ginevra Molly Weasley
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Weasley Ginevra Molly
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Weasley, Ginevra M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ginevra M. Weasley
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Weasley Ginevra M.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Weasley, Ginevra
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ginevra Weasley
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Weasley Ginevra
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Weasley, G. M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; G. M. Weasley
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Weasley G. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Ginevra W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Weasley G.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ginevra
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Weasley
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GMW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WGM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; GW
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; WG
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; María Florencia
-name ; given-informal; Flor
-name ; given2; Martina Cristina
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr.
-name ; credentials; MD DDS
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dr. María Florencia Martina Cristina von Brühl Jr., MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Prof. Dr. von Brühl María Florencia Martina Cristina Jr., MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Brühl, María Florencia Martina Cristina von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, María Florencia M. C. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; María Florencia M. C. von Brühl
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl María Florencia M. C.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, M. F. M. C. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. F. M. C. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl M. F. M. C.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof. Dr. von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Brühl, Flor von
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; von Brühl M. F.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Flor von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Flor
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Flor v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Flor
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MMB
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; BF
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; BM
-
-parameters; surnameFirst; medium; monogram; formal
-
-expectedResult; FB
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MB
-
-parameters; givenFirst; medium; monogram; formal
-
-expectedResult; B
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; F
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ga.txt b/icu4c/source/test/testdata/cldr/personNameTest/ga.txt
index 3aba9ec85..eae720d2d 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ga.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ga.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ga
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/gd.txt b/icu4c/source/test/testdata/cldr/personNameTest/gd.txt
index c20b60214..d2b1b8837 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/gd.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/gd.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gd
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/gl.txt b/icu4c/source/test/testdata/cldr/personNameTest/gl.txt
index a05b02af4..5000968a8 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/gl.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/gl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gl
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/gu.txt b/icu4c/source/test/testdata/cldr/personNameTest/gu.txt
index aa7aa5c26..a1a164e90 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/gu.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/gu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gu
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ha.txt b/icu4c/source/test/testdata/cldr/personNameTest/ha.txt
index 474b7a3c3..d6fff6a1a 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ha.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ha.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ha
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ha_NE.txt b/icu4c/source/test/testdata/cldr/personNameTest/ha_NE.txt
deleted file mode 100644
index d2c879c66..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/ha_NE.txt
+++ /dev/null
@@ -1,762 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: ha_NE
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Sule
-name ; locale; ha_NE
-
-expectedResult; Sule
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Shehu
-name ; surname; Muhammed
-name ; locale; ha_NE
-
-expectedResult; Muhammed, Shehu
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Muhammed Shehu
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Shehu Muhammed
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Muhammed S.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; S. Muhammed
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Muhammed
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Shehu M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Shehu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Fatima
-name ; given2; Amina
-name ; surname; Umar
-name ; locale; ha_NE
-
-expectedResult; Umar, Fatima Amina
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Fatima Amina Umar
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Umar Fatima Amina
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Umar Fatima A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Umar, Fatima
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Fatima Umar
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Umar Fatima
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; F. A. Umar
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Umar F. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Fatima U.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Umar F.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Fatima
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Umar
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; FAU
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; UFA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; UF
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; F
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; U
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Malam
-name ; given; Shehu
-name ; given2; Bello
-name ; surname-core; Modibbo
-name ; credentials; MP
-name ; locale; ha_NE
-
-expectedResult; Malam Shehu Bello Modibbo MP
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Modibbo Malam Shehu Bello MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Modibbo, Shehu Bello
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Modibbo Shehu B. MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Modibbo, Shehu
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Malam Modibbo
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Modibbo S. B.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Modibbo Shehu
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. B. Modibbo
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Shehu Modibbo
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Modibbo S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Shehu M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Shehu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SBM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Farf. Dr.
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; Eva Sophia
-name ; surname-prefix; van den
-name ; surname-core; Wolf
-name ; surname2; Becker Schmidt
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Farf. Dr. Ada Cornelia Eva Sophia van den Wolf Becker Schmidt M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; van den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; van den Wolf Ada Cornelia E. S. Jr, M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wolf, Ada Cornelia Eva Sophia van den
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A. C. E. S. van den Wolf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; van den Wolf A. C. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Farf. Dr. van den Wolf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Wolf, Neele
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Neele van den Wolf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; van den Wolf A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; van den Wolf Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. d. W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/he.txt b/icu4c/source/test/testdata/cldr/personNameTest/he.txt
index adccf7613..9bee575e0 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/he.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/he.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: he
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/hi.txt b/icu4c/source/test/testdata/cldr/personNameTest/hi.txt
index d9021e942..6fde59f4b 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/hi.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/hi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hi
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/hi_Latn.txt b/icu4c/source/test/testdata/cldr/personNameTest/hi_Latn.txt
index 4bac4f344..cdd12e006 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/hi_Latn.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/hi_Latn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hi_Latn
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/hr.txt b/icu4c/source/test/testdata/cldr/personNameTest/hr.txt
index c8b4c4508..c944a06a2 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/hr.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/hr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hr
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/hsb.txt b/icu4c/source/test/testdata/cldr/personNameTest/hsb.txt
index 40fa1470c..65980c01c 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/hsb.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/hsb.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hsb
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/hu.txt b/icu4c/source/test/testdata/cldr/personNameTest/hu.txt
index ffd6167bb..0282ddb51 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/hu.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/hu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hu
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/hy.txt b/icu4c/source/test/testdata/cldr/personNameTest/hy.txt
index 98390483c..129c9ef9a 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/hy.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/hy.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hy
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/id.txt b/icu4c/source/test/testdata/cldr/personNameTest/id.txt
index 0069dcc04..2c43aa4ed 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/id.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/id.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: id
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ig.txt b/icu4c/source/test/testdata/cldr/personNameTest/ig.txt
index ba7c854cb..c9a7755a2 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ig.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ig.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ig
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/is.txt b/icu4c/source/test/testdata/cldr/personNameTest/is.txt
index f276fc1c8..b593480a0 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/is.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/is.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: is
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/it.txt b/icu4c/source/test/testdata/cldr/personNameTest/it.txt
index 94d1f4308..0fa151d2a 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/it.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/it.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: it
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ja.txt b/icu4c/source/test/testdata/cldr/personNameTest/ja.txt
index da3fd82e4..1ff2d977e 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ja.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ja.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ja
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/jv.txt b/icu4c/source/test/testdata/cldr/personNameTest/jv.txt
index ecd4f8180..1cd2195ce 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/jv.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/jv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: jv
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ka.txt b/icu4c/source/test/testdata/cldr/personNameTest/ka.txt
index ced01ad4d..412ebf1b4 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ka.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ka.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ka
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/kk.txt b/icu4c/source/test/testdata/cldr/personNameTest/kk.txt
index 2a46fc875..1d55b15f1 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/kk.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/kk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kk
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/km.txt b/icu4c/source/test/testdata/cldr/personNameTest/km.txt
index e2f529fbd..a457bd4a0 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/km.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/km.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: km
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/kn.txt b/icu4c/source/test/testdata/cldr/personNameTest/kn.txt
index 295c955b8..9a773f820 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/kn.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/kn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kn
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ko.txt b/icu4c/source/test/testdata/cldr/personNameTest/ko.txt
index a04f3bc91..3e4319a3e 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ko.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ko.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ko
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/kok.txt b/icu4c/source/test/testdata/cldr/personNameTest/kok.txt
index aef93c2ef..9af38f5e3 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/kok.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/kok.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kok
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ky.txt b/icu4c/source/test/testdata/cldr/personNameTest/ky.txt
index bdc49df6e..37553ed86 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ky.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ky.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ky
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/lo.txt b/icu4c/source/test/testdata/cldr/personNameTest/lo.txt
index 094259ed5..29e47e22b 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/lo.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/lo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lo
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/lt.txt b/icu4c/source/test/testdata/cldr/personNameTest/lt.txt
index ab79d6e88..8bdba8e63 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/lt.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/lt.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lt
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/lv.txt b/icu4c/source/test/testdata/cldr/personNameTest/lv.txt
index d7a6d1482..48059189c 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/lv.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/lv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lv
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/mk.txt b/icu4c/source/test/testdata/cldr/personNameTest/mk.txt
index fe66a9bab..12a4423bc 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/mk.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/mk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mk
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ml.txt b/icu4c/source/test/testdata/cldr/personNameTest/ml.txt
index a2d583167..b18f25f1e 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ml.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ml.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ml
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/mn.txt b/icu4c/source/test/testdata/cldr/personNameTest/mn.txt
index 23bff1e29..e702e69db 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/mn.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/mn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mn
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/mr.txt b/icu4c/source/test/testdata/cldr/personNameTest/mr.txt
index f42c24ed6..716ce3746 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/mr.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/mr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mr
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ms.txt b/icu4c/source/test/testdata/cldr/personNameTest/ms.txt
index 7d046ce6a..b5f9438d5 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ms.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ms.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ms
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/my.txt b/icu4c/source/test/testdata/cldr/personNameTest/my.txt
index e7fcdfcb5..d512446c7 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/my.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/my.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: my
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ne.txt b/icu4c/source/test/testdata/cldr/personNameTest/ne.txt
index 771c007ea..ad0aa217e 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ne.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ne.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ne
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/nl.txt b/icu4c/source/test/testdata/cldr/personNameTest/nl.txt
index dcb197e39..8e469d2d9 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/nl.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/nl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: nl
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/nn.txt b/icu4c/source/test/testdata/cldr/personNameTest/nn.txt
index 0f3ffeb63..a6272c8f4 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/nn.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/nn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: nn
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/no.txt b/icu4c/source/test/testdata/cldr/personNameTest/no.txt
index 86734e653..777ee130c 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/no.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/no.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: no
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/or.txt b/icu4c/source/test/testdata/cldr/personNameTest/or.txt
index fc4c7931e..7f67e5a60 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/or.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/or.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: or
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/pa.txt b/icu4c/source/test/testdata/cldr/personNameTest/pa.txt
index 55ce96617..4814f8d89 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/pa.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/pa.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pa
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/pl.txt b/icu4c/source/test/testdata/cldr/personNameTest/pl.txt
index dc2c1ff7a..94423727c 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/pl.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/pl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pl
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ps.txt b/icu4c/source/test/testdata/cldr/personNameTest/ps.txt
index b640ee021..8206054d0 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ps.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ps.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ps
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/pt.txt b/icu4c/source/test/testdata/cldr/personNameTest/pt.txt
index d7d9f9948..a121341c8 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/pt.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/pt.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pt
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/pt_PT.txt b/icu4c/source/test/testdata/cldr/personNameTest/pt_PT.txt
deleted file mode 100644
index 5f4c0ffeb..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/pt_PT.txt
+++ /dev/null
@@ -1,814 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: pt_PT
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Maria
-name ; locale; pt_PT
-
-expectedResult; Maria
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; M
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Maria
-name ; surname; Silva
-name ; locale; pt_PT
-
-expectedResult; Silva, Maria
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Maria Silva
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Silva Maria
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Silva, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Maria S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Silva M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Maria
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Maria João
-name ; given2; Pedro
-name ; surname; Silva
-name ; locale; pt_PT
-
-expectedResult; Silva, Maria João Pedro
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Maria João Pedro Silva
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Silva Maria João Pedro
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Maria João P. Silva
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Silva Maria João P.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Silva, Maria João
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Maria João Pedro
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Maria João Silva
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Silva Maria João
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Silva, M. J. P.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. J. P. Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Silva M. J. P.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Maria João S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Silva M. J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Maria João
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MPS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SMP
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; José
-name ; given-informal; Zé
-name ; given2; Pedro Eduardo
-name ; surname-prefix; da
-name ; surname-core; Silva
-name ; surname2; Silveira
-name ; generation; Jr.
-name ; credentials; MP
-name ; locale; pt_PT
-
-expectedResult; da Silva Sr. José Pedro Eduardo Jr., MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Sr. José Pedro Eduardo da Silva Jr., MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Silva, José Pedro Eduardo da
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; da Silva José P. E. Jr., MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; José P. E. da Silva Jr., MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Sr. José Pedro Eduardo
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; da Silva, J. P. E.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; da Silva J. P. E.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; J. P. E. da Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sr. José da Silva
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; da Silva, Zé
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; da Silva J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; da Silva Zé
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zé da Silva
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Sr. José
-
-parameters; givenFirst; long; addressing; formal
-
-expectedResult; Zé d. S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; DJP
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JPD
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; DZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZD
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; Zé
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; D
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Hamish
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Stöber, Z. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Mary Lou
-name ; given-informal; Neele
-name ; given2; Cesare Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof. Dr. Mary Lou Cesare Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof. Dr. Mary Lou Cesare Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Mary Lou C. M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Mary Lou C. M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Mary Lou Cesare Martín von
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof. Dr. Mary Lou Cesare Martín
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Prof. Dr. Mary Lou von Brühl
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; von Brühl, M. L. C. M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. L. C. M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl M. L. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof. Dr. Mary Lou
-
-parameters; givenFirst; long; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl M. L.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MCV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VMC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/qu.txt b/icu4c/source/test/testdata/cldr/personNameTest/qu.txt
index 6122737fc..1318852ac 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/qu.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/qu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: qu
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ro.txt b/icu4c/source/test/testdata/cldr/personNameTest/ro.txt
index 5b8e6b8e0..8a1585735 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ro.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ro.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ro
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ru.txt b/icu4c/source/test/testdata/cldr/personNameTest/ru.txt
index 070e3a3d5..2f556cf6a 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ru.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ru.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ru
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sc.txt b/icu4c/source/test/testdata/cldr/personNameTest/sc.txt
index 1c0c0cc60..4ca703902 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sc.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sc.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sc
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sd.txt b/icu4c/source/test/testdata/cldr/personNameTest/sd.txt
index 33fecc3e3..4a6e6bd39 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sd.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sd.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sd
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/si.txt b/icu4c/source/test/testdata/cldr/personNameTest/si.txt
index e3231077e..3a889b0d7 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/si.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/si.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: si
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sk.txt b/icu4c/source/test/testdata/cldr/personNameTest/sk.txt
index 39569e58f..e23c70af7 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sk.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sk
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sl.txt b/icu4c/source/test/testdata/cldr/personNameTest/sl.txt
index 6b0e0f7bc..7ce7763e0 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sl.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sl
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/so.txt b/icu4c/source/test/testdata/cldr/personNameTest/so.txt
index b07186c77..a9ef691e9 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/so.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/so.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: so
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sq.txt b/icu4c/source/test/testdata/cldr/personNameTest/sq.txt
index e2f7e2d70..682d8ed74 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sq.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sq.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sq
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sr.txt b/icu4c/source/test/testdata/cldr/personNameTest/sr.txt
index 2167976d0..b13c1252a 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sr.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sr
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sr_Cyrl_BA.txt b/icu4c/source/test/testdata/cldr/personNameTest/sr_Cyrl_BA.txt
deleted file mode 100644
index e786482eb..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/sr_Cyrl_BA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sr_Cyrl_BA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Иван
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Иван
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; И
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Ирена
-name ; surname; Марковић
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Марковић, Ирена
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ирена Марковић
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Марковић Ирена
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Марковић, И.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; И. Марковић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Марковић И.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ирена М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Марковић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Ирена
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ИМ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; МИ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; И
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Јован
-name ; given2; Драган
-name ; surname; Поповић
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Поповић, Јован Драган
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Јован Драган Поповић
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Поповић Јован Драган
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Поповић, Јован Д.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Јован Д. Поповић
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Поповић Јован Д.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Поповић, Ј. Д.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Поповић, Јован
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ј. Д. Поповић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Јован Поповић
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Поповић Ј. Д.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Поповић Јован
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Поповић Ј.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Јован П.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Поповић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Јован
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ЈДП
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ПЈД
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ЈП
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ПЈ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; Ј
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; П
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; др
-name ; given; Слађана
-name ; given-informal; Слађа
-name ; given2; Вера
-name ; surname-core; Миленковић
-name ; generation; млађи
-name ; credentials; дипл. инж.
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Миленковић др Слађана Вера млађи, дипл. инж.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Миленковић Слађана В. млађи, дипл. инж.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Слађана В. Миленковић млађи, дипл. инж.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; др Слађана Вера Миленковић дипл. инж.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Миленковић, Слађана Вера
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Миленковић, Слађана В.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Миленковић, С. В.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Миленковић, Слађа
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Миленковић С. В.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Миленковић Слађа
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; С. В. Миленковић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Слађа Миленковић
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; др Миленковић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Миленковић С.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Слађа М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Слађа
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; МСВ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; СВМ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; МС
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; СМ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; С
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Синбад
-name ; locale; ko_AQ
-
-expectedResult; Синбад
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; С
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Кете
-name ; surname; Милер
-name ; locale; ko_AQ
-
-expectedResult; Милер, Кете
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Кете Милер
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Милер Кете
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Милер, К.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; К. Милер
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Милер К.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Кете М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Милер
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Кете
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; КМ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; МК
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; К
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Цецилија
-name ; given2; Хемиш
-name ; surname; Штебер
-name ; locale; ko_AQ
-
-expectedResult; Штебер, Цецилија Хемиш
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Цецилија Хемиш Штебер
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Штебер Цецилија Хемиш
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Штебер, Цецилија Х.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Цецилија Х. Штебер
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Штебер Цецилија Х.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Штебер, Цецилија
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Цецилија Штебер
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Штебер Цецилија
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Штебер, Ц. Х.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Ц. Х. Штебер
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Штебер Ц. Х.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Цецилија Ш.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Штебер Ц.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Цецилија
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Штебер
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; ЦХШ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ШЦХ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ЦШ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ШЦ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; Ц
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; Ш
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; проф. др
-name ; given; Александра
-name ; given-informal; Сања
-name ; given2; Ева Сара
-name ; surname-prefix; ван ден
-name ; surname-core; Волф
-name ; surname2; Петровић Југовић
-name ; generation; млађи
-name ; credentials; дипл. инж.
-name ; locale; ko_AQ
-
-expectedResult; проф. др Александра Ева Сара ван ден Волф Петровић Југовић дипл. инж.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; ван ден Волф проф. др Александра Ева Сара млађи, дипл. инж.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Александра Е. С. ван ден Волф млађи, дипл. инж.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; ван ден Волф Александра Е. С. млађи, дипл. инж.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Волф, Александра Ева Сара ван ден
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Волф, Александра Е. С. ван ден
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Волф, А. Е. С. ван ден
-
-parameters; sorting; short; referring; formal
-
-expectedResult; А. Е. С. ван ден Волф
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; ван ден Волф А. Е. С.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; проф. др ван ден Волф
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; ван ден Волф, Сања
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; ван ден Волф Сања
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Сања ван ден Волф
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; ван ден Волф А.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Сања в. д. В.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Сања
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; АЕВ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ВАЕ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ВС
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; СВ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; В
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; С
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sr_Latn.txt b/icu4c/source/test/testdata/cldr/personNameTest/sr_Latn.txt
index fb8c4342e..f8834dff6 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sr_Latn.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sr_Latn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sr_Latn
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sr_Latn_BA.txt b/icu4c/source/test/testdata/cldr/personNameTest/sr_Latn_BA.txt
deleted file mode 100644
index d37883f16..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/sr_Latn_BA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sr_Latn_BA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Ivan
-name ; locale; sr_Latn_BA
-
-expectedResult; Ivan
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; I
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irena
-name ; surname; Marković
-name ; locale; sr_Latn_BA
-
-expectedResult; Marković, Irena
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Irena Marković
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Marković Irena
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marković, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; I. Marković
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marković I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Irena M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marković
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irena
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; IM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Jovan
-name ; given2; Dragan
-name ; surname; Popović
-name ; locale; sr_Latn_BA
-
-expectedResult; Popović, Jovan Dragan
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Jovan Dragan Popović
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Popović Jovan Dragan
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Popović, Jovan D.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Jovan D. Popović
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Popović Jovan D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Popović, J. D.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Popović, Jovan
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; J. D. Popović
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Jovan Popović
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Popović J. D.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Popović Jovan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Popović J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Jovan P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Popović
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Jovan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JDP
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; PJD
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JP
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; PJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; dr
-name ; given; Slađana
-name ; given-informal; Slađa
-name ; given2; Vera
-name ; surname-core; Milenković
-name ; generation; mlađi
-name ; credentials; dipl. inž.
-name ; locale; sr_Latn_BA
-
-expectedResult; Milenković dr Slađana Vera mlađi, dipl. inž.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Milenković Slađana V. mlađi, dipl. inž.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Slađana V. Milenković mlađi, dipl. inž.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; dr Slađana Vera Milenković dipl. inž.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Milenković, Slađana Vera
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Milenković, Slađana V.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Milenković, S. V.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Milenković, Slađa
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Milenković S. V.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Milenković Slađa
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. V. Milenković
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Slađa Milenković
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; dr Milenković
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Milenković S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Slađa M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Slađa
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSV
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SVM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Kete
-name ; surname; Miler
-name ; locale; ko_AQ
-
-expectedResult; Miler, Kete
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kete Miler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Miler Kete
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Miler, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Miler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Miler K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kete M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Miler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Kete
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Cecilija
-name ; given2; Hemiš
-name ; surname; Šteber
-name ; locale; ko_AQ
-
-expectedResult; Šteber, Cecilija Hemiš
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Cecilija Hemiš Šteber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Šteber Cecilija Hemiš
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Šteber, Cecilija H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Cecilija H. Šteber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Šteber Cecilija H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Šteber, Cecilija
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Cecilija Šteber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Šteber Cecilija
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Šteber, C. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; C. H. Šteber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Šteber C. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Cecilija Š.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Šteber C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Cecilija
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Šteber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; CHŠ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ŠCH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; CŠ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ŠC
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; C
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; Š
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; prof. dr
-name ; given; Aleksandra
-name ; given-informal; Sanja
-name ; given2; Eva Sara
-name ; surname-prefix; van den
-name ; surname-core; Volf
-name ; surname2; Petrović Jugović
-name ; generation; mlađi
-name ; credentials; dipl. inž.
-name ; locale; ko_AQ
-
-expectedResult; prof. dr Aleksandra Eva Sara van den Volf Petrović Jugović dipl. inž.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; van den Volf prof. dr Aleksandra Eva Sara mlađi, dipl. inž.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Aleksandra E. S. van den Volf mlađi, dipl. inž.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; van den Volf Aleksandra E. S. mlađi, dipl. inž.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Volf, Aleksandra Eva Sara van den
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Volf, Aleksandra E. S. van den
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Volf, A. E. S. van den
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. E. S. van den Volf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; prof. dr van den Volf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Volf A. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; van den Volf, Sanja
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Sanja van den Volf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; van den Volf Sanja
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; van den Volf A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sanja v. d. V.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Sanja
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sv.txt b/icu4c/source/test/testdata/cldr/personNameTest/sv.txt
index bde781262..22fd9cb9c 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sv.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sv
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sw.txt b/icu4c/source/test/testdata/cldr/personNameTest/sw.txt
index 119cc16e8..4a4dafad0 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/sw.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/sw.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sw
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/sw_KE.txt b/icu4c/source/test/testdata/cldr/personNameTest/sw_KE.txt
deleted file mode 100644
index 07501b707..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/sw_KE.txt
+++ /dev/null
@@ -1,806 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sw_KE
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Hassan
-name ; locale; sw_KE
-
-expectedResult; Hassan
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; H
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Maria
-name ; surname; Hasani
-name ; locale; sw_KE
-
-expectedResult; Hasani, Maria
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Hasani Maria
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Maria Hasani
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Hasani, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Hasani M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; M. Hasani
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hasani
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Maria
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; HM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; MH
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; H
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Ali
-name ; given2; Juma
-name ; surname; Hamisi
-name ; locale; sw_KE
-
-expectedResult; Hamisi, Ali Juma
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Ali Juma Hamisi
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Hamisi Ali Juma
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Hamisi, Ali J.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ali J. Hamisi
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Hamisi Ali J.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Hamisi, A. J.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. J. Hamisi
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hamisi A. J.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Hamisi, Ali
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ali Hamisi
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Hamisi Ali
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Hamisi A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Hamisi
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; AJH
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; Ali
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; HAJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AH
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; HA
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; H
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Bw.
-name ; given; Adam Juma
-name ; given-informal; Bita
-name ; given2; Agape Shukurani
-name ; surname-core; Masalu
-name ; generation; Jr
-name ; credentials; MB
-name ; locale; sw_KE
-
-expectedResult; Bw. Adam Juma Agape Shukurani Masalu MB
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Adam Juma Agape Shukurani Masalu MB
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Masalu Adam Juma Agape Shukurani MB
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Masalu, Adam Juma Agape Shukurani
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adam Juma A. S. Masalu Jr, MB
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Masalu Adam Juma A. S. MB
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Masalu, Adam Juma A. S.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Masalu, A. J. A. S.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. J. A. S. Masalu
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Masalu A. J. A. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Masalu A. J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Masalu, Bita
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bita Masalu
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Masalu Bita
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bw. Masalu
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bita
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MAA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Kevin
-name ; locale; ko_AQ
-
-expectedResult; Kevin
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; K
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; John
-name ; surname; Mkwawa
-name ; locale; ko_AQ
-
-expectedResult; Mkwawa, John
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; John Mkwawa
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Mkwawa John
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Mkwawa, J.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. Mkwawa
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Mkwawa J.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mkwawa
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; John
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MJ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zamara
-name ; given2; Imani
-name ; surname; Bukenya
-name ; locale; ko_AQ
-
-expectedResult; Bukenya, Zamara Imani
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bukenya Zamara Imani
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zamara Imani Bukenya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bukenya, Zamara I.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Bukenya Zamara I.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zamara I. Bukenya
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Bukenya, Zamara
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bukenya Zamara
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bukenya, Z. I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Zamara Bukenya
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Bukenya Z. I.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. I. Bukenya
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Bukenya Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bukenya
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Zamara
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BZI
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZIB
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; BZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZB
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dk.
-name ; given; Salima
-name ; given-informal; Sarah
-name ; given2; Farida
-name ; surname-prefix; mwana
-name ; surname-core; Hamisi
-name ; surname2; Musa
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dk. Salima Farida mwana Hamisi Musa M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; mwana Hamisi Salima Farida M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Salima F. mwana Hamisi Jr, M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Salima Farida mwana Hamisi M.D. Ph.D.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; mwana Hamisi Salima F. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Hamisi, Salima Farida mwana
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Hamisi, Salima F. mwana
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof. Dk. mwana Hamisi
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Hamisi, S. F. mwana
-
-parameters; sorting; short; referring; formal
-
-expectedResult; mwana Hamisi, Sarah
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; mwana Hamisi S. F.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; mwana Hamisi Sarah
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. F. mwana Hamisi
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sarah mwana Hamisi
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; mwana Hamisi S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sarah
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSF
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SFM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ta.txt b/icu4c/source/test/testdata/cldr/personNameTest/ta.txt
index 37cc63ea2..8df191397 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ta.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ta.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ta
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/te.txt b/icu4c/source/test/testdata/cldr/personNameTest/te.txt
index 4e7b4dc1a..a4d7825b6 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/te.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/te.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: te
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/tg.txt b/icu4c/source/test/testdata/cldr/personNameTest/tg.txt
index e5e8f9424..fc22a6479 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/tg.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/tg.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tg
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/th.txt b/icu4c/source/test/testdata/cldr/personNameTest/th.txt
index 8ae86cbb3..fe9094ccd 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/th.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/th.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: th
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ti.txt b/icu4c/source/test/testdata/cldr/personNameTest/ti.txt
index fc4873880..272692bd8 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ti.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ti.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ti
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/tk.txt b/icu4c/source/test/testdata/cldr/personNameTest/tk.txt
index 25434d2a9..465f168c5 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/tk.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/tk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tk
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/tr.txt b/icu4c/source/test/testdata/cldr/personNameTest/tr.txt
index f04baa7b0..153de5121 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/tr.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/tr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tr
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/uk.txt b/icu4c/source/test/testdata/cldr/personNameTest/uk.txt
index eb599d84e..92e0f719e 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/uk.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/uk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: uk
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/ur.txt b/icu4c/source/test/testdata/cldr/personNameTest/ur.txt
index 019584587..b6798fc66 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/ur.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/ur.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ur
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/uz.txt b/icu4c/source/test/testdata/cldr/personNameTest/uz.txt
index 07ab62850..b99dab8d2 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/uz.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/uz.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: uz
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/vi.txt b/icu4c/source/test/testdata/cldr/personNameTest/vi.txt
index 895483649..a7c40d22d 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/vi.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/vi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: vi
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/wo.txt b/icu4c/source/test/testdata/cldr/personNameTest/wo.txt
index e16f3cffd..4e5e580b2 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/wo.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/wo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: wo
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/yo.txt b/icu4c/source/test/testdata/cldr/personNameTest/yo.txt
index fcb09dc7e..80c4c6ac9 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/yo.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/yo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yo
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/yo_BJ.txt b/icu4c/source/test/testdata/cldr/personNameTest/yo_BJ.txt
deleted file mode 100644
index 2acd74764..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/yo_BJ.txt
+++ /dev/null
@@ -1,809 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: yo_BJ
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Boluwatife
-name ; locale; yo_BJ
-
-expectedResult; Boluwatife
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; B
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Olabisi
-name ; surname; Adeboye
-name ; locale; yo_BJ
-
-expectedResult; Adeboye, Olabisi
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adeboye Olabisi
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Olabisi Adeboye
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adeboye, O.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adeboye O.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; O. Adeboye
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Olabisi A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adeboye
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Olabisi
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AO
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; OA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; O
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Adeolu
-name ; given2; Adegboyega
-name ; surname; Akintola
-name ; locale; yo_BJ
-
-expectedResult; Akintola, Adeolu Adegboyega
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adeolu Adegboyega Akintola
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Akintola Adeolu Adegboyega
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Akintola, Adeolu A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Adeolu A. Akintola
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Akintola Adeolu A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Akintola, Adeolu
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adeolu Akintola
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Akintola Adeolu
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Akintola, A. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. A. Akintola
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Akintola A. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Akintola A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Adeolu A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Akintola
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Adeolu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAA
-
-parameters; givenFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AA
-
-parameters; givenFirst; long; monogram; informal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; Ɔ̀gbɛ́ni
-name ; given; Adebola Opeyemi
-name ; given-informal; Bolanle
-name ; given2; Olumide Ajao
-name ; surname-core; Adekunle
-name ; generation; Jr
-name ; credentials; Asofin
-name ; locale; yo_BJ
-
-expectedResult; Adebola Opeyemi Olumide Ajao Adekunle Asofin
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Adekunle Adebola Opeyemi Olumide Ajao Asofin
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Adekunle, Adebola Opeyemi Olumide Ajao
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adebola Opeyemi O. A. Adekunle Asofin
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Adekunle Adebola Opeyemi O. A. Asofin
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Adekunle, Adebola Opeyemi O. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Adekunle, A. O. O. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. O. O. A. Adekunle
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Adekunle A. O. O. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Adekunle, Bolanle
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ɔ̀gbɛ́ni Adekunle
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Adekunle Bolanle
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bolanle Adekunle
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adekunle A. O.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bolanle A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bolanle
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAO
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AOA
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; AB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; BA
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Ɔ̀jɔ̀gbɔ́n Ɔ̀mɔ̀wé
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Ada Cornelia César Martín von Brühl M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Ada Cornelia César Martín M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C. M. von Brühl M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C. M. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C. M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ɔ̀jɔ̀gbɔ́n Ɔ̀mɔ̀wé von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Brühl, A. C. C. M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. C. C. M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A. C. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/yue.txt b/icu4c/source/test/testdata/cldr/personNameTest/yue.txt
index 845bd7b19..59d7ee8be 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/yue.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/yue.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yue
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/yue_Hans.txt b/icu4c/source/test/testdata/cldr/personNameTest/yue_Hans.txt
index ff6d98760..3d7422817 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/yue_Hans.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/yue_Hans.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yue_Hans
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/zh.txt b/icu4c/source/test/testdata/cldr/personNameTest/zh.txt
index 1fa6bd3dc..786e7cedd 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/zh.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/zh.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zh
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/zh_Hant.txt b/icu4c/source/test/testdata/cldr/personNameTest/zh_Hant.txt
index 18698d5bf..ad0e8f1bf 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/zh_Hant.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/zh_Hant.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zh_Hant
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/zh_Hant_HK.txt b/icu4c/source/test/testdata/cldr/personNameTest/zh_Hant_HK.txt
deleted file mode 100644
index 34596362e..000000000
--- a/icu4c/source/test/testdata/cldr/personNameTest/zh_Hant_HK.txt
+++ /dev/null
@@ -1,712 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: zh_Hant_HK
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; 文傑
-name ; locale; zh_Hant_HK
-
-expectedResult; 文傑
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 文
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; 雅婷
-name ; surname; 張
-name ; locale; zh_Hant_HK
-
-expectedResult; 張雅.婷.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 雅婷張.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 張雅婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷張
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 張雅
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 雅張
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 張
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; 家豪
-name ; given2; 明德
-name ; surname; 林
-name ; locale; zh_Hant_HK
-
-expectedResult; 林家.豪.明.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 家豪明德林
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 林家.豪.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 林家豪明.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 林家豪明德
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; 家豪林.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 家明林
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 家豪林
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 林家明
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 林家豪
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 家豪
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 家
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 林
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; 先生
-name ; given; 雅婷
-name ; given-informal; 婷婷
-name ; given2; 婷婷
-name ; surname-core; 王
-name ; generation; 二世
-name ; credentials; 議員
-name ; locale; zh_Hant_HK
-
-expectedResult; 先生雅婷婷婷王二世,議員
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 王雅婷婷.二世,議員
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 王雅婷婷婷二世議員
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; 王雅.婷.婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王雅.婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王雅婷婷婷
-
-parameters; sorting; long; referring; formal
-
-expectedResult; 婷婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 婷婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 王先生
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; 王婷婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 婷婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 婷
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 王
-
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; 雅婷
-name ; locale; fr_AQ
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; 雅婷
-name ; surname; 王
-name ; locale; fr_AQ
-
-expectedResult; 王·雅.·婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王雅.·婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王·雅婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷·王
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 雅婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 王雅
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 雅王
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 王
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; 雅婷
-name ; given2; 婷婷
-name ; surname; 王
-name ; locale; fr_AQ
-
-expectedResult; 王·雅.·婷.·婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王·雅婷·婷婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; 雅婷·婷婷·王
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 王雅.·婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王雅婷婷.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 王·雅婷
-
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 王
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; 博士
-name ; given; 怡君
-name ; given-informal; 小君
-name ; given2; 達印
-name ; surname-prefix; 馮
-name ; surname-core; 陳
-name ; generation; 二世
-name ; credentials; 醫學博士
-name ; locale; fr_AQ
-
-expectedResult; 博士·怡君·達印·馮·陳·二世,·醫學博士
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 馮·陳怡君達.·印.二世,醫學博士
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 馮·陳·怡君·達印·二世醫學博士
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; 馮·陳·怡.·君.·達.·印.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 馮·陳·怡君·達印
-
-parameters; sorting; long; referring; formal
-
-expectedResult; 馮·陳怡.·君.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 小君馮.·陳.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 馮·陳·博士
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; 馮·陳·小君
-
-parameters; sorting; short; referring; informal
-
-expectedResult; 馮·陳·怡君
-
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; 小君馮·陳
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 馮·陳博士
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; 馮·陳小君
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 怡達馮
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 馮怡達
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 小君
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 小
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 馮
-
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4c/source/test/testdata/cldr/personNameTest/zu.txt b/icu4c/source/test/testdata/cldr/personNameTest/zu.txt
index e9c2b0db5..2b76af487 100644
--- a/icu4c/source/test/testdata/cldr/personNameTest/zu.txt
+++ b/icu4c/source/test/testdata/cldr/personNameTest/zu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zu
#
# Test lines have the following structure:
diff --git a/icu4c/source/test/testdata/cldr/units/unitLocalePreferencesTest.txt b/icu4c/source/test/testdata/cldr/units/unitLocalePreferencesTest.txt
new file mode 100644
index 000000000..1922607f9
--- /dev/null
+++ b/icu4c/source/test/testdata/cldr/units/unitLocalePreferencesTest.txt
@@ -0,0 +1,42 @@
+# Test data for unit locale preferences
+# Copyright © 1991-2024 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-3.0
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+# input-unit; amount; usage; languageTag; expected-unit; expected-amount # comment
+#
+# • The amounts are both rationals
+# • The comment is optional (if it isn't present the # can be omitted)
+#
+# Use: Convert the Input amount & unit according to the Usage and Locale.
+# The result should match the Expected amount and unit.
+#
+# The input and expected output units are unit identifers; in particular, the output does not have further processing:
+# • no localization
+#
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-ussystem-mu-celsius; celsius; -155/9 # mu > ms > rg > (likely) region
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-ussystem-mu-celsius; celsius; -155/9
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-metric; celsius; -155/9
+fahrenheit; 1; default; en-u-rg-dezzzz; celsius; -155/9
+fahrenheit; 1; default; en-DE; celsius; -155/9 # explicit region > likely region
+fahrenheit; 1; default; en-US; fahrenheit; 1
+fahrenheit; 1; default; en; fahrenheit; 1 # likely region = US
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz-ms-metric; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-u-rg-dezzzz; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-DE; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-US-u-rg-uszzzz-ms-uksystem; gallon-imperial; 2.5 # ms-uksystem should behave like GB
+gallon-imperial; 2.5; fluid; en-u-rg-gbzzzz; gallon-imperial; 2.5
+gallon-imperial; 2.5; fluid; en-GB; gallon-imperial; 2.5
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz-ms-ussystem; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en-US; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en; gallon; 1,420,653,125/473176473 # likely region = US
+ampere; 2.5; default; en; ampere; 2.5 # an input unit whose quantity has no preference data should get base units
+pound-force-foot; 12,345; default; en; kilowatt-hour; 0.004649325714486427205
+kilocandela; 1; default; en; candela; 1,000 # an input unit whose quantity has no preference data should get base units
+candela-per-byte; 1; default; en; candela-per-bit; 0.125 # an input unit that has no quantity should get base units
+candela-per-cubic-foot; 1; default; en; candela-per-cubic-meter; 1,953,125,000/55306341 # an input unit that has no quantity should get base units
+foot; 1; default; de-u-mu-celsius; centimeter; 30.48 # a -mu unit that is not convertible from the input unit should get ignored
+#pound; 28; default; en-u-mu-stone; stone; 2 # only temperature units are supported
diff --git a/icu4c/source/test/testdata/cldr/units/unitPreferencesTest.txt b/icu4c/source/test/testdata/cldr/units/unitPreferencesTest.txt
index 61abdcafd..dbf3ce4d4 100644
--- a/icu4c/source/test/testdata/cldr/units/unitPreferencesTest.txt
+++ b/icu4c/source/test/testdata/cldr/units/unitPreferencesTest.txt
@@ -1,8 +1,8 @@
# Test data for unit preferences
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -22,7 +22,7 @@
# • no formatted with the skeleton
# • no suppression of zero values (for secondary -and- units such as pound in stone-and-pound)
#
-# Generation: Set GENERATE_TESTS in TestUnits.java to regenerate unitPreferencesTest.txt.
+# Generation: Use GenerateUnitTestData.java to regenerate unitPreferencesTest.txt.
area; default; 001; 1100000; 1100000.0; square-meter; 11/10; 1.1; square-kilometer
area; default; 001; 1000000; 1000000.0; square-meter; 1; 1.0; square-kilometer
diff --git a/icu4c/source/test/testdata/cldr/units/unitsTest.txt b/icu4c/source/test/testdata/cldr/units/unitsTest.txt
index 233a9304e..8999a44f8 100644
--- a/icu4c/source/test/testdata/cldr/units/unitsTest.txt
+++ b/icu4c/source/test/testdata/cldr/units/unitsTest.txt
@@ -1,7 +1,7 @@
# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -12,7 +12,7 @@
# round to 4 decimal digits before comparing.
# Note that certain conversions are approximate, such as degrees to radians
#
-# Generation: Set GENERATE_TESTS in TestUnits.java to regenerate unitsTest.txt.
+# Generation: Use GenerateUnitTestData.java to regenerate unitsTest.txt.
acceleration ; meter-per-square-second ; meter-per-square-second ; 1 * x ; 1,000.00
acceleration ; g-force ; meter-per-square-second ; 9.80665 * x ; 9806.65
@@ -182,6 +182,7 @@ resolution ; pixel-per-inch ; pixel-per-meter ; 5,000/127 * x ; 39370.08
resolution ; dot-per-centimeter ; pixel-per-meter ; 100 * x ; 100000.0
resolution ; pixel-per-centimeter ; pixel-per-meter ; 100 * x ; 100000.0
solid-angle ; steradian ; square-revolution ; 4,290,444,930,214,144/169379976663492169 * x ; 25.3303
+speed ; beaufort ; meter-per-second ; special:beaufort(x) ; 58.6
speed ; kilometer-per-hour ; meter-per-second ; 2.5/9 * x ; 277.7778
speed ; mile-per-hour ; meter-per-second ; 0.44704 * x ; 447.04
speed ; knot ; meter-per-second ; 4.63/9 * x ; 514.4444
@@ -189,9 +190,9 @@ speed ; meter-per-second ; meter-per-second ; 1 * x ; 1,000.00
substance-amount ; item ; item ; 1 * x ; 1,000.00
substance-amount ; mole ; item ; 602,214,076,000,000,000,000,000 * x ; 6.022141E26
temperature ; rankine ; kelvin ; 5/9 * x ; 555.5556
-temperature ; fahrenheit ; kelvin ; 5/9 * x - 2,298.35/9 ; 810.9278
+temperature ; fahrenheit ; kelvin ; 5/9 * x + 2,298.35/9 ; 810.9278
temperature ; kelvin ; kelvin ; 1 * x ; 1,000.00
-temperature ; celsius ; kelvin ; 1 * x - 273.15 ; 1273.15
+temperature ; celsius ; kelvin ; 1 * x + 273.15 ; 1273.15
typewidth ; em ; em ; 1 * x ; 1,000.00
voltage ; volt ; kilogram-square-meter-per-cubic-second-ampere ; 1 * x ; 1000.0
volume ; drop ; cubic-meter ; 0.0000001540287998046875/3 * x ; 5.134293E-5
diff --git a/icu4c/source/test/testdata/collationtest.txt b/icu4c/source/test/testdata/collationtest.txt
index abda337e5..b486fa3e5 100644
--- a/icu4c/source/test/testdata/collationtest.txt
+++ b/icu4c/source/test/testdata/collationtest.txt
@@ -1479,13 +1479,21 @@
# Latvian sort order.
@ locale lv
* compare
+< az
+< ā
+< b
< cz
< č
< d
+< ez
+< ē
+< f
< gz
< ģ
< h
< iz
+< y
+< ī
< j
< kz
< ķ
@@ -1496,12 +1504,18 @@
< nz
< ņ
< o
+< oz
+< ō
+< p
< rz
< ŗ
< s
< sz
< š
< t
+< uz
+< ū
+< v
< zz
< ž
diff --git a/icu4c/source/test/testdata/out/build/ibm9027.cnv b/icu4c/source/test/testdata/out/build/ibm9027.cnv
index 566a3994b..04c852aec 100644
--- a/icu4c/source/test/testdata/out/build/ibm9027.cnv
+++ b/icu4c/source/test/testdata/out/build/ibm9027.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/root.res b/icu4c/source/test/testdata/out/build/root.res
index 22d05c320..476076510 100644
--- a/icu4c/source/test/testdata/out/build/root.res
+++ b/icu4c/source/test/testdata/out/build/root.res
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/structLocale.res b/icu4c/source/test/testdata/out/build/structLocale.res
index 8646521c5..2278a3b7f 100644
--- a/icu4c/source/test/testdata/out/build/structLocale.res
+++ b/icu4c/source/test/testdata/out/build/structLocale.res
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test1.cnv b/icu4c/source/test/testdata/out/build/test1.cnv
index 666398e0a..ce91ef36a 100644
--- a/icu4c/source/test/testdata/out/build/test1.cnv
+++ b/icu4c/source/test/testdata/out/build/test1.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test1bmp.cnv b/icu4c/source/test/testdata/out/build/test1bmp.cnv
index e8b4f0e19..074452cf4 100644
--- a/icu4c/source/test/testdata/out/build/test1bmp.cnv
+++ b/icu4c/source/test/testdata/out/build/test1bmp.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test2.cnv b/icu4c/source/test/testdata/out/build/test2.cnv
index 4077a01ba..650dc457a 100644
--- a/icu4c/source/test/testdata/out/build/test2.cnv
+++ b/icu4c/source/test/testdata/out/build/test2.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test3.cnv b/icu4c/source/test/testdata/out/build/test3.cnv
index ae78c7b23..74d114901 100644
--- a/icu4c/source/test/testdata/out/build/test3.cnv
+++ b/icu4c/source/test/testdata/out/build/test3.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test4.cnv b/icu4c/source/test/testdata/out/build/test4.cnv
index d68ed2ce0..9889b811a 100644
--- a/icu4c/source/test/testdata/out/build/test4.cnv
+++ b/icu4c/source/test/testdata/out/build/test4.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test4x.cnv b/icu4c/source/test/testdata/out/build/test4x.cnv
index 752b43a97..cf1f45886 100644
--- a/icu4c/source/test/testdata/out/build/test4x.cnv
+++ b/icu4c/source/test/testdata/out/build/test4x.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test5.cnv b/icu4c/source/test/testdata/out/build/test5.cnv
index 0416b39d8..e7550e2de 100644
--- a/icu4c/source/test/testdata/out/build/test5.cnv
+++ b/icu4c/source/test/testdata/out/build/test5.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/testdata.dat b/icu4c/source/test/testdata/out/testdata.dat
index 524c5e341..9ddb71407 100644
--- a/icu4c/source/test/testdata/out/testdata.dat
+++ b/icu4c/source/test/testdata/out/testdata.dat
Binary files differ
diff --git a/icu4c/source/test/testdata/root.txt b/icu4c/source/test/testdata/root.txt
index 1d846c495..e7790ee3a 100644
--- a/icu4c/source/test/testdata/root.txt
+++ b/icu4c/source/test/testdata/root.txt
@@ -12,9 +12,9 @@
root
{
- Version { 44.0 }
- ExpectCLDRVersionAtLeast { 44.1 } // 'base' cldr version. Allow up to version =.=.* of this
- CurrentCLDRVersion { 44.1 } // Current CLDR version as of the test update. Warn if not an exact match.
+ Version { 45.0 }
+ ExpectCLDRVersionAtLeast { 45.0 } // 'base' cldr version. Allow up to version =.=.* of this
+ CurrentCLDRVersion { 45.0 } // Current CLDR version as of the test update. Warn if not an exact match.
ShortLanguage { xxx }
diff --git a/icu4c/source/test/testdata/ssearch.xml b/icu4c/source/test/testdata/ssearch.xml
index c9fc6d379..5db21ba06 100644
--- a/icu4c/source/test/testdata/ssearch.xml
+++ b/icu4c/source/test/testdata/ssearch.xml
@@ -83,7 +83,7 @@
</test-case>
- <!-- Test cases from usrchdat.c BREAKITERATOREXACT -->
+ <!-- Test cases from usrchdat.inc BREAKITERATOREXACT -->
<test-case id="test10" strength="TERTIARY">
<pattern>fox</pattern>
@@ -116,7 +116,7 @@
</test-case>
- <!-- Test cases from usrchdat.c STRENGTH -->
+ <!-- Test cases from usrchdat.inc STRENGTH -->
<test-case id="test15" strength="PRIMARY" locale="en">
@@ -195,7 +195,7 @@
</test-case>
- <!-- Test Cases from usrchdat.c, VARIABLE -->
+ <!-- Test Cases from usrchdat.inc, VARIABLE -->
<test-case id="test27" strength="TERTIARY" locale="en">
<pattern>blackbird</pattern>
<pre>black-bird </pre><m>blackbird</m><post>...</post>
@@ -226,7 +226,7 @@
</test-case>
- <!-- Normalization test cases from usrchdat.c -->
+ <!-- Normalization test cases from usrchdat.inc -->
<test-case id="test32" strength="TERTIARY" norm="ON">
<pattern>a\u0325\u0300</pattern>
<pre></pre><m>a\u0300\u0325</m>
@@ -239,7 +239,7 @@
</test-case>
- <!-- COMPOSITEBOUNDARIES from usrchdat.c
+ <!-- COMPOSITEBOUNDARIES from usrchdat.inc
Boundaries are not identical to original test data because
of matching only full combining sequences
-->
@@ -260,7 +260,7 @@
- <!-- SUPPLEMENTARYCANONICAL from usrchdat.c -->
+ <!-- SUPPLEMENTARYCANONICAL from usrchdat.inc -->
<test-case id="test50" strength="TERTIARY">
<pattern>\uD800\uDC00</pattern>
<pre>abc \uD802\uDC00 \uD800\uDC01 \uD801\uDC00 </pre><m>\uD800\uDC00</m>
diff --git a/icu4c/source/test/testdata/structLocale.txt b/icu4c/source/test/testdata/structLocale.txt
index 0f14f8bf6..e808de227 100644
--- a/icu4c/source/test/testdata/structLocale.txt
+++ b/icu4c/source/test/testdata/structLocale.txt
@@ -1437,6 +1437,10 @@ structLocale:table(nofallback){
"",
"",
}
+ XCG{
+ "",
+ "",
+ }
XDR{
"",
"",
@@ -3843,6 +3847,14 @@ structLocale:table(nofallback){
many{""}
other{""}
}
+ XCG{
+ zero{""}
+ one{""}
+ two{""}
+ few{""}
+ many{""}
+ other{""}
+ }
XDR{
zero{""}
one{""}
diff --git a/icu4c/source/test/thaitest/thaitest.cpp b/icu4c/source/test/thaitest/thaitest.cpp
index f377b3aaf..966fa935f 100644
--- a/icu4c/source/test/thaitest/thaitest.cpp
+++ b/icu4c/source/test/thaitest/thaitest.cpp
@@ -20,6 +20,12 @@
#include "unicode/uniset.h"
#include "unicode/ustring.h"
+using icu::BreakIterator;
+using icu::Locale;
+using icu::UCharCharacterIterator;
+using icu::UnicodeSet;
+using icu::UnicodeString;
+
/*
* This program takes a Unicode text file containing Thai text with
* spaces inserted where the word breaks are. It computes a copy of
@@ -316,7 +322,7 @@ const char16_t *ThaiWordbreakTest::readFile(char *fileName, int32_t &charCount)
if( f == nullptr ) {
fprintf(stderr,"Couldn't open %s reason: %s \n", fileName, strerror(errno));
- return 0;
+ return nullptr;
}
fseek(f, 0, SEEK_END);
@@ -324,11 +330,11 @@ const char16_t *ThaiWordbreakTest::readFile(char *fileName, int32_t &charCount)
fseek(f, 0, SEEK_SET);
bufferChars = new char[fileSize];
-
- if(bufferChars == 0) {
+
+ if (bufferChars == nullptr) {
fprintf(stderr,"Couldn't get memory for reading %s reason: %s \n", fileName, strerror(errno));
fclose(f);
- return 0;
+ return nullptr;
}
fread(bufferChars, sizeof(char), fileSize, f);
@@ -336,7 +342,7 @@ const char16_t *ThaiWordbreakTest::readFile(char *fileName, int32_t &charCount)
fprintf(stderr,"Couldn't read %s reason: %s \n", fileName, strerror(errno));
fclose(f);
delete[] bufferChars;
- return 0;
+ return nullptr;
}
fclose(f);
@@ -346,9 +352,9 @@ const char16_t *ThaiWordbreakTest::readFile(char *fileName, int32_t &charCount)
charCount = myText.length();
buffer = new char16_t[charCount];
- if(buffer == 0) {
+ if (buffer == nullptr) {
fprintf(stderr,"Couldn't get memory for reading %s reason: %s \n", fileName, strerror(errno));
- return 0;
+ return nullptr;
}
myText.extract(1, myText.length(), buffer);
@@ -379,9 +385,9 @@ const char16_t *ThaiWordbreakTest::crunchSpaces(const char16_t *spaces, int32_t
nonSpaceCount = count - spaceCount;
char16_t *noSpaces = new char16_t[nonSpaceCount];
- if (noSpaces == 0) {
+ if (noSpaces == nullptr) {
fprintf(stderr, "Couldn't allocate memory for the space stripped text.\n");
- return 0;
+ return nullptr;
}
for (out = 0, i = 0; i < count; i += 1) {
@@ -468,7 +474,7 @@ int main(int argc, char **argv)
spaces = ThaiWordbreakTest::readFile(fileName, spaceCount);
- if (spaces == 0) {
+ if (spaces == nullptr) {
return 1;
}
@@ -478,7 +484,7 @@ int main(int argc, char **argv)
noSpaces = ThaiWordbreakTest::crunchSpaces(spaces, spaceCount, nonSpaceCount);
- if (noSpaces == 0) {
+ if (noSpaces == nullptr) {
return 1;
}
@@ -496,7 +502,7 @@ int main(int argc, char **argv)
* word instance of a BreakIterator.
*/
SpaceBreakIterator::SpaceBreakIterator(const char16_t *text, int32_t count)
- : fBreakIter(0), fText(text), fTextCount(count), fWordCount(0), fSpaceCount(0), fDone(false)
+ : fBreakIter(nullptr), fText(text), fTextCount(count), fWordCount(0), fSpaceCount(0), fDone(false)
{
UCharCharacterIterator *iter = new UCharCharacterIterator(text, count);
UErrorCode status = U_ZERO_ERROR;
diff --git a/icu4c/source/tools/ctestfw/ctest.c b/icu4c/source/tools/ctestfw/ctest.c
index 17413d768..c6dd61ea8 100644
--- a/icu4c/source/tools/ctestfw/ctest.c
+++ b/icu4c/source/tools/ctestfw/ctest.c
@@ -675,27 +675,27 @@ static void go_offline_with_marker(const char *mrk) {
}
}
-static void go_offline() {
+static void go_offline(void) {
go_offline_with_marker(NULL);
}
-static void go_offline_err() {
+static void go_offline_err(void) {
go_offline();
}
-static void first_line_verbose() {
+static void first_line_verbose(void) {
go_offline_with_marker("v");
}
-static void first_line_err() {
+static void first_line_err(void) {
go_offline_with_marker("!");
}
-static void first_line_info() {
+static void first_line_info(void) {
go_offline_with_marker("\"");
}
-static void first_line_test() {
+static void first_line_test(void) {
fputs(" ", stdout);
}
diff --git a/icu4c/source/tools/ctestfw/ctestfw.vcxproj b/icu4c/source/tools/ctestfw/ctestfw.vcxproj
index f55c3f0b0..e92b5dd8a 100644
--- a/icu4c/source/tools/ctestfw/ctestfw.vcxproj
+++ b/icu4c/source/tools/ctestfw/ctestfw.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
<PrecompiledHeaderOutputFile>$(OutDir)/icutest.pch</PrecompiledHeaderOutputFile>
@@ -75,18 +74,10 @@
<ItemGroup>
<ClCompile Include="ctest.c" />
<ClCompile Include="datamap.cpp" />
- <ClCompile Include="testdata.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="tstdtmod.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="ucln_ct.c">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="uperf.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="testdata.cpp" />
+ <ClCompile Include="tstdtmod.cpp" />
+ <ClCompile Include="ucln_ct.c" />
+ <ClCompile Include="uperf.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="unicode\ctest.h" />
diff --git a/icu4c/source/tools/ctestfw/testdata.cpp b/icu4c/source/tools/ctestfw/testdata.cpp
index 2fb93381d..ad07ce04a 100644
--- a/icu4c/source/tools/ctestfw/testdata.cpp
+++ b/icu4c/source/tools/ctestfw/testdata.cpp
@@ -25,15 +25,9 @@ fCurrentCase(0)
}
TestData::~TestData() {
- if(fInfo != nullptr) {
- delete fInfo;
- }
- if(fCurrSettings != nullptr) {
- delete fCurrSettings;
- }
- if(fCurrCase != nullptr) {
- delete fCurrCase;
- }
+ delete fInfo;
+ delete fCurrSettings;
+ delete fCurrCase;
}
const char * TestData::getName() const
diff --git a/icu4c/source/tools/ctestfw/tstdtmod.cpp b/icu4c/source/tools/ctestfw/tstdtmod.cpp
index 3ebe22466..649065164 100644
--- a/icu4c/source/tools/ctestfw/tstdtmod.cpp
+++ b/icu4c/source/tools/ctestfw/tstdtmod.cpp
@@ -161,9 +161,7 @@ fLog(log)
}
TestDataModule::~TestDataModule() {
- if(fInfo != nullptr) {
- delete fInfo;
- }
+ delete fInfo;
}
const char * TestDataModule::getName() const
diff --git a/icu4c/source/tools/ctestfw/unicode/utimer.h b/icu4c/source/tools/ctestfw/unicode/utimer.h
index 10f80833c..8fa7fad94 100644
--- a/icu4c/source/tools/ctestfw/unicode/utimer.h
+++ b/icu4c/source/tools/ctestfw/unicode/utimer.h
@@ -197,7 +197,7 @@ static int32_t uprv_initFrequency(UTimer* /*timer*/)
}
static void uprv_start(UTimer* timer)
{
- gettimeofday(&timer->start, 0);
+ gettimeofday(&timer->start, nullptr);
}
static double uprv_delta(UTimer* timer1, UTimer* timer2){
double t1, t2;
diff --git a/icu4c/source/tools/ctestfw/uperf.cpp b/icu4c/source/tools/ctestfw/uperf.cpp
index 9e92b7714..ddd36c342 100644
--- a/icu4c/source/tools/ctestfw/uperf.cpp
+++ b/icu4c/source/tools/ctestfw/uperf.cpp
@@ -518,9 +518,7 @@ UBool UPerfTest::callTest( UPerfTest& testToBeCalled, char* par )
}
UPerfTest::~UPerfTest(){
- if(lines!=nullptr){
- delete[] lines;
- }
+ delete[] lines;
if(buffer!=nullptr){
uprv_free(buffer);
}
diff --git a/icu4c/source/tools/escapesrc/tblgen.cpp b/icu4c/source/tools/escapesrc/tblgen.cpp
index dce4af686..cc43c083e 100644
--- a/icu4c/source/tools/escapesrc/tblgen.cpp
+++ b/icu4c/source/tools/escapesrc/tblgen.cpp
@@ -6,6 +6,9 @@
#include "unicode/uniset.h"
#include <stdio.h>
+using icu::LocalUConverterPointer;
+using icu::UnicodeSet;
+
static const char *kConverter = "ibm-1047";
int main(int argc, const char *argv[]) {
diff --git a/icu4c/source/tools/genbrk/genbrk.cpp b/icu4c/source/tools/genbrk/genbrk.cpp
index 4cee4e12c..c6c35d537 100644
--- a/icu4c/source/tools/genbrk/genbrk.cpp
+++ b/icu4c/source/tools/genbrk/genbrk.cpp
@@ -208,7 +208,7 @@ int main(int argc, char **argv) {
char *ruleBufferC;
file = fopen(ruleFileName, "rb");
- if( file == 0 ) {
+ if (file == nullptr) {
fprintf(stderr, "Could not open file \"%s\"\n", ruleFileName);
exit(-1);
}
diff --git a/icu4c/source/tools/genbrk/genbrk.vcxproj b/icu4c/source/tools/genbrk/genbrk.vcxproj
index 44cb00ed8..4374b272f 100644
--- a/icu4c/source/tools/genbrk/genbrk.vcxproj
+++ b/icu4c/source/tools/genbrk/genbrk.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/genbrk.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/genccode/genccode.vcxproj b/icu4c/source/tools/genccode/genccode.vcxproj
index aad028f8c..d9c1a7944 100644
--- a/icu4c/source/tools/genccode/genccode.vcxproj
+++ b/icu4c/source/tools/genccode/genccode.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/genccode.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/gencfu/gencfu.cpp b/icu4c/source/tools/gencfu/gencfu.cpp
index 543cd76af..aa2d1b1f1 100644
--- a/icu4c/source/tools/gencfu/gencfu.cpp
+++ b/icu4c/source/tools/gencfu/gencfu.cpp
@@ -307,7 +307,7 @@ int main(int argc, char **argv) {
FILE *file;
file = fopen(fileName, "rb");
- if( file == 0 ) {
+ if (file == nullptr) {
return nullptr;
}
fseek(file, 0, SEEK_END);
diff --git a/icu4c/source/tools/gencfu/gencfu.vcxproj b/icu4c/source/tools/gencfu/gencfu.vcxproj
index 4018d5078..c59d82de8 100644
--- a/icu4c/source/tools/gencfu/gencfu.vcxproj
+++ b/icu4c/source/tools/gencfu/gencfu.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)\gencfu.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/gencmn/gencmn.vcxproj b/icu4c/source/tools/gencmn/gencmn.vcxproj
index 94c18b6ac..c6047cc9e 100644
--- a/icu4c/source/tools/gencmn/gencmn.vcxproj
+++ b/icu4c/source/tools/gencmn/gencmn.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/gencmn.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/gencnval/gencnval.c b/icu4c/source/tools/gencnval/gencnval.c
index 54b41fb57..ede356af7 100644
--- a/icu4c/source/tools/gencnval/gencnval.c
+++ b/icu4c/source/tools/gencnval/gencnval.c
@@ -844,7 +844,6 @@ resolveAliasToConverter(uint16_t alias, uint16_t *tagNum, uint16_t *converterNum
fprintf(stderr, "%s: warning: alias %s not found\n",
path,
GET_ALIAS_STR(alias));
- return;
}
/* The knownAliases should be sorted before calling this function */
diff --git a/icu4c/source/tools/gencnval/gencnval.vcxproj b/icu4c/source/tools/gencnval/gencnval.vcxproj
index 8e3b7bab4..df37a88f2 100644
--- a/icu4c/source/tools/gencnval/gencnval.vcxproj
+++ b/icu4c/source/tools/gencnval/gencnval.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/gencnval.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/gencolusb/extract_unsafe_backwards.cpp b/icu4c/source/tools/gencolusb/extract_unsafe_backwards.cpp
index ee12e69f9..84980c7c8 100644
--- a/icu4c/source/tools/gencolusb/extract_unsafe_backwards.cpp
+++ b/icu4c/source/tools/gencolusb/extract_unsafe_backwards.cpp
@@ -14,6 +14,10 @@
#include "collationroot.h"
#include "collationtailoring.h"
+using icu::CollationCacheEntry;
+using icu::CollationRoot;
+using icu::UnicodeSet;
+
/**
* Define the type of generator to use. Choose one.
*/
diff --git a/icu4c/source/tools/gencolusb/verify_uset.cpp b/icu4c/source/tools/gencolusb/verify_uset.cpp
index 03a493048..67843462c 100644
--- a/icu4c/source/tools/gencolusb/verify_uset.cpp
+++ b/icu4c/source/tools/gencolusb/verify_uset.cpp
@@ -15,6 +15,9 @@
#include "collunsafe.h"
+using icu::Collator;
+using icu::Locale;
+using icu::UnicodeSet;
int main(int argc, const char *argv[]) {
puts("verify");
diff --git a/icu4c/source/tools/gendict/gendict.cpp b/icu4c/source/tools/gendict/gendict.cpp
index 995bd3272..2ad508eca 100644
--- a/icu4c/source/tools/gendict/gendict.cpp
+++ b/icu4c/source/tools/gendict/gendict.cpp
@@ -34,6 +34,7 @@
#include "ucbuf.h"
#include "toolutil.h"
#include "cstring.h"
+#include "writesrc.h"
#include <stdio.h>
#include <stdlib.h>
@@ -58,7 +59,8 @@ static UOption options[]={
{ "uchars", nullptr, nullptr, nullptr, '\1', UOPT_NO_ARG, 0}, /* 6 */
{ "bytes", nullptr, nullptr, nullptr, '\1', UOPT_NO_ARG, 0}, /* 7 */
{ "transform", nullptr, nullptr, nullptr, '\1', UOPT_REQUIRES_ARG, 0}, /* 8 */
- UOPTION_QUIET, /* 9 */
+ { "toml", nullptr, nullptr, nullptr, '\1', UOPT_NO_ARG, 0}, /* 9 */
+ UOPTION_QUIET, /* 10 */
};
enum arguments {
@@ -70,6 +72,7 @@ enum arguments {
ARG_UCHARS,
ARG_BYTES,
ARG_TRANSFORM,
+ ARG_TOML,
ARG_QUIET
};
@@ -90,7 +93,8 @@ static void usageAndDie(UErrorCode retCode) {
"\t--uchars output a UCharsTrie (mutually exclusive with -b!)\n"
"\t--bytes output a BytesTrie (mutually exclusive with -u!)\n"
"\t--transform the kind of transform to use (eg --transform offset-40A3,\n"
- "\t which specifies an offset transform with constant 0x40A3)\n",
+ "\t which specifies an offset transform with constant 0x40A3)\n"
+ "\t--toml output the trie in toml format (default is binary),\n",
u_getDataDirectory());
exit(retCode);
}
@@ -293,6 +297,8 @@ int main(int argc, char **argv) {
IcuToolErrorCode status("gendict/main()");
+ UBool isToml = options[ARG_TOML].doesOccur;
+
#if UCONFIG_NO_BREAK_ITERATION || UCONFIG_NO_FILE_IO
const char* outDir=nullptr;
@@ -417,38 +423,59 @@ int main(int argc, char **argv) {
exit(status.reset());
}
if (verbose) { puts("Opening output file..."); }
- UNewDataMemory *pData = udata_create(nullptr, nullptr, outFileName, &dataInfo, copyright, status);
- if (status.isFailure()) {
- fprintf(stderr, "gendict: could not open output file \"%s\", \"%s\"\n", outFileName, status.errorName());
- exit(status.reset());
- }
- if (verbose) { puts("Writing to output file..."); }
- int32_t indexes[DictionaryData::IX_COUNT] = {
- DictionaryData::IX_COUNT * sizeof(int32_t), 0, 0, 0, 0, 0, 0, 0
- };
- int32_t size = outDataSize + indexes[DictionaryData::IX_STRING_TRIE_OFFSET];
- indexes[DictionaryData::IX_RESERVED1_OFFSET] = size;
- indexes[DictionaryData::IX_RESERVED2_OFFSET] = size;
- indexes[DictionaryData::IX_TOTAL_SIZE] = size;
-
- indexes[DictionaryData::IX_TRIE_TYPE] = isBytesTrie ? DictionaryData::TRIE_TYPE_BYTES : DictionaryData::TRIE_TYPE_UCHARS;
- if (hasValues) {
- indexes[DictionaryData::IX_TRIE_TYPE] |= DictionaryData::TRIE_HAS_VALUES;
- }
+ if (isToml) {
+ FILE* f = fopen(outFileName, "w");
+ if (f == nullptr) {
+ fprintf(stderr, "gendict: could not open output file \"%s\"\n", outFileName);
+ exit(status.reset());
+ }
+ fprintf(f, "trie_type = \"%s\"\n", isBytesTrie ? "bytes" : "uchars");
+ fprintf(f, "has_values = %s\n", hasValues ? "true" : "false");
+ int32_t transform = dict.getTransform();
+ bool isOffset = (transform & DictionaryData::TRANSFORM_TYPE_MASK) == DictionaryData::TRANSFORM_TYPE_OFFSET;
+ int32_t offset = transform & DictionaryData::TRANSFORM_OFFSET_MASK;
+ fprintf(f, "transform_type = \"%s\"\n", isOffset ? "offset" : "none");
+ fprintf(f, "transform_offset = %d\n", offset);
+
+ usrc_writeArray(f, "trie_data = [\n ", outData, isBytesTrie ? 8 : 16, outDataSize, " ", "\n]\n");
- indexes[DictionaryData::IX_TRANSFORM] = dict.getTransform();
- udata_writeBlock(pData, indexes, sizeof(indexes));
- udata_writeBlock(pData, outData, outDataSize);
- size_t bytesWritten = udata_finish(pData, status);
- if (status.isFailure()) {
- fprintf(stderr, "gendict: error \"%s\" writing the output file\n", status.errorName());
- exit(status.reset());
- }
- if (bytesWritten != (size_t)size) {
- fprintf(stderr, "Error writing to output file \"%s\"\n", outFileName);
- exit(U_INTERNAL_PROGRAM_ERROR);
+ fclose(f);
+ } else {
+ UNewDataMemory *pData = udata_create(nullptr, nullptr, outFileName, &dataInfo, copyright, status);
+ if (status.isFailure()) {
+ fprintf(stderr, "gendict: could not open output file \"%s\", \"%s\"\n", outFileName, status.errorName());
+ exit(status.reset());
+ }
+
+ if (verbose) { puts("Writing to output file..."); }
+ int32_t indexes[DictionaryData::IX_COUNT] = {
+ DictionaryData::IX_COUNT * sizeof(int32_t), 0, 0, 0, 0, 0, 0, 0
+ };
+ int32_t size = outDataSize + indexes[DictionaryData::IX_STRING_TRIE_OFFSET];
+ indexes[DictionaryData::IX_RESERVED1_OFFSET] = size;
+ indexes[DictionaryData::IX_RESERVED2_OFFSET] = size;
+ indexes[DictionaryData::IX_TOTAL_SIZE] = size;
+
+ indexes[DictionaryData::IX_TRIE_TYPE] = isBytesTrie ? DictionaryData::TRIE_TYPE_BYTES : DictionaryData::TRIE_TYPE_UCHARS;
+ if (hasValues) {
+ indexes[DictionaryData::IX_TRIE_TYPE] |= DictionaryData::TRIE_HAS_VALUES;
+ }
+
+ indexes[DictionaryData::IX_TRANSFORM] = dict.getTransform();
+ udata_writeBlock(pData, indexes, sizeof(indexes));
+ udata_writeBlock(pData, outData, outDataSize);
+ size_t bytesWritten = udata_finish(pData, status);
+ if (status.isFailure()) {
+ fprintf(stderr, "gendict: error \"%s\" writing the output file\n", status.errorName());
+ exit(status.reset());
+ }
+
+ if (bytesWritten != (size_t)size) {
+ fprintf(stderr, "Error writing to output file \"%s\"\n", outFileName);
+ exit(U_INTERNAL_PROGRAM_ERROR);
+ }
}
if (!quiet) { printf("%s: done writing\t%s (%ds).\n", progName, outFileName, elapsedTime()); }
diff --git a/icu4c/source/tools/gendict/gendict.vcxproj b/icu4c/source/tools/gendict/gendict.vcxproj
index 42c1ba786..4c7795283 100644
--- a/icu4c/source/tools/gendict/gendict.vcxproj
+++ b/icu4c/source/tools/gendict/gendict.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)\gendict.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/gennorm2/gennorm2.vcxproj b/icu4c/source/tools/gennorm2/gennorm2.vcxproj
index 2f4129909..94534d291 100644
--- a/icu4c/source/tools/gennorm2/gennorm2.vcxproj
+++ b/icu4c/source/tools/gennorm2/gennorm2.vcxproj
@@ -49,7 +49,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)\gennorm2.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/genrb/derb.cpp b/icu4c/source/tools/genrb/derb.cpp
index 3b2828956..7ff877201 100644
--- a/icu4c/source/tools/genrb/derb.cpp
+++ b/icu4c/source/tools/genrb/derb.cpp
@@ -234,13 +234,13 @@ main(int argc, char* argv[]) {
if (thename) {
bundle = ures_openDirect(thename, locale.data(), &status);
} else {
- bundle = ures_open(fromICUData ? 0 : inputDir, locale.data(), &status);
+ bundle = ures_open(fromICUData ? nullptr : inputDir, locale.data(), &status);
}
if (U_SUCCESS(status)) {
UFILE *out = nullptr;
- const char *filename = 0;
- const char *ext = 0;
+ const char* filename = nullptr;
+ const char* ext = nullptr;
if (locale.isEmpty() || !tostdout) {
filename = findBasename(arg);
@@ -275,7 +275,7 @@ main(int argc, char* argv[]) {
}
// now, set the callback.
- ucnv_setFromUCallBack(u_fgetConverter(out), UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_C, 0, 0, &status);
+ ucnv_setFromUCallBack(u_fgetConverter(out), UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_C, nullptr, nullptr, &status);
if (U_FAILURE(status)) {
u_fprintf(ustderr, "%s: couldn't configure converter for encoding\n", pname);
u_fclose(ustderr);
diff --git a/icu4c/source/tools/genrb/derb.vcxproj b/icu4c/source/tools/genrb/derb.vcxproj
index f5ba9bf22..328766bcf 100644
--- a/icu4c/source/tools/genrb/derb.vcxproj
+++ b/icu4c/source/tools/genrb/derb.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/derb.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/genrb/errmsg.c b/icu4c/source/tools/genrb/errmsg.c
index a99d797ec..d0d9af357 100644
--- a/icu4c/source/tools/genrb/errmsg.c
+++ b/icu4c/source/tools/genrb/errmsg.c
@@ -42,19 +42,19 @@ U_CFUNC void setShowWarning(UBool val)
gShowWarning = val;
}
-U_CFUNC UBool getShowWarning(){
+U_CFUNC UBool getShowWarning(void){
return gShowWarning;
}
static UBool gStrict =false;
-U_CFUNC UBool isStrict(){
+U_CFUNC UBool isStrict(void){
return gStrict;
}
U_CFUNC void setStrict(UBool val){
gStrict = val;
}
static UBool gVerbose =false;
-U_CFUNC UBool isVerbose(){
+U_CFUNC UBool isVerbose(void){
return gVerbose;
}
U_CFUNC void setVerbose(UBool val){
diff --git a/icu4c/source/tools/genrb/filterrb.cpp b/icu4c/source/tools/genrb/filterrb.cpp
index dcc02fc62..494aedce7 100644
--- a/icu4c/source/tools/genrb/filterrb.cpp
+++ b/icu4c/source/tools/genrb/filterrb.cpp
@@ -2,6 +2,7 @@
// License & terms of use: http://www.unicode.org/copyright.html
#include <iostream>
+#include <memory>
#include <stack>
#include "filterrb.h"
@@ -59,7 +60,7 @@ const std::list<std::string>& ResKeyPath::pieces() const {
std::ostream& operator<<(std::ostream& out, const ResKeyPath& value) {
if (value.pieces().empty()) {
out << "/";
- } else for (auto& key : value.pieces()) {
+ } else for (const auto& key : value.pieces()) {
out << "/" << key;
}
return out;
@@ -108,7 +109,7 @@ PathFilter::EInclusion SimpleRuleBasedPathFilter::match(const ResKeyPath& path)
// even if additional subpaths are added to the given key
bool isLeaf = false;
- for (auto& key : path.pieces()) {
+ for (const auto& key : path.pieces()) {
auto child = node->fChildren.find(key);
// Leaf case 1: input path descends outside the filter tree
if (child == node->fChildren.end()) {
@@ -150,7 +151,7 @@ SimpleRuleBasedPathFilter::Tree::Tree(const Tree& other)
: fIncluded(other.fIncluded), fChildren(other.fChildren) {
// Note: can't use the default copy assignment because of the std::unique_ptr
if (other.fWildcard) {
- fWildcard.reset(new Tree(*other.fWildcard));
+ fWildcard = std::make_unique<Tree>(*other.fWildcard);
}
}
@@ -177,11 +178,11 @@ void SimpleRuleBasedPathFilter::Tree::applyRule(
}
// Recursive Step
- auto& key = *it;
+ const auto& key = *it;
if (key == "*") {
// Case 1: Wildcard
if (!fWildcard) {
- fWildcard.reset(new Tree());
+ fWildcard = std::make_unique<Tree>();
}
// Apply the rule to fWildcard and also to all existing children.
it++;
@@ -211,7 +212,7 @@ void SimpleRuleBasedPathFilter::Tree::applyRule(
void SimpleRuleBasedPathFilter::Tree::print(std::ostream& out, int32_t indent) const {
for (int32_t i=0; i<indent; i++) out << "\t";
out << "included: " << kEInclusionNames[fIncluded] << std::endl;
- for (auto& child : fChildren) {
+ for (const auto& child : fChildren) {
for (int32_t i=0; i<indent; i++) out << "\t";
out << child.first << ": {" << std::endl;
child.second.print(out, indent + 1);
diff --git a/icu4c/source/tools/genrb/genrb.cpp b/icu4c/source/tools/genrb/genrb.cpp
index fbf396d46..b356e2248 100644
--- a/icu4c/source/tools/genrb/genrb.cpp
+++ b/icu4c/source/tools/genrb/genrb.cpp
@@ -779,7 +779,7 @@ make_res_filename(const char *filename,
if (U_FAILURE(status)) {
- return 0;
+ return nullptr;
}
if(packageName != nullptr)
@@ -788,11 +788,11 @@ make_res_filename(const char *filename,
}
/* setup */
- basename = dirname = resName = 0;
+ basename = dirname = resName = nullptr;
/* determine basename, and compiled file names */
basename = (char*) uprv_malloc(sizeof(char) * (uprv_strlen(filename) + 1));
- if(basename == 0) {
+ if (basename == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto finish;
}
@@ -800,7 +800,7 @@ make_res_filename(const char *filename,
get_basename(basename, filename);
dirname = (char*) uprv_malloc(sizeof(char) * (uprv_strlen(filename) + 1));
- if(dirname == 0) {
+ if (dirname == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto finish;
}
@@ -813,7 +813,7 @@ make_res_filename(const char *filename,
+ pkgLen
+ uprv_strlen(basename)
+ uprv_strlen(RES_SUFFIX) + 8));
- if(resName == 0) {
+ if (resName == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto finish;
}
diff --git a/icu4c/source/tools/genrb/genrb.vcxproj b/icu4c/source/tools/genrb/genrb.vcxproj
index 66651c11d..079c4e879 100644
--- a/icu4c/source/tools/genrb/genrb.vcxproj
+++ b/icu4c/source/tools/genrb/genrb.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/genrb.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
@@ -75,25 +74,15 @@
<ClCompile Include="errmsg.c" />
<ClCompile Include="filterrb.cpp" />
<ClCompile Include="genrb.cpp" />
- <ClCompile Include="parse.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="prscmnts.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="parse.cpp" />
+ <ClCompile Include="prscmnts.cpp" />
<ClCompile Include="rbutil.c" />
<ClCompile Include="read.c" />
- <ClCompile Include="reslist.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="reslist.cpp" />
<ClCompile Include="rle.c" />
<ClCompile Include="ustr.c" />
- <ClCompile Include="wrtjava.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="wrtxml.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="wrtjava.cpp" />
+ <ClCompile Include="wrtxml.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="errmsg.h" />
diff --git a/icu4c/source/tools/genrb/parse.cpp b/icu4c/source/tools/genrb/parse.cpp
index 1e82bda6e..a6c59948d 100644
--- a/icu4c/source/tools/genrb/parse.cpp
+++ b/icu4c/source/tools/genrb/parse.cpp
@@ -668,7 +668,7 @@ parseAlias(ParseState* state, char *tag, uint32_t startline, const struct UStrin
namespace {
-static struct SResource* resLookup(struct SResource* res, const char* key){
+struct SResource* resLookup(struct SResource* res, const char* key) {
if (res == res_none() || !res->isTable()) {
return nullptr;
}
@@ -794,7 +794,7 @@ GenrbImporter::getRules(
// Quick-and-dirty escaping function.
// Assumes that we are on an ASCII-based platform.
-static void
+void
escape(const char16_t *s, char *buffer, size_t n) {
int32_t length = u_strlen(s);
int32_t i = 0;
diff --git a/icu4c/source/tools/genrb/read.c b/icu4c/source/tools/genrb/read.c
index 0d4a318a8..0041bedc0 100644
--- a/icu4c/source/tools/genrb/read.c
+++ b/icu4c/source/tools/genrb/read.c
@@ -53,7 +53,7 @@ static void seekUntilEndOfComment (UCHARBUF *buf, struct UString *token, UErr
static UBool isWhitespace (UChar32 c);
static UBool isNewline (UChar32 c);
-U_CFUNC void resetLineNumber() {
+U_CFUNC void resetLineNumber(void) {
lineCount = 1;
}
diff --git a/icu4c/source/tools/genrb/rle.c b/icu4c/source/tools/genrb/rle.c
index f737c4549..0025be207 100644
--- a/icu4c/source/tools/genrb/rle.c
+++ b/icu4c/source/tools/genrb/rle.c
@@ -92,13 +92,12 @@ encodeRunByte(uint16_t* buffer,uint16_t* bufLimit, uint8_t value, int32_t length
return buffer;
}
-#define APPEND( buffer, bufLimit, value, num, status) UPRV_BLOCK_MACRO_BEGIN { \
+#define APPEND( buffer, bufLimit, value, status) UPRV_BLOCK_MACRO_BEGIN { \
if(buffer<bufLimit){ \
*buffer++=(value); \
}else{ \
*status = U_BUFFER_OVERFLOW_ERROR; \
} \
- num++; \
} UPRV_BLOCK_MACRO_END
/**
@@ -107,29 +106,28 @@ encodeRunByte(uint16_t* buffer,uint16_t* bufLimit, uint8_t value, int32_t length
*/
static uint16_t*
encodeRunShort(uint16_t* buffer,uint16_t* bufLimit, uint16_t value, int32_t length,UErrorCode* status) {
- int32_t num=0;
if (length < 4) {
int j=0;
for (; j<length; ++j) {
if (value == (int32_t) ESCAPE){
- APPEND(buffer,bufLimit,ESCAPE, num, status);
+ APPEND(buffer,bufLimit,ESCAPE, status);
}
- APPEND(buffer,bufLimit,value,num, status);
+ APPEND(buffer,bufLimit,value,status);
}
}
else {
if (length == (int32_t) ESCAPE) {
if (value == (int32_t) ESCAPE){
- APPEND(buffer,bufLimit,ESCAPE,num,status);
+ APPEND(buffer,bufLimit,ESCAPE,status);
}
- APPEND(buffer,bufLimit,value,num,status);
+ APPEND(buffer,bufLimit,value,status);
--length;
}
- APPEND(buffer,bufLimit,ESCAPE,num,status);
- APPEND(buffer,bufLimit,(uint16_t) length, num,status);
- APPEND(buffer,bufLimit,(uint16_t)value, num, status); /* Don't need to escape this value */
+ APPEND(buffer,bufLimit,ESCAPE,status);
+ APPEND(buffer,bufLimit,(uint16_t) length,status);
+ APPEND(buffer,bufLimit,(uint16_t)value, status); /* Don't need to escape this value */
}
return buffer;
}
diff --git a/icu4c/source/tools/genrb/wrtjava.cpp b/icu4c/source/tools/genrb/wrtjava.cpp
index cb04b5a44..65a1920ad 100644
--- a/icu4c/source/tools/genrb/wrtjava.cpp
+++ b/icu4c/source/tools/genrb/wrtjava.cpp
@@ -330,7 +330,6 @@ string_write_java(const StringResource *res,UErrorCode *status) {
static void
array_write_java(const ArrayResource *res, UErrorCode *status) {
- uint32_t i = 0;
const char* arr ="new String[] { \n";
struct SResource *current = nullptr;
UBool allStrings = true;
@@ -342,7 +341,6 @@ array_write_java(const ArrayResource *res, UErrorCode *status) {
if (res->fCount > 0) {
current = res->fFirst;
- i = 0;
while(current != nullptr){
if(!current->isString()){
allStrings = false;
@@ -370,7 +368,6 @@ array_write_java(const ArrayResource *res, UErrorCode *status) {
if(U_FAILURE(*status)){
return;
}
- i++;
current = current->fNext;
}
T_FileStream_write(out,"\n",1);
diff --git a/icu4c/source/tools/genrb/wrtxml.cpp b/icu4c/source/tools/genrb/wrtxml.cpp
index 16f67fabc..0efed8e6b 100644
--- a/icu4c/source/tools/genrb/wrtxml.cpp
+++ b/icu4c/source/tools/genrb/wrtxml.cpp
@@ -407,7 +407,7 @@ print(char16_t* src, int32_t srcLen,const char *tagStart,const char *tagEnd, UE
}
buf = (char*) (uprv_malloc(bufCapacity));
- if(buf==0){
+ if (buf == nullptr) {
fprintf(stderr, "Could not allocate memory!!");
exit(U_MEMORY_ALLOCATION_ERROR);
}
diff --git a/icu4c/source/tools/genren/genren.pl b/icu4c/source/tools/genren/genren.pl
index f85b96ac6..cf8567248 100755
--- a/icu4c/source/tools/genren/genren.pl
+++ b/icu4c/source/tools/genren/genren.pl
@@ -154,9 +154,17 @@ for(;@ARGV; shift(@ARGV)) {
chop $qtype;
} elsif ($mode =~ /Mach-O/) {
($address, $type, $_) = split(/ /);
- if(/^_(.*)$/) {
+ if (/^(.*)\(/) {
+ # on Mac, C++ functions and methods are NOT prefixed with an underscore,
+ # but do contain their parameter lists (in patentheses)-- remove
+ # the parameter list
+ $_ = $1;
+ } elsif(/^_(.*)$/) {
+ # C function names (and maybe also C++ functions on Linux?) are all
+ # prefixed with an underscore-- remove it
$_ = $1;
} else {
+ # skip symbols in any other format
next;
}
} else {
diff --git a/icu4c/source/tools/gensprep/gensprep.vcxproj b/icu4c/source/tools/gensprep/gensprep.vcxproj
index c6f7bbd86..b5ddda4ca 100644
--- a/icu4c/source/tools/gensprep/gensprep.vcxproj
+++ b/icu4c/source/tools/gensprep/gensprep.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)\gensprep.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/gensprep/store.c b/icu4c/source/tools/gensprep/store.c
index c3712febb..f0f4d7844 100644
--- a/icu4c/source/tools/gensprep/store.c
+++ b/icu4c/source/tools/gensprep/store.c
@@ -199,7 +199,7 @@ static UNewTrie *sprepTrie;
extern void
-init() {
+init(void) {
sprepTrie = (UNewTrie *)uprv_calloc(1, sizeof(UNewTrie));
diff --git a/icu4c/source/tools/gentest/gentest.vcxproj b/icu4c/source/tools/gentest/gentest.vcxproj
index 79155c11a..577b84378 100644
--- a/icu4c/source/tools/gentest/gentest.vcxproj
+++ b/icu4c/source/tools/gentest/gentest.vcxproj
@@ -35,7 +35,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/gentest.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/icuexportdata/icuexportdata.vcxproj b/icu4c/source/tools/icuexportdata/icuexportdata.vcxproj
index 48b4c23cf..3d397278d 100644
--- a/icu4c/source/tools/icuexportdata/icuexportdata.vcxproj
+++ b/icu4c/source/tools/icuexportdata/icuexportdata.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/icuexportdata.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/icuinfo/icuinfo.vcxproj b/icu4c/source/tools/icuinfo/icuinfo.vcxproj
index ac8bfa88e..2277f5799 100644
--- a/icu4c/source/tools/icuinfo/icuinfo.vcxproj
+++ b/icu4c/source/tools/icuinfo/icuinfo.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)\icuinfo.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/icuinfo/testplug.vcxproj b/icu4c/source/tools/icuinfo/testplug.vcxproj
index dac99beb4..56f2070b6 100644
--- a/icu4c/source/tools/icuinfo/testplug.vcxproj
+++ b/icu4c/source/tools/icuinfo/testplug.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
diff --git a/icu4c/source/tools/icupkg/icupkg.vcxproj b/icu4c/source/tools/icupkg/icupkg.vcxproj
index 7b9cf5849..9f907ae4f 100644
--- a/icu4c/source/tools/icupkg/icupkg.vcxproj
+++ b/icu4c/source/tools/icupkg/icupkg.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)\icupkg.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/icuswap/icuswap.vcxproj b/icu4c/source/tools/icuswap/icuswap.vcxproj
index 3c60511b4..cb9e9e2e9 100644
--- a/icu4c/source/tools/icuswap/icuswap.vcxproj
+++ b/icu4c/source/tools/icuswap/icuswap.vcxproj
@@ -77,7 +77,6 @@
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>.\x86\Release/icuswap.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
<ObjectFileName>.\x86\Release/</ObjectFileName>
@@ -85,6 +84,8 @@
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<CompileAs>Default</CompileAs>
+ <LanguageStandard>stdcpp17</LanguageStandard>
+ <LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -113,7 +114,6 @@
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>.\x86\Debug/icuswap.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
<ObjectFileName>.\x86\Debug/</ObjectFileName>
@@ -152,7 +152,6 @@
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>.\x64\Release/icuswap.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
<ObjectFileName>.\x64\Release/</ObjectFileName>
@@ -190,7 +189,6 @@
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>.\x64\Debug/icuswap.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
<ObjectFileName>.\x64\Debug/</ObjectFileName>
diff --git a/icu4c/source/tools/makeconv/makeconv.vcxproj b/icu4c/source/tools/makeconv/makeconv.vcxproj
index 1ec8ec709..17e06e65c 100644
--- a/icu4c/source/tools/makeconv/makeconv.vcxproj
+++ b/icu4c/source/tools/makeconv/makeconv.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/makeconv.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/pkgdata/pkgdata.cpp b/icu4c/source/tools/pkgdata/pkgdata.cpp
index c2ac112f6..03e6469a6 100644
--- a/icu4c/source/tools/pkgdata/pkgdata.cpp
+++ b/icu4c/source/tools/pkgdata/pkgdata.cpp
@@ -60,11 +60,9 @@ U_CDECL_BEGIN
U_CDECL_END
#if U_HAVE_POPEN
-
-using icu::LocalPointerBase;
-
+U_NAMESPACE_BEGIN
U_DEFINE_LOCAL_OPEN_POINTER(LocalPipeFilePointer, FILE, pclose);
-
+U_NAMESPACE_END
#endif
using icu::LocalMemory;
@@ -135,7 +133,7 @@ static struct {
const char *name, *alt_name;
const char *desc;
} modes[] = {
- { "files", 0, "Uses raw data files (no effect). Installation copies all files to the target location." },
+ { "files", nullptr, "Uses raw data files (no effect). Installation copies all files to the target location." },
#if U_PLATFORM_HAS_WIN32_API
{ "dll", "library", "Generates one common data file and one shared library, <package>.dll"},
{ "common", "archive", "Generates just the common file, <package>.dat"},
@@ -372,7 +370,7 @@ main(int argc, char* argv[]) {
uprv_memset(&o, 0, sizeof(o));
o.mode = options[MODE].value;
- o.version = options[REVISION].doesOccur ? options[REVISION].value : 0;
+ o.version = options[REVISION].doesOccur ? options[REVISION].value : nullptr;
o.shortName = options[NAME].value;
{
@@ -2184,7 +2182,7 @@ static void loadLists(UPKGOptions *o, UErrorCode *status)
static UBool getPkgDataPath(const char *cmd, UBool verbose, char *buf, size_t items) {
icu::CharString cmdBuf;
UErrorCode status = U_ZERO_ERROR;
- LocalPipeFilePointer p;
+ icu::LocalPipeFilePointer p;
size_t n;
cmdBuf.append(cmd, status);
diff --git a/icu4c/source/tools/pkgdata/pkgdata.vcxproj b/icu4c/source/tools/pkgdata/pkgdata.vcxproj
index 0975456bd..ee034b125 100644
--- a/icu4c/source/tools/pkgdata/pkgdata.vcxproj
+++ b/icu4c/source/tools/pkgdata/pkgdata.vcxproj
@@ -34,7 +34,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderOutputFile>$(OutDir)/pkgdata.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
diff --git a/icu4c/source/tools/toolutil/filestrm.cpp b/icu4c/source/tools/toolutil/filestrm.cpp
index 9a2695197..3eb06c6f9 100644
--- a/icu4c/source/tools/toolutil/filestrm.cpp
+++ b/icu4c/source/tools/toolutil/filestrm.cpp
@@ -74,7 +74,7 @@ T_FileStream_wopen(const wchar_t* filename, const wchar_t* mode)
U_CAPI void U_EXPORT2
T_FileStream_close(FileStream* fileStream)
{
- if (fileStream != 0)
+ if (fileStream != nullptr)
fclose((FILE*)fileStream);
}
@@ -190,7 +190,7 @@ T_FileStream_eof(FileStream* fileStream)
U_CAPI int U_EXPORT2
T_FileStream_error(FileStream* fileStream)
{
- return (fileStream == 0 || ferror((FILE*)fileStream));
+ return (fileStream == nullptr || ferror((FILE*)fileStream));
}
/* This function doesn't work. */
diff --git a/icu4c/source/tools/toolutil/ppucd.cpp b/icu4c/source/tools/toolutil/ppucd.cpp
index 0d59b28ce..ab0e31603 100644
--- a/icu4c/source/tools/toolutil/ppucd.cpp
+++ b/icu4c/source/tools/toolutil/ppucd.cpp
@@ -29,24 +29,6 @@ U_NAMESPACE_BEGIN
PropertyNames::~PropertyNames() {}
-// TODO: Create a concrete subclass for the default PropertyNames implementation
-// using the ICU library built-in property names API & data.
-// Currently only the genprops tool uses PreparsedUCD, and provides its own
-// PropertyNames implementation using its just-build property names data and its own code.
-// At some point, we should use PreparsedUCD in tests, and then we will need the
-// default implementation somewhere.
-#if 0
-int32_t
-PropertyNames::getPropertyEnum(const char *name) const {
- return u_getPropertyEnum(name);
-}
-
-int32_t
-PropertyNames::getPropertyValueEnum(int32_t property, const char *name) const {
- return u_getPropertyValueEnum((UProperty)property, name);
-}
-#endif
-
UniProps::UniProps()
: start(U_SENTINEL), end(U_SENTINEL),
bmg(U_SENTINEL), bpb(U_SENTINEL),
@@ -496,6 +478,9 @@ PreparsedUCD::parseProperty(UniProps &props, const char *field, UnicodeSet &newV
case UCHAR_SCRIPT_EXTENSIONS:
parseScriptExtensions(v, props.scx, errorCode);
break;
+ case UCHAR_IDENTIFIER_TYPE:
+ parseIdentifierType(v, props.idType, errorCode);
+ break;
default:
// Ignore unhandled properties.
return true;
@@ -619,4 +604,48 @@ PreparsedUCD::parseScriptExtensions(const char *s, UnicodeSet &scx, UErrorCode &
}
}
+void
+PreparsedUCD::parseIdentifierType(const char *s, UnicodeSet &idType, UErrorCode &errorCode) {
+ if(U_FAILURE(errorCode)) { return; }
+ idType.clear();
+ CharString typeString;
+ for(;;) {
+ const char *typeChars;
+ const char *limit=strchr(s, ' ');
+ if(limit!=nullptr) {
+ typeChars=typeString.clear().append(s, (int32_t)(limit-s), errorCode).data();
+ if(U_FAILURE(errorCode)) { return; }
+ } else {
+ typeChars=s;
+ }
+ int32_t type=pnames->getPropertyValueEnum(UCHAR_IDENTIFIER_TYPE, typeChars);
+ if(type==UCHAR_INVALID_CODE) {
+ fprintf(stderr,
+ "error in preparsed UCD: '%s' is not a valid Identifier_Type on line %ld\n",
+ typeChars, (long)lineNumber);
+ errorCode=U_PARSE_ERROR;
+ return;
+ } else if(idType.contains(type)) {
+ fprintf(stderr,
+ "error in preparsed UCD: Identifier_Type has duplicate '%s' values on line %ld\n",
+ typeChars, (long)lineNumber);
+ errorCode=U_PARSE_ERROR;
+ return;
+ } else {
+ idType.add(type);
+ }
+ if(limit!=nullptr) {
+ s=limit+1;
+ } else {
+ break;
+ }
+ }
+ if(idType.isEmpty()) {
+ fprintf(stderr,
+ "error in preparsed UCD: empty Identifier_Type= on line %ld\n",
+ (long)lineNumber);
+ errorCode=U_PARSE_ERROR;
+ }
+}
+
U_NAMESPACE_END
diff --git a/icu4c/source/tools/toolutil/ppucd.h b/icu4c/source/tools/toolutil/ppucd.h
index d5c63fab4..2d54a4335 100644
--- a/icu4c/source/tools/toolutil/ppucd.h
+++ b/icu4c/source/tools/toolutil/ppucd.h
@@ -57,7 +57,7 @@ struct U_TOOLUTIL_API UniProps {
const char *name;
const char *nameAlias;
UnicodeString cf, lc, tc, uc;
- UnicodeSet scx;
+ UnicodeSet scx, idType;
};
class U_TOOLUTIL_API PreparsedUCD {
@@ -156,6 +156,7 @@ private:
UBool parseCodePointRange(const char *s, UChar32 &start, UChar32 &end, UErrorCode &errorCode);
void parseString(const char *s, UnicodeString &uni, UErrorCode &errorCode);
void parseScriptExtensions(const char *s, UnicodeSet &scx, UErrorCode &errorCode);
+ void parseIdentifierType(const char *s, UnicodeSet &idType, UErrorCode &errorCode);
static const int32_t kNumLineBuffers=3;
diff --git a/icu4c/source/tools/toolutil/swapimpl.cpp b/icu4c/source/tools/toolutil/swapimpl.cpp
index 9c5856396..cdf038aad 100644
--- a/icu4c/source/tools/toolutil/swapimpl.cpp
+++ b/icu4c/source/tools/toolutil/swapimpl.cpp
@@ -182,7 +182,7 @@ uprops_swap(const UDataSwapper *ds,
pInfo->dataFormat[1]==0x50 &&
pInfo->dataFormat[2]==0x72 &&
pInfo->dataFormat[3]==0x6f &&
- (3<=pInfo->formatVersion[0] && pInfo->formatVersion[0]<=7) &&
+ (3<=pInfo->formatVersion[0] && pInfo->formatVersion[0]<=8) &&
(pInfo->formatVersion[0]>=7 ||
(pInfo->formatVersion[2]==UTRIE_SHIFT &&
pInfo->formatVersion[3]==UTRIE_INDEX_SHIFT))
diff --git a/icu4c/source/tools/toolutil/toolutil.h b/icu4c/source/tools/toolutil/toolutil.h
index b32a0b876..98b215555 100644
--- a/icu4c/source/tools/toolutil/toolutil.h
+++ b/icu4c/source/tools/toolutil/toolutil.h
@@ -99,7 +99,7 @@ findDirname(const char *path, char *buffer, int32_t bufLen, UErrorCode* status);
* Return the current year in the Gregorian calendar. Used for copyright generation.
*/
U_CAPI int32_t U_EXPORT2
-getCurrentYear();
+getCurrentYear(void);
/*
* Creates a directory with pathname.
diff --git a/icu4c/source/tools/toolutil/toolutil.vcxproj b/icu4c/source/tools/toolutil/toolutil.vcxproj
index 0995ef06f..a2ac21739 100644
--- a/icu4c/source/tools/toolutil/toolutil.vcxproj
+++ b/icu4c/source/tools/toolutil/toolutil.vcxproj
@@ -29,9 +29,8 @@
<!-- Options that are common to *all* project configurations -->
<ItemDefinitionGroup>
<ClCompile>
- <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\..\i18n;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\..\i18n;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>U_TOOLUTIL_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
</ClCompile>
@@ -197,31 +196,19 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="collationinfo.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="collationinfo.cpp" />
<ClCompile Include="denseranges.cpp" />
<ClCompile Include="filestrm.cpp" />
<ClCompile Include="filetools.cpp" />
<ClCompile Include="flagparser.cpp" />
<ClCompile Include="package.cpp" />
- <ClCompile Include="pkg_genc.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="pkg_gencmn.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="pkg_genc.cpp" />
+ <ClCompile Include="pkg_gencmn.cpp" />
<ClCompile Include="pkg_icu.cpp" />
<ClCompile Include="pkgitems.cpp" />
- <ClCompile Include="ppucd.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="swapimpl.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="toolutil.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="ppucd.cpp" />
+ <ClCompile Include="swapimpl.cpp" />
+ <ClCompile Include="toolutil.cpp" />
<ClCompile Include="ucbuf.cpp" />
<ClCompile Include="ucm.cpp" />
<ClCompile Include="ucmstate.cpp" />
@@ -229,18 +216,10 @@
<ClCompile Include="uoptions.cpp" />
<ClCompile Include="uparse.cpp" />
<ClCompile Include="writesrc.cpp" />
- <ClCompile Include="xmlparser.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="dbgutil.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="udbgutil.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
- <ClCompile Include="ucln_tu.cpp">
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- </ClCompile>
+ <ClCompile Include="xmlparser.cpp" />
+ <ClCompile Include="dbgutil.cpp" />
+ <ClCompile Include="udbgutil.cpp" />
+ <ClCompile Include="ucln_tu.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="collationinfo.h" />
diff --git a/icu4c/source/tools/toolutil/udbgutil.cpp b/icu4c/source/tools/toolutil/udbgutil.cpp
index 3f4bf3718..c5e20fa0a 100644
--- a/icu4c/source/tools/toolutil/udbgutil.cpp
+++ b/icu4c/source/tools/toolutil/udbgutil.cpp
@@ -107,9 +107,7 @@ static const Field names_UCalendarDateFields[] =
FIELD_NAME_STR( LEN_UCAL, UCAL_JULIAN_DAY ),
FIELD_NAME_STR( LEN_UCAL, UCAL_MILLISECONDS_IN_DAY ),
FIELD_NAME_STR( LEN_UCAL, UCAL_IS_LEAP_MONTH ),
-#ifndef U_HIDE_DRAFT_API
FIELD_NAME_STR( LEN_UCAL, UCAL_ORDINAL_MONTH ),
-#endif // U_HIDE_DRAFT_API
};
diff --git a/icu4c/source/tools/tzcode/Makefile.in b/icu4c/source/tools/tzcode/Makefile.in
index d10084261..ac5177147 100644
--- a/icu4c/source/tools/tzcode/Makefile.in
+++ b/icu4c/source/tools/tzcode/Makefile.in
@@ -27,7 +27,8 @@ TDATA = $(PRIMARY_DATA) $(SUPPLEMENTAL_DATA)
TZDIR=zoneinfo
-CFLAGS+=-D_POSIX_C_SOURCE
+# https://man7.org/linux/man-pages/man2/symlink.2.html
+CFLAGS+=-D_POSIX_C_SOURCE=200112L
CPPFLAGS+= -DTZDIR=\"$(TZDIR)\"
# more data
diff --git a/icu4c/source/tools/tzcode/icuzdump.cpp b/icu4c/source/tools/tzcode/icuzdump.cpp
index c82fc4337..ff073ed97 100644
--- a/icu4c/source/tools/tzcode/icuzdump.cpp
+++ b/icu4c/source/tools/tzcode/icuzdump.cpp
@@ -233,9 +233,7 @@ public:
}
~ZoneIterator() {
- if (zenum != nullptr) {
- delete zenum;
- }
+ delete zenum;
}
TimeZone* next() {
diff --git a/icu4c/source/tools/tzcode/icuzdump.vcxproj b/icu4c/source/tools/tzcode/icuzdump.vcxproj
index 4f7b96fc2..42c6fccc2 100644
--- a/icu4c/source/tools/tzcode/icuzdump.vcxproj
+++ b/icu4c/source/tools/tzcode/icuzdump.vcxproj
@@ -58,7 +58,6 @@
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <DisableLanguageExtensions>true</DisableLanguageExtensions>
<PrecompiledHeader>
</PrecompiledHeader>
<PrecompiledHeaderOutputFile>.\x86\Debug/icuzdump.pch</PrecompiledHeaderOutputFile>
@@ -69,6 +68,8 @@
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>Default</CompileAs>
+ <LanguageStandard>stdcpp17</LanguageStandard>
+ <LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<Link>
<AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
diff --git a/icu4c/source/tools/tzcode/tz2icu.cpp b/icu4c/source/tools/tzcode/tz2icu.cpp
index 0adb1bdeb..f99965194 100644
--- a/icu4c/source/tools/tzcode/tz2icu.cpp
+++ b/icu4c/source/tools/tzcode/tz2icu.cpp
@@ -218,7 +218,7 @@ void ZoneInfo::addAlias(int32_t index) {
void ZoneInfo::setAliasTo(int32_t index) {
assert(index >= 0);
- assert(aliases.size() == 0);
+ assert(aliases.empty());
aliasTo = index;
}
@@ -377,7 +377,7 @@ void readzoneinfo(ifstream& file, ZoneInfo& info, bool is64bitData) {
// 32bit int by the ICU resource bundle.
break;
} else {
- info.transitions.push_back(Transition(transitionTimes[i], transitionTypes[i]));
+ info.transitions.emplace_back(transitionTimes[i], transitionTypes[i]);
}
}
@@ -393,7 +393,7 @@ void readzoneinfo(ifstream& file, ZoneInfo& info, bool is64bitData) {
}
} else {
for (i=0; i<timecnt; ++i) {
- info.transitions.push_back(Transition(transitionTimes[i], transitionTypes[i]));
+ info.transitions.emplace_back(transitionTimes[i], transitionTypes[i]);
}
}
@@ -461,7 +461,7 @@ void readzoneinfo(ifstream& file, ZoneInfo& info, bool is64bitData) {
for (char* p=str; p<limit; ++p) {
char* start = p;
while (*p != 0) ++p;
- info.abbrs.push_back(string(start, p-start));
+ info.abbrs.emplace_back(start, p - start);
abbroffset.push_back(start-str);
}
@@ -999,7 +999,7 @@ void readFinalZonesAndRules(istream& in) {
ruleIDset.clear();
for_each(finalRules.begin(), finalRules.end(), insertRuleID);
for_each(finalZones.begin(), finalZones.end(), eraseRuleID);
- if (ruleIDset.size() != 0) {
+ if (!ruleIDset.empty()) {
throw invalid_argument("Unused rules");
}
}
@@ -1015,7 +1015,7 @@ void ZoneInfo::print(ostream& os, const string& id) const {
os << " /* " << id << " */ ";
if (aliasTo >= 0) {
- assert(aliases.size() == 0);
+ assert(aliases.empty());
os << ":int { " << aliasTo << " } "; // No endl - save room for comment.
return;
}
@@ -1097,7 +1097,7 @@ void ZoneInfo::print(ostream& os, const string& id) const {
os << " }" << endl;
if (ICU44PLUS) {
- if (transitions.size() != 0) {
+ if (!transitions.empty()) {
os << " typeMap:bin { \"" << hex << setfill('0');
for (trn = transitions.begin(); trn != transitions.end(); ++trn) {
os << setw(2) << trn->type;
@@ -1126,7 +1126,7 @@ void ZoneInfo::print(ostream& os, const string& id) const {
}
// Alias list, if any
- if (aliases.size() != 0) {
+ if (!aliases.empty()) {
first = true;
if (ICU44PLUS) {
os << " links:intvector { ";
@@ -1190,11 +1190,6 @@ ostream& printStringList( ostream& os, const ZoneMap& zoneinfo) {
// main
//--------------------------------------------------------------------
-// Unary predicate for finding transitions after a given time
-bool isAfter(const Transition t, int64_t thresh) {
- return t.time >= thresh;
-}
-
/**
* A zone type that contains only the raw and dst offset. Used by the
* optimizeTypeList() method.
@@ -1245,7 +1240,7 @@ void ZoneInfo::optimizeTypeList() {
// by inserting the dummy transition indirectly.
// If there are zero transitions and one type, then leave that as-is.
- if (transitions.size() == 0) {
+ if (transitions.empty()) {
if (types.size() != 1) {
cerr << "Error: transition count = 0, type count = " << types.size() << endl;
}
@@ -1327,10 +1322,10 @@ void ZoneInfo::optimizeTypeList() {
// Replace type list
types.clear();
- types.push_back(initialSimplifiedType);
+ types.emplace_back(initialSimplifiedType);
for (set<SimplifiedZoneType>::const_iterator i=simpleset.begin(); i!=simpleset.end(); ++i) {
if (*i < initialSimplifiedType || initialSimplifiedType < *i) {
- types.push_back(*i);
+ types.emplace_back(*i);
}
}
@@ -1371,7 +1366,7 @@ void ZoneInfo::mergeFinalData(const FinalZone& fz) {
vector<Transition>::iterator it =
find_if(transitions.begin(), transitions.end(),
- bind2nd(ptr_fun(isAfter), seconds));
+ [seconds](const Transition& t) { return t.time >= seconds; });
transitions.erase(it, transitions.end());
if (finalYear != -1) {
@@ -1672,7 +1667,7 @@ int main(int argc, char *argv[]) {
string zone, country;
istringstream is(line);
is >> zone >> country;
- if (zone.size() == 0) continue;
+ if (zone.empty()) continue;
if (country.size() < 2) {
cerr << "Error: Can't parse " << line << " in " << ICU_REGIONS << endl;
return 1;
@@ -1703,8 +1698,8 @@ int main(int argc, char *argv[]) {
string country, coord, zone;
istringstream is(line);
is >> country >> coord >> zone;
- if (country.size() == 0) continue;
- if (country.size() != 2 || zone.size() < 1) {
+ if (country.empty()) continue;
+ if (country.size() != 2 || zone.empty()) {
cerr << "Error: Can't parse " << line << " in " << zonetab << endl;
return 1;
}
diff --git a/icu4c/source/tools/tzcode/zic.c b/icu4c/source/tools/tzcode/zic.c
index ed3e79239..54576780d 100644
--- a/icu4c/source/tools/tzcode/zic.c
+++ b/icu4c/source/tools/tzcode/zic.c
@@ -3,9 +3,6 @@
** 2006-07-17 by Arthur David Olson.
*/
-/* https://man7.org/linux/man-pages/man2/symlink.2.html */
-#define _POSIX_C_SOURCE 200112L
-
/* Enable extensions and modifications for ICU. */
#define ICU
diff --git a/icu4j/APIChangeReport.html b/icu4j/APIChangeReport.html
index 04583ab21..b136de45e 100644
--- a/icu4j/APIChangeReport.html
+++ b/icu4j/APIChangeReport.html
@@ -2,137 +2,96 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<!-- © 2023 and later: Unicode, Inc. and others. -->
+<!-- © 2024 and later: Unicode, Inc. and others. -->
<!-- License & terms of use: http://www.unicode.org/copyright.html -->
-<title>ICU4J API Comparison: ICU4J 73 with ICU4J 74</title>
+<title>ICU4J API Comparison: ICU4J 74 with ICU4J 75</title>
</head>
<body>
-<h1>ICU4J API Comparison: ICU4J 73 with ICU4J 74</h1>
+<h1>ICU4J API Comparison: ICU4J 74 with ICU4J 75</h1>
<hr/>
-<h2>Removed from ICU4J 73</h2>
+<h2>Removed from ICU4J 74</h2>
<p>(no API removed)</p>
<hr/>
-<h2>Deprecated or Obsoleted in ICU4J 74</h2>
-
-<h3>Package com.ibm.icu.text</h3>
-<ul>
-RuleBasedNumberFormat
-<ul>
-<li><span style='color:gray'>(deprecated)</span> public static final int DURATION</li>
-</ul>
-</ul>
-
+<h2>Deprecated or Obsoleted in ICU4J 75</h2>
+<p>(no API obsoleted)</p>
<hr/>
-<h2>Changed in ICU4J 74 (old, new)</h2>
+<h2>Changed in ICU4J 75 (old, new)</h2>
<p>(no API changed)</p>
<hr/>
-<h2>Promoted to stable in ICU4J 74</h2>
+<h2>Promoted to stable in ICU4J 75</h2>
-<h3>Package com.ibm.icu.number</h3>
+<h3>Package com.ibm.icu.text</h3>
<ul>
-FormattedNumber
+<li><span style='color:green'>(stable)</span> public interface <i>PersonName</i></li>
+<li><span style='color:green'>(stable)</span> public class <i>PersonNameFormatter</i></li>
+<li><span style='color:green'>(stable)</span> public static class <i>PersonNameFormatter.Builder</i></li>
+<li><span style='color:green'>(stable)</span> public class <i>SimplePersonName</i></li>
+<li><span style='color:green'>(stable)</span> public static class <i>SimplePersonName.Builder</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>PersonName.FieldModifier</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>PersonName.NameField</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>PersonName.PreferredOrder</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>PersonNameFormatter.DisplayOrder</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>PersonNameFormatter.Formality</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>PersonNameFormatter.Length</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>PersonNameFormatter.Usage</i></li>
+PersonName.FieldModifier
<ul>
-<li><span style='color:green'>(stable)</span> public DisplayOptions.NounClass <i>getNounClass</i>()</li>
+<li><span style='color:green'>(stable)</span> public static PersonName.FieldModifier <i>forString</i>(java.lang.String)</li>
+<li><span style='color:green'>(stable)</span> public java.lang.String <i>toString</i>()</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.FieldModifier ALL_CAPS</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.FieldModifier CORE</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.FieldModifier INFORMAL</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.FieldModifier INITIAL</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.FieldModifier INITIAL_CAP</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.FieldModifier MONOGRAM</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.FieldModifier PREFIX</li>
+</ul>
+PersonName.NameField
+<ul>
+<li><span style='color:green'>(stable)</span> public java.lang.String <i>toString</i>()</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.NameField CREDENTIALS</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.NameField GENERATION</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.NameField GIVEN</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.NameField GIVEN2</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.NameField SURNAME</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.NameField SURNAME2</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.NameField TITLE</li>
+</ul>
+PersonName.PreferredOrder
+<ul>
+<li><span style='color:green'>(stable)</span> public static final PersonName.PreferredOrder DEFAULT</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.PreferredOrder GIVEN_FIRST</li>
+<li><span style='color:green'>(stable)</span> public static final PersonName.PreferredOrder SURNAME_FIRST</li>
</ul>
-NumberFormatterSettings
+PersonNameFormatter.DisplayOrder
<ul>
-<li><span style='color:green'>(stable)</span> public T extends NumberFormatterSettings&lt;?&gt; <i>displayOptions</i>(DisplayOptions)</li>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.DisplayOrder DEFAULT</li>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.DisplayOrder SORTING</li>
</ul>
+PersonNameFormatter.Formality
+<ul>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.Formality FORMAL</li>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.Formality INFORMAL</li>
</ul>
-
-<h3>Package com.ibm.icu.text</h3>
+PersonNameFormatter.Length
<ul>
-<li><span style='color:green'>(stable)</span> public final class <i>DisplayOptions</i></li>
-<li><span style='color:green'>(stable)</span> public static class <i>DisplayOptions.Builder</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>DisplayOptions.Capitalization</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>DisplayOptions.DisplayLength</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>DisplayOptions.GrammaticalCase</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>DisplayOptions.NameStyle</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>DisplayOptions.NounClass</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>DisplayOptions.PluralCategory</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>DisplayOptions.SubstituteHandling</i></li>
-DisplayOptions.Capitalization
-<ul>
-<li><span style='color:green'>(stable)</span> public static final java.util.List&lt;DisplayOptions.Capitalization&gt; VALUES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.Capitalization BEGINNING_OF_SENTENCE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.Capitalization MIDDLE_OF_SENTENCE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.Capitalization STANDALONE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.Capitalization UI_LIST_OR_MENU</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.Capitalization UNDEFINED</li>
-</ul>
-DisplayOptions.DisplayLength
-<ul>
-<li><span style='color:green'>(stable)</span> public static final java.util.List&lt;DisplayOptions.DisplayLength&gt; VALUES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.DisplayLength LENGTH_FULL</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.DisplayLength LENGTH_SHORT</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.DisplayLength UNDEFINED</li>
-</ul>
-DisplayOptions.GrammaticalCase
-<ul>
-<li><span style='color:green'>(stable)</span> public static final java.util.List&lt;DisplayOptions.GrammaticalCase&gt; VALUES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase <i>fromIdentifier</i>(java.lang.String)</li>
-<li><span style='color:green'>(stable)</span> public final java.lang.String <i>getIdentifier</i>()</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase ABLATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase ACCUSATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase COMITATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase DATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase ERGATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase GENITIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase INSTRUMENTAL</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase LOCATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase LOCATIVE_COPULATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase NOMINATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase OBLIQUE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase PREPOSITIONAL</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase SOCIATIVE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase UNDEFINED</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.GrammaticalCase VOCATIVE</li>
-</ul>
-DisplayOptions.NameStyle
-<ul>
-<li><span style='color:green'>(stable)</span> public static final java.util.List&lt;DisplayOptions.NameStyle&gt; VALUES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NameStyle DIALECT_NAMES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NameStyle STANDARD_NAMES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NameStyle UNDEFINED</li>
-</ul>
-DisplayOptions.NounClass
-<ul>
-<li><span style='color:green'>(stable)</span> public static final java.util.List&lt;DisplayOptions.NounClass&gt; VALUES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass <i>fromIdentifier</i>(java.lang.String)</li>
-<li><span style='color:green'>(stable)</span> public final java.lang.String <i>getIdentifier</i>()</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass ANIMATE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass COMMON</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass FEMININE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass INANIMATE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass MASCULINE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass NEUTER</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass OTHER</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass PERSONAL</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.NounClass UNDEFINED</li>
-</ul>
-DisplayOptions.PluralCategory
-<ul>
-<li><span style='color:green'>(stable)</span> public static final java.util.List&lt;DisplayOptions.PluralCategory&gt; VALUES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.PluralCategory <i>fromIdentifier</i>(java.lang.String)</li>
-<li><span style='color:green'>(stable)</span> public final java.lang.String <i>getIdentifier</i>()</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.PluralCategory FEW</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.PluralCategory MANY</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.PluralCategory ONE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.PluralCategory OTHER</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.PluralCategory TWO</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.PluralCategory UNDEFINED</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.PluralCategory ZERO</li>
-</ul>
-DisplayOptions.SubstituteHandling
-<ul>
-<li><span style='color:green'>(stable)</span> public static final java.util.List&lt;DisplayOptions.SubstituteHandling&gt; VALUES</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.SubstituteHandling NO_SUBSTITUTE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.SubstituteHandling SUBSTITUTE</li>
-<li><span style='color:green'>(stable)</span> public static final DisplayOptions.SubstituteHandling UNDEFINED</li>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.Length LONG</li>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.Length MEDIUM</li>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.Length SHORT</li>
+</ul>
+PersonNameFormatter.Usage
+<ul>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.Usage ADDRESSING</li>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.Usage MONOGRAM</li>
+<li><span style='color:green'>(stable)</span> public static final PersonNameFormatter.Usage REFERRING</li>
+</ul>
+UnicodeSet
+<ul>
+<li><span style='color:green'>(stable)</span> public static final int SIMPLE_CASE_INSENSITIVE</li>
</ul>
</ul>
@@ -140,109 +99,191 @@ DisplayOptions.SubstituteHandling
<ul>
MeasureUnit
<ul>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit QUARTER</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit TONNE</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit BEAUFORT</li>
</ul>
</ul>
<hr/>
-<h2>Added in ICU4J 74</h2>
+<h2>Added in ICU4J 75</h2>
<h3>Package com.ibm.icu.lang</h3>
<ul>
-UCharacter.LineBreak
+<li><span style='color:orange'>(draft)</span> public static enum <i>UCharacter.IdentifierStatus</i></li>
+<li><span style='color:orange'>(draft)</span> public static enum <i>UCharacter.IdentifierType</i></li>
+UCharacter
<ul>
-<li><span style='color:green'>(stable)</span> public static final int AKSARA</li>
-<li><span style='color:green'>(stable)</span> public static final int AKSARA_PREBASE</li>
-<li><span style='color:green'>(stable)</span> public static final int AKSARA_START</li>
-<li><span style='color:green'>(stable)</span> public static final int VIRAMA</li>
-<li><span style='color:green'>(stable)</span> public static final int VIRAMA_FINAL</li>
+<li><span style='color:orange'>(draft)</span> public static final int <i>getIdentifierTypes</i>(int, java.util.EnumSet&lt;UCharacter.IdentifierType&gt;)</li>
+<li><span style='color:orange'>(draft)</span> public static final boolean <i>hasIdentifierType</i>(int, UCharacter.IdentifierType)</li>
</ul>
-UCharacter.UnicodeBlock
+UCharacter.IdentifierStatus
<ul>
-<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I</li>
-<li><span style='color:green'>(stable)</span> public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierStatus ALLOWED</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierStatus RESTRICTED</li>
+</ul>
+UCharacter.IdentifierType
+<ul>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType DEFAULT_IGNORABLE</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType DEPRECATED</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType EXCLUSION</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType INCLUSION</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType LIMITED_USE</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType NOT_CHARACTER</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType NOT_NFKC</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType NOT_XID</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType OBSOLETE</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType RECOMMENDED</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType TECHNICAL</li>
+<li><span style='color:orange'>(draft)</span> public static final UCharacter.IdentifierType UNCOMMON_USE</li>
</ul>
UProperty
<ul>
-<li><span style='color:orange'>(draft)</span> public static final int IDS_UNARY_OPERATOR</li>
-<li><span style='color:orange'>(draft)</span> public static final int ID_COMPAT_MATH_CONTINUE</li>
-<li><span style='color:orange'>(draft)</span> public static final int ID_COMPAT_MATH_START</li>
+<li><span style='color:orange'>(draft)</span> public static final int IDENTIFIER_STATUS</li>
+<li><span style='color:orange'>(draft)</span> public static final int IDENTIFIER_TYPE</li>
+</ul>
+UScript
+<ul>
+<li><span style='color:green'>(stable)</span> public static final int ARABIC_NASTALIQ</li>
</ul>
</ul>
-<h3>Package com.ibm.icu.text</h3>
+<h3>Package com.ibm.icu.message2</h3>
<ul>
-Normalizer2
+MFDataModel.Attribute
<ul>
-<li><span style='color:orange'>(draft)</span> public static Normalizer2 <i>getNFKCSimpleCasefoldInstance</i>()</li>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String name</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.LiteralOrVariableRef value</li>
</ul>
-PersonName.FieldModifier
+MFDataModel.CatchallKey
<ul>
-<li><span style='color:orange'>(draft)</span> public static final PersonName.FieldModifier GENITIVE</li>
-<li><span style='color:orange'>(draft)</span> public static final PersonName.FieldModifier VOCATIVE</li>
+<li><span style='color:orange'>(draft)</span> public <i>MFDataModel.CatchallKey</i>()</li>
</ul>
-PersonNameFormatter.DisplayOrder
+MFDataModel.FunctionAnnotation
<ul>
-<li><span style='color:orange'>(draft)</span> public static final PersonNameFormatter.DisplayOrder FORCE_GIVEN_FIRST</li>
-<li><span style='color:orange'>(draft)</span> public static final PersonNameFormatter.DisplayOrder FORCE_SURNAME_FIRST</li>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String name</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.Map&lt;java.lang.String, MFDataModel.Option&gt; options</li>
</ul>
-PersonNameFormatter.Formality
+MFDataModel.FunctionExpression
<ul>
-<li><span style='color:orange'>(draft)</span> public static final PersonNameFormatter.Formality DEFAULT</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.FunctionAnnotation annotation</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Attribute&gt; attributes</li>
</ul>
-PersonNameFormatter.Length
+MFDataModel.InputDeclaration
<ul>
-<li><span style='color:orange'>(draft)</span> public static final PersonNameFormatter.Length DEFAULT</li>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String name</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.VariableExpression value</li>
</ul>
-SpoofChecker
+MFDataModel.Literal
<ul>
-<li><span style='color:orange'>(draft)</span> public int <i>areConfusable</i>(int, java.lang.CharSequence, java.lang.CharSequence)</li>
-<li><span style='color:orange'>(draft)</span> public java.lang.String <i>getBidiSkeleton</i>(int, java.lang.CharSequence)</li>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String value</li>
</ul>
+MFDataModel.LiteralExpression
+<ul>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.Annotation annotation</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.Literal arg</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Attribute&gt; attributes</li>
</ul>
-
-<h3>Package com.ibm.icu.util</h3>
+MFDataModel.LocalDeclaration
<ul>
-Calendar
+<li><span style='color:orange'>(draft)</span> public final java.lang.String name</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.Expression value</li>
+</ul>
+MFDataModel.Markup
<ul>
-<li><span style='color:orange'>(draft)</span> public static final int ORDINAL_MONTH</li>
-<li><span style='color:orange'>(draft)</span> public java.lang.String <i>getTemporalMonthCode</i>()</li>
-<li><span style='color:orange'>(draft)</span> public boolean <i>inTemporalLeapYear</i>()</li>
-<li><span style='color:orange'>(draft)</span> public void <i>setTemporalMonthCode</i>(java.lang.String)</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Attribute&gt; attributes</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.Markup.Kind kind</li>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String name</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.Map&lt;java.lang.String, MFDataModel.Option&gt; options</li>
</ul>
-ChineseCalendar
+MFDataModel.Option
<ul>
-<li><span style='color:orange'>(draft)</span> public java.lang.String <i>getTemporalMonthCode</i>()</li>
-<li><span style='color:orange'>(draft)</span> public boolean <i>inTemporalLeapYear</i>()</li>
-<li><span style='color:orange'>(draft)</span> public void <i>setTemporalMonthCode</i>(java.lang.String)</li>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String name</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.LiteralOrVariableRef value</li>
</ul>
-HebrewCalendar
+MFDataModel.Pattern
<ul>
-<li><span style='color:orange'>(draft)</span> public java.lang.String <i>getTemporalMonthCode</i>()</li>
-<li><span style='color:orange'>(draft)</span> public boolean <i>inTemporalLeapYear</i>()</li>
-<li><span style='color:orange'>(draft)</span> public void <i>setTemporalMonthCode</i>(java.lang.String)</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.PatternPart&gt; parts</li>
</ul>
-IslamicCalendar
+MFDataModel.PatternMessage
<ul>
-<li><span style='color:orange'>(draft)</span> public boolean <i>inTemporalLeapYear</i>()</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Declaration&gt; declarations</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.Pattern pattern</li>
</ul>
-MeasureUnit
+MFDataModel.SelectMessage
+<ul>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Declaration&gt; declarations</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Expression&gt; selectors</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Variant&gt; variants</li>
+</ul>
+MFDataModel.StringPart
+<ul>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String value</li>
+</ul>
+MFDataModel.UnsupportedAnnotation
+<ul>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String source</li>
+</ul>
+MFDataModel.UnsupportedExpression
+<ul>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.UnsupportedAnnotation annotation</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Attribute&gt; attributes</li>
+</ul>
+MFDataModel.UnsupportedStatement
+<ul>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String body</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Expression&gt; expressions</li>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String keyword</li>
+</ul>
+MFDataModel.VariableExpression
+<ul>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.Annotation annotation</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.VariableRef arg</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.Attribute&gt; attributes</li>
+</ul>
+MFDataModel.VariableRef
<ul>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit GASOLINE_ENERGY_DENSITY</li>
+<li><span style='color:orange'>(draft)</span> public final java.lang.String name</li>
</ul>
-TimeZone
+MFDataModel.Variant
<ul>
-<li><span style='color:orange'>(draft)</span> public static java.lang.String <i>getIanaID</i>(java.lang.String)</li>
+<li><span style='color:orange'>(draft)</span> public final java.util.List&lt;MFDataModel.LiteralOrCatchallKey&gt; keys</li>
+<li><span style='color:orange'>(draft)</span> public final MFDataModel.Pattern value</li>
</ul>
-VersionInfo
+MFParseException
+<ul>
+<li><span style='color:orange'>(draft)</span> public <i>MFParseException</i>(java.lang.String, int)</li>
+<li><span style='color:orange'>(draft)</span> public java.lang.String <i>getMessage</i>()</li>
+</ul>
+MFSerializer
+<ul>
+<li><span style='color:orange'>(draft)</span> public <i>MFSerializer</i>()</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.number</h3>
+<ul>
+LocalizedNumberFormatter
+<ul>
+<li><span style='color:orange'>(draft)</span> public UnlocalizedNumberFormatter <i>withoutLocale</i>()</li>
+</ul>
+LocalizedNumberRangeFormatter
+<ul>
+<li><span style='color:orange'>(draft)</span> public UnlocalizedNumberRangeFormatter <i>withoutLocale</i>()</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+MeasureUnit.MeasurePrefix
<ul>
-<li><span style='color:green'>(stable)</span> public static final VersionInfo UNICODE_15_1</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix QUECTO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix QUETTA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix RONNA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix RONTO</li>
</ul>
</ul>
<hr/>
-<p><i><font size="-1">Contents generated by ReportAPI tool on Tue Oct 03 15:39:12 EDT 2023<br/>© 2023 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a></font></i></p>
+<p><i><font size="-1">Contents generated by ReportAPI tool on Mon Mar 25 13:11:50 EDT 2024<br/>© 2024 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a></font></i></p>
</body>
</html>
diff --git a/icu4j/Android.bp b/icu4j/Android.bp
index 45867d6b3..1d72474c9 100644
--- a/icu4j/Android.bp
+++ b/icu4j/Android.bp
@@ -56,7 +56,7 @@ java_defaults {
"-Xep:IdentityBinaryExpression:WARN",
],
},
- sdk_version: "core_current",
+ sdk_version: "current",
}
java_library {
@@ -103,21 +103,6 @@ java_library {
],
}
-// Small static library used by TwilightService in the system server and WallpaperPicker2 app. To
-// avoid @CorePlaformApi, the system server doesn't use CalendarAstronomer in android.icu.
-// Don't link this in boot classpath or Zygote to avoid class collision with the
-// com.ibm.icu.impl.CalendarAstronomer in the app classloader.
-java_library_static {
- name: "icu4j_calendar_astronomer",
- host_supported: false,
- sdk_version: "core_current",
- srcs: ["main/core/src/main/java/com/ibm/icu/impl/CalendarAstronomer.java"],
- visibility: [
- "//frameworks/base/services/core",
- "//packages/apps/WallpaperPicker2",
- ],
-}
-
java_test {
name: "icu4j-tests",
defaults: ["icu4j-defaults"],
@@ -131,6 +116,7 @@ java_test {
exclude_java_resource_dirs: ["main/localespi/src/test"],
static_libs: [
+ "gson",
"icu4j",
"icu4j-testdata",
"junit-params",
diff --git a/icu4j/coverage-exclusion.txt b/icu4j/coverage-exclusion.txt
index 06ae03338..183f13604 100644
--- a/icu4j/coverage-exclusion.txt
+++ b/icu4j/coverage-exclusion.txt
@@ -273,6 +273,17 @@ com/ibm/icu/impl/locale/LanguageTag#canonicalizeExtensionSubtag:(Ljava/lang/Stri
com/ibm/icu/impl/locale/LanguageTag#canonicalizeExtlang:(Ljava/lang/String;)Ljava/lang/String;
com/ibm/icu/impl/locale/LanguageTag#canonicalizePrivateuseSubtag:(Ljava/lang/String;)Ljava/lang/String;
com/ibm/icu/impl/locale/LanguageTag#toString:()Ljava/lang/String;
+com/ibm/icu/impl/locale/LikelySubtags#getDefault:()Lcom/ibm/icu/impl/locale/LikelySubtags;
+com/ibm/icu/impl/locale/LikelySubtags#maximize:(Lcom/ibm/icu/impl/locale/LikelySubtags$LSR;)Lcom/ibm/icu/impl/locale/LikelySubtags$LSR;
+com/ibm/icu/impl/locale/LikelySubtags#maximize:(Lcom/ibm/icu/util/ULocale;)Lcom/ibm/icu/impl/locale/LikelySubtags$LSR;
+com/ibm/icu/impl/locale/LikelySubtags#maximize:(Ljava/lang/String;)Lcom/ibm/icu/impl/locale/LikelySubtags$LSR;
+com/ibm/icu/impl/locale/LikelySubtags#minimizeSubtags:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/ibm/icu/util/ULocale$Minimize;)Lcom/ibm/icu/impl/locale/LikelySubtags$LSR;
+com/ibm/icu/impl/locale/LikelySubtags#show:(Ljava/util/Map;Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
+com/ibm/icu/impl/locale/LikelySubtags#toString:()Ljava/lang/String;
+com/ibm/icu/impl/locale/LikelySubtags$LSR#from:(Lcom/ibm/icu/util/ULocale;)Lcom/ibm/icu/impl/locale/LikelySubtags$LSR;
+com/ibm/icu/impl/locale/LikelySubtags$LSR#from:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/ibm/icu/impl/locale/LikelySubtags$LSR;
+com/ibm/icu/impl/locale/LikelySubtags$LSR#toString:()Ljava/lang/String;
+com/ibm/icu/impl/locale/LikelySubtags$Maker$1#make:()Ljava/util/Map;
com/ibm/icu/impl/locale/LocaleExtensions#equals:(Ljava/lang/Object;)Z
com/ibm/icu/impl/locale/LocaleExtensions#getID:()Ljava/lang/String;
com/ibm/icu/impl/locale/LocaleExtensions#hashCode:()I
@@ -307,17 +318,6 @@ com/ibm/icu/impl/locale/XCldrStub$RegexUtilities#<init>:()V
com/ibm/icu/impl/locale/XCldrStub$RegexUtilities#findMismatch:(Ljava/util/regex/Matcher;Ljava/lang/CharSequence;)I
com/ibm/icu/impl/locale/XCldrStub$RegexUtilities#showMismatch:(Ljava/util/regex/Matcher;Ljava/lang/CharSequence;)Ljava/lang/String;
com/ibm/icu/impl/locale/XCldrStub$ReusableEntry#setValue:(Ljava/lang/Object;)Ljava/lang/Object;
-com/ibm/icu/impl/locale/XLikelySubtags#getDefault:()Lcom/ibm/icu/impl/locale/XLikelySubtags;
-com/ibm/icu/impl/locale/XLikelySubtags#maximize:(Lcom/ibm/icu/impl/locale/XLikelySubtags$LSR;)Lcom/ibm/icu/impl/locale/XLikelySubtags$LSR;
-com/ibm/icu/impl/locale/XLikelySubtags#maximize:(Lcom/ibm/icu/util/ULocale;)Lcom/ibm/icu/impl/locale/XLikelySubtags$LSR;
-com/ibm/icu/impl/locale/XLikelySubtags#maximize:(Ljava/lang/String;)Lcom/ibm/icu/impl/locale/XLikelySubtags$LSR;
-com/ibm/icu/impl/locale/XLikelySubtags#minimizeSubtags:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/ibm/icu/util/ULocale$Minimize;)Lcom/ibm/icu/impl/locale/XLikelySubtags$LSR;
-com/ibm/icu/impl/locale/XLikelySubtags#show:(Ljava/util/Map;Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-com/ibm/icu/impl/locale/XLikelySubtags#toString:()Ljava/lang/String;
-com/ibm/icu/impl/locale/XLikelySubtags$LSR#from:(Lcom/ibm/icu/util/ULocale;)Lcom/ibm/icu/impl/locale/XLikelySubtags$LSR;
-com/ibm/icu/impl/locale/XLikelySubtags$LSR#from:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/ibm/icu/impl/locale/XLikelySubtags$LSR;
-com/ibm/icu/impl/locale/XLikelySubtags$LSR#toString:()Ljava/lang/String;
-com/ibm/icu/impl/locale/XLikelySubtags$Maker$1#make:()Ljava/util/Map;
com/ibm/icu/impl/locale/XLocaleDistance#fixedName:(Ljava/util/List;)Ljava/lang/String;
com/ibm/icu/impl/locale/XLocaleDistance#getContainingMacrosFor:(Ljava/util/Collection;Ljava/util/Set;)Ljava/util/Set;
com/ibm/icu/impl/locale/XLocaleDistance#getDefaultLanguageDistance:()I
diff --git a/icu4j/demos/pom.xml b/icu4j/demos/pom.xml
index 7232d2bb4..6d76caea8 100644
--- a/icu4j/demos/pom.xml
+++ b/icu4j/demos/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
</parent>
<artifactId>demos</artifactId>
diff --git a/icu4j/extract-data-files.sh b/icu4j/extract-data-files.sh
index 01e491249..c926a3950 100755
--- a/icu4j/extract-data-files.sh
+++ b/icu4j/extract-data-files.sh
@@ -73,12 +73,13 @@ rm -fr main/core/src/test/resources/com/ibm/icu/dev/data/testdata/
unzip -q -d main/core/src/test/resources/ main/shared/data/testdata.jar
rm -fr main/core/src/test/resources/META-INF
-echo "Removing jar files"
-echo " icudata.jar"
-rm main/shared/data/icudata.jar
-echo " icutzdata.jar"
-rm main/shared/data/icutzdata.jar
-echo " testdata.jar"
-rm main/shared/data/testdata.jar
+# Android-changed: Keep the data jar files in AOSP.
+# echo "Removing jar files"
+# echo " icudata.jar"
+# rm main/shared/data/icudata.jar
+# echo " icutzdata.jar"
+# rm main/shared/data/icutzdata.jar
+# echo " testdata.jar"
+# rm main/shared/data/testdata.jar
echo DONE
diff --git a/icu4j/main/charset/pom.xml b/icu4j/main/charset/pom.xml
index 8cef64f52..d228b90d1 100644
--- a/icu4j/main/charset/pom.xml
+++ b/icu4j/main/charset/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/cns-11643-1992.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/cns-11643-1992.cnv
deleted file mode 100644
index 1bacafa31..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/cns-11643-1992.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebcdic-xml-us.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebcdic-xml-us.cnv
deleted file mode 100644
index 7b4daa171..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebcdic-xml-us.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/euc-jp-2007.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/euc-jp-2007.cnv
deleted file mode 100644
index ee241a384..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/euc-jp-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/euc-tw-2014.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/euc-tw-2014.cnv
deleted file mode 100644
index ea77207a8..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/euc-tw-2014.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/gb18030-2022.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/gb18030-2022.cnv
deleted file mode 100644
index 5de777c1d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/gb18030-2022.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsm-03.38-2009.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsm-03.38-2009.cnv
deleted file mode 100644
index 36622ef86..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsm-03.38-2009.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1006_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1006_P100-1995.cnv
deleted file mode 100644
index ae50abafc..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1006_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1025_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1025_P100-1995.cnv
deleted file mode 100644
index ebb5e98bf..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1025_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1026_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1026_P100-1995.cnv
deleted file mode 100644
index 3366ab4d1..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1026_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1047_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1047_P100-1995.cnv
deleted file mode 100644
index 92d4ae7ab..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1047_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1051_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1051_P100-1995.cnv
deleted file mode 100644
index e72d56ca3..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1051_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1089_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1089_P100-1995.cnv
deleted file mode 100644
index a201effff..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1089_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1097_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1097_P100-1995.cnv
deleted file mode 100644
index a78a8cd58..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1097_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1098_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1098_P100-1995.cnv
deleted file mode 100644
index c00246e21..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1098_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1112_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1112_P100-1995.cnv
deleted file mode 100644
index cbe4e9e58..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1112_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1122_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1122_P100-1999.cnv
deleted file mode 100644
index ebc985dec..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1122_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1123_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1123_P100-1995.cnv
deleted file mode 100644
index 865c2c4af..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1123_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1124_P100-1996.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1124_P100-1996.cnv
deleted file mode 100644
index 4a93cc6b1..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1124_P100-1996.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1125_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1125_P100-1997.cnv
deleted file mode 100644
index 1edc311d1..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1125_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1129_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1129_P100-1997.cnv
deleted file mode 100644
index be32fab00..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1129_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1130_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1130_P100-1997.cnv
deleted file mode 100644
index df70f73d0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1130_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1131_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1131_P100-1997.cnv
deleted file mode 100644
index 230be3b93..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1131_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1132_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1132_P100-1998.cnv
deleted file mode 100644
index 4021dbec9..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1132_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1133_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1133_P100-1997.cnv
deleted file mode 100644
index 3e89f3664..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1133_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1137_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1137_P100-1999.cnv
deleted file mode 100644
index 692b6d900..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1137_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1140_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1140_P100-1997.cnv
deleted file mode 100644
index a2e786c0f..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1140_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1141_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1141_P100-1997.cnv
deleted file mode 100644
index 53f1b3830..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1141_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1142_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1142_P100-1997.cnv
deleted file mode 100644
index 5022b06e4..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1142_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1143_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1143_P100-1997.cnv
deleted file mode 100644
index 6e1ed043c..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1143_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1144_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1144_P100-1997.cnv
deleted file mode 100644
index e3ed5cf46..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1144_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1145_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1145_P100-1997.cnv
deleted file mode 100644
index a1d4184f2..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1145_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1146_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1146_P100-1997.cnv
deleted file mode 100644
index fb467a8de..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1146_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1147_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1147_P100-1997.cnv
deleted file mode 100644
index 40fd4098b..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1147_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1148_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1148_P100-1997.cnv
deleted file mode 100644
index 9b53ea03a..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1148_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1149_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1149_P100-1997.cnv
deleted file mode 100644
index 3bef26c51..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1149_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1153_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1153_P100-1999.cnv
deleted file mode 100644
index 50842fc0a..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1153_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1154_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1154_P100-1999.cnv
deleted file mode 100644
index 1f687915d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1154_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1155_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1155_P100-1999.cnv
deleted file mode 100644
index 7c99bd970..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1155_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1156_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1156_P100-1999.cnv
deleted file mode 100644
index 2d1a05852..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1156_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1157_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1157_P100-1999.cnv
deleted file mode 100644
index 8ae75266a..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1157_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1158_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1158_P100-1999.cnv
deleted file mode 100644
index 06389f8d0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1158_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1160_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1160_P100-1999.cnv
deleted file mode 100644
index 7fa8bf0f2..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1160_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1162_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1162_P100-1999.cnv
deleted file mode 100644
index b2f881151..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1162_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1164_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1164_P100-1999.cnv
deleted file mode 100644
index f4f524325..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1164_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1168_P100-2002.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1168_P100-2002.cnv
deleted file mode 100644
index 56e60b580..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1168_P100-2002.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1250_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1250_P100-1995.cnv
deleted file mode 100644
index d20d5531c..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1250_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1251_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1251_P100-1995.cnv
deleted file mode 100644
index f65b1a8b0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1251_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1252_P100-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1252_P100-2000.cnv
deleted file mode 100644
index 61fd6a2c1..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1252_P100-2000.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1253_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1253_P100-1995.cnv
deleted file mode 100644
index ac0652c30..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1253_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1254_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1254_P100-1995.cnv
deleted file mode 100644
index 45d7a48e4..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1254_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1255_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1255_P100-1995.cnv
deleted file mode 100644
index 8b7924818..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1255_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1256_P110-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1256_P110-1997.cnv
deleted file mode 100644
index 4e121374b..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1256_P110-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1257_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1257_P100-1995.cnv
deleted file mode 100644
index 052c08a45..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1257_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1258_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1258_P100-1997.cnv
deleted file mode 100644
index 6ed1af884..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1258_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-12712_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-12712_P100-1998.cnv
deleted file mode 100644
index 059a99dd4..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-12712_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1276_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1276_P100-1995.cnv
deleted file mode 100644
index b45270d54..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1276_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1363_P110-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1363_P110-1997.cnv
deleted file mode 100644
index 3e25885b3..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1363_P110-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1363_P11B-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1363_P11B-1998.cnv
deleted file mode 100644
index ced379b8c..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1363_P11B-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1364_P110-2007.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1364_P110-2007.cnv
deleted file mode 100644
index d980e7f23..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1364_P110-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1371_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1371_P100-1999.cnv
deleted file mode 100644
index f5e117185..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1371_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1373_P100-2002.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1373_P100-2002.cnv
deleted file mode 100644
index 44fb9f73f..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1373_P100-2002.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1375_P100-2008.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1375_P100-2008.cnv
deleted file mode 100644
index 198f83466..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1375_P100-2008.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1383_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1383_P110-1999.cnv
deleted file mode 100644
index 5edb6cd8d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1383_P110-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1386_P100-2001.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1386_P100-2001.cnv
deleted file mode 100644
index 122ded960..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1386_P100-2001.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1388_P103-2001.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1388_P103-2001.cnv
deleted file mode 100644
index 09b077285..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1388_P103-2001.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1390_P110-2003.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1390_P110-2003.cnv
deleted file mode 100644
index 3c1f4d5a7..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1390_P110-2003.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1399_P110-2003.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1399_P110-2003.cnv
deleted file mode 100644
index a51aca2e4..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-1399_P110-2003.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-16684_P110-2003.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-16684_P110-2003.cnv
deleted file mode 100644
index 2330093d2..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-16684_P110-2003.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-16804_X110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-16804_X110-1999.cnv
deleted file mode 100644
index 91963e3c8..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-16804_X110-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-273_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-273_P100-1995.cnv
deleted file mode 100644
index 3e08fd200..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-273_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-277_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-277_P100-1995.cnv
deleted file mode 100644
index c66a7020e..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-277_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-278_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-278_P100-1995.cnv
deleted file mode 100644
index 5458f71e6..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-278_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-280_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-280_P100-1995.cnv
deleted file mode 100644
index d399a8e58..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-280_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-284_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-284_P100-1995.cnv
deleted file mode 100644
index 28cf73120..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-284_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-285_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-285_P100-1995.cnv
deleted file mode 100644
index 432305cd0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-285_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-290_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-290_P100-1995.cnv
deleted file mode 100644
index 1383602c1..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-290_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-297_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-297_P100-1995.cnv
deleted file mode 100644
index 8fa499bdb..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-297_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P120-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P120-1999.cnv
deleted file mode 100644
index 67e14daf0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P120-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P12A_P12A-2004_U2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P12A_P12A-2004_U2.cnv
deleted file mode 100644
index 1aa3f96f6..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P12A_P12A-2004_U2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P12A_P12A-2009_U2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P12A_P12A-2009_U2.cnv
deleted file mode 100644
index d25e28790..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-33722_P12A_P12A-2009_U2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-37_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-37_P100-1995.cnv
deleted file mode 100644
index f261ce9a4..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-37_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-420_X120-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-420_X120-1999.cnv
deleted file mode 100644
index 3992d54c7..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-420_X120-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-424_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-424_P100-1995.cnv
deleted file mode 100644
index 6103de9fd..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-424_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-437_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-437_P100-1995.cnv
deleted file mode 100644
index 8ab68208a..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-437_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4517_P100-2005.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4517_P100-2005.cnv
deleted file mode 100644
index 41529720d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4517_P100-2005.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4899_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4899_P100-1998.cnv
deleted file mode 100644
index 2ea7cb6cb..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4899_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4909_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4909_P100-1999.cnv
deleted file mode 100644
index ca5bc4f89..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4909_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4971_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4971_P100-1999.cnv
deleted file mode 100644
index 8d1a8e5df..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-4971_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-500_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-500_P100-1995.cnv
deleted file mode 100644
index f9738746e..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-500_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5012_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5012_P100-1999.cnv
deleted file mode 100644
index a254c7d8b..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5012_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5123_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5123_P100-1999.cnv
deleted file mode 100644
index 8027ba31b..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5123_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5346_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5346_P100-1998.cnv
deleted file mode 100644
index b9a12aa20..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5346_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5347_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5347_P100-1998.cnv
deleted file mode 100644
index 522880f39..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5347_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5348_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5348_P100-1997.cnv
deleted file mode 100644
index 1a3e4971f..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5348_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5349_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5349_P100-1998.cnv
deleted file mode 100644
index 621060858..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5349_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5350_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5350_P100-1998.cnv
deleted file mode 100644
index 916d01408..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5350_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5351_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5351_P100-1998.cnv
deleted file mode 100644
index f6035bbc8..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5351_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5352_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5352_P100-1998.cnv
deleted file mode 100644
index e55a62a74..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5352_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5353_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5353_P100-1998.cnv
deleted file mode 100644
index 46737da7a..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5353_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5354_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5354_P100-1998.cnv
deleted file mode 100644
index 8f026fc22..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5354_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5471_P100-2006.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5471_P100-2006.cnv
deleted file mode 100644
index f3bc2133e..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5471_P100-2006.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5478_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5478_P100-1995.cnv
deleted file mode 100644
index af2b4c553..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-5478_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-720_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-720_P100-1997.cnv
deleted file mode 100644
index 36d846c9a..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-720_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-737_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-737_P100-1997.cnv
deleted file mode 100644
index 16aec7a03..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-737_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-775_P100-1996.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-775_P100-1996.cnv
deleted file mode 100644
index efe1174a6..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-775_P100-1996.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-803_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-803_P100-1999.cnv
deleted file mode 100644
index 5f5abfe06..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-803_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-813_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-813_P100-1995.cnv
deleted file mode 100644
index 1099d80b5..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-813_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-838_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-838_P100-1995.cnv
deleted file mode 100644
index 07a30aa47..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-838_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-8482_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-8482_P100-1999.cnv
deleted file mode 100644
index 1e2e20535..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-8482_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-850_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-850_P100-1995.cnv
deleted file mode 100644
index b2a055016..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-850_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-851_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-851_P100-1995.cnv
deleted file mode 100644
index 94e9ba2a6..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-851_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-852_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-852_P100-1995.cnv
deleted file mode 100644
index bcfd2f27b..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-852_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-855_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-855_P100-1995.cnv
deleted file mode 100644
index e37114155..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-855_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-856_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-856_P100-1995.cnv
deleted file mode 100644
index bab9029b2..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-856_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-857_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-857_P100-1995.cnv
deleted file mode 100644
index 71580920c..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-857_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-858_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-858_P100-1997.cnv
deleted file mode 100644
index 5b11cf895..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-858_P100-1997.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-860_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-860_P100-1995.cnv
deleted file mode 100644
index 1919f0e01..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-860_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-861_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-861_P100-1995.cnv
deleted file mode 100644
index 481dae7be..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-861_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-862_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-862_P100-1995.cnv
deleted file mode 100644
index f340bcfa4..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-862_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-863_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-863_P100-1995.cnv
deleted file mode 100644
index 3addd7ab5..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-863_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-864_X110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-864_X110-1999.cnv
deleted file mode 100644
index da212649d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-864_X110-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-865_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-865_P100-1995.cnv
deleted file mode 100644
index f5e45af94..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-865_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-866_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-866_P100-1995.cnv
deleted file mode 100644
index 8cd751da9..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-866_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-867_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-867_P100-1998.cnv
deleted file mode 100644
index d52f5a255..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-867_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-868_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-868_P100-1995.cnv
deleted file mode 100644
index a5ae54e0e..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-868_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-869_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-869_P100-1995.cnv
deleted file mode 100644
index 7b3e7275c..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-869_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-870_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-870_P100-1995.cnv
deleted file mode 100644
index 22539981d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-870_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-871_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-871_P100-1995.cnv
deleted file mode 100644
index a0d1535c7..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-871_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-874_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-874_P100-1995.cnv
deleted file mode 100644
index 9b661490d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-874_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-875_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-875_P100-1995.cnv
deleted file mode 100644
index c861a37fc..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-875_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-878_P100-1996.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-878_P100-1996.cnv
deleted file mode 100644
index 809e13ce6..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-878_P100-1996.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9005_X110-2007.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9005_X110-2007.cnv
deleted file mode 100644
index b29a74e1d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9005_X110-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-901_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-901_P100-1999.cnv
deleted file mode 100644
index b7b84da42..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-901_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-902_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-902_P100-1999.cnv
deleted file mode 100644
index 417d553f8..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-902_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9067_X100-2005.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9067_X100-2005.cnv
deleted file mode 100644
index 8661ebc68..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9067_X100-2005.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-912_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-912_P100-1995.cnv
deleted file mode 100644
index a1a80c066..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-912_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-913_P100-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-913_P100-2000.cnv
deleted file mode 100644
index 86aa516e9..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-913_P100-2000.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-914_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-914_P100-1995.cnv
deleted file mode 100644
index 38b653846..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-914_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-915_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-915_P100-1995.cnv
deleted file mode 100644
index 8f4e07f96..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-915_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-916_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-916_P100-1995.cnv
deleted file mode 100644
index 451a42677..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-916_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-918_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-918_P100-1995.cnv
deleted file mode 100644
index 017aa9213..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-918_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-920_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-920_P100-1995.cnv
deleted file mode 100644
index 6c51190a9..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-920_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-921_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-921_P100-1995.cnv
deleted file mode 100644
index fb75555f7..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-921_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-922_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-922_P100-1999.cnv
deleted file mode 100644
index 5becc3467..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-922_P100-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-923_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-923_P100-1998.cnv
deleted file mode 100644
index dfe656bcd..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-923_P100-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-930_P120-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-930_P120-1999.cnv
deleted file mode 100644
index f3eb2be8f..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-930_P120-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-933_P110-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-933_P110-1995.cnv
deleted file mode 100644
index b4446e361..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-933_P110-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-935_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-935_P110-1999.cnv
deleted file mode 100644
index f36f39efb..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-935_P110-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-937_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-937_P110-1999.cnv
deleted file mode 100644
index ad9add3cc..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-937_P110-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-939_P120-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-939_P120-1999.cnv
deleted file mode 100644
index c8dccc5aa..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-939_P120-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-942_P12A-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-942_P12A-1999.cnv
deleted file mode 100644
index 60be17ea3..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-942_P12A-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-943_P130-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-943_P130-1999.cnv
deleted file mode 100644
index dc42dbbbb..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-943_P130-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-943_P15A-2003.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-943_P15A-2003.cnv
deleted file mode 100644
index 67c57b77d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-943_P15A-2003.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9447_P100-2002.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9447_P100-2002.cnv
deleted file mode 100644
index a00751022..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9447_P100-2002.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9448_X100-2005.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9448_X100-2005.cnv
deleted file mode 100644
index 8d8e8710d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9448_X100-2005.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9449_P100-2002.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9449_P100-2002.cnv
deleted file mode 100644
index 5b590a401..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-9449_P100-2002.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-949_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-949_P110-1999.cnv
deleted file mode 100644
index 44d4c4559..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-949_P110-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-949_P11A-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-949_P11A-1999.cnv
deleted file mode 100644
index e229cd777..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-949_P11A-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-950_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-950_P110-1999.cnv
deleted file mode 100644
index a0a4723b5..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-950_P110-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-954_P101-2007.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-954_P101-2007.cnv
deleted file mode 100644
index 68e7c608b..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-954_P101-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-964_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-964_P110-1999.cnv
deleted file mode 100644
index 7aa626110..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-964_P110-1999.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-970_P110_P110-2006_U2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-970_P110_P110-2006_U2.cnv
deleted file mode 100644
index c85fca6a0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-970_P110_P110-2006_U2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-971_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-971_P100-1995.cnv
deleted file mode 100644
index ca1fd9109..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/ibm-971_P100-1995.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-25546.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-25546.cnv
deleted file mode 100644
index 31adee6ee..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-25546.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d1.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d1.cnv
deleted file mode 100644
index 2b455c91a..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d1.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d2.cnv
deleted file mode 100644
index 6fe7ef114..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d3.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d3.cnv
deleted file mode 100644
index 1dfb10a38..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d3.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d4.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d4.cnv
deleted file mode 100644
index 3bb6457c0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d4.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d5.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d5.cnv
deleted file mode 100644
index ba3ca3763..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d5.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d6.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d6.cnv
deleted file mode 100644
index 1c9943859..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d6.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d7.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d7.cnv
deleted file mode 100644
index 7bbcdefa3..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-d7.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s1.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s1.cnv
deleted file mode 100644
index e8f33c2b5..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s1.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s2.cnv
deleted file mode 100644
index 5e66b9cf4..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s3.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s3.cnv
deleted file mode 100644
index 827bbe58b..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-s3.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-t.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-t.cnv
deleted file mode 100644
index 73d6a0760..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/icu-internal-compound-t.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_10-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_10-1998.cnv
deleted file mode 100644
index d1609a8a0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_10-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_11-2001.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_11-2001.cnv
deleted file mode 100644
index 870e759ed..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_11-2001.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_14-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_14-1998.cnv
deleted file mode 100644
index ac305ab12..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-8859_14-1998.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-ir-165.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-ir-165.cnv
deleted file mode 100644
index 2c9c510b0..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/iso-ir-165.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/jisx-212.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/jisx-212.cnv
deleted file mode 100644
index d26e98e42..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/jisx-212.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmb-excp.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmb-excp.cnv
deleted file mode 100644
index ed338d754..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmb-excp.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-0_2-10.2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-0_2-10.2.cnv
deleted file mode 100644
index ab8126cbe..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-0_2-10.2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-29-10.2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-29-10.2.cnv
deleted file mode 100644
index 1d63561c6..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-29-10.2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-35-10.2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-35-10.2.cnv
deleted file mode 100644
index 55151b485..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-35-10.2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-6_2-10.4.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-6_2-10.4.cnv
deleted file mode 100644
index f0f88973a..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-6_2-10.4.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-7_3-10.2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-7_3-10.2.cnv
deleted file mode 100644
index 01f3556fd..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/macos-7_3-10.2.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-874-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-874-2000.cnv
deleted file mode 100644
index fc7415acb..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-874-2000.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-936-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-936-2000.cnv
deleted file mode 100644
index c4c321d5d..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-936-2000.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-949-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-949-2000.cnv
deleted file mode 100644
index 55acbd3b2..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-949-2000.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-950-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-950-2000.cnv
deleted file mode 100644
index 22dd9548b..000000000
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/windows-950-2000.cnv
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/cns-11643-1992.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/cns-11643-1992.cnv
new file mode 100644
index 000000000..5756cfa1b
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/cns-11643-1992.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/cnvalias.icu b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/cnvalias.icu
index 3d2d6f7f6..3d2d6f7f6 100644
--- a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt74b/cnvalias.icu
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/cnvalias.icu
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebcdic-xml-us.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebcdic-xml-us.cnv
new file mode 100644
index 000000000..db4b0e697
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebcdic-xml-us.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/euc-jp-2007.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/euc-jp-2007.cnv
new file mode 100644
index 000000000..dcf9a5318
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/euc-jp-2007.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/euc-tw-2014.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/euc-tw-2014.cnv
new file mode 100644
index 000000000..f5b7dd186
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/euc-tw-2014.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/gb18030-2022.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/gb18030-2022.cnv
new file mode 100644
index 000000000..f7e634e67
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/gb18030-2022.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsm-03.38-2009.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsm-03.38-2009.cnv
new file mode 100644
index 000000000..7c662cb88
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsm-03.38-2009.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1006_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1006_P100-1995.cnv
new file mode 100644
index 000000000..e26bceb54
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1006_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1025_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1025_P100-1995.cnv
new file mode 100644
index 000000000..3436d4811
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1025_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1026_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1026_P100-1995.cnv
new file mode 100644
index 000000000..1b963ca3a
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1026_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1047_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1047_P100-1995.cnv
new file mode 100644
index 000000000..959386aa3
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1047_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1051_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1051_P100-1995.cnv
new file mode 100644
index 000000000..840de9806
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1051_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1089_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1089_P100-1995.cnv
new file mode 100644
index 000000000..5a4da64e9
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1089_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1097_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1097_P100-1995.cnv
new file mode 100644
index 000000000..91fec1268
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1097_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1098_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1098_P100-1995.cnv
new file mode 100644
index 000000000..c9c451c97
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1098_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1112_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1112_P100-1995.cnv
new file mode 100644
index 000000000..6a1d609de
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1112_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1122_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1122_P100-1999.cnv
new file mode 100644
index 000000000..863bfd8f5
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1122_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1123_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1123_P100-1995.cnv
new file mode 100644
index 000000000..e2a47af17
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1123_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1124_P100-1996.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1124_P100-1996.cnv
new file mode 100644
index 000000000..85ea3e9bc
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1124_P100-1996.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1125_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1125_P100-1997.cnv
new file mode 100644
index 000000000..946850896
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1125_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1129_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1129_P100-1997.cnv
new file mode 100644
index 000000000..8ca9238b9
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1129_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1130_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1130_P100-1997.cnv
new file mode 100644
index 000000000..ee2c96b9a
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1130_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1131_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1131_P100-1997.cnv
new file mode 100644
index 000000000..2f9b91da5
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1131_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1132_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1132_P100-1998.cnv
new file mode 100644
index 000000000..6a0375c5c
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1132_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1133_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1133_P100-1997.cnv
new file mode 100644
index 000000000..c656ceaed
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1133_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1137_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1137_P100-1999.cnv
new file mode 100644
index 000000000..c87237baf
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1137_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1140_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1140_P100-1997.cnv
new file mode 100644
index 000000000..513f23ef5
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1140_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1141_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1141_P100-1997.cnv
new file mode 100644
index 000000000..f664cd77c
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1141_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1142_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1142_P100-1997.cnv
new file mode 100644
index 000000000..55c9725ef
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1142_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1143_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1143_P100-1997.cnv
new file mode 100644
index 000000000..2f8e92955
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1143_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1144_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1144_P100-1997.cnv
new file mode 100644
index 000000000..58a2da56e
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1144_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1145_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1145_P100-1997.cnv
new file mode 100644
index 000000000..15618d601
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1145_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1146_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1146_P100-1997.cnv
new file mode 100644
index 000000000..fbfb87dbb
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1146_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1147_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1147_P100-1997.cnv
new file mode 100644
index 000000000..0b1651e11
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1147_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1148_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1148_P100-1997.cnv
new file mode 100644
index 000000000..b5cd441fe
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1148_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1149_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1149_P100-1997.cnv
new file mode 100644
index 000000000..4ef747683
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1149_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1153_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1153_P100-1999.cnv
new file mode 100644
index 000000000..24f659cf6
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1153_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1154_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1154_P100-1999.cnv
new file mode 100644
index 000000000..f582b59da
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1154_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1155_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1155_P100-1999.cnv
new file mode 100644
index 000000000..24038f52b
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1155_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1156_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1156_P100-1999.cnv
new file mode 100644
index 000000000..b489df870
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1156_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1157_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1157_P100-1999.cnv
new file mode 100644
index 000000000..4816d3a37
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1157_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1158_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1158_P100-1999.cnv
new file mode 100644
index 000000000..49049a93f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1158_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1160_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1160_P100-1999.cnv
new file mode 100644
index 000000000..366ef13ef
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1160_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1162_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1162_P100-1999.cnv
new file mode 100644
index 000000000..a78d4aabd
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1162_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1164_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1164_P100-1999.cnv
new file mode 100644
index 000000000..70d46cd6f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1164_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1168_P100-2002.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1168_P100-2002.cnv
new file mode 100644
index 000000000..af60a32e4
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1168_P100-2002.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1250_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1250_P100-1995.cnv
new file mode 100644
index 000000000..8c9a978f5
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1250_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1251_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1251_P100-1995.cnv
new file mode 100644
index 000000000..a44dbcd61
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1251_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1252_P100-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1252_P100-2000.cnv
new file mode 100644
index 000000000..6d53cf8c1
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1252_P100-2000.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1253_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1253_P100-1995.cnv
new file mode 100644
index 000000000..337527af7
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1253_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1254_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1254_P100-1995.cnv
new file mode 100644
index 000000000..7de55f04c
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1254_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1255_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1255_P100-1995.cnv
new file mode 100644
index 000000000..d7a371925
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1255_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1256_P110-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1256_P110-1997.cnv
new file mode 100644
index 000000000..3e4a86100
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1256_P110-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1257_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1257_P100-1995.cnv
new file mode 100644
index 000000000..56ba9d2c7
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1257_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1258_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1258_P100-1997.cnv
new file mode 100644
index 000000000..f9fba3ec5
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1258_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-12712_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-12712_P100-1998.cnv
new file mode 100644
index 000000000..f50ea9a7a
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-12712_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1276_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1276_P100-1995.cnv
new file mode 100644
index 000000000..05a2cc43e
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1276_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1363_P110-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1363_P110-1997.cnv
new file mode 100644
index 000000000..5c551d825
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1363_P110-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1363_P11B-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1363_P11B-1998.cnv
new file mode 100644
index 000000000..05ae5b678
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1363_P11B-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1364_P110-2007.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1364_P110-2007.cnv
new file mode 100644
index 000000000..6e9553ff9
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1364_P110-2007.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1371_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1371_P100-1999.cnv
new file mode 100644
index 000000000..65f4be4fb
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1371_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1373_P100-2002.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1373_P100-2002.cnv
new file mode 100644
index 000000000..1d5b12a19
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1373_P100-2002.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1375_P100-2008.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1375_P100-2008.cnv
new file mode 100644
index 000000000..1a4e8a0f0
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1375_P100-2008.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1383_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1383_P110-1999.cnv
new file mode 100644
index 000000000..822fd2829
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1383_P110-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1386_P100-2001.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1386_P100-2001.cnv
new file mode 100644
index 000000000..f471eb873
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1386_P100-2001.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1388_P103-2001.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1388_P103-2001.cnv
new file mode 100644
index 000000000..38d9515f4
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1388_P103-2001.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1390_P110-2003.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1390_P110-2003.cnv
new file mode 100644
index 000000000..aa79c503d
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1390_P110-2003.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1399_P110-2003.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1399_P110-2003.cnv
new file mode 100644
index 000000000..a0ef4c077
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-1399_P110-2003.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-16684_P110-2003.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-16684_P110-2003.cnv
new file mode 100644
index 000000000..b28f375c3
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-16684_P110-2003.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-16804_X110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-16804_X110-1999.cnv
new file mode 100644
index 000000000..124ced477
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-16804_X110-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-273_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-273_P100-1995.cnv
new file mode 100644
index 000000000..82f82fe69
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-273_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-277_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-277_P100-1995.cnv
new file mode 100644
index 000000000..c2908fea0
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-277_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-278_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-278_P100-1995.cnv
new file mode 100644
index 000000000..e3e7337ed
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-278_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-280_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-280_P100-1995.cnv
new file mode 100644
index 000000000..5bb77f3dc
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-280_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-284_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-284_P100-1995.cnv
new file mode 100644
index 000000000..46eb10c4e
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-284_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-285_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-285_P100-1995.cnv
new file mode 100644
index 000000000..99a6f405a
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-285_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-290_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-290_P100-1995.cnv
new file mode 100644
index 000000000..6e174e9d6
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-290_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-297_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-297_P100-1995.cnv
new file mode 100644
index 000000000..c5cea4644
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-297_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P120-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P120-1999.cnv
new file mode 100644
index 000000000..206fd9b8f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P120-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P12A_P12A-2004_U2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P12A_P12A-2004_U2.cnv
new file mode 100644
index 000000000..3fa68dcfa
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P12A_P12A-2004_U2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P12A_P12A-2009_U2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P12A_P12A-2009_U2.cnv
new file mode 100644
index 000000000..d97bc865f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-33722_P12A_P12A-2009_U2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-37_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-37_P100-1995.cnv
new file mode 100644
index 000000000..c85cb7fdd
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-37_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-420_X120-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-420_X120-1999.cnv
new file mode 100644
index 000000000..4b163ef7f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-420_X120-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-424_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-424_P100-1995.cnv
new file mode 100644
index 000000000..54ea72307
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-424_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-437_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-437_P100-1995.cnv
new file mode 100644
index 000000000..91d9aca22
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-437_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4517_P100-2005.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4517_P100-2005.cnv
new file mode 100644
index 000000000..3026e1b64
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4517_P100-2005.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4899_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4899_P100-1998.cnv
new file mode 100644
index 000000000..bc3e9b7d4
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4899_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4909_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4909_P100-1999.cnv
new file mode 100644
index 000000000..e184c5d60
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4909_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4971_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4971_P100-1999.cnv
new file mode 100644
index 000000000..9f9d04320
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-4971_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-500_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-500_P100-1995.cnv
new file mode 100644
index 000000000..f159ca061
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-500_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5012_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5012_P100-1999.cnv
new file mode 100644
index 000000000..4661c3cbd
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5012_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5123_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5123_P100-1999.cnv
new file mode 100644
index 000000000..c7e96d7eb
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5123_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5346_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5346_P100-1998.cnv
new file mode 100644
index 000000000..a4756b4a1
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5346_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5347_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5347_P100-1998.cnv
new file mode 100644
index 000000000..92be7d754
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5347_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5348_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5348_P100-1997.cnv
new file mode 100644
index 000000000..f1b465060
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5348_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5349_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5349_P100-1998.cnv
new file mode 100644
index 000000000..35e672c3b
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5349_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5350_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5350_P100-1998.cnv
new file mode 100644
index 000000000..7d2cda3ef
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5350_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5351_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5351_P100-1998.cnv
new file mode 100644
index 000000000..67bbaf104
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5351_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5352_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5352_P100-1998.cnv
new file mode 100644
index 000000000..ec63271e4
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5352_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5353_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5353_P100-1998.cnv
new file mode 100644
index 000000000..00930b2d8
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5353_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5354_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5354_P100-1998.cnv
new file mode 100644
index 000000000..6309d5d1a
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5354_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5471_P100-2006.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5471_P100-2006.cnv
new file mode 100644
index 000000000..1c761a3ec
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5471_P100-2006.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5478_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5478_P100-1995.cnv
new file mode 100644
index 000000000..dd4487018
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-5478_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-720_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-720_P100-1997.cnv
new file mode 100644
index 000000000..50015b55d
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-720_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-737_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-737_P100-1997.cnv
new file mode 100644
index 000000000..d80fae71e
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-737_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-775_P100-1996.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-775_P100-1996.cnv
new file mode 100644
index 000000000..77002d6d5
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-775_P100-1996.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-803_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-803_P100-1999.cnv
new file mode 100644
index 000000000..8f723e476
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-803_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-813_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-813_P100-1995.cnv
new file mode 100644
index 000000000..6ac46fd2a
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-813_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-838_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-838_P100-1995.cnv
new file mode 100644
index 000000000..3757a2858
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-838_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-8482_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-8482_P100-1999.cnv
new file mode 100644
index 000000000..a53e59e64
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-8482_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-850_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-850_P100-1995.cnv
new file mode 100644
index 000000000..11c29f5b6
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-850_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-851_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-851_P100-1995.cnv
new file mode 100644
index 000000000..c5727a8ab
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-851_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-852_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-852_P100-1995.cnv
new file mode 100644
index 000000000..34c4eec93
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-852_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-855_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-855_P100-1995.cnv
new file mode 100644
index 000000000..3efd84ae7
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-855_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-856_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-856_P100-1995.cnv
new file mode 100644
index 000000000..54fd1d666
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-856_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-857_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-857_P100-1995.cnv
new file mode 100644
index 000000000..4dc792519
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-857_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-858_P100-1997.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-858_P100-1997.cnv
new file mode 100644
index 000000000..b9c90c7fb
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-858_P100-1997.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-860_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-860_P100-1995.cnv
new file mode 100644
index 000000000..3b91f6c49
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-860_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-861_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-861_P100-1995.cnv
new file mode 100644
index 000000000..bbba0f752
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-861_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-862_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-862_P100-1995.cnv
new file mode 100644
index 000000000..01e33a265
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-862_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-863_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-863_P100-1995.cnv
new file mode 100644
index 000000000..d79ddedbb
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-863_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-864_X110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-864_X110-1999.cnv
new file mode 100644
index 000000000..132f93594
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-864_X110-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-865_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-865_P100-1995.cnv
new file mode 100644
index 000000000..704f64c1e
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-865_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-866_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-866_P100-1995.cnv
new file mode 100644
index 000000000..f90217618
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-866_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-867_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-867_P100-1998.cnv
new file mode 100644
index 000000000..c39769857
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-867_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-868_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-868_P100-1995.cnv
new file mode 100644
index 000000000..b57832bc0
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-868_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-869_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-869_P100-1995.cnv
new file mode 100644
index 000000000..34b638971
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-869_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-870_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-870_P100-1995.cnv
new file mode 100644
index 000000000..208020f53
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-870_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-871_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-871_P100-1995.cnv
new file mode 100644
index 000000000..45198b020
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-871_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-874_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-874_P100-1995.cnv
new file mode 100644
index 000000000..619b4b53f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-874_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-875_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-875_P100-1995.cnv
new file mode 100644
index 000000000..3acb0b3d7
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-875_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-878_P100-1996.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-878_P100-1996.cnv
new file mode 100644
index 000000000..3544d9789
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-878_P100-1996.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9005_X110-2007.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9005_X110-2007.cnv
new file mode 100644
index 000000000..0da6565af
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9005_X110-2007.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-901_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-901_P100-1999.cnv
new file mode 100644
index 000000000..7ca70ad16
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-901_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-902_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-902_P100-1999.cnv
new file mode 100644
index 000000000..b0230c541
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-902_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9067_X100-2005.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9067_X100-2005.cnv
new file mode 100644
index 000000000..2cf0f48cc
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9067_X100-2005.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-912_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-912_P100-1995.cnv
new file mode 100644
index 000000000..4b8dae9a9
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-912_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-913_P100-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-913_P100-2000.cnv
new file mode 100644
index 000000000..cbcb04c59
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-913_P100-2000.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-914_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-914_P100-1995.cnv
new file mode 100644
index 000000000..4d7a20cbb
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-914_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-915_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-915_P100-1995.cnv
new file mode 100644
index 000000000..8cc024dbd
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-915_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-916_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-916_P100-1995.cnv
new file mode 100644
index 000000000..54c5e1308
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-916_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-918_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-918_P100-1995.cnv
new file mode 100644
index 000000000..c90b7672b
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-918_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-920_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-920_P100-1995.cnv
new file mode 100644
index 000000000..410aa9824
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-920_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-921_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-921_P100-1995.cnv
new file mode 100644
index 000000000..e5b6e3037
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-921_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-922_P100-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-922_P100-1999.cnv
new file mode 100644
index 000000000..a5da925c4
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-922_P100-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-923_P100-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-923_P100-1998.cnv
new file mode 100644
index 000000000..b034c50ef
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-923_P100-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-930_P120-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-930_P120-1999.cnv
new file mode 100644
index 000000000..2099f5a61
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-930_P120-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-933_P110-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-933_P110-1995.cnv
new file mode 100644
index 000000000..0a5c0703f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-933_P110-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-935_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-935_P110-1999.cnv
new file mode 100644
index 000000000..511a60b8d
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-935_P110-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-937_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-937_P110-1999.cnv
new file mode 100644
index 000000000..9be55960e
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-937_P110-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-939_P120-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-939_P120-1999.cnv
new file mode 100644
index 000000000..c12c47ff7
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-939_P120-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-942_P12A-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-942_P12A-1999.cnv
new file mode 100644
index 000000000..099475461
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-942_P12A-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-943_P130-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-943_P130-1999.cnv
new file mode 100644
index 000000000..710bef478
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-943_P130-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-943_P15A-2003.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-943_P15A-2003.cnv
new file mode 100644
index 000000000..81ff2007c
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-943_P15A-2003.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9447_P100-2002.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9447_P100-2002.cnv
new file mode 100644
index 000000000..4e8da922f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9447_P100-2002.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9448_X100-2005.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9448_X100-2005.cnv
new file mode 100644
index 000000000..3a87b1572
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9448_X100-2005.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9449_P100-2002.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9449_P100-2002.cnv
new file mode 100644
index 000000000..105ac5f92
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-9449_P100-2002.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-949_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-949_P110-1999.cnv
new file mode 100644
index 000000000..45d72fc29
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-949_P110-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-949_P11A-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-949_P11A-1999.cnv
new file mode 100644
index 000000000..e7aeca2ae
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-949_P11A-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-950_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-950_P110-1999.cnv
new file mode 100644
index 000000000..3ba61cd12
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-950_P110-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-954_P101-2007.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-954_P101-2007.cnv
new file mode 100644
index 000000000..f3b172bbe
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-954_P101-2007.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-964_P110-1999.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-964_P110-1999.cnv
new file mode 100644
index 000000000..5f1fbb627
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-964_P110-1999.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-970_P110_P110-2006_U2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-970_P110_P110-2006_U2.cnv
new file mode 100644
index 000000000..38228c561
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-970_P110_P110-2006_U2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-971_P100-1995.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-971_P100-1995.cnv
new file mode 100644
index 000000000..de6757f7e
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/ibm-971_P100-1995.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-25546.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-25546.cnv
new file mode 100644
index 000000000..fe9a22702
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-25546.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d1.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d1.cnv
new file mode 100644
index 000000000..3bfb28fe2
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d1.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d2.cnv
new file mode 100644
index 000000000..e680186eb
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d3.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d3.cnv
new file mode 100644
index 000000000..a1e6dd9b5
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d3.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d4.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d4.cnv
new file mode 100644
index 000000000..afad08c72
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d4.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d5.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d5.cnv
new file mode 100644
index 000000000..f955e1ece
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d5.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d6.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d6.cnv
new file mode 100644
index 000000000..ec410788a
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d6.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d7.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d7.cnv
new file mode 100644
index 000000000..fed3554cc
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-d7.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s1.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s1.cnv
new file mode 100644
index 000000000..4590979ac
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s1.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s2.cnv
new file mode 100644
index 000000000..242f2cf88
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s3.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s3.cnv
new file mode 100644
index 000000000..9dbe8ee2d
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-s3.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-t.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-t.cnv
new file mode 100644
index 000000000..004c94827
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/icu-internal-compound-t.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_10-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_10-1998.cnv
new file mode 100644
index 000000000..07e5e7217
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_10-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_11-2001.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_11-2001.cnv
new file mode 100644
index 000000000..af464c02c
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_11-2001.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_14-1998.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_14-1998.cnv
new file mode 100644
index 000000000..371fde17c
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-8859_14-1998.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-ir-165.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-ir-165.cnv
new file mode 100644
index 000000000..61f1e4070
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/iso-ir-165.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/jisx-212.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/jisx-212.cnv
new file mode 100644
index 000000000..20cf0a462
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/jisx-212.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmb-excp.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmb-excp.cnv
new file mode 100644
index 000000000..8c6c30a9a
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmb-excp.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-0_2-10.2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-0_2-10.2.cnv
new file mode 100644
index 000000000..855cff72f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-0_2-10.2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-29-10.2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-29-10.2.cnv
new file mode 100644
index 000000000..5c4a50642
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-29-10.2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-35-10.2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-35-10.2.cnv
new file mode 100644
index 000000000..eed7864ec
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-35-10.2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-6_2-10.4.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-6_2-10.4.cnv
new file mode 100644
index 000000000..9b78e7246
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-6_2-10.4.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-7_3-10.2.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-7_3-10.2.cnv
new file mode 100644
index 000000000..1f29ed30f
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/macos-7_3-10.2.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-874-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-874-2000.cnv
new file mode 100644
index 000000000..cdddf0ee8
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-874-2000.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-936-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-936-2000.cnv
new file mode 100644
index 000000000..407adffd1
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-936-2000.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-949-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-949-2000.cnv
new file mode 100644
index 000000000..61895f2f0
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-949-2000.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-950-2000.cnv b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-950-2000.cnv
new file mode 100644
index 000000000..b70620cec
--- /dev/null
+++ b/icu4j/main/charset/src/main/resources/com/ibm/icu/impl/data/icudt75b/windows-950-2000.cnv
Binary files differ
diff --git a/icu4j/main/charset/src/test/java/com/ibm/icu/dev/test/charset/TestCharset.java b/icu4j/main/charset/src/test/java/com/ibm/icu/dev/test/charset/TestCharset.java
index d5ae1a167..2c560daa9 100644
--- a/icu4j/main/charset/src/test/java/com/ibm/icu/dev/test/charset/TestCharset.java
+++ b/icu4j/main/charset/src/test/java/com/ibm/icu/dev/test/charset/TestCharset.java
@@ -932,16 +932,16 @@ public class TestCharset extends TestFmwk {
// offsets.put(0);
// offsets.put(1);
// char[] buffer = null;
-// Integer length = new Integer(2);
-// Integer cp = new Integer(0);
+// Integer length = 2;
+// Integer cp = 0;
// CoderResult unmap = CoderResult.unmappableForLength(2);
// CoderResult malf = CoderResult.malformedForLength(2);
// CoderResult under = CoderResult.UNDERFLOW;
//
// // set up error arrays
-// Integer invalidCharLength = new Integer(1);
-// Byte subChar1 = new Byte((byte)0);
-// Byte subChar1_alternate = new Byte((byte)1); // for TO_U_CALLBACK_SUBSTITUTE
+// Integer invalidCharLength = 1;
+// Byte subChar1 = (byte)0;
+// Byte subChar1_alternate = (byte)1; // for TO_U_CALLBACK_SUBSTITUTE
//
// // set up chars and bytes backups and expected values for certain cases
// CharBuffer charsBackup = bufferCopy(chars);
@@ -967,14 +967,14 @@ public class TestCharset extends TestFmwk {
// // run toUWriteUChars with normal data
// Method toUWriteUChars = CharsetDecoderICU.class.getDeclaredMethod("toUWriteUChars", new Class[] { CharsetDecoderICU.class, char[].class, int.class, int.class, CharBuffer.class, IntBuffer.class, int.class});
// toUWriteUChars.setAccessible(true);
-// CoderResult decoderResultExpected1 = (CoderResult)toUWriteUChars.invoke(decoder, new Object[] {decoder, new char[] {0xFFFD}, new Integer(0), new Integer(1), decoderCharsExpected1, decoderOffsetsExpected1, new Integer(bytes.position())});
+// CoderResult decoderResultExpected1 = (CoderResult)toUWriteUChars.invoke(decoder, new Object[] {decoder, new char[] {0xFFFD}, Integer.valueOf(0), Integer.valueOf(1), decoderCharsExpected1, decoderOffsetsExpected1, Integer.valueOf(bytes.position())});
//
// // reset certain fields
// setFieldValue(CharsetDecoderICU.class, "invalidCharLength", decoder, invalidCharLength);
// setFieldValue(CharsetICU.class, "subChar1", ((CharsetICU) decoder.charset()), subChar1_alternate);
//
// // run toUWriteUChars again
-// CoderResult decoderResultExpected2 = (CoderResult)toUWriteUChars.invoke(decoder, new Object[] {decoder, new char[] {0x1A}, new Integer(0), new Integer(1), decoderCharsExpected2, decoderOffsetsExpected2, new Integer(bytes.position())});
+// CoderResult decoderResultExpected2 = (CoderResult)toUWriteUChars.invoke(decoder, new Object[] {decoder, new char[] {0x1A}, Integer.valueOf(0), Integer.valueOf(1), decoderCharsExpected2, decoderOffsetsExpected2, Integer.valueOf(bytes.position())});
//
// // begin creating the tests array
// ArrayList tests = new ArrayList();
diff --git a/icu4j/main/collate/pom.xml b/icu4j/main/collate/pom.xml
index aa6af1bab..ab1311df7 100644
--- a/icu4j/main/collate/pom.xml
+++ b/icu4j/main/collate/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/af.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/af.res
deleted file mode 100644
index 6b910b473..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/af.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/am.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/am.res
deleted file mode 100644
index ea4d70a00..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/am.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ar.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ar.res
deleted file mode 100644
index aaea59738..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ar.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/as.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/as.res
deleted file mode 100644
index 3e59b5da7..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/as.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/az.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/az.res
deleted file mode 100644
index 5ed888347..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/az.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/be.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/be.res
deleted file mode 100644
index 96b20594a..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/be.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bg.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bg.res
deleted file mode 100644
index c0af6025d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bn.res
deleted file mode 100644
index 3e41566ac..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bo.res
deleted file mode 100644
index 15706619f..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/br.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/br.res
deleted file mode 100644
index a28d433ff..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/br.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bs.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bs.res
deleted file mode 100644
index 4aadf554d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bs_Cyrl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bs_Cyrl.res
deleted file mode 100644
index 383ac03e5..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/bs_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ca.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ca.res
deleted file mode 100644
index 96ff7fcf6..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ca.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ceb.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ceb.res
deleted file mode 100644
index f40abe105..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ceb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/chr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/chr.res
deleted file mode 100644
index 1f3ad326c..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/chr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/cs.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/cs.res
deleted file mode 100644
index 3dc205c00..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/cs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/cy.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/cy.res
deleted file mode 100644
index 25770c014..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/cy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/da.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/da.res
deleted file mode 100644
index 369f3ddb0..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/da.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de.res
deleted file mode 100644
index 83bb1cd20..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de_AT.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de_AT.res
deleted file mode 100644
index ff91d084a..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de_AT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/dsb.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/dsb.res
deleted file mode 100644
index bad38173f..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/dsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ee.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ee.res
deleted file mode 100644
index 3f6070703..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ee.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/el.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/el.res
deleted file mode 100644
index 0d8b21787..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/el.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en_US_POSIX.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en_US_POSIX.res
deleted file mode 100644
index 2fcb3eed3..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en_US_POSIX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/eo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/eo.res
deleted file mode 100644
index 8482c4a0a..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/eo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es.res
deleted file mode 100644
index c0760fd3c..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/et.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/et.res
deleted file mode 100644
index 58d5b00ce..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/et.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fa.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fa.res
deleted file mode 100644
index 362d095c8..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fa_AF.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fa_AF.res
deleted file mode 100644
index 48b84ce9a..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fa_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ff_Adlm.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ff_Adlm.res
deleted file mode 100644
index 7637f4ad2..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ff_Adlm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fi.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fi.res
deleted file mode 100644
index 5c059e950..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fil.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fil.res
deleted file mode 100644
index f40abe105..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fil.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fo.res
deleted file mode 100644
index 0a1b156d5..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fr_CA.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fr_CA.res
deleted file mode 100644
index 13306a409..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fr_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fy.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fy.res
deleted file mode 100644
index 2df3643a5..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/gl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/gl.res
deleted file mode 100644
index 856773b6b..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/gl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/gu.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/gu.res
deleted file mode 100644
index 6f06e469c..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/gu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ha.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ha.res
deleted file mode 100644
index ff57dcae7..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ha.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/haw.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/haw.res
deleted file mode 100644
index e6044e1bc..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/haw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/he.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/he.res
deleted file mode 100644
index 03cce46a1..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/he.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hi.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hi.res
deleted file mode 100644
index ed149d8a1..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hr.res
deleted file mode 100644
index 4aadf554d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hsb.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hsb.res
deleted file mode 100644
index 848cf7e43..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hu.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hu.res
deleted file mode 100644
index 6ab2edce5..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hy.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hy.res
deleted file mode 100644
index 33c5fe51f..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/hy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ig.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ig.res
deleted file mode 100644
index fc0a3f72a..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ig.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/is.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/is.res
deleted file mode 100644
index e35ea8d52..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/is.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ja.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ja.res
deleted file mode 100644
index 77cf478a6..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ja.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ka.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ka.res
deleted file mode 100644
index b9187bb9a..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ka.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kk.res
deleted file mode 100644
index d24c1a7c0..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kl.res
deleted file mode 100644
index bee5bd229..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/km.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/km.res
deleted file mode 100644
index 4e2efd249..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/km.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kn.res
deleted file mode 100644
index fe170d77c..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ko.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ko.res
deleted file mode 100644
index 79f754d6f..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ko.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kok.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kok.res
deleted file mode 100644
index 451e5b55d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/kok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ku.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ku.res
deleted file mode 100644
index d8e4b4953..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ku.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ky.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ky.res
deleted file mode 100644
index 48d971ae5..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ky.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lkt.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lkt.res
deleted file mode 100644
index 86bb86e1c..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lkt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ln.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ln.res
deleted file mode 100644
index f08bfb798..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lo.res
deleted file mode 100644
index 66eb5afa4..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lt.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lt.res
deleted file mode 100644
index d2d7cb41d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lv.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lv.res
deleted file mode 100644
index 51eb81744..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mk.res
deleted file mode 100644
index d5fe356ed..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ml.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ml.res
deleted file mode 100644
index 1f508ecb4..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ml.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mn.res
deleted file mode 100644
index bb3fd643d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mr.res
deleted file mode 100644
index cf370beb1..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mt.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mt.res
deleted file mode 100644
index f83721dbc..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/my.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/my.res
deleted file mode 100644
index 7d0ac4f66..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/my.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ne.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ne.res
deleted file mode 100644
index b85187d1f..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ne.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/no.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/no.res
deleted file mode 100644
index e388a6d44..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/no.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/om.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/om.res
deleted file mode 100644
index 978872fe7..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/om.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/or.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/or.res
deleted file mode 100644
index 58464ab8c..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/or.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa.res
deleted file mode 100644
index 7f68b18bd..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pl.res
deleted file mode 100644
index d26d0186d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ps.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ps.res
deleted file mode 100644
index 48b84ce9a..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ps.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ro.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ro.res
deleted file mode 100644
index 5d701874a..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ro.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/root.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/root.res
deleted file mode 100644
index 0632e4e76..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ru.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ru.res
deleted file mode 100644
index c0af6025d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/se.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/se.res
deleted file mode 100644
index 8e6c142b6..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/se.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/si.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/si.res
deleted file mode 100644
index c2a9cd7c9..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/si.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sk.res
deleted file mode 100644
index 98bcc314e..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sl.res
deleted file mode 100644
index d191dd251..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/smn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/smn.res
deleted file mode 100644
index 9e40806c7..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/smn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sq.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sq.res
deleted file mode 100644
index 5c2985a25..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr.res
deleted file mode 100644
index 383ac03e5..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn.res
deleted file mode 100644
index 4aadf554d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sv.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sv.res
deleted file mode 100644
index f61f72bad..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ta.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ta.res
deleted file mode 100644
index 6a79936ea..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ta.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/te.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/te.res
deleted file mode 100644
index 481261f5d..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/te.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/th.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/th.res
deleted file mode 100644
index 7093625f6..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/th.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/tk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/tk.res
deleted file mode 100644
index 0a40efd70..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/tk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/to.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/to.res
deleted file mode 100644
index 96e51f3ca..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/to.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/tr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/tr.res
deleted file mode 100644
index 4b307e54c..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/tr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ug.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ug.res
deleted file mode 100644
index d32f8d9c0..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ug.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/uk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/uk.res
deleted file mode 100644
index 89bf19b99..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/uk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ur.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ur.res
deleted file mode 100644
index b0a1d8005..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/uz.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/uz.res
deleted file mode 100644
index 33124df7c..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/uz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/vi.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/vi.res
deleted file mode 100644
index 173a8c37b..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/vi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/wo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/wo.res
deleted file mode 100644
index 1ee937c09..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/wo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yi.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yi.res
deleted file mode 100644
index ac5206a4e..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yo.res
deleted file mode 100644
index 71f4fa657..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh.res
deleted file mode 100644
index 0dcfb75e9..000000000
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/af.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/af.res
new file mode 100644
index 000000000..42e6925a4
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/af.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/am.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/am.res
new file mode 100644
index 000000000..630b0a54e
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/am.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ar.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ar.res
new file mode 100644
index 000000000..805b4a514
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ar.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ar_SA.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ar_SA.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ar_SA.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ar_SA.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ars.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ars.res
index d0e60ef90..d0e60ef90 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ars.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ars.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/as.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/as.res
new file mode 100644
index 000000000..99d6b9602
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/as.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/az.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/az.res
new file mode 100644
index 000000000..d7a73493e
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/az.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/be.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/be.res
new file mode 100644
index 000000000..c64d748f1
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/be.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bg.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bg.res
new file mode 100644
index 000000000..4c9577db4
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bg.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bn.res
new file mode 100644
index 000000000..ff66d2842
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bn.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bo.res
new file mode 100644
index 000000000..8a36b907b
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bo.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/br.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/br.res
new file mode 100644
index 000000000..45c50267d
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/br.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bs.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bs.res
new file mode 100644
index 000000000..ee293d1ca
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bs.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bs_Cyrl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bs_Cyrl.res
new file mode 100644
index 000000000..a597b9896
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/bs_Cyrl.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ca.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ca.res
new file mode 100644
index 000000000..a332e3cc0
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ca.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ceb.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ceb.res
new file mode 100644
index 000000000..93304a447
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ceb.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/chr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/chr.res
new file mode 100644
index 000000000..a664ff435
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/chr.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/cs.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/cs.res
new file mode 100644
index 000000000..988a77300
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/cs.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/cy.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/cy.res
new file mode 100644
index 000000000..b5c07b4fb
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/cy.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/da.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/da.res
new file mode 100644
index 000000000..8aa488eef
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/da.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de.res
new file mode 100644
index 000000000..800c1a8e4
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de_.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de_.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de_.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de_.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de_AT.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de_AT.res
new file mode 100644
index 000000000..09d598d34
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de_AT.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de__PHONEBOOK.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de__PHONEBOOK.res
index d9adaeeb2..d9adaeeb2 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/de__PHONEBOOK.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/de__PHONEBOOK.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/dsb.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/dsb.res
new file mode 100644
index 000000000..4725a01a2
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/dsb.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/dz.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/dz.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/dz.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/dz.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ee.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ee.res
new file mode 100644
index 000000000..3523e7133
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ee.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/el.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/el.res
new file mode 100644
index 000000000..86d003755
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/el.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en_US.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en_US.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/en_US.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en_US.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en_US_POSIX.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en_US_POSIX.res
new file mode 100644
index 000000000..c30b7a8df
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/en_US_POSIX.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/eo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/eo.res
new file mode 100644
index 000000000..54722b273
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/eo.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es.res
new file mode 100644
index 000000000..61ac83551
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es_.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es_.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es_.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es_.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es__TRADITIONAL.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es__TRADITIONAL.res
index 7879a8cc8..7879a8cc8 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/es__TRADITIONAL.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/es__TRADITIONAL.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/et.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/et.res
new file mode 100644
index 000000000..7a02a19e2
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/et.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fa.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fa.res
new file mode 100644
index 000000000..f08121a38
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fa.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fa_AF.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fa_AF.res
new file mode 100644
index 000000000..683fe6183
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fa_AF.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ff.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ff.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ff.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ff.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ff_Adlm.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ff_Adlm.res
new file mode 100644
index 000000000..786ee66d4
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ff_Adlm.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fi.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fi.res
new file mode 100644
index 000000000..81bee0781
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fi.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fil.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fil.res
new file mode 100644
index 000000000..93304a447
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fil.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fo.res
new file mode 100644
index 000000000..462c9eab2
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fo.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fr.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/fr.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fr.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fr_CA.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fr_CA.res
new file mode 100644
index 000000000..7a893dd7c
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fr_CA.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fy.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fy.res
new file mode 100644
index 000000000..c5382d83e
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/fy.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ga.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ga.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ga.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ga.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/gl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/gl.res
new file mode 100644
index 000000000..5351b11c3
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/gl.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/gu.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/gu.res
new file mode 100644
index 000000000..738065df6
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/gu.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ha.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ha.res
new file mode 100644
index 000000000..596ef1381
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ha.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/haw.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/haw.res
new file mode 100644
index 000000000..d5016730c
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/haw.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/he.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/he.res
new file mode 100644
index 000000000..a4a3211ff
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/he.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/he_IL.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/he_IL.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/he_IL.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/he_IL.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hi.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hi.res
new file mode 100644
index 000000000..d8f58af9f
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hi.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hr.res
new file mode 100644
index 000000000..ee293d1ca
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hr.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hsb.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hsb.res
new file mode 100644
index 000000000..37048ac3e
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hsb.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hu.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hu.res
new file mode 100644
index 000000000..0fd01a729
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hu.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hy.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hy.res
new file mode 100644
index 000000000..42c35f237
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/hy.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/id.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/id.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/id.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/id.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/id_ID.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/id_ID.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/id_ID.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/id_ID.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ig.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ig.res
new file mode 100644
index 000000000..e8cf8587c
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ig.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/in.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/in.res
index 330b24c6d..330b24c6d 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/in.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/in.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/in_ID.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/in_ID.res
index c06407c77..c06407c77 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/in_ID.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/in_ID.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/is.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/is.res
new file mode 100644
index 000000000..98ab03e60
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/is.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/it.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/it.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/it.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/it.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/iw.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/iw.res
index 65e3e15f5..65e3e15f5 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/iw.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/iw.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/iw_IL.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/iw_IL.res
index 85ef96f29..85ef96f29 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/iw_IL.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/iw_IL.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ja.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ja.res
new file mode 100644
index 000000000..92af96c3c
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ja.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ka.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ka.res
new file mode 100644
index 000000000..7c8b709e9
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ka.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kk.res
new file mode 100644
index 000000000..83f6b4ed0
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kk.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kl.res
new file mode 100644
index 000000000..1225f697f
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kl.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/km.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/km.res
new file mode 100644
index 000000000..0eb12e6b6
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/km.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kn.res
new file mode 100644
index 000000000..25642e392
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kn.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ko.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ko.res
new file mode 100644
index 000000000..6a6b8c02e
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ko.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kok.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kok.res
new file mode 100644
index 000000000..84b8129f9
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/kok.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ku.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ku.res
new file mode 100644
index 000000000..d231527d9
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ku.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ky.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ky.res
new file mode 100644
index 000000000..ba12f342b
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ky.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lb.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lb.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lb.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lb.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lij.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lij.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/lij.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lij.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lkt.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lkt.res
new file mode 100644
index 000000000..735dfd7b4
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lkt.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ln.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ln.res
new file mode 100644
index 000000000..93e0c58e4
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ln.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lo.res
new file mode 100644
index 000000000..76ad32891
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lo.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lt.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lt.res
new file mode 100644
index 000000000..cd200bed5
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lt.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lv.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lv.res
new file mode 100644
index 000000000..f7dadc4fc
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/lv.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mk.res
new file mode 100644
index 000000000..0336221d8
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mk.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ml.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ml.res
new file mode 100644
index 000000000..64af6c591
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ml.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mn.res
new file mode 100644
index 000000000..5487c0a57
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mn.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mo.res
index 6158c63b4..6158c63b4 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/mo.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mo.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mr.res
new file mode 100644
index 000000000..b94df6434
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mr.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ms.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ms.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ms.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ms.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mt.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mt.res
new file mode 100644
index 000000000..a1004f014
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/mt.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/my.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/my.res
new file mode 100644
index 000000000..282bc8e73
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/my.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nb.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nb.res
index 76e09e288..76e09e288 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nb.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nb.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nb_NO.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nb_NO.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nb_NO.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nb_NO.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ne.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ne.res
new file mode 100644
index 000000000..d6e8cbda6
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ne.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nl.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nl.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nl.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nn.res
index 76e09e288..76e09e288 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/nn.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/nn.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/no.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/no.res
new file mode 100644
index 000000000..825d1238a
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/no.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/no_NO.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/no_NO.res
index ea6052a86..ea6052a86 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/no_NO.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/no_NO.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/om.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/om.res
new file mode 100644
index 000000000..e517758b2
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/om.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/or.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/or.res
new file mode 100644
index 000000000..f7814e071
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/or.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa.res
new file mode 100644
index 000000000..10ce26388
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_Guru.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_Guru.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_Guru.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_Guru.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_Guru_IN.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_Guru_IN.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_Guru_IN.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_Guru_IN.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_IN.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_IN.res
index 9b05ec5a7..9b05ec5a7 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pa_IN.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pa_IN.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pl.res
new file mode 100644
index 000000000..cd349f8f2
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pl.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ps.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ps.res
new file mode 100644
index 000000000..683fe6183
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ps.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pt.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pt.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/pt.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/pt.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/res_index.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/res_index.res
index 8bdff6c55..8bdff6c55 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/res_index.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/res_index.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ro.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ro.res
new file mode 100644
index 000000000..1d0d59cab
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ro.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/root.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/root.res
new file mode 100644
index 000000000..e0b761c2a
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/root.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ru.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ru.res
new file mode 100644
index 000000000..4c9577db4
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ru.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sa.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sa.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sa.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sa.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/se.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/se.res
new file mode 100644
index 000000000..fd653584c
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/se.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh.res
index a7ed88c3c..a7ed88c3c 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_BA.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_BA.res
index 2e0f0eecb..2e0f0eecb 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_BA.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_BA.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_CS.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_CS.res
index c3c7a2779..c3c7a2779 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_CS.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_CS.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_YU.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_YU.res
index c3c7a2779..c3c7a2779 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sh_YU.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sh_YU.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/si.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/si.res
new file mode 100644
index 000000000..079f39426
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/si.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sk.res
new file mode 100644
index 000000000..59a2cb024
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sk.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sl.res
new file mode 100644
index 000000000..4fb8197ce
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sl.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/smn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/smn.res
new file mode 100644
index 000000000..ce1cce1ab
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/smn.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sq.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sq.res
new file mode 100644
index 000000000..c61019c9e
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sq.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr.res
new file mode 100644
index 000000000..a597b9896
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_BA.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_BA.res
index a6130890e..a6130890e 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_BA.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_BA.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_BA.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_BA.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_BA.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_BA.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_ME.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_ME.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_ME.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_ME.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_RS.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_RS.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Cyrl_RS.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Cyrl_RS.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn.res
new file mode 100644
index 000000000..ee293d1ca
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn_BA.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn_BA.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn_BA.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn_RS.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn_RS.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_Latn_RS.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_Latn_RS.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_ME.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_ME.res
index acb49d861..acb49d861 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_ME.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_ME.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_RS.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_RS.res
index 812d409b6..812d409b6 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sr_RS.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sr_RS.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sv.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sv.res
new file mode 100644
index 000000000..18a263826
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sv.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sw.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sw.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/sw.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/sw.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ta.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ta.res
new file mode 100644
index 000000000..4bc249d79
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ta.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/te.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/te.res
new file mode 100644
index 000000000..40b971aff
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/te.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/th.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/th.res
new file mode 100644
index 000000000..88ff1ba4b
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/th.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/tk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/tk.res
new file mode 100644
index 000000000..e01597bab
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/tk.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/to.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/to.res
new file mode 100644
index 000000000..c9cc9ed5b
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/to.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/tr.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/tr.res
new file mode 100644
index 000000000..1437d8591
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/tr.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ucadata.icu b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ucadata.icu
index 3bb450d9e..3bb450d9e 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/ucadata.icu
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ucadata.icu
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ug.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ug.res
new file mode 100644
index 000000000..4b651acaa
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ug.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/uk.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/uk.res
new file mode 100644
index 000000000..762890c5d
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/uk.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ur.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ur.res
new file mode 100644
index 000000000..13dcdfa68
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/ur.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/uz.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/uz.res
new file mode 100644
index 000000000..667fcd3a2
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/uz.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/vi.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/vi.res
new file mode 100644
index 000000000..c56d24a73
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/vi.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/wae.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/wae.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/wae.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/wae.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/wo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/wo.res
new file mode 100644
index 000000000..3fb71cd5b
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/wo.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/xh.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/xh.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/xh.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/xh.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yi.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yi.res
new file mode 100644
index 000000000..328033210
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yi.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yo.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yo.res
new file mode 100644
index 000000000..bee937ece
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yo.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue.res
index 38f370892..38f370892 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_CN.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_CN.res
index 2c817fb96..2c817fb96 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_CN.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_CN.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hans.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hans.res
index 2c817fb96..2c817fb96 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hans.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hans.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hans_CN.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hans_CN.res
index 2c817fb96..2c817fb96 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hans_CN.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hant.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hant.res
index 38f370892..38f370892 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/yue_Hant.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/yue_Hant.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh.res
new file mode 100644
index 000000000..64e3a922d
--- /dev/null
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_CN.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_CN.res
index d6530c3c3..d6530c3c3 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_CN.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_CN.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_HK.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_HK.res
index 156f92ea7..156f92ea7 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_HK.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_HK.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans_CN.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans_CN.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans_CN.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans_SG.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans_SG.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hans_SG.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hans_SG.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant.res
index 71dd614ac..71dd614ac 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_HK.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_HK.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_HK.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_MO.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_MO.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_MO.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_MO.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_TW.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_TW.res
index 01de45469..01de45469 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_Hant_TW.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_Hant_TW.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_MO.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_MO.res
index 5d33f7ca7..5d33f7ca7 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_MO.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_MO.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_SG.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_SG.res
index 0d945b703..0d945b703 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_SG.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_SG.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_TW.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_TW.res
index 5a5aa087f..5a5aa087f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zh_TW.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zh_TW.res
Binary files differ
diff --git a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zu.res b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zu.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt74b/coll/zu.res
+++ b/icu4j/main/collate/src/main/resources/com/ibm/icu/impl/data/icudt75b/coll/zu.res
Binary files differ
diff --git a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java
index 6f075850d..99aa10173 100644
--- a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java
+++ b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java
@@ -81,7 +81,7 @@ public class AlphabeticIndexTest extends TestFmwk {
/* Japanese*/ {"ja", "\u3042:\u304B:\u3055:\u305F:\u306A:\u306F:\u307E:\u3084:\u3089:\u308F"},
/* Korean*/ {"ko", "\u3131:\u3134:\u3137:\u3139:\u3141:\u3142:\u3145:\u3147:\u3148:\u314A:\u314B:\u314C:\u314D:\u314E"},
/* Lithuanian*/ {"lt", "A:B:C:\u010C:D:E:F:G:H:I:J:K:L:M:N:O:P:R:S:\u0160:T:U:V:Z:\u017D"},
- /* Latvian*/ {"lv", "A:B:C:\u010C:D:E:F:G:\u0122:H:I:J:K:\u0136:L:\u013B:M:N:\u0145:O:P:Q:R:S:\u0160:T:U:V:W:X:Z:\u017D"},
+ /* Latvian*/ {"lv", "A:\u0100:B:C:\u010C:D:E:\u0112:F:G:\u0122:H:I:Y:\u012A:J:K:\u0136:L:\u013B:M:N:\u0145:O:P:Q:R:S:\u0160:T:U:\u016A:V:W:X:Z:\u017D"},
/* Norwegian Bokm\u00E5l*/ {"nb", "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:\u00C6:\u00D8:\u00C5"},
/* Dutch*/ {"nl", "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"},
/* Polish*/ {"pl", "A:B:C:\u0106:D:E:F:G:H:I:J:K:L:\u0141:M:N:O:\u00D3:P:Q:R:S:\u015A:T:U:V:W:X:Y:Z:\u0179:\u017B"},
@@ -993,7 +993,7 @@ public class AlphabeticIndexTest extends TestFmwk {
List<String> labels = index.getBucketLabels();
for (String[] testCase : testCases) {
String name = testCase[0];
- int bucketIndex = Integer.valueOf(testCase[1]);
+ int bucketIndex = Integer.parseInt(testCase[1]);
String label = testCase[2];
String msg = "getBucketIndex(" + name + ")";
assertEquals(msg, bucketIndex, index.getBucketIndex(name));
diff --git a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationMiscTest.java b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationMiscTest.java
index 4dac87226..111b4b763 100644
--- a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationMiscTest.java
+++ b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationMiscTest.java
@@ -530,11 +530,10 @@ public class CollationMiscTest extends TestFmwk {
};
String[] att = { "strength", };
- Object[] val = { new Integer(Collator.QUATERNARY), };
+ Object[] val = { Collator.QUATERNARY, };
String[] attShifted = { "strength", "AlternateHandling"};
- Object valShifted[] = { new Integer(Collator.QUATERNARY),
- Boolean.TRUE };
+ Object valShifted[] = { Collator.QUATERNARY, Boolean.TRUE };
genericLocaleStarterWithOptions(Locale.JAPANESE, test1, att, val);
genericLocaleStarterWithOptions(Locale.JAPANESE, test2, att, val);
@@ -2212,7 +2211,7 @@ public class CollationMiscTest extends TestFmwk {
{
String tests[] = { "B", "b", "Bb", "bB" };
String[] att = { "strength", "UpperFirst" };
- Object attVals[] = { new Integer(Collator.QUATERNARY), Boolean.TRUE };
+ Object attVals[] = { Collator.QUATERNARY, Boolean.TRUE };
genericLocaleStarterWithOptions(new Locale("root","",""), tests, att, attVals);
}
@@ -2221,7 +2220,7 @@ public class CollationMiscTest extends TestFmwk {
{
String tests[] = { "\\u00e2T", "aT" };
String att[] = { "strength", "CaseLevel" };
- Object attVals[] = { new Integer(Collator.PRIMARY), Boolean.TRUE };
+ Object attVals[] = { Collator.PRIMARY, Boolean.TRUE };
String tests2[] = { "a", "A" };
String rule = "&[first tertiary ignorable]=A=a";
String att2[] = { "CaseLevel" };
diff --git a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationRegressionTest.java b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
index bb7cd0f73..33b24a3e1 100644
--- a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
+++ b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
@@ -1077,7 +1077,7 @@ public class CollationRegressionTest extends TestFmwk {
// Iterate forward and collect all of the elements into a Vector
while ((elem = iter.next()) != CollationElementIterator.NULLORDER) {
- elements.add(new Integer(elem));
+ elements.add(elem);
}
// Now iterate backward and make sure they're the same
@@ -1244,6 +1244,27 @@ public class CollationRegressionTest extends TestFmwk {
}
@Test
+ public void TestICU22555InfinityLoop() {
+ char data[] = {
+ 0x0020, 0x0026, 0x4000, 0x002c, 0x6601, 0x0106, 0xff7f, 0xff99,
+ 0x003b, 0x1141, 0x106a, 0x1006, 0x0001, 0x0080, 0x1141, 0x106a,
+ 0x0026, 0x00ff, 0xff6f, 0xff99, 0x013b, 0x1141, 0x1067, 0x1026,
+ 0x0601, 0x0080, 0x5f03, 0x17e3, 0x0000, 0x3e00, 0x3e3e, 0x0055,
+ 0x8080, 0x0000, 0x01e4, 0x0000, 0x0300, 0x003d, 0x4cff, 0x8053,
+ 0x7a65, 0x0000, 0x6400, 0x5f00, 0x0150, 0x9090, 0x9090, 0x2f5f,
+ 0x0053, 0xffe4, 0x002c, 0x0300, 0x1f3d, 0x55f7, 0x8053, 0x1750,
+ 0x3d00, 0xff00, 0x00ff, 0xff6f, 0x0099, 0x03fa, 0x0303, 0x0303,
+ 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303,
+ 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303,
+ };
+ String rule = new String(data, 0, data.length);
+ try {
+ RuleBasedCollator coll = new RuleBasedCollator(rule);
+ } catch(Exception expected) {
+ }
+ }
+
+ @Test
public void TestBeforeWithTooStrongAfter() {
// ICU ticket #9959:
// Forbid rules with a before-reset followed by a stronger relation.
diff --git a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationServiceTest.java b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationServiceTest.java
index d9981e5c4..8ed39d72d 100644
--- a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationServiceTest.java
+++ b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/CollationServiceTest.java
@@ -424,10 +424,10 @@ public class CollationServiceTest extends TestFmwk {
boolean expectAvailable = DATA[(i*3)+2].equals("t");
ULocale actual = Collator.getFunctionalEquivalent(kw[0],input,isAvailable);
if(!actual.equals(expect) || (expectAvailable!=isAvailable[0])) {
- errln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + new Boolean(isAvailable[0]) + ", " +
- "expected " + expect + " avail " + new Boolean(expectAvailable));
+ errln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + isAvailable[0] + ", " +
+ "expected " + expect + " avail " + expectAvailable);
} else {
- logln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + new Boolean(isAvailable[0]));
+ logln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + isAvailable[0]);
}
}
}
diff --git a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java
index b836d44b0..3e175712f 100644
--- a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java
+++ b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java
@@ -129,7 +129,7 @@ public final class ICUResourceBundleCollationTest extends TestFmwk {
logln("Testing getting collation values:");
kwVals = ICUResourceBundle.getKeywordValues(ICUData.ICU_COLLATION_BASE_NAME,COLLATION_RESNAME);
for(n=0;n<kwVals.length;n++) {
- logln(new Integer(n).toString() + ": " + kwVals[n]);
+ logln(Integer.valueOf(n).toString() + ": " + kwVals[n]);
if(DEFAULT_NAME.equals(kwVals[n])) {
errln("getKeywordValues for collation returned 'default' in the list.");
} else if(STANDARD_NAME.equals(kwVals[n])) {
@@ -150,6 +150,70 @@ public final class ICUResourceBundleCollationTest extends TestFmwk {
}
@Test
+ public void TestGetFunctionalEquivalentVariantLengthWithinLimit() {
+ String valid =
+ "_" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678";
+
+ ULocale equivLocale = ICUResourceBundle.getFunctionalEquivalent(
+ ICUData.ICU_BASE_NAME, ICUResourceBundle.ICU_DATA_CLASS_LOADER,
+ "calendar", "calendar", new ULocale(valid), new boolean[1], false);
+ ULocale localeExpected = new ULocale("_@calendar=gregorian");
+ if(!equivLocale.equals(localeExpected)) {
+ errln("Get unexpected locale:" + equivLocale.toString() +
+ " while expecting " + localeExpected.toString());
+ }
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void TestGetFunctionalEquivalentVariantLengthOverLimit() {
+ String invalid =
+ "_" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678X"; // One character too long.
+ ULocale equivLocale2 = ICUResourceBundle.getFunctionalEquivalent(
+ ICUData.ICU_BASE_NAME, ICUResourceBundle.ICU_DATA_CLASS_LOADER,
+ "calendar", "calendar", new ULocale(invalid), new boolean[1], false);
+ }
+
+ @Test
public void TestOpen(){
UResourceBundle bundle = UResourceBundle.getBundleInstance(ICUData.ICU_COLLATION_BASE_NAME, "en_US_POSIX");
if(bundle==null){
@@ -169,16 +233,16 @@ public final class ICUResourceBundleCollationTest extends TestFmwk {
ULocale inLocale = new ULocale(testCases[i+1]);
ULocale expectLocale = new ULocale(testCases[i+2]);
- logln(new Integer(i/3).toString() + ": " + new Boolean(expectAvail).toString() + "\t\t" +
- inLocale.toString() + "\t\t" + expectLocale.toString());
+ logln("" + i/3 + ": " + expectAvail + "\t\t" +
+ inLocale + "\t\t" + expectLocale);
ULocale equivLocale = ICUResourceBundle.getFunctionalEquivalent(path, cl, resName, keyword, inLocale, isAvail, truncate);
boolean gotAvail = isAvail[0];
if((gotAvail != expectAvail) || !equivLocale.equals(expectLocale)) {
- errln(new Integer(i/3).toString() + ": Error, expected Equiv=" + new Boolean(expectAvail).toString() + "\t\t" +
- inLocale.toString() + "\t\t--> " + expectLocale.toString() + ", but got " + new Boolean(gotAvail).toString() + " " +
- equivLocale.toString());
+ errln("" + i/3 + ": Error, expected Equiv=" + expectAvail + "\t\t" +
+ inLocale + "\t\t--> " + expectLocale + ", but got " + gotAvail + " " +
+ equivLocale);
}
}
}
diff --git a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ULocaleCollationTest.java b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ULocaleCollationTest.java
index 5adf3465b..d4ca74fd0 100644
--- a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ULocaleCollationTest.java
+++ b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/util/ULocaleCollationTest.java
@@ -242,10 +242,10 @@ public class ULocaleCollationTest extends TestFmwk {
public void TestNameList() {
String[][][] tests = {
/* name in French, name in self, minimized, modified */
-// {{"fr-Cyrl-BE", "fr-Cyrl-CA"},
-// {"Français (cyrillique, Belgique)", "Français (cyrillique, Belgique)", "fr_Cyrl_BE", "fr_Cyrl_BE"},
-// {"Français (cyrillique, Canada)", "Français (cyrillique, Canada)", "fr_Cyrl_CA", "fr_Cyrl_CA"},
-// },
+ {{"fr-Cyrl-BE", "fr-Cyrl-CA"},
+ {"Français (cyrillique, Belgique)", "French (Cyrillic, Belgium)", "fr_Cyrl_BE", "fr_Cyrl_BE"},
+ {"Français (cyrillique, Canada)", "French (Cyrillic, Canada)", "fr_Cyrl_CA", "fr_Cyrl_CA"},
+ },
{{"en", "de", "fr", "zh"},
{"Allemand", "Deutsch", "de", "de"},
{"Anglais", "English", "en", "en"},
@@ -253,14 +253,14 @@ public class ULocaleCollationTest extends TestFmwk {
{"Français", "Français", "fr", "fr"},
},
// some non-canonical names
-// {{"iw", "iw-US", "no", "no-Cyrl", "in", "in-YU"},
-// {"Hébreu (États-Unis)", "עברית (ארצות הברית)", "iw_US", "iw_US"},
-// {"Hébreu (Israël)", "עברית (ישראל)", "iw", "iw_IL"},
-// {"Indonésien (Indonésie)", "Indonesia (Indonesia)", "in", "in_ID"},
-// {"Indonésien (Serbie)", "Indonesia (Serbia)", "in_YU", "in_YU"},
-// {"Norvégien (cyrillique)", "Norsk (kyrillisk)", "no_Cyrl", "no_Cyrl"},
-// {"Norvégien (latin)", "Norsk (latinsk)", "no", "no_Latn"},
-// },
+ {{"iw", "iw-US", "no", "no-Cyrl", "in", "in-YU"},
+ {"Hébreu (États-Unis)", "עברית (ארצות הברית)", "he_US", "he_US"},
+ {"Hébreu (Israël)", "עברית (ישראל)", "he", "he_IL"},
+ {"Indonésien (Indonésie)", "Indonesia (Indonesia)", "id", "id_ID"},
+ {"Indonésien (Serbie)", "Indonesia (Serbia)", "id_RS", "id_RS"},
+ {"Norvégien (cyrillique)", "Norwegian (Cyrillic)", "no_Cyrl", "no_Cyrl"},
+ {"Norvégien (latin)", "Norsk (latinsk)", "no", "no_Latn"},
+ },
{{"zh-Hant-TW", "en", "en-gb", "fr", "zh-Hant", "de", "de-CH", "zh-TW"},
{"Allemand (Allemagne)", "Deutsch (Deutschland)", "de", "de_DE"},
{"Allemand (Suisse)", "Deutsch (Schweiz)", "de_CH", "de_CH"},
@@ -283,46 +283,52 @@ public class ULocaleCollationTest extends TestFmwk {
{"Serbe (cyrillique)", "Српски (ћирилица)", "sr", "sr_Cyrl"},
{"Serbe (latin)", "Srpski (latinica)", "sr_Latn", "sr_Latn"},
},
-// {{"fr-Cyrl", "fr-Arab"},
-// {"Français (arabe)", "Français (arabe)", "fr_Arab", "fr_Arab"},
-// {"Français (cyrillique)", "Français (cyrillique)", "fr_Cyrl", "fr_Cyrl"},
-// },
-// {{"fr-Cyrl-BE", "fr-Arab-CA"},
-// {"Français (arabe, Canada)", "Français (arabe, Canada)", "fr_Arab_CA", "fr_Arab_CA"},
-// {"Français (cyrillique, Belgique)", "Français (cyrillique, Belgique)", "fr_Cyrl_BE", "fr_Cyrl_BE"},
-// }
+ {{"fr-Cyrl", "fr-Arab"},
+ {"Français (arabe)", "French (Arabic)", "fr_Arab", "fr_Arab"},
+ {"Français (cyrillique)", "French (Cyrillic)", "fr_Cyrl", "fr_Cyrl"},
+ },
+ {{"fr-Cyrl-BE", "fr-Arab-CA"},
+ {"Français (arabe, Canada)", "French (Arabic, Canada)", "fr_Arab_CA", "fr_Arab_CA"},
+ {"Français (cyrillique, Belgique)", "French (Cyrillic, Belgium)", "fr_Cyrl_BE", "fr_Cyrl_BE"},
+ }
};
- ULocale french = ULocale.FRENCH;
- LocaleDisplayNames names = LocaleDisplayNames.getInstance(french,
- DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU);
- for (Type type : DisplayContext.Type.values()) {
- logln("Contexts: " + names.getContext(type).toString());
- }
- Collator collator = Collator.getInstance(french);
-
- for (String[][] test : tests) {
- Set<ULocale> list = new LinkedHashSet<ULocale>();
- List<UiListItem> expected = new ArrayList<UiListItem>();
- for (String item : test[0]) {
- list.add(new ULocale(item));
- }
- for (int i = 1; i < test.length; ++i) {
- String[] rawRow = test[i];
- expected.add(new UiListItem(new ULocale(rawRow[2]), new ULocale(rawRow[3]), rawRow[0], rawRow[1]));
+ ULocale originalDefaultLocale = ULocale.getDefault();
+ ULocale.setDefault(ULocale.US);
+ try {
+ ULocale french = ULocale.FRENCH;
+ LocaleDisplayNames names = LocaleDisplayNames.getInstance(french,
+ DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU);
+ for (Type type : DisplayContext.Type.values()) {
+ logln("Contexts: " + names.getContext(type).toString());
}
- List<UiListItem> newList = names.getUiList(list, false, collator);
- if (!expected.equals(newList)) {
- if (expected.size() != newList.size()) {
- errln(list.toString() + ": wrong size" + expected + ", " + newList);
- } else {
- errln(list.toString());
- for (int i = 0; i < expected.size(); ++i) {
- assertEquals(i+"", expected.get(i), newList.get(i));
+ Collator collator = Collator.getInstance(french);
+
+ for (String[][] test : tests) {
+ Set<ULocale> list = new LinkedHashSet<ULocale>();
+ List<UiListItem> expected = new ArrayList<UiListItem>();
+ for (String item : test[0]) {
+ list.add(new ULocale(item));
+ }
+ for (int i = 1; i < test.length; ++i) {
+ String[] rawRow = test[i];
+ expected.add(new UiListItem(new ULocale(rawRow[2]), new ULocale(rawRow[3]), rawRow[0], rawRow[1]));
+ }
+ List<UiListItem> newList = names.getUiList(list, false, collator);
+ if (!expected.equals(newList)) {
+ if (expected.size() != newList.size()) {
+ errln(list.toString() + ": wrong size" + expected + ", " + newList);
+ } else {
+// errln(list.toString());
+ for (int i = 0; i < expected.size(); ++i) {
+ assertEquals(i + "", expected.get(i), newList.get(i));
+ }
}
+ } else {
+ assertEquals(list.toString(), expected, newList);
}
- } else {
- assertEquals(list.toString(), expected, newList);
}
+ } finally {
+ ULocale.setDefault(originalDefaultLocale);
}
}
diff --git a/icu4j/main/common_tests/pom.xml b/icu4j/main/common_tests/pom.xml
index 345d6bc95..4cb996261 100644
--- a/icu4j/main/common_tests/pom.xml
+++ b/icu4j/main/common_tests/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -82,6 +82,12 @@
<version>${junitparams.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>${gson.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java
index 6fa4036f5..4e9163fe4 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java
@@ -2487,7 +2487,7 @@ public class DateFormatTest extends CoreTestFmwk {
f.format((Object)cal, buf, pos);
f.format((Object)now, buf, pos);
- f.format(new Long(now.getTime()), buf, pos);
+ f.format(now.getTime(), buf, pos);
try {
f.format("Howdy", buf, pos);
}
@@ -3619,7 +3619,7 @@ public class DateFormatTest extends CoreTestFmwk {
errln("FAIL: Date must be accepted by formatToCharacterIterator");
}
- Number num = new Long(d.getTime());
+ Number num = d.getTime();
try {
acit = df.formatToCharacterIterator(num);
if (acit == null) {
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
index e8d91494e..2cb92a4d0 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -305,8 +305,8 @@ public class IntlTestDecimalFormatAPIC extends CoreTestFmwk {
@Test
public void testFormatToCharacterIterator() {
- Number number = new Double(350.76);
- Number negativeNumber = new Double(-350.76);
+ Number number = 350.76d;
+ Number negativeNumber = -350.76d;
Locale us = Locale.US;
@@ -339,12 +339,12 @@ public class IntlTestDecimalFormatAPIC extends CoreTestFmwk {
getNegativeCurrencyVectorUS());
// test multiple grouping separators
- number = new Long(100300400);
+ number = 100300400L;
t_Format(11, number, NumberFormat.getNumberInstance(us),
getNumberVector2US());
// test 0
- number = new Long(0);
+ number = 0L;
t_Format(12, number, NumberFormat.getNumberInstance(us),
getZeroVector());
}
@@ -508,7 +508,7 @@ public class IntlTestDecimalFormatAPIC extends CoreTestFmwk {
// called from support_messageformat tests
public FieldContainer(int start, int end, AttributedCharacterIterator.Attribute attribute, int value) {
- this(start, end, attribute, new Integer(value));
+ this(start, end, attribute, Integer.valueOf(value));
}
// called from support_messageformat tests
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java
index 4337e8475..1a29c1b53 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java
@@ -3916,7 +3916,7 @@ public class MeasureUnitTest extends CoreTestFmwk {
System.out.println(" * Returns by value, unit of " + type + ": " + code + ".");
System.out.printf(" * Also see {@link #create%s()}.\n", name);
String getterVersion = getVersion(javaName, thisVersion);
- if (Integer.valueOf(getterVersion) < 64) {
+ if (Integer.parseInt(getterVersion) < 64) {
getterVersion = "64";
}
if (isDraft(javaName)) {
@@ -4623,6 +4623,8 @@ public class MeasureUnitTest extends CoreTestFmwk {
}
TestCase cases[] = {
+ new TestCase(MeasureUnit.MeasurePrefix.QUECTO, 10, -30),
+ new TestCase(MeasureUnit.MeasurePrefix.RONTO, 10, -27),
new TestCase(MeasureUnit.MeasurePrefix.YOCTO, 10, -24),
new TestCase(MeasureUnit.MeasurePrefix.ZEPTO, 10, -21),
new TestCase(MeasureUnit.MeasurePrefix.ATTO, 10, -18),
@@ -4644,6 +4646,8 @@ public class MeasureUnitTest extends CoreTestFmwk {
new TestCase(MeasureUnit.MeasurePrefix.EXA, 10, 18),
new TestCase(MeasureUnit.MeasurePrefix.ZETTA, 10, 21),
new TestCase(MeasureUnit.MeasurePrefix.YOTTA, 10, 24),
+ new TestCase(MeasureUnit.MeasurePrefix.RONNA, 10, 27),
+ new TestCase(MeasureUnit.MeasurePrefix.QUETTA, 10, 30),
new TestCase(MeasureUnit.MeasurePrefix.KIBI, 1024, 1),
new TestCase(MeasureUnit.MeasurePrefix.MEBI, 1024, 2),
new TestCase(MeasureUnit.MeasurePrefix.GIBI, 1024, 3),
@@ -4671,8 +4675,7 @@ public class MeasureUnitTest extends CoreTestFmwk {
// Prove that all built-in units are parseable, except "generic" temperature
// (and for now, beaufort units)
- if (unit == MeasureUnit.GENERIC_TEMPERATURE ||
- (unit == MeasureUnit.BEAUFORT && logKnownIssue("CLDR-16327", "beaufort currently not convertible"))) {
+ if (unit == MeasureUnit.GENERIC_TEMPERATURE) {
try {
MeasureUnit.forIdentifier(unit.getIdentifier());
Assert.fail("GENERIC_TEMPERATURE should not be parseable (BEAUFORT also currently non-parseable)");
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberFormatTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberFormatTest.java
index ad7cdf13e..87790d103 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberFormatTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberFormatTest.java
@@ -538,7 +538,7 @@ public class NumberFormatTest extends CoreTestFmwk {
for (int i=0; i<DATA.length; ++i) {
String locale = DATA[i][0];
String pat = DATA[i][1];
- Double numberToBeFormat = new Double(DATA[i][2]);
+ Double numberToBeFormat = Double.valueOf(DATA[i][2]);
DecimalFormatSymbols sym = new DecimalFormatSymbols(new ULocale(locale));
for (int j=1; j<=3; ++j) {
// j represents the number of currency sign in the pattern.
@@ -721,7 +721,7 @@ public class NumberFormatTest extends CoreTestFmwk {
ULocale save = ULocale.getDefault();
ULocale.setDefault(ULocale.US);
MeasureFormat curFmt = MeasureFormat.getCurrencyFormat();
- String strBuf = curFmt.format(new CurrencyAmount(new Float(1234.56), Currency.getInstance("USD")));
+ String strBuf = curFmt.format(new CurrencyAmount(Float.valueOf(1234.56f), Currency.getInstance("USD")));
try {
CurrencyAmount parsedVal = (CurrencyAmount)curFmt.parseObject(strBuf);
@@ -794,7 +794,7 @@ public class NumberFormatTest extends CoreTestFmwk {
continue;
}
String localeString = DATA[i][0];
- Double numberToBeFormat = new Double(DATA[i][1]);
+ Double numberToBeFormat = Double.valueOf(DATA[i][1]);
String currencyISOCode = DATA[i][2];
ULocale locale = new ULocale(localeString);
NumberFormat numFmt = NumberFormat.getInstance(locale, k);
@@ -1275,7 +1275,7 @@ public class NumberFormatTest extends CoreTestFmwk {
new DecimalFormat("00E0", US),
new DecimalFormat("000E0", US),
},
- new Long(45678000),
+ Long.valueOf(45678000),
new String[] { "4.5678E7",
"45.678E6",
"4567.8E4",
@@ -1296,15 +1296,15 @@ public class NumberFormatTest extends CoreTestFmwk {
expect(new DecimalFormat("000E0", US), 45678000, "457E5");
/*
expect(new DecimalFormat("###E0", US, status),
- new Object[] { new Double(0.0000123), "12.3E-6",
- new Double(0.000123), "123E-6",
- new Double(0.00123), "1.23E-3",
- new Double(0.0123), "12.3E-3",
- new Double(0.123), "123E-3",
- new Double(1.23), "1.23E0",
- new Double(12.3), "12.3E0",
- new Double(123), "123E0",
- new Double(1230), "1.23E3",
+ new Object[] { Double.valueOf(0.0000123), "12.3E-6",
+ Double.valueOf(0.000123), "123E-6",
+ Double.valueOf(0.00123), "1.23E-3",
+ Double.valueOf(0.0123), "12.3E-3",
+ Double.valueOf(0.123), "123E-3",
+ Double.valueOf(1.23), "1.23E0",
+ Double.valueOf(12.3), "12.3E0",
+ Double.valueOf(123), "123E0",
+ Double.valueOf(1230), "1.23E3",
});
!
! Unroll this test into individual tests below...
@@ -1321,8 +1321,8 @@ public class NumberFormatTest extends CoreTestFmwk {
expect2(new DecimalFormat("###E0", US), 1230.0, "1.23E3");
/*
expect(new DecimalFormat("0.#E+00", US, status),
- new Object[] { new Double(0.00012), "1.2E-04",
- new Long(12000), "1.2E+04",
+ new Object[] { Double.valueOf(0.00012), "1.2E-04",
+ Long.valueOf(12000), "1.2E+04",
});
!
! Unroll this test into individual tests below...
@@ -1555,7 +1555,7 @@ public class NumberFormatTest extends CoreTestFmwk {
public void TestScientific2() {
// jb 2552
DecimalFormat fmt = (DecimalFormat)NumberFormat.getCurrencyInstance();
- Number num = new Double(12.34);
+ Number num = 12.34d;
expect(fmt, num, "$12.34");
fmt.setScientificNotation(true);
expect(fmt, num, "$1.23E1");
@@ -2539,7 +2539,7 @@ public class NumberFormatTest extends CoreTestFmwk {
@Test
public void TestBigDecimalRounding() {
String figure = "50.000000004";
- Double dbl = new Double(figure);
+ Double dbl = Double.valueOf(figure);
BigDecimal dec = new BigDecimal(figure);
DecimalFormat f = (DecimalFormat) NumberFormat.getInstance();
@@ -2654,20 +2654,20 @@ public class NumberFormatTest extends CoreTestFmwk {
/** Format-Parse test (convenience) */
public void expect2(NumberFormat fmt, double n, String exp) {
- expect2(fmt, new Double(n), exp);
+ expect2(fmt, Double.valueOf(n), exp);
}
/** RBNF Format-Parse test (convenience) */
public void expect3(NumberFormat fmt, double n, String exp) {
- expect3(fmt, new Double(n), exp);
+ expect3(fmt, Double.valueOf(n), exp);
}
/** Format-Parse test (convenience) */
public void expect2(NumberFormat fmt, long n, String exp) {
- expect2(fmt, new Long(n), exp);
+ expect2(fmt, Long.valueOf(n), exp);
}
/** RBNF Format-Parse test (convenience) */
public void expect3(NumberFormat fmt, long n, String exp) {
- expect3(fmt, new Long(n), exp);
+ expect3(fmt, Long.valueOf(n), exp);
}
/** Format test */
@@ -2742,12 +2742,12 @@ public class NumberFormatTest extends CoreTestFmwk {
/** Format test (convenience) */
public void expect(NumberFormat fmt, double n, String exp) {
- expect(fmt, new Double(n), exp);
+ expect(fmt, Double.valueOf(n), exp);
}
/** Format test (convenience) */
public void expect(NumberFormat fmt, long n, String exp) {
- expect(fmt, new Long(n), exp);
+ expect(fmt, Long.valueOf(n), exp);
}
/** Parse test */
@@ -2794,12 +2794,12 @@ public class NumberFormatTest extends CoreTestFmwk {
/** Parse test (convenience) */
public void expect(NumberFormat fmt, String str, double n) {
- expect(fmt, str, new Double(n));
+ expect(fmt, str, Double.valueOf(n));
}
/** Parse test (convenience) */
public void expect(NumberFormat fmt, String str, long n) {
- expect(fmt, str, new Long(n));
+ expect(fmt, str, Long.valueOf(n));
}
/** Parse test */
@@ -3261,7 +3261,7 @@ public class NumberFormatTest extends CoreTestFmwk {
// Tests when "if (number instanceof Long)" is true
try {
- nf.format(new Long("0"), sb, fp);
+ nf.format(Long.valueOf("0"), sb, fp);
} catch (Exception e) {
errln("NumberFormat.format(Object number, ...) was not suppose to "
+ "return an exception for a Long object. Error: " + e);
@@ -3735,13 +3735,13 @@ public class NumberFormatTest extends CoreTestFmwk {
} catch (NullPointerException ex) {
}
try {
- ca = new CurrencyAmount(new Integer(0), (Currency) null);
+ ca = new CurrencyAmount(Integer.valueOf(0), (Currency) null);
errln("NullPointerException should have been thrown.");
} catch (NullPointerException ex) {
}
- ca = new CurrencyAmount(new Integer(0), Currency.getInstance(new ULocale("ja_JP")));
- cb = new CurrencyAmount(new Integer(1), Currency.getInstance(new ULocale("ja_JP")));
+ ca = new CurrencyAmount(Integer.valueOf(0), Currency.getInstance(new ULocale("ja_JP")));
+ cb = new CurrencyAmount(Integer.valueOf(1), Currency.getInstance(new ULocale("ja_JP")));
if (ca.equals(null)) {
errln("Comparison should return false.");
}
@@ -3894,41 +3894,41 @@ public class NumberFormatTest extends CoreTestFmwk {
{
ULocale.US, // ULocale - null for default locale
"#.##", // Pattern
- Integer.valueOf(BigDecimal.ROUND_DOWN), // Rounding Mode or null (implicit)
- Double.valueOf(0.0d), // Rounding increment, Double or BigDecimal, or null (implicit)
- Double.valueOf(123.4567d), // Input value, Long, Double, BigInteger or BigDecimal
+ BigDecimal.ROUND_DOWN, // Rounding Mode or null (implicit)
+ 0.0d, // Rounding increment, Double or BigDecimal, or null (implicit)
+ 123.4567d, // Input value, Long, Double, BigInteger or BigDecimal
"123.45" // Expected result, null for exception
},
{
ULocale.US,
"#.##",
null,
- Double.valueOf(0.1d),
- Double.valueOf(123.4567d),
+ 0.1d,
+ 123.4567d,
"123.5"
},
{
ULocale.US,
"#.##",
- Integer.valueOf(BigDecimal.ROUND_DOWN),
- Double.valueOf(0.1d),
- Double.valueOf(123.4567d),
+ BigDecimal.ROUND_DOWN,
+ 0.1d,
+ 123.4567d,
"123.4"
},
{
ULocale.US,
"#.##",
- Integer.valueOf(BigDecimal.ROUND_UNNECESSARY),
+ BigDecimal.ROUND_UNNECESSARY,
null,
- Double.valueOf(123.4567d),
+ 123.4567d,
null
},
{
ULocale.US,
"#.##",
- Integer.valueOf(BigDecimal.ROUND_DOWN),
+ BigDecimal.ROUND_DOWN,
null,
- Long.valueOf(1234),
+ 1234L,
"1234"
},
};
@@ -4837,7 +4837,7 @@ public class NumberFormatTest extends CoreTestFmwk {
v1.add(new FieldContainer(11, 12, NumberFormat.Field.DECIMAL_SEPARATOR));
v1.add(new FieldContainer(12, 15, NumberFormat.Field.FRACTION));
- Number number = new Double(123456789.9753);
+ Number number = 123456789.9753d;
ULocale usLoc = new ULocale("en-US");
DecimalFormatSymbols US = new DecimalFormatSymbols(usLoc);
@@ -4936,7 +4936,7 @@ public class NumberFormatTest extends CoreTestFmwk {
@Test
public void TestMissingFieldPositionsCurrency() {
DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance(ULocale.US);
- Number number = new Double(92314587.66);
+ Number number = 92314587.66d;
String result = "$92,314,587.66";
checkFormatWithField("currency", formatter, number, result,
@@ -4955,7 +4955,7 @@ public class NumberFormatTest extends CoreTestFmwk {
public void TestMissingFieldPositionsNegativeDouble() {
// test for exponential fields with double
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
- Number number = new Double(-12345678.90123);
+ Number number = -12345678.90123d;
DecimalFormat formatter = new DecimalFormat("0.#####E+00", us_symbols);
String numFmtted = formatter.format(number);
@@ -4977,7 +4977,7 @@ public class NumberFormatTest extends CoreTestFmwk {
public void TestMissingFieldPositionsPerCent() {
// Check PERCENT
DecimalFormat percentFormat = (DecimalFormat) NumberFormat.getPercentInstance(ULocale.US);
- Number number = new Double(-0.986);
+ Number number = -0.986d;
String numberFormatted = percentFormat.format(number);
checkFormatWithField("sign", percentFormat, number, numberFormatted,
NumberFormat.Field.SIGN, 0, 1);
@@ -4992,7 +4992,7 @@ public class NumberFormatTest extends CoreTestFmwk {
// Check PERCENT with more digits
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
DecimalFormat fmtPercent = new DecimalFormat("0.#####%", us_symbols);
- Number number = new Double(-0.986);
+ Number number = -0.986d;
String numFmtted = fmtPercent.format(number);
checkFormatWithField("sign", fmtPercent, number, numFmtted,
@@ -5012,7 +5012,7 @@ public class NumberFormatTest extends CoreTestFmwk {
// Check PERMILLE
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
DecimalFormat fmtPerMille = new DecimalFormat("0.######‰", us_symbols);
- Number numberPermille = new Double(-0.98654);
+ Number numberPermille = -0.98654d;
String numFmtted = fmtPerMille.format(numberPermille);
checkFormatWithField("sign", fmtPerMille, numberPermille, numFmtted,
@@ -5050,7 +5050,7 @@ public class NumberFormatTest extends CoreTestFmwk {
@Test
public void TestMissingFieldPositionsNegativeLong() {
- Number number = new Long("-123456789987654321");
+ Number number = Long.valueOf("-123456789987654321");
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
DecimalFormat formatter = new DecimalFormat("0.#####E+0", us_symbols);
String longFmtted = formatter.format(number);
@@ -5074,7 +5074,7 @@ public class NumberFormatTest extends CoreTestFmwk {
// Check complex positive;negative pattern.
DecimalFormatSymbols us_symbols = new DecimalFormatSymbols(ULocale.US);
DecimalFormat fmtPosNegSign = new DecimalFormat("+0.####E+00;-0.#######E+0", us_symbols);
- Number positiveExp = new Double("9876543210");
+ Number positiveExp = Double.valueOf("9876543210");
String posExpFormatted = fmtPosNegSign.format(positiveExp);
checkFormatWithField("sign", fmtPosNegSign, positiveExp, posExpFormatted,
@@ -6113,8 +6113,8 @@ public class NumberFormatTest extends CoreTestFmwk {
df.setParseNoExponent(true);
assertEquals("Parse no exponent getter is broken", true, df.isParseNoExponent());
Number result2 = df.parse("123E4");
- assertEquals("Exponent did not parse before setParseNoExponent", result1, new Long(1230000));
- assertEquals("Exponent parsed after setParseNoExponent", result2, new Long(123));
+ assertEquals("Exponent did not parse before setParseNoExponent", result1, 1230000L);
+ assertEquals("Exponent parsed after setParseNoExponent", result2, 123L);
}
@Test
@@ -6327,8 +6327,8 @@ public class NumberFormatTest extends CoreTestFmwk {
pattern = pattern.replace("¤", "¤¤¤¤¤");
df.applyPattern(pattern);
// Note: Narrow currency is not parseable because of ambiguity.
- assertEquals("Narrow currency symbol for USD in en_CA is US$",
- "US$123.45", df.format(123.45));
+ assertEquals("Narrow currency symbol for USD in en_CA is $",
+ "$123.45", df.format(123.45));
}
@Test
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberRegressionTests.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberRegressionTests.java
index 61d464ee6..08da26d39 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberRegressionTests.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/NumberRegressionTests.java
@@ -392,7 +392,7 @@ public class NumberRegressionTests extends CoreTestFmwk {
{
DecimalFormat df = new DecimalFormat();
String str = "0.1234";
- Double d1 = new Double(str);
+ Double d1 = Double.parseDouble(str);
Number d2 = df.parse(str, new ParsePosition(0));
logln(d1.toString());
if (d2.doubleValue() != d1.doubleValue())
@@ -849,7 +849,7 @@ public class NumberRegressionTests extends CoreTestFmwk {
DecimalFormat fmt = new DecimalFormat("#,##0.00");
StringBuffer formatted = new StringBuffer();
FieldPosition field = new FieldPosition(0);
- Double num = new Double(1234.5);
+ Double num = 1234.5;
fmt.format(num, formatted, field);
if (field.getBeginIndex() != 0 && field.getEndIndex() != 5)
errln("Format 1234.5 failed. Begin index: " + field.getBeginIndex() + " End index: " + field.getEndIndex());
@@ -1388,13 +1388,13 @@ public class NumberRegressionTests extends CoreTestFmwk {
{
ParsePosition ppos = new ParsePosition(0);
Number result = df.parse("-0.0", ppos);
- assertEquals("Should parse to double -0.0", new Double(-0.0), result);
+ assertEquals("Should parse to double -0.0", -0.0d, result);
}
df.setParseIntegerOnly(true);
{
ParsePosition ppos = new ParsePosition(0);
Number result = df.parse("-0.0", ppos);
- assertEquals("Should parse to an integer type, not a double", new Long(0), result);
+ assertEquals("Should parse to an integer type, not a double", 0L, result);
}
}
@@ -1672,10 +1672,10 @@ public class NumberRegressionTests extends CoreTestFmwk {
@Test
public void Test4217661() {
Object[] DATA = {
- new Double(0.001), "0",
- new Double(1.001), "1",
- new Double(0.006), "0.01",
- new Double(1.006), "1.01",
+ 0.001d, "0",
+ 1.001d, "1",
+ 0.006d, "0.01",
+ 1.006d, "1.01",
};
NumberFormat fmt = NumberFormat.getInstance(Locale.US);
fmt.setMaximumFractionDigits(2);
@@ -1869,7 +1869,7 @@ class MyNumberFormat extends NumberFormat {
}
@Override
public Number parse(String text, ParsePosition parsePosition) {
- return new Integer(0);
+ return 0;
}
@Override
public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java
index 7a80c7901..8093d5eb5 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java
@@ -1757,4 +1757,11 @@ public class PluralRulesTest extends CoreTestFmwk {
form = xyz.select(range);
assertEquals("Fallback form", "other", form);
}
+ @Test
+ public void test22638LongNumberValue() {
+ PluralRules test = PluralRules.createRules(
+ "g:c%4422322222232222222222232222222322222223222222232222222322222223" +
+ "2222222322222232222222322222223222232222222222222322222223222222");
+ assertEquals("Long number value should get null", null, test);
+ }
}
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/RbnfTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/RbnfTest.java
index 4a482a02c..dbcbc789f 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/RbnfTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/RbnfTest.java
@@ -376,6 +376,40 @@ public class RbnfTest extends CoreTestFmwk {
doParsingTest(formatter, testDataLenient, true);
}
+ @Test
+ public void TestDFRounding() {
+ // test for ICU-22611
+ RuleBasedNumberFormat nf;
+
+ // no decimal places
+ nf = new RuleBasedNumberFormat("1000/1000: <##K<;", Locale.US);
+ assertEquals("-1K", nf.format(-1400));
+ assertEquals("-2K", nf.format(-1900));
+ assertEquals("1K", nf.format(1400));
+ assertEquals("2K", nf.format(1900));
+
+ // 1 decimal place
+ nf = new RuleBasedNumberFormat("1000/1000: <##.0K<;", Locale.US);
+ assertEquals("-1.4K", nf.format(-1440));
+ assertEquals("1.9K", nf.format(1890));
+
+ // with modulus substitution
+ nf = new RuleBasedNumberFormat("1000/1000: <##<K>##>; -x: ->>;", Locale.US);
+ assertEquals("-1K400", nf.format(-1400));
+ assertEquals("-1K900", nf.format(-1900));
+ assertEquals("1K400", nf.format(1400));
+ assertEquals("1K900", nf.format(1900));
+
+ // no decimal places, but with rounding mode set to ROUND_FLOOR
+ nf = new RuleBasedNumberFormat("1000/1000: <##K<;", Locale.US);
+ nf.setMaximumFractionDigits(0);
+ nf.setRoundingMode(BigDecimal.ROUND_FLOOR);
+ assertEquals("-2K", nf.format(-1400));
+ assertEquals("-2K", nf.format(-1900));
+ assertEquals("1K", nf.format(1400));
+ assertEquals("1K", nf.format(1900));
+ }
+
/**
* Perform a simple spot check on the Spanish spellout rules
*/
@@ -551,6 +585,7 @@ public class RbnfTest extends CoreTestFmwk {
{ "200", "zwei\u00ADhundert" },
{ "579", "f\u00fcnf\u00ADhundert\u00ADneun\u00ADund\u00ADsiebzig" },
{ "1,000", "ein\u00ADtausend" },
+ { "1,101", "ein\u00adtausend\u00adein\u00adhundert\u00adeins" },
{ "2,000", "zwei\u00ADtausend" },
{ "3,004", "drei\u00ADtausend\u00ADvier" },
{ "4,567", "vier\u00ADtausend\u00ADf\u00fcnf\u00ADhundert\u00ADsieben\u00ADund\u00ADsechzig" },
@@ -566,6 +601,23 @@ public class RbnfTest extends CoreTestFmwk {
};
doParsingTest(formatter, testDataLenient, true);
+
+ String[][] testDataYear = {
+ { "101", "ein\u00adhundert\u00adeins" },
+ { "900", "neun\u00adhundert" },
+ { "1,001", "ein\u00adtausend\u00adeins" },
+ { "1,100", "elf\u00adhundert" },
+ { "1,101", "elf\u00adhundert\u00adeins" },
+ { "1,234", "zw\u00f6lf\u00adhundert\u00advier\u00adund\u00addrei\u00dfig" },
+ { "2,001", "zwei\u00adtausend\u00adeins" },
+ { "10,001", "zehn\u00adtausend\u00adeins" },
+ { "-100", "minus ein\u00adhundert" },
+ { "12.34", "12,3" },
+ };
+
+ formatter.setDefaultRuleSet("%spellout-numbering-year");
+ logln("testing year rules");
+ doTest(formatter, testDataYear, false);
}
/**
@@ -1316,7 +1368,7 @@ public class RbnfTest extends CoreTestFmwk {
// Tests when "if (!(that instanceof RuleBasedNumberFormat))" is true
RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat("dummy");
if (rbnf.equals("dummy") ||
- rbnf.equals(new Character('a')) ||
+ rbnf.equals('a') ||
rbnf.equals(new Object()) ||
rbnf.equals(-1) ||
rbnf.equals(0) ||
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TestMessageFormat.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TestMessageFormat.java
index 29170617c..a6fd6eb38 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TestMessageFormat.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TestMessageFormat.java
@@ -154,7 +154,7 @@ public class TestMessageFormat extends CoreTestFmwk {
public void TestPattern() // aka PatternTest()
{
Object testArgs[] = {
- new Double(1), new Double(3456),
+ 1d, 3456d,
"Disk", new Date(1000000000L)
};
String testCases[] = {
@@ -272,7 +272,7 @@ public class TestMessageFormat extends CoreTestFmwk {
public void TestStaticFormat()
{
Object arguments[] = {
- new Integer(7),
+ 7,
new Date(871068000000L),
"a disturbance in the Force"
};
@@ -288,9 +288,9 @@ public class TestMessageFormat extends CoreTestFmwk {
@Test
public void TestSimpleFormat()
{
- Object testArgs1[] = {new Integer(0), "MyDisk"};
- Object testArgs2[] = {new Integer(1), "MyDisk"};
- Object testArgs3[] = {new Integer(12), "MyDisk"};
+ Object testArgs1[] = {0, "MyDisk"};
+ Object testArgs2[] = {1, "MyDisk"};
+ Object testArgs3[] = {12, "MyDisk"};
MessageFormat form = new MessageFormat(
"The disk \"{1}\" contains {0} file(s).");
@@ -326,21 +326,21 @@ public class TestMessageFormat extends CoreTestFmwk {
FieldPosition ignore = new FieldPosition(FieldPosition_DONT_CARE);
StringBuffer string = new StringBuffer();
- Object testArgs1[] = {new Integer(0), "MyDisk"};
+ Object testArgs1[] = {0, "MyDisk"};
form.format(testArgs1, string, ignore);
assertEquals("format#1",
"The disk \"MyDisk\" contains no files.",
string.toString());
string.setLength(0);
- Object testArgs2[] = {new Integer(1), "MyDisk"};
+ Object testArgs2[] = {1, "MyDisk"};
form.format(testArgs2, string, ignore);
assertEquals("format#2",
"The disk \"MyDisk\" contains one file.",
string.toString());
string.setLength(0);
- Object testArgs3[] = {new Integer(1273), "MyDisk"};
+ Object testArgs3[] = {1273, "MyDisk"};
form.format(testArgs3, string, ignore);
assertEquals("format#3",
"The disk \"MyDisk\" contains 1,273 files.",
@@ -434,7 +434,7 @@ public class TestMessageFormat extends CoreTestFmwk {
public void TestSetLocale()
{
Object arguments[] = {
- new Double(456.83),
+ 456.83d,
new Date(871068000000L),
"deposit"
};
@@ -819,9 +819,9 @@ public class TestMessageFormat extends CoreTestFmwk {
final Object ARGS[] = {
new Date(10000000000000L),
- new Integer(1303),
- new Integer(1202),
- new Double(1303.0/1202 - 1),
+ 1303,
+ 1202,
+ 1303.0d/1202 - 1,
"Glimmung",
"the printers",
"Nick",
@@ -903,7 +903,7 @@ public class TestMessageFormat extends CoreTestFmwk {
public void TestSetGetFormats()
{
Object arguments[] = {
- new Double(456.83),
+ 456.83d,
new Date(871068000000L),
"deposit"
};
@@ -1119,7 +1119,7 @@ public class TestMessageFormat extends CoreTestFmwk {
gotException = false;
try {
- Object args[] = {new Long(42)};
+ Object args[] = {42L};
msg.format(args, new StringBuffer(), new FieldPosition(FieldPosition_DONT_CARE));
} catch (IllegalArgumentException e) {
gotException = true;
@@ -1132,7 +1132,7 @@ public class TestMessageFormat extends CoreTestFmwk {
gotException = false;
try {
- Object args[] = {new Long(42)};
+ Object args[] = {42L};
msg.format((Object) args, new StringBuffer(), new FieldPosition(FieldPosition_DONT_CARE));
} catch (IllegalArgumentException e) {
gotException = true;
@@ -1290,7 +1290,7 @@ public class TestMessageFormat extends CoreTestFmwk {
"{0, plural, one {{0, number,C''est #,##0.0# fichier}} " +
"other {Ce sont # fichiers}} dans la liste.",
new ULocale("fr"));
- Object objArray[] = {new Long(0)};
+ Object objArray[] = {0L};
HashMap objMap = new HashMap();
objMap.put("argument", objArray[0]);
String result = msgFmt.format(objArray);
@@ -1315,7 +1315,7 @@ public class TestMessageFormat extends CoreTestFmwk {
"{argument, plural, one{C''est # fichier} other {Ce " +
"sont # fichiers}} dans la liste.",
new ULocale("fr"));
- Object objArray[] = {new Long(0)};
+ Object objArray[] = {0L};
HashMap objMap = new HashMap();
objMap.put("argument", objArray[0]);
String result = mfNum.format(objArray);
@@ -1338,7 +1338,7 @@ public class TestMessageFormat extends CoreTestFmwk {
"are {argument, number,###.0} zavoda} other{are # " +
"zavodov}} in the directory.",
new ULocale("uk"));
- Object objArray[] = {new Long(4)};
+ Object objArray[] = {4L};
HashMap objMap = new HashMap();
objMap.put("argument", objArray[0]);
String result = mfNum.format(objArray);
@@ -1587,7 +1587,7 @@ public class TestMessageFormat extends CoreTestFmwk {
dateFormat.setTimeZone(TimeZone.getTimeZone("Etc/GMT"));
ms.setFormatByArgumentName("date", dateFormat);
Map map = new HashMap();
- map.put("number", new Integer(1234));
+ map.put("number", 1234);
map.put("date", new Date(0,0,0));
String result = ms.format(map);
assertEquals("setFormatByArgumentName", "1234.000 year:99 month:12 day:31", result);
@@ -1617,15 +1617,15 @@ public class TestMessageFormat extends CoreTestFmwk {
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
msgfmts[2].setFormat(0, fileform);
- Object[] args0 = new Object[] { "tmp", new Date(1184777888000L), new Integer(15), new Integer(2) };
+ Object[] args0 = new Object[] { "tmp", new Date(1184777888000L), 15, 2 };
HashMap args1 = new HashMap();
args1.put("arg0", "tmp");
args1.put("arg1", new Date(1184777888000L));
- args1.put("arg2", new Integer(15));
- args1.put("arg3", new Integer(2));
+ args1.put("arg2", 15);
+ args1.put("arg3", 2);
- Object[] args2 = new Object[] { new Integer(34) };
+ Object[] args2 = new Object[] { 34 };
Object[] args = { args0, args1, args2 };
@@ -1638,18 +1638,18 @@ public class TestMessageFormat extends CoreTestFmwk {
new AttributedString(expectedStrings[1]), new AttributedString(expectedStrings[2]) };
// Add expected attributes to the expectedAttributedStrings[0]
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(3), 4, 7);
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(0), 16, 19);
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(2), 30, 32);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 3, 4, 7);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 0, 16, 19);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 2, 30, 32);
expectedAttributedStrings[0].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 30, 32);
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(1), 53, 63);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 1, 53, 63);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.HOUR1, DateFormat.Field.HOUR1, 53, 54);
//expectedAttributedStrings[0].addAttribute(DateFormat.Field.TIME_SEPARATOR, DateFormat.Field.TIME_SEPARATOR, 54, 55);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.MINUTE, DateFormat.Field.MINUTE, 55, 57);
//expectedAttributedStrings[0].addAttribute(DateFormat.Field.TIME_SEPARATOR, DateFormat.Field.TIME_SEPARATOR, 57, 58);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.SECOND, DateFormat.Field.SECOND, 58, 60);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.AM_PM, DateFormat.Field.AM_PM, 61, 63);
- expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(1), 67, 79);
+ expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, 1, 67, 79);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.MONTH, DateFormat.Field.MONTH, 67, 70);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.DAY_OF_MONTH, DateFormat.Field.DAY_OF_MONTH, 71, 73);
expectedAttributedStrings[0].addAttribute(DateFormat.Field.YEAR, DateFormat.Field.YEAR, 75, 79);
@@ -1672,7 +1672,7 @@ public class TestMessageFormat extends CoreTestFmwk {
expectedAttributedStrings[1].addAttribute(DateFormat.Field.YEAR, DateFormat.Field.YEAR, 75, 79);
// Add expected attributes to the expectedAttributedStrings[2]
- expectedAttributedStrings[2].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(0), 20, 28);
+ expectedAttributedStrings[2].addAttribute(MessageFormat.Field.ARGUMENT, 0, 20, 28);
expectedAttributedStrings[2].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 20, 22);
for (int i = 0; i < msgfmts.length; i++) {
@@ -1877,7 +1877,7 @@ public class TestMessageFormat extends CoreTestFmwk {
m.applyPattern("x { _oOo_ , number , integer } y");
Map<String, Object> map = new HashMap<String, Object>();
- map.put("_oOo_", new Integer(3));
+ map.put("_oOo_", 3);
StringBuffer result = new StringBuffer();
assertEquals("trim-named-arg format() failed", "x 3 y",
m.format(map, result, new FieldPosition(FieldPosition_DONT_CARE)).toString());
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
index ae42fce19..f8b1cd3e6 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
@@ -274,8 +274,7 @@ public class TimeZoneFormatTest extends CoreTestFmwk {
}
} else {
// Specific or generic: raw offset must be preserved.
- if (inOffsets[0] != outOffsets[0] && !(LOCALES[locidx].getName().startsWith("ku") && tzids[tzidx].equals("America/Miquelon")
- && logKnownIssue("CLDR-17024", "TestTimeZoneRoundTrip exhaust. fail with tz=America/Miquelon, locale=ku"))) {
+ if (inOffsets[0] != outOffsets[0] ) {
if (JDKTZ && tzids[tzidx].startsWith("SystemV/")) {
// JDK uses rule SystemV for these zones while
// ICU handles these zones as aliases of existing time zones
@@ -426,13 +425,6 @@ public class TimeZoneFormatTest extends CoreTestFmwk {
continue;
}
- if ((id.equals("America/Miquelon") || id.equals("America/Hermosillo") || id.equals("America/Mazatlan"))
- && PATTERNS[patidx].equals("v")
- && LOCALES[locidx].getName().startsWith("ku")
- && logKnownIssue("CLDR-17024", "TestTimeRoundTrip fail with tz=America/Miquelon, pattern=v, locale=ku")) {
- continue;
- }
-
BasicTimeZone btz = (BasicTimeZone)TimeZone.getTimeZone(id, TimeZone.TIMEZONE_ICU);
TimeZone tz = TimeZone.getTimeZone(id);
sdf.setTimeZone(tz);
@@ -543,10 +535,10 @@ public class TimeZoneFormatTest extends CoreTestFmwk {
// These special cases do not round trip time as designed.
private boolean isSpecialTimeRoundTripCase(ULocale loc, String id, String pattern, long time) {
final Object[][] EXCLUSIONS = {
- {null, "Asia/Chita", "zzzz", Long.valueOf(1414252800000L)},
- {null, "Asia/Chita", "vvvv", Long.valueOf(1414252800000L)},
- {null, "Asia/Srednekolymsk", "zzzz", Long.valueOf(1414241999999L)},
- {null, "Asia/Srednekolymsk", "vvvv", Long.valueOf(1414241999999L)},
+ {null, "Asia/Chita", "zzzz", 1414252800000L},
+ {null, "Asia/Chita", "vvvv", 1414252800000L},
+ {null, "Asia/Srednekolymsk", "zzzz", 1414241999999L},
+ {null, "Asia/Srednekolymsk", "vvvv", 1414241999999L},
};
boolean isExcluded = false;
for (Object[] excl : EXCLUSIONS) {
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/message2/Mf2FeaturesTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/message2/Mf2FeaturesTest.java
index 6d4fa23fa..4bd787416 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/message2/Mf2FeaturesTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/message2/Mf2FeaturesTest.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
@@ -25,7 +25,7 @@ import com.ibm.icu.util.CurrencyAmount;
* </p>
*/
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class Mf2FeaturesTest extends CoreTestFmwk {
// November 23, 2022 at 7:42:37.123 PM
@@ -34,7 +34,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testEmptyMessage() {
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{}")
+ .pattern("")
.arguments(Args.NONE)
.expected("")
.build());
@@ -43,7 +43,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testPlainText() {
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Hello World!}")
+ .pattern("Hello World!")
.arguments(Args.NONE)
.expected("Hello World!")
.build());
@@ -52,7 +52,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testPlaceholders() {
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Hello, {$userName}!}")
+ .pattern("Hello, {$userName}!")
.arguments(Args.of("userName", "John"))
.expected("Hello, John!")
.build());
@@ -62,7 +62,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
public void testArgumentMissing() {
// Test to check what happens if an argument name from the placeholder is not found
// We do what the old ICU4J MessageFormat does.
- String message = "{Hello {$name}, today is {$today :datetime skeleton=yMMMMdEEEE}.}";
+ String message = "Hello {$name}, today is {$today :datetime year=numeric month=long day=numeric weekday=long}.";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
@@ -88,7 +88,7 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testDefaultLocale() {
- String message = "{Date: {$date :datetime skeleton=yMMMMdEEEE}.}";
+ String message = "Date: {$date :date year=numeric month=long day=numeric weekday=long}.";
String expectedEn = "Date: Wednesday, November 23, 2022.";
String expectedRo = "Date: miercuri, 23 noiembrie 2022.";
Map<String, Object> arguments = Args.of("date", TEST_DATE);
@@ -125,14 +125,14 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
public void testAllKindOfDates() {
// Default function
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date}.}")
+ .pattern("Testing date formatting: {$date}.")
.locale("ro")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23.11.2022, 19:42.")
.build());
// Default options
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime}.}")
+ .pattern("Testing date formatting: {$date :datetime}.")
.locale("ro")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23.11.2022, 19:42.")
@@ -140,74 +140,66 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
// Skeleton
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=yMMMMd}.}")
+ .pattern("Testing date formatting: {$date :date year=numeric month=long day=numeric}.")
.locale("ro-RO")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23 noiembrie 2022.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=jm}.}")
+ .pattern("Testing date formatting: {$date :datetime hour=numeric minute=numeric}.")
.locale("ro-RO")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 19:42.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=yMMMd}.}")
+ .pattern("Testing date formatting: {$date :date year=numeric month=short day=numeric}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: Nov 23, 2022.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=yMMMdjms}.}")
+ .pattern("Testing date formatting: {$date :datetime icu:skeleton=yMMMdjms}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: Nov 23, 2022, 7:42:37\u202FPM.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime skeleton=jm}.}")
+ .pattern("Testing date formatting: {$date :datetime hour=numeric minute=numeric}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 7:42\u202FPM.")
.build());
// Style
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime datestyle=long}.}")
+ .pattern("Testing date formatting: {$date :datetime dateStyle=long}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: November 23, 2022.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern(
- "{Testing date formatting: {$date :datetime datestyle=medium}.}")
+ .pattern("Testing date formatting: {$date :datetime dateStyle=medium}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: Nov 23, 2022.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime datestyle=short}.}")
+ .pattern("Testing date formatting: {$date :datetime dateStyle=short}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 11/23/22.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime timestyle=long}.}")
+ .pattern("Testing date formatting: {$date :datetime timeStyle=long}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 7:42:37\u202FPM PST.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime timestyle=medium}.}")
+ .pattern("Testing date formatting: {$date :datetime timeStyle=medium}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 7:42:37\u202FPM.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
.pattern(
- "{Testing date formatting: {$date :datetime timestyle=short}.}")
+ "Testing date formatting: {$date :datetime timeStyle=short}.")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 7:42\u202FPM.")
.build());
-
- // Pattern
- TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime pattern=(d 'of' MMMM, y 'at' HH:mm)}.}")
- .arguments(Args.of("date", TEST_DATE))
- .expected("Testing date formatting: 23 of November, 2022 at 19:42.")
- .build());
}
@Test
@@ -216,19 +208,19 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
// From literal values
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{From literal: {(123456789) :number}!}")
+ .pattern("From literal: {123456789 :number}!")
.locale("ro")
.arguments(Args.of("val", value))
.expected("From literal: 123.456.789!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{From literal: {(123456789.531) :number}!}")
+ .pattern("From literal: {|123456789.531| :number}!")
.locale("ro")
.arguments(Args.of("val", value))
.expected("From literal: 123.456.789,531!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{From literal: {(123456789.531) :number}!}")
+ .pattern("From literal: {123456789.531 :number}!")
.locale("my")
.arguments(Args.of("val", value))
.expected("From literal: \u1041\u1042\u1043,\u1044\u1045\u1046,\u1047\u1048\u1049.\u1045\u1043\u1041!")
@@ -236,37 +228,37 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
// Testing that the detection works for various types (without specifying :number)
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default double: {$val}!}")
+ .pattern("Default double: {$val}!")
.locale("en-IN")
.arguments(Args.of("val", value))
.expected("Default double: 1,23,45,67,890.97531!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default double: {$val}!}")
+ .pattern("Default double: {$val}!")
.locale("ro")
.arguments(Args.of("val", value))
.expected("Default double: 1.234.567.890,97531!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default float: {$val}!}")
+ .pattern("Default float: {$val}!")
.locale("ro")
.arguments(Args.of("val", 3.1415926535))
.expected("Default float: 3,141593!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default long: {$val}!}")
+ .pattern("Default long: {$val}!")
.locale("ro")
.arguments(Args.of("val", 1234567890123456789L))
.expected("Default long: 1.234.567.890.123.456.789!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Default number: {$val}!}")
+ .pattern("Default number: {$val}!")
.locale("ro")
.arguments(Args.of("val", new BigDecimal("1234567890123456789.987654321")))
.expected("Default number: 1.234.567.890.123.456.789,987654!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Price: {$val}}")
+ .pattern("Price: {$val}")
.locale("de")
.arguments(Args.of("val", new CurrencyAmount(1234.56, Currency.getInstance("EUR"))))
.expected("Price: 1.234,56\u00A0\u20AC")
@@ -274,33 +266,33 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
// Various skeletons
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, minFraction: {$val :number skeleton=(.00000000*)}!}")
+ .pattern("Option, minFraction: {$val :number minimumFractionDigits=8}!")
.locale("ro")
.arguments(Args.of("val", value))
- .expected("Skeletons, minFraction: 1.234.567.890,97531000!")
+ .expected("Option, minFraction: 1.234.567.890,97531000!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, maxFraction: {$val :number skeleton=(.###)}!}")
+ .pattern("Option, maxFraction: {$val :number maximumFractionDigits=3}!")
.locale("ro")
.arguments(Args.of("val", value))
- .expected("Skeletons, maxFraction: 1.234.567.890,975!")
+ .expected("Option, maxFraction: 1.234.567.890,975!")
.build());
// Currency
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, currency: {$val :number skeleton=(currency/EUR)}!}")
+ .pattern("Skeletons, currency: {$val :number icu:skeleton=|currency/EUR|}!")
.locale("de")
.arguments(Args.of("val", value))
.expected("Skeletons, currency: 1.234.567.890,98\u00A0\u20AC!")
.build());
// Currency as a parameter
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, currency: {$val :number skeleton=$skel}!}")
+ .pattern("Skeletons, currency: {$val :number icu:skeleton=$skel}!")
.locale("de")
.arguments(Args.of("val", value, "skel", "currency/EUR"))
.expected("Skeletons, currency: 1.234.567.890,98\u00A0\u20AC!")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, currency: {$val :number skeleton=$skel}!}")
+ .pattern("Skeletons, currency: {$val :number icu:skeleton=$skel}!")
.locale("de")
.arguments(Args.of("val", value, "skel", "currency/JPY"))
.expected("Skeletons, currency: 1.234.567.891\u00A0\u00A5!")
@@ -310,22 +302,22 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
double celsius = 27;
TestUtils.runTestCase(new TestCase.Builder()
.pattern(""
- + "let $intl = {$valC :number skeleton=(unit/celsius)}\n"
- + "let $us = {$valF :number skeleton=(unit/fahrenheit)}\n"
- + "{Temperature: {$intl} ({$us})}")
+ + ".local $intl = {$valC :number icu:skeleton=|unit/celsius|}\n"
+ + ".local $us = {$valF :number icu:skeleton=|unit/fahrenheit|}\n"
+ + "{{Temperature: {$intl} ({$us})}}")
.locale("ro")
.arguments(Args.of("valC", celsius, "valF", celsius * 9 / 5 + 32))
.expected("Temperature: 27 \u00B0C (80,6 \u00B0F)")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Height: {$len :number skeleton=(unit/meter)}}")
+ .pattern("Height: {$len :number icu:skeleton=|unit/meter|}")
.locale("ro")
.arguments(Args.of("len", 1.75))
.expected("Height: 1,75 m")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Skeletons, currency: {$val :number skeleton=(currency/EUR)}!}")
+ .pattern("Skeletons, currency: {$val :number icu:skeleton=|currency/EUR|}!")
.locale("de")
.arguments(Args.of("val", value))
.expected("Skeletons, currency: 1.234.567.890,98\u00A0\u20AC!")
@@ -335,20 +327,20 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testSpecialPluralWithDecimals() {
String message;
- message = "let $amount = {$count :number}\n"
- + "match {$amount :plural}\n"
- + " when 1 {I have {$amount} dollar.}\n"
- + " when * {I have {$amount} dollars.}\n";
+ message = ".local $amount = {$count :number}\n"
+ + ".match {$amount :number}\n"
+ + " 1 {{I have {$amount} dollar.}}\n"
+ + " * {{I have {$amount} dollars.}}\n";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
.locale("en-US")
.arguments(Args.of("count", 1))
.expected("I have 1 dollar.")
.build());
- message = "let $amount = {$count :number skeleton=(.00*)}\n"
- + "match {$amount :plural skeleton=(.00*)}\n"
- + " when 1 {I have {$amount} dollar.}\n"
- + " when * {I have {$amount} dollars.}\n";
+ message = ".local $amount = {$count :number minimumFractionDigits=2}\n"
+ + ".match {$amount :number minimumFractionDigits=2}\n"
+ + " one {{I have {$amount} dollar.}}\n"
+ + " * {{I have {$amount} dollars.}}\n";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
.locale("en-US")
@@ -360,13 +352,13 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testDefaultFunctionAndOptions() {
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date}.}")
+ .pattern("Testing date formatting: {$date}.")
.locale("ro")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23.11.2022, 19:42.")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Testing date formatting: {$date :datetime}.}")
+ .pattern("Testing date formatting: {$date :datetime}.")
.locale("ro")
.arguments(Args.of("date", TEST_DATE))
.expected("Testing date formatting: 23.11.2022, 19:42.")
@@ -375,9 +367,9 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testSimpleSelection() {
- String message = "match {$count :plural}\n"
- + " when 1 {You have one notification.}\n"
- + " when * {You have {$count} notifications.}\n";
+ String message = ".match {$count :number}\n"
+ + " 1 {{You have one notification.}}\n"
+ + " * {{You have {$count} notifications.}}\n";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
@@ -394,13 +386,13 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testComplexSelection() {
String message = ""
- + "match {$photoCount :plural} {$userGender :select}\n"
- + " when 1 masculine {{$userName} added a new photo to his album.}\n"
- + " when 1 feminine {{$userName} added a new photo to her album.}\n"
- + " when 1 * {{$userName} added a new photo to their album.}\n"
- + " when * masculine {{$userName} added {$photoCount} photos to his album.}\n"
- + " when * feminine {{$userName} added {$photoCount} photos to her album.}\n"
- + " when * * {{$userName} added {$photoCount} photos to their album.}";
+ + ".match {$photoCount :number} {$userGender :string}\n"
+ + " 1 masculine {{{$userName} added a new photo to his album.}}\n"
+ + " 1 feminine {{{$userName} added a new photo to her album.}}\n"
+ + " 1 * {{{$userName} added a new photo to their album.}}\n"
+ + " * masculine {{{$userName} added {$photoCount} photos to his album.}}\n"
+ + " * feminine {{{$userName} added {$photoCount} photos to her album.}}\n"
+ + " * * {{{$userName} added {$photoCount} photos to their album.}}";
TestUtils.runTestCase(new TestCase.Builder().pattern(message)
.arguments(Args.of("photoCount", 1, "userGender", "masculine", "userName", "John"))
@@ -435,8 +427,8 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
public void testSimpleLocaleVariable() {
TestUtils.runTestCase(new TestCase.Builder()
.pattern(""
- + "let $expDate = {$expDate :datetime skeleton=yMMMdE}\n"
- + "{Your tickets expire on {$expDate}.}")
+ + ".local $exp = {$expDate :datetime year=numeric month=short day=numeric weekday=short}\n"
+ + "{{Your tickets expire on {$exp}.}}")
.arguments(Args.of("count", 1, "expDate", TEST_DATE))
.expected("Your tickets expire on Wed, Nov 23, 2022.")
.build());
@@ -445,10 +437,10 @@ public class Mf2FeaturesTest extends CoreTestFmwk {
@Test
public void testLocaleVariableWithSelect() {
String message = ""
- + "let $expDate = {$expDate :datetime skeleton=yMMMdE}\n"
- + "match {$count :plural}\n"
- + " when 1 {Your ticket expires on {$expDate}.}\n"
- + " when * {Your {$count} tickets expire on {$expDate}.}\n";
+ + ".local $exp = {$expDate :date year=numeric month=short day=numeric weekday=short}\n"
+ + ".match {$count :number}\n"
+ + " 1 {{Your ticket expires on {$exp}.}}\n"
+ + " * {{Your {$count} tickets expire on {$exp}.}}\n";
TestUtils.runTestCase(new TestCase.Builder()
.pattern(message)
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java
index a63da3be0..e96f4e736 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java
@@ -518,6 +518,11 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
// Test the priorities
{"Test the locale with mu,ms,rg --> mu tag wins", "en-US-u-mu-celsius-ms-ussystem-rg-uszzzz", "celsius", "0", "default", "celsius", "0.0", "0 degrees Celsius"},
{"Test the locale with ms,rg --> ms tag wins", "en-US-u-ms-metric-rg-uszzzz", "foot", "1", "default", "foot", "30.0", "30 centimeters"},
+
+ // Test the liklihood of the languages
+ {"Test the region of `en` --> region should be US", "en", "celsius", "1", "default", "fahrenheit", "34.0", "34 degrees Fahrenheit"},
+ {"Test the region of `de` --> region should be DE", "de", "celsius", "1", "default", "celsius", "1.0", "1 Grad Celsius"},
+ {"Test the region of `ar` --> region should be EG", "ar", "celsius", "1", "default", "celsius", "1.0", "١ درجة مئوية"},
};
int testIndex = 0;
@@ -1654,7 +1659,7 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
ULocale.ENGLISH,
Double.NEGATIVE_INFINITY,
// "-∞ km²");
- "0 cm²");
+ "0 in²");
// TODO(icu-units#132): Java BigDecimal does not support Inf and NaN, so
// we get a misleading "0" out of this:
@@ -1666,7 +1671,7 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
ULocale.ENGLISH,
Double.NaN,
// "NaN cm²");
- "0 cm²");
+ "0 in²");
assertFormatSingle(
"Negative numbers: minute-and-second",
@@ -2173,7 +2178,7 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
NumberFormatter.with().unit(USD).unitWidth(UnitWidth.NARROW),
ULocale.forLanguageTag("en-CA"),
5.43,
- "US$5.43");
+ "$5.43");
assertFormatSingle(
"Currency Difference between Narrow and Short (Short Version)",
@@ -5115,7 +5120,7 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
NumberFormatter.with().sign(SignDisplay.ACCOUNTING).unit(USD).unitWidth(UnitWidth.NARROW),
ULocale.CANADA,
-444444,
- "(US$444,444.00)");
+ "($444,444.00)");
assertFormatSingle(
"Sign Accounting Negative Short",
@@ -5395,10 +5400,39 @@ public class NumberFormatterApiTest extends CoreTestFmwk {
@Test
public void locale() {
// Coverage for the locale setters.
- Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.ENGLISH));
- Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(ULocale.ENGLISH));
- Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(Locale.ENGLISH));
- Assert.assertNotEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.FRENCH));
+ Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH),
+ NumberFormatter.with().locale(Locale.ENGLISH));
+ Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH),
+ NumberFormatter.withLocale(ULocale.ENGLISH));
+ Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH),
+ NumberFormatter.withLocale(Locale.ENGLISH));
+ Assert.assertNotEquals(NumberFormatter.with().locale(ULocale.ENGLISH),
+ NumberFormatter.with().locale(Locale.FRENCH));
+
+ LocalizedNumberFormatter lnf1 = NumberFormatter.withLocale(ULocale.ENGLISH).unitWidth(UnitWidth.FULL_NAME)
+ .scale(Scale.powerOfTen(2));
+ LocalizedNumberFormatter lnf2 = NumberFormatter.with()
+ .notation(Notation.compactLong()).locale(ULocale.FRENCH).unitWidth(UnitWidth.FULL_NAME);
+ UnlocalizedNumberFormatter unf1 = lnf1.withoutLocale();
+ UnlocalizedNumberFormatter unf2 = lnf2.withoutLocale();
+
+ assertFormatSingle(
+ "Formatter after withoutLocale A",
+ "unit/meter unit-width-full-name scale/100",
+ "unit/meter unit-width-full-name scale/100",
+ unf1.unit(MeasureUnit.METER),
+ ULocale.ITALY,
+ 2,
+ "200 metri");
+
+ assertFormatSingle(
+ "Formatter after withoutLocale B",
+ "compact-long unit/meter unit-width-full-name",
+ "compact-long unit/meter unit-width-full-name",
+ unf2.unit(MeasureUnit.METER),
+ ULocale.JAPAN,
+ 2,
+ "2 メートル");
}
@Test
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java
index d4c9d3a47..fd95fd890 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java
@@ -823,6 +823,22 @@ public class NumberRangeFormatterTest extends CoreTestFmwk {
}
}
+ @Test
+ public void locale() {
+ LocalizedNumberRangeFormatter lnf = NumberRangeFormatter.withLocale(ULocale.ENGLISH)
+ .identityFallback(RangeIdentityFallback.RANGE);
+ UnlocalizedNumberRangeFormatter unf1 = lnf.withoutLocale();
+ UnlocalizedNumberRangeFormatter unf2 = NumberRangeFormatter.with()
+ .identityFallback(RangeIdentityFallback.RANGE)
+ .locale(ULocale.forLanguageTag("ar-EG"))
+ .withoutLocale();
+
+ FormattedNumberRange res1 = unf1.locale(ULocale.forLanguageTag("bn")).formatRange(5, 5);
+ assertEquals("res1", "\u09EB\u2013\u09EB", res1.toString());
+ FormattedNumberRange res2 = unf2.locale(ULocale.forLanguageTag("ja-JP")).formatRange(5, 5);
+ assertEquals("res2", "5\uFF5E5", res2.toString());
+ }
+
static final String[] allNSNames = NumberingSystem.getAvailableNames();
private class RangePatternSink extends UResource.Sink {
@@ -951,7 +967,6 @@ public class NumberRangeFormatterTest extends CoreTestFmwk {
}
{
- // TODO(CLDR-14111): Add spacing between range separator and sign
LocalizedNumberRangeFormatter lnrf = NumberRangeFormatter
.withLocale(ULocale.forLanguageTag("de-CH"));
String actual = lnrf.formatRange(2, -3).toString();
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/CompatibilityTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
index fb77b2e90..2ee07bf2d 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
@@ -198,6 +198,11 @@ public class CompatibilityTest extends CoreTestFmwk
}
private static final String[][] SKIP_CASES = {
+ // com.ibm.icu.message2.Mf2DataModel$OrderedMap was very drafty
+ {"ICU_72.1", "com.ibm.icu.message2.Mf2DataModel$OrderedMap"},
+ {"ICU_73.1", "com.ibm.icu.message2.Mf2DataModel$OrderedMap"},
+ {"ICU_74.1", "com.ibm.icu.message2.Mf2DataModel$OrderedMap"},
+
// ICU 52+ PluralRules/PluralFormat/CurrencyPluralInfo are not
// serialization-compatible with previous versions.
{"ICU_50.1", "com.ibm.icu.text.CurrencyPluralInfo"},
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/FormatHandler.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/FormatHandler.java
index 47b0980f7..bb71dd1af 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/FormatHandler.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/FormatHandler.java
@@ -1144,7 +1144,7 @@ public class FormatHandler
// reproduced since formatToCharacterIterator was introduced,
// up to ICU 4.0.
- AttributedCharacterIterator aci = formats[0].formatToCharacterIterator(new Double(12.345D));
+ AttributedCharacterIterator aci = formats[0].formatToCharacterIterator(12.345d);
if (aci == null) {} // NOP - for resolving 'Unused local variable' warning.
}
return formats;
@@ -1782,7 +1782,7 @@ public class FormatHandler
{
MessageFormat mfa = (MessageFormat) a;
MessageFormat mfb = (MessageFormat) b;
- Object arguments[] = {new Integer(123456)};
+ Object arguments[] = {123456};
return mfa.format(arguments) != mfb.format(arguments);
}
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java
index 8624cce7f..d92b8335c 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java
@@ -39,7 +39,7 @@ import com.ibm.icu.impl.TimeZoneAdapter;
import com.ibm.icu.impl.URLHandler;
import com.ibm.icu.math.BigDecimal;
import com.ibm.icu.math.MathContext;
-import com.ibm.icu.message2.Mf2DataModel;
+import com.ibm.icu.message2.MFParseException;
import com.ibm.icu.util.AnnualTimeZoneRule;
import com.ibm.icu.util.Calendar;
import com.ibm.icu.util.Currency;
@@ -763,26 +763,13 @@ public class SerializableTestUtility {
}
}
- private static class Mf2DataModelOrderedMapHandler implements Handler {
+ private static class MFParseExceptionHandler extends ExceptionHandlerBase {
@Override
public Object[] getTestObjects() {
- Mf2DataModel.OrderedMap<String, Object> mapWithContent = new Mf2DataModel.OrderedMap<>();
- mapWithContent.put("number", Double.valueOf(3.1416));
- mapWithContent.put("date", new Date(1664582400000L /* 20221001T000000Z */));
- mapWithContent.put("string", "testing");
- return new Mf2DataModel.OrderedMap[] {
- new Mf2DataModel.OrderedMap(),
- mapWithContent
+ return new MFParseException[] {
+ new MFParseException("test", 42)
};
}
-
- @Override
- public boolean hasSameBehavior(Object a, Object b) {
- // OrderedMap extends LinkedHashMap, without adding any functionality, nothing to test.
- Mf2DataModel.OrderedMap ra = (Mf2DataModel.OrderedMap)a;
- Mf2DataModel.OrderedMap rb = (Mf2DataModel.OrderedMap)b;
- return ra.equals(rb);
- }
}
private static HashMap map = new HashMap();
@@ -882,7 +869,7 @@ public class SerializableTestUtility {
map.put("com.ibm.icu.util.ICUCloneNotSupportedException", new ICUCloneNotSupportedExceptionHandler());
map.put("com.ibm.icu.util.ICUInputTooLongException", new ICUInputTooLongExceptionHandler());
- map.put("com.ibm.icu.message2.Mf2DataModel$OrderedMap", new Mf2DataModelOrderedMapHandler());
+ map.put("com.ibm.icu.message2.MFParseException", new MFParseExceptionHandler());
}
/*
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java
index 1b4cf5131..26c061599 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java
@@ -226,7 +226,7 @@ public class CurrencyTest extends CoreTestFmwk {
"US$",
USD.getName(en_CA, Currency.SYMBOL_NAME, isChoiceFormat));
assertEquals("USD.getName(NARROW_SYMBOL_NAME, en_CA)",
- "US$",
+ "$",
USD.getName(en_CA, Currency.NARROW_SYMBOL_NAME, isChoiceFormat));
assertEquals("USD.getName(SYMBOL_NAME) in en_NZ",
"US$",
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
index 96bc6fc3a..554ce351a 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
@@ -717,9 +717,8 @@ public final class ICUResourceBundleTest extends CoreTestFmwk {
}
Set<String> localLangExceptions = new HashSet<>();
- if (logKnownIssue("cldrbug:17001", "No localized language name for nmg, vmw")) {
+ if (logKnownIssue("ICU-22681", "No localized language name for nmg")) {
localLangExceptions.add("nmg");
- localLangExceptions.add("vmw");
}
for (int i = 0; i < locales.length; ++i) {
@@ -803,16 +802,16 @@ public final class ICUResourceBundleTest extends CoreTestFmwk {
ULocale inLocale = new ULocale(testCases[i+1]);
ULocale expectLocale = new ULocale(testCases[i+2]);
- logln(new Integer(i/3).toString() + ": " + new Boolean(expectAvail).toString() + "\t\t" +
- inLocale.toString() + "\t\t" + expectLocale.toString());
+ logln("" + i/3 + ": " + expectAvail + "\t\t" +
+ inLocale + "\t\t" + expectLocale);
ULocale equivLocale = ICUResourceBundle.getFunctionalEquivalent(path, cl, resName, keyword, inLocale, isAvail, truncate);
boolean gotAvail = isAvail[0];
if((gotAvail != expectAvail) || !equivLocale.equals(expectLocale)) {
- errln(new Integer(i/3).toString() + ": Error, expected Equiv=" + new Boolean(expectAvail).toString() + "\t\t" +
- inLocale.toString() + "\t\t--> " + expectLocale.toString() + ", but got " + new Boolean(gotAvail).toString() + " " +
- equivLocale.toString());
+ errln("" + i/3 + ": Error, expected Equiv=" + expectAvail + "\t\t" +
+ inLocale + "\t\t--> " + expectLocale + ", but got " + gotAvail + " " +
+ equivLocale);
}
}
}
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUServiceTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUServiceTest.java
index 4006ec8d1..e62326712 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUServiceTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ICUServiceTest.java
@@ -118,7 +118,7 @@ public class ICUServiceTest extends CoreTestFmwk
// register an object with one locale,
// search for an object with a more specific locale
// should return the original object
- Integer singleton0 = new Integer(0);
+ Integer singleton0 = 0;
service.registerObject(singleton0, "en_US");
Object result = service.get("en_US_FOO");
confirmIdentical("1) en_US_FOO -> en_US", result, singleton0);
@@ -126,7 +126,7 @@ public class ICUServiceTest extends CoreTestFmwk
// register a new object with the more specific locale
// search for an object with that locale
// should return the new object
- Integer singleton1 = new Integer(1);
+ Integer singleton1 = 1;
service.registerObject(singleton1, "en_US_FOO");
result = service.get("en_US_FOO");
confirmIdentical("2) en_US_FOO -> en_US_FOO", result, singleton1);
@@ -141,7 +141,7 @@ public class ICUServiceTest extends CoreTestFmwk
// register a new object with yet another locale
// original factory list is unchanged
- Integer singleton2 = new Integer(2);
+ Integer singleton2 = 2;
service.registerObject(singleton2, "en");
confirmIdentical("5) factory size", factories.size(), 2);
@@ -152,7 +152,7 @@ public class ICUServiceTest extends CoreTestFmwk
confirmIdentical("6) en_US_BAR -> en_US", result, singleton0);
// register a new object with an old id, should hide earlier factory using this id, but leave it there
- Integer singleton3 = new Integer(3);
+ Integer singleton3 = 3;
service.registerObject(singleton3, "en_US");
factories = service.factories();
confirmIdentical("9) factory size", factories.size(), 4);
@@ -188,7 +188,7 @@ public class ICUServiceTest extends CoreTestFmwk
// should be able to register invisible factories, these will not
// be visible by default, but if you know the secret password you
// can still access these services...
- Integer singleton4 = new Integer(4);
+ Integer singleton4 = 4;
service.registerObject(singleton4, "en_US_BAR", false);
result = service.get("en_US_BAR");
confirmIdentical("17) get invisible", result, singleton4);
diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java
index 9f37be536..3361782ec 100644
--- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java
+++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java
@@ -1734,7 +1734,7 @@ public class ULocaleTest extends CoreTestFmwk {
} else {
errln("#" + i + ": locale: expected " + expectLocale + " but got " + n);
}
- Boolean actualBoolean = Boolean.valueOf(r[0]);
+ Boolean actualBoolean = r[0];
if(expectBoolean.equals(actualBoolean)) {
logln("#" + i + ": fallback: OK.");
} else {
@@ -1765,7 +1765,7 @@ public class ULocaleTest extends CoreTestFmwk {
} else {
errln("#" + i + ": expected " + expectLocale + " but got " + n.toString());
}
- Boolean actualBoolean = Boolean.valueOf(r[0]);
+ Boolean actualBoolean = r[0];
if(expectBoolean.equals(actualBoolean)) {
logln("#" + i + ": fallback: OK.");
} else {
@@ -1917,6 +1917,91 @@ public class ULocaleTest extends CoreTestFmwk {
}, {
"zzz",
""
+ }, {
+ // ICU-22547
+ // unicode_language_id = "root" |
+ // (unicode_language_subtag (sep unicode_script_subtag)? | unicode_script_subtag)
+ // (sep unicode_region_subtag)? (sep unicode_variant_subtag)* ;
+ // so "aaaa" is a well-formed unicode_language_id
+ "aaaa",
+ "aaaa",
+ }, {
+ // ICU-22727
+ // unicode_language_subtag = alpha{2,3} | alpha{5,8};
+ // so "bbbbb", "cccccc", "ddddddd", "eeeeeeee" are
+ // well-formed unicode_language_subtag and therefore
+ // well-formed unicode_language_id
+ "bbbbb",
+ "bbbbb",
+ }, {
+ // ICU-22727
+ "cccccc",
+ "cccccc",
+ }, {
+ // ICU-22727
+ "ddddddd",
+ "ddddddd",
+ }, {
+ // ICU-22727
+ "eeeeeeee",
+ "eeeeeeee",
+ }, {
+ // ICU-22546
+ "und-Zzzz",
+ "en_Latn_US" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "en",
+ "en_Latn_US" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "de",
+ "de_Latn_DE" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "sr",
+ "sr_Cyrl_RS" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "sh",
+ // Android patch: addLikelySubtags("sh") returns "sh_Latn_RS" on Android
+ // TODO(b/335896974): Investigate why this patch is needed.
+ "sh_Latn_RS" // If change, please also update ULocale.java
+ }, {
+ // ICU-22546
+ "zh_Hani",
+ "zh_Hani_CN" // If change, please also update ULocale.java
+ }, {
+ // ICU-22545 & ICU-22742
+ "en_XA",
+ "en_Latn_XA",
+ }, {
+ // ICU-22545 & ICU-22742
+ "ar_XB",
+ "ar_Arab_XB",
+ }, {
+ // ICU-22545 & ICU-22742
+ "ru_XC",
+ "ru_Cyrl_XC",
+ }, {
+ // ICU-22742
+ "en_PSACCENT",
+ "en_Latn_US_PSACCENT",
+ }, {
+ "ar_PSBIDI",
+ "ar_Arab_EG_PSBIDI",
+ }, {
+ "ru_PSCRACK",
+ "ru_Cyrl_RU_PSCRACK",
+ }, {
+ "ar_PSACCENT",
+ "ar_Arab_EG_PSACCENT",
+ }, {
+ "ru_PSBIDI",
+ "ru_Cyrl_RU_PSBIDI",
+ }, {
+ "en_PSCRACK",
+ "en_Latn_US_PSCRACK",
}
};
@@ -4294,7 +4379,7 @@ public class ULocaleTest extends CoreTestFmwk {
@Test
public void TestForLanguageTag() {
- final Integer NOERROR = Integer.valueOf(-1);
+ final Integer NOERROR = -1;
final Object[][] langtag_to_locale = {
{"en", "en", NOERROR},
@@ -4302,24 +4387,24 @@ public class ULocaleTest extends CoreTestFmwk {
{"und-us", "_US", NOERROR},
{"und-latn", "_Latn", NOERROR},
{"en-us-posix", "en_US_POSIX", NOERROR},
- {"de-de_euro", "de", Integer.valueOf(3)},
+ {"de-de_euro", "de", 3},
{"kok-in", "kok_IN", NOERROR},
- {"123", "", Integer.valueOf(0)},
- {"en_us", "", Integer.valueOf(0)},
- {"en-latn-x", "en_Latn", Integer.valueOf(8)},
+ {"123", "", 0},
+ {"en_us", "", 0},
+ {"en-latn-x", "en_Latn", 8},
{"art-lojban", "jbo", NOERROR},
{"zh-hakka", "hak", NOERROR},
{"zh-cmn-CH", "cmn_CH", NOERROR},
{"xxx-yy", "xxx_YY", NOERROR},
{"fr-234", "fr_234", NOERROR},
{"i-default", "en@x=i-default", NOERROR},
- {"i-test", "", Integer.valueOf(0)},
- {"ja-jp-jp", "ja_JP", Integer.valueOf(6)},
+ {"i-test", "", 0},
+ {"ja-jp-jp", "ja_JP", 6},
{"bogus", "bogus", NOERROR},
- {"boguslang", "", Integer.valueOf(0)},
+ {"boguslang", "", 0},
{"EN-lATN-us", "en_Latn_US", NOERROR},
{"und-variant-1234", "__1234_VARIANT", NOERROR}, /* ICU-20478 */
- {"und-varzero-var1-vartwo", "__VARZERO", Integer.valueOf(12)},
+ {"und-varzero-var1-vartwo", "__VARZERO", 12},
{"en-u-ca-gregory", "en@calendar=gregorian", NOERROR},
{"en-U-cu-USD", "en@currency=usd", NOERROR},
{"en-us-u-va-posix", "en_US_POSIX", NOERROR},
@@ -4334,8 +4419,8 @@ public class ULocaleTest extends CoreTestFmwk {
{"en-us-u-tz-usnyc", "en_US@timezone=America/New_York", NOERROR},
{"und-a-abc-def", "@a=abc-def", NOERROR},
{"zh-u-ca-chinese-x-u-ca-chinese", "zh@calendar=chinese;x=u-ca-chinese", NOERROR},
- {"fr--FR", "fr", Integer.valueOf(3)},
- {"fr-", "fr", Integer.valueOf(3)},
+ {"fr--FR", "fr", 3},
+ {"fr-", "fr", 3},
{"x-elmer", "@x=elmer", NOERROR},
{"en-US-u-attr1-attr2-ca-gregory", "en_US@attribute=attr1-attr2;calendar=gregorian", NOERROR},
{"sr-u-kn", "sr@colnumeric=yes", NOERROR},
@@ -4343,7 +4428,7 @@ public class ULocaleTest extends CoreTestFmwk {
{"en-u-attr2-attr1-kn-kb", "en@attribute=attr1-attr2;colbackwards=yes;colnumeric=yes", NOERROR},
{"ja-u-ijkl-efgh-abcd-ca-japanese-xx-yyy-zzz-kn", "ja@attribute=abcd-efgh-ijkl;calendar=japanese;colnumeric=yes;xx=yyy-zzz", NOERROR},
{"de-u-xc-xphonebk-co-phonebk-ca-buddhist-mo-very-lo-extensi-xd-that-de-should-vc-probably-xz-killthebuffer",
- "de@calendar=buddhist;collation=phonebook;de=should;lo=extensi;mo=very;vc=probably;xc=xphonebk;xd=that;xz=yes", Integer.valueOf(92)},
+ "de@calendar=buddhist;collation=phonebook;de=should;lo=extensi;mo=very;vc=probably;xc=xphonebk;xd=that;xz=yes", 92},
/* #12761 */
{"en-a-bar-u-baz", "en@a=bar;attribute=baz", NOERROR},
{"en-a-bar-u-baz-x-u-foo", "en@a=bar;attribute=baz;x=u-foo", NOERROR},
@@ -4352,10 +4437,10 @@ public class ULocaleTest extends CoreTestFmwk {
{"en-a-bar-u-ca-islamic-civil-x-u-foo", "en@a=bar;calendar=islamic-civil;x=u-foo", NOERROR},
{"en-a-bar-u-baz-ca-islamic-civil-x-u-foo", "en@a=bar;attribute=baz;calendar=islamic-civil;x=u-foo", NOERROR},
/* #20098 */
- {"hant-cmn-cn", "hant", Integer.valueOf(5)},
+ {"hant-cmn-cn", "hant", 5},
{"zh-cmn-TW", "cmn_TW", NOERROR},
- {"zh-x_t-ab", "zh", Integer.valueOf(3)},
- {"zh-hans-cn-u-ca-x_t-u", "zh_Hans_CN@calendar=yes", Integer.valueOf(16)},
+ {"zh-x_t-ab", "zh", 3},
+ {"zh-hans-cn-u-ca-x_t-u", "zh_Hans_CN@calendar=yes", 16},
/* #20140 dupe keys in U-extension */
{"zh-u-ca-chinese-ca-gregory", "zh@calendar=chinese", NOERROR},
{"zh-u-ca-gregory-co-pinyin-ca-chinese", "zh@calendar=gregorian;collation=pinyin", NOERROR},
@@ -4498,7 +4583,7 @@ public class ULocaleTest extends CoreTestFmwk {
for (int i = 0; i < nExtensions; i++) {
String kstr = testcase[i/2 + 1];
- String ext = loc.getExtension(Character.valueOf(kstr.charAt(0)));
+ String ext = loc.getExtension(kstr.charAt(0));
if (ext == null || !ext.equals(testcase[i/2 + 2])) {
errln("Incorrect extension value: key="
+ kstr + ", returned=" + ext + ", expected=" + testcase[i/2 + 2]
@@ -5394,6 +5479,63 @@ public class ULocaleTest extends CoreTestFmwk {
}
+
+ @Test
+ public void TestVariantLengthWithinLimit() {
+ String valid =
+ "_" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678";
+
+ ULocale locale = new ULocale(valid);
+ Assert.assertEquals(valid.substring(2), locale.getVariant());
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void TestVariantLengthOverLimit() {
+ String invalid =
+ "_" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678" +
+ "_12345678X"; // One character too long.
+ ULocale locale = new ULocale(invalid);
+ }
+
@Test
public void TestLocaleCanonicalizationFromFile() throws IOException {
BufferedReader testFile = TestUtil.getDataReader("cldr/localeIdentifiers/localeCanonicalization.txt");
@@ -5469,6 +5611,103 @@ public class ULocaleTest extends CoreTestFmwk {
return tests;
}
+ // ICU-22742, test addLikelySubtags with pseudo-locales
+ @Test
+ public void TestPseudoLocales() {
+ // input locale tag, expected locale tag
+ String[][] testCases = new String[][] {
+ // language + region, en
+ { "en-XA", "en-Latn-XA" },
+ { "en-XB", "en-Latn-XB" },
+ { "en-XC", "en-Latn-XC" },
+
+ // language + region, ar
+ { "ar-XA", "ar-Arab-XA" },
+ { "ar-XB", "ar-Arab-XB" },
+ { "ar-XC", "ar-Arab-XC" },
+
+ // language + region, something other than en, ar
+ { "ru-XA", "ru-Cyrl-XA" },
+ { "el-XB", "el-Grek-XB" },
+
+ // undefined language - region
+ { "und-XA", "en-Latn-XA" },
+ { "und-XB", "en-Latn-XB" },
+ { "und-XC", "en-Latn-XC" },
+
+ // language + script + region
+ { "und-Latn-XA", "en-Latn-XA" },
+ { "und-Latn-XB", "en-Latn-XB" },
+ { "und-Latn-XC", "en-Latn-XC" },
+ { "und-Arab-XA", "ar-Arab-XA" },
+ { "und-Arab-XB", "ar-Arab-XB" },
+ { "und-Arab-XC", "ar-Arab-XC" },
+ { "und-Cyrl-XA", "ru-Cyrl-XA" },
+ { "und-Grek-XB", "el-Grek-XB" },
+
+ // Make sure the script is not damaged, when correct
+ { "ru-Cyrl-XA", "ru-Cyrl-XA" },
+ { "el-Grek-XB", "el-Grek-XB" },
+
+ // Make sure the script is not damaged, even if it is wrong
+ { "ru-Grek-XA", "ru-Grek-XA" },
+ { "el-Cyrl-XB", "el-Cyrl-XB" },
+
+ // PS Variants
+ { "en-XA-PSACCENT", "en-Latn-XA-psaccent" },
+ { "en-XA-PSBIDI", "en-Latn-XA-psbidi" },
+ { "en-XA-PSCRACK", "en-Latn-XA-pscrack" },
+ { "ar-XB-PSACCENT", "ar-Arab-XB-psaccent" },
+ { "ar-XB-PSBIDI", "ar-Arab-XB-psbidi" },
+ { "ar-XB-PSCRACK", "ar-Arab-XB-pscrack" },
+ { "en-XC-PSACCENT", "en-Latn-XC-psaccent" },
+ { "en-XC-PSBIDI", "en-Latn-XC-psbidi" },
+ { "en-XC-PSCRACK", "en-Latn-XC-pscrack" },
+
+ { "en-US-PSACCENT", "en-Latn-US-psaccent" },
+ { "en-US-PSBIDI", "en-Latn-US-psbidi" },
+ { "en-US-PSCRACK", "en-Latn-US-pscrack" },
+ { "ar-EG-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "ar-EG-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "ar-EG-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "en-PSACCENT", "en-Latn-US-psaccent" },
+ { "en-PSBIDI", "en-Latn-US-psbidi" },
+ { "en-PSCRACK", "en-Latn-US-pscrack" },
+ { "ar-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "ar-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "ar-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "und-US-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-US-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-US-PSCRACK", "en-Latn-US-pscrack" },
+ { "und-EG-PSACCENT", "ar-Arab-EG-psaccent" },
+ { "und-EG-PSBIDI", "ar-Arab-EG-psbidi" },
+ { "und-EG-PSCRACK", "ar-Arab-EG-pscrack" },
+
+ { "und-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-PSCRACK", "en-Latn-US-pscrack" },
+ { "und-PSACCENT", "en-Latn-US-psaccent" },
+ { "und-PSBIDI", "en-Latn-US-psbidi" },
+ { "und-PSCRACK", "en-Latn-US-pscrack" },
+ };
+ String extensions = "-u-nu-Deva-hc-h23-fw-mon-mu-celsius-x-something-more";
+
+ for (String[] testCase : testCases) {
+ String inputTag = testCase[0];
+ String expectedTag = testCase[1];
+ ULocale result = ULocale.addLikelySubtags(ULocale.forLanguageTag(inputTag));
+ ULocale expected = ULocale.forLanguageTag(expectedTag);
+ assertEquals("pseudo-locales(" + inputTag + ")", expected, result);
+
+ // Make sure this also works with extensions. Kind of hacky...
+ result = ULocale.addLikelySubtags(ULocale.forLanguageTag(inputTag + extensions));
+ expected = ULocale.forLanguageTag(expectedTag + extensions);
+ assertEquals("pseudo-locales(" + inputTag + ")", expected, result);
+ }
+ }
+
@Test
@Parameters(method = "readLikelySubtagsTestCases")
public void likelySubtagsDataDriven(TestCase test) {
diff --git a/icu4j/main/core/pom.xml b/icu4j/main/core/pom.xml
index 2167d6842..33f765e6f 100644
--- a/icu4j/main/core/pom.xml
+++ b/icu4j/main/core/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -39,6 +39,12 @@
<version>${junitparams.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>${gson.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/CalendarAstronomer.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/CalendarAstronomer.java
index 1aaaf2b47..a6d98e297 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/CalendarAstronomer.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/CalendarAstronomer.java
@@ -10,7 +10,6 @@
package com.ibm.icu.impl;
import java.util.Date;
-import java.util.TimeZone;
/**
* <code>CalendarAstronomer</code> is a class that can perform the calculations to
@@ -205,15 +204,6 @@ public class CalendarAstronomer {
/**
* Construct a new <code>CalendarAstronomer</code> object that is initialized to
- * the specified date and time.
- * @internal
- */
- public CalendarAstronomer(Date d) {
- this(d.getTime());
- }
-
- /**
- * Construct a new <code>CalendarAstronomer</code> object that is initialized to
* the specified time. The time is expressed as a number of milliseconds since
* January 1, 1970 AD (Gregorian).
*
@@ -224,32 +214,9 @@ public class CalendarAstronomer {
time = aTime;
}
- /**
- * Construct a new <code>CalendarAstronomer</code> object with the given
- * latitude and longitude. The object's time is set to the current
- * date and time.
- * <p>
- * @param longitude The desired longitude, in <em>degrees</em> east of
- * the Greenwich meridian.
- *
- * @param latitude The desired latitude, in <em>degrees</em>. Positive
- * values signify North, negative South.
- *
- * @see java.util.Date#getTime()
- * @internal
- */
- public CalendarAstronomer(double longitude, double latitude) {
- this();
- fLongitude = normPI(longitude * DEG_RAD);
- fLatitude = normPI(latitude * DEG_RAD);
- fGmtOffset = (long)(fLongitude * 24 * HOUR_MS / PI2);
- }
-
-
//-------------------------------------------------------------------------
// Time and date getters and setters
//-------------------------------------------------------------------------
-
/**
* Set the current date and time of this <code>CalendarAstronomer</code> object. All
* astronomical calculations are performed based on this time setting.
@@ -266,19 +233,6 @@ public class CalendarAstronomer {
clearCache();
}
- /**
- * Set the current date and time of this <code>CalendarAstronomer</code> object. All
- * astronomical calculations are performed based on this time setting.
- *
- * @param date the time and date, expressed as a <code>Date</code> object.
- *
- * @see #setTime
- * @see #getDate
- * @internal
- */
- public void setDate(Date date) {
- setTime(date.getTime());
- }
/**
* Set the current date and time of this <code>CalendarAstronomer</code> object. All
@@ -341,77 +295,6 @@ public class CalendarAstronomer {
return julianDay;
}
- /**
- * Return this object's time expressed in julian centuries:
- * the number of centuries after 1/1/1900 AD, 12:00 GMT
- *
- * @see #getJulianDay
- * @internal
- */
- public double getJulianCentury() {
- if (julianCentury == INVALID) {
- julianCentury = (getJulianDay() - 2415020.0) / 36525;
- }
- return julianCentury;
- }
-
- /**
- * Returns the current Greenwich sidereal time, measured in hours
- * @internal
- */
- public double getGreenwichSidereal() {
- if (siderealTime == INVALID) {
- // See page 86 of "Practical Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
-
- double UT = normalize((double)time/HOUR_MS, 24);
-
- siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24);
- }
- return siderealTime;
- }
-
- private double getSiderealOffset() {
- if (siderealT0 == INVALID) {
- double JD = Math.floor(getJulianDay() - 0.5) + 0.5;
- double S = JD - 2451545.0;
- double T = S / 36525.0;
- siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
- }
- return siderealT0;
- }
-
- /**
- * Returns the current local sidereal time, measured in hours
- * @internal
- */
- public double getLocalSidereal() {
- return normalize(getGreenwichSidereal() + (double)fGmtOffset/HOUR_MS, 24);
- }
-
- /**
- * Converts local sidereal time to Universal Time.
- *
- * @param lst The Local Sidereal Time, in hours since sidereal midnight
- * on this object's current date.
- *
- * @return The corresponding Universal Time, in milliseconds since
- * 1 Jan 1970, GMT.
- */
- private long lstToUT(double lst) {
- // Convert to local mean time
- double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
-
- // Then find local midnight on this day
- long base = DAY_MS * ((time + fGmtOffset)/DAY_MS) - fGmtOffset;
-
- //out(" lt =" + lt + " hours");
- //out(" base=" + new Date(base));
-
- return base + (long)(lt * HOUR_MS);
- }
-
-
//-------------------------------------------------------------------------
// Coordinate transformations, all based on the current time of this object
//-------------------------------------------------------------------------
@@ -419,18 +302,6 @@ public class CalendarAstronomer {
/**
* Convert from ecliptic to equatorial coordinates.
*
- * @param ecliptic A point in the sky in ecliptic coordinates.
- * @return The corresponding point in equatorial coordinates.
- * @internal
- */
- public final Equatorial eclipticToEquatorial(Ecliptic ecliptic)
- {
- return eclipticToEquatorial(ecliptic.longitude, ecliptic.latitude);
- }
-
- /**
- * Convert from ecliptic to equatorial coordinates.
- *
* @param eclipLong The ecliptic longitude
* @param eclipLat The ecliptic latitude
*
@@ -457,42 +328,6 @@ public class CalendarAstronomer {
Math.asin(sinB*cosE + cosB*sinE*sinL) );
}
- /**
- * Convert from ecliptic longitude to equatorial coordinates.
- *
- * @param eclipLong The ecliptic longitude
- *
- * @return The corresponding point in equatorial coordinates.
- * @internal
- */
- public final Equatorial eclipticToEquatorial(double eclipLong)
- {
- return eclipticToEquatorial(eclipLong, 0); // TODO: optimize
- }
-
- /**
- * @internal
- */
- public Horizon eclipticToHorizon(double eclipLong)
- {
- Equatorial equatorial = eclipticToEquatorial(eclipLong);
-
- double H = getLocalSidereal()*PI/12 - equatorial.ascension; // Hour-angle
-
- double sinH = Math.sin(H);
- double cosH = Math.cos(H);
- double sinD = Math.sin(equatorial.declination);
- double cosD = Math.cos(equatorial.declination);
- double sinL = Math.sin(fLatitude);
- double cosL = Math.cos(fLatitude);
-
- double altitude = Math.asin(sinD*sinL + cosD*cosL*cosH);
- double azimuth = Math.atan2(-cosD*cosL*sinH, sinD - sinL * Math.sin(altitude));
-
- return new Horizon(azimuth, altitude);
- }
-
-
//-------------------------------------------------------------------------
// The Sun
//-------------------------------------------------------------------------
@@ -606,45 +441,12 @@ public class CalendarAstronomer {
};
}
- /**
- * The position of the sun at this object's current date and time,
- * in equatorial coordinates.
- * @internal
- */
- public Equatorial getSunPosition() {
- return eclipticToEquatorial(getSunLongitude(), 0);
- }
-
private static class SolarLongitude {
double value;
SolarLongitude(double val) { value = val; }
}
/**
- * Constant representing the vernal equinox.
- * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
- * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
- * @internal
- */
- public static final SolarLongitude VERNAL_EQUINOX = new SolarLongitude(0);
-
- /**
- * Constant representing the summer solstice.
- * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
- * Note: In this case, "summer" refers to the northern hemisphere's seasons.
- * @internal
- */
- public static final SolarLongitude SUMMER_SOLSTICE = new SolarLongitude(PI/2);
-
- /**
- * Constant representing the autumnal equinox.
- * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
- * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
- * @internal
- */
- public static final SolarLongitude AUTUMN_EQUINOX = new SolarLongitude(PI);
-
- /**
* Constant representing the winter solstice.
* For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
* Note: In this case, "winter" refers to the northern hemisphere's seasons.
@@ -676,312 +478,6 @@ public class CalendarAstronomer {
return getSunTime(desired.value, next);
}
- /**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- *
- * NOTE: This method only works well if this object is set to a
- * time near local noon. Because of variations between the local
- * official time zone and the geographic longitude, the
- * computation can flop over into an adjacent day if this object
- * is set to a time near local midnight.
- *
- * @internal
- */
- public long getSunRiseSet(boolean rise) {
- long t0 = time;
-
- // Make a rough guess: 6am or 6pm local time on the current day
- long noon = ((time + fGmtOffset)/DAY_MS)*DAY_MS - fGmtOffset + 12*HOUR_MS;
-
- setTime(noon + (rise ? -6L : 6L) * HOUR_MS);
-
- long t = riseOrSet(new CoordFunc() {
- @Override
- public Equatorial eval() { return getSunPosition(); }
- },
- rise,
- .533 * DEG_RAD, // Angular Diameter
- 34 /60.0 * DEG_RAD, // Refraction correction
- MINUTE_MS / 12); // Desired accuracy
-
- setTime(t0);
- return t;
- }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// //-------------------------------------------------------------------------
-// // Alternate Sun Rise/Set
-// // See Duffett-Smith p.93
-// //-------------------------------------------------------------------------
-//
-// // This yields worse results (as compared to USNO data) than getSunRiseSet().
-// /**
-// * TODO Make this public when the entire class is package-private.
-// */
-// /*public*/ long getSunRiseSet2(boolean rise) {
-// // 1. Calculate coordinates of the sun's center for midnight
-// double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
-// double[] sl = getSunLongitude(jd);
-// double lambda1 = sl[0];
-// Equatorial pos1 = eclipticToEquatorial(lambda1, 0);
-//
-// // 2. Add ... to lambda to get position 24 hours later
-// double lambda2 = lambda1 + 0.985647*DEG_RAD;
-// Equatorial pos2 = eclipticToEquatorial(lambda2, 0);
-//
-// // 3. Calculate LSTs of rising and setting for these two positions
-// double tanL = Math.tan(fLatitude);
-// double H = Math.acos(-tanL * Math.tan(pos1.declination));
-// double lst1r = (PI2 + pos1.ascension - H) * 24 / PI2;
-// double lst1s = (pos1.ascension + H) * 24 / PI2;
-// H = Math.acos(-tanL * Math.tan(pos2.declination));
-// double lst2r = (PI2-H + pos2.ascension ) * 24 / PI2;
-// double lst2s = (H + pos2.ascension ) * 24 / PI2;
-// if (lst1r > 24) lst1r -= 24;
-// if (lst1s > 24) lst1s -= 24;
-// if (lst2r > 24) lst2r -= 24;
-// if (lst2s > 24) lst2s -= 24;
-//
-// // 4. Convert LSTs to GSTs. If GST1 > GST2, add 24 to GST2.
-// double gst1r = lstToGst(lst1r);
-// double gst1s = lstToGst(lst1s);
-// double gst2r = lstToGst(lst2r);
-// double gst2s = lstToGst(lst2s);
-// if (gst1r > gst2r) gst2r += 24;
-// if (gst1s > gst2s) gst2s += 24;
-//
-// // 5. Calculate GST at 0h UT of this date
-// double t00 = utToGst(0);
-//
-// // 6. Calculate GST at 0h on the observer's longitude
-// double offset = Math.round(fLongitude*12/PI); // p.95 step 6; he _rounds_ to nearest 15 deg.
-// double t00p = t00 - offset*1.002737909;
-// if (t00p < 0) t00p += 24; // do NOT normalize
-//
-// // 7. Adjust
-// if (gst1r < t00p) {
-// gst1r += 24;
-// gst2r += 24;
-// }
-// if (gst1s < t00p) {
-// gst1s += 24;
-// gst2s += 24;
-// }
-//
-// // 8.
-// double gstr = (24.07*gst1r-t00*(gst2r-gst1r))/(24.07+gst1r-gst2r);
-// double gsts = (24.07*gst1s-t00*(gst2s-gst1s))/(24.07+gst1s-gst2s);
-//
-// // 9. Correct for parallax, refraction, and sun's diameter
-// double dec = (pos1.declination + pos2.declination) / 2;
-// double psi = Math.acos(Math.sin(fLatitude) / Math.cos(dec));
-// double x = 0.830725 * DEG_RAD; // parallax+refraction+diameter
-// double y = Math.asin(Math.sin(x) / Math.sin(psi)) * RAD_DEG;
-// double delta_t = 240 * y / Math.cos(dec) / 3600; // hours
-//
-// // 10. Add correction to GSTs, subtract from GSTr
-// gstr -= delta_t;
-// gsts += delta_t;
-//
-// // 11. Convert GST to UT and then to local civil time
-// double ut = gstToUt(rise ? gstr : gsts);
-// //System.out.println((rise?"rise=":"set=") + ut + ", delta_t=" + delta_t);
-// long midnight = DAY_MS * (time / DAY_MS); // Find UT midnight on this day
-// return midnight + (long) (ut * 3600000);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert local sidereal time to Greenwich sidereal time.
-// * Section 15. Duffett-Smith p.21
-// * @param lst in hours (0..24)
-// * @return GST in hours (0..24)
-// */
-// double lstToGst(double lst) {
-// double delta = fLongitude * 24 / PI2;
-// return normalize(lst - delta, 24);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert UT to GST on this date.
-// * Section 12. Duffett-Smith p.17
-// * @param ut in hours
-// * @return GST in hours
-// */
-// double utToGst(double ut) {
-// return normalize(getT0() + ut*1.002737909, 24);
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// /**
-// * Convert GST to UT on this date.
-// * Section 13. Duffett-Smith p.18
-// * @param gst in hours
-// * @return UT in hours
-// */
-// double gstToUt(double gst) {
-// return normalize(gst - getT0(), 24) * 0.9972695663;
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// double getT0() {
-// // Common computation for UT <=> GST
-//
-// // Find JD for 0h UT
-// double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
-//
-// double s = jd - 2451545.0;
-// double t = s / 36525.0;
-// double t0 = 6.697374558 + (2400.051336 + 0.000025862*t)*t;
-// return t0;
-// }
-
-// Commented out - currently unused. ICU 2.6, Alan
-// //-------------------------------------------------------------------------
-// // Alternate Sun Rise/Set
-// // See sci.astro FAQ
-// // http://www.faqs.org/faqs/astronomy/faq/part3/section-5.html
-// //-------------------------------------------------------------------------
-//
-// // Note: This method appears to produce inferior accuracy as
-// // compared to getSunRiseSet().
-//
-// /**
-// * TODO Make this public when the entire class is package-private.
-// */
-// /*public*/ long getSunRiseSet3(boolean rise) {
-//
-// // Compute day number for 0.0 Jan 2000 epoch
-// double d = (double)(time - EPOCH_2000_MS) / DAY_MS;
-//
-// // Now compute the Local Sidereal Time, LST:
-// //
-// double LST = 98.9818 + 0.985647352 * d + /*UT*15 + long*/
-// fLongitude*RAD_DEG;
-// //
-// // (east long. positive). Note that LST is here expressed in degrees,
-// // where 15 degrees corresponds to one hour. Since LST really is an angle,
-// // it's convenient to use one unit---degrees---throughout.
-//
-// // COMPUTING THE SUN'S POSITION
-// // ----------------------------
-// //
-// // To be able to compute the Sun's rise/set times, you need to be able to
-// // compute the Sun's position at any time. First compute the "day
-// // number" d as outlined above, for the desired moment. Next compute:
-// //
-// double oblecl = 23.4393 - 3.563E-7 * d;
-// //
-// double w = 282.9404 + 4.70935E-5 * d;
-// double M = 356.0470 + 0.9856002585 * d;
-// double e = 0.016709 - 1.151E-9 * d;
-// //
-// // This is the obliquity of the ecliptic, plus some of the elements of
-// // the Sun's apparent orbit (i.e., really the Earth's orbit): w =
-// // argument of perihelion, M = mean anomaly, e = eccentricity.
-// // Semi-major axis is here assumed to be exactly 1.0 (while not strictly
-// // true, this is still an accurate approximation). Next compute E, the
-// // eccentric anomaly:
-// //
-// double E = M + e*(180/PI) * Math.sin(M*DEG_RAD) * ( 1.0 + e*Math.cos(M*DEG_RAD) );
-// //
-// // where E and M are in degrees. This is it---no further iterations are
-// // needed because we know e has a sufficiently small value. Next compute
-// // the true anomaly, v, and the distance, r:
-// //
-// /* r * cos(v) = */ double A = Math.cos(E*DEG_RAD) - e;
-// /* r * sin(v) = */ double B = Math.sqrt(1 - e*e) * Math.sin(E*DEG_RAD);
-// //
-// // and
-// //
-// // r = sqrt( A*A + B*B )
-// double v = Math.atan2( B, A )*RAD_DEG;
-// //
-// // The Sun's true longitude, slon, can now be computed:
-// //
-// double slon = v + w;
-// //
-// // Since the Sun is always at the ecliptic (or at least very very close to
-// // it), we can use simplified formulae to convert slon (the Sun's ecliptic
-// // longitude) to sRA and sDec (the Sun's RA and Dec):
-// //
-// // sin(slon) * cos(oblecl)
-// // tan(sRA) = -------------------------
-// // cos(slon)
-// //
-// // sin(sDec) = sin(oblecl) * sin(slon)
-// //
-// // As was the case when computing az, the Azimuth, if possible use an
-// // atan2() function to compute sRA.
-//
-// double sRA = Math.atan2(Math.sin(slon*DEG_RAD) * Math.cos(oblecl*DEG_RAD), Math.cos(slon*DEG_RAD))*RAD_DEG;
-//
-// double sin_sDec = Math.sin(oblecl*DEG_RAD) * Math.sin(slon*DEG_RAD);
-// double sDec = Math.asin(sin_sDec)*RAD_DEG;
-//
-// // COMPUTING RISE AND SET TIMES
-// // ----------------------------
-// //
-// // To compute when an object rises or sets, you must compute when it
-// // passes the meridian and the HA of rise/set. Then the rise time is
-// // the meridian time minus HA for rise/set, and the set time is the
-// // meridian time plus the HA for rise/set.
-// //
-// // To find the meridian time, compute the Local Sidereal Time at 0h local
-// // time (or 0h UT if you prefer to work in UT) as outlined above---name
-// // that quantity LST0. The Meridian Time, MT, will now be:
-// //
-// // MT = RA - LST0
-// double MT = normalize(sRA - LST, 360);
-// //
-// // where "RA" is the object's Right Ascension (in degrees!). If negative,
-// // add 360 deg to MT. If the object is the Sun, leave the time as it is,
-// // but if it's stellar, multiply MT by 365.2422/366.2422, to convert from
-// // sidereal to solar time. Now, compute HA for rise/set, name that
-// // quantity HA0:
-// //
-// // sin(h0) - sin(lat) * sin(Dec)
-// // cos(HA0) = ---------------------------------
-// // cos(lat) * cos(Dec)
-// //
-// // where h0 is the altitude selected to represent rise/set. For a purely
-// // mathematical horizon, set h0 = 0 and simplify to:
-// //
-// // cos(HA0) = - tan(lat) * tan(Dec)
-// //
-// // If you want to account for refraction on the atmosphere, set h0 = -35/60
-// // degrees (-35 arc minutes), and if you want to compute the rise/set times
-// // for the Sun's upper limb, set h0 = -50/60 (-50 arc minutes).
-// //
-// double h0 = -50/60 * DEG_RAD;
-//
-// double HA0 = Math.acos(
-// (Math.sin(h0) - Math.sin(fLatitude) * sin_sDec) /
-// (Math.cos(fLatitude) * Math.cos(sDec*DEG_RAD)))*RAD_DEG;
-//
-// // When HA0 has been computed, leave it as it is for the Sun but multiply
-// // by 365.2422/366.2422 for stellar objects, to convert from sidereal to
-// // solar time. Finally compute:
-// //
-// // Rise time = MT - HA0
-// // Set time = MT + HA0
-// //
-// // convert the times from degrees to hours by dividing by 15.
-// //
-// // If you'd like to check that your calculations are accurate or just
-// // need a quick result, check the USNO's Sun or Moon Rise/Set Table,
-// // <URL:http://aa.usno.navy.mil/AA/data/docs/RS_OneYear.html>.
-//
-// double result = MT + (rise ? -HA0 : HA0); // in degrees
-//
-// // Find UT midnight on this day
-// long midnight = DAY_MS * (time / DAY_MS);
-//
-// return midnight + (long) (result * 3600000 / 15);
-// }
-
//-------------------------------------------------------------------------
// The Moon
//-------------------------------------------------------------------------
@@ -1048,7 +544,7 @@ public class CalendarAstronomer {
double a4 = 0.2140*PI/180 * Math.sin(2 * meanAnomalyMoon);
// Now find the moon's corrected longitude
- moonLongitude = meanLongitude + evection + center - annual + a4;
+ double moonLongitude = meanLongitude + evection + center - annual + a4;
//
// And finally, find the variation, caused by the fact that the sun's
@@ -1102,26 +598,6 @@ public class CalendarAstronomer {
return norm2PI(moonEclipLong - sunLongitude);
}
- /**
- * Calculate the phase of the moon at the time set in this object.
- * The returned phase is a <code>double</code> in the range
- * <code>0 <= phase < 1</code>, interpreted as follows:
- * <ul>
- * <li>0.00: New moon
- * <li>0.25: First quarter
- * <li>0.50: Full moon
- * <li>0.75: Last quarter
- * </ul>
- *
- * @see #getMoonAge
- * @internal
- */
- public double getMoonPhase() {
- // See page 147 of "Practical Astronomy with your Calculator",
- // by Peter Duffet-Smith, for details on the algorithm.
- return 0.5 * (1 - Math.cos(getMoonAge()));
- }
-
private static class MoonAge {
double value;
MoonAge(double val) { value = val; }
@@ -1135,27 +611,6 @@ public class CalendarAstronomer {
public static final MoonAge NEW_MOON = new MoonAge(0);
/**
- * Constant representing the moon's first quarter.
- * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
- * @internal
- */
- public static final MoonAge FIRST_QUARTER = new MoonAge(PI/2);
-
- /**
- * Constant representing a full moon.
- * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
- * @internal
- */
- public static final MoonAge FULL_MOON = new MoonAge(PI);
-
- /**
- * Constant representing the moon's last quarter.
- * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
- * @internal
- */
- public static final MoonAge LAST_QUARTER = new MoonAge((PI*3)/2);
-
- /**
* Find the next or previous time at which the Moon's ecliptic
* longitude will have the desired value.
* <p>
@@ -1188,23 +643,6 @@ public class CalendarAstronomer {
return getMoonTime(desired.value, next);
}
- /**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- * @internal
- */
- public long getMoonRiseSet(boolean rise)
- {
- return riseOrSet(new CoordFunc() {
- @Override
- public Equatorial eval() { return getMoonPosition(); }
- },
- rise,
- .533 * DEG_RAD, // Angular Diameter
- 34 /60.0 * DEG_RAD, // Refraction correction
- MINUTE_MS); // Desired accuracy
- }
-
//-------------------------------------------------------------------------
// Interpolation methods for finding the time at which a given event occurs
//-------------------------------------------------------------------------
@@ -1281,48 +719,6 @@ public class CalendarAstronomer {
return time;
}
- private interface CoordFunc {
- public Equatorial eval();
- }
-
- private long riseOrSet(CoordFunc func, boolean rise,
- double diameter, double refraction,
- long epsilon)
- {
- Equatorial pos = null;
- double tanL = Math.tan(fLatitude);
- long deltaT = Long.MAX_VALUE;
- int count = 0;
-
- //
- // Calculate the object's position at the current time, then use that
- // position to calculate the time of rising or setting. The position
- // will be different at that time, so iterate until the error is allowable.
- //
- do {
- // See "Practical Astronomy With Your Calculator, section 33.
- pos = func.eval();
- double angle = Math.acos(-tanL * Math.tan(pos.declination));
- double lst = ((rise ? PI2-angle : angle) + pos.ascension ) * 24 / PI2;
-
- // Convert from LST to Universal Time.
- long newTime = lstToUT( lst );
-
- deltaT = newTime - time;
- setTime(newTime);
- }
- while (++ count < 5 && Math.abs(deltaT) > epsilon);
-
- // Calculate the correction due to refraction and the object's angular diameter
- double cosD = Math.cos(pos.declination);
- double psi = Math.acos(Math.sin(fLatitude) / cosD);
- double x = diameter / 2 + refraction;
- double y = Math.asin(Math.sin(x) / Math.sin(psi));
- long delta = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
-
- return time + (rise ? -delta : delta);
- }
-
//-------------------------------------------------------------------------
// Other utility methods
//-------------------------------------------------------------------------
@@ -1389,19 +785,16 @@ public class CalendarAstronomer {
* measured in radians.
*/
private double eclipticObliquity() {
- if (eclipObliquity == INVALID) {
- final double epoch = 2451545.0; // 2000 AD, January 1.5
+ final double epoch = 2451545.0; // 2000 AD, January 1.5
- double T = (getJulianDay() - epoch) / 36525;
+ double T = (getJulianDay() - epoch) / 36525;
- eclipObliquity = 23.439292
+ double eclipObliquity = 23.439292
- 46.815/3600 * T
- 0.0006/3600 * T*T
+ 0.00181/3600 * T*T*T;
- eclipObliquity *= DEG_RAD;
- }
- return eclipObliquity;
+ return eclipObliquity * DEG_RAD;
}
@@ -1415,13 +808,6 @@ public class CalendarAstronomer {
*/
private long time;
- /* These aren't used yet, but they'll be needed for sunset calculations
- * and equatorial to horizon coordinate conversions
- */
- private double fLongitude = 0.0;
- private double fLatitude = 0.0;
- private long fGmtOffset = 0;
-
//
// The following fields are used to cache calculated results for improved
// performance. These values all depend on the current time setting
@@ -1430,52 +816,20 @@ public class CalendarAstronomer {
static final private double INVALID = Double.MIN_VALUE;
private transient double julianDay = INVALID;
- private transient double julianCentury = INVALID;
private transient double sunLongitude = INVALID;
private transient double meanAnomalySun = INVALID;
- private transient double moonLongitude = INVALID;
private transient double moonEclipLong = INVALID;
- //private transient double meanAnomalyMoon = INVALID;
- private transient double eclipObliquity = INVALID;
- private transient double siderealT0 = INVALID;
- private transient double siderealTime = INVALID;
private transient Equatorial moonPosition = null;
private void clearCache() {
julianDay = INVALID;
- julianCentury = INVALID;
sunLongitude = INVALID;
meanAnomalySun = INVALID;
- moonLongitude = INVALID;
moonEclipLong = INVALID;
- //meanAnomalyMoon = INVALID;
- eclipObliquity = INVALID;
- siderealTime = INVALID;
- siderealT0 = INVALID;
moonPosition = null;
}
- //private static void out(String s) {
- // System.out.println(s);
- //}
-
- //private static String deg(double rad) {
- // return Double.toString(rad * RAD_DEG);
- //}
-
- //private static String hours(long ms) {
- // return Double.toString((double)ms / HOUR_MS) + " hours";
- //}
-
- /**
- * @internal
- */
- public String local(long localMillis) {
- return new Date(localMillis - TimeZone.getDefault().getRawOffset()).toString();
- }
-
-
/**
* Represents the position of an object in the sky relative to the ecliptic,
* the plane of the earth's orbit around the Sun.
@@ -1490,7 +844,6 @@ public class CalendarAstronomer {
* value without worrying about whether other code will modify them.
*
* @see CalendarAstronomer.Equatorial
- * @see CalendarAstronomer.Horizon
* @internal
*/
public static final class Ecliptic {
@@ -1550,7 +903,6 @@ public class CalendarAstronomer {
* value without worrying about whether other code will modify them.
*
* @see CalendarAstronomer.Ecliptic
- * @see CalendarAstronomer.Horizon
* @internal
*/
public static final class Equatorial {
@@ -1603,59 +955,6 @@ public class CalendarAstronomer {
public final double declination;
}
- /**
- * Represents the position of an object in the sky relative to
- * the local horizon.
- * The <i>Altitude</i> represents the object's elevation above the horizon,
- * with objects below the horizon having a negative altitude.
- * The <i>Azimuth</i> is the geographic direction of the object from the
- * observer's position, with 0 representing north. The azimuth increases
- * clockwise from north.
- * <p>
- * Note that Horizon objects are immutable and cannot be modified
- * once they are constructed. This allows them to be passed and returned by
- * value without worrying about whether other code will modify them.
- *
- * @see CalendarAstronomer.Ecliptic
- * @see CalendarAstronomer.Equatorial
- * @internal
- */
- public static final class Horizon {
- /**
- * Constructs a Horizon coordinate object.
- * <p>
- * @param alt The altitude, measured in radians above the horizon.
- * @param azim The azimuth, measured in radians clockwise from north.
- * @internal
- */
- public Horizon(double alt, double azim) {
- altitude = alt;
- azimuth = azim;
- }
-
- /**
- * Return a string representation of this object, with the
- * angles measured in degrees.
- * @internal
- */
- @Override
- public String toString() {
- return Double.toString(altitude*RAD_DEG) + "," + (azimuth*RAD_DEG);
- }
-
- /**
- * The object's altitude above the horizon, in radians.
- * @internal
- */
- public final double altitude;
-
- /**
- * The object's direction, in radians clockwise from north.
- * @internal
- */
- public final double azimuth;
- }
-
static private String radToHms(double angle) {
int hrs = (int) (angle*RAD_HOUR);
int min = (int)((angle*RAD_HOUR - hrs) * 60);
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/DateNumberFormat.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/DateNumberFormat.java
index b20080a17..0e913f3df 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/DateNumberFormat.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/DateNumberFormat.java
@@ -243,7 +243,7 @@ public final class DateNumberFormat extends NumberFormat {
Number result = null;
if (sawNumber) {
num = negative ? num * (-1) : num;
- result = Long.valueOf(num);
+ result = num;
parsePosition.setIndex(base + offset);
}
return result;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUResourceBundle.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUResourceBundle.java
index 58c8c6c00..3263b8446 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUResourceBundle.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUResourceBundle.java
@@ -270,7 +270,7 @@ public class ICUResourceBundle extends UResourceBundle {
}
}
} catch (Throwable t) {
- //System.err.println("Error in - " + new Integer(i).toString()
+ //System.err.println("Error in - " + i
// + " - " + t.toString());
// ignore the err - just skip that resource
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUService.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUService.java
index 4b6d92988..1eb1a0767 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUService.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUService.java
@@ -592,6 +592,8 @@ public class ICUService extends ICUNotifier {
Factory f = lIter.previous();
f.updateVisibleIDs(mutableMap);
}
+ // Capture the return value in a local variable.
+ // Avoids returning an idcache value changed by another thread (could be null after clearCaches()).
Map<String, Factory> result = Collections.unmodifiableMap(mutableMap);
this.idcache = result;
return result;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleFallbackData.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleFallbackData.java
index f574e1464..5b3d9f4c5 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleFallbackData.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleFallbackData.java
@@ -50,7 +50,6 @@ class LocaleFallbackData {
t.put("ain", "Kana");
t.put("aio", "Mymr");
t.put("aiq", "Arab");
- t.put("ajp", "Arab");
t.put("akk", "Xsux");
t.put("akv", "Cyrl");
t.put("alk", "Laoo");
@@ -388,7 +387,6 @@ class LocaleFallbackData {
t.put("jdt", "Cyrl");
t.put("jee", "Deva");
t.put("jge", "Geor");
- t.put("ji", "Hebr");
t.put("jje", "Hang");
t.put("jkm", "Mymr");
t.put("jml", "Deva");
@@ -487,6 +485,7 @@ class LocaleFallbackData {
t.put("ktb", "Ethi");
t.put("ktl", "Arab");
t.put("ktp", "Plrd");
+ t.put("ku_IR", "Arab");
t.put("ku_LB", "Arab");
t.put("kuf", "Laoo");
t.put("kum", "Cyrl");
@@ -709,7 +708,6 @@ class LocaleFallbackData {
t.put("pra", "Khar");
t.put("prc", "Arab");
t.put("prd", "Arab");
- t.put("prp", "Gujr");
t.put("prt", "Thai");
t.put("prx", "Arab");
t.put("ps", "Arab");
@@ -795,7 +793,6 @@ class LocaleFallbackData {
t.put("skb", "Thai");
t.put("skj", "Deva");
t.put("skr", "Arab");
- t.put("slq", "Arab");
t.put("smh", "Yiii");
t.put("smp", "Samr");
t.put("smu", "Khmr");
@@ -866,7 +863,6 @@ class LocaleFallbackData {
t.put("tkb", "Deva");
t.put("tks", "Arab");
t.put("tkt", "Deva");
- t.put("tmk", "Deva");
t.put("tmr", "Syrc");
t.put("tnv", "Cakm");
t.put("tov", "Arab");
@@ -961,7 +957,6 @@ class LocaleFallbackData {
t.put("xrn", "Cyrl");
t.put("xsa", "Sarb");
t.put("xsr", "Deva");
- t.put("xss", "Cyrl");
t.put("xub", "Taml");
t.put("xuj", "Taml");
t.put("xve", "Ital");
@@ -1027,7 +1022,6 @@ class LocaleFallbackData {
t.put("zh_VN", "Hant");
t.put("zhd", "Hani");
t.put("zhx", "Nshu");
- t.put("zkb", "Cyrl");
t.put("zko", "Cyrl");
t.put("zkt", "Kits");
t.put("zkz", "Cyrl");
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleIDParser.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleIDParser.java
index e97ccc7b3..c62961abf 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleIDParser.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleIDParser.java
@@ -365,6 +365,15 @@ public final class LocaleIDParser {
}
}
+ // There are no strict limitation of the syntax of variant in the legacy
+ // locale format. If the locale is constructed from unicode_locale_id
+ // as defined in UTS35, then we know each unicode_variant_subtag
+ // could have max length of 8 ((alphanum{5,8} | digit alphanum{3})
+ // 179 would allow 20 unicode_variant_subtag with sep in the
+ // unicode_locale_id
+ // 8*20 + 1*(20-1) = 179
+ private static final int MAX_VARIANTS_LENGTH = 179;
+
/**
* Advance index past variant, and accumulate normalized variant in buffer. This ignores
* the codepage information from POSIX ids. Index must be immediately after the country
@@ -432,10 +441,12 @@ public final class LocaleIDParser {
c = UNDERSCORE;
}
append(c);
+ if (buffer.length() - oldBlen > MAX_VARIANTS_LENGTH) {
+ throw new IllegalArgumentException("variants is too long");
+ }
}
}
--index; // unget
-
return oldBlen;
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/PropsVectors.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/PropsVectors.java
index 5d19ece3e..3565e42aa 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/PropsVectors.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/PropsVectors.java
@@ -378,7 +378,7 @@ public class PropsVectors {
// sort the properties vectors to find unique vector values
Integer[] indexArray = new Integer[rows];
for (int i = 0; i < rows; ++i) {
- indexArray[i] = Integer.valueOf(columns * i);
+ indexArray[i] = columns * i;
}
Arrays.sort(indexArray, new Comparator<Integer>() {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java
index aaf1b4d58..073dd4857 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java
@@ -11,11 +11,14 @@ package com.ibm.icu.impl;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.util.EnumSet;
import java.util.Iterator;
import java.util.MissingResourceException;
import com.ibm.icu.lang.UCharacter;
import com.ibm.icu.lang.UCharacter.HangulSyllableType;
+import com.ibm.icu.lang.UCharacter.IdentifierStatus;
+import com.ibm.icu.lang.UCharacter.IdentifierType;
import com.ibm.icu.lang.UCharacter.NumericType;
import com.ibm.icu.lang.UCharacterCategory;
import com.ibm.icu.lang.UProperty;
@@ -864,6 +867,18 @@ public final class UCharacterProperty
return LayoutProps.INSTANCE.maxVoValue;
}
},
+ new IntProperty(SRC_PROPSVEC) { // IDENTIFIER_STATUS
+ @Override
+ int getValue(int c) {
+ int value = getAdditional(c, 2) >>> ID_TYPE_SHIFT;
+ return value >= ID_TYPE_ALLOWED_MIN ?
+ IdentifierStatus.ALLOWED.ordinal() : IdentifierStatus.RESTRICTED.ordinal();
+ }
+ @Override
+ int getMaxValue(int which) {
+ return IdentifierStatus.ALLOWED.ordinal();
+ }
+ },
};
public int getIntPropertyValue(int c, int which) {
@@ -937,6 +952,7 @@ public final class UCharacterProperty
} else {
switch(which) {
case UProperty.SCRIPT_EXTENSIONS:
+ case UProperty.IDENTIFIER_TYPE:
return SRC_PROPSVEC;
default:
return SRC_NONE; /* undefined */
@@ -1444,20 +1460,73 @@ public final class UCharacterProperty
/*
* Properties in vector word 2
* Bits
- * 31..26 unused since ICU 70 added uemoji.icu;
- * in ICU 57..69 stored emoji properties
+ * 31..26 ICU 75: Identifier_Type bit set
+ * ICU 70..74: unused
+ * ICU 57..69: emoji properties; moved to uemoji.icu in ICU 70
* 25..20 Line Break
* 19..15 Sentence Break
* 14..10 Word Break
* 9.. 5 Grapheme Cluster Break
* 4.. 0 Decomposition Type
*/
- //ivate static final int PROPS_2_EXTENDED_PICTOGRAPHIC=26; // ICU 62..69
- //ivate static final int PROPS_2_EMOJI_COMPONENT = 27; // ICU 60..69
- //ivate static final int PROPS_2_EMOJI = 28; // ICU 57..69
- //ivate static final int PROPS_2_EMOJI_PRESENTATION = 29; // ICU 57..69
- //ivate static final int PROPS_2_EMOJI_MODIFIER = 30; // ICU 57..69
- //ivate static final int PROPS_2_EMOJI_MODIFIER_BASE = 31; // ICU 57..69
+
+ // https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type
+ // The Identifier_Type maps each code point to a *set* of one or more values.
+ // Some can be combined with others, some can only occur alone.
+ // Exclusion & Limited_Use are combinable bits, but cannot occur together.
+ // We use this forbidden combination for enumerated values.
+ // We use 6 bits for all possible combinations.
+ // If more combinable values are added, then we need to use more bits.
+ //
+ // We do not store separate data for Identifier_Status:
+ // We can derive that from the encoded Identifier_Type via a simple range check.
+
+ // vate static final int ID_TYPE_MASK = 0xfc000000;
+ private static final int ID_TYPE_SHIFT = 26;
+
+ // A high bit for use in idTypeToEncoded[] but not used in the data
+ private static final int ID_TYPE_BIT = 0x80;
+
+ // Combinable bits
+ private static final int ID_TYPE_EXCLUSION = 0x20;
+ private static final int ID_TYPE_LIMITED_USE = 0x10;
+ private static final int ID_TYPE_UNCOMMON_USE = 8;
+ private static final int ID_TYPE_TECHNICAL = 4;
+ private static final int ID_TYPE_OBSOLETE = 2;
+ private static final int ID_TYPE_NOT_XID = 1;
+
+ // Exclusive values
+ private static final int ID_TYPE_NOT_CHARACTER = 0;
+
+ // Forbidden bit combination used for enumerating other exclusive values
+ private static final int ID_TYPE_FORBIDDEN = ID_TYPE_EXCLUSION | ID_TYPE_LIMITED_USE; // 0x30
+ private static final int ID_TYPE_DEPRECATED = ID_TYPE_FORBIDDEN; // 0x30
+ private static final int ID_TYPE_DEFAULT_IGNORABLE = ID_TYPE_FORBIDDEN + 1; // 0x31
+ private static final int ID_TYPE_NOT_NFKC = ID_TYPE_FORBIDDEN + 2; // 0x32
+
+ private static final int ID_TYPE_ALLOWED_MIN = ID_TYPE_FORBIDDEN + 0xc; // 0x3c
+ private static final int ID_TYPE_INCLUSION = ID_TYPE_FORBIDDEN + 0xe; // 0x3e
+ private static final int ID_TYPE_RECOMMENDED = ID_TYPE_FORBIDDEN + 0xf; // 0x3f
+
+ /**
+ * Maps UIdentifierType to encoded bits.
+ * When UPROPS_ID_TYPE_BIT is set, then use "&" to test whether the value bit is set.
+ * When UPROPS_ID_TYPE_BIT is not set, then compare ("==") the array value with the data value.
+ */
+ private static final int[] idTypeToEncoded = {
+ ID_TYPE_NOT_CHARACTER,
+ ID_TYPE_DEPRECATED,
+ ID_TYPE_DEFAULT_IGNORABLE,
+ ID_TYPE_NOT_NFKC,
+ ID_TYPE_BIT | ID_TYPE_NOT_XID,
+ ID_TYPE_BIT | ID_TYPE_EXCLUSION,
+ ID_TYPE_BIT | ID_TYPE_OBSOLETE,
+ ID_TYPE_BIT | ID_TYPE_TECHNICAL,
+ ID_TYPE_BIT | ID_TYPE_UNCOMMON_USE,
+ ID_TYPE_BIT | ID_TYPE_LIMITED_USE,
+ ID_TYPE_INCLUSION,
+ ID_TYPE_RECOMMENDED
+ };
private static final int LB_MASK = 0x03f00000;
private static final int LB_SHIFT = 20;
@@ -1564,7 +1633,7 @@ public final class UCharacterProperty
private static final class IsAcceptable implements ICUBinary.Authenticate {
@Override
public boolean isDataVersionAcceptable(byte version[]) {
- return version[0] == 7;
+ return version[0] == 8;
}
}
private static final int DATA_FORMAT = 0x5550726F; // "UPro"
@@ -1735,6 +1804,61 @@ public final class UCharacterProperty
}
}
+ public boolean hasIDType(int c, int typeIndex) {
+ if (typeIndex < 0 || typeIndex >= idTypeToEncoded.length) {
+ return false;
+ }
+ int encodedType = idTypeToEncoded[typeIndex];
+ int value = getAdditional(c, 2) >>> ID_TYPE_SHIFT;
+ if ((encodedType & ID_TYPE_BIT) != 0) {
+ return value < ID_TYPE_FORBIDDEN && (value & encodedType) != 0;
+ } else {
+ return value == encodedType;
+ }
+ }
+
+ public boolean hasIDType(int c, IdentifierType type) {
+ return hasIDType(c, type.ordinal());
+ }
+
+ private static void maybeAddType(int value, int bit, IdentifierType t,
+ EnumSet<IdentifierType> types) {
+ if ((value & bit) != 0) {
+ types.add(t);
+ }
+ }
+
+ public int getIDTypes(int c, EnumSet<IdentifierType> types) {
+ types.clear();
+ int value = getAdditional(c, 2) >>> ID_TYPE_SHIFT;;
+ if ((value & ID_TYPE_FORBIDDEN) == ID_TYPE_FORBIDDEN || value == ID_TYPE_NOT_CHARACTER) {
+ // single value
+ IdentifierType t;
+ switch (value) {
+ case ID_TYPE_NOT_CHARACTER: t = IdentifierType.NOT_CHARACTER; break;
+ case ID_TYPE_DEPRECATED: t = IdentifierType.DEPRECATED; break;
+ case ID_TYPE_DEFAULT_IGNORABLE: t = IdentifierType.DEFAULT_IGNORABLE; break;
+ case ID_TYPE_NOT_NFKC: t = IdentifierType.NOT_NFKC; break;
+ case ID_TYPE_INCLUSION: t = IdentifierType.INCLUSION; break;
+ case ID_TYPE_RECOMMENDED: t = IdentifierType.RECOMMENDED; break;
+ default:
+ throw new IllegalStateException(
+ String.format("unknown IdentifierType data value 0x%02x", value));
+ }
+ types.add(t);
+ return 1;
+ } else {
+ // one or more combinable bits
+ maybeAddType(value, ID_TYPE_NOT_XID, IdentifierType.NOT_XID, types);
+ maybeAddType(value, ID_TYPE_EXCLUSION, IdentifierType.EXCLUSION, types);
+ maybeAddType(value, ID_TYPE_OBSOLETE, IdentifierType.OBSOLETE, types);
+ maybeAddType(value, ID_TYPE_TECHNICAL, IdentifierType.TECHNICAL, types);
+ maybeAddType(value, ID_TYPE_UNCOMMON_USE, IdentifierType.UNCOMMON_USE, types);
+ maybeAddType(value, ID_TYPE_LIMITED_USE, IdentifierType.LIMITED_USE, types);
+ return types.size();
+ }
+ }
+
// This static initializer block must be placed after
// other static member initialization
static {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ZoneMeta.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ZoneMeta.java
index 3699cbbca..643887529 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ZoneMeta.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ZoneMeta.java
@@ -13,14 +13,12 @@
package com.ibm.icu.impl;
import java.lang.ref.SoftReference;
-import java.text.ParsePosition;
import java.util.Collections;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.Set;
import java.util.TreeSet;
-import com.ibm.icu.text.NumberFormat;
import com.ibm.icu.util.Output;
import com.ibm.icu.util.SimpleTimeZone;
import com.ibm.icu.util.TimeZone;
@@ -503,7 +501,7 @@ public final class ZoneMeta {
if (singleZone == null) {
Set<String> ids = TimeZone.getAvailableIDs(SystemTimeZoneType.CANONICAL_LOCATION, country, null);
assert(ids.size() >= 1);
- singleZone = Boolean.valueOf(ids.size() <= 1);
+ singleZone = ids.size() <= 1;
SINGLE_COUNTRY_CACHE.put(tzid, singleZone);
}
@@ -648,8 +646,7 @@ public final class ZoneMeta {
// fields[1] - hour / 5-bit
// fields[2] - min / 6-bit
// fields[3] - sec / 6-bit
- Integer key = Integer.valueOf(
- fields[0] * (fields[1] | fields[2] << 5 | fields[3] << 11));
+ Integer key = fields[0] * (fields[1] | fields[2] << 5 | fields[3] << 11);
return CUSTOM_ZONE_CACHE.getInstance(key, fields);
}
return null;
@@ -681,66 +678,25 @@ public final class ZoneMeta {
* @return Returns true when the given custom id is valid.
*/
static boolean parseCustomID(String id, int[] fields) {
- NumberFormat numberFormat = null;
-
if (id != null && id.length() > kGMT_ID.length() &&
- id.toUpperCase(Locale.ENGLISH).startsWith(kGMT_ID)) {
- ParsePosition pos = new ParsePosition(kGMT_ID.length());
+ id.substring(0, 3).equalsIgnoreCase(kGMT_ID)) {
int sign = 1;
int hour = 0;
int min = 0;
int sec = 0;
- if (id.charAt(pos.getIndex()) == 0x002D /*'-'*/) {
+ int[] pos = new int[1];
+ pos[0] = kGMT_ID.length();
+ if (id.charAt(pos[0]) == 0x002D /*'-'*/) {
sign = -1;
- } else if (id.charAt(pos.getIndex()) != 0x002B /*'+'*/) {
- return false;
- }
- pos.setIndex(pos.getIndex() + 1);
-
- numberFormat = NumberFormat.getInstance();
- numberFormat.setParseIntegerOnly(true);
-
- // Look for either hh:mm, hhmm, or hh
- int start = pos.getIndex();
-
- Number n = numberFormat.parse(id, pos);
- if (pos.getIndex() == start) {
+ } else if (id.charAt(pos[0]) != 0x002B /*'+'*/) {
return false;
}
- hour = n.intValue();
-
- if (pos.getIndex() < id.length()){
- if (pos.getIndex() - start > 2
- || id.charAt(pos.getIndex()) != 0x003A /*':'*/) {
- return false;
- }
- // hh:mm
- pos.setIndex(pos.getIndex() + 1);
- int oldPos = pos.getIndex();
- n = numberFormat.parse(id, pos);
- if ((pos.getIndex() - oldPos) != 2) {
- // must be 2 digits
- return false;
- }
- min = n.intValue();
- if (pos.getIndex() < id.length()) {
- if (id.charAt(pos.getIndex()) != 0x003A /*':'*/) {
- return false;
- }
- // [:ss]
- pos.setIndex(pos.getIndex() + 1);
- oldPos = pos.getIndex();
- n = numberFormat.parse(id, pos);
- if (pos.getIndex() != id.length()
- || (pos.getIndex() - oldPos) != 2) {
- return false;
- }
- sec = n.intValue();
- }
- } else {
- // Supported formats are below -
- //
+ pos[0]++;
+ int start = pos[0];
+ hour = Utility.parseNumber(id, pos, 10);
+ if (pos[0] == id.length()) {
+ // Handle the following cases
// HHmmss
// Hmmss
// HHmm
@@ -748,27 +704,57 @@ public final class ZoneMeta {
// HH
// H
- int length = pos.getIndex() - start;
- if (length <= 0 || 6 < length) {
- // invalid length
- return false;
- }
+ // Get all digits
+ // Should be 1 to 6 digits.
+ int length = pos[0] - start;
switch (length) {
- case 1:
- case 2:
+ case 1: // H
+ case 2: // HH
// already set to hour
break;
- case 3:
- case 4:
+ case 3: // Hmm
+ case 4: // HHmm
min = hour % 100;
hour /= 100;
break;
- case 5:
- case 6:
+ case 5: // Hmmss
+ case 6: // HHmmss
sec = hour % 100;
min = (hour/100) % 100;
hour /= 10000;
break;
+ default:
+ // invalid range
+ return false;
+ }
+ } else {
+ // Handle the following cases
+ // HH:mm:ss
+ // H:mm:ss
+ // HH:mm
+ // H:mm
+ if (pos[0] - start < 1 || pos[0] - start > 2 || id.charAt(pos[0]) != 0x003A /*':'*/) {
+ return false;
+ }
+ pos[0]++; // skip : after H
+ if (id.length() == pos[0]) {
+ return false;
+ }
+ start = pos[0];
+ min = Utility.parseNumber(id, pos, 10);
+ if (pos[0] - start != 2) {
+ return false;
+ }
+ if (id.length() > pos[0]) {
+ if (id.charAt(pos[0]) != 0x003A /*':'*/) {
+ return false;
+ }
+ pos[0]++; // skip : after mm
+ start = pos[0];
+ sec = Utility.parseNumber(id, pos, 10);
+ if (pos[0] - start != 2 || id.length() > pos[0]) {
+ return false;
+ }
}
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/BurmeseBreakEngine.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/BurmeseBreakEngine.java
index 12352e4dc..526413bc1 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/BurmeseBreakEngine.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/BurmeseBreakEngine.java
@@ -198,7 +198,7 @@ public class BurmeseBreakEngine extends DictionaryBreakEngine {
// Did we find a word on this iteration? If so, push it on the break stack
if (wordLength > 0) {
- foundBreaks.push(Integer.valueOf(current + wordLength));
+ foundBreaks.push(current + wordLength);
}
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/KhmerBreakEngine.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/KhmerBreakEngine.java
index bd3fa9f2d..20ade41ef 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/KhmerBreakEngine.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/KhmerBreakEngine.java
@@ -206,7 +206,7 @@ public class KhmerBreakEngine extends DictionaryBreakEngine {
// Did we find a word on this iteration? If so, push it on the break stack
if (wordLength > 0) {
- foundBreaks.push(Integer.valueOf(current + wordLength));
+ foundBreaks.push(current + wordLength);
}
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/LaoBreakEngine.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/LaoBreakEngine.java
index e60271aa5..c2cb36269 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/LaoBreakEngine.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/LaoBreakEngine.java
@@ -206,7 +206,7 @@ public class LaoBreakEngine extends DictionaryBreakEngine {
// Did we find a word on this iteration? If so, push it on the break stack
if (wordLength > 0) {
- foundBreaks.push(Integer.valueOf(current + wordLength));
+ foundBreaks.push(current + wordLength);
}
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/ThaiBreakEngine.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/ThaiBreakEngine.java
index 3f9670510..36099382c 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/ThaiBreakEngine.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/breakiter/ThaiBreakEngine.java
@@ -250,7 +250,7 @@ public class ThaiBreakEngine extends DictionaryBreakEngine {
// Did we find a word on this iteration? If so, push it on the break stack
if (wordLength > 0) {
- foundBreaks.push(Integer.valueOf(current + wordLength));
+ foundBreaks.push(current + wordLength);
}
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LSR.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LSR.java
index b61f80ea6..51668ddbd 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LSR.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LSR.java
@@ -2,9 +2,12 @@
// License & terms of use: http://www.unicode.org/copyright.html
package com.ibm.icu.impl.locale;
+import java.util.HashMap;
import java.util.List;
import java.util.Objects;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
import com.ibm.icu.lang.UScript;
public final class LSR {
@@ -147,45 +150,91 @@ public final class LSR {
return (encodeLanguageToInt() + (27*27*27) * encodeRegionToInt(m49)) |
(encodeScriptToInt() << 24);
}
- private static String toLanguage(int encoded) {
- if (encoded == 0) return "";
- if (encoded == 1) return "skip";
- encoded &= 0x00ffffff;
- encoded %= 27*27*27;
- StringBuilder res = new StringBuilder(3);
- res.append((char)('a' + ((encoded % 27) - 1)));
- res.append((char)('a' + (((encoded / 27 ) % 27) - 1)));
- if (encoded / (27 * 27) != 0) {
- res.append((char)('a' + ((encoded / (27 * 27)) - 1)));
+
+ // BEGIN Android patch: Save ~1MB zygote heap. http://b/331291118
+ // ~7k LSR instances and ~21k strings are created from this path.
+ private static class CachedDecoder {
+ private static final String[] DECODED_ZERO =
+ new String[] {/*lang=*/ "", /*script=*/ "", /*region=*/ ""};
+ private static final String[] DECODED_ONE =
+ new String[] {/*lang=*/ "skip", /*script=*/ "script", /*region=*/ ""};
+
+ private final HashMap<Integer, String> langsCache;
+ private final HashMap<Integer, String> scriptsCache;
+ private final HashMap<Integer, String> regionsCache;
+
+ private final String[] m49;
+
+ CachedDecoder(String[] m49) {
+ int estLangCacheCapacity = 556; // ~= LocaleIDs._languages.length
+ langsCache = new HashMap<>(estLangCacheCapacity);
+ scriptsCache = new HashMap<>(UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT));
+ int estRegionCacheCapacity = 253; // ~= LocaleIDs._countries.length
+ regionsCache = new HashMap<>(estRegionCacheCapacity);
+ this.m49 = m49;
}
- return res.toString();
- }
- private static String toScript(int encoded) {
- if (encoded == 0) return "";
- if (encoded == 1) return "script";
- encoded = (encoded >> 24) & 0x000000ff;
- return UScript.getShortName(encoded);
- }
- private static String toRegion(int encoded, String[] m49) {
- if (encoded == 0 || encoded == 1) return "";
- encoded &= 0x00ffffff;
- encoded /= 27 * 27 * 27;
- encoded %= 27 * 27;
- if (encoded < 27) {
- return m49[encoded];
+
+ /**
+ * @return a String[3] object where the first element is a language code, the second element
+ * is a script code, and the third element is a region code.
+ */
+ String[] decode(int encoded) {
+ if (encoded == 0) {
+ return DECODED_ZERO;
+ }
+ if (encoded == 1) {
+ return DECODED_ONE;
+ }
+
+ int encodedLang = encoded & 0x00ffffff;
+ encodedLang %= 27*27*27;
+ String lang = langsCache.computeIfAbsent(encodedLang, CachedDecoder::toLanguage);
+
+ int encodedScript = (encoded >> 24) & 0x000000ff;
+ String script = scriptsCache.computeIfAbsent(encodedScript, UScript::getShortName);
+
+ int encodedRegion = encoded & 0x00ffffff;
+ encodedRegion /= 27 * 27 * 27;
+ encodedRegion %= 27 * 27;
+
+ String region;
+ if (encodedRegion < 27) {
+ region = m49[encodedRegion];
+ } else {
+ region = regionsCache.computeIfAbsent(encodedRegion, CachedDecoder::toRegion);
+ }
+
+ return new String[] {lang, script, region};
+ }
+
+ private static String toLanguage(int encoded) {
+ StringBuilder res = new StringBuilder(3);
+ res.append((char)('a' + ((encoded % 27) - 1)));
+ res.append((char)('a' + (((encoded / 27 ) % 27) - 1)));
+ if (encoded / (27 * 27) != 0) {
+ res.append((char)('a' + ((encoded / (27 * 27)) - 1)));
+ }
+ return res.toString();
+ }
+
+ private static String toRegion(int encoded) {
+ StringBuilder res = new StringBuilder(3);
+ res.append((char)('A' + ((encoded % 27) - 1)));
+ res.append((char)('A' + (((encoded / 27) % 27) - 1)));
+ return res.toString();
}
- StringBuilder res = new StringBuilder(3);
- res.append((char)('A' + ((encoded % 27) - 1)));
- res.append((char)('A' + (((encoded / 27) % 27) - 1)));
- return res.toString();
}
public static LSR[] decodeInts(int[] nums, String[] m49) {
LSR[] lsrs = new LSR[nums.length];
+
+ CachedDecoder decoder = new CachedDecoder(m49);
for (int i = 0; i < nums.length; ++i) {
- int n = nums[i];
- lsrs[i] = new LSR(toLanguage(n), toScript(n), toRegion(n, m49), LSR.IMPLICIT_LSR);
+ int encoded = nums[i];
+ String[] lsrStrings = decoder.decode(encoded);
+ lsrs[i] = new LSR(lsrStrings[0], lsrStrings[1], lsrStrings[2], LSR.IMPLICIT_LSR);
}
return lsrs;
}
+ // END Android patch: Save ~1MB zygote heap. http://b/331291118
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java
new file mode 100644
index 000000000..2a42c60c4
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java
@@ -0,0 +1,588 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.locale;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.TreeMap;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.UResource;
+import com.ibm.icu.util.BytesTrie;
+import com.ibm.icu.util.Region;
+import com.ibm.icu.util.ULocale;
+
+public final class LikelySubtags {
+ private static final String PSEUDO_ACCENTS_PREFIX = "'"; // -XA, -PSACCENT
+ private static final String PSEUDO_BIDI_PREFIX = "+"; // -XB, -PSBIDI
+ private static final String PSEUDO_CRACKED_PREFIX = ","; // -XC, -PSCRACK
+
+ public static final int SKIP_SCRIPT = 1;
+
+ private static final boolean DEBUG_OUTPUT = LSR.DEBUG_OUTPUT;
+
+ // VisibleForTesting
+ public static final class Data {
+ public final Map<String, String> languageAliases;
+ public final Map<String, String> regionAliases;
+ public final byte[] trie;
+ public final LSR[] lsrs;
+
+ public Data(Map<String, String> languageAliases, Map<String, String> regionAliases,
+ byte[] trie, LSR[] lsrs) {
+ this.languageAliases = languageAliases;
+ this.regionAliases = regionAliases;
+ this.trie = trie;
+ this.lsrs = lsrs;
+ }
+
+ private static UResource.Value getValue(UResource.Table table,
+ String key, UResource.Value value) {
+ if (!table.findValue(key, value)) {
+ throw new MissingResourceException(
+ "langInfo.res missing data", "", "likely/" + key);
+ }
+ return value;
+ }
+
+ // VisibleForTesting
+ public static Data load() throws MissingResourceException {
+ ICUResourceBundle langInfo = ICUResourceBundle.getBundleInstance(
+ ICUData.ICU_BASE_NAME, "langInfo",
+ ICUResourceBundle.ICU_DATA_CLASS_LOADER, ICUResourceBundle.OpenType.DIRECT);
+ UResource.Value value = langInfo.getValueWithFallback("likely");
+ UResource.Table likelyTable = value.getTable();
+
+ Map<String, String> languageAliases;
+ if (likelyTable.findValue("languageAliases", value)) {
+ String[] pairs = value.getStringArray();
+ languageAliases = new HashMap<>(pairs.length / 2);
+ for (int i = 0; i < pairs.length; i += 2) {
+ languageAliases.put(pairs[i], pairs[i + 1]);
+ }
+ } else {
+ languageAliases = Collections.emptyMap();
+ }
+
+ Map<String, String> regionAliases;
+ if (likelyTable.findValue("regionAliases", value)) {
+ String[] pairs = value.getStringArray();
+ regionAliases = new HashMap<>(pairs.length / 2);
+ for (int i = 0; i < pairs.length; i += 2) {
+ regionAliases.put(pairs[i], pairs[i + 1]);
+ }
+ } else {
+ regionAliases = Collections.emptyMap();
+ }
+
+ ByteBuffer buffer = getValue(likelyTable, "trie", value).getBinary();
+ byte[] trie = new byte[buffer.remaining()];
+ buffer.get(trie);
+
+ String[] m49 = getValue(likelyTable, "m49", value).getStringArray();
+ LSR[] lsrs = LSR.decodeInts(getValue(likelyTable, "lsrnum", value).getIntVector(), m49);
+ return new Data(languageAliases, regionAliases, trie, lsrs);
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (this == other) { return true; }
+ if (other == null || !getClass().equals(other.getClass())) { return false; }
+ Data od = (Data)other;
+ return
+ languageAliases.equals(od.languageAliases) &&
+ regionAliases.equals(od.regionAliases) &&
+ Arrays.equals(trie, od.trie) &&
+ Arrays.equals(lsrs, od.lsrs);
+ }
+
+ @Override
+ public int hashCode() { // unused; silence ErrorProne
+ return 1;
+ }
+ }
+
+ // VisibleForTesting
+ public static final LikelySubtags INSTANCE = new LikelySubtags(Data.load());
+
+ private final Map<String, String> languageAliases;
+ private final Map<String, String> regionAliases;
+
+ // The trie maps each lang+script+region (encoded in ASCII) to an index into lsrs.
+ // There is also a trie value for each intermediate lang and lang+script.
+ // '*' is used instead of "und", "Zzzz"/"" and "ZZ"/"".
+ private final BytesTrie trie;
+ private final long trieUndState;
+ private final long trieUndZzzzState;
+ private final int defaultLsrIndex;
+ private final long[] trieFirstLetterStates = new long[26];
+ private final LSR[] lsrs;
+
+ private LikelySubtags(LikelySubtags.Data data) {
+ languageAliases = data.languageAliases;
+ regionAliases = data.regionAliases;
+ trie = new BytesTrie(data.trie, 0);
+ lsrs = data.lsrs;
+
+ // Cache the result of looking up language="und" encoded as "*", and "und-Zzzz" ("**").
+ BytesTrie.Result result = trie.next('*');
+ assert result.hasNext();
+ trieUndState = trie.getState64();
+ result = trie.next('*');
+ assert result.hasNext();
+ trieUndZzzzState = trie.getState64();
+ result = trie.next('*');
+ assert result.hasValue();
+ defaultLsrIndex = trie.getValue();
+ trie.reset();
+
+ for (char c = 'a'; c <= 'z'; ++c) {
+ result = trie.next(c);
+ if (result == BytesTrie.Result.NO_VALUE) {
+ trieFirstLetterStates[c - 'a'] = trie.getState64();
+ }
+ trie.reset();
+ }
+
+ if (DEBUG_OUTPUT) {
+ System.out.println("*** likely subtags");
+ for (Map.Entry<String, LSR> mapping : getTable().entrySet()) {
+ System.out.println(mapping);
+ }
+ }
+ }
+
+ /**
+ * Implementation of LocaleMatcher.canonicalize(ULocale).
+ */
+ public ULocale canonicalize(ULocale locale) {
+ String lang = locale.getLanguage();
+ String lang2 = languageAliases.get(lang);
+ String region = locale.getCountry();
+ String region2 = regionAliases.get(region);
+ if (lang2 != null || region2 != null) {
+ return new ULocale(
+ lang2 == null ? lang : lang2,
+ locale.getScript(),
+ region2 == null ? region : region2);
+ }
+ return locale;
+ }
+
+ private static String getCanonical(Map<String, String> aliases, String alias) {
+ String canonical = aliases.get(alias);
+ return canonical == null ? alias : canonical;
+ }
+
+ // VisibleForTesting
+ public LSR makeMaximizedLsrFrom(ULocale locale, boolean returnInputIfUnmatch) {
+ String name = locale.getName(); // Faster than .toLanguageTag().
+ if (name.startsWith("@x=")) {
+ String tag = locale.toLanguageTag();
+ assert tag.startsWith("und-x-");
+ // Private use language tag x-subtag-subtag... which CLDR changes to
+ // und-x-subtag-subtag...
+ return new LSR(tag, "", "", LSR.EXPLICIT_LSR);
+ }
+ LSR max = makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
+ locale.getVariant(), returnInputIfUnmatch);
+ if (max.language.isEmpty() && max.script.isEmpty() && max.region.isEmpty()) {
+ return new LSR(locale.getLanguage(), locale.getScript(), locale.getCountry(), LSR.EXPLICIT_LSR);
+ }
+ return max;
+ }
+
+ public LSR makeMaximizedLsrFrom(Locale locale) {
+ String tag = locale.toLanguageTag();
+ if (tag.startsWith("x-") || tag.startsWith("und-x-")) {
+ // Private use language tag x-subtag-subtag... which CLDR changes to
+ // und-x-subtag-subtag...
+ return new LSR(tag, "", "", LSR.EXPLICIT_LSR);
+ }
+ return makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
+ locale.getVariant(), false);
+ }
+
+ private LSR makeMaximizedLsr(String language, String script, String region, String variant, boolean returnInputIfUnmatch) {
+ // Handle pseudolocales like en-XA, ar-XB, fr-PSCRACK.
+ // They should match only themselves,
+ // not other locales with what looks like the same language and script subtags.
+ if (!returnInputIfUnmatch) {
+ if (region.length() == 2 && region.charAt(0) == 'X') {
+ switch (region.charAt(1)) {
+ case 'A':
+ return new LSR(PSEUDO_ACCENTS_PREFIX + language,
+ PSEUDO_ACCENTS_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ case 'B':
+ return new LSR(PSEUDO_BIDI_PREFIX + language,
+ PSEUDO_BIDI_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ case 'C':
+ return new LSR(PSEUDO_CRACKED_PREFIX + language,
+ PSEUDO_CRACKED_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ default: // normal locale
+ break;
+ }
+ }
+
+ if (variant.startsWith("PS")) {
+ int lsrFlags = region.isEmpty() ?
+ LSR.EXPLICIT_LANGUAGE | LSR.EXPLICIT_SCRIPT : LSR.EXPLICIT_LSR;
+ switch (variant) {
+ case "PSACCENT":
+ return new LSR(PSEUDO_ACCENTS_PREFIX + language,
+ PSEUDO_ACCENTS_PREFIX + script,
+ region.isEmpty() ? "XA" : region, lsrFlags);
+ case "PSBIDI":
+ return new LSR(PSEUDO_BIDI_PREFIX + language,
+ PSEUDO_BIDI_PREFIX + script,
+ region.isEmpty() ? "XB" : region, lsrFlags);
+ case "PSCRACK":
+ return new LSR(PSEUDO_CRACKED_PREFIX + language,
+ PSEUDO_CRACKED_PREFIX + script,
+ region.isEmpty() ? "XC" : region, lsrFlags);
+ default: // normal locale
+ break;
+ }
+ }
+ }
+
+ language = getCanonical(languageAliases, language);
+ // (We have no script mappings.)
+ region = getCanonical(regionAliases, region);
+ return maximize(language, script, region, returnInputIfUnmatch);
+ }
+
+ /**
+ * Helper method to find out a region is a macroregion
+ */
+ private boolean isMacroregion(String region) {
+ Region.RegionType type = Region.getInstance(region).getType();
+ return type == Region.RegionType.WORLD ||
+ type == Region.RegionType.CONTINENT ||
+ type == Region.RegionType.SUBCONTINENT ;
+ }
+
+ /**
+ * Raw access to addLikelySubtags. Input must be in canonical format, eg "en", not "eng" or "EN".
+ */
+ private LSR maximize(String language, String script, String region, boolean returnInputIfUnmatch) {
+ if (language.equals("und")) {
+ language = "";
+ }
+ if (script.equals("Zzzz")) {
+ script = "";
+ }
+ if (region.equals("ZZ")) {
+ region = "";
+ }
+ if (!script.isEmpty() && !region.isEmpty() && !language.isEmpty()) {
+ return new LSR(language, script, region, LSR.EXPLICIT_LSR); // already maximized
+ }
+
+ boolean retainLanguage = false;
+ boolean retainScript = false;
+ boolean retainRegion = false;
+ BytesTrie iter = new BytesTrie(trie);
+ long state;
+ int value;
+ // Small optimization: Array lookup for first language letter.
+ int c0;
+ if (language.length() >= 2 && 0 <= (c0 = language.charAt(0) - 'a') && c0 <= 25 &&
+ (state = trieFirstLetterStates[c0]) != 0) {
+ value = trieNext(iter.resetToState64(state), language, 1);
+ } else {
+ value = trieNext(iter, language, 0);
+ }
+ boolean matchLanguage = (value >= 0);
+ boolean matchScript = false;
+ if (value >= 0) {
+ retainLanguage = ! language.isEmpty();
+ state = iter.getState64();
+ } else {
+ retainLanguage = true;
+ iter.resetToState64(trieUndState); // "und" ("*")
+ state = 0;
+ }
+
+ if (value >= 0 && !script.isEmpty()) {
+ matchScript = true;
+ }
+ if (value > 0) {
+ // Intermediate or final value from just language.
+ if (value == SKIP_SCRIPT) {
+ value = 0;
+ }
+ retainScript = ! script.isEmpty();
+ } else {
+ value = trieNext(iter, script, 0);
+ if (value >= 0) {
+ retainScript = ! script.isEmpty();
+ state = iter.getState64();
+ } else {
+ retainScript = true;
+ if (state == 0) {
+ iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
+ } else {
+ iter.resetToState64(state);
+ value = trieNext(iter, "", 0);
+ assert value >= 0;
+ state = iter.getState64();
+ }
+ }
+ }
+
+ boolean matchRegion = false;
+ if (value > 0) {
+ // Final value from just language or language+script.
+ retainRegion = ! region.isEmpty();
+ } else {
+ value = trieNext(iter, region, 0);
+ if (value >= 0) {
+ if (!region.isEmpty() && !isMacroregion(region)) {
+ retainRegion = true;
+ matchRegion = true;
+ }
+ } else {
+ retainRegion = true;
+ if (state == 0) {
+ value = defaultLsrIndex;
+ } else {
+ iter.resetToState64(state);
+ value = trieNext(iter, "", 0);
+ assert value > 0;
+ }
+ }
+ }
+ LSR result = lsrs[value];
+
+ if (returnInputIfUnmatch &&
+ (!(matchLanguage || matchScript || (matchRegion && language.isEmpty())))) {
+ return new LSR("", "", "", LSR.EXPLICIT_LSR); // no matching.
+ }
+ if (language.isEmpty()) {
+ language = "und";
+ }
+
+ if (! (retainLanguage || retainScript || retainRegion)) {
+ assert result.flags == LSR.IMPLICIT_LSR;
+ return result;
+ }
+ if (!retainLanguage) {
+ language = result.language;
+ }
+ if (!retainScript) {
+ script = result.script;
+ }
+ if (!retainRegion) {
+ region = result.region;
+ }
+ int retainMask = (retainLanguage ? 4 : 0) + (retainScript ? 2 : 0) + (retainRegion ? 1 : 0);
+ // retainOldMask flags = LSR explicit-subtag flags
+ return new LSR(language, script, region, retainMask);
+ }
+
+ /**
+ * Tests whether lsr is "more likely" than other.
+ * For example, fr-Latn-FR is more likely than fr-Latn-CH because
+ * FR is the default region for fr-Latn.
+ *
+ * <p>The likelyInfo caches lookup information between calls.
+ * The return value is an updated likelyInfo value,
+ * with bit 0 set if lsr is "more likely".
+ * The initial value of likelyInfo must be negative.
+ */
+ int compareLikely(LSR lsr, LSR other, int likelyInfo) {
+ // If likelyInfo >= 0:
+ // likelyInfo bit 1 is set if the previous comparison with lsr
+ // was for equal language and script.
+ // Otherwise the scripts differed.
+ if (!lsr.language.equals(other.language)) {
+ return 0xfffffffc; // negative, lsr not better than other
+ }
+ if (!lsr.script.equals(other.script)) {
+ int index;
+ if (likelyInfo >= 0 && (likelyInfo & 2) == 0) {
+ index = likelyInfo >> 2;
+ } else {
+ index = getLikelyIndex(lsr.language, "");
+ likelyInfo = index << 2;
+ }
+ LSR likely = lsrs[index];
+ if (lsr.script.equals(likely.script)) {
+ return likelyInfo | 1;
+ } else {
+ return likelyInfo & ~1;
+ }
+ }
+ if (!lsr.region.equals(other.region)) {
+ int index;
+ if (likelyInfo >= 0 && (likelyInfo & 2) != 0) {
+ index = likelyInfo >> 2;
+ } else {
+ index = getLikelyIndex(lsr.language, lsr.region);
+ likelyInfo = (index << 2) | 2;
+ }
+ LSR likely = lsrs[index];
+ if (lsr.region.equals(likely.region)) {
+ return likelyInfo | 1;
+ } else {
+ return likelyInfo & ~1;
+ }
+ }
+ return likelyInfo & ~1; // lsr not better than other
+ }
+
+ // Subset of maximize().
+ private int getLikelyIndex(String language, String script) {
+ if (language.equals("und")) {
+ language = "";
+ }
+ if (script.equals("Zzzz")) {
+ script = "";
+ }
+
+ BytesTrie iter = new BytesTrie(trie);
+ long state;
+ int value;
+ // Small optimization: Array lookup for first language letter.
+ int c0;
+ if (language.length() >= 2 && 0 <= (c0 = language.charAt(0) - 'a') && c0 <= 25 &&
+ (state = trieFirstLetterStates[c0]) != 0) {
+ value = trieNext(iter.resetToState64(state), language, 1);
+ } else {
+ value = trieNext(iter, language, 0);
+ }
+ if (value >= 0) {
+ state = iter.getState64();
+ } else {
+ iter.resetToState64(trieUndState); // "und" ("*")
+ state = 0;
+ }
+
+ if (value > 0) {
+ // Intermediate or final value from just language.
+ if (value == SKIP_SCRIPT) {
+ value = 0;
+ }
+ } else {
+ value = trieNext(iter, script, 0);
+ if (value >= 0) {
+ state = iter.getState64();
+ } else {
+ if (state == 0) {
+ iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
+ } else {
+ iter.resetToState64(state);
+ value = trieNext(iter, "", 0);
+ assert value >= 0;
+ state = iter.getState64();
+ }
+ }
+ }
+
+ if (value > 0) {
+ // Final value from just language or language+script.
+ } else {
+ value = trieNext(iter, "", 0);
+ assert value > 0;
+ }
+ return value;
+ }
+
+ private static final int trieNext(BytesTrie iter, String s, int i) {
+ BytesTrie.Result result;
+ if (s.isEmpty()) {
+ result = iter.next('*');
+ } else {
+ int end = s.length() - 1;
+ for (;; ++i) {
+ int c = s.charAt(i);
+ if (i < end) {
+ if (!iter.next(c).hasNext()) {
+ return -1;
+ }
+ } else {
+ // last character of this subtag
+ result = iter.next(c | 0x80);
+ break;
+ }
+ }
+ }
+ switch (result) {
+ case NO_MATCH: return -1;
+ case NO_VALUE: return 0;
+ case INTERMEDIATE_VALUE:
+ assert iter.getValue() == SKIP_SCRIPT;
+ return SKIP_SCRIPT;
+ case FINAL_VALUE: return iter.getValue();
+ default: return -1;
+ }
+ }
+
+ public LSR minimizeSubtags(String languageIn, String scriptIn, String regionIn,
+ ULocale.Minimize fieldToFavor) {
+ LSR max = maximize(languageIn, scriptIn, regionIn, true);
+ if (max.language.isEmpty() && max.region.isEmpty() && max.script.isEmpty()) {
+ // Cannot match, return as is
+ return new LSR(languageIn, scriptIn, regionIn, LSR.EXPLICIT_LSR);
+ }
+ LSR test = maximize(max.language, "", "", true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, "", "", LSR.DONT_CARE_FLAGS);
+ }
+ if (ULocale.Minimize.FAVOR_REGION == fieldToFavor) {
+ test = maximize(max.language, "", max.region, true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, "", max.region, LSR.DONT_CARE_FLAGS);
+ }
+ test = maximize(max.language, max.script, "", true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, max.script, "", LSR.DONT_CARE_FLAGS);
+ }
+ } else {
+ test = maximize(max.language, max.script, "", true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, max.script, "", LSR.DONT_CARE_FLAGS);
+ }
+ test = maximize(max.language, "", max.region, true);
+ if (test.isEquivalentTo(max)) {
+ return new LSR(max.language, "", max.region, LSR.DONT_CARE_FLAGS);
+ }
+ }
+ return new LSR(max.language, max.script, max.region, LSR.DONT_CARE_FLAGS);
+ }
+
+ private Map<String, LSR> getTable() {
+ Map<String, LSR> map = new TreeMap<>();
+ StringBuilder sb = new StringBuilder();
+ for (BytesTrie.Entry entry : trie) {
+ sb.setLength(0);
+ int length = entry.bytesLength();
+ for (int i = 0; i < length;) {
+ byte b = entry.byteAt(i++);
+ if (b == '*') {
+ sb.append("*-");
+ } else if (b >= 0) {
+ sb.append((char) b);
+ } else { // end of subtag
+ sb.append((char) (b & 0x7f)).append('-');
+ }
+ }
+ assert sb.length() > 0 && sb.charAt(sb.length() - 1) == '-';
+ sb.setLength(sb.length() - 1);
+ map.put(sb.toString(), lsrs[entry.value]);
+ }
+ return map;
+ }
+
+ @Override
+ public String toString() {
+ return getTable().toString();
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleDistance.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleDistance.java
index 3d4d540a3..40becdd77 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleDistance.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleDistance.java
@@ -225,8 +225,8 @@ public class LocaleDistance {
// VisibleForTesting
public int testOnlyDistance(ULocale desired, ULocale supported,
int threshold, FavorSubtag favorSubtag) {
- LSR supportedLSR = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(supported, false);
- LSR desiredLSR = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(desired, false);
+ LSR supportedLSR = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(supported, false);
+ LSR desiredLSR = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(desired, false);
int indexAndDistance = getBestIndexAndDistance(desiredLSR, new LSR[] { supportedLSR }, 1,
shiftDistance(threshold), favorSubtag, LocaleMatcher.Direction.WITH_ONE_WAY);
return getDistanceFloor(indexAndDistance);
@@ -250,7 +250,7 @@ public class LocaleDistance {
long desLangState = desLangDistance >= 0 && supportedLSRsLength > 1 ? iter.getState64() : 0;
// Index of the supported LSR with the lowest distance.
int bestIndex = -1;
- // Cached lookup info from XLikelySubtags.compareLikely().
+ // Cached lookup info from LikelySubtags.compareLikely().
int bestLikelyInfo = -1;
for (int slIndex = 0; slIndex < supportedLSRsLength; ++slIndex) {
LSR supported = supportedLSRs[slIndex];
@@ -369,7 +369,7 @@ public class LocaleDistance {
if (direction != LocaleMatcher.Direction.ONLY_TWO_WAY ||
// Is there also a match when we swap desired/supported?
isMatch(supported, desired, shiftedThreshold, favorSubtag)) {
- bestLikelyInfo = XLikelySubtags.INSTANCE.compareLikely(
+ bestLikelyInfo = LikelySubtags.INSTANCE.compareLikely(
supported, supportedLSRs[bestIndex], bestLikelyInfo);
if ((bestLikelyInfo & 1) != 0) {
// This supported locale matches as well as the previous best match,
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleExtensions.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleExtensions.java
index ffc498adf..af40c2f27 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleExtensions.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LocaleExtensions.java
@@ -40,12 +40,12 @@ public class LocaleExtensions {
CALENDAR_JAPANESE = new LocaleExtensions();
CALENDAR_JAPANESE._id = "u-ca-japanese";
CALENDAR_JAPANESE._map = new TreeMap<Character, Extension>();
- CALENDAR_JAPANESE._map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), UnicodeLocaleExtension.CA_JAPANESE);
+ CALENDAR_JAPANESE._map.put(UnicodeLocaleExtension.SINGLETON, UnicodeLocaleExtension.CA_JAPANESE);
NUMBER_THAI = new LocaleExtensions();
NUMBER_THAI._id = "u-nu-thai";
NUMBER_THAI._map = new TreeMap<Character, Extension>();
- NUMBER_THAI._map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), UnicodeLocaleExtension.NU_THAI);
+ NUMBER_THAI._map.put(UnicodeLocaleExtension.SINGLETON, UnicodeLocaleExtension.NU_THAI);
}
private LocaleExtensions() {
@@ -67,7 +67,7 @@ public class LocaleExtensions {
}
// Build extension map
- _map = new TreeMap<Character, Extension>();
+ _map = new TreeMap<>();
if (hasExtension) {
for (Entry<CaseInsensitiveChar, String> ext : extensions.entrySet()) {
char key = AsciiUtil.toLower(ext.getKey().value());
@@ -82,7 +82,7 @@ public class LocaleExtensions {
}
Extension e = new Extension(key, AsciiUtil.toLowerString(value));
- _map.put(Character.valueOf(key), e);
+ _map.put(key, e);
}
}
@@ -107,7 +107,7 @@ public class LocaleExtensions {
}
UnicodeLocaleExtension ule = new UnicodeLocaleExtension(uaset, ukmap);
- _map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), ule);
+ _map.put(UnicodeLocaleExtension.SINGLETON, ule);
}
if (_map.size() == 0) {
@@ -124,11 +124,11 @@ public class LocaleExtensions {
}
public Extension getExtension(Character key) {
- return _map.get(Character.valueOf(AsciiUtil.toLower(key.charValue())));
+ return _map.get(AsciiUtil.toLower(key.charValue()));
}
public String getExtensionValue(Character key) {
- Extension ext = _map.get(Character.valueOf(AsciiUtil.toLower(key.charValue())));
+ Extension ext = _map.get(AsciiUtil.toLower(key.charValue()));
if (ext == null) {
return null;
}
@@ -136,7 +136,7 @@ public class LocaleExtensions {
}
public Set<String> getUnicodeLocaleAttributes() {
- Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON));
+ Extension ext = _map.get(UnicodeLocaleExtension.SINGLETON);
if (ext == null) {
return Collections.emptySet();
}
@@ -145,7 +145,7 @@ public class LocaleExtensions {
}
public Set<String> getUnicodeLocaleKeys() {
- Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON));
+ Extension ext = _map.get(UnicodeLocaleExtension.SINGLETON);
if (ext == null) {
return Collections.emptySet();
}
@@ -154,7 +154,7 @@ public class LocaleExtensions {
}
public String getUnicodeLocaleType(String unicodeLocaleKey) {
- Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON));
+ Extension ext = _map.get(UnicodeLocaleExtension.SINGLETON);
if (ext == null) {
return null;
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/XLikelySubtags.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/XLikelySubtags.java
deleted file mode 100644
index 01adcc0ca..000000000
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/XLikelySubtags.java
+++ /dev/null
@@ -1,586 +0,0 @@
-// © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-package com.ibm.icu.impl.locale;
-
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.TreeMap;
-
-import com.ibm.icu.impl.ICUData;
-import com.ibm.icu.impl.ICUResourceBundle;
-import com.ibm.icu.impl.UResource;
-import com.ibm.icu.util.BytesTrie;
-import com.ibm.icu.util.Region;
-import com.ibm.icu.util.ULocale;
-
-public final class XLikelySubtags {
- private static final String PSEUDO_ACCENTS_PREFIX = "'"; // -XA, -PSACCENT
- private static final String PSEUDO_BIDI_PREFIX = "+"; // -XB, -PSBIDI
- private static final String PSEUDO_CRACKED_PREFIX = ","; // -XC, -PSCRACK
-
- public static final int SKIP_SCRIPT = 1;
-
- private static final boolean DEBUG_OUTPUT = LSR.DEBUG_OUTPUT;
-
- // VisibleForTesting
- public static final class Data {
- public final Map<String, String> languageAliases;
- public final Map<String, String> regionAliases;
- public final byte[] trie;
- public final LSR[] lsrs;
-
- public Data(Map<String, String> languageAliases, Map<String, String> regionAliases,
- byte[] trie, LSR[] lsrs) {
- this.languageAliases = languageAliases;
- this.regionAliases = regionAliases;
- this.trie = trie;
- this.lsrs = lsrs;
- }
-
- private static UResource.Value getValue(UResource.Table table,
- String key, UResource.Value value) {
- if (!table.findValue(key, value)) {
- throw new MissingResourceException(
- "langInfo.res missing data", "", "likely/" + key);
- }
- return value;
- }
-
- // VisibleForTesting
- public static Data load() throws MissingResourceException {
- ICUResourceBundle langInfo = ICUResourceBundle.getBundleInstance(
- ICUData.ICU_BASE_NAME, "langInfo",
- ICUResourceBundle.ICU_DATA_CLASS_LOADER, ICUResourceBundle.OpenType.DIRECT);
- UResource.Value value = langInfo.getValueWithFallback("likely");
- UResource.Table likelyTable = value.getTable();
-
- Map<String, String> languageAliases;
- if (likelyTable.findValue("languageAliases", value)) {
- String[] pairs = value.getStringArray();
- languageAliases = new HashMap<>(pairs.length / 2);
- for (int i = 0; i < pairs.length; i += 2) {
- languageAliases.put(pairs[i], pairs[i + 1]);
- }
- } else {
- languageAliases = Collections.emptyMap();
- }
-
- Map<String, String> regionAliases;
- if (likelyTable.findValue("regionAliases", value)) {
- String[] pairs = value.getStringArray();
- regionAliases = new HashMap<>(pairs.length / 2);
- for (int i = 0; i < pairs.length; i += 2) {
- regionAliases.put(pairs[i], pairs[i + 1]);
- }
- } else {
- regionAliases = Collections.emptyMap();
- }
-
- ByteBuffer buffer = getValue(likelyTable, "trie", value).getBinary();
- byte[] trie = new byte[buffer.remaining()];
- buffer.get(trie);
-
- String[] m49 = getValue(likelyTable, "m49", value).getStringArray();
- LSR[] lsrs = LSR.decodeInts(getValue(likelyTable, "lsrnum", value).getIntVector(), m49);
- return new Data(languageAliases, regionAliases, trie, lsrs);
- }
-
- @Override
- public boolean equals(Object other) {
- if (this == other) { return true; }
- if (other == null || !getClass().equals(other.getClass())) { return false; }
- Data od = (Data)other;
- return
- languageAliases.equals(od.languageAliases) &&
- regionAliases.equals(od.regionAliases) &&
- Arrays.equals(trie, od.trie) &&
- Arrays.equals(lsrs, od.lsrs);
- }
-
- @Override
- public int hashCode() { // unused; silence ErrorProne
- return 1;
- }
- }
-
- // VisibleForTesting
- public static final XLikelySubtags INSTANCE = new XLikelySubtags(Data.load());
-
- private final Map<String, String> languageAliases;
- private final Map<String, String> regionAliases;
-
- // The trie maps each lang+script+region (encoded in ASCII) to an index into lsrs.
- // There is also a trie value for each intermediate lang and lang+script.
- // '*' is used instead of "und", "Zzzz"/"" and "ZZ"/"".
- private final BytesTrie trie;
- private final long trieUndState;
- private final long trieUndZzzzState;
- private final int defaultLsrIndex;
- private final long[] trieFirstLetterStates = new long[26];
- private final LSR[] lsrs;
-
- private XLikelySubtags(XLikelySubtags.Data data) {
- languageAliases = data.languageAliases;
- regionAliases = data.regionAliases;
- trie = new BytesTrie(data.trie, 0);
- lsrs = data.lsrs;
-
- // Cache the result of looking up language="und" encoded as "*", and "und-Zzzz" ("**").
- BytesTrie.Result result = trie.next('*');
- assert result.hasNext();
- trieUndState = trie.getState64();
- result = trie.next('*');
- assert result.hasNext();
- trieUndZzzzState = trie.getState64();
- result = trie.next('*');
- assert result.hasValue();
- defaultLsrIndex = trie.getValue();
- trie.reset();
-
- for (char c = 'a'; c <= 'z'; ++c) {
- result = trie.next(c);
- if (result == BytesTrie.Result.NO_VALUE) {
- trieFirstLetterStates[c - 'a'] = trie.getState64();
- }
- trie.reset();
- }
-
- if (DEBUG_OUTPUT) {
- System.out.println("*** likely subtags");
- for (Map.Entry<String, LSR> mapping : getTable().entrySet()) {
- System.out.println(mapping);
- }
- }
- }
-
- /**
- * Implementation of LocaleMatcher.canonicalize(ULocale).
- */
- public ULocale canonicalize(ULocale locale) {
- String lang = locale.getLanguage();
- String lang2 = languageAliases.get(lang);
- String region = locale.getCountry();
- String region2 = regionAliases.get(region);
- if (lang2 != null || region2 != null) {
- return new ULocale(
- lang2 == null ? lang : lang2,
- locale.getScript(),
- region2 == null ? region : region2);
- }
- return locale;
- }
-
- private static String getCanonical(Map<String, String> aliases, String alias) {
- String canonical = aliases.get(alias);
- return canonical == null ? alias : canonical;
- }
-
- // VisibleForTesting
- public LSR makeMaximizedLsrFrom(ULocale locale, boolean returnInputIfUnmatch) {
- String name = locale.getName(); // Faster than .toLanguageTag().
- if (name.startsWith("@x=")) {
- String tag = locale.toLanguageTag();
- assert tag.startsWith("und-x-");
- // Private use language tag x-subtag-subtag... which CLDR changes to
- // und-x-subtag-subtag...
- return new LSR(tag, "", "", LSR.EXPLICIT_LSR);
- }
- LSR max = makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
- locale.getVariant(), returnInputIfUnmatch);
- if (max.language.isEmpty() && max.script.isEmpty() && max.region.isEmpty()) {
- return new LSR(locale.getLanguage(), locale.getScript(), locale.getCountry(), LSR.EXPLICIT_LSR);
- }
- return max;
- }
-
- public LSR makeMaximizedLsrFrom(Locale locale) {
- String tag = locale.toLanguageTag();
- if (tag.startsWith("x-") || tag.startsWith("und-x-")) {
- // Private use language tag x-subtag-subtag... which CLDR changes to
- // und-x-subtag-subtag...
- return new LSR(tag, "", "", LSR.EXPLICIT_LSR);
- }
- return makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
- locale.getVariant(), false);
- }
-
- private LSR makeMaximizedLsr(String language, String script, String region, String variant, boolean returnInputIfUnmatch) {
- // Handle pseudolocales like en-XA, ar-XB, fr-PSCRACK.
- // They should match only themselves,
- // not other locales with what looks like the same language and script subtags.
- if (region.length() == 2 && region.charAt(0) == 'X') {
- switch (region.charAt(1)) {
- case 'A':
- return new LSR(PSEUDO_ACCENTS_PREFIX + language,
- PSEUDO_ACCENTS_PREFIX + script, region, LSR.EXPLICIT_LSR);
- case 'B':
- return new LSR(PSEUDO_BIDI_PREFIX + language,
- PSEUDO_BIDI_PREFIX + script, region, LSR.EXPLICIT_LSR);
- case 'C':
- return new LSR(PSEUDO_CRACKED_PREFIX + language,
- PSEUDO_CRACKED_PREFIX + script, region, LSR.EXPLICIT_LSR);
- default: // normal locale
- break;
- }
- }
-
- if (variant.startsWith("PS")) {
- int lsrFlags = region.isEmpty() ?
- LSR.EXPLICIT_LANGUAGE | LSR.EXPLICIT_SCRIPT : LSR.EXPLICIT_LSR;
- switch (variant) {
- case "PSACCENT":
- return new LSR(PSEUDO_ACCENTS_PREFIX + language,
- PSEUDO_ACCENTS_PREFIX + script,
- region.isEmpty() ? "XA" : region, lsrFlags);
- case "PSBIDI":
- return new LSR(PSEUDO_BIDI_PREFIX + language,
- PSEUDO_BIDI_PREFIX + script,
- region.isEmpty() ? "XB" : region, lsrFlags);
- case "PSCRACK":
- return new LSR(PSEUDO_CRACKED_PREFIX + language,
- PSEUDO_CRACKED_PREFIX + script,
- region.isEmpty() ? "XC" : region, lsrFlags);
- default: // normal locale
- break;
- }
- }
-
- language = getCanonical(languageAliases, language);
- // (We have no script mappings.)
- region = getCanonical(regionAliases, region);
- return maximize(language, script, region, returnInputIfUnmatch);
- }
-
- /**
- * Helper method to find out a region is a macroregion
- */
- private boolean isMacroregion(String region) {
- Region.RegionType type = Region.getInstance(region).getType();
- return type == Region.RegionType.WORLD ||
- type == Region.RegionType.CONTINENT ||
- type == Region.RegionType.SUBCONTINENT ;
- }
-
- /**
- * Raw access to addLikelySubtags. Input must be in canonical format, eg "en", not "eng" or "EN".
- */
- private LSR maximize(String language, String script, String region, boolean returnInputIfUnmatch) {
- if (language.equals("und")) {
- language = "";
- }
- if (script.equals("Zzzz")) {
- script = "";
- }
- if (region.equals("ZZ")) {
- region = "";
- }
- if (!script.isEmpty() && !region.isEmpty() && !language.isEmpty()) {
- return new LSR(language, script, region, LSR.EXPLICIT_LSR); // already maximized
- }
-
- boolean retainLanguage = false;
- boolean retainScript = false;
- boolean retainRegion = false;
- BytesTrie iter = new BytesTrie(trie);
- long state;
- int value;
- // Small optimization: Array lookup for first language letter.
- int c0;
- if (language.length() >= 2 && 0 <= (c0 = language.charAt(0) - 'a') && c0 <= 25 &&
- (state = trieFirstLetterStates[c0]) != 0) {
- value = trieNext(iter.resetToState64(state), language, 1);
- } else {
- value = trieNext(iter, language, 0);
- }
- boolean matchLanguage = (value >= 0);
- boolean matchScript = false;
- if (value >= 0) {
- retainLanguage = ! language.isEmpty();
- state = iter.getState64();
- } else {
- retainLanguage = true;
- iter.resetToState64(trieUndState); // "und" ("*")
- state = 0;
- }
-
- if (value >= 0 && !script.isEmpty()) {
- matchScript = true;
- }
- if (value > 0) {
- // Intermediate or final value from just language.
- if (value == SKIP_SCRIPT) {
- value = 0;
- }
- retainScript = ! script.isEmpty();
- } else {
- value = trieNext(iter, script, 0);
- if (value >= 0) {
- retainScript = ! script.isEmpty();
- state = iter.getState64();
- } else {
- retainScript = true;
- if (state == 0) {
- iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
- } else {
- iter.resetToState64(state);
- value = trieNext(iter, "", 0);
- assert value >= 0;
- state = iter.getState64();
- }
- }
- }
-
- boolean matchRegion = false;
- if (value > 0) {
- // Final value from just language or language+script.
- retainRegion = ! region.isEmpty();
- } else {
- value = trieNext(iter, region, 0);
- if (value >= 0) {
- if (!region.isEmpty() && !isMacroregion(region)) {
- retainRegion = true;
- matchRegion = true;
- }
- } else {
- retainRegion = true;
- if (state == 0) {
- value = defaultLsrIndex;
- } else {
- iter.resetToState64(state);
- value = trieNext(iter, "", 0);
- assert value > 0;
- }
- }
- }
- LSR result = lsrs[value];
-
- if (returnInputIfUnmatch &&
- (!(matchLanguage || matchScript || (matchRegion && language.isEmpty())))) {
- return new LSR("", "", "", LSR.EXPLICIT_LSR); // no matching.
- }
- if (language.isEmpty()) {
- language = "und";
- }
-
- if (! (retainLanguage || retainScript || retainRegion)) {
- assert result.flags == LSR.IMPLICIT_LSR;
- return result;
- }
- if (!retainLanguage) {
- language = result.language;
- }
- if (!retainScript) {
- script = result.script;
- }
- if (!retainRegion) {
- region = result.region;
- }
- int retainMask = (retainLanguage ? 4 : 0) + (retainScript ? 2 : 0) + (retainRegion ? 1 : 0);
- // retainOldMask flags = LSR explicit-subtag flags
- return new LSR(language, script, region, retainMask);
- }
-
- /**
- * Tests whether lsr is "more likely" than other.
- * For example, fr-Latn-FR is more likely than fr-Latn-CH because
- * FR is the default region for fr-Latn.
- *
- * <p>The likelyInfo caches lookup information between calls.
- * The return value is an updated likelyInfo value,
- * with bit 0 set if lsr is "more likely".
- * The initial value of likelyInfo must be negative.
- */
- int compareLikely(LSR lsr, LSR other, int likelyInfo) {
- // If likelyInfo >= 0:
- // likelyInfo bit 1 is set if the previous comparison with lsr
- // was for equal language and script.
- // Otherwise the scripts differed.
- if (!lsr.language.equals(other.language)) {
- return 0xfffffffc; // negative, lsr not better than other
- }
- if (!lsr.script.equals(other.script)) {
- int index;
- if (likelyInfo >= 0 && (likelyInfo & 2) == 0) {
- index = likelyInfo >> 2;
- } else {
- index = getLikelyIndex(lsr.language, "");
- likelyInfo = index << 2;
- }
- LSR likely = lsrs[index];
- if (lsr.script.equals(likely.script)) {
- return likelyInfo | 1;
- } else {
- return likelyInfo & ~1;
- }
- }
- if (!lsr.region.equals(other.region)) {
- int index;
- if (likelyInfo >= 0 && (likelyInfo & 2) != 0) {
- index = likelyInfo >> 2;
- } else {
- index = getLikelyIndex(lsr.language, lsr.region);
- likelyInfo = (index << 2) | 2;
- }
- LSR likely = lsrs[index];
- if (lsr.region.equals(likely.region)) {
- return likelyInfo | 1;
- } else {
- return likelyInfo & ~1;
- }
- }
- return likelyInfo & ~1; // lsr not better than other
- }
-
- // Subset of maximize().
- private int getLikelyIndex(String language, String script) {
- if (language.equals("und")) {
- language = "";
- }
- if (script.equals("Zzzz")) {
- script = "";
- }
-
- BytesTrie iter = new BytesTrie(trie);
- long state;
- int value;
- // Small optimization: Array lookup for first language letter.
- int c0;
- if (language.length() >= 2 && 0 <= (c0 = language.charAt(0) - 'a') && c0 <= 25 &&
- (state = trieFirstLetterStates[c0]) != 0) {
- value = trieNext(iter.resetToState64(state), language, 1);
- } else {
- value = trieNext(iter, language, 0);
- }
- if (value >= 0) {
- state = iter.getState64();
- } else {
- iter.resetToState64(trieUndState); // "und" ("*")
- state = 0;
- }
-
- if (value > 0) {
- // Intermediate or final value from just language.
- if (value == SKIP_SCRIPT) {
- value = 0;
- }
- } else {
- value = trieNext(iter, script, 0);
- if (value >= 0) {
- state = iter.getState64();
- } else {
- if (state == 0) {
- iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
- } else {
- iter.resetToState64(state);
- value = trieNext(iter, "", 0);
- assert value >= 0;
- state = iter.getState64();
- }
- }
- }
-
- if (value > 0) {
- // Final value from just language or language+script.
- } else {
- value = trieNext(iter, "", 0);
- assert value > 0;
- }
- return value;
- }
-
- private static final int trieNext(BytesTrie iter, String s, int i) {
- BytesTrie.Result result;
- if (s.isEmpty()) {
- result = iter.next('*');
- } else {
- int end = s.length() - 1;
- for (;; ++i) {
- int c = s.charAt(i);
- if (i < end) {
- if (!iter.next(c).hasNext()) {
- return -1;
- }
- } else {
- // last character of this subtag
- result = iter.next(c | 0x80);
- break;
- }
- }
- }
- switch (result) {
- case NO_MATCH: return -1;
- case NO_VALUE: return 0;
- case INTERMEDIATE_VALUE:
- assert iter.getValue() == SKIP_SCRIPT;
- return SKIP_SCRIPT;
- case FINAL_VALUE: return iter.getValue();
- default: return -1;
- }
- }
-
- public LSR minimizeSubtags(String languageIn, String scriptIn, String regionIn,
- ULocale.Minimize fieldToFavor) {
- LSR max = maximize(languageIn, scriptIn, regionIn, true);
- if (max.language.isEmpty() && max.region.isEmpty() && max.script.isEmpty()) {
- // Cannot match, return as is
- return new LSR(languageIn, scriptIn, regionIn, LSR.EXPLICIT_LSR);
- }
- LSR test = maximize(max.language, "", "", true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, "", "", LSR.DONT_CARE_FLAGS);
- }
- if (ULocale.Minimize.FAVOR_REGION == fieldToFavor) {
- test = maximize(max.language, "", max.region, true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, "", max.region, LSR.DONT_CARE_FLAGS);
- }
- test = maximize(max.language, max.script, "", true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, max.script, "", LSR.DONT_CARE_FLAGS);
- }
- } else {
- test = maximize(max.language, max.script, "", true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, max.script, "", LSR.DONT_CARE_FLAGS);
- }
- test = maximize(max.language, "", max.region, true);
- if (test.isEquivalentTo(max)) {
- return new LSR(max.language, "", max.region, LSR.DONT_CARE_FLAGS);
- }
- }
- return new LSR(max.language, max.script, max.region, LSR.DONT_CARE_FLAGS);
- }
-
- private Map<String, LSR> getTable() {
- Map<String, LSR> map = new TreeMap<>();
- StringBuilder sb = new StringBuilder();
- for (BytesTrie.Entry entry : trie) {
- sb.setLength(0);
- int length = entry.bytesLength();
- for (int i = 0; i < length;) {
- byte b = entry.byteAt(i++);
- if (b == '*') {
- sb.append("*-");
- } else if (b >= 0) {
- sb.append((char) b);
- } else { // end of subtag
- sb.append((char) (b & 0x7f)).append('-');
- }
- }
- assert sb.length() > 0 && sb.charAt(sb.length() - 1) == '-';
- sb.setLength(sb.length() - 1);
- map.put(sb.toString(), lsrs[entry.value]);
- }
- return map;
- }
-
- @Override
- public String toString() {
- return getTable().toString();
- }
-}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantAffixModifier.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantAffixModifier.java
index 66e491572..fc65bbb82 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantAffixModifier.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantAffixModifier.java
@@ -89,7 +89,7 @@ public class ConstantAffixModifier implements Modifier {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
if (!(other instanceof ConstantAffixModifier)) {
return false;
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java
index f76f5684b..1a3eafd10 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java
@@ -96,14 +96,11 @@ public class ConstantMultiFieldModifier implements Modifier {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
if (!(other instanceof ConstantMultiFieldModifier)) {
return false;
}
ConstantMultiFieldModifier _other = (ConstantMultiFieldModifier) other;
- if (parameters != null && _other.parameters != null && parameters.obj == _other.parameters.obj) {
- return true;
- }
return Arrays.equals(prefixChars, _other.prefixChars) && Arrays.equals(prefixFields, _other.prefixFields)
&& Arrays.equals(suffixChars, _other.suffixChars) && Arrays.equals(suffixFields, _other.suffixFields)
&& overwrite == _other.overwrite && strong == _other.strong;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java
index a02a48e82..415d8a82c 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java
@@ -718,7 +718,7 @@ public abstract class DecimalQuantity_AbstractBCD implements DecimalQuantity {
StringBuilder sb = new StringBuilder();
toScientificString(sb);
- return Double.valueOf(sb.toString());
+ return Double.parseDouble(sb.toString());
}
@Override
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Grouper.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Grouper.java
index a15ac6f23..3b98cf61f 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Grouper.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Grouper.java
@@ -80,7 +80,7 @@ public class Grouper {
ICUResourceBundle resource = (ICUResourceBundle) UResourceBundle
.getBundleInstance(ICUData.ICU_BASE_NAME, locale);
String result = resource.getStringWithFallback("NumberElements/minimumGroupingDigits");
- return Short.valueOf(result);
+ return Short.parseShort(result);
}
/**
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Modifier.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Modifier.java
index da2759f86..db8411366 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Modifier.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/Modifier.java
@@ -24,6 +24,7 @@ public interface Modifier {
POS;
static final int COUNT = Signum.values().length;
+ public static final Signum[] VALUES = Signum.values();
};
/**
@@ -84,8 +85,45 @@ public interface Modifier {
public Parameters getParameters();
/**
+ * Returns whether this Modifier equals another Modifier.
+ */
+ public boolean strictEquals(Modifier other);
+
+ /**
* Returns whether this Modifier is *semantically equivalent* to the other Modifier;
* in many cases, this is the same as equal, but parameters should be ignored.
*/
- public boolean semanticallyEquivalent(Modifier other);
+ default boolean semanticallyEquivalent(Modifier other) {
+ Parameters paramsThis = this.getParameters();
+ Parameters paramsOther = other.getParameters();
+ if (paramsThis == null && paramsOther == null) {
+ return this.strictEquals(other);
+ } else if (paramsThis == null || paramsOther == null) {
+ return false;
+ } else if (paramsThis.obj == null && paramsOther.obj == null) {
+ return this.strictEquals(other);
+ } else if (paramsThis.obj == null || paramsOther.obj == null) {
+ return false;
+ }
+ for (Signum signum : Signum.VALUES) {
+ for (StandardPlural plural : StandardPlural.VALUES) {
+ Modifier mod1 = paramsThis.obj.getModifier(signum, plural);
+ Modifier mod2 = paramsOther.obj.getModifier(signum, plural);
+ if (mod1 == mod2) {
+ // Equal pointers
+ continue;
+ } else if (mod1 == null || mod2 == null) {
+ // One pointer is null but not the other
+ return false;
+ } else if (!mod1.strictEquals(mod2)) {
+ // The modifiers are NOT equivalent
+ return false;
+ } else {
+ // The modifiers are equivalent
+ continue;
+ }
+ }
+ }
+ return true;
+ }
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/MutablePatternModifier.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/MutablePatternModifier.java
index ca0661f3d..7b77e04fd 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/MutablePatternModifier.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/MutablePatternModifier.java
@@ -347,7 +347,7 @@ public class MutablePatternModifier implements Modifier, SymbolProvider, MicroPr
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
// This method is not currently used. (unsafe path not used in range formatting)
assert false;
return false;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/SimpleModifier.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/SimpleModifier.java
index ca77e489b..7070c707e 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/SimpleModifier.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/SimpleModifier.java
@@ -71,14 +71,11 @@ public class SimpleModifier implements Modifier {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
if (!(other instanceof SimpleModifier)) {
return false;
}
SimpleModifier _other = (SimpleModifier) other;
- if (parameters != null && _other.parameters != null && parameters.obj == _other.parameters.obj) {
- return true;
- }
return compiledPattern.equals(_other.compiledPattern) && field == _other.field && strong == _other.strong;
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java
index bbc5be267..3aa643d71 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java
@@ -11,6 +11,7 @@ import java.util.HashMap;
import com.ibm.icu.impl.ICUData;
import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.IllegalIcuArgumentException;
import com.ibm.icu.impl.UResource;
import com.ibm.icu.util.MeasureUnit;
import com.ibm.icu.util.UResourceBundle;
@@ -77,6 +78,15 @@ public class ConversionRates {
}
+ // Map the MeasureUnitImpl for a simple unit to its corresponding SimpleUnitID,
+ // then get the specialMappingName for that SimpleUnitID (which may be null if
+ // the simple unit converts to base using factor + offset instelad of a special mapping).
+ protected String getSpecialMappingName(MeasureUnitImpl simpleUnit) {
+ if (!checkSimpleUnit(simpleUnit)) return null;
+ String simpleIdentifier = simpleUnit.getSingleUnits().get(0).getSimpleUnitID();
+ return this.mapToConversionRate.get(simpleIdentifier).getSpecialMappingName();
+ }
+
public MeasureUnitImpl extractCompoundBaseUnit(MeasureUnitImpl measureUnit) {
ArrayList<SingleUnitImpl> baseUnits = this.extractBaseUnits(measureUnit);
@@ -162,6 +172,7 @@ public class ConversionRates {
String target = null;
String factor = null;
String offset = "0";
+ String special = null;
String systems = null;
for (int j = 0; simpleUnitConversionInfo.getKeyAndValue(j, key, value); j++) {
assert (value.getType() == UResourceBundle.STRING);
@@ -175,18 +186,20 @@ public class ConversionRates {
factor = valueString;
} else if ("offset".equals(keyString)) {
offset = valueString;
+ } else if ("special".equals(keyString)) {
+ special = valueString; // the name of a special mapping used instead of factor + optional offset.
} else if ("systems".equals(keyString)) {
systems = value.toString(); // still want the spaces here
} else {
- assert false : "The key must be target, factor, systems or offset";
+ assert false : "The key must be target, factor, offset, special, or systems";
}
}
// HERE a single conversion rate data should be loaded
assert (target != null);
- assert (factor != null);
+ assert (factor != null || special != null);
- mapToConversionRate.put(simpleUnit, new ConversionRateInfo(simpleUnit, target, factor, offset, systems));
+ mapToConversionRate.put(simpleUnit, new ConversionRateInfo(simpleUnit, target, factor, offset, special, systems));
}
@@ -204,13 +217,15 @@ public class ConversionRates {
private final String target;
private final String conversionRate;
private final BigDecimal offset;
+ private final String specialMappingName; // the name of a special mapping used instead of factor + optional offset.
private final String systems;
- public ConversionRateInfo(String simpleUnit, String target, String conversionRate, String offset, String systems) {
+ public ConversionRateInfo(String simpleUnit, String target, String conversionRate, String offset, String special, String systems) {
this.simpleUnit = simpleUnit;
this.target = target;
this.conversionRate = conversionRate;
this.offset = forNumberWithDivision(offset);
+ this.specialMappingName = special;
this.systems = systems;
}
@@ -246,12 +261,24 @@ public class ConversionRates {
* @return The conversion rate from this unit to the base unit.
*/
public String getConversionRate() {
+ if (conversionRate==null) {
+ throw new IllegalIcuArgumentException("trying to use a null conversion rate (for special?)");
+ }
return conversionRate;
}
/**
+ * @return The name of the special conversion system for this unit (used instead of factor + optional offset).
+ */
+ public String getSpecialMappingName() {
+ return specialMappingName;
+ }
+
+ /**
* @return The measurement systems this unit belongs to.
*/
- public String getSystems() { return systems; }
+ public String getSystems() {
+ return systems;
+ }
}
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/MeasureUnitImpl.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/MeasureUnitImpl.java
index ed8856075..2363dee92 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/MeasureUnitImpl.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/MeasureUnitImpl.java
@@ -780,6 +780,20 @@ public class MeasureUnitImpl {
@Override
public int compare(MeasureUnitImpl o1, MeasureUnitImpl o2) {
+ String special1 = this.conversionRates.getSpecialMappingName(o1);
+ String special2 = this.conversionRates.getSpecialMappingName(o2);
+ if (special1 != null || special2 != null) {
+ if (special1 == null) {
+ // non-specials come first
+ return -1;
+ }
+ if (special2 == null) {
+ // non-specials come first
+ return 1;
+ }
+ // both are specials, compare lexicographically
+ return special1.compareTo(special2);
+ }
BigDecimal factor1 = this.conversionRates.getFactorToBase(o1).getConversionRate();
BigDecimal factor2 = this.conversionRates.getFactorToBase(o2).getConversionRate();
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitPreferences.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitPreferences.java
index ec4d7fec7..095924976 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitPreferences.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitPreferences.java
@@ -92,7 +92,7 @@ public class UnitPreferences {
}
}
- String region = ULocale.getRegionForSupplementalData(locale, false);
+ String region = ULocale.getRegionForSupplementalData(locale, true);
// Check the locale system tag, e.g `ms=metric`.
String localeSystem = locale.getKeywordValue("measure");
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitsConverter.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitsConverter.java
index da4a0b2ae..fffb70b32 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitsConverter.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/UnitsConverter.java
@@ -6,16 +6,20 @@ import static java.math.MathContext.DECIMAL128;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.regex.Pattern;
import com.ibm.icu.impl.IllegalIcuArgumentException;
import com.ibm.icu.util.MeasureUnit;
+// TODO ICU-22683: Consider splitting handling of special mappings into separate (possibly internal) class
public class UnitsConverter {
private BigDecimal conversionRate;
private boolean reciprocal;
private BigDecimal offset;
+ private String specialSource;
+ private String specialTarget;
/**
* Constructor of <code>UnitsConverter</code>.
@@ -42,6 +46,7 @@ public class UnitsConverter {
* NOTE:
* - source and target must be under the same category
* - e.g. meter to mile --> both of them are length units.
+ * This converts from source to base to target (one of those may be a no-op).
*
* @param source represents the source unit.
* @param target represents the target unit.
@@ -53,21 +58,38 @@ public class UnitsConverter {
throw new IllegalIcuArgumentException("input units must be convertible or reciprocal");
}
- Factor sourceToBase = conversionRates.getFactorToBase(source);
- Factor targetToBase = conversionRates.getFactorToBase(target);
+ this.specialSource = conversionRates.getSpecialMappingName(source);
+ this.specialTarget = conversionRates.getSpecialMappingName(target);
- if (convertibility == Convertibility.CONVERTIBLE) {
- this.conversionRate = sourceToBase.divide(targetToBase).getConversionRate();
+ if (this.specialSource == null && this.specialTarget == null) {
+ Factor sourceToBase = conversionRates.getFactorToBase(source);
+ Factor targetToBase = conversionRates.getFactorToBase(target);
+
+ if (convertibility == Convertibility.CONVERTIBLE) {
+ this.conversionRate = sourceToBase.divide(targetToBase).getConversionRate();
+ } else {
+ assert convertibility == Convertibility.RECIPROCAL;
+ this.conversionRate = sourceToBase.multiply(targetToBase).getConversionRate();
+ }
+ this.reciprocal = convertibility == Convertibility.RECIPROCAL;
+
+ // calculate the offset
+ this.offset = conversionRates.getOffset(source, target, sourceToBase, targetToBase, convertibility);
+ // We should see no offsets for reciprocal conversions - they don't make sense:
+ assert convertibility != Convertibility.RECIPROCAL || this.offset == BigDecimal.ZERO;
} else {
- assert convertibility == Convertibility.RECIPROCAL;
- this.conversionRate = sourceToBase.multiply(targetToBase).getConversionRate();
+ this.reciprocal = false;
+ this.offset = BigDecimal.ZERO;
+ if (this.specialSource == null) {
+ // conversionRate is for source to base only
+ this.conversionRate = conversionRates.getFactorToBase(source).getConversionRate();
+ } else if (this.specialTarget == null) {
+ // conversionRate is for base to target only
+ this.conversionRate = conversionRates.getFactorToBase(target).getConversionRate();
+ } else {
+ this.conversionRate = BigDecimal.ONE;
+ }
}
- this.reciprocal = convertibility == Convertibility.RECIPROCAL;
-
- // calculate the offset
- this.offset = conversionRates.getOffset(source, target, sourceToBase, targetToBase, convertibility);
- // We should see no offsets for reciprocal conversions - they don't make sense:
- assert convertibility != Convertibility.RECIPROCAL || this.offset == BigDecimal.ZERO;
}
static public Convertibility extractConvertibility(MeasureUnitImpl source, MeasureUnitImpl target, ConversionRates conversionRates) {
@@ -110,8 +132,34 @@ public class UnitsConverter {
return true;
}
+ // Convert inputValue (source) to base then to target
public BigDecimal convert(BigDecimal inputValue) {
- BigDecimal result = inputValue.multiply(this.conversionRate).add(offset);
+ BigDecimal result = inputValue;
+ if (this.specialSource != null || this.specialTarget != null) {
+ BigDecimal base = inputValue;
+ // convert input (=source) to base
+ if (this.specialSource != null) {
+ // We have a special mapping from source to base (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ base = (this.specialSource.equals("beaufort"))?
+ scaleToBase(inputValue, minMetersPerSecForBeaufort): inputValue;
+ } else {
+ // Standard mapping (using factor, offset) from source to base.
+ base = inputValue.multiply(this.conversionRate);
+ }
+ // convert base to result (=target)
+ if (this.specialTarget != null) {
+ // We have a special mapping from base to target (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ result = (this.specialTarget.equals("beaufort"))?
+ baseToScale(base, minMetersPerSecForBeaufort): base;
+ } else {
+ // Standard mapping (using factor, offset) from base to target.
+ result = base.divide(this.conversionRate, DECIMAL128);
+ }
+ return result;
+ }
+ result = inputValue.multiply(this.conversionRate).add(offset);
if (this.reciprocal) {
// We should see no offsets for reciprocal conversions - they don't make sense:
assert offset == BigDecimal.ZERO;
@@ -124,8 +172,33 @@ public class UnitsConverter {
return result;
}
+ // Convert inputValue (target) to base then to source
public BigDecimal convertInverse(BigDecimal inputValue) {
BigDecimal result = inputValue;
+ if (this.specialSource != null || this.specialTarget != null) {
+ BigDecimal base = inputValue;
+ // convert input (=target) to base
+ if (this.specialTarget != null) {
+ // We have a special mapping from target to base (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ base = (this.specialTarget.equals("beaufort"))?
+ scaleToBase(inputValue, minMetersPerSecForBeaufort): inputValue;
+ } else {
+ // Standard mapping (using factor, offset) from target to base.
+ base = inputValue.multiply(this.conversionRate);
+ }
+ // convert base to result (=source)
+ if (this.specialSource != null) {
+ // We have a special mapping from base to source (not using factor, offset).
+ // Currently the only supported mapping is a scale-based mapping for beaufort.
+ result = (this.specialSource.equals("beaufort"))?
+ baseToScale(base, minMetersPerSecForBeaufort): base;
+ } else {
+ // Standard mapping (using factor, offset) from base to source.
+ result = base.divide(this.conversionRate, DECIMAL128);
+ }
+ return result;
+ }
if (this.reciprocal) {
// We should see no offsets for reciprocal conversions - they don't make sense:
assert offset == BigDecimal.ZERO;
@@ -139,6 +212,64 @@ public class UnitsConverter {
return result;
}
+ // TODO per CLDR-17421 and ICU-22683: consider getting the data below from CLDR
+ private static final BigDecimal[] minMetersPerSecForBeaufort = {
+ // Minimum m/s (base) values for each Bft value, plus an extra artificial value;
+ // when converting from Bft to m/s, the middle of the range will be used
+ // (Values from table in Wikipedia, except for artificial value).
+ // Since this is 0 based, max Beaufort value is thus array dimension minus 2.
+ BigDecimal.valueOf(0.0), // 0 Bft
+ BigDecimal.valueOf(0.3), // 1
+ BigDecimal.valueOf(1.6), // 2
+ BigDecimal.valueOf(3.4), // 3
+ BigDecimal.valueOf(5.5), // 4
+ BigDecimal.valueOf(8.0), // 5
+ BigDecimal.valueOf(10.8), // 6
+ BigDecimal.valueOf(13.9), // 7
+ BigDecimal.valueOf(17.2), // 8
+ BigDecimal.valueOf(20.8), // 9
+ BigDecimal.valueOf(24.5), // 10
+ BigDecimal.valueOf(28.5), // 11
+ BigDecimal.valueOf(32.7), // 12
+ BigDecimal.valueOf(36.9), // 13
+ BigDecimal.valueOf(41.4), // 14
+ BigDecimal.valueOf(46.1), // 15
+ BigDecimal.valueOf(51.1), // 16
+ BigDecimal.valueOf(55.8), // 17
+ BigDecimal.valueOf(61.4), // artificial end of range 17 to give reasonable midpoint
+ };
+
+ // Convert from what should be discrete scale values for a particular unit like beaufort
+ // to a corresponding value in the base unit (which can have any decimal value, like meters/sec).
+ // First we round the scale value to the nearest integer (in case it is specified with a fractional value),
+ // then we map that to a value in middle of the range of corresponding base values.
+ // This can handle different scales, specified by minBaseForScaleValues[].
+ private BigDecimal scaleToBase(BigDecimal scaleValue, BigDecimal[] minBaseForScaleValues) {
+ BigDecimal pointFive = BigDecimal.valueOf(0.5);
+ BigDecimal scaleAdjust = scaleValue.abs().add(pointFive); // adjust up for later truncation
+ BigDecimal scaleAdjustCapped = scaleAdjust.min(BigDecimal.valueOf(minBaseForScaleValues.length - 2));
+ int scaleIndex = scaleAdjustCapped.intValue();
+ // Return midpont of range (the final range uses an articial end to produce reasonable midpoint)
+ return minBaseForScaleValues[scaleIndex].add(minBaseForScaleValues[scaleIndex + 1]).multiply(pointFive);
+ }
+
+ // Convert from a value in the base unit (which can have any decimal value, like meters/sec) to a corresponding
+ // discrete value in a scale (like beaufort), where each scale value represents a range of base values.
+ // We binary-search the ranges to find the one that contains the specified base value, and return its index.
+ // This can handle different scales, specified by minBaseForScaleValues[].
+ private BigDecimal baseToScale(BigDecimal baseValue, BigDecimal[] minBaseForScaleValues) {
+ int scaleIndex = Arrays.binarySearch(minBaseForScaleValues, baseValue.abs());
+ if (scaleIndex < 0) {
+ // since our first array entry is 0, this value will always be -2 or less
+ scaleIndex = -scaleIndex - 2;
+ }
+ int scaleMax = minBaseForScaleValues.length - 2;
+ if (scaleIndex > scaleMax) {
+ scaleIndex = scaleMax;
+ }
+ return BigDecimal.valueOf(scaleIndex);
+ }
+
public enum Convertibility {
CONVERTIBLE,
RECIPROCAL,
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/lang/UCharacter.java b/icu4j/main/core/src/main/java/com/ibm/icu/lang/UCharacter.java
index 9c779b0a2..03e19013c 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/lang/UCharacter.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/lang/UCharacter.java
@@ -10,6 +10,7 @@
package com.ibm.icu.lang;
import java.lang.ref.SoftReference;
+import java.util.EnumSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
@@ -4085,6 +4086,54 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
public static final int UPRIGHT = 3;
}
+ /**
+ * Identifier Status constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UProperty#IDENTIFIER_STATUS
+ * @draft ICU 75
+ */
+ public enum IdentifierStatus {
+ /** @draft ICU 75 */
+ RESTRICTED,
+ /** @draft ICU 75 */
+ ALLOWED,
+ }
+
+ /**
+ * Identifier Type constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UProperty#IDENTIFIER_TYPE
+ * @draft ICU 75
+ */
+ public enum IdentifierType {
+ /** @draft ICU 75 */
+ NOT_CHARACTER,
+ /** @draft ICU 75 */
+ DEPRECATED,
+ /** @draft ICU 75 */
+ DEFAULT_IGNORABLE,
+ /** @draft ICU 75 */
+ NOT_NFKC,
+ /** @draft ICU 75 */
+ NOT_XID,
+ /** @draft ICU 75 */
+ EXCLUSION,
+ /** @draft ICU 75 */
+ OBSOLETE,
+ /** @draft ICU 75 */
+ TECHNICAL,
+ /** @draft ICU 75 */
+ UNCOMMON_USE,
+ /** @draft ICU 75 */
+ LIMITED_USE,
+ /** @draft ICU 75 */
+ INCLUSION,
+ /** @draft ICU 75 */
+ RECOMMENDED,
+ }
+
// public data members -----------------------------------------------
/**
@@ -4581,6 +4630,47 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
}
/**
+ * Does the set of Identifier_Type values code point c contain the given type?
+ *
+ * <p>Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * <p>Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @param c code point
+ * @param type Identifier_Type to check
+ * @return true if type is in Identifier_Type(c)
+ * @draft ICU 75
+ */
+ public static final boolean hasIdentifierType(int c, IdentifierType type) {
+ return UCharacterProperty.INSTANCE.hasIDType(c, type);
+ }
+
+ /**
+ * Writes code point c's Identifier_Type as a set of IdentifierType values and
+ * returns the number of types.
+ * The set is cleared before c's types are added.
+ *
+ * <p>Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * <p>Each code point maps to a <i>set</i> of IdentifierType values.
+ * There is always at least one type.
+ * Only some of the types can be combined with others,
+ * and usually only a small number of types occur together.
+ * Future versions might add additional types.
+ * See UTS #39 and its data files for details.
+ *
+ * @param c code point
+ * @param types output set
+ * @return number of values in c's Identifier_Type
+ * @draft ICU 75
+ */
+ public static final int getIdentifierTypes(int c, EnumSet<IdentifierType> types) {
+ return UCharacterProperty.INSTANCE.getIDTypes(c, types);
+ }
+
+ /**
* Determines if the specified code point should be regarded as an
* ignorable character in a Java identifier.
* A character is Java-identifier-ignorable if it has the general category
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java b/icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java
index 9985089c3..cdec41b9b 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java
@@ -852,11 +852,19 @@ public interface UProperty
public static final int VERTICAL_ORIENTATION = 0x1018;
/**
+ * Enumerated property Identifier_Status.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ * @draft ICU 75
+ */
+ public static final int IDENTIFIER_STATUS = 0x1019;
+
+ /**
* One more than the last constant for enumerated/integer Unicode properties.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
@Deprecated
- public static final int INT_LIMIT = 0x1019;
+ public static final int INT_LIMIT = 0x101A;
/**
* Bitmask property General_Category_Mask.
@@ -1031,11 +1039,26 @@ public interface UProperty
*/
public static final int OTHER_PROPERTY_START=SCRIPT_EXTENSIONS;
/**
+ * Miscellaneous property Identifier_Type.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * <p>Corresponds to {@link UCharacter#hasIdentifierType(int, UCharacter.IdentifierType)} and
+ * {@link UCharacter#getIdentifierTypes(int, java.util.EnumSet)}.
+ *
+ * <p>Each code point maps to a <i>set</i> of IdentifierType values.
+ *
+ * @see UCharacter#hasIdentifierType(int, UCharacter.IdentifierType)
+ * @see UCharacter#getIdentifierTypes(int, java.util.EnumSet)
+ * @draft ICU 75
+ */
+ public static final int IDENTIFIER_TYPE = 0x7001;
+ /**
* One more than the last constant for Unicode properties with unusual value types.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
@Deprecated
- public static final int OTHER_PROPERTY_LIMIT=0x7001;
+ public static final int OTHER_PROPERTY_LIMIT = 0x7002;
/**
* Selector constants for UCharacter.getPropertyName() and
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/lang/UScript.java b/icu4j/main/core/src/main/java/com/ibm/icu/lang/UScript.java
index 8b2c74c6f..4f602990e 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/lang/UScript.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/lang/UScript.java
@@ -1065,6 +1065,9 @@ public final class UScript {
/** @stable ICU 72 */
public static final int NAG_MUNDARI = 199; /* Nagm */
+ /** @stable ICU 75 */
+ public static final int ARABIC_NASTALIQ = 200; /* Aran */
+
/**
* One more than the highest normal UScript code.
* The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT).
@@ -1072,7 +1075,7 @@ public final class UScript {
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
@Deprecated
- public static final int CODE_LIMIT = 200;
+ public static final int CODE_LIMIT = 201;
private static int[] getCodesFromLocale(ULocale locale) {
// Multi-script languages, equivalent to the LocaleScript data
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/math/BigDecimal.java b/icu4j/main/core/src/main/java/com/ibm/icu/math/BigDecimal.java
index be4ca3b2b..45266c4b6 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/math/BigDecimal.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/math/BigDecimal.java
@@ -2887,7 +2887,7 @@ public class BigDecimal extends java.lang.Number implements java.io.Serializable
// Reminder: a zero double returns '0.0', so we cannot fastpath to
// use the constant ZERO. This might be important enough to justify
// a factory approach, a cache, or a few private constants, later.
- return new com.ibm.icu.math.BigDecimal((new java.lang.Double(dub)).toString());
+ return new com.ibm.icu.math.BigDecimal(Double.toString(dub));
}
/**
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/DateTimeFormatterFactory.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/DateTimeFormatterFactory.java
index e5fe7c186..0bed65812 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/DateTimeFormatterFactory.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/DateTimeFormatterFactory.java
@@ -1,31 +1,51 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
+import java.util.Calendar;
import java.util.Locale;
import java.util.Map;
-import java.util.Objects;
+import java.util.TimeZone;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
-import com.ibm.icu.impl.locale.AsciiUtil;
import com.ibm.icu.text.DateFormat;
-import com.ibm.icu.text.SimpleDateFormat;
/**
* Creates a {@link Formatter} doing formatting of date / time, similar to
* <code>{exp, date}</code> and <code>{exp, time}</code> in {@link com.ibm.icu.text.MessageFormat}.
*/
class DateTimeFormatterFactory implements FormatterFactory {
+ private final String kind;
+
+ // "datetime", "date", "time"
+ DateTimeFormatterFactory(String kind) {
+ switch (kind) {
+ case "date":
+ break;
+ case "time":
+ break;
+ case "datetime":
+ break;
+ default:
+ kind = "datetime";
+ }
+ this.kind = kind;
+ }
private static int stringToStyle(String option) {
- switch (AsciiUtil.toUpperString(option)) {
- case "FULL": return DateFormat.FULL;
- case "LONG": return DateFormat.LONG;
- case "MEDIUM": return DateFormat.MEDIUM;
- case "SHORT": return DateFormat.SHORT;
- case "": // intentional fall-through
- case "DEFAULT": return DateFormat.DEFAULT;
- default: throw new IllegalArgumentException("Invalid datetime style: " + option);
+ switch (option) {
+ case "full":
+ return DateFormat.FULL;
+ case "long":
+ return DateFormat.LONG;
+ case "medium":
+ return DateFormat.MEDIUM;
+ case "short":
+ return DateFormat.SHORT;
+ default:
+ throw new IllegalArgumentException("Invalid datetime style: " + option);
}
}
@@ -37,49 +57,279 @@ class DateTimeFormatterFactory implements FormatterFactory {
*/
@Override
public Formatter createFormatter(Locale locale, Map<String, Object> fixedOptions) {
- DateFormat df;
+ int dateStyle = DateFormat.NONE;
+ int timeStyle = DateFormat.NONE;
+ switch (kind) {
+ case "date":
+ dateStyle = getDateTimeStyle(fixedOptions, "style");
+ break;
+ case "time":
+ timeStyle = getDateTimeStyle(fixedOptions, "style");
+ break;
+ case "datetime": // $FALL-THROUGH$
+ default:
+ dateStyle = getDateTimeStyle(fixedOptions, "dateStyle");
+ timeStyle = getDateTimeStyle(fixedOptions, "timeStyle");
+ break;
+ }
// TODO: how to handle conflicts. What if we have both skeleton and style, or pattern?
- Object opt = fixedOptions.get("skeleton");
- if (opt != null) {
- String skeleton = Objects.toString(opt);
- df = DateFormat.getInstanceForSkeleton(skeleton, locale);
- return new DateTimeFormatter(df);
+ if (dateStyle == DateFormat.NONE && timeStyle == DateFormat.NONE) {
+ String skeleton = "";
+ switch (kind) {
+ case "date":
+ skeleton = getDateFieldOptions(fixedOptions);
+ break;
+ case "time":
+ skeleton = getTimeFieldOptions(fixedOptions);
+ break;
+ case "datetime": // $FALL-THROUGH$
+ default:
+ skeleton = getDateFieldOptions(fixedOptions);
+ skeleton += getTimeFieldOptions(fixedOptions);
+ break;
+ }
+
+ if (skeleton.isEmpty()) {
+ // Custom option, icu namespace
+ skeleton = OptUtils.getString(fixedOptions, "icu:skeleton", "");
+ }
+ if (!skeleton.isEmpty()) {
+ DateFormat df = DateFormat.getInstanceForSkeleton(skeleton, locale);
+ return new DateTimeFormatter(locale, df);
+ }
+
+ // No skeletons, custom or otherwise, match fallback to short / short as per spec.
+ switch (kind) {
+ case "date":
+ dateStyle = DateFormat.SHORT;
+ timeStyle = DateFormat.NONE;
+ break;
+ case "time":
+ dateStyle = DateFormat.NONE;
+ timeStyle = DateFormat.SHORT;
+ break;
+ case "datetime": // $FALL-THROUGH$
+ default:
+ dateStyle = DateFormat.SHORT;
+ timeStyle = DateFormat.SHORT;
+ }
}
- opt = fixedOptions.get("pattern");
+ DateFormat df = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale);
+ return new DateTimeFormatter(locale, df);
+ }
+
+ private static int getDateTimeStyle(Map<String, Object> options, String key) {
+ String opt = OptUtils.getString(options, key);
if (opt != null) {
- String pattern = Objects.toString(opt);
- SimpleDateFormat sf = new SimpleDateFormat(pattern, locale);
- return new DateTimeFormatter(sf);
+ return stringToStyle(opt);
}
+ return DateFormat.NONE;
+ }
- int dateStyle = DateFormat.NONE;
- opt = fixedOptions.get("datestyle");
- if (opt != null) {
- dateStyle = stringToStyle(Objects.toString(opt, ""));
+ private static String getDateFieldOptions(Map<String, Object> options) {
+ StringBuilder skeleton = new StringBuilder();
+ String opt;
+
+ // In all the switches below we just ignore invalid options.
+ // Would be nice to report (log?), but ICU does not have a clear policy on how to do that.
+ // But we don't want to throw, that is too drastic.
+
+ opt = OptUtils.getString(options, "weekday", "");
+ switch (opt) {
+ case "long":
+ skeleton.append("EEEE");
+ break;
+ case "short":
+ skeleton.append("E");
+ break;
+ case "narrow":
+ skeleton.append("EEEEEE");
+ break;
+ default:
+ // invalid value, we just ignore it.
}
- int timeStyle = DateFormat.NONE;
- opt = fixedOptions.get("timestyle");
- if (opt != null) {
- timeStyle = stringToStyle(Objects.toString(opt, ""));
+ opt = OptUtils.getString(options, "era", "");
+ switch (opt) {
+ case "long":
+ skeleton.append("GGGG");
+ break;
+ case "short":
+ skeleton.append("G");
+ break;
+ case "narrow":
+ skeleton.append("GGGGG");
+ break;
+ default:
+ // invalid value, we just ignore it.
}
- if (dateStyle == DateFormat.NONE && timeStyle == DateFormat.NONE) {
- // Match the MessageFormat behavior
- dateStyle = DateFormat.SHORT;
- timeStyle = DateFormat.SHORT;
+ opt = OptUtils.getString(options, "year", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("y");
+ break;
+ case "2-digit":
+ skeleton.append("yy");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ opt = OptUtils.getString(options, "month", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("M");
+ break;
+ case "2-digit":
+ skeleton.append("MM");
+ break;
+ case "long":
+ skeleton.append("MMMM");
+ break;
+ case "short":
+ skeleton.append("MMM");
+ break;
+ case "narrow":
+ skeleton.append("MMMMM");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ opt = OptUtils.getString(options, "day", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("d");
+ break;
+ case "2-digit":
+ skeleton.append("dd");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+ return skeleton.toString();
+ }
+
+ private static String getTimeFieldOptions(Map<String, Object> options) {
+ StringBuilder skeleton = new StringBuilder();
+ String opt;
+
+ // In all the switches below we just ignore invalid options.
+ // Would be nice to report (log?), but ICU does not have a clear policy on how to do that.
+ // But we don't want to throw, that is too drastic.
+
+ int showHour = 0;
+ opt = OptUtils.getString(options, "hour", "");
+ switch (opt) {
+ case "numeric":
+ showHour = 1;
+ break;
+ case "2-digit":
+ showHour = 2;
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+ if (showHour > 0) {
+ String hourCycle = "";
+ opt = OptUtils.getString(options, "hourCycle", "");
+ switch (opt) {
+ case "h11":
+ hourCycle = "K";
+ break;
+ case "h12":
+ hourCycle = "h";
+ break;
+ case "h23":
+ hourCycle = "H";
+ break;
+ case "h24":
+ hourCycle = "k";
+ break;
+ default:
+ hourCycle = "j"; // default for the locale
+ }
+ skeleton.append(hourCycle);
+ if (showHour == 2) {
+ skeleton.append(hourCycle);
+ }
+ }
+
+ opt = OptUtils.getString(options, "minute", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("m");
+ break;
+ case "2-digit":
+ skeleton.append("mm");
+ break;
+ default:
+ // invalid value, we just ignore it.
}
- df = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale);
- return new DateTimeFormatter(df);
+ opt = OptUtils.getString(options, "second", "");
+ switch (opt) {
+ case "numeric":
+ skeleton.append("s");
+ break;
+ case "2-digit":
+ skeleton.append("ss");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ opt = OptUtils.getString(options, "fractionalSecondDigits", "");
+ switch (opt) {
+ case "1":
+ skeleton.append("S");
+ break;
+ case "2":
+ skeleton.append("SS");
+ break;
+ case "3":
+ skeleton.append("SSS");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ opt = OptUtils.getString(options, "timeZoneName", "");
+ switch (opt) {
+ case "long":
+ skeleton.append("z");
+ break;
+ case "short":
+ skeleton.append("zzzz");
+ break;
+ case "shortOffset":
+ skeleton.append("O");
+ break;
+ case "longOffset":
+ skeleton.append("OOOO");
+ break;
+ case "shortGeneric":
+ skeleton.append("v");
+ break;
+ case "longGeneric":
+ skeleton.append("vvvv");
+ break;
+ default:
+ // invalid value, we just ignore it.
+ }
+
+ return skeleton.toString();
}
private static class DateTimeFormatter implements Formatter {
private final DateFormat icuFormatter;
+ private final Locale locale;
- private DateTimeFormatter(DateFormat df) {
+ private DateTimeFormatter(Locale locale, DateFormat df) {
+ this.locale = locale;
this.icuFormatter = df;
}
@@ -90,7 +340,24 @@ class DateTimeFormatterFactory implements FormatterFactory {
public FormattedPlaceholder format(Object toFormat, Map<String, Object> variableOptions) {
// TODO: use a special type to indicate function without input argument.
if (toFormat == null) {
- throw new IllegalArgumentException("The date to format can't be null");
+ return null;
+ }
+ if (toFormat instanceof CharSequence) {
+ toFormat = parseIso8601(toFormat.toString());
+ // We were unable to parse the input as iso date
+ if (toFormat instanceof CharSequence) {
+ return new FormattedPlaceholder(
+ toFormat, new PlainStringFormattedValue("{|" + toFormat + "|}"));
+ }
+ }
+ if (toFormat instanceof Calendar) {
+ TimeZone tz = ((Calendar) toFormat).getTimeZone();
+ long milis = ((Calendar) toFormat).getTimeInMillis();
+ com.ibm.icu.util.TimeZone icuTz = com.ibm.icu.util.TimeZone.getTimeZone(tz.getID());
+ com.ibm.icu.util.Calendar calendar =
+ com.ibm.icu.util.Calendar.getInstance(icuTz, locale);
+ calendar.setTimeInMillis(milis);
+ toFormat = calendar;
}
String result = icuFormatter.format(toFormat);
return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue(result));
@@ -101,7 +368,68 @@ class DateTimeFormatterFactory implements FormatterFactory {
*/
@Override
public String formatToString(Object toFormat, Map<String, Object> variableOptions) {
- return format(toFormat, variableOptions).toString();
+ FormattedPlaceholder result = format(toFormat, variableOptions);
+ return result != null ? result.toString() : null;
}
}
+
+ private final static Pattern ISO_PATTERN = Pattern.compile(
+ "^(([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])){1}(T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(\\.[0-9]{1,3})?(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?)?$");
+
+ private static Integer safeParse(String str) {
+ if (str == null || str.isEmpty())
+ return null;
+ return Integer.parseInt(str);
+ }
+
+ private static Object parseIso8601(String text) {
+ Matcher m = ISO_PATTERN.matcher(text);
+ if (m.find() && m.groupCount() == 12 && !m.group().isEmpty()) {
+ Integer year = safeParse(m.group(2));
+ Integer month = safeParse(m.group(3));
+ Integer day = safeParse(m.group(4));
+ Integer hour = safeParse(m.group(6));
+ Integer minute = safeParse(m.group(7));
+ Integer second = safeParse(m.group(8));
+ Integer millisecond = 0;
+ if (m.group(9) != null) {
+ String z = (m.group(9) + "000").substring(1, 4);
+ millisecond = safeParse(z);
+ } else {
+ millisecond = 0;
+ }
+ String tzPart = m.group(10);
+
+ if (hour == null) {
+ hour = 0;
+ minute = 0;
+ second = 0;
+ }
+
+ com.ibm.icu.util.GregorianCalendar gc = new com.ibm.icu.util.GregorianCalendar(
+ year, month - 1, day, hour, minute, second);
+ gc.set(com.ibm.icu.util.Calendar.MILLISECOND, millisecond);
+
+ if (tzPart != null) {
+ if (tzPart.equals("Z")) {
+ gc.setTimeZone(com.ibm.icu.util.TimeZone.GMT_ZONE);
+ } else {
+ int sign = tzPart.startsWith("-") ? -1 : 1;
+ String[] tzParts = tzPart.substring(1).split(":");
+ if (tzParts.length == 2) {
+ Integer tzHour = safeParse(tzParts[0]);
+ Integer tzMin = safeParse(tzParts[1]);
+ if (tzHour != null && tzMin != null) {
+ int offset = sign * (tzHour * 60 + tzMin) * 60 * 1000;
+ gc.setTimeZone(new com.ibm.icu.util.SimpleTimeZone(offset, "offset"));
+ }
+ }
+ }
+ }
+
+ return gc;
+ }
+ return text;
+ }
+
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedMessage.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedMessage.java
index 817aa7022..0bb0c442b 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedMessage.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedMessage.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
@@ -116,5 +116,4 @@ public class FormattedMessage implements FormattedValue {
public AttributedCharacterIterator toCharacterIterator() {
throw new RuntimeException("Not yet implemented.");
}
-
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedPlaceholder.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedPlaceholder.java
index d1c206b4f..9112c3ace 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedPlaceholder.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormattedPlaceholder.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Formatter.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Formatter.java
index 19961e6d1..6ed6b4aea 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Formatter.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Formatter.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormatterFactory.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormatterFactory.java
index 0955894cc..4ece12344 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormatterFactory.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/FormatterFactory.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/IdentityFormatterFactory.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/IdentityFormatterFactory.java
index b5334b1b9..7e570df7d 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/IdentityFormatterFactory.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/IdentityFormatterFactory.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
@@ -25,7 +25,8 @@ class IdentityFormatterFactory implements FormatterFactory {
*/
@Override
public FormattedPlaceholder format(Object toFormat, Map<String, Object> variableOptions) {
- return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue(Objects.toString(toFormat)));
+ return new FormattedPlaceholder(
+ toFormat, new PlainStringFormattedValue(Objects.toString(toFormat)));
}
/**
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/InputSource.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/InputSource.java
new file mode 100644
index 000000000..8c89c93bf
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/InputSource.java
@@ -0,0 +1,84 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+class InputSource {
+ final String buffer;
+
+ private int cursor;
+ private int lastReadCursor = -1;
+ private int lastReadCount = 0;
+
+ InputSource(String input) {
+ if (input == null) {
+ throw new IllegalArgumentException("Input string should not be null");
+ }
+ this.buffer = input;
+ this.cursor = 0;
+ }
+
+ boolean atEnd() {
+ return cursor >= buffer.length();
+ }
+
+ int peekChar() {
+ if (atEnd()) {
+ return -1;
+ }
+ return buffer.charAt(cursor);
+ }
+
+ int readCodePoint() {
+ // TODO: remove this?
+ // START Detect possible infinite loop
+ if (lastReadCursor != cursor) {
+ lastReadCursor = cursor;
+ lastReadCount = 1;
+ } else {
+ lastReadCount++;
+ if (lastReadCount >= 10) {
+ throw new RuntimeException("Stuck in a loop!");
+ }
+ }
+ // END Detect possible infinite loop
+
+ if (atEnd()) {
+ return -1;
+ }
+
+ char c = buffer.charAt(cursor++);
+ if (Character.isHighSurrogate(c)) {
+ if (!atEnd()) {
+ char c2 = buffer.charAt(cursor++);
+ if (Character.isLowSurrogate(c2)) {
+ return Character.toCodePoint(c, c2);
+ } else { // invalid, high surrogate followed by non-surrogate
+ cursor--;
+ return c;
+ }
+ }
+ }
+ return c;
+ }
+
+ // Backup a number of characters.
+ void backup(int amount) {
+ // TODO: validate
+ cursor -= amount;
+ }
+
+ int getPosition() {
+ return cursor;
+ }
+
+ void skip(int amount) {
+ // TODO: validate
+ cursor += amount;
+ }
+
+ void gotoPosition(int position) {
+ // TODO: validate
+ cursor = position;
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModel.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModel.java
new file mode 100644
index 000000000..b459404c8
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModel.java
@@ -0,0 +1,494 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This maps closely to the official specification.
+ * Since it is not final, we will not add javadoc everywhere.
+ *
+ * <p>See <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model/README.md">the
+ * latest description</a>.</p>
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+@Deprecated
+@SuppressWarnings("javadoc")
+public class MFDataModel {
+
+ private MFDataModel() {
+ // Prevent instantiation
+ }
+
+ // Messages
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public interface Message {
+ // Provides a common type for PatternMessage and SelectMessage.
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class PatternMessage implements Message {
+ public final List<Declaration> declarations;
+ public final Pattern pattern;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public PatternMessage(List<Declaration> declarations, Pattern pattern) {
+ this.declarations = declarations;
+ this.pattern = pattern;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class SelectMessage implements Message {
+ public final List<Declaration> declarations;
+ public final List<Expression> selectors;
+ public final List<Variant> variants;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public SelectMessage(
+ List<Declaration> declarations,
+ List<Expression> selectors,
+ List<Variant> variants) {
+ this.declarations = declarations;
+ this.selectors = selectors;
+ this.variants = variants;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public interface Declaration {
+ // Provides a common type for InputDeclaration, LocalDeclaration, and UnsupportedStatement.
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class InputDeclaration implements Declaration {
+ public final String name;
+ public final VariableExpression value;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public InputDeclaration(String name, VariableExpression value) {
+ this.name = name;
+ this.value = value;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class LocalDeclaration implements Declaration {
+ public final String name;
+ public final Expression value;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public LocalDeclaration(String name, Expression value) {
+ this.name = name;
+ this.value = value;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class UnsupportedStatement implements Declaration {
+ public final String keyword;
+ public final String body;
+ public final List<Expression> expressions;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public UnsupportedStatement(String keyword, String body, List<Expression> expressions) {
+ this.keyword = keyword;
+ this.body = body;
+ this.expressions = expressions;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public interface LiteralOrCatchallKey {
+ // Provides a common type for the selection keys: Variant, Literal, or CatchallKey.
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class Variant implements LiteralOrCatchallKey {
+ public final List<LiteralOrCatchallKey> keys;
+ public final Pattern value;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Variant(List<LiteralOrCatchallKey> keys, Pattern value) {
+ this.keys = keys;
+ this.value = value;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class CatchallKey implements LiteralOrCatchallKey {
+ // String value; // Always '*' in MF2
+ }
+
+ // Patterns
+
+ // type Pattern = Array<string | Expression | Markup>;
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class Pattern {
+ public final List<PatternPart> parts;
+
+ Pattern() {
+ this.parts = new ArrayList<>();
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public interface PatternPart {
+ // Provides a common type for StringPart and Expression.
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class StringPart implements PatternPart {
+ public final String value;
+
+ StringPart(String value) {
+ this.value = value;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public interface Expression extends PatternPart {
+ // Provides a common type for all kind of expressions:
+ // LiteralExpression, VariableExpression, FunctionExpression, UnsupportedExpression, Markup
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class LiteralExpression implements Expression {
+ public final Literal arg;
+ public final Annotation annotation;
+ public final List<Attribute> attributes;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public LiteralExpression(Literal arg, Annotation annotation, List<Attribute> attributes) {
+ this.arg = arg;
+ this.annotation = annotation;
+ this.attributes = attributes;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class VariableExpression implements Expression {
+ public final VariableRef arg;
+ public final Annotation annotation;
+ public final List<Attribute> attributes;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public VariableExpression(
+ VariableRef arg, Annotation annotation, List<Attribute> attributes) {
+ this.arg = arg;
+ this.annotation = annotation;
+ this.attributes = attributes;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public interface Annotation {
+ // Provides a common type for FunctionAnnotation, UnsupportedAnnotation
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class FunctionExpression implements Expression {
+ public final FunctionAnnotation annotation;
+ public final List<Attribute> attributes;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public FunctionExpression(FunctionAnnotation annotation, List<Attribute> attributes) {
+ this.annotation = annotation;
+ this.attributes = attributes;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class UnsupportedExpression implements Expression {
+ public final UnsupportedAnnotation annotation;
+ public final List<Attribute> attributes;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public UnsupportedExpression(UnsupportedAnnotation annotation, List<Attribute> attributes) {
+ this.annotation = annotation;
+ this.attributes = attributes;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class Attribute {
+ public final String name;
+ public final LiteralOrVariableRef value;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Attribute(String name, LiteralOrVariableRef value) {
+ this.name = name;
+ this.value = value;
+ }
+ }
+
+ // Expressions
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public interface LiteralOrVariableRef {
+ // Provides a common type for Literal and VariableRef,
+ // to represent things like `foo` / `|foo|` / `1234` (literals)
+ // and `$foo` (VariableRef), as argument for placeholders or value in options.
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class Literal implements LiteralOrVariableRef, LiteralOrCatchallKey {
+ public final String value;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Literal(String value) {
+ this.value = value;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class VariableRef implements LiteralOrVariableRef {
+ public final String name;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public VariableRef(String name) {
+ this.name = name;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class FunctionAnnotation implements Annotation {
+ public final String name;
+ public final Map<String, Option> options;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public FunctionAnnotation(String name, Map<String, Option> options) {
+ this.name = name;
+ this.options = options;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class Option {
+ public final String name;
+ public final LiteralOrVariableRef value;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Option(String name, LiteralOrVariableRef value) {
+ this.name = name;
+ this.value = value;
+ }
+ }
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class UnsupportedAnnotation implements Annotation {
+ public final String source;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public UnsupportedAnnotation(String source) {
+ this.source = source;
+ }
+ }
+
+ // Markup
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class Markup implements Expression {
+ enum Kind {
+ OPEN,
+ CLOSE,
+ STANDALONE
+ }
+
+ public final Kind kind;
+ public final String name;
+ public final Map<String, Option> options;
+ public final List<Attribute> attributes;
+
+ /**
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Markup(
+ Kind kind, String name, Map<String, Option> options, List<Attribute> attributes) {
+ this.kind = kind;
+ this.name = name;
+ this.options = options;
+ this.attributes = attributes;
+ }
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModelFormatter.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModelFormatter.java
new file mode 100644
index 000000000..6afaabd04
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModelFormatter.java
@@ -0,0 +1,601 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import com.ibm.icu.message2.MFDataModel.Annotation;
+import com.ibm.icu.message2.MFDataModel.CatchallKey;
+import com.ibm.icu.message2.MFDataModel.Declaration;
+import com.ibm.icu.message2.MFDataModel.Expression;
+import com.ibm.icu.message2.MFDataModel.FunctionAnnotation;
+import com.ibm.icu.message2.MFDataModel.FunctionExpression;
+import com.ibm.icu.message2.MFDataModel.InputDeclaration;
+import com.ibm.icu.message2.MFDataModel.Literal;
+import com.ibm.icu.message2.MFDataModel.LiteralExpression;
+import com.ibm.icu.message2.MFDataModel.LiteralOrCatchallKey;
+import com.ibm.icu.message2.MFDataModel.LiteralOrVariableRef;
+import com.ibm.icu.message2.MFDataModel.LocalDeclaration;
+import com.ibm.icu.message2.MFDataModel.Option;
+import com.ibm.icu.message2.MFDataModel.Pattern;
+import com.ibm.icu.message2.MFDataModel.SelectMessage;
+import com.ibm.icu.message2.MFDataModel.StringPart;
+import com.ibm.icu.message2.MFDataModel.UnsupportedAnnotation;
+import com.ibm.icu.message2.MFDataModel.UnsupportedExpression;
+import com.ibm.icu.message2.MFDataModel.VariableRef;
+import com.ibm.icu.message2.MFDataModel.Variant;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.CurrencyAmount;
+
+/**
+ * Takes an {@link MFDataModel} and formats it to a {@link String}
+ * (and later on we will also implement formatting to a {@code FormattedMessage}).
+ */
+// TODO: move this in the MessageFormatter?
+class MFDataModelFormatter {
+ private final Locale locale;
+ private final MFDataModel.Message dm;
+
+ private final MFFunctionRegistry standardFunctions;
+ private final MFFunctionRegistry customFunctions;
+ private static final MFFunctionRegistry EMPTY_REGISTY = MFFunctionRegistry.builder().build();
+
+ MFDataModelFormatter(
+ MFDataModel.Message dm, Locale locale, MFFunctionRegistry customFunctionRegistry) {
+ this.locale = locale;
+ this.dm = dm;
+ this.customFunctions =
+ customFunctionRegistry == null ? EMPTY_REGISTY : customFunctionRegistry;
+
+ standardFunctions =
+ MFFunctionRegistry.builder()
+ // Date/time formatting
+ .setFormatter("datetime", new DateTimeFormatterFactory("datetime"))
+ .setFormatter("date", new DateTimeFormatterFactory("date"))
+ .setFormatter("time", new DateTimeFormatterFactory("time"))
+ .setDefaultFormatterNameForType(Date.class, "datetime")
+ .setDefaultFormatterNameForType(Calendar.class, "datetime")
+ .setDefaultFormatterNameForType(java.util.Calendar.class, "datetime")
+
+ // Number formatting
+ .setFormatter("number", new NumberFormatterFactory("number"))
+ .setFormatter("integer", new NumberFormatterFactory("integer"))
+ .setDefaultFormatterNameForType(Integer.class, "number")
+ .setDefaultFormatterNameForType(Double.class, "number")
+ .setDefaultFormatterNameForType(Number.class, "number")
+ .setDefaultFormatterNameForType(CurrencyAmount.class, "number")
+
+ // Format that returns "to string"
+ .setFormatter("string", new IdentityFormatterFactory())
+ .setDefaultFormatterNameForType(String.class, "string")
+ .setDefaultFormatterNameForType(CharSequence.class, "string")
+
+ // Register the standard selectors
+ .setSelector("number", new NumberFormatterFactory("number"))
+ .setSelector("integer", new NumberFormatterFactory("integer"))
+ .setSelector("string", new TextSelectorFactory())
+ .setSelector("icu:gender", new TextSelectorFactory())
+ .build();
+ }
+
+ String format(Map<String, Object> arguments) {
+ MFDataModel.Pattern patternToRender = null;
+ if (arguments == null) {
+ arguments = new HashMap<>();
+ }
+
+ Map<String, Object> variables;
+ if (dm instanceof MFDataModel.PatternMessage) {
+ MFDataModel.PatternMessage pm = (MFDataModel.PatternMessage) dm;
+ variables = resolveDeclarations(pm.declarations, arguments);
+ patternToRender = pm.pattern;
+ } else if (dm instanceof MFDataModel.SelectMessage) {
+ MFDataModel.SelectMessage sm = (MFDataModel.SelectMessage) dm;
+ variables = resolveDeclarations(sm.declarations, arguments);
+ patternToRender = findBestMatchingPattern(sm, variables, arguments);
+ } else {
+ formattingError("");
+ return "ERROR!";
+ }
+
+ if (patternToRender == null) {
+ return "ERROR!";
+ }
+
+ StringBuilder result = new StringBuilder();
+ for (MFDataModel.PatternPart part : patternToRender.parts) {
+ if (part instanceof MFDataModel.StringPart) {
+ MFDataModel.StringPart strPart = (StringPart) part;
+ result.append(strPart.value);
+ } else if (part instanceof MFDataModel.Expression) {
+ FormattedPlaceholder formattedExpression =
+ formatExpression((Expression) part, variables, arguments);
+ result.append(formattedExpression.getFormattedValue().toString());
+ } else if (part instanceof MFDataModel.Markup) {
+ // Ignore
+ } else if (part instanceof MFDataModel.UnsupportedExpression) {
+ // Ignore
+ } else {
+ formattingError("Unknown part type: " + part);
+ }
+ }
+ return result.toString();
+ }
+
+ private Pattern findBestMatchingPattern(
+ SelectMessage sm, Map<String, Object> variables, Map<String, Object> arguments) {
+ Pattern patternToRender = null;
+
+ // ====================================
+ // spec: ### Resolve Selectors
+ // ====================================
+
+ // Collect all the selector functions in an array, to reuse
+ List<Expression> selectors = sm.selectors;
+ // spec: Let `res` be a new empty list of resolved values that support selection.
+ List<ResolvedSelector> res = new ArrayList<>(selectors.size());
+ // spec: For each _selector_ `sel`, in source order,
+ for (Expression sel : selectors) {
+ // spec: Let `rv` be the resolved value of `sel`.
+ FormattedPlaceholder fph = formatExpression(sel, variables, arguments);
+ String functionName = null;
+ Object argument = null;
+ Map<String, Object> options = new HashMap<>();
+ if (fph.getInput() instanceof ResolvedExpression) {
+ ResolvedExpression re = (ResolvedExpression) fph.getInput();
+ argument = re.argument;
+ functionName = re.functionName;
+ options.putAll(re.options);
+ } else if (fph.getInput() instanceof MFDataModel.VariableExpression) {
+ MFDataModel.VariableExpression ve = (MFDataModel.VariableExpression) fph.getInput();
+ argument = resolveLiteralOrVariable(ve.arg, variables, arguments);
+ if (ve.annotation instanceof FunctionAnnotation) {
+ functionName = ((FunctionAnnotation) ve.annotation).name;
+ }
+ } else if (fph.getInput() instanceof LiteralExpression) {
+ LiteralExpression le = (LiteralExpression) fph.getInput();
+ argument = le.arg;
+ if (le.annotation instanceof FunctionAnnotation) {
+ functionName = ((FunctionAnnotation) le.annotation).name;
+ }
+ }
+ SelectorFactory funcFactory = standardFunctions.getSelector(functionName);
+ if (funcFactory == null) {
+ funcFactory = customFunctions.getSelector(functionName);
+ }
+ // spec: If selection is supported for `rv`:
+ if (funcFactory != null) {
+ Selector selectorFunction = funcFactory.createSelector(locale, options);
+ ResolvedSelector rs = new ResolvedSelector(argument, options, selectorFunction);
+ // spec: Append `rv` as the last element of the list `res`.
+ res.add(rs);
+ } else {
+ throw new IllegalArgumentException("Unknown selector type: " + functionName);
+ }
+ }
+
+ // This should not be possible, we added one function for each selector,
+ // or we have thrown an exception.
+ // But just in case someone removes the throw above?
+ if (res.size() != selectors.size()) {
+ throw new IllegalArgumentException(
+ "Something went wrong, not enough selector functions, "
+ + res.size() + " vs. " + selectors.size());
+ }
+
+ // ====================================
+ // spec: ### Resolve Preferences
+ // ====================================
+
+ // spec: Let `pref` be a new empty list of lists of strings.
+ List<List<String>> pref = new ArrayList<>();
+ // spec: For each index `i` in `res`:
+ for (int i = 0; i < res.size(); i++) {
+ // spec: Let `keys` be a new empty list of strings.
+ List<String> keys = new ArrayList<>();
+ // spec: For each _variant_ `var` of the message:
+ for (Variant var : sm.variants) {
+ // spec: Let `key` be the `var` key at position `i`.
+ LiteralOrCatchallKey key = var.keys.get(i);
+ // spec: If `key` is not the catch-all key `'*'`:
+ if (key instanceof CatchallKey) {
+ keys.add("*");
+ } else if (key instanceof Literal) {
+ // spec: Assert that `key` is a _literal_.
+ // spec: Let `ks` be the resolved value of `key`.
+ String ks = ((Literal) key).value;
+ // spec: Append `ks` as the last element of the list `keys`.
+ keys.add(ks);
+ } else {
+ formattingError("Literal expected, but got " + key);
+ }
+ }
+ // spec: Let `rv` be the resolved value at index `i` of `res`.
+ ResolvedSelector rv = res.get(i);
+ // spec: Let `matches` be the result of calling the method MatchSelectorKeys(`rv`, `keys`)
+ List<String> matches = matchSelectorKeys(rv, keys);
+ // spec: Append `matches` as the last element of the list `pref`.
+ pref.add(matches);
+ }
+
+ // ====================================
+ // spec: ### Filter Variants
+ // ====================================
+
+ // spec: Let `vars` be a new empty list of _variants_.
+ List<Variant> vars = new ArrayList<>();
+ // spec: For each _variant_ `var` of the message:
+ for (Variant var : sm.variants) {
+ // spec: For each index `i` in `pref`:
+ int found = 0;
+ for (int i = 0; i < pref.size(); i++) {
+ // spec: Let `key` be the `var` key at position `i`.
+ LiteralOrCatchallKey key = var.keys.get(i);
+ // spec: If `key` is the catch-all key `'*'`:
+ if (key instanceof CatchallKey) {
+ // spec: Continue the inner loop on `pref`.
+ found++;
+ continue;
+ }
+ // spec: Assert that `key` is a _literal_.
+ if (!(key instanceof Literal)) {
+ formattingError("Literal expected");
+ }
+ // spec: Let `ks` be the resolved value of `key`.
+ String ks = ((Literal) key).value;
+ // spec: Let `matches` be the list of strings at index `i` of `pref`.
+ List<String> matches = pref.get(i);
+ // spec: If `matches` includes `ks`:
+ if (matches.contains(ks)) {
+ // spec: Continue the inner loop on `pref`.
+ found++;
+ continue;
+ } else {
+ // spec: Else:
+ // spec: Continue the outer loop on message _variants_.
+ break;
+ }
+ }
+ if (found == pref.size()) {
+ // spec: Append `var` as the last element of the list `vars`.
+ vars.add(var);
+ }
+ }
+
+ // ====================================
+ // spec: ### Sort Variants
+ // ====================================
+ // spec: Let `sortable` be a new empty list of (integer, _variant_) tuples.
+ List<IntVarTuple> sortable = new ArrayList<>();
+ // spec: For each _variant_ `var` of `vars`:
+ for (Variant var : vars) {
+ // spec: Let `tuple` be a new tuple (-1, `var`).
+ IntVarTuple tuple = new IntVarTuple(-1, var);
+ // spec: Append `tuple` as the last element of the list `sortable`.
+ sortable.add(tuple);
+ }
+ // spec: Let `len` be the integer count of items in `pref`.
+ int len = pref.size();
+ // spec: Let `i` be `len` - 1.
+ int i = len - 1;
+ // spec: While `i` >= 0:
+ while (i >= 0) {
+ // spec: Let `matches` be the list of strings at index `i` of `pref`.
+ List<String> matches = pref.get(i);
+ // spec: Let `minpref` be the integer count of items in `matches`.
+ int minpref = matches.size();
+ // spec: For each tuple `tuple` of `sortable`:
+ for (IntVarTuple tuple : sortable) {
+ // spec: Let `matchpref` be an integer with the value `minpref`.
+ int matchpref = minpref;
+ // spec: Let `key` be the `tuple` _variant_ key at position `i`.
+ LiteralOrCatchallKey key = tuple.variant.keys.get(i);
+ // spec: If `key` is not the catch-all key `'*'`:
+ if (!(key instanceof CatchallKey)) {
+ // spec: Assert that `key` is a _literal_.
+ if (!(key instanceof Literal)) {
+ formattingError("Literal expected");
+ }
+ // spec: Let `ks` be the resolved value of `key`.
+ String ks = ((Literal) key).value;
+ // spec: Let `matchpref` be the integer position of `ks` in `matches`.
+ matchpref = matches.indexOf(ks);
+ }
+ // spec: Set the `tuple` integer value as `matchpref`.
+ tuple.integer = matchpref;
+ }
+ // spec: Set `sortable` to be the result of calling the method `SortVariants(sortable)`.
+ sortable.sort(MFDataModelFormatter::sortVariants);
+ // spec: Set `i` to be `i` - 1.
+ i--;
+ }
+ // spec: Let `var` be the _variant_ element of the first element of `sortable`.
+ IntVarTuple var = sortable.get(0);
+ // spec: Select the _pattern_ of `var`.
+ patternToRender = var.variant.value;
+
+ // And should do that only once, when building the data model.
+ if (patternToRender == null) {
+ // If there was a case with all entries in the keys `*` this should not happen
+ throw new IllegalArgumentException(
+ "The selection went wrong, cannot select any option.");
+ }
+
+ return patternToRender;
+ }
+
+ /* spec:
+ * `SortVariants` is a method whose single argument is
+ * a list of (integer, _variant_) tuples.
+ * It returns a list of (integer, _variant_) tuples.
+ * Any implementation of `SortVariants` is acceptable
+ * as long as it satisfies the following requirements:
+ *
+ * 1. Let `sortable` be an arbitrary list of (integer, _variant_) tuples.
+ * 1. Let `sorted` be `SortVariants(sortable)`.
+ * 1. `sorted` is the result of sorting `sortable` using the following comparator:
+ * 1. `(i1, v1)` <= `(i2, v2)` if and only if `i1 <= i2`.
+ * 1. The sort is stable (pairs of tuples from `sortable` that are equal
+ * in their first element have the same relative order in `sorted`).
+ */
+ private static int sortVariants(IntVarTuple o1, IntVarTuple o2) {
+ int result = Integer.compare(o1.integer, o2.integer);
+ if (result != 0) {
+ return result;
+ }
+ List<LiteralOrCatchallKey> v1 = o1.variant.keys;
+ List<LiteralOrCatchallKey> v2 = o1.variant.keys;
+ if (v1.size() != v2.size()) {
+ formattingError("The number of keys is not equal.");
+ }
+ for (int i = 0; i < v1.size(); i++) {
+ LiteralOrCatchallKey k1 = v1.get(i);
+ LiteralOrCatchallKey k2 = v2.get(i);
+ String s1 = k1 instanceof Literal ? ((Literal) k1).value : "*";
+ String s2 = k2 instanceof Literal ? ((Literal) k2).value : "*";
+ int cmp = s1.compareTo(s2);
+ if (cmp != 0) {
+ return cmp;
+ }
+ }
+ return 0;
+ }
+
+ /**
+ * spec:
+ * The method MatchSelectorKeys is determined by the implementation.
+ * It takes as arguments a resolved _selector_ value `rv` and a list of string keys `keys`,
+ * and returns a list of string keys in preferential order.
+ * The returned list MUST contain only unique elements of the input list `keys`.
+ * The returned list MAY be empty.
+ * The most-preferred key is first,
+ * with each successive key appearing in order by decreasing preference.
+ */
+ @SuppressWarnings("static-method")
+ private List<String> matchSelectorKeys(ResolvedSelector rv, List<String> keys) {
+ return rv.selectorFunction.matches(rv.argument, keys, rv.options);
+ }
+
+ private static class ResolvedSelector {
+ final Object argument;
+ final Map<String, Object> options;
+ final Selector selectorFunction;
+
+ public ResolvedSelector(
+ Object argument, Map<String, Object> options, Selector selectorFunction) {
+ this.argument = argument;
+ this.options = new HashMap<>(options);
+ this.selectorFunction = selectorFunction;
+ }
+ }
+
+ private static void formattingError(String message) {
+ throw new IllegalArgumentException(message);
+ }
+
+ private FormatterFactory getFormattingFunctionFactoryByName(
+ Object toFormat, String functionName) {
+ // Get a function name from the type of the object to format
+ if (functionName == null || functionName.isEmpty()) {
+ if (toFormat == null) {
+ // The object to format is null, and no function provided.
+ return null;
+ }
+ Class<?> clazz = toFormat.getClass();
+ functionName = standardFunctions.getDefaultFormatterNameForType(clazz);
+ if (functionName == null) {
+ functionName = customFunctions.getDefaultFormatterNameForType(clazz);
+ }
+ if (functionName == null) {
+ throw new IllegalArgumentException(
+ "Object to format without a function, and unknown type: "
+ + toFormat.getClass().getName());
+ }
+ }
+
+ FormatterFactory func = standardFunctions.getFormatter(functionName);
+ if (func == null) {
+ func = customFunctions.getFormatter(functionName);
+ }
+ return func;
+ }
+
+ private static Object resolveLiteralOrVariable(
+ LiteralOrVariableRef value,
+ Map<String, Object> localVars,
+ Map<String, Object> arguments) {
+ if (value instanceof Literal) {
+ String val = ((Literal) value).value;
+ Number nr = OptUtils.asNumber(val);
+ if (nr != null) {
+ return nr;
+ }
+ return val;
+ } else if (value instanceof VariableRef) {
+ String varName = ((VariableRef) value).name;
+ Object val = localVars.get(varName);
+ if (val == null) {
+ val = localVars.get(varName);
+ }
+ if (val == null) {
+ val = arguments.get(varName);
+ }
+ return val;
+ }
+ return value;
+ }
+
+ private static Map<String, Object> convertOptions(
+ Map<String, Option> options,
+ Map<String, Object> localVars,
+ Map<String, Object> arguments) {
+ Map<String, Object> result = new HashMap<>();
+ for (Option option : options.values()) {
+ result.put(option.name, resolveLiteralOrVariable(option.value, localVars, arguments));
+ }
+ return result;
+ }
+
+ /**
+ * Formats an expression.
+ *
+ * @param expression the expression to format
+ * @param variables local variables, created from declarations (`.input` and `.local`)
+ * @param arguments the arguments passed at runtime to be formatted (`mf.format(arguments)`)
+ */
+ private FormattedPlaceholder formatExpression(
+ Expression expression, Map<String, Object> variables, Map<String, Object> arguments) {
+
+ Annotation annotation = null; // function name
+ String functionName = null;
+ Object toFormat = null;
+ Map<String, Object> options = new HashMap<>();
+ String fallbackString = "{\uFFFD}";
+
+ if (expression instanceof MFDataModel.VariableExpression) {
+ MFDataModel.VariableExpression varPart = (MFDataModel.VariableExpression) expression;
+ fallbackString = "{$" + varPart.arg.name + "}";
+ annotation = varPart.annotation; // function name & options
+ Object resolved = resolveLiteralOrVariable(varPart.arg, variables, arguments);
+ if (resolved instanceof FormattedPlaceholder) {
+ Object input = ((FormattedPlaceholder) resolved).getInput();
+ if (input instanceof ResolvedExpression) {
+ ResolvedExpression re = (ResolvedExpression) input;
+ toFormat = re.argument;
+ functionName = re.functionName;
+ options.putAll(re.options);
+ } else {
+ toFormat = input;
+ }
+ } else {
+ toFormat = resolved;
+ }
+ } else if (expression
+ instanceof MFDataModel.FunctionExpression) { // Function without arguments
+ MFDataModel.FunctionExpression fe = (FunctionExpression) expression;
+ fallbackString = "{:" + fe.annotation.name + "}";
+ annotation = fe.annotation;
+ } else if (expression instanceof MFDataModel.LiteralExpression) {
+ MFDataModel.LiteralExpression le = (LiteralExpression) expression;
+ annotation = le.annotation;
+ fallbackString = "{|" + le.arg.value + "|}";
+ toFormat = resolveLiteralOrVariable(le.arg, variables, arguments);
+ } else if (expression instanceof MFDataModel.Markup) {
+ // No output on markup, for now (we only format to string)
+ return new FormattedPlaceholder(expression, new PlainStringFormattedValue(""));
+ } else {
+ UnsupportedExpression ue = (UnsupportedExpression) expression;
+ char sigil = ue.annotation.source.charAt(0);
+ return new FormattedPlaceholder(
+ expression, new PlainStringFormattedValue("{" + sigil + "}"));
+ }
+
+ if (annotation instanceof FunctionAnnotation) {
+ FunctionAnnotation fa = (FunctionAnnotation) annotation;
+ if (functionName != null && !functionName.equals(fa.name)) {
+ formattingError(
+ "invalid function overrides, '" + functionName + "' <> '" + fa.name + "'");
+ }
+ functionName = fa.name;
+ Map<String, Object> newOptions = convertOptions(fa.options, variables, arguments);
+ options.putAll(newOptions);
+ } else if (annotation instanceof UnsupportedAnnotation) {
+ // We don't know how to format unsupported annotations
+ return new FormattedPlaceholder(expression, new PlainStringFormattedValue(fallbackString));
+ }
+
+ FormatterFactory funcFactory = getFormattingFunctionFactoryByName(toFormat, functionName);
+ if (funcFactory == null) {
+ return new FormattedPlaceholder(expression, new PlainStringFormattedValue(fallbackString));
+ }
+ Formatter ff = funcFactory.createFormatter(locale, options);
+ String res = ff.formatToString(toFormat, arguments);
+ if (res == null) {
+ res = fallbackString;
+ }
+
+ ResolvedExpression resExpression = new ResolvedExpression(toFormat, functionName, options);
+ return new FormattedPlaceholder(resExpression, new PlainStringFormattedValue(res));
+ }
+
+ static class ResolvedExpression implements Expression {
+ final Object argument;
+ final String functionName;
+ final Map<String, Object> options;
+
+ public ResolvedExpression(
+ Object argument, String functionName, Map<String, Object> options) {
+ this.argument = argument;
+ this.functionName = functionName;
+ this.options = options;
+ }
+ }
+
+ private Map<String, Object> resolveDeclarations(
+ List<MFDataModel.Declaration> declarations, Map<String, Object> arguments) {
+ Map<String, Object> variables = new HashMap<>();
+ String name;
+ Expression value;
+ if (declarations != null) {
+ for (Declaration declaration : declarations) {
+ if (declaration instanceof InputDeclaration) {
+ name = ((InputDeclaration) declaration).name;
+ value = ((InputDeclaration) declaration).value;
+ } else if (declaration instanceof LocalDeclaration) {
+ name = ((LocalDeclaration) declaration).name;
+ value = ((LocalDeclaration) declaration).value;
+ } else {
+ continue;
+ }
+ try {
+ // There it no need to succeed in solving everything.
+ // For example there is no problem is `$b` is not defined below:
+ // .local $a = {$b :number}
+ // {{ Hello {$user}! }}
+ FormattedPlaceholder fmt = formatExpression(value, variables, arguments);
+ // If it works, all good
+ variables.put(name, fmt);
+ } catch (Exception e) {
+ // It's OK to ignore the failure in this context, see comment above.
+ }
+ }
+ }
+ return variables;
+ }
+
+ private static class IntVarTuple {
+ int integer;
+ final Variant variant;
+
+ public IntVarTuple(int integer, Variant variant) {
+ this.integer = integer;
+ this.variant = variant;
+ }
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModelValidator.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModelValidator.java
new file mode 100644
index 000000000..a17728434
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFDataModelValidator.java
@@ -0,0 +1,204 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.StringJoiner;
+
+import com.ibm.icu.message2.MFDataModel.Annotation;
+import com.ibm.icu.message2.MFDataModel.CatchallKey;
+import com.ibm.icu.message2.MFDataModel.Declaration;
+import com.ibm.icu.message2.MFDataModel.Expression;
+import com.ibm.icu.message2.MFDataModel.FunctionAnnotation;
+import com.ibm.icu.message2.MFDataModel.FunctionExpression;
+import com.ibm.icu.message2.MFDataModel.InputDeclaration;
+import com.ibm.icu.message2.MFDataModel.Literal;
+import com.ibm.icu.message2.MFDataModel.LiteralExpression;
+import com.ibm.icu.message2.MFDataModel.LiteralOrCatchallKey;
+import com.ibm.icu.message2.MFDataModel.LiteralOrVariableRef;
+import com.ibm.icu.message2.MFDataModel.LocalDeclaration;
+import com.ibm.icu.message2.MFDataModel.Option;
+import com.ibm.icu.message2.MFDataModel.PatternMessage;
+import com.ibm.icu.message2.MFDataModel.SelectMessage;
+import com.ibm.icu.message2.MFDataModel.VariableExpression;
+import com.ibm.icu.message2.MFDataModel.VariableRef;
+import com.ibm.icu.message2.MFDataModel.Variant;
+
+// I can merge all this in the MFDataModel class and make it private
+class MFDataModelValidator {
+ private final MFDataModel.Message message;
+ private final Set<String> declaredVars = new HashSet<>();
+
+ MFDataModelValidator(MFDataModel.Message message) {
+ this.message = message;
+ }
+
+ boolean validate() throws MFParseException {
+ if (message instanceof PatternMessage) {
+ validateDeclarations(((PatternMessage) message).declarations);
+ } else if (message instanceof SelectMessage) {
+ SelectMessage sm = (SelectMessage) message;
+ validateDeclarations(sm.declarations);
+ validateSelectors(sm.selectors);
+ int selectorCount = sm.selectors.size();
+ validateVariants(sm.variants, selectorCount);
+ }
+ return true;
+ }
+
+ private boolean validateVariants(List<Variant> variants, int selectorCount)
+ throws MFParseException {
+ if (variants == null || variants.isEmpty()) {
+ error("Selection messages must have at least one variant");
+ }
+
+ // Look for an entry with all keys = '*'
+ boolean hasUltimateFallback = false;
+ Set<String> fakeKeys = new HashSet<>();
+ for (Variant variant : variants) {
+ if (variant.keys == null || variant.keys.isEmpty()) {
+ error("Selection variants must have at least one key");
+ }
+ if (variant.keys.size() != selectorCount) {
+ error("Selection variants must have the same number of variants as the selectors.");
+ }
+ int catchAllCount = 0;
+ StringJoiner fakeKey = new StringJoiner("<<::>>");
+ for (LiteralOrCatchallKey key : variant.keys) {
+ if (key instanceof CatchallKey) {
+ catchAllCount++;
+ fakeKey.add("*");
+ } else if (key instanceof Literal) {
+ fakeKey.add(((Literal) key).value);
+ }
+ }
+ if (fakeKeys.contains(fakeKey.toString())) {
+ error("Dumplicate combination of keys");
+ } else {
+ fakeKeys.add(fakeKey.toString());
+ }
+ if (catchAllCount == selectorCount) {
+ hasUltimateFallback = true;
+ }
+ }
+ if (!hasUltimateFallback) {
+ error("There must be one variant with all the keys being '*'");
+ }
+ return true;
+ }
+
+ private boolean validateSelectors(List<Expression> selectors) throws MFParseException {
+ if (selectors == null || selectors.isEmpty()) {
+ error("Selection messages must have selectors");
+ }
+ return true;
+ }
+
+ /*
+ * .input {$foo :number} .input {$foo} => ERROR
+ * .input {$foo :number} .local $foo={$bar} => ERROR, local foo overrides an input
+ * .local $foo={...} .local $foo={...} => ERROR, foo declared twice
+ * .local $a={$foo} .local $b={$foo} => NOT AN ERROR (foo is used, not declared)
+ * .local $a={:f opt=$foo} .local $foo={$foo} => ERROR, foo declared after beeing used in opt
+ */
+ private boolean validateDeclarations(List<Declaration> declarations) throws MFParseException {
+ if (declarations == null || declarations.isEmpty()) {
+ return true;
+ }
+ for (Declaration declaration : declarations) {
+ if (declaration instanceof LocalDeclaration) {
+ LocalDeclaration ld = (LocalDeclaration) declaration;
+ validateExpression(ld.value, false);
+ addVariableDeclaration(ld.name);
+ } else if (declaration instanceof InputDeclaration) {
+ InputDeclaration id = (InputDeclaration) declaration;
+ validateExpression(id.value, true);
+ }
+ }
+ return true;
+ }
+
+ /*
+ * One might also consider checking if the same variable is used with more than one type:
+ * .local $a = {$foo :number}
+ * .local $b = {$foo :string}
+ * .local $c = {$foo :datetime}
+ *
+ * But this is not necesarily an error.
+ * If $foo is a number, then it might be formatter as a number, or as date (epoch time),
+ * or something else.
+ *
+ * So it is not safe to complain. Especially with custom functions:
+ * # get the first name from a `Person` object
+ * .local $b = {$person :getField fieldName=firstName}
+ * # get formats a `Person` object
+ * .local $b = {$person :person}
+ */
+ private void validateExpression(Expression expression, boolean fromInput)
+ throws MFParseException {
+ String argName = null;
+ Annotation annotation = null;
+ if (expression instanceof Literal) {
+ // ...{foo}... or ...{|foo|}... or ...{123}...
+ // does not declare anything
+ } else if (expression instanceof LiteralExpression) {
+ LiteralExpression le = (LiteralExpression) expression;
+ argName = le.arg.value;
+ annotation = le.annotation;
+ } else if (expression instanceof VariableExpression) {
+ VariableExpression ve = (VariableExpression) expression;
+ // ...{$foo :bar opt1=|str| opt2=$x opt3=$y}...
+ // .input {$foo :number} => declares `foo`, if already declared is an error
+ // .local $a={$foo} => declares `a`, but only used `foo`, does not declare it
+ argName = ve.arg.name;
+ annotation = ve.annotation;
+ } else if (expression instanceof FunctionExpression) {
+ // ...{$foo :bar opt1=|str| opt2=$x opt3=$y}...
+ FunctionExpression fe = (FunctionExpression) expression;
+ annotation = fe.annotation;
+ }
+
+ if (annotation instanceof FunctionAnnotation) {
+ FunctionAnnotation fa = (FunctionAnnotation) annotation;
+ if (fa.options != null) {
+ for (Option opt : fa.options.values()) {
+ LiteralOrVariableRef val = opt.value;
+ if (val instanceof VariableRef) {
+ // We had something like {:f option=$val}, it means we's seen `val`
+ // It is not a declaration, so not an error.
+ addVariableDeclaration(((VariableRef) val).name);
+ }
+ }
+ }
+ }
+
+ // We chech the argument name after options to prevent errors like this:
+ // .local $foo = {$a :b option=$foo}
+ if (argName != null) {
+ // if we come from `.input {$foo :function}` then `varName` is null
+ // and `argName` is `foo`
+ if (fromInput) {
+ addVariableDeclaration(argName);
+ } else {
+ // Remember that we've seen it, to complain if there is a declaration later
+ declaredVars.add(argName);
+ }
+ }
+ }
+
+ private boolean addVariableDeclaration(String varName) throws MFParseException {
+ if (declaredVars.contains(varName)) {
+ error("Variable '" + varName + "' already declared");
+ return false;
+ }
+ declaredVars.add(varName);
+ return true;
+ }
+
+ private void error(String text) throws MFParseException {
+ throw new MFParseException(text, -1);
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFFunctionRegistry.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFFunctionRegistry.java
new file mode 100644
index 000000000..3804b6acb
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFFunctionRegistry.java
@@ -0,0 +1,346 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * This class is used to register mappings between various function
+ * names and the factories that can create those functions.
+ *
+ * <p>For example to add formatting for a {@code Person} object one would need to:</p>
+ * <ul>
+ * <li>write a function (class, lambda, etc.) that does the formatting proper
+ * (implementing {@link Formatter})</li>
+ * <li>write a factory that creates such a function
+ * (implementing {@link FormatterFactory})</li>
+ * <li>add a mapping from the function name as used in the syntax
+ * (for example {@code "person"}) to the factory</li>
+ * <li>optionally add a mapping from the class to format ({@code ...Person.class}) to
+ * the formatter name ({@code "person"}), so that one can use a placeholder in the message
+ * without specifying a function (for example {@code "... {$me} ..."} instead of
+ * {@code "... {$me :person} ..."}, if the class of {@code $me} is an {@code instanceof Person}).
+ * </li>
+ * </ul>
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+@Deprecated
+public class MFFunctionRegistry {
+ private final Map<String, FormatterFactory> formattersMap;
+ private final Map<String, SelectorFactory> selectorsMap;
+ private final Map<Class<?>, String> classToFormatter;
+
+ private MFFunctionRegistry(Builder builder) {
+ this.formattersMap = new HashMap<>(builder.formattersMap);
+ this.selectorsMap = new HashMap<>(builder.selectorsMap);
+ this.classToFormatter = new HashMap<>(builder.classToFormatter);
+ }
+
+ /**
+ * Creates a builder.
+ *
+ * @return the Builder.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Returns the formatter factory used to create the formatter for function
+ * named {@code name}.
+ *
+ * <p>Note: function name here means the name used to refer to the function in the
+ * MessageFormat 2 syntax, for example {@code "... {$exp :datetime} ..."}<br>
+ * The function name here is {@code "datetime"}, and does not have to correspond to the
+ * name of the methods / classes used to implement the functionality.</p>
+ *
+ * <p>For example one might write a {@code PersonFormatterFactory} returning a {@code PersonFormatter},
+ * and map that to the MessageFormat function named {@code "person"}.<br>
+ * The only name visible to the users of MessageFormat syntax will be {@code "person"}.</p>
+ *
+ * @param formatterName the function name.
+ * @return the factory creating formatters for {@code name}. Returns {@code null} if none is registered.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public FormatterFactory getFormatter(String formatterName) {
+ return formattersMap.get(formatterName);
+ }
+
+ /**
+ * Get all know names that have a mappings from name to {@link FormatterFactory}.
+ *
+ * @return a set of all the known formatter names.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Set<String> getFormatterNames() {
+ return formattersMap.keySet();
+ }
+
+ /**
+ * Returns the name of the formatter used to format an object of type {@code clazz}.
+ *
+ * @param clazz the class of the object to format.
+ * @return the name of the formatter class, if registered. Returns {@code null} otherwise.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public String getDefaultFormatterNameForType(Class<?> clazz) {
+ // Search for the class "as is", to save time.
+ // If we don't find it then we iterate the registered classes and check
+ // if the class is an instanceof the ones registered.
+ // For example a BuddhistCalendar when we only registered Calendar
+ String result = classToFormatter.get(clazz);
+ if (result != null) {
+ return result;
+ }
+ // We didn't find the class registered explicitly "as is"
+ for (Map.Entry<Class<?>, String> e : classToFormatter.entrySet()) {
+ if (e.getKey().isAssignableFrom(clazz)) {
+ return e.getValue();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Get all know classes that have a mappings from class to function name.
+ *
+ * @return a set of all the known classes that have mapping to function names.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Set<Class<?>> getDefaultFormatterTypes() {
+ return classToFormatter.keySet();
+ }
+
+ /**
+ * Returns the selector factory used to create the selector for function
+ * named {@code name}.
+ *
+ * <p>Note: the same comments about naming as the ones on {@code getFormatter} apply.</p>
+ *
+ * @param selectorName the selector name.
+ * @return the factory creating selectors for {@code name}. Returns {@code null} if none is registered.
+ * @see #getFormatter(String)
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public SelectorFactory getSelector(String selectorName) {
+ return selectorsMap.get(selectorName);
+ }
+
+ /**
+ * Get all know names that have a mappings from name to {@link SelectorFactory}.
+ *
+ * @return a set of all the known selector names.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Set<String> getSelectorNames() {
+ return selectorsMap.keySet();
+ }
+
+ /**
+ * A {@code Builder} used to build instances of {@link MFFunctionRegistry}.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static class Builder {
+ private final Map<String, FormatterFactory> formattersMap = new HashMap<>();
+ private final Map<String, SelectorFactory> selectorsMap = new HashMap<>();
+ private final Map<Class<?>, String> classToFormatter = new HashMap<>();
+
+ // Prevent direct creation
+ private Builder() {}
+
+ /**
+ * Adds all the mapping from another registry to this one.
+ *
+ * @param functionRegistry the registry to copy from.
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder addAll(MFFunctionRegistry functionRegistry) {
+ formattersMap.putAll(functionRegistry.formattersMap);
+ selectorsMap.putAll(functionRegistry.selectorsMap);
+ classToFormatter.putAll(functionRegistry.classToFormatter);
+ return this;
+ }
+
+ /**
+ * Adds a mapping from a formatter name to a {@link FormatterFactory}.
+ *
+ * @param formatterName the function name (as used in the MessageFormat 2 syntax).
+ * @param formatterFactory the factory that handles the name.
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder setFormatter(String formatterName, FormatterFactory formatterFactory) {
+ formattersMap.put(formatterName, formatterFactory);
+ return this;
+ }
+
+ /**
+ * Remove the formatter associated with the name.
+ *
+ * @param formatterName the name of the formatter to remove.
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder removeFormatter(String formatterName) {
+ formattersMap.remove(formatterName);
+ return this;
+ }
+
+ /**
+ * Remove all the formatter mappings.
+ *
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder clearFormatters() {
+ formattersMap.clear();
+ return this;
+ }
+
+ /**
+ * Adds a mapping from a type to format to a {@link FormatterFactory} formatter name.
+ *
+ * @param clazz the class of the type to format.
+ * @param formatterName the formatter name (as used in the MessageFormat 2 syntax).
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder setDefaultFormatterNameForType(Class<?> clazz, String formatterName) {
+ classToFormatter.put(clazz, formatterName);
+ return this;
+ }
+
+ /**
+ * Remove the function name associated with the class.
+ *
+ * @param clazz the class to remove the mapping for.
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder removeDefaultFormatterNameForType(Class<?> clazz) {
+ classToFormatter.remove(clazz);
+ return this;
+ }
+
+ /**
+ * Remove all the class to formatter-names mappings.
+ *
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder clearDefaultFormatterNames() {
+ classToFormatter.clear();
+ return this;
+ }
+
+ /**
+ * Adds a mapping from a selector name to a {@link SelectorFactory}.
+ *
+ * @param selectorName the function name (as used in the MessageFormat 2 syntax).
+ * @param selectorFactory the factory that handles the name.
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder setSelector(String selectorName, SelectorFactory selectorFactory) {
+ selectorsMap.put(selectorName, selectorFactory);
+ return this;
+ }
+
+ /**
+ * Remove the selector associated with the name.
+ *
+ * @param selectorName the name of the selector to remove.
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder removeSelector(String selectorName) {
+ selectorsMap.remove(selectorName);
+ return this;
+ }
+
+ /**
+ * Remove all the selector mappings.
+ *
+ * @return the builder, for fluent use.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public Builder clearSelectors() {
+ selectorsMap.clear();
+ return this;
+ }
+
+ /**
+ * Builds an instance of {@link MFFunctionRegistry}.
+ *
+ * @return the function registry created.
+ *
+ * @internal ICU 72 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public MFFunctionRegistry build() {
+ return new MFFunctionRegistry(this);
+ }
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFParseException.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFParseException.java
new file mode 100644
index 000000000..9174295f3
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFParseException.java
@@ -0,0 +1,32 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+import java.text.ParseException;
+
+/**
+ * Used to report parsing errors in {@link MessageFormatter}.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+@Deprecated
+public class MFParseException extends ParseException {
+ private static final long serialVersionUID = -7634219305388292407L;
+
+ /**
+ * Constructs a MFParseException with the specified message and offset.
+ *
+ * @param message the message
+ * @param errorOffset the position where the error is found while parsing.
+ */
+ public MFParseException(String message, int errorOffset) {
+ super(message, errorOffset);
+ }
+
+ @Override
+ public String getMessage() {
+ return super.getMessage();
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFParser.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFParser.java
new file mode 100644
index 000000000..4a88bd04e
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFParser.java
@@ -0,0 +1,787 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * This class parses a {@code MessageFormat 2} syntax into a data model {@link MFDataModel.Message}.
+ *
+ * <p>It is used by {@link MessageFormatter}, but it might be handy for various tools.</p>
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+@Deprecated
+public class MFParser {
+ private static final int EOF = -1;
+ private final InputSource input;
+
+ MFParser(String text) {
+ this.input = new InputSource(text);
+ }
+
+ /**
+ * Parses a {@code MessageFormat 2} syntax into a {@link MFDataModel.Message}.
+ *
+ * <p>It is used by {@link MessageFormatter}, but it might be handy for various tools.</p>
+ * @param input the text to parse
+ * @return the parsed {@code MFDataModel.Message}
+ * @throws MFParseException if errors are detected
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static MFDataModel.Message parse(String input) throws MFParseException {
+ return new MFParser(input).parseImpl();
+ }
+
+ // Parser proper
+ private MFDataModel.Message parseImpl() throws MFParseException {
+ MFDataModel.Message result;
+ int cp = input.peekChar();
+ if (cp == '.') { // declarations or .match
+ result = getComplexMessage();
+ } else if (cp == '{') { // `{` or `{{`
+ cp = input.readCodePoint();
+ cp = input.peekChar();
+ if (cp == '{') { // `{{`, complex body without declarations
+ input.backup(1); // let complexBody deal with the wrapping {{ and }}
+ MFDataModel.Pattern pattern = getQuotedPattern();
+ result = new MFDataModel.PatternMessage(new ArrayList<>(), pattern);
+ } else { // placeholder
+ input.backup(1); // We want the '{' present, to detect the part as placeholder.
+ MFDataModel.Pattern pattern = getPattern();
+ result = new MFDataModel.PatternMessage(new ArrayList<>(), pattern);
+ }
+ } else {
+ MFDataModel.Pattern pattern = getPattern();
+ result = new MFDataModel.PatternMessage(new ArrayList<>(), pattern);
+ }
+ skipOptionalWhitespaces();
+ checkCondition(input.atEnd(), "Content detected after the end of the message.");
+ new MFDataModelValidator(result).validate();
+ return result;
+ }
+
+ // abnf: simple-message = [simple-start pattern]
+ // abnf: simple-start = simple-start-char / text-escape / placeholder
+ // abnf: pattern = *(text-char / text-escape / placeholder)
+ private MFDataModel.Pattern getPattern() throws MFParseException {
+ MFDataModel.Pattern pattern = new MFDataModel.Pattern();
+ while (true) {
+ MFDataModel.PatternPart part = getPatternPart();
+ if (part == null) {
+ break;
+ }
+ pattern.parts.add(part);
+ }
+ // checkCondition(!pattern.parts.isEmpty(), "Empty pattern");
+ return pattern;
+ }
+
+ private MFDataModel.PatternPart getPatternPart() throws MFParseException {
+ int cp = input.peekChar();
+ switch (cp) {
+ case EOF:
+ return null;
+ case '}': // This is the end, otherwise it would be escaped
+ return null;
+ case '{':
+ MFDataModel.Expression ph = getPlaceholder();
+ return ph;
+ default:
+ String plainText = getText();
+ MFDataModel.StringPart sp = new MFDataModel.StringPart(plainText);
+ return sp;
+ }
+ }
+
+ private String getText() {
+ StringBuilder result = new StringBuilder();
+ while (true) {
+ int cp = input.readCodePoint();
+ switch (cp) {
+ case EOF:
+ return result.toString();
+ case '\\':
+ cp = input.readCodePoint();
+ if (cp == '\\' || cp == '{' || cp == '|' | cp == '}') {
+ result.appendCodePoint(cp);
+ } else { // TODO: Error, treat invalid escape?
+ result.appendCodePoint('\\');
+ result.appendCodePoint(cp);
+ }
+ break;
+ case '.':
+ case '@':
+ case '|':
+ result.appendCodePoint(cp);
+ break;
+ default:
+ if (StringUtils.isContentChar(cp) || StringUtils.isWhitespace(cp)) {
+ result.appendCodePoint(cp);
+ } else {
+ input.backup(1);
+ return result.toString();
+ }
+ }
+ }
+ }
+
+ // abnf: placeholder = expression / markup
+ // abnf: expression = literal-expression
+ // abnf: / variable-expression
+ // abnf: / annotation-expression
+ // abnf: literal-expression = "{" [s] literal [s annotation] *(s attribute) [s] "}"
+ // abnf: variable-expression = "{" [s] variable [s annotation] *(s attribute) [s] "}"
+ // abnf: annotation-expression = "{" [s] annotation *(s attribute) [s] "}"
+ // abnf: markup = "{" [s] "#" identifier *(s option) *(s attribute) [s] ["/"] "}" ; open and standalone
+ // abnf: / "{" [s] "/" identifier *(s option) *(s attribute) [s] "}" ; close
+ private MFDataModel.Expression getPlaceholder() throws MFParseException {
+ int cp = input.peekChar();
+ if (cp != '{') {
+ return null;
+ }
+ input.readCodePoint(); // consume the '{'
+ skipOptionalWhitespaces();
+ cp = input.peekChar();
+
+ MFDataModel.Expression result;
+ if (cp == '#' || cp == '/') {
+ result = getMarkup();
+ } else if (cp == '$') {
+ result = getVariableExpression();
+ } else if (StringUtils.isFunctionSigil(cp)
+ || StringUtils.isPrivateAnnotationSigil(cp)
+ || StringUtils.isReservedAnnotationSigil(cp)) {
+ result = getAnnotationExpression();
+ } else {
+ result = getLiteralExpression();
+ }
+
+ skipOptionalWhitespaces();
+ cp = input.readCodePoint(); // consume the '}'
+ checkCondition(cp == '}', "Unclosed placeholder");
+
+ return result;
+ }
+
+ private MFDataModel.Annotation getAnnotation() throws MFParseException {
+ int position = input.getPosition();
+ skipOptionalWhitespaces();
+
+ int cp = input.peekChar();
+ switch (cp) {
+ case '}':
+ return null;
+ case ':': // annotation, function
+ // abnf: function = ":" identifier *(s option)
+ input.readCodePoint(); // Consume the sigil
+ String identifier = getIdentifier();
+ checkCondition(identifier != null, "Annotation / function name missing");
+ Map<String, MFDataModel.Option> options = getOptions();
+ return new MFDataModel.FunctionAnnotation(identifier, options);
+ default: // reserved && private
+ if (StringUtils.isReservedAnnotationSigil(cp)
+ || StringUtils.isPrivateAnnotationSigil(cp)) {
+ cp = input.readCodePoint();
+ // The sigil is part of the body.
+ // Safe to cast to char, the code point is in BMP
+ identifier = (char) cp + getIdentifier();
+ String body = getReservedBody();
+ return new MFDataModel.UnsupportedAnnotation(identifier + body);
+ }
+ }
+ input.gotoPosition(position);
+ return null;
+ }
+
+ private MFDataModel.Annotation getMarkupAnnotation() throws MFParseException {
+ skipOptionalWhitespaces();
+
+ int cp = input.peekChar();
+ switch (cp) {
+ case '}':
+ return null;
+ case '#':
+ case '/':
+ // abnf: markup = "{" [s] "#" identifier *(s option) *(s attribute) [s] ["/"] "}" ; open and standalone
+ // abnf: / "{" [s] "/" identifier *(s option) *(s attribute) [s] "}" ; close
+ input.readCodePoint(); // Consume the sigil
+ String identifier = getIdentifier();
+ checkCondition(identifier != null, "Annotation / function name missing");
+ Map<String, MFDataModel.Option> options = getOptions();
+ return new MFDataModel.FunctionAnnotation(identifier, options);
+ default:
+ // reserved, private, function, something else,
+ return null;
+ }
+ }
+
+ // abnf: literal-expression = "{" [s] literal [s annotation] *(s attribute) [s] "}"
+ private MFDataModel.Expression getLiteralExpression() throws MFParseException {
+ MFDataModel.Literal literal = getLiteral();
+ checkCondition(literal != null, "Literal expression expected.");
+
+ MFDataModel.Annotation annotation = null;
+ int wsCount = skipWhitespaces();
+ if (wsCount > 0) { // we might have an annotation
+ annotation = getAnnotation();
+ if (annotation == null) {
+ // We had some spaces, but no annotation.
+ // So we put (some) back for the possible attributes.
+ input.backup(1);
+ }
+ }
+
+ List<MFDataModel.Attribute> attributes = getAttributes();
+
+ // Literal without a function, for example {|hello|} or {123}
+ return new MFDataModel.LiteralExpression(literal, annotation, attributes);
+ }
+
+ // abnf: variable-expression = "{" [s] variable [s annotation] *(s attribute) [s] "}"
+ private MFDataModel.VariableExpression getVariableExpression() throws MFParseException {
+ MFDataModel.VariableRef variableRef = getVariableRef();
+ MFDataModel.Annotation annotation = getAnnotation();
+ List<MFDataModel.Attribute> attributes = getAttributes();
+ // Variable without a function, for example {$foo}
+ return new MFDataModel.VariableExpression(variableRef, annotation, attributes);
+ }
+
+ // abnf: annotation-expression = "{" [s] annotation *(s attribute) [s] "}"
+ private MFDataModel.Expression getAnnotationExpression() throws MFParseException {
+ MFDataModel.Annotation annotation = getAnnotation();
+ List<MFDataModel.Attribute> attributes = getAttributes();
+
+ if (annotation instanceof MFDataModel.FunctionAnnotation) {
+ return new MFDataModel.FunctionExpression(
+ (MFDataModel.FunctionAnnotation) annotation, attributes);
+ } else if (annotation instanceof MFDataModel.UnsupportedAnnotation) {
+ return new MFDataModel.UnsupportedExpression(
+ (MFDataModel.UnsupportedAnnotation) annotation, attributes);
+ } else {
+ error("Unexpected annotation : " + annotation);
+ }
+ return null;
+ }
+
+ // abnf: markup = "{" [s] "#" identifier *(s option) *(s attribute) [s] ["/"] "}" ; open and standalone
+ // abnf: / "{" [s] "/" identifier *(s option) *(s attribute) [s] "}" ; close
+ private MFDataModel.Markup getMarkup() throws MFParseException {
+ int cp = input.peekChar(); // consume the '{'
+ checkCondition(cp == '#' || cp == '/', "Should not happen. Expecting a markup.");
+
+ MFDataModel.Markup.Kind kind =
+ cp == '/' ? MFDataModel.Markup.Kind.CLOSE : MFDataModel.Markup.Kind.OPEN;
+
+ MFDataModel.Annotation annotation = getMarkupAnnotation();
+ List<MFDataModel.Attribute> attributes = getAttributes();
+
+ cp = input.peekChar();
+ if (cp == '/') {
+ kind = MFDataModel.Markup.Kind.STANDALONE;
+ input.readCodePoint();
+ }
+
+ if (annotation instanceof MFDataModel.FunctionAnnotation) {
+ MFDataModel.FunctionAnnotation fa = (MFDataModel.FunctionAnnotation) annotation;
+ return new MFDataModel.Markup(kind, fa.name, fa.options, attributes);
+ }
+
+ return null;
+ }
+
+ private List<MFDataModel.Attribute> getAttributes() throws MFParseException {
+ List<MFDataModel.Attribute> result = new ArrayList<>();
+ while (true) {
+ MFDataModel.Attribute attribute = getAttribute();
+ if (attribute == null) {
+ break;
+ }
+ result.add(attribute);
+ }
+ return result;
+ }
+
+ // abnf: attribute = "@" identifier [[s] "=" [s] (literal / variable)]
+ private MFDataModel.Attribute getAttribute() throws MFParseException {
+ int position = input.getPosition();
+ if (skipWhitespaces() == 0) {
+ input.gotoPosition(position);
+ return null;
+ }
+ int cp = input.peekChar();
+ if (cp == '@') {
+ input.readCodePoint(); // consume the '@'
+ String id = getIdentifier();
+ int wsCount = skipWhitespaces();
+ cp = input.peekChar();
+ MFDataModel.LiteralOrVariableRef literalOrVariable = null;
+ if (cp == '=') {
+ input.readCodePoint();
+ skipOptionalWhitespaces();
+ literalOrVariable = getLiteralOrVariableRef();
+ checkCondition(literalOrVariable != null, "Attributes must have a value after `=`");
+ } else {
+ // was not equal, attribute without a value, put the "spaces" back.
+ input.backup(wsCount);
+ }
+ return new MFDataModel.Attribute(id, literalOrVariable);
+ } else {
+ input.gotoPosition(position);
+ }
+ return null;
+ }
+
+ // abnf: reserved-body = *([s] 1*(reserved-char / reserved-escape / quoted))
+ // abnf: reserved-escape = backslash ( backslash / "{" / "|" / "}" )
+ private String getReservedBody() throws MFParseException {
+ int spaceCount = skipWhitespaces();
+ StringBuilder result = new StringBuilder();
+ while (true) {
+ int cp = input.readCodePoint();
+ if (StringUtils.isReservedChar(cp)) {
+ result.appendCodePoint(cp);
+ } else if (cp == '\\') {
+ cp = input.readCodePoint();
+ checkCondition(
+ cp == '{' || cp == '|' || cp == '}',
+ "Invalid escape sequence. Only \\{, \\| and \\} are valid here.");
+ result.append(cp);
+ } else if (cp == '|') {
+ input.backup(1);
+ MFDataModel.Literal quoted = getQuotedLiteral();
+ result.append(quoted.value);
+ } else if (cp == EOF) {
+ return result.toString();
+ } else {
+ if (result.length() == 0) {
+ input.backup(spaceCount + 1);
+ return "";
+ } else {
+ input.backup(1);
+ return result.toString();
+ }
+ }
+ }
+ }
+
+ // abnf: identifier = [namespace ":"] name
+ // abnf: namespace = name
+ // abnf: name = name-start *name-char
+ private String getIdentifier() throws MFParseException {
+ String namespace = getName();
+ if (namespace == null) {
+ return null;
+ }
+ int cp = input.readCodePoint();
+ if (cp == ':') { // the previous name was namespace
+ String name = getName();
+ checkCondition(name != null, "Expected name after namespace '" + namespace + "'");
+ return namespace + ":" + name;
+ } else {
+ input.backup(1);
+ }
+ return namespace;
+ }
+
+ // abnf helper: *(s option)
+ private Map<String, MFDataModel.Option> getOptions() throws MFParseException {
+ Map<String, MFDataModel.Option> options = new LinkedHashMap<>();
+ while (true) {
+ MFDataModel.Option option = getOption();
+ if (option == null) {
+ break;
+ }
+ if (options.containsKey(option.name)) {
+ error("Duplicated option '" + option.name + "'");
+ }
+ options.put(option.name, option);
+ }
+ return options;
+ }
+
+ // abnf: option = identifier [s] "=" [s] (literal / variable)
+ private MFDataModel.Option getOption() throws MFParseException {
+ int position = input.getPosition();
+ skipOptionalWhitespaces();
+ String identifier = getIdentifier();
+ if (identifier == null) {
+ input.gotoPosition(position);
+ return null;
+ }
+ skipOptionalWhitespaces();
+ int cp = input.readCodePoint();
+ checkCondition(cp == '=', "Expected '='");
+ // skipOptionalWhitespaces();
+ MFDataModel.LiteralOrVariableRef litOrVar = getLiteralOrVariableRef();
+ if (litOrVar == null) {
+ error("Options must have a value. An empty string should be quoted.");
+ }
+ return new MFDataModel.Option(identifier, litOrVar);
+ }
+
+ private MFDataModel.LiteralOrVariableRef getLiteralOrVariableRef() throws MFParseException {
+ int cp = input.peekChar();
+ if (cp == '$') {
+ return getVariableRef();
+ }
+ return getLiteral();
+ }
+
+ // abnf: literal = quoted / unquoted
+ private MFDataModel.Literal getLiteral() throws MFParseException {
+ int cp = input.readCodePoint();
+ switch (cp) {
+ case '|': // quoted
+ // abnf: quoted = "|" *(quoted-char / quoted-escape) "|"
+ input.backup(1);
+ MFDataModel.Literal ql = getQuotedLiteral();
+ return ql;
+ default: // unquoted
+ input.backup(1);
+ MFDataModel.Literal unql = getUnQuotedLiteral();
+ return unql;
+ }
+ }
+
+ private MFDataModel.VariableRef getVariableRef() throws MFParseException {
+ int cp = input.readCodePoint();
+ if (cp != '$') {
+ checkCondition(cp == '$', "We can't get here");
+ }
+
+ // abnf: variable = "$" name
+ String name = getName();
+ checkCondition(name != null, "Invalid variable reference following $");
+ return new MFDataModel.VariableRef(name);
+ }
+
+ private MFDataModel.Literal getQuotedLiteral() throws MFParseException {
+ StringBuilder result = new StringBuilder();
+ int cp = input.readCodePoint();
+ checkCondition(cp == '|', "expected starting '|'");
+ while (true) {
+ cp = input.readCodePoint();
+ if (cp == EOF) {
+ break;
+ } else if (StringUtils.isQuotedChar(cp)) {
+ result.appendCodePoint(cp);
+ } else if (cp == '\\') {
+ cp = input.readCodePoint();
+ checkCondition(cp == '|', "Invalid escape sequence, only \"\\|\" is valid here");
+ result.appendCodePoint('|');
+ } else {
+ break;
+ }
+ }
+
+ checkCondition(cp == '|', "expected ending '|'");
+
+ return new MFDataModel.Literal(result.toString());
+ }
+
+ private MFDataModel.Literal getUnQuotedLiteral() throws MFParseException {
+ String name = getName();
+ if (name != null) {
+ return new MFDataModel.Literal(name);
+ }
+ return getNumberLiteral();
+ }
+
+ // abnf: ; number-literal matches JSON number (https://www.rfc-editor.org/rfc/rfc8259#section-6)
+ // abnf: number-literal = ["-"] (%x30 / (%x31-39 *DIGIT)) ["." 1*DIGIT] [%i"e" ["-" / "+"] 1*DIGIT]
+ private static final Pattern RE_NUMBER_LITERAL =
+ Pattern.compile("^-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+\\-]?[0-9]+)?");
+
+ private MFDataModel.Literal getNumberLiteral() {
+ String numberString = peekWithRegExp(RE_NUMBER_LITERAL);
+ if (numberString != null) {
+ return new MFDataModel.Literal(numberString);
+ }
+ return null;
+ }
+
+ private void skipMandatoryWhitespaces() throws MFParseException {
+ int count = skipWhitespaces();
+ checkCondition(count > 0, "Space expected");
+ }
+
+ private void skipOptionalWhitespaces() {
+ skipWhitespaces();
+ }
+
+ private int skipWhitespaces() {
+ int skipCount = 0;
+ while (true) {
+ int cp = input.readCodePoint();
+ if (cp == EOF) {
+ return skipCount;
+ }
+ if (!StringUtils.isWhitespace(cp)) {
+ input.backup(1);
+ return skipCount;
+ }
+ skipCount++;
+ }
+ }
+
+ private MFDataModel.Message getComplexMessage() throws MFParseException {
+ List<MFDataModel.Declaration> declarations = new ArrayList<>();
+ boolean foundMatch = false;
+ while (true) {
+ MFDataModel.Declaration declaration = getDeclaration();
+ if (declaration == null) {
+ break;
+ }
+ if (declaration instanceof MatchDeclaration) {
+ foundMatch = true;
+ break;
+ }
+ declarations.add(declaration);
+ }
+ if (foundMatch) {
+ return getMatch(declarations);
+ } else { // Expect {{...}} or end of message
+ skipOptionalWhitespaces();
+ int cp = input.peekChar();
+ if (cp == EOF) {
+ // Only declarations, no pattern
+ return new MFDataModel.PatternMessage(declarations, null);
+ } else {
+ MFDataModel.Pattern pattern = getQuotedPattern();
+ return new MFDataModel.PatternMessage(declarations, pattern);
+ }
+ }
+ }
+
+ // abnf: matcher = match-statement 1*([s] variant)
+ // abnf: match-statement = match 1*([s] selector)
+ // abnf: selector = expression
+ // abnf: variant = key *(s key) [s] quoted-pattern
+ // abnf: key = literal / "*"
+ // abnf: match = %s".match"
+ private MFDataModel.SelectMessage getMatch(List<MFDataModel.Declaration> declarations)
+ throws MFParseException {
+ // ".match" was already consumed by the caller
+ // Look for selectors
+ List<MFDataModel.Expression> expressions = new ArrayList<>();
+ while (true) {
+ skipMandatoryWhitespaces();
+ MFDataModel.Expression expression = getPlaceholder();
+ if (expression == null) {
+ break;
+ }
+ checkCondition(
+ !(expression instanceof MFDataModel.Markup), "Cannot do selection on markup");
+ expressions.add(expression);
+ }
+
+ checkCondition(!expressions.isEmpty(), "There should be at least one selector expression.");
+
+ // At this point we need to look for variants, which are key - value
+ List<MFDataModel.Variant> variants = new ArrayList<>();
+ while (true) {
+ MFDataModel.Variant variant = getVariant();
+ if (variant == null) {
+ break;
+ }
+ variants.add(variant);
+ }
+ return new MFDataModel.SelectMessage(declarations, expressions, variants);
+ }
+
+ // abnf: variant = key *(s key) [s] quoted-pattern
+ // abnf: key = literal / "*"
+ private MFDataModel.Variant getVariant() throws MFParseException {
+ List<MFDataModel.LiteralOrCatchallKey> keys = new ArrayList<>();
+ // abnf variant = key *(s key) [s] quoted-pattern
+ while (true) {
+ // Space is required between keys
+ MFDataModel.LiteralOrCatchallKey key = getKey(!keys.isEmpty());
+ if (key == null) {
+ break;
+ }
+ keys.add(key);
+ }
+ skipOptionalWhitespaces();
+ if (input.atEnd()) {
+ checkCondition(
+ keys.isEmpty(), "After selector keys it is mandatory to have a pattern.");
+ return null;
+ }
+ MFDataModel.Pattern pattern = getQuotedPattern();
+ return new MFDataModel.Variant(keys, pattern);
+ }
+
+ private MFDataModel.LiteralOrCatchallKey getKey(boolean requireSpaces) throws MFParseException {
+ if (requireSpaces) {
+ skipMandatoryWhitespaces();
+ } else {
+ skipOptionalWhitespaces();
+ }
+ int cp = input.peekChar();
+ if (cp == '*') {
+ input.readCodePoint(); // consume the '*'
+ return new MFDataModel.CatchallKey();
+ }
+ if (cp == EOF) {
+ return null;
+ }
+ return getLiteral();
+ }
+
+ private static class MatchDeclaration implements MFDataModel.Declaration {
+ // Provides a common type that extends MFDataModel.Declaration but for match.
+ // There is no such thing in the data model.
+ }
+
+ // abnf: input-declaration = input [s] variable-expression
+ // abnf: local-declaration = local s variable [s] "=" [s] expression
+ // abnf: reserved-statement = reserved-keyword [s reserved-body] 1*([s] expression)
+ // abnf: reserved-keyword = "." name
+ private MFDataModel.Declaration getDeclaration() throws MFParseException {
+ int position = input.getPosition();
+ skipOptionalWhitespaces();
+ int cp = input.readCodePoint();
+ if (cp != '.') {
+ input.gotoPosition(position);
+ return null;
+ }
+ String declName = getName();
+ checkCondition(declName != null, "Expected a declaration after the '.'");
+
+ MFDataModel.Expression expression;
+ switch (declName) {
+ case "input":
+ skipMandatoryWhitespaces();
+ expression = getPlaceholder();
+ String inputVarName = null;
+ if (expression instanceof MFDataModel.VariableExpression) {
+ inputVarName = ((MFDataModel.VariableExpression) expression).arg.name;
+ }
+ if (expression instanceof MFDataModel.VariableExpression) {
+ return new MFDataModel.InputDeclaration(
+ inputVarName, (MFDataModel.VariableExpression) expression);
+ }
+ break;
+ case "local":
+ // abnf: local-declaration = local s variable [s] "=" [s] expression
+ skipMandatoryWhitespaces();
+ MFDataModel.LiteralOrVariableRef varName = getVariableRef();
+ skipOptionalWhitespaces();
+ cp = input.readCodePoint();
+ checkCondition(cp == '=', declName);
+ skipOptionalWhitespaces();
+ expression = getPlaceholder();
+ if (varName instanceof MFDataModel.VariableRef) {
+ return new MFDataModel.LocalDeclaration(
+ ((MFDataModel.VariableRef) varName).name, expression);
+ }
+ break;
+ case "match":
+ return new MatchDeclaration();
+ default: // abnf: reserved-statement = reserved-keyword [s reserved-body] 1*([s] expression)
+ skipOptionalWhitespaces();
+ String body = getReservedBody();
+ List<MFDataModel.Expression> expressions = new ArrayList<>();
+ while (true) {
+ skipOptionalWhitespaces();
+ expression = getPlaceholder();
+ // This also covers != null
+ if (expression instanceof MFDataModel.VariableExpression) {
+ expressions.add(expression);
+ } else {
+ break;
+ }
+ }
+ return new MFDataModel.UnsupportedStatement(declName, body, expressions);
+ }
+ return null;
+ }
+
+ // quoted-pattern = "{{" pattern "}}"
+ private MFDataModel.Pattern getQuotedPattern() throws MFParseException { // {{ ... }}
+ int cp = input.readCodePoint();
+ checkCondition(cp == '{', "Expected { for a complex body");
+ cp = input.readCodePoint();
+ checkCondition(cp == '{', "Expected second { for a complex body");
+ MFDataModel.Pattern pattern = getPattern();
+ cp = input.readCodePoint();
+ checkCondition(cp == '}', "Expected } to end a complex body");
+ cp = input.readCodePoint();
+ checkCondition(cp == '}', "Expected second } to end a complex body");
+ return pattern;
+ }
+
+ private String getName() throws MFParseException {
+ StringBuilder result = new StringBuilder();
+ int cp = input.readCodePoint();
+ checkCondition(cp != EOF, "Expected name or namespace.");
+ if (!StringUtils.isNameStart(cp)) {
+ input.backup(1);
+ return null;
+ }
+ result.appendCodePoint(cp);
+ while (true) {
+ cp = input.readCodePoint();
+ if (StringUtils.isNameChar(cp)) {
+ result.appendCodePoint(cp);
+ } else if (cp == EOF) {
+ break;
+ } else {
+ input.backup(1);
+ break;
+ }
+ }
+ return result.toString();
+ }
+
+ private void checkCondition(boolean condition, String message) throws MFParseException {
+ if (!condition) {
+ error(message);
+ }
+ }
+
+ private void error(String message) throws MFParseException {
+ StringBuilder finalMsg = new StringBuilder();
+ if (input == null) {
+ finalMsg.append("Parse error: ");
+ finalMsg.append(message);
+ } else {
+ int position = input.getPosition();
+ finalMsg.append("Parse error [" + input.getPosition() + "]: ");
+ finalMsg.append(message);
+ finalMsg.append("\n");
+ if (position != EOF) {
+ finalMsg.append(input.buffer.substring(0, position));
+ finalMsg.append("^^^");
+ finalMsg.append(input.buffer.substring(position));
+ } else {
+ finalMsg.append(input.buffer);
+ finalMsg.append("^^^");
+ }
+ }
+ throw new MFParseException(finalMsg.toString(), input.getPosition());
+ }
+
+ private String peekWithRegExp(Pattern pattern) {
+ StringView sv = new StringView(input.buffer, input.getPosition());
+ Matcher m = pattern.matcher(sv);
+ boolean found = m.find();
+ if (found) {
+ input.skip(m.group().length());
+ return m.group();
+ }
+ return null;
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFSerializer.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFSerializer.java
new file mode 100644
index 000000000..58fcf81cb
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MFSerializer.java
@@ -0,0 +1,380 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+
+import com.ibm.icu.message2.MFDataModel.Annotation;
+import com.ibm.icu.message2.MFDataModel.Attribute;
+import com.ibm.icu.message2.MFDataModel.CatchallKey;
+import com.ibm.icu.message2.MFDataModel.Declaration;
+import com.ibm.icu.message2.MFDataModel.Expression;
+import com.ibm.icu.message2.MFDataModel.FunctionAnnotation;
+import com.ibm.icu.message2.MFDataModel.FunctionExpression;
+import com.ibm.icu.message2.MFDataModel.InputDeclaration;
+import com.ibm.icu.message2.MFDataModel.Literal;
+import com.ibm.icu.message2.MFDataModel.LiteralExpression;
+import com.ibm.icu.message2.MFDataModel.LiteralOrCatchallKey;
+import com.ibm.icu.message2.MFDataModel.LiteralOrVariableRef;
+import com.ibm.icu.message2.MFDataModel.LocalDeclaration;
+import com.ibm.icu.message2.MFDataModel.Markup;
+import com.ibm.icu.message2.MFDataModel.Option;
+import com.ibm.icu.message2.MFDataModel.Pattern;
+import com.ibm.icu.message2.MFDataModel.PatternMessage;
+import com.ibm.icu.message2.MFDataModel.PatternPart;
+import com.ibm.icu.message2.MFDataModel.SelectMessage;
+import com.ibm.icu.message2.MFDataModel.StringPart;
+import com.ibm.icu.message2.MFDataModel.UnsupportedAnnotation;
+import com.ibm.icu.message2.MFDataModel.UnsupportedExpression;
+import com.ibm.icu.message2.MFDataModel.UnsupportedStatement;
+import com.ibm.icu.message2.MFDataModel.VariableExpression;
+import com.ibm.icu.message2.MFDataModel.VariableRef;
+import com.ibm.icu.message2.MFDataModel.Variant;
+
+/**
+ * This class serializes a MessageFormat 2 data model {@link MFDataModel.Message} to a string,
+ * with the proper MessageFormat 2 syntax.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+@Deprecated
+public class MFSerializer {
+ private boolean shouldDoubleQuotePattern = false;
+ private boolean needSpace = false;
+ private final StringBuilder result = new StringBuilder();
+
+ /**
+ * Method converting the {@link MFDataModel.Message} to a string in MessageFormat 2 syntax.
+ *
+ * <p>The result is not necessarily identical with the original string parsed to generate
+ * the data model. But is is functionally equivalent.</p>
+ *
+ * @param message the data model message to serialize
+ * @return the serialized message, in MessageFormat 2 syntax
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ @Deprecated
+ public static String dataModelToString(MFDataModel.Message message) {
+ return new MFSerializer().messageToString(message);
+ }
+
+ private String messageToString(MFDataModel.Message message) {
+ if (message instanceof PatternMessage) {
+ patternMessageToString((PatternMessage) message);
+ } else if (message instanceof SelectMessage) {
+ selectMessageToString((SelectMessage) message);
+ } else {
+ errorType("Message", message);
+ }
+ return result.toString();
+ }
+
+ private void selectMessageToString(SelectMessage message) {
+ declarationsToString(message.declarations);
+ shouldDoubleQuotePattern = true;
+ addSpaceIfNeeded();
+ result.append(".match");
+ for (Expression selector : message.selectors) {
+ result.append(' ');
+ expressionToString(selector);
+ }
+ for (Variant variant : message.variants) {
+ variantToString(variant);
+ }
+ }
+
+ private void patternMessageToString(PatternMessage message) {
+ declarationsToString(message.declarations);
+ patternToString(message.pattern);
+ }
+
+ private void patternToString(Pattern pattern) {
+ addSpaceIfNeeded();
+ if (shouldDoubleQuotePattern) {
+ result.append("{{");
+ }
+ for (PatternPart part : pattern.parts) {
+ if (part instanceof StringPart) {
+ stringPartToString((StringPart) part);
+ } else {
+ expressionToString((Expression) part);
+ }
+ }
+ if (shouldDoubleQuotePattern) {
+ result.append("}}");
+ }
+ }
+
+ private void expressionToString(Expression expression) {
+ if (expression == null) {
+ return;
+ }
+ if (expression instanceof LiteralExpression) {
+ literalExpressionToString((LiteralExpression) expression);
+ } else if (expression instanceof VariableExpression) {
+ variableExpressionToString((VariableExpression) expression);
+ } else if (expression instanceof FunctionExpression) {
+ functionExpressionToString((FunctionExpression) expression);
+ } else if (expression instanceof Markup) {
+ markupToString((Markup) expression);
+ } else if (expression instanceof UnsupportedExpression) {
+ unsupportedExpressionToString((UnsupportedExpression) expression);
+ } else {
+ errorType("Expression", expression);
+ }
+ }
+
+ private void unsupportedExpressionToString(UnsupportedExpression ue) {
+ result.append('{');
+ annotationToString(ue.annotation);
+ attributesToString(ue.attributes);
+ result.append('}');
+ }
+
+ private void markupToString(Markup markup) {
+ result.append('{');
+ if (markup.kind == Markup.Kind.CLOSE) {
+ result.append('/');
+ } else {
+ result.append('#');
+ }
+ result.append(markup.name);
+ optionsToString(markup.options);
+ attributesToString(markup.attributes);
+ if (markup.kind == Markup.Kind.STANDALONE) {
+ result.append('/');
+ }
+ result.append('}');
+ }
+
+ private void optionsToString(Map<String, Option> options) {
+ for (Option option : options.values()) {
+ result.append(' ');
+ result.append(option.name);
+ result.append('=');
+ literalOrVariableRefToString(option.value);
+ }
+ }
+
+ private void functionExpressionToString(FunctionExpression fe) {
+ result.append('{');
+ annotationToString(fe.annotation);
+ attributesToString(fe.attributes);
+ result.append('}');
+ }
+
+ private void attributesToString(List<Attribute> attributes) {
+ if (attributes == null) {
+ return;
+ }
+ for (Attribute attribute : attributes) {
+ result.append(" @");
+ result.append(attribute.name);
+ // Attributes can be with without a value (for now?)
+ if (attribute.value != null) {
+ result.append('=');
+ literalOrVariableRefToString(attribute.value);
+ }
+ }
+ }
+
+ private void annotationToString(Annotation annotation) {
+ if (annotation == null) {
+ return;
+ }
+ if (annotation instanceof FunctionAnnotation) {
+ addSpaceIfNeeded();
+ result.append(":");
+ result.append(((FunctionAnnotation) annotation).name);
+ optionsToString(((FunctionAnnotation) annotation).options);
+ } else if (annotation instanceof UnsupportedAnnotation) {
+ addSpaceIfNeeded();
+ String value = ((UnsupportedAnnotation) annotation).source;
+ for (int i = 0; i < value.length(); i++) {
+ char c = value.charAt(i);
+ if (c == '\\' || c == '{' || c == '}') {
+ result.append('\\');
+ }
+ result.append(c);
+ }
+ } else {
+ errorType("Annotation", annotation);
+ }
+ }
+
+ private void variableExpressionToString(VariableExpression ve) {
+ if (ve == null) {
+ return;
+ }
+ result.append('{');
+ literalOrVariableRefToString(ve.arg);
+ needSpace = true;
+ annotationToString(ve.annotation);
+ attributesToString(ve.attributes);
+ result.append('}');
+ needSpace = false;
+ }
+
+ private void literalOrVariableRefToString(LiteralOrVariableRef literalOrVarRef) {
+ if (literalOrVarRef instanceof Literal) {
+ literalToString((Literal) literalOrVarRef);
+ } else if (literalOrVarRef instanceof VariableRef) {
+ result.append("$" + ((VariableRef) literalOrVarRef).name);
+ } else {
+ errorType("LiteralOrVariableRef", literalOrVarRef);
+ }
+ }
+
+ // abnf: number-literal = ["-"] (%x30 / (%x31-39 *DIGIT)) ["." 1*DIGIT]
+ // [%i"e" ["-" / "+"] 1*DIGIT]
+ // Not identical to the one in the parser. This one has a $ at the end, to
+ // match the whole string
+ // TBD if it can be refactored to reuse.
+ private static final java.util.regex.Pattern RE_NUMBER_LITERAL =
+ java.util.regex.Pattern.compile("^-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+\\-]?[0-9]+)?$");
+
+ private void literalToString(Literal literal) {
+ String value = literal.value;
+ Matcher matcher = RE_NUMBER_LITERAL.matcher(value);
+ if (matcher.find()) { // It is a number, output as is
+ result.append(value);
+ } else {
+ StringBuilder literalBuffer = new StringBuilder();
+ boolean wasName = true;
+ for (int i = 0; i < value.length(); i++) {
+ char c = value.charAt(i);
+ if (c == '\\' || c == '|') {
+ literalBuffer.append('\\');
+ }
+ literalBuffer.append(c);
+ if (i == 0 && !StringUtils.isNameStart(c)) {
+ wasName = false;
+ } else if (!StringUtils.isNameChar(c)) {
+ wasName = false;
+ }
+ }
+ if (wasName && literalBuffer.length() != 0) {
+ result.append(literalBuffer);
+ } else {
+ result.append('|');
+ result.append(literalBuffer);
+ result.append('|');
+ }
+ }
+ }
+
+ private void literalExpressionToString(LiteralExpression le) {
+ result.append('{');
+ literalOrVariableRefToString(le.arg);
+ needSpace = true;
+ annotationToString(le.annotation);
+ attributesToString(le.attributes);
+ result.append('}');
+ }
+
+ private void stringPartToString(StringPart part) {
+ if (part.value.startsWith(".")) {
+ if (!shouldDoubleQuotePattern) {
+ shouldDoubleQuotePattern = true;
+ result.append("{{");
+ }
+ }
+ for (int i = 0; i < part.value.length(); i++) {
+ char c = part.value.charAt(i);
+ if (c == '\\' || c == '{' || c == '}') {
+ result.append('\\');
+ }
+ result.append(c);
+ }
+ }
+
+ private void declarationsToString(List<Declaration> declarations) {
+ if (declarations == null || declarations.isEmpty()) {
+ return;
+ }
+ shouldDoubleQuotePattern = true;
+ for (Declaration declaration : declarations) {
+ if (declaration instanceof LocalDeclaration) {
+ localDeclarationToString((LocalDeclaration) declaration);
+ } else if (declaration instanceof InputDeclaration) {
+ inputDeclarationToString((InputDeclaration) declaration);
+ } else if (declaration instanceof UnsupportedStatement) {
+ unsupportedStatementToString((UnsupportedStatement) declaration);
+ } else {
+ errorType("Declaration", declaration);
+ }
+ }
+ }
+
+ private void unsupportedStatementToString(UnsupportedStatement declaration) {
+ addSpaceIfNeeded();
+ result.append('.');
+ result.append(declaration.keyword);
+ if (!declaration.body.isEmpty()) {
+ result.append(' ');
+ }
+ result.append('|');
+ result.append(declaration.body);
+ result.append('|');
+ needSpace = true;
+ for (Expression expression : declaration.expressions) {
+ addSpaceIfNeeded();
+ expressionToString(expression);
+ needSpace = true;
+ }
+ }
+
+ private void inputDeclarationToString(InputDeclaration declaration) {
+ addSpaceIfNeeded();
+ result.append(".input ");
+ variableExpressionToString(declaration.value);
+ needSpace = true;
+ }
+
+ private void localDeclarationToString(LocalDeclaration declaration) {
+ addSpaceIfNeeded();
+ result.append(".local $");
+ result.append(declaration.name);
+ result.append(" = ");
+ expressionToString(declaration.value);
+ needSpace = true;
+ }
+
+ private void variantToString(Variant variant) {
+ for (LiteralOrCatchallKey key : variant.keys) {
+ result.append(' ');
+ if (key instanceof CatchallKey) {
+ result.append('*');
+ } else {
+ literalToString(((Literal) key));
+ }
+ }
+ result.append(' ');
+ patternToString(variant.value);
+ }
+
+ private void addSpaceIfNeeded() {
+ if (needSpace) {
+ result.append(' ');
+ needSpace = false;
+ }
+ }
+
+ private void errorType(String expectedType, Object obj) {
+ error("Unexpected '" + expectedType + "' type: ", obj);
+ }
+
+ private void error(String text, Object obj) {
+ error(text + obj.getClass().getName());
+ }
+
+ private void error(String text) {
+ throw new RuntimeException(text);
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MessageFormatter.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MessageFormatter.java
index 63fff2df3..7185f3cf6 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/MessageFormatter.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/MessageFormatter.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
@@ -8,12 +8,12 @@ import java.util.Map;
/**
* <h3>Overview of {@code MessageFormatter}</h3>
- *
+ *
* <p>In ICU4J, the {@code MessageFormatter} class is the next iteration of {@link com.ibm.icu.text.MessageFormat}.
* This new version will build on the lessons learned from using MessageFormat for 25 years
* in various environments, when used directly or as a base for other public APIs.</p>
*
- *
+ *
* <p>The effort to design a succesor to {@code MessageFormat} will result in a specification
* referred to as MessageFormat 2.0.
* The reasoning for this effort is shared in the
@@ -36,9 +36,9 @@ import java.util.Map;
* but the final set of functions and the parameters accepted by those functions is not yet finalized.</p>
*
* <h3>Examples</h3>
- *
+ *
* <h4>Basic usage</h4>
- *
+ *
* <blockquote><pre>
* import static org.junit.Assert.assertEquals;
* import java.util.Date;
@@ -49,56 +49,57 @@ import java.util.Map;
* import com.ibm.icu.message2.MessageFormatter;
*
* &#064;Test
- * public void testMf2() {
+ * public void test() {
* final Locale enGb = Locale.forLanguageTag("en-GB");
* Map<String, Object> arguments = new HashMap<>();
* arguments.put("name", "John");
- * arguments.put("exp", new Date(1679971371000L)); // March 27, 2023, 7:42:51 PM
+ * arguments.put("exp", new Date(2023 - 1900, 2, 27, 19, 42, 51)); // March 27, 2023, 7:42:51 PM
*
* MessageFormatter mf2 = MessageFormatter.builder()
- * .setPattern("{Hello {$name}, your card expires on {$exp :datetime skeleton=yMMMdE}!}")
- * .setLocale(enGb)
- * .build();
+ * .setPattern("Hello {$name}, your card expires on {$exp :datetime year=numeric month=short day=numeric weekday=short}!")
+ * .setLocale(enGb)
+ * .build();
*
* assertEquals(
- * "Hello John, your card expires on Mon, 27 Mar 2023!",
- * mf2.formatToString(arguments));
+ * "Hello John, your card expires on Mon, 27 Mar 2023!",
+ * mf2.formatToString(arguments));
* }
* </pre></blockquote>
- *
+ *
* <h4>Placeholder examples</h4>
- *
+ *
* <table border="1">
* <tr>
* <th>Code to set runtime value for placeholder</th>
* <th>Examples of placeholder in message pattern</th>
* </tr>
* <tr>
- * <td>{@code arguments.put("name", "John")}</td>
- * <td>{@code &#125;$name&#126;}</td>
+ * <td><code>arguments.put("name", "John")</code></td>
+ * <td><code>{$name}</code></td>
* </tr>
* <tr>
- * <td>{@code arguments.put("exp", new Date(…))}</td>
- * <td>{@code &#125;$exp :datetime skeleton=yMMMdE&#126;} <br> {@code &#125;$exp :datetime datestyle=full&#126;}</td>
+ * <td><code>arguments.put("exp", new Date(…))</code></td>
+ * <td><code>{$exp :datetime skeleton=year=numeric month=short day=numeric weekday=short}</code> <br>
+ * <code>{$exp :datetime dateStyle=full}</code></td>
* </tr>
* <tr>
- * <td>{@code arguments.put("val", 3.141592653)}</td>
- * <td>{@code &#125;$val&#126;} <br> {@code &#125;$val :number skeleton=(.####)&#126;}</td>
+ * <td><code>arguments.put("val", 3.141592653)</code></td>
+ * <td><code>{$val}</code> <br> <code>{$val :number minimumFractionDigits=5}</code></td>
* </tr>
* <tr>
* <td>No argument for fixed values known at build time</td>
- * <td>{@code &#125;(123456789.531) :number&#126;}</td>
+ * <td><code>{|123456789.531| :number}</code></td>
* </tr>
* </table>
- *
+ *
* <h4>Plural selection message</h4>
- *
+ *
* <blockquote><pre>
* &#064;Test
- * public void testMf2Selection() {
- * final String message = "match {$count :plural}\n"
- * + " when one {You have one notification.}\n"
- * + " when * {You have {$count} notifications.}\n";
+ * public void testSelection() {
+ * final String message = ".match {$count :number}\n"
+ * + " 1 {{You have one notification.}}\n"
+ * + " * {{You have {$count} notifications.}}\n";
* final Locale enGb = Locale.forLanguageTag("en-GB");
* Map<String, Object> arguments = new HashMap<>();
*
@@ -118,86 +119,22 @@ import java.util.Map;
* mf2.formatToString(arguments));
* }
* </pre></blockquote>
- *
+ *
* <h4>Built-in formatter functions</h4>
- *
- * <p>The tech preview implementation comes with formatters for numbers ({@code number}),
- * date / time ({@code datetime}),
- * plural selectors ({@code plural} and {@code selectordinal}),
- * and general selector ({@code select}),
- * very similar to what MessageFormat offers.</p>
- *
+ *
+ * <p>The tech preview implementation comes with formatters for numbers ({@code :number}),
+ * date / time ({@code :datetime}, {@code :date}, {@code :time}),
+ * plural selectors ({@code :number} with options for {@code plural} and {@code ordinal} selection),
+ * and general selector ({@code :string}),
+ * very similar to what {@code MessageFormat} offers.</p>
+ *
* <p>The <a target="github" href="https://github.com/unicode-org/icu/tree/main/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2">ICU test code</a>
* covers most features, and has examples of how to make custom placeholder formatters;
* you can look for classes that implement {@code com.ibm.icu.message2.FormatterFactory}
* (they are named {@code Custom*Test.java}).</p>
- *
- * <h3>Functions currently implemented</h3>
- *
- * <p>These are the functions interpreted right now:</p>
- *
- * <table border="1">
- * <tr>
- * <td rowspan="4">{@code datetime}</td>
- * <td>Similar to MessageFormat's {@code date} and {@code time}.</td>
- * </tr>
- *
- * <tr><td>{@code datestyle} and {@code timestyle}<br>
- * Similar to {@code argStyle : short | medium | long | full}.<br>
- * Same values are accepted, but we can use both in one placeholder,
- * for example <code>{$due :datetime datestyle=full timestyle=long}</code>.
- * </td></tr>
*
- * <tr><td>{@code pattern}<br>
- * Similar to {@code argStyle = argStyleText}.<br>
- * This is bad i18n practice, and will probably be dropped.<br>
- * This is included just to support migration to MessageFormat 2.
- * </td></tr>
- *
- * <tr><td>{@code skeleton}<br>
- * Same as {@code argStyle = argSkeletonText}.<br>
- * These are the date/time skeletons as supported by {@link com.ibm.icu.text.SimpleDateFormat}.
- * </td></tr>
- *
- * <tr>
- * <td rowspan="4">{@code number}</td>
- * <td>Similar to MessageFormat's {@code number}.</td>
- * </tr>
- *
- * <tr><td>{@code skeleton}<br>
- * These are the number skeletons as supported by {@link com.ibm.icu.number.NumberFormatter}.</td></tr>
- *
- * <tr><td>{@code minimumFractionDigits}<br>
- * Only implemented to be able to pass the unit tests from the ECMA tech preview implementation,
- * which prefers options bags to skeletons.<br>
- * TBD if the final {@number} function will support skeletons, option backs, or both.</td></tr>
- *
- * <tr><td>{@code offset}<br>
- * Used to support plural with an offset.</td></tr>
- *
- * <tr><td >{@code identity}</td><td>Returns the direct string value of the argument (calling {@code toString()}).</td></tr>
- *
- * <tr>
- * <td rowspan="3">{@code plural}</td>
- * <td>Similar to MessageFormat's {@code plural}.</td>
- * </tr>
- *
- * <tr><td>{@code skeleton}<br>
- * These are the number skeletons as supported by {@link com.ibm.icu.number.NumberFormatter}.<br>
- * Can also be indirect, from a local variable of type {@code number} (recommended).</td></tr>
- *
- * <tr><td>{@code offset}<br>
- * Used to support plural with an offset.<br>
- * Can also be indirect, from a local variable of type {@code number} (recommended).</td></tr>
- *
- * <tr>
- * <td>{@code selectordinal}</td>
- * <td>Similar to MessageFormat's {@code selectordinal}.<br>
- * For now it accepts the same parameters as {@code plural}, although there is no use case for them.<br>
- * TBD if this will be merged into {@code plural} (with some {@code kind} option) or not.</td></tr>
- *
- * <tr><td>{@code select}</td><td>Literal match, same as MessageFormat's {@code select}.</td></tr>
- * </table>
+ * <p>The complete list of valid options for each function, and how they infulence the results, can be found at
+ * <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/registry.md">here</a>.<p>
*
* @internal ICU 72 technology preview
* @deprecated This API is for technology preview only.
@@ -206,36 +143,35 @@ import java.util.Map;
public class MessageFormatter {
private final Locale locale;
private final String pattern;
- private final Mf2FunctionRegistry functionRegistry;
- private final Mf2DataModel dataModel;
- private final Mf2DataModelFormatter modelFormatter;
+ private final MFFunctionRegistry functionRegistry;
+ private final MFDataModel.Message dataModel;
+ private final MFDataModelFormatter modelFormatter;
private MessageFormatter(Builder builder) {
this.locale = builder.locale;
this.functionRegistry = builder.functionRegistry;
if ((builder.pattern == null && builder.dataModel == null)
|| (builder.pattern != null && builder.dataModel != null)) {
- throw new IllegalArgumentException("You need to set either a pattern, or a dataModel, but not both.");
+ throw new IllegalArgumentException(
+ "You need to set either a pattern, or a dataModel, but not both.");
}
if (builder.dataModel != null) {
this.dataModel = builder.dataModel;
- this.pattern = Mf2Serializer.dataModelToString(this.dataModel);
+ // this.pattern = MFSerializer.dataModelToString(this.dataModel);
+ this.pattern = MFSerializer.dataModelToString(dataModel);
} else {
this.pattern = builder.pattern;
- Mf2Serializer tree = new Mf2Serializer();
- Mf2Parser parser = new Mf2Parser(pattern, tree);
try {
- parser.parse_Message();
- dataModel = tree.build();
- } catch (Mf2Parser.ParseException pe) {
- throw new IllegalArgumentException(
- "Parse error:\n"
+ this.dataModel = MFParser.parse(pattern);
+ } catch (MFParseException pe) {
+ throw new IllegalArgumentException(""
+ + "Parse error:\n"
+ "Message: <<" + pattern + ">>\n"
- + "Error:" + parser.getErrorMessage(pe) + "\n");
+ + "Error: " + pe.getMessage() + "\n");
}
}
- modelFormatter = new Mf2DataModelFormatter(dataModel, locale, functionRegistry);
+ modelFormatter = new MFDataModelFormatter(dataModel, locale, functionRegistry);
}
/**
@@ -269,7 +205,7 @@ public class MessageFormatter {
* Get the pattern (the serialized message in MessageFormat 2 syntax) of
* the current {@code MessageFormatter}.
*
- * <p>If the {@code MessageFormatter} was created from an {@link Mf2DataModel}
+ * <p>If the {@code MessageFormatter} was created from an {@link MFDataModel}
* the this string is generated from that model.</p>
*
* @return the pattern.
@@ -297,7 +233,7 @@ public class MessageFormatter {
* @deprecated This API is for technology preview only.
*/
@Deprecated
- public Mf2DataModel getDataModel() {
+ public MFDataModel.Message getDataModel() {
return dataModel;
}
@@ -330,6 +266,7 @@ public class MessageFormatter {
* @deprecated This API is for technology preview only.
*/
@Deprecated
+ @SuppressWarnings("static-method")
public FormattedMessage format(Map<String, Object> arguments) {
throw new RuntimeException("Not yet implemented.");
}
@@ -344,12 +281,11 @@ public class MessageFormatter {
public static class Builder {
private Locale locale = Locale.getDefault(Locale.Category.FORMAT);
private String pattern = null;
- private Mf2FunctionRegistry functionRegistry = Mf2FunctionRegistry.builder().build();
- private Mf2DataModel dataModel = null;
+ private MFFunctionRegistry functionRegistry = MFFunctionRegistry.builder().build();
+ private MFDataModel.Message dataModel = null;
// Prevent direct creation
- private Builder() {
- }
+ private Builder() {}
/**
* Sets the locale to use for all formatting and selection operations.
@@ -384,7 +320,7 @@ public class MessageFormatter {
}
/**
- * Sets an instance of {@link Mf2FunctionRegistry} that should register any
+ * Sets an instance of {@link MFFunctionRegistry} that should register any
* custom functions used by the message.
*
* <p>There is no need to do this in order to use standard functions
@@ -399,7 +335,7 @@ public class MessageFormatter {
* @deprecated This API is for technology preview only.
*/
@Deprecated
- public Builder setFunctionRegistry(Mf2FunctionRegistry functionRegistry) {
+ public Builder setFunctionRegistry(MFFunctionRegistry functionRegistry) {
this.functionRegistry = functionRegistry;
return this;
}
@@ -415,7 +351,7 @@ public class MessageFormatter {
* @deprecated This API is for technology preview only.
*/
@Deprecated
- public Builder setDataModel(Mf2DataModel dataModel) {
+ public Builder setDataModel(MFDataModel.Message dataModel) {
this.dataModel = dataModel;
this.pattern = null;
return this;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2DataModel.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2DataModel.java
deleted file mode 100644
index 6c2af0f35..000000000
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2DataModel.java
+++ /dev/null
@@ -1,867 +0,0 @@
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package com.ibm.icu.message2;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.StringJoiner;
-
-/**
- * This maps closely to the official specification.
- * Since it is not final, we will not add javadoc everywhere.
- *
- * <p>See <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/syntax.md">the
- * description of the syntax with examples and use cases</a> and the corresponding
- * <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/message.ebnf">EBNF</a>.</p>
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
-@Deprecated
-@SuppressWarnings("javadoc")
-public class Mf2DataModel {
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class SelectorKeys {
- private final List<String> keys;
-
- private SelectorKeys(Builder builder) {
- keys = new ArrayList<>();
- keys.addAll(builder.keys);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public List<String> getKeys() {
- return Collections.unmodifiableList(keys);
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- @Override
- public String toString() {
- StringJoiner result = new StringJoiner(" ");
- for (String key : keys) {
- result.add(key);
- }
- return result.toString();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Builder {
- private final List<String> keys = new ArrayList<>();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder add(String key) {
- keys.add(key);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addAll(Collection<String> otherKeys) {
- this.keys.addAll(otherKeys);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public SelectorKeys build() {
- return new SelectorKeys(this);
- }
- }
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Pattern {
- private final List<Part> parts;
-
- private Pattern(Builder builder) {
- parts = new ArrayList<>();
- parts.addAll(builder.parts);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public List<Part> getParts() {
- return parts;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- @Override
- public String toString() {
- StringBuilder result = new StringBuilder();
- result.append("{");
- for (Part part : parts) {
- result.append(part);
- }
- result.append("}");
- return result.toString();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Builder {
- private final List<Part> parts = new ArrayList<>();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder add(Part part) {
- parts.add(part);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addAll(Collection<Part> otherParts) {
- parts.addAll(otherParts);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Pattern build() {
- return new Pattern(this);
- }
-
- }
- }
-
- /**
- * No functional role, this is only to be able to say that a message is a sequence of Part(s),
- * and that plain text {@link Text} and {@link Expression} are Part(s).
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public interface Part {
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Text implements Part {
- private final String value;
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- private Text(Builder builder) {
- this(builder.value);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Text(String value) {
- this.value = value;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public String getValue() {
- return value;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- @Override
- public String toString() {
- return value;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Builder {
- private String value;
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setValue(String value) {
- this.value = value;
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Text build() {
- return new Text(this);
- }
- }
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Expression implements Part {
- private final Value operand; // Literal | Variable
- private final String functionName;
- private final Map<String, Value> options;
- Formatter formatter = null;
-
- private Expression(Builder builder) {
- this.operand = builder.operand;
- this.functionName = builder.functionName;
- this.options = builder.options;
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Value getOperand() {
- return operand;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public String getFunctionName() {
- return functionName;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Map<String, Value> getOptions() {
- return options;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- @Override
- public String toString() {
- StringBuilder result = new StringBuilder();
- result.append("{");
- if (operand != null) {
- result.append(operand);
- }
- if (functionName != null) {
- result.append(" :").append(functionName);
- }
- for (Entry<String, Value> option : options.entrySet()) {
- result.append(" ").append(option.getKey()).append("=").append(option.getValue());
- }
- result.append("}");
- return result.toString();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Builder {
- private Value operand = null;
- private String functionName = null;
- private final OrderedMap<String, Value> options = new OrderedMap<>();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setOperand(Value operand) {
- this.operand = operand;
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setFunctionName(String functionName) {
- this.functionName = functionName;
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addOption(String key, Value value) {
- options.put(key, value);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addOptions(Map<String, Value> otherOptions) {
- options.putAll(otherOptions);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Expression build() {
- return new Expression(this);
- }
- }
- }
-
-// public static class Placeholder extends Expression implements Part {
-// public Placeholder(Builder builder) {
-// super(builder);
-// }
-// }
-
- /**
- * A Value can be either a Literal, or a Variable, but not both.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Value {
- private final String literal;
- private final String variableName;
-
- private Value(Builder builder) {
- this.literal = builder.literal;
- this.variableName = builder.variableName;
-// this(builder.literal, builder.variableName);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public String getLiteral() {
- return literal;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public String getVariableName() {
- return variableName;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public boolean isLiteral() {
- return literal != null;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public boolean isVariable() {
- return variableName != null;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- @Override
- public String toString() {
- return isLiteral() ? "(" + literal + ")" : "$" + variableName;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Builder {
- private String literal;
- private String variableName;
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setLiteral(String literal) {
- this.literal = literal;
- this.variableName = null;
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setVariableName(String variableName) {
- this.variableName = variableName;
- this.literal = null;
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Value build() {
- return new Value(this);
- }
- }
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Variable {
- private final String name;
-
- private Variable(Builder builder) {
- this.name = builder.name;
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public String getName() {
- return name;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Builder {
- private String name;
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setName(String name) {
- this.name = name;
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Variable build() {
- return new Variable(this);
- }
- }
- }
-
- /**
- * This is only to not force LinkedHashMap on the public API.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class OrderedMap<K, V> extends LinkedHashMap<K, V> {
- private static final long serialVersionUID = -7049361727790825496L;
-
- /**
- * {@inheritDoc}
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public OrderedMap() {
- super();
- }
- }
-
- private final OrderedMap<String, Expression> localVariables;
- private final List<Expression> selectors;
- private final OrderedMap<SelectorKeys, Pattern> variants;
- private final Pattern pattern;
-
- private Mf2DataModel(Builder builder) {
- this.localVariables = builder.localVariables;
- this.selectors = builder.selectors;
- this.variants = builder.variants;
- this.pattern = builder.pattern;
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public OrderedMap<String, Expression> getLocalVariables() {
- return localVariables;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public List<Expression> getSelectors() {
- return selectors;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public OrderedMap<SelectorKeys, Pattern> getVariants() {
- return variants;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Pattern getPattern() {
- return pattern;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- @Override
- public String toString() {
- StringBuilder result = new StringBuilder();
- for (Entry<String, Expression> lv : localVariables.entrySet()) {
- result.append("let $").append(lv.getKey());
- result.append(" = ");
- result.append(lv.getValue());
- result.append("\n");
- }
- if (!selectors.isEmpty()) {
- result.append("match");
- for (Expression e : this.selectors) {
- result.append(" ").append(e);
- }
- result.append("\n");
- for (Entry<SelectorKeys, Pattern> variant : variants.entrySet()) {
- result.append(" when ").append(variant.getKey());
- result.append(" ");
- result.append(variant.getValue());
- result.append("\n");
- }
- } else {
- result.append(pattern);
- }
- return result.toString();
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Builder {
- private final OrderedMap<String, Expression> localVariables = new OrderedMap<>(); // declaration*
- private final List<Expression> selectors = new ArrayList<>();
- private final OrderedMap<SelectorKeys, Pattern> variants = new OrderedMap<>();
- private Pattern pattern = Pattern.builder().build();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addLocalVariable(String variableName, Expression expression) {
- this.localVariables.put(variableName, expression);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addLocalVariables(OrderedMap<String, Expression> otherLocalVariables) {
- this.localVariables.putAll(otherLocalVariables);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addSelector(Expression otherSelector) {
- this.selectors.add(otherSelector);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addSelectors(List<Expression> otherSelectors) {
- this.selectors.addAll(otherSelectors);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addVariant(SelectorKeys keys, Pattern newPattern) {
- this.variants.put(keys, newPattern);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addVariants(OrderedMap<SelectorKeys, Pattern> otherVariants) {
- this.variants.putAll(otherVariants);
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setPattern(Pattern pattern) {
- this.pattern = pattern;
- return this;
- }
-
- /**
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Mf2DataModel build() {
- return new Mf2DataModel(this);
- }
- }
-}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2DataModelFormatter.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2DataModelFormatter.java
deleted file mode 100644
index bf73791d2..000000000
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2DataModelFormatter.java
+++ /dev/null
@@ -1,280 +0,0 @@
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package com.ibm.icu.message2;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import com.ibm.icu.message2.Mf2DataModel.Expression;
-import com.ibm.icu.message2.Mf2DataModel.Part;
-import com.ibm.icu.message2.Mf2DataModel.Pattern;
-import com.ibm.icu.message2.Mf2DataModel.SelectorKeys;
-import com.ibm.icu.message2.Mf2DataModel.Text;
-import com.ibm.icu.message2.Mf2DataModel.Value;
-import com.ibm.icu.util.Calendar;
-import com.ibm.icu.util.CurrencyAmount;
-
-/**
- * Takes an {@link Mf2DataModel} and formats it to a {@link String}
- * (and later on we will also implement formatting to a {@code FormattedMessage}).
- */
-// TODO: move this in the MessageFormatter
-class Mf2DataModelFormatter {
- private final Locale locale;
- private final Mf2DataModel dm;
-
- final Mf2FunctionRegistry standardFunctions;
- final Mf2FunctionRegistry customFunctions;
- private static final Mf2FunctionRegistry EMPTY_REGISTY = Mf2FunctionRegistry.builder().build();
-
- Mf2DataModelFormatter(Mf2DataModel dm, Locale locale, Mf2FunctionRegistry customFunctionRegistry) {
- this.locale = locale;
- this.dm = dm;
- this.customFunctions = customFunctionRegistry == null ? EMPTY_REGISTY : customFunctionRegistry;
-
- standardFunctions = Mf2FunctionRegistry.builder()
- // Date/time formatting
- .setFormatter("datetime", new DateTimeFormatterFactory())
- .setDefaultFormatterNameForType(Date.class, "datetime")
- .setDefaultFormatterNameForType(Calendar.class, "datetime")
-
- // Number formatting
- .setFormatter("number", new NumberFormatterFactory())
- .setDefaultFormatterNameForType(Integer.class, "number")
- .setDefaultFormatterNameForType(Double.class, "number")
- .setDefaultFormatterNameForType(Number.class, "number")
- .setDefaultFormatterNameForType(CurrencyAmount.class, "number")
-
- // Format that returns "to string"
- .setFormatter("identity", new IdentityFormatterFactory())
- .setDefaultFormatterNameForType(String.class, "identity")
- .setDefaultFormatterNameForType(CharSequence.class, "identity")
-
- // Register the standard selectors
- .setSelector("plural", new PluralSelectorFactory("cardinal"))
- .setSelector("selectordinal", new PluralSelectorFactory("ordinal"))
- .setSelector("select", new TextSelectorFactory())
- .setSelector("gender", new TextSelectorFactory())
-
- .build();
- }
-
- private static Map<String, Object> mf2OptToFixedOptions(Map<String, Value> options) {
- Map<String, Object> result = new HashMap<>();
- for (Entry<String, Value> option : options.entrySet()) {
- Value value = option.getValue();
- if (value.isLiteral()) {
- result.put(option.getKey(), value.getLiteral());
- }
- }
- return result;
- }
-
- private Map<String, Object> mf2OptToVariableOptions(Map<String, Value> options, Map<String, Object> arguments) {
- Map<String, Object> result = new HashMap<>();
- for (Entry<String, Value> option : options.entrySet()) {
- Value value = option.getValue();
- if (value.isVariable()) {
- result.put(option.getKey(), variableToObjectEx(value, arguments));
- }
- }
- return result;
- }
-
- FormatterFactory getFormattingFunctionFactoryByName(Object toFormat, String functionName) {
- // Get a function name from the type of the object to format
- if (functionName == null || functionName.isEmpty()) {
- if (toFormat == null) {
- // The object to format is null, and no function provided.
- return null;
- }
- Class<?> clazz = toFormat.getClass();
- functionName = standardFunctions.getDefaultFormatterNameForType(clazz);
- if (functionName == null) {
- functionName = customFunctions.getDefaultFormatterNameForType(clazz);
- }
- if (functionName == null) {
- throw new IllegalArgumentException("Object to format without a function, and unknown type: "
- + toFormat.getClass().getName());
- }
- }
-
- FormatterFactory func = standardFunctions.getFormatter(functionName);
- if (func == null) {
- func = customFunctions.getFormatter(functionName);
- if (func == null) {
- throw new IllegalArgumentException("Can't find an implementation for function: '"
- + functionName + "'");
- }
- }
- return func;
- }
-
- String format(Map<String, Object> arguments) {
- List<Expression> selectors = dm.getSelectors();
- Pattern patternToRender = selectors.isEmpty()
- ? dm.getPattern()
- : findBestMatchingPattern(selectors, arguments);
-
- StringBuilder result = new StringBuilder();
- for (Part part : patternToRender.getParts()) {
- if (part instanceof Text) {
- result.append(part);
- } else if (part instanceof Expression) { // Placeholder is an Expression
- FormattedPlaceholder fp = formatPlaceholder((Expression) part, arguments, false);
- result.append(fp.toString());
- } else {
- throw new IllegalArgumentException("Unknown part type: " + part);
- }
- }
- return result.toString();
- }
-
- private Pattern findBestMatchingPattern(List<Expression> selectors, Map<String, Object> arguments) {
- Pattern patternToRender = null;
-
- // Collect all the selector functions in an array, to reuse
- List<Selector> selectorFunctions = new ArrayList<>(selectors.size());
- for (Expression selector : selectors) {
- String functionName = selector.getFunctionName();
- SelectorFactory funcFactory = standardFunctions.getSelector(functionName);
- if (funcFactory == null) {
- funcFactory = customFunctions.getSelector(functionName);
- }
- if (funcFactory != null) {
- Map<String, Object> opt = mf2OptToFixedOptions(selector.getOptions());
- selectorFunctions.add(funcFactory.createSelector(locale, opt));
- } else {
- throw new IllegalArgumentException("Unknown selector type: " + functionName);
- }
- }
- // This should not be possible, we added one function for each selector, or we have thrown an exception.
- // But just in case someone removes the throw above?
- if (selectorFunctions.size() != selectors.size()) {
- throw new IllegalArgumentException("Something went wrong, not enough selector functions, "
- + selectorFunctions.size() + " vs. " + selectors.size());
- }
-
- // Iterate "vertically", through all variants
- for (Entry<SelectorKeys, Pattern> variant : dm.getVariants().entrySet()) {
- int maxCount = selectors.size();
- List<String> keysToCheck = variant.getKey().getKeys();
- if (selectors.size() != keysToCheck.size()) {
- throw new IllegalArgumentException("Mismatch between the number of selectors and the number of keys: "
- + selectors.size() + " vs. " + keysToCheck.size());
- }
- boolean matches = true;
- // Iterate "horizontally", through all matching functions and keys
- for (int i = 0; i < maxCount; i++) {
- Expression selector = selectors.get(i);
- String valToCheck = keysToCheck.get(i);
- Selector func = selectorFunctions.get(i);
- Map<String, Object> options = mf2OptToVariableOptions(selector.getOptions(), arguments);
- if (!func.matches(variableToObjectEx(selector.getOperand(), arguments), valToCheck, options)) {
- matches = false;
- break;
- }
- }
- if (matches) {
- patternToRender = variant.getValue();
- break;
- }
- }
-
- // TODO: check that there was an entry with all the keys set to `*`
- // And should do that only once, when building the data model.
- if (patternToRender == null) {
- // If there was a case with all entries in the keys `*` this should not happen
- throw new IllegalArgumentException("The selection went wrong, cannot select any option.");
- }
-
- return patternToRender;
- }
-
- /*
- * Pass a level to prevent local variables calling each-other recursively:
- *
- * <code><pre>
- * let $l1 = {$l4 :number}
- * let $l2 = {$l1 :number}
- * let $l3 = {$l2 :number}
- * let $l4 = {$l3 :number}
- * </pre></code>
- *
- * We can keep track of the calls (complicated and expensive).
- * Or we can forbid the use of variables before they are declared, but that is not in the spec (yet?).
- */
- private Object variableToObjectEx(Value value, Map<String, Object> arguments) {
- if (value == null) { // function only
- return null;
- }
- // We have an operand. Can be literal, local var, or argument.
- if (value.isLiteral()) {
- return value.getLiteral();
- } else if (value.isVariable()) {
- String varName = value.getVariableName();
- Expression localPh = dm.getLocalVariables().get(varName);
- if (localPh != null) {
- return formatPlaceholder(localPh, arguments, false);
- }
- return arguments.get(varName);
- } else {
- throw new IllegalArgumentException("Invalid operand type " + value);
- }
- }
-
- private FormattedPlaceholder formatPlaceholder(Expression ph, Map<String, Object> arguments, boolean localExpression) {
- Object toFormat;
- Value operand = ph.getOperand();
- if (operand == null) { // function only, "...{:currentOs option=value}..."
- toFormat = null;
- } else {
- // We have an operand. Can be literal, local var, or argument.
- if (operand.isLiteral()) { // "...{(1234.56) :number}..."
- // If it is a literal, return the string itself
- toFormat = operand.getLiteral();
- } else if (operand.isVariable()) {
- String varName = operand.getVariableName();
- if (!localExpression) {
- Expression localPh = dm.getLocalVariables().get(varName);
- if (localPh != null) {
- // If it is a local variable, we need to format that (recursive)
- // TODO: See if there is any danger to eval the local variables only once
- // (on demand in case the local var is not used, for example in a select)
- return formatPlaceholder(localPh, arguments, true);
- }
- }
- // Return the object in the argument bag.
- toFormat = arguments.get(varName);
- // toFormat might still be null here.
- } else {
- throw new IllegalArgumentException("Invalid operand type " + ph.getOperand());
- }
- }
-
- if (ph.formatter == null) {
- FormatterFactory funcFactory = getFormattingFunctionFactoryByName(toFormat, ph.getFunctionName());
- if (funcFactory != null) {
- Map<String, Object> fixedOptions = mf2OptToFixedOptions(ph.getOptions());
- Formatter ff = funcFactory.createFormatter(locale, fixedOptions);
- ph.formatter = ff;
- }
- }
- if (ph.formatter != null) {
- Map<String, Object> variableOptions = mf2OptToVariableOptions(ph.getOptions(), arguments);
- try {
- return ph.formatter.format(toFormat, variableOptions);
- } catch (IllegalArgumentException e) {
- // Fall-through to the name of the placeholder without replacement.
- }
- }
-
- return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue("{" + ph.getOperand() + "}"));
- }
-}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2FunctionRegistry.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2FunctionRegistry.java
deleted file mode 100644
index f9a3e9e7c..000000000
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2FunctionRegistry.java
+++ /dev/null
@@ -1,347 +0,0 @@
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package com.ibm.icu.message2;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * This class is used to register mappings between various function
- * names and the factories that can create those functions.
- *
- * <p>For example to add formatting for a {@code Person} object one would need to:</p>
- * <ul>
- * <li>write a function (class, lambda, etc.) that does the formatting proper
- * (implementing {@link Formatter})</li>
- * <li>write a factory that creates such a function
- * (implementing {@link FormatterFactory})</li>
- * <li>add a mapping from the function name as used in the syntax
- * (for example {@code "person"}) to the factory</li>
- * <li>optionally add a mapping from the class to format ({@code ...Person.class}) to
- * the formatter name ({@code "person"}), so that one can use a placeholder in the message
- * without specifying a function (for example {@code "... {$me} ..."} instead of
- * {@code "... {$me :person} ..."}, if the class of {@code $me} is an {@code instanceof Person}).
- * </li>
- * </ul>
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
-@Deprecated
-public class Mf2FunctionRegistry {
- private final Map<String, FormatterFactory> formattersMap;
- private final Map<String, SelectorFactory> selectorsMap;
- private final Map<Class<?>, String> classToFormatter;
-
- private Mf2FunctionRegistry(Builder builder) {
- this.formattersMap = new HashMap<>(builder.formattersMap);
- this.selectorsMap = new HashMap<>(builder.selectorsMap);
- this.classToFormatter = new HashMap<>(builder.classToFormatter);
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Returns the formatter factory used to create the formatter for function
- * named {@code name}.
- *
- * <p>Note: function name here means the name used to refer to the function in the
- * MessageFormat 2 syntax, for example {@code "... {$exp :datetime} ..."}<br>
- * The function name here is {@code "datetime"}, and does not have to correspond to the
- * name of the methods / classes used to implement the functionality.</p>
- *
- * <p>For example one might write a {@code PersonFormatterFactory} returning a {@code PersonFormatter},
- * and map that to the MessageFormat function named {@code "person"}.<br>
- * The only name visible to the users of MessageFormat syntax will be {@code "person"}.</p>
- *
- * @param formatterName the function name.
- * @return the factory creating formatters for {@code name}. Returns {@code null} if none is registered.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public FormatterFactory getFormatter(String formatterName) {
- return formattersMap.get(formatterName);
- }
-
- /**
- * Get all know names that have a mappings from name to {@link FormatterFactory}.
- *
- * @return a set of all the known formatter names.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Set<String> getFormatterNames() {
- return formattersMap.keySet();
- }
-
- /**
- * Returns the name of the formatter used to format an object of type {@code clazz}.
- *
- * @param clazz the class of the object to format.
- * @return the name of the formatter class, if registered. Returns {@code null} otherwise.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public String getDefaultFormatterNameForType(Class<?> clazz) {
- // Search for the class "as is", to save time.
- // If we don't find it then we iterate the registered classes and check
- // if the class is an instanceof the ones registered.
- // For example a BuddhistCalendar when we only registered Calendar
- String result = classToFormatter.get(clazz);
- if (result != null) {
- return result;
- }
- // We didn't find the class registered explicitly "as is"
- for (Map.Entry<Class<?>, String> e : classToFormatter.entrySet()) {
- if (e.getKey().isAssignableFrom(clazz)) {
- return e.getValue();
- }
- }
- return null;
- }
-
- /**
- * Get all know classes that have a mappings from class to function name.
- *
- * @return a set of all the known classes that have mapping to function names.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Set<Class<?>> getDefaultFormatterTypes() {
- return classToFormatter.keySet();
- }
-
- /**
- * Returns the selector factory used to create the selector for function
- * named {@code name}.
- *
- * <p>Note: the same comments about naming as the ones on {@code getFormatter} apply.</p>
- *
- * @param selectorName the selector name.
- * @return the factory creating selectors for {@code name}. Returns {@code null} if none is registered.
- * @see #getFormatter(String)
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public SelectorFactory getSelector(String selectorName) {
- return selectorsMap.get(selectorName);
- }
-
- /**
- * Get all know names that have a mappings from name to {@link SelectorFactory}.
- *
- * @return a set of all the known selector names.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Set<String> getSelectorNames() {
- return selectorsMap.keySet();
- }
-
- /**
- * A {@code Builder} used to build instances of {@link Mf2FunctionRegistry}.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public static class Builder {
- private final Map<String, FormatterFactory> formattersMap = new HashMap<>();
- private final Map<String, SelectorFactory> selectorsMap = new HashMap<>();
- private final Map<Class<?>, String> classToFormatter = new HashMap<>();
-
- // Prevent direct creation
- private Builder() {
- }
-
- /**
- * Adds all the mapping from another registry to this one.
- *
- * @param functionRegistry the registry to copy from.
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder addAll(Mf2FunctionRegistry functionRegistry) {
- formattersMap.putAll(functionRegistry.formattersMap);
- selectorsMap.putAll(functionRegistry.selectorsMap);
- classToFormatter.putAll(functionRegistry.classToFormatter);
- return this;
- }
-
- /**
- * Adds a mapping from a formatter name to a {@link FormatterFactory}
- *
- * @param formatterName the function name (as used in the MessageFormat 2 syntax).
- * @param formatterFactory the factory that handles the name.
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setFormatter(String formatterName, FormatterFactory formatterFactory) {
- formattersMap.put(formatterName, formatterFactory);
- return this;
- }
-
- /**
- * Remove the formatter associated with the name.
- *
- * @param formatterName the name of the formatter to remove.
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder removeFormatter(String formatterName) {
- formattersMap.remove(formatterName);
- return this;
- }
-
- /**
- * Remove all the formatter mappings.
- *
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder clearFormatters() {
- formattersMap.clear();
- return this;
- }
-
- /**
- * Adds a mapping from a type to format to a {@link FormatterFactory} formatter name.
- *
- * @param clazz the class of the type to format.
- * @param formatterName the formatter name (as used in the MessageFormat 2 syntax).
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setDefaultFormatterNameForType(Class<?> clazz, String formatterName) {
- classToFormatter.put(clazz, formatterName);
- return this;
- }
-
- /**
- * Remove the function name associated with the class.
- *
- * @param clazz the class to remove the mapping for.
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder removeDefaultFormatterNameForType(Class<?> clazz) {
- classToFormatter.remove(clazz);
- return this;
- }
-
- /**
- * Remove all the class to formatter-names mappings.
- *
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder clearDefaultFormatterNames() {
- classToFormatter.clear();
- return this;
- }
-
- /**
- * Adds a mapping from a selector name to a {@link SelectorFactory}
- *
- * @param selectorName the function name (as used in the MessageFormat 2 syntax).
- * @param selectorFactory the factory that handles the name.
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder setSelector(String selectorName, SelectorFactory selectorFactory) {
- selectorsMap.put(selectorName, selectorFactory);
- return this;
- }
-
- /**
- * Remove the selector associated with the name.
- *
- * @param selectorName the name of the selector to remove.
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder removeSelector(String selectorName) {
- selectorsMap.remove(selectorName);
- return this;
- }
-
- /**
- * Remove all the selector mappings.
- *
- * @return the builder, for fluent use.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Builder clearSelectors() {
- selectorsMap.clear();
- return this;
- }
-
- /**
- * Builds an instance of {@link Mf2FunctionRegistry}.
- *
- * @return the function registry created.
- *
- * @internal ICU 72 technology preview
- * @deprecated This API is for technology preview only.
- */
- @Deprecated
- public Mf2FunctionRegistry build() {
- return new Mf2FunctionRegistry(this);
- }
- }
-}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2Parser.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2Parser.java
deleted file mode 100644
index 48b1062d0..000000000
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2Parser.java
+++ /dev/null
@@ -1,754 +0,0 @@
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package com.ibm.icu.message2;
-
-import java.util.Arrays;
-
-/**
- * Class generated from EBNF.
- */
-@SuppressWarnings("all") // Disable all warnings in the generated file
-class Mf2Parser
-{
- static class ParseException extends RuntimeException
- {
- private static final long serialVersionUID = 1L;
- private int begin, end, offending, expected, state;
-
- public ParseException(int b, int e, int s, int o, int x)
- {
- begin = b;
- end = e;
- state = s;
- offending = o;
- expected = x;
- }
-
- @Override
- public String getMessage()
- {
- return offending < 0
- ? "lexical analysis failed"
- : "syntax error";
- }
-
- public void serialize(EventHandler eventHandler)
- {
- }
-
- public int getBegin() {return begin;}
- public int getEnd() {return end;}
- public int getState() {return state;}
- public int getOffending() {return offending;}
- public int getExpected() {return expected;}
- public boolean isAmbiguousInput() {return false;}
- }
-
- public interface EventHandler
- {
- public void reset(CharSequence string);
- public void startNonterminal(String name, int begin);
- public void endNonterminal(String name, int end);
- public void terminal(String name, int begin, int end);
- public void whitespace(int begin, int end);
- }
-
- public static class TopDownTreeBuilder implements EventHandler
- {
- private CharSequence input = null;
- public Nonterminal[] stack = new Nonterminal[64];
- private int top = -1;
-
- @Override
- public void reset(CharSequence input)
- {
- this.input = input;
- top = -1;
- }
-
- @Override
- public void startNonterminal(String name, int begin)
- {
- Nonterminal nonterminal = new Nonterminal(name, begin, begin, new Symbol[0]);
- if (top >= 0) addChild(nonterminal);
- if (++top >= stack.length) stack = Arrays.copyOf(stack, stack.length << 1);
- stack[top] = nonterminal;
- }
-
- @Override
- public void endNonterminal(String name, int end)
- {
- stack[top].end = end;
- if (top > 0) --top;
- }
-
- @Override
- public void terminal(String name, int begin, int end)
- {
- addChild(new Terminal(name, begin, end));
- }
-
- @Override
- public void whitespace(int begin, int end)
- {
- }
-
- private void addChild(Symbol s)
- {
- Nonterminal current = stack[top];
- current.children = Arrays.copyOf(current.children, current.children.length + 1);
- current.children[current.children.length - 1] = s;
- }
-
- public void serialize(EventHandler e)
- {
- e.reset(input);
- stack[0].send(e);
- }
- }
-
- public static abstract class Symbol
- {
- public String name;
- public int begin;
- public int end;
-
- protected Symbol(String name, int begin, int end)
- {
- this.name = name;
- this.begin = begin;
- this.end = end;
- }
-
- public abstract void send(EventHandler e);
- }
-
- public static class Terminal extends Symbol
- {
- public Terminal(String name, int begin, int end)
- {
- super(name, begin, end);
- }
-
- @Override
- public void send(EventHandler e)
- {
- e.terminal(name, begin, end);
- }
- }
-
- public static class Nonterminal extends Symbol
- {
- public Symbol[] children;
-
- public Nonterminal(String name, int begin, int end, Symbol[] children)
- {
- super(name, begin, end);
- this.children = children;
- }
-
- @Override
- public void send(EventHandler e)
- {
- e.startNonterminal(name, begin);
- int pos = begin;
- for (Symbol c : children)
- {
- if (pos < c.begin) e.whitespace(pos, c.begin);
- c.send(e);
- pos = c.end;
- }
- if (pos < end) e.whitespace(pos, end);
- e.endNonterminal(name, end);
- }
- }
-
- public Mf2Parser(CharSequence string, EventHandler t)
- {
- initialize(string, t);
- }
-
- public void initialize(CharSequence source, EventHandler parsingEventHandler)
- {
- eventHandler = parsingEventHandler;
- input = source;
- size = source.length();
- reset(0, 0, 0);
- }
-
- public CharSequence getInput()
- {
- return input;
- }
-
- public int getTokenOffset()
- {
- return b0;
- }
-
- public int getTokenEnd()
- {
- return e0;
- }
-
- public final void reset(int l, int b, int e)
- {
- b0 = b; e0 = b;
- l1 = l; b1 = b; e1 = e;
- end = e;
- eventHandler.reset(input);
- }
-
- public void reset()
- {
- reset(0, 0, 0);
- }
-
- public static String getOffendingToken(ParseException e)
- {
- return e.getOffending() < 0 ? null : TOKEN[e.getOffending()];
- }
-
- public static String[] getExpectedTokenSet(ParseException e)
- {
- String[] expected;
- if (e.getExpected() >= 0)
- {
- expected = new String[]{TOKEN[e.getExpected()]};
- }
- else
- {
- expected = getTokenSet(- e.getState());
- }
- return expected;
- }
-
- public String getErrorMessage(ParseException e)
- {
- String message = e.getMessage();
- String[] tokenSet = getExpectedTokenSet(e);
- String found = getOffendingToken(e);
- int size = e.getEnd() - e.getBegin();
- message += (found == null ? "" : ", found " + found)
- + "\nwhile expecting "
- + (tokenSet.length == 1 ? tokenSet[0] : java.util.Arrays.toString(tokenSet))
- + "\n"
- + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ");
- String prefix = input.subSequence(0, e.getBegin()).toString();
- int line = prefix.replaceAll("[^\n]", "").length() + 1;
- int column = prefix.length() - prefix.lastIndexOf('\n');
- return message
- + "at line " + line + ", column " + column + ":\n..."
- + input.subSequence(e.getBegin(), Math.min(input.length(), e.getBegin() + 64))
- + "...";
- }
-
- public void parse_Message()
- {
- eventHandler.startNonterminal("Message", e0);
- for (;;)
- {
- lookahead1W(12); // WhiteSpace | 'let' | 'match' | '{'
- if (l1 != 13) // 'let'
- {
- break;
- }
- whitespace();
- parse_Declaration();
- }
- switch (l1)
- {
- case 16: // '{'
- whitespace();
- parse_Pattern();
- break;
- default:
- whitespace();
- parse_Selector();
- for (;;)
- {
- whitespace();
- parse_Variant();
- lookahead1W(4); // END | WhiteSpace | 'when'
- if (l1 != 15) // 'when'
- {
- break;
- }
- }
- }
- eventHandler.endNonterminal("Message", e0);
- }
-
- private void parse_Declaration()
- {
- eventHandler.startNonterminal("Declaration", e0);
- consume(13); // 'let'
- lookahead1W(0); // WhiteSpace | Variable
- consume(4); // Variable
- lookahead1W(1); // WhiteSpace | '='
- consume(12); // '='
- lookahead1W(2); // WhiteSpace | '{'
- consume(16); // '{'
- lookahead1W(9); // WhiteSpace | Variable | Function | Literal
- whitespace();
- parse_Expression();
- consume(17); // '}'
- eventHandler.endNonterminal("Declaration", e0);
- }
-
- private void parse_Selector()
- {
- eventHandler.startNonterminal("Selector", e0);
- consume(14); // 'match'
- for (;;)
- {
- lookahead1W(2); // WhiteSpace | '{'
- consume(16); // '{'
- lookahead1W(9); // WhiteSpace | Variable | Function | Literal
- whitespace();
- parse_Expression();
- consume(17); // '}'
- lookahead1W(7); // WhiteSpace | 'when' | '{'
- if (l1 != 16) // '{'
- {
- break;
- }
- }
- eventHandler.endNonterminal("Selector", e0);
- }
-
- private void parse_Variant()
- {
- eventHandler.startNonterminal("Variant", e0);
- consume(15); // 'when'
- for (;;)
- {
- lookahead1W(11); // WhiteSpace | Nmtoken | Literal | '*'
- whitespace();
- parse_VariantKey();
- lookahead1W(13); // WhiteSpace | Nmtoken | Literal | '*' | '{'
- if (l1 == 16) // '{'
- {
- break;
- }
- }
- whitespace();
- parse_Pattern();
- eventHandler.endNonterminal("Variant", e0);
- }
-
- private void parse_VariantKey()
- {
- eventHandler.startNonterminal("VariantKey", e0);
- switch (l1)
- {
- case 10: // Literal
- consume(10); // Literal
- break;
- case 9: // Nmtoken
- consume(9); // Nmtoken
- break;
- default:
- consume(11); // '*'
- }
- eventHandler.endNonterminal("VariantKey", e0);
- }
-
- private void parse_Pattern()
- {
- eventHandler.startNonterminal("Pattern", e0);
- consume(16); // '{'
- for (;;)
- {
- lookahead1(8); // Text | '{' | '}'
- if (l1 == 17) // '}'
- {
- break;
- }
- switch (l1)
- {
- case 3: // Text
- consume(3); // Text
- break;
- default:
- parse_Placeholder();
- }
- }
- consume(17); // '}'
- eventHandler.endNonterminal("Pattern", e0);
- }
-
- private void parse_Placeholder()
- {
- eventHandler.startNonterminal("Placeholder", e0);
- consume(16); // '{'
- lookahead1W(14); // WhiteSpace | Variable | Function | MarkupStart | MarkupEnd | Literal | '}'
- if (l1 != 17) // '}'
- {
- switch (l1)
- {
- case 6: // MarkupStart
- whitespace();
- parse_Markup();
- break;
- case 7: // MarkupEnd
- consume(7); // MarkupEnd
- break;
- default:
- whitespace();
- parse_Expression();
- }
- }
- lookahead1W(3); // WhiteSpace | '}'
- consume(17); // '}'
- eventHandler.endNonterminal("Placeholder", e0);
- }
-
- private void parse_Expression()
- {
- eventHandler.startNonterminal("Expression", e0);
- switch (l1)
- {
- case 5: // Function
- parse_Annotation();
- break;
- default:
- parse_Operand();
- lookahead1W(5); // WhiteSpace | Function | '}'
- if (l1 == 5) // Function
- {
- whitespace();
- parse_Annotation();
- }
- }
- eventHandler.endNonterminal("Expression", e0);
- }
-
- private void parse_Operand()
- {
- eventHandler.startNonterminal("Operand", e0);
- switch (l1)
- {
- case 10: // Literal
- consume(10); // Literal
- break;
- default:
- consume(4); // Variable
- }
- eventHandler.endNonterminal("Operand", e0);
- }
-
- private void parse_Annotation()
- {
- eventHandler.startNonterminal("Annotation", e0);
- consume(5); // Function
- for (;;)
- {
- lookahead1W(6); // WhiteSpace | Name | '}'
- if (l1 != 8) // Name
- {
- break;
- }
- whitespace();
- parse_Option();
- }
- eventHandler.endNonterminal("Annotation", e0);
- }
-
- private void parse_Option()
- {
- eventHandler.startNonterminal("Option", e0);
- consume(8); // Name
- lookahead1W(1); // WhiteSpace | '='
- consume(12); // '='
- lookahead1W(10); // WhiteSpace | Variable | Nmtoken | Literal
- switch (l1)
- {
- case 10: // Literal
- consume(10); // Literal
- break;
- case 9: // Nmtoken
- consume(9); // Nmtoken
- break;
- default:
- consume(4); // Variable
- }
- eventHandler.endNonterminal("Option", e0);
- }
-
- private void parse_Markup()
- {
- eventHandler.startNonterminal("Markup", e0);
- consume(6); // MarkupStart
- for (;;)
- {
- lookahead1W(6); // WhiteSpace | Name | '}'
- if (l1 != 8) // Name
- {
- break;
- }
- whitespace();
- parse_Option();
- }
- eventHandler.endNonterminal("Markup", e0);
- }
-
- private void consume(int t)
- {
- if (l1 == t)
- {
- whitespace();
- eventHandler.terminal(TOKEN[l1], b1, e1);
- b0 = b1; e0 = e1; l1 = 0;
- }
- else
- {
- error(b1, e1, 0, l1, t);
- }
- }
-
- private void whitespace()
- {
- if (e0 != b1)
- {
- eventHandler.whitespace(e0, b1);
- e0 = b1;
- }
- }
-
- private int matchW(int tokenSetId)
- {
- int code;
- for (;;)
- {
- code = match(tokenSetId);
- if (code != 2) // WhiteSpace
- {
- break;
- }
- }
- return code;
- }
-
- private void lookahead1W(int tokenSetId)
- {
- if (l1 == 0)
- {
- l1 = matchW(tokenSetId);
- b1 = begin;
- e1 = end;
- }
- }
-
- private void lookahead1(int tokenSetId)
- {
- if (l1 == 0)
- {
- l1 = match(tokenSetId);
- b1 = begin;
- e1 = end;
- }
- }
-
- private int error(int b, int e, int s, int l, int t)
- {
- throw new ParseException(b, e, s, l, t);
- }
-
- private int b0, e0;
- private int l1, b1, e1;
- private EventHandler eventHandler = null;
- private CharSequence input = null;
- private int size = 0;
- private int begin = 0;
- private int end = 0;
-
- private int match(int tokenSetId)
- {
- begin = end;
- int current = end;
- int result = INITIAL[tokenSetId];
- int state = 0;
-
- for (int code = result & 63; code != 0; )
- {
- int charclass;
- int c0 = current < size ? input.charAt(current) : 0;
- ++current;
- if (c0 < 0x80)
- {
- charclass = MAP0[c0];
- }
- else if (c0 < 0xd800)
- {
- int c1 = c0 >> 4;
- charclass = MAP1[(c0 & 15) + MAP1[(c1 & 31) + MAP1[c1 >> 5]]];
- }
- else
- {
- if (c0 < 0xdc00)
- {
- int c1 = current < size ? input.charAt(current) : 0;
- if (c1 >= 0xdc00 && c1 < 0xe000)
- {
- ++current;
- c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000;
- }
- }
-
- int lo = 0, hi = 6;
- for (int m = 3; ; m = (hi + lo) >> 1)
- {
- if (MAP2[m] > c0) {hi = m - 1;}
- else if (MAP2[7 + m] < c0) {lo = m + 1;}
- else {charclass = MAP2[14 + m]; break;}
- if (lo > hi) {charclass = 0; break;}
- }
- }
-
- state = code;
- int i0 = (charclass << 6) + code - 1;
- code = TRANSITION[(i0 & 7) + TRANSITION[i0 >> 3]];
-
- if (code > 63)
- {
- result = code;
- code &= 63;
- end = current;
- }
- }
-
- result >>= 6;
- if (result == 0)
- {
- end = current - 1;
- int c1 = end < size ? input.charAt(end) : 0;
- if (c1 >= 0xdc00 && c1 < 0xe000)
- {
- --end;
- }
- return error(begin, end, state, -1, -1);
- }
-
- if (end > size) end = size;
- return (result & 31) - 1;
- }
-
- private static String[] getTokenSet(int tokenSetId)
- {
- java.util.ArrayList<String> expected = new java.util.ArrayList<>();
- int s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 63;
- for (int i = 0; i < 18; i += 32)
- {
- int j = i;
- int i0 = (i >> 5) * 38 + s - 1;
- int f = EXPECTED[i0];
- for ( ; f != 0; f >>>= 1, ++j)
- {
- if ((f & 1) != 0)
- {
- expected.add(TOKEN[j]);
- }
- }
- }
- return expected.toArray(new String[]{});
- }
-
- private static final int[] MAP0 =
- {
- /* 0 */ 24, 24, 24, 24, 24, 24, 24, 24, 24, 1, 1, 24, 24, 1, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
- /* 27 */ 24, 24, 24, 24, 24, 1, 24, 24, 24, 2, 24, 24, 24, 3, 4, 5, 6, 24, 7, 8, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- /* 58 */ 9, 24, 24, 10, 24, 24, 24, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- /* 85 */ 11, 11, 11, 11, 11, 11, 24, 12, 24, 24, 11, 24, 13, 11, 14, 11, 15, 11, 11, 16, 11, 11, 11, 17, 18, 19,
- /* 111 */ 11, 11, 11, 11, 11, 20, 11, 11, 21, 11, 11, 11, 22, 24, 23, 24, 24
- };
-
- private static final int[] MAP1 =
- {
- /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181,
- /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
- /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
- /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
- /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
- /* 105 */ 214, 214, 214, 383, 330, 396, 353, 291, 262, 247, 308, 330, 330, 330, 322, 292, 284, 292, 284, 292, 292,
- /* 126 */ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 347, 347, 347, 347, 347, 347, 347,
- /* 147 */ 277, 292, 292, 292, 292, 292, 292, 292, 292, 369, 330, 330, 331, 329, 330, 330, 292, 292, 292, 292, 292,
- /* 168 */ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 330, 330, 330, 330, 330, 330, 330, 330,
- /* 189 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330,
- /* 210 */ 330, 330, 330, 291, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
- /* 231 */ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 330, 24, 13, 11, 14, 11, 15,
- /* 253 */ 11, 11, 16, 11, 11, 11, 17, 18, 19, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 24, 12, 24, 24, 11, 11,
- /* 279 */ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 24, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- /* 305 */ 11, 11, 11, 11, 11, 11, 11, 20, 11, 11, 21, 11, 11, 11, 22, 24, 23, 24, 24, 24, 24, 24, 24, 24, 8, 24, 24,
- /* 332 */ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- /* 363 */ 9, 24, 24, 10, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 11, 11, 24, 24, 24, 24, 24, 24, 24,
- /* 390 */ 24, 24, 1, 1, 24, 24, 1, 24, 24, 24, 2, 24, 24, 24, 3, 4, 5, 6, 24, 7, 8, 24
- };
-
- private static final int[] MAP2 =
- {
- /* 0 */ 55296, 63744, 64976, 65008, 65534, 65536, 983040, 63743, 64975, 65007, 65533, 65535, 983039, 1114111, 24,
- /* 15 */ 11, 24, 11, 24, 11, 24
- };
-
- private static final int[] INITIAL =
- {
- /* 0 */ 1, 2, 3, 4, 133, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
- };
-
- private static final int[] TRANSITION =
- {
- /* 0 */ 237, 237, 237, 237, 237, 237, 237, 237, 200, 208, 455, 237, 237, 237, 237, 237, 236, 230, 455, 237, 237,
- /* 21 */ 237, 237, 237, 237, 245, 376, 382, 237, 237, 237, 237, 237, 380, 314, 382, 237, 237, 237, 237, 237, 263,
- /* 42 */ 455, 237, 237, 237, 237, 237, 237, 295, 455, 237, 237, 237, 237, 237, 237, 322, 287, 281, 252, 237, 237,
- /* 63 */ 237, 237, 344, 287, 281, 252, 237, 237, 237, 255, 358, 455, 237, 237, 237, 237, 237, 417, 380, 455, 237,
- /* 84 */ 237, 237, 237, 237, 419, 390, 215, 329, 252, 237, 237, 237, 237, 398, 275, 382, 237, 237, 237, 237, 419,
- /* 105 */ 390, 215, 410, 252, 237, 237, 237, 419, 390, 215, 329, 309, 237, 237, 237, 419, 390, 222, 365, 252, 237,
- /* 126 */ 237, 237, 419, 390, 427, 329, 302, 237, 237, 237, 419, 435, 215, 329, 252, 237, 237, 237, 419, 443, 215,
- /* 147 */ 329, 252, 237, 237, 237, 419, 390, 215, 329, 372, 237, 237, 237, 419, 390, 215, 336, 451, 237, 237, 237,
- /* 168 */ 402, 390, 215, 329, 252, 237, 237, 237, 350, 463, 269, 237, 237, 237, 237, 237, 474, 471, 269, 237, 237,
- /* 189 */ 237, 237, 237, 237, 380, 455, 237, 237, 237, 237, 237, 192, 192, 192, 192, 192, 192, 192, 192, 277, 192,
- /* 210 */ 192, 192, 192, 192, 192, 0, 414, 595, 0, 277, 22, 663, 0, 414, 595, 0, 277, 22, 663, 32, 277, 16, 16, 0,
- /* 234 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 277, 22, 22, 22, 0, 22, 22, 0, 482, 547, 0, 0, 0, 0, 0, 18, 0, 0, 277,
- /* 264 */ 0, 0, 768, 0, 768, 0, 0, 0, 277, 0, 22, 0, 0, 0, 277, 20, 31, 0, 0, 0, 348, 0, 414, 0, 0, 595, 0, 277, 22,
- /* 293 */ 663, 0, 277, 0, 0, 0, 0, 0, 26, 0, 482, 547, 0, 0, 960, 0, 0, 482, 547, 0, 38, 0, 0, 0, 0, 277, 704, 0, 0,
- /* 322 */ 277, 0, 663, 663, 0, 663, 27, 0, 482, 547, 348, 0, 414, 0, 0, 482, 547, 348, 0, 414, 0, 896, 277, 0, 663,
- /* 347 */ 663, 0, 663, 0, 0, 1088, 0, 0, 0, 0, 1088, 277, 18, 0, 0, 0, 0, 18, 0, 482, 547, 348, 36, 414, 0, 0, 482,
- /* 374 */ 547, 1024, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 22, 0, 277, 0, 663, 663, 0, 663, 0, 348, 20, 0, 0, 0, 0,
- /* 403 */ 0, 0, 0, 17, 0, 595, 17, 33, 482, 547, 348, 0, 414, 0, 0, 832, 0, 0, 0, 0, 0, 0, 595, 0, 29, 414, 595, 0,
- /* 431 */ 277, 22, 663, 0, 277, 0, 663, 663, 24, 663, 0, 348, 277, 0, 663, 663, 25, 663, 0, 348, 37, 482, 547, 0, 0,
- /* 456 */ 0, 0, 0, 277, 22, 0, 0, 1088, 0, 0, 0, 1088, 1088, 0, 0, 1152, 0, 0, 0, 0, 0, 1152, 0, 1152, 1152, 0
- };
-
- private static final int[] EXPECTED =
- {
- /* 0 */ 20, 4100, 65540, 131076, 32772, 131108, 131332, 98308, 196616, 1076, 1556, 3588, 90116, 69124, 132340, 16,
- /* 16 */ 32768, 32, 256, 8, 8, 1024, 512, 8192, 16384, 64, 128, 16, 32768, 32, 1024, 8192, 16384, 64, 128, 32768,
- /* 36 */ 16384, 16384
- };
-
- private static final String[] TOKEN =
- {
- "(0)",
- "END",
- "WhiteSpace",
- "Text",
- "Variable",
- "Function",
- "MarkupStart",
- "MarkupEnd",
- "Name",
- "Nmtoken",
- "Literal",
- "'*'",
- "'='",
- "'let'",
- "'match'",
- "'when'",
- "'{'",
- "'}'"
- };
-}
-
-// End
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2Serializer.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2Serializer.java
deleted file mode 100644
index b23d1a269..000000000
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Mf2Serializer.java
+++ /dev/null
@@ -1,497 +0,0 @@
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package com.ibm.icu.message2;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.ibm.icu.message2.Mf2DataModel.Expression;
-import com.ibm.icu.message2.Mf2DataModel.Pattern;
-import com.ibm.icu.message2.Mf2DataModel.SelectorKeys;
-import com.ibm.icu.message2.Mf2DataModel.Text;
-import com.ibm.icu.message2.Mf2DataModel.Value;
-import com.ibm.icu.message2.Mf2Parser.EventHandler;
-import com.ibm.icu.message2.Mf2Serializer.Token.Type;
-
-// TODO: find a better name for this class
-class Mf2Serializer implements EventHandler {
- private String input;
- private final List<Token> tokens = new ArrayList<>();
-
- static class Token {
- final String name;
- final int begin;
- final int end;
- final Kind kind;
- private final Type type;
- private final String input;
-
- enum Kind {
- TERMINAL,
- NONTERMINAL_START,
- NONTERMINAL_END
- }
-
- enum Type {
- MESSAGE,
- PATTERN,
- TEXT,
- PLACEHOLDER,
- EXPRESSION,
- OPERAND,
- VARIABLE,
- IGNORE,
- FUNCTION,
- OPTION,
- NAME,
- NMTOKEN,
- LITERAL,
- SELECTOR,
- VARIANT,
- DECLARATION, VARIANTKEY, DEFAULT,
- }
-
- Token(Kind kind, String name, int begin, int end, String input) {
- this.kind = kind;
- this.name = name;
- this.begin = begin;
- this.end = end;
- this.input = input;
- switch (name) {
- case "Message": type = Type.MESSAGE; break;
- case "Pattern": type = Type.PATTERN; break;
- case "Text": type = Type.TEXT; break;
- case "Placeholder": type = Type.PLACEHOLDER; break;
- case "Expression": type = Type.EXPRESSION; break;
- case "Operand": type = Type.OPERAND; break;
- case "Variable": type = Type.VARIABLE; break;
- case "Function": type = Type.FUNCTION; break;
- case "Option": type = Type.OPTION; break;
- case "Annotation": type = Type.IGNORE; break;
- case "Name": type = Type.NAME; break;
- case "Nmtoken": type = Type.NMTOKEN; break;
- case "Literal": type = Type.LITERAL; break;
- case "Selector": type = Type.SELECTOR; break;
- case "Variant": type = Type.VARIANT; break;
- case "VariantKey": type = Type.VARIANTKEY; break;
- case "Declaration": type = Type.DECLARATION; break;
-
- case "Markup": type = Type.IGNORE; break;
- case "MarkupStart": type = Type.IGNORE; break;
- case "MarkupEnd": type = Type.IGNORE; break;
-
- case "'['": type = Type.IGNORE; break;
- case "']'": type = Type.IGNORE; break;
- case "'{'": type = Type.IGNORE; break;
- case "'}'": type = Type.IGNORE; break;
- case "'='": type = Type.IGNORE; break;
- case "'match'": type = Type.IGNORE; break;
- case "'when'": type = Type.IGNORE; break;
- case "'let'": type = Type.IGNORE; break;
- case "'*'": type = Type.DEFAULT; break;
- default:
- throw new IllegalArgumentException("Parse error: Unknown token \"" + name + "\"");
- }
- }
-
- boolean isStart() {
- return Kind.NONTERMINAL_START.equals(kind);
- }
-
- boolean isEnd() {
- return Kind.NONTERMINAL_END.equals(kind);
- }
-
- boolean isTerminal() {
- return Kind.TERMINAL.equals(kind);
- }
-
- @Override
- public String toString() {
- int from = begin == -1 ? 0 : begin;
- String strval = end == -1 ? input.substring(from) : input.substring(from, end);
- return String.format("Token(\"%s\", [%d, %d], %s) // \"%s\"", name, begin, end, kind, strval);
- }
- }
-
- Mf2Serializer() {}
-
- @Override
- public void reset(CharSequence input) {
- this.input = input.toString();
- tokens.clear();
- }
-
- @Override
- public void startNonterminal(String name, int begin) {
- tokens.add(new Token(Token.Kind.NONTERMINAL_START, name, begin, -1, input));
- }
-
- @Override
- public void endNonterminal(String name, int end) {
- tokens.add(new Token(Token.Kind.NONTERMINAL_END, name, -1, end, input));
- }
-
- @Override
- public void terminal(String name, int begin, int end) {
- tokens.add(new Token(Token.Kind.TERMINAL, name, begin, end, input));
- }
-
- @Override
- public void whitespace(int begin, int end) {
- }
-
- Mf2DataModel build() {
- if (!tokens.isEmpty()) {
- Token firstToken = tokens.get(0);
- if (Type.MESSAGE.equals(firstToken.type) && firstToken.isStart()) {
- return parseMessage();
- }
- }
- return null;
- }
-
- private Mf2DataModel parseMessage() {
- Mf2DataModel.Builder result = Mf2DataModel.builder();
-
- for (int i = 0; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case MESSAGE:
- if (token.isStart() && i == 0) {
- // all good
- } else if (token.isEnd() && i == tokens.size() - 1) {
- // We check if this last token is at the end of the input
- if (token.end != input.length()) {
- String leftover = input.substring(token.end)
- .replace("\n", "")
- .replace("\r", "")
- .replace(" ", "")
- .replace("\t", "")
- ;
- if (!leftover.isEmpty()) {
- throw new IllegalArgumentException("Parse error: Content detected after the end of the message: '"
- + input.substring(token.end) + "'");
- }
- }
- return result.build();
- } else {
- // End of message, we ignore the rest
- throw new IllegalArgumentException("Parse error: Extra tokens at the end of the message");
- }
- break;
- case PATTERN:
- ParseResult<Pattern> patternResult = parsePattern(i);
- i = patternResult.skipLen;
- result.setPattern(patternResult.resultValue);
- break;
- case DECLARATION:
- Declaration declaration = new Declaration();
- i = parseDeclaration(i, declaration);
- result.addLocalVariable(declaration.variableName, declaration.expr);
- break;
- case SELECTOR:
- ParseResult<List<Expression>> selectorResult = parseSelector(i);
- result.addSelectors(selectorResult.resultValue);
- i = selectorResult.skipLen;
- break;
- case VARIANT:
- ParseResult<Variant> variantResult = parseVariant(i);
- i = variantResult.skipLen;
- Variant variant = variantResult.resultValue;
- result.addVariant(variant.getSelectorKeys(), variant.getPattern());
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseMessage UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing MessageFormatter");
- }
-
- private ParseResult<Variant> parseVariant(int startToken) {
- Variant.Builder result = Variant.builder();
-
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case VARIANT:
- if (token.isStart()) { // all good
- } else if (token.isEnd()) {
- return new ParseResult<>(i, result.build());
- }
- break;
- case LITERAL:
- result.addSelectorKey(input.substring(token.begin + 1, token.end - 1));
- break;
- case NMTOKEN:
- result.addSelectorKey(input.substring(token.begin, token.end));
- break;
- case DEFAULT:
- result.addSelectorKey("*");
- break;
- case PATTERN:
- ParseResult<Pattern> patternResult = parsePattern(i);
- i = patternResult.skipLen;
- result.setPattern(patternResult.resultValue);
- break;
- case VARIANTKEY:
-// variant.variantKey = new VariantKey(input.substring(token.begin, token.end));
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseVariant UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Variant");
- }
-
- private ParseResult<List<Expression>> parseSelector(int startToken) {
- List<Expression> result = new ArrayList<>();
-
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case SELECTOR:
- if (token.isStart()) { // all good, do nothing
- } else if (token.isEnd()) {
- return new ParseResult<>(i, result);
- }
- break;
- case EXPRESSION:
- ParseResult<Expression> exprResult = parseExpression(i);
- i = exprResult.skipLen;
- result.add(exprResult.resultValue);
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseSelector UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing selectors");
- }
-
- private int parseDeclaration(int startToken, Declaration declaration) {
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case DECLARATION:
- if (token.isStart()) { // all good
- } else if (token.isEnd()) {
- return i;
- }
- break;
- case VARIABLE:
- declaration.variableName = input.substring(token.begin + 1, token.end);
- break;
- case EXPRESSION:
- ParseResult<Expression> exprResult = parseExpression(i);
- i = exprResult.skipLen;
- declaration.expr = exprResult.resultValue;
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseDeclaration UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Declaration");
- }
-
- private ParseResult<Pattern> parsePattern(int startToken) {
- Pattern.Builder result = Pattern.builder();
-
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case TEXT:
- Text text = new Text(input.substring(token.begin, token.end));
- result.add(text);
- break;
- case PLACEHOLDER:
- break;
- case EXPRESSION:
- ParseResult<Expression> exprResult = parseExpression(i);
- i = exprResult.skipLen;
- result.add(exprResult.resultValue);
- break;
- case VARIABLE:
- case IGNORE:
- break;
- case PATTERN:
- if (token.isStart() && i == startToken) { // all good, do nothing
- } else if (token.isEnd()) {
- return new ParseResult<>(i, result.build());
- }
- break;
- default:
- throw new IllegalArgumentException("Parse error: parsePattern UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Pattern");
- }
-
- static class Option {
- String name;
- Value value;
- }
-
- static class Declaration {
- String variableName;
- Expression expr;
- }
-
- static class Variant {
- private final SelectorKeys selectorKeys;
- private final Pattern pattern;
-
- private Variant(Builder builder) {
- this.selectorKeys = builder.selectorKeys.build();
- this.pattern = builder.pattern;
- }
-
- /**
- * Creates a builder.
- *
- * @return the Builder.
- */
- public static Builder builder() {
- return new Builder();
- }
-
- public SelectorKeys getSelectorKeys() {
- return selectorKeys;
- }
-
- public Pattern getPattern() {
- return pattern;
- }
-
- public static class Builder {
- private final SelectorKeys.Builder selectorKeys = SelectorKeys.builder();
- private Pattern pattern = Pattern.builder().build();
-
- // Prevent direct creation
- private Builder() {
- }
-
- public Builder setSelectorKeys(SelectorKeys selectorKeys) {
- this.selectorKeys.addAll(selectorKeys.getKeys());
- return this;
- }
-
- public Builder addSelectorKey(String selectorKey) {
- this.selectorKeys.add(selectorKey);
- return this;
- }
-
- public Builder setPattern(Pattern pattern) {
- this.pattern = pattern;
- return this;
- }
-
- public Variant build() {
- return new Variant(this);
- }
- }
- }
-
- static class ParseResult<T> {
- final int skipLen;
- final T resultValue;
-
- public ParseResult(int skipLen, T resultValue) {
- this.skipLen = skipLen;
- this.resultValue = resultValue;
- }
- }
-
- private ParseResult<Expression> parseExpression(int startToken) {
- Expression.Builder result = Expression.builder();
-
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case EXPRESSION: // intentional fall-through
- case PLACEHOLDER:
- if (token.isStart() && i == startToken) {
- // all good
- } else if (token.isEnd()) {
- return new ParseResult<>(i, result.build());
- }
- break;
- case FUNCTION:
- result.setFunctionName(input.substring(token.begin + 1, token.end));
- break;
- case LITERAL:
- result.setOperand(Value.builder()
- .setLiteral(input.substring(token.begin + 1, token.end - 1))
- .build());
- break;
- case VARIABLE:
- result.setOperand(Value.builder()
- .setVariableName(input.substring(token.begin + 1, token.end))
- .build());
- break;
- case OPTION:
- Option option = new Option();
- i = parseOptions(i, option);
- result.addOption(option.name, option.value);
- break;
- case OPERAND:
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseExpression UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Expression");
- }
-
- private int parseOptions(int startToken, Option option) {
- for (int i = startToken; i < tokens.size(); i++) {
- Token token = tokens.get(i);
- switch (token.type) {
- case OPTION:
- if (token.isStart() && i == startToken) {
- // all good
- } else if (token.isEnd()) {
- return i;
- }
- break;
- case NAME:
- option.name = input.substring(token.begin, token.end);
- break;
- case LITERAL:
- option.value = Value.builder()
- .setLiteral(input.substring(token.begin + 1, token.end - 1))
- .build();
- break;
- case NMTOKEN:
- option.value = Value.builder()
- .setLiteral(input.substring(token.begin, token.end))
- .build();
- break;
- case VARIABLE:
- option.value = Value.builder()
- .setVariableName(input.substring(token.begin + 1, token.end))
- .build();
- break;
- case IGNORE:
- break;
- default:
- throw new IllegalArgumentException("Parse error: parseOptions UNEXPECTED TOKEN: '" + token + "'");
- }
- }
- throw new IllegalArgumentException("Parse error: Error parsing Option");
- }
-
- static String dataModelToString(Mf2DataModel dataModel) {
- return dataModel.toString();
- }
-}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/NumberFormatterFactory.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/NumberFormatterFactory.java
index c7fd15249..6cb6c56c4 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/NumberFormatterFactory.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/NumberFormatterFactory.java
@@ -1,64 +1,94 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.number.FormattedNumber;
import com.ibm.icu.number.LocalizedNumberFormatter;
+import com.ibm.icu.number.Notation;
import com.ibm.icu.number.NumberFormatter;
+import com.ibm.icu.number.NumberFormatter.GroupingStrategy;
+import com.ibm.icu.number.NumberFormatter.SignDisplay;
import com.ibm.icu.number.Precision;
+import com.ibm.icu.number.Scale;
import com.ibm.icu.number.UnlocalizedNumberFormatter;
import com.ibm.icu.text.FormattedValue;
+import com.ibm.icu.text.NumberingSystem;
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.text.PluralRules.PluralType;
import com.ibm.icu.util.CurrencyAmount;
-
+import com.ibm.icu.util.MeasureUnit;
/**
* Creates a {@link Formatter} doing numeric formatting, similar to <code>{exp, number}</code>
* in {@link com.ibm.icu.text.MessageFormat}.
*/
-class NumberFormatterFactory implements FormatterFactory {
+class NumberFormatterFactory implements FormatterFactory, SelectorFactory {
+ private final String kind;
+
+ public NumberFormatterFactory(String kind) {
+ switch (kind) {
+ case "number": // $FALL-THROUGH$
+ case "integer":
+ break;
+ default:
+ // Default to number
+ kind = "number";
+ }
+ this.kind = kind;
+ }
/**
* {@inheritDoc}
*/
@Override
public Formatter createFormatter(Locale locale, Map<String, Object> fixedOptions) {
- return new NumberFormatterImpl(locale, fixedOptions);
+ return new NumberFormatterImpl(locale, fixedOptions, kind);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Selector createSelector(Locale locale, Map<String, Object> fixedOptions) {
+ String type = OptUtils.getString(fixedOptions, "select", "");
+ PluralType pluralType;
+ switch (type) {
+ case "ordinal":
+ pluralType = PluralType.ORDINAL;
+ break;
+ case "cardinal": // $FALL-THROUGH$
+ default:
+ pluralType = PluralType.CARDINAL;
+ }
+
+ PluralRules rules = PluralRules.forLocale(locale, pluralType);
+ return new PluralSelectorImpl(locale, rules, fixedOptions, kind);
}
static class NumberFormatterImpl implements Formatter {
private final Locale locale;
private final Map<String, Object> fixedOptions;
private final LocalizedNumberFormatter icuFormatter;
+ private final String kind;
final boolean advanced;
- private static LocalizedNumberFormatter formatterForOptions(Locale locale, Map<String, Object> fixedOptions) {
- UnlocalizedNumberFormatter nf;
- String skeleton = OptUtils.getString(fixedOptions, "skeleton");
- if (skeleton != null) {
- nf = NumberFormatter.forSkeleton(skeleton);
- } else {
- nf = NumberFormatter.with();
- Integer minFractionDigits = OptUtils.getInteger(fixedOptions, "minimumFractionDigits");
- if (minFractionDigits != null) {
- nf = nf.precision(Precision.minFraction(minFractionDigits));
- }
- }
- return nf.locale(locale);
- }
-
- NumberFormatterImpl(Locale locale, Map<String, Object> fixedOptions) {
+ NumberFormatterImpl(Locale locale, Map<String, Object> fixedOptions, String kind) {
this.locale = locale;
this.fixedOptions = new HashMap<>(fixedOptions);
- String skeleton = OptUtils.getString(fixedOptions, "skeleton");
+ String skeleton = OptUtils.getString(fixedOptions, "icu:skeleton");
boolean fancy = skeleton != null;
- this.icuFormatter = formatterForOptions(locale, fixedOptions);
+ this.icuFormatter = formatterForOptions(locale, fixedOptions, kind);
this.advanced = fancy;
+ this.kind = kind;
}
LocalizedNumberFormatter getIcuFormatter() {
@@ -87,12 +117,12 @@ class NumberFormatterFactory implements FormatterFactory {
// This is really wasteful, as we don't use the existing
// formatter if even one option is variable.
// We can optimize, but for now will have to do.
- realFormatter = formatterForOptions(locale, mergedOptions);
+ realFormatter = formatterForOptions(locale, mergedOptions, kind);
}
- Integer offset = OptUtils.getInteger(variableOptions, "offset");
+ Integer offset = OptUtils.getInteger(variableOptions, "icu:offset");
if (offset == null && fixedOptions != null) {
- offset = OptUtils.getInteger(fixedOptions, "offset");
+ offset = OptUtils.getInteger(fixedOptions, "icu:offset");
}
if (offset == null) {
offset = 0;
@@ -123,10 +153,240 @@ class NumberFormatterFactory implements FormatterFactory {
if (nrValue != null) {
result = realFormatter.format(nrValue.doubleValue() - offset);
} else {
- result = new PlainStringFormattedValue("NaN");
+ result = new PlainStringFormattedValue("{|" + strValue + "|}");
}
}
return new FormattedPlaceholder(toFormat, result);
}
}
+
+ private static class PluralSelectorImpl implements Selector {
+ private static final String NO_MATCH = "\uFFFDNO_MATCH\uFFFE"; // Unlikely to show in a key
+ private final PluralRules rules;
+ private Map<String, Object> fixedOptions;
+ private LocalizedNumberFormatter icuFormatter;
+
+ private PluralSelectorImpl(
+ Locale locale, PluralRules rules, Map<String, Object> fixedOptions, String kind) {
+ this.rules = rules;
+ this.fixedOptions = fixedOptions;
+ this.icuFormatter = formatterForOptions(locale, fixedOptions, kind);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List<String> matches(
+ Object value, List<String> keys, Map<String, Object> variableOptions) {
+ List<String> result = new ArrayList<>();
+ if (value == null) {
+ return result;
+ }
+ for (String key : keys) {
+ if (matches(value, key, variableOptions)) {
+ result.add(key);
+ } else {
+ result.add(NO_MATCH);
+ }
+ }
+
+ result.sort(PluralSelectorImpl::pluralComparator);
+ return result;
+ }
+
+ // The order is exact values, key, other
+ // There is no need to be very strict, as these are keys that are already equal
+ // So we will not get to compare "1" vs "2", or "one" vs "few".
+ // TODO: This is quite ugly, change when time.
+ private static int pluralComparator(String o1, String o2) {
+ if (o1.equals(o2)) {
+ return 0;
+ }
+ if (NO_MATCH.equals(o1)) {
+ return 1;
+ }
+ if (NO_MATCH.equals(o2)) {
+ return -1;
+ }
+ // * sorts last
+ if ("*".equals(o1)) {
+ return 1;
+ }
+ if ("*".equals(o2)) {
+ return -1;
+ }
+ // Numbers sort first
+ if (OptUtils.asNumber(o1) != null) {
+ return -1;
+ }
+ if (OptUtils.asNumber(o2) != null) {
+ return 1;
+ }
+ // At this point they are both strings
+ // We should never get here, so the order does not really matter
+ return o1.compareTo(o2);
+ }
+
+ private boolean matches(Object value, String key, Map<String, Object> variableOptions) {
+ if ("*".equals(key)) {
+ return true;
+ }
+
+ Integer offset = OptUtils.getInteger(variableOptions, "icu:offset");
+ if (offset == null && fixedOptions != null) {
+ offset = OptUtils.getInteger(fixedOptions, "icu:offset");
+ }
+ if (offset == null) {
+ offset = 0;
+ }
+
+ Number valToCheck = Double.MIN_VALUE;
+ if (value instanceof FormattedPlaceholder) {
+ FormattedPlaceholder fph = (FormattedPlaceholder) value;
+ value = fph.getInput();
+ }
+
+ if (value instanceof Number) {
+ valToCheck = ((Number) value).doubleValue();
+ } else {
+ return false;
+ }
+
+ Number keyNrVal = OptUtils.asNumber(key);
+ if (keyNrVal != null && valToCheck.doubleValue() == keyNrVal.doubleValue()) {
+ return true;
+ }
+
+ FormattedNumber formatted = icuFormatter.format(valToCheck.doubleValue() - offset);
+ String match = rules.select(formatted);
+ if (match.equals("other")) {
+ match = "*";
+ }
+ return match.equals(key);
+ }
+ }
+
+ private static LocalizedNumberFormatter formatterForOptions(
+ Locale locale, Map<String, Object> fixedOptions, String kind) {
+ UnlocalizedNumberFormatter nf;
+ String skeleton = OptUtils.getString(fixedOptions, "icu:skeleton");
+ if (skeleton != null) {
+ return NumberFormatter.forSkeleton(skeleton).locale(locale);
+ }
+
+ Integer option;
+ String strOption;
+ nf = NumberFormatter.with();
+
+ // These options don't apply to `:integer`
+ if ("number".equals(kind)) {
+ Notation notation;
+ switch (OptUtils.getString(fixedOptions, "notation", "standard")) {
+ case "scientific":
+ notation = Notation.scientific();
+ break;
+ case "engineering":
+ notation = Notation.engineering();
+ break;
+ case "compact":
+ {
+ switch (OptUtils.getString(fixedOptions, "compactDisplay", "short")) {
+ case "long":
+ notation = Notation.compactLong();
+ break;
+ case "short": // $FALL-THROUGH$
+ default:
+ notation = Notation.compactShort();
+ }
+ }
+ break;
+ case "standard": // $FALL-THROUGH$
+ default:
+ notation = Notation.simple();
+ }
+ nf = nf.notation(notation);
+
+ strOption = OptUtils.getString(fixedOptions, "style", "decimal");
+ if (strOption.equals("percent")) {
+ nf = nf.unit(MeasureUnit.PERCENT).scale(Scale.powerOfTen(2));
+ }
+
+ option = OptUtils.getInteger(fixedOptions, "minimumFractionDigits");
+ if (option != null) {
+ nf = nf.precision(Precision.minFraction(option));
+ }
+ option = OptUtils.getInteger(fixedOptions, "maximumFractionDigits");
+ if (option != null) {
+ nf = nf.precision(Precision.maxFraction(option));
+ }
+ option = OptUtils.getInteger(fixedOptions, "minimumSignificantDigits");
+ if (option != null) {
+ nf = nf.precision(Precision.minSignificantDigits(option));
+ }
+ } // end of `:number` specific options
+
+ strOption = OptUtils.getString(fixedOptions, "numberingSystem", "");
+ if (!strOption.isEmpty()) {
+ strOption = strOption.toLowerCase(Locale.US);
+ // No good way to validate, there are too many.
+ NumberingSystem ns = NumberingSystem.getInstanceByName(strOption);
+ nf = nf.symbols(ns);
+ }
+
+ // The options below apply to both `:number` and `:integer`
+ option = OptUtils.getInteger(fixedOptions, "minimumIntegerDigits");
+ if (option != null) {
+ // TODO! Ask Shane. nf.integerWidth(null) ?
+ }
+ option = OptUtils.getInteger(fixedOptions, "maximumSignificantDigits");
+ if (option != null) {
+ nf = nf.precision(Precision.maxSignificantDigits(option));
+ }
+
+ strOption = OptUtils.getString(fixedOptions, "signDisplay", "auto");
+ SignDisplay signDisplay;
+ switch (strOption) {
+ case "always":
+ signDisplay = SignDisplay.ALWAYS;
+ break;
+ case "exceptZero":
+ signDisplay = SignDisplay.EXCEPT_ZERO;
+ break;
+ case "negative":
+ signDisplay = SignDisplay.NEGATIVE;
+ break;
+ case "never":
+ signDisplay = SignDisplay.NEVER;
+ break;
+ case "auto": // $FALL-THROUGH$
+ default:
+ signDisplay = SignDisplay.AUTO;
+ }
+ nf = nf.sign(signDisplay);
+
+ GroupingStrategy grp;
+ strOption = OptUtils.getString(fixedOptions, "useGrouping", "auto");
+ switch (strOption) {
+ case "always":
+ grp = GroupingStrategy.ON_ALIGNED;
+ break; // TODO: check with Shane
+ case "never":
+ grp = GroupingStrategy.OFF;
+ break;
+ case "min2":
+ grp = GroupingStrategy.MIN2;
+ break;
+ case "auto": // $FALL-THROUGH$
+ default:
+ grp = GroupingStrategy.AUTO;
+ }
+ nf = nf.grouping(grp);
+
+ if (kind.equals("integer")) {
+ nf = nf.precision(Precision.integer());
+ }
+
+ return nf.locale(locale);
+ }
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/OptUtils.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/OptUtils.java
index 21a839bd8..7013984a1 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/OptUtils.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/OptUtils.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
@@ -13,14 +13,10 @@ class OptUtils {
return (Number) value;
}
if (value instanceof CharSequence) {
- String strValue = value.toString();
try {
- return Double.parseDouble(strValue);
- } catch (NumberFormatException e) {
- }
- try {
- return Integer.decode(strValue);
+ return Double.parseDouble(value.toString());
} catch (NumberFormatException e) {
+ /* just ignore, we want to try more */
}
}
return null;
@@ -38,15 +34,15 @@ class OptUtils {
return null;
}
- static String getString(Map<String, Object> options, String key) {
+ static String getString(Map<String, Object> options, String key, String defaultVal) {
Object value = options.get(key);
- if (value == null) {
- return null;
- }
if (value instanceof CharSequence) {
return value.toString();
}
- return null;
+ return defaultVal;
}
+ static String getString(Map<String, Object> options, String key) {
+ return getString(options, key, null);
+ }
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/PlainStringFormattedValue.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/PlainStringFormattedValue.java
index 2cc05be74..49d42ed5f 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/PlainStringFormattedValue.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/PlainStringFormattedValue.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/PluralSelectorFactory.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/PluralSelectorFactory.java
deleted file mode 100644
index 34458ac65..000000000
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/PluralSelectorFactory.java
+++ /dev/null
@@ -1,110 +0,0 @@
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package com.ibm.icu.message2;
-
-import java.util.Locale;
-import java.util.Map;
-
-import com.ibm.icu.number.FormattedNumber;
-import com.ibm.icu.text.FormattedValue;
-import com.ibm.icu.text.PluralRules;
-import com.ibm.icu.text.PluralRules.PluralType;
-
-/**
- * Creates a {@link Selector} doing plural selection, similar to <code>{exp, plural}</code>
- * in {@link com.ibm.icu.text.MessageFormat}.
- */
-class PluralSelectorFactory implements SelectorFactory {
- private final PluralType pluralType;
-
- /**
- * Creates a {@code PluralSelectorFactory} of the desired type.
- *
- * @param type the kind of plural selection we want
- */
- // TODO: Use an enum
- PluralSelectorFactory(String type) {
- switch (type) {
- case "ordinal":
- pluralType = PluralType.ORDINAL;
- break;
- case "cardinal": // intentional fallthrough
- default:
- pluralType = PluralType.CARDINAL;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Selector createSelector(Locale locale, Map<String, Object> fixedOptions) {
- PluralRules rules = PluralRules.forLocale(locale, pluralType);
- return new PluralSelectorImpl(rules, fixedOptions);
- }
-
- private static class PluralSelectorImpl implements Selector {
- private final PluralRules rules;
- private Map<String, Object> fixedOptions;
-
- private PluralSelectorImpl(PluralRules rules, Map<String, Object> fixedOptions) {
- this.rules = rules;
- this.fixedOptions = fixedOptions;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean matches(Object value, String key, Map<String, Object> variableOptions) {
- if (value == null) {
- return false;
- }
- if ("*".equals(key)) {
- return true;
- }
-
- Integer offset = OptUtils.getInteger(variableOptions, "offset");
- if (offset == null && fixedOptions != null) {
- offset = OptUtils.getInteger(fixedOptions, "offset");
- }
- if (offset == null) {
- offset = 0;
- }
-
- double valToCheck = Double.MIN_VALUE;
- FormattedValue formattedValToCheck = null;
- if (value instanceof FormattedPlaceholder) {
- FormattedPlaceholder fph = (FormattedPlaceholder) value;
- value = fph.getInput();
- formattedValToCheck = fph.getFormattedValue();
- }
-
- if (value instanceof Double) {
- valToCheck = (double) value;
- } else if (value instanceof Integer) {
- valToCheck = (Integer) value;
- } else {
- return false;
- }
-
- // If there is nothing "tricky" about the formatter part we compare values directly.
- // Right now ICU4J checks if the formatter is a DecimalFormt, which also feels "hacky".
- // We need something better.
- if (!fixedOptions.containsKey("skeleton") && !variableOptions.containsKey("skeleton")) {
- try { // for match exact.
- if (Double.parseDouble(key) == valToCheck) {
- return true;
- }
- } catch (NumberFormatException e) {
- }
- }
-
- String match = formattedValToCheck instanceof FormattedNumber
- ? rules.select((FormattedNumber) formattedValToCheck)
- : rules.select(valToCheck - offset);
- return match.equals(key);
- }
- }
-}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Selector.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Selector.java
index 5ec405e27..188115c26 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/Selector.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/Selector.java
@@ -1,8 +1,9 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
+import java.util.List;
import java.util.Map;
/**
@@ -25,7 +26,7 @@ public interface Selector {
* for {@code matches(1, "1")}, {@code matches(1, "one")}, and {@code matches(1, "*")}.</p>
*
* @param value the value to select on.
- * @param key the key to test for matching.
+ * @param keys the key to test for matching.
* @param variableOptions options that are not know at build time.
* @return the formatted string.
*
@@ -33,5 +34,5 @@ public interface Selector {
* @deprecated This API is for technology preview only.
*/
@Deprecated
- boolean matches(Object value, String key, Map<String, Object> variableOptions);
+ List<String> matches(Object value, List<String> keys, Map<String, Object> variableOptions);
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/SelectorFactory.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/SelectorFactory.java
index 867622867..02b061361 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/SelectorFactory.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/SelectorFactory.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/StringUtils.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/StringUtils.java
new file mode 100644
index 000000000..ff89d12c1
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/StringUtils.java
@@ -0,0 +1,142 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+class StringUtils {
+
+ /*
+ * abnf: content-char = %x01-08 ; omit NULL (%x00), HTAB (%x09) and LF (%x0A)
+ * abnf: / %x0B-0C ; omit CR (%x0D)
+ * abnf: / %x0E-1F ; omit SP (%x20)
+ * abnf: / %x21-2D ; omit . (%x2E)
+ * abnf: / %x2F-3F ; omit @ (%x40)
+ * abnf: / %x41-5B ; omit \ (%x5C)
+ * abnf: / %x5D-7A ; omit { | } (%x7B-7D)
+ * abnf: / %x7E-D7FF ; omit surrogates
+ * abnf: / %xE000-10FFFF
+ */
+ static boolean isContentChar(int cp) {
+ return (cp >= 0x0001 && cp <= 0x0008) // omit HTAB (%x09) and LF (%x0A)
+ || (cp >= 0x000B && cp <= 0x000C) // omit CR (%x0D)
+ || (cp >= 0x000E && cp <= 0x001F) // omit SP (%x20)
+ || (cp >= 0x0021 && cp <= 0x002D) // omit . (%x2E)
+ || (cp >= 0x002F && cp <= 0x003F) // omit @ (%x40)
+ || (cp >= 0x0041 && cp <= 0x005B) // omit \ (%x5C)
+ || (cp >= 0x005D && cp <= 0x007A) // omit { | } (%x7B-7D)
+ || (cp >= 0x007E && cp <= 0xD7FF) // omit surrogates
+ || (cp >= 0xE000 && cp <= 0x10FFFF);
+ }
+
+ // abnf: text-char = content-char / s / "." / "@" / "|"
+ static boolean isTextChar(int cp) {
+ return isContentChar(cp) || isWhitespace(cp) || cp == '.' || cp == '@' || cp == '|';
+ }
+
+ // abnf: backslash = %x5C ; U+005C REVERSE SOLIDUS "\"
+ static boolean isBackslash(int cp) {
+ return cp == '\\';
+ }
+
+ /*
+ * ; Whitespace
+ * abnf: s = 1*( SP / HTAB / CR / LF / %x3000 )
+ */
+ static boolean isWhitespace(int cp) {
+ return cp == ' ' || cp == '\t' || cp == '\r' || cp == '\n' || cp == '\u3000';
+ }
+
+ /*
+ * abnf: name-start = ALPHA / "_"
+ * abnf: / %xC0-D6 / %xD8-F6 / %xF8-2FF
+ * abnf: / %x370-37D / %x37F-1FFF / %x200C-200D
+ * abnf: / %x2070-218F / %x2C00-2FEF / %x3001-D7FF
+ * abnf: / %xF900-FDCF / %xFDF0-FFFC / %x10000-EFFFF
+ */
+ static boolean isNameStart(int cp) {
+ return isAlpha(cp)
+ || cp == '_'
+ || (cp >= 0x00C0 && cp <= 0x00D6)
+ || (cp >= 0x00D8 && cp <= 0x00F6)
+ || (cp >= 0x00F8 && cp <= 0x02FF)
+ || (cp >= 0x0370 && cp <= 0x037D)
+ || (cp >= 0x037F && cp <= 0x1FFF)
+ || (cp >= 0x200C && cp <= 0x200D)
+ || (cp >= 0x2070 && cp <= 0x218F)
+ || (cp >= 0x2C00 && cp <= 0x2FEF)
+ || (cp >= 0x3001 && cp <= 0xD7FF)
+ || (cp >= 0xF900 && cp <= 0xFDCF)
+ || (cp >= 0xFDF0 && cp <= 0xFFFC)
+ || (cp >= 0x10000 && cp <= 0xEFFFF);
+ }
+
+ /*
+ * abnf: name-char = name-start / DIGIT / "-" / "."
+ * abnf: / %xB7 / %x300-36F / %x203F-2040
+ */
+ static boolean isNameChar(int cp) {
+ return isNameStart(cp)
+ || isDigit(cp)
+ || cp == '-'
+ || cp == '.'
+ || cp == 0x00B7
+ || (cp >= 0x0300 && cp <= 0x036F)
+ || (cp >= 0x203F && cp <= 0x2040);
+ }
+
+ // abnf: private-start = "^" / "&"
+ static boolean isPrivateStart(int cp) {
+ return cp == '^' || cp == '&';
+ }
+
+ // abnf: quoted-char = content-char / s / "." / "@" / "{" / "}"
+ static boolean isQuotedChar(int cp) {
+ return isContentChar(cp)
+ || isWhitespace(cp)
+ || cp == '.'
+ || cp == '@'
+ || cp == '{'
+ || cp == '}';
+ }
+
+ // abnf: reserved-char = content-char / "."
+ static boolean isReservedChar(int cp) {
+ return isContentChar(cp) || cp == '.';
+ }
+
+ static boolean isSimpleStartChar(int cp) {
+ return StringUtils.isContentChar(cp)
+ || StringUtils.isWhitespace(cp)
+ || cp == '@'
+ || cp == '|';
+ }
+
+ // ALPHA is predefined in ABNF as plain ASCII, A-Z and a-z
+ // See https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_form
+ static boolean isAlpha(int cp) {
+ return (cp >= 'a' && cp <= 'z') || (cp >= 'A' && cp <= 'Z');
+ }
+
+ // DIGIT is predefined in ABNF as plain ASCII, 0-9
+ // See https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_form
+ static boolean isDigit(int cp) {
+ return cp >= '0' && cp <= '9';
+ }
+
+ // abnf: function = ":" identifier *(s option)
+ static boolean isFunctionSigil(int cp) {
+ return cp == ':';
+ }
+
+ // abnf: private-start = "^" / "&"
+ static boolean isPrivateAnnotationSigil(int cp) {
+ return cp == '^' || cp == '&';
+ }
+
+ // abnf: reserved-annotation-start = "!" / "%" / "*" / "+" / "<" / ">" / "?" / "~"
+ private static final String RESERVED_ANNOTATION_SIGILS = "!%*+<>?~";
+
+ static boolean isReservedAnnotationSigil(int cp) {
+ return RESERVED_ANNOTATION_SIGILS.indexOf(cp) != -1;
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/StringView.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/StringView.java
new file mode 100644
index 000000000..87858160c
--- /dev/null
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/StringView.java
@@ -0,0 +1,38 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.message2;
+
+class StringView implements CharSequence {
+ final int offset;
+ final String text;
+
+ StringView(String text, int offset) {
+ this.offset = offset;
+ this.text = text;
+ }
+
+ StringView(String text) {
+ this(text, 0);
+ }
+
+ @Override
+ public int length() {
+ return text.length() - offset;
+ }
+
+ @Override
+ public char charAt(int index) {
+ return text.charAt(index + offset);
+ }
+
+ @Override
+ public CharSequence subSequence(int start, int end) {
+ return text.subSequence(start + offset, end + offset);
+ }
+
+ @Override
+ public String toString() {
+ return text.substring(offset);
+ }
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/message2/TextSelectorFactory.java b/icu4j/main/core/src/main/java/com/ibm/icu/message2/TextSelectorFactory.java
index 6c9cf5031..d08f62f77 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/message2/TextSelectorFactory.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/message2/TextSelectorFactory.java
@@ -1,11 +1,13 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
-
+import java.util.Objects;
/**
* Creates a {@link Selector} doing literal selection, similar to <code>{exp, select}</code>
@@ -26,11 +28,27 @@ class TextSelectorFactory implements SelectorFactory {
* {@inheritDoc}
*/
@Override
- public boolean matches(Object value, String key, Map<String, Object> variableOptions) {
+ public List<String> matches(
+ Object value, List<String> keys, Map<String, Object> variableOptions) {
+ List<String> result = new ArrayList<>();
+ if (value == null) {
+ return result;
+ }
+ for (String key : keys) {
+ if (matches(value, key)) {
+ result.add(key);
+ }
+ }
+ result.sort(String::compareTo);
+ return result;
+ }
+
+ @SuppressWarnings("static-method")
+ private boolean matches(Object value, String key) {
if ("*".equals(key)) {
return true;
}
- return key.equals(value);
+ return key.equals(Objects.toString(value));
}
}
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberFormatter.java b/icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberFormatter.java
index c34d88920..9154647c2 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberFormatter.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberFormatter.java
@@ -122,6 +122,16 @@ public class LocalizedNumberFormatter extends NumberFormatterSettings<LocalizedN
}
/**
+ * Disassociate the locale from this formatter.
+ *
+ * @return The fluent chain.
+ * @draft ICU 74
+ */
+ public UnlocalizedNumberFormatter withoutLocale() {
+ return new UnlocalizedNumberFormatter(this, KEY_LOCALE, null);
+ }
+
+ /**
* Helper method that creates a FormattedStringBuilder and formats.
*/
private FormattedNumber format(DecimalQuantity fq) {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberRangeFormatter.java b/icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberRangeFormatter.java
index adec189ad..1c07d028c 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberRangeFormatter.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/number/LocalizedNumberRangeFormatter.java
@@ -82,6 +82,16 @@ public class LocalizedNumberRangeFormatter extends NumberRangeFormatterSettings<
return formatImpl(dq1, dq2, first.equals(second));
}
+ /**
+ * Disassociate the locale from this formatter.
+ *
+ * @return The fluent chain.
+ * @draft ICU 74
+ */
+ public UnlocalizedNumberRangeFormatter withoutLocale() {
+ return new UnlocalizedNumberRangeFormatter(this, KEY_LOCALE, null);
+ }
+
FormattedNumberRange formatImpl(DecimalQuantity first, DecimalQuantity second, boolean equalBeforeRounding) {
if (fImpl == null) {
fImpl = new NumberRangeFormatterImpl(resolve());
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/number/NumberRangeFormatterImpl.java b/icu4j/main/core/src/main/java/com/ibm/icu/number/NumberRangeFormatterImpl.java
index 1e60a8cc4..a26527342 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/number/NumberRangeFormatterImpl.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/number/NumberRangeFormatterImpl.java
@@ -437,5 +437,4 @@ class NumberRangeFormatterImpl {
assert mod != null;
return mod;
}
-
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/number/ScientificNotation.java b/icu4j/main/core/src/main/java/com/ibm/icu/number/ScientificNotation.java
index d5d9fad31..7c43baa0a 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/number/ScientificNotation.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/number/ScientificNotation.java
@@ -255,7 +255,7 @@ public class ScientificNotation extends Notation {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
// This method is not currently used. (unsafe path not used in range formatting)
assert false;
return false;
@@ -334,7 +334,7 @@ public class ScientificNotation extends Notation {
}
@Override
- public boolean semanticallyEquivalent(Modifier other) {
+ public boolean strictEquals(Modifier other) {
if (!(other instanceof ScientificModifier)) {
return false;
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/number/UnlocalizedNumberFormatter.java b/icu4j/main/core/src/main/java/com/ibm/icu/number/UnlocalizedNumberFormatter.java
index 57c01bee4..8d6e1fc05 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/number/UnlocalizedNumberFormatter.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/number/UnlocalizedNumberFormatter.java
@@ -19,7 +19,7 @@ public class UnlocalizedNumberFormatter extends NumberFormatterSettings<Unlocali
/** Base constructor; called during startup only. Sets the threshold to the default value of 3. */
UnlocalizedNumberFormatter() {
- super(null, KEY_THRESHOLD, new Long(3));
+ super(null, KEY_THRESHOLD, 3L);
}
UnlocalizedNumberFormatter(NumberFormatterSettings<?> parent, int key, Object value) {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/CanonicalIterator.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/CanonicalIterator.java
index 56b36d90c..39baae1b6 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/CanonicalIterator.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/CanonicalIterator.java
@@ -154,6 +154,10 @@ public final class CanonicalIterator {
}
}
+ // To avoid infinity loop caused by permute, we limit the depth of recursive
+ // call to permute and throw exception.
+ // We know in some unit test we need at least 4. Set to 8 just in case some
+ // unforseen use cases.
/**
* Simple implementation of permutation.
* <br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
@@ -165,9 +169,27 @@ public final class CanonicalIterator {
*/
@Deprecated
public static void permute(String source, boolean skipZeros, Set<String> output) {
+ permute(source, skipZeros, output, 0);
+ }
+
+ private static int PERMUTE_DEPTH_LIMIT = 8;
+ /**
+ * Simple implementation of permutation.
+ * <br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
+ * @param source the string to find permutations for
+ * @param skipZeros set to true to skip characters with canonical combining class zero
+ * @param output the set to add the results to
+ * @param depth the depth of the recursive call.
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+ @Deprecated
+ private static void permute(String source, boolean skipZeros, Set<String> output, int depth) {
// TODO: optimize
//if (PROGRESS) System.out.println("Permute: " + source);
-
+ if (depth > PERMUTE_DEPTH_LIMIT) {
+ throw new UnsupportedOperationException("Stack too deep:" + depth);
+ }
// optimization:
// if zero or one character, just return a set with it
// we check for length < 2 to keep from counting code points all the time
@@ -193,7 +215,7 @@ public final class CanonicalIterator {
// see what the permutations of the characters before and after this one are
subpermute.clear();
permute(source.substring(0,i)
- + source.substring(i + UTF16.getCharCount(cp)), skipZeros, subpermute);
+ + source.substring(i + UTF16.getCharCount(cp)), skipZeros, subpermute, depth+1);
// prefix this character to all of them
String chStr = UTF16.valueOf(source, i);
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/DateIntervalFormat.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/DateIntervalFormat.java
index eb24241af..bd7658ece 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/DateIntervalFormat.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/DateIntervalFormat.java
@@ -2308,7 +2308,17 @@ public class DateIntervalFormat extends UFormat {
private static boolean fieldExistsInSkeleton(int field, String skeleton)
{
String fieldChar = DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field];
- return ( (skeleton.indexOf(fieldChar) == -1) ? false : true ) ;
+ boolean result = skeleton.contains(fieldChar);
+ if (!result) {
+ if (fieldChar.equals("M")) {
+ // if the caller specified Calendar.MONTH, check the pattern for both M and L
+ result = skeleton.contains("L");
+ } else if (fieldChar.equals("y")) {
+ // if the caller specified Calendar.YEAR, check the pattern for y, Y, u, U, and r
+ result = skeleton.contains("U") || skeleton.contains("Y") || skeleton.contains("u") || skeleton.contains("r");
+ }
+ }
+ return result;
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/MessageFormat.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/MessageFormat.java
index a4694285d..033587fb3 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/MessageFormat.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/MessageFormat.java
@@ -1305,7 +1305,7 @@ public class MessageFormat extends UFormat {
String key = null;
if(args!=null) {
argNumber=part.getValue(); // ARG_NUMBER
- argId = Integer.valueOf(argNumber);
+ argId = argNumber;
} else {
if(part.getType()==MessagePattern.Part.Type.ARG_NAME) {
key=msgPattern.getSubstring(part);
@@ -1673,7 +1673,7 @@ public class MessageFormat extends UFormat {
int argNumber=part.getValue(); // ARG_NUMBER
if (dest.attributes != null) {
// We only need argId if we add it into the attributes.
- argId = Integer.valueOf(argNumber);
+ argId = argNumber;
}
if(0<=argNumber && argNumber<args.length) {
arg=args[argNumber];
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/NFRule.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/NFRule.java
index 9d887cb14..f93b4d950 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/NFRule.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/NFRule.java
@@ -112,7 +112,7 @@ final class NFRule {
/**
* The RuleBasedNumberFormat that owns this rule
*/
- private final RuleBasedNumberFormat formatter;
+ final RuleBasedNumberFormat formatter;
//-----------------------------------------------------------------------
// construction
@@ -730,6 +730,13 @@ final class NFRule {
return power(radix, exponent);
}
+ /**
+ * Internal function used by the rounding code in MultiplierSubstitution.
+ */
+ boolean hasModulusSubstitution() {
+ return (sub1 instanceof ModulusSubstitution) || (sub2 instanceof ModulusSubstitution);
+ }
+
//-----------------------------------------------------------------------
// formatting
//-----------------------------------------------------------------------
@@ -895,13 +902,13 @@ final class NFRule {
* character not consumed by matching the text against this rule
* (if this rule doesn't match the text at all, the parse position
* if left unchanged (presumably at 0) and the function returns
- * new Long(0)).
+ * Long.valueOf(0)).
* @param isFractionRule True if this rule is contained within a
* fraction rule set. This is only used if the rule has no
* substitutions.
* @return If this rule matched the text, this is the rule's base value
* combined appropriately with the results of parsing the substitutions.
- * If nothing matched, this is new Long(0) and the parse position is
+ * If nothing matched, this is Long.valueOf(0) and the parse position is
* left unchanged. The result will be an instance of Long if the
* result is an integer and Double otherwise. The result is never null.
*/
@@ -1052,9 +1059,9 @@ final class NFRule {
// return the result as a Long if possible, or as a Double
if (result == (long)result) {
- return Long.valueOf((long)result);
+ return (long) result;
} else {
- return new Double(result);
+ return result;
}
}
@@ -1119,7 +1126,7 @@ final class NFRule {
* consider rules with base values lower than this value.
* @return If there's a match, this is the result of composing
* baseValue with the result of matching the substitution. Otherwise,
- * this is new Long(0). It's never null. If the result is an integer,
+ * this is Long.valueOf(0). It's never null. If the result is an integer,
* this will be an instance of Long; otherwise, it's an instance of
* Double.
*/
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/NFRuleSet.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/NFRuleSet.java
index c81e7cc09..f4c079ec9 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/NFRuleSet.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/NFRuleSet.java
@@ -748,7 +748,7 @@ final class NFRuleSet {
* will be an instance of Long if it's an integral value; otherwise,
* it will be an instance of Double. This function always returns
* a valid object: If nothing matched the input string at all,
- * this function returns new Long(0), and the parse position is
+ * this function returns Long.valueOf(0), and the parse position is
* left unchanged.
*/
public Number parse(String text, ParsePosition parsePosition, double upperBound, int nonNumericalExecutedRuleMask) {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/NFSubstitution.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/NFSubstitution.java
index d8f3684c1..e97570786 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/NFSubstitution.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/NFSubstitution.java
@@ -11,6 +11,7 @@ package com.ibm.icu.text;
import java.text.ParsePosition;
import com.ibm.icu.impl.number.DecimalQuantity_DualStorageBCD;
+import com.ibm.icu.math.BigDecimal;
//===================================================================
// NFSubstitution (abstract base class)
@@ -305,16 +306,10 @@ abstract class NFSubstitution {
ruleSet.format(numberToFormat, toInsertInto, position + pos, recursionCount);
} else {
if (number <= MAX_INT64_IN_DOUBLE) {
- // or perform the transformation on the number (preserving
- // the result's fractional part if the formatter it set
- // to show it), then use that formatter's format() method
+ // or perform the transformation on the number,
+ // then use that formatter's format() method
// to format the result
- double numberToFormat = transformNumber((double) number);
- if (numberFormat.getMaximumFractionDigits() == 0) {
- numberToFormat = Math.floor(numberToFormat);
- }
-
- toInsertInto.insert(position + pos, numberFormat.format(numberToFormat));
+ toInsertInto.insert(position + pos, numberFormat.format(transformNumber((double) number)));
}
else {
// We have gone beyond double precision. Something has to give.
@@ -421,7 +416,7 @@ abstract class NFSubstitution {
* @return If there's a match, this is the result of composing
* baseValue with whatever was returned from matching the
* characters. This will be either a Long or a Double. If there's
- * no match this is new Long(0) (not null), and parsePosition
+ * no match this is Long.valueOf(0) (not null), and parsePosition
* is left unchanged.
*/
public Number doParse(String text, ParsePosition parsePosition, double baseValue,
@@ -484,9 +479,9 @@ abstract class NFSubstitution {
// the result.
result = composeRuleValue(result, baseValue);
if (result == (long)result) {
- return Long.valueOf((long)result);
+ return (long) result;
} else {
- return new Double(result);
+ return result;
}
// if the parse was UNsuccessful, return 0
@@ -666,6 +661,12 @@ class MultiplierSubstitution extends NFSubstitution {
*/
long divisor;
+ /**
+ * A backpointer to the owning rule. Used in the rounding logic to determine
+ * whether the owning rule also has a modulus substitution.
+ */
+ NFRule owningRule;
+
//-----------------------------------------------------------------------
// construction
//-----------------------------------------------------------------------
@@ -689,6 +690,7 @@ class MultiplierSubstitution extends NFSubstitution {
// substitution. Rather than keeping a back-pointer to the
// rule, we keep a copy of the divisor
this.divisor = rule.getDivisor();
+ this.owningRule = rule;
if (divisor == 0) { // this will cause recursion
throw new IllegalStateException("Substitution with divisor 0 " + description.substring(0, pos) +
@@ -749,26 +751,25 @@ class MultiplierSubstitution extends NFSubstitution {
*/
@Override
public double transformNumber(double number) {
- boolean doFloor = ruleSet != null;
- if (!doFloor) {
- // This is a HACK that partially addresses ICU-22313. The original code wanted us to do
- // floor() on the result if we were passing it to another rule set, but not if we were passing
- // it to a DecimalFormat. But the DurationRules rule set has multiplier substitutions where
- // we DO want to do the floor() operation. What we REALLY want is to do floor() any time
- // the owning rule also has a ModulusSubsitution, but we don't have access to that information
- // here, so instead we're doing a floor() any time the DecimalFormat has maxFracDigits equal to
- // 0. This seems to work with our existing rule sets, but could be a problem in the future,
- // but the "real" fix for DurationRules isn't worth doing, since we're deprecating DurationRules
- // anyway. This is enough to keep it from being egregiously wrong, without obvious side
- // effects. --rtg 8/16/23
- if (numberFormat == null || numberFormat.getMaximumFractionDigits() == 0) {
- doFloor = true;
- }
- }
- if (!doFloor) {
- return number / divisor;
- } else {
+ // Most of the time, when a number is handled by an NFSubstitution, we do a floor() on it, but
+ // if a substitution uses a DecimalFormat to format the number instead of a ruleset, we generally
+ // don't want to do a floor()-- we want to keep the value intact so that the DecimalFormat can
+ // either include the fractional part or round properly. The big exception to this is here in
+ // MultiplierSubstitution. If the rule includes two substitutions, the MultiplierSubstitution
+ // (which is handling the larger part of the number) really _does_ want to do a floor(), because
+ // the ModulusSubstitution (which is handling the smaller part of the number) will take
+ // care of the fractional part. (Consider something like `1/12: <0< feet >0.0> inches;`.)
+ // But if there is no ModulusSubstitution, we're shortening the number in some way-- the "larger part"
+ // of the number is the only part we're keeping. Even if the DecimalFormat doesn't include the
+ // fractional part in its output, we still want it to round. (Consider something like `1/1000: <0<K;`.)
+ // (TODO: The ROUND_FLOOR thing is a kludge to preserve the previous floor-always behavior. What we
+ // probably really want to do is just set the rounding mode on the DecimalFormat to match the rounding
+ // mode on the RuleBasedNumberFormat and then pass the number to it whole and let it do its own rounding.
+ // But before making that change, we'd have to make sure it didn't have undesirable side effects.)
+ if (ruleSet != null || owningRule.hasModulusSubstitution() || owningRule.formatter.getRoundingMode() == BigDecimal.ROUND_FLOOR) {
return Math.floor(number / divisor);
+ } else {
+ return number / divisor;
}
}
@@ -1028,9 +1029,9 @@ class ModulusSubstitution extends NFSubstitution {
result = composeRuleValue(result, baseValue);
if (result == (long)result) {
- return Long.valueOf((long)result);
+ return (long) result;
} else {
- return new Double(result);
+ return result;
}
} else {
return tempResult;
@@ -1311,7 +1312,7 @@ class FractionalPartSubstitution extends NFSubstitution {
* @param lenientParse If true, try matching the text as numerals if
* matching as words doesn't work
* @return If the match was successful, the current partial parse
- * result; otherwise new Long(0). The result is either a Long or
+ * result; otherwise Long.valueOf(0). The result is either a Long or
* a Double.
*/
@Override
@@ -1360,7 +1361,7 @@ class FractionalPartSubstitution extends NFSubstitution {
result = fq.toDouble();
result = composeRuleValue(result, baseValue);
- return new Double(result);
+ return result;
}
}
@@ -1693,7 +1694,7 @@ class NumeratorSubstitution extends NFSubstitution {
--zeroCount;
}
// d is now our true denominator
- result = new Double(n/(double)d);
+ result = (double)n/(double)d;
}
return result;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/PersonName.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/PersonName.java
index 2c19590cb..38efbfc1b 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/PersonName.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/PersonName.java
@@ -13,7 +13,7 @@ import java.util.Set;
* above. A concrete SimplePersonName object that does store the field values directly
* is provided.
*
- * @draft ICU 73
+ * @stable ICU 73
* @see SimplePersonName
*/
public interface PersonName {
@@ -22,32 +22,32 @@ public interface PersonName {
/**
* Identifiers for the name fields supported by the PersonName object.
- * @draft ICU 73
+ * @stable ICU 73
*/
enum NameField {
/**
* Contains titles such as "Mr.", "Dr." (in English these typically
* precede the name)
- * @draft ICU 73
+ * @stable ICU 73
*/
TITLE("title"),
/**
* The given name. May contain more than one token.
- * @draft ICU 73
+ * @stable ICU 73
*/
GIVEN("given"),
/**
* Additional given names. (In English, this is usually the "middle name" and
* may contain more than one word.)
- * @draft ICU 73
+ * @stable ICU 73
*/
GIVEN2("given2"),
/**
* The surname. In Spanish, this is the patronymic surname.
- * @draft ICU 73
+ * @stable ICU 73
*/
SURNAME("surname"),
@@ -55,21 +55,21 @@ public interface PersonName {
* Additional surnames. This is only used in a few languages, such as Spanish,
* where it is the matronymic surname. (In most languages, multiple surnames all
* just go in the SURNAME field.)
- * @draft ICU 73
+ * @stable ICU 73
*/
SURNAME2("surname2"),
/**
* Generational qualifiers that in English generally follow the actual name,
* such as "Jr." or "III".
- * @draft ICU 73
+ * @stable ICU 73
*/
GENERATION("generation"),
/**
* Professional qualifiers that in English generally follow the actual name,
* such as "M.D." or "J.D.".
- * @draft ICU 73
+ * @stable ICU 73
*/
CREDENTIALS("credentials");
@@ -81,7 +81,7 @@ public interface PersonName {
/**
* Returns the NameField's display name.
- * @draft ICU 73
+ * @stable ICU 73
*/
@Override
public String toString() {
@@ -106,7 +106,7 @@ public interface PersonName {
/**
* Identifiers for the name field modifiers supported by the PersonName and PersonNameFormatter objects.
- * @draft ICU 73
+ * @stable ICU 73
*/
enum FieldModifier {
/**
@@ -114,7 +114,7 @@ public interface PersonName {
* if "given" is "James", "given-informal" might be "Jimmy". Only applied to the "given"
* field. If the PersonName object doesn't apply this modifier, PersonNameFormatter just
* uses the unmodified version of "given".
- * @draft ICU 73
+ * @stable ICU 73
*/
INFORMAL("informal"),
@@ -123,7 +123,7 @@ public interface PersonName {
* "van den Hul", this requests just the prefixes ("van den"). Only applied to the "surname"
* field. If the PersonName object doesn't apply this modifier, PersonNameFormatter
* assumes there are no prefixes.
- * @draft ICU 73
+ * @stable ICU 73
*/
PREFIX("prefix"),
@@ -132,7 +132,7 @@ public interface PersonName {
* "van den Hul", this requests just the main word ("Hul"). Only applied to the "surname"
* field. If the implementing class doesn't apply this modifier, PersonNameFormatter
* assumes the entire "surname" field is the "core".
- * @draft ICU 73
+ * @stable ICU 73
*/
CORE("core"),
@@ -140,7 +140,7 @@ public interface PersonName {
* Requests an initial for the specified field. PersonNameFormatter will do
* this algorithmically, but a PersonName object can apply this modifier itself if it wants
* different initial-generation logic (or stores the initial separately).
- * @draft ICU 73
+ * @stable ICU 73
*/
INITIAL("initial"),
@@ -149,14 +149,14 @@ public interface PersonName {
* (this usually differs from "initial" in that "initial" often adds a period and "monogram"
* never does). PersonNameFormatter will do this algorithmically, but a PersonName object can
* apply this modifier itself if it wants different monogram-generation logic.
- * @draft ICU 73
+ * @stable ICU 73
*/
MONOGRAM("monogram"),
/**
* Requests the field value converted to ALL CAPS. PersonName objects
* generally won't need to handle this modifier themselves.
- * @draft ICU 73
+ * @stable ICU 73
*/
ALL_CAPS("allCaps"),
@@ -174,7 +174,7 @@ public interface PersonName {
* Requests the field value with the first grapheme of each word converted to titlecase.
* A PersonName object might handle this modifier itself to capitalize words more
* selectively.
- * @draft ICU 73
+ * @stable ICU 73
*/
INITIAL_CAP("initialCap"),
@@ -202,7 +202,7 @@ public interface PersonName {
/**
* Returns the FieldModifier's display name.
- * @draft ICU 73
+ * @stable ICU 73
*/
@Override
public String toString() {
@@ -211,7 +211,7 @@ public interface PersonName {
/**
* Returns the appropriate fieldModifier for its display name.
- * @draft ICU 73
+ * @stable ICU 73
*/
public static FieldModifier forString(String name) {
for (FieldModifier modifier : values()) {
@@ -225,27 +225,27 @@ public interface PersonName {
/**
* An enum to specify the preferred field order for the name.
- * @draft ICU 73
+ * @stable ICU 73
*/
enum PreferredOrder {
/**
* Indicates the name has no preferred field order, and that the formatter should deduce the
* proper field order based on the locales of the name and the formatter.
- * @draft ICU 73
+ * @stable ICU 73
*/
DEFAULT,
/**
* Indicates that the name should be formatted in given-first order, even when the formatter
* would normally guess that it should be formatted in surname-first order.
- * @draft ICU 73
+ * @stable ICU 73
*/
GIVEN_FIRST,
/**
* Indicates that the name should be formatted in surname-first order, even when the formatter
* would normally guess that it should be formatted in given-first order.
- * @draft ICU 73
+ * @stable ICU 73
*/
SURNAME_FIRST
}
@@ -257,7 +257,7 @@ public interface PersonName {
* An implementing class is allowed to return null here to indicate the name's locale is unknown.
*
* @return The name's locale, or null if it's not known.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Locale getNameLocale();
@@ -267,7 +267,7 @@ public interface PersonName {
* and the formatter. But this can be used to force a particular field order, generally in cases
* where the deduction logic in PersonNameFormatter would guess wrong.
* @return The name's preferred field order.
- * @draft ICU 73
+ * @stable ICU 73
*/
public PreferredOrder getPreferredOrder();
@@ -281,7 +281,7 @@ public interface PersonName {
* DIDN'T handle. This parameter may not be null, and must either be mutable or empty.
* @return The value of the requested field, optionally modified by some or all of the requested modifiers, or
* null if the requested field isn't present in the name.
- * @draft ICU 73
+ * @stable ICU 73
*/
public String getFieldValue(NameField identifier, Set<FieldModifier> modifiers);
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/PersonNameFormatter.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/PersonNameFormatter.java
index bfdb1f1fb..be7e42065 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/PersonNameFormatter.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/PersonNameFormatter.java
@@ -63,7 +63,7 @@ import com.ibm.icu.impl.personname.PersonNameFormatterImpl;
* </tr>
* </table>
*
- * @draft ICU 73
+ * @stable ICU 73
*/
public class PersonNameFormatter {
//==============================================================================
@@ -71,26 +71,26 @@ public class PersonNameFormatter {
/**
* Specifies the desired length of the formatted name.
- * @draft ICU 73
+ * @stable ICU 73
*/
public enum Length {
/**
* The longest name length. Generally uses most of the fields in the name object.
- * @draft ICU 73
+ * @stable ICU 73
*/
LONG,
/**
* The most typical name length. Generally includes the given name and surname, but generally
* not most of the other fields.
- * @draft ICU 73
+ * @stable ICU 73
*/
MEDIUM,
/**
* A shortened name. Skips most fields and may abbreviate some name fields to just their initials.
* When Formality is INFORMAL, may only include one field.
- * @draft ICU 73
+ * @stable ICU 73
*/
SHORT,
@@ -103,18 +103,18 @@ public class PersonNameFormatter {
/**
* Specifies the intended usage of the formatted name.
- * @draft ICU 73
+ * @stable ICU 73
*/
public enum Usage {
/**
* Used for when the name is going to be used to address the user directly: "Turn left here, John."
- * @draft ICU 73
+ * @stable ICU 73
*/
ADDRESSING,
/**
* Used in general cases, when the name is used to refer to somebody else.
- * @draft ICU 73
+ * @stable ICU 73
*/
REFERRING,
@@ -123,26 +123,26 @@ public class PersonNameFormatter {
* like chat avatars. In English, this is usually the person's initials, but this isn't true in all
* languages. When the caller specifies Usage.MONOGRAM, the Length parameter can be used to get different
* lengths of monograms: Length.SHORT is generally a single letter; Length.LONG may be as many as three or four.
- * @draft ICU 73
+ * @stable ICU 73
*/
MONOGRAM
}
/**
* Specifies the intended formality of the formatted name.
- * @draft ICU 73
+ * @stable ICU 73
*/
public enum Formality {
/**
* The more formal version of the name.
- * @draft ICU 73
+ * @stable ICU 73
*/
FORMAL,
/**
* The more informal version of the name. In English, this might omit fields or use the "informal" variant
* of the given name.
- * @draft ICU 73
+ * @stable ICU 73
*/
INFORMAL,
@@ -156,12 +156,12 @@ public class PersonNameFormatter {
/**
* An enum indicating the desired display order for a formatted name.
- * @draft ICU 73
+ * @stable ICU 73
*/
public enum DisplayOrder {
/**
* The default display order; used to indicate normal formatting.
- * @draft ICU 73
+ * @stable ICU 73
*/
DEFAULT,
@@ -169,7 +169,7 @@ public class PersonNameFormatter {
* Used to indicate a display order suitable for use in a sorted list:
* For English, this would put the surnames first, with a comma between them and the rest
* of the name: "Smith, John".
- * @draft ICU 73
+ * @stable ICU 73
*/
SORTING,
@@ -196,14 +196,14 @@ public class PersonNameFormatter {
/**
* A utility class that can be used to construct a PersonNameFormatter.
* Use PersonNameFormatter.builder() to get a new instance.
- * @draft ICU 73
+ * @stable ICU 73
*/
public static class Builder {
/**
* Sets the locale for the formatter to be constructed.
* @param locale The new formatter locale. May not be null.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder setLocale(Locale locale) {
if (locale != null) {
@@ -216,7 +216,7 @@ public class PersonNameFormatter {
* Sets the name length for the formatter to be constructed.
* @param length The new name length.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder setLength(Length length) {
this.length = length;
@@ -227,7 +227,7 @@ public class PersonNameFormatter {
* Sets the name usage for the formatter to be constructed.
* @param usage The new name length.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder setUsage(Usage usage) {
this.usage = usage;
@@ -238,7 +238,7 @@ public class PersonNameFormatter {
* Sets the name formality for the formatter to be constructed.
* @param formality The new name length.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder setFormality(Formality formality) {
this.formality = formality;
@@ -252,7 +252,7 @@ public class PersonNameFormatter {
* for most contexts (e.g., in English, "John Smith").
* @param order The desired display order for formatted names.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder setDisplayOrder(DisplayOrder order) {
this.displayOrder = order;
@@ -264,7 +264,7 @@ public class PersonNameFormatter {
* Japanese names to highlight which name is the surname.
* @param allCaps If true, the surname in the formatted result will be rendered in ALL CAPS.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder setSurnameAllCaps(boolean allCaps) {
this.surnameAllCaps = allCaps;
@@ -277,7 +277,7 @@ public class PersonNameFormatter {
* (presumably after calling the other methods to change the parameter) to create more
* than one PersonNameFormatter; you don't need a new Builder for each PersonNameFormatter.
* @return A new PersonNameFormatter.
- * @draft ICU 73
+ * @stable ICU 73
*/
public PersonNameFormatter build() {
return new PersonNameFormatter(locale, length, usage, formality, displayOrder, surnameAllCaps);
@@ -300,7 +300,7 @@ public class PersonNameFormatter {
/**
* Returns a Builder object that can be used to construct a new PersonNameFormatter.
* @return A new Builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public static Builder builder() {
return new Builder();
@@ -310,7 +310,7 @@ public class PersonNameFormatter {
* Returns a Builder object whose fields match those used to construct this formatter,
* allowing a new formatter to be created based on this one.
* @return A new Builder that can be used to create a new formatter based on this formatter.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder toBuilder() {
Builder builder = builder();
@@ -328,7 +328,7 @@ public class PersonNameFormatter {
* @param name A PersonName object that supplies individual field values (optionally, with modifiers applied)
* to the formatter for formatting.
* @return The name, formatted according to the locale and other parameters passed to the formatter's constructor.
- * @draft ICU 73
+ * @stable ICU 73
*/
public String formatToString(PersonName name) {
// TODO: Add a format() method that returns a FormattedPersonName object that descends from FormattedValue.
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBINode.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBINode.java
index 7583f0f08..926030609 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBINode.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBINode.java
@@ -176,7 +176,6 @@ class RBBINode {
}
-
//-------------------------------------------------------------------------
//
// flattenVariables Walk a parse tree, replacing any variable
@@ -195,7 +194,11 @@ class RBBINode {
// nested references are handled by cloneTree(), not here.
//
//-------------------------------------------------------------------------
- RBBINode flattenVariables() {
+ static final private int kRecursiveDepthLimit = 3500;
+ RBBINode flattenVariables(int depth) {
+ if (depth > kRecursiveDepthLimit) {
+ throw new IllegalArgumentException("The input is too long");
+ }
if (fType == varRef) {
RBBINode retNode = fLeftChild.cloneTree();
retNode.fRuleRoot = this.fRuleRoot;
@@ -204,11 +207,11 @@ class RBBINode {
}
if (fLeftChild != null) {
- fLeftChild = fLeftChild.flattenVariables();
+ fLeftChild = fLeftChild.flattenVariables(depth+1);
fLeftChild.fParent = this;
}
if (fRightChild != null) {
- fRightChild = fRightChild.flattenVariables();
+ fRightChild = fRightChild.flattenVariables(depth+1);
fRightChild.fParent = this;
}
return this;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBIRuleScanner.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBIRuleScanner.java
index bc114b2d2..8e2399fa7 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBIRuleScanner.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBIRuleScanner.java
@@ -412,7 +412,11 @@ class RBBIRuleScanner {
{
n = fNodeStack[fNodeStackPtr];
int v = UCharacter.digit((char) fC.fChar, 10);
- n.fVal = n.fVal * 10 + v;
+ long update = (long)(n.fVal) * 10 + v;
+ if (update > Integer.MAX_VALUE) {
+ error(RBBIRuleBuilder.U_BRK_RULE_SYNTAX);
+ }
+ n.fVal = (int)(update);
break;
}
@@ -770,7 +774,7 @@ class RBBIRuleScanner {
// These are recognized in all contexts, whether in quoted text or not.
//
if (c.fChar == '\'') {
- if (UTF16.charAt(fRB.fRules, fNextIndex) == '\'') {
+ if (fNextIndex < fRB.fRules.length() && UTF16.charAt(fRB.fRules, fNextIndex) == '\'') {
c.fChar = nextCharLL(); // get nextChar officially so character counts
c.fEscaped = true; // stay correct.
} else {
@@ -787,6 +791,9 @@ class RBBIRuleScanner {
return;
}
}
+ if (c.fChar == -1) {
+ return;
+ }
if (fQuoteMode) {
c.fEscaped = true;
@@ -1059,7 +1066,11 @@ class RBBIRuleScanner {
// Verify that the set contains at least one code point.
//
- if (uset.isEmpty()) {
+ // Use tempSet to handle the case that the UnicodeSet contains
+ // only string element, such as [{ab}] and treat it as empty set.
+ UnicodeSet tempSet = new UnicodeSet(uset);
+ tempSet.removeAllStrings();
+ if (tempSet.isEmpty()) {
// This set is empty.
// Make it an error, because it almost certainly is not what the user wanted.
// Also, avoids having to think about corner cases in the tree manipulation code
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBITableBuilder.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBITableBuilder.java
index a04ea6b47..b4f9ed5d9 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBITableBuilder.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/RBBITableBuilder.java
@@ -116,7 +116,7 @@ class RBBITableBuilder {
// Walk through the tree, replacing any references to $variables with a copy of the
// parse tree for the substitution expression.
//
- fRB.fTreeRoots[fRootIx] = fRB.fTreeRoots[fRootIx].flattenVariables();
+ fRB.fTreeRoots[fRootIx] = fRB.fTreeRoots[fRootIx].flattenVariables(0);
if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("ftree")>=0) {
System.out.println("Parse tree after flattening variable references.");
fRB.fTreeRoots[fRootIx].printTree(true);
@@ -751,7 +751,7 @@ class RBBITableBuilder {
for (n=0; n<fDStates.size(); n++) { // For each state s (row in the state table)
RBBIStateDescriptor sd = fDStates.get(n);
if (sd.fPositions.contains(tagNode)) { // if s include the tag node t
- sd.fTagVals.add(Integer.valueOf(tagNode.fVal));
+ sd.fTagVals.add(tagNode.fVal);
}
}
}
@@ -799,15 +799,15 @@ class RBBITableBuilder {
// We will need this as a default, for rule sets with no explicit tagging,
// or with explicit tagging of {0}.
if (fRB.fRuleStatusVals.size() == 0) {
- fRB.fRuleStatusVals.add(Integer.valueOf(1)); // Num of statuses in group
- fRB.fRuleStatusVals.add(Integer.valueOf(0)); // and our single status of zero
+ fRB.fRuleStatusVals.add(1); // Num of statuses in group
+ fRB.fRuleStatusVals.add(0); // and our single status of zero
SortedSet<Integer> s0 = new TreeSet<>(); // mapping for rules with no explicit tagging
- fRB.fStatusSets.put(s0, Integer.valueOf(0)); // (key is an empty set).
+ fRB.fStatusSets.put(s0, 0); // (key is an empty set).
SortedSet<Integer> s1 = new TreeSet<>(); // mapping for rules with explicit tagging of {0}
- s1.add(Integer.valueOf(0));
- fRB.fStatusSets.put(s1, Integer.valueOf(0));
+ s1.add(0);
+ fRB.fStatusSets.put(s1, 0);
}
// For each state, check whether the state's status tag values are
@@ -821,12 +821,12 @@ class RBBITableBuilder {
// Add them to the statusSets map, This map associates
// the set of status values with an index in the runtime status
// values array.
- arrayIndexI = Integer.valueOf(fRB.fRuleStatusVals.size());
+ arrayIndexI = fRB.fRuleStatusVals.size();
fRB.fStatusSets.put(statusVals, arrayIndexI);
// Add the new set of status values to the vector of values that
// will eventually become the array used by the runtime engine.
- fRB.fRuleStatusVals.add(Integer.valueOf(statusVals.size()));
+ fRB.fRuleStatusVals.add(statusVals.size());
fRB.fRuleStatusVals.addAll(statusVals);
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedBreakIterator.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedBreakIterator.java
index d0cf532ec..9d54bd1aa 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedBreakIterator.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedBreakIterator.java
@@ -19,9 +19,8 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.text.CharacterIterator;
-import java.util.ArrayList;
-import java.util.List;
import java.util.MissingResourceException;
+import java.util.concurrent.ConcurrentLinkedQueue;
import com.ibm.icu.impl.CharacterIteration;
import com.ibm.icu.impl.ICUBinary;
@@ -57,9 +56,6 @@ public class RuleBasedBreakIterator extends BreakIterator {
*/
private RuleBasedBreakIterator() {
fDictionaryCharCount = 0;
- synchronized(gAllBreakEngines) {
- fBreakEngines = new ArrayList<>(gAllBreakEngines);
- }
}
/**
@@ -174,9 +170,6 @@ public class RuleBasedBreakIterator extends BreakIterator {
if (fText != null) {
result.fText = (CharacterIterator)(fText.clone());
}
- synchronized (gAllBreakEngines) {
- result.fBreakEngines = new ArrayList<>(gAllBreakEngines);
- }
result.fLookAheadMatches = new int[fRData.fFTable.fLookAheadResultsSize];
result.fBreakCache = result.new BreakCache(fBreakCache);
result.fDictionaryCache = result.new DictionaryCache(fDictionaryCache);
@@ -342,24 +335,21 @@ public class RuleBasedBreakIterator extends BreakIterator {
* Lazily updated as break engines are needed, because instantiation of
* break engines is expensive.
*
- * Because gAllBreakEngines can be referenced concurrently from different
- * BreakIterator instances, all access is synchronized.
+ * Important notes:
+ * <ul>Because we don't want to add the same LanguageBreakEngine multiple times, all writes
+ * are synchronized.
+ * <ul>Read access avoids explicit synchronization, but will end up being synchronized if
+ * needed.
*/
- private static final List<LanguageBreakEngine> gAllBreakEngines;
+ private static final ConcurrentLinkedQueue<LanguageBreakEngine> gAllBreakEngines;
static {
gUnhandledBreakEngine = new UnhandledBreakEngine();
- gAllBreakEngines = new ArrayList<>();
+ gAllBreakEngines = new ConcurrentLinkedQueue<>();
gAllBreakEngines.add(gUnhandledBreakEngine);
}
/**
- * List of all known break engines. Similar to gAllBreakEngines, but local to a
- * break iterator, allowing it to be used without synchronization.
- */
- private List<LanguageBreakEngine> fBreakEngines;
-
- /**
* Dump the contents of the state table and character classes for this break iterator.
* For debugging only.
* @internal
@@ -726,19 +716,18 @@ public class RuleBasedBreakIterator extends BreakIterator {
// We have a dictionary character.
// Does an already instantiated break engine handle it?
- for (LanguageBreakEngine candidate : fBreakEngines) {
+ // First read without synchronization, which could lead to a new language
+ // break engine being added and we didn't go over it.
+ for (LanguageBreakEngine candidate : gAllBreakEngines) {
if (candidate.handles(c)) {
return candidate;
}
}
synchronized (gAllBreakEngines) {
- // This break iterator's list of break engines didn't handle the character.
- // Check the global list, another break iterator may have instantiated the
- // desired engine.
+ // Another break iterator may have instantiated the desired engine.
for (LanguageBreakEngine candidate : gAllBreakEngines) {
if (candidate.handles(c)) {
- fBreakEngines.add(candidate);
return candidate;
}
}
@@ -791,7 +780,6 @@ public class RuleBasedBreakIterator extends BreakIterator {
if (eng != null && eng != gUnhandledBreakEngine) {
gAllBreakEngines.add(eng);
- fBreakEngines.add(eng);
}
return eng;
} // end synchronized(gAllBreakEngines)
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedNumberFormat.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedNumberFormat.java
index a57925abc..41a2d5e62 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedNumberFormat.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -404,7 +404,16 @@ import com.ibm.icu.util.UResourceBundleIterator;
* <td style="width: 37;"></td>
* <td style="width: 23;">&lt;&lt;</td>
* <td style="width: 165; vertical-align: top;">in normal rule</td>
- * <td>Divide the number by the rule's divisor and format the quotient</td>
+ * <td>Divide the number by the rule's divisor, perform floor() on the quotient,
+ * and format the resulting value.<br>
+ * If there is a DecimalFormat pattern between the &lt; characters and the
+ * rule does NOT also contain a &gt;&gt; substitution, we DON'T perform
+ * floor() on the quotient-- the quotient is passed through to the DecimalFormat
+ * intact. That is, for the value 1,900:<br>
+ * - "1/1000: &lt;&lt; thousand;" will produce "one thousand"<br>
+ * - "1/1000: &lt;0&lt; thousand;" will produce "2 thousand" (NOT "1 thousand")<br>
+ * - "1/1000: &lt;0&lt; seconds &gt;0&gt; milliseconds;" will produce "1 second 900 milliseconds"
+ * </td>
* </tr>
* <tr>
* <td style="width: 37;"></td>
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/SimpleDateFormat.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/SimpleDateFormat.java
index a5f2bc069..49f6a231d 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/SimpleDateFormat.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/SimpleDateFormat.java
@@ -57,53 +57,44 @@ import com.ibm.icu.util.UResourceBundle;
* (date -&gt; text), parsing (text -&gt; date), and normalization.
*
* <p>
- * <code>SimpleDateFormat</code> allows you to start by choosing
- * any user-defined patterns for date-time formatting. However, you
- * are encouraged to create a date-time formatter with either
- * <code>getTimeInstance</code>, <code>getDateInstance</code>, or
- * <code>getDateTimeInstance</code> in <code>DateFormat</code>. Each
- * of these class methods can return a date/time formatter initialized
- * with a default format pattern. You may modify the format pattern
- * using the <code>applyPattern</code> methods as desired.
+ * Clients are encouraged to create a date-time formatter using
+ * <code>DateFormat.getDateInstance()</code>, <code>DateFormat.getDateInstance()</code>,
+ * or <code>DateFormat.getDateTimeInstance()</code> rather than
+ * explicitly constructing an instance of <code>SimpleDateFormat</code>. This way, the client
+ * is guaranteed to get an appropriate formatting pattern for whatever locale the
+ * program is running in. If the client needs more control, they should consider using
+ * <code>DateFormat.getInstanceForSkeleton()</code>.
+ * However, if the client needs something more unusual than
+ * the default patterns in the locales, he can construct a <code>SimpleDateFormat</code> directly
+ * and give it an appropriate pattern (or use one of the factory methods on DateFormat
+ * and modify the pattern after the fact with <code>toPattern()</code> and <code>applyPattern()</code>.
* For more information on using these methods, see
* {@link DateFormat}.
*
* <p><strong>Date and Time Patterns:</strong></p>
*
* <p>Date and time formats are specified by <em>date and time pattern</em> strings.
- * Within date and time pattern strings, all unquoted ASCII letters [A-Za-z] are reserved
- * as pattern letters representing calendar fields. <code>SimpleDateFormat</code> supports
- * the date and time formatting algorithm and pattern letters defined by <a href="http://www.unicode.org/reports/tr35/">UTS#35
- * Unicode Locale Data Markup Language (LDML)</a>. The following pattern letters are
- * currently available (note that the actual values depend on CLDR and may change from the
- * examples shown here):</p>
+ * The full syntax for date and time patterns can be found at
+ * <a href="https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns">https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns</a>.</p>
+ *
+ * <p>Within date and time pattern strings, all unquoted ASCII letters [A-Za-z] are reserved
+ * as pattern letters representing calendar fields. Some of the most commonly used pattern letters are:</p>
* <blockquote>
* <table border="1">
* <tr>
- * <th>Field</th>
* <th style="text-align: center">Sym.</th>
* <th style="text-align: center">No.</th>
* <th>Example</th>
* <th>Description</th>
* </tr>
* <tr>
- * <th rowspan="3">era</th>
- * <td style="text-align: center" rowspan="3">G</td>
+ * <td style="text-align: center">G</td>
* <td style="text-align: center">1..3</td>
* <td>AD</td>
- * <td rowspan="3">Era - Replaced with the Era string for the current date. One to three letters for the
+ * <td>Era - Replaced with the Era string for the current date. One to three letters for the
* abbreviated form, four letters for the long (wide) form, five for the narrow form.</td>
* </tr>
* <tr>
- * <td style="text-align: center">4</td>
- * <td>Anno Domini</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>A</td>
- * </tr>
- * <tr>
- * <th rowspan="6">year</th>
* <td style="text-align: center">y</td>
* <td style="text-align: center">1..n</td>
* <td>1996</td>
@@ -164,44 +155,6 @@ import com.ibm.icu.util.UResourceBundle;
* </td>
* </tr>
* <tr>
- * <td style="text-align: center">Y</td>
- * <td style="text-align: center">1..n</td>
- * <td>1997</td>
- * <td>Year (in "Week of Year" based calendars). Normally the length specifies the padding,
- * but for two letters it also specifies the maximum length. This year designation is used in ISO
- * year-week calendar as defined by ISO 8601, but can be used in non-Gregorian based calendar systems
- * where week date processing is desired. May not always be the same value as calendar year.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">u</td>
- * <td style="text-align: center">1..n</td>
- * <td>4601</td>
- * <td>Extended year. This is a single number designating the year of this calendar system, encompassing
- * all supra-year fields. For example, for the Julian calendar system, year numbers are positive, with an
- * era of BCE or CE. An extended year value for the Julian calendar system assigns positive values to CE
- * years and negative values to BCE years, with 1 BCE being year 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center" rowspan="3">U</td>
- * <td style="text-align: center">1..3</td>
- * <td>甲子</td>
- * <td rowspan="3">Cyclic year name. Calendars such as the Chinese lunar calendar (and related calendars)
- * and the Hindu calendars use 60-year cycles of year names. Use one through three letters for the abbreviated
- * name, four for the full (wide) name, or five for the narrow name (currently the data only provides abbreviated names,
- * which will be used for all requested name widths). If the calendar does not provide cyclic year name data,
- * or if the year value to be formatted is out of the range of years for which cyclic name data is provided,
- * then numeric formatting is used (behaves like 'y').</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>(currently also 甲子)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>(currently also 甲子)</td>
- * </tr>
- * <tr>
- * <th rowspan="6">quarter</th>
* <td rowspan="3" style="text-align: center">Q</td>
* <td style="text-align: center">1..2</td>
* <td>02</td>
@@ -217,22 +170,6 @@ import com.ibm.icu.util.UResourceBundle;
* <td>2nd quarter</td>
* </tr>
* <tr>
- * <td rowspan="3" style="text-align: center">q</td>
- * <td style="text-align: center">1..2</td>
- * <td>02</td>
- * <td rowspan="3"><b>Stand-Alone</b> Quarter - Use one or two for the numerical quarter, three for the abbreviation,
- * or four for the full name (five for the narrow name is not yet supported).</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Q2</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>2nd quarter</td>
- * </tr>
- * <tr>
- * <th rowspan="8">month</th>
* <td rowspan="4" style="text-align: center">M</td>
* <td style="text-align: center">1..2</td>
* <td>09</td>
@@ -253,41 +190,6 @@ import com.ibm.icu.util.UResourceBundle;
* <td>S</td>
* </tr>
* <tr>
- * <td rowspan="4" style="text-align: center">L</td>
- * <td style="text-align: center">1..2</td>
- * <td>09</td>
- * <td rowspan="4"><b>Stand-Alone</b> Month - Use one or two for the numerical month, three for the abbreviation,
- * four for the full (wide) name, or 5 for the narrow name. With two ("LL"), the month number is zero-padded if
- * necessary (e.g. "08").</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Sep</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>September</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>S</td>
- * </tr>
- * <tr>
- * <th rowspan="2">week</th>
- * <td style="text-align: center">w</td>
- * <td style="text-align: center">1..2</td>
- * <td>27</td>
- * <td>Week of Year. Use "w" to show the minimum number of digits, or "ww" to always show two digits
- * (zero-padding if necessary, e.g. "08").</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">W</td>
- * <td style="text-align: center">1</td>
- * <td>3</td>
- * <td>Week of Month</td>
- * </tr>
- * <tr>
- * <th rowspan="4">day</th>
* <td style="text-align: center">d</td>
* <td style="text-align: center">1..2</td>
* <td>1</td>
@@ -295,29 +197,6 @@ import com.ibm.icu.util.UResourceBundle;
* two digits (zero-padding if necessary, e.g. "08").</td>
* </tr>
* <tr>
- * <td style="text-align: center">D</td>
- * <td style="text-align: center">1..3</td>
- * <td>345</td>
- * <td>Day of year</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">F</td>
- * <td style="text-align: center">1</td>
- * <td>2</td>
- * <td>Day of Week in Month. The example is for the 2nd Wed in July</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">g</td>
- * <td style="text-align: center">1..n</td>
- * <td>2451334</td>
- * <td>Modified Julian day. This is different from the conventional Julian day number in two regards.
- * First, it demarcates days at local zone midnight, rather than noon GMT. Second, it is a local number;
- * that is, it depends on the local time zone. It can be thought of as a single number that encompasses
- * all the date-related fields.</td>
- * </tr>
- * <tr>
- * <th rowspan="14">week<br>
- * day</th>
* <td rowspan="4" style="text-align: center">E</td>
* <td style="text-align: center">1..3</td>
* <td>Tue</td>
@@ -337,61 +216,12 @@ import com.ibm.icu.util.UResourceBundle;
* <td>Tu</td>
* </tr>
* <tr>
- * <td rowspan="5" style="text-align: center">e</td>
- * <td style="text-align: center">1..2</td>
- * <td>2</td>
- * <td rowspan="5">Local day of week. Same as E except adds a numeric value that will depend on the local
- * starting day of the week, using one or two letters. For this example, Monday is the first day of the week.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Tue</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Tuesday</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>T</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">6</td>
- * <td>Tu</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">c</td>
- * <td style="text-align: center">1</td>
- * <td>2</td>
- * <td rowspan="5"><b>Stand-Alone</b> local day of week - Use one letter for the local numeric value (same
- * as 'e'), three for the short day, four for the full (wide) name, five for the narrow name, or six for
- * the short name.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Tue</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Tuesday</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>T</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">6</td>
- * <td>Tu</td>
- * </tr>
- * <tr>
- * <th>period</th>
* <td style="text-align: center">a</td>
* <td style="text-align: center">1</td>
* <td>AM</td>
* <td>AM or PM</td>
* </tr>
* <tr>
- * <th rowspan="4">hour</th>
* <td style="text-align: center">h</td>
* <td style="text-align: center">1..2</td>
* <td>11</td>
@@ -408,19 +238,6 @@ import com.ibm.icu.util.UResourceBundle;
* 12-hour-cycle format (h or K). Use HH for zero padding.</td>
* </tr>
* <tr>
- * <td style="text-align: center">K</td>
- * <td style="text-align: center">1..2</td>
- * <td>0</td>
- * <td>Hour [0-11]. When used in a skeleton, only matches K or h, see above. Use KK for zero padding.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">k</td>
- * <td style="text-align: center">1..2</td>
- * <td>24</td>
- * <td>Hour [1-24]. When used in a skeleton, only matches k or H, see above. Use kk for zero padding.</td>
- * </tr>
- * <tr>
- * <th>minute</th>
* <td style="text-align: center">m</td>
* <td style="text-align: center">1..2</td>
* <td>59</td>
@@ -428,7 +245,6 @@ import com.ibm.icu.util.UResourceBundle;
* (zero-padding if necessary, e.g. "08")..</td>
* </tr>
* <tr>
- * <th rowspan="3">second</th>
* <td style="text-align: center">s</td>
* <td style="text-align: center">1..2</td>
* <td>12</td>
@@ -436,27 +252,10 @@ import com.ibm.icu.util.UResourceBundle;
* (zero-padding if necessary, e.g. "08").</td>
* </tr>
* <tr>
- * <td style="text-align: center">S</td>
- * <td style="text-align: center">1..n</td>
- * <td>3450</td>
- * <td>Fractional Second - truncates (like other time fields) to the count of letters when formatting. Appends zeros if more than 3 letters specified. Truncates at three significant digits when parsing.
- * (example shows display using pattern SSSS for seconds value 12.34567)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">A</td>
- * <td style="text-align: center">1..n</td>
- * <td>69540000</td>
- * <td>Milliseconds in day. This field behaves <i>exactly</i> like a composite of all time-related fields,
- * not including the zone fields. As such, it also reflects discontinuities of those fields on DST transition
- * days. On a day of DST onset, it will jump forward. On a day of DST cessation, it will jump backward. This
- * reflects the fact that is must be combined with the offset field to obtain a unique local time value.</td>
- * </tr>
- * <tr>
- * <th rowspan="23">zone</th>
* <td rowspan="2" style="text-align: center">z</td>
* <td style="text-align: center">1..3</td>
* <td>PDT</td>
- * <td>The <i>short specific non-location format</i>.
+ * <td>Time zone. The <i>short specific non-location format</i>.
* Where that is unavailable, falls back to the <i>short localized GMT format</i> ("O").</td>
* </tr>
* <tr>
@@ -466,43 +265,10 @@ import com.ibm.icu.util.UResourceBundle;
* Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO").</td>
* </tr>
* <tr>
- * <td rowspan="3" style="text-align: center">Z</td>
- * <td style="text-align: center">1..3</td>
- * <td>-0800</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * The format is equivalent to RFC 822 zone format (when optional seconds field is absent).
- * This is equivalent to the "xxxx" specifier.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>GMT-8:00</td>
- * <td>The <i>long localized GMT format</i>.
- * This is equivalent to the "OOOO" specifier.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.
- * This is equivalent to the "XXXXX" specifier.</td>
- * </tr>
- * <tr>
- * <td rowspan="2" style="text-align: center">O</td>
- * <td style="text-align: center">1</td>
- * <td>GMT-8</td>
- * <td>The <i>short localized GMT format</i>.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>GMT-08:00</td>
- * <td>The <i>long localized GMT format</i>.</td>
- * </tr>
- * <tr>
* <td rowspan="2" style="text-align: center">v</td>
* <td style="text-align: center">1</td>
* <td>PT</td>
- * <td>The <i>short generic non-location format</i>.
+ * <td>Time zone. The <i>short generic non-location format</i>.
* Where that is unavailable, falls back to the <i>generic location format</i> ("VVVV"),
* then the <i>short localized GMT format</i> as the final fallback.</td>
* </tr>
@@ -512,109 +278,6 @@ import com.ibm.icu.util.UResourceBundle;
* <td>The <i>long generic non-location format</i>.
* Where that is unavailable, falls back to <i>generic location format</i> ("VVVV").
* </tr>
- * <tr>
- * <td rowspan="4" style="text-align: center">V</td>
- * <td style="text-align: center">1</td>
- * <td>uslax</td>
- * <td>The short time zone ID.
- * Where that is unavailable, the special short time zone ID <i>unk</i> (Unknown Zone) is used.<br>
- * <i><b>Note</b>: This specifier was originally used for a variant of the short specific non-location format,
- * but it was deprecated in the later version of the LDML specification. In CLDR 23/ICU 51, the definition of
- * the specifier was changed to designate a short time zone ID.</i></td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>America/Los_Angeles</td>
- * <td>The long time zone ID.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Los Angeles</td>
- * <td>The exemplar city (location) for the time zone.
- * Where that is unavailable, the localized exemplar city name for the special zone <i>Etc/Unknown</i> is used
- * as the fallback (for example, "Unknown City"). </td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Los Angeles Time</td>
- * <td>The <i>generic location format</i>.
- * Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO";
- * Note: Fallback is only necessary with a GMT-style Time Zone ID, like Etc/GMT-830.)<br>
- * This is especially useful when presenting possible timezone choices for user selection,
- * since the naming is more uniform than the "v" format.</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">X</td>
- * <td style="text-align: center">1</td>
- * <td>-08<br>
- * +0530<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours field and optional minutes field.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>-0800<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours and minutes fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>-08:00<br>
- * Z</td>
- * <td>The <i>ISO8601 extended format</i> with hours and minutes fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>-0800<br>
- * -075258<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58<br>
- * Z</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">x</td>
- * <td style="text-align: center">1</td>
- * <td>-08<br>
- * +0530</td>
- * <td>The <i>ISO8601 basic format</i> with hours field and optional minutes field.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>-0800</td>
- * <td>The <i>ISO8601 basic format</i> with hours and minutes fields.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>-08:00</td>
- * <td>The <i>ISO8601 extended format</i> with hours and minutes fields.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>-0800<br>
- * -075258</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)</td>
- * </tr>
* </table>
*
* </blockquote>
@@ -3941,7 +3604,7 @@ public class SimpleDateFormat extends DateFormat {
nDigits--;
}
pos.setIndex(oldPos + maxDigits);
- number = Integer.valueOf((int)val);
+ number = (int) val;
}
}
return number;
@@ -4640,8 +4303,7 @@ public class SimpleDateFormat extends DateFormat {
* @stable ICU 54
*/
public NumberFormat getNumberFormat(char field) {
- Character ovrField;
- ovrField = Character.valueOf(field);
+ Character ovrField = field;
if (overrideMap != null && overrideMap.containsKey(ovrField)) {
String nsName = overrideMap.get(ovrField).toString();
NumberFormat nf = numberFormatters.get(nsName);
@@ -4687,7 +4349,7 @@ public class SimpleDateFormat extends DateFormat {
fullOverride = true;
} else { // Field specific override string such as "y=hebrew"
nsName = currentString.substring(equalSignPosition+1);
- ovrField = Character.valueOf(currentString.charAt(0));
+ ovrField = currentString.charAt(0);
overrideMap.put(ovrField,nsName);
fullOverride = false;
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/SimplePersonName.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/SimplePersonName.java
index 59163667e..2e700f13e 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/SimplePersonName.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/SimplePersonName.java
@@ -18,13 +18,13 @@ import java.util.TreeSet;
* A caller can store both raw field values (such as "given") and modified field values (such as "given-informal")
* in a SimplePersonName. But beyond storing and returning modified field values provided to it by the caller,
* SimplePersonName relies on the PersonNameFormatter's default handling of field modifiers.
- * @draft ICU 73
+ * @stable ICU 73
*/
public class SimplePersonName implements PersonName {
/**
* A utility class for constructing a SimplePersonName. Use SimplePersonName.builder()
* to get a new Builder instance.
- * @draft ICU 73
+ * @stable ICU 73
*/
public static class Builder {
/**
@@ -32,7 +32,7 @@ public class SimplePersonName implements PersonName {
* @param locale The locale for the new name object. Can be null, which indicates the
* name's locale is unknown.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder setLocale(Locale locale) {
this.locale = locale;
@@ -43,7 +43,7 @@ public class SimplePersonName implements PersonName {
* Set the preferred order for the new name object.
* @param preferredOrder The preferred order for the new name object.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder setPreferredOrder(PreferredOrder preferredOrder) {
this.preferredOrder = preferredOrder;
@@ -57,7 +57,7 @@ public class SimplePersonName implements PersonName {
* to this field value. May be null, which is the same as the empty set.
* @param value The value for this field.
* @return This builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public Builder addField(NameField field,
Collection<FieldModifier> modifiers,
@@ -86,7 +86,7 @@ public class SimplePersonName implements PersonName {
/**
* Returns a SimplePersonName with the field values and name locale that were passed to this builder.
* @return A SimplePersonName with the field values and name locale that were passed to this builder.
- * @draft ICU 73
+ * @stable ICU 73
*/
public SimplePersonName build() {
// special-case code for the "surname" field -- if it isn't specified, but "surname-prefix" and
@@ -122,7 +122,7 @@ public class SimplePersonName implements PersonName {
/**
* Returns a Builder object that can be used to construct a new SimplePersonName object.
* @return A Builder object that can be used to construct a new SimplePersonName object.
- * @draft ICU 73
+ * @stable ICU 73
*/
public static Builder builder() {
return new Builder();
@@ -140,7 +140,7 @@ public class SimplePersonName implements PersonName {
/**
* Returns the locale of the name-- that is, the language or country of origin for the person being named.
* @return The name's locale, or null if it's unknown.
- * @draft ICU 73
+ * @stable ICU 73
*/
@Override
public Locale getNameLocale() {
@@ -151,7 +151,7 @@ public class SimplePersonName implements PersonName {
* Returns the preferred field order for the name. This will be DEFAULT, unless the caller sets it to something
* else using the builder.
* @return The name's preferred field order.
- * @draft ICU 73
+ * @stable ICU 73
*/
@Override
public PreferredOrder getPreferredOrder() { return preferredOrder; }
@@ -167,7 +167,7 @@ public class SimplePersonName implements PersonName {
* was provided at construction time.
* @return The value of the requested field, optionally modified by some or all of the requested modifiers, or
* null if the requested field isn't present in the name.
- * @draft ICU 73
+ * @stable ICU 73
*/
@Override
public String getFieldValue(NameField nameField, Set<FieldModifier> modifiers) {
@@ -254,4 +254,4 @@ public class SimplePersonName implements PersonName {
private final Locale nameLocale;
private final PreferredOrder preferredOrder;
private final Map<String, String> fieldValues;
-} \ No newline at end of file
+}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/SpoofChecker.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/SpoofChecker.java
index f0e38d8b3..7b7e0ac1b 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/SpoofChecker.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/SpoofChecker.java
@@ -35,6 +35,7 @@ import com.ibm.icu.impl.ICUBinary;
import com.ibm.icu.impl.ICUBinary.Authenticate;
import com.ibm.icu.impl.Utility;
import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacter.IdentifierType;
import com.ibm.icu.lang.UCharacterCategory;
import com.ibm.icu.lang.UProperty;
import com.ibm.icu.lang.UScript;
@@ -335,97 +336,20 @@ public class SpoofChecker {
*
* @stable ICU 58
*/
- public static final UnicodeSet INCLUSION = new UnicodeSet(
- "['\\-.\\:\\u00B7\\u0375\\u058A\\u05F3\\u05F4\\u06FD\\u06FE\\u0F0B\\u2010"
- + "\\u2019\\u2027\\u30A0\\u30FB]"
- ).freeze();
- // Note: data from IdentifierStatus.txt & IdentifierType.txt
- // There is tooling to generate this constant in the unicodetools project:
- // org.unicode.text.tools.RecommendedSetGenerator
- // It will print the Java and C++ code to the console for easy copy-paste into this file.
+ public static final UnicodeSet INCLUSION =
+ new UnicodeSet().
+ applyIntPropertyValue(UProperty.IDENTIFIER_TYPE, IdentifierType.INCLUSION.ordinal()).
+ freeze();
/**
* Security Profile constant from UTS 39 for use in {@link SpoofChecker.Builder#setAllowedChars}.
*
* @stable ICU 58
*/
- public static final UnicodeSet RECOMMENDED = new UnicodeSet(
- "[0-9A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u0131\\u0134-\\u013E"
- + "\\u0141-\\u0148\\u014A-\\u017E\\u018F\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-"
- + "\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B\\u021E"
- + "\\u021F\\u0226-\\u0233\\u0259\\u02BB\\u02BC\\u02EC\\u0300-\\u0304\\u0306-"
- + "\\u030C\\u030F-\\u0311\\u0313\\u0314\\u031B\\u0323-\\u0328\\u032D\\u032E"
- + "\\u0330\\u0331\\u0335\\u0338\\u0339\\u0342\\u0345\\u037B-\\u037D\\u0386"
- + "\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03CE\\u03FC-\\u045F\\u048A-"
- + "\\u04FF\\u0510-\\u0529\\u052E\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0586"
- + "\\u05B4\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u063F\\u0641-\\u0655\\u0660-"
- + "\\u0669\\u0670-\\u0672\\u0674\\u0679-\\u068D\\u068F-\\u06A0\\u06A2-\\u06D3"
- + "\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0750-\\u07B1\\u0870-\\u0887"
- + "\\u0889-\\u088E\\u08A0-\\u08AC\\u08B2\\u08B5-\\u08C9\\u0901-\\u094D\\u094F"
- + "\\u0950\\u0956\\u0957\\u0960-\\u0963\\u0966-\\u096F\\u0971-\\u0977\\u0979-"
- + "\\u097F\\u0981-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-"
- + "\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE"
- + "\\u09D7\\u09E0-\\u09E3\\u09E6-\\u09F1\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A"
- + "\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A35\\u0A38\\u0A39"
- + "\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A5C\\u0A66-\\u0A74"
- + "\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0"
- + "\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD"
- + "\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B05-"
- + "\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-"
- + "\\u0B39\\u0B3C-\\u0B43\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5F-"
- + "\\u0B61\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90"
- + "\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-"
- + "\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0"
- + "\\u0BD7\\u0BE6-\\u0BEF\\u0C01-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-"
- + "\\u0C33\\u0C35-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55"
- + "\\u0C56\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C80\\u0C82\\u0C83\\u0C85-"
- + "\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-"
- + "\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CE0-\\u0CE3"
- + "\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-"
- + "\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D43\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-"
- + "\\u0D57\\u0D60\\u0D61\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-"
- + "\\u0D8E\\u0D91-\\u0D96\\u0D9A-\\u0DA5\\u0DA7-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD"
- + "\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDE\\u0DF2\\u0E01-"
- + "\\u0E32\\u0E34-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84"
- + "\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB2\\u0EB4-\\u0EBD\\u0EC0-"
- + "\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDE\\u0EDF\\u0F00\\u0F20-"
- + "\\u0F29\\u0F35\\u0F37\\u0F3E-\\u0F42\\u0F44-\\u0F47\\u0F49-\\u0F4C\\u0F4E-"
- + "\\u0F51\\u0F53-\\u0F56\\u0F58-\\u0F5B\\u0F5D-\\u0F68\\u0F6A-\\u0F6C\\u0F71"
- + "\\u0F72\\u0F74\\u0F7A-\\u0F80\\u0F82-\\u0F84\\u0F86-\\u0F92\\u0F94-\\u0F97"
- + "\\u0F99-\\u0F9C\\u0F9E-\\u0FA1\\u0FA3-\\u0FA6\\u0FA8-\\u0FAB\\u0FAD-\\u0FB8"
- + "\\u0FBA-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10C7\\u10CD\\u10D0-"
- + "\\u10F0\\u10F7-\\u10FA\\u10FD-\\u10FF\\u1200-\\u1248\\u124A-\\u124D\\u1250-"
- + "\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0"
- + "\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-"
- + "\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u1780-"
- + "\\u17A2\\u17A5-\\u17A7\\u17A9-\\u17B3\\u17B6-\\u17CD\\u17D0\\u17D2\\u17D7"
- + "\\u17DC\\u17E0-\\u17E9\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00-\\u1E99\\u1E9E"
- + "\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D"
- + "\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F70\\u1F72\\u1F74\\u1F76"
- + "\\u1F78\\u1F7A\\u1F7C\\u1F80-\\u1FB4\\u1FB6-\\u1FBA\\u1FBC\\u1FC2-\\u1FC4"
- + "\\u1FC6-\\u1FC8\\u1FCA\\u1FCC\\u1FD0-\\u1FD2\\u1FD6-\\u1FDA\\u1FE0-\\u1FE2"
- + "\\u1FE4-\\u1FEA\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FF8\\u1FFA\\u1FFC\\u2D27"
- + "\\u2D2D\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-"
- + "\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-"
- + "\\u3007\\u3041-\\u3096\\u3099\\u309A\\u309D\\u309E\\u30A1-\\u30FA\\u30FC-"
- + "\\u30FE\\u3105-\\u312D\\u312F\\u31A0-\\u31BF\\u3400-\\u4DBF\\u4E00-\\u9FFF"
- + "\\uA67F\\uA717-\\uA71F\\uA788\\uA78D\\uA792\\uA793\\uA7AA\\uA7C0-\\uA7CA"
- + "\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA9E7-\\uA9FE\\uAA60-\\uAA76\\uAA7A-"
- + "\\uAA7F\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-"
- + "\\uAB2E\\uAB66\\uAB67\\uAC00-\\uD7A3\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14"
- + "\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29\\U00011301\\U00011303"
- + "\\U0001133B\\U0001133C\\U00016FF0\\U00016FF1\\U0001B11F-\\U0001B122"
- + "\\U0001B132\\U0001B150-\\U0001B152\\U0001B155\\U0001B164-\\U0001B167"
- + "\\U0001DF00-\\U0001DF1E\\U0001DF25-\\U0001DF2A\\U0001E08F\\U0001E7E0-"
- + "\\U0001E7E6\\U0001E7E8-\\U0001E7EB\\U0001E7ED\\U0001E7EE\\U0001E7F0-"
- + "\\U0001E7FE\\U00020000-\\U0002A6DF\\U0002A700-\\U0002B739\\U0002B740-"
- + "\\U0002B81D\\U0002B820-\\U0002CEA1\\U0002CEB0-\\U0002EBE0\\U0002EBF0-"
- + "\\U0002EE5D\\U00030000-\\U0003134A\\U00031350-\\U000323AF]"
- ).freeze();
- // Note: data from IdentifierStatus.txt & IdentifierType.txt
- // There is tooling to generate this constant in the unicodetools project:
- // org.unicode.text.tools.RecommendedSetGenerator
- // It will print the Java and C++ code to the console for easy copy-paste into this file.
+ public static final UnicodeSet RECOMMENDED =
+ new UnicodeSet().
+ applyIntPropertyValue(UProperty.IDENTIFIER_TYPE, IdentifierType.RECOMMENDED.ordinal()).
+ freeze();
/**
* Constants for the kinds of checks that USpoofChecker can perform. These values are used both to select the set of
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/TimeUnitFormat.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/TimeUnitFormat.java
index 32c74233b..ea3421d8d 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/TimeUnitFormat.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/TimeUnitFormat.java
@@ -307,15 +307,15 @@ public class TimeUnitFormat extends MeasureFormat {
if (resultNumber == null && longestParseDistance != 0) {
// set the number using plurrual count
if (countOfLongestMatch.equals("zero")) {
- resultNumber = Integer.valueOf(0);
+ resultNumber = 0;
} else if (countOfLongestMatch.equals("one")) {
- resultNumber = Integer.valueOf(1);
+ resultNumber = 1;
} else if (countOfLongestMatch.equals("two")) {
- resultNumber = Integer.valueOf(2);
+ resultNumber = 2;
} else {
// should not happen.
// TODO: how to handle?
- resultNumber = Integer.valueOf(3);
+ resultNumber = 3;
}
}
if (longestParseDistance == 0) {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/UnicodeSet.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/UnicodeSet.java
index 5a7fba44d..cc97bbc84 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/text/UnicodeSet.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/UnicodeSet.java
@@ -26,6 +26,7 @@ import com.ibm.icu.impl.RuleCharacterIterator;
import com.ibm.icu.impl.SortedSetRelation;
import com.ibm.icu.impl.StringRange;
import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.UCharacterProperty;
import com.ibm.icu.impl.UPropertyAliases;
import com.ibm.icu.impl.UnicodeSetStringSpan;
import com.ibm.icu.impl.Utility;
@@ -3376,6 +3377,15 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
}
}
+ private static final class IdentifierTypeFilter implements Filter {
+ int idType;
+ IdentifierTypeFilter(int idType) { this.idType = idType; }
+ @Override
+ public boolean contains(int c) {
+ return UCharacterProperty.INSTANCE.hasIDType(c, idType);
+ }
+ }
+
// VersionInfo for unassigned characters
private static final VersionInfo NO_VERSION = VersionInfo.getInstance(0, 0, 0, 0);
@@ -3494,6 +3504,9 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
} else if (prop == UProperty.SCRIPT_EXTENSIONS) {
UnicodeSet inclusions = CharacterPropertiesImpl.getInclusionsForProperty(prop);
applyFilter(new ScriptExtensionsFilter(value), inclusions);
+ } else if (prop == UProperty.IDENTIFIER_TYPE) {
+ UnicodeSet inclusions = CharacterPropertiesImpl.getInclusionsForProperty(prop);
+ applyFilter(new IdentifierTypeFilter(value), inclusions);
} else if (0 <= prop && prop < UProperty.BINARY_LIMIT) {
if (value == 0 || value == 1) {
set(CharacterProperties.getBinaryPropertySet(prop));
@@ -3642,6 +3655,10 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
v = UCharacter.getPropertyValueEnum(UProperty.SCRIPT, valueAlias);
// fall through to calling applyIntPropertyValue()
break;
+ case UProperty.IDENTIFIER_TYPE:
+ v = UCharacter.getPropertyValueEnum(p, valueAlias);
+ // fall through to calling applyIntPropertyValue()
+ break;
default:
// p is a non-binary, non-enumerated property that we
// don't support (yet).
@@ -3939,7 +3956,7 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
* constructors, applyPattern(), and closeOver().
* It can be ORed together with other, unrelated options.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
public static final int SIMPLE_CASE_INSENSITIVE = 6;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/BuddhistCalendar.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/BuddhistCalendar.java
index 207386097..79be6f452 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/BuddhistCalendar.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/BuddhistCalendar.java
@@ -244,4 +244,15 @@ public class BuddhistCalendar extends GregorianCalendar {
public String getType() {
return "buddhist";
}
+
+ /**
+ * {@inheritDoc}
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+ @Override
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return false;
+ }
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/Calendar.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/Calendar.java
index b8ddd7ff0..a79d4a351 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/Calendar.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/Calendar.java
@@ -1860,10 +1860,13 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
case ISO8601:
// Only differs week numbering rule from Gregorian
cal = new GregorianCalendar(zone, locale);
- String type = locale.getUnicodeLocaleType("fw");
- // Only set fw to Monday for ISO8601 if there aer no fw keyword.
- // If there is a fw keyword, the Calendar constructor already set it to the fw value.
- if (locale.getKeywordValue("fw") == null) {
+ // Based on UTS35 "First Day Overrides"
+ // https://unicode.org/reports/tr35/tr35-dates.html#first-day-overrides
+ // Only set fw to Monday for ISO8601 if there are no fw nor rg keywords.
+ // If there is a fw or rg keywords, the Calendar constructor already set it
+ // to the fw value or based on the rg value.
+ if (locale.getUnicodeLocaleType("fw") == null &&
+ locale.getUnicodeLocaleType("rg") == null) {
cal.setFirstDayOfWeek(MONDAY);
}
cal.setMinimalDaysInFirstWeek(4);
@@ -3073,14 +3076,9 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
// * Until we have new API per #9393, we temporarily hardcode knowledge of
// which calendars have era 0 years that go backwards.
{
- boolean era0WithYearsThatGoBackwards = false;
int era = get(ERA);
- if (era == 0) {
- String calType = getType();
- if (calType.equals("gregorian") || calType.equals("roc") || calType.equals("coptic")) {
- amount = -amount;
- era0WithYearsThatGoBackwards = true;
- }
+ if (era == 0 && isEra0CountingBackward()) {
+ amount = -amount;
}
int newYear = internalGet(field) + amount;
if (era > 0 || newYear >= 1) {
@@ -3099,7 +3097,7 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
// else we are in era 0 with newYear < 1;
// calendars with years that go backwards must pin the year value at 0,
// other calendars can have years < 0 in era 0
- } else if (era0WithYearsThatGoBackwards) {
+ } else if (era == 0 && isEra0CountingBackward()) {
newYear = 1;
}
set(field, newYear);
@@ -3416,11 +3414,8 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
// also handle YEAR the same way.
{
int era = get(ERA);
- if (era == 0) {
- String calType = getType();
- if (calType.equals("gregorian") || calType.equals("roc") || calType.equals("coptic")) {
- amount = -amount;
- }
+ if (era == 0 && isEra0CountingBackward()) {
+ amount = -amount;
}
}
// Fall through into standard handling
@@ -4149,6 +4144,17 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
}
/**
+ * The year in this calendar is counting from 1 backward if the era is 0.
+ * @return The year in era 0 of this calendar is counting backward from 1.
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return false;
+ }
+
+ /**
* Returns the week number of a day, within a period. This may be the week number in
* a year or the week number in a month. Usually this will be a value &gt;= 1, but if
* some initial days of the period are excluded from week 1, because
@@ -5912,12 +5918,12 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
}
if (mid == lower) {
- return Long.valueOf(upper);
+ return upper;
}
midOffset = tz.getOffset(mid);
if (midOffset != upperOffset) {
if (onUnitTime) {
- return Long.valueOf(upper);
+ return upper;
}
return findPreviousZoneTransitionTime(tz, upperOffset, upper, mid);
}
@@ -6286,6 +6292,10 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
internalSet(EXTENDED_YEAR, year);
+ if (year > Long.MAX_VALUE / 400) {
+ throw new IllegalArgumentException("year is too large");
+ }
+
int month = useMonth ? internalGetMonth(getDefaultMonthInYear(year)) : 0;
// Get the Julian day of the day BEFORE the start of this year.
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/ChineseCalendar.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/ChineseCalendar.java
index c21f02833..d136b9d7f 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/ChineseCalendar.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/ChineseCalendar.java
@@ -111,12 +111,6 @@ public class ChineseCalendar extends Calendar {
private TimeZone zoneAstro;
/**
- * We have one instance per object, and we don't synchronize it because
- * Calendar doesn't support multithreaded execution in the first place.
- */
- private transient CalendarAstronomer astro = new CalendarAstronomer();
-
- /**
* Cache that maps Gregorian year to local days of winter solstice.
* @see #winterSolstice
*/
@@ -709,10 +703,9 @@ public class ChineseCalendar extends Calendar {
// PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
long ms = daysToMillis(computeGregorianMonthStart(gyear, DECEMBER) +
1 - EPOCH_JULIAN_DAY);
- astro.setTime(ms);
// Winter solstice is 270 degrees solar longitude aka Dongzhi
- long solarLong = astro.getSunTime(CalendarAstronomer.WINTER_SOLSTICE,
+ long solarLong = (new CalendarAstronomer(ms)).getSunTime(CalendarAstronomer.WINTER_SOLSTICE,
true);
cacheValue = millisToDays(solarLong);
winterSolsticeCache.put(gyear, cacheValue);
@@ -730,9 +723,7 @@ public class ChineseCalendar extends Calendar {
* new moon after or before <code>days</code>
*/
private int newMoonNear(int days, boolean after) {
-
- astro.setTime(daysToMillis(days));
- long newMoon = astro.getMoonTime(CalendarAstronomer.NEW_MOON, after);
+ long newMoon = (new CalendarAstronomer(daysToMillis(days))).getMoonTime(CalendarAstronomer.NEW_MOON, after);
return millisToDays(newMoon);
}
@@ -755,11 +746,8 @@ public class ChineseCalendar extends Calendar {
* @param days days after January 1, 1970 0:00 Asia/Shanghai
*/
private int majorSolarTerm(int days) {
-
- astro.setTime(daysToMillis(days));
-
// Compute (floor(solarLongitude / (pi/6)) + 2) % 12
- int term = ((int) Math.floor(6 * astro.getSunLongitude() / Math.PI) + 2) % 12;
+ int term = ((int) Math.floor(6 * (new CalendarAstronomer(daysToMillis(days))).getSunLongitude() / Math.PI) + 2) % 12;
if (term < 1) {
term += 12;
}
@@ -1055,7 +1043,6 @@ public class ChineseCalendar extends Calendar {
stream.defaultReadObject();
/* set up the transient caches... */
- astro = new CalendarAstronomer();
winterSolsticeCache = new CalendarCache();
newYearCache = new CalendarCache();
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/CopticCalendar.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/CopticCalendar.java
index 9dbcd6b42..b6eae0fd6 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/CopticCalendar.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/CopticCalendar.java
@@ -249,6 +249,17 @@ public final class CopticCalendar extends CECalendar
*/
@Override
@Deprecated
+ protected boolean isEra0CountingBackward() {
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+ @Override
+ @Deprecated
protected int handleGetExtendedYear() {
int eyear;
if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/CurrencyAmount.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/CurrencyAmount.java
index bdccc81ad..c993691d9 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/CurrencyAmount.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/CurrencyAmount.java
@@ -41,7 +41,7 @@ public class CurrencyAmount extends Measure {
* @stable ICU 3.0
*/
public CurrencyAmount(double number, Currency currency) {
- super(new Double(number), currency);
+ super(number, currency);
}
/**
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/GregorianCalendar.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/GregorianCalendar.java
index 70e36a868..9219985eb 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/GregorianCalendar.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/GregorianCalendar.java
@@ -896,6 +896,17 @@ public class GregorianCalendar extends Calendar {
return "gregorian";
}
+ /**
+ * {@inheritDoc}
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+ @Override
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return true;
+ }
+
/*
private static CalendarFactory factory;
public static CalendarFactory factory() {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/HebrewCalendar.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/HebrewCalendar.java
index d600a1cb5..c3bf4a5a8 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/HebrewCalendar.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/HebrewCalendar.java
@@ -267,6 +267,8 @@ public class HebrewCalendar extends Calendar {
{ 383, 384, 385 }, // Elul
};
+ private static final int MONTHS_IN_CYCLE = 235;
+ private static final int YEARS_IN_CYCLE = 19;
//-------------------------------------------------------------------------
// Data Members...
//-------------------------------------------------------------------------
@@ -615,7 +617,7 @@ public class HebrewCalendar extends Calendar {
if (day == CalendarCache.EMPTY) {
// # of months before year
- int months = (int)floorDivide((235 * (long)year - 234), 19);
+ int months = (int)floorDivide((MONTHS_IN_CYCLE * (long)year - (MONTHS_IN_CYCLE-1)), YEARS_IN_CYCLE);
long frac = months * MONTH_FRACT + BAHARAD; // Fractional part of day #
day = months * 29 + (frac / DAY_PARTS); // Whole # part of calculation
@@ -698,7 +700,7 @@ public class HebrewCalendar extends Calendar {
@Deprecated
public static boolean isLeapYear(int year) {
//return (year * 12 + 17) % 19 >= 12;
- int x = (year*12 + 17) % 19;
+ int x = (year*12 + 17) % YEARS_IN_CYCLE;
return x >= ((x < 0) ? -7 : 12);
}
@@ -730,6 +732,10 @@ public class HebrewCalendar extends Calendar {
// on the year) but since we _always_ number from 0..12, and
// the leap year determines whether or not month 5 (Adar 1)
// is present, we allow 0..12 in any given year.
+ if (month <= -MONTHS_IN_CYCLE || MONTHS_IN_CYCLE <= month) {
+ extendedYear += (month / MONTHS_IN_CYCLE) * YEARS_IN_CYCLE;
+ month = month % MONTHS_IN_CYCLE;
+ }
while (month < 0) {
month += monthsInYear(--extendedYear);
}
@@ -807,7 +813,7 @@ public class HebrewCalendar extends Calendar {
protected void handleComputeFields(int julianDay) {
long d = julianDay - 347997;
long m = floorDivide((d * DAY_PARTS), MONTH_PARTS); // Months (approx)
- int year = (int)(floorDivide((19 * m + 234), 235) + 1); // Years (approx)
+ int year = (int)(floorDivide((YEARS_IN_CYCLE * m + (MONTHS_IN_CYCLE-1)), MONTHS_IN_CYCLE) + 1); // Years (approx)
long ys = startOfYear(year); // 1st day of year
int dayOfYear = (int)(d - ys);
@@ -874,6 +880,10 @@ public class HebrewCalendar extends Calendar {
// on the year) but since we _always_ number from 0..12, and
// the leap year determines whether or not month 5 (Adar 1)
// is present, we allow 0..12 in any given year.
+ if (month <= -MONTHS_IN_CYCLE || MONTHS_IN_CYCLE <= month) {
+ eyear += (month / MONTHS_IN_CYCLE) * YEARS_IN_CYCLE;
+ month = month % MONTHS_IN_CYCLE;
+ }
while (month < 0) {
month += monthsInYear(--eyear);
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/IslamicCalendar.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/IslamicCalendar.java
index 14a507ecb..32dc33285 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/IslamicCalendar.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/IslamicCalendar.java
@@ -11,6 +11,7 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Date;
import java.util.Locale;
+import java.util.function.IntConsumer;
import com.ibm.icu.impl.CalendarAstronomer;
import com.ibm.icu.impl.CalendarCache;
@@ -171,13 +172,14 @@ public class IslamicCalendar extends Calendar {
private static final long HIJRA_MILLIS = -42521587200000L; // 7/16/622 AD 00:00
/**
- * Friday EPOC
+ * Friday EPOCH
*/
- private static final long CIVIL_EPOC = 1948440; // CE 622 July 16 Friday (Julian calendar) / CE 622 July 19 (Gregorian calendar)
+ private static final long CIVIL_EPOCH = 1948440; // CE 622 July 16 Friday (Julian calendar) / CE 622 July 19 (Gregorian calendar)
+ //
/**
- * Thursday EPOC
+ * Thursday EPOCH
*/
- private static final long ASTRONOMICAL_EPOC = 1948439; // CE 622 July 15 Thursday (Julian calendar)
+ private static final long ASTRONOMICAL_EPOCH = 1948439; // CE 622 July 15 Thursday (Julian calendar)
//-------------------------------------------------------------------------
// Constructors...
@@ -319,6 +321,301 @@ public class IslamicCalendar extends Calendar {
this.set(Calendar.SECOND, second);
}
+ // Private interface for different Islamic calendar algorithms.
+ private interface Algorithm {
+ /**
+ * Returns <code>true</code> if this object is using the fixed-cycle civil
+ * calendar, or <code>false</code> if using the religious, astronomical
+ * calendar.
+ */
+ public boolean isCivil();
+
+ /**
+ * Return the type the algorithm implement.
+ */
+ public CalculationType getType();
+
+ /**
+ * Return the epoch used by this algorithm.
+ */
+ public long epoch();
+
+ /**
+ * Return the day # on which the given year starts. Days are counted
+ * from the Hijri epoch, origin 0.
+ *
+ * @param year The hijri year
+ */
+ public long yearStart(int year);
+
+ /**
+ * Return the day # on which the given month starts. Days are counted
+ * from the Hijri epoch, origin 0.
+ *
+ * @param year The hijri year
+ * @param month The hijri month, 0-based
+ */
+ public long monthStart(int year, int month);
+
+ /**
+ * Return the length (in days) of the given month.
+ *
+ * @param year The hijri year
+ * @param month The hijri month, 0-based
+ */
+ public int monthLength(int year, int month);
+
+ /**
+ * Return the length (in days) of the given year.
+ *
+ * @param year The hijri year
+ */
+ public int yearLength(int year);
+
+ /**
+ * Compute the year, month, dayOfMonth, and dayOfYear of the given julian days
+ * and current time and feed the caculuated results to the consumers.
+ * @param julianDays
+ * @param current the time in millisecond.
+ * @param yearConsumer consumer to take the year result.
+ * @param monthConsumer consumer to take the month result.
+ * @param dayOfMonthConsumer consumer to take the dayOfMonth result.
+ * @param dayOfYearConsumer consumer to take the dayOfYear result.
+ */
+ public void compute(long julianDays, long current,
+ IntConsumer yearConsumer, IntConsumer monthConsumer,
+ IntConsumer dayOfMonthConsumer, IntConsumer dayOfYearConsumer);
+ };
+
+ /**
+ * Algorithm which implement the rules for CalculationType.ISLAMIC.
+ */
+ static private class IslamicAlgorithm implements Algorithm {
+ public boolean isCivil() {
+ return false;
+ }
+ public CalculationType getType() {
+ return CalculationType.ISLAMIC;
+ }
+ public long epoch() {
+ return CIVIL_EPOCH;
+ }
+ public long yearStart(int year) {
+ return monthStart(year, 0);
+ }
+ public long monthStart(int year, int month) {
+ // Normalize year/month in case month is outside the normal bounds, which may occur
+ // in the case of an add operation
+ return trueMonthStart(12*((year + month / 12)-1) + (month % 12));
+ }
+ public int monthLength(int year, int month) {
+ month += 12*(year-1);
+ return (int)(trueMonthStart(month+1) - trueMonthStart(month));
+ }
+ public int yearLength(int year) {
+ int month = 12*(year-1);
+ return (int)(trueMonthStart(month + 12) - trueMonthStart(month));
+ }
+ public void compute(long julianDays, long current,
+ IntConsumer yearConsumer, IntConsumer monthConsumer,
+ IntConsumer dayOfMonthConsumer, IntConsumer dayOfYearConsumer) {
+ long days = julianDays - epoch();
+ // Guess at the number of elapsed full months since the epoch
+ int month = (int)Math.floor(days / CalendarAstronomer.SYNODIC_MONTH);
+ long monthStart = (long)Math.floor(month * CalendarAstronomer.SYNODIC_MONTH - 1);
+ if (days - monthStart >= 25 && moonAge(current) > 0) {
+ // If we're near the end of the month, assume next month and search backwards
+ month++;
+ }
+ // Find out the last time that the new moon was actually visible at this longitude
+ // This returns midnight the night that the moon was visible at sunset.
+ while ((monthStart = trueMonthStart(month)) > days) {
+ // If it was after the date in question, back up a month and try again
+ month--;
+ }
+ int year = month >= 0 ? ((month / 12) + 1) : ((month + 1 ) / 12);
+ month = ((month % 12) + 12 ) % 12;
+ yearConsumer.accept(year);
+ monthConsumer.accept(month);
+ dayOfMonthConsumer.accept((int)(days - monthStart(year, month)) + 1);
+ dayOfYearConsumer.accept((int)(days - yearStart(year) + 1));
+ }
+ };
+
+ /**
+ * Algorithm which implement the rules for CalculationType.ISLAMIC_CIVIL.
+ */
+ static private class CivilAlgorithm implements Algorithm {
+ public boolean isCivil() {
+ return true;
+ }
+ public CalculationType getType() {
+ return CalculationType.ISLAMIC_CIVIL;
+ }
+ public long epoch() {
+ return CIVIL_EPOCH;
+ }
+ public long yearStart(int year) {
+ return (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+ }
+ public long monthStart(int year, int month) {
+ // Normalize year/month in case month is outside the normal bounds, which may occur
+ // in the case of an add operation
+ return (long)Math.ceil(29.5*(month % 12)) + yearStart(year + month / 12);
+ }
+ public int monthLength(int year, int month) {
+ int length = 29;
+ if (month % 2 == 0) {
+ ++length;
+ }
+ if (month == DHU_AL_HIJJAH && civilLeapYear(year)) {
+ ++length;
+ }
+ return length;
+ }
+ public int yearLength(int year) {
+ return 354 + (civilLeapYear(year) ? 1 : 0);
+ }
+ public void compute(long julianDays, long current,
+ IntConsumer yearConsumer, IntConsumer monthConsumer,
+ IntConsumer dayOfMonthConsumer, IntConsumer dayOfYearConsumer) {
+ long days = julianDays - epoch();
+ // Use the civil calendar approximation, which is just arithmetic
+ int year = (int)Math.floor( (30 * days + 10646) / 10631.0 );
+ int month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
+ month = Math.min(month, 11);
+ yearConsumer.accept(year);
+ monthConsumer.accept(month);
+ dayOfMonthConsumer.accept((int)(days - monthStart(year, month)) + 1);
+ dayOfYearConsumer.accept((int)(days - yearStart(year) + 1));
+ }
+ };
+
+ /**
+ * Algorithm which implement the rules for CalculationType.ISLAMIC_TBLA.
+ * Mostly the same as CivilAlgorithm, except it return false for isCivil and use different
+ * epoch value.
+ */
+ static private class TBLAAlgorithm extends CivilAlgorithm {
+ public boolean isCivil() {
+ return false;
+ }
+ public CalculationType getType() {
+ return CalculationType.ISLAMIC_TBLA;
+ }
+ public long epoch() {
+ return ASTRONOMICAL_EPOCH;
+ }
+ };
+
+ /**
+ * Algorithm which implement the rules for CalculationType.ISLAMIC_UMALQURA.
+ */
+ static private class UmalquraAlgorithm implements Algorithm {
+ public boolean isCivil() {
+ return false;
+ }
+ public CalculationType getType() {
+ return CalculationType.ISLAMIC_UMALQURA;
+ }
+ public long epoch() {
+ return CIVIL_EPOCH;
+ }
+ public long yearStart(int year) {
+ if (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END) {
+ return CIVIL_ALGORITHM.yearStart(year);
+ }
+ int index = year - UMALQURA_YEAR_START;
+ // rounded least-squares fit of the dates previously calculated from UMALQURA_MONTHLENGTH iteration
+ int yrStartLinearEstimate = (int)((354.36720 * index) + 460322.05 + 0.5);
+ // need a slight correction to some
+ return yrStartLinearEstimate + UMALQURA_YEAR_START_ESTIMATE_FIX[index];
+ }
+ public long monthStart(int year, int month) {
+ // Normalize year/month in case month is outside the normal bounds, which may occur
+ // in the case of an add operation
+ year += month / 12;
+ month %= 12;
+ if (year < UMALQURA_YEAR_START) {
+ return CIVIL_ALGORITHM.monthStart(year, month);
+ }
+ long ms = yearStart(year);
+ for(int i=0; i< month; i++) {
+ ms+= monthLength(year, i);
+ }
+ return ms;
+ }
+ public int monthLength(int year, int month) {
+ if (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END) {
+ return CIVIL_ALGORITHM.monthLength(year, month);
+ }
+ int index = (year - UMALQURA_YEAR_START); // calculate year offset into bit map array
+ int mask = (0x01 << (11 - month)); // set mask for bit corresponding to month
+ if((UMALQURA_MONTHLENGTH[index] & mask) != 0) {
+ return 30;
+ }
+ return 29;
+ }
+ public int yearLength(int year) {
+ if (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END) {
+ return CIVIL_ALGORITHM.yearLength(year);
+ }
+ int length = 0;
+ for(int i = 0; i < 12; i++) {
+ length += monthLength(year, i);
+ }
+ return length;
+ }
+ public void compute(long julianDays, long current,
+ IntConsumer yearConsumer, IntConsumer monthConsumer,
+ IntConsumer dayOfMonthConsumer, IntConsumer dayOfYearConsumer) {
+ long days = julianDays - epoch();
+ if( days < yearStart(UMALQURA_YEAR_START)) {
+ CIVIL_ALGORITHM.compute(julianDays, current,
+ yearConsumer, monthConsumer, dayOfMonthConsumer, dayOfYearConsumer);
+ return;
+ }
+ // Estimate a value y which is closer to but not greater than the year.
+ // It is the inverse function of the logic inside yearStart() about the
+ // linear estimate.
+ int year = (int)((days - (460322.05 + 0.5)) / 354.36720) + UMALQURA_YEAR_START - 1;
+ int month = 0;
+ long monthStart;
+ long d = 1;
+ while (d > 0) {
+ year++;
+ d = days - yearStart(year) +1;
+ int yearLength = yearLength(year);
+ if (d == yearLength) {
+ month = 11;
+ break;
+ } else if (d < yearLength) {
+ int monthLen = monthLength(year, month);
+ for (month = 0; d > monthLen; monthLen = monthLength(year, ++month)) {
+ d -= monthLen;
+ }
+ break;
+ }
+ }
+ yearConsumer.accept(year);
+ monthConsumer.accept(month);
+ dayOfMonthConsumer.accept((int)(days - monthStart(year, month)) + 1);
+ dayOfYearConsumer.accept((int)(days - yearStart(year) + 1));
+ }
+ };
+
+ private static Algorithm ISLAMIC_ALGORITHM;
+ private static Algorithm CIVIL_ALGORITHM;
+ private static Algorithm TBLA_ALGORITHM;
+ private static Algorithm UMALQURA_ALGORITHM;
+
+ static {
+ ISLAMIC_ALGORITHM = new IslamicAlgorithm();
+ CIVIL_ALGORITHM = new CivilAlgorithm();
+ TBLA_ALGORITHM = new TBLAAlgorithm();
+ UMALQURA_ALGORITHM = new UmalquraAlgorithm();
+ };
+
/**
* Determines whether this object uses the fixed-cycle Islamic civil calendar
* or an approximation of the religious, astronomical calendar.
@@ -330,13 +627,12 @@ public class IslamicCalendar extends Calendar {
*/
public void setCivil(boolean beCivil)
{
- civil = beCivil;
-
if (beCivil && cType != CalculationType.ISLAMIC_CIVIL) {
// The fields of the calendar will become invalid, because the calendar
// rules are different
long m = getTimeInMillis();
cType = CalculationType.ISLAMIC_CIVIL;
+ algorithm = CIVIL_ALGORITHM;
clear();
setTimeInMillis(m);
} else if(!beCivil && cType != CalculationType.ISLAMIC) {
@@ -344,9 +640,11 @@ public class IslamicCalendar extends Calendar {
// rules are different
long m = getTimeInMillis();
cType = CalculationType.ISLAMIC;
+ algorithm = ISLAMIC_ALGORITHM;
clear();
setTimeInMillis(m);
}
+ civil = algorithm.isCivil();
}
/**
@@ -357,10 +655,7 @@ public class IslamicCalendar extends Calendar {
* @discouraged ICU 57 use getCalculationType() instead
*/
public boolean isCivil() {
- if(cType == CalculationType.ISLAMIC_CIVIL) {
- return true;
- }
- return false;
+ return algorithm.isCivil();
}
//-------------------------------------------------------------------------
@@ -587,51 +882,7 @@ public class IslamicCalendar extends Calendar {
* from the Hijri epoch, origin 0.
*/
private long yearStart(int year) {
- long ys = 0;
- if (cType == CalculationType.ISLAMIC_CIVIL
- || cType == CalculationType.ISLAMIC_TBLA
- || (cType == CalculationType.ISLAMIC_UMALQURA && (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END))) {
- ys = (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
- } else if(cType == CalculationType.ISLAMIC) {
- ys = trueMonthStart(12*(year-1));
- } else if(cType == CalculationType.ISLAMIC_UMALQURA){
- year -= UMALQURA_YEAR_START;
- // rounded least-squares fit of the dates previously calculated from UMALQURA_MONTHLENGTH iteration
- int yrStartLinearEstimate = (int)((354.36720 * year) + 460322.05 + 0.5);
- // need a slight correction to some
- ys = yrStartLinearEstimate + UMALQURA_YEAR_START_ESTIMATE_FIX[year];
- }
- return ys;
- }
-
- /**
- * Return the day # on which the given month starts. Days are counted
- * from the Hijri epoch, origin 0.
- *
- * @param year The hijri year
- * @param month The hijri month, 0-based
- */
- private long monthStart(int year, int month) {
- // Normalize year/month in case month is outside the normal bounds, which may occur
- // in the case of an add operation
- int realYear = year + month / 12;
- int realMonth = month % 12;
- long ms = 0;
- if (cType == CalculationType.ISLAMIC_CIVIL
- || cType == CalculationType.ISLAMIC_TBLA
- || (cType == CalculationType.ISLAMIC_UMALQURA && year < UMALQURA_YEAR_START )) {
- ms = (long)Math.ceil(29.5*realMonth)
- + (realYear-1)*354 + (long)Math.floor((3+11*realYear)/30.0);
- } else if(cType == CalculationType.ISLAMIC) {
- ms = trueMonthStart(12*(realYear-1) + realMonth);
- } else if(cType == CalculationType.ISLAMIC_UMALQURA) {
- ms = yearStart(year);
- for(int i=0; i< month; i++) {
- ms+= handleGetMonthLength(year, i);
- }
- }
-
- return ms;
+ return algorithm.yearStart(year);
}
/**
@@ -687,12 +938,7 @@ public class IslamicCalendar extends Calendar {
*/
static final double moonAge(long time)
{
- double age = 0;
-
- synchronized(astro) {
- astro.setTime(time);
- age = astro.getMoonAge();
- }
+ double age = (new CalendarAstronomer(time)).getMoonAge();
// Convert to degrees and normalize...
age = age * 180 / Math.PI;
if (age > 180) {
@@ -706,9 +952,6 @@ public class IslamicCalendar extends Calendar {
// Internal data....
//
- // And an Astronomer object for the moon age calculations
- private static CalendarAstronomer astro = new CalendarAstronomer();
-
private static CalendarCache cache = new CalendarCache();
/**
@@ -728,6 +971,8 @@ public class IslamicCalendar extends Calendar {
*/
private CalculationType cType = CalculationType.ISLAMIC_CIVIL;
+ private transient Algorithm algorithm = CIVIL_ALGORITHM;
+
//----------------------------------------------------------------------
// Calendar framework
//----------------------------------------------------------------------
@@ -741,32 +986,7 @@ public class IslamicCalendar extends Calendar {
*/
@Override
protected int handleGetMonthLength(int extendedYear, int month) {
-
- int length;
-
- if (cType == CalculationType.ISLAMIC_CIVIL
- || cType == CalculationType.ISLAMIC_TBLA
- || (cType == CalculationType.ISLAMIC_UMALQURA && (extendedYear < UMALQURA_YEAR_START || extendedYear > UMALQURA_YEAR_END) )) {
- length = 29 + (month+1) % 2;
- if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
- length++;
- }
- }
- else if (cType == CalculationType.ISLAMIC) {
- month = 12*(extendedYear-1) + month;
- length = (int)( trueMonthStart(month+1) - trueMonthStart(month) );
- }
- else { // cType == CalculationType.ISLAMIC_UMALQURA should be true at this point and not null.
- int idx = (extendedYear - UMALQURA_YEAR_START); // calculate year offset into bit map array
- int mask = (0x01 << (11 - month)); // set mask for bit corresponding to month
- if((UMALQURA_MONTHLENGTH[idx] & mask) == 0 ) {
- length = 29;
- }
- else {
- length = 30;
- }
- }
- return length;
+ return algorithm.monthLength(extendedYear, month);
}
/**
@@ -775,20 +995,7 @@ public class IslamicCalendar extends Calendar {
*/
@Override
protected int handleGetYearLength(int extendedYear) {
- int length =0;
- if (cType == CalculationType.ISLAMIC_CIVIL
- || cType == CalculationType.ISLAMIC_TBLA
- || (cType == CalculationType.ISLAMIC_UMALQURA && (extendedYear < UMALQURA_YEAR_START || extendedYear > UMALQURA_YEAR_END) )) {
- length = 354 + (civilLeapYear(extendedYear) ? 1 : 0);
- } else if (cType == CalculationType.ISLAMIC) {
- int month = 12*(extendedYear-1);
- length = (int)(trueMonthStart(month + 12) - trueMonthStart(month));
- } else if (cType == CalculationType.ISLAMIC_UMALQURA) {
- for(int i=0; i<12; i++)
- length += handleGetMonthLength(extendedYear, i);
- }
-
- return length;
+ return algorithm.yearLength(extendedYear);
}
//-------------------------------------------------------------------------
@@ -805,7 +1012,7 @@ public class IslamicCalendar extends Calendar {
*/
@Override
protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
- return (int)(monthStart(eyear, month) + ((cType == CalculationType.ISLAMIC_TBLA)? ASTRONOMICAL_EPOC: CIVIL_EPOC) - 1);
+ return (int)(algorithm.monthStart(eyear, month) + algorithm.epoch()- 1);
}
//-------------------------------------------------------------------------
@@ -844,84 +1051,18 @@ public class IslamicCalendar extends Calendar {
*/
@Override
protected void handleComputeFields(int julianDay) {
- int year =0, month=0, dayOfMonth=0, dayOfYear=0;
- long monthStart;
- long days = julianDay - CIVIL_EPOC;
-
- if (cType == CalculationType.ISLAMIC_CIVIL || cType == CalculationType.ISLAMIC_TBLA) {
- if (cType == CalculationType.ISLAMIC_TBLA) {
- days = julianDay - ASTRONOMICAL_EPOC;
- }
- // Use the civil calendar approximation, which is just arithmetic
- year = (int)Math.floor( (30 * days + 10646) / 10631.0 );
- month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
- month = Math.min(month, 11);
- } else if (cType == CalculationType.ISLAMIC){
- // Guess at the number of elapsed full months since the epoch
- int months = (int)Math.floor(days / CalendarAstronomer.SYNODIC_MONTH);
-
- monthStart = (long)Math.floor(months * CalendarAstronomer.SYNODIC_MONTH - 1);
-
- if ( days - monthStart >= 25 && moonAge(internalGetTimeInMillis()) > 0) {
- // If we're near the end of the month, assume next month and search backwards
- months++;
- }
-
- // Find out the last time that the new moon was actually visible at this longitude
- // This returns midnight the night that the moon was visible at sunset.
- while ((monthStart = trueMonthStart(months)) > days) {
- // If it was after the date in question, back up a month and try again
- months--;
- }
-
- year = months >= 0 ? ((months / 12) + 1) : ((months + 1 ) / 12);
- month = ((months % 12) + 12 ) % 12;
- } else if (cType == CalculationType.ISLAMIC_UMALQURA) {
- long umalquraStartdays = yearStart(UMALQURA_YEAR_START);
- if( days < umalquraStartdays) {
- // Use Civil calculation
- year = (int)Math.floor( (30 * days + 10646) / 10631.0 );
- month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
- month = Math.min(month, 11);
- } else {
- int y =UMALQURA_YEAR_START-1, m =0;
- long d = 1;
- while(d > 0) {
- y++;
- d = days - yearStart(y) +1;
- if(d == handleGetYearLength(y)) {
- m=11;
- break;
- } else if(d < handleGetYearLength(y) ) {
- int monthLen = handleGetMonthLength(y, m);
- m=0;
- while(d > monthLen) {
- d -= monthLen;
- m++;
- monthLen = handleGetMonthLength(y, m);
- }
- break;
- }
- }
- year = y;
- month = m;
- }
- }
-
-
- dayOfMonth = (int)(days - monthStart(year, month)) + 1;
-
- // Now figure out the day of the year.
- dayOfYear = (int)(days - monthStart(year, 0) + 1);
-
-
- internalSet(ERA, 0);
- internalSet(YEAR, year);
- internalSet(EXTENDED_YEAR, year);
- internalSet(MONTH, month);
- internalSet(ORDINAL_MONTH, month);
- internalSet(DAY_OF_MONTH, dayOfMonth);
- internalSet(DAY_OF_YEAR, dayOfYear);
+ algorithm.compute(julianDay, internalGetTimeInMillis(),
+ year -> {
+ internalSet(ERA, 0);
+ internalSet(YEAR, year);
+ internalSet(EXTENDED_YEAR, year);
+ },
+ month -> {
+ internalSet(MONTH, month);
+ internalSet(ORDINAL_MONTH, month);
+ },
+ dayOfMonth -> { internalSet(DAY_OF_MONTH, dayOfMonth); },
+ dayOfYear -> { internalSet(DAY_OF_YEAR, dayOfYear); });
}
/**
@@ -971,12 +1112,22 @@ public class IslamicCalendar extends Calendar {
*/
public void setCalculationType(CalculationType type) {
cType = type;
-
- // ensure civil property is up-to-date
- if(cType == CalculationType.ISLAMIC_CIVIL)
- civil = true;
- else
- civil = false;
+ switch (cType) {
+ case ISLAMIC_UMALQURA:
+ algorithm = UMALQURA_ALGORITHM;
+ break;
+ case ISLAMIC:
+ algorithm = ISLAMIC_ALGORITHM;
+ break;
+ case ISLAMIC_TBLA:
+ algorithm = TBLA_ALGORITHM;
+ break;
+ case ISLAMIC_CIVIL:
+ default:
+ algorithm = CIVIL_ALGORITHM;
+ break;
+ }
+ civil = algorithm.isCivil();
}
/**
@@ -985,7 +1136,7 @@ public class IslamicCalendar extends Calendar {
* @stable ICU 55
*/
public CalculationType getCalculationType() {
- return cType;
+ return algorithm.getType();
}
/**
@@ -1012,26 +1163,17 @@ public class IslamicCalendar extends Calendar {
*/
@Override
public String getType() {
- if (cType == null) {
- // TODO: getType() is called during Islamic calendar
- // construction and might be null at that point. We should
- // check the initialization sequence. See ticket#10425.
- return "islamic";
- }
- return cType.bcpType();
+ return algorithm.getType().bcpType();
}
private void readObject(ObjectInputStream in) throws IOException,ClassNotFoundException {
in.defaultReadObject();
-
if (cType == null) {
// The serialized data was created by an ICU version before CalculationType
// was introduced.
cType = civil ? CalculationType.ISLAMIC_CIVIL : CalculationType.ISLAMIC;
- } else {
- // Make sure 'civil' is consistent with CalculationType
- civil = (cType == CalculationType.ISLAMIC_CIVIL);
}
+ setCalculationType(cType);
}
//-------------------------------------------------------------------------
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/JapaneseCalendar.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/JapaneseCalendar.java
index 8f1b1f9e7..f16bca3d7 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/JapaneseCalendar.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/JapaneseCalendar.java
@@ -488,4 +488,14 @@ public class JapaneseCalendar extends GregorianCalendar {
return super.getActualMaximum(field);
}
+ /**
+ * {@inheritDoc}
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+ @Override
+ @Deprecated
+ protected boolean isEra0CountingBackward() {
+ return false;
+ }
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/LocaleMatcher.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/LocaleMatcher.java
index 074ee0a4f..9fd35660a 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/LocaleMatcher.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/LocaleMatcher.java
@@ -17,8 +17,8 @@ import java.util.Locale;
import java.util.Map;
import com.ibm.icu.impl.locale.LSR;
+import com.ibm.icu.impl.locale.LikelySubtags;
import com.ibm.icu.impl.locale.LocaleDistance;
-import com.ibm.icu.impl.locale.XLikelySubtags;
/**
* Immutable class that picks the best match between a user's desired locales and
@@ -796,7 +796,7 @@ public final class LocaleMatcher {
if (locale.equals(UND_ULOCALE)) {
return UND_LSR;
} else {
- return XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale, false);
+ return LikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale, false);
}
}
@@ -804,7 +804,7 @@ public final class LocaleMatcher {
if (locale.equals(UND_LOCALE) || locale.equals(EMPTY_LOCALE)) {
return UND_LSR;
} else {
- return XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale);
+ return LikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale);
}
}
@@ -1169,7 +1169,7 @@ public final class LocaleMatcher {
* @stable ICU 4.4
*/
public ULocale canonicalize(ULocale locale) {
- return XLikelySubtags.INSTANCE.canonicalize(locale);
+ return LikelySubtags.INSTANCE.canonicalize(locale);
}
/**
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java
index 83868f6e6..8f33dd4b0 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java
@@ -119,6 +119,20 @@ public class MeasureUnit implements Serializable {
public enum MeasurePrefix {
/**
+ * SI prefix: quetta, 10^30.
+ *
+ * @draft ICU 75
+ */
+ QUETTA(30, "quetta", 10),
+
+ /**
+ * SI prefix: ronna, 10^27.
+ *
+ * @draft ICU 75
+ */
+ RONNA(27, "ronna", 10),
+
+ /**
* SI prefix: yotta, 10^24.
*
* @stable ICU 69
@@ -266,6 +280,20 @@ public class MeasureUnit implements Serializable {
YOCTO(-24, "yocto", 10),
/**
+ * SI prefix: ronto, 10^-27.
+ *
+ * @draft ICU 75
+ */
+ RONTO(-27, "ronto", 10),
+
+ /**
+ * SI prefix: quecto, 10^-30.
+ *
+ * @draft ICU 75
+ */
+ QUECTO(-30, "quecto", 10),
+
+ /**
* IEC binary prefix: kibi, 1024^1.
*
* @stable ICU 69
@@ -1771,7 +1799,7 @@ public class MeasureUnit implements Serializable {
/**
* Constant for unit of speed: beaufort
- * @draft ICU 73
+ * @stable ICU 73
*/
public static final MeasureUnit BEAUFORT = MeasureUnit.internalGetInstance("speed", "beaufort");
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/TimeUnitAmount.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/TimeUnitAmount.java
index 066d9e7a3..d0a65371e 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/TimeUnitAmount.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/TimeUnitAmount.java
@@ -31,7 +31,7 @@ public class TimeUnitAmount extends Measure {
* @stable ICU 4.0
*/
public TimeUnitAmount(double number, TimeUnit unit) {
- super(new Double(number), unit);
+ super(number, unit);
}
/**
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/TimeZone.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/TimeZone.java
index 2039137cb..0846f51ef 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/TimeZone.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/TimeZone.java
@@ -837,7 +837,7 @@ abstract public class TimeZone implements Serializable, Cloneable, Freezable<Tim
* @stable ICU 2.0
*/
public static String[] getAvailableIDs(int rawOffset) {
- Set<String> ids = getAvailableIDs(SystemTimeZoneType.ANY, null, Integer.valueOf(rawOffset));
+ Set<String> ids = getAvailableIDs(SystemTimeZoneType.ANY, null, rawOffset);
return ids.toArray(new String[0]);
}
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/ULocale.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/ULocale.java
index e68396cf1..0fa09230d 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/ULocale.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/ULocale.java
@@ -44,11 +44,11 @@ import com.ibm.icu.impl.locale.InternalLocaleBuilder;
import com.ibm.icu.impl.locale.KeyTypeData;
import com.ibm.icu.impl.locale.LSR;
import com.ibm.icu.impl.locale.LanguageTag;
+import com.ibm.icu.impl.locale.LikelySubtags;
import com.ibm.icu.impl.locale.LocaleExtensions;
import com.ibm.icu.impl.locale.LocaleSyntaxException;
import com.ibm.icu.impl.locale.ParseStatus;
import com.ibm.icu.impl.locale.UnicodeLocaleExtension;
-import com.ibm.icu.impl.locale.XLikelySubtags;
import com.ibm.icu.lang.UScript;
import com.ibm.icu.text.LocaleDisplayNames;
import com.ibm.icu.text.LocaleDisplayNames.DialectHandling;
@@ -545,13 +545,13 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
/**
* Keep our own default ULocale.
*/
- private static Locale defaultLocale = Locale.getDefault();
- private static ULocale defaultULocale;
+ private static volatile ULocale defaultULocale;
private static Locale[] defaultCategoryLocales = new Locale[Category.values().length];
private static ULocale[] defaultCategoryULocales = new ULocale[Category.values().length];
static {
+ Locale defaultLocale = Locale.getDefault();
defaultULocale = forLocale(defaultLocale);
if (JDKLocaleHelper.hasLocaleCategories()) {
@@ -581,34 +581,47 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
* @stable ICU 2.8
*/
public static ULocale getDefault() {
+ // Only synchronize if we must update the default locale.
+ ULocale currentDefaultULocale = defaultULocale;
+ if (currentDefaultULocale == null) {
+ // When Java's default locale has extensions (such as ja-JP-u-ca-japanese),
+ // Locale -> ULocale mapping requires BCP47 keyword mapping data that is currently
+ // stored in a resource bundle.
+ // If this happens during the class initialization's call to .forLocale(defaultLocale),
+ // then defaultULocale is still null until forLocale() returns.
+ // However, UResourceBundle currently requires non-null default ULocale.
+ // For now, this implementation returns ULocale.ROOT to avoid the problem.
+ // TODO: Consider moving BCP47 mapping data out of resource bundle later.
+ return ULocale.ROOT;
+ } else if (currentDefaultULocale.locale.equals(Locale.getDefault())) {
+ return currentDefaultULocale;
+ }
synchronized (ULocale.class) {
- if (defaultULocale == null) {
- // When Java's default locale has extensions (such as ja-JP-u-ca-japanese),
- // Locale -> ULocale mapping requires BCP47 keyword mapping data that is currently
- // stored in a resource bundle. However, UResourceBundle currently requires
- // non-null default ULocale. For now, this implementation returns ULocale.ROOT
- // to avoid the problem.
+ Locale currentDefault = Locale.getDefault();
+ assert currentDefault != null;
- // TODO: Consider moving BCP47 mapping data out of resource bundle later.
+ currentDefaultULocale = defaultULocale;
+ assert currentDefaultULocale != null;
- return ULocale.ROOT;
+ if (currentDefaultULocale.locale.equals(currentDefault)) {
+ return currentDefaultULocale;
}
- Locale currentDefault = Locale.getDefault();
- if (!defaultLocale.equals(currentDefault)) {
- defaultLocale = currentDefault;
- defaultULocale = forLocale(currentDefault);
-
- if (!JDKLocaleHelper.hasLocaleCategories()) {
- // Detected Java default Locale change.
- // We need to update category defaults to match
- // Java 7's behavior on Android API level 21..23.
- for (Category cat : Category.values()) {
- int idx = cat.ordinal();
- defaultCategoryLocales[idx] = currentDefault;
- defaultCategoryULocales[idx] = forLocale(currentDefault);
- }
- } }
- return defaultULocale;
+
+ ULocale nextULocale = forLocale(currentDefault);
+ assert nextULocale != null;
+
+ if (!JDKLocaleHelper.hasLocaleCategories()) {
+ // Detected Java default Locale change.
+ // We need to update category defaults to match
+ // Java 7's behavior on Android API level 21..23.
+ for (Category cat : Category.values()) {
+ int idx = cat.ordinal();
+ defaultCategoryLocales[idx] = currentDefault;
+ defaultCategoryULocales[idx] = nextULocale;
+ }
+ }
+
+ return defaultULocale = nextULocale;
}
}
@@ -630,8 +643,7 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
* @stable ICU 3.0
*/
public static synchronized void setDefault(ULocale newLocale){
- defaultLocale = newLocale.toLocale();
- Locale.setDefault(defaultLocale);
+ Locale.setDefault(newLocale.toLocale());
defaultULocale = newLocale;
// This method also updates all category default locales
for (Category cat : Category.values()) {
@@ -675,8 +687,7 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
// time.
Locale currentDefault = Locale.getDefault();
- if (!defaultLocale.equals(currentDefault)) {
- defaultLocale = currentDefault;
+ if (!defaultULocale.locale.equals(currentDefault)) {
defaultULocale = forLocale(currentDefault);
for (Category cat : Category.values()) {
@@ -959,6 +970,22 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
}
/**
+ * Get region code from a key in locale or null.
+ */
+ private static String getRegionFromKey(ULocale locale, String key) {
+ String region = locale.getKeywordValue(key);
+ if (region != null && region.length() >= 3 && region.length() <= 7) {
+ if (Character.isLetter(region.charAt(0))) {
+ return AsciiUtil.toUpperString(region.substring(0, 2));
+ } else {
+ // assume three-digit region code
+ return region.substring(0, 3);
+ }
+ }
+ return null;
+ }
+
+ /**
* {@icu} Get the region to use for supplemental data lookup.
* Uses
* (1) any region specified by locale tag "rg"; if none then
@@ -981,17 +1008,16 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
@Deprecated
public static String getRegionForSupplementalData(
ULocale locale, boolean inferRegion) {
- String region = locale.getKeywordValue("rg");
- if (region != null && region.length() >= 3 && region.length() <= 7) {
- if (Character.isLetter(region.charAt(0))) {
- return AsciiUtil.toUpperString(region.substring(0, 2));
- } else {
- // assume three-digit region code
- return region.substring(0, 3);
- }
+ String region = getRegionFromKey(locale, "rg");
+ if (region != null) {
+ return region;
}
region = locale.getCountry();
if (region.length() == 0 && inferRegion) {
+ region = getRegionFromKey(locale, "sd");
+ if (region != null) {
+ return region;
+ }
ULocale maximized = addLikelySubtags(locale);
region = maximized.getCountry();
}
@@ -2694,20 +2720,18 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
*
* If the provided ULocale instance is already in the maximal form, or there is no
* data available available for maximization, it will be returned. For example,
- * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+ * "sh" cannot be maximized, since there is no reasonable maximization.
* Otherwise, a new ULocale instance with the maximal form is returned.
*
* Examples:
*
* "en" maximizes to "en_Latn_US"
*
- * "de" maximizes to "de_Latn_US"
+ * "de" maximizes to "de_Latn_DE"
*
* "sr" maximizes to "sr_Cyrl_RS"
*
- * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
- *
- * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
+ * "zh_Hani" maximizes to "zh_Hani_CN"
*
* @param loc The ULocale to maximize
* @return The maximized ULocale instance.
@@ -2725,7 +2749,7 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
trailing = loc.localeID.substring(trailingIndex);
}
- LSR max = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(
+ LSR max = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(
new ULocale(loc.getLanguage(), loc.getScript(), loc.getCountry()), true);
String newLocaleID = createTagString(max.language, max.script, max.region,
trailing);
@@ -2830,7 +2854,7 @@ public final class ULocale implements Serializable, Comparable<ULocale> {
trailing = loc.localeID.substring(trailingIndex);
}
- LSR lsr = XLikelySubtags.INSTANCE.minimizeSubtags(
+ LSR lsr = LikelySubtags.INSTANCE.minimizeSubtags(
loc.getLanguage(), loc.getScript(), loc.getCountry(), fieldToFavor);
String newLocaleID = createTagString(lsr.language, lsr.script, lsr.region,
trailing);
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/VersionInfo.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/VersionInfo.java
index 4d314d7d8..dbb596010 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/util/VersionInfo.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/VersionInfo.java
@@ -230,7 +230,7 @@ public final class VersionInfo implements Comparable<VersionInfo>
* @deprecated This API is ICU internal only.
*/
@Deprecated
- public static final String ICU_DATA_VERSION_PATH = "74b";
+ public static final String ICU_DATA_VERSION_PATH = "75b";
/**
* Data version in ICU4J.
@@ -336,7 +336,7 @@ public final class VersionInfo implements Comparable<VersionInfo>
throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
}
int version = getInt(major, minor, milli, micro);
- Integer key = Integer.valueOf(version);
+ Integer key = version;
VersionInfo result = MAP_.get(key);
if (result == null) {
result = new VersionInfo(version);
@@ -574,7 +574,7 @@ public final class VersionInfo implements Comparable<VersionInfo>
UNICODE_15_0 = getInstance(15, 0, 0, 0);
UNICODE_15_1 = getInstance(15, 1, 0, 0);
- ICU_VERSION = getInstance(74, 2, 0, 0);
+ ICU_VERSION = getInstance(75, 1, 0, 0);
ICU_DATA_VERSION = ICU_VERSION;
UNICODE_VERSION = UNICODE_15_1;
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af.res
deleted file mode 100644
index a3af762dd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af_NA.res
deleted file mode 100644
index 827c36466..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af_NA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af_ZA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/af_ZA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/agq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/agq.res
deleted file mode 100644
index a1d3f3ea5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/agq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/agq_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/agq_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/agq_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ak.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ak.res
deleted file mode 100644
index eadbc84cf..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ak.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ak_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ak_GH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ak_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/am.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/am.res
deleted file mode 100644
index aaf3bf5e9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/am.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/am_ET.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/am_ET.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/am_ET.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar.res
deleted file mode 100644
index f46bc6d98..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_001.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_001.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_AE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_AE.res
deleted file mode 100644
index 1b20e2ab5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_AE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_BH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_BH.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_BH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_DJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_DJ.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_DJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_DZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_DZ.res
deleted file mode 100644
index 213902b77..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_DZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_EG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_EG.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_EG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_EH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_EH.res
deleted file mode 100644
index 1260f5d9c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_EH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_ER.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_IL.res
deleted file mode 100644
index e692f44a3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_IQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_IQ.res
deleted file mode 100644
index 6dc79cc29..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_IQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_JO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_JO.res
deleted file mode 100644
index a30c6790b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_JO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_KM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_KM.res
deleted file mode 100644
index 7851f972c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_KM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_KW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_KW.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_KW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_LB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_LB.res
deleted file mode 100644
index ecf82146e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_LB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_LY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_LY.res
deleted file mode 100644
index 1747b8575..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_LY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_MA.res
deleted file mode 100644
index 5b45b011c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_MR.res
deleted file mode 100644
index 4d5ac89da..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_OM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_OM.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_OM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_PS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_PS.res
deleted file mode 100644
index a30c6790b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_PS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_QA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_QA.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_QA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SA.res
deleted file mode 100644
index e0f4538f3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SD.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SO.res
deleted file mode 100644
index c244af552..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SS.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SY.res
deleted file mode 100644
index a30c6790b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_SY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_TD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_TD.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_TD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_TN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_TN.res
deleted file mode 100644
index 213902b77..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_TN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_XB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_XB.res
deleted file mode 100644
index e9c41498e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_XB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_YE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_YE.res
deleted file mode 100644
index d15f191e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ar_YE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ars.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ars.res
deleted file mode 100644
index a6d9416bc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ars.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/as.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/as.res
deleted file mode 100644
index fa177be68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/as.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/as_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/as_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/as_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/asa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/asa.res
deleted file mode 100644
index fd76f4804..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/asa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/asa_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/asa_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/asa_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ast.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ast.res
deleted file mode 100644
index 7a4b5a82e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ast.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ast_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ast_ES.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ast_ES.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az.res
deleted file mode 100644
index a17672a5c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_AZ.res
deleted file mode 100644
index 3229326a2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Cyrl.res
deleted file mode 100644
index 073536328..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Cyrl_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Cyrl_AZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Cyrl_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Latn.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Latn_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Latn_AZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/az_Latn_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bas.res
deleted file mode 100644
index 6b44bda4c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bas.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bas_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bas_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bas_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/be.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/be.res
deleted file mode 100644
index 2ebc36417..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/be.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/be_BY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/be_BY.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/be_BY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bem.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bem.res
deleted file mode 100644
index 27267402a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bem.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bem_ZM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bem_ZM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bem_ZM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bez.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bez.res
deleted file mode 100644
index 4b9b46832..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bez.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bez_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bez_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bez_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bg.res
deleted file mode 100644
index 013faeca6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bg_BG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bg_BG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bg_BG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bgc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bgc.res
deleted file mode 100644
index 4a88400d6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bgc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bgc_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bgc_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bgc_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bho.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bho.res
deleted file mode 100644
index e14627e31..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bho.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bho_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bho_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bho_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/blo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/blo.res
deleted file mode 100644
index 821e015c3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/blo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/blo_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/blo_BJ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/blo_BJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bm.res
deleted file mode 100644
index 18663f0f7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bm_ML.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bm_ML.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bm_ML.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn.res
deleted file mode 100644
index 2470b181f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn_BD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn_BD.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn_BD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn_IN.res
deleted file mode 100644
index 2ee28936e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bn_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo.res
deleted file mode 100644
index 5aa8ef045..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo_CN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo_IN.res
deleted file mode 100644
index 1e134fbb4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bo_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/br.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/br.res
deleted file mode 100644
index 74c77c15d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/br.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/br_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/br_FR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/br_FR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/jaml.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/jaml.res
deleted file mode 100644
index 32e05e6e5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/jaml.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/root.res
deleted file mode 100644
index f874080a0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brx.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brx.res
deleted file mode 100644
index 0c50ace24..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brx.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brx_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brx_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brx_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs.res
deleted file mode 100644
index 2b82b166c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_BA.res
deleted file mode 100644
index 013620620..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Cyrl.res
deleted file mode 100644
index 0c5c2eee5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Cyrl_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Cyrl_BA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Cyrl_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Latn.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Latn_BA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/bs_Latn_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca.res
deleted file mode 100644
index da98f6753..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_AD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_AD.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_AD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_ES.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_ES.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_FR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_FR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_IT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ca_IT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp.res
deleted file mode 100644
index 9203f2827..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp_BD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp_BD.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp_BD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ccp_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ce.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ce.res
deleted file mode 100644
index 838faf2bf..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ce.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ce_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ce_RU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ce_RU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ceb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ceb.res
deleted file mode 100644
index 9c886327e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ceb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ceb_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ceb_PH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ceb_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cgg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cgg.res
deleted file mode 100644
index fb6bd75d0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cgg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cgg_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cgg_UG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cgg_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/chr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/chr.res
deleted file mode 100644
index 399833c06..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/chr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/chr_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/chr_US.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/chr_US.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb.res
deleted file mode 100644
index 237287ced..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb_IQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb_IQ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb_IQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb_IR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb_IR.res
deleted file mode 100644
index 0df5a6fc1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ckb_IR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cs.res
deleted file mode 100644
index be3cbc67e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cs_CZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cs_CZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cs_CZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/csw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/csw.res
deleted file mode 100644
index 8f08812e9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/csw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/csw_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/csw_CA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/csw_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cv.res
deleted file mode 100644
index 58351b155..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cv_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cv_RU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cv_RU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cy.res
deleted file mode 100644
index bd38585b1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cy_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cy_GB.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/cy_GB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da.res
deleted file mode 100644
index 647753391..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da_DK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da_DK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da_GL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da_GL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/da_GL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dav.res
deleted file mode 100644
index 833aada4d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dav.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dav_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dav_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dav_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de.res
deleted file mode 100644
index e6a97cac6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_AT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_AT.res
deleted file mode 100644
index 1a14168ac..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_AT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_BE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_BE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_CH.res
deleted file mode 100644
index 8c5fde42e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_DE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_IT.res
deleted file mode 100644
index d164bb114..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_IT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_LI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_LI.res
deleted file mode 100644
index 5ea48c52e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_LI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_LU.res
deleted file mode 100644
index 4dc6a041b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/de_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dje.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dje.res
deleted file mode 100644
index 56a652b7b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dje.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dje_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dje_NE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dje_NE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/doi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/doi.res
deleted file mode 100644
index c01c81701..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/doi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/doi_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/doi_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/doi_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dsb.res
deleted file mode 100644
index 0c8086a19..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dsb_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dsb_DE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dsb_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dua.res
deleted file mode 100644
index 7b7bea16d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dua.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dua_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dua_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dua_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dyo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dyo.res
deleted file mode 100644
index 6be2ed10f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dyo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dyo_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dyo_SN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dyo_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dz.res
deleted file mode 100644
index 23fe07e84..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dz_BT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dz_BT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dz_BT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebu.res
deleted file mode 100644
index f032e2e5b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebu_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebu_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ebu_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee.res
deleted file mode 100644
index 900f71f65..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee_GH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee_TG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee_TG.res
deleted file mode 100644
index 94d39bffc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ee_TG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el.res
deleted file mode 100644
index 3cbde1f2b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el_CY.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el_CY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el_GR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el_GR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/el_GR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en.res
deleted file mode 100644
index a47826f83..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_001.res
deleted file mode 100644
index e7d8e416e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_001.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_150.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_150.res
deleted file mode 100644
index cc0f29c1b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_150.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AE.res
deleted file mode 100644
index 65ef75a65..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AG.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AI.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AS.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AT.res
deleted file mode 100644
index 4cc8aa7b3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AU.res
deleted file mode 100644
index 257ba5acf..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_AU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BB.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BE.res
deleted file mode 100644
index e36483ca9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BI.res
deleted file mode 100644
index 30f9e100b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BM.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BS.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BW.res
deleted file mode 100644
index 5af9cbe47..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BZ.res
deleted file mode 100644
index 6dd6ad8b7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_BZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CA.res
deleted file mode 100644
index b36850aa8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CC.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CH.res
deleted file mode 100644
index e667c74ec..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CK.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CM.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CX.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CY.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_CY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DE.res
deleted file mode 100644
index 466059f80..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DG.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DK.res
deleted file mode 100644
index 95f9ba375..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DM.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_DM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ER.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FI.res
deleted file mode 100644
index 9efe1033c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FJ.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FK.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FM.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_FM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GB.res
deleted file mode 100644
index f94d69954..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GD.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GG.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GH.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GI.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GM.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GY.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_GY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_HK.res
deleted file mode 100644
index 619967f79..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ID.res
deleted file mode 100644
index 9663ac0aa..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IE.res
deleted file mode 100644
index 1c1380ec1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IL.res
deleted file mode 100644
index 4bfc3bf9d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IM.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IN.res
deleted file mode 100644
index 819fb6c0a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IO.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_IO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_JE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_JE.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_JE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_JM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_JM.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_JM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KE.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KI.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KN.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KY.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_KY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LC.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LR.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LS.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_LS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MG.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MO.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MP.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MP.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MS.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MT.res
deleted file mode 100644
index 05ed278bb..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MU.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MV.res
deleted file mode 100644
index bb0e78f13..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MW.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MY.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_MY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NA.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NF.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NG.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NH.res
deleted file mode 100644
index cd0a1cc16..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NL.res
deleted file mode 100644
index b5ada2fb4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NR.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NU.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NZ.res
deleted file mode 100644
index e6012e7b3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_NZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PG.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PK.res
deleted file mode 100644
index b8b4d0052..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PN.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PW.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_PW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_RH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_RH.res
deleted file mode 100644
index 6fc1fd64f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_RH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_RW.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_RW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SB.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SC.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SD.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SE.res
deleted file mode 100644
index abbce1ca4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SG.res
deleted file mode 100644
index 6248e741b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SH.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SI.res
deleted file mode 100644
index 287a8fd41..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SL.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SS.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SX.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SZ.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_SZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TC.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TK.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TO.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TT.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TV.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TZ.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_UG.res
deleted file mode 100644
index d550fda89..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_UM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_UM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_UM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_US.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_US.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_US_POSIX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_US_POSIX.res
deleted file mode 100644
index 63fd7d932..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_US_POSIX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VC.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VG.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VI.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VU.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_VU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_WS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_WS.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_WS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_XA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_XA.res
deleted file mode 100644
index f23397b6a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_XA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZA.res
deleted file mode 100644
index b3fba7112..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZM.res
deleted file mode 100644
index a25eb5f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZW.res
deleted file mode 100644
index 99c48ded8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/en_ZW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eo.res
deleted file mode 100644
index a3856b5be..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eo_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eo_001.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eo_001.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es.res
deleted file mode 100644
index 2bf3940b6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_419.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_419.res
deleted file mode 100644
index f62d6def5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_419.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_AR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_AR.res
deleted file mode 100644
index 25d71182f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_AR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BO.res
deleted file mode 100644
index a0ac8fbe1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BR.res
deleted file mode 100644
index 72213e3ea..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BZ.res
deleted file mode 100644
index 72213e3ea..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_BZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CL.res
deleted file mode 100644
index 533734935..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CO.res
deleted file mode 100644
index 1655be221..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CR.res
deleted file mode 100644
index 2e3e21472..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CU.res
deleted file mode 100644
index b4ba1d90b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_CU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_DO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_DO.res
deleted file mode 100644
index f62e4afe4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_DO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_EA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_EA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_EA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_EC.res
deleted file mode 100644
index d12fce8d1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_EC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_ES.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_ES.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_GQ.res
deleted file mode 100644
index 442b08cc0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_GQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_GT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_GT.res
deleted file mode 100644
index b5f70bf24..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_GT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_HN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_HN.res
deleted file mode 100644
index d517f6a81..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_HN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_IC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_IC.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_IC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_MX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_MX.res
deleted file mode 100644
index 37837dbed..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_MX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_NI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_NI.res
deleted file mode 100644
index 6e130f584..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_NI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PA.res
deleted file mode 100644
index 90f23d34b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PE.res
deleted file mode 100644
index 247f954ce..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PH.res
deleted file mode 100644
index 54e40aa69..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PR.res
deleted file mode 100644
index 323319c7f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PY.res
deleted file mode 100644
index 3bb7d1347..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_PY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_SV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_SV.res
deleted file mode 100644
index 9c9239400..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_SV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_US.res
deleted file mode 100644
index e025ab802..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_US.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_UY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_UY.res
deleted file mode 100644
index 8a153a480..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_UY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_VE.res
deleted file mode 100644
index 60917cdbe..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/es_VE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/et.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/et.res
deleted file mode 100644
index 7048cf8d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/et.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/et_EE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/et_EE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/et_EE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eu.res
deleted file mode 100644
index e06e35d1b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eu_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eu_ES.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/eu_ES.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ewo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ewo.res
deleted file mode 100644
index 3d8df36d7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ewo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ewo_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ewo_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ewo_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa.res
deleted file mode 100644
index 7d50e9fa3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa_AF.res
deleted file mode 100644
index 5aba68fb4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa_IR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa_IR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fa_IR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff.res
deleted file mode 100644
index 3900fe57f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm.res
deleted file mode 100644
index 8a1af832b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_BF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_BF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_BF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GH.res
deleted file mode 100644
index a3399b112..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GM.res
deleted file mode 100644
index a3399b112..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_GW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_LR.res
deleted file mode 100644
index a3399b112..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_MR.res
deleted file mode 100644
index a3399b112..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_NE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_NE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_NG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_SL.res
deleted file mode 100644
index a3399b112..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_SL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_SN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Adlm_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_CM.res
deleted file mode 100644
index 103663206..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_GN.res
deleted file mode 100644
index 024a7804c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_BF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_BF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_BF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GH.res
deleted file mode 100644
index dfb4430f2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GM.res
deleted file mode 100644
index dfb4430f2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_GW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_LR.res
deleted file mode 100644
index dfb4430f2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_MR.res
deleted file mode 100644
index dfb4430f2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_NE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_NE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_NG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_SL.res
deleted file mode 100644
index dfb4430f2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_SL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_SN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_Latn_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_MR.res
deleted file mode 100644
index e4c0d58cc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_SN.res
deleted file mode 100644
index 2508da397..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ff_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fi.res
deleted file mode 100644
index 77588abb7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fi_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fi_FI.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fi_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fil.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fil.res
deleted file mode 100644
index 322c917c9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fil.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fil_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fil_PH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fil_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo.res
deleted file mode 100644
index 80dd109cc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo_DK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo_DK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo_FO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo_FO.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fo_FO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr.res
deleted file mode 100644
index 9f627a969..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BE.res
deleted file mode 100644
index 5e10f5d5f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BI.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BJ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_BL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CA.res
deleted file mode 100644
index 4ce36d752..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CD.res
deleted file mode 100644
index 6df90e689..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CH.res
deleted file mode 100644
index d189d9f82..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CI.res
deleted file mode 100644
index 1d22aa335..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CM.res
deleted file mode 100644
index 02bb6e9bb..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_DJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_DJ.res
deleted file mode 100644
index 160a96f39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_DJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_DZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_DZ.res
deleted file mode 100644
index 160a96f39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_DZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_FR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_FR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GP.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GP.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GQ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_GQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_HT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_HT.res
deleted file mode 100644
index 96668d963..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_HT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_KM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_KM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_KM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_LU.res
deleted file mode 100644
index 4914ded66..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MA.res
deleted file mode 100644
index fc682eddb..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MC.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_ML.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_ML.res
deleted file mode 100644
index 5880b5cab..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_ML.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MQ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MR.res
deleted file mode 100644
index 160a96f39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_MU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_NC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_NC.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_NC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_NE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_NE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_PF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_PF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_PF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_PM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_PM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_PM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_RE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_RE.res
deleted file mode 100644
index bdb477332..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_RE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_RW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_RW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SC.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SN.res
deleted file mode 100644
index 1564a328a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SY.res
deleted file mode 100644
index 160a96f39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_SY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TD.res
deleted file mode 100644
index 160a96f39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TN.res
deleted file mode 100644
index 160a96f39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_TN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_VU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_VU.res
deleted file mode 100644
index 160a96f39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_VU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_WF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_WF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_WF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_YT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_YT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fr_YT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fur.res
deleted file mode 100644
index 9a62ef262..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fur_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fur_IT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fur_IT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fy.res
deleted file mode 100644
index 3c1ea9657..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fy_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fy_NL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/fy_NL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga.res
deleted file mode 100644
index ec26e8b3c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga_GB.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga_GB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga_IE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga_IE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ga_IE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gd.res
deleted file mode 100644
index c0f03fa31..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gd_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gd_GB.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gd_GB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gl.res
deleted file mode 100644
index b6c3f1034..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gl_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gl_ES.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gl_ES.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw.res
deleted file mode 100644
index ea9bcdb3f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_CH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_FR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_FR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_LI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_LI.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gsw_LI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gu.res
deleted file mode 100644
index a981a7f5c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gu_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gu_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gu_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/guz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/guz.res
deleted file mode 100644
index 3cedefd02..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/guz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/guz_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/guz_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/guz_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gv.res
deleted file mode 100644
index 893839baa..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gv_IM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gv_IM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/gv_IM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha.res
deleted file mode 100644
index 42160b810..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_GH.res
deleted file mode 100644
index 23681e320..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_NE.res
deleted file mode 100644
index 33512769b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_NE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_NG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ha_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/haw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/haw.res
deleted file mode 100644
index e8b1458ff..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/haw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/haw_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/haw_US.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/haw_US.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/he.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/he.res
deleted file mode 100644
index 92516808f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/he.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/he_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/he_IL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/he_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi.res
deleted file mode 100644
index fc728f70a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_Latn.res
deleted file mode 100644
index 877054a97..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_Latn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_Latn_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hi_Latn_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr.res
deleted file mode 100644
index 33f141ae6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr_BA.res
deleted file mode 100644
index 70f062804..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr_HR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr_HR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hr_HR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hsb.res
deleted file mode 100644
index 31075b433..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hsb_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hsb_DE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hsb_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hu.res
deleted file mode 100644
index c05894097..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hu_HU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hu_HU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hu_HU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hy.res
deleted file mode 100644
index b9b754bc1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hy_AM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hy_AM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/hy_AM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ia.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ia.res
deleted file mode 100644
index 521ca2ece..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ia.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ia_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ia_001.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ia_001.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/icuver.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/icuver.res
deleted file mode 100644
index b119cbf60..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/icuver.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/id.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/id.res
deleted file mode 100644
index ef7a8f4d1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/id.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/id_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/id_ID.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/id_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ie.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ie.res
deleted file mode 100644
index 9ebfef5de..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ie.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ie_EE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ie_EE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ie_EE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ig.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ig.res
deleted file mode 100644
index be4433861..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ig.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ig_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ig_NG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ig_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ii.res
deleted file mode 100644
index f74201a6e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ii.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ii_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ii_CN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ii_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/in.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/in.res
deleted file mode 100644
index 5c2551728..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/in.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/in_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/in_ID.res
deleted file mode 100644
index 732fbaaaa..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/in_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/is.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/is.res
deleted file mode 100644
index 480bd4e52..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/is.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/is_IS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/is_IS.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/is_IS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it.res
deleted file mode 100644
index 6e0d8d04e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_CH.res
deleted file mode 100644
index 7c0a3afd0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_IT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_IT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_SM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_SM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_SM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_VA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_VA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/it_VA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/iw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/iw.res
deleted file mode 100644
index 0dcafddf3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/iw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/iw_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/iw_IL.res
deleted file mode 100644
index 973520659..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/iw_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja.res
deleted file mode 100644
index fc52b46ca..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja_JP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja_JP.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja_JP.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja_JP_TRADITIONAL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja_JP_TRADITIONAL.res
deleted file mode 100644
index f220cfb70..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ja_JP_TRADITIONAL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jgo.res
deleted file mode 100644
index 9b4b6559a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jgo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jgo_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jgo_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jgo_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jmc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jmc.res
deleted file mode 100644
index 5df1a4bba..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jmc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jmc_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jmc_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jmc_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jv.res
deleted file mode 100644
index ece0c79c9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jv_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jv_ID.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/jv_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ka.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ka.res
deleted file mode 100644
index d28ad9037..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ka.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ka_GE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ka_GE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ka_GE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kab.res
deleted file mode 100644
index 4a675fa29..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kab_DZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kab_DZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kab_DZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kam.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kam.res
deleted file mode 100644
index 9dcffb06b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kam.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kam_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kam_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kam_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kde.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kde.res
deleted file mode 100644
index 53cd6011e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kde.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kde_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kde_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kde_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kea.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kea.res
deleted file mode 100644
index 964f0cb25..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kea.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kea_CV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kea_CV.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kea_CV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/keyTypeData.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/keyTypeData.res
deleted file mode 100644
index ba08e5258..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/keyTypeData.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kgp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kgp.res
deleted file mode 100644
index 2256cec5d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kgp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kgp_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kgp_BR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kgp_BR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/khq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/khq.res
deleted file mode 100644
index 38662f2a9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/khq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/khq_ML.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/khq_ML.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/khq_ML.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ki.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ki.res
deleted file mode 100644
index 40c5ee3af..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ki.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ki_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ki_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ki_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kk.res
deleted file mode 100644
index aef665c05..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kk_KZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kk_KZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kk_KZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kkj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kkj.res
deleted file mode 100644
index 167b7fde5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kkj.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kkj_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kkj_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kkj_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kl.res
deleted file mode 100644
index 5fcb4759c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kl_GL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kl_GL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kl_GL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kln.res
deleted file mode 100644
index 19f15d161..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kln_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kln_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kln_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/km.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/km.res
deleted file mode 100644
index 0a1926f15..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/km.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/km_KH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/km_KH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/km_KH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kn.res
deleted file mode 100644
index a38b4a0f2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kn_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kn_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko.res
deleted file mode 100644
index cb2cd4e3d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_CN.res
deleted file mode 100644
index 6a2008899..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_KP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_KP.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_KP.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_KR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_KR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ko_KR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kok.res
deleted file mode 100644
index 87a2c167d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kok_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kok_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kok_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks.res
deleted file mode 100644
index 02e0fe3f5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Arab.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Arab_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Arab_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Arab_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Deva.res
deleted file mode 100644
index 96b3b6584..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Deva_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_Deva_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_IN.res
deleted file mode 100644
index a86af7cdf..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ks_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksb.res
deleted file mode 100644
index b4ded7b24..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksb_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksb_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksb_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksf.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksf.res
deleted file mode 100644
index 518c43673..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksf.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksf_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksf_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksf_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksh.res
deleted file mode 100644
index 80f7a799e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksh_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksh_DE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ksh_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ku.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ku.res
deleted file mode 100644
index fd361b822..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ku.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ku_TR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ku_TR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ku_TR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kw.res
deleted file mode 100644
index 8a15fd142..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kw_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kw_GB.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kw_GB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv.res
deleted file mode 100644
index 54cc61657..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Deva.res
deleted file mode 100644
index 2ecf58e70..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Deva_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Deva_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Latn.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Latn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Latn_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Latn_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Orya.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Orya.res
deleted file mode 100644
index 9cd292546..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Orya.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Orya_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Orya_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Orya_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Telu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Telu.res
deleted file mode 100644
index 07cb5775c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Telu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Telu_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Telu_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/kxv_Telu_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ky.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ky.res
deleted file mode 100644
index 7697ecbb9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ky.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ky_KG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ky_KG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ky_KG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lag.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lag.res
deleted file mode 100644
index 32be93890..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lag.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lag_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lag_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lag_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/langInfo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/langInfo.res
deleted file mode 100644
index 3efea52cd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/langInfo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lb.res
deleted file mode 100644
index 5759e7c87..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lb_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lb_LU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lb_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lg.res
deleted file mode 100644
index 24b8d4404..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lg_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lg_UG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lg_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lij.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lij.res
deleted file mode 100644
index 84bc6c071..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lij.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lij_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lij_IT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lij_IT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lkt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lkt.res
deleted file mode 100644
index 7a7f102e2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lkt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lkt_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lkt_US.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lkt_US.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmo.res
deleted file mode 100644
index a06f0c696..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmo_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmo_IT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lmo_IT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln.res
deleted file mode 100644
index d54f7b005..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_AO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_AO.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_AO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CD.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ln_CG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lo.res
deleted file mode 100644
index e768a7318..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lo_LA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lo_LA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lo_LA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc.res
deleted file mode 100644
index 245c38f49..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc_IQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc_IQ.res
deleted file mode 100644
index 610c7f69c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc_IQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc_IR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc_IR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lrc_IR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lt.res
deleted file mode 100644
index 5a0ef2cf3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lt_LT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lt_LT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lt_LT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lu.res
deleted file mode 100644
index d47f5fe5a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lu_CD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lu_CD.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lu_CD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luo.res
deleted file mode 100644
index 6f354b3e5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luo_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luo_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luo_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luy.res
deleted file mode 100644
index 0d871615f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luy_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luy_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/luy_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lv.res
deleted file mode 100644
index d80b36d24..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lv_LV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lv_LV.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/lv_LV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mai.res
deleted file mode 100644
index 52f5019eb..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mai.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mai_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mai_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mai_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas.res
deleted file mode 100644
index efbd317d8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mas_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mer.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mer.res
deleted file mode 100644
index 7fb5f64fb..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mer.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mer_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mer_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mer_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/metaZones.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/metaZones.res
deleted file mode 100644
index 1a9ab289d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/metaZones.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/metadata.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/metadata.res
deleted file mode 100644
index 6097591f5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/metadata.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mfe.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mfe.res
deleted file mode 100644
index e222a1d93..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mfe.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mfe_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mfe_MU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mfe_MU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mg.res
deleted file mode 100644
index 264c200ab..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mg_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mg_MG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mg_MG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgh.res
deleted file mode 100644
index 750102212..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgh_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgh_MZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgh_MZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgo.res
deleted file mode 100644
index 2b1d73f88..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgo_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgo_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mgo_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mi.res
deleted file mode 100644
index 3c7944b4d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mi_NZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mi_NZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mi_NZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mk.res
deleted file mode 100644
index 7b3894184..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mk_MK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mk_MK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mk_MK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ml.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ml.res
deleted file mode 100644
index 04dccae44..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ml.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ml_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ml_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ml_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mn.res
deleted file mode 100644
index 84955628b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mn_MN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mn_MN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mn_MN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni.res
deleted file mode 100644
index 5661ff6ed..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_Beng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_Beng.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_Beng.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_Beng_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_Beng_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_Beng_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_IN.res
deleted file mode 100644
index 8dbe66575..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mni_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mo.res
deleted file mode 100644
index 95fb08ad9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mr.res
deleted file mode 100644
index c0d74e2be..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mr_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mr_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mr_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms.res
deleted file mode 100644
index a3087ac08..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_BN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_BN.res
deleted file mode 100644
index 97b876423..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_BN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_ID.res
deleted file mode 100644
index 7ec9c89f4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_MY.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_MY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_SG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ms_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mt.res
deleted file mode 100644
index 45a36b5f7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mt_MT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mt_MT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mt_MT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mua.res
deleted file mode 100644
index 24ec5df9d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mua.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mua_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mua_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mua_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/my.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/my.res
deleted file mode 100644
index f7ea15944..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/my.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/my_MM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/my_MM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/my_MM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mzn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mzn.res
deleted file mode 100644
index 77788b826..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mzn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mzn_IR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mzn_IR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/mzn_IR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/naq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/naq.res
deleted file mode 100644
index f22301e2e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/naq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/naq_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/naq_NA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/naq_NA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb.res
deleted file mode 100644
index ab28693b9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb_NO.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb_SJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb_SJ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nb_SJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nd.res
deleted file mode 100644
index 813935834..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nd_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nd_ZW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nd_ZW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds.res
deleted file mode 100644
index 4a743ea11..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds_DE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds_NL.res
deleted file mode 100644
index 11ec6af64..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nds_NL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne.res
deleted file mode 100644
index 0f8e3b34e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne_IN.res
deleted file mode 100644
index d17aedc1f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne_NP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne_NP.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ne_NP.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl.res
deleted file mode 100644
index 1470863da..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_AW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_AW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_AW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_BE.res
deleted file mode 100644
index b0eff0210..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_BE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_BQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_BQ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_BQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_CW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_CW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_CW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_NL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_NL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_SR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_SR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_SR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_SX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_SX.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nl_SX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nmg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nmg.res
deleted file mode 100644
index 54b05e799..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nmg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nmg_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nmg_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nmg_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nn.res
deleted file mode 100644
index 032b466ea..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nn_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nn_NO.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nn_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nnh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nnh.res
deleted file mode 100644
index fc7da17ab..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nnh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nnh_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nnh_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nnh_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no.res
deleted file mode 100644
index e32950d58..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no_NO.res
deleted file mode 100644
index 6cf6c7017..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no_NO_NY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no_NO_NY.res
deleted file mode 100644
index 22b2d2a27..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/no_NO_NY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nqo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nqo.res
deleted file mode 100644
index 37b2607dc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nqo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nqo_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nqo_GN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nqo_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nus.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nus.res
deleted file mode 100644
index e8cbc2724..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nus.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nus_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nus_SS.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nus_SS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nyn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nyn.res
deleted file mode 100644
index 2169a4166..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nyn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nyn_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nyn_UG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nyn_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc.res
deleted file mode 100644
index ce0537b6a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc_ES.res
deleted file mode 100644
index cfdd43642..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc_ES.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc_FR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/oc_FR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om.res
deleted file mode 100644
index b9c6145e0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om_ET.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om_ET.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om_ET.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om_KE.res
deleted file mode 100644
index 901e54225..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/om_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/or.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/or.res
deleted file mode 100644
index 2f9b2f495..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/or.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/or_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/or_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/or_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os.res
deleted file mode 100644
index b8ddd2e20..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os_GE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os_GE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os_GE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os_RU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/os_RU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa.res
deleted file mode 100644
index b79d4c1a2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Arab.res
deleted file mode 100644
index fd965cfef..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Arab_PK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Arab_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Guru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Guru.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Guru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Guru_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Guru_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_Guru_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_IN.res
deleted file mode 100644
index 878ad2244..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_PK.res
deleted file mode 100644
index da7420d4f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pa_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pcm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pcm.res
deleted file mode 100644
index 7c8e197c9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pcm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pcm_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pcm_NG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pcm_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pl.res
deleted file mode 100644
index 9db9a0ebd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pl_PL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pl_PL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pl_PL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pnames.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pnames.icu
deleted file mode 100644
index 8abc640b6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pnames.icu
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pool.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pool.res
deleted file mode 100644
index 5aebbc7cc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pool.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/prg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/prg.res
deleted file mode 100644
index 36f834f47..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/prg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/prg_PL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/prg_PL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/prg_PL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps.res
deleted file mode 100644
index a37e26aed..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps_AF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps_PK.res
deleted file mode 100644
index e9c5d3b05..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ps_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt.res
deleted file mode 100644
index 759337c45..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_AO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_AO.res
deleted file mode 100644
index 792e2dbff..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_AO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_BR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_BR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_CH.res
deleted file mode 100644
index e13ff10f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_CV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_CV.res
deleted file mode 100644
index e13ff10f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_CV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_GQ.res
deleted file mode 100644
index e13ff10f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_GQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_GW.res
deleted file mode 100644
index e13ff10f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_GW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_LU.res
deleted file mode 100644
index e13ff10f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_MO.res
deleted file mode 100644
index b8408eca6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_MZ.res
deleted file mode 100644
index e13ff10f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_MZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_PT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_PT.res
deleted file mode 100644
index ac75011fd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_PT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_ST.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_ST.res
deleted file mode 100644
index e13ff10f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_ST.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_TL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_TL.res
deleted file mode 100644
index e13ff10f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pt_TL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu.res
deleted file mode 100644
index 0cdd3acf1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_BO.res
deleted file mode 100644
index bdcf5090a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_BO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_EC.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_EC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_PE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_PE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/qu_PE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/raj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/raj.res
deleted file mode 100644
index 8f0922f33..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/raj.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/raj_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/raj_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/raj_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/id.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/id.res
deleted file mode 100644
index 1f3a20b25..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/id.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/root.res
deleted file mode 100644
index 6555fdd7f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/res_index.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/res_index.res
deleted file mode 100644
index ce2ee32ab..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/res_index.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rm.res
deleted file mode 100644
index a9b3db78f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rm_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rm_CH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rm_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rn.res
deleted file mode 100644
index 7783c2d42..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rn_BI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rn_BI.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rn_BI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro.res
deleted file mode 100644
index e2f96a4ef..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro_MD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro_MD.res
deleted file mode 100644
index 7d486fd66..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro_MD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro_RO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro_RO.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ro_RO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rof.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rof.res
deleted file mode 100644
index ea074ff85..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rof.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rof_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rof_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rof_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/root.res
deleted file mode 100644
index 95dc445f6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru.res
deleted file mode 100644
index 87d43c734..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_BY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_BY.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_BY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_KG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_KG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_KG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_KZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_KZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_KZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_MD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_MD.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_MD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_RU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_RU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_UA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_UA.res
deleted file mode 100644
index cb11d5d0d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ru_UA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rw.res
deleted file mode 100644
index 83bc8bf35..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rw_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rw_RW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rw_RW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rwk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rwk.res
deleted file mode 100644
index b91cc4ed6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rwk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rwk_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rwk_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rwk_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sa.res
deleted file mode 100644
index a3dba8855..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sa_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sa_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sa_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sah.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sah.res
deleted file mode 100644
index 25d45f900..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sah.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sah_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sah_RU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sah_RU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/saq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/saq.res
deleted file mode 100644
index 243a0b120..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/saq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/saq_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/saq_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/saq_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat.res
deleted file mode 100644
index b19aee442..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_IN.res
deleted file mode 100644
index 357bc16b6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_Olck.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_Olck.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_Olck.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_Olck_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_Olck_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sat_Olck_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sbp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sbp.res
deleted file mode 100644
index f854f7e1f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sbp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sbp_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sbp_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sbp_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sc.res
deleted file mode 100644
index 24150e2cd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sc_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sc_IT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sc_IT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd.res
deleted file mode 100644
index c7ca0a6d7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Arab.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Arab_PK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Arab_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Deva.res
deleted file mode 100644
index 36bc09d3d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Deva_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_Deva_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_IN.res
deleted file mode 100644
index 4524fc04e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_PK.res
deleted file mode 100644
index b3ebdbe0d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sd_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se.res
deleted file mode 100644
index c1c32cb61..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_FI.res
deleted file mode 100644
index baa77dfb2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_NO.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_SE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/se_SE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/seh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/seh.res
deleted file mode 100644
index 2a723e9ca..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/seh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/seh_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/seh_MZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/seh_MZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ses.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ses.res
deleted file mode 100644
index a0994dd83..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ses.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ses_ML.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ses_ML.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ses_ML.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sg.res
deleted file mode 100644
index 376c517bf..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sg_CF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sg_CF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sg_CF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh.res
deleted file mode 100644
index f9a012b53..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_BA.res
deleted file mode 100644
index 175a35dba..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_CS.res
deleted file mode 100644
index 97f0c2723..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_YU.res
deleted file mode 100644
index 97f0c2723..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sh_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi.res
deleted file mode 100644
index e8de3e2bc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Latn.res
deleted file mode 100644
index b647a8eea..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Latn_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Latn_MA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Latn_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_MA.res
deleted file mode 100644
index d3e57028c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Tfng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Tfng.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Tfng.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Tfng_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Tfng_MA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/shi_Tfng_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/si.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/si.res
deleted file mode 100644
index e7ccaa75e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/si.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/si_LK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/si_LK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/si_LK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sk.res
deleted file mode 100644
index 5a1f99814..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sk_SK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sk_SK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sk_SK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sl.res
deleted file mode 100644
index 14d8420cd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sl_SI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sl_SI.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sl_SI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/smn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/smn.res
deleted file mode 100644
index 5fee767b6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/smn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/smn_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/smn_FI.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/smn_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sn.res
deleted file mode 100644
index 63f933ca4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sn_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sn_ZW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sn_ZW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so.res
deleted file mode 100644
index 13a12c9a6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_DJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_DJ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_DJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_ET.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_ET.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_ET.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_KE.res
deleted file mode 100644
index ca8fa3fc4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_SO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_SO.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/so_SO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq.res
deleted file mode 100644
index 96c7d3199..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_AL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_AL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_AL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_MK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_MK.res
deleted file mode 100644
index 63dbe6efe..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_MK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_XK.res
deleted file mode 100644
index 63dbe6efe..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sq_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr.res
deleted file mode 100644
index cafedc134..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_BA.res
deleted file mode 100644
index 9d260763b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_CS.res
deleted file mode 100644
index bed661b56..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_BA.res
deleted file mode 100644
index 3b6bce4a6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_CS.res
deleted file mode 100644
index c75668d17..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_ME.res
deleted file mode 100644
index 6c6b5dc50..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_RS.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_XK.res
deleted file mode 100644
index b83e7181e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_YU.res
deleted file mode 100644
index c75668d17..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Cyrl_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn.res
deleted file mode 100644
index 5ddf2186d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_BA.res
deleted file mode 100644
index f8fd47dea..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_CS.res
deleted file mode 100644
index 97f0c2723..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_ME.res
deleted file mode 100644
index db1eb8c59..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_RS.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_XK.res
deleted file mode 100644
index 65dcafca0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_YU.res
deleted file mode 100644
index 97f0c2723..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_Latn_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_ME.res
deleted file mode 100644
index 844ad1227..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_RS.res
deleted file mode 100644
index c75668d17..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_XK.res
deleted file mode 100644
index 8d1dd3e03..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_YU.res
deleted file mode 100644
index bed661b56..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sr_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su.res
deleted file mode 100644
index 9cba4db76..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_ID.res
deleted file mode 100644
index 730e858fb..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_Latn.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_Latn_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_Latn_ID.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/su_Latn_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/supplementalData.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/supplementalData.res
deleted file mode 100644
index 5f3407b3a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/supplementalData.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv.res
deleted file mode 100644
index 816f58e87..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_AX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_AX.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_AX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_FI.res
deleted file mode 100644
index 2c44361ac..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_SE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sv_SE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw.res
deleted file mode 100644
index cb4632811..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_CD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_CD.res
deleted file mode 100644
index 05012f82e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_CD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_KE.res
deleted file mode 100644
index eac94a7f1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_UG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/sw_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr.res
deleted file mode 100644
index 46b63c0e6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr_IQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr_IQ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr_IQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr_SY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr_SY.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/syr_SY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/szl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/szl.res
deleted file mode 100644
index 9c3794542..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/szl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/szl_PL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/szl_PL.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/szl_PL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta.res
deleted file mode 100644
index 08783de95..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_LK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_LK.res
deleted file mode 100644
index 1bde25438..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_LK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_MY.res
deleted file mode 100644
index 552ff9baa..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_MY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_SG.res
deleted file mode 100644
index 552ff9baa..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ta_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/te.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/te.res
deleted file mode 100644
index 264421fa5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/te.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/te_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/te_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/te_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo.res
deleted file mode 100644
index 201b7a6c8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo_KE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo_UG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/teo_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tg.res
deleted file mode 100644
index a76061d2a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tg_TJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tg_TJ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tg_TJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th.res
deleted file mode 100644
index 6df7fa50c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th_TH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th_TH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th_TH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th_TH_TRADITIONAL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th_TH_TRADITIONAL.res
deleted file mode 100644
index 8e033e31d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/th_TH_TRADITIONAL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti.res
deleted file mode 100644
index d770f4299..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti_ER.res
deleted file mode 100644
index 07c490bc5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti_ET.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti_ET.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ti_ET.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tk.res
deleted file mode 100644
index 311d10f68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tk_TM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tk_TM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tk_TM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tl.res
deleted file mode 100644
index 6f1e978a7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tl_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tl_PH.res
deleted file mode 100644
index 140b38955..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tl_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/to.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/to.res
deleted file mode 100644
index 70e5de7fd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/to.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/to_TO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/to_TO.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/to_TO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tok.res
deleted file mode 100644
index 241378458..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tok_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tok_001.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tok_001.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr.res
deleted file mode 100644
index f055fb67c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr_CY.res
deleted file mode 100644
index a0b0e418a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr_CY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr_TR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr_TR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tr_TR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tt.res
deleted file mode 100644
index 2f68c8c17..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tt_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tt_RU.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tt_RU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/twq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/twq.res
deleted file mode 100644
index 7dc6ef969..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/twq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/twq_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/twq_NE.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/twq_NE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tzm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tzm.res
deleted file mode 100644
index 7edfc5e10..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tzm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tzm_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tzm_MA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/tzm_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ug.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ug.res
deleted file mode 100644
index 0a2b23cda..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ug.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ug_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ug_CN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ug_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uk.res
deleted file mode 100644
index 1f674af9a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uk_UA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uk_UA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uk_UA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/res_index.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/res_index.res
deleted file mode 100644
index c5ff69fab..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/res_index.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/root.res
deleted file mode 100644
index 4ed0a0173..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/units.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/units.res
deleted file mode 100644
index 733f7ad26..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/units.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uprops.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uprops.icu
deleted file mode 100644
index 2cfd5a784..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uprops.icu
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur.res
deleted file mode 100644
index 5d468047f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur_IN.res
deleted file mode 100644
index cd2005cbe..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur_PK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ur_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz.res
deleted file mode 100644
index 85007c4df..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_AF.res
deleted file mode 100644
index 32df3db00..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Arab.res
deleted file mode 100644
index 10c17981e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Arab_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Arab_AF.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Arab_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Cyrl.res
deleted file mode 100644
index 1870952d9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Cyrl_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Cyrl_UZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Cyrl_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Latn.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Latn_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Latn_UZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_Latn_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_UZ.res
deleted file mode 100644
index a00f94162..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uz_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai.res
deleted file mode 100644
index 17c4890de..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_LR.res
deleted file mode 100644
index 7015579c6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Latn.res
deleted file mode 100644
index b16036e51..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Latn_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Latn_LR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Latn_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Vaii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Vaii.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Vaii.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Vaii_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Vaii_LR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vai_Vaii_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vec.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vec.res
deleted file mode 100644
index e8b251021..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vec.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vec_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vec_IT.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vec_IT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vi.res
deleted file mode 100644
index 835f38253..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vi_VN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vi_VN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vi_VN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vmw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vmw.res
deleted file mode 100644
index 88a4c0e97..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vmw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vmw_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vmw_MZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vmw_MZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vun.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vun.res
deleted file mode 100644
index 5df1a4bba..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vun.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vun_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vun_TZ.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/vun_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wae.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wae.res
deleted file mode 100644
index b70aaba0a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wae.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wae_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wae_CH.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wae_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wo.res
deleted file mode 100644
index 9286dde01..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wo_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wo_SN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/wo_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xh.res
deleted file mode 100644
index 92932fd04..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xh_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xh_ZA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xh_ZA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xnr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xnr.res
deleted file mode 100644
index bbb706754..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xnr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xnr_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xnr_IN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xnr_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xog.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xog.res
deleted file mode 100644
index 382c7850b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xog.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xog_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xog_UG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/xog_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yav.res
deleted file mode 100644
index 2fa6e3d53..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yav.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yav_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yav_CM.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yav_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yi.res
deleted file mode 100644
index e0bbf0933..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yi_UA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yi_UA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yi_UA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo.res
deleted file mode 100644
index 751acb1b8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo_BJ.res
deleted file mode 100644
index a8ed971a1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo_BJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo_NG.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yo_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl.res
deleted file mode 100644
index 23ae7bfc3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_BR.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_BR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_CO.res
deleted file mode 100644
index 0b5e9d561..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_CO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_VE.res
deleted file mode 100644
index 0b5e9d561..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yrl_VE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue.res
deleted file mode 100644
index 9d8846935..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_CN.res
deleted file mode 100644
index 99874db04..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_HK.res
deleted file mode 100644
index 8efeae6d8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hans.res
deleted file mode 100644
index d27bc756e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hans.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hans_CN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hans_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hant.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hant.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hant_HK.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/yue_Hant_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/za.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/za.res
deleted file mode 100644
index 354de44d4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/za.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/za_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/za_CN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/za_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zgh.res
deleted file mode 100644
index 567f24c40..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zgh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zgh_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zgh_MA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zgh_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh.res
deleted file mode 100644
index f0c4fbc20..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_CN.res
deleted file mode 100644
index 2d7023da3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_HK.res
deleted file mode 100644
index 37fc52325..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_CN.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_HK.res
deleted file mode 100644
index da5be8d6b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_MO.res
deleted file mode 100644
index 68609cb57..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_SG.res
deleted file mode 100644
index f7e4ce883..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hans_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant.res
deleted file mode 100644
index b7b871eef..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_HK.res
deleted file mode 100644
index 6d4cae3bf..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_MO.res
deleted file mode 100644
index 29d96dc19..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_TW.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_Hant_TW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_MO.res
deleted file mode 100644
index 372bcd510..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_SG.res
deleted file mode 100644
index 111414b0f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_TW.res
deleted file mode 100644
index a537c775b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zh_TW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/af.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/af.res
deleted file mode 100644
index 472170e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/af.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/agq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/agq.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/agq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ak.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ak.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ak.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/am.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/am.res
deleted file mode 100644
index fb854f2d0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/am.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar.res
deleted file mode 100644
index b99173408..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar_SA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar_SA.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar_SA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar_XB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar_XB.res
deleted file mode 100644
index 42db11127..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ar_XB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ars.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ars.res
deleted file mode 100644
index 5fc603617..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ars.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/as.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/as.res
deleted file mode 100644
index 66c069883..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/as.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/asa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/asa.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/asa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ast.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ast.res
deleted file mode 100644
index feefc25e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ast.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az.res
deleted file mode 100644
index 4282b8567..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_AZ.res
deleted file mode 100644
index ffe47a922..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Cyrl.res
deleted file mode 100644
index 68ea4a63e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Latn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Latn_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Latn_AZ.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/az_Latn_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bas.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bas.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/be.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/be.res
deleted file mode 100644
index e005c6397..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/be.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bem.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bem.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bem.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bez.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bez.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bez.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bg.res
deleted file mode 100644
index b99288f43..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bgc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bgc.res
deleted file mode 100644
index 2bfee2f41..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bgc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bho.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bho.res
deleted file mode 100644
index 8c60c03e3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bho.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/blo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/blo.res
deleted file mode 100644
index 0e9b4f259..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/blo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bm.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bn.res
deleted file mode 100644
index 4ea5674ad..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bo.res
deleted file mode 100644
index 15d1972c1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/br.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/br.res
deleted file mode 100644
index 22da6e241..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/br.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/brx.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/brx.res
deleted file mode 100644
index 6214d4e46..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/brx.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs.res
deleted file mode 100644
index e6f636541..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_BA.res
deleted file mode 100644
index 5ddcd9701..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Cyrl.res
deleted file mode 100644
index e5eae5f6b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Latn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Latn_BA.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/bs_Latn_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ca.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ca.res
deleted file mode 100644
index 8eb5512ec..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ca.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ccp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ccp.res
deleted file mode 100644
index 84b491cb3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ccp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ce.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ce.res
deleted file mode 100644
index 926b53a78..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ce.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ceb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ceb.res
deleted file mode 100644
index 38cf0df05..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ceb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cgg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cgg.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cgg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/chr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/chr.res
deleted file mode 100644
index 5d1692253..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/chr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ckb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ckb.res
deleted file mode 100644
index 4f2502b78..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ckb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cs.res
deleted file mode 100644
index d14f86a48..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/csw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/csw.res
deleted file mode 100644
index f74e643fb..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/csw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cv.res
deleted file mode 100644
index 1b7beeba5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cy.res
deleted file mode 100644
index 69b2fdad1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/cy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/da.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/da.res
deleted file mode 100644
index 71d69967b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/da.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dav.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dav.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/de.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/de.res
deleted file mode 100644
index db58599a6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/de.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/de_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/de_CH.res
deleted file mode 100644
index f51822830..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/de_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dje.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dje.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dje.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/doi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/doi.res
deleted file mode 100644
index b987881cc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/doi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dsb.res
deleted file mode 100644
index c2c3dd7ba..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dua.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dua.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dyo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dyo.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dyo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dz.res
deleted file mode 100644
index 53d63f5c4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/dz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ebu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ebu.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ebu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ee.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ee.res
deleted file mode 100644
index adc75d3a3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ee.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/el.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/el.res
deleted file mode 100644
index 9913a7324..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/el.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en.res
deleted file mode 100644
index c6041f845..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_001.res
deleted file mode 100644
index 6561df2d8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_001.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_150.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_150.res
deleted file mode 100644
index 362032d02..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_150.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AE.res
deleted file mode 100644
index a271fc6f8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AG.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AI.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AT.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AU.res
deleted file mode 100644
index d4dc636ef..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_AU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BB.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BE.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BM.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BS.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BW.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BZ.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_BZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CA.res
deleted file mode 100644
index e801e4417..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CC.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CH.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CK.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CM.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CX.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CY.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_CY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DE.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DG.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DK.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DM.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_DM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ER.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FI.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FJ.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FK.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FM.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_FM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GB.res
deleted file mode 100644
index d89332489..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GD.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GG.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GH.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GI.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GM.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GU.res
deleted file mode 100644
index fad43eca4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GY.res
deleted file mode 100644
index 8c29af895..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_GY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_HK.res
deleted file mode 100644
index 1139448c4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ID.res
deleted file mode 100644
index 31411da0c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IE.res
deleted file mode 100644
index 0e0974f3e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IL.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IM.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IN.res
deleted file mode 100644
index e3b3ddc1a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IO.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_IO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_JE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_JE.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_JE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_JM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_JM.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_JM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KE.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KI.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KN.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KY.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_KY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LC.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LR.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LS.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_LS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MG.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MH.res
deleted file mode 100644
index 68c034e44..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MO.res
deleted file mode 100644
index 38e1731ca..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MP.res
deleted file mode 100644
index 68c034e44..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MP.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MS.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MT.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MU.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MV.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MW.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MY.res
deleted file mode 100644
index 877f2c382..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_MY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NA.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NF.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NG.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NH.res
deleted file mode 100644
index 3063e89e1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NL.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NR.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NU.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NZ.res
deleted file mode 100644
index 05e5e7896..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_NZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PG.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PK.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PN.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PW.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_PW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_RH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_RH.res
deleted file mode 100644
index 4e02dfd3a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_RH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_RW.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_RW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SB.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SC.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SD.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SE.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SG.res
deleted file mode 100644
index 7f3bcebd2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SH.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SI.res
deleted file mode 100644
index 3197210d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SL.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SS.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SX.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SZ.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_SZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TC.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TK.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TO.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TT.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TV.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TZ.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_UG.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VC.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VG.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VU.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_VU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_WS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_WS.res
deleted file mode 100644
index b8f78db68..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_WS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_XA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_XA.res
deleted file mode 100644
index eb53027d0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_XA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZA.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZM.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZW.res
deleted file mode 100644
index 7ca6cb208..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/en_ZW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/eo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/eo.res
deleted file mode 100644
index a341a2ef6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/eo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es.res
deleted file mode 100644
index 4e4ed0273..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_419.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_419.res
deleted file mode 100644
index 6ec13e857..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_419.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_AR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_AR.res
deleted file mode 100644
index a57e5b343..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_AR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BO.res
deleted file mode 100644
index 7ce4e9994..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BR.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BZ.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_BZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CL.res
deleted file mode 100644
index 330c7f6b2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CO.res
deleted file mode 100644
index 511410240..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CR.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CU.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_CU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_DO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_DO.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_DO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_EC.res
deleted file mode 100644
index 3a863d154..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_EC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_GT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_GT.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_GT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_HN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_HN.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_HN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_MX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_MX.res
deleted file mode 100644
index 52a9ebdf2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_MX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_NI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_NI.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_NI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PA.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PE.res
deleted file mode 100644
index 48ef798de..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PR.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PY.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_PY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_SV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_SV.res
deleted file mode 100644
index d1d289361..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_SV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_US.res
deleted file mode 100644
index e3f1b79b7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_US.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_UY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_UY.res
deleted file mode 100644
index c47568631..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_UY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_VE.res
deleted file mode 100644
index 3a7b717b5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/es_VE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/et.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/et.res
deleted file mode 100644
index facc30538..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/et.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/eu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/eu.res
deleted file mode 100644
index b11d8af0a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/eu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ewo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ewo.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ewo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fa.res
deleted file mode 100644
index e635b8c91..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Adlm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Adlm.res
deleted file mode 100644
index ff97e6b7e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Adlm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_CM.res
deleted file mode 100644
index 89650b821..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_GN.res
deleted file mode 100644
index d584d5682..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_CM.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_GN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_MR.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_SN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_Latn_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_MR.res
deleted file mode 100644
index 3467dcfbf..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_SN.res
deleted file mode 100644
index 7a56aa1b6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ff_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fi.res
deleted file mode 100644
index d8873c55c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fil.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fil.res
deleted file mode 100644
index 85c66253f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fil.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fil_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fil_PH.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fil_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fo.res
deleted file mode 100644
index ecfeaaf3a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr.res
deleted file mode 100644
index b2f495df3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr_CA.res
deleted file mode 100644
index e336013b6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr_GF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr_GF.res
deleted file mode 100644
index 76e81bf0c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fr_GF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fur.res
deleted file mode 100644
index e1b85a9b3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fy.res
deleted file mode 100644
index 5da2556de..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/fy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ga.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ga.res
deleted file mode 100644
index 4f222350e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ga.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gd.res
deleted file mode 100644
index 7d70406ca..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gl.res
deleted file mode 100644
index 003bf4adf..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gsw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gsw.res
deleted file mode 100644
index a662c0837..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gsw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gu.res
deleted file mode 100644
index 1ddc3d263..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/guz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/guz.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/guz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gv.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/gv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ha.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ha.res
deleted file mode 100644
index ddd90a7bd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ha.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/haw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/haw.res
deleted file mode 100644
index 5c5822f77..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/haw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/he.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/he.res
deleted file mode 100644
index 58ebf1c97..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/he.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/he_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/he_IL.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/he_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hi.res
deleted file mode 100644
index 32c1e8763..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hi_Latn.res
deleted file mode 100644
index a71ed32ea..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hr.res
deleted file mode 100644
index 0ebe217fc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hsb.res
deleted file mode 100644
index 86977e8fd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hu.res
deleted file mode 100644
index 3907039b6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hy.res
deleted file mode 100644
index 0ebd72ef3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/hy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ia.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ia.res
deleted file mode 100644
index a3808a1dc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ia.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/id.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/id.res
deleted file mode 100644
index 5259896ed..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/id.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/id_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/id_ID.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/id_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ie.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ie.res
deleted file mode 100644
index 1d6222395..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ie.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ig.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ig.res
deleted file mode 100644
index 40b1b3e73..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ig.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ii.res
deleted file mode 100644
index ec4d00444..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ii.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/in.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/in.res
deleted file mode 100644
index 0484a2766..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/in.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/in_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/in_ID.res
deleted file mode 100644
index 08051efe8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/in_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/is.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/is.res
deleted file mode 100644
index e6f87f8c2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/is.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/it.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/it.res
deleted file mode 100644
index ed38b45ef..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/it.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/iw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/iw.res
deleted file mode 100644
index 63f504da0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/iw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/iw_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/iw_IL.res
deleted file mode 100644
index 7b49d6695..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/iw_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ja.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ja.res
deleted file mode 100644
index b2d52d8b6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ja.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jgo.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jgo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jmc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jmc.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jmc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jv.res
deleted file mode 100644
index adc1995b7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/jv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ka.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ka.res
deleted file mode 100644
index 0ec89ddad..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ka.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kab.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kam.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kam.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kam.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kde.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kde.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kde.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kea.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kea.res
deleted file mode 100644
index c0dc841a7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kea.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kgp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kgp.res
deleted file mode 100644
index d71de6d4b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kgp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/khq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/khq.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/khq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ki.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ki.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ki.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kk.res
deleted file mode 100644
index 3daf77e7d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kkj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kkj.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kkj.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kl.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kln.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/km.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/km.res
deleted file mode 100644
index e040e4a76..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/km.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kn.res
deleted file mode 100644
index 6b083d8f8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ko.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ko.res
deleted file mode 100644
index a2ef473ad..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ko.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ko_KP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ko_KP.res
deleted file mode 100644
index 9066c08d3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ko_KP.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kok.res
deleted file mode 100644
index 1e375d04e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks.res
deleted file mode 100644
index b20ae127d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Arab.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Arab_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Arab_IN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Arab_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Deva.res
deleted file mode 100644
index ceb582a4c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_IN.res
deleted file mode 100644
index 0baf033c4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ks_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksb.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksf.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksf.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksf.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksh.res
deleted file mode 100644
index 5a147d1d0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ksh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ku.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ku.res
deleted file mode 100644
index 6bf3443a1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ku.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kw.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv.res
deleted file mode 100644
index 6b25ab98f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Deva.res
deleted file mode 100644
index e036b5b2f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Orya.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Orya.res
deleted file mode 100644
index df8472b93..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Orya.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Telu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Telu.res
deleted file mode 100644
index 54f9e78cc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/kxv_Telu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ky.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ky.res
deleted file mode 100644
index 9cf9b3393..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ky.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lag.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lag.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lag.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lb.res
deleted file mode 100644
index 0423e5844..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lg.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lij.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lij.res
deleted file mode 100644
index e44086ead..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lij.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lkt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lkt.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lkt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lmo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lmo.res
deleted file mode 100644
index fb8beb2a4..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lmo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ln.res
deleted file mode 100644
index 319769a36..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lo.res
deleted file mode 100644
index 077c9c72e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lrc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lrc.res
deleted file mode 100644
index 5630f6f75..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lrc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lt.res
deleted file mode 100644
index c2e311fe6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lu.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/luo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/luo.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/luo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/luy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/luy.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/luy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lv.res
deleted file mode 100644
index 6bdfe5622..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/lv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mai.res
deleted file mode 100644
index b8a72fb9c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mai.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mas.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mas.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mer.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mer.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mer.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mfe.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mfe.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mfe.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mg.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mgh.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mgh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mgo.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mgo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mi.res
deleted file mode 100644
index e46b2f031..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mk.res
deleted file mode 100644
index 9c2939499..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ml.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ml.res
deleted file mode 100644
index dca655376..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ml.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mn.res
deleted file mode 100644
index 8bdc88d49..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni.res
deleted file mode 100644
index b355d45f3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_Beng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_Beng.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_Beng.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_Beng_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_Beng_IN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_Beng_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_IN.res
deleted file mode 100644
index 36f72328d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mni_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mo.res
deleted file mode 100644
index a9170f3c8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mr.res
deleted file mode 100644
index b1dbde9fc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ms.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ms.res
deleted file mode 100644
index fa294096c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ms.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ms_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ms_ID.res
deleted file mode 100644
index 6f9106360..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ms_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mt.res
deleted file mode 100644
index 5ce41e06d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mua.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mua.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/my.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/my.res
deleted file mode 100644
index 7636c7344..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/my.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mzn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mzn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/mzn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/naq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/naq.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/naq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nb.res
deleted file mode 100644
index f6a6268b5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nd.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nds.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nds.res
deleted file mode 100644
index 10c9c02ab..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nds.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ne.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ne.res
deleted file mode 100644
index 8b098e440..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ne.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ne_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ne_IN.res
deleted file mode 100644
index e24f383d2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ne_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nl.res
deleted file mode 100644
index 3607457fc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nl_SR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nl_SR.res
deleted file mode 100644
index ef3ede41d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nl_SR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nmg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nmg.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nmg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nn.res
deleted file mode 100644
index a1ecebafa..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nn_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nn_NO.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nn_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nnh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nnh.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nnh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no.res
deleted file mode 100644
index 2bc2bc1fd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no_NO.res
deleted file mode 100644
index 0a8049de6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no_NO_NY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no_NO_NY.res
deleted file mode 100644
index 6e591d1d1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/no_NO_NY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nqo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nqo.res
deleted file mode 100644
index 1a3548ce2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nqo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nus.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nus.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nus.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nyn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nyn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/nyn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/oc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/oc.res
deleted file mode 100644
index 84d906ac0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/oc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/om.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/om.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/om.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/or.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/or.res
deleted file mode 100644
index ea281435a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/or.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/os.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/os.res
deleted file mode 100644
index f02308223..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/os.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa.res
deleted file mode 100644
index c28b5cfd6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Arab.res
deleted file mode 100644
index 68ea4a63e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Arab_PK.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Arab_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Guru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Guru.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Guru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Guru_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Guru_IN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_Guru_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_IN.res
deleted file mode 100644
index 7c814d879..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_PK.res
deleted file mode 100644
index c30d8d6c5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pa_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pcm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pcm.res
deleted file mode 100644
index db5ad9c17..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pcm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pl.res
deleted file mode 100644
index ede62d2ec..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pool.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pool.res
deleted file mode 100644
index ef3bc4bf9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pool.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/prg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/prg.res
deleted file mode 100644
index 068a552a6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/prg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ps.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ps.res
deleted file mode 100644
index d9ab2db54..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ps.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ps_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ps_PK.res
deleted file mode 100644
index 40743f133..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ps_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt.res
deleted file mode 100644
index 6b4d9e88a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_AO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_AO.res
deleted file mode 100644
index a8fd9d691..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_AO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_CH.res
deleted file mode 100644
index 42a125a3a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_CV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_CV.res
deleted file mode 100644
index ad5347834..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_CV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_GQ.res
deleted file mode 100644
index 42a125a3a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_GQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_GW.res
deleted file mode 100644
index a8fd9d691..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_GW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_LU.res
deleted file mode 100644
index 42a125a3a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_MO.res
deleted file mode 100644
index a8fd9d691..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_MZ.res
deleted file mode 100644
index a8fd9d691..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_MZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_PT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_PT.res
deleted file mode 100644
index 12ec32082..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_PT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_ST.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_ST.res
deleted file mode 100644
index a8fd9d691..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_ST.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_TL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_TL.res
deleted file mode 100644
index a8fd9d691..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/pt_TL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu.res
deleted file mode 100644
index d8015d558..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu_BO.res
deleted file mode 100644
index 84d04af1a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu_BO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu_EC.res
deleted file mode 100644
index 347cf8b22..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/qu_EC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/raj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/raj.res
deleted file mode 100644
index 0f266fd39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/raj.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/res_index.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/res_index.res
deleted file mode 100644
index e3f2d04fb..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/res_index.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rm.res
deleted file mode 100644
index 51e27e575..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ro.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ro.res
deleted file mode 100644
index 2c5cfee1c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ro.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rof.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rof.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rof.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/root.res
deleted file mode 100644
index 1dfe3730b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ru.res
deleted file mode 100644
index 61780efb7..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rw.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rwk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rwk.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/rwk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sa.res
deleted file mode 100644
index 2fb521c42..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sah.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sah.res
deleted file mode 100644
index e9e9515c8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sah.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/saq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/saq.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/saq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat.res
deleted file mode 100644
index e9fe302e5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_IN.res
deleted file mode 100644
index ad45fd8c8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_Olck.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_Olck.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_Olck.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_Olck_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_Olck_IN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sat_Olck_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sbp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sbp.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sbp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sc.res
deleted file mode 100644
index 867a15118..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd.res
deleted file mode 100644
index c7fa062ed..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Arab.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Arab_PK.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Arab_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Deva.res
deleted file mode 100644
index 981ab7b95..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Deva_IN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_Deva_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_IN.res
deleted file mode 100644
index 58c721ff5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_PK.res
deleted file mode 100644
index 91e953bb3..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sd_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/se.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/se.res
deleted file mode 100644
index cb70e8788..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/se.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/se_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/se_FI.res
deleted file mode 100644
index 3cf979ee9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/se_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/seh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/seh.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/seh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ses.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ses.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ses.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sg.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh.res
deleted file mode 100644
index 1d064a933..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_BA.res
deleted file mode 100644
index 56b7574e8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_CS.res
deleted file mode 100644
index 49db8f386..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_YU.res
deleted file mode 100644
index 49db8f386..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sh_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Latn.res
deleted file mode 100644
index 68ea4a63e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_MA.res
deleted file mode 100644
index bdf50c4c2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Tfng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Tfng.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Tfng.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Tfng_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Tfng_MA.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/shi_Tfng_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/si.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/si.res
deleted file mode 100644
index d59b1e29a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/si.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sk.res
deleted file mode 100644
index 3be4c61f1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sl.res
deleted file mode 100644
index 3c4c4feed..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/smn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/smn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/smn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/so.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/so.res
deleted file mode 100644
index c6495d2d2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/so.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sq.res
deleted file mode 100644
index e83117340..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr.res
deleted file mode 100644
index 40e69c913..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_BA.res
deleted file mode 100644
index f2fb0cbe6..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_CS.res
deleted file mode 100644
index 4dba3a684..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_BA.res
deleted file mode 100644
index 6033aa7dc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_CS.res
deleted file mode 100644
index f30ff18ad..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_RS.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_XK.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_YU.res
deleted file mode 100644
index f30ff18ad..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Cyrl_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn.res
deleted file mode 100644
index fb8c2fb31..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_BA.res
deleted file mode 100644
index 61ce3bd64..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_CS.res
deleted file mode 100644
index 49db8f386..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_ME.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_RS.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_YU.res
deleted file mode 100644
index 49db8f386..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_Latn_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_ME.res
deleted file mode 100644
index 18cd82d9f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_RS.res
deleted file mode 100644
index f30ff18ad..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_XK.res
deleted file mode 100644
index f810d5386..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_YU.res
deleted file mode 100644
index 4dba3a684..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sr_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su.res
deleted file mode 100644
index 870f6029e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_ID.res
deleted file mode 100644
index ff696cb9d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_Latn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_Latn_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_Latn_ID.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/su_Latn_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sv.res
deleted file mode 100644
index a052e078a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sw.res
deleted file mode 100644
index e1ab3b57f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sw_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sw_KE.res
deleted file mode 100644
index e93d3451c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/sw_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/syr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/syr.res
deleted file mode 100644
index 127f6b037..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/syr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/szl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/szl.res
deleted file mode 100644
index 7a46780e9..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/szl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta.res
deleted file mode 100644
index 6d81db3d5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta_MY.res
deleted file mode 100644
index a369af77e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta_MY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta_SG.res
deleted file mode 100644
index a369af77e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ta_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/te.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/te.res
deleted file mode 100644
index 44ce0525f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/te.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/teo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/teo.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/teo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tg.res
deleted file mode 100644
index 018a0cf29..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/th.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/th.res
deleted file mode 100644
index 90d118d90..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/th.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ti.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ti.res
deleted file mode 100644
index a7674923f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ti.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tk.res
deleted file mode 100644
index 334c39555..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tl.res
deleted file mode 100644
index fafa83a39..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tl_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tl_PH.res
deleted file mode 100644
index 8fa41146c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tl_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/to.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/to.res
deleted file mode 100644
index 602749388..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/to.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tok.res
deleted file mode 100644
index be78286b1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tr.res
deleted file mode 100644
index 6f971138f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tt.res
deleted file mode 100644
index a11894254..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/twq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/twq.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/twq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tzm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tzm.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tzm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ug.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ug.res
deleted file mode 100644
index 9cdd353b0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ug.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uk.res
deleted file mode 100644
index e18492c60..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ur.res
deleted file mode 100644
index 9a4f3a0c8..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ur_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ur_IN.res
deleted file mode 100644
index ba4ac1b66..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/ur_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz.res
deleted file mode 100644
index dc40eb7d2..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_AF.res
deleted file mode 100644
index b267b16ba..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Arab.res
deleted file mode 100644
index 9f494aa57..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Arab_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Arab_AF.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Arab_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Cyrl.res
deleted file mode 100644
index 528ad7665..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Latn.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Latn_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Latn_UZ.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_Latn_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_UZ.res
deleted file mode 100644
index 51a44ef19..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/uz_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_LR.res
deleted file mode 100644
index 832c7c47f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Latn.res
deleted file mode 100644
index 68ea4a63e..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Vaii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Vaii.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Vaii.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Vaii_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Vaii_LR.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vai_Vaii_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vec.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vec.res
deleted file mode 100644
index bfbac0e84..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vec.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vi.res
deleted file mode 100644
index bac4fbd4c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vmw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vmw.res
deleted file mode 100644
index 23618ff8d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vmw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vun.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vun.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/vun.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/wae.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/wae.res
deleted file mode 100644
index 0f0238297..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/wae.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/wo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/wo.res
deleted file mode 100644
index 2943cc639..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/wo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xh.res
deleted file mode 100644
index 49dae7e06..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xnr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xnr.res
deleted file mode 100644
index 05c57bb8a..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xnr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xog.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xog.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/xog.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yav.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yav.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yi.res
deleted file mode 100644
index 270cc5b5c..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yo.res
deleted file mode 100644
index 47b1c8371..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yo_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yo_BJ.res
deleted file mode 100644
index 96de4a9da..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yo_BJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl.res
deleted file mode 100644
index cda35b5cd..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl_CO.res
deleted file mode 100644
index add0b8f59..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl_CO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl_VE.res
deleted file mode 100644
index add0b8f59..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yrl_VE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue.res
deleted file mode 100644
index 2259a790d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_CN.res
deleted file mode 100644
index 5f8e44089..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_HK.res
deleted file mode 100644
index 747f0e919..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hans.res
deleted file mode 100644
index 0537e1214..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hans.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hans_CN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hans_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hant.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hant.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hant_HK.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/yue_Hant_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/za.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/za.res
deleted file mode 100644
index b12a4fed0..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/za.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zgh.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zgh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh.res
deleted file mode 100644
index a6172ab90..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_CN.res
deleted file mode 100644
index fa3dff55f..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_HK.res
deleted file mode 100644
index 5cc52df23..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans.res
deleted file mode 100644
index 958ba7e21..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans_CN.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans_SG.res
deleted file mode 100644
index eee3dd1f5..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hans_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant.res
deleted file mode 100644
index 8edcc8f96..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_HK.res
deleted file mode 100644
index 11fb3d3ca..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_MO.res
deleted file mode 100644
index e2808ae5d..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_TW.res
deleted file mode 100644
index f51df9526..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_Hant_TW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_MO.res
deleted file mode 100644
index b50811734..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_SG.res
deleted file mode 100644
index d7368839b..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_TW.res
deleted file mode 100644
index 0e3aba820..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zh_TW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zu.res
deleted file mode 100644
index 6bcfa5bdc..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/zu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zu.res
deleted file mode 100644
index cfd03e4e1..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zu_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zu_ZA.res
deleted file mode 100644
index dc0fe6420..000000000
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zu_ZA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af.res
new file mode 100644
index 000000000..494dd8008
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af_NA.res
new file mode 100644
index 000000000..01192065a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af_NA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af_ZA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/af_ZA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/agq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/agq.res
new file mode 100644
index 000000000..a1b00d639
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/agq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/agq_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/agq_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/agq_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ak.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ak.res
new file mode 100644
index 000000000..8bc3302ea
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ak.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ak_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ak_GH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ak_GH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/am.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/am.res
new file mode 100644
index 000000000..6fc80dfe9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/am.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/am_ET.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/am_ET.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/am_ET.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar.res
new file mode 100644
index 000000000..c46e6de8a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_001.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_001.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_AE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_AE.res
new file mode 100644
index 000000000..e7c42bd67
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_AE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_BH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_BH.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_BH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_DJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_DJ.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_DJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_DZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_DZ.res
new file mode 100644
index 000000000..9c3005dc1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_DZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_EG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_EG.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_EG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_EH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_EH.res
new file mode 100644
index 000000000..2ee983553
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_EH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_ER.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_ER.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_IL.res
new file mode 100644
index 000000000..0781ba0c7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_IQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_IQ.res
new file mode 100644
index 000000000..7553e0a54
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_IQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_JO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_JO.res
new file mode 100644
index 000000000..b6de0584b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_JO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_KM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_KM.res
new file mode 100644
index 000000000..1705d4816
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_KM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_KW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_KW.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_KW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_LB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_LB.res
new file mode 100644
index 000000000..6fea7d273
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_LB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_LY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_LY.res
new file mode 100644
index 000000000..2831120f4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_LY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_MA.res
new file mode 100644
index 000000000..47a0245cb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_MR.res
new file mode 100644
index 000000000..d7aac093d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_OM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_OM.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_OM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_PS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_PS.res
new file mode 100644
index 000000000..b6de0584b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_PS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_QA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_QA.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_QA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SA.res
new file mode 100644
index 000000000..50d4ce01d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SD.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SO.res
new file mode 100644
index 000000000..ad76393c8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SS.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SY.res
new file mode 100644
index 000000000..b6de0584b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_SY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_TD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_TD.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_TD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_TN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_TN.res
new file mode 100644
index 000000000..9c3005dc1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_TN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_XB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_XB.res
new file mode 100644
index 000000000..6dcc1bb17
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_XB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_YE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_YE.res
new file mode 100644
index 000000000..04148d022
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ar_YE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ars.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ars.res
new file mode 100644
index 000000000..bd3a7f2c8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ars.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/as.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/as.res
new file mode 100644
index 000000000..af6056f7d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/as.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/as_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/as_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/as_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/asa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/asa.res
new file mode 100644
index 000000000..1c04682ea
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/asa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/asa_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/asa_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/asa_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ast.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ast.res
new file mode 100644
index 000000000..72fefa19d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ast.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ast_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ast_ES.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ast_ES.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az.res
new file mode 100644
index 000000000..c40417e89
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_AZ.res
new file mode 100644
index 000000000..29c0412ab
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_AZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Cyrl.res
new file mode 100644
index 000000000..49e9683c6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Cyrl_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Cyrl_AZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Cyrl_AZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Latn.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Latn_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Latn_AZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/az_Latn_AZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bas.res
new file mode 100644
index 000000000..96966c1f0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bas.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bas_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bas_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bas_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/be.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/be.res
new file mode 100644
index 000000000..db7536086
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/be.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/be_BY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/be_BY.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/be_BY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bem.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bem.res
new file mode 100644
index 000000000..b808c5824
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bem.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bem_ZM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bem_ZM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bem_ZM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bez.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bez.res
new file mode 100644
index 000000000..130bfb0c2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bez.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bez_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bez_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bez_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bg.res
new file mode 100644
index 000000000..00c2b7cc3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bg_BG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bg_BG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bg_BG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bgc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bgc.res
new file mode 100644
index 000000000..821848dd4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bgc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bgc_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bgc_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bgc_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bho.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bho.res
new file mode 100644
index 000000000..065953d30
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bho.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bho_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bho_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bho_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/blo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/blo.res
new file mode 100644
index 000000000..3007ab842
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/blo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/blo_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/blo_BJ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/blo_BJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bm.res
new file mode 100644
index 000000000..cc7289445
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bm_ML.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bm_ML.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bm_ML.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn.res
new file mode 100644
index 000000000..6315c9728
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn_BD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn_BD.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn_BD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn_IN.res
new file mode 100644
index 000000000..28e5e0d87
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bn_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo.res
new file mode 100644
index 000000000..e89b758e9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo_CN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo_IN.res
new file mode 100644
index 000000000..dee8376ab
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bo_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/br.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/br.res
new file mode 100644
index 000000000..0fd075220
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/br.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/br_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/br_FR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/br_FR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/burmesedict.dict b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/burmesedict.dict
index ea5f51634..ea5f51634 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/burmesedict.dict
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/burmesedict.dict
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/char.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/char.brk
index 2ab78f1a3..2ab78f1a3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/char.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/char.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/cjdict.dict b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/cjdict.dict
index 7cb3e3c0a..7cb3e3c0a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/cjdict.dict
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/cjdict.dict
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/de.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/de.res
index c2738c8a6..c2738c8a6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/de.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/de.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/el.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/el.res
index 3a13b83ad..3a13b83ad 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/el.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/el.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en.res
index e5e46cb24..e5e46cb24 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en_US.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en_US.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en_US_POSIX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en_US_POSIX.res
index 4fe3cb8bc..4fe3cb8bc 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/en_US_POSIX.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/en_US_POSIX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/es.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/es.res
index e4f1ca70b..e4f1ca70b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/es.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/es.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/fi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/fi.res
index 30775c77f..30775c77f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/fi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/fi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/fr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/fr.res
index 39b7c5a2b..39b7c5a2b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/fr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/fr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/it.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/it.res
index ce51d4514..ce51d4514 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/it.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/it.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ja.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ja.res
index 54af50f16..54af50f16 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ja.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ja.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/jaml.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/jaml.res
new file mode 100644
index 000000000..fcd088b7e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/jaml.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/khmerdict.dict b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/khmerdict.dict
index e2a396f25..e2a396f25 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/khmerdict.dict
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/khmerdict.dict
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ko.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ko.res
index 798e1d13b..798e1d13b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ko.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ko.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/laodict.dict b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/laodict.dict
index 7b8f64dd2..7b8f64dd2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/laodict.dict
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/laodict.dict
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line.brk
index 23c5c0e89..23c5c0e89 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_cj.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_cj.brk
index 72ee3b345..72ee3b345 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_cj.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_cj.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose.brk
index db092a3ca..db092a3ca 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose_cj.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose_cj.brk
index 53a8f4b3c..53a8f4b3c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose_cj.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose_cj.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose_phrase_cj.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose_phrase_cj.brk
index 26a4dec56..26a4dec56 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_loose_phrase_cj.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_loose_phrase_cj.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal.brk
index c444776c0..c444776c0 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal_cj.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal_cj.brk
index d664ec6c1..d664ec6c1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal_cj.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal_cj.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal_phrase_cj.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal_phrase_cj.brk
index 1c1893dce..1c1893dce 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_normal_phrase_cj.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_normal_phrase_cj.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_phrase_cj.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_phrase_cj.brk
index d6b129a5a..d6b129a5a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/line_phrase_cj.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/line_phrase_cj.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/pt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/pt.res
index c068fa4d7..c068fa4d7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/pt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/pt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/res_index.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/res_index.res
index d09052f87..d09052f87 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/res_index.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/res_index.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/root.res
new file mode 100644
index 000000000..da2b0ad92
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/root.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ru.res
index 302f4ab31..302f4ab31 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/ru.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/ru.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sent.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sent.brk
index eb7dc7bc3..eb7dc7bc3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sent.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sent.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sent_el.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sent_el.brk
index 2724f503f..2724f503f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sent_el.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sent_el.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sv.res
index 30775c77f..30775c77f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/sv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/sv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/thaidict.dict b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/thaidict.dict
index 645f80ba6..645f80ba6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/thaidict.dict
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/thaidict.dict
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/title.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/title.brk
index 0e51287a6..0e51287a6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/title.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/title.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word.brk
index 2318d6dfd..2318d6dfd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word_POSIX.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word_POSIX.brk
index bb335c3e8..bb335c3e8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word_POSIX.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word_POSIX.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word_fi_sv.brk b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word_fi_sv.brk
index 71dc0fbad..71dc0fbad 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/word_fi_sv.brk
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/word_fi_sv.brk
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/zh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/zh.res
index 2e553cfa1..2e553cfa1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/zh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/zh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/zh_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/zh_Hant.res
index 2e553cfa1..2e553cfa1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/brkitr/zh_Hant.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brkitr/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brx.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brx.res
new file mode 100644
index 000000000..9faccc858
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brx.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brx_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brx_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/brx_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs.res
new file mode 100644
index 000000000..cf68433d8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_BA.res
new file mode 100644
index 000000000..a0c3de12e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Cyrl.res
new file mode 100644
index 000000000..d347a80d5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Cyrl_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Cyrl_BA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Cyrl_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Latn.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Latn_BA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/bs_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca.res
new file mode 100644
index 000000000..6ac3a1096
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_AD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_AD.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_AD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_ES.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_ES.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_FR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_FR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_IT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ca_IT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp.res
new file mode 100644
index 000000000..7d56384c9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp_BD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp_BD.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp_BD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ccp_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ce.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ce.res
new file mode 100644
index 000000000..9e61fa5da
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ce.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ce_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ce_RU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ce_RU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ceb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ceb.res
new file mode 100644
index 000000000..6d7c33c56
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ceb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ceb_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ceb_PH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ceb_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cgg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cgg.res
new file mode 100644
index 000000000..778dfd0e8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cgg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cgg_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cgg_UG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cgg_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/chr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/chr.res
new file mode 100644
index 000000000..5127b40f7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/chr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/chr_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/chr_US.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/chr_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb.res
new file mode 100644
index 000000000..5a1a36e9f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb_IQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb_IQ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb_IQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb_IR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb_IR.res
new file mode 100644
index 000000000..d2b6bb9c8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ckb_IR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/confusables.cfu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/confusables.cfu
index d66d13c7b..d66d13c7b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/confusables.cfu
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/confusables.cfu
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cs.res
new file mode 100644
index 000000000..4326f37c4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cs.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cs_CZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cs_CZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cs_CZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/csw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/csw.res
new file mode 100644
index 000000000..246e2cbc5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/csw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/csw_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/csw_CA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/csw_CA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/currencyNumericCodes.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/currencyNumericCodes.res
index d5719f091..d5719f091 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/currencyNumericCodes.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/currencyNumericCodes.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cv.res
new file mode 100644
index 000000000..c87d7b383
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cv_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cv_RU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cv_RU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cy.res
new file mode 100644
index 000000000..3e1665b73
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cy_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cy_GB.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/cy_GB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da.res
new file mode 100644
index 000000000..4a294b46c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da_DK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da_DK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da_GL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da_GL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/da_GL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dav.res
new file mode 100644
index 000000000..998ed22b4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dav.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dav_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dav_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dav_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dayPeriods.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dayPeriods.res
index c70d61b04..c70d61b04 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/dayPeriods.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dayPeriods.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de.res
new file mode 100644
index 000000000..e5ea0edf6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_AT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_AT.res
new file mode 100644
index 000000000..6cdbd72a3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_AT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_BE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_BE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_CH.res
new file mode 100644
index 000000000..b360af6a9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_DE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_DE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_IT.res
new file mode 100644
index 000000000..535700d7b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_IT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_LI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_LI.res
new file mode 100644
index 000000000..117acc4d3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_LI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_LU.res
new file mode 100644
index 000000000..1d92b1531
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/de_LU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dje.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dje.res
new file mode 100644
index 000000000..2b0a103af
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dje.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dje_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dje_NE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dje_NE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/doi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/doi.res
new file mode 100644
index 000000000..451e482c4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/doi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/doi_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/doi_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/doi_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dsb.res
new file mode 100644
index 000000000..c8a5964a1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dsb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dsb_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dsb_DE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dsb_DE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dua.res
new file mode 100644
index 000000000..2c55bd32e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dua.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dua_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dua_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dua_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dyo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dyo.res
new file mode 100644
index 000000000..f0e9fdaee
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dyo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dyo_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dyo_SN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dyo_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dz.res
new file mode 100644
index 000000000..afe65b6b1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dz_BT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dz_BT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/dz_BT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebu.res
new file mode 100644
index 000000000..5fa30ed76
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebu_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebu_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ebu_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee.res
new file mode 100644
index 000000000..59d21e498
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee_GH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee_GH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee_TG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee_TG.res
new file mode 100644
index 000000000..8700be7dd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ee_TG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el.res
new file mode 100644
index 000000000..5bcc0586a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el_CY.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el_CY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el_GR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el_GR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/el_GR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en.res
new file mode 100644
index 000000000..5a6f256cc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_001.res
new file mode 100644
index 000000000..49961f5b7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_001.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_150.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_150.res
new file mode 100644
index 000000000..136d56a1d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_150.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AE.res
new file mode 100644
index 000000000..135da4455
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AG.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AI.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AS.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AT.res
new file mode 100644
index 000000000..5f6671526
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AU.res
new file mode 100644
index 000000000..323c5fec5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_AU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BB.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BE.res
new file mode 100644
index 000000000..2d6a7274a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BI.res
new file mode 100644
index 000000000..1af92a43e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BM.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BS.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BW.res
new file mode 100644
index 000000000..c9c3a7aa7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BZ.res
new file mode 100644
index 000000000..c1b3d4ded
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_BZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CA.res
new file mode 100644
index 000000000..c26dded81
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CC.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CH.res
new file mode 100644
index 000000000..8feedfced
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CK.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CM.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CX.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CY.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_CY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DE.res
new file mode 100644
index 000000000..6d0be8171
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DG.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DK.res
new file mode 100644
index 000000000..98900ac0e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DM.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_DM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ER.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ER.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FI.res
new file mode 100644
index 000000000..b21b1d083
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FJ.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FK.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FM.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_FM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GB.res
new file mode 100644
index 000000000..f1ec0c218
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GD.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GG.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GH.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GI.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GM.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GY.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_GY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_HK.res
new file mode 100644
index 000000000..a1afce2d1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ID.res
new file mode 100644
index 000000000..20608fd94
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IE.res
new file mode 100644
index 000000000..f18d05dd9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IL.res
new file mode 100644
index 000000000..50aef4801
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IM.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IN.res
new file mode 100644
index 000000000..a3e82b298
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IO.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_IO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_JE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_JE.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_JE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_JM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_JM.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_JM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KE.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KI.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KN.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KY.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_KY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LC.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LR.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LS.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_LS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MG.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MO.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MP.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MP.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MS.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MT.res
new file mode 100644
index 000000000..225d1b406
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MU.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MV.res
new file mode 100644
index 000000000..ba6d449ec
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MW.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MY.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_MY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NA.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NF.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NG.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NH.res
new file mode 100644
index 000000000..e8f7210f2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NL.res
new file mode 100644
index 000000000..d815ef496
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NR.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NU.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NZ.res
new file mode 100644
index 000000000..246c8f7d7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_NZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PG.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PK.res
new file mode 100644
index 000000000..c6db11180
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PN.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PW.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_PW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_RH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_RH.res
new file mode 100644
index 000000000..e9c87e69d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_RH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_RW.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_RW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SB.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SC.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SD.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SE.res
new file mode 100644
index 000000000..a6ff27ce0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SG.res
new file mode 100644
index 000000000..a4bda1fa7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SH.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SI.res
new file mode 100644
index 000000000..46c551a8e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SL.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SS.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SX.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SZ.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_SZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TC.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TK.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TO.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TT.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TV.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TZ.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_UG.res
new file mode 100644
index 000000000..981037028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_UM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_UM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_UM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_US.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_US_POSIX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_US_POSIX.res
new file mode 100644
index 000000000..030cd12c2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_US_POSIX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VC.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VG.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VI.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VU.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_VU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_WS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_WS.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_WS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_XA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_XA.res
new file mode 100644
index 000000000..19370766b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_XA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZA.res
new file mode 100644
index 000000000..b599a4fe6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZM.res
new file mode 100644
index 000000000..6d9990e1c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZW.res
new file mode 100644
index 000000000..6413c118e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/en_ZW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eo.res
new file mode 100644
index 000000000..29851ba1a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eo_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eo_001.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eo_001.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es.res
new file mode 100644
index 000000000..3d45b6bd9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_419.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_419.res
new file mode 100644
index 000000000..80af921f5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_419.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_AR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_AR.res
new file mode 100644
index 000000000..c6d12a138
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_AR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BO.res
new file mode 100644
index 000000000..b3b4bc9d2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BR.res
new file mode 100644
index 000000000..09510081b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BZ.res
new file mode 100644
index 000000000..09510081b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_BZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CL.res
new file mode 100644
index 000000000..4d8e84bf9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CO.res
new file mode 100644
index 000000000..e7ae2abc8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CR.res
new file mode 100644
index 000000000..e8b72363f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CU.res
new file mode 100644
index 000000000..4048ebfb2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_CU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_DO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_DO.res
new file mode 100644
index 000000000..929495784
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_DO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_EA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_EA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_EA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_EC.res
new file mode 100644
index 000000000..17726532b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_EC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_ES.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_ES.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_GQ.res
new file mode 100644
index 000000000..6b16511b1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_GQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_GT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_GT.res
new file mode 100644
index 000000000..edcb35fa9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_GT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_HN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_HN.res
new file mode 100644
index 000000000..2893deecc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_HN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_IC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_IC.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_IC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_MX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_MX.res
new file mode 100644
index 000000000..2ecec3349
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_MX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_NI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_NI.res
new file mode 100644
index 000000000..e5790a646
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_NI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PA.res
new file mode 100644
index 000000000..40b901f60
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PE.res
new file mode 100644
index 000000000..a0885af91
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PH.res
new file mode 100644
index 000000000..da80d82bc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PR.res
new file mode 100644
index 000000000..e9af72b8d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PY.res
new file mode 100644
index 000000000..cee184eff
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_PY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_SV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_SV.res
new file mode 100644
index 000000000..94d42d028
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_SV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_US.res
new file mode 100644
index 000000000..036d0f17a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_UY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_UY.res
new file mode 100644
index 000000000..971d9de42
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_UY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_VE.res
new file mode 100644
index 000000000..1db907164
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/es_VE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/et.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/et.res
new file mode 100644
index 000000000..233cf3081
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/et.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/et_EE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/et_EE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/et_EE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eu.res
new file mode 100644
index 000000000..fbb134974
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eu_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eu_ES.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/eu_ES.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ewo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ewo.res
new file mode 100644
index 000000000..afc0f1d34
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ewo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ewo_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ewo_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ewo_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa.res
new file mode 100644
index 000000000..703588217
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa_AF.res
new file mode 100644
index 000000000..de5434f4f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa_IR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa_IR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fa_IR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff.res
new file mode 100644
index 000000000..1d657e5de
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm.res
new file mode 100644
index 000000000..2a36ea6d7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_BF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_BF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_BF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GH.res
new file mode 100644
index 000000000..08f592c6f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GM.res
new file mode 100644
index 000000000..08f592c6f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_GW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_LR.res
new file mode 100644
index 000000000..08f592c6f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_MR.res
new file mode 100644
index 000000000..08f592c6f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_NE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_NE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_NG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_SL.res
new file mode 100644
index 000000000..08f592c6f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_SL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_SN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Adlm_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_CM.res
new file mode 100644
index 000000000..28a144d29
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_GN.res
new file mode 100644
index 000000000..2eb3e8894
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_BF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_BF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_BF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GH.res
new file mode 100644
index 000000000..a4ea22d28
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GM.res
new file mode 100644
index 000000000..a4ea22d28
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_GW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_LR.res
new file mode 100644
index 000000000..a4ea22d28
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_MR.res
new file mode 100644
index 000000000..a4ea22d28
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_NE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_NE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_NG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_SL.res
new file mode 100644
index 000000000..a4ea22d28
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_SL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_SN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_Latn_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_MR.res
new file mode 100644
index 000000000..0708e2912
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_SN.res
new file mode 100644
index 000000000..a6af68109
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ff_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fi.res
new file mode 100644
index 000000000..4ae413188
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fi_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fi_FI.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fi_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fil.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fil.res
new file mode 100644
index 000000000..cfae56908
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fil.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fil_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fil_PH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fil_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo.res
new file mode 100644
index 000000000..08c0f552c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo_DK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo_DK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo_FO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo_FO.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fo_FO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr.res
new file mode 100644
index 000000000..a99abae3d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BE.res
new file mode 100644
index 000000000..e6fe77d67
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BI.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BJ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_BL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CA.res
new file mode 100644
index 000000000..182b07e5d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CD.res
new file mode 100644
index 000000000..c26f790a7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CH.res
new file mode 100644
index 000000000..21c3117fe
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CI.res
new file mode 100644
index 000000000..490d3f4e4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CM.res
new file mode 100644
index 000000000..1c7e8b02a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_DJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_DJ.res
new file mode 100644
index 000000000..f526ff4b6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_DJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_DZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_DZ.res
new file mode 100644
index 000000000..f526ff4b6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_DZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_FR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_FR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GP.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GP.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GQ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_GQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_HT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_HT.res
new file mode 100644
index 000000000..c7d7f7fc9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_HT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_KM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_KM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_KM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_LU.res
new file mode 100644
index 000000000..12d7288e2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_LU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MA.res
new file mode 100644
index 000000000..e87842aa8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MC.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_ML.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_ML.res
new file mode 100644
index 000000000..430f80c10
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_ML.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MQ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MR.res
new file mode 100644
index 000000000..f526ff4b6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_MU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_NC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_NC.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_NC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_NE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_NE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_PF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_PF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_PF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_PM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_PM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_PM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_RE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_RE.res
new file mode 100644
index 000000000..0311126b2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_RE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_RW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_RW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SC.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SN.res
new file mode 100644
index 000000000..414579126
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SY.res
new file mode 100644
index 000000000..f526ff4b6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_SY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TD.res
new file mode 100644
index 000000000..f526ff4b6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TN.res
new file mode 100644
index 000000000..f526ff4b6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_TN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_VU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_VU.res
new file mode 100644
index 000000000..f526ff4b6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_VU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_WF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_WF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_WF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_YT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_YT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fr_YT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fur.res
new file mode 100644
index 000000000..951769c0c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fur.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fur_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fur_IT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fur_IT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fy.res
new file mode 100644
index 000000000..1b7437cc5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fy_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fy_NL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/fy_NL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga.res
new file mode 100644
index 000000000..ecc381869
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga_GB.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga_GB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga_IE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga_IE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ga_IE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gd.res
new file mode 100644
index 000000000..b95ff02de
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gd_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gd_GB.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gd_GB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/genderList.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/genderList.res
index bace02f6f..bace02f6f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/genderList.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/genderList.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gl.res
new file mode 100644
index 000000000..c41027cbd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gl_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gl_ES.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gl_ES.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/grammaticalFeatures.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/grammaticalFeatures.res
index 7a54dc898..7a54dc898 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/grammaticalFeatures.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/grammaticalFeatures.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw.res
new file mode 100644
index 000000000..33deef5dc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_CH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_FR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_FR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_LI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_LI.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gsw_LI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gu.res
new file mode 100644
index 000000000..ed783af61
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gu_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gu_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gu_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/guz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/guz.res
new file mode 100644
index 000000000..e2d035a04
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/guz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/guz_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/guz_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/guz_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gv.res
new file mode 100644
index 000000000..866045b95
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gv_IM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gv_IM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/gv_IM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha.res
new file mode 100644
index 000000000..52a42c910
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_GH.res
new file mode 100644
index 000000000..f826ba6fd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_GH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_NE.res
new file mode 100644
index 000000000..6c3d93108
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_NE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_NG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ha_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/haw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/haw.res
new file mode 100644
index 000000000..ba9d7ce28
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/haw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/haw_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/haw_US.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/haw_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/he.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/he.res
new file mode 100644
index 000000000..a85dba667
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/he.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/he_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/he_IL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/he_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi.res
new file mode 100644
index 000000000..6afcaa0f6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_Latn.res
new file mode 100644
index 000000000..85fb0f33f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_Latn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_Latn_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hi_Latn_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr.res
new file mode 100644
index 000000000..796070ce9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr_BA.res
new file mode 100644
index 000000000..d8e742da6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr_HR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr_HR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hr_HR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hsb.res
new file mode 100644
index 000000000..1f28a05ac
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hsb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hsb_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hsb_DE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hsb_DE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hu.res
new file mode 100644
index 000000000..aa02942f2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hu_HU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hu_HU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hu_HU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hy.res
new file mode 100644
index 000000000..49b22e023
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hy_AM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hy_AM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/hy_AM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ia.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ia.res
new file mode 100644
index 000000000..7dfcc8721
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ia.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ia_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ia_001.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ia_001.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/icustd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/icustd.res
index e664d4ca9..e664d4ca9 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/icustd.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/icustd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/icuver.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/icuver.res
new file mode 100644
index 000000000..f82963a3a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/icuver.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/id.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/id.res
new file mode 100644
index 000000000..4d1fb0792
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/id.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/id_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/id_ID.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/id_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ie.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ie.res
new file mode 100644
index 000000000..956c3c4fb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ie.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ie_EE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ie_EE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ie_EE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ig.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ig.res
new file mode 100644
index 000000000..3417bb3ea
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ig.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ig_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ig_NG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ig_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ii.res
new file mode 100644
index 000000000..cce283576
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ii.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ii_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ii_CN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ii_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/in.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/in.res
new file mode 100644
index 000000000..7aa8f3a50
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/in.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/in_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/in_ID.res
new file mode 100644
index 000000000..48626c934
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/in_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/is.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/is.res
new file mode 100644
index 000000000..410aa9ef3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/is.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/is_IS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/is_IS.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/is_IS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it.res
new file mode 100644
index 000000000..0615e589b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_CH.res
new file mode 100644
index 000000000..4e88cd20a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_IT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_IT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_SM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_SM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_SM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_VA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_VA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/it_VA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/iw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/iw.res
new file mode 100644
index 000000000..ba0003d64
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/iw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/iw_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/iw_IL.res
new file mode 100644
index 000000000..c7db34a1b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/iw_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja.res
new file mode 100644
index 000000000..41b705b49
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja_JP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja_JP.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja_JP.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja_JP_TRADITIONAL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja_JP_TRADITIONAL.res
new file mode 100644
index 000000000..37b0fda1e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ja_JP_TRADITIONAL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jgo.res
new file mode 100644
index 000000000..7ddd8c373
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jgo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jgo_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jgo_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jgo_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jmc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jmc.res
new file mode 100644
index 000000000..0fc63c03a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jmc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jmc_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jmc_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jmc_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jv.res
new file mode 100644
index 000000000..a4f6dff99
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jv_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jv_ID.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/jv_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ka.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ka.res
new file mode 100644
index 000000000..5ffa7b9c3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ka.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ka_GE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ka_GE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ka_GE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kab.res
new file mode 100644
index 000000000..dec684541
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kab_DZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kab_DZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kab_DZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kam.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kam.res
new file mode 100644
index 000000000..0f3086495
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kam.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kam_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kam_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kam_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kde.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kde.res
new file mode 100644
index 000000000..bc3a8efdf
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kde.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kde_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kde_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kde_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kea.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kea.res
new file mode 100644
index 000000000..efddb28db
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kea.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kea_CV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kea_CV.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kea_CV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/keyTypeData.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/keyTypeData.res
new file mode 100644
index 000000000..84e513a9e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/keyTypeData.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kgp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kgp.res
new file mode 100644
index 000000000..e876b99bc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kgp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kgp_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kgp_BR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kgp_BR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/khq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/khq.res
new file mode 100644
index 000000000..9538750cc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/khq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/khq_ML.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/khq_ML.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/khq_ML.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ki.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ki.res
new file mode 100644
index 000000000..802274327
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ki.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ki_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ki_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ki_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kk.res
new file mode 100644
index 000000000..f66ed8c19
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kk_KZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kk_KZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kk_KZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kkj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kkj.res
new file mode 100644
index 000000000..cd87b3168
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kkj.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kkj_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kkj_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kkj_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kl.res
new file mode 100644
index 000000000..3ab0cf503
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kl_GL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kl_GL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kl_GL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kln.res
new file mode 100644
index 000000000..d1086404b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kln.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kln_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kln_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kln_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/km.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/km.res
new file mode 100644
index 000000000..c66d1c750
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/km.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/km_KH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/km_KH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/km_KH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kn.res
new file mode 100644
index 000000000..fff1f38ed
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kn_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kn_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko.res
new file mode 100644
index 000000000..d414c6b73
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_CN.res
new file mode 100644
index 000000000..c32d6c3ce
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_KP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_KP.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_KP.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_KR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_KR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ko_KR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kok.res
new file mode 100644
index 000000000..75bb1e389
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kok.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kok_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kok_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kok_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks.res
new file mode 100644
index 000000000..b40584c94
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Arab.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Arab_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Arab_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Arab_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Deva.res
new file mode 100644
index 000000000..6ad0a9131
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Deva_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_Deva_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_IN.res
new file mode 100644
index 000000000..e8b83ec72
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ks_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksb.res
new file mode 100644
index 000000000..3b10350ac
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksb_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksb_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksb_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksf.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksf.res
new file mode 100644
index 000000000..49cd36c44
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksf.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksf_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksf_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksf_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksh.res
new file mode 100644
index 000000000..d5f90f4be
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksh_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksh_DE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ksh_DE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ku.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ku.res
new file mode 100644
index 000000000..e7773887c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ku.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ku_TR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ku_TR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ku_TR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kw.res
new file mode 100644
index 000000000..33615d9e7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kw_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kw_GB.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kw_GB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv.res
new file mode 100644
index 000000000..85f3f4908
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Deva.res
new file mode 100644
index 000000000..3c3b0eb18
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Deva_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Deva_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_IN.res
new file mode 100644
index 000000000..77d34ec31
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Latn.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Latn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Latn_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Latn_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Orya.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Orya.res
new file mode 100644
index 000000000..25429e51a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Orya.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Orya_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Orya_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Orya_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Telu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Telu.res
new file mode 100644
index 000000000..9cd528db2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Telu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Telu_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Telu_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/kxv_Telu_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ky.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ky.res
new file mode 100644
index 000000000..a2e177ffc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ky.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ky_KG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ky_KG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ky_KG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lag.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lag.res
new file mode 100644
index 000000000..c5fcc2c56
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lag.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lag_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lag_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lag_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/langInfo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/langInfo.res
new file mode 100644
index 000000000..759aaf485
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/langInfo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lb.res
new file mode 100644
index 000000000..4866f7a77
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lb_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lb_LU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lb_LU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lg.res
new file mode 100644
index 000000000..ea7490ba5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lg_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lg_UG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lg_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lij.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lij.res
new file mode 100644
index 000000000..32f263a84
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lij.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lij_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lij_IT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lij_IT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lkt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lkt.res
new file mode 100644
index 000000000..fe6ead6bb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lkt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lkt_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lkt_US.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lkt_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmo.res
new file mode 100644
index 000000000..20d373b14
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmo_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmo_IT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lmo_IT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln.res
new file mode 100644
index 000000000..0c0be8637
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_AO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_AO.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_AO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CD.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ln_CG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lo.res
new file mode 100644
index 000000000..ed6bb5579
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lo_LA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lo_LA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lo_LA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc.res
new file mode 100644
index 000000000..2a74b3ce1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc_IQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc_IQ.res
new file mode 100644
index 000000000..cae983001
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc_IQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc_IR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc_IR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lrc_IR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lt.res
new file mode 100644
index 000000000..8b43ef130
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lt_LT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lt_LT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lt_LT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lu.res
new file mode 100644
index 000000000..5e4fb17c9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lu_CD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lu_CD.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lu_CD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luo.res
new file mode 100644
index 000000000..60d8847ca
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luo_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luo_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luo_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luy.res
new file mode 100644
index 000000000..1073e19af
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luy_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luy_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/luy_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lv.res
new file mode 100644
index 000000000..97f40cdec
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lv_LV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lv_LV.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/lv_LV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mai.res
new file mode 100644
index 000000000..41cdd5573
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mai.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mai_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mai_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mai_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas.res
new file mode 100644
index 000000000..b6cb1266c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mas_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mer.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mer.res
new file mode 100644
index 000000000..682b4fb6d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mer.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mer_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mer_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mer_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/metaZones.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/metaZones.res
new file mode 100644
index 000000000..fd84b9286
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/metaZones.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/metadata.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/metadata.res
new file mode 100644
index 000000000..4902f339a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/metadata.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mfe.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mfe.res
new file mode 100644
index 000000000..b73e03842
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mfe.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mfe_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mfe_MU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mfe_MU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mg.res
new file mode 100644
index 000000000..db8cbc78c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mg_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mg_MG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mg_MG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgh.res
new file mode 100644
index 000000000..2acf2f97e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgh_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgh_MZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgh_MZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgo.res
new file mode 100644
index 000000000..5371e4406
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgo_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgo_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mgo_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mi.res
new file mode 100644
index 000000000..46d6f5efe
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mi_NZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mi_NZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mi_NZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mk.res
new file mode 100644
index 000000000..2d99815e2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mk_MK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mk_MK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mk_MK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ml.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ml.res
new file mode 100644
index 000000000..f040d6a1b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ml.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ml_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ml_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ml_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mn.res
new file mode 100644
index 000000000..1673f9cbe
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mn_MN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mn_MN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mn_MN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni.res
new file mode 100644
index 000000000..602f7936d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_Beng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_Beng.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_Beng.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_Beng_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_Beng_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_Beng_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_IN.res
new file mode 100644
index 000000000..8482c3b9f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mni_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mo.res
new file mode 100644
index 000000000..64a00b4ab
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mr.res
new file mode 100644
index 000000000..6ced95ff0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mr_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mr_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mr_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms.res
new file mode 100644
index 000000000..8d30c1656
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_BN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_BN.res
new file mode 100644
index 000000000..00ea36178
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_BN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_ID.res
new file mode 100644
index 000000000..2032b2475
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_MY.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_MY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_SG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ms_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mt.res
new file mode 100644
index 000000000..bb86301be
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mt_MT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mt_MT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mt_MT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mua.res
new file mode 100644
index 000000000..220e01bf4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mua.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mua_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mua_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mua_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/my.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/my.res
new file mode 100644
index 000000000..27aff37fb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/my.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/my_MM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/my_MM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/my_MM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mzn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mzn.res
new file mode 100644
index 000000000..e28e19c63
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mzn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mzn_IR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mzn_IR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/mzn_IR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/naq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/naq.res
new file mode 100644
index 000000000..8baf212ce
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/naq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/naq_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/naq_NA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/naq_NA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb.res
new file mode 100644
index 000000000..474408247
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb_NO.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb_NO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb_SJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb_SJ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nb_SJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nd.res
new file mode 100644
index 000000000..e84aad525
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nd_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nd_ZW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nd_ZW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds.res
new file mode 100644
index 000000000..a06a0c3ed
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds_DE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds_DE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds_NL.res
new file mode 100644
index 000000000..f7204f36c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nds_NL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne.res
new file mode 100644
index 000000000..65791cc15
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne_IN.res
new file mode 100644
index 000000000..7bf263b99
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne_NP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne_NP.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ne_NP.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfc.nrm b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfc.nrm
index 9228eebbd..9228eebbd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfc.nrm
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfc.nrm
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc.nrm b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc.nrm
index 001a2c5ca..001a2c5ca 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc.nrm
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc.nrm
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc_cf.nrm b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc_cf.nrm
index bb17638c3..bb17638c3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc_cf.nrm
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc_cf.nrm
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc_scf.nrm b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc_scf.nrm
index 91887637b..91887637b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/nfkc_scf.nrm
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nfkc_scf.nrm
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl.res
new file mode 100644
index 000000000..1411d9537
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_AW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_AW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_AW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_BE.res
new file mode 100644
index 000000000..7eeb07b12
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_BE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_BQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_BQ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_BQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_CW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_CW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_CW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_NL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_NL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_SR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_SR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_SR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_SX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_SX.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nl_SX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nmg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nmg.res
new file mode 100644
index 000000000..892e6ce5a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nmg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nmg_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nmg_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nmg_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nn.res
new file mode 100644
index 000000000..ec0f110a1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nn_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nn_NO.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nn_NO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nnh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nnh.res
new file mode 100644
index 000000000..f7cfe7dd0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nnh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nnh_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nnh_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nnh_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no.res
new file mode 100644
index 000000000..201a5dba6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no_NO.res
new file mode 100644
index 000000000..0ffae39b9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no_NO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no_NO_NY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no_NO_NY.res
new file mode 100644
index 000000000..66847d131
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/no_NO_NY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nqo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nqo.res
new file mode 100644
index 000000000..f0280baad
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nqo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nqo_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nqo_GN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nqo_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/numberingSystems.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/numberingSystems.res
index adf497605..adf497605 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/numberingSystems.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/numberingSystems.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nus.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nus.res
new file mode 100644
index 000000000..000ebd13e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nus.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nus_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nus_SS.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nus_SS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nyn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nyn.res
new file mode 100644
index 000000000..5dce9175a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nyn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nyn_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nyn_UG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/nyn_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc.res
new file mode 100644
index 000000000..7f92f4071
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc_ES.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc_ES.res
new file mode 100644
index 000000000..8d3d09cdb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc_ES.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc_FR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc_FR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/oc_FR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om.res
new file mode 100644
index 000000000..a7b5b8214
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om_ET.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om_ET.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om_ET.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om_KE.res
new file mode 100644
index 000000000..d6018680e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/om_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/or.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/or.res
new file mode 100644
index 000000000..c95afb0ea
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/or.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/or_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/or_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/or_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os.res
new file mode 100644
index 000000000..1a0864c8c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os_GE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os_GE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os_GE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os_RU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/os_RU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa.res
new file mode 100644
index 000000000..831836364
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Arab.res
new file mode 100644
index 000000000..ce8b0bece
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Arab_PK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Guru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Guru.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Guru.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Guru_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Guru_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_Guru_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_IN.res
new file mode 100644
index 000000000..db663410c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_PK.res
new file mode 100644
index 000000000..6234e2106
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pa_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pcm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pcm.res
new file mode 100644
index 000000000..16a43e44c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pcm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pcm_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pcm_NG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pcm_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pl.res
new file mode 100644
index 000000000..307a79d2f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pl_PL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pl_PL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pl_PL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pluralRanges.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pluralRanges.res
index cbcac3d4c..cbcac3d4c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/pluralRanges.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pluralRanges.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/plurals.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/plurals.res
index 94c5ea3cf..94c5ea3cf 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/plurals.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/plurals.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pnames.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pnames.icu
new file mode 100644
index 000000000..0c442f1d4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pnames.icu
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pool.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pool.res
new file mode 100644
index 000000000..3a68c17cc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pool.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/prg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/prg.res
new file mode 100644
index 000000000..d744cbd29
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/prg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/prg_PL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/prg_PL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/prg_PL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps.res
new file mode 100644
index 000000000..6681e7fb6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps_AF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps_PK.res
new file mode 100644
index 000000000..fd91afefb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ps_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt.res
new file mode 100644
index 000000000..6a8c8a298
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_AO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_AO.res
new file mode 100644
index 000000000..3e5d5cf89
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_AO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_BR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_BR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_CH.res
new file mode 100644
index 000000000..ae3e6896d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_CV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_CV.res
new file mode 100644
index 000000000..ae3e6896d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_CV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_GQ.res
new file mode 100644
index 000000000..ae3e6896d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_GQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_GW.res
new file mode 100644
index 000000000..ae3e6896d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_GW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_LU.res
new file mode 100644
index 000000000..ae3e6896d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_LU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_MO.res
new file mode 100644
index 000000000..e6bdf2849
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_MZ.res
new file mode 100644
index 000000000..ae3e6896d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_MZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_PT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_PT.res
new file mode 100644
index 000000000..4118bc9c4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_PT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_ST.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_ST.res
new file mode 100644
index 000000000..ae3e6896d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_ST.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_TL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_TL.res
new file mode 100644
index 000000000..ae3e6896d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/pt_TL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu.res
new file mode 100644
index 000000000..6b4423e0a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_BO.res
new file mode 100644
index 000000000..2a1b621f9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_BO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_EC.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_EC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_PE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_PE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/qu_PE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/raj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/raj.res
new file mode 100644
index 000000000..baf346cc5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/raj.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/raj_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/raj_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/raj_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/af.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/af.res
index 6c32107d8..6c32107d8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/af.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/af.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ak.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ak.res
index a4e951f72..a4e951f72 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ak.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ak.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/am.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/am.res
index 89ca48448..89ca48448 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/am.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/am.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ar.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ar.res
index 9db3d89f6..9db3d89f6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ar.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ar.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ar_SA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ar_SA.res
index 01de45469..01de45469 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ar_SA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ar_SA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ars.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ars.res
index d0e60ef90..d0e60ef90 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ars.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ars.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/az.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/az.res
index f232b1eea..f232b1eea 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/az.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/az.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/be.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/be.res
index f94ee6ccc..f94ee6ccc 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/be.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/be.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/bg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/bg.res
index 804ec2f15..804ec2f15 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/bg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/bg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/bs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/bs.res
index 28523474c..28523474c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/bs.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/bs.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ca.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ca.res
index 3ea62b5f4..3ea62b5f4 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ca.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ca.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ccp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ccp.res
index 302a145c8..302a145c8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ccp.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ccp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/chr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/chr.res
index 338732a69..338732a69 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/chr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/chr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/cs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/cs.res
index 46188117d..46188117d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/cs.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/cs.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/cy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/cy.res
index cf2942bec..cf2942bec 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/cy.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/cy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/da.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/da.res
index 0ef8a7be9..0ef8a7be9 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/da.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/da.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/de.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/de.res
index 69275d1f2..69275d1f2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/de.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/de.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/de_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/de_CH.res
index d71d0f0e1..d71d0f0e1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/de_CH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/de_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ee.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ee.res
index e27ff2cb2..e27ff2cb2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ee.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ee.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/el.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/el.res
index 9c513142c..9c513142c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/el.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/el.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en.res
index 1a34dc816..1a34dc816 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en_001.res
index 61c3a025f..61c3a025f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en_001.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en_001.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en_IN.res
index d1980b52a..d1980b52a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/en_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/en_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/eo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/eo.res
index 1b8dd9140..1b8dd9140 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/eo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/eo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es.res
index 3daca548b..3daca548b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_419.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_419.res
index 323cb0824..323cb0824 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_419.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_419.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_DO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_DO.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_DO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_DO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_GT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_GT.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_GT.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_GT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_HN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_HN.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_HN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_HN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_MX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_MX.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_MX.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_MX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_NI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_NI.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_NI.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_NI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_PA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_PA.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_PA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_PA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_PR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_PR.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_PR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_PR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_SV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_SV.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_SV.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_SV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_US.res
index 2d12ba97f..2d12ba97f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/es_US.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/es_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/et.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/et.res
index 888505f85..888505f85 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/et.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/et.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fa.res
index 4af612e83..4af612e83 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fa.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fa_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fa_AF.res
index 6215a8ee0..6215a8ee0 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fa_AF.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fa_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ff.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ff.res
index 72deb5be1..72deb5be1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ff.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ff.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fi.res
index 7334dfb47..7334dfb47 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fil.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fil.res
index 9103c221f..9103c221f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fil.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fil.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fo.res
index 4c3f12f36..4c3f12f36 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr.res
index 00e10afda..00e10afda 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr_BE.res
index 3d5973c6f..3d5973c6f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr_BE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr_BE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr_CH.res
index 1b1040ab7..1b1040ab7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/fr_CH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/fr_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ga.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ga.res
index 0aee6a36f..0aee6a36f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ga.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ga.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/he.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/he.res
index 9a08a5230..9a08a5230 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/he.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/he.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hi.res
index 844f2159b..844f2159b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hr.res
index a630add3b..a630add3b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hu.res
index 06e90a39f..06e90a39f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hy.res
index 1a1444e6e..1a1444e6e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/hy.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/hy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/id.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/id.res
new file mode 100644
index 000000000..153e3b23e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/id.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/in.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/in.res
index 330b24c6d..330b24c6d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/in.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/in.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/is.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/is.res
index 9ef94c591..9ef94c591 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/is.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/is.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/it.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/it.res
index b5584a769..b5584a769 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/it.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/it.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/iw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/iw.res
index 65e3e15f5..65e3e15f5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/iw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/iw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ja.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ja.res
index 2c531de60..2c531de60 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ja.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ja.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ka.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ka.res
index f960408b4..f960408b4 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ka.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ka.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/kk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/kk.res
index ee7464984..ee7464984 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/kk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/kk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/kl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/kl.res
index 5022289d5..5022289d5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/kl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/kl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/km.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/km.res
index 032acb62d..032acb62d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/km.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/km.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ko.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ko.res
index ed2d8c287..ed2d8c287 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ko.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ko.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ky.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ky.res
index 9d99ea436..9d99ea436 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ky.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ky.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lb.res
index ad770bd43..ad770bd43 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lo.res
index ae785c031..ae785c031 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lrc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lrc.res
index cab6f3b45..cab6f3b45 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lrc.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lrc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lt.res
index 6c21dc2c4..6c21dc2c4 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lv.res
index e6fc28940..e6fc28940 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/lv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/lv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/mk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/mk.res
index f23fe90b7..f23fe90b7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/mk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/mk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ms.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ms.res
index 79009f880..79009f880 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ms.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ms.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/mt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/mt.res
index 286964e7b..286964e7b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/mt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/mt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/my.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/my.res
index 4421c9b69..4421c9b69 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/my.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/my.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nb.res
index 76e09e288..76e09e288 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ne.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ne.res
index 39682bc06..39682bc06 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ne.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ne.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nl.res
index 29cb9088c..29cb9088c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nn.res
index cbe393b4b..cbe393b4b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/nn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/nn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/no.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/no.res
index 470950e36..470950e36 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/no.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/no.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pl.res
index f9a4f69ec..f9a4f69ec 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pt.res
index b503b25b9..b503b25b9 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pt_PT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pt_PT.res
index 8b41fe69c..8b41fe69c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/pt_PT.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/pt_PT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/qu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/qu.res
index 75da22693..75da22693 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/qu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/qu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/res_index.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/res_index.res
index 7c86fbbea..7c86fbbea 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/res_index.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/res_index.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ro.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ro.res
index 9b7709a6a..9b7709a6a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ro.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ro.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/root.res
new file mode 100644
index 000000000..1a0d951fc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/root.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ru.res
index da565f3cb..da565f3cb 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ru.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ru.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/se.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/se.res
index 40389f521..40389f521 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/se.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/se.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sh.res
index a7ed88c3c..a7ed88c3c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sk.res
index cb1ee7954..cb1ee7954 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sl.res
index 716d7dce9..716d7dce9 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sq.res
index 58b4d2993..58b4d2993 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sq.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sr.res
index b8f4a2fb7..b8f4a2fb7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sr_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sr_Latn.res
index fd4d18fc9..fd4d18fc9 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sr_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sr_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/su.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/su.res
index 11d10e81a..11d10e81a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/su.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/su.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sv.res
index 05540b4b6..05540b4b6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sw.res
index 8b6e34a16..8b6e34a16 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/sw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/sw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ta.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ta.res
index 102fc3909..102fc3909 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/ta.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/ta.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/th.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/th.res
index 329bc9783..329bc9783 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/th.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/th.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/tr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/tr.res
index 8ffd67efd..8ffd67efd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/tr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/tr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/uk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/uk.res
index b820c0b8f..b820c0b8f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/uk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/uk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/vec.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/vec.res
index 8c2bda6ae..8c2bda6ae 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/vec.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/vec.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/vi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/vi.res
index 915efe2e7..915efe2e7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/vi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/vi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/yue.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/yue.res
index 7c010b42f..7c010b42f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/yue.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/yue.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/yue_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/yue_Hans.res
index 1da53cbe5..1da53cbe5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/yue_Hans.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/yue_Hans.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh.res
index e4132e28e..e4132e28e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_HK.res
index 156f92ea7..156f92ea7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_HK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant.res
index 3bbc1383f..3bbc1383f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_HK.res
index b3dccba3c..b3dccba3c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_HK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_MO.res
index 01de45469..01de45469 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_MO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_TW.res
index 01de45469..01de45469 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_Hant_TW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_Hant_TW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_MO.res
index 5d33f7ca7..5d33f7ca7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_MO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_TW.res
index 5a5aa087f..5a5aa087f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rbnf/zh_TW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rbnf/zh_TW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/res_index.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/res_index.res
new file mode 100644
index 000000000..e9b8eff25
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/res_index.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3491.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3491.spp
index 7c868490c..7c868490c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3491.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3491.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530cs.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530cs.spp
index 75e628b0b..75e628b0b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530cs.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530cs.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530csci.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530csci.spp
index 5e3c7d4e1..5e3c7d4e1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530csci.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530csci.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530mixp.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530mixp.spp
index 2ff7ad12b..2ff7ad12b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3530mixp.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3530mixp.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3722.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3722.spp
index 408b14e5e..408b14e5e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3722.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3722.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3920node.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3920node.spp
index 8697b3c82..8697b3c82 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3920node.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3920node.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3920res.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3920res.spp
index 70e90d71d..70e90d71d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc3920res.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc3920res.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4011.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4011.spp
index 49090ebf9..49090ebf9 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4011.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4011.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4013.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4013.spp
index fa2328b3e..fa2328b3e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4013.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4013.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4505.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4505.spp
index 11caa3667..11caa3667 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4505.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4505.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4518.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4518.spp
index 6b1d0b468..6b1d0b468 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4518.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4518.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4518ci.spp b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4518ci.spp
index 206fc400e..206fc400e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/rfc4518ci.spp
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rfc4518ci.spp
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rm.res
new file mode 100644
index 000000000..b8b9abee3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rm_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rm_CH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rm_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rn.res
new file mode 100644
index 000000000..5d818da88
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rn_BI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rn_BI.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rn_BI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro.res
new file mode 100644
index 000000000..899f4ca20
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro_MD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro_MD.res
new file mode 100644
index 000000000..5318d21db
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro_MD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro_RO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro_RO.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ro_RO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rof.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rof.res
new file mode 100644
index 000000000..401e0e3a4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rof.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rof_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rof_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rof_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/root.res
new file mode 100644
index 000000000..f0dd80ae3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/root.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru.res
new file mode 100644
index 000000000..b265cbd43
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_BY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_BY.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_BY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_KG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_KG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_KG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_KZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_KZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_KZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_MD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_MD.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_MD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_RU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_RU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_UA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_UA.res
new file mode 100644
index 000000000..384684993
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ru_UA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rw.res
new file mode 100644
index 000000000..06c49372b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rw_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rw_RW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rw_RW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rwk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rwk.res
new file mode 100644
index 000000000..4d7911307
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rwk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rwk_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rwk_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/rwk_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sa.res
new file mode 100644
index 000000000..8982c5c09
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sa_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sa_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sa_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sah.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sah.res
new file mode 100644
index 000000000..997bcc9ae
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sah.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sah_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sah_RU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sah_RU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/saq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/saq.res
new file mode 100644
index 000000000..f127d689e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/saq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/saq_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/saq_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/saq_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat.res
new file mode 100644
index 000000000..2f950de8f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_IN.res
new file mode 100644
index 000000000..d099a4c4a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_Olck.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_Olck.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_Olck.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_Olck_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_Olck_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sat_Olck_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sbp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sbp.res
new file mode 100644
index 000000000..2861d42e1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sbp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sbp_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sbp_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sbp_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sc.res
new file mode 100644
index 000000000..2ac01da48
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sc_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sc_IT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sc_IT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd.res
new file mode 100644
index 000000000..01651a1cb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Arab.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Arab_PK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Deva.res
new file mode 100644
index 000000000..53dff2f85
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Deva_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_Deva_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_IN.res
new file mode 100644
index 000000000..170ede973
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_PK.res
new file mode 100644
index 000000000..9c5c8a4ae
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sd_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se.res
new file mode 100644
index 000000000..cd073b3a8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_FI.res
new file mode 100644
index 000000000..8693fb612
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_NO.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_NO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_SE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/se_SE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/seh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/seh.res
new file mode 100644
index 000000000..8cd81c5b9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/seh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/seh_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/seh_MZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/seh_MZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ses.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ses.res
new file mode 100644
index 000000000..0da84344c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ses.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ses_ML.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ses_ML.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ses_ML.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sg.res
new file mode 100644
index 000000000..1109830ff
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sg_CF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sg_CF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sg_CF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh.res
new file mode 100644
index 000000000..552ffea76
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_BA.res
new file mode 100644
index 000000000..a3ed1e246
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_CS.res
new file mode 100644
index 000000000..a03b50465
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_YU.res
new file mode 100644
index 000000000..a03b50465
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sh_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi.res
new file mode 100644
index 000000000..681c4e08d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Latn.res
new file mode 100644
index 000000000..751d60403
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Latn_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Latn_MA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Latn_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_MA.res
new file mode 100644
index 000000000..3ed00ee5f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Tfng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Tfng.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Tfng.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Tfng_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Tfng_MA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/shi_Tfng_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/si.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/si.res
new file mode 100644
index 000000000..77c8709f1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/si.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/si_LK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/si_LK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/si_LK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sk.res
new file mode 100644
index 000000000..917494a80
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sk_SK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sk_SK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sk_SK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sl.res
new file mode 100644
index 000000000..045260259
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sl_SI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sl_SI.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sl_SI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/smn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/smn.res
new file mode 100644
index 000000000..4dd28689c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/smn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/smn_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/smn_FI.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/smn_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sn.res
new file mode 100644
index 000000000..8c211437b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sn_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sn_ZW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sn_ZW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so.res
new file mode 100644
index 000000000..6a24de6e8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_DJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_DJ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_DJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_ET.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_ET.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_ET.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_KE.res
new file mode 100644
index 000000000..422b85239
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_SO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_SO.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/so_SO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq.res
new file mode 100644
index 000000000..60173e9e5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_AL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_AL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_AL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_MK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_MK.res
new file mode 100644
index 000000000..9cb8afa94
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_MK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_XK.res
new file mode 100644
index 000000000..9cb8afa94
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sq_XK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr.res
new file mode 100644
index 000000000..e80b69db6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_BA.res
new file mode 100644
index 000000000..a29d6b375
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_CS.res
new file mode 100644
index 000000000..adbfb780b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_BA.res
new file mode 100644
index 000000000..8a8933479
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_CS.res
new file mode 100644
index 000000000..827973bf4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_ME.res
new file mode 100644
index 000000000..9ecc53ef4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_ME.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_RS.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_XK.res
new file mode 100644
index 000000000..e213f6dfa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_XK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_YU.res
new file mode 100644
index 000000000..827973bf4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Cyrl_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn.res
new file mode 100644
index 000000000..9b7568dc4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_BA.res
new file mode 100644
index 000000000..91d78fea8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_CS.res
new file mode 100644
index 000000000..a03b50465
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_ME.res
new file mode 100644
index 000000000..2cc1f7d39
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_ME.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_RS.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_XK.res
new file mode 100644
index 000000000..79f966b31
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_XK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_YU.res
new file mode 100644
index 000000000..a03b50465
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_Latn_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_ME.res
new file mode 100644
index 000000000..dc32906af
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_ME.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_RS.res
new file mode 100644
index 000000000..827973bf4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_XK.res
new file mode 100644
index 000000000..9409b6e99
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_XK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_YU.res
new file mode 100644
index 000000000..adbfb780b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sr_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su.res
new file mode 100644
index 000000000..d4894a35a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_ID.res
new file mode 100644
index 000000000..d4ff7b462
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_Latn.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_Latn_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_Latn_ID.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/su_Latn_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/supplementalData.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/supplementalData.res
new file mode 100644
index 000000000..816b1ff8a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/supplementalData.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv.res
new file mode 100644
index 000000000..ed2a211c2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_AX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_AX.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_AX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_FI.res
new file mode 100644
index 000000000..8090d1fa4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_SE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sv_SE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw.res
new file mode 100644
index 000000000..14ae4f089
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_CD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_CD.res
new file mode 100644
index 000000000..d09815473
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_CD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_KE.res
new file mode 100644
index 000000000..530bef8f3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_UG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/sw_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr.res
new file mode 100644
index 000000000..e1343f48b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr_IQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr_IQ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr_IQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr_SY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr_SY.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/syr_SY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/szl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/szl.res
new file mode 100644
index 000000000..b3632a535
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/szl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/szl_PL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/szl_PL.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/szl_PL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta.res
new file mode 100644
index 000000000..42ac54420
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_LK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_LK.res
new file mode 100644
index 000000000..599dd7584
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_LK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_MY.res
new file mode 100644
index 000000000..98aedcea3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_MY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_SG.res
new file mode 100644
index 000000000..98aedcea3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ta_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/te.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/te.res
new file mode 100644
index 000000000..58c505eaa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/te.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/te_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/te_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/te_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo.res
new file mode 100644
index 000000000..1b54789e2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo_KE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo_UG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/teo_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tg.res
new file mode 100644
index 000000000..44144c69c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tg_TJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tg_TJ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tg_TJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th.res
new file mode 100644
index 000000000..aff9f997c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th_TH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th_TH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th_TH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th_TH_TRADITIONAL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th_TH_TRADITIONAL.res
new file mode 100644
index 000000000..da614e670
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/th_TH_TRADITIONAL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti.res
new file mode 100644
index 000000000..8649818e9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti_ER.res
new file mode 100644
index 000000000..2c27a2b11
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti_ER.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti_ET.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti_ET.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ti_ET.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/timezoneTypes.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/timezoneTypes.res
index 8bd236064..8bd236064 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/timezoneTypes.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/timezoneTypes.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tk.res
new file mode 100644
index 000000000..0d2e9617f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tk_TM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tk_TM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tk_TM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tl.res
new file mode 100644
index 000000000..906daf8da
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tl_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tl_PH.res
new file mode 100644
index 000000000..bb2cb6fe5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tl_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/to.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/to.res
new file mode 100644
index 000000000..97fb4f34a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/to.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/to_TO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/to_TO.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/to_TO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tok.res
new file mode 100644
index 000000000..2b8e482d0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tok.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tok_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tok_001.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tok_001.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr.res
new file mode 100644
index 000000000..7bbd8bdef
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr_CY.res
new file mode 100644
index 000000000..567b6795f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr_CY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr_TR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr_TR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tr_TR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tt.res
new file mode 100644
index 000000000..0085c7709
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tt_RU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tt_RU.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tt_RU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/twq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/twq.res
new file mode 100644
index 000000000..6c1fd400f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/twq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/twq_NE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/twq_NE.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/twq_NE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tzm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tzm.res
new file mode 100644
index 000000000..15d960525
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tzm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tzm_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tzm_MA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/tzm_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ubidi.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ubidi.icu
index d5c81de1b..d5c81de1b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ubidi.icu
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ubidi.icu
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ucase.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ucase.icu
index c4c4601a8..c4c4601a8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ucase.icu
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ucase.icu
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uemoji.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uemoji.icu
index 6a4b449bb..6a4b449bb 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uemoji.icu
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uemoji.icu
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ug.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ug.res
new file mode 100644
index 000000000..ce22a471d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ug.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ug_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ug_CN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ug_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uk.res
new file mode 100644
index 000000000..e00bfa8cc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uk_UA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uk_UA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uk_UA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ulayout.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ulayout.icu
index 7ed1bc7e2..7ed1bc7e2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/ulayout.icu
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ulayout.icu
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unames.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unames.icu
index 6e58459c9..6e58459c9 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unames.icu
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unames.icu
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/af.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/af.res
index 878ce0180..878ce0180 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/af.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/af.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/agq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/agq.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/agq.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/agq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ak.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ak.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ak.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ak.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/am.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/am.res
index ab59fd5f2..ab59fd5f2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/am.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/am.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar.res
index 460a84264..460a84264 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar_SA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar_SA.res
index 2d2dcbfd8..2d2dcbfd8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar_SA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar_SA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar_XB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar_XB.res
index 2431145ee..2431145ee 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ar_XB.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ar_XB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ars.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ars.res
index f279c106c..f279c106c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ars.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ars.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/as.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/as.res
index 4a4f74249..4a4f74249 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/as.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/as.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/asa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/asa.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/asa.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/asa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ast.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ast.res
index f1627fe8f..f1627fe8f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ast.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ast.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az.res
index 7aa989b39..7aa989b39 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_AZ.res
index bc8ef4a4d..bc8ef4a4d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_AZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_AZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Cyrl.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Cyrl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Latn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Latn_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Latn_AZ.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/az_Latn_AZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/az_Latn_AZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bas.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bas.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bas.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/be.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/be.res
index a86c82427..a86c82427 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/be.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/be.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bem.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bem.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bem.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bem.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bez.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bez.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bez.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bez.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bg.res
index c00064240..c00064240 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bgc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bgc.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bgc.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bgc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bho.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bho.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bho.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bho.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/blo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/blo.res
index b85575b28..b85575b28 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/blo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/blo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bm.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bm.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bn.res
index ef00576c7..ef00576c7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bn_IN.res
index 90cb8d7b1..90cb8d7b1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bn_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bn_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bo.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/br.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/br.res
index bbaf19e5d..bbaf19e5d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/br.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/br.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/brx.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/brx.res
index 636353a89..636353a89 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/brx.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/brx.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs.res
index ca273047b..ca273047b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_BA.res
index f7fdf76cb..f7fdf76cb 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_BA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Cyrl.res
index 9e54a7eab..9e54a7eab 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Cyrl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Latn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Latn_BA.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/bs_Latn_BA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/bs_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ca.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ca.res
index 59db230d5..59db230d5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ca.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ca.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ccp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ccp.res
index 87f80dc9e..87f80dc9e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ccp.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ccp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ce.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ce.res
index 34a78b0ea..34a78b0ea 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ce.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ce.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ceb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ceb.res
index 453bfd196..453bfd196 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ceb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ceb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cgg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cgg.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cgg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cgg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/chr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/chr.res
index 679eb7cca..679eb7cca 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/chr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/chr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ckb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ckb.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ckb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ckb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cs.res
index ee32cab4b..ee32cab4b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cs.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cs.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/csw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/csw.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/csw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/csw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cv.res
index a23f09235..a23f09235 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cy.res
index 3c857cc0c..3c857cc0c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/cy.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/cy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/da.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/da.res
index 325c1329b..325c1329b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/da.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/da.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dav.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dav.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dav.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/de.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/de.res
index 2dea1bfb7..2dea1bfb7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/de.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/de.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/de_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/de_CH.res
index b0821c45d..b0821c45d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/de_CH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/de_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dje.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dje.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dje.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dje.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/doi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/doi.res
index fd14400d6..fd14400d6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/doi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/doi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dsb.res
index 811f18878..811f18878 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dsb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dsb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dua.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dua.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dua.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dyo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dyo.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dyo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dyo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dz.res
index 9f33142fd..9f33142fd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/dz.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/dz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ebu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ebu.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ebu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ebu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ee.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ee.res
index 6d852c3ca..6d852c3ca 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ee.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ee.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/el.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/el.res
index 6449dfc56..6449dfc56 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/el.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/el.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en.res
index be0720365..be0720365 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_001.res
index 70278fb7a..70278fb7a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_001.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_001.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_150.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_150.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_150.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_150.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AI.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AI.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AT.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AT.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AU.res
index 6c7f1e886..6c7f1e886 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_AU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_AU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BB.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BB.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BE.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BM.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BS.res
index bb1b3b1c3..bb1b3b1c3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BW.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BZ.res
index bb1b3b1c3..bb1b3b1c3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_BZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_BZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CA.res
index 6e796681a..6e796681a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CC.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CC.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CH.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CK.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CM.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CX.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CX.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CY.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_CY.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_CY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DE.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DK.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DM.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_DM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_DM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ER.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ER.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ER.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FI.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FI.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FJ.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FJ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FK.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FM.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_FM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_FM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GB.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GB.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GD.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GD.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GH.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GI.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GI.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GM.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GY.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_GY.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_GY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_HK.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_HK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ID.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ID.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IE.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IL.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IL.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IM.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IN.res
index 859a40a41..859a40a41 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IO.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_IO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_IO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_JE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_JE.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_JE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_JE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_JM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_JM.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_JM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_JM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KE.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KI.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KI.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KN.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KY.res
index bb1b3b1c3..bb1b3b1c3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_KY.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_KY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LC.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LC.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LR.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LS.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_LS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_LS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MO.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MS.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MT.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MT.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MU.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MV.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MV.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MW.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MY.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_MY.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_MY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NA.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NF.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NF.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NH.res
index cc541f11e..cc541f11e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NL.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NL.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NR.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NU.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NZ.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_NZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_NZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PK.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PN.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PW.res
index bb1b3b1c3..bb1b3b1c3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_PW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_PW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_RH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_RH.res
index c4b2c1cac..c4b2c1cac 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_RH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_RH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_RW.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_RW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_RW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SB.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SB.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SC.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SC.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SD.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SD.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SE.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SH.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SI.res
index 4e8d80df2..4e8d80df2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SI.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SL.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SL.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SS.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SX.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SX.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SZ.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_SZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_SZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TC.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TC.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TK.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TO.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TT.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TT.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TV.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TV.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TZ.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_TZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_UG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_UG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VC.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VC.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VG.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VU.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_VU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_VU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_WS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_WS.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_WS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_WS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_XA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_XA.res
index 2f2c41591..2f2c41591 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_XA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_XA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZA.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZM.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZW.res
index f5b47e33a..f5b47e33a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/en_ZW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/en_ZW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/eo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/eo.res
index 4c636269d..4c636269d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/eo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/eo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es.res
index f7a24476e..f7a24476e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_419.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_419.res
index 12ae536f5..12ae536f5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_419.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_419.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_AR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_AR.res
index 85b9a0636..85b9a0636 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_AR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_AR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BO.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BR.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BZ.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_BZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_BZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CL.res
index 8e5f511d1..8e5f511d1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CL.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CO.res
index 85d2e5ebc..85d2e5ebc 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CR.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CU.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_CU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_CU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_DO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_DO.res
index cade14edb..cade14edb 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_DO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_DO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_EC.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_EC.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_EC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_GT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_GT.res
index 48d0b120e..48d0b120e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_GT.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_GT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_HN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_HN.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_HN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_HN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_MX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_MX.res
index 66c0a84f4..66c0a84f4 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_MX.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_MX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_NI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_NI.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_NI.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_NI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PA.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PE.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PR.res
index 38d4b00ab..38d4b00ab 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PY.res
index f1ceaad77..f1ceaad77 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_PY.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_PY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_SV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_SV.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_SV.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_SV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_US.res
index 312c509cd..312c509cd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_US.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_UY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_UY.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_UY.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_UY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_VE.res
index 210a95ba1..210a95ba1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/es_VE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/es_VE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/et.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/et.res
index 9906ac5f3..9906ac5f3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/et.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/et.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/eu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/eu.res
index d6895037d..d6895037d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/eu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/eu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ewo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ewo.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ewo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ewo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fa.res
index fe7b3f087..fe7b3f087 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fa.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Adlm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Adlm.res
index 9d4edd1a2..9d4edd1a2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Adlm.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Adlm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_CM.res
index 1ae9d6e09..1ae9d6e09 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_CM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_GN.res
index fcc601e49..fcc601e49 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_GN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_CM.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_CM.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_GN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_GN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_MR.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_MR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_SN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_Latn_SN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_Latn_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_MR.res
index 6cccce3bd..6cccce3bd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_MR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_SN.res
index 1c72a2742..1c72a2742 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ff_SN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ff_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fi.res
index 253043eb0..253043eb0 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fil.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fil.res
index 638bb243b..638bb243b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fil.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fil.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fil_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fil_PH.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fil_PH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fil_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fo.res
index 8b4c9d14d..8b4c9d14d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr.res
index edc10c641..edc10c641 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr_CA.res
index 8feffb12e..8feffb12e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr_CA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr_CA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr_HT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr_HT.res
index 6ec42c3f9..6ec42c3f9 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fr_HT.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fr_HT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fur.res
index f1f4b80b6..f1f4b80b6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fur.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fur.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fy.res
index 37af32ba2..37af32ba2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/fy.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/fy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ga.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ga.res
index 0a0d4cf7c..0a0d4cf7c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ga.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ga.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gd.res
index e73bed86f..e73bed86f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gd.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gl.res
index 2ed058486..2ed058486 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gsw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gsw.res
index afb855be4..afb855be4 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gsw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gsw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gu.res
index 684382f32..684382f32 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/guz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/guz.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/guz.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/guz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gv.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/gv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/gv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ha.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ha.res
index 3c5bd8c67..3c5bd8c67 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ha.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ha.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/haw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/haw.res
index 887cfffbe..887cfffbe 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/haw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/haw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/he.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/he.res
index 70c7bc8d6..70c7bc8d6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/he.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/he.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/he_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/he_IL.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/he_IL.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/he_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hi.res
index d3ea8af4d..d3ea8af4d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hi_Latn.res
index 8902d4326..8902d4326 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hi_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hi_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hr.res
index 660f66a8f..660f66a8f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hsb.res
index 5312a25ea..5312a25ea 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hsb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hsb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hu.res
index 5cd9a37a2..5cd9a37a2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hy.res
index bb254af94..bb254af94 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/hy.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/hy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ia.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ia.res
index f84db5d11..f84db5d11 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ia.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ia.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/id.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/id.res
index 0a7818e8e..0a7818e8e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/id.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/id.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/id_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/id_ID.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/id_ID.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/id_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ie.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ie.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ie.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ie.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ig.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ig.res
index 03b30f128..03b30f128 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ig.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ig.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ii.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ii.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ii.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/in.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/in.res
index 723a38003..723a38003 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/in.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/in.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/in_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/in_ID.res
index 66adf5bfe..66adf5bfe 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/in_ID.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/in_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/is.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/is.res
index b1866058c..b1866058c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/is.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/is.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/it.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/it.res
index ce82895e8..ce82895e8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/it.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/it.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/iw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/iw.res
index ca6b088c1..ca6b088c1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/iw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/iw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/iw_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/iw_IL.res
index 8873fed01..8873fed01 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/iw_IL.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/iw_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ja.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ja.res
index 38ee4e356..38ee4e356 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ja.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ja.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jgo.res
index a57ee3603..a57ee3603 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jgo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jgo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jmc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jmc.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jmc.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jmc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jv.res
index e9a8c0490..e9a8c0490 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/jv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/jv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ka.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ka.res
index 827117b94..827117b94 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ka.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ka.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kab.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kab.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kam.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kam.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kam.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kam.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kde.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kde.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kde.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kde.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kea.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kea.res
index bf488c8be..bf488c8be 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kea.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kea.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kgp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kgp.res
index 8e97c0c65..8e97c0c65 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kgp.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kgp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/khq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/khq.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/khq.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/khq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ki.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ki.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ki.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ki.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kk.res
index a14eae20c..a14eae20c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kkj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kkj.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kkj.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kkj.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kl.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kln.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kln.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kln.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/km.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/km.res
index 7dc3164f7..7dc3164f7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/km.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/km.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kn.res
index 238f88f55..238f88f55 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ko.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ko.res
index 1b58cea6f..1b58cea6f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ko.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ko.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kok.res
index 13e2830e5..13e2830e5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kok.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kok.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks.res
index af0dc64bb..af0dc64bb 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Arab.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Arab.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Arab_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Arab_IN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Arab_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Arab_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Deva.res
index c21067093..c21067093 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_Deva.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_IN.res
index 24a6a7479..24a6a7479 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ks_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ks_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksb.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksf.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksf.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksf.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksf.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksh.res
index 03dcf21b3..03dcf21b3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ksh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ksh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ku.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ku.res
index 2a3d9d9ab..2a3d9d9ab 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ku.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ku.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kw.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Deva.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Deva.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_IN.res
new file mode 100644
index 000000000..527d7225a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lag.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Latn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lag.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_Beng_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Latn_IN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_Beng_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Latn_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Orya.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Orya.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Orya.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Orya.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Telu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Telu.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/kxv_Telu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/kxv_Telu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ky.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ky.res
index 44a7073ef..44a7073ef 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ky.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ky.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lag.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lag.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lb.res
index 6cdc82506..6cdc82506 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lij.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lg.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lij.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lmo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lij.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lmo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lij.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lkt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lkt.res
index f7f1c2635..f7f1c2635 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lkt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lkt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lmo.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ln.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lmo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lrc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ln.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lrc.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ln.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lo.res
index 964f1deb5..964f1deb5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lrc.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lrc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lt.res
index f84cd42ca..f84cd42ca 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/luo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lu.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/luo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/luy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/luo.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/luy.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/luo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/luy.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mai.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/luy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lv.res
index 5dcc0bc8c..5dcc0bc8c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/lv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/lv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mai.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mas.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mai.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mer.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mas.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mer.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mas.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mfe.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mer.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mfe.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mer.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mfe.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mfe.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mg.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mgh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mgh.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mgo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mgh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mgo.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mgo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mi.res
index 839308c6a..839308c6a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mk.res
index 27c93a108..27c93a108 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ml.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ml.res
index 819041163..819041163 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ml.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ml.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mn.res
index cb2dcf73e..cb2dcf73e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_Beng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_Beng.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_Beng.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mua.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_Beng.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nn_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_Beng_IN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nn_NO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_Beng_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_IN.res
index 28393c7ba..28393c7ba 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mni_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mni_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mo.res
index ad4c2d024..ad4c2d024 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mr.res
index cd7ecaa79..cd7ecaa79 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ms.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ms.res
index c7aa45141..c7aa45141 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ms.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ms.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mt.res
index 8ece9c575..8ece9c575 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/naq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mua.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/naq.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mua.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/my.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/my.res
index fcbb67d04..fcbb67d04 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/my.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/my.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mzn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mzn.res
index 8812ff489..8812ff489 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/mzn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/mzn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/naq.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nd.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/naq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nb.res
index 59bceb061..59bceb061 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nb.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nmg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nd.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nmg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nds.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nds.res
index d4649549e..d4649549e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nds.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nds.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ne.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ne.res
index 2fe3d8feb..2fe3d8feb 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ne.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ne.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nl.res
index be28f3825..be28f3825 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nnh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nmg.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nnh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nmg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nn.res
index 81d65760e..81d65760e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nn_NO.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Arab_PK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nn_NO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nus.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nnh.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nus.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nnh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no.res
index c8fb91674..c8fb91674 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no_NO.res
index 87a1ce863..87a1ce863 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no_NO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no_NO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no_NO_NY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no_NO_NY.res
index 075adad54..075adad54 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/no_NO_NY.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/no_NO_NY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nqo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nqo.res
index 0456cf848..0456cf848 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nqo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nqo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nyn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nus.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/nyn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nus.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/om.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nyn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/om.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/nyn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/oc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/oc.res
index de464316f..de464316f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/oc.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/oc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Guru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/om.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Guru.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/om.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/or.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/or.res
index 578629dae..578629dae 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/or.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/or.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/os.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/os.res
index 724df2b7e..724df2b7e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/os.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/os.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa.res
index d02d66eb3..d02d66eb3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Arab.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Arab.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Guru_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Arab_PK.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_Guru_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/prg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Guru.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/prg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Guru.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_Olck_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Guru_IN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_Olck_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_Guru_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_IN.res
index 5cf398a06..5cf398a06 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_PK.res
index 24441c206..24441c206 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pa_PK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pa_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pcm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pcm.res
index 7921f253e..7921f253e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pcm.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pcm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pl.res
index ce89eb374..ce89eb374 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pool.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pool.res
index cc6feeb44..cc6feeb44 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pool.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pool.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/raj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/prg.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/raj.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/prg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ps.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ps.res
index ce10a5ee8..ce10a5ee8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ps.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ps.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ps_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ps_PK.res
index acded08fa..acded08fa 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ps_PK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ps_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt.res
index 117ace06b..117ace06b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_AO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_AO.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_AO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_AO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_CH.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_CH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_CV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_CV.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_CV.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_CV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_GQ.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_GQ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_GQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_GW.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_GW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_GW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_LU.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_LU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_LU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_MO.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_MO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_MZ.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_MZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_MZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_PT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_PT.res
index 938cced1d..938cced1d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_PT.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_PT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_ST.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_ST.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_ST.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_ST.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_TL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_TL.res
index 7c900c574..7c900c574 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/pt_TL.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/pt_TL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/qu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/qu.res
index c0d021e17..c0d021e17 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/qu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/qu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/raj.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/raj.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/res_index.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/res_index.res
new file mode 100644
index 000000000..f6cbe8122
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/res_index.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rm.res
index f289cdf6a..f289cdf6a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rm.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rof.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rof.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ro.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ro.res
index 985770c08..985770c08 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ro.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ro.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ro_MD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ro_MD.res
index c066971d6..c066971d6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ro_MD.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ro_MD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rof.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rof.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/root.res
new file mode 100644
index 000000000..013bf5aee
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/root.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ru.res
index 1d19504c3..1d19504c3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ru.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ru.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rwk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rw.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/rwk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rwk.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sa.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/rwk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/saq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sa.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/saq.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sah.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sah.res
index 9e55c4c4c..9e55c4c4c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sah.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sah.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_Olck.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/saq.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_Olck.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/saq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat.res
index f657e1607..f657e1607 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_IN.res
index f9a02879e..f9a02879e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sat_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sbp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_Olck.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sbp.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_Olck.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_Olck_IN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Arab_PK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sat_Olck_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sbp.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Arab.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sbp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sc.res
index 27c638b2f..27c638b2f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sc.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd.res
index 6eac2ff42..6eac2ff42 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/seh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Arab.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/seh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Arab_PK.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Deva_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Deva.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_Deva.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Tfng_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Deva_IN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Tfng_MA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_Deva_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_IN.res
index 470455c95..470455c95 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_PK.res
index efee5f311..efee5f311 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sd_PK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sd_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/se.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/se.res
index 246d09cea..246d09cea 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/se.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/se.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ses.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/seh.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ses.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/seh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ses.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ses.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sg.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh.res
index 1b19bf80f..1b19bf80f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_BA.res
index bf082acb0..bf082acb0 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_BA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_CS.res
index 597720eb7..597720eb7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_CS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_YU.res
index 597720eb7..597720eb7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sh_YU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sh_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Tfng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Tfng.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Latn.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_MA.res
index 85471dd7c..85471dd7c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/shi_MA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Tfng.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Tfng.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Tfng_MA.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_RS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/shi_Tfng_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/si.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/si.res
index e91e4fd5d..e91e4fd5d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/si.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/si.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sk.res
index 04e7951b3..04e7951b3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sl.res
index 4fb09665b..4fb09665b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/smn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/smn.res
index 22ae2e165..22ae2e165 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/smn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/smn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/so.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/so.res
index 63de58cbd..63de58cbd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/so.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/so.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sq.res
index 553c49e1d..553c49e1d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sq.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr.res
index 716fa02e1..716fa02e1 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_BA.res
index d596aebcd..d596aebcd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_BA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_CS.res
index bd37f6b1c..bd37f6b1c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_CS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_BA.res
index 1a0916805..1a0916805 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_BA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_CS.res
index f880523a8..f880523a8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_CS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_RS.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_XK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_XK.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_ME.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_XK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_YU.res
index f880523a8..f880523a8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Cyrl_YU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Cyrl_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn.res
index 2d1f44d54..2d1f44d54 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_BA.res
index f6b767a83..f6b767a83 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_BA.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_CS.res
index 597720eb7..597720eb7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_CS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_ME.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_RS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_ME.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_Latn_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_RS.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_Latn_ID.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_YU.res
index 597720eb7..597720eb7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_Latn_YU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_Latn_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_ME.res
index acfd4b719..acfd4b719 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_ME.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_ME.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_RS.res
index f880523a8..f880523a8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_RS.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_XK.res
index e3dbdd12c..e3dbdd12c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_XK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_XK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_YU.res
index bd37f6b1c..bd37f6b1c 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sr_YU.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sr_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su.res
index dde28be08..dde28be08 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_ID.res
index fa6f6eed3..fa6f6eed3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/su_ID.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/szl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_Latn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/szl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Arab_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_Latn_ID.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Arab_AF.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/su_Latn_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sv.res
index d1dc5e822..d1dc5e822 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sv.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sv_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sv_FI.res
index c481e5a99..c481e5a99 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sv_FI.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sv_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sw.res
index 8aa4eefbf..8aa4eefbf 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sw_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sw_KE.res
index 42faa2d7f..42faa2d7f 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/sw_KE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/sw_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/syr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/syr.res
index 41262d2ce..41262d2ce 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/syr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/syr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/teo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/szl.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/teo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/szl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ta.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ta.res
index 9d53eae15..9d53eae15 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ta.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ta.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/te.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/te.res
index dde34b4e7..dde34b4e7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/te.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/te.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/teo.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tg.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/teo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tg.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tok.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/th.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/th.res
index 66bb5c906..66bb5c906 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/th.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/th.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ti.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ti.res
index 5f0ed6fe6..5f0ed6fe6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ti.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ti.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tk.res
index 10cd843d0..10cd843d0 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tl.res
index 6da9794c2..6da9794c2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tl_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tl_PH.res
index 031e45e82..031e45e82 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tl_PH.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tl_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/to.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/to.res
index aea7e955a..aea7e955a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/to.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/to.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tok.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tt.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tok.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tr.res
index 237ac5eb3..237ac5eb3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/twq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tt.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/twq.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tzm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/twq.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/tzm.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/twq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tzm.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/tzm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ug.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ug.res
index 77f047819..77f047819 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ug.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ug.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uk.res
index 81858ddb4..81858ddb4 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uk.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ur.res
index eb225d127..eb225d127 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ur.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ur.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ur_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ur_IN.res
index 090440723..090440723 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/ur_IN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/ur_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz.res
index bfee99e83..bfee99e83 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_AF.res
index 09b67d610..09b67d610 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_AF.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Arab.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Arab.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Latn_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Arab_AF.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Latn_UZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Arab_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Cyrl.res
index 488a41c36..488a41c36 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_Cyrl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Latn.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Vaii_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Latn_UZ.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Vaii_LR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_Latn_UZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_UZ.res
index be6f1197e..be6f1197e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/uz_UZ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/uz_UZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Vaii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Vaii.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_LR.res
index db522b5aa..db522b5aa 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_LR.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Latn.res
index f9bae7fde..f9bae7fde 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vai_Latn.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vmw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Vaii.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vmw.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Vaii.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Vaii_LR.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hans_CN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vai_Vaii_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vec.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vec.res
index 371edddf5..371edddf5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vec.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vec.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vi.res
index 0a115011b..0a115011b 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vun.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vmw.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/vun.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vmw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xog.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vun.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xog.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/vun.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/wae.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/wae.res
index f2b0d3865..f2b0d3865 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/wae.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/wae.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/wo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/wo.res
index 511101d2a..511101d2a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/wo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/wo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xh.res
index 5b2310026..5b2310026 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xnr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xnr.res
index 387926020..387926020 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/xnr.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xnr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xog.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yav.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/xog.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yav.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yi.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yav.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yi.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hant.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yo.res
index b86c0d7a8..b86c0d7a8 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yo.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yo_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yo_BJ.res
index 9a454231a..9a454231a 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yo_BJ.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yo_BJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl.res
index 16667c0c7..16667c0c7 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl_CO.res
index 1eca80d77..1eca80d77 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl_CO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl_CO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl_VE.res
index 1eca80d77..1eca80d77 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yrl_VE.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yrl_VE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue.res
index 88370feff..88370feff 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_CN.res
index c13e19f05..c13e19f05 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_CN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_HK.res
index 88ab6dee2..88ab6dee2 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_HK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hans.res
index 3088029d3..3088029d3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hans.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hans.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hans_CN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/yue_Hant_HK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/za.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hant.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/za.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hant.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hant_HK.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_CN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/yue_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/za.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zgh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/za.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zgh.res
index 7665ca048..7665ca048 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zgh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh.res
index 001624ddc..001624ddc 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_CN.res
index 8a531440d..8a531440d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_CN.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_HK.res
index 35ec291d6..35ec291d6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_HK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans.res
new file mode 100644
index 000000000..7665ca048
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_CN.res
index 14bea5acd..14bea5acd 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_TW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_HK.res
index 19abbc870..19abbc870 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_HK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_MO.res
index 19abbc870..19abbc870 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_MO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_SG.res
index 19abbc870..19abbc870 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hans_SG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hans_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant.res
index e608792e5..e608792e5 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_HK.res
index 66f9292e6..66f9292e6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_HK.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_MO.res
index 678659a60..678659a60 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_Hant_MO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_TW.res
new file mode 100644
index 000000000..14bea5acd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_Hant_TW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_MO.res
index feec44c4d..feec44c4d 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_MO.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_SG.res
index 4f7277fba..4f7277fba 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_SG.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_TW.res
index a7a349621..a7a349621 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zh_TW.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zh_TW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zu.res
index 0f69a0cf6..0f69a0cf6 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/unit/zu.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/unit/zu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/units.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/units.res
new file mode 100644
index 000000000..89be0576d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/units.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uprops.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uprops.icu
new file mode 100644
index 000000000..97ae2b24b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uprops.icu
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur.res
new file mode 100644
index 000000000..5a24f73c5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur_IN.res
new file mode 100644
index 000000000..a4dd63bb4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur_PK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/ur_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uts46.nrm b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uts46.nrm
index 16084c2a3..16084c2a3 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/uts46.nrm
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uts46.nrm
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz.res
new file mode 100644
index 000000000..be401e860
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_AF.res
new file mode 100644
index 000000000..ff2c2bc2e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Arab.res
new file mode 100644
index 000000000..f87f23d83
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Arab_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Arab_AF.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Arab_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Cyrl.res
new file mode 100644
index 000000000..c0840a6bb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Cyrl_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Cyrl_UZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Cyrl_UZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Latn.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Latn_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Latn_UZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_Latn_UZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_UZ.res
new file mode 100644
index 000000000..3837861df
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/uz_UZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai.res
new file mode 100644
index 000000000..843891167
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_LR.res
new file mode 100644
index 000000000..61ebc334c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Latn.res
new file mode 100644
index 000000000..727806f14
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Latn_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Latn_LR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Latn_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Vaii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Vaii.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Vaii.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Vaii_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Vaii_LR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vai_Vaii_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vec.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vec.res
new file mode 100644
index 000000000..1f59a92a7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vec.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vec_IT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vec_IT.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vec_IT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vi.res
new file mode 100644
index 000000000..3f27565ee
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vi_VN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vi_VN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vi_VN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vmw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vmw.res
new file mode 100644
index 000000000..aab8584a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vmw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vmw_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vmw_MZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vmw_MZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vun.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vun.res
new file mode 100644
index 000000000..0fc63c03a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vun.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vun_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vun_TZ.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/vun_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wae.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wae.res
new file mode 100644
index 000000000..d35292a2c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wae.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wae_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wae_CH.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wae_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/windowsZones.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/windowsZones.res
index fc9bbdbfb..fc9bbdbfb 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/windowsZones.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/windowsZones.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wo.res
new file mode 100644
index 000000000..11d5ca459
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wo_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wo_SN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/wo_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xh.res
new file mode 100644
index 000000000..4321b6a9f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xh_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xh_ZA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xh_ZA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xnr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xnr.res
new file mode 100644
index 000000000..53331513d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xnr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xnr_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xnr_IN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xnr_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xog.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xog.res
new file mode 100644
index 000000000..22a681f6a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xog.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xog_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xog_UG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/xog_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yav.res
new file mode 100644
index 000000000..23b14edda
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yav.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yav_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yav_CM.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yav_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yi.res
new file mode 100644
index 000000000..cba7e4527
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yi_UA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yi_UA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yi_UA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo.res
new file mode 100644
index 000000000..d7659a3e3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo_BJ.res
new file mode 100644
index 000000000..ec06c6e1e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo_BJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo_NG.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yo_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl.res
new file mode 100644
index 000000000..b057b7c39
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_BR.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_BR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_CO.res
new file mode 100644
index 000000000..399fad657
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_CO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_VE.res
new file mode 100644
index 000000000..399fad657
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yrl_VE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue.res
new file mode 100644
index 000000000..97d74c674
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_CN.res
new file mode 100644
index 000000000..4997a649b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_HK.res
new file mode 100644
index 000000000..5739ddd86
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hans.res
new file mode 100644
index 000000000..3aa6404e4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hans.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hans_CN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hant.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hant.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hant_HK.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/yue_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/za.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/za.res
new file mode 100644
index 000000000..573569d56
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/za.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/za_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/za_CN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/za_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zgh.res
new file mode 100644
index 000000000..ce4676dd6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zgh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zgh_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zgh_MA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zgh_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh.res
new file mode 100644
index 000000000..8f4cf209d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_CN.res
new file mode 100644
index 000000000..8ff1ed397
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_HK.res
new file mode 100644
index 000000000..d4c170c8b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_CN.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_HK.res
new file mode 100644
index 000000000..b7584d73f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_MO.res
new file mode 100644
index 000000000..80d88368c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_SG.res
new file mode 100644
index 000000000..cbc06c05e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hans_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant.res
new file mode 100644
index 000000000..ff72e7e9f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_HK.res
new file mode 100644
index 000000000..e8d20e626
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_MO.res
new file mode 100644
index 000000000..b7bb64863
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_TW.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_Hant_TW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_MO.res
new file mode 100644
index 000000000..d9906c2c7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_SG.res
new file mode 100644
index 000000000..3bfddceab
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_TW.res
new file mode 100644
index 000000000..ed014331c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zh_TW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/af.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/af.res
new file mode 100644
index 000000000..b17f909a4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/af.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/agq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/agq.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/agq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ak.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ak.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ak.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/am.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/am.res
new file mode 100644
index 000000000..517ba10b7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/am.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar.res
new file mode 100644
index 000000000..ee6633d44
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar_SA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar_SA.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar_SA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar_XB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar_XB.res
new file mode 100644
index 000000000..06ae9ab37
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ar_XB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ars.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ars.res
new file mode 100644
index 000000000..c5061c154
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ars.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/as.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/as.res
new file mode 100644
index 000000000..b4eaac043
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/as.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/asa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/asa.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/asa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ast.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ast.res
new file mode 100644
index 000000000..0d3838530
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ast.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az.res
new file mode 100644
index 000000000..0af52b4a1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_AZ.res
new file mode 100644
index 000000000..d4b136bd1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_AZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Cyrl.res
new file mode 100644
index 000000000..e9094d7bf
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Latn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Latn_AZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Latn_AZ.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/az_Latn_AZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bas.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bas.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/be.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/be.res
new file mode 100644
index 000000000..0aa6db019
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/be.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bem.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bem.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bem.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bez.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bez.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bez.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bg.res
new file mode 100644
index 000000000..dbb544dd8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bgc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bgc.res
new file mode 100644
index 000000000..aeb937198
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bgc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bho.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bho.res
new file mode 100644
index 000000000..143b6b81d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bho.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/blo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/blo.res
new file mode 100644
index 000000000..fe8105820
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/blo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bm.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bn.res
new file mode 100644
index 000000000..e1aad9da5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bo.res
new file mode 100644
index 000000000..6b95fc572
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/br.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/br.res
new file mode 100644
index 000000000..a91455755
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/br.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/brx.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/brx.res
new file mode 100644
index 000000000..053c0d61c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/brx.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs.res
new file mode 100644
index 000000000..6a8005aef
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_BA.res
new file mode 100644
index 000000000..5808cd438
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Cyrl.res
new file mode 100644
index 000000000..de8e199cb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Latn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Latn_BA.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/bs_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ca.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ca.res
new file mode 100644
index 000000000..b480b7379
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ca.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ccp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ccp.res
new file mode 100644
index 000000000..89c5d6ec8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ccp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ce.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ce.res
new file mode 100644
index 000000000..af641a0ca
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ce.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ceb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ceb.res
new file mode 100644
index 000000000..aba96444d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ceb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cgg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cgg.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cgg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/chr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/chr.res
new file mode 100644
index 000000000..f66be6c81
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/chr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ckb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ckb.res
new file mode 100644
index 000000000..1fa83185d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ckb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cs.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cs.res
new file mode 100644
index 000000000..c9c20e43b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cs.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/csw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/csw.res
new file mode 100644
index 000000000..5f084717e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/csw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cv.res
new file mode 100644
index 000000000..cbece3ef2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cy.res
new file mode 100644
index 000000000..84fc4a376
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/cy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/da.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/da.res
new file mode 100644
index 000000000..b9f3406aa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/da.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dav.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dav.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/de.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/de.res
new file mode 100644
index 000000000..565c91049
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/de.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/de_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/de_CH.res
new file mode 100644
index 000000000..7b58f1b68
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/de_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dje.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dje.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dje.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/doi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/doi.res
new file mode 100644
index 000000000..b927768f6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/doi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dsb.res
new file mode 100644
index 000000000..505f8228a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dsb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dua.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dua.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dyo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dyo.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dyo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dz.res
new file mode 100644
index 000000000..2f885dfb3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/dz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ebu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ebu.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ebu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ee.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ee.res
new file mode 100644
index 000000000..c6735de01
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ee.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/el.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/el.res
new file mode 100644
index 000000000..2065d8559
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/el.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en.res
new file mode 100644
index 000000000..811576652
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_001.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_001.res
new file mode 100644
index 000000000..80297fd4c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_001.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_150.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_150.res
new file mode 100644
index 000000000..d0d3a7924
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_150.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AE.res
new file mode 100644
index 000000000..4564f4054
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AG.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AI.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AT.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AU.res
new file mode 100644
index 000000000..658f1cddb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_AU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BB.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BE.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BM.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BS.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BW.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BZ.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_BZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CA.res
new file mode 100644
index 000000000..d64a1997f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CC.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CH.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CK.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CM.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CX.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CY.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_CY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DE.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DG.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DK.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DM.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_DM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ER.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ER.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ER.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FI.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FJ.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FK.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FM.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_FM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GB.res
new file mode 100644
index 000000000..6e8ef6037
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GD.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GG.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GH.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GI.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GM.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GU.res
new file mode 100644
index 000000000..0a80be507
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GY.res
new file mode 100644
index 000000000..e45a28365
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_GY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_HK.res
new file mode 100644
index 000000000..edaabc6dc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ID.res
new file mode 100644
index 000000000..416f30d18
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IE.res
new file mode 100644
index 000000000..bfc456af3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IL.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IM.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IN.res
new file mode 100644
index 000000000..d59721def
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IO.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_IO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_JE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_JE.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_JE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_JM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_JM.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_JM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KE.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KI.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KN.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KY.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_KY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LC.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LR.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LS.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_LS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MG.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MH.res
new file mode 100644
index 000000000..38017f21e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MO.res
new file mode 100644
index 000000000..b60a1431d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MP.res
new file mode 100644
index 000000000..38017f21e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MP.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MS.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MT.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MU.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MV.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MW.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MY.res
new file mode 100644
index 000000000..61cd8475a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_MY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NA.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NF.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NG.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NH.res
new file mode 100644
index 000000000..84fdc3869
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NL.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NR.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NU.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NZ.res
new file mode 100644
index 000000000..3e571b2ea
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_NZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PG.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PK.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PN.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PW.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_PW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_RH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_RH.res
new file mode 100644
index 000000000..84bcce756
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_RH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_RW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_RW.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_RW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SB.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SB.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SB.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SC.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SD.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SD.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SD.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SE.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SG.res
new file mode 100644
index 000000000..538c07883
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SH.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SI.res
new file mode 100644
index 000000000..a4fa61d00
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SL.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SS.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SX.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SZ.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_SZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TC.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TK.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TO.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TT.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TV.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TZ.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_TZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_UG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_UG.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_UG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VC.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VG.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VU.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_VU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_WS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_WS.res
new file mode 100644
index 000000000..821298d2a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_WS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_XA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_XA.res
new file mode 100644
index 000000000..7bc01bad5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_XA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZA.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZM.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZW.res
new file mode 100644
index 000000000..894ca07fa
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/en_ZW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/eo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/eo.res
new file mode 100644
index 000000000..daa49fd49
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/eo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es.res
new file mode 100644
index 000000000..1631b1278
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_419.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_419.res
new file mode 100644
index 000000000..95a54942d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_419.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_AR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_AR.res
new file mode 100644
index 000000000..cdc9aaf16
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_AR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BO.res
new file mode 100644
index 000000000..f0b0ba168
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BR.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BZ.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_BZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CL.res
new file mode 100644
index 000000000..6f1c62f74
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CO.res
new file mode 100644
index 000000000..b4e49191a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CR.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CU.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_CU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_DO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_DO.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_DO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_EC.res
new file mode 100644
index 000000000..f869920ea
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_EC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_GT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_GT.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_GT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_HN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_HN.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_HN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_MX.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_MX.res
new file mode 100644
index 000000000..6e8e464b2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_MX.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_NI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_NI.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_NI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PA.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PE.res
new file mode 100644
index 000000000..93f70139e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PR.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PY.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_PY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_SV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_SV.res
new file mode 100644
index 000000000..0b94ae0a0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_SV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_US.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_US.res
new file mode 100644
index 000000000..4414517f2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_US.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_UY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_UY.res
new file mode 100644
index 000000000..4077a9fb3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_UY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_VE.res
new file mode 100644
index 000000000..da70ca6ac
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/es_VE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/et.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/et.res
new file mode 100644
index 000000000..07aec605c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/et.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/eu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/eu.res
new file mode 100644
index 000000000..be768e6c0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/eu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ewo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ewo.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ewo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fa.res
new file mode 100644
index 000000000..ccdd72935
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Adlm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Adlm.res
new file mode 100644
index 000000000..3c608d4ca
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Adlm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_CM.res
new file mode 100644
index 000000000..4e4c8838b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_GN.res
new file mode 100644
index 000000000..f8fb8949c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_CM.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_CM.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_CM.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_GN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_GN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_GN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_MR.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_SN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_Latn_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_MR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_MR.res
new file mode 100644
index 000000000..607b84fc7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_MR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_SN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_SN.res
new file mode 100644
index 000000000..fee5e9241
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ff_SN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fi.res
new file mode 100644
index 000000000..6410013c7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fil.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fil.res
new file mode 100644
index 000000000..d03b3f627
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fil.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fil_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fil_PH.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fil_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fo.res
new file mode 100644
index 000000000..a1660dfa5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr.res
new file mode 100644
index 000000000..cb294ecf0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr_CA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr_CA.res
new file mode 100644
index 000000000..625239563
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr_CA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr_GF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr_GF.res
new file mode 100644
index 000000000..61a64b5cb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fr_GF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fur.res
new file mode 100644
index 000000000..14f89374b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fur.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fy.res
new file mode 100644
index 000000000..7063ab557
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/fy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ga.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ga.res
new file mode 100644
index 000000000..b2c2521e1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ga.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gd.res
new file mode 100644
index 000000000..a0d7b2682
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gl.res
new file mode 100644
index 000000000..5b400625f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gsw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gsw.res
new file mode 100644
index 000000000..2844538ec
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gsw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gu.res
new file mode 100644
index 000000000..6361bbde4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/guz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/guz.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/guz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gv.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/gv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ha.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ha.res
new file mode 100644
index 000000000..6d5d781f6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ha.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/haw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/haw.res
new file mode 100644
index 000000000..9557fa776
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/haw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/he.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/he.res
new file mode 100644
index 000000000..de95d6620
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/he.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/he_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/he_IL.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/he_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hi.res
new file mode 100644
index 000000000..09237ee5d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hi_Latn.res
new file mode 100644
index 000000000..d58412b1a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hi_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hr.res
new file mode 100644
index 000000000..5d75f9475
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hsb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hsb.res
new file mode 100644
index 000000000..2eb68fe61
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hsb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hu.res
new file mode 100644
index 000000000..49e8dbd51
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hy.res
new file mode 100644
index 000000000..f25ee67cc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/hy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ia.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ia.res
new file mode 100644
index 000000000..0b1c99753
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ia.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/id.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/id.res
new file mode 100644
index 000000000..96b08f926
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/id.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/id_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/id_ID.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/id_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ie.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ie.res
new file mode 100644
index 000000000..fc2df40e6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ie.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ig.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ig.res
new file mode 100644
index 000000000..8265c99b7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ig.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ii.res
new file mode 100644
index 000000000..692262329
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ii.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/in.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/in.res
new file mode 100644
index 000000000..22f9125a8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/in.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/in_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/in_ID.res
new file mode 100644
index 000000000..3cfe3351c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/in_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/is.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/is.res
new file mode 100644
index 000000000..afbdbeca0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/is.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/it.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/it.res
new file mode 100644
index 000000000..77047b9b3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/it.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/iw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/iw.res
new file mode 100644
index 000000000..ee167159d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/iw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/iw_IL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/iw_IL.res
new file mode 100644
index 000000000..228bb00bd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/iw_IL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ja.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ja.res
new file mode 100644
index 000000000..f2b50aa2c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ja.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jgo.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jgo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jmc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jmc.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jmc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jv.res
new file mode 100644
index 000000000..71632e5d0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/jv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ka.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ka.res
new file mode 100644
index 000000000..9789ffbe5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ka.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kab.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kam.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kam.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kam.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kde.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kde.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kde.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kea.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kea.res
new file mode 100644
index 000000000..34e499644
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kea.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kgp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kgp.res
new file mode 100644
index 000000000..24b6eaefe
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kgp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/khq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/khq.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/khq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ki.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ki.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ki.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kk.res
new file mode 100644
index 000000000..b25921d2d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kkj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kkj.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kkj.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kl.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kln.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kln.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/km.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/km.res
new file mode 100644
index 000000000..1e47806d3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/km.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kn.res
new file mode 100644
index 000000000..efea7e3f6
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ko.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ko.res
new file mode 100644
index 000000000..87a055c7f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ko.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ko_KP.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ko_KP.res
new file mode 100644
index 000000000..af39229ec
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ko_KP.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kok.res
new file mode 100644
index 000000000..dcfe7ee96
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kok.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks.res
new file mode 100644
index 000000000..0a6d59d4e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Arab.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Arab_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Arab_IN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Arab_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Deva.res
new file mode 100644
index 000000000..e576738e0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_IN.res
new file mode 100644
index 000000000..66003ca50
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ks_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksb.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksf.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksf.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksf.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksh.res
new file mode 100644
index 000000000..5fce91ddb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ksh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ku.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ku.res
new file mode 100644
index 000000000..a1ca6db45
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ku.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kw.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv.res
new file mode 100644
index 000000000..69a6c082a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Deva.res
new file mode 100644
index 000000000..f8c4408e1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_IN.res
new file mode 100644
index 000000000..dbe030bff
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Latn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Latn_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Latn_IN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Latn_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Orya.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Orya.res
new file mode 100644
index 000000000..9a6833fe7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Orya.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Telu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Telu.res
new file mode 100644
index 000000000..7021d9e0c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/kxv_Telu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ky.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ky.res
new file mode 100644
index 000000000..38488bfa9
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ky.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lag.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lag.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lag.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lb.res
new file mode 100644
index 000000000..372a3d185
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lg.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lij.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lij.res
new file mode 100644
index 000000000..152823ce8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lij.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lkt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lkt.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lkt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lmo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lmo.res
new file mode 100644
index 000000000..0d8409588
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lmo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ln.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ln.res
new file mode 100644
index 000000000..36e18ec5e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ln.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lo.res
new file mode 100644
index 000000000..75c87b12c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lrc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lrc.res
new file mode 100644
index 000000000..f271a707b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lrc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lt.res
new file mode 100644
index 000000000..451c56c91
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lu.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/luo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/luo.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/luo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/luy.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/luy.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/luy.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lv.res
new file mode 100644
index 000000000..c16385046
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/lv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mai.res
new file mode 100644
index 000000000..f1ca811ec
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mai.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mas.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mas.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mas.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mer.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mer.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mer.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mfe.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mfe.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mfe.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mg.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mgh.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mgh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mgo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mgo.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mgo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mi.res
new file mode 100644
index 000000000..8c50ca065
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mk.res
new file mode 100644
index 000000000..2f25578ec
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ml.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ml.res
new file mode 100644
index 000000000..70ee32b11
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ml.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mn.res
new file mode 100644
index 000000000..35f539f8c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni.res
new file mode 100644
index 000000000..339fc6a04
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_Beng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_Beng.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_Beng.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_Beng_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_Beng_IN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_Beng_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_IN.res
new file mode 100644
index 000000000..0341f5ed5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mni_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mo.res
new file mode 100644
index 000000000..ab0ecf04a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mr.res
new file mode 100644
index 000000000..1d9ea21e3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ms.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ms.res
new file mode 100644
index 000000000..66edf9936
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ms.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ms_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ms_ID.res
new file mode 100644
index 000000000..1693b0bcf
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ms_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mt.res
new file mode 100644
index 000000000..7b2322f02
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mua.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mua.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mua.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/my.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/my.res
new file mode 100644
index 000000000..552b41f19
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/my.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mzn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mzn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/mzn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/naq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/naq.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/naq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nb.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nb.res
new file mode 100644
index 000000000..48b2b3105
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nb.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nd.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nds.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nds.res
new file mode 100644
index 000000000..dba4afb05
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nds.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ne.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ne.res
new file mode 100644
index 000000000..0dd92771e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ne.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ne_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ne_IN.res
new file mode 100644
index 000000000..48b73df17
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ne_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nl.res
new file mode 100644
index 000000000..9364b27f7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nl_SR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nl_SR.res
new file mode 100644
index 000000000..773c936f4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nl_SR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nmg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nmg.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nmg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nn.res
new file mode 100644
index 000000000..9bdddc564
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nn_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nn_NO.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nn_NO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nnh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nnh.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nnh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no.res
new file mode 100644
index 000000000..d14bdf997
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no_NO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no_NO.res
new file mode 100644
index 000000000..d40b62933
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no_NO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no_NO_NY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no_NO_NY.res
new file mode 100644
index 000000000..4eee1243d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/no_NO_NY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nqo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nqo.res
new file mode 100644
index 000000000..2aba90823
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nqo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nus.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nus.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nus.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nyn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nyn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/nyn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/oc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/oc.res
new file mode 100644
index 000000000..55060c23f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/oc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/om.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/om.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/om.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/or.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/or.res
new file mode 100644
index 000000000..629fca177
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/or.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/os.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/os.res
new file mode 100644
index 000000000..d64b6b498
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/os.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa.res
new file mode 100644
index 000000000..7657516c3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Arab.res
new file mode 100644
index 000000000..e9094d7bf
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Arab_PK.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Guru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Guru.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Guru.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Guru_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Guru_IN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_Guru_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_IN.res
new file mode 100644
index 000000000..3d90884a1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_PK.res
new file mode 100644
index 000000000..23b4ee046
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pa_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pcm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pcm.res
new file mode 100644
index 000000000..2b2e38694
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pcm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pl.res
new file mode 100644
index 000000000..67f7074e3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pool.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pool.res
new file mode 100644
index 000000000..1779eb366
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pool.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/prg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/prg.res
new file mode 100644
index 000000000..fb1fb8f0a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/prg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ps.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ps.res
new file mode 100644
index 000000000..4f4a2df25
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ps.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ps_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ps_PK.res
new file mode 100644
index 000000000..27d3e65d5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ps_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt.res
new file mode 100644
index 000000000..2d4bf371a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_AO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_AO.res
new file mode 100644
index 000000000..55281fb41
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_AO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_CH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_CH.res
new file mode 100644
index 000000000..99c883391
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_CH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_CV.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_CV.res
new file mode 100644
index 000000000..1fed18492
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_CV.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_GQ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_GQ.res
new file mode 100644
index 000000000..99c883391
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_GQ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_GW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_GW.res
new file mode 100644
index 000000000..55281fb41
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_GW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_LU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_LU.res
new file mode 100644
index 000000000..99c883391
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_LU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_MO.res
new file mode 100644
index 000000000..55281fb41
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_MZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_MZ.res
new file mode 100644
index 000000000..55281fb41
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_MZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_PT.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_PT.res
new file mode 100644
index 000000000..255505054
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_PT.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_ST.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_ST.res
new file mode 100644
index 000000000..55281fb41
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_ST.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_TL.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_TL.res
new file mode 100644
index 000000000..55281fb41
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/pt_TL.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu.res
new file mode 100644
index 000000000..b746f1024
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu_BO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu_BO.res
new file mode 100644
index 000000000..804f4cda8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu_BO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu_EC.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu_EC.res
new file mode 100644
index 000000000..acead72f8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/qu_EC.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/raj.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/raj.res
new file mode 100644
index 000000000..dffb5ee93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/raj.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/res_index.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/res_index.res
new file mode 100644
index 000000000..a21e264b3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/res_index.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rm.res
new file mode 100644
index 000000000..c52d59434
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ro.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ro.res
new file mode 100644
index 000000000..ec34641c3
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ro.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rof.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rof.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rof.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/root.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/root.res
new file mode 100644
index 000000000..bba3ac12d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/root.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ru.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ru.res
new file mode 100644
index 000000000..091587fa1
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ru.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rw.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rwk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rwk.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/rwk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sa.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sa.res
new file mode 100644
index 000000000..ef63a5555
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sa.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sah.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sah.res
new file mode 100644
index 000000000..bbfea53de
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sah.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/saq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/saq.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/saq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat.res
new file mode 100644
index 000000000..59899cecb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_IN.res
new file mode 100644
index 000000000..05fdd74dc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_Olck.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_Olck.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_Olck.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_Olck_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_Olck_IN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sat_Olck_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sbp.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sbp.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sbp.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sc.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sc.res
new file mode 100644
index 000000000..393b33b13
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sc.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd.res
new file mode 100644
index 000000000..3898020fe
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Arab.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Arab_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Arab_PK.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Deva.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Deva.res
new file mode 100644
index 000000000..aba977a65
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Deva.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Deva_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Deva_IN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_Deva_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_IN.res
new file mode 100644
index 000000000..09da1397a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_PK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_PK.res
new file mode 100644
index 000000000..0aefb5984
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sd_PK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/se.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/se.res
new file mode 100644
index 000000000..eadd5bdcc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/se.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/se_FI.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/se_FI.res
new file mode 100644
index 000000000..1fa782984
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/se_FI.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/seh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/seh.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/seh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ses.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ses.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ses.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sg.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh.res
new file mode 100644
index 000000000..8b79f6fee
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_BA.res
new file mode 100644
index 000000000..f08590f6a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_CS.res
new file mode 100644
index 000000000..b4687455b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_YU.res
new file mode 100644
index 000000000..b4687455b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sh_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Latn.res
new file mode 100644
index 000000000..e9094d7bf
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_MA.res
new file mode 100644
index 000000000..e56f62ed2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Tfng.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Tfng.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Tfng.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Tfng_MA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Tfng_MA.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/shi_Tfng_MA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/si.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/si.res
new file mode 100644
index 000000000..3d101af17
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/si.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sk.res
new file mode 100644
index 000000000..10006de50
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sl.res
new file mode 100644
index 000000000..f67e1839a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/smn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/smn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/smn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/so.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/so.res
new file mode 100644
index 000000000..b4e516575
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/so.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sq.res
new file mode 100644
index 000000000..e00c3e948
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr.res
new file mode 100644
index 000000000..7655f9009
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_BA.res
new file mode 100644
index 000000000..7a6b71cf2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_CS.res
new file mode 100644
index 000000000..2d609a970
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_BA.res
new file mode 100644
index 000000000..f3ad2f034
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_CS.res
new file mode 100644
index 000000000..f98aa329b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_RS.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_XK.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_XK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_YU.res
new file mode 100644
index 000000000..f98aa329b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Cyrl_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn.res
new file mode 100644
index 000000000..c89c37ce4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_BA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_BA.res
new file mode 100644
index 000000000..f536ed167
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_CS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_CS.res
new file mode 100644
index 000000000..b4687455b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_CS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_ME.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_ME.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_RS.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_YU.res
new file mode 100644
index 000000000..b4687455b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_Latn_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_ME.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_ME.res
new file mode 100644
index 000000000..5af8fc6c5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_ME.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_RS.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_RS.res
new file mode 100644
index 000000000..f98aa329b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_RS.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_XK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_XK.res
new file mode 100644
index 000000000..50804df0c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_XK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_YU.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_YU.res
new file mode 100644
index 000000000..2d609a970
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sr_YU.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su.res
new file mode 100644
index 000000000..e669c4592
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_ID.res
new file mode 100644
index 000000000..7ac7e1564
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_Latn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_Latn_ID.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_Latn_ID.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/su_Latn_ID.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sv.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sv.res
new file mode 100644
index 000000000..1f2573bce
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sv.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sw.res
new file mode 100644
index 000000000..c5ccf1fd8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sw_KE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sw_KE.res
new file mode 100644
index 000000000..f9eddc270
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/sw_KE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/syr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/syr.res
new file mode 100644
index 000000000..057a20179
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/syr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/szl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/szl.res
new file mode 100644
index 000000000..15a319d74
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/szl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta.res
new file mode 100644
index 000000000..00411eaee
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta_MY.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta_MY.res
new file mode 100644
index 000000000..af4d716e7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta_MY.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta_SG.res
new file mode 100644
index 000000000..af4d716e7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ta_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/te.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/te.res
new file mode 100644
index 000000000..da17e748e
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/te.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/teo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/teo.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/teo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tg.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tg.res
new file mode 100644
index 000000000..3fd625503
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tg.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/th.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/th.res
new file mode 100644
index 000000000..849a9b23b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/th.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ti.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ti.res
new file mode 100644
index 000000000..e75beac81
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ti.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tk.res
new file mode 100644
index 000000000..88bbdf429
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tl.res
new file mode 100644
index 000000000..143fcccbe
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tl_PH.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tl_PH.res
new file mode 100644
index 000000000..77818116b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tl_PH.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/to.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/to.res
new file mode 100644
index 000000000..e598dd207
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/to.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tok.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tok.res
new file mode 100644
index 000000000..b80b603ee
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tok.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tr.res
new file mode 100644
index 000000000..bb43a6e37
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tt.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tt.res
new file mode 100644
index 000000000..923afeea4
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tt.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/twq.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/twq.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/twq.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tzdbNames.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tzdbNames.res
index 0ae6a8a87..0ae6a8a87 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zone/tzdbNames.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tzdbNames.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tzm.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tzm.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/tzm.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ug.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ug.res
new file mode 100644
index 000000000..917cbbb52
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ug.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uk.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uk.res
new file mode 100644
index 000000000..24c5ae1e2
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uk.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ur.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ur.res
new file mode 100644
index 000000000..810855ceb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ur.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ur_IN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ur_IN.res
new file mode 100644
index 000000000..aafb8eb26
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/ur_IN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz.res
new file mode 100644
index 000000000..0d7dc1996
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_AF.res
new file mode 100644
index 000000000..f780cc6cc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Arab.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Arab.res
new file mode 100644
index 000000000..9d5cb2e81
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Arab.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Arab_AF.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Arab_AF.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Arab_AF.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Cyrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Cyrl.res
new file mode 100644
index 000000000..d1becf388
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Cyrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Latn.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Latn_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Latn_UZ.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_Latn_UZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_UZ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_UZ.res
new file mode 100644
index 000000000..4828e43f7
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/uz_UZ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_LR.res
new file mode 100644
index 000000000..79f67c780
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Latn.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Latn.res
new file mode 100644
index 000000000..e9094d7bf
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Latn.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Vaii.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Vaii.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Vaii.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Vaii_LR.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Vaii_LR.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vai_Vaii_LR.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vec.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vec.res
new file mode 100644
index 000000000..6a0002ccb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vec.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vi.res
new file mode 100644
index 000000000..f91e9403f
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vmw.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vmw.res
new file mode 100644
index 000000000..e0d5ab390
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vmw.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vun.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vun.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/vun.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/wae.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/wae.res
new file mode 100644
index 000000000..5fbe0c243
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/wae.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/wo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/wo.res
new file mode 100644
index 000000000..805dd7acb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/wo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xh.res
new file mode 100644
index 000000000..4741e3016
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xnr.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xnr.res
new file mode 100644
index 000000000..afd661c3c
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xnr.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xog.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xog.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/xog.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yav.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yav.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yav.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yi.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yi.res
new file mode 100644
index 000000000..9d50517cb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yi.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yo.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yo.res
new file mode 100644
index 000000000..365c7d351
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yo.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yo_BJ.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yo_BJ.res
new file mode 100644
index 000000000..3f1607f6b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yo_BJ.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl.res
new file mode 100644
index 000000000..add6c6edf
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl_CO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl_CO.res
new file mode 100644
index 000000000..9e30d275b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl_CO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl_VE.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl_VE.res
new file mode 100644
index 000000000..9e30d275b
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yrl_VE.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue.res
new file mode 100644
index 000000000..a2f7688df
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_CN.res
new file mode 100644
index 000000000..b0c634404
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_HK.res
new file mode 100644
index 000000000..914386970
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hans.res
new file mode 100644
index 000000000..2ee20da31
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hans.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hans_CN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hant.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hant.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hant_HK.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/yue_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/za.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/za.res
new file mode 100644
index 000000000..93c06b425
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/za.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zgh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zgh.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zgh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh.res
new file mode 100644
index 000000000..ead26beb8
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_CN.res
new file mode 100644
index 000000000..c6279785a
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_HK.res
new file mode 100644
index 000000000..2989a6ddd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans.res
new file mode 100644
index 000000000..76baebd93
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans_CN.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans_CN.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans_SG.res
new file mode 100644
index 000000000..5342c30dc
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hans_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant.res
new file mode 100644
index 000000000..939cbf792
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_HK.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_HK.res
new file mode 100644
index 000000000..7691b6ba5
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_MO.res
new file mode 100644
index 000000000..d0360c613
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_TW.res
new file mode 100644
index 000000000..7e6cdc9cd
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_Hant_TW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_MO.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_MO.res
new file mode 100644
index 000000000..21312f111
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_MO.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_SG.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_SG.res
new file mode 100644
index 000000000..2cfa4fea0
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_SG.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_TW.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_TW.res
new file mode 100644
index 000000000..54364331d
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zh_TW.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zu.res
new file mode 100644
index 000000000..f34f571fb
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zone/zu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zoneinfo64.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zoneinfo64.res
index 5260bf76e..5260bf76e 100644
--- a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt74b/zoneinfo64.res
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zoneinfo64.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zu.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zu.res
new file mode 100644
index 000000000..5b78d2716
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zu.res
Binary files differ
diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zu_ZA.res b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zu_ZA.res
new file mode 100644
index 000000000..493e95f24
--- /dev/null
+++ b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudt75b/zu_ZA.res
Binary files differ
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/data/TestDataElements_testtypes.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/data/TestDataElements_testtypes.java
index 51edd38c3..b1bf7f101 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/data/TestDataElements_testtypes.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/data/TestDataElements_testtypes.java
@@ -39,7 +39,7 @@ public class TestDataElements_testtypes extends ListResourceBundle {
},
{
"emptyint",
- new Integer(0),
+ 0,
},
{
"emptyintv",
@@ -64,14 +64,14 @@ public class TestDataElements_testtypes extends ListResourceBundle {
{
"integerarray",
new Integer[] {
- new Integer(1),
- new Integer(2),
- new Integer(3),
- new Integer(-3),
- new Integer(4),
- new Integer(5),
- new Integer(6),
- new Integer(7),
+ 1,
+ 2,
+ 3,
+ -3,
+ 4,
+ 5,
+ 6,
+ 7,
},
},
{
@@ -98,19 +98,19 @@ public class TestDataElements_testtypes extends ListResourceBundle {
},
{
"minusone",
- new Integer(-1),
+ -1,
},
{
"one",
- new Integer(1),
+ 1,
},
{
"onehundredtwentythree",
- new Integer(123),
+ 123,
},
{
"plusone",
- new Integer(1),
+ 1,
},
{
"string",
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestClassOverride.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestClassOverride.java
index a044abcb9..cfdb8bda6 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestClassOverride.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestClassOverride.java
@@ -122,7 +122,7 @@ public class TestClassOverride extends BidiFmwk {
bidi = new Bidi();
verifyClassifier(bidi);
- classifier = new CustomClassifier(new Integer(TestData.R));
+ classifier = new CustomClassifier(TestData.R);
bidi.setCustomClassifier(classifier);
verifyClassifier(bidi);
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestCompatibility.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestCompatibility.java
index d7c1cc470..05ce2d430 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestCompatibility.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bidi/TestCompatibility.java
@@ -203,9 +203,9 @@ public class TestCompatibility extends BidiFmwk {
AttributedString as = new AttributedString("HEBREW 123 english MOREHEB");
as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
as.addAttribute(TextAttribute.NUMERIC_SHAPING, NumericShaper.getShaper(NumericShaper.ARABIC));
- as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(1), 0, 26);
- as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(-1), 0, 6);
- as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(-1), 19, 26);
+ as.addAttribute(TextAttribute.BIDI_EMBEDDING, 1, 0, 26);
+ as.addAttribute(TextAttribute.BIDI_EMBEDDING, -1, 0, 6);
+ as.addAttribute(TextAttribute.BIDI_EMBEDDING, -1, 19, 26);
bidi = new Bidi(as.getIterator());
jbidi = new java.text.Bidi(as.getIterator());
compareBidi(bidi, jbidi);
@@ -214,7 +214,7 @@ public class TestCompatibility extends BidiFmwk {
as = new AttributedString("HEBREW 123 english MOREHEB");
as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
- as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(0), 0, 26);
+ as.addAttribute(TextAttribute.BIDI_EMBEDDING, 0, 0, 26);
bidi = new Bidi(as.getIterator());
jbidi = new java.text.Bidi(as.getIterator());
compareBidi(bidi, jbidi);
@@ -256,7 +256,7 @@ public class TestCompatibility extends BidiFmwk {
Character[] objects = new Character[10];
levels = new byte[objects.length];
for (int i = 0; i < objects.length; i++) {
- objects[i] = new Character((char)('a'+i));
+ objects[i] = (char)('a'+i);
levels[i] = myLevels[i];
}
Bidi.reorderVisually(levels, 3, objects, 3, 7);
@@ -265,7 +265,7 @@ public class TestCompatibility extends BidiFmwk {
strbidi += objects[i].toString();
}
for (int i = 0; i < objects.length; i++) {
- objects[i] = new Character((char)('a'+i));
+ objects[i] = (char)('a'+i);
levels[i] = myLevels[i];
}
java.text.Bidi.reorderVisually(levels, 3, objects, 3, 7);
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java
index 5e6360a42..2395167c6 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java
@@ -2918,15 +2918,15 @@ public class DiagBigDecimalTest extends CoreTestFmwk {
java.lang.String val;
// 1999.03.07 Infinities no longer errors
val = "-1";
- TestFmwk.assertTrue("dov001", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov001", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "-0.1";
- TestFmwk.assertTrue("dov002", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov002", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "0";
- TestFmwk.assertTrue("dov003", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov003", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "0.1";
- TestFmwk.assertTrue("dov004", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov004", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "1";
- TestFmwk.assertTrue("dov005", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue()));
+ TestFmwk.assertTrue("dov005", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((Double.valueOf(val)).doubleValue()));
val = "1e1000";
TestFmwk.assertTrue("dov006", ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.POSITIVE_INFINITY);
val = "-1e1000";
@@ -2957,23 +2957,23 @@ public class DiagBigDecimalTest extends CoreTestFmwk {
java.lang.String val;
// 1999.03.07 Infinities no longer errors
val = "-1";
- TestFmwk.assertTrue("flv001", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv001", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "-0.1";
- TestFmwk.assertTrue("flv002", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv002", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "0";
- TestFmwk.assertTrue("flv003", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv003", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "0.1";
- TestFmwk.assertTrue("flv004", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv004", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "1";
- TestFmwk.assertTrue("flv005", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue()));
+ TestFmwk.assertTrue("flv005", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == (Float.valueOf(val).floatValue()));
val = "1e200";
- TestFmwk.assertTrue("flv006", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY);
+ TestFmwk.assertTrue("flv006", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == Float.POSITIVE_INFINITY);
val = "-1e200";
- TestFmwk.assertTrue("flv007", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY);
+ TestFmwk.assertTrue("flv007", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == Float.NEGATIVE_INFINITY);
val = "1e1000";
- TestFmwk.assertTrue("flv008", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY);
+ TestFmwk.assertTrue("flv008", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == Float.POSITIVE_INFINITY);
val = "-1e1000";
- TestFmwk.assertTrue("flv009", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY);
+ TestFmwk.assertTrue("flv009", ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == Float.NEGATIVE_INFINITY);
}
/* ----------------------------------------------------------------- */
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/AstroTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/AstroTest.java
index b8dc6e0dd..ab237f1c8 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/AstroTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/AstroTest.java
@@ -8,7 +8,6 @@
*/
package com.ibm.icu.dev.test.calendar;
-import java.util.Date;
import java.util.Locale;
import org.junit.Test;
@@ -19,7 +18,6 @@ import org.junit.runners.JUnit4;
import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.impl.CalendarAstronomer;
-import com.ibm.icu.impl.CalendarAstronomer.Ecliptic;
import com.ibm.icu.impl.CalendarAstronomer.Equatorial;
import com.ibm.icu.text.DateFormat;
import com.ibm.icu.util.Calendar;
@@ -36,7 +34,6 @@ public class AstroTest extends CoreTestFmwk {
@Test
public void TestSolarLongitude() {
GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
- CalendarAstronomer astro = new CalendarAstronomer();
// year, month, day, hour, minute, longitude (radians), ascension(radians), declination(radians)
final double tests[][] = {
{ 1980, 7, 27, 00, 00, 2.166442986535465, 2.2070499713207730, 0.3355704075759270 },
@@ -47,7 +44,7 @@ public class AstroTest extends CoreTestFmwk {
gc.clear();
gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
- astro.setDate(gc.getTime());
+ CalendarAstronomer astro = new CalendarAstronomer(gc.getTimeInMillis());
double longitude = astro.getSunLongitude();
if (longitude != tests[i][5]) {
@@ -61,36 +58,12 @@ public class AstroTest extends CoreTestFmwk {
") for test " + i);
}
}
- Equatorial result = astro.getSunPosition();
- if (result.ascension != tests[i][6]) {
- if ((float)result.ascension == (float)tests[i][6]) {
- logln("result.ascension(" + result.ascension +
- ") != tests[i][6](" + tests[i][6] +
- ") in double for test " + i);
- } else {
- errln("FAIL: result.ascension(" + result.ascension +
- ") != tests[i][6](" + tests[i][6] +
- ") for test " + i);
- }
- }
- if (result.declination != tests[i][7]) {
- if ((float)result.declination == (float)tests[i][7]) {
- logln("result.declination(" + result.declination +
- ") != tests[i][7](" + tests[i][7] +
- ") in double for test " + i);
- } else {
- errln("FAIL: result.declination(" + result.declination +
- ") != tests[i][7](" + tests[i][7] +
- ") for test " + i);
- }
- }
}
}
@Test
public void TestLunarPosition() {
GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
- CalendarAstronomer astro = new CalendarAstronomer();
// year, month, day, hour, minute, ascension(radians), declination(radians)
final double tests[][] = {
{ 1979, 2, 26, 16, 00, -0.3778379118188744, -0.1399698825594198 },
@@ -100,7 +73,7 @@ public class AstroTest extends CoreTestFmwk {
for (int i = 0; i < tests.length; i++) {
gc.clear();
gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
- astro.setDate(gc.getTime());
+ CalendarAstronomer astro = new CalendarAstronomer(gc.getTimeInMillis());
Equatorial result = astro.getMoonPosition();
if (result.ascension != tests[i][5]) {
@@ -138,24 +111,17 @@ public class AstroTest extends CoreTestFmwk {
@Test
public void TestCoverage() {
GregorianCalendar cal = new GregorianCalendar(1958, Calendar.AUGUST, 15);
- Date then = cal.getTime();
- CalendarAstronomer myastro = new CalendarAstronomer(then);
+ CalendarAstronomer myastro = new CalendarAstronomer(cal.getTimeInMillis());
//Latitude: 34 degrees 05' North
//Longitude: 118 degrees 22' West
double laLat = 34 + 5d/60, laLong = 360 - (118 + 22d/60);
- CalendarAstronomer myastro2 = new CalendarAstronomer(laLong, laLat);
double eclLat = laLat * Math.PI / 360;
double eclLong = laLong * Math.PI / 360;
- Ecliptic ecl = new Ecliptic(eclLat, eclLong);
- logln("ecliptic: " + ecl);
-
- CalendarAstronomer myastro3 = new CalendarAstronomer();
- myastro3.setJulianDay((4713 + 2000) * 365.25);
CalendarAstronomer[] astronomers = {
- myastro, myastro2, myastro3, myastro2 // check cache
+ myastro, myastro, myastro // check cache
};
@@ -165,176 +131,21 @@ public class AstroTest extends CoreTestFmwk {
logln("astro: " + astro);
logln(" time: " + astro.getTime());
logln(" date: " + astro.getDate());
- logln(" cent: " + astro.getJulianCentury());
- logln(" gw sidereal: " + astro.getGreenwichSidereal());
- logln(" loc sidereal: " + astro.getLocalSidereal());
- logln(" equ ecl: " + astro.eclipticToEquatorial(ecl));
- logln(" equ long: " + astro.eclipticToEquatorial(eclLong));
- logln(" horiz: " + astro.eclipticToHorizon(eclLong));
- logln(" sunrise: " + new Date(astro.getSunRiseSet(true)));
- logln(" sunset: " + new Date(astro.getSunRiseSet(false)));
- logln(" moon phase: " + astro.getMoonPhase());
- logln(" moonrise: " + new Date(astro.getMoonRiseSet(true)));
- logln(" moonset: " + new Date(astro.getMoonRiseSet(false)));
- logln(" prev summer solstice: " + new Date(astro.getSunTime(CalendarAstronomer.SUMMER_SOLSTICE, false)));
- logln(" next summer solstice: " + new Date(astro.getSunTime(CalendarAstronomer.SUMMER_SOLSTICE, true)));
- logln(" prev full moon: " + new Date(astro.getMoonTime(CalendarAstronomer.FULL_MOON, false)));
- logln(" next full moon: " + new Date(astro.getMoonTime(CalendarAstronomer.FULL_MOON, true)));
- }
-
- }
-
- static final long DAY_MS = 24*60*60*1000L;
-
- @Test
- public void TestSunriseTimes() {
-
- // logln("Sunrise/Sunset times for San Jose, California, USA");
- // CalendarAstronomer astro = new CalendarAstronomer(-121.55, 37.20);
- // TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
-
- // We'll use a table generated by the UNSO website as our reference
- // From: http://aa.usno.navy.mil/
- //-Location: W079 25, N43 40
- //-Rise and Set for the Sun for 2001
- //-Zone: 4h West of Greenwich
- int[] USNO = {
- 6,59, 19,45,
- 6,57, 19,46,
- 6,56, 19,47,
- 6,54, 19,48,
- 6,52, 19,49,
- 6,50, 19,51,
- 6,48, 19,52,
- 6,47, 19,53,
- 6,45, 19,54,
- 6,43, 19,55,
- 6,42, 19,57,
- 6,40, 19,58,
- 6,38, 19,59,
- 6,36, 20, 0,
- 6,35, 20, 1,
- 6,33, 20, 3,
- 6,31, 20, 4,
- 6,30, 20, 5,
- 6,28, 20, 6,
- 6,27, 20, 7,
- 6,25, 20, 8,
- 6,23, 20,10,
- 6,22, 20,11,
- 6,20, 20,12,
- 6,19, 20,13,
- 6,17, 20,14,
- 6,16, 20,16,
- 6,14, 20,17,
- 6,13, 20,18,
- 6,11, 20,19,
- };
-
- logln("Sunrise/Sunset times for Toronto, Canada");
- CalendarAstronomer astro = new CalendarAstronomer(-(79+25/60), 43+40/60);
-
- // As of ICU4J 2.8 the ICU4J time zones implement pass-through
- // to the underlying JDK. Because of variation in the
- // underlying JDKs, we have to use a fixed-offset
- // SimpleTimeZone to get consistent behavior between JDKs.
- // The offset we want is [-18000000, 3600000] (raw, dst).
- // [aliu 10/15/03]
-
- // TimeZone tz = TimeZone.getTimeZone("America/Montreal");
- TimeZone tz = new SimpleTimeZone(-18000000 + 3600000, "Montreal(FIXED)");
-
- GregorianCalendar cal = new GregorianCalendar(tz, Locale.US);
- GregorianCalendar cal2 = new GregorianCalendar(tz, Locale.US);
- cal.clear();
- cal.set(Calendar.YEAR, 2001);
- cal.set(Calendar.MONTH, Calendar.APRIL);
- cal.set(Calendar.DAY_OF_MONTH, 1);
- cal.set(Calendar.HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work
-
- DateFormat df = DateFormat.getTimeInstance(cal, DateFormat.MEDIUM, Locale.US);
- DateFormat df2 = DateFormat.getDateTimeInstance(cal, DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US);
- DateFormat day = DateFormat.getDateInstance(cal, DateFormat.MEDIUM, Locale.US);
-
- for (int i=0; i < 30; i++) {
- astro.setDate(cal.getTime());
-
- Date sunrise = new Date(astro.getSunRiseSet(true));
- Date sunset = new Date(astro.getSunRiseSet(false));
-
- cal2.setTime(cal.getTime());
- cal2.set(Calendar.SECOND, 0);
- cal2.set(Calendar.MILLISECOND, 0);
-
- cal2.set(Calendar.HOUR_OF_DAY, USNO[4*i+0]);
- cal2.set(Calendar.MINUTE, USNO[4*i+1]);
- Date exprise = cal2.getTime();
- cal2.set(Calendar.HOUR_OF_DAY, USNO[4*i+2]);
- cal2.set(Calendar.MINUTE, USNO[4*i+3]);
- Date expset = cal2.getTime();
- // Compute delta of what we got to the USNO data, in seconds
- int deltarise = Math.abs((int)(sunrise.getTime() - exprise.getTime()) / 1000);
- int deltaset = Math.abs((int)(sunset.getTime() - expset.getTime()) / 1000);
-
- // Allow a deviation of 0..MAX_DEV seconds
- // It would be nice to get down to 60 seconds, but at this
- // point that appears to be impossible without a redo of the
- // algorithm using something more advanced than Duffett-Smith.
- final int MAX_DEV = 180;
- if (deltarise > MAX_DEV || deltaset > MAX_DEV) {
- if (deltarise > MAX_DEV) {
- errln("FAIL: " + day.format(cal.getTime()) +
- ", Sunrise: " + df2.format(sunrise) +
- " (USNO " + df.format(exprise) +
- " d=" + deltarise + "s)");
- } else {
- logln(day.format(cal.getTime()) +
- ", Sunrise: " + df.format(sunrise) +
- " (USNO " + df.format(exprise) + ")");
- }
- if (deltaset > MAX_DEV) {
- errln("FAIL: " + day.format(cal.getTime()) +
- ", Sunset: " + df2.format(sunset) +
- " (USNO " + df.format(expset) +
- " d=" + deltaset + "s)");
- } else {
- logln(day.format(cal.getTime()) +
- ", Sunset: " + df.format(sunset) +
- " (USNO " + df.format(expset) + ")");
- }
- } else {
- logln(day.format(cal.getTime()) +
- ", Sunrise: " + df.format(sunrise) +
- " (USNO " + df.format(exprise) + ")" +
- ", Sunset: " + df.format(sunset) +
- " (USNO " + df.format(expset) + ")");
- }
- cal.add(Calendar.DATE, 1);
+ logln(" equ long: " + astro.eclipticToEquatorial(eclLat, eclLong));
}
-// CalendarAstronomer a = new CalendarAstronomer(-(71+5/60), 42+37/60);
-// cal.clear();
-// cal.set(cal.YEAR, 1986);
-// cal.set(cal.MONTH, cal.MARCH);
-// cal.set(cal.DATE, 10);
-// cal.set(cal.YEAR, 1988);
-// cal.set(cal.MONTH, cal.JULY);
-// cal.set(cal.DATE, 27);
-// a.setDate(cal.getTime());
-// long r = a.getSunRiseSet2(true);
}
@Test
public void TestBasics() {
// Check that our JD computation is the same as the book's (p. 88)
- CalendarAstronomer astro = new CalendarAstronomer();
GregorianCalendar cal3 = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.US);
DateFormat d3 = DateFormat.getDateTimeInstance(cal3, DateFormat.MEDIUM,DateFormat.MEDIUM,Locale.US);
cal3.clear();
cal3.set(Calendar.YEAR, 1980);
cal3.set(Calendar.MONTH, Calendar.JULY);
cal3.set(Calendar.DATE, 27);
- astro.setDate(cal3.getTime());
+ CalendarAstronomer astro = new CalendarAstronomer(cal3.getTimeInMillis());
double jd = astro.getJulianDay() - 2447891.5;
double exp = -3444;
if (jd == exp) {
@@ -357,7 +168,6 @@ public class AstroTest extends CoreTestFmwk {
@Test
public void TestMoonAge(){
GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0,"GMT"));
- CalendarAstronomer calastro = new CalendarAstronomer();
// more testcases are around the date 05/20/2012
//ticket#3785 UDate ud0 = 1337557623000.0;
double testcase[][] = {{2012, 5, 20 , 16 , 48, 59},
@@ -380,7 +190,7 @@ public class AstroTest extends CoreTestFmwk {
(int)testcase[i][2]+" Hour "+(int)testcase[i][3]+" Minutes "+(int)testcase[i][4]+
" Seconds "+(int)testcase[i][5];
gc.set((int)testcase[i][0],(int)testcase[i][1]-1,(int)testcase[i][2],(int)testcase[i][3],(int)testcase[i][4], (int)testcase[i][5]);
- calastro.setDate(gc.getTime());
+ CalendarAstronomer calastro = new CalendarAstronomer(gc.getTimeInMillis());
double expectedAge = (angle[i]*PI)/180;
double got = calastro.getMoonAge();
logln(testString);
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java
index c381f7c8f..2b5f2d79f 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java
@@ -688,14 +688,10 @@ public class CalendarRegressionTest extends CoreTestFmwk {
// Test field disambiguation with a few special hard-coded cases.
// This shouldn't fail if the above cases aren't failing.
Object[] DISAM = {
- new Integer(1998), new Integer(1), new Integer(Calendar.SUNDAY),
- d[0],
- new Integer(1998), new Integer(2), new Integer(Calendar.SATURDAY),
- d[1],
- new Integer(1998), new Integer(53), new Integer(Calendar.THURSDAY),
- d[2],
- new Integer(1998), new Integer(53), new Integer(Calendar.FRIDAY),
- d[3],
+ 1998, 1, Calendar.SUNDAY, d[0],
+ 1998, 2, Calendar.SATURDAY, d[1],
+ 1998, 53, Calendar.THURSDAY, d[2],
+ 1998, 53, Calendar.FRIDAY, d[3],
};
testCal.setMinimalDaysInFirstWeek(3);
testCal.setFirstDayOfWeek(Calendar.SUNDAY);
@@ -739,10 +735,10 @@ public class CalendarRegressionTest extends CoreTestFmwk {
d[7] = tempcal.getTime();
Object[] ADDROLL = {
- ADD, new Integer(1), d[0], d[1],
- ADD, new Integer(1), d[2], d[3],
- ROLL, new Integer(1), d[4], d[5],
- ROLL, new Integer(1), d[6], d[7],
+ ADD, 1, d[0], d[1],
+ ADD, 1, d[2], d[3],
+ ROLL, 1, d[4], d[5],
+ ROLL, 1, d[6], d[7],
};
testCal.setMinimalDaysInFirstWeek(3);
testCal.setFirstDayOfWeek(Calendar.SUNDAY);
@@ -1693,9 +1689,9 @@ public class CalendarRegressionTest extends CoreTestFmwk {
d[5] = tempcal.getTime();
// Test specific failure reported in bug
Object[] DATA = {
- new Integer(1), d[0], new Integer(4), d[1],
- new Integer(8), d[2], new Integer(-1), d[3],
- new Integer(-4), d[4], new Integer(-8), d[5],
+ 1, d[0], 4, d[1],
+ 8, d[2], -1, d[3],
+ -4, d[4], -8, d[5],
};
for (int i=0; i<DATA.length; i+=2) {
cal.clear();
@@ -2715,5 +2711,17 @@ public class CalendarRegressionTest extends CoreTestFmwk {
Calendar.getInstance(Locale.forLanguageTag(localeIds[i])).getFirstDayOfWeek());
}
}
+
+ @Test
+ public void TestIslamicUmalquraCalendarSlow() { // ICU-22513
+ Locale loc = new Locale("th@calendar=islamic-umalqura");
+ Calendar cal = Calendar.getInstance(loc);
+ cal.clear();
+ cal.add(Calendar.YEAR, 1229080905);
+ cal.roll(Calendar.WEEK_OF_MONTH, 1499050699);
+ cal.fieldDifference(new Date(0), Calendar.YEAR_WOY);
+
+ }
+
}
//eof
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java
index 4f6a824f3..fc9f33eed 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java
@@ -278,8 +278,8 @@ public class CalendarTestFmwk extends CoreTestFmwk {
h[0] = new HashMap();
h[1] = new HashMap();
}
- h[0].put(new Integer(minActual), nub);
- h[1].put(new Integer(maxActual), nub);
+ h[0].put(minActual, nub);
+ h[1].put(maxActual, nub);
if (minActual < minLow || minActual > minHigh) {
errln("Fail: " + ymdToString(cal) +
@@ -320,8 +320,8 @@ public class CalendarTestFmwk extends CoreTestFmwk {
cal.getGreatestMinimum(f) : cal.getMaximum(f);
// If either the top of the range or the bottom was never
// seen, then there may be a problem.
- if (h[k].get(new Integer(rangeLow)) == null ||
- h[k].get(new Integer(rangeHigh)) == null) {
+ if (h[k].get(rangeLow) == null ||
+ h[k].get(rangeHigh) == null) {
fullRangeSeen = false;
}
buf.append(k==0 ? " minima seen=(" : "; maxima seen=(");
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
index 0505b55c5..66e3d6165 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
@@ -205,6 +205,76 @@ public class IBMCalendarTest extends CalendarTestFmwk {
}
}
+ private void verifyFirstDayOfWeek(String l, int weekday) {
+ assertEquals(l, weekday,
+ Calendar.getInstance(Locale.forLanguageTag(l)).getFirstDayOfWeek());
+ }
+ /**
+ * Test "First Day Overrides" behavior
+ * https://unicode.org/reports/tr35/tr35-dates.html#first-day-overrides
+ * And data in <firstDay> of
+ * https://github.com/unicode-org/cldr/blob/main/common/supplemental/supplementalData.xml
+ *
+ * Examples of region for First Day of a week
+ * Friday: MV
+ * Saturday: AE AF
+ * Sunday: US JP
+ * Monday: GB
+ */
+ @Test
+ public void TestFirstDayOfWeek() {
+ String l;
+ // Test -u-fw- value
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-sun-rg-mvzzzz-sd-usca", Calendar.SUNDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-mon-rg-mvzzzz-sd-usca", Calendar.MONDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-tue-rg-mvzzzz-sd-usca", Calendar.TUESDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-wed-rg-mvzzzz-sd-usca", Calendar.WEDNESDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-thu-rg-mvzzzz-sd-usca", Calendar.THURSDAY);
+ verifyFirstDayOfWeek("en-AE-u-ca-iso8601-fw-fri-rg-aezzzz-sd-usca", Calendar.FRIDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-fw-sat-rg-mvzzzz-sd-usca", Calendar.SATURDAY);
+
+ // Test -u-rg- value
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-mvzzzz-sd-usca", Calendar.FRIDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-aezzzz-sd-usca", Calendar.SATURDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-uszzzz-sd-usca", Calendar.SUNDAY);
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-rg-gbzzzz-sd-usca", Calendar.MONDAY);
+
+ // Test -u-ca-iso8601
+ verifyFirstDayOfWeek("en-MV-u-ca-iso8601-sd-mv00", Calendar.MONDAY);
+ verifyFirstDayOfWeek("en-AE-u-ca-iso8601-sd-aeaj", Calendar.MONDAY);
+ verifyFirstDayOfWeek("en-US-u-ca-iso8601-sd-usca", Calendar.MONDAY);
+
+ // Test Region Tags only
+ verifyFirstDayOfWeek("en-MV", Calendar.FRIDAY);
+ verifyFirstDayOfWeek("en-AE", Calendar.SATURDAY);
+ verifyFirstDayOfWeek("en-US", Calendar.SUNDAY);
+ verifyFirstDayOfWeek("dv-GB", Calendar.MONDAY);
+
+ // Test -u-sd-
+ //verifyFirstDayOfWeek("en-u-sd-mv00", Calendar.FRIDAY);
+ // verifyFirstDayOfWeek("en-u-sd-aeaj", Calendar.SATURDAY);
+ // verifyFirstDayOfWeek("en-u-sd-usca", Calendar.SUNDAY);
+ // verifyFirstDayOfWeek("dv-u-sd-gbsct", Calendar.MONDAY);
+
+ // Test Add Likely Subtags algorithm produces a region
+ // dv => dv_Thaa_MV => Friday
+ verifyFirstDayOfWeek("dv", Calendar.FRIDAY);
+ // und_Thaa => dv_Thaa_MV => Friday
+ verifyFirstDayOfWeek("und-Thaa", Calendar.FRIDAY);
+
+ // ssh => ssh_Arab_AE => Saturday
+ verifyFirstDayOfWeek("ssh", Calendar.SATURDAY);
+ // wbl_Arab => wbl_Arab_AF => Saturday
+ verifyFirstDayOfWeek("wbl-Arab", Calendar.SATURDAY);
+
+ // en => en_Latn_US => Sunday
+ verifyFirstDayOfWeek("en", Calendar.SUNDAY);
+ // und_Hira => ja_Hira_JP => Sunday
+ verifyFirstDayOfWeek("und-Hira", Calendar.SUNDAY);
+
+ verifyFirstDayOfWeek("zxx", Calendar.MONDAY);
+ }
+
/**
* Verify that BuddhistCalendar shifts years to Buddhist Era but otherwise
* behaves like GregorianCalendar.
@@ -907,7 +977,6 @@ public class IBMCalendarTest extends CalendarTestFmwk {
// CalendarAstronomer
// (This class should probably be made package-private.)
CalendarAstronomer astro = new CalendarAstronomer();
- /*String s = */astro.local(0);
// ChineseCalendar
ChineseCalendar ccal = new ChineseCalendar(TimeZone.getDefault(),
@@ -2127,7 +2196,6 @@ public class IBMCalendarTest extends CalendarTestFmwk {
int lastDay = 1;
String type = base.getType();
boolean ignoreOrdinaryMonth12Bug = (!quick) && (type.equals("chinese") || type.equals("dangi"));
- boolean ignoreICU22258 = (!quick) && type.equals("dangi");
for (int j = 0; j < numOfDaysToTest; j++, test.setTime(test.getTime() - msInADay)) {
g.setTime(test);
base.clear();
@@ -2179,11 +2247,6 @@ public class IBMCalendarTest extends CalendarTestFmwk {
int year = base.get(Calendar.YEAR);
int month = base.get(Calendar.MONTH) + 1;
int date = base.get(Calendar.DATE);
- if (ignoreICU22258 && (year == 4 || year == 34) && month == 12 && date == 30) {
- logKnownIssue("ICU-22258",
- "Dangi Problem in 1988/2/17=>4/12/30 and 1958/2/18=>34/12/30");
- continue;
- }
errln("Round trip conversion produces different time from " + test + " to " +
result + " delta: " + (result.getTime() - test.getTime()) +
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/duration/ICUDurationTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/duration/ICUDurationTest.java
index 8f94f6702..4a72c6197 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/duration/ICUDurationTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/duration/ICUDurationTest.java
@@ -205,7 +205,7 @@ public class ICUDurationTest extends CoreTestFmwk {
logln("format date from -> " + formatted);
}
- formatted = df.format(new Long(1000*3600*24*2));
+ formatted = df.format(1000L*3600*24*2);
expect = "fra due giorni";
if(!expect.equals(formatted)) {
errln("Expected " + expect + " but got " + formatted);
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/BigNumberFormatTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
index bb5d35589..e1d370738 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
@@ -35,7 +35,7 @@ public class BigNumberFormatTest extends CoreTestFmwk {
DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
- Number n = new Long(1234);
+ Number n = 1234L;
expect(fmt1, n, "1.234E3");
expect(fmt2, n, "1.234E+3");
expect(fmt1, "1.234E3", n);
@@ -50,11 +50,11 @@ public class BigNumberFormatTest extends CoreTestFmwk {
public void TestSecondaryGrouping() {
DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
DecimalFormat f = new DecimalFormat("#,##,###", US);
- expect(f, new Long(123456789), "12,34,56,789");
+ expect(f, 123456789L, "12,34,56,789");
expectPat(f, "#,##,##0");
f.applyPattern("#,###");
f.setSecondaryGroupingSize(4);
- expect(f, new Long(123456789), "12,3456,789");
+ expect(f, 123456789L, "12,3456,789");
expectPat(f, "#,####,##0");
// On Sun JDK 1.2-1.3, the hi_IN locale uses '0' for a zero digit,
@@ -62,7 +62,7 @@ public class BigNumberFormatTest extends CoreTestFmwk {
f = (DecimalFormat) NumberFormat.getInstance(new Locale("hi", "IN"));
String str = transmute("1,87,65,43,210",
f.getDecimalFormatSymbols().getZeroDigit());
- expect(f, new Long(1876543210), str);
+ expect(f, 1876543210L, str);
}
private void expectPad(DecimalFormat fmt, String pat, int pos) {
@@ -189,19 +189,19 @@ public class BigNumberFormatTest extends CoreTestFmwk {
DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
/*For ICU compatibility [Richard/GCL]*/
expect(NumberFormat.getScientificInstance(Locale.US),
- new Number[] { new Double(12345.678901),
+ new Number[] { 12345.678901d,
new java.math.BigDecimal("12345.678901"),
},
"1.2345678901E4");
expect(new DecimalFormat("##0.###E0", US),
- new Double(12345),
+ 12345d,
"12.34E3");
expect(new DecimalFormat("##0.###E0", US),
- new Double(12345.00001),
+ 12345.00001d,
"12.35E3");
expect(new DecimalFormat("##0.####E0", US),
- new Number[] { new Integer(12345),
- new Long(12345),
+ new Number[] { 12345,
+ 12345L,
new java.math.BigDecimal("12345.4999"),
new java.math.BigDecimal("12344.5001"),
},
@@ -213,19 +213,19 @@ public class BigNumberFormatTest extends CoreTestFmwk {
"12.346E3");
/*For ICU compatibility [Richard/GCL]*/
expect(NumberFormat.getScientificInstance(Locale.FRANCE),
- new Double(12345.678901),
+ 12345.678901d,
"1,2345678901E4");
expect(new DecimalFormat("##0.####E0", US),
- new Double(789.12345e-9),
+ 789.12345e-9d,
"789.12E-9");
expect(new DecimalFormat("##0.####E0", US),
- new Double(780.e-9),
+ 780.e-9d,
"780E-9");
expect(new DecimalFormat(".###E0", US),
- new Double(45678),
+ 45678d,
".457E5");
expect(new DecimalFormat(".###E0", US),
- new Long(0),
+ 0L,
".0E0");
expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
new DecimalFormat("##E0", US),
@@ -234,7 +234,7 @@ public class BigNumberFormatTest extends CoreTestFmwk {
new DecimalFormat("00E0", US),
new DecimalFormat("000E0", US),
},
- new Long(45678000),
+ 45678000L,
new String[] { "4.5678E7",
"45.678E6",
"4567.8E4",
@@ -244,19 +244,19 @@ public class BigNumberFormatTest extends CoreTestFmwk {
}
);
expect(new DecimalFormat("###E0", US),
- new Object[] { new Double(0.0000123), "12.3E-6",
- new Double(0.000123), "123E-6",
+ new Object[] { 0.0000123d, "12.3E-6",
+ 0.000123d, "123E-6",
new java.math.BigDecimal("0.00123"), "1.23E-3", // Cafe VM messes up Double(0.00123)
- new Double(0.0123), "12.3E-3",
- new Double(0.123), "123E-3",
- new Double(1.23), "1.23E0",
- new Double(12.3), "12.3E0",
- new Double(123), "123E0",
- new Double(1230), "1.23E3",
+ 0.0123d, "12.3E-3",
+ 0.123d, "123E-3",
+ 1.23d, "1.23E0",
+ 12.3d, "12.3E0",
+ 123d, "123E0",
+ 1230d, "1.23E3",
});
expect(new DecimalFormat("0.#E+00", US),
- new Object[] { new Double(0.00012), "1.2E-04",
- new Long(12000), "1.2E+04",
+ new Object[] { 0.00012d, "1.2E-04",
+ 12000L, "1.2E+04",
});
}
@@ -266,26 +266,26 @@ public class BigNumberFormatTest extends CoreTestFmwk {
public void TestPad() {
DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
expect(new DecimalFormat("*^##.##", US),
- new Object[] { new Long(0), "^^^^0",
- new Double(-1.3), "^-1.3",
+ new Object[] { 0L, "^^^^0",
+ -1.3d, "^-1.3",
}
);
expect(new DecimalFormat("##0.0####E0*_ 'g-m/s^2'", US),
- new Object[] { new Long(0), "0.0E0______ g-m/s^2",
- new Double(1.0/3), "333.333E-3_ g-m/s^2",
+ new Object[] { 0L, "0.0E0______ g-m/s^2",
+ 1.0d/3, "333.333E-3_ g-m/s^2",
}
);
expect(new DecimalFormat("##0.0####*_ 'g-m/s^2'", US),
- new Object[] { new Long(0), "0.0______ g-m/s^2",
- new Double(1.0/3), "0.33333__ g-m/s^2",
+ new Object[] { 0L, "0.0______ g-m/s^2",
+ 1.0d/3, "0.33333__ g-m/s^2",
}
);
expect(new DecimalFormat("*x#,###,###,##0.00;*x(#,###,###,##0.00)", US),
new Object[] {
- new Long(-100), "xxxxxxxx(100.00)",
- new Long(-1000), "xxxxxx(1,000.00)",
- new Long(-1000000), "xx(1,000,000.00)",
- new Long(-1000000000), "(1,000,000,000.00)",
+ -100L, "xxxxxxxx(100.00)",
+ -1000L, "xxxxxx(1,000.00)",
+ -1000000L, "xx(1,000,000.00)",
+ -1000000000L, "(1,000,000,000.00)",
});
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
index 10cc547bc..9b5d65128 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
@@ -988,7 +988,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what + "=" + s);
first = s.charAt(0);
if(first<kHindiZero || first>(kHindiZero+9)) {
- errln(what + "- wrong digit, got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + "- wrong digit, got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -999,7 +999,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what + ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit, got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit, got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1010,7 +1010,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what + ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
{
@@ -1020,7 +1020,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what + ": " + s);
first = s.charAt(0);
if(first<kLatinZero || first>(kLatinZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1031,7 +1031,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what+ ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1042,7 +1042,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what+ ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
@@ -1053,7 +1053,7 @@ public class DateFormatRegressionTest extends CoreTestFmwk {
logln(what+ ": " + s);
first = s.charAt(0);
if(first<kArabicZero || first>(kArabicZero+9)) {
- errln(what + " wrong digit but got " + s + " (integer digit value " + new Integer(first).toString());
+ errln(what + " wrong digit but got " + s + " (integer digit value " + Integer.valueOf(first));
}
}
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
index 2f84137f1..98f731417 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
@@ -1822,7 +1822,7 @@ public class DateIntervalFormatTest extends CoreTestFmwk {
String firstPart = patternInfo.getFirstPart();
String secondPart = patternInfo.getSecondPart();
if (!matches(dateFormatPattern, firstPart, secondPart)) {
- if (logKnownIssue("11585", "incompatible pattern between date format and date interval format")) {
+ if (logKnownIssue("ICU-11585", "incompatible pattern between date format and date interval format")) {
logln("For skeleton " + skeleton + "/locale " + locale + ": mismatch between date format «"
+ dateFormatPattern + "» and date interval format «" + firstPart + secondPart + "».");
} else {
@@ -2500,6 +2500,17 @@ public class DateIntervalFormatTest extends CoreTestFmwk {
DateFormat df = dif.getDateFormat();
SimpleDateFormat sdf = (SimpleDateFormat)df;
assertEquals("Wrong date format", "M/d/r, h:mm\u202Fa", sdf.toPattern());
+
+ // additional tests for the related ICU-22202
+ dif = DateIntervalFormat.getInstance("Lh", ULocale.ENGLISH);
+ df = dif.getDateFormat();
+ sdf = (SimpleDateFormat)df;
+ assertEquals("Wrong date format", "L, h a", sdf.toPattern());
+
+ dif = DateIntervalFormat.getInstance("UH", ULocale.forLanguageTag("en-u-ca-chinese"));
+ df = dif.getDateFormat();
+ sdf = (SimpleDateFormat)df;
+ assertEquals("Wrong date format", "r(U), HH", sdf.toPattern());
}
@Test
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
index 243d60b1f..0e3295ffd 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
@@ -47,7 +47,7 @@ public class IntlTestDateFormatAPIC extends CoreTestFmwk {
// compile-time name hiding.
Date dateObj = new Date(0);
- Number numObj = new Double(3.1415926535897932384626433832795);
+ Number numObj = 3.1415926535897932384626433832795;
StringBuffer strBuffer = new StringBuffer("");
String str;
FieldPosition fpos = new FieldPosition(0);
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/MessageRegressionTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/MessageRegressionTest.java
index 21b601538..71638854c 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/MessageRegressionTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/MessageRegressionTest.java
@@ -133,7 +133,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
try {
logln("Apply with pattern : " + pattern1);
messageFormatter.applyPattern(pattern1);
- Object[] paramArray = {new Integer(7)};
+ Object[] paramArray = {7};
String tempBuffer = messageFormatter.format(paramArray);
if (!tempBuffer.equals("Impossible {1} has occurred -- status code is 7 and message is {2}."))
errln("Tests arguments < substitution failed");
@@ -468,7 +468,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
errln("argument0: \"" + objs[0] + "\"");
mf.setLocale(Locale.US);
mf.applyPattern("{0,number,#.##}, {0,number,#.#}");
- Object[] oldobjs = {new Double(3.1415)};
+ Object[] oldobjs = {3.1415d};
String result = mf.format( oldobjs );
logln("pattern: \"" + mf.toPattern() + "\"");
logln("text for parsing: \"" + result + "\"");
@@ -476,7 +476,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
if (!result.equals("3.14, 3.1"))
errln("result = " + result);
Object[] newobjs = mf.parse(result, new ParsePosition(0));
- // newobjs now equals {new Double(3.1)}
+ // newobjs now equals {Double.valueOf(3.1)}
if (((Number)newobjs[0]).doubleValue() != 3.1) // was (Double) [alan]
errln( "newobjs[0] = " + newobjs[0]);
}
@@ -495,7 +495,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
form1.setFormat(1, fileform);
form2.setFormat(0, fileform);
- Object[] testArgs = {new Long(12373), "MyDisk"};
+ Object[] testArgs = {12373L, "MyDisk"};
logln(form1.format(testArgs));
logln(form2.format(testArgs));
}
@@ -547,7 +547,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
};
for (int i=0; i<3; i++) {
- String out = mf.format(new Object[]{new Integer(i)});
+ String out = mf.format(new Object[]{i});
if (SUFFIX[i] == null) {
if (!out.equals(PREFIX[i]))
errln("" + i + ": Got \"" + out + "\"; Want \"" + PREFIX[i] + "\"");
@@ -678,7 +678,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
logln("Apply with pattern : " + pattern1);
messageFormatter.applyPattern(pattern1);
HashMap paramsMap = new HashMap();
- paramsMap.put("arg0", new Integer(7));
+ paramsMap.put("arg0", 7);
String tempBuffer = messageFormatter.format(paramsMap);
if (!tempBuffer.equals("Impossible {arg1} has occurred -- status code is 7 and message is {arg2}."))
errln("Tests arguments < substitution failed");
@@ -701,7 +701,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
logln("Apply with pattern : " + pattern2);
messageFormatter.applyPattern(pattern2);
paramsMap.clear();
- paramsMap.put("ARG_ZERO", new Integer(7));
+ paramsMap.put("ARG_ZERO", 7);
tempBuffer = messageFormatter.format(paramsMap);
if (!tempBuffer.equals("Double ' Quotes 7 test and quoted {ARG_ONE} test plus 'other {ARG_TWO} stuff'."))
errln("quote format test (w/ params) failed.");
@@ -829,7 +829,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
mf.setLocale(Locale.US);
mf.applyPattern("{" + argName + ",number,#.##}, {" + argName + ",number,#.#}");
Map oldobjs = new HashMap();
- oldobjs.put(argName, new Double(3.1415));
+ oldobjs.put(argName, 3.1415d);
String result = mf.format( oldobjs );
logln("pattern: \"" + mf.toPattern() + "\"");
logln("text for parsing: \"" + result + "\"");
@@ -837,7 +837,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
if (!result.equals("3.14, 3.1"))
errln("result = " + result);
Map newobjs = mf.parseToMap(result, new ParsePosition(0));
- // newobjs now equals {new Double(3.1)}
+ // newobjs now equals {Double.valueOf(3.1)}
if (((Number)newobjs.get(argName)).doubleValue() != 3.1) // was (Double) [alan]
errln( "newobjs.get(argName) = " + newobjs.get(argName));
}{ // Taken from Test4105380().
@@ -852,7 +852,7 @@ public class MessageRegressionTest extends CoreTestFmwk {
form2.setFormat(0, fileform);
Map testArgs = new HashMap();
testArgs.put("diskName", "MyDisk");
- testArgs.put("numberOfFiles", new Long(12373));
+ testArgs.put("numberOfFiles", 12373L);
logln(form1.format(testArgs));
logln(form2.format(testArgs));
}{ // Taken from test4293229().
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
index 13e3405cb..e822f933c 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
@@ -147,11 +147,11 @@ public class NumberFormatRoundTripTest extends CoreTestFmwk {
}
private void _test(NumberFormat fmt, double value) {
- _test(fmt, new Double(value));
+ _test(fmt, Double.valueOf(value));
}
private void _test(NumberFormat fmt, long value) {
- _test(fmt, new Long(value));
+ _test(fmt, Long.valueOf(value));
}
private void _test(NumberFormat fmt, Number value) {
@@ -163,7 +163,7 @@ public class NumberFormatRoundTripTest extends CoreTestFmwk {
else
s = fmt.format(value.longValue());
- Number n = new Double(0);
+ Number n = 0d;
boolean show = verbose;
if (DEBUG)
logln(
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatTest.java
index 3a0204930..94e353694 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatTest.java
@@ -35,18 +35,18 @@ public class PluralFormatTest extends CoreTestFmwk {
// Create example outputs for all supported locales.
/*
System.out.println("\n" + localeIDs);
- String lastValue = (String) changes.get(new Integer(0));
+ String lastValue = (String) changes.get(Integer.valueOf(0));
int lastNumber = 0;
for (int i = 1; i < 199; ++i) {
- if (changes.get(new Integer(i)) != null) {
+ if (changes.get(Integer.valueOf(i)) != null) {
if (lastNumber == i-1) {
System.out.println(lastNumber + ": " + lastValue);
} else {
System.out.println(lastNumber + "... " + (i-1) + ": " + lastValue);
}
lastNumber = i;
- lastValue = (String) changes.get(new Integer(i));
+ lastValue = (String) changes.get(Integer.valueOf(i));
}
}
System.out.println(lastNumber + "..." + 199 + ": " + lastValue);
@@ -56,7 +56,7 @@ public class PluralFormatTest extends CoreTestFmwk {
try {
PluralFormat plf = new PluralFormat(new ULocale(locales[i]), testPattern);
log("plf: " + plf);
- String expected = changes.get(new Integer(0));
+ String expected = changes.get(0);
for (int n = 0; n < 200; ++n) {
String value = changes.get(n);
if (value != null) {
@@ -75,8 +75,8 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestOneFormLocales() {
String localeIDs = "ja,ko,tr,vi";
String testPattern = "other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -85,10 +85,10 @@ public class PluralFormatTest extends CoreTestFmwk {
String localeIDs = "bem,da,de,el,en,eo,es,et,fi,fo,he,it,mr,nb,nl,nn,no,pt_PT,sv,af,bg,ca,eu,fur,fy,ha,ku,lb,ml," +
"nah,ne,om,or,pap,ps,so,sq,sw,ta,te,tk,ur,mn,gsw,rm";
String testPattern = "one{one} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -96,9 +96,9 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSingular01Locales() {
String localeIDs = "ff,fr,kab,gu,pa,pt,zu,bn";
String testPattern = "one{one} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "one");
- changes.put(new Integer(2), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "one");
+ changes.put(2, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -106,22 +106,22 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestZeroSingularLocales() {
String localeIDs = "lv";
String testPattern = "zero{zero} one{one} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "zero");
- changes.put(new Integer(1), "one");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "zero");
+ changes.put(1, "one");
for (int i = 2; i < 20; ++i) {
if (i < 10) {
- changes.put(new Integer(i), "other");
+ changes.put(i, "other");
} else {
- changes.put(new Integer(i), "zero");
+ changes.put(i, "zero");
}
- changes.put(new Integer(i*10), "zero");
+ changes.put(i*10, "zero");
if (i == 11) {
- changes.put(new Integer(i*10 + 1), "zero");
- changes.put(new Integer(i*10 + 2), "zero");
+ changes.put(i * 10 + 1, "zero");
+ changes.put(i * 10 + 2, "zero");
} else {
- changes.put(new Integer(i*10 + 1), "one");
- changes.put(new Integer(i*10 + 2), "other");
+ changes.put(i * 10 + 1, "one");
+ changes.put(i * 10 + 2, "other");
}
}
helperTestRules(localeIDs, testPattern, changes);
@@ -131,11 +131,11 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSingularDual() {
String localeIDs = "ga";
String testPattern = "one{one} two{two} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "two");
- changes.put(new Integer(3), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "two");
+ changes.put(3, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -143,14 +143,14 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSingularZeroSome() {
String localeIDs = "ro";
String testPattern = "few{few} one{one} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "few");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(20), "other");
- changes.put(new Integer(101), "few");
- changes.put(new Integer(102), "few");
- changes.put(new Integer(120), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "few");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(20, "other");
+ changes.put(101, "few");
+ changes.put(102, "few");
+ changes.put(120, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -158,18 +158,18 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSpecial12_19() {
String localeIDs = "lt";
String testPattern = "one{one} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(10), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(10, "other");
for (int i = 2; i < 20; ++i) {
if (i == 11) {
continue;
}
- changes.put(new Integer(i*10 + 1), "one");
- changes.put(new Integer(i*10 + 2), "few");
- changes.put(new Integer((i+1)*10), "other");
+ changes.put(i * 10 + 1, "one");
+ changes.put(i * 10 + 2, "few");
+ changes.put((i + 1) * 10, "other");
}
helperTestRules(localeIDs, testPattern, changes);
}
@@ -178,18 +178,18 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestPaucalExcept11_14() {
String localeIDs = "hr,sr,uk";
String testPattern = "one{one} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(5), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(5, "other");
for (int i = 2; i < 20; ++i) {
if (i == 11) {
continue;
}
- changes.put(new Integer(i*10 + 1), "one");
- changes.put(new Integer(i*10 + 2), "few");
- changes.put(new Integer(i*10 + 5), "other");
+ changes.put(i * 10 + 1, "one");
+ changes.put(i * 10 + 2, "few");
+ changes.put(i * 10 + 5, "other");
}
helperTestRules(localeIDs, testPattern, changes);
}
@@ -198,7 +198,7 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestPaucalRu() {
String localeIDs = "ru";
String testPattern = "one{one} many{many} other{other}";
- Map changes = new HashMap();
+ Map<Integer, String> changes = new HashMap<>();
for (int i = 0; i < 200; i+=10) {
if (i == 10 || i == 110) {
put(i, 0, 9, "many", changes);
@@ -229,11 +229,11 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestSingularPaucal() {
String localeIDs = "cs,sk";
String testPattern = "one{one} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(5), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(5, "other");
helperTestRules(localeIDs, testPattern, changes);
}
@@ -241,17 +241,17 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestPaucal1_234() {
String localeIDs = "pl";
String testPattern = "one{one} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "few");
- changes.put(new Integer(5), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "few");
+ changes.put(5, "other");
for (int i = 2; i < 20; ++i) {
if (i == 11) {
continue;
}
- changes.put(new Integer(i*10 + 2), "few");
- changes.put(new Integer(i*10 + 5), "other");
+ changes.put(i * 10 + 2, "few");
+ changes.put(i * 10 + 5, "other");
}
helperTestRules(localeIDs, testPattern, changes);
}
@@ -260,16 +260,16 @@ public class PluralFormatTest extends CoreTestFmwk {
public void TestPaucal1_2_34() {
String localeIDs = "sl";
String testPattern = "one{one} two{two} few{few} other{other}";
- Map changes = new HashMap();
- changes.put(new Integer(0), "other");
- changes.put(new Integer(1), "one");
- changes.put(new Integer(2), "two");
- changes.put(new Integer(3), "few");
- changes.put(new Integer(5), "other");
- changes.put(new Integer(101), "one");
- changes.put(new Integer(102), "two");
- changes.put(new Integer(103), "few");
- changes.put(new Integer(105), "other");
+ Map<Integer, String> changes = new HashMap<>();
+ changes.put(0, "other");
+ changes.put(1, "one");
+ changes.put(2, "two");
+ changes.put(3, "few");
+ changes.put(5, "other");
+ changes.put(101, "one");
+ changes.put(102, "two");
+ changes.put(103, "few");
+ changes.put(105, "other");
helperTestRules(localeIDs, testPattern, changes);
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
index f0755f0b9..89339fe95 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
@@ -84,7 +84,7 @@ public class PluralFormatUnitTest extends CoreTestFmwk {
String result = numberFmt.format(n*n);
for (int k = 0; k < plFmts.length; ++k) {
sb.delete(0, sb.length());
- String pfResult = plFmts[k].format(Long.valueOf(n*n), sb, ignore).toString();
+ String pfResult = plFmts[k].format((long)(n*n), sb, ignore).toString();
TestFmwk.assertEquals("PluralFormat's output is not as expected", result, pfResult);
}
}
@@ -306,7 +306,7 @@ public class PluralFormatUnitTest extends CoreTestFmwk {
MessageFormat pfmt = new MessageFormat("The disk ''{0}'' contains {1, plural, one {one ''''{1, number, #.0}'''' widget} other {# widgets}}.");
logln("");
for (int i = 0; i < 3; ++i) {
- args[1] = new Integer(i);
+ args[1] = i;
logln(pfmt.format(args));
}
/* ICU 4.8 returns null instead of a choice/plural/select Format object
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/SelectFormatAPITest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/SelectFormatAPITest.java
index dd2e1c17f..5d00c35ba 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/SelectFormatAPITest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/SelectFormatAPITest.java
@@ -151,7 +151,7 @@ public class SelectFormatAPITest extends CoreTestFmwk {
boolean threwException = false;
try {
StringBuffer buf = new StringBuffer("AppendHere-");
- selFmt1.format(Integer.valueOf(0), buf, new FieldPosition(0));
+ selFmt1.format(0, buf, new FieldPosition(0));
} catch (IllegalArgumentException e) {
threwException = true;
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/TimeUnitTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/TimeUnitTest.java
index 14447fc52..c447ae54f 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/TimeUnitTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/TimeUnitTest.java
@@ -402,7 +402,7 @@ public class TimeUnitTest extends CoreTestFmwk {
public void TestFormat() {
TimeUnitFormat tuf = new TimeUnitFormat();
try {
- tuf.format(new Integer("1"), null, null);
+ tuf.format(Integer.parseInt("1"), null, null);
errln("TimeUnitFormat.format(Object,StringBuffer,FieldPosition) "
+ "was suppose to return an exception because the Object "
+ "parameter was not of type TimeUnitAmount.");
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java
index cd18ce73a..09d8eeafb 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java
@@ -279,6 +279,9 @@ public class UnitsTest {
new TestData("percent", "portion", UnitsConverter.Convertibility.CONVERTIBLE),
new TestData("ofhg", "kilogram-per-square-meter-square-second", UnitsConverter.Convertibility.CONVERTIBLE),
new TestData("second-per-meter", "meter-per-second", UnitsConverter.Convertibility.RECIPROCAL),
+ new TestData("mile-per-hour", "meter-per-second", UnitsConverter.Convertibility.CONVERTIBLE),
+ new TestData("knot", "meter-per-second", UnitsConverter.Convertibility.CONVERTIBLE),
+ new TestData("beaufort", "meter-per-second", UnitsConverter.Convertibility.CONVERTIBLE),
};
ConversionRates conversionRates = new ConversionRates();
@@ -392,6 +395,8 @@ public class UnitsTest {
new TestCase("cubic-meter-per-kilogram", "specific-volume"),
new TestCase("meter-per-second", "speed"),
new TestCase("second-per-meter", "speed"),
+ new TestCase("knot", "speed"),
+ new TestCase("beaufort", "speed"),
new TestCase("mile-per-gallon", "consumption"),
new TestCase("liter-per-100-kilometer", "consumption"),
new TestCase("cubic-meter-per-meter", "consumption"),
@@ -447,6 +452,19 @@ public class UnitsTest {
new TestData("ton", "pound", 1.0, 2000),
new TestData("stone", "pound", 1.0, 14),
new TestData("stone", "kilogram", 1.0, 6.35029),
+ // Speed
+ new TestData("mile-per-hour", "meter-per-second", 1.0, 0.44704),
+ new TestData("knot", "meter-per-second", 1.0, 0.514444),
+ new TestData("beaufort", "meter-per-second", 1.0, 0.95),
+ new TestData("beaufort", "meter-per-second", 4.0, 6.75),
+ new TestData("beaufort", "meter-per-second", 7.0, 15.55),
+ new TestData("beaufort", "meter-per-second", 10.0, 26.5),
+ new TestData("beaufort", "meter-per-second", 13.0, 39.15),
+ new TestData("beaufort", "mile-per-hour", 1.0, 2.12509),
+ new TestData("beaufort", "mile-per-hour", 4.0, 15.099319971367215),
+ new TestData("beaufort", "mile-per-hour", 7.0, 34.784359341445956),
+ new TestData("beaufort", "mile-per-hour", 10.0, 59.2788),
+ new TestData("beaufort", "mile-per-hour", 13.0, 87.5761),
// Temperature
new TestData("celsius", "fahrenheit", 0.0, 32.0),
new TestData("celsius", "fahrenheit", 10.0, 50.0),
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/TestUScript.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/TestUScript.java
index ce6d79cd6..331643082 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/TestUScript.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/TestUScript.java
@@ -337,6 +337,8 @@ public class TestUScript extends CoreTestFmwk {
"Cypro_Minoan", "Old_Uyghur", "Tangsa", "Toto", "Vithkuqi",
// new in ICU 72
"Kawi", "Nag_Mundari",
+ // new in ICU 75
+ "Aran",
};
String[] expectedShort = new String[]{
"Bali", "Batk", "Blis", "Brah", "Cham", "Cirt", "Cyrs", "Egyd", "Egyh", "Egyp",
@@ -377,6 +379,8 @@ public class TestUScript extends CoreTestFmwk {
"Cpmn", "Ougr", "Tnsa", "Toto", "Vith",
// new in ICU 72
"Kawi", "Nagm",
+ // new in ICU 75
+ "Aran",
};
if(expectedLong.length!=(UScript.CODE_LIMIT-UScript.BALINESE)) {
errln("need to add new script codes in lang.TestUScript.java!");
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterCompare.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterCompare.java
index db4be1b9d..62a9f1901 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterCompare.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterCompare.java
@@ -96,8 +96,8 @@ public final class UCharacterCompare
if (UCharacter.toLowerCase(i) != Character.toLowerCase(i))
trackDifference(p, i, "toLowerCase()", Integer.toHexString(UCharacter.toLowerCase(i)), Integer
.toHexString(Character.toLowerCase(i)));
- if (!UCharacter.toString(i).equals(new Character(i).toString()))
- trackDifference(p, i, "toString()", UCharacter.toString(i), new Character(i).toString());
+ if (!UCharacter.toString(i).equals(Character.valueOf(i).toString()))
+ trackDifference(p, i, "toString()", UCharacter.toString(i), Character.valueOf(i).toString());
if (UCharacter.toTitleCase(i) != Character.toTitleCase(i))
trackDifference(p, i, "toTitleCase()", Integer.toHexString(UCharacter.toTitleCase(i)), Integer
.toHexString(Character.toTitleCase(i)));
@@ -209,9 +209,9 @@ public final class UCharacterCompare
throws Exception {
if (m_hashtable_.containsKey(method)) {
Integer value = m_hashtable_.get(method);
- m_hashtable_.put(method, new Integer(value.intValue() + 1));
+ m_hashtable_.put(method, value.intValue() + 1);
} else
- m_hashtable_.put(method, new Integer(1));
+ m_hashtable_.put(method, 1);
String temp = Integer.toHexString(ch);
StringBuffer s = new StringBuffer(temp);
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java
index 64e39cf84..2d5ffd7d4 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java
@@ -12,6 +12,7 @@ package com.ibm.icu.dev.test.lang;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Arrays;
+import java.util.EnumSet;
import java.util.Locale;
import org.junit.Test;
@@ -28,6 +29,8 @@ import com.ibm.icu.impl.UCharacterName;
import com.ibm.icu.impl.Utility;
import com.ibm.icu.lang.CharacterProperties;
import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacter.IdentifierStatus;
+import com.ibm.icu.lang.UCharacter.IdentifierType;
import com.ibm.icu.lang.UCharacterCategory;
import com.ibm.icu.lang.UCharacterDirection;
import com.ibm.icu.lang.UCharacterEnums;
@@ -4053,4 +4056,159 @@ public final class UCharacterTest extends CoreTestFmwk
assertTrue("idcmStart.contains(U+1D7C3)", idcmStart.contains(0x1D7C3));
assertFalse("idcmStart.contains(U+1D7C4)", idcmStart.contains(0x1D7C4));
}
+
+ private static final IdentifierStatus[] ID_STATUS_VALUES = IdentifierStatus.values();
+
+ private static IdentifierStatus getIDStatus(int c) {
+ int idStatusInt = UCharacter.getIntPropertyValue(c, UProperty.IDENTIFIER_STATUS);
+ return ID_STATUS_VALUES[idStatusInt];
+ }
+
+ @Test
+ public void TestIDStatus() {
+ assertEquals("ID_Status(slash)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x2F));
+ assertEquals("ID_Status(digit 0)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x30));
+ assertEquals("ID_Status(colon)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x3A));
+ assertEquals("ID_Status(semicolon)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x3B));
+ assertEquals("ID_Status(Greek small alpha)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x03B1));
+ assertEquals("ID_Status(Greek small archaic koppa)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x03D9));
+ assertEquals("ID_Status(Hangul syllable)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0xAC00));
+ assertEquals("ID_Status(surrogate)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0xD800));
+ assertEquals("ID_Status(Arabic tail fragment)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0xFE73));
+ assertEquals("ID_Status(Hentaigana ko-3)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x1B03A));
+ assertEquals("ID_Status(Katakana small ko)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x1B155));
+ assertEquals("ID_Status(U+2EE5D)=Allowed", IdentifierStatus.ALLOWED, getIDStatus(0x2EE5D));
+ assertEquals("ID_Status(U+10FFFF)=Restricted", IdentifierStatus.RESTRICTED, getIDStatus(0x10FFFF));
+
+ // Property names work and get the correct sets.
+ UnicodeSet idStatus = new UnicodeSet("[:Identifier_Status=Allowed:]");
+ // Unicode 15.1: 112778 Allowed characters; normally grows over time
+ assertTrue("Allowed number of characters", idStatus.size() >= 112778);
+ assertFalse("Allowed.contains(slash)", idStatus.contains(0x2F));
+ assertTrue("Allowed.contains(digit 0)", idStatus.contains(0x30));
+ assertTrue("Allowed.contains(colon)", idStatus.contains(0x3A));
+ assertFalse("Allowed.contains(semicolon)", idStatus.contains(0x3B));
+ assertTrue("Allowed.contains(Greek small alpha)", idStatus.contains(0x03B1));
+ assertFalse("Allowed.contains(Greek small archaic koppa)", idStatus.contains(0x03D9));
+ assertTrue("Allowed.contains(Hangul syllable)", idStatus.contains(0xAC00));
+ assertFalse("Allowed.contains(surrogate)", idStatus.contains(0xD800));
+ assertFalse("Allowed.contains(Arabic tail fragment)", idStatus.contains(0xFE73));
+ assertFalse("Allowed.contains(Hentaigana ko-3)", idStatus.contains(0x1B03A));
+ assertTrue("Allowed.contains(Katakana small ko)", idStatus.contains(0x1B155));
+ assertTrue("Allowed.contains(U+2EE5D)", idStatus.contains(0x2EE5D));
+ assertFalse("Allowed.contains(U+10FFFF)", idStatus.contains(0x10FFFF));
+ }
+
+ private static final IdentifierType[] ID_TYPE_VALUES = IdentifierType.values();
+
+ private EnumSet<IdentifierType> getIDTypes(int c) {
+ EnumSet<IdentifierType> types =
+ EnumSet.of(IdentifierType.NOT_CHARACTER, IdentifierType.RECOMMENDED);
+ int length = UCharacter.getIdentifierTypes(c, types);
+ assertEquals(
+ String.format("getIdentifierTypes(U+%04x) length vs. set.size()", c),
+ length, types.size());
+ // Check that hasIdentifierType() agrees.
+ for (IdentifierType t : ID_TYPE_VALUES) {
+ boolean expected = types.contains(t);
+ boolean actual = UCharacter.hasIdentifierType(c, t);
+ assertEquals(
+ String.format("getIdentifierTypes(U+%04x).contains(%s) vs. hasIdentifierType()",
+ c, t),
+ expected, actual);
+ }
+ return types;
+ }
+
+ @Test
+ public void TestIDType() {
+ // Note: Types other than Recommended and Inclusion may well change over time.
+ assertEquals("ID_Type(slash)", EnumSet.of(IdentifierType.NOT_XID), getIDTypes(0x2F));
+ assertEquals("ID_Type(digit 0)", EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0x30));
+ assertEquals("ID_Type(colon)", EnumSet.of(IdentifierType.INCLUSION), getIDTypes(0x3A));
+ assertEquals("ID_Type(semicolon)", EnumSet.of(IdentifierType.NOT_XID), getIDTypes(0x3B));
+ assertEquals("ID_Type(Greek small alpha)",
+ EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0x03B1));
+ assertEquals("ID_Type(Greek small archaic koppa)",
+ EnumSet.of(IdentifierType.OBSOLETE), getIDTypes(0x03D9));
+ assertEquals("ID_Type(Hangul syllable)",
+ EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0xAC00));
+ assertEquals("ID_Type(surrogate)",
+ EnumSet.of(IdentifierType.NOT_CHARACTER), getIDTypes(0xD800));
+ assertEquals("ID_Type(Arabic tail fragment)",
+ EnumSet.of(IdentifierType.TECHNICAL), getIDTypes(0xFE73));
+ assertEquals("ID_Type(Linear B syllable)",
+ EnumSet.of(IdentifierType.EXCLUSION), getIDTypes(0x10000));
+ assertEquals("ID_Type(Hentaigana ko-3)",
+ EnumSet.of(IdentifierType.OBSOLETE), getIDTypes(0x1B03A));
+ assertEquals("ID_Type(Katakana small ko)",
+ EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0x1B155));
+ assertEquals("ID_Type(U+2EE5D)",
+ EnumSet.of(IdentifierType.RECOMMENDED), getIDTypes(0x2EE5D));
+ assertEquals("ID_Type(U+10FFFF)",
+ EnumSet.of(IdentifierType.NOT_CHARACTER), getIDTypes(0x10FFFF));
+
+ assertEquals("ID_Type(CYRILLIC THOUSANDS SIGN)",
+ EnumSet.of(IdentifierType.NOT_XID, IdentifierType.OBSOLETE),
+ getIDTypes(0x0482));
+ assertEquals("ID_Type(SYRIAC FEMININE DOT)",
+ EnumSet.of(IdentifierType.TECHNICAL, IdentifierType.LIMITED_USE),
+ getIDTypes(0x0740));
+ assertEquals("ID_Type(NKO LETTER JONA JA)",
+ EnumSet.of(IdentifierType.OBSOLETE, IdentifierType.LIMITED_USE),
+ getIDTypes(0x07E8));
+ assertEquals("ID_Type(SYRIAC END OF PARAGRAPH)",
+ EnumSet.of(IdentifierType.NOT_XID, IdentifierType.LIMITED_USE),
+ getIDTypes(0x0700));
+ assertEquals("ID_Type(LATIN SMALL LETTER EZH)=",
+ EnumSet.of(IdentifierType.TECHNICAL, IdentifierType.UNCOMMON_USE),
+ getIDTypes(0x0292));
+ assertEquals("ID_Type(MUSICAL SYMBOL KIEVAN C CLEF)",
+ EnumSet.of(IdentifierType.NOT_XID, IdentifierType.TECHNICAL,
+ IdentifierType.UNCOMMON_USE),
+ getIDTypes(0x1D1DE));
+ assertEquals("ID_Type(MRO LETTER TA)",
+ EnumSet.of(IdentifierType.EXCLUSION, IdentifierType.UNCOMMON_USE),
+ getIDTypes(0x16A40));
+ assertEquals("ID_Type(GREEK MUSICAL LEIMMA)",
+ EnumSet.of(IdentifierType.NOT_XID, IdentifierType.OBSOLETE),
+ getIDTypes(0x1D245));
+
+ // Property names work and get the correct sets.
+ UnicodeSet rec = new UnicodeSet("[:Identifier_Type=Recommended:]");
+ UnicodeSet incl = new UnicodeSet("[:Identifier_Type=Inclusion:]");
+ UnicodeSet limited = new UnicodeSet("[:Identifier_Type=Limited_Use:]");
+ UnicodeSet uncommon = new UnicodeSet("[:Identifier_Type=Uncommon_Use:]");
+ UnicodeSet notChar = new UnicodeSet("[:Identifier_Type=Not_Character:]");
+ // Unicode 15.1 set sizes; normally grows over time except Not_Character shrinks
+ assertTrue("Recommended number of characters", rec.size() >= 112761);
+ assertTrue("Inclusion number of characters", incl.size() >= 17);
+ assertTrue("Limited_Use number of characters", limited.size() >= 5268);
+ assertTrue("Uncommon_Use number of characters", uncommon.size() >= 398);
+ assertTrue("Not_Character number of characters",
+ 800000 <= notChar.size() && notChar.size() <= 964293);
+ assertFalse("Recommended.contains(slash)", rec.contains(0x2F));
+ assertTrue("Recommended.contains(digit 0)", rec.contains(0x30));
+ assertTrue("Inclusion.contains(colon)", incl.contains(0x3A));
+ assertTrue("Recommended.contains(U+2EE5D)", rec.contains(0x2EE5D));
+ assertTrue("Limited_Use.contains(SYRIAC FEMININE DOT)", limited.contains(0x0740));
+ assertTrue("Limited_Use.contains(NKO LETTER JONA JA)", limited.contains(0x7E8));
+ assertTrue("Not_Character.contains(surrogate)", notChar.contains(0xd800));
+ assertTrue("Not_Character.contains(U+10FFFF)", notChar.contains(0x10FFFF));
+ assertTrue("Uncommon_Use.contains(LATIN SMALL LETTER EZH)", uncommon.contains(0x0292));
+ assertTrue("Uncommon_Use.contains(MUSICAL SYMBOL KIEVAN C CLEF)", uncommon.contains(0x1D1DE));
+
+ // More mutually exclusive types, including some otherwise combinable ones.
+ UnicodeSet dep = new UnicodeSet("[:Identifier_Type=Deprecated:]");
+ UnicodeSet di = new UnicodeSet("[:Identifier_Type=Default_Ignorable:]");
+ UnicodeSet notNFKC = new UnicodeSet("[:Identifier_Type=Not_NFKC:]");
+ UnicodeSet excl = new UnicodeSet("[:Identifier_Type=Exclusion:]");
+ UnicodeSet allExclusive = new UnicodeSet();
+ allExclusive.addAll(rec).addAll(incl).addAll(limited).addAll(excl).
+ addAll(notNFKC).addAll(di).addAll(dep).addAll(notChar);
+ assertEquals("num chars in mutually exclusive types",
+ rec.size() + incl.size() + limited.size() + excl.size() +
+ notNFKC.size() + di.size() + dep.size() + notChar.size(),
+ allExclusive.size());
+ }
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java
index 050940135..74c35ca4b 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java
@@ -841,17 +841,7 @@ public class UnicodeSetTest extends CoreTestFmwk {
}
}
}
-
- static final Integer
- I_ANY = new Integer(SortedSetRelation.ANY),
- I_CONTAINS = new Integer(SortedSetRelation.CONTAINS),
- I_DISJOINT = new Integer(SortedSetRelation.DISJOINT),
- I_NO_B = new Integer(SortedSetRelation.NO_B),
- I_ISCONTAINED = new Integer(SortedSetRelation.ISCONTAINED),
- I_EQUALS = new Integer(SortedSetRelation.EQUALS),
- I_NO_A = new Integer(SortedSetRelation.NO_A),
- I_NONE = new Integer(SortedSetRelation.NONE);
-
+
@Test
public void TestSetRelation() {
@@ -885,8 +875,8 @@ public class UnicodeSetTest extends CoreTestFmwk {
SortedSet jset = new TreeSet();
for (int i = 0; i < size*2; i += 2) { // only even values
- iset.add(new Integer(i));
- jset.add(new Integer(i));
+ iset.add(i);
+ jset.add(i);
}
int iterations = 1000000 / size;
@@ -896,12 +886,12 @@ public class UnicodeSetTest extends CoreTestFmwk {
CheckSpeed(iset, jset, "when a = b", iterations);
- iset.add(new Integer(size + 1)); // add odd value in middle
+ iset.add(size + 1); // add odd value in middle
CheckSpeed(iset, jset, "when a contains b", iterations);
CheckSpeed(jset, iset, "when b contains a", iterations);
- jset.add(new Integer(size - 1)); // add different odd value in middle
+ jset.add(size - 1); // add different odd value in middle
CheckSpeed(jset, iset, "when a, b are disjoint", iterations);
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Args.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Args.java
index 815384d0e..6d37d97e5 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Args.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Args.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CoreTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CoreTest.java
new file mode 100644
index 000000000..66c40ccfb
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CoreTest.java
@@ -0,0 +1,28 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.io.Reader;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.ibm.icu.dev.test.CoreTestFmwk;
+
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class CoreTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "test-core.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Unit[] unitList = TestUtils.GSON.fromJson(reader, Unit[].class);
+ for (Unit unit : unitList) {
+ TestUtils.runTestCase(unit);
+ }
+ }
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java
index 30004fc79..3aa2e4e37 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterGrammarCaseTest.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
@@ -14,15 +14,15 @@ import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.message2.FormattedPlaceholder;
import com.ibm.icu.message2.Formatter;
import com.ibm.icu.message2.FormatterFactory;
+import com.ibm.icu.message2.MFFunctionRegistry;
import com.ibm.icu.message2.MessageFormatter;
-import com.ibm.icu.message2.Mf2FunctionRegistry;
import com.ibm.icu.message2.PlainStringFormattedValue;
/**
* Showing a custom formatter that can handle grammatical cases.
*/
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
static class GrammarCasesFormatterFactory implements FormatterFactory {
@@ -42,14 +42,18 @@ public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
// Romanian naive and incomplete rules, just to make things work for testing.
private static String getDativeAndGenitive(String value) {
- if (value.endsWith("ana"))
+ if (value.endsWith("ana")) {
return value.substring(0, value.length() - 3) + "nei";
- if (value.endsWith("ca"))
+ }
+ if (value.endsWith("ca")) {
return value.substring(0, value.length() - 2) + "căi";
- if (value.endsWith("ga"))
+ }
+ if (value.endsWith("ga")) {
return value.substring(0, value.length() - 2) + "găi";
- if (value.endsWith("a"))
+ }
+ if (value.endsWith("a")) {
return value.substring(0, value.length() - 1) + "ei";
+ }
return "lui " + value;
}
@@ -80,10 +84,9 @@ public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue(result));
}
}
-
}
- static final Mf2FunctionRegistry REGISTRY = Mf2FunctionRegistry.builder()
+ static final MFFunctionRegistry REGISTRY = MFFunctionRegistry.builder()
.setFormatter("grammarBB", new GrammarCasesFormatterFactory())
.build();
@@ -92,7 +95,7 @@ public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
MessageFormatter mf = MessageFormatter.builder()
.setFunctionRegistry(REGISTRY)
.setLocale(Locale.forLanguageTag("ro"))
- .setPattern("{Cartea {$owner :grammarBB case=genitive}}")
+ .setPattern("Cartea {$owner :grammarBB case=genitive}")
.build();
assertEquals("case - genitive", "Cartea Mariei", mf.formatToString(Args.of("owner", "Maria")));
@@ -103,7 +106,7 @@ public class CustomFormatterGrammarCaseTest extends CoreTestFmwk {
mf = MessageFormatter.builder()
.setFunctionRegistry(REGISTRY)
.setLocale(Locale.forLanguageTag("ro"))
- .setPattern("{M-a sunat {$owner :grammarBB case=nominative}}")
+ .setPattern("M-a sunat {$owner :grammarBB case=nominative}")
.build();
assertEquals("case - nominative", "M-a sunat Maria", mf.formatToString(Args.of("owner", "Maria")));
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterListTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterListTest.java
index 160b63c09..3242663b3 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterListTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterListTest.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
@@ -16,7 +16,7 @@ import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.message2.FormattedPlaceholder;
import com.ibm.icu.message2.Formatter;
import com.ibm.icu.message2.FormatterFactory;
-import com.ibm.icu.message2.Mf2FunctionRegistry;
+import com.ibm.icu.message2.MFFunctionRegistry;
import com.ibm.icu.message2.PlainStringFormattedValue;
import com.ibm.icu.text.ListFormatter;
import com.ibm.icu.text.ListFormatter.Type;
@@ -26,7 +26,7 @@ import com.ibm.icu.text.ListFormatter.Width;
* Showing a custom formatter for a list, using the existing ICU {@link ListFormatter}.
*/
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class CustomFormatterListTest extends CoreTestFmwk {
static class ListFormatterFactory implements FormatterFactory {
@@ -71,26 +71,22 @@ public class CustomFormatterListTest extends CoreTestFmwk {
}
}
- static final Mf2FunctionRegistry REGISTRY = Mf2FunctionRegistry.builder()
+ static final MFFunctionRegistry REGISTRY = MFFunctionRegistry.builder()
.setFormatter("listformat", new ListFormatterFactory())
.build();
@Test
public void test() {
- String [] progLanguages = {
- "C/C++",
- "Java",
- "Python"
- };
+ String[] progLanguages = {"C/C++", "Java", "Python"};
TestUtils.runTestCase(REGISTRY, new TestCase.Builder()
- .pattern("{I know {$languages :listformat type=AND}!}")
+ .pattern("I know {$languages :listformat type=AND}!")
.arguments(Args.of("languages", progLanguages))
.expected("I know C/C++, Java, and Python!")
.build());
TestUtils.runTestCase(REGISTRY, new TestCase.Builder()
- .pattern("{You are allowed to use {$languages :listformat type=OR}!}")
+ .pattern("You are allowed to use {$languages :listformat type=OR}!")
.arguments(Args.of("languages", Arrays.asList(progLanguages)))
.expected("You are allowed to use C/C++, Java, or Python!")
.build());
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterMessageRefTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterMessageRefTest.java
index a41d462f1..362ff351e 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterMessageRefTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterMessageRefTest.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
@@ -16,8 +16,8 @@ import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.message2.FormattedPlaceholder;
import com.ibm.icu.message2.Formatter;
import com.ibm.icu.message2.FormatterFactory;
+import com.ibm.icu.message2.MFFunctionRegistry;
import com.ibm.icu.message2.MessageFormatter;
-import com.ibm.icu.message2.Mf2FunctionRegistry;
import com.ibm.icu.message2.PlainStringFormattedValue;
/**
@@ -27,7 +27,7 @@ import com.ibm.icu.message2.PlainStringFormattedValue;
* But this shows that it can be easily implemented as a custom function.</p>
*/
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class CustomFormatterMessageRefTest extends CoreTestFmwk {
static class ResourceManagerFactory implements FormatterFactory {
@@ -40,6 +40,7 @@ public class CustomFormatterMessageRefTest extends CoreTestFmwk {
static class ResourceManagerFactoryImpl implements Formatter {
final Map<String, Object> options;
+ @SuppressWarnings("unused")
ResourceManagerFactoryImpl(Locale locale, Map<String, Object> options) {
this.options = options;
}
@@ -56,8 +57,8 @@ public class CustomFormatterMessageRefTest extends CoreTestFmwk {
Properties props = (Properties) oProps;
Object msg = props.get(toFormat.toString());
MessageFormatter mf = MessageFormatter.builder()
- .setPattern(msg.toString())
- .build();
+ .setPattern(msg.toString())
+ .build();
result = mf.formatToString(options);
}
return new FormattedPlaceholder(toFormat, new PlainStringFormattedValue(result));
@@ -70,17 +71,17 @@ public class CustomFormatterMessageRefTest extends CoreTestFmwk {
}
}
- static final Mf2FunctionRegistry REGISTRY = Mf2FunctionRegistry.builder()
+ static final MFFunctionRegistry REGISTRY = MFFunctionRegistry.builder()
.setFormatter("msgRef", new ResourceManagerFactory())
.build();
static final Properties PROPERTIES = new Properties();
@BeforeClass
- static public void beforeClass() {
- PROPERTIES.put("firefox", "match {$gcase :select} when genitive {Firefoxin} when * {Firefox}");
- PROPERTIES.put("chrome", "match {$gcase :select} when genitive {Chromen} when * {Chrome}");
- PROPERTIES.put("safari", "match {$gcase :select} when genitive {Safarin} when * {Safari}");
+ public static void beforeClass() {
+ PROPERTIES.put("firefox", ".match {$gcase :string} genitive {{Firefoxin}} * {{Firefox}}");
+ PROPERTIES.put("chrome", ".match {$gcase :string} genitive {{Chromen}} * {{Chrome}}");
+ PROPERTIES.put("safari", ".match {$gcase :string} genitive {{Safarin}} * {{Safari}}");
}
@Test
@@ -107,11 +108,11 @@ public class CustomFormatterMessageRefTest extends CoreTestFmwk {
MessageFormatter mf1 = MessageFormatter.builder()
.setFunctionRegistry(REGISTRY)
- .setPattern("{Please start {$browser :msgRef gcase=genitive resbundle=$res}}")
+ .setPattern("Please start {$browser :msgRef gcase=genitive resbundle=$res}")
.build();
MessageFormatter mf2 = MessageFormatter.builder()
.setFunctionRegistry(REGISTRY)
- .setPattern("{Please start {$browser :msgRef resbundle=$res}}")
+ .setPattern("Please start {$browser :msgRef resbundle=$res}")
.build();
browser.replace(0, browser.length(), "firefox");
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterPersonTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterPersonTest.java
index 06502d178..0fec7a46b 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterPersonTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/CustomFormatterPersonTest.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
@@ -15,14 +15,14 @@ import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.message2.FormattedPlaceholder;
import com.ibm.icu.message2.Formatter;
import com.ibm.icu.message2.FormatterFactory;
-import com.ibm.icu.message2.Mf2FunctionRegistry;
+import com.ibm.icu.message2.MFFunctionRegistry;
import com.ibm.icu.message2.PlainStringFormattedValue;
/**
* Showing a custom formatter for a user defined class.
*/
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class CustomFormatterPersonTest extends CoreTestFmwk {
public static class Person {
@@ -42,7 +42,7 @@ public class CustomFormatterPersonTest extends CoreTestFmwk {
}
}
- public static class PersonNameFormatterFactory implements FormatterFactory {
+ private static class PersonNameFormatterFactory implements FormatterFactory {
@Override
public Formatter createFormatter(Locale locale, Map<String, Object> fixedOptions) {
return new PersonNameFormatterImpl(fixedOptions.get("formality"), fixedOptions.get("length"));
@@ -92,7 +92,7 @@ public class CustomFormatterPersonTest extends CoreTestFmwk {
}
}
- private static final Mf2FunctionRegistry CUSTOM_FUNCTION_REGISTRY = Mf2FunctionRegistry.builder()
+ private static final MFFunctionRegistry CUSTOM_FUNCTION_REGISTRY = MFFunctionRegistry.builder()
.setFormatter("person", new PersonNameFormatterFactory())
.setDefaultFormatterNameForType(Person.class, "person")
.build();
@@ -102,41 +102,39 @@ public class CustomFormatterPersonTest extends CoreTestFmwk {
Person who = new Person("Mr.", "John", "Doe");
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal}}")
+ .pattern("Hello {$name :person formality=formal}")
.arguments(Args.of("name", who))
.expected("Hello {$name}")
- .errors("person function unknown when called without a custom registry")
.build());
TestUtils.runTestCase(new TestCase.Builder()
- .pattern("{Hello {$name :person formality=informal}}")
+ .pattern("Hello {$name :person formality=informal}")
.arguments(Args.of("name", who))
.expected("Hello {$name}")
- .errors("person function unknown when called without a custom registry")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal}}")
+ .pattern("Hello {$name :person formality=formal}")
.arguments(Args.of("name", who))
.expected("Hello Mr. Doe")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=informal}}")
+ .pattern("Hello {$name :person formality=informal}")
.arguments(Args.of("name", who))
.expected("Hello John")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal length=long}}")
+ .pattern("Hello {$name :person formality=formal length=long}")
.arguments(Args.of("name", who))
.expected("Hello Mr. John Doe")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal length=medium}}")
+ .pattern("Hello {$name :person formality=formal length=medium}")
.arguments(Args.of("name", who))
.expected("Hello John Doe")
.build());
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
- .pattern("{Hello {$name :person formality=formal length=short}}")
+ .pattern("Hello {$name :person formality=formal length=short}")
.arguments(Args.of("name", who))
.expected("Hello Mr. Doe")
.build());
@@ -148,26 +146,26 @@ public class CustomFormatterPersonTest extends CoreTestFmwk {
Person malePerson = new Person("Mr.", "John", "Doe");
Person unknownPerson = new Person("Mr./Ms.", "Anonymous", "Doe");
String message = ""
- + "let $hostName = {$host :person length=long}\n"
- + "let $guestName = {$guest :person length=long}\n"
- + "let $guestsOther = {$guestCount :number offset=1}\n"
+ + ".local $hostName = {$host :person length=long}\n"
+ + ".local $guestName = {$guest :person length=long}\n"
+ + ".local $guestsOther = {$guestCount :number icu:offset=1}\n"
// + "\n"
- + "match {$hostGender :gender} {$guestCount :plural}\n"
+ + ".match {$hostGender :icu:gender} {$guestCount :number}\n"
// + "\n"
- + "when female 0 {{$hostName} does not give a party.}\n"
- + "when female 1 {{$hostName} invites {$guestName} to her party.}\n"
- + "when female 2 {{$hostName} invites {$guestName} and one other person to her party.}\n"
- + "when female * {{$hostName} invites {$guestName} and {$guestsOther} other people to her party.}\n"
+ + " female 0 {{{$hostName} does not give a party.}}\n"
+ + " female 1 {{{$hostName} invites {$guestName} to her party.}}\n"
+ + " female 2 {{{$hostName} invites {$guestName} and one other person to her party.}}\n"
+ + " female * {{{$hostName} invites {$guestName} and {$guestsOther} other people to her party.}}\n"
// + "\n"
- + "when male 0 {{$hostName} does not give a party.}\n"
- + "when male 1 {{$hostName} invites {$guestName} to his party.}\n"
- + "when male 2 {{$hostName} invites {$guestName} and one other person to his party.}\n"
- + "when male * {{$hostName} invites {$guestName} and {$guestsOther} other people to his party.}\n"
+ + " male 0 {{{$hostName} does not give a party.}}\n"
+ + " male 1 {{{$hostName} invites {$guestName} to his party.}}\n"
+ + " male 2 {{{$hostName} invites {$guestName} and one other person to his party.}}\n"
+ + " male * {{{$hostName} invites {$guestName} and {$guestsOther} other people to his party.}}\n"
// + "\n"
- + "when * 0 {{$hostName} does not give a party.}\n"
- + "when * 1 {{$hostName} invites {$guestName} to their party.}\n"
- + "when * 2 {{$hostName} invites {$guestName} and one other person to their party.}\n"
- + "when * * {{$hostName} invites {$guestName} and {$guestsOther} other people to their party.}\n";
+ + " * 0 {{{$hostName} does not give a party.}}\n"
+ + " * 1 {{{$hostName} invites {$guestName} to their party.}}\n"
+ + " * 2 {{{$hostName} invites {$guestName} and one other person to their party.}}\n"
+ + " * * {{{$hostName} invites {$guestName} and {$guestsOther} other people to their party.}}\n";
TestUtils.runTestCase(CUSTOM_FUNCTION_REGISTRY, new TestCase.Builder()
.pattern(message)
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/DataModelErrorsTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/DataModelErrorsTest.java
new file mode 100644
index 000000000..162fade64
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/DataModelErrorsTest.java
@@ -0,0 +1,41 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.google.gson.reflect.TypeToken;
+import com.ibm.icu.dev.test.CoreTestFmwk;
+import com.ibm.icu.message2.MessageFormatter;
+
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class DataModelErrorsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "data-model-errors.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Type mapType = new TypeToken<Map<String, String[]>>(){/* not code */}.getType();
+ Map<String, String[]> unitList = TestUtils.GSON.fromJson(reader, mapType);
+ for (Entry<String, String[]> tests : unitList.entrySet()) {
+ for (String pattern : tests.getValue()) {
+ try {
+ MessageFormatter.builder().setPattern(pattern).build().formatToString(null);
+ fail("Undetected errors in '" + tests.getKey() + "': '" + pattern + "'");
+ } catch (Exception e) {
+ // We expected an error, so it's all good
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FirstReleaseTests.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FirstReleaseTests.java
new file mode 100644
index 000000000..994366a55
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FirstReleaseTests.java
@@ -0,0 +1,33 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.io.Reader;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.ibm.icu.dev.test.CoreTestFmwk;
+
+/*
+ * This is the equivalent of the `FromJsonTest` class in the previous release.
+ * That class was originally a json file, converted to some hard-coded tests in the Java class.
+ * Now that we can use gson for testing we reverted those tests back to json, tested in this class.
+ */
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class FirstReleaseTests extends CoreTestFmwk {
+ private static final String JSON_FILE = "icu-test-previous-release.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Unit[] unitList = TestUtils.GSON.fromJson(reader, Unit[].class);
+ for (Unit unit : unitList) {
+ TestUtils.runTestCase(unit);
+ }
+ }
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FromJsonTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FromJsonTest.java
deleted file mode 100644
index 6f821973b..000000000
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FromJsonTest.java
+++ /dev/null
@@ -1,422 +0,0 @@
-// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-package com.ibm.icu.dev.test.message2;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import com.ibm.icu.dev.test.CoreTestFmwk;
-
-/**
- * These tests come from the test suite created for the JavaScript implementation of MessageFormat v2.
- *
- * <p>Original JSON file
- * <a href="https://github.com/messageformat/messageformat/blob/master/packages/mf2-messageformat/src/__fixtures/test-messages.json">here</a>.</p>
- */
-@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
-public class FromJsonTest extends CoreTestFmwk {
-
- static final TestCase[] TEST_CASES = {
- new TestCase.Builder()
- .pattern("{hello}")
- .expected("hello")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(world)}}")
- .expected("hello world")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {()}}")
- .expected("hello ")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {$place}}")
- .arguments(Args.of("place", "world"))
- .expected("hello world")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {$place}}")
- .expected("hello {$place}")
- // errorsJs: ["missing-var"]
- .build(),
- new TestCase.Builder()
- .pattern("{{$one} and {$two}}")
- .arguments(Args.of("one", 1.3, "two", 4.2))
- .expected("1.3 and 4.2")
- .build(),
- new TestCase.Builder()
- .pattern("{{$one} et {$two}}")
- .locale("fr")
- .arguments(Args.of("one", 1.3, "two", 4.2))
- .expected("1,3 et 4,2")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number}}")
- .expected("hello 4.2")
- .build(),
- new TestCase.Builder() // not in the original JSON
- .locale("ar-EG")
- .pattern("{hello {(4.2) :number}}")
- .expected("hello \u0664\u066B\u0662")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(foo) :number}}")
- .expected("hello NaN")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {:number}}")
- .expected("hello NaN")
- // This is different from JS, should be an error.
- .errors("ICU4J: exception.")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number minimumFractionDigits=2}}")
- .expected("hello 4.20")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number minimumFractionDigits=(2)}}")
- .expected("hello 4.20")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number minimumFractionDigits=$foo}}")
- .arguments(Args.of("foo", 2f))
- .expected("hello 4.20")
- .build(),
- new TestCase.Builder()
- .pattern("{hello {(4.2) :number minimumFractionDigits=$foo}}")
- .arguments(Args.of("foo", "2"))
- .expected("hello 4.20")
- // errorsJs: ["invalid-type"]
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {(bar)} {bar {$foo}}")
- .expected("bar bar")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {(bar)} {bar {$foo}}")
- .arguments(Args.of("foo", "foo"))
- // expectedJs: "bar foo"
- // It is undefined if we allow arguments to override local variables, or it is an error.
- // And undefined who wins if that happens, the local variable of the argument.
- .expected("bar bar")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {$bar} {bar {$foo}}")
- .arguments(Args.of("bar", "foo"))
- .expected("bar foo")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {$bar :number} {bar {$foo}}")
- .arguments(Args.of("bar", 4.2))
- .expected("bar 4.2")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {$bar :number minimumFractionDigits=2} {bar {$foo}}")
- .arguments(Args.of("bar", 4.2))
- .expected("bar 4.20")
- .build(),
- new TestCase.Builder().ignore("Maybe") // Because minimumFractionDigits=foo
- .pattern("let $foo = {$bar :number minimumFractionDigits=foo} {bar {$foo}}")
- .arguments(Args.of("bar", 4.2))
- .expected("bar 4.2")
- .errors("invalid-type")
- .build(),
- new TestCase.Builder().ignore("Maybe. Function specific behavior.")
- .pattern("let $foo = {$bar :number} {bar {$foo}}")
- .arguments(Args.of("bar", "foo"))
- .expected("bar NaN")
- .build(),
- new TestCase.Builder()
- .pattern("let $foo = {$bar} let $bar = {$baz} {bar {$foo}}")
- .arguments(Args.of("baz", "foo"))
- // expectedJs: "bar foo"
- // It is currently undefined if a local variable (like $foo)
- // can reference a local variable that was not yet defined (like $bar).
- // That is called hoisting and it is valid in JavaScript or Python.
- // Not allowing that would prevent circular references.
- // https://github.com/unicode-org/message-format-wg/issues/292
- .expected("bar {$bar}")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when (1) {one} when * {other}")
- .pattern("match {$foo :select} when (1) {one} when * {other}")
- .arguments(Args.of("foo", "1"))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo :plural} when 1 {one} when * {other}")
- .arguments(Args.of("foo", "1")) // Should this be error? Plural on string?
- // expectedJs: "one"
- .expected("other")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo :select} when (1) {one} when * {other}")
- .arguments(Args.of("foo", "1"))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when 1 {one} when * {other}")
- .pattern("match {$foo :plural} when 1 {one} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo :plural} when 1 {one} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder().ignore("not possible to put a null in a map")
- .pattern("match {$foo} when 1 {one} when * {other}")
- .arguments(Args.of("foo", null))
- .expected("other")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when 1 {one} when * {other}")
- .pattern("match {$foo :plural} when 1 {one} when * {other}")
- .expected("other")
- .errors("missing-var")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when one {one} when * {other}")
- .pattern("match {$foo :plural} when one {one} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when 1 {=1} when one {one} when * {other}")
- .pattern("match {$foo :plural} when 1 {=1} when one {one} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("=1")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} when one {one} when 1 {=1} when * {other}")
- .pattern("match {$foo :plural} when one {one} when 1 {=1} when * {other}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} {$bar} when one one {one one} when one * {one other} when * * {other}")
- .pattern("match {$foo :plural} {$bar :plural} when one one {one one} when one * {one other} when * * {other}")
- .arguments(Args.of("foo", 1, "bar", 1))
- .expected("one one")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} {$bar} when one one {one one} when one * {one other} when * * {other}")
- .pattern("match {$foo :plural} {$bar :plural} when one one {one one} when one * {one other} when * * {other}")
- .arguments(Args.of("foo", 1, "bar", 2))
- .expected("one other")
- .build(),
- new TestCase.Builder()
- .patternJs("match {$foo} {$bar} when one one {one one} when one * {one other} when * * {other}")
- .pattern("match {$foo :plural} {$bar :plural} when one one {one one} when one * {one other} when * * {other}")
- .arguments(Args.of("foo", 2, "bar", 2))
- .expected("other")
- .build(),
- new TestCase.Builder()
- .patternJs("let $foo = {$bar} match {$foo} when one {one} when * {other}")
- .pattern("let $foo = {$bar} match {$foo :plural} when one {one} when * {other}")
- .arguments(Args.of("bar", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("let $foo = {$bar} match {$foo} when one {one} when * {other}")
- .pattern("let $foo = {$bar} match {$foo :plural} when one {one} when * {other}")
- .arguments(Args.of("bar", 2))
- .expected("other")
- .build(),
- new TestCase.Builder()
- .patternJs("let $bar = {$none} match {$foo} when one {one} when * {{$bar}}")
- .pattern("let $bar = {$none} match {$foo :plural} when one {one} when * {{$bar}}")
- .arguments(Args.of("foo", 1))
- .expected("one")
- .build(),
- new TestCase.Builder()
- .patternJs("let $bar = {$none} match {$foo} when one {one} when * {{$bar}}")
- .pattern("let $bar = {$none :plural} match {$foo} when one {one} when * {{$bar}}")
- .arguments(Args.of("foo", 2))
- .expected("{$bar}")
- .errors("missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("let bar = {(foo)} {{$bar}}")
- .expected("{$bar}")
- .errors("missing-char", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("let $bar {(foo)} {{$bar}}")
- .expected("foo")
- .errors("missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("let $bar = (foo) {{$bar}}")
- .expected("{$bar}")
- .errors("missing-char", "junk-element")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag}}")
- .expected("{+tag}")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag}content}")
- .expected("{+tag}content")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag}content{-tag}}")
- .expected("{+tag}content{-tag}")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{-tag}content}")
- .expected("{-tag}content")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag foo=bar}}")
- .expected("{+tag foo=bar}")
- .build(),
- new TestCase.Builder().ignore("no markup support")
- .pattern("{{+tag foo=(foo) bar=$bar}}")
- .arguments(Args.of("bar", "b a r"))
- .expected("{+tag foo=foo bar=(b a r)}")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {(foo) +markup}}")
- .expected("bad {+markup}")
- .errors("extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("{{-tag foo=bar}}")
- .expected("{-tag}")
- .errors("extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("no braces")
- .expected("{no braces}")
- .errors("parse-error", "junk-element")
- .build(),
- new TestCase.Builder()
- .pattern("no braces {$foo}")
- .arguments(Args.of("foo", 2))
- .expected("{no braces {$foo}}")
- .errors("parse-error", "junk-element")
- .build(),
- new TestCase.Builder().ignore("infinite loop!")
- .pattern("{missing end brace")
- .expected("missing end brace")
- .errors("missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("{missing end {$brace")
- .expected("missing end {$brace}")
- .errors("missing-char", "missing-char", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("{extra} content")
- .expected("extra")
- .errors("extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("{empty { }}")
- .expected("empty ")
- // errorsJs: ["parse-error", "junk-element"]
- .build(),
- new TestCase.Builder()
- .pattern("{bad {:}}")
- .expected("bad {:}")
- .errors("empty-token", "missing-func")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {placeholder}}")
- .expected("bad {placeholder}")
- .errors("parse-error", "extra-content", "junk-element")
- .build(),
- new TestCase.Builder()
- .pattern("{no-equal {(42) :number minimumFractionDigits 2}}")
- .expected( "no-equal 42.00")
- .errors("missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {:placeholder option=}}")
- .expected("bad {:placeholder}")
- .errors("empty-token", "missing-func")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {:placeholder option value}}")
- .expected("bad {:placeholder}")
- .errors("missing-char", "missing-func")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {:placeholder option}}")
- .expected("bad {:placeholder}")
- .errors("missing-char", "empty-token", "missing-func")
- .build(),
- new TestCase.Builder()
- .pattern("{bad {$placeholder option}}")
- .expected("bad {$placeholder}")
- .errors("extra-content", "extra-content", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("{no {$placeholder end}")
- .expected("no {$placeholder}")
- .errors("extra-content", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("match {} when * {foo}")
- .expected("foo")
- .errors("parse-error", "bad-selector", "junk-element")
- .build(),
- new TestCase.Builder()
- .pattern("match {+foo} when * {foo}")
- .expected("foo")
- .errors("bad-selector")
- .build(),
- new TestCase.Builder()
- .pattern("match {(foo)} when*{foo}")
- .expected("foo")
- .errors("missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("match when * {foo}")
- .expected("foo")
- .errors("empty-token")
- .build(),
- new TestCase.Builder()
- .pattern("match {(x)} when * foo")
- .expected("")
- .errors("key-mismatch", "missing-char")
- .build(),
- new TestCase.Builder()
- .pattern("match {(x)} when * {foo} extra")
- .expected("foo")
- .errors("extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("match (x) when * {foo}")
- .expected("")
- .errors("empty-token", "extra-content")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo} when * * {foo}")
- .expected("foo")
- .errors("key-mismatch", "missing-var")
- .build(),
- new TestCase.Builder()
- .pattern("match {$foo} {$bar} when * {foo}")
- .expected("foo")
- .errors("key-mismatch", "missing-var", "missing-var")
- .build()
- };
-
- @Test
- public void test() {
- int ignoreCount = 0;
- for (TestCase testCase : TEST_CASES) {
- if (testCase.ignore)
- ignoreCount++;
- TestUtils.runTestCase(testCase);
- }
- System.out.printf("Executed %d test cases out of %d, skipped %d%n",
- TEST_CASES.length - ignoreCount, TEST_CASES.length, ignoreCount);
- }
-}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FunctionsTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FunctionsTest.java
new file mode 100644
index 000000000..6a3e15df0
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/FunctionsTest.java
@@ -0,0 +1,35 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.google.gson.reflect.TypeToken;
+import com.ibm.icu.dev.test.CoreTestFmwk;
+
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class FunctionsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "test-functions.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Type mapType = new TypeToken<Map<String, Unit[]>>(){/* not code */}.getType();
+ Map<String, Unit[]> unitList = TestUtils.GSON.fromJson(reader, mapType);
+ for (Entry<String, Unit[]> testGroup : unitList.entrySet()) {
+ for (Unit unit : testGroup.getValue()) {
+ TestUtils.runTestCase(unit);
+ }
+ }
+ }
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/IcuFunctionsTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/IcuFunctionsTest.java
new file mode 100644
index 000000000..7930e6ccb
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/IcuFunctionsTest.java
@@ -0,0 +1,46 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.Date;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.google.gson.reflect.TypeToken;
+import com.ibm.icu.dev.test.CoreTestFmwk;
+
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class IcuFunctionsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "icu-test-functions.json";
+
+ // Some default parameters for all messages, to use if the message does not have its own
+ private static final Map<String, Object> ARGS =
+ Args.of(
+ "user", "John",
+ "exp", new Date(2024 - 1900, 7, 3, 21, 43, 57), // Aug 3, 2024, at 9:43:57 pm
+ "tsOver", "full");
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Type mapType =
+ new TypeToken<Map<String, Unit[]>>() {
+ /* not code */
+ }.getType();
+ Map<String, Unit[]> unitList = TestUtils.GSON.fromJson(reader, mapType);
+ for (Entry<String, Unit[]> testGroup : unitList.entrySet()) {
+ for (Unit unit : testGroup.getValue()) {
+ TestUtils.runTestCase(unit, ARGS);
+ }
+ }
+ }
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/MessageFormat2Test.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/MessageFormat2Test.java
index 9137b0c31..33005b33c 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/MessageFormat2Test.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/MessageFormat2Test.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
@@ -17,8 +17,8 @@ import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.message2.FormattedPlaceholder;
import com.ibm.icu.message2.Formatter;
import com.ibm.icu.message2.FormatterFactory;
+import com.ibm.icu.message2.MFFunctionRegistry;
import com.ibm.icu.message2.MessageFormatter;
-import com.ibm.icu.message2.Mf2FunctionRegistry;
import com.ibm.icu.number.FormattedNumber;
import com.ibm.icu.number.LocalizedNumberFormatter;
import com.ibm.icu.number.NumberFormatter;
@@ -34,13 +34,13 @@ import com.ibm.icu.util.MeasureUnit;
* <p>It does not include all the tests for edge cases and error handling, only the ones that show real functionality.</p>
*/
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void test() {
MessageFormatter mf2 = MessageFormatter.builder()
- .setPattern("{Hello World!}").build();
+ .setPattern("Hello World!").build();
assertEquals("simple message",
"Hello World!",
mf2.formatToString(Args.NONE));
@@ -50,32 +50,39 @@ public class MessageFormat2Test extends CoreTestFmwk {
public void testDateFormat() {
Date expiration = new Date(2022 - 1900, java.util.Calendar.OCTOBER, 27);
MessageFormatter mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime skeleton=yMMMdE}!}")
+ .setPattern("Your card expires on {$exp :datetime icu:skeleton=yMMMdE}!")
.build();
assertEquals("date format",
"Your card expires on Thu, Oct 27, 2022!",
mf2.formatToString(Args.of("exp", expiration)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime datestyle=full}!}")
+ .setPattern("Your card expires on {$exp :datetime year=numeric month=short day=numeric weekday=short}!")
+ .build();
+ assertEquals("date format",
+ "Your card expires on Thu, Oct 27, 2022!",
+ mf2.formatToString(Args.of("exp", expiration)));
+
+ mf2 = MessageFormatter.builder()
+ .setPattern("Your card expires on {$exp :datetime dateStyle=full}!")
.build();
assertEquals("date format",
"Your card expires on Thursday, October 27, 2022!",
mf2.formatToString(Args.of("exp", expiration)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime datestyle=long}!}")
+ .setPattern("Your card expires on {$exp :datetime dateStyle=long}!")
.build();
assertEquals("date format",
"Your card expires on October 27, 2022!",
mf2.formatToString(Args.of("exp", expiration)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime datestyle=medium}!}")
+ .setPattern("Your card expires on {$exp :date style=medium}!")
.build();
assertEquals("date format",
"Your card expires on Oct 27, 2022!",
mf2.formatToString(Args.of("exp", expiration)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime datestyle=short}!}")
+ .setPattern("Your card expires on {$exp :datetime dateStyle=short}!")
.build();
assertEquals("date format",
"Your card expires on 10/27/22!",
@@ -83,7 +90,7 @@ public class MessageFormat2Test extends CoreTestFmwk {
Calendar cal = new GregorianCalendar(2022, Calendar.OCTOBER, 27);
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime skeleton=yMMMdE}!}")
+ .setPattern("Your card expires on {$exp :datetime icu:skeleton=yMMMdE}!")
.build();
assertEquals("date format",
"Your card expires on Thu, Oct 27, 2022!",
@@ -91,7 +98,7 @@ public class MessageFormat2Test extends CoreTestFmwk {
// Implied function based on type of the object to format
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp}!}")
+ .setPattern("Your card expires on {$exp}!")
.build();
assertEquals("date format",
"Your card expires on 10/27/22, 12:00\u202FAM!",
@@ -105,14 +112,14 @@ public class MessageFormat2Test extends CoreTestFmwk {
// But we test to see if it works because it extends Calendar, which is registered.
BuddhistCalendar calNotRegistered = new BuddhistCalendar(2022, Calendar.OCTOBER, 27);
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime skeleton=yMMMdE}!}")
+ .setPattern("Your card expires on {$exp :datetime icu:skeleton=yMMMdE}!")
.build();
assertEquals("date format",
"Your card expires on Wed, Oct 27, 1479!",
mf2.formatToString(Args.of("exp", calNotRegistered)));
mf2 = MessageFormatter.builder()
- .setPattern("{Your card expires on {$exp :datetime skeleton=yMMMdE}!}")
+ .setPattern("Your card expires on {$exp :datetime icu:skeleton=yMMMdE}!")
.build();
assertEquals("date format",
"Your card expires on Wed, Oct 27, 1479!",
@@ -122,9 +129,9 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPlural() {
String message = ""
- + "match {$count :plural}\n"
- + " when 1 {You have one notification.}\n"
- + " when * {You have {$count} notifications.}\n";
+ + ".match {$count :number}\n"
+ + " 1 {{You have one notification.}}\n"
+ + " * {{You have {$count} notifications.}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
@@ -140,14 +147,14 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPluralOrdinal() {
String message = ""
- + "match {$place :selectordinal}\n"
- + " when 1 {You got the gold medal}\n"
- + " when 2 {You got the silver medal}\n"
- + " when 3 {You got the bronze medal}\n"
- + " when one {You got in the {$place}st place}\n"
- + " when two {You got in the {$place}nd place}\n"
- + " when few {You got in the {$place}rd place}\n"
- + " when * {You got in the {$place}th place}\n"
+ + ".match {$place :number select=ordinal}\n"
+ + " 1 {{You got the gold medal}}\n"
+ + " 2 {{You got the silver medal}}\n"
+ + " 3 {{You got the bronze medal}}\n"
+ + " one {{You got in the {$place}st place}}\n"
+ + " two {{You got in the {$place}nd place}}\n"
+ + " few {{You got in the {$place}rd place}}\n"
+ + " * {{You got in the {$place}th place}}\n"
;
MessageFormatter mf2 = MessageFormatter.builder()
@@ -185,10 +192,10 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Override
public Formatter createFormatter(Locale locale, Map<String, Object> fixedOptions) {
// Check that the formatter can only see the fixed options
- Assert.assertTrue(fixedOptions.containsKey("skeleton"));
- Assert.assertFalse(fixedOptions.containsKey("unit"));
+ Assert.assertTrue(fixedOptions.containsKey("icu:skeleton"));
+ Assert.assertFalse(fixedOptions.containsKey("icu:unit"));
- Object valSkeleton = fixedOptions.get("skeleton");
+ Object valSkeleton = fixedOptions.get("icu:skeleton");
LocalizedNumberFormatter nf = valSkeleton != null
? NumberFormatter.forSkeleton(valSkeleton.toString()).locale(locale)
: NumberFormatter.withLocale(locale);
@@ -257,12 +264,15 @@ public class MessageFormat2Test extends CoreTestFmwk {
}
@Test
+ // Due to the many changes in how the variable resolution is done,
+ // it is now not possible to caching the formatters.
+ // Might be able to bring it back, but for now it is off.
public void testFormatterIsCreatedOnce() {
TemperatureFormatterFactory counter = new TemperatureFormatterFactory();
- Mf2FunctionRegistry registry = Mf2FunctionRegistry.builder()
+ MFFunctionRegistry registry = MFFunctionRegistry.builder()
.setFormatter("temp", counter)
.build();
- String message = "{Testing {$count :temp unit=$unit skeleton=(.00/w)}.}";
+ String message = "Testing {$count :temp unit=$unit icu:skeleton=|.00/w|}.";
MessageFormatter mf2 = MessageFormatter.builder()
.setFunctionRegistry(registry)
.setPattern(message)
@@ -280,10 +290,10 @@ public class MessageFormat2Test extends CoreTestFmwk {
// Check that the constructor was only called once,
// and the formatter as many times as the public call to format.
- assertEquals("cached formatter", 1, counter.constructCount);
+ assertEquals("cached formatter", 20, counter.constructCount);
assertEquals("cached formatter", maxCount * 2, counter.formatCount);
- assertEquals("cached formatter", 1, counter.fFormatterCount);
- assertEquals("cached formatter", 1, counter.cFormatterCount);
+ assertEquals("cached formatter", 10, counter.fFormatterCount);
+ assertEquals("cached formatter", 10, counter.cFormatterCount);
// Check that the skeleton is respected
assertEquals("cached formatter",
@@ -299,7 +309,7 @@ public class MessageFormat2Test extends CoreTestFmwk {
"Testing 12.54°F.",
mf2.formatToString(Args.of("count", 12.54321, "unit", "F")));
- message = "{Testing {$count :temp unit=$unit skeleton=(.0/w)}.}";
+ message = "Testing {$count :temp unit=$unit icu:skeleton=|.0/w|}.";
mf2 = MessageFormatter.builder()
.setFunctionRegistry(registry)
.setPattern(message)
@@ -322,11 +332,11 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPluralWithOffset() {
String message = ""
- + "match {$count :plural offset=2}\n"
- + " when 1 {Anna}\n"
- + " when 2 {Anna and Bob}\n"
- + " when one {Anna, Bob, and {$count :number offset=2} other guest}\n"
- + " when * {Anna, Bob, and {$count :number offset=2} other guests}\n";
+ + ".match {$count :number icu:offset=2}\n"
+ + " 1 {{Anna}}\n"
+ + " 2 {{Anna and Bob}}\n"
+ + " one {{Anna, Bob, and {$count :number icu:offset=2} other guest}}\n"
+ + " * {{Anna, Bob, and {$count :number icu:offset=2} other guests}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
.build();
@@ -350,12 +360,12 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPluralWithOffsetAndLocalVar() {
String message = ""
- + "let $foo = {$count :number offset=2}"
- + "match {$foo :plural}\n" // should "inherit" the offset
- + " when 1 {Anna}\n"
- + " when 2 {Anna and Bob}\n"
- + " when one {Anna, Bob, and {$foo} other guest}\n"
- + " when * {Anna, Bob, and {$foo} other guests}\n";
+ + ".local $foo = {$count :number icu:offset=2}"
+ + ".match {$foo :number}\n" // should "inherit" the offset
+ + " 1 {{Anna}}\n"
+ + " 2 {{Anna and Bob}}\n"
+ + " one {{Anna, Bob, and {$foo} other guest}}\n"
+ + " * {{Anna, Bob, and {$foo} other guests}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
.build();
@@ -379,11 +389,11 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testPluralWithOffsetAndLocalVar2() {
String message = ""
- + "let $foo = {$amount :number skeleton=(.00/w)}\n"
- + "match {$foo :plural}\n" // should "inherit" the offset
- + " when 1 {Last dollar}\n"
- + " when one {{$foo} dollar}\n"
- + " when * {{$foo} dollars}\n";
+ + ".local $foo = {$amount :number icu:skeleton=|.00/w|}\n"
+ + ".match {$foo :number}\n" // should "inherit" the offset
+ + " 1 {{Last dollar}}\n"
+ + " one {{{$foo} dollar}}\n"
+ + " * {{{$foo} dollars}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
.build();
@@ -399,28 +409,49 @@ public class MessageFormat2Test extends CoreTestFmwk {
}
@Test
- public void testLoopOnLocalVars() {
+ public void testPluralWithOffsetAndLocalVar2Options() {
String message = ""
- + "let $foo = {$baz :number}\n"
- + "let $bar = {$foo}\n"
- + "let $baz = {$bar}\n"
- + "{The message uses {$baz} and works}\n";
+ + ".local $foo = {$amount :number minumumFractionalDigits=2}\n"
+ + ".match {$foo :number}\n" // should "inherit" the offset
+ + " 1 {{Last dollar}}\n"
+ + " one {{{$foo} dollar}}\n"
+ + " * {{{$foo} dollars}}\n";
MessageFormatter mf2 = MessageFormatter.builder()
.setPattern(message)
.build();
- assertEquals("test local vars loop",
- "The message uses {$bar} and works",
+ assertEquals("plural with offset",
+ "Last dollar",
mf2.formatToString(Args.of("amount", 1)));
+ assertEquals("plural with offset",
+ "2 dollars",
+ mf2.formatToString(Args.of("amount", 2)));
+ assertEquals("plural with offset",
+ "3 dollars",
+ mf2.formatToString(Args.of("amount", 3)));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testLoopOnLocalVars() {
+ String message = ""
+ + ".local $foo = {$baz :number}\n"
+ + ".local $bar = {$foo}\n"
+ + ".local $baz = {$bar}\n"
+ + "{{The message uses {$baz} and works}}\n";
+ // Circular references on variables is now detected.
+ // So we check that this throws (see expected in the @Test above)
+ MessageFormatter.builder()
+ .setPattern(message)
+ .build();
}
@Test
public void testVariableOptionsInSelector() {
String messageVar = ""
- + "match {$count :plural offset=$delta}\n"
- + " when 1 {A}\n"
- + " when 2 {A and B}\n"
- + " when one {A, B, and {$count :number offset=$delta} more character}\n"
- + " when * {A, B, and {$count :number offset=$delta} more characters}\n";
+ + ".match {$count :number icu:offset=$delta}\n"
+ + " 1 {{A}}\n"
+ + " 2 {{A and B}}\n"
+ + " one {{A, B, and {$count :number icu:offset=$delta} more character}}\n"
+ + " * {{A, B, and {$count :number icu:offset=$delta} more characters}}\n";
MessageFormatter mfVar = MessageFormatter.builder()
.setPattern(messageVar)
.build();
@@ -434,10 +465,10 @@ public class MessageFormat2Test extends CoreTestFmwk {
mfVar.formatToString(Args.of("count", 7, "delta", 2)));
String messageVar2 = ""
- + "match {$count :plural offset=$delta}\n"
- + " when 1 {Exactly 1}\n"
- + " when 2 {Exactly 2}\n"
- + " when * {Count = {$count :number offset=$delta} and delta={$delta}.}\n";
+ + ".match {$count :number icu:offset=$delta}\n"
+ + " 1 {{Exactly 1}}\n"
+ + " 2 {{Exactly 2}}\n"
+ + " * {{Count = {$count :number icu:offset=$delta} and delta={$delta}.}}\n";
MessageFormatter mfVar2 = MessageFormatter.builder()
.setPattern(messageVar2)
.build();
@@ -473,12 +504,12 @@ public class MessageFormat2Test extends CoreTestFmwk {
@Test
public void testVariableOptionsInSelectorWithLocalVar() {
String messageFix = ""
- + "let $offCount = {$count :number offset=2}"
- + "match {$offCount :plural}\n"
- + " when 1 {A}\n"
- + " when 2 {A and B}\n"
- + " when one {A, B, and {$offCount} more character}\n"
- + " when * {A, B, and {$offCount} more characters}\n";
+ + ".local $offCount = {$count :number icu:offset=2}"
+ + ".match {$offCount :number}\n"
+ + " 1 {{A}}\n"
+ + " 2 {{A and B}}\n"
+ + " one {{A, B, and {$offCount} more character}}\n"
+ + " * {{A, B, and {$offCount} more characters}}\n";
MessageFormatter mfFix = MessageFormatter.builder()
.setPattern(messageFix)
.build();
@@ -488,12 +519,12 @@ public class MessageFormat2Test extends CoreTestFmwk {
assertEquals("test local vars loop", "A, B, and 5 more characters", mfFix.formatToString(Args.of("count", 7)));
String messageVar = ""
- + "let $offCount = {$count :number offset=$delta}"
- + "match {$offCount :plural}\n"
- + " when 1 {A}\n"
- + " when 2 {A and B}\n"
- + " when one {A, B, and {$offCount} more character}\n"
- + " when * {A, B, and {$offCount} more characters}\n";
+ + ".local $offCount = {$count :number icu:offset=$delta}"
+ + ".match {$offCount :number}\n"
+ + " 1 {{A}}\n"
+ + " 2 {{A and B}}\n"
+ + " one {{A, B, and {$offCount} more character}}\n"
+ + " * {{A, B, and {$offCount} more characters}}\n";
MessageFormatter mfVar = MessageFormatter.builder()
.setPattern(messageVar)
.build();
@@ -507,11 +538,11 @@ public class MessageFormat2Test extends CoreTestFmwk {
mfVar.formatToString(Args.of("count", 7, "delta", 2)));
String messageVar2 = ""
- + "let $offCount = {$count :number offset=$delta}"
- + "match {$offCount :plural}\n"
- + " when 1 {Exactly 1}\n"
- + " when 2 {Exactly 2}\n"
- + " when * {Count = {$count}, OffCount = {$offCount}, and delta={$delta}.}\n";
+ + ".local $offCount = {$count :number icu:offset=$delta}"
+ + ".match {$offCount :number}\n"
+ + " 1 {{Exactly 1}}\n"
+ + " 2 {{Exactly 2}}\n"
+ + " * {{Count = {$count}, OffCount = {$offCount}, and delta={$delta}.}}\n";
MessageFormatter mfVar2 = MessageFormatter.builder()
.setPattern(messageVar2)
.build();
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Mf2IcuTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Mf2IcuTest.java
index 8742fed04..b72f4db0a 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Mf2IcuTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Mf2IcuTest.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
@@ -23,13 +23,13 @@ import com.ibm.icu.util.GregorianCalendar;
* <p>It does not include all the tests for edge cases and error handling, only the ones that show real functionality.</p>
*/
@RunWith(JUnit4.class)
-@SuppressWarnings("javadoc")
+@SuppressWarnings({"static-method", "javadoc"})
public class Mf2IcuTest extends CoreTestFmwk {
@Test
public void testSample() {
MessageFormatter form = MessageFormatter.builder()
- .setPattern("{There are {$count} files on {$where}}")
+ .setPattern("There are {$count} files on {$where}")
.build();
assertEquals("format", "There are abc files on def",
form.formatToString(Args.of("count", "abc", "where", "def")));
@@ -37,13 +37,15 @@ public class Mf2IcuTest extends CoreTestFmwk {
@Test
public void testStaticFormat() {
- Map<String, Object> arguments = Args.of("planet", new Integer(7), "when", new Date(871068000000L), "what",
- "a disturbance in the Force");
+ Map<String, Object> arguments = Args.of(
+ "planet", 7,
+ "when", new Date(871068000000L),
+ "what", "a disturbance in the Force");
assertEquals("format", "At 12:20:00\u202FPM on Aug 8, 1997, there was a disturbance in the Force on planet 7.",
MessageFormatter.builder()
- .setPattern("{At {$when :datetime timestyle=default} on {$when :datetime datestyle=default}, "
- + "there was {$what} on planet {$planet :number kind=integer}.}")
+ .setPattern("At {$when :datetime timeStyle=medium} on {$when :datetime dateStyle=medium}, "
+ + "there was {$what} on planet {$planet :number kind=integer}.")
.build()
.formatToString(arguments));
}
@@ -52,12 +54,12 @@ public class Mf2IcuTest extends CoreTestFmwk {
@Test
public void testSimpleFormat() {
- Map<String, Object> testArgs1 = Args.of("fileCount", new Integer(0), "diskName", "MyDisk");
- Map<String, Object> testArgs2 = Args.of("fileCount", new Integer(1), "diskName", "MyDisk");
- Map<String, Object> testArgs3 = Args.of("fileCount", new Integer(12), "diskName", "MyDisk");
+ Map<String, Object> testArgs1 = Args.of("fileCount", 0, "diskName", "MyDisk");
+ Map<String, Object> testArgs2 = Args.of("fileCount", 1, "diskName", "MyDisk");
+ Map<String, Object> testArgs3 = Args.of("fileCount", 12, "diskName", "MyDisk");
MessageFormatter form = MessageFormatter.builder()
- .setPattern("{The disk \"{$diskName}\" contains {$fileCount} file(s).}")
+ .setPattern("The disk \"{$diskName}\" contains {$fileCount} file(s).")
.build();
assertEquals("format", "The disk \"MyDisk\" contains 0 file(s).", form.formatToString(testArgs1));
@@ -72,9 +74,9 @@ public class Mf2IcuTest extends CoreTestFmwk {
@Test
public void testSelectFormatToPattern() {
String pattern = ""
- + "match {$userGender :select}\n"
- + " when female {{$userName} est all\u00E9e \u00E0 Paris.}"
- + " when * {{$userName} est all\u00E9 \u00E0 Paris.}"
+ + ".match {$userGender :string}\n"
+ + " female {{{$userName} est all\u00E9e \u00E0 Paris.}}"
+ + " * {{{$userName} est all\u00E9 \u00E0 Paris.}}"
;
MessageFormatter mf = MessageFormatter.builder()
@@ -104,18 +106,32 @@ public class Mf2IcuTest extends CoreTestFmwk {
public void testMessageFormatDateTimeSkeleton() {
Date date = new GregorianCalendar(2021, Calendar.NOVEMBER, 23, 16, 42, 55).getTime();
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime skeleton=MMMMd}}",
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime icu:skeleton=MMMMd}",
Locale.forLanguageTag("en"), "November 23");
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime skeleton=yMMMMdjm}}",
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime icu:skeleton=yMMMMdjm}",
Locale.forLanguageTag("en"), "November 23, 2021 at 4:42\u202FPM");
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime skeleton=( yMMMMd )}}",
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime icu:skeleton=|yMMMMd|}",
Locale.forLanguageTag("en"), "November 23, 2021");
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime skeleton=yMMMMd}}",
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime icu:skeleton=yMMMMd}",
Locale.forLanguageTag("fr"), "23 novembre 2021");
- doTheRealDateTimeSkeletonTesting(date, "{Expiration: {$when :datetime skeleton=yMMM}!}",
+ doTheRealDateTimeSkeletonTesting(date, "Expiration: {$when :datetime icu:skeleton=yMMM}!",
+ Locale.forLanguageTag("en"), "Expiration: Nov 2021!");
+ }
+
+ @Test
+ public void testMessageFormatDateTimeOptions() {
+ Date date = new GregorianCalendar(2021, Calendar.NOVEMBER, 23, 16, 42, 55).getTime();
+
+ doTheRealDateTimeSkeletonTesting(date, "{$when :date month=long day=numeric}",
+ Locale.forLanguageTag("en"), "November 23");
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime year=numeric month=long day=numeric hour=numeric minute=numeric}",
+ Locale.forLanguageTag("en"), "November 23, 2021 at 4:42\u202FPM");
+ doTheRealDateTimeSkeletonTesting(date, "{$when :date year=numeric month=short day=numeric}",
+ Locale.forLanguageTag("en"), "Nov 23, 2021");
+ doTheRealDateTimeSkeletonTesting(date, "{$when :datetime year=numeric month=long day=numeric}",
+ Locale.forLanguageTag("fr"), "23 novembre 2021");
+ doTheRealDateTimeSkeletonTesting(date, "Expiration: {$when :datetime year=numeric month=short}!",
Locale.forLanguageTag("en"), "Expiration: Nov 2021!");
- doTheRealDateTimeSkeletonTesting(date, "{{$when :datetime pattern=('::'yMMMMd)}}",
- Locale.forLanguageTag("en"), "::2021November23"); // pattern
}
@Test
@@ -129,7 +145,7 @@ public class Mf2IcuTest extends CoreTestFmwk {
assertEquals("old icu test", "Hello John, today is December 23, 2022.", mf1.format(goodArg));
MessageFormatter mf2 = MessageFormatter.builder()
- .setPattern("{Hello {$user}, today is {$today :datetime datestyle=long}.}")
+ .setPattern("Hello {$user}, today is {$today :datetime dateStyle=long}.")
.build();
assertEquals("old icu test", "Hello {$user}, today is {$today}.", mf2.formatToString(badArg));
assertEquals("old icu test", "Hello John, today is December 23, 2022.", mf2.formatToString(goodArg));
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/ParserSmokeTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/ParserSmokeTest.java
new file mode 100644
index 000000000..7b2a3b988
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/ParserSmokeTest.java
@@ -0,0 +1,44 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.google.gson.reflect.TypeToken;
+import com.ibm.icu.dev.test.CoreTestFmwk;
+import com.ibm.icu.message2.MFParser;
+
+/*
+ * A list of tests for the parser.
+ */
+@RunWith(JUnit4.class)
+@SuppressWarnings({"static-method", "javadoc"})
+public class ParserSmokeTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "icu-parser-tests.json";
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testNullInput() throws Exception {
+ MFParser.parse(null);
+ }
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ Type mapType = new TypeToken<Map<String, String[]>>(){/* not code */}.getType();
+ Map<String, String[]> unitList = TestUtils.GSON.fromJson(reader, mapType);
+ for (Entry<String, String[]> testGroup : unitList.entrySet()) {
+ for (String unit : testGroup.getValue()) {
+ MFParser.parse(unit);
+ }
+ }
+ }
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SelectorsWithVariousArgumentsTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SelectorsWithVariousArgumentsTest.java
new file mode 100644
index 000000000..8762f4757
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SelectorsWithVariousArgumentsTest.java
@@ -0,0 +1,39 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.io.Reader;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.ibm.icu.dev.test.CoreTestFmwk;
+
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class SelectorsWithVariousArgumentsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "icu-test-selectors.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ TestWithVariations[] unitList =
+ TestUtils.GSON.fromJson(reader, TestWithVariations[].class);
+ for (TestWithVariations testWithVar : unitList) {
+ Unit sharedUnit = testWithVar.shared;
+ for (Unit variation : testWithVar.variations) {
+ Unit mergedUnit = sharedUnit.merge(variation);
+ TestUtils.runTestCase(mergedUnit);
+ }
+ }
+ }
+ }
+
+ class TestWithVariations {
+ String comment;
+ Unit shared;
+ Unit[] variations;
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SerializationTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SerializationTest.java
new file mode 100644
index 000000000..8c55c195d
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SerializationTest.java
@@ -0,0 +1,106 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.ibm.icu.dev.test.CoreTestFmwk;
+import com.ibm.icu.message2.MFDataModel.Message;
+import com.ibm.icu.message2.MFParser;
+import com.ibm.icu.message2.MFSerializer;
+
+@RunWith(JUnit4.class)
+@SuppressWarnings({"static-method", "javadoc"})
+public class SerializationTest extends CoreTestFmwk {
+
+ @Test
+ public void test() throws Exception {
+ String[] testStrings = {
+ "Hello {$count &something}",
+ "Hello world!",
+ "{{.Hello world!}}",
+ "Hello {userName}",
+ "Hello {$userName}",
+ "Hello {|-12345.12+e10|}",
+ "Hello {$count :something max=10 min=1.1416 opt1=someString opt2=|a b \\| c| @a1 @a2=|| @a3=|str|}",
+ "Hello {$count &something}",
+ ".input {$a :number} {{Hello world!}}",
+ ".local $b = {$a :number} {{Hello world!}}",
+ ".local $c = {1 :number} {{Hello {userName}}}",
+ ".match {$count :number}\n"
+ + "one {{You deleted {$count} file}}\n"
+ + "* {{You deleted {$count} files}}",
+ ".match {$count :number}\n"
+ + "one {{You deleted {$count} file}}\n"
+ + "* {{You deleted {$count} files}}",
+ ".match {$place :number select=ordinal}\n"
+ + "* {{You fininshed in the {$place}th place}}\n"
+ + "two {{You fininshed in the {$place}nd place}}\n"
+ + "one {{You fininshed in the {$place}st place}}\n"
+ + "1 {{You got the gold medal}}\n"
+ + "2 {{You got the silver medal}}\n"
+ + "3 {{You got the bronze medal}}\n"
+ + "few {{You fininshed in the {$place}rd place}}\n",
+ ".match {$fileCount :number} {$folderCount :number}\n"
+ + "* * {{You deleted {$fileCount} files in {$folderCount} folders}}\n"
+ + "one one {{You deleted {$fileCount} file in {$folderCount} folder}}\n"
+ + "one * {{You deleted {$fileCount} file in {$folderCount} folders}}\n"
+ + "* one {{You deleted {$fileCount} files in {$folderCount} folder}}\n",
+ "{$count :number minimumFractionDigits=2} dollars",
+ "{$count :number minimumFractionDigits=3} dollars",
+ "{|3.1415| :number minimumFractionDigits=5} dollars",
+ "{|3.1415| :number maximumFractionDigits=2} dollars",
+ ".local $c = {$count :number minimumFractionDigits=2}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".local $c = {$count} .foobar |asd asd asd asd| {$bar1} {$bar2} {$bar3} .local $b = {$bar} {{Foo bar}}\n",
+ ".local $c = {1 :number minimumFractionDigits=2}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".local $c = {1 :number}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".local $c = {1.25 :number}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".local $c = {1.25 :number maximumFractionDigits=0}\n"
+ + ".match {$c}\n"
+ + "one {{{$c} dollar}}\n"
+ + "* {{{$c} dollars}}",
+ ".match {$count :number} 1 {{one}} * {{other}}",
+ };
+ for (String test : testStrings) {
+ checkOneString(test);
+ }
+ }
+
+ void checkOneString(String pattern) throws Exception {
+ Message dm = MFParser.parse(pattern);
+ String parsed = MFSerializer.dataModelToString(dm);
+
+ /* This is a quick test.
+ * A better idea would be to parse the original string,
+ * serialize the data model, then parse again in a new data model.
+ * That would give us two data models to compare, where
+ * small differences in spacing or quoting does not matter.
+ * But we don't have (yet) an implementation of `equals` on of the data model classes.
+ */
+ pattern =
+ pattern.replace('\n', ' ')
+ .replaceAll(" +", " ")
+ // Naive normalization for `|1234.56|` to `1234.56`
+ .replaceAll("\\|([\\d\\.]+)\\|", "$1")
+ // Naive normalization for `|asBaC12|` to `asBaC12`
+ .replaceAll("\\|([a-zA-Z\\d]+)\\|", "$1")
+ .replaceAll(" \\}", "}")
+ .trim();
+ assertEquals("Serialization different from to the initial source", pattern, parsed);
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SyntaxErrorsTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SyntaxErrorsTest.java
new file mode 100644
index 000000000..30ad47f18
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/SyntaxErrorsTest.java
@@ -0,0 +1,34 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.io.Reader;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import com.ibm.icu.dev.test.CoreTestFmwk;
+import com.ibm.icu.message2.MessageFormatter;
+
+@SuppressWarnings({"static-method", "javadoc"})
+@RunWith(JUnit4.class)
+public class SyntaxErrorsTest extends CoreTestFmwk {
+ private static final String JSON_FILE = "syntax-errors.json";
+
+ @Test
+ public void test() throws Exception {
+ try (Reader reader = TestUtils.jsonReader(JSON_FILE)) {
+ String[] srcList = TestUtils.GSON.fromJson(reader, String[].class);
+ for (String source : srcList) {
+ try {
+ MessageFormatter.builder().setPattern(source).build();
+ fail("Pattern expected to fail, but didn't: '" + source + "'");
+ } catch (Exception e) {
+ // If we get here it is fine
+ }
+ }
+ }
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestCase.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestCase.java
index dfaaffd3e..3225d5d44 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestCase.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestCase.java
@@ -1,5 +1,5 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
@@ -13,93 +13,94 @@ import java.util.StringJoiner;
/** Utility class encapsulating what we need for a simple test. */
class TestCase {
- final String message;
- final Locale locale;
- final Map<String, Object> arguments;
- final String expected;
- final boolean ignore;
- final String ignoreReason;
- final List<String> errors;
+ final String message;
+ final Locale locale;
+ final Map<String, Object> arguments;
+ final String expected;
+ final boolean ignore;
+ final String ignoreReason;
+ final List<String> errors;
- @Override
- public String toString() {
- StringJoiner result = new StringJoiner(",\n ", "TestCase {\n ", "\n}");
- result.add("message: " + message + "'");
- result.add("locale: '" + locale.toLanguageTag() + "'");
- result.add("arguments: " + arguments);
- result.add("expected: '" + expected + "'");
- result.add("ignore: " + ignore);
- result.add("ignoreReason: '" + ignoreReason + "'");
- result.add("errors: " + errors);
- return result.toString();
- }
+ @Override
+ public String toString() {
+ StringJoiner result = new StringJoiner(",\n ", "TestCase {\n ", "\n}");
+ result.add("message: " + message + "'");
+ result.add("locale: '" + locale.toLanguageTag() + "'");
+ result.add("arguments: " + arguments);
+ result.add("expected: '" + expected + "'");
+ result.add("ignore: " + ignore);
+ result.add("ignoreReason: '" + ignoreReason + "'");
+ result.add("errors: " + errors);
+ return result.toString();
+ }
- private TestCase(TestCase.Builder builder) {
- this.ignore = builder.ignore;
- this.message = builder.pattern == null ? "" : builder.pattern;
- this.locale = (builder.localeId == null)
- ? Locale.getDefault(Category.FORMAT)
- : Locale.forLanguageTag(builder.localeId);
- this.arguments = builder.arguments == null ? Args.NONE : builder.arguments;
- this.expected = builder.expected == null ? "" : builder.expected;
- this.errors = builder.errors == null ? new ArrayList<String>() : builder.errors;
- this.ignoreReason = builder.ignoreReason == null ? "" : builder.ignoreReason;
- }
+ private TestCase(TestCase.Builder builder) {
+ this.ignore = builder.ignore;
+ this.message = builder.pattern == null ? "" : builder.pattern;
+ this.locale = (builder.localeId == null)
+ ? Locale.getDefault(Category.FORMAT)
+ : Locale.forLanguageTag(builder.localeId);
+ this.arguments = builder.arguments == null ? Args.NONE : builder.arguments;
+ this.expected = builder.expected == null ? "" : builder.expected;
+ this.errors = builder.errors == null ? new ArrayList<>() : builder.errors;
+ this.ignoreReason = builder.ignoreReason == null ? "" : builder.ignoreReason;
+ }
- static class Builder {
- private String pattern;
- private String localeId;
- private Map<String, Object> arguments;
- private String expected;
- private boolean ignore = false;
- private String ignoreReason;
- private List<String> errors;
+ static class Builder {
+ private String pattern;
+ private String localeId;
+ private Map<String, Object> arguments;
+ private String expected;
+ private boolean ignore = false;
+ private String ignoreReason;
+ private List<String> errors;
- public TestCase build() {
- return new TestCase(this);
- }
+ public TestCase build() {
+ return new TestCase(this);
+ }
- public TestCase.Builder pattern(String pattern) {
- this.pattern = pattern;
- return this;
- }
+ public TestCase.Builder pattern(String pattern) {
+ this.pattern = pattern;
+ return this;
+ }
- public TestCase.Builder patternJs(String patternJs) {
- // Ignore the JavaScript stuff
- return this;
- }
+ @SuppressWarnings("unused")
+ public TestCase.Builder patternJs(String patternJs) {
+ // Ignore the JavaScript stuff
+ return this;
+ }
- public TestCase.Builder arguments(Map<String, Object> arguments) {
- this.arguments = arguments;
- return this;
- }
+ public TestCase.Builder arguments(Map<String, Object> arguments) {
+ this.arguments = arguments;
+ return this;
+ }
- public TestCase.Builder expected(String expected) {
- this.expected = expected;
- return this;
- }
+ public TestCase.Builder expected(String expected) {
+ this.expected = expected;
+ return this;
+ }
- public TestCase.Builder errors(String ... errors) {
- this.errors = new ArrayList<>();
- this.errors.addAll(Arrays.asList(errors));
- return this;
- }
+ public TestCase.Builder errors(String... errors) {
+ this.errors = new ArrayList<>();
+ this.errors.addAll(Arrays.asList(errors));
+ return this;
+ }
- public TestCase.Builder locale(String localeId) {
- this.localeId = localeId;
- return this;
- }
+ public TestCase.Builder locale(String localeId) {
+ this.localeId = localeId;
+ return this;
+ }
- public TestCase.Builder ignore() {
- this.ignore = true;
- this.ignoreReason = "";
- return this;
- }
+ public TestCase.Builder ignore() {
+ this.ignore = true;
+ this.ignoreReason = "";
+ return this;
+ }
- public TestCase.Builder ignore(String reason) {
- this.ignore = true;
- this.ignoreReason = reason;
- return this;
- }
+ public TestCase.Builder ignore(String reason) {
+ this.ignore = true;
+ this.ignoreReason = reason;
+ return this;
}
- } \ No newline at end of file
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestUtils.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestUtils.java
index 087e5141b..e0e4c67ea 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestUtils.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/TestUtils.java
@@ -1,25 +1,44 @@
// © 2022 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
+// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test.message2;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Locale;
+import java.util.Map;
+
import org.junit.Ignore;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.ibm.icu.message2.MFFunctionRegistry;
import com.ibm.icu.message2.MessageFormatter;
-import com.ibm.icu.message2.Mf2FunctionRegistry;
-@Ignore("Utility class, has no test methods.")
/** Utility class, has no test methods. */
+@Ignore("Utility class, has no test methods.")
public class TestUtils {
+ static final Gson GSON = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
+
+ // ======= Legacy TestCase utilities, no json-compatible ========
static void runTestCase(TestCase testCase) {
runTestCase(null, testCase);
}
- static void runTestCase(Mf2FunctionRegistry customFunctionsRegistry, TestCase testCase) {
+ static void runTestCase(MFFunctionRegistry customFunctionsRegistry, TestCase testCase) {
if (testCase.ignore) {
return;
}
@@ -52,4 +71,69 @@ public class TestUtils {
private static String reportCase(TestCase testCase) {
return testCase.toString();
}
+
+ // ======= Same functionality with Unit, usable with JSON ========
+
+ static boolean expectsErrors(Unit unit) {
+ return unit.errors != null && !unit.errors.isEmpty();
+ }
+
+ static void runTestCase(Unit unit) {
+ runTestCase(unit, null);
+ }
+
+ static void runTestCase(Unit unit, Map<String, Object> params) {
+ if (unit.ignore != null) {
+ return;
+ }
+
+ StringBuilder pattern = new StringBuilder();
+ if (unit.srcs != null) {
+ for (String src : unit.srcs) {
+ pattern.append(src);
+ }
+ } else if (unit.src != null) {
+ pattern.append(unit.src);
+ }
+
+ // We can call the "complete" constructor with null values, but we want to test that
+ // all constructors work properly.
+ MessageFormatter.Builder mfBuilder =
+ MessageFormatter.builder().setPattern(pattern.toString());
+ if (unit.locale != null && !unit.locale.isEmpty()) {
+ mfBuilder.setLocale(Locale.forLanguageTag(unit.locale));
+ } else {
+ mfBuilder.setLocale(Locale.US);
+ }
+
+ try {
+ MessageFormatter mf = mfBuilder.build();
+ if (unit.params != null) {
+ params = unit.params;
+ }
+ String result = mf.formatToString(params);
+ if (expectsErrors(unit)) {
+ fail(reportCase(unit)
+ + "\nExpected error, but it didn't happen.\n"
+ + "Result: '" + result + "'");
+ } else {
+ assertEquals(reportCase(unit), unit.exp, result);
+ }
+ } catch (IllegalArgumentException | NullPointerException e) {
+ if (!expectsErrors(unit)) {
+ fail(reportCase(unit)
+ + "\nNo error was expected here, but it happened:\n"
+ + e.getMessage());
+ }
+ }
+ }
+
+ private static String reportCase(Unit unit) {
+ return unit.toString();
+ }
+
+ static Reader jsonReader(String jsonFileName) {
+ InputStream json = TestUtils.class.getResourceAsStream(jsonFileName);
+ return new BufferedReader(new InputStreamReader(json, StandardCharsets.UTF_8));
+ }
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Unit.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Unit.java
new file mode 100644
index 000000000..facacca75
--- /dev/null
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/message2/Unit.java
@@ -0,0 +1,110 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: https://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.test.message2;
+
+import java.util.List;
+import java.util.Map;
+import java.util.StringJoiner;
+
+// Class corresponding to the json test files.
+// Since this is serialized by Gson, the field names should match the keys in the .json files.
+class Unit {
+ final String src;
+ final List<String> srcs;
+ final String locale;
+ final Map<String, Object> params;
+ final String exp;
+ final String ignore;
+ final List<Error> errors;
+
+ Unit(
+ String src,
+ List<String> srcs,
+ String locale,
+ Map<String, Object> params,
+ String exp,
+ String ignore,
+ List<Error> errors) {
+ this.src = src;
+ this.srcs = srcs;
+ this.locale = locale;
+ this.params = params;
+ this.exp = exp;
+ this.ignore = ignore;
+ this.errors = errors;
+ }
+
+ class Error {
+ final String name;
+ final String type;
+
+ Error(String name, String type) {
+ this.name = name;
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return "Error ["
+ + (name != null ? "name=" + name + ", " : "")
+ + (type != null ? "type=" + type : "")
+ + "]";
+ }
+ }
+
+ @Override
+ public String toString() {
+ StringJoiner result = new StringJoiner(", ", "UnitTest {", "}");
+ result.add("src=" + escapeString(src));
+ if (params != null) {
+ result.add("params=" + params);
+ }
+ if (exp != null) {
+ result.add("exp=" + escapeString(exp));
+ }
+ return result.toString();
+ }
+
+ /**
+ * Creates and returns a new Unit created by merging the current unit with the `other` one.
+ *
+ * <p>Each value in `other`, if not null, will override the corresponding current value.</p>
+ *
+ * @param other the unit to merge into the current one
+ * @return a new unit created by merging `this` unit and `other`
+ */
+ public Unit merge(Unit other) {
+ String newSrc = other.src != null ? other.src : this.src;
+ List<String> newSrcs = other.srcs != null ? other.srcs : this.srcs;
+ String newLocale = other.locale != null ? other.locale : this.locale;
+ Map<String, Object> newParams = other.params != null ? other.params : this.params;
+ String newExp = other.exp != null ? other.exp : this.exp;
+ String newIgnore = other.ignore != null ? other.ignore : this.ignore;
+ List<Error> newErrors = other.errors != null ? other.errors : this.errors;
+ return new Unit(newSrc, newSrcs, newLocale, newParams, newExp, newIgnore, newErrors);
+ }
+
+ private static String escapeString(String str) {
+ if (str == null) {
+ return "null";
+ }
+
+ StringBuilder result = new StringBuilder();
+ str.chars().forEach(c -> {
+ switch (c) {
+ case '\\': result.append("\\\\"); break;
+ case '\t': result.append("\\t"); break;
+ case '\n': result.append("\\n"); break;
+ case '\r': result.append("\\r"); break;
+ default:
+ if (c < 0x0020 || (c >= 0x3000 && c <= 3020)) {
+ result.append(String.format("\\u%04X", c));
+ } else {
+ result.append((char) c);
+ }
+ }
+ });
+ return "\"" + result.toString() + "\"";
+ }
+}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntHashtable.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntHashtable.java
index 63d90efb4..c866c3221 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntHashtable.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntHashtable.java
@@ -24,14 +24,14 @@ public class IntHashtable {
public void put(int key, int value) {
if (value == defaultValue) {
- table.remove(new Integer(key));
+ table.remove(key);
} else {
- table.put(new Integer(key), new Integer(value));
+ table.put(key, value);
}
}
public int get(int key) {
- Integer value = table.get(new Integer(key));
+ Integer value = table.get(key);
if (value == null) return defaultValue;
return value.intValue();
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
index dc8f67803..006b3f5f0 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
@@ -24,14 +24,14 @@ public class IntStringHashtable {
public void put(int key, String value) {
if (value == defaultValue) {
- table.remove(new Integer(key));
+ table.remove(key);
} else {
- table.put(new Integer(key), value);
+ table.put(key, value);
}
}
public String get(int key) {
- String value = table.get(new Integer(key));
+ String value = table.get(key);
if (value == null) return defaultValue;
return value;
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/LongHashtable.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/LongHashtable.java
index 9ccfacb4d..ea533d3d9 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/LongHashtable.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/normalizer/LongHashtable.java
@@ -23,14 +23,14 @@ public class LongHashtable {
public void put(long key, int value) {
if (value == defaultValue) {
- table.remove(new Long(key));
+ table.remove(key);
} else {
- table.put(new Long(key), new Integer(value));
+ table.put(key, value);
}
}
public int get(long key) {
- Integer value = table.get(new Long(key));
+ Integer value = table.get(key);
if (value == null) return defaultValue;
return value.intValue();
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
index 8064bf841..3fdd1449d 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
@@ -485,4 +485,35 @@ public class RBBIAPITest extends CoreTestFmwk {
bi.setText("Here is some Text");
TestFmwk.assertEquals("Title instance break iterator not correctly instantiated", bi.first(), 0);
}
+
+ @Test
+ public void TestBug22580() {
+ try {
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator("'");
+ } catch(IllegalArgumentException e) {
+ // nothing.
+ }
+ boolean quick = TestFmwk.getExhaustiveness() <= 5;
+ if (quick) {
+ return;
+ }
+ // Test any 1 or 2 ASCII chars as rule will not cause infinity loop.
+ // only in exhaust mode
+ for (char u1 = ' '; u1 < '~'; u1++) {
+ try {
+ char array[] = {u1};
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator(new String(array));
+ } catch(IllegalArgumentException e) {
+ // nothing.
+ }
+ for (char u2 = ' '; u2 < '~'; u2++) {
+ try {
+ char array[] = {u1, u2};
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator(new String(array));
+ } catch(IllegalArgumentException e) {
+ // nothing.
+ }
+ }
+ }
+ }
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBITest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBITest.java
index 15f7265d0..0c60e9462 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBITest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/rbbi/RBBITest.java
@@ -10,6 +10,7 @@ package com.ibm.icu.dev.test.rbbi;
import java.text.CharacterIterator;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Locale;
@@ -908,7 +909,7 @@ public class RBBITest extends CoreTestFmwk {
assertEquals("Wrong number of breaks found", 2, breaksFound);
}
- /* Test handling of unpair surrogate.
+ /* Test handling of unpaired surrogate.
*/
@Test
public void TestUnpairedSurrogate() {
@@ -919,24 +920,24 @@ public class RBBITest extends CoreTestFmwk {
try {
new RuleBasedBreakIterator("a\ud800b;");
- fail("TestUnpairedSurrogate: RuleBasedBreakIterator() failed to throw an exception with unpair low surrogate.");
+ fail("TestUnpairedSurrogate: RuleBasedBreakIterator() failed to throw an exception with unpaired low surrogate.");
}
catch (IllegalArgumentException e) {
- // expected exception with unpair surrogate.
+ // expected exception with unpaired surrogate.
}
catch (Exception e) {
- fail("TestUnpairedSurrogate: Unexpected exception while new RuleBasedBreakIterator() with unpair low surrogate: " + e);
+ fail("TestUnpairedSurrogate: Unexpected exception while new RuleBasedBreakIterator() with unpaired low surrogate: " + e);
}
try {
new RuleBasedBreakIterator("a\ude00b;");
- fail("TestUnpairedSurrogate: RuleBasedBreakIterator() failed to throw an exception with unpair high surrogate.");
+ fail("TestUnpairedSurrogate: RuleBasedBreakIterator() failed to throw an exception with unpaired high surrogate.");
}
catch (IllegalArgumentException e) {
- // expected exception with unpair surrogate.
+ // expected exception with unpaired surrogate.
}
catch (Exception e) {
- fail("TestUnpairedSurrogate: Unexpected exception while new RuleBasedBreakIterator() with unpair high surrogate: " + e);
+ fail("TestUnpairedSurrogate: Unexpected exception while new RuleBasedBreakIterator() with unpaired high surrogate: " + e);
}
@@ -946,6 +947,79 @@ public class RBBITest extends CoreTestFmwk {
assertEquals("Rules does not match", rules, bi.toString());
}
+ @Test
+ public void TestBug22579() {
+ try {
+ new RuleBasedBreakIterator("[{ab}];");
+ fail("TestBug22579: RuleBasedBreakIterator() failed to throw an exception with only string in an Unicode set.");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with only string inside an Unicode set.
+ }
+ catch (Exception e) {
+ fail("TestBug22579: Unexpected exception while new RuleBasedBreakIterator() with only string in an Unicode Set: " + e);
+ }
+
+ }
+ @Test
+ public void TestBug22585() {
+ try {
+ new RuleBasedBreakIterator("$a=[\udecb];");
+ fail("TestBug22585: RuleBasedBreakIterator() failed to throw an exception with unpaired high surrogate.");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with unpaired surrogate.
+ }
+ catch (Exception e) {
+ fail("TestBug22585: Unexpected exception while new RuleBasedBreakIterator() with unpaired high surrogate: " + e);
+ }
+
+ try {
+ new RuleBasedBreakIterator("$a=[\ud94e];");
+ fail("TestBug22585: RuleBasedBreakIterator() failed to throw an exception with unpaired low surrogate.");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with unpaired surrogate.
+ }
+ catch (Exception e) {
+ fail("TestBug22585: Unexpected exception while new RuleBasedBreakIterator() with unpaired low surrogate: " + e);
+ }
+ }
+ @Test
+ public void TestBug22602() {
+ try {
+ char[] charArray = new char[25000];
+ Arrays.fill(charArray, 'A');
+ charArray[charArray.length-1] = ';';
+ String rules = new String(charArray);
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator(rules);
+ fail("TestBug22602: RuleBasedBreakIterator() failed to throw an exception with a long string followed by a ';'.");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with a long string followed by a ';'.
+ }
+ catch(StackOverflowError e) {
+ fail("TestBug22602: Unexpected exception while new RuleBasedBreakIterator() with a long string followed by a ';': " + e);
+ }
+ }
+ @Test
+ public void TestBug22636() {
+ try {
+ RuleBasedBreakIterator bi = new RuleBasedBreakIterator("A{77777777777777};");
+ fail("TestBug22636: new RuleBasedBreakIterator() with a large status value inside {}: should throw IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with a large status value inside {}.
+ }
+ try {
+ RuleBasedBreakIterator bi2 = new RuleBasedBreakIterator("A{2147483648};");
+ fail("TestBug22636: new RuleBasedBreakIterator() with a large status value inside {}: should throw IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e) {
+ // expected exception with a large status value inside {}.
+ }
+ RuleBasedBreakIterator bi3 = new RuleBasedBreakIterator("A{2147483647};");
+ }
/* Test preceding(index) and following(index), with semi-random indexes.
* The random indexes are produced in clusters that are relatively closely spaced,
* to increase the occurrences of hits to the internal break cache.
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
index 7a65fb18a..c263039da 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
@@ -292,7 +292,7 @@ public class IDNAConformanceTest extends CoreTestFmwk {
//if met "=====", it means this item is finished
if ("=====".equals(tempStr)) {
//set them into result, using records number as key
- result.put(new Long(records), hashItem);
+ result.put((long)records, hashItem);
//create another hash item and continue
hashItem = new HashMap();
records++;
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
index 4870d9491..5b662041f 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
@@ -187,7 +187,7 @@ public class NamePrepTransform {
try {
Class cls = Class.forName("com.ibm.icu.text.Transliterator");
Method createMethod = cls.getMethod("createFromRules", String.class, String.class, Integer.TYPE);
- translitInstance = createMethod.invoke(null, id, rule, Integer.valueOf(direction));
+ translitInstance = createMethod.invoke(null, id, rule, direction);
translitMethod = cls.getMethod("transliterate", String.class);
} catch (Throwable e) {
return false;
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
index 29ad92e6a..f069e9ff0 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
@@ -246,8 +246,8 @@ public class TimeZoneAliasTest extends CoreTestFmwk {
private int maxOffset;
private int minRecentOffset;
private int maxRecentOffset;
- private List inflectionPoints = new ArrayList();
- private Set purportedAliases = new TreeSet();
+ private List<Long> inflectionPoints = new ArrayList<>();
+ private Set<String> purportedAliases = new TreeSet<>();
private Zone(String id) { // for internal use only; use make instead!
zone = TimeZone.getTimeZone(id);
@@ -266,7 +266,7 @@ public class TimeZoneAliasTest extends CoreTestFmwk {
if (zone.getOffset(lastDate) < zone.getOffset(endDate2)) lastDate = endDate2;
maxRecentOffset = minRecentOffset = minOffset = maxOffset = zone.getOffset(lastDate);
- inflectionPoints.add(new Long(lastDate));
+ inflectionPoints.add(lastDate);
int lastOffset = zone.getOffset(endDate);
long lastInflection = endDate;
@@ -291,12 +291,12 @@ public class TimeZoneAliasTest extends CoreTestFmwk {
high = mid;
}
}
- inflectionPoints.add(new Long(low));
+ inflectionPoints.add(low);
lastInflection = low;
}
lastOffset = currentOffset;
}
- inflectionPoints.add(new Long(startDate)); // just to cap it off for comparisons.
+ inflectionPoints.add(startDate); // just to cap it off for comparisons.
}
// we assume that places will not convert time zones then back within one day
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java
index f3461ec9c..1870f89be 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java
@@ -257,8 +257,8 @@ public class TimeZoneRegressionTest extends CoreTestFmwk {
dow,
millis);
tzRawOffset = testTZ.getRawOffset();
- tzOffsetFloat = new Float((float)tzOffset/(float)3600000);
- tzRawOffsetFloat = new Float((float)tzRawOffset/(float)3600000);
+ tzOffsetFloat = (float)tzOffset/3600000f;
+ tzRawOffsetFloat = (float)tzRawOffset/3600000f;
Date testDate = testCal.getTime();
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
index 2c6a164d2..a8942514e 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -298,6 +298,26 @@ public class TimeZoneTest extends CoreTestFmwk
"GMT-2:31:123", "0", TimeZone.UNKNOWN_ZONE_ID,
"GMT+3:75", "0", TimeZone.UNKNOWN_ZONE_ID,
"GMT-01010101", "0", TimeZone.UNKNOWN_ZONE_ID,
+ "GMT-4E58", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-4e58", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-1E01", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-2E01", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-2e01", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-9e02", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-1e03", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-2e03", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-500M", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-500T", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-9E00", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-0X0F", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-0x0F", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-0x12", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-B111", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-b111", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-0b11", "0", TimeZone.UNKNOWN_ZONE_ID, // ICU-22637
+ "GMT-๑๒", "-43200", "GMT-12:00", // ICU-22637
+ "GMT-๑๒:๓๔", "-45240", "GMT-12:34", // ICU-22637
+ "GMT+๑๒:๓๔:๕๖", "45296", "GMT+12:34:56", // ICU-22637
};
for (int i = 0; i < DATA.length; i += 3) {
String id = DATA[i];
@@ -356,25 +376,25 @@ public class TimeZoneTest extends CoreTestFmwk
// todo: check to see whether we can test for all of pst, pdt, pt
Object[] DATA = {
// z and zzzz
- Boolean.FALSE, new Integer(TimeZone.SHORT), "PST",
- Boolean.TRUE, new Integer(TimeZone.SHORT), "PDT",
- Boolean.FALSE, new Integer(TimeZone.LONG), "Pacific Standard Time",
- Boolean.TRUE, new Integer(TimeZone.LONG), "Pacific Daylight Time",
+ Boolean.FALSE, TimeZone.SHORT, "PST",
+ Boolean.TRUE, TimeZone.SHORT, "PDT",
+ Boolean.FALSE, TimeZone.LONG, "Pacific Standard Time",
+ Boolean.TRUE, TimeZone.LONG, "Pacific Daylight Time",
// v and vvvv
- Boolean.FALSE, new Integer(TimeZone.SHORT_GENERIC), "PT",
- Boolean.TRUE, new Integer(TimeZone.SHORT_GENERIC), "PT",
- Boolean.FALSE, new Integer(TimeZone.LONG_GENERIC), "Pacific Time",
- Boolean.TRUE, new Integer(TimeZone.LONG_GENERIC), "Pacific Time",
+ Boolean.FALSE, TimeZone.SHORT_GENERIC, "PT",
+ Boolean.TRUE, TimeZone.SHORT_GENERIC, "PT",
+ Boolean.FALSE, TimeZone.LONG_GENERIC, "Pacific Time",
+ Boolean.TRUE, TimeZone.LONG_GENERIC, "Pacific Time",
// z and ZZZZ
- Boolean.FALSE, new Integer(TimeZone.SHORT_GMT), "-0800",
- Boolean.TRUE, new Integer(TimeZone.SHORT_GMT), "-0700",
- Boolean.FALSE, new Integer(TimeZone.LONG_GMT), "GMT-08:00",
- Boolean.TRUE, new Integer(TimeZone.LONG_GMT), "GMT-07:00",
+ Boolean.FALSE, TimeZone.SHORT_GMT, "-0800",
+ Boolean.TRUE, TimeZone.SHORT_GMT, "-0700",
+ Boolean.FALSE, TimeZone.LONG_GMT, "GMT-08:00",
+ Boolean.TRUE, TimeZone.LONG_GMT, "GMT-07:00",
// V and VVVV
- Boolean.FALSE, new Integer(TimeZone.SHORT_COMMONLY_USED), "PST",
- Boolean.TRUE, new Integer(TimeZone.SHORT_COMMONLY_USED), "PDT",
- Boolean.FALSE, new Integer(TimeZone.GENERIC_LOCATION), "Los Angeles Time",
- Boolean.TRUE, new Integer(TimeZone.GENERIC_LOCATION), "Los Angeles Time",
+ Boolean.FALSE, TimeZone.SHORT_COMMONLY_USED, "PST",
+ Boolean.TRUE, TimeZone.SHORT_COMMONLY_USED, "PDT",
+ Boolean.FALSE, TimeZone.GENERIC_LOCATION, "Los Angeles Time",
+ Boolean.TRUE, TimeZone.GENERIC_LOCATION, "Los Angeles Time",
};
for (int i=0; i<DATA.length; i+=3) {
@@ -1789,8 +1809,8 @@ public class TimeZoneTest extends CoreTestFmwk
*/
@Test
public void TestDisplayNamesMeta() {
- final Integer TZSHORT = new Integer(TimeZone.SHORT);
- final Integer TZLONG = new Integer(TimeZone.LONG);
+ final Integer TZSHORT = TimeZone.SHORT;
+ final Integer TZLONG = TimeZone.LONG;
final Object[][] zoneDisplayTestData = {
// zone id locale summer format expected display name
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DebugUtilitiesData.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
index 6bd89dfc4..a5ce0f532 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
@@ -10,7 +10,7 @@
package com.ibm.icu.dev.test.util;
public class DebugUtilitiesData extends Object {
- public static final String ICU4C_VERSION="74.2";
+ public static final String ICU4C_VERSION="75.1";
public static final int UDebugEnumType = 0;
public static final int UCalendarDateFields = 1;
public static final int UCalendarMonths = 2;
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DisplayNameTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DisplayNameTest.java
index 4338d0d7f..0330a7282 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DisplayNameTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DisplayNameTest.java
@@ -47,9 +47,8 @@ public class DisplayNameTest extends CoreTestFmwk {
for (int k = 0; k < codeToName.length; ++k) codeToName[k] = new HashMap();
}
- static final Object[] zoneFormats = {new Integer(0), new Integer(1), new Integer(2),
- new Integer(3), new Integer(4), new Integer(5), new Integer(6), new Integer(7)};
- static final Object[] currencyFormats = {new Integer(Currency.SYMBOL_NAME), new Integer(Currency.LONG_NAME)};
+ static final Object[] zoneFormats = {0, 1, 2, 3, 4, 5, 6, 7};
+ static final Object[] currencyFormats = {Currency.SYMBOL_NAME, Currency.LONG_NAME};
static final Object[] NO_CONTEXT = {null};
static final Date JAN1;
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/LocaleMatcherTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
index dd389e77f..d6dcacd44 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
@@ -24,8 +24,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import com.ibm.icu.dev.test.CoreTestFmwk;
+import com.ibm.icu.impl.locale.LikelySubtags;
import com.ibm.icu.impl.locale.XCldrStub.FileUtilities;
-import com.ibm.icu.impl.locale.XLikelySubtags;
import com.ibm.icu.util.LocaleMatcher;
import com.ibm.icu.util.LocaleMatcher.FavorSubtag;
import com.ibm.icu.util.LocalePriorityList;
@@ -868,7 +868,7 @@ public class LocaleMatcherTest extends CoreTestFmwk {
long start = System.nanoTime();
for (int i = iterations; i > 0; --i) {
for (ULocale locale : list) {
- XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale, false);
+ LikelySubtags.INSTANCE.makeMaximizedLsrFrom(locale, false);
}
}
return System.nanoTime() - start;
@@ -1070,7 +1070,7 @@ public class LocaleMatcherTest extends CoreTestFmwk {
builder.setFavorSubtag(favor);
}
if (!test.threshold.isEmpty()) {
- int threshold = Integer.valueOf(test.threshold);
+ int threshold = Integer.parseInt(test.threshold);
builder.internalSetThresholdDistance(threshold);
}
matcher = builder.build();
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/RegionTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/RegionTest.java
index 165a2561f..92c7cc792 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/RegionTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/RegionTest.java
@@ -426,7 +426,7 @@ public class RegionTest extends CoreTestFmwk {
String inputID = data[0];
String expectedID = data[1];
Region.RegionType expectedType = Region.RegionType.valueOf(data[2]);
- Region r = Region.getInstance(Integer.valueOf(inputID));
+ Region r = Region.getInstance(Integer.parseInt(inputID));
if ( !expectedID.equals(r.toString())) {
errln("Unexpected region ID for Region.getInstance(" + inputID + "); Expected: " + expectedID + " Got: " + r.toString());
}
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/TextTrieMapTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/TextTrieMapTest.java
index 8e6aa0fa1..422edb657 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/TextTrieMapTest.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/TextTrieMapTest.java
@@ -22,22 +22,22 @@ import com.ibm.icu.text.UnicodeSet;
@RunWith(JUnit4.class)
public class TextTrieMapTest extends CoreTestFmwk {
- private static final Integer SUN = new Integer(1);
- private static final Integer MON = new Integer(2);
- private static final Integer TUE = new Integer(3);
- private static final Integer WED = new Integer(4);
- private static final Integer THU = new Integer(5);
- private static final Integer FRI = new Integer(6);
- private static final Integer SAT = new Integer(7);
-
- private static final Integer SUP1 = new Integer(8);
- private static final Integer SUP2 = new Integer(9);
- private static final Integer SUP3 = new Integer(10);
- private static final Integer SUP4 = new Integer(11);
- private static final Integer SUP5 = new Integer(12);
-
- private static final Integer FOO = new Integer(-1);
- private static final Integer BAR = new Integer(-2);
+ private static final Integer SUN = 1;
+ private static final Integer MON = 2;
+ private static final Integer TUE = 3;
+ private static final Integer WED = 4;
+ private static final Integer THU = 5;
+ private static final Integer FRI = 6;
+ private static final Integer SAT = 7;
+
+ private static final Integer SUP1 = 8;
+ private static final Integer SUP2 = 9;
+ private static final Integer SUP3 = 10;
+ private static final Integer SUP4 = 11;
+ private static final Integer SUP5 = 12;
+
+ private static final Integer FOO = -1;
+ private static final Integer BAR = -2;
private static final Object[][] TESTDATA = {
{"Sunday", SUN},
diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java
index 4a0736a99..258ac46f7 100644
--- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java
+++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java
@@ -26,12 +26,12 @@ import com.ibm.icu.impl.ICUData;
import com.ibm.icu.impl.ICUResourceBundle;
import com.ibm.icu.impl.UResource;
import com.ibm.icu.impl.locale.LSR;
+import com.ibm.icu.impl.locale.LikelySubtags;
import com.ibm.icu.impl.locale.LocaleDistance;
import com.ibm.icu.impl.locale.XCldrStub.Multimap;
import com.ibm.icu.impl.locale.XCldrStub.Predicate;
import com.ibm.icu.impl.locale.XCldrStub.Splitter;
import com.ibm.icu.impl.locale.XCldrStub.TreeMultimap;
-import com.ibm.icu.impl.locale.XLikelySubtags;
import com.ibm.icu.util.BytesTrieBuilder;
import com.ibm.icu.util.Output;
import com.ibm.icu.util.ULocale;
@@ -489,7 +489,7 @@ public final class LocaleDistanceBuilder {
Set<LSR> paradigmLSRs = new LinkedHashSet<>(); // could be TreeSet if LSR were Comparable
for (String paradigm : paradigms) {
ULocale pl = new ULocale(paradigm);
- LSR max = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(pl, false);
+ LSR max = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(pl, false);
// Clear the LSR flags to make the data equality test in
// LocaleDistanceTest happy.
paradigmLSRs.add(new LSR(max.language, max.script, max.region, LSR.DONT_CARE_FLAGS));
@@ -887,7 +887,7 @@ public final class LocaleDistanceBuilder {
}
public static final void main(String[] args) throws IOException {
- XLikelySubtags.Data likelyData = XLikelySubtags.Data.load();
+ LikelySubtags.Data likelyData = LikelySubtags.Data.load();
LocaleDistance.Data distanceData = build();
System.out.println("Writing LocaleDistance.Data to " + TXT_PATH + '/' + TXT_FILE_NAME);
try (PrintWriter out = openWriter()) {
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt
index 417c1001d..25a0f1460 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/likelySubtags.txt
@@ -1,7 +1,7 @@
# Test data for Likely Subtags
# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Test data for https://www.unicode.org/reports/tr35/tr35.html#Likely_Subtags
@@ -788,7 +788,7 @@ pt-TL ; pt-Latn-TL ; pt-TL ;
qaa ; FAIL ; ;
qaa-CH ; FAIL ; ;
qaa-Cyrl ; FAIL ; ;
-qaa-Cyrl-CH ; ; ;
+qaa-Cyrl-CH ; FAIL ; ;
qu ; qu-Latn-PE ; qu ;
qu-AQ ; qu-Latn-AQ ; qu-AQ ;
qu-BO ; qu-Latn-BO ; qu-BO ;
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt
index bce4a8a4f..2e4bb5929 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeCanonicalization.txt
@@ -1,7 +1,7 @@
# Test data for locale identifier canonicalization
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt
index fd9986c00..ed0fdcd7b 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/localeIdentifiers/localeDisplayName.txt
@@ -1,7 +1,7 @@
# Test data for locale display name generation
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
# Format:
# @locale=<locale to display in>
@@ -65,7 +65,6 @@ en-u-co-gb2312; English (Simplified Chinese Sort Order - GB2312)
en-u-co-phonebk; English (Phonebook Sort Order)
en-u-co-phonetic; English (Phonetic Sort Order)
en-u-co-pinyin; English (Pinyin Sort Order)
-en-u-co-reformed; English (Reformed Sort Order)
en-u-co-search; English (General-Purpose Search)
en-u-co-searchjl; English (Search By Hangul Initial Consonant)
en-u-co-standard; English (Standard Sort Order)
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_header.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_header.txt
index d32b3c067..a060992b4 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_header.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_header.txt
@@ -1,6 +1,6 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for personName formats
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
+# \ No newline at end of file
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_readme.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_readme.txt
index c45acdf84..fe3dca10f 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_readme.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/_readme.txt
@@ -1,5 +1,5 @@
# Test data for personName formats
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/af.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/af.txt
index 726da7aa1..06efa0df3 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/af.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/af.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: af
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/am.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/am.txt
index ac7b469a2..3fc2478d5 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/am.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/am.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: am
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ar.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ar.txt
index 6776b1de5..a45007061 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ar.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ar.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ar
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/as.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/as.txt
index 6eeadad5c..38aafe03b 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/as.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/as.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: as
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/az.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/az.txt
index 2f1c236be..a28f8bfe0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/az.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/az.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: az
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/be.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/be.txt
index 5be3444c8..d93e284e9 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/be.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/be.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: be
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bg.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bg.txt
index 78861df6c..97ff654d5 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bg.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bg.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bg
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bn.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bn.txt
index 50982f61a..3e344225f 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bn.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bn
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bs.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bs.txt
index c6687f31c..b2306853c 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bs.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/bs.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: bs
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ca.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ca.txt
index 259fec0cb..3f1309c05 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ca.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ca.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ca
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/catalog.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/catalog.txt
index 55f5de7cd..4d6db7134 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/catalog.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/catalog.txt
@@ -1,10 +1,9 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for personName formats
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-af.txt
+#af.txt
am.txt
ar.txt
as.txt
@@ -19,31 +18,21 @@ cs.txt
cy.txt
da.txt
de.txt
-de_CH.txt
dsb.txt
el.txt
en.txt
-en_AU.txt
-en_CA.txt
-en_GB.txt
-en_IN.txt
es.txt
-es_419.txt
-es_MX.txt
-es_US.txt
et.txt
eu.txt
fa.txt
fi.txt
fil.txt
fr.txt
-fr_CA.txt
ga.txt
gd.txt
gl.txt
gu.txt
ha.txt
-ha_NE.txt
he.txt
hi.txt
hi_Latn.txt
@@ -82,7 +71,6 @@ pa.txt
pl.txt
ps.txt
pt.txt
-pt_PT.txt
qu.txt
ro.txt
ru.txt
@@ -94,12 +82,9 @@ sl.txt
so.txt
sq.txt
sr.txt
-sr_Cyrl_BA.txt
sr_Latn.txt
-sr_Latn_BA.txt
sv.txt
sw.txt
-sw_KE.txt
ta.txt
te.txt
tg.txt
@@ -113,10 +98,8 @@ uz.txt
vi.txt
wo.txt
yo.txt
-yo_BJ.txt
yue.txt
yue_Hans.txt
zh.txt
zh_Hant.txt
-zh_Hant_HK.txt
zu.txt \ No newline at end of file
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/chr.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/chr.txt
index d1941bac6..79c0413f0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/chr.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/chr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: chr
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cs.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cs.txt
index 56e0c6289..ba810bc2d 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cs.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cs.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: cs
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cy.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cy.txt
index dd32a7a68..4efcf7d98 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cy.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/cy.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: cy
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/da.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/da.txt
index bda38f8d1..8df996418 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/da.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/da.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: da
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de.txt
index e719c9b60..8cb75f208 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: de
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de_CH.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de_CH.txt
deleted file mode 100644
index e2e11de09..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/de_CH.txt
+++ /dev/null
@@ -1,772 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: de_CH
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Lena
-name ; locale; de_CH
-
-expectedResult; Lena
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; L
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Iris
-name ; surname; Falke
-name ; locale; de_CH
-
-expectedResult; Falke, Iris
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Iris Falke
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Falke, I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; sorting; short; referring; formal
-
-expectedResult; I. Falke
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Iris F.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Falke
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Iris
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; FI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IF
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; F
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Max
-name ; given2; Ben
-name ; surname; Mustermann
-name ; locale; de_CH
-
-expectedResult; Mustermann, Max Ben
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; Max Ben Mustermann
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Mustermann, Max B.
-
-parameters; surnameFirst; medium; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Max B. Mustermann
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Mustermann, M. B.
-
-parameters; surnameFirst; short; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; M. B. Mustermann
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Mustermann, Max
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Max Mustermann
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Mustermann, M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mustermann
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Max M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Max
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MBM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MMB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MM
-
-parameters; givenFirst; long; monogram; informal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; Dr.
-name ; given; Paul
-name ; given-informal; Pauli
-name ; given2; Vinzent
-name ; surname-prefix; von
-name ; surname-core; Fischer
-name ; surname2; Müller
-name ; generation; jr.
-name ; credentials; MdB
-name ; locale; de_CH
-
-expectedResult; von Fischer, Dr. Paul Vinzent jr. MdB
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Dr. Paul Vinzent von Fischer jr. MdB
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Fischer, Paul V. jr. MdB
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Paul V. von Fischer jr. MdB
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Fischer, Paul Vinzent von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Fischer, Paul V. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Fischer, P. V. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; von Fischer, P. V.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Fischer, Pauli
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; P. V. von Fischer
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Pauli von Fischer
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Dr. von Fischer
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Fischer, P.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Pauli v. F.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Pauli
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; PVV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VPV
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; PV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VP
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Tomás
-name ; locale; ko_AQ
-
-expectedResult; Tomás
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; T
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Adélaïde
-name ; surname; Lemaître
-name ; locale; ko_AQ
-
-expectedResult; Lemaître, Adélaïde
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adélaïde Lemaître
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Lemaître, A.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; sorting; short; referring; formal
-
-expectedResult; A. Lemaître
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Adélaïde L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adélaïde
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Lemaître
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; AL
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; LA
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Kjetil
-name ; given2; Bjørn
-name ; surname; Løseth
-name ; locale; ko_AQ
-
-expectedResult; Løseth, Kjetil Bjørn
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; Kjetil Bjørn Løseth
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Løseth, Kjetil B.
-
-parameters; surnameFirst; medium; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Kjetil B. Løseth
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Løseth, Kjetil
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kjetil Løseth
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Løseth, K. B.
-
-parameters; surnameFirst; short; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; K. B. Løseth
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Løseth, K.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kjetil L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Kjetil
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Løseth
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; KBL
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; LKB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; KL
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; LK
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Anna Cornelia
-name ; given-informal; Nele
-name ; given2; Eva Sophia
-name ; surname-prefix; van den
-name ; surname-core; Wolf
-name ; surname2; Becker Schmidt
-name ; generation; jr.
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; van den Wolf, Prof. Dr. Anna Cornelia Eva Sophia jr. M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Prof. Dr. Anna Cornelia Eva Sophia van den Wolf jr. M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; van den Wolf, Anna Cornelia E. S. jr. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Anna Cornelia E. S. van den Wolf jr. M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wolf, Anna Cornelia Eva Sophia van den
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Wolf, Anna Cornelia E. S. van den
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; van den Wolf, A. C. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wolf, A. C. E. S. van den
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. C. E. S. van den Wolf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Prof. Dr. van den Wolf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Wolf, A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; van den Wolf, Nele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Nele van den Wolf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Nele v. d. W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Nele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/dsb.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/dsb.txt
index fcf81ed62..e94c3af1e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/dsb.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/dsb.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: dsb
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/el.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/el.txt
index b7ad436f9..0835e9086 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/el.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/el.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: el
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en.txt
index 06f447f2b..d1dabbbf6 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: en
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_AU.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_AU.txt
deleted file mode 100644
index d130d4ed4..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_AU.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_AU
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_AU
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_AU
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_AU
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_AU
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_CA.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_CA.txt
deleted file mode 100644
index 3424bc2ad..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_CA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_CA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_CA
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_CA
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_CA
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr.
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr.
-name ; credentials; MP
-name ; locale; en_CA
-
-expectedResult; Mr. Bertram Wilberforce Henry Robert Wooster Jr., MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr. Bertram Wilberforce Henry Robert Jr., MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr., MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr., MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr. Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr.
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl Jr., MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof. Dr. Ada Cornelia César Martín Jr., MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr., MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr., MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Prof. Dr. von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_GB.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_GB.txt
deleted file mode 100644
index ff38d8a29..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_GB.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_GB
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_GB
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_GB
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_GB
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, MSH
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue W
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; MSH Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson MSH
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Watson MS
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_GB
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce HR Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce HR Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce HR
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster, BWHR
-
-parameters; sorting; short; referring; formal
-
-expectedResult; BWHR Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster BWHR
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Wooster BW
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bertie W
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, ZH
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber ZH
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Zäzilia S
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; ZH Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Stöber Z
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia CM von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; von Brühl Ada Cornelia CM Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia CM von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Brühl, ACCM von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; ACCM von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl ACCM
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl AC
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele vB
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_IN.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_IN.txt
deleted file mode 100644
index 8c5b8db1b..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/en_IN.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: en_IN
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Zendaya
-name ; locale; en_IN
-
-expectedResult; Zendaya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Z
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irene
-name ; surname; Adler
-name ; locale; en_IN
-
-expectedResult; Adler, Irene
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adler Irene
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Irene Adler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adler, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adler I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; I. Adler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Irene A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irene
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; IA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Mary Sue
-name ; given2; Hamish
-name ; surname; Watson
-name ; locale; en_IN
-
-expectedResult; Watson, Mary Sue Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Mary Sue Hamish Watson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Watson Mary Sue Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Watson, Mary Sue H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Mary Sue H. Watson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Watson Mary Sue H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Watson, Mary Sue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Mary Sue Watson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Watson Mary Sue
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Watson, M.S.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M.S.H. Watson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Watson M.S.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Mary Sue W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Watson M.S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mary Sue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Watson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; MHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WMH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Mr
-name ; given; Bertram Wilberforce
-name ; given-informal; Bertie
-name ; given2; Henry Robert
-name ; surname-core; Wooster
-name ; generation; Jr
-name ; credentials; MP
-name ; locale; en_IN
-
-expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce Henry Robert
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wooster, Bertram Wilberforce H.R.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Wooster, B.W.H.R.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; B.W.H.R. Wooster
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Wooster B.W.H.R.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Wooster, Bertie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bertie Wooster
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Wooster Bertie
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Wooster B.W.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mr Wooster
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bertie W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bertie
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BHW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WBH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BW
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; WB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z.H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z.H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof Dr
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C.M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Brühl, A.C.C.M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A.C.C.M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A.C.C.M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof Dr von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; von Brühl A.C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Neele v.B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es.txt
index 3cb56375b..f9a219c1d 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: es
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_419.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_419.txt
deleted file mode 100644
index 3821f6ea0..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_419.txt
+++ /dev/null
@@ -1,830 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_419
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_419
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_419
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_419
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz, J. L. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Miguel Ángel
-name ; given-informal; Migue
-name ; given2; Juan Antonio
-name ; surname-core; Pablo
-name ; surname2; Pérez
-name ; generation; II
-name ; locale; es_419
-
-expectedResult; Pablo Pérez, Sr. Miguel Ángel Juan Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Sr. Miguel Ángel Juan Antonio Pablo II
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Pablo Pérez Miguel Ángel Juan Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Pablo, Sr. Miguel Ángel Juan Antonio
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Pablo Pérez, Sr. Miguel Ángel J. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Miguel Ángel J. A. Pablo
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Pablo Miguel Ángel J. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Pablo Pérez, Migue
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; M. Á. J. A. Pablo
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Migue Pablo Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Pablo M. Á. J. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Pablo Pérez Migue
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. Pablo Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; Pablo, Migue
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Migue Pablo
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Pablo M. Á.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Pablo Migue
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. Pablo
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Migue P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Migue
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MPP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; PMJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; PM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Peter
-name ; locale; ko_AQ
-
-expectedResult; Peter
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; P
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Martine
-name ; surname; Sodersen
-name ; locale; ko_AQ
-
-expectedResult; Sodersen, Martine
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Martine Sodersen
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Sodersen Martine
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Sodersen, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. Sodersen
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sodersen M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Martine S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Sodersen
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Martine
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Christopher
-name ; given2; Hans
-name ; surname; Jacobsen
-name ; locale; ko_AQ
-
-expectedResult; Jacobsen, Christopher Hans
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Christopher Hans Jacobsen
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Jacobsen Christopher Hans
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Jacobsen, Christopher H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Christopher H. Jacobsen
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Jacobsen Christopher H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Jacobsen, Christopher
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Christopher Jacobsen
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Jacobsen Christopher
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Jacobsen, C. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; C. H. Jacobsen
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Christopher J.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Jacobsen C. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Christopher
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Jacobsen C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Jacobsen
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; JCH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; CJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; JC
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; C
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; von
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dra. Mary Sue Marie von Miller II, Dr./Dra.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-
-expectedResult; von Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; von Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue M. von Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. von Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; von Miller Jones, Marge
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; Marge von Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; von Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Prof. Dra. von Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; M. S. M. von Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Miller, Marge
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marge von Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge v. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MVJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_MX.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_MX.txt
deleted file mode 100644
index 74c4a52d2..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_MX.txt
+++ /dev/null
@@ -1,831 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_MX
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_MX
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_MX
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_MX
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz, J. L. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz, Juan
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Marcelo Miguel
-name ; given-informal; Marce
-name ; given2; Javier Ariel
-name ; surname-core; Romero
-name ; surname2; Pérez
-name ; generation; Júnior
-name ; credentials; Miembro del Parlamento
-name ; locale; es_MX
-
-expectedResult; Romero Pérez Marcelo Miguel Javier Ariel Miembro del Parlamento
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Marcelo Miguel J. A. Romero Miembro del Parlamento
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Romero Marcelo Miguel J. A. Miembro del Parlamento
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Romero Pérez, Sr. Marcelo Miguel Javier Ariel
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Sr. Marcelo Miguel Javier Ariel Romero Pérez
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Romero, Sr. Marcelo Miguel Javier Ariel
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Romero Pérez, Sr. Marcelo Miguel J. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Romero Pérez, Marce
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; M. M. J. A. Romero
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marce Romero Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Romero M. M. J. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Romero Pérez Marce
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. Romero Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; Romero, Marce
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marce Romero
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Romero M. M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Romero Marce
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. Romero
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Marce R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marce
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MRP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RMJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; RM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Mohammed
-name ; locale; ko_AQ
-
-expectedResult; Mohammed
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; M
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Zäzilia
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Z. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; Käthe
-name ; given2; Kate
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe Kate
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Käthe Kate Müller
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Müller Käthe Kate
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Müller, Käthe K.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Käthe K. Müller
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Müller Käthe K.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Müller, K. K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; K. K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller K. K.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MKK
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; von
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Prof. Dra. Mary Sue Marie von Miller Jones
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; von Miller Jones, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; von Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Mary Sue M. von Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. von Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; von Miller Jones, Marge
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; Marge von Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; von Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Prof. Dra. von Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; M. S. M. von Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Miller, Marge
-
-parameters; sorting; short; referring; informal
-
-expectedResult; Marge von Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge v. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MVJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_US.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_US.txt
deleted file mode 100644
index 8af3e97c7..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/es_US.txt
+++ /dev/null
@@ -1,801 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: es_US
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Diego
-name ; locale; es_US
-
-expectedResult; Diego
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; D
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Lucía
-name ; surname; García Pérez
-name ; locale; es_US
-
-expectedResult; García Pérez, Lucía
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; García Pérez Lucía
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; Lucía García Pérez
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Pérez L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; L. García Pérez
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Lucía G. P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Lucía
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; LG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; L
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Juan
-name ; given2; Luis Antonio
-name ; surname; Rodríguez Ruiz
-name ; locale; es_US
-
-expectedResult; Rodríguez Ruiz, Juan Luis Antonio
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; Juan Luis Antonio Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan Luis Antonio
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Rodríguez Ruiz, Juan L. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Juan L. A. Rodríguez Ruiz
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Rodríguez Ruiz Juan L. A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; J. L. A. Rodríguez Ruiz
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Rodríguez Ruiz J. L. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Juan Rodríguez Ruiz
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz Juan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Rodríguez Ruiz J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Rodríguez Ruiz
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Juan R. R.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Juan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; RJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JR
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; RJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; R
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; Alejandro Martín
-name ; given-informal; Ale
-name ; given2; Carlos Miguel
-name ; surname-core; García
-name ; surname2; Pérez
-name ; generation; Júnior
-name ; credentials; Miembro del Parlamento
-name ; locale; es_US
-
-expectedResult; Sr. Alejandro Martín Carlos Miguel García Júnior, Miembro del Parlamento
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; García Pérez Alejandro Martín Carlos Miguel Miembro del Parlamento
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Alejandro Martín C. M. García Miembro del Parlamento
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; García Alejandro Martín C. M. Miembro del Parlamento
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; García Pérez, Alejandro Martín Carlos Miguel
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; García, Sr. Alejandro Martín Carlos Miguel
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; García, Sr. Alejandro Martín C. M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; A. M. C. M. García
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; García A. M. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Ale García Pérez
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; García Pérez Ale
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Sr. García Pérez
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; García A. M.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ale García
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; García Ale
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Sr. García
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Ale G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; AGP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; Ale
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; GAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; GA
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Aziz
-name ; locale; ko_AQ
-
-expectedResult; Aziz
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Kate
-name ; surname; Smith
-name ; locale; ko_AQ
-
-expectedResult; Smith, Kate
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kate Smith
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Smith Kate
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-
-expectedResult; K. Smith
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Smith K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kate S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Smith
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Kate
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Sarah
-name ; given2; Anna
-name ; surname; Johnson
-name ; locale; ko_AQ
-
-expectedResult; Johnson, Sarah Anna
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; Johnson Sarah Anna
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Sarah Anna Johnson
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Johnson, Sarah A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Johnson Sarah A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Sarah A. Johnson
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Johnson S. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Johnson Sarah
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. A. Johnson
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sarah Johnson
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Johnson S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sarah J.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Johnson
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Sarah
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JSA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dra.
-name ; given; Mary Sue
-name ; given-informal; Marge
-name ; given2; Marie
-name ; surname-prefix; de
-name ; surname-core; Miller
-name ; surname2; Jones
-name ; generation; II
-name ; credentials; Dr./Dra.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dra. Mary Sue Marie de Miller II, Dr./Dra.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; de Miller Jones Mary Sue Marie Dr./Dra.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; de Miller, Prof. Dra. Mary Sue Marie
-
-parameters; sorting; long; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; de Miller, Prof. Dra. Mary Sue M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; de Miller Jones, Mary Sue Marie
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; de Miller Mary Sue M. Dr./Dra.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Mary Sue M. de Miller Dr./Dra.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Prof. Dra. de Miller Jones
-
-parameters; givenFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-
-expectedResult; de Miller Jones Marge
-
-parameters; surnameFirst; long; referring; informal
-
-expectedResult; Marge de Miller Jones
-
-parameters; givenFirst; long; referring; informal
-
-expectedResult; Prof. Dra. de Miller
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; de Miller M. S. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; M. S. M. de Miller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; de Miller M. S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; de Miller Marge
-
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marge de Miller
-
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Marge d. M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marge
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; DMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MDJ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; DM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; D
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/et.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/et.txt
index 543ce3eb9..9344dfae1 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/et.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/et.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: et
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/eu.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/eu.txt
index eb47d520f..7446c34b7 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/eu.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/eu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: eu
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fa.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fa.txt
index ee9efab2b..8113fcb39 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fa.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fa.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fa
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fi.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fi.txt
index 7a456e390..9ab44f71b 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fi.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fi
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fil.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fil.txt
index c966189a0..160cbc5e7 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fil.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fil.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fil
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr.txt
index fba3bd02f..1bee09713 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: fr
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr_CA.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr_CA.txt
deleted file mode 100644
index e6791fb5a..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/fr_CA.txt
+++ /dev/null
@@ -1,831 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: fr_CA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Adèle
-name ; locale; fr_CA
-
-expectedResult; Adèle
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Louise
-name ; surname; Péricourt
-name ; locale; fr_CA
-
-expectedResult; Péricourt, Louise
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Louise Péricourt
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Péricourt Louise
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Péricourt, L.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; L. Péricourt
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Péricourt L.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Louise P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Péricourt
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Louise
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; LP
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; PL
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Marie-Agnès
-name ; given2; Suzanne
-name ; surname; Gilot
-name ; locale; fr_CA
-
-expectedResult; Gilot, Marie-Agnès Suzanne
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Gilot Marie-Agnès Suzanne
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Marie-Agnès Suzanne Gilot
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Gilot, Marie-Agnès S.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Gilot Marie-Agnès S.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Marie-Agnès S. Gilot
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Gilot, Marie-Agnès
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Gilot Marie-Agnès
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marie-Agnès Gilot
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Gilot, M.-A. S.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Gilot M.-A. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; M.-A. S. Gilot
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marie-Agnès G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Gilot M.-A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Marie-Agnès
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Gilot
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GMS
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MSG
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; GM
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; MG
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; M.
-name ; given; Jean-Nicolas
-name ; given-informal; Nico
-name ; given2; Louis Marcel
-name ; surname-prefix; de
-name ; surname-core; Larochellière
-name ; surname2; Drainville
-name ; generation; fils
-name ; locale; fr_CA
-
-expectedResult; M. de Larochellière Jean-Nicolas Louis Marcel fils
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; M. Jean-Nicolas Louis Marcel de Larochellière fils
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Larochellière, Jean-Nicolas Louis Marcel de
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Larochellière, Jean-Nicolas L. M. de
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; de Larochellière Jean-Nicolas L. M.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Jean-Nicolas L. M. de Larochellière
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Larochellière, J.-N. L. M. de
-
-parameters; sorting; short; referring; formal
-
-expectedResult; de Larochellière J.-N. L. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; J.-N. L. M. de Larochellière
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; de Larochellière J.-N.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Larochellière, Nico de
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; de Larochellière Nico
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Nico de Larochellière
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; M. de Larochellière
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Nico d. L.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Nico
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JLL
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; LJL
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JL
-
-parameters; givenFirst; medium; monogram; formal
-
-expectedResult; LJ
-
-parameters; surnameFirst; medium; monogram; formal
-
-expectedResult; LN
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; NL
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; L
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; N
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Asmar
-name ; locale; ko_AQ
-
-expectedResult; Asmar
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Hermione
-name ; surname; Granger
-name ; locale; ko_AQ
-
-expectedResult; Granger, Hermione
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Granger Hermione
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Hermione Granger
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Granger, H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Hermione G.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Granger H.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; H. Granger
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hermione
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Granger
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GH
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; HG
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; H
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; Ginevra
-name ; given2; Molly
-name ; surname; Weasley
-name ; locale; ko_AQ
-
-expectedResult; Weasley, Ginevra Molly
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Ginevra Molly Weasley
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Weasley Ginevra Molly
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Weasley, Ginevra M.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ginevra M. Weasley
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Weasley Ginevra M.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Weasley, Ginevra
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ginevra Weasley
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Weasley Ginevra
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Weasley, G. M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; G. M. Weasley
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Weasley G. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Ginevra W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Weasley G.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ginevra
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Weasley
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; GMW
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; WGM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; GW
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; WG
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; G
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; W
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; María Florencia
-name ; given-informal; Flor
-name ; given2; Martina Cristina
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr.
-name ; credentials; MD DDS
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dr. María Florencia Martina Cristina von Brühl Jr., MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Prof. Dr. von Brühl María Florencia Martina Cristina Jr., MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Brühl, María Florencia Martina Cristina von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, María Florencia M. C. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; María Florencia M. C. von Brühl
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl María Florencia M. C.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, M. F. M. C. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. F. M. C. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl M. F. M. C.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof. Dr. von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Brühl, Flor von
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; von Brühl M. F.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Flor von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl Flor
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Flor v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Flor
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BMM
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MMB
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; BF
-
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; BM
-
-parameters; surnameFirst; medium; monogram; formal
-
-expectedResult; FB
-
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MB
-
-parameters; givenFirst; medium; monogram; formal
-
-expectedResult; B
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; F
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ga.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ga.txt
index 3aba9ec85..eae720d2d 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ga.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ga.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ga
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gd.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gd.txt
index c20b60214..d2b1b8837 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gd.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gd.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gd
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gl.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gl.txt
index a05b02af4..5000968a8 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gl.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gl
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gu.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gu.txt
index aa7aa5c26..a1a164e90 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gu.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/gu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: gu
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha.txt
index 474b7a3c3..d6fff6a1a 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ha
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha_NE.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha_NE.txt
deleted file mode 100644
index d2c879c66..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ha_NE.txt
+++ /dev/null
@@ -1,762 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: ha_NE
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Sule
-name ; locale; ha_NE
-
-expectedResult; Sule
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Shehu
-name ; surname; Muhammed
-name ; locale; ha_NE
-
-expectedResult; Muhammed, Shehu
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Muhammed Shehu
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Shehu Muhammed
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Muhammed S.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; S. Muhammed
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Muhammed
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Shehu M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Shehu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Fatima
-name ; given2; Amina
-name ; surname; Umar
-name ; locale; ha_NE
-
-expectedResult; Umar, Fatima Amina
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Fatima Amina Umar
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Umar Fatima Amina
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Umar Fatima A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Umar, Fatima
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Fatima Umar
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Umar Fatima
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; F. A. Umar
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Umar F. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Fatima U.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Umar F.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Fatima
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Umar
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; FAU
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; UFA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; UF
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; F
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; U
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Malam
-name ; given; Shehu
-name ; given2; Bello
-name ; surname-core; Modibbo
-name ; credentials; MP
-name ; locale; ha_NE
-
-expectedResult; Malam Shehu Bello Modibbo MP
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Modibbo Malam Shehu Bello MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Modibbo, Shehu Bello
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Modibbo Shehu B. MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Modibbo, Shehu
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Malam Modibbo
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Modibbo S. B.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Modibbo Shehu
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. B. Modibbo
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Shehu Modibbo
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Modibbo S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Shehu M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Shehu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSB
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SBM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Farf. Dr.
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; Eva Sophia
-name ; surname-prefix; van den
-name ; surname-core; Wolf
-name ; surname2; Becker Schmidt
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Farf. Dr. Ada Cornelia Eva Sophia van den Wolf Becker Schmidt M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; van den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; van den Wolf Ada Cornelia E. S. Jr, M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Wolf, Ada Cornelia Eva Sophia van den
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; A. C. E. S. van den Wolf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; van den Wolf A. C. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Farf. Dr. van den Wolf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Wolf, Neele
-
-parameters; sorting; long; referring; informal
-
-expectedResult; Neele van den Wolf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; van den Wolf A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; van den Wolf Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. d. W.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/he.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/he.txt
index adccf7613..9bee575e0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/he.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/he.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: he
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi.txt
index d9021e942..6fde59f4b 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hi
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi_Latn.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi_Latn.txt
index 4bac4f344..cdd12e006 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi_Latn.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hi_Latn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hi_Latn
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hr.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hr.txt
index c8b4c4508..c944a06a2 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hr.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hr
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hsb.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hsb.txt
index 40fa1470c..65980c01c 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hsb.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hsb.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hsb
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hu.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hu.txt
index ffd6167bb..0282ddb51 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hu.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hu
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hy.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hy.txt
index 98390483c..129c9ef9a 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hy.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/hy.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: hy
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/id.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/id.txt
index 0069dcc04..2c43aa4ed 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/id.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/id.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: id
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ig.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ig.txt
index ba7c854cb..c9a7755a2 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ig.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ig.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ig
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/is.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/is.txt
index f276fc1c8..b593480a0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/is.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/is.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: is
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/it.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/it.txt
index 94d1f4308..0fa151d2a 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/it.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/it.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: it
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ja.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ja.txt
index da3fd82e4..1ff2d977e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ja.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ja.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ja
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/jv.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/jv.txt
index ecd4f8180..1cd2195ce 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/jv.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/jv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: jv
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ka.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ka.txt
index ced01ad4d..412ebf1b4 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ka.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ka.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ka
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kk.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kk.txt
index 2a46fc875..1d55b15f1 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kk.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kk
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/km.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/km.txt
index e2f529fbd..a457bd4a0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/km.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/km.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: km
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kn.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kn.txt
index 295c955b8..9a773f820 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kn.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kn
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ko.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ko.txt
index a04f3bc91..3e4319a3e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ko.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ko.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ko
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kok.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kok.txt
index aef93c2ef..9af38f5e3 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kok.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/kok.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: kok
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ky.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ky.txt
index bdc49df6e..37553ed86 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ky.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ky.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ky
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lo.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lo.txt
index 094259ed5..29e47e22b 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lo.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lo
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lt.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lt.txt
index ab79d6e88..8bdba8e63 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lt.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lt.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lt
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lv.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lv.txt
index d7a6d1482..48059189c 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lv.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/lv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: lv
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mk.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mk.txt
index fe66a9bab..12a4423bc 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mk.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mk
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ml.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ml.txt
index a2d583167..b18f25f1e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ml.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ml.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ml
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mn.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mn.txt
index 23bff1e29..e702e69db 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mn.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mn
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mr.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mr.txt
index f42c24ed6..716ce3746 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mr.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/mr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: mr
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ms.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ms.txt
index 7d046ce6a..b5f9438d5 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ms.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ms.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ms
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/my.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/my.txt
index e7fcdfcb5..d512446c7 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/my.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/my.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: my
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ne.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ne.txt
index 771c007ea..ad0aa217e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ne.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ne.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ne
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nl.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nl.txt
index dcb197e39..8e469d2d9 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nl.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: nl
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nn.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nn.txt
index 0f3ffeb63..a6272c8f4 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nn.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/nn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: nn
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/no.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/no.txt
index 86734e653..777ee130c 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/no.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/no.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: no
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/or.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/or.txt
index fc4c7931e..7f67e5a60 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/or.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/or.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: or
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pa.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pa.txt
index 55ce96617..4814f8d89 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pa.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pa.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pa
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pl.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pl.txt
index dc2c1ff7a..94423727c 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pl.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pl
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ps.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ps.txt
index b640ee021..8206054d0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ps.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ps.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ps
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt.txt
index d7d9f9948..a121341c8 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: pt
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt_PT.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt_PT.txt
deleted file mode 100644
index 5f4c0ffeb..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/pt_PT.txt
+++ /dev/null
@@ -1,814 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: pt_PT
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Maria
-name ; locale; pt_PT
-
-expectedResult; Maria
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; M
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Maria
-name ; surname; Silva
-name ; locale; pt_PT
-
-expectedResult; Silva, Maria
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Maria Silva
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Silva Maria
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Silva, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Maria S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Silva M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Maria
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Maria João
-name ; given2; Pedro
-name ; surname; Silva
-name ; locale; pt_PT
-
-expectedResult; Silva, Maria João Pedro
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Maria João Pedro Silva
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Silva Maria João Pedro
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Maria João P. Silva
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Silva Maria João P.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Silva, Maria João
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Maria João Pedro
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Maria João Silva
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Silva Maria João
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Silva, M. J. P.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. J. P. Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Silva M. J. P.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Maria João S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Silva M. J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Maria João
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MPS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SMP
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Sr.
-name ; given; José
-name ; given-informal; Zé
-name ; given2; Pedro Eduardo
-name ; surname-prefix; da
-name ; surname-core; Silva
-name ; surname2; Silveira
-name ; generation; Jr.
-name ; credentials; MP
-name ; locale; pt_PT
-
-expectedResult; da Silva Sr. José Pedro Eduardo Jr., MP
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Sr. José Pedro Eduardo da Silva Jr., MP
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Silva, José Pedro Eduardo da
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; da Silva José P. E. Jr., MP
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; José P. E. da Silva Jr., MP
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Sr. José Pedro Eduardo
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; da Silva, J. P. E.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; da Silva J. P. E.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; J. P. E. da Silva
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sr. José da Silva
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; da Silva, Zé
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; da Silva J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; da Silva Zé
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zé da Silva
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Sr. José
-
-parameters; givenFirst; long; addressing; formal
-
-expectedResult; Zé d. S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; DJP
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JPD
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; DZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZD
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; Zé
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; D
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ja_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ja_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ja_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Hamish
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; Stöber, Z. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dr.
-name ; given; Mary Lou
-name ; given-informal; Neele
-name ; given2; Cesare Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; MD DDS
-name ; locale; ja_AQ
-
-expectedResult; Prof. Dr. Mary Lou Cesare Martín von Brühl Jr, MD DDS
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Prof. Dr. Mary Lou Cesare Martín Jr, MD DDS
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Mary Lou C. M. von Brühl Jr, MD DDS
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Mary Lou C. M. Jr, MD DDS
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Mary Lou Cesare Martín von
-
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof. Dr. Mary Lou Cesare Martín
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Prof. Dr. Mary Lou von Brühl
-
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; von Brühl, M. L. C. M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; M. L. C. M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl M. L. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Prof. Dr. Mary Lou
-
-parameters; givenFirst; long; addressing; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl M. L.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MCV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VMC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/qu.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/qu.txt
index 6122737fc..1318852ac 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/qu.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/qu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: qu
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ro.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ro.txt
index 5b8e6b8e0..8a1585735 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ro.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ro.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ro
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ru.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ru.txt
index 070e3a3d5..2f556cf6a 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ru.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ru.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ru
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sc.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sc.txt
index 1c0c0cc60..4ca703902 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sc.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sc.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sc
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sd.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sd.txt
index 33fecc3e3..4a6e6bd39 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sd.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sd.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sd
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/si.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/si.txt
index e3231077e..3a889b0d7 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/si.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/si.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: si
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sk.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sk.txt
index 39569e58f..e23c70af7 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sk.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sk
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sl.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sl.txt
index 6b0e0f7bc..7ce7763e0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sl.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sl.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sl
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/so.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/so.txt
index b07186c77..a9ef691e9 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/so.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/so.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: so
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sq.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sq.txt
index e2f7e2d70..682d8ed74 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sq.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sq.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sq
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr.txt
index 2167976d0..b13c1252a 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sr
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Cyrl_BA.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Cyrl_BA.txt
deleted file mode 100644
index e786482eb..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Cyrl_BA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sr_Cyrl_BA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Иван
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Иван
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; И
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Ирена
-name ; surname; Марковић
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Марковић, Ирена
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ирена Марковић
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Марковић Ирена
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Марковић, И.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; И. Марковић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Марковић И.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Ирена М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Марковић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Ирена
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ИМ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; МИ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; И
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Јован
-name ; given2; Драган
-name ; surname; Поповић
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Поповић, Јован Драган
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Јован Драган Поповић
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Поповић Јован Драган
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Поповић, Јован Д.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Јован Д. Поповић
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Поповић Јован Д.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Поповић, Ј. Д.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Поповић, Јован
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ј. Д. Поповић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Јован Поповић
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Поповић Ј. Д.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Поповић Јован
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Поповић Ј.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Јован П.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Поповић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Јован
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ЈДП
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ПЈД
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ЈП
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ПЈ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; Ј
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; П
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; др
-name ; given; Слађана
-name ; given-informal; Слађа
-name ; given2; Вера
-name ; surname-core; Миленковић
-name ; generation; млађи
-name ; credentials; дипл. инж.
-name ; locale; sr_Cyrl_BA
-
-expectedResult; Миленковић др Слађана Вера млађи, дипл. инж.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Миленковић Слађана В. млађи, дипл. инж.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Слађана В. Миленковић млађи, дипл. инж.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; др Слађана Вера Миленковић дипл. инж.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Миленковић, Слађана Вера
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Миленковић, Слађана В.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Миленковић, С. В.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Миленковић, Слађа
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Миленковић С. В.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Миленковић Слађа
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; С. В. Миленковић
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Слађа Миленковић
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; др Миленковић
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Миленковић С.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Слађа М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Слађа
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; МСВ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; СВМ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; МС
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; СМ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; С
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Синбад
-name ; locale; ko_AQ
-
-expectedResult; Синбад
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; С
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Кете
-name ; surname; Милер
-name ; locale; ko_AQ
-
-expectedResult; Милер, Кете
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Кете Милер
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Милер Кете
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Милер, К.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; К. Милер
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Милер К.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Кете М.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Милер
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Кете
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; КМ
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; МК
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; К
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; М
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Цецилија
-name ; given2; Хемиш
-name ; surname; Штебер
-name ; locale; ko_AQ
-
-expectedResult; Штебер, Цецилија Хемиш
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Цецилија Хемиш Штебер
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Штебер Цецилија Хемиш
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Штебер, Цецилија Х.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Цецилија Х. Штебер
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Штебер Цецилија Х.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Штебер, Цецилија
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Цецилија Штебер
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Штебер Цецилија
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Штебер, Ц. Х.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Ц. Х. Штебер
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Штебер Ц. Х.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Цецилија Ш.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Штебер Ц.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Цецилија
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Штебер
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; ЦХШ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ШЦХ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ЦШ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ШЦ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; Ц
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; Ш
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; проф. др
-name ; given; Александра
-name ; given-informal; Сања
-name ; given2; Ева Сара
-name ; surname-prefix; ван ден
-name ; surname-core; Волф
-name ; surname2; Петровић Југовић
-name ; generation; млађи
-name ; credentials; дипл. инж.
-name ; locale; ko_AQ
-
-expectedResult; проф. др Александра Ева Сара ван ден Волф Петровић Југовић дипл. инж.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; ван ден Волф проф. др Александра Ева Сара млађи, дипл. инж.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Александра Е. С. ван ден Волф млађи, дипл. инж.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; ван ден Волф Александра Е. С. млађи, дипл. инж.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Волф, Александра Ева Сара ван ден
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Волф, Александра Е. С. ван ден
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Волф, А. Е. С. ван ден
-
-parameters; sorting; short; referring; formal
-
-expectedResult; А. Е. С. ван ден Волф
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; ван ден Волф А. Е. С.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; проф. др ван ден Волф
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; ван ден Волф, Сања
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; ван ден Волф Сања
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Сања ван ден Волф
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; ван ден Волф А.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Сања в. д. В.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Сања
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; АЕВ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ВАЕ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ВС
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; СВ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; В
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; С
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn.txt
index fb8c4342e..f8834dff6 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sr_Latn
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn_BA.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn_BA.txt
deleted file mode 100644
index d37883f16..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sr_Latn_BA.txt
+++ /dev/null
@@ -1,818 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sr_Latn_BA
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Ivan
-name ; locale; sr_Latn_BA
-
-expectedResult; Ivan
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; I
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Irena
-name ; surname; Marković
-name ; locale; sr_Latn_BA
-
-expectedResult; Marković, Irena
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Irena Marković
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Marković Irena
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Marković, I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; I. Marković
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Marković I.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Irena M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Marković
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Irena
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; IM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MI
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; I
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeGGS
-name ; given; Jovan
-name ; given2; Dragan
-name ; surname; Popović
-name ; locale; sr_Latn_BA
-
-expectedResult; Popović, Jovan Dragan
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Jovan Dragan Popović
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Popović Jovan Dragan
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Popović, Jovan D.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Jovan D. Popović
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Popović Jovan D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Popović, J. D.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Popović, Jovan
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; J. D. Popović
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Jovan Popović
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Popović J. D.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Popović Jovan
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Popović J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Jovan P.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Popović
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Jovan
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JDP
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; PJD
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; JP
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; PJ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; P
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; dr
-name ; given; Slađana
-name ; given-informal; Slađa
-name ; given2; Vera
-name ; surname-core; Milenković
-name ; generation; mlađi
-name ; credentials; dipl. inž.
-name ; locale; sr_Latn_BA
-
-expectedResult; Milenković dr Slađana Vera mlađi, dipl. inž.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Milenković Slađana V. mlađi, dipl. inž.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Slađana V. Milenković mlađi, dipl. inž.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; dr Slađana Vera Milenković dipl. inž.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Milenković, Slađana Vera
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Milenković, Slađana V.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Milenković, S. V.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Milenković, Slađa
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Milenković S. V.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Milenković Slađa
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. V. Milenković
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Slađa Milenković
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; dr Milenković
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Milenković S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Slađa M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Slađa
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSV
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SVM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Kete
-name ; surname; Miler
-name ; locale; ko_AQ
-
-expectedResult; Miler, Kete
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Kete Miler
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Miler Kete
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Miler, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Miler
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Miler K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Kete M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Miler
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Kete
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Cecilija
-name ; given2; Hemiš
-name ; surname; Šteber
-name ; locale; ko_AQ
-
-expectedResult; Šteber, Cecilija Hemiš
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Cecilija Hemiš Šteber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Šteber Cecilija Hemiš
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Šteber, Cecilija H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Cecilija H. Šteber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Šteber Cecilija H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Šteber, Cecilija
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Cecilija Šteber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Šteber Cecilija
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Šteber, C. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; C. H. Šteber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Šteber C. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Cecilija Š.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Šteber C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Cecilija
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Šteber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; CHŠ
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; ŠCH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; CŠ
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; ŠC
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; C
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; Š
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignFull
-name ; title; prof. dr
-name ; given; Aleksandra
-name ; given-informal; Sanja
-name ; given2; Eva Sara
-name ; surname-prefix; van den
-name ; surname-core; Volf
-name ; surname2; Petrović Jugović
-name ; generation; mlađi
-name ; credentials; dipl. inž.
-name ; locale; ko_AQ
-
-expectedResult; prof. dr Aleksandra Eva Sara van den Volf Petrović Jugović dipl. inž.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; van den Volf prof. dr Aleksandra Eva Sara mlađi, dipl. inž.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Aleksandra E. S. van den Volf mlađi, dipl. inž.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; van den Volf Aleksandra E. S. mlađi, dipl. inž.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Volf, Aleksandra Eva Sara van den
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Volf, Aleksandra E. S. van den
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Volf, A. E. S. van den
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. E. S. van den Volf
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; prof. dr van den Volf
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; van den Volf A. E. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; van den Volf, Sanja
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Sanja van den Volf
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; van den Volf Sanja
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; van den Volf A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sanja v. d. V.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Sanja
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AEV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAE
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sv.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sv.txt
index bde781262..22fd9cb9c 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sv.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sv.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sv
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw.txt
index 119cc16e8..4a4dafad0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: sw
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw_KE.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw_KE.txt
deleted file mode 100644
index 07501b707..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/sw_KE.txt
+++ /dev/null
@@ -1,806 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: sw_KE
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Hassan
-name ; locale; sw_KE
-
-expectedResult; Hassan
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; H
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Maria
-name ; surname; Hasani
-name ; locale; sw_KE
-
-expectedResult; Hasani, Maria
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Hasani Maria
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Maria Hasani
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Hasani, M.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Hasani M.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; M. Hasani
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hasani
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Maria
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; HM
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; MH
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; H
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Ali
-name ; given2; Juma
-name ; surname; Hamisi
-name ; locale; sw_KE
-
-expectedResult; Hamisi, Ali Juma
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Ali Juma Hamisi
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Hamisi Ali Juma
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Hamisi, Ali J.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ali J. Hamisi
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Hamisi Ali J.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Hamisi, A. J.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. J. Hamisi
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Hamisi A. J.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Hamisi, Ali
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ali Hamisi
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Hamisi Ali
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Hamisi A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Hamisi
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; AJH
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; Ali
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; HAJ
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AH
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; HA
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; H
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; Bw.
-name ; given; Adam Juma
-name ; given-informal; Bita
-name ; given2; Agape Shukurani
-name ; surname-core; Masalu
-name ; generation; Jr
-name ; credentials; MB
-name ; locale; sw_KE
-
-expectedResult; Bw. Adam Juma Agape Shukurani Masalu MB
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Adam Juma Agape Shukurani Masalu MB
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Masalu Adam Juma Agape Shukurani MB
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Masalu, Adam Juma Agape Shukurani
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adam Juma A. S. Masalu Jr, MB
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Masalu Adam Juma A. S. MB
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Masalu, Adam Juma A. S.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Masalu, A. J. A. S.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. J. A. S. Masalu
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Masalu A. J. A. S.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Masalu A. J.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Masalu, Bita
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bita Masalu
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Masalu Bita
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bw. Masalu
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Bita
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MAA
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; BM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; Kevin
-name ; locale; ko_AQ
-
-expectedResult; Kevin
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; K
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; John
-name ; surname; Mkwawa
-name ; locale; ko_AQ
-
-expectedResult; Mkwawa, John
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; John Mkwawa
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Mkwawa John
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Mkwawa, J.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; J. Mkwawa
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Mkwawa J.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Mkwawa
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; John
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; JM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MJ
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; J
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zamara
-name ; given2; Imani
-name ; surname; Bukenya
-name ; locale; ko_AQ
-
-expectedResult; Bukenya, Zamara Imani
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Bukenya Zamara Imani
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zamara Imani Bukenya
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bukenya, Zamara I.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Bukenya Zamara I.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zamara I. Bukenya
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Bukenya, Zamara
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Bukenya Zamara
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bukenya, Z. I.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Zamara Bukenya
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Bukenya Z. I.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. I. Bukenya
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Bukenya Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bukenya
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Zamara
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; BZI
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZIB
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; BZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZB
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Prof. Dk.
-name ; given; Salima
-name ; given-informal; Sarah
-name ; given2; Farida
-name ; surname-prefix; mwana
-name ; surname-core; Hamisi
-name ; surname2; Musa
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Prof. Dk. Salima Farida mwana Hamisi Musa M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; mwana Hamisi Salima Farida M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Salima F. mwana Hamisi Jr, M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Salima Farida mwana Hamisi M.D. Ph.D.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; mwana Hamisi Salima F. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Hamisi, Salima Farida mwana
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Hamisi, Salima F. mwana
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Prof. Dk. mwana Hamisi
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Hamisi, S. F. mwana
-
-parameters; sorting; short; referring; formal
-
-expectedResult; mwana Hamisi, Sarah
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; mwana Hamisi S. F.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; mwana Hamisi Sarah
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; S. F. mwana Hamisi
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Sarah mwana Hamisi
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; mwana Hamisi S.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Sarah
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; MSF
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; SFM
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; MS
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; SM
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ta.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ta.txt
index 37cc63ea2..8df191397 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ta.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ta.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ta
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/te.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/te.txt
index 4e7b4dc1a..a4d7825b6 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/te.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/te.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: te
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tg.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tg.txt
index e5e8f9424..fc22a6479 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tg.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tg.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tg
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/th.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/th.txt
index 8ae86cbb3..fe9094ccd 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/th.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/th.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: th
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ti.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ti.txt
index fc4873880..272692bd8 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ti.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ti.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ti
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tk.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tk.txt
index 25434d2a9..465f168c5 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tk.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tk
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tr.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tr.txt
index f04baa7b0..153de5121 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tr.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/tr.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: tr
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uk.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uk.txt
index eb599d84e..92e0f719e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uk.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uk.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: uk
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ur.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ur.txt
index 019584587..b6798fc66 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ur.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/ur.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: ur
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uz.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uz.txt
index 07ab62850..b99dab8d2 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uz.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/uz.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: uz
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/vi.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/vi.txt
index 895483649..a7c40d22d 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/vi.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/vi.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: vi
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/wo.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/wo.txt
index e16f3cffd..4e5e580b2 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/wo.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/wo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: wo
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo.txt
index fcb09dc7e..80c4c6ac9 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yo
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo_BJ.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo_BJ.txt
deleted file mode 100644
index 2acd74764..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yo_BJ.txt
+++ /dev/null
@@ -1,809 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: yo_BJ
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; Boluwatife
-name ; locale; yo_BJ
-
-expectedResult; Boluwatife
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; B
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; Olabisi
-name ; surname; Adeboye
-name ; locale; yo_BJ
-
-expectedResult; Adeboye, Olabisi
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adeboye Olabisi
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Olabisi Adeboye
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adeboye, O.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Adeboye O.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; O. Adeboye
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Olabisi A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Adeboye
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Olabisi
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AO
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; OA
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; O
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; Adeolu
-name ; given2; Adegboyega
-name ; surname; Akintola
-name ; locale; yo_BJ
-
-expectedResult; Akintola, Adeolu Adegboyega
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adeolu Adegboyega Akintola
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Akintola Adeolu Adegboyega
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Akintola, Adeolu A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Adeolu A. Akintola
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Akintola Adeolu A.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Akintola, Adeolu
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Adeolu Akintola
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Akintola Adeolu
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Akintola, A. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. A. Akintola
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Akintola A. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Akintola A.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Adeolu A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Akintola
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Adeolu
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAA
-
-parameters; givenFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AA
-
-parameters; givenFirst; long; monogram; informal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeFull
-name ; title; Ɔ̀gbɛ́ni
-name ; given; Adebola Opeyemi
-name ; given-informal; Bolanle
-name ; given2; Olumide Ajao
-name ; surname-core; Adekunle
-name ; generation; Jr
-name ; credentials; Asofin
-name ; locale; yo_BJ
-
-expectedResult; Adebola Opeyemi Olumide Ajao Adekunle Asofin
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Adekunle Adebola Opeyemi Olumide Ajao Asofin
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Adekunle, Adebola Opeyemi Olumide Ajao
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Adebola Opeyemi O. A. Adekunle Asofin
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Adekunle Adebola Opeyemi O. A. Asofin
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Adekunle, Adebola Opeyemi O. A.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Adekunle, A. O. O. A.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. O. O. A. Adekunle
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Adekunle A. O. O. A.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Adekunle, Bolanle
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Ɔ̀gbɛ́ni Adekunle
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Adekunle Bolanle
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Bolanle Adekunle
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Adekunle A. O.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Bolanle A.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Bolanle
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; AAO
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; AOA
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; AB
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; BA
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; A
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; B
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignG
-name ; given; Sinbad
-name ; locale; ko_AQ
-
-expectedResult; Sinbad
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; S
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; Käthe
-name ; surname; Müller
-name ; locale; ko_AQ
-
-expectedResult; Müller, Käthe
-
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Käthe Müller
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Müller Käthe
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Müller, K.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; K. Müller
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Müller K.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Käthe M.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Müller
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Käthe
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; KM
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; MK
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; K
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; M
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignGGS
-name ; given; Zäzilia
-name ; given2; Hamish
-name ; surname; Stöber
-name ; locale; ko_AQ
-
-expectedResult; Stöber, Zäzilia Hamish
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Stöber Zäzilia Hamish
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Zäzilia Hamish Stöber
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; Stöber, Zäzilia H.
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Stöber Zäzilia H.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Zäzilia H. Stöber
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; Stöber, Zäzilia
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Stöber Zäzilia
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Zäzilia Stöber
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; Stöber, Z. H.
-
-parameters; sorting; short; referring; formal
-
-expectedResult; Stöber Z. H.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; Z. H. Stöber
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; Zäzilia S.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Stöber Z.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; Zäzilia
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; Stöber
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; SZH
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; ZHS
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; SZ
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; ZS
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; S
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; Z
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; Ɔ̀jɔ̀gbɔ́n Ɔ̀mɔ̀wé
-name ; given; Ada Cornelia
-name ; given-informal; Neele
-name ; given2; César Martín
-name ; surname-prefix; von
-name ; surname-core; Brühl
-name ; surname2; González Domingo
-name ; generation; Jr
-name ; credentials; M.D. Ph.D.
-name ; locale; ko_AQ
-
-expectedResult; Ada Cornelia César Martín von Brühl M.D. Ph.D.
-
-parameters; givenFirst; long; referring; formal
-
-expectedResult; von Brühl Ada Cornelia César Martín M.D. Ph.D.
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; Ada Cornelia C. M. von Brühl M.D. Ph.D.
-
-parameters; givenFirst; medium; referring; formal
-
-expectedResult; von Brühl Ada Cornelia C. M. M.D. Ph.D.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; Brühl, Ada Cornelia César Martín von
-
-parameters; sorting; long; referring; formal
-
-expectedResult; Brühl, Ada Cornelia C. M. von
-
-parameters; sorting; medium; referring; formal
-
-expectedResult; Ɔ̀jɔ̀gbɔ́n Ɔ̀mɔ̀wé von Brühl
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; Brühl, A. C. C. M. von
-
-parameters; sorting; short; referring; formal
-
-expectedResult; A. C. C. M. von Brühl
-
-parameters; givenFirst; short; referring; formal
-
-expectedResult; von Brühl A. C. C. M.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; von Brühl, Neele
-
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; Neele von Brühl
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; von Brühl A. C.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; von Brühl Neele
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-
-expectedResult; Neele v. B.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; Neele
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; ACV
-
-parameters; givenFirst; long; monogram; formal
-
-expectedResult; VAC
-
-parameters; surnameFirst; long; monogram; formal
-
-expectedResult; NV
-
-parameters; givenFirst; long; monogram; informal
-
-expectedResult; VN
-
-parameters; surnameFirst; long; monogram; informal
-
-expectedResult; N
-
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; V
-
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; short; monogram; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue.txt
index 845bd7b19..59d7ee8be 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yue
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue_Hans.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue_Hans.txt
index ff6d98760..3d7422817 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue_Hans.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/yue_Hans.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: yue_Hans
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh.txt
index 1fa6bd3dc..786e7cedd 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zh
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant.txt
index 18698d5bf..ad0e8f1bf 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zh_Hant
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant_HK.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant_HK.txt
deleted file mode 100644
index 34596362e..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zh_Hant_HK.txt
+++ /dev/null
@@ -1,712 +0,0 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
-# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
-# CLDR person name formatting test data for: zh_Hant_HK
-#
-# Test lines have the following structure:
-#
-# enum ; <type> ; <value>(', ' <value)
-# For all the elements in <…> below, the possible choices that could appear in the file.
-# For example, <field> could be any of title, given, … credentials.
-# Verify that all of these values work with the implementation.
-#
-# name ; <field>('-'<modifier>) ; <value>
-# A sequence of these is to be used to build a person name object with the given field values.
-# If the <field> is 'locale', then the value is the locale of the name.
-# That will always be the last field in the name.
-# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
-# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
-#
-# expectedResult; <value>
-# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
-#
-# parameters; <options>; <length>; <usage>; <formality>
-# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
-# the expected value is produced.
-#
-# endName
-# Indicates the end of the values to be tested with the current name.
-#
-# =====
-# Example:
-# enum ; field ; title, given, given2, surname, surname2, generation, credentials
-# …
-#
-# name ; given; Iris
-# name ; surname; Falke
-# name ; locale; de
-#
-# expectedResult; Falke, Iris
-#
-# parameters; sorting; long; referring; formal
-# parameters; sorting; medium; referring; informal
-#
-# endName
-#
-# name ; given; Max
-# name ; given2; Ben
-# name ; surname; Mustermann
-# …
-# =====
-
-enum ; field ; title, given, given2, surname, surname2, generation, credentials
-enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
-enum ; order ; givenFirst, surnameFirst, sorting
-enum ; length ; long, medium, short
-enum ; usage ; referring, addressing, monogram
-enum ; formality ; formal, informal
-
-# nativeG
-name ; given; 文傑
-name ; locale; zh_Hant_HK
-
-expectedResult; 文傑
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 文
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGS
-name ; given; 雅婷
-name ; surname; 張
-name ; locale; zh_Hant_HK
-
-expectedResult; 張雅.婷.
-
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 雅婷張.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 張雅婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷張
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 張雅
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 雅張
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 張
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# nativeGGS
-name ; given; 家豪
-name ; given2; 明德
-name ; surname; 林
-name ; locale; zh_Hant_HK
-
-expectedResult; 林家.豪.明.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 家豪明德林
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 林家.豪.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 林家豪明.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 林家豪明德
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; 家豪林.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 家明林
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 家豪林
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 林家明
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 林家豪
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 家豪
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 家
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 林
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# nativeFull
-name ; title; 先生
-name ; given; 雅婷
-name ; given-informal; 婷婷
-name ; given2; 婷婷
-name ; surname-core; 王
-name ; generation; 二世
-name ; credentials; 議員
-name ; locale; zh_Hant_HK
-
-expectedResult; 先生雅婷婷婷王二世,議員
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 王雅婷婷.二世,議員
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 王雅婷婷婷二世議員
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; 王雅.婷.婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王雅.婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王雅婷婷婷
-
-parameters; sorting; long; referring; formal
-
-expectedResult; 婷婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 婷婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 王先生
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; 王婷婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 婷婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 婷
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 王
-
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
-
-# foreignG
-name ; given; 雅婷
-name ; locale; fr_AQ
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; referring; formal
-parameters; givenFirst; short; referring; informal
-parameters; givenFirst; short; addressing; formal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; referring; formal
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; referring; formal
-parameters; surnameFirst; short; referring; informal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; addressing; informal
-parameters; sorting; long; referring; formal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; formal
-parameters; sorting; medium; referring; informal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; medium; monogram; informal
-parameters; surnameFirst; short; monogram; formal
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGS
-name ; given; 雅婷
-name ; surname; 王
-name ; locale; fr_AQ
-
-expectedResult; 王·雅.·婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王雅.·婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王·雅婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷·王
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 雅婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; formal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 王雅
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 雅王
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 王
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignGGS
-name ; given; 雅婷
-name ; given2; 婷婷
-name ; surname; 王
-name ; locale; fr_AQ
-
-expectedResult; 王·雅.·婷.·婷.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 王·雅婷·婷婷
-
-parameters; surnameFirst; long; referring; formal
-parameters; sorting; long; referring; formal
-
-expectedResult; 雅婷·婷婷·王
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 王雅.·婷.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 王雅婷婷.
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 王·雅婷
-
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-parameters; sorting; short; referring; informal
-
-expectedResult; 雅婷王.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 王雅婷
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; surnameFirst; medium; monogram; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 雅婷王
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; referring; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 雅婷
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 王
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; addressing; formal
-parameters; surnameFirst; short; monogram; formal
-
-expectedResult; 雅
-
-parameters; surnameFirst; short; monogram; informal
-
-endName
-
-# foreignFull
-name ; title; 博士
-name ; given; 怡君
-name ; given-informal; 小君
-name ; given2; 達印
-name ; surname-prefix; 馮
-name ; surname-core; 陳
-name ; generation; 二世
-name ; credentials; 醫學博士
-name ; locale; fr_AQ
-
-expectedResult; 博士·怡君·達印·馮·陳·二世,·醫學博士
-
-parameters; givenFirst; long; referring; formal
-parameters; givenFirst; medium; referring; formal
-parameters; givenFirst; short; referring; formal
-
-expectedResult; 馮·陳怡君達.·印.二世,醫學博士
-
-parameters; surnameFirst; medium; referring; formal
-
-expectedResult; 馮·陳·怡君·達印·二世醫學博士
-
-parameters; surnameFirst; long; referring; formal
-
-expectedResult; 馮·陳·怡.·君.·達.·印.
-
-parameters; surnameFirst; short; referring; formal
-
-expectedResult; 馮·陳·怡君·達印
-
-parameters; sorting; long; referring; formal
-
-expectedResult; 馮·陳怡.·君.
-
-parameters; surnameFirst; short; referring; informal
-
-expectedResult; 小君馮.·陳.
-
-parameters; givenFirst; short; referring; informal
-
-expectedResult; 馮·陳·博士
-
-parameters; givenFirst; long; addressing; formal
-parameters; givenFirst; medium; addressing; formal
-parameters; givenFirst; short; addressing; formal
-
-expectedResult; 馮·陳·小君
-
-parameters; sorting; short; referring; informal
-
-expectedResult; 馮·陳·怡君
-
-parameters; sorting; medium; referring; formal
-parameters; sorting; short; referring; formal
-
-expectedResult; 小君馮·陳
-
-parameters; givenFirst; long; referring; informal
-parameters; givenFirst; medium; referring; informal
-
-expectedResult; 馮·陳博士
-
-parameters; surnameFirst; long; addressing; formal
-parameters; surnameFirst; medium; addressing; formal
-parameters; surnameFirst; short; addressing; formal
-
-expectedResult; 馮·陳小君
-
-parameters; surnameFirst; long; referring; informal
-parameters; surnameFirst; medium; referring; informal
-parameters; sorting; long; referring; informal
-parameters; sorting; medium; referring; informal
-
-expectedResult; 怡達馮
-
-parameters; givenFirst; long; monogram; formal
-parameters; givenFirst; long; monogram; informal
-parameters; givenFirst; medium; monogram; formal
-parameters; givenFirst; medium; monogram; informal
-parameters; givenFirst; short; monogram; formal
-parameters; givenFirst; short; monogram; informal
-
-expectedResult; 馮怡達
-
-parameters; surnameFirst; long; monogram; formal
-parameters; surnameFirst; long; monogram; informal
-parameters; surnameFirst; medium; monogram; informal
-
-expectedResult; 小君
-
-parameters; givenFirst; long; addressing; informal
-parameters; givenFirst; medium; addressing; informal
-parameters; givenFirst; short; addressing; informal
-parameters; surnameFirst; long; addressing; informal
-parameters; surnameFirst; medium; addressing; informal
-parameters; surnameFirst; short; addressing; informal
-
-expectedResult; 小
-
-parameters; surnameFirst; short; monogram; informal
-
-expectedResult; 馮
-
-parameters; surnameFirst; medium; monogram; formal
-parameters; surnameFirst; short; monogram; formal
-
-endName
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zu.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zu.txt
index e9c2b0db5..2b76af487 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zu.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/personNameTest/zu.txt
@@ -1,9 +1,8 @@
-# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Test data for Person Name Data
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
-#
# CLDR person name formatting test data for: zu
#
# Test lines have the following structure:
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitLocalePreferencesTest.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitLocalePreferencesTest.txt
new file mode 100644
index 000000000..1922607f9
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitLocalePreferencesTest.txt
@@ -0,0 +1,42 @@
+# Test data for unit locale preferences
+# Copyright © 1991-2024 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-3.0
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+# input-unit; amount; usage; languageTag; expected-unit; expected-amount # comment
+#
+# • The amounts are both rationals
+# • The comment is optional (if it isn't present the # can be omitted)
+#
+# Use: Convert the Input amount & unit according to the Usage and Locale.
+# The result should match the Expected amount and unit.
+#
+# The input and expected output units are unit identifers; in particular, the output does not have further processing:
+# • no localization
+#
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-ussystem-mu-celsius; celsius; -155/9 # mu > ms > rg > (likely) region
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-ussystem-mu-celsius; celsius; -155/9
+fahrenheit; 1; default; en-u-rg-uszzzz-ms-metric; celsius; -155/9
+fahrenheit; 1; default; en-u-rg-dezzzz; celsius; -155/9
+fahrenheit; 1; default; en-DE; celsius; -155/9 # explicit region > likely region
+fahrenheit; 1; default; en-US; fahrenheit; 1
+fahrenheit; 1; default; en; fahrenheit; 1 # likely region = US
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz-ms-metric; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-u-rg-dezzzz; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-DE; liter; 11.365225
+gallon-imperial; 2.5; fluid; en-US-u-rg-uszzzz-ms-uksystem; gallon-imperial; 2.5 # ms-uksystem should behave like GB
+gallon-imperial; 2.5; fluid; en-u-rg-gbzzzz; gallon-imperial; 2.5
+gallon-imperial; 2.5; fluid; en-GB; gallon-imperial; 2.5
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz-ms-ussystem; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en-u-rg-uszzzz; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en-US; gallon; 1,420,653,125/473176473
+gallon-imperial; 2.5; fluid; en; gallon; 1,420,653,125/473176473 # likely region = US
+ampere; 2.5; default; en; ampere; 2.5 # an input unit whose quantity has no preference data should get base units
+pound-force-foot; 12,345; default; en; kilowatt-hour; 0.004649325714486427205
+kilocandela; 1; default; en; candela; 1,000 # an input unit whose quantity has no preference data should get base units
+candela-per-byte; 1; default; en; candela-per-bit; 0.125 # an input unit that has no quantity should get base units
+candela-per-cubic-foot; 1; default; en; candela-per-cubic-meter; 1,953,125,000/55306341 # an input unit that has no quantity should get base units
+foot; 1; default; de-u-mu-celsius; centimeter; 30.48 # a -mu unit that is not convertible from the input unit should get ignored
+#pound; 28; default; en-u-mu-stone; stone; 2 # only temperature units are supported
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitPreferencesTest.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitPreferencesTest.txt
index 61abdcafd..dbf3ce4d4 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitPreferencesTest.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitPreferencesTest.txt
@@ -1,8 +1,8 @@
# Test data for unit preferences
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -22,7 +22,7 @@
# • no formatted with the skeleton
# • no suppression of zero values (for secondary -and- units such as pound in stone-and-pound)
#
-# Generation: Set GENERATE_TESTS in TestUnits.java to regenerate unitPreferencesTest.txt.
+# Generation: Use GenerateUnitTestData.java to regenerate unitPreferencesTest.txt.
area; default; 001; 1100000; 1100000.0; square-meter; 11/10; 1.1; square-kilometer
area; default; 001; 1000000; 1000000.0; square-meter; 1; 1.0; square-kilometer
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitsTest.txt b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitsTest.txt
index 233a9304e..8999a44f8 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitsTest.txt
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr/units/unitsTest.txt
@@ -1,7 +1,7 @@
# Test data for unit conversions
-# Copyright © 1991-2023 Unicode, Inc.
+# Copyright © 1991-2024 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# SPDX-License-Identifier: Unicode-DFS-2016
+# SPDX-License-Identifier: Unicode-3.0
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -12,7 +12,7 @@
# round to 4 decimal digits before comparing.
# Note that certain conversions are approximate, such as degrees to radians
#
-# Generation: Set GENERATE_TESTS in TestUnits.java to regenerate unitsTest.txt.
+# Generation: Use GenerateUnitTestData.java to regenerate unitsTest.txt.
acceleration ; meter-per-square-second ; meter-per-square-second ; 1 * x ; 1,000.00
acceleration ; g-force ; meter-per-square-second ; 9.80665 * x ; 9806.65
@@ -182,6 +182,7 @@ resolution ; pixel-per-inch ; pixel-per-meter ; 5,000/127 * x ; 39370.08
resolution ; dot-per-centimeter ; pixel-per-meter ; 100 * x ; 100000.0
resolution ; pixel-per-centimeter ; pixel-per-meter ; 100 * x ; 100000.0
solid-angle ; steradian ; square-revolution ; 4,290,444,930,214,144/169379976663492169 * x ; 25.3303
+speed ; beaufort ; meter-per-second ; special:beaufort(x) ; 58.6
speed ; kilometer-per-hour ; meter-per-second ; 2.5/9 * x ; 277.7778
speed ; mile-per-hour ; meter-per-second ; 0.44704 * x ; 447.04
speed ; knot ; meter-per-second ; 4.63/9 * x ; 514.4444
@@ -189,9 +190,9 @@ speed ; meter-per-second ; meter-per-second ; 1 * x ; 1,000.00
substance-amount ; item ; item ; 1 * x ; 1,000.00
substance-amount ; mole ; item ; 602,214,076,000,000,000,000,000 * x ; 6.022141E26
temperature ; rankine ; kelvin ; 5/9 * x ; 555.5556
-temperature ; fahrenheit ; kelvin ; 5/9 * x - 2,298.35/9 ; 810.9278
+temperature ; fahrenheit ; kelvin ; 5/9 * x + 2,298.35/9 ; 810.9278
temperature ; kelvin ; kelvin ; 1 * x ; 1,000.00
-temperature ; celsius ; kelvin ; 1 * x - 273.15 ; 1273.15
+temperature ; celsius ; kelvin ; 1 * x + 273.15 ; 1273.15
typewidth ; em ; em ; 1 * x ; 1,000.00
voltage ; volt ; kilogram-square-meter-per-cubic-second-ampere ; 1 * x ; 1000.0
volume ; drop ; cubic-meter ; 0.0000001540287998046875/3 * x ; 5.134293E-5
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/ibm9027.cnv b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/ibm9027.cnv
index ba3554c24..6fb1d4825 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/ibm9027.cnv
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/ibm9027.cnv
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/root.res b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/root.res
index d793c460d..b3a01b5fa 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/root.res
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/root.res
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/structLocale.res b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/structLocale.res
index 676cd0a55..aebb0a397 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/structLocale.res
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/structLocale.res
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1.cnv b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1.cnv
index 24ea7e2ff..3c793f069 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1.cnv
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1.cnv
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1bmp.cnv b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1bmp.cnv
index e02852dba..0dc7d250a 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1bmp.cnv
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test1bmp.cnv
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test2.cnv b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test2.cnv
index 44da9046f..d2b98e107 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test2.cnv
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test2.cnv
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test3.cnv b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test3.cnv
index be6a73238..d85bb0a9b 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test3.cnv
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test3.cnv
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4.cnv b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4.cnv
index 9ee3de4f9..16384c617 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4.cnv
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4.cnv
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4x.cnv b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4x.cnv
index 462a34809..7e07de8dd 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4x.cnv
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test4x.cnv
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test5.cnv b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test5.cnv
index addbda43b..099548de6 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test5.cnv
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/testdata/test5.cnv
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/data-model-errors.json b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/data-model-errors.json
new file mode 100644
index 000000000..0a6bd6764
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/data-model-errors.json
@@ -0,0 +1,32 @@
+{
+ "Variant Key Mismatch": [
+ ".match {$foo :x} * * {{foo}}",
+ ".match {$foo :x} {$bar :x} * {{foo}}"
+ ],
+ "Missing Fallback Variant": [
+ ".match {:foo} 1 {{_}}",
+ ".match {:foo} other {{_}}",
+ ".match {:foo} {:bar} * 1 {{_}} 1 * {{_}}"
+ ],
+ "Missing Selector Annotation": [
+ ".match {$foo} one {{one}} * {{other}}",
+ ".input {$foo} .match {$foo} one {{one}} * {{other}}",
+ ".local $foo = {$bar} .match {$foo} one {{one}} * {{other}}"
+ ],
+ "Duplicate Declaration": [
+ ".input {$foo} .input {$foo} {{_}}",
+ ".input {$foo} .local $foo = {42} {{_}}",
+ ".local $foo = {42} .input {$foo} {{_}}",
+ ".local $foo = {:unknown} .local $foo = {42} {{_}}",
+ ".local $foo = {$bar} .local $bar = {42} {{_}}",
+ ".local $foo = {$foo} {{_}}",
+ ".local $foo = {$bar} .local $bar = {$baz} {{_}}",
+ ".local $foo = {$bar :func} .local $bar = {$baz} {{_}}",
+ ".local $foo = {42 :func opt=$foo} {{_}}",
+ ".local $foo = {42 :func opt=$bar} .local $bar = {42} {{_}}"
+ ],
+ "Duplicate Option Name": [
+ "bad {:placeholder option=x option=x}",
+ "bad {:placeholder ns:option=x ns:option=y}"
+ ]
+}
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-parser-tests.json b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-parser-tests.json
new file mode 100644
index 000000000..56e3094e5
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-parser-tests.json
@@ -0,0 +1,61 @@
+{
+ "Simple messages": [
+ "",
+ "Hello",
+ "Hello world!",
+ "Hello \\t \\n \\r \\{ world!",
+ "Hello world {:datetime}",
+ "Hello world {foo}",
+ "Hello {0} world",
+ "Hello {123} world",
+ "Hello {-123} world",
+ "Hello {3.1416} world",
+ "Hello {-3.1416} world",
+ "Hello {123E+2} world",
+ "Hello {123E-2} world",
+ "Hello {123.456E+2} world",
+ "Hello {123.456E-2} world",
+ "Hello {-123.456E+2} world",
+ "Hello {-123.456E-2} world",
+ "Hello {-123E+2} world",
+ "Hello {-123E-2} world",
+ "Hello world {$exp}",
+ "Hello world {$exp :datetime}",
+ "Hello world {|2024-02-27| :datetime}",
+ "Hello world {$exp :datetime style=long} and more",
+ "Hello world {$exp :function number=1234} and more",
+ "Hello world {$exp :function unquoted=left } and more",
+ "Hello world {$exp :function quoted=|Something| } and more",
+ "Hello world {$exp :function quoted=|Something with spaces| } and more",
+ "Hello world {$exp :function quoted=|Something with \\| spaces and \\| escapes| } and more",
+ "Hello world {$exp :function number=1234 unquoted=left quoted=|Something|}",
+ "Hello world {$exp :function number=1234 unquoted=left quoted=|Something longer|}",
+ "Hello world {$exp :function number=1234 unquoted=left quoted=|Something \\| longer|}"
+ ],
+ "Attributes": [
+ "Hello world {$exp}",
+ "Hello world {$exp @attr}",
+ "Hello world {$exp @valid @attr=a @attrb=123 @atrn=|foo bar|}",
+ "Hello world {$exp :date @valid @attr=aaaa @attrb=123 @atrn=|foo bar|}",
+ "Hello world {$exp :date year=numeric month=long day=numeric int=12 @valid @attr=a @attrb=123 @atrn=|foo bar|}"
+ ],
+ "Reserved and private": [
+ "Reserved {$exp &foo |something more protected|} and more",
+ "Reserved {$exp %foo |something quoted \\| inside|} and more",
+ "{{.starting with dot is OK here}}",
+ "{{Some string pattern, with {$foo} and {$exp :date style=long}!}}"
+ ],
+ "Simple messages, with declarations": [
+ ".input {$pi :number}",
+ ".input {$exp :date}",
+ ".local $foo = {$exp}",
+ ".local $foo = {$exp :date}",
+ ".local $foo = {$exp :date year=numeric month=long day=numeric}",
+ ".local $bar = {$foo :date month=medium}",
+ ".something |reserved=| {$foo :date}"
+ ],
+ "Multiple declarations in one message": [
+ ".input {$a :date} .local $b = {$a :date year=numeric month=long day=numeric} .local $c = {$b :date month=medium} .someting |reserved = \\| and more| {$x :date} {$y :date} {$z :number}",
+ ".input {$a :date} .local $exp = {$a :date style=full} {{Your card expires on {$exp}!}}"
+ ]
+}
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-functions.json b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-functions.json
new file mode 100644
index 000000000..9dc118bd0
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-functions.json
@@ -0,0 +1,193 @@
+{
+ "Date and time formats": [
+ {
+ "src": "Expires on {$exp}",
+ "exp": "Expires on 8/3/24, 9:43 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime}",
+ "exp": "Expires on 8/3/24, 9:43 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime icu:skeleton=yMMMMdjmsSSEE}",
+ "exp": "Expires on Sat, August 3, 2024 at 9:43:57.00 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime dateStyle=full}",
+ "exp": "Expires on Saturday, August 3, 2024"
+ },
+ {
+ "src": "Expires on {$exp :datetime dateStyle=long}",
+ "exp": "Expires on August 3, 2024"
+ },
+ {
+ "src": "Expires on {$exp :datetime dateStyle=medium}",
+ "exp": "Expires on Aug 3, 2024"
+ },
+ {
+ "src": "Expires on {$exp :datetime timeStyle=long}",
+ "exp": "Expires on 9:43:57 PM PDT"
+ },
+ {
+ "src": "Expires on {$exp :datetime timeStyle=medium}",
+ "exp": "Expires on 9:43:57 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime timeStyle=short}",
+ "exp": "Expires on 9:43 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime dateStyle=full timeStyle=medium}",
+ "exp": "Expires on Saturday, August 3, 2024 at 9:43:57 PM"
+ },
+ {
+ "src": "Expires on {$exp :datetime year=numeric month=long}",
+ "exp": "Expires on August 2024"
+ },
+ {
+ "src": "Expires on {$exp :datetime year=numeric month=medium day=numeric weekday=long hour=numeric minute=numeric}",
+ "exp": "Expires on 3 Saturday 2024, 9:43 PM"
+ },
+ {
+ "comment": "Make sure we ignore date / time fields if needed",
+ "src": "Expires on {$exp :date year=numeric month=medium day=numeric weekday=long hour=numeric minute=numeric}",
+ "exp": "Expires on 3 Saturday 2024"
+ },
+ {
+ "comment": "Make sure we ignore date / time fields if needed",
+ "src": "Expires at {$exp :time year=numeric month=medium day=numeric weekday=long hour=numeric minute=numeric}",
+ "exp": "Expires at 9:43 PM"
+ },
+ {
+ "comment": "Make sure we ignore date / time fields if needed",
+ "src": "Expires at {$exp :time style=long dateStyle=full timeStyle=medium}",
+ "exp": "Expires at 9:43:57 PM PDT"
+ },
+ {
+ "comment": "Make sure we ignore date / time fields if needed",
+ "src": "Expires on {$exp :date style=long dateStyle=full timeStyle=medium}",
+ "exp": "Expires on August 3, 2024"
+ }
+ ],
+ "Literals" : [
+ {
+ "src": "Expires on {|2025-02-27| :datetime dateStyle=full}",
+ "exp": "Expires on Thursday, February 27, 2025"
+ },
+ {
+ "src": "Expires at {|2024-07-02T19:23:45| :datetime timeStyle=full}",
+ "exp": "Expires at 7:23:45 PM Pacific Daylight Time"
+ },
+ {
+ "src": "Expires at {|2024-07-02T19:23:45.123| :datetime timeStyle=full}",
+ "exp": "Expires at 7:23:45 PM Pacific Daylight Time"
+ },
+ {
+ "src": "Expires on {|2025-02-27T19:23:45| :datetime dateStyle=full}",
+ "exp": "Expires on Thursday, February 27, 2025"
+ },
+ {
+ "src": "Expires at {|2024-07-02T19:23:45Z| :datetime timeStyle=long}",
+ "exp": "Expires at 7:23:45 PM GMT"
+ },
+ {
+ "src": "Expires at {|2024-07-02T19:23:45+03:30| :datetime timeStyle=full}",
+ "exp": "Expires at 7:23:45 PM GMT+03:30"
+ }
+ ],
+ "Chaining" : [
+ {
+ "comment": "Horibly long, but I really wanted to test multiple declarations with overrides, and you can't join strings in JSON",
+ "srcs": [
+ ".input {$exp :datetime timeStyle=short}\n",
+ ".input {$user :string}\n",
+ ".local $longExp = {$exp :datetime dateStyle=long}\n",
+ ".local $zooExp = {$exp :datetime dateStyle=short timeStyle=$tsOver}\n",
+ "{{Hello John, you want '{$exp}', '{$longExp}', or '{$zooExp}' or even '{$exp :datetime dateStyle=full}'?}}"
+ ],
+ "exp": "Hello John, you want '9:43 PM', 'August 3, 2024 at 9:43 PM', or '8/3/24, 9:43:57 PM Pacific Daylight Time' or even 'Saturday, August 3, 2024 at 9:43 PM'?"
+ },
+ {
+ "srcs": [
+ ".input {$exp :datetime year=numeric month=numeric day=|2-digit|}\n",
+ ".local $longExp = {$exp :datetime month=long weekday=long}\n",
+ "{{Expires on '{$exp}' ('{$longExp}').}}"
+ ],
+ "exp": "Expires on '8/03/2024' ('Saturday, August 03, 2024')."
+ }
+ ],
+ "Number formatter" : [
+ {
+ "src": "Format {$val} number",
+ "params": { "val": 31 },
+ "exp": "Format 31 number"
+ },
+ {
+ "src": "Format {123456789.9876} number",
+ "locale": "en-IN",
+ "exp": "Format 12,34,56,789.9876 number"
+ },
+ {
+ "src": "Format {|3.1416|} number",
+ "locale": "ar-AR-u-nu-latn",
+ "exp": "Format 3.1416 number"
+ },
+ {
+ "src": "Format {|3.1416|} number",
+ "locale": "ar-AR-u-nu-arab",
+ "exp": "Format ٣٫١٤١٦ number"
+ },
+ {
+ "src": "Format {3.1415926 :number}",
+ "exp": "Format 3.141593"
+ },
+ {
+ "src": "Format {3.1415926 :number maximumFractionDigits=4}",
+ "exp": "Format 3.1416"
+ },
+ {
+ "src": "Format {3 :number minimumFractionDigits=2}",
+ "exp": "Format 3.00"
+ },
+ {
+ "src": "Format {3.2 :number minimumFractionDigits=2}",
+ "exp": "Format 3.20"
+ },
+ {
+ "src": "Format {123456789.97531 :number maximumSignificantDigits=4}",
+ "exp": "Format 123,500,000"
+ },
+ {
+ "src": "Format {3.1415926 :number}",
+ "exp": "Format 3.141593"
+ },
+ {
+ "src": "Numbering system {123456 :number numberingSystem=deva}",
+ "exp": "Numbering system १२३,४५६"
+ },
+ {
+ "src": "Percent {0.1416 :number style=percent}",
+ "exp": "Percent 14.16%"
+ },
+ {
+ "src": "Scientific {123456789.97531 :number notation=scientific}",
+ "exp": "Scientific 1.234568E8"
+ },
+ {
+ "src": "Engineering {123456789.97531 :number notation=engineering}",
+ "exp": "Engineering 123.45679E6"
+ },
+ {
+ "src": "Compact {123456789.97531 :number notation=compact}",
+ "exp": "Compact 123M"
+ },
+ {
+ "src": "Compact {123456789.97531 :number notation=compact compactDisplay=long}",
+ "exp": "Compact 123 million"
+ },
+ {
+ "src": "Compact {123456789.97531 :number notation=compact compactDisplay=short}",
+ "exp": "Compact 123M"
+ }
+ ]
+}
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-previous-release.json b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-previous-release.json
new file mode 100644
index 000000000..6c235c2a3
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-previous-release.json
@@ -0,0 +1,390 @@
+[
+ {
+ "src": "hello",
+ "exp": "hello"
+ },
+ {
+ "src": "hello {|world|}",
+ "exp": "hello world"
+ },
+ {
+ "src": "hello {||}",
+ "exp": "hello "
+ },
+ {
+ "src": "hello {$place}",
+ "params": { "place": "world" },
+ "exp": "hello world"
+ },
+ {
+ "src": "hello {$place}",
+ "exp": "hello {$place}",
+ "errorsJs": [{ "type": "missing-var" }]
+ },
+ {
+ "src": "{$one} and {$two}",
+ "params" : { "one": 1.3, "two": 4.2 },
+ "exp": "1.3 and 4.2"
+ },
+ {
+ "src": "{$one} et {$two}",
+ "locale": "fr",
+ "params": { "one": 1.3, "two": 4.2 },
+ "exp": "1,3 et 4,2"
+ },
+ {
+ "src": "hello {|4.2| :number}",
+ "exp": "hello 4.2"
+ },
+ {
+ "locale": "ar-EG",
+ "src": "hello {|4.2| :number}",
+ "exp": "hello \u0664\u066B\u0662"
+ },
+ {
+ "src": "hello {|foo| :number}",
+ "exp": "hello {|foo|}"
+ },
+ {
+ "src": "hello {:number}",
+ "exp": "hello {|foo|}",
+ "comment": "This is different from JS, should be an error.",
+ "errors": [{ "type": "ICU4J: exception" }]
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=2}",
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=|2|}",
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=$foo}",
+ "params": { "foo": 2f },
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=$foo}",
+ "params": { "foo": "2" },
+ "exp": "hello 4.20",
+ "errorsJs": ["invalid-type"]
+ },
+ {
+ "src": ".local $foo = {|bar|} {{bar {$foo}}}",
+ "exp": "bar bar"
+ },
+ {
+ "src": ".local $foo = {bar} {{bar {$foo}}}",
+ "params": { "foo": "foo" },
+ "expectedJs": "bar foo",
+ "comment": "It is undefined if we allow arguments to override local variables, or it is an error. And undefined who wins if that happens, the local variable of the argument.",
+ "exp": "bar bar"
+ },
+ {
+ "src": ".local $foo = {$bar} {{bar {$foo}}}",
+ "params": { "bar": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".local $foo = {$bar :number} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.2"
+ },
+ {
+ "src": ".local $foo = {$bar :number minimumFractionDigits=2} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.20"
+ },
+ {
+ "ignore": "Maybe. Because `minimumFractionDigits=foo`",
+ "src": ".local $foo = {$bar :number minimumFractionDigits=foo} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.2",
+ "errors": [{ "type": "invalid-type" }]
+ },
+ {
+ "src": ".local $foo = {$bar :number} {{bar {$foo}}}",
+ "params": { "bar": "foo" },
+ "exp": "bar {|foo|}"
+ },
+ {
+ "src": ".local $bar = {$baz} .local $foo = {$bar} {{bar {$foo}}}",
+ "params": { "baz": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "patternJs": ".match {$foo} 1 {{one}} * {{other}}",
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "params": { "foo": "1" },
+ "exp": "one"
+ },
+ {
+ "src": ".match {$foo :number} 1 {{one}} * {{other}}",
+ "params": { "foo": "1" },
+ "comment": "Should this be error? Plural on string?",
+ "expectedJs": "one",
+ "exp": "other"
+ },
+ {
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "params": { "foo": "1" },
+ "exp": "one"
+ },
+ {
+ "patternJs": ".match {$foo} 1 {{one}} * {{other}}",
+ "src": ".match {$foo :number} 1 {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".match {$foo :number} 1 {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "ignore": "Can't pass null in a map",
+ "src": ".match {$foo} 1 {{one}} * {{other}}",
+ "params": { "foo": null },
+ "exp": "other"
+ },
+ {
+ "srcJs": ".match {$foo} 1 {{one}} * {{other}}",
+ "src": ".match {$foo :number} 1 {{one}} * {{other}}",
+ "exp": "other",
+ "errors": [{ "type": "missing-var" }]
+ },
+ {
+ "srcJs": ".match {$foo} one {{one}} * {{other}}",
+ "src": ".match {$foo :number} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "srcJs": ".match {$foo} 1 {{=1}} one {{one}} * {{other}}",
+ "src": ".match {$foo :number} 1 {{=1}} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "=1"
+ },
+ {
+ "srcJs": ".match {$foo} one {{one}} 1 {{=1}} * {{other}}",
+ "src": ".match {$foo :number} one {{one}} 1 {{=1}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "=1"
+ },
+ {
+ "srcJs": ".match {$foo} {$bar} one one {{one one}} one * {{one other}} * * {{other}}",
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 1, "bar": 1 },
+ "exp": "one one"
+ },
+ {
+ "srcJs": ".match {$foo} {$bar} one one {{one one}} one * {{one other}} * * {{other}}",
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 1, "bar": 2 },
+ "exp": "one other"
+ },
+ {
+ "srcJs": ".match {$foo} {$bar} one one {{one one}} one * {{one other}} * * {{other}}",
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 2, "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "srcJs": ".local $foo = {$bar} .match {$foo} one {{one}} * {{other}}",
+ "src": ".local $foo = {$bar} .match {$foo :number} one {{one}} * {{other}}",
+ "params": { "bar": 1 },
+ "exp": "one"
+ },
+ {
+ "srcJs": ".local $foo = {$bar} .match {$foo} one {{one}} * {{other}}",
+ "src": ".local $foo = {$bar} .match {$foo :number} one {{one}} * {{other}}",
+ "params": { "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "srcJs": ".local $bar = {$none} .match {$foo} one {{one}} * {{{$bar}}}",
+ "src": ".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}",
+ "params": { "foo": 1, "none": "" },
+ "exp": "one"
+ },
+ {
+ "srcJs": ".local $bar = {$none} .match {$foo} one {{one}} * {{{$bar}}}",
+ "src": ".local $bar = {$none :number} .match {$foo} one {{one}} * {{{$bar}}}",
+ "params": { "foo": 2 },
+ "exp": "{$bar}",
+ "errors": [{ "type": "missing-var" }]
+ },
+ {
+ "src": ".local bar = {|foo|} {{$bar}}",
+ "exp": "{$bar}",
+ "errors": [{ "type": "missing-char" }, { "type": "missing-var" }]
+ },
+ {
+ "src": ".local $bar {|foo|} {{$bar}}",
+ "exp": "foo",
+ "errors": [{ "type": "missing-char" }]
+ },
+ {
+ "src": ".local $bar = |foo| {{$bar}}",
+ "exp": "{$bar}",
+ "errors": [{ "type": "missing-char" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "{{#tag}}",
+ "exp": "#tag"
+ },
+ {
+ "src": "{#tag}",
+ "exp": ""
+ },
+ {
+ "src": "{#tag}content",
+ "exp": "content"
+ },
+ {
+ "src": "{#tag}content{/tag}",
+ "exp": "content"
+ },
+ {
+ "src": "{#tag}content",
+ "exp": "content"
+ },
+ {
+ "comment": "When we format markup to string we generate no output",
+ "src": "{#tag foo=bar}",
+ "exp": ""
+ },
+ {
+ "src": "{#tag foo=foo bar=$bar}",
+ "params": { "bar": "b a r" },
+ "exp": ""
+ },
+ {
+ "src": "bad {#markup/} test",
+ "exp": "bad test",
+ "errorsJs": [{ "type": "extra-content" }]
+ },
+ {
+ "src": "{#tag foo=bar}",
+ "exp": "",
+ "errorsJs": [{ "type": "extra-content" }]
+ },
+ {
+ "src": "no braces",
+ "exp": "no braces",
+ "errorsJs": [{ "type": "parse-error" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "no braces {$foo}",
+ "params": { "foo": 2 },
+ "exp": "no braces 2",
+ "errorsJs": [{ "type": "parse-error" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "{missing end brace",
+ "exp": "missing end brace",
+ "errors": [{ "type": "missing-char" }]
+ },
+ {
+ "src": "{missing end {$brace",
+ "exp": "missing end {$brace}",
+ "errors": [{ "type": "missing-char" }, { "type": "missing-char" }, { "type": "missing-var" }]
+ },
+ {
+ "src": "{{extra}} content",
+ "exp": "extra",
+ "errors": [{ "type": "extra-content" }]
+ },
+ {
+ "src": "empty { }",
+ "exp": "empty ",
+ "errors": [{ "type": "parse-error" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "bad {:}",
+ "exp": "bad {:}",
+ "errors": [{ "type": "empty-token" }, { "type": "missing-func" }]
+ },
+ {
+ "src": "bad {placeholder}",
+ "exp": "bad placeholder",
+ "errorsJs": [{ "type": "parse-error" }, { "type": "extra-content" }, { "type": "junk-element" }]
+ },
+ {
+ "src": "no-equal {|42| :number minimumFractionDigits 2}",
+ "exp": "no-equal 42.00",
+ "errors": [{ "type": "missing-char" }]
+ },
+ {
+ "src": "bad {:placeholder option=}",
+ "exp": "bad {:placeholder}",
+ "errors": [{ "type": "empty-token" }, { "type": "missing-func" }]
+ },
+ {
+ "src": "bad {:placeholder option value}",
+ "exp": "bad {:placeholder}",
+ "errors": [{ "type": "missing-char" }, { "type": "missing-func" }]
+ },
+ {
+ "src": "{bad {:placeholder option}}",
+ "exp": "bad {:placeholder}",
+ "errors": [{ "type": "missing-char" }, { "type": "empty-token" }, { "type": "missing-func" }]
+ },
+ {
+ "src": "{bad {$placeholder option}}",
+ "exp": "bad {$placeholder}",
+ "errors": [{ "type": "extra-content" }, { "type": "extra-content" }, { "type": "missing-var" }]
+ },
+ {
+ "src": "{no {$placeholder end}",
+ "exp": "no {$placeholder}",
+ "errors": [{ "type": "extra-content" }, { "type": "missing-var" }]
+ },
+ {
+ "src": ".match {} * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "parse-error" }, { "type": "bad-selector" }, { "type": "junk-element" }]
+ },
+ {
+ "src": ".match {#foo} * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "bad-selector" }]
+ },
+ {
+ "src": ".match {|foo|} *{{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "missing-char" }]
+ },
+ {
+ "src": ".match * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "empty-token" }]
+ },
+ {
+ "src": ".match {|x|} * foo",
+ "exp": "",
+ "errors": [{ "type": "key-mismatch" }, { "type": "missing-char" }]
+ },
+ {
+ "src": ".match {|x|} * {{foo}} extra",
+ "exp": "foo",
+ "errors": [{ "type": "extra-content" }]
+ },
+ {
+ "src": ".match |x| * {{foo}}",
+ "exp": "",
+ "errors": [{ "type": "empty-token" }, { "type": "extra-content" }]
+ },
+ {
+ "src": ".match {$foo} * * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "key-mismatch" }, { "type": "missing-var" }]
+ },
+ {
+ "src": ".match {$foo} {$bar} * {{foo}}",
+ "exp": "foo",
+ "errors": [{ "type": "key-mismatch" }, { "type": "missing-var" }, { "type": "missing-var" }]
+ }
+]
+
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-selectors.json b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-selectors.json
new file mode 100644
index 000000000..1f237254f
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/icu-test-selectors.json
@@ -0,0 +1,131 @@
+[
+ {
+ "comment": "Testing simple plural",
+ "shared": {
+ "srcs": [
+ ".match {$count :number}\n",
+ "one {{{$count} file}}\n",
+ " * {{{$count} files}}"
+ ]
+ },
+ "variations" : [
+ { "params": { "count": 0 }, "exp": "0 files" },
+ { "params": { "count": 1 }, "exp": "1 file" },
+ { "params": { "count": 3 }, "exp": "3 files" },
+ { "params": { "count": 0 }, "locale": "fr", "exp": "0 file" },
+ { "params": { "count": 1 }, "locale": "fr", "exp": "1 file" },
+ { "params": { "count": 3 }, "locale": "fr", "exp": "3 files" }
+ ]
+ },
+ {
+ "comment": "Testing simple plural, but swap variant order",
+ "shared": {
+ "srcs": [
+ ".match {$count :number}\n",
+ " * {{You deleted {$count} files}}\n",
+ "one {{You deleted {$count} file}}"
+ ]
+ },
+ "variations" : [
+ {
+ "params": { "count": 1 },
+ "exp": "You deleted 1 file"
+ },
+ {
+ "params": { "count": 3 },
+ "exp": "You deleted 3 files"
+ }
+ ]
+ },
+ {
+ "comment": "Ordinal, with mixed order and exact matches",
+ "shared": {
+ "srcs": [
+ ".match {$place :number select=ordinal}\n",
+ "* {{You finished in the {$place}th place}}\n",
+ "two {{You finished in the {$place}nd place}}\n",
+ "one {{You finished in the {$place}st place}}\n",
+ "1 {{You got the gold medal}}\n",
+ "2 {{You got the silver medal}}\n",
+ "3 {{You got the bronze medal}}\n",
+ "few {{You finished in the {$place}rd place}}\n"
+ ]
+ },
+ "variations" : [
+ { "params": { "place": 1 }, "exp": "You got the gold medal" },
+ { "params": { "place": 2 }, "exp": "You got the silver medal" },
+ { "params": { "place": 3 }, "exp": "You got the bronze medal" },
+ { "params": { "place": 7 }, "exp": "You finished in the 7th place" },
+ { "params": { "place": 21 }, "exp": "You finished in the 21st place" },
+ { "params": { "place": 22 }, "exp": "You finished in the 22nd place" },
+ { "params": { "place": 23 }, "exp": "You finished in the 23rd place" },
+ { "params": { "place": 28 }, "exp": "You finished in the 28th place" }
+ ]
+ },
+ {
+ "comment": "Plural combinations, mixed order",
+ "shared": {
+ "srcs": [
+ ".match {$fileCount :number} {$folderCount :number}\n",
+ " * * {{You found {$fileCount} files in {$folderCount} folders}}\n",
+ " one one {{You found {$fileCount} file in {$folderCount} folder}}\n",
+ " one * {{You found {$fileCount} file in {$folderCount} folders}}\n",
+ " * one {{You found {$fileCount} files in {$folderCount} folder}}\n"
+ ]
+ },
+ "variations" : [
+ { "params": { "fileCount": 1, "folderCount": 1 }, "exp": "You found 1 file in 1 folder" },
+ { "params": { "fileCount": 1, "folderCount": 5 }, "exp": "You found 1 file in 5 folders" },
+ { "params": { "fileCount": 7, "folderCount": 1 }, "exp": "You found 7 files in 1 folder" },
+ { "params": { "fileCount": 7, "folderCount": 3 }, "exp": "You found 7 files in 3 folders" }
+ ]
+ },
+ {
+ "comment": "Test that the selection honors the formatting option (`1.00 dollars`)",
+ "shared": {
+ "srcs": [
+ ".local $c = {$price :number minimumFractionDigits=$minF}\n",
+ ".match {$c}\n",
+ " one {{{$c} dollar}}\n",
+ " * {{{$c} dollars}}"
+ ]
+ },
+ "variations" : [
+ { "params": { "price": 1, "minF": 0 }, "exp": "1 dollar" },
+ { "params": { "price": 1, "minF": 2 }, "exp": "1.00 dollars" }
+ ]
+ },
+ {
+ "comment": "Test that the selection honors the formatting option (`1.00 dollars`)",
+ "shared": {
+ "srcs": [
+ ".local $c = {$price :number maximumFractionDigits=$maxF}\n",
+ ".match {$c}\n",
+ " one {{{$c} dollar}}\n",
+ " * {{{$c} dollars}}"
+ ]
+ },
+ "variations" : [
+ { "params": { "price": 1.25, "maxF": 0 }, "exp": "1 dollar" },
+ { "params": { "price": 1.25, "maxF": 2 }, "exp": "1.25 dollars" }
+ ]
+ },
+ {
+ "comment": "Test that the selection honors the `:integer` over options",
+ "shared": {
+ "srcs": [
+ ".local $c = {$price :integer maximumFractionDigits=$maxF}\n",
+ ".match {$c}\n",
+ " one {{{$c} dollar}}\n",
+ " * {{{$c} dollars}}"
+ ]
+ },
+ "variations" : [
+ { "params": { "price": 1, "maxF": 0 }, "exp": "1 dollar" },
+ { "params": { "price": 1, "maxF": 2 }, "exp": "1 dollar" },
+ { "params": { "price": 1.25, "maxF": 0 }, "exp": "1 dollar" },
+ { "params": { "price": 1.25, "maxF": 2 }, "exp": "1 dollar" },
+ { "params": { "price": 4.12345, "maxF": 4 }, "exp": "4 dollars" }
+ ]
+ }
+]
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/syntax-errors.json b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/syntax-errors.json
new file mode 100644
index 000000000..fc4537131
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/syntax-errors.json
@@ -0,0 +1,56 @@
+[
+ ".",
+ "{",
+ "}",
+ "{}",
+ "{{",
+ "{{}",
+ "{{}}}",
+ "{|foo| #markup}",
+ "{{missing end brace}",
+ "{{missing end braces",
+ "{{missing end {$braces",
+ "{{extra}} content",
+ "empty { } placeholder",
+ "missing space {42:func}",
+ "missing space {|foo|:func}",
+ "missing space {|foo|@bar}",
+ "missing space {:func@bar}",
+ "missing space {:func @bar@baz}",
+ "missing space {:func @bar=42@baz}",
+ "missing space {+reserved@bar}",
+ "missing space {&private@bar}",
+ "bad {:} placeholder",
+ "bad {\\u0000placeholder}",
+ "no-equal {|42| :number minimumFractionDigits 2}",
+ "bad {:placeholder option=}",
+ "bad {:placeholder option value}",
+ "bad {:placeholder option:value}",
+ "bad {:placeholder option}",
+ "bad {:placeholder:}",
+ "bad {::placeholder}",
+ "bad {:placeholder::foo}",
+ "bad {:placeholder option:=x}",
+ "bad {:placeholder :option=x}",
+ "bad {:placeholder option::x=y}",
+ "bad {$placeholder option}",
+ "bad {:placeholder @attribute=}",
+ "bad {:placeholder @attribute=@foo}",
+ "no {placeholder end",
+ "no {$placeholder end",
+ "no {:placeholder end",
+ "no {|placeholder| end",
+ "no {|literal} end",
+ "no {|literal or placeholder end",
+ ".local bar = {|foo|} {{_}}",
+ ".local #bar = {|foo|} {{_}}",
+ ".local $bar {|foo|} {{_}}",
+ ".local $bar = |foo| {{_}}",
+ ".match {#foo} * {{foo}}",
+ ".match {} * {{foo}}",
+ ".match {|foo| :x} {|bar| :x} ** {{foo}}",
+ ".match * {{foo}}",
+ ".match {|x| :x} * foo",
+ ".match {|x| :x} * {{foo}} extra",
+ ".match |x| * {{foo}}"
+]
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/test-core.json b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/test-core.json
new file mode 100644
index 000000000..4400b6977
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/test-core.json
@@ -0,0 +1,212 @@
+[
+ { "src": "hello", "exp": "hello" },
+ { "src": "hello {world}", "exp": "hello world" },
+ {
+ "src": "hello { world\t\n}",
+ "exp": "hello world",
+ "cleanSrc": "hello {world}"
+ },
+ {
+ "src": "hello {\u3000world\r}",
+ "exp": "hello world",
+ "cleanSrc": "hello {world}"
+ },
+ { "src": "hello {|world|}", "exp": "hello world" },
+ { "src": "hello {||}", "exp": "hello " },
+ {
+ "src": "hello {$place}",
+ "params": { "place": "world" },
+ "exp": "hello world"
+ },
+ {
+ "src": "hello {$place-.}",
+ "params": { "place-.": "world" },
+ "exp": "hello world"
+ },
+ {
+ "src": "hello {$place}",
+ "errorsJs": [{ "type": "unresolved-var" }],
+ "exp": "hello {$place}"
+ },
+ {
+ "src": "{$one} and {$two}",
+ "params": { "one": 1.3, "two": 4.2 },
+ "exp": "1.3 and 4.2"
+ },
+ {
+ "src": "{$one} et {$two}",
+ "locale": "fr",
+ "params": { "one": 1.3, "two": 4.2 },
+ "exp": "1,3 et 4,2"
+ },
+ { "src": ".local $foo = {bar} {{bar {$foo}}}", "exp": "bar bar" },
+ { "src": ".local $foo = {|bar|} {{bar {$foo}}}", "exp": "bar bar" },
+ {
+ "src": ".local $foo = {|bar|} {{bar {$foo}}}",
+ "params": { "foo": "foo" },
+ "exp": "bar bar"
+ },
+ {
+ "src": ".local $foo = {$bar} {{bar {$foo}}}",
+ "params": { "bar": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".local $foo = {$baz} .local $bar = {$foo} {{bar {$bar}}}",
+ "params": { "baz": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".input {$foo} {{bar {$foo}}}",
+ "params": { "foo": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".input {$foo} .local $bar = {$foo} {{bar {$bar}}}",
+ "params": { "foo": "foo" },
+ "exp": "bar foo"
+ },
+ {
+ "src": ".local $foo = {$baz} .local $bar = {$foo} {{bar {$bar}}}",
+ "params": { "baz": "foo" },
+ "exp": "bar foo"
+ },
+ { "src": ".local $x = {42} .local $y = {$x} {{{$x} {$y}}}", "exp": "42 42" },
+ {
+ "src": "{#tag}",
+ "exp": "",
+ "parts": [{ "type": "markup", "kind": "open", "name": "tag" }]
+ },
+ {
+ "src": "{#tag}content",
+ "exp": "content",
+ "parts": [
+ { "type": "markup", "kind": "open", "name": "tag" },
+ { "type": "literal", "value": "content" }
+ ]
+ },
+ {
+ "src": "{#ns:tag}content{/ns:tag}",
+ "exp": "content",
+ "parts": [
+ { "type": "markup", "kind": "open", "name": "ns:tag" },
+ { "type": "literal", "value": "content" },
+ { "type": "markup", "kind": "close", "name": "ns:tag" }
+ ]
+ },
+ {
+ "src": "{/tag}content",
+ "exp": "content",
+ "parts": [
+ { "type": "markup", "kind": "close", "name": "tag" },
+ { "type": "literal", "value": "content" }
+ ]
+ },
+ {
+ "src": "{#tag foo=bar}",
+ "exp": "",
+ "parts": [
+ {
+ "type": "markup",
+ "kind": "open",
+ "name": "tag",
+ "options": { "foo": "bar" }
+ }
+ ]
+ },
+ {
+ "src": "{#tag foo=bar/}",
+ "cleanSrc": "{#tag foo=bar /}",
+ "exp": "",
+ "parts": [
+ {
+ "type": "markup",
+ "kind": "standalone",
+ "name": "tag",
+ "options": { "foo": "bar" }
+ }
+ ]
+ },
+ {
+ "src": "{#tag a:foo=|foo| b:bar=$bar}",
+ "params": { "bar": "b a r" },
+ "exp": "",
+ "parts": [
+ {
+ "type": "markup",
+ "kind": "open",
+ "name": "tag",
+ "options": { "a:foo": "foo", "b:bar": "b a r" }
+ }
+ ]
+ },
+ {
+ "src": "{/tag foo=bar}",
+ "exp": "",
+ "parts": [
+ {
+ "type": "markup",
+ "kind": "close",
+ "name": "tag",
+ "options": { "foo": "bar" }
+ }
+ ]
+ },
+ {
+ "src": "{42 @foo @bar=13}",
+ "exp": "42",
+ "parts": [{ "type": "string", "value": "42" }]
+ },
+ {
+ "src": "{42 @foo=$bar}",
+ "exp": "42",
+ "parts": [{ "type": "string", "value": "42" }]
+ },
+ {
+ "src": "foo {+reserved}",
+ "exp": "foo {+}",
+ "parts": [
+ { "type": "literal", "value": "foo " },
+ { "type": "fallback", "source": "+" }
+ ],
+ "errorsJs": [{ "type": "unsupported-annotation" }]
+ },
+ {
+ "src": "foo {&private}",
+ "exp": "foo {&}",
+ "parts": [
+ { "type": "literal", "value": "foo " },
+ { "type": "fallback", "source": "&" }
+ ],
+ "errorsJs": [{ "type": "unsupported-annotation" }]
+ },
+ {
+ "src": "foo {?reserved @a @b=$c}",
+ "exp": "foo {?}",
+ "parts": [
+ { "type": "literal", "value": "foo " },
+ { "type": "fallback", "source": "?" }
+ ],
+ "errorsJs": [{ "type": "unsupported-annotation" }]
+ },
+ {
+ "src": ".foo {42} {{bar}}",
+ "exp": "bar",
+ "parts": [{ "type": "literal", "value": "bar" }],
+ "errorsJs": [{ "type": "unsupported-statement" }]
+ },
+ {
+ "src": ".foo{42}{{bar}}",
+ "cleanSrc": ".foo {42} {{bar}}",
+ "exp": "bar",
+ "parts": [{ "type": "literal", "value": "bar" }],
+ "errorsJs": [{ "type": "unsupported-statement" }]
+ },
+ {
+ "src": ".foo |}lit{| {42}{{bar}}",
+ "cleanSrc": ".foo |}lit{| {42} {{bar}}",
+ "exp": "bar",
+ "parts": [{ "type": "literal", "value": "bar" }],
+ "errorsJs": [{ "type": "unsupported-statement" }]
+ }
+]
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/test-functions.json b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/test-functions.json
new file mode 100644
index 000000000..8cf1b7a25
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/message2/test-functions.json
@@ -0,0 +1,325 @@
+{
+ "date": [
+ { "src": "{:date}", "exp": "{:date}", "errorsJs": [{ "type": "bad-input" }] },
+ {
+ "src": "{horse :date}",
+ "exp": "{|horse|}",
+ "errorsJs": [{ "name": "RangeError" }]
+ },
+ { "src": "{|2006-01-02| :date}", "exp": "1/2/06" },
+ { "src": "{|2006-01-02T15:04:06| :date}", "exp": "1/2/06" },
+ { "src": "{|2006-01-02| :date style=long}", "exp": "January 2, 2006" },
+ {
+ "src": ".local $d = {|2006-01-02| :date style=long} {{{$d :date}}}",
+ "exp": "January 2, 2006"
+ },
+ {
+ "ignore": "Can't chain :time and :date, they are different types",
+ "src": ".local $t = {|2006-01-02T15:04:06| :time} {{{$t :date}}}",
+ "exp": "1/2/06"
+ }
+ ],
+ "time": [
+ { "src": "{:time}", "exp": "{:time}", "errorsJs": [{ "type": "bad-input" }] },
+ {
+ "src": "{horse :time}",
+ "exp": "{|horse|}",
+ "errorsJs": [{ "name": "RangeError" }]
+ },
+ { "src": "{|2006-01-02T15:04:06| :time}", "expJs": "3:04 PM", "exp": "3:04 PM" },
+ {
+ "src": "{|2006-01-02T15:04:06| :time style=medium}",
+ "expJs": "3:04:06 PM",
+ "exp": "3:04:06 PM"
+ },
+ {
+ "src": ".local $t = {|2006-01-02T15:04:06| :time style=medium} {{{$t :time}}}",
+ "expJs": "3:04:06 PM",
+ "exp": "3:04:06 PM"
+ },
+ {
+ "ignore": "Can't chain :time and :date, they are different types",
+ "src": ".local $d = {|2006-01-02T15:04:06| :date} {{{$d :time}}}",
+ "exp": "3:04 PM"
+ }
+ ],
+ "datetime": [
+ {
+ "src": "{:datetime}",
+ "exp": "{:datetime}",
+ "errorsJs": [{ "type": "bad-input" }]
+ },
+ {
+ "src": "{$x :datetime}",
+ "exp": "{$x}",
+ "params": { "x": true },
+ "errors": [{ "type": "bad-input" }]
+ },
+ {
+ "src": "{horse :datetime}",
+ "exp": "{|horse|}",
+ "errorsJs": [{ "name": "RangeError" }]
+ },
+ { "src": "{|2006-01-02T15:04:06| :datetime}", "expJs": "1/2/06, 3:04 PM", "exp": "1/2/06, 3:04 PM" },
+ {
+ "src": "{|2006-01-02T15:04:06| :datetime year=numeric month=|2-digit|}",
+ "exp": "01/2006"
+ },
+ {
+ "src": "{|2006-01-02T15:04:06| :datetime dateStyle=long}",
+ "exp": "January 2, 2006"
+ },
+ {
+ "src": "{|2006-01-02T15:04:06| :datetime timeStyle=medium}",
+ "expJs": "3:04:06 PM",
+ "exp": "3:04:06 PM"
+ },
+ {
+ "src": "{$dt :datetime}",
+ "params": { "dt": "2006-01-02T15:04:06" },
+ "expJs": "1/2/06, 3:04 PM",
+ "exp": "1/2/06, 3:04 PM"
+ },
+ {
+ "ignore": "Can't chain :time and :date, they are different types",
+ "src": ".input {$dt :time style=medium} {{{$dt :datetime dateStyle=long}}}",
+ "params": { "dt": "2006-01-02T15:04:06" },
+ "exp": "January 2, 2006 at 3:04:06 PM"
+ }
+ ],
+ "integer": [
+ { "src": "hello {4.2 :integer}", "exp": "hello 4" },
+ { "src": "hello {-4.20 :integer}", "exp": "hello -4" },
+ { "src": "hello {0.42e+1 :integer}", "exp": "hello 4" },
+ {
+ "src": ".match {$foo :integer} one {{one}} * {{other}}",
+ "params": { "foo": 1.2 },
+ "exp": "one"
+ }
+ ],
+ "number": [
+ { "src": "hello {4.2 :number}", "exp": "hello 4.2" },
+ { "src": "hello {-4.20 :number}", "exp": "hello -4.2" },
+ { "src": "hello {0.42e+1 :number}", "exp": "hello 4.2" },
+ {
+ "src": "hello {foo :number}",
+ "exp": "hello {|foo|}",
+ "errorsJs": [{ "type": "bad-input" }]
+ },
+ {
+ "src": "hello {:number}",
+ "exp": "hello {:number}",
+ "errors": [{ "type": "bad-input" }]
+ },
+ {
+ "src": "hello {4.2 :number minimumFractionDigits=2}",
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=|2|}",
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {4.2 :number minimumFractionDigits=$foo}",
+ "params": { "foo": 2 },
+ "exp": "hello 4.20"
+ },
+ {
+ "src": "hello {|4.2| :number minimumFractionDigits=$foo}",
+ "params": { "foo": "2" },
+ "exp": "hello 4.20"
+ },
+ {
+ "src": ".local $foo = {$bar :number} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.2"
+ },
+ {
+ "src": ".local $foo = {$bar :number minimumFractionDigits=2} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "exp": "bar 4.20"
+ },
+ {
+ "src": ".local $foo = {$bar :number minimumFractionDigits=foo} {{bar {$foo}}}",
+ "params": { "bar": 4.2 },
+ "comment": "I think it is fine to ignore invalid options",
+ "expJs": "bar {$bar}",
+ "exp": "bar 4.2",
+ "errorsJs": [{ "type": "bad-option" }]
+ },
+ {
+ "src": ".local $foo = {$bar :number} {{bar {$foo}}}",
+ "params": { "bar": "foo" },
+ "expJs": "bar {$bar}",
+ "exp": "bar {|foo|}",
+ "errorsJs": [{ "type": "bad-input" }]
+ },
+ {
+ "src": ".input {$foo :number} {{bar {$foo}}}",
+ "params": { "foo": 4.2 },
+ "exp": "bar 4.2"
+ },
+ {
+ "src": ".input {$foo :number minimumFractionDigits=2} {{bar {$foo}}}",
+ "params": { "foo": 4.2 },
+ "exp": "bar 4.20"
+ },
+ {
+ "src": ".input {$foo :number minimumFractionDigits=foo} {{bar {$foo}}}",
+ "params": { "foo": 4.2 },
+ "comment": "I think it is fine to ignore invalid options",
+ "exp": "bar 4.2",
+ "expJs": "bar {$foo}",
+ "errorsJs": [{ "type": "bad-option" }]
+ },
+ {
+ "src": ".input {$foo :number} {{bar {$foo}}}",
+ "params": { "foo": "foo" },
+ "expJs": "bar {$foo}",
+ "exp": "bar {|foo|}",
+ "errorsJs": [{ "type": "bad-input" }]
+ },
+ {
+ "src": ".match {$foo :number} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".match {$foo :number} 1 {{=1}} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "=1"
+ },
+ {
+ "src": ".match {$foo :number} one {{one}} 1 {{=1}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "=1"
+ },
+ {
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 1, "bar": 1 },
+ "exp": "one one"
+ },
+ {
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 1, "bar": 2 },
+ "exp": "one other"
+ },
+ {
+ "src": ".match {$foo :number} {$bar :number} one one {{one one}} one * {{one other}} * * {{other}}",
+ "params": { "foo": 2, "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "src": ".input {$foo :number} .match {$foo} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".local $foo = {$bar :number} .match {$foo} one {{one}} * {{other}}",
+ "params": { "bar": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".input {$foo :number} .local $bar = {$foo} .match {$bar} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".input {$bar :number} .match {$bar} one {{one}} * {{other}}",
+ "params": { "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "src": ".input {$bar} .match {$bar :number} one {{one}} * {{other}}",
+ "params": { "bar": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".input {$bar} .match {$bar :number} one {{one}} * {{other}}",
+ "params": { "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "src": ".input {$bar} .match {$bar :number} one {{one}} * {{other}}",
+ "params": { "bar": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".input {$bar} .match {$bar :number} one {{one}} * {{other}}",
+ "params": { "bar": 2 },
+ "exp": "other"
+ },
+ {
+ "src": ".input {$none} .match {$foo :number} one {{one}} * {{{$none}}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}",
+ "params": { "foo": 1 },
+ "exp": "one"
+ },
+ {
+ "src": ".local $bar = {$none} .match {$foo :number} one {{one}} * {{{$bar}}}",
+ "params": { "foo": 2 },
+ "exp": "{$none}",
+ "errors": [{ "type": "unresolved-var" }]
+ },
+ {
+ "src": "{42 :number @foo @bar=13}",
+ "exp": "42",
+ "parts": [
+ { "type": "number", "parts": [{ "type": "integer", "value": "42" }] }
+ ]
+ }
+ ],
+ "ordinal": [
+ {
+ "src": ".match {$foo :ordinal} one {{st}} two {{nd}} few {{rd}} * {{th}}",
+ "params": { "foo": 1 },
+ "exp": "th",
+ "errors": [{ "type": "missing-func" }, { "type": "not-selectable" }]
+ },
+ {
+ "src": "hello {42 :ordinal}",
+ "exp": "hello {|42|}",
+ "errorsJs": [{ "type": "missing-func" }]
+ }
+ ],
+ "plural": [
+ {
+ "src": ".match {$foo :plural} one {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "exp": "other",
+ "errors": [{ "type": "missing-func" }, { "type": "not-selectable" }]
+ },
+ {
+ "src": "hello {42 :plural}",
+ "exp": "hello {|42|}",
+ "errorsJs": [{ "type": "missing-func" }]
+ }
+ ],
+ "string": [
+ {
+ "src": ".match {$foo :string} |1| {{one}} * {{other}}",
+ "params": { "foo": "1" },
+ "exp": "one"
+ },
+ {
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "params": { "foo": 1 },
+ "expJs": "one",
+ "exp": "other"
+ },
+ {
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "params": { "foo": null },
+ "exp": "other"
+ },
+ {
+ "src": ".match {$foo :string} 1 {{one}} * {{other}}",
+ "exp": "other",
+ "errorsJs": [{ "type": "unresolved-var" }]
+ }
+ ]
+}
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
deleted file mode 100644
index 384b149e1..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.InvalidFormatException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.InvalidFormatException.dat
deleted file mode 100644
index bc8ea6453..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.InvalidFormatException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.OlsonTimeZone.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.OlsonTimeZone.dat
deleted file mode 100644
index c9c4fc0d5..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.OlsonTimeZone.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.RelativeDateFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.RelativeDateFormat.dat
deleted file mode 100644
index 1af649e3a..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.RelativeDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneAdapter.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneAdapter.dat
deleted file mode 100644
index 27b75182e..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneAdapter.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
deleted file mode 100644
index 4568ae05c..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.number.SkeletonSyntaxException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.number.SkeletonSyntaxException.dat
deleted file mode 100644
index 8d1cb6ec2..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.number.SkeletonSyntaxException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ArabicShapingException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ArabicShapingException.dat
deleted file mode 100644
index 69e239137..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ArabicShapingException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormat.dat
deleted file mode 100644
index b8a603d77..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
deleted file mode 100644
index 18f9d16b4..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.CurrencyPluralInfo.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.CurrencyPluralInfo.dat
deleted file mode 100644
index e35372cbe..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.CurrencyPluralInfo.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormat.dat
deleted file mode 100644
index 51639e8f5..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormatSymbols.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormatSymbols.dat
deleted file mode 100644
index b86275901..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalFormat.dat
deleted file mode 100644
index a1a3e6dc7..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DecimalFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DecimalFormat.dat
deleted file mode 100644
index dac33af03..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DecimalFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DecimalFormatSymbols.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DecimalFormatSymbols.dat
deleted file mode 100644
index 68fc46b15..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DecimalFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.SimpleDateFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.SimpleDateFormat.dat
deleted file mode 100644
index 1dbc800d4..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.SimpleDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.StringPrepParseException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.StringPrepParseException.dat
deleted file mode 100644
index 3ef707a37..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.StringPrepParseException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.BuddhistCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.BuddhistCalendar.dat
deleted file mode 100644
index 1219100df..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.BuddhistCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.Calendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.Calendar.dat
deleted file mode 100644
index 36f0e7f36..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.Calendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ChineseCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ChineseCalendar.dat
deleted file mode 100644
index 12f8a611a..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ChineseCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.CopticCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.CopticCalendar.dat
deleted file mode 100644
index 31cae3f0f..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.CopticCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DangiCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DangiCalendar.dat
deleted file mode 100644
index a4f4190ed..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DangiCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.EthiopicCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.EthiopicCalendar.dat
deleted file mode 100644
index 5cec36594..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.EthiopicCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.GregorianCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.GregorianCalendar.dat
deleted file mode 100644
index 16e7f2fb2..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.GregorianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.HebrewCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.HebrewCalendar.dat
deleted file mode 100644
index 93813a230..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.HebrewCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
deleted file mode 100644
index 980fb2221..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUException.dat
deleted file mode 100644
index 561d9d447..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUInputTooLongException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUInputTooLongException.dat
deleted file mode 100644
index 47631a4d9..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUInputTooLongException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUUncheckedIOException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUUncheckedIOException.dat
deleted file mode 100644
index cbe50cd0b..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ICUUncheckedIOException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IllformedLocaleException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IllformedLocaleException.dat
deleted file mode 100644
index 30199b7e5..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IllformedLocaleException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IndianCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IndianCalendar.dat
deleted file mode 100644
index 6d2cc7398..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IndianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IslamicCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IslamicCalendar.dat
deleted file mode 100644
index afa0e6b57..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.IslamicCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.JapaneseCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.JapaneseCalendar.dat
deleted file mode 100644
index a8afe089d..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.JapaneseCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.PersianCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.PersianCalendar.dat
deleted file mode 100644
index 19bd94af6..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.PersianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TaiwanCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TaiwanCalendar.dat
deleted file mode 100644
index ef85764c0..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TaiwanCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.UResourceTypeMismatchException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
deleted file mode 100644
index 5d9435638..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.VTimeZone.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.VTimeZone.dat
deleted file mode 100644
index 77e2c5b0f..000000000
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.VTimeZone.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.DateNumberFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.DateNumberFormat.dat
index 571713e21..571713e21 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.DateNumberFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.DateNumberFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
new file mode 100644
index 000000000..daf559296
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.InvalidFormatException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.InvalidFormatException.dat
new file mode 100644
index 000000000..8a4628d21
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.InvalidFormatException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.JavaTimeZone.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.JavaTimeZone.dat
index 254b50db7..254b50db7 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.JavaTimeZone.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.JavaTimeZone.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.OlsonTimeZone.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 000000000..ce3595569
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.OlsonTimeZone.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.RelativeDateFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.RelativeDateFormat.dat
new file mode 100644
index 000000000..062e03f4c
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.RelativeDateFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat
index b3f344e2e..b3f344e2e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneAdapter.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 000000000..8f0146186
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneAdapter.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneGenericNames.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneGenericNames.dat
index 056868dda..056868dda 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneGenericNames.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneGenericNames.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat
index 9548e9a06..9548e9a06 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
index 883e9aed7..883e9aed7 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
new file mode 100644
index 000000000..67cafea40
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat
index 24627cc12..24627cc12 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat
index 72bb5f0ff..72bb5f0ff 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
index 44475d607..44475d607 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.Properties.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.Properties.dat
index b5775ace3..b5775ace3 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.impl.number.Properties.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.impl.number.Properties.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.math.BigDecimal.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.math.BigDecimal.dat
index b27bcaf1c..b27bcaf1c 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.math.BigDecimal.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.math.BigDecimal.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.math.MathContext.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.math.MathContext.dat
index da7bc6076..da7bc6076 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.math.MathContext.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.math.MathContext.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.message2.MFParseException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.message2.MFParseException.dat
new file mode 100644
index 000000000..03c00dab7
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.message2.MFParseException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.number.NumberRangeFormatter$SpanField.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.number.NumberRangeFormatter$SpanField.dat
index 41e599d25..41e599d25 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.number.NumberRangeFormatter$SpanField.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.number.NumberRangeFormatter$SpanField.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.number.SkeletonSyntaxException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.number.SkeletonSyntaxException.dat
new file mode 100644
index 000000000..d3b98014f
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.number.SkeletonSyntaxException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ArabicShapingException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ArabicShapingException.dat
new file mode 100644
index 000000000..387098b18
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ArabicShapingException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormat$Field.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
index 2eb95fa67..2eb95fa67 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 000000000..41eebe160
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 000000000..87c732c14
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.CompactDecimalFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.CompactDecimalFormat.dat
index 9252bf202..9252bf202 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.CompactDecimalFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.CompactDecimalFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.CurrencyPluralInfo.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.CurrencyPluralInfo.dat
new file mode 100644
index 000000000..f9deb6204
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.CurrencyPluralInfo.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormat$Field.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormat$Field.dat
index a7cf73693..a7cf73693 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateFormat$Field.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormat$Field.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 000000000..309485d82
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormatSymbols.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 000000000..53f60bf8c
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateFormatSymbols.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat
index 14859f733..14859f733 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalFormat.dat
new file mode 100644
index 000000000..6487225f7
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
index 6bc48a952..6bc48a952 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalInfo.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalInfo.dat
index 4d99cc699..4d99cc699 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.DateIntervalInfo.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DateIntervalInfo.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DecimalFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DecimalFormat.dat
new file mode 100644
index 000000000..074f0db24
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DecimalFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DecimalFormatSymbols.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 000000000..5dcba46f0
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.DecimalFormatSymbols.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ListFormatter$Field.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ListFormatter$Field.dat
index bf31c62f6..bf31c62f6 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ListFormatter$Field.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ListFormatter$Field.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ListFormatter$SpanField.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ListFormatter$SpanField.dat
index 1ccfe3f19..1ccfe3f19 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.ListFormatter$SpanField.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.ListFormatter$SpanField.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MeasureFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MeasureFormat.dat
index 2dbde9cb8..2dbde9cb8 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MeasureFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MeasureFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MessageFormat$Field.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MessageFormat$Field.dat
index f30df97bf..f30df97bf 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MessageFormat$Field.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MessageFormat$Field.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MessageFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MessageFormat.dat
index 5f0b1bb7c..5f0b1bb7c 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.MessageFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.MessageFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.NumberFormat$Field.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.NumberFormat$Field.dat
index cab3e3df0..cab3e3df0 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.NumberFormat$Field.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.NumberFormat$Field.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.NumberFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.NumberFormat.dat
index 4fe9808e3..4fe9808e3 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.NumberFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.NumberFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.PluralFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.PluralFormat.dat
index b742ec67f..b742ec67f 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.PluralFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.PluralFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.PluralRules.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.PluralRules.dat
index 6982646be..6982646be 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.PluralRules.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.PluralRules.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat
index 1977b04e2..1977b04e2 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.RuleBasedNumberFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
index 64c471ee7..64c471ee7 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.SelectFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.SelectFormat.dat
index 3fd758f7e..3fd758f7e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.SelectFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.SelectFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.SimpleDateFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 000000000..3b140b17b
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.SimpleDateFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.StringPrepParseException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.StringPrepParseException.dat
new file mode 100644
index 000000000..8de162e39
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.StringPrepParseException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.TimeUnitFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.TimeUnitFormat.dat
index 2767c7d37..2767c7d37 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.TimeUnitFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.TimeUnitFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.TimeZoneFormat.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.TimeZoneFormat.dat
index 6a8bffd3e..6a8bffd3e 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.text.TimeZoneFormat.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.text.TimeZoneFormat.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.AnnualTimeZoneRule.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
index 095de16c5..095de16c5 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.BuddhistCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 000000000..f5e9c2ab2
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.BuddhistCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.Calendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.Calendar.dat
new file mode 100644
index 000000000..5ce750446
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.Calendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ChineseCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 000000000..c404e1663
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ChineseCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.CopticCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 000000000..9dfc2f27f
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.CopticCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.Currency.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.Currency.dat
index 24627cc12..24627cc12 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.Currency.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.Currency.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DangiCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DangiCalendar.dat
new file mode 100644
index 000000000..8dcfd9104
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DangiCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DateInterval.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DateInterval.dat
index 71d722236..71d722236 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DateInterval.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DateInterval.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DateTimeRule.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DateTimeRule.dat
index ed1338849..ed1338849 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.DateTimeRule.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.DateTimeRule.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.EthiopicCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 000000000..22c32c772
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.EthiopicCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.GregorianCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.GregorianCalendar.dat
new file mode 100644
index 000000000..bd04d7637
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.GregorianCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.HebrewCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 000000000..c336ef13b
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.HebrewCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
new file mode 100644
index 000000000..41e012cba
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUException.dat
new file mode 100644
index 000000000..a17b15c3f
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUInputTooLongException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUInputTooLongException.dat
new file mode 100644
index 000000000..827712c91
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUInputTooLongException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUUncheckedIOException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUUncheckedIOException.dat
new file mode 100644
index 000000000..167d87ded
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ICUUncheckedIOException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IllformedLocaleException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IllformedLocaleException.dat
new file mode 100644
index 000000000..ecd7815f5
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IllformedLocaleException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IndianCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IndianCalendar.dat
new file mode 100644
index 000000000..975c4e84c
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IndianCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.InitialTimeZoneRule.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.InitialTimeZoneRule.dat
index 7da9b4d81..7da9b4d81 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.InitialTimeZoneRule.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.InitialTimeZoneRule.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IslamicCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IslamicCalendar.dat
new file mode 100644
index 000000000..13ca33d6e
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.IslamicCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.JapaneseCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 000000000..707a534b8
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.JapaneseCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.MeasureUnit.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.MeasureUnit.dat
index 9f018342f..9f018342f 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.MeasureUnit.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.MeasureUnit.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.PersianCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.PersianCalendar.dat
new file mode 100644
index 000000000..d31c36dd3
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.PersianCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.RuleBasedTimeZone.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.RuleBasedTimeZone.dat
index 698b470d4..698b470d4 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.RuleBasedTimeZone.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.RuleBasedTimeZone.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.SimpleTimeZone.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.SimpleTimeZone.dat
index 216f9a5aa..216f9a5aa 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.SimpleTimeZone.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.SimpleTimeZone.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TaiwanCalendar.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TaiwanCalendar.dat
new file mode 100644
index 000000000..a75de665a
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TaiwanCalendar.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
index b2224bdd6..b2224bdd6 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeUnit.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeUnit.dat
index 9f018342f..9f018342f 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeUnit.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeUnit.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeZone.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeZone.dat
index b944d5957..b944d5957 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.TimeZone.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.TimeZone.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ULocale.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ULocale.dat
index ef2083217..ef2083217 100644
--- a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_71.1/com.ibm.icu.util.ULocale.dat
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.ULocale.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.UResourceTypeMismatchException.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 000000000..9a7f3d87d
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
Binary files differ
diff --git a/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.VTimeZone.dat b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.VTimeZone.dat
new file mode 100644
index 000000000..f64b58b4a
--- /dev/null
+++ b/icu4j/main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_75.1/com.ibm.icu.util.VTimeZone.dat
Binary files differ
diff --git a/icu4j/main/currdata/pom.xml b/icu4j/main/currdata/pom.xml
index 26c31cf0c..176db6e23 100644
--- a/icu4j/main/currdata/pom.xml
+++ b/icu4j/main/currdata/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/af.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/af.res
deleted file mode 100644
index b72a8e9f9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/af.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/af_NA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/af_NA.res
deleted file mode 100644
index 093b689c6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/af_NA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/agq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/agq.res
deleted file mode 100644
index 77d07bb47..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/agq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ak.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ak.res
deleted file mode 100644
index a7ec82d64..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ak.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/am.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/am.res
deleted file mode 100644
index 3e583e82c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/am.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar.res
deleted file mode 100644
index 6da291f4a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_AE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_AE.res
deleted file mode 100644
index 92723a0ff..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_AE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_DJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_DJ.res
deleted file mode 100644
index a2cb5be3e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_DJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_ER.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_ER.res
deleted file mode 100644
index 70c195b77..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_KM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_KM.res
deleted file mode 100644
index 499192972..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_KM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_LB.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_LB.res
deleted file mode 100644
index 86660e64b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_LB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SA.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SO.res
deleted file mode 100644
index 4e134a515..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SS.res
deleted file mode 100644
index cbe3422de..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ar_SS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ars.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ars.res
deleted file mode 100644
index dbca6dbcb..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ars.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/as.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/as.res
deleted file mode 100644
index 53c098047..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/as.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/asa.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/asa.res
deleted file mode 100644
index e563ca9c3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/asa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ast.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ast.res
deleted file mode 100644
index 6bd4bbc38..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ast.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az.res
deleted file mode 100644
index e170ac612..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_AZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_AZ.res
deleted file mode 100644
index c847a0baa..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Cyrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Cyrl.res
deleted file mode 100644
index 4b8f02bf0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Latn.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Latn_AZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Latn_AZ.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/az_Latn_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bas.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bas.res
deleted file mode 100644
index bf9f74851..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bas.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/be.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/be.res
deleted file mode 100644
index 68c4e8d01..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/be.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bem.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bem.res
deleted file mode 100644
index 8b2570e93..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bem.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bez.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bez.res
deleted file mode 100644
index 2af8c397c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bez.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bg.res
deleted file mode 100644
index ac64f8be7..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bgc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bgc.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bgc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bho.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bho.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bho.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/blo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/blo.res
deleted file mode 100644
index 5c5ceb212..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/blo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bm.res
deleted file mode 100644
index a53712195..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bn.res
deleted file mode 100644
index 838b5afc3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bn_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bn_IN.res
deleted file mode 100644
index b7e5c9c6e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bn_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bo.res
deleted file mode 100644
index c9f9eb1de..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bo_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bo_IN.res
deleted file mode 100644
index 875d3c137..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bo_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/br.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/br.res
deleted file mode 100644
index ec4985f3a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/br.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/brx.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/brx.res
deleted file mode 100644
index db46f0dc6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/brx.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs.res
deleted file mode 100644
index c848a80c1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_BA.res
deleted file mode 100644
index 414d90693..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Cyrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Cyrl.res
deleted file mode 100644
index fed27c033..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Latn.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Latn_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Latn_BA.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/bs_Latn_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ca.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ca.res
deleted file mode 100644
index e740468fc..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ca.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ca_FR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ca_FR.res
deleted file mode 100644
index 822e56246..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ca_FR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ccp.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ccp.res
deleted file mode 100644
index 91dd59080..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ccp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ce.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ce.res
deleted file mode 100644
index c5e6f9446..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ce.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ceb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ceb.res
deleted file mode 100644
index 8b11bb055..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ceb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cgg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cgg.res
deleted file mode 100644
index 7e2c61e60..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cgg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/chr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/chr.res
deleted file mode 100644
index 0c9c89a5f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/chr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ckb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ckb.res
deleted file mode 100644
index 1465d5d62..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ckb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cs.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cs.res
deleted file mode 100644
index 3f370f77e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/csw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/csw.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/csw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cv.res
deleted file mode 100644
index 6655624e1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cy.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cy.res
deleted file mode 100644
index 47d80b1cb..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/cy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/da.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/da.res
deleted file mode 100644
index a35db861a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/da.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dav.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dav.res
deleted file mode 100644
index fbe7cd5e7..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dav.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de.res
deleted file mode 100644
index 58d1394c5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_CH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_CH.res
deleted file mode 100644
index 17d460a6d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_LI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_LI.res
deleted file mode 100644
index bf70d3db5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_LI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_LU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_LU.res
deleted file mode 100644
index ef242be64..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/de_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dje.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dje.res
deleted file mode 100644
index 5f544a60a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dje.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/doi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/doi.res
deleted file mode 100644
index dcf1282a2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/doi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dsb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dsb.res
deleted file mode 100644
index aca4f7ca8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dua.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dua.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dua.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dyo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dyo.res
deleted file mode 100644
index 2adb32f62..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dyo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dz.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dz.res
deleted file mode 100644
index 7be41b5b3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/dz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ebu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ebu.res
deleted file mode 100644
index 37280849e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ebu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ee.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ee.res
deleted file mode 100644
index b6fdc0d92..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ee.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/el.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/el.res
deleted file mode 100644
index 8fb32ad7a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/el.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en.res
deleted file mode 100644
index c61c56a86..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_001.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_001.res
deleted file mode 100644
index faed3a6d2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_001.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_150.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_150.res
deleted file mode 100644
index 84d67370e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_150.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AG.res
deleted file mode 100644
index da0a24574..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AI.res
deleted file mode 100644
index da0a24574..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AT.res
deleted file mode 100644
index 455af1217..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AU.res
deleted file mode 100644
index eac1604b2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_AU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BB.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BB.res
deleted file mode 100644
index 8e3fc8fb8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BE.res
deleted file mode 100644
index 8eacf2705..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BI.res
deleted file mode 100644
index 627055b68..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BM.res
deleted file mode 100644
index d72d81797..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BS.res
deleted file mode 100644
index dbefee8ff..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BW.res
deleted file mode 100644
index 157b5cbab..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BZ.res
deleted file mode 100644
index 8f1d7386b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_BZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CA.res
deleted file mode 100644
index 7f40901a5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CC.res
deleted file mode 100644
index 1ffd72659..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CH.res
deleted file mode 100644
index 8eacf2705..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CK.res
deleted file mode 100644
index 8830c8827..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CM.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CX.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CX.res
deleted file mode 100644
index 1ffd72659..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CY.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_CY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DE.res
deleted file mode 100644
index 8eacf2705..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DG.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DK.res
deleted file mode 100644
index 5b45aa3e2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DM.res
deleted file mode 100644
index da0a24574..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_DM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ER.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ER.res
deleted file mode 100644
index 190fe1f84..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FI.res
deleted file mode 100644
index 8eacf2705..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FJ.res
deleted file mode 100644
index fb3c65d5d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FK.res
deleted file mode 100644
index 6ed186086..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FM.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_FM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GB.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GB.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GD.res
deleted file mode 100644
index da0a24574..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GG.res
deleted file mode 100644
index c87908458..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GH.res
deleted file mode 100644
index 404e67a3f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GI.res
deleted file mode 100644
index e5d0e2459..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GM.res
deleted file mode 100644
index 63930a45a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GY.res
deleted file mode 100644
index 5b9680bce..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_GY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_HK.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ID.res
deleted file mode 100644
index 48326232b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IE.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IL.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IM.res
deleted file mode 100644
index c87908458..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IN.res
deleted file mode 100644
index e506d2a80..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IO.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_IO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_JE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_JE.res
deleted file mode 100644
index c87908458..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_JE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_JM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_JM.res
deleted file mode 100644
index c1e5535b2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_JM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KE.res
deleted file mode 100644
index 300999377..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KI.res
deleted file mode 100644
index 1ffd72659..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KN.res
deleted file mode 100644
index da0a24574..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KY.res
deleted file mode 100644
index 0f059f571..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_KY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LC.res
deleted file mode 100644
index da0a24574..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LR.res
deleted file mode 100644
index 4f45f34d8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LS.res
deleted file mode 100644
index 8dd1a155f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_LS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MG.res
deleted file mode 100644
index d10796755..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MO.res
deleted file mode 100644
index bbdbf86ef..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MS.res
deleted file mode 100644
index da0a24574..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MT.res
deleted file mode 100644
index 375bdb15b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MU.res
deleted file mode 100644
index c90be9ff1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MV.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MV.res
deleted file mode 100644
index 65df713a6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MW.res
deleted file mode 100644
index 7b88b9126..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MY.res
deleted file mode 100644
index 9568635db..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_MY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NA.res
deleted file mode 100644
index 50c2b5402..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NF.res
deleted file mode 100644
index 1ffd72659..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NG.res
deleted file mode 100644
index f210a9776..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NH.res
deleted file mode 100644
index 65a2f234c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NL.res
deleted file mode 100644
index 8eacf2705..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NR.res
deleted file mode 100644
index 1ffd72659..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NU.res
deleted file mode 100644
index 8830c8827..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NZ.res
deleted file mode 100644
index 8830c8827..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_NZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PG.res
deleted file mode 100644
index 4b62cc0be..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PK.res
deleted file mode 100644
index 4ec13f459..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PN.res
deleted file mode 100644
index 8830c8827..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PW.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_PW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_RH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_RH.res
deleted file mode 100644
index 3d9f9894a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_RH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_RW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_RW.res
deleted file mode 100644
index ed075383c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_RW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SB.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SB.res
deleted file mode 100644
index 488824da0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SC.res
deleted file mode 100644
index ea8ab53fa..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SD.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SE.res
deleted file mode 100644
index 687fbdb75..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SG.res
deleted file mode 100644
index b984692d6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SH.res
deleted file mode 100644
index 4c6d8e617..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SI.res
deleted file mode 100644
index 8eacf2705..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SL.res
deleted file mode 100644
index 4e4f9e560..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SS.res
deleted file mode 100644
index 2eaa57d00..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SX.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SX.res
deleted file mode 100644
index a2cdbc9fa..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SZ.res
deleted file mode 100644
index 8a1435255..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_SZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TC.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TK.res
deleted file mode 100644
index 8830c8827..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TO.res
deleted file mode 100644
index 3656cdaac..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TT.res
deleted file mode 100644
index 0988114f0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TV.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TV.res
deleted file mode 100644
index 1ffd72659..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TZ.res
deleted file mode 100644
index 71cb3794c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_UG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_UG.res
deleted file mode 100644
index b6c218652..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VC.res
deleted file mode 100644
index da0a24574..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VG.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VU.res
deleted file mode 100644
index f209843ca..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_VU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_WS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_WS.res
deleted file mode 100644
index 4a24ae58e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_WS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZA.res
deleted file mode 100644
index 8dd1a155f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZM.res
deleted file mode 100644
index 763850057..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZW.res
deleted file mode 100644
index 22975dc52..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/en_ZW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/eo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/eo.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/eo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es.res
deleted file mode 100644
index 53fe8c6bf..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_419.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_419.res
deleted file mode 100644
index e5c563952..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_419.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_AR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_AR.res
deleted file mode 100644
index 13839cb19..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_AR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BO.res
deleted file mode 100644
index 84adae3bf..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BR.res
deleted file mode 100644
index d7cea18e2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BZ.res
deleted file mode 100644
index d2c56f5a7..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_BZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CL.res
deleted file mode 100644
index d0ca3870c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CO.res
deleted file mode 100644
index 4c61e826d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CR.res
deleted file mode 100644
index 7f955e901..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CU.res
deleted file mode 100644
index 3cbb4193f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_CU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_DO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_DO.res
deleted file mode 100644
index d69eb68be..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_DO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_EC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_EC.res
deleted file mode 100644
index 5f92c4dd1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_EC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_GQ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_GQ.res
deleted file mode 100644
index 3b0c78fb5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_GQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_GT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_GT.res
deleted file mode 100644
index d0ca7d0d8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_GT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_HN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_HN.res
deleted file mode 100644
index c534e6616..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_HN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_MX.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_MX.res
deleted file mode 100644
index eb8107ee7..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_MX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_NI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_NI.res
deleted file mode 100644
index 652c95847..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_NI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PA.res
deleted file mode 100644
index 527403895..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PE.res
deleted file mode 100644
index b460c0f8a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PH.res
deleted file mode 100644
index 1c5b36977..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PR.res
deleted file mode 100644
index 5f92c4dd1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PY.res
deleted file mode 100644
index 98adb4dec..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_PY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_SV.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_SV.res
deleted file mode 100644
index 5f92c4dd1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_SV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_US.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_US.res
deleted file mode 100644
index e83121158..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_US.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_UY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_UY.res
deleted file mode 100644
index ca14e1921..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_UY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_VE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_VE.res
deleted file mode 100644
index a2f5b01ee..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/es_VE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/et.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/et.res
deleted file mode 100644
index 11ca048fe..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/et.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/eu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/eu.res
deleted file mode 100644
index 7095b3c16..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/eu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ewo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ewo.res
deleted file mode 100644
index f70cf2826..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ewo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fa.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fa.res
deleted file mode 100644
index 5a332f436..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fa_AF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fa_AF.res
deleted file mode 100644
index 862efc798..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fa_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff.res
deleted file mode 100644
index 1b377586b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm.res
deleted file mode 100644
index 2ee2287bc..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_BF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_BF.res
deleted file mode 100644
index 7ee76dac3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_BF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_CM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_CM.res
deleted file mode 100644
index 7ee76dac3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GH.res
deleted file mode 100644
index 4cc218478..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GM.res
deleted file mode 100644
index a158b1692..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GW.res
deleted file mode 100644
index 7ee76dac3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_GW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_LR.res
deleted file mode 100644
index 476044012..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_MR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_MR.res
deleted file mode 100644
index 9b4505d08..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_NE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_NE.res
deleted file mode 100644
index 7ee76dac3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_NE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_NG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_NG.res
deleted file mode 100644
index 7f3950bac..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_SL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_SL.res
deleted file mode 100644
index d3c4c429a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_SL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_SN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_SN.res
deleted file mode 100644
index 7ee76dac3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Adlm_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_CM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_CM.res
deleted file mode 100644
index b30035eed..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_GN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_GN.res
deleted file mode 100644
index 271e5a109..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_CM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_CM.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GH.res
deleted file mode 100644
index 4337ff630..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GM.res
deleted file mode 100644
index 899bb905a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GN.res
deleted file mode 100644
index e3d1e1b1c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_LR.res
deleted file mode 100644
index 2edf820fc..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_MR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_MR.res
deleted file mode 100644
index 19569f377..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_NG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_NG.res
deleted file mode 100644
index e8f68d656..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_SL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_SL.res
deleted file mode 100644
index 6668cefaa..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_SL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_SN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_SN.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_Latn_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_MR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_MR.res
deleted file mode 100644
index 8bc34b2a5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_SN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_SN.res
deleted file mode 100644
index 31d702c15..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ff_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fi.res
deleted file mode 100644
index 9f030d0e8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fil.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fil.res
deleted file mode 100644
index 5e31bd401..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fil.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fil_PH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fil_PH.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fil_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fo.res
deleted file mode 100644
index ffc733197..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fo_DK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fo_DK.res
deleted file mode 100644
index 783b1ab5c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fo_DK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr.res
deleted file mode 100644
index d8b196151..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_BI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_BI.res
deleted file mode 100644
index 8fea5b6e5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_BI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_CA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_CA.res
deleted file mode 100644
index ac76e503d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_CD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_CD.res
deleted file mode 100644
index 81d934c0c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_CD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_DJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_DJ.res
deleted file mode 100644
index b3f19a5ce..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_DJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_DZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_DZ.res
deleted file mode 100644
index a34584bdf..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_DZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_GN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_GN.res
deleted file mode 100644
index 0b00b07f2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_HT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_HT.res
deleted file mode 100644
index 64798c2ee..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_HT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_KM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_KM.res
deleted file mode 100644
index dd0519d05..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_KM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_LU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_LU.res
deleted file mode 100644
index 117470c34..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MG.res
deleted file mode 100644
index d13a77acd..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MR.res
deleted file mode 100644
index 8c0cdac67..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MU.res
deleted file mode 100644
index 8199d4af9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_MU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_RW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_RW.res
deleted file mode 100644
index 264705de9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_RW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_SC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_SC.res
deleted file mode 100644
index 66749213e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_SC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_SY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_SY.res
deleted file mode 100644
index a8617f491..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_SY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_TN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_TN.res
deleted file mode 100644
index 59a8706dc..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_TN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_VU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_VU.res
deleted file mode 100644
index 4f01f177d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fr_VU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fur.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fur.res
deleted file mode 100644
index 7eebe852c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fy.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fy.res
deleted file mode 100644
index eeaec9628..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/fy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ga.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ga.res
deleted file mode 100644
index 592b858ac..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ga.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gd.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gd.res
deleted file mode 100644
index 6e8db365c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gl.res
deleted file mode 100644
index 7514ca305..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gsw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gsw.res
deleted file mode 100644
index 8393fc03d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gsw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gu.res
deleted file mode 100644
index e98fa1c96..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/guz.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/guz.res
deleted file mode 100644
index fbe7cd5e7..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/guz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gv.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/gv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ha.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ha.res
deleted file mode 100644
index 76641ae46..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ha.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ha_GH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ha_GH.res
deleted file mode 100644
index 0b0cd0da5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ha_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/haw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/haw.res
deleted file mode 100644
index 61d363935..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/haw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/he.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/he.res
deleted file mode 100644
index edbe14f00..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/he.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/he_IL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/he_IL.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/he_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hi.res
deleted file mode 100644
index 7b253181f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hi_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hi_Latn.res
deleted file mode 100644
index 20a30efdd..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hr.res
deleted file mode 100644
index 3cc6ca640..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hr_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hr_BA.res
deleted file mode 100644
index af3024b34..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hr_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hsb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hsb.res
deleted file mode 100644
index 39d05a95b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hu.res
deleted file mode 100644
index a6730071c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hy.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hy.res
deleted file mode 100644
index cc8fffed6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/hy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ia.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ia.res
deleted file mode 100644
index f6336d48c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ia.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/id.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/id.res
deleted file mode 100644
index 6da85d33c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/id.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/id_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/id_ID.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/id_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ie.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ie.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ie.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ig.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ig.res
deleted file mode 100644
index ad3fc9888..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ig.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ii.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ii.res
deleted file mode 100644
index 2c2872b7f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ii.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/in.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/in.res
deleted file mode 100644
index a4a6373b7..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/in.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/in_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/in_ID.res
deleted file mode 100644
index af7b56508..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/in_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/is.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/is.res
deleted file mode 100644
index b322062a9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/is.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/it.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/it.res
deleted file mode 100644
index 4c1f7edfa..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/it.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/iw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/iw.res
deleted file mode 100644
index e7b1ced62..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/iw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/iw_IL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/iw_IL.res
deleted file mode 100644
index 06703d2c9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/iw_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ja.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ja.res
deleted file mode 100644
index a690c231a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ja.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jgo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jgo.res
deleted file mode 100644
index 7093ba345..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jgo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jmc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jmc.res
deleted file mode 100644
index 37daf81f6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jmc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jv.res
deleted file mode 100644
index 6cd76e476..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/jv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ka.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ka.res
deleted file mode 100644
index 414b1f78e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ka.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kab.res
deleted file mode 100644
index f276b3990..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kam.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kam.res
deleted file mode 100644
index d042b596d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kam.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kde.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kde.res
deleted file mode 100644
index e8aa47e63..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kde.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kea.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kea.res
deleted file mode 100644
index a4f8b7ac8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kea.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kgp.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kgp.res
deleted file mode 100644
index 4079cd7ab..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kgp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/khq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/khq.res
deleted file mode 100644
index 5f544a60a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/khq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ki.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ki.res
deleted file mode 100644
index ac3932c1c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ki.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kk.res
deleted file mode 100644
index ad4d00c84..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kkj.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kkj.res
deleted file mode 100644
index 0a87b95e8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kkj.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kl.res
deleted file mode 100644
index 0393c8d69..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kln.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kln.res
deleted file mode 100644
index 443e5e660..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/km.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/km.res
deleted file mode 100644
index b4464aa0c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/km.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kn.res
deleted file mode 100644
index 947814f8c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ko.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ko.res
deleted file mode 100644
index 38a06caa4..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ko.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kok.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kok.res
deleted file mode 100644
index 9f751d04e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks.res
deleted file mode 100644
index 8efe01ddc..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Arab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Arab.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Arab_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Arab_IN.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Arab_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Deva.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Deva.res
deleted file mode 100644
index 35b208604..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_IN.res
deleted file mode 100644
index a6cdb87ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ks_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksb.res
deleted file mode 100644
index f4ea0744d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksf.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksf.res
deleted file mode 100644
index 977355a84..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksf.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksh.res
deleted file mode 100644
index f1bf250e8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ksh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ku.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ku.res
deleted file mode 100644
index 309650953..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ku.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kw.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv.res
deleted file mode 100644
index d5cf760b7..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Deva.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Deva.res
deleted file mode 100644
index a0f88e19b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Orya.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Orya.res
deleted file mode 100644
index a0f88e19b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Orya.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Telu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Telu.res
deleted file mode 100644
index a0f88e19b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/kxv_Telu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ky.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ky.res
deleted file mode 100644
index b5348443e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ky.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lag.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lag.res
deleted file mode 100644
index 41c9f9834..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lag.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lb.res
deleted file mode 100644
index 14abca20b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lg.res
deleted file mode 100644
index 7067936b0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lij.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lij.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lij.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lkt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lkt.res
deleted file mode 100644
index 79b3eca36..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lkt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lmo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lmo.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lmo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ln.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ln.res
deleted file mode 100644
index e578f5005..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ln_AO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ln_AO.res
deleted file mode 100644
index b32a4fd51..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ln_AO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lo.res
deleted file mode 100644
index d98ed1bf4..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lrc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lrc.res
deleted file mode 100644
index 24089e0fe..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lrc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lt.res
deleted file mode 100644
index de68c5355..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lu.res
deleted file mode 100644
index 6638ba91b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/luo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/luo.res
deleted file mode 100644
index 174a73a2d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/luo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/luy.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/luy.res
deleted file mode 100644
index 0a839c469..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/luy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lv.res
deleted file mode 100644
index 8e38ab046..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/lv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mai.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mai.res
deleted file mode 100644
index 675cf1024..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mai.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mas.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mas.res
deleted file mode 100644
index 36dc72d1d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mas.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mas_TZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mas_TZ.res
deleted file mode 100644
index 4972a6f28..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mas_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mer.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mer.res
deleted file mode 100644
index cb7dd63a5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mer.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mfe.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mfe.res
deleted file mode 100644
index 340cdd70f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mfe.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mg.res
deleted file mode 100644
index d09c7b365..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mgh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mgh.res
deleted file mode 100644
index f48f75203..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mgh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mgo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mgo.res
deleted file mode 100644
index b8304b8ce..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mgo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mi.res
deleted file mode 100644
index 1e3939812..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mk.res
deleted file mode 100644
index b18749a49..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ml.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ml.res
deleted file mode 100644
index ee7f96e08..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ml.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mn.res
deleted file mode 100644
index d2aa78b18..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni.res
deleted file mode 100644
index 0b6f57e28..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_Beng.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_Beng.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_Beng.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_Beng_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_Beng_IN.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_Beng_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_IN.res
deleted file mode 100644
index c02dda894..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mni_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mo.res
deleted file mode 100644
index 7e0381e2f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mr.res
deleted file mode 100644
index 6f6aab62b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms.res
deleted file mode 100644
index f3e11de6c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_BN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_BN.res
deleted file mode 100644
index 2a045af40..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_BN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_ID.res
deleted file mode 100644
index 6795eb284..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_SG.res
deleted file mode 100644
index f1ba1bffc..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ms_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mt.res
deleted file mode 100644
index 496dee80b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mua.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mua.res
deleted file mode 100644
index cac77c92f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mua.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/my.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/my.res
deleted file mode 100644
index 5905eff6c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/my.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mzn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mzn.res
deleted file mode 100644
index 62a036ab2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/mzn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/naq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/naq.res
deleted file mode 100644
index 0ff272370..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/naq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nb.res
deleted file mode 100644
index eca56e478..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nd.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nd.res
deleted file mode 100644
index f2f6853d6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nds.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nds.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nds.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ne.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ne.res
deleted file mode 100644
index b9e5aa5c8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ne.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl.res
deleted file mode 100644
index 5f60b7d8d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_AW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_AW.res
deleted file mode 100644
index 651afb22c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_AW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_BQ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_BQ.res
deleted file mode 100644
index 3d8289480..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_BQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_CW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_CW.res
deleted file mode 100644
index 2b1849438..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_CW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_SR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_SR.res
deleted file mode 100644
index f6a1f9304..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_SR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_SX.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_SX.res
deleted file mode 100644
index 2b1849438..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nl_SX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nmg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nmg.res
deleted file mode 100644
index 2fae4ec7b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nmg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nn.res
deleted file mode 100644
index 7657a27fe..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nn_NO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nn_NO.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nn_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nnh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nnh.res
deleted file mode 100644
index f231f699d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nnh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no.res
deleted file mode 100644
index 54050d8ce..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no_NO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no_NO.res
deleted file mode 100644
index 7ed484e5f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no_NO_NY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no_NO_NY.res
deleted file mode 100644
index 03c6522e3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/no_NO_NY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nqo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nqo.res
deleted file mode 100644
index 79f4c677e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nqo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nus.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nus.res
deleted file mode 100644
index 50e1cb270..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nus.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nyn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nyn.res
deleted file mode 100644
index faeff3839..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/nyn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/oc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/oc.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/oc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/om.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/om.res
deleted file mode 100644
index 4b0e158b6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/om.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/om_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/om_KE.res
deleted file mode 100644
index 36c19c343..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/om_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/or.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/or.res
deleted file mode 100644
index 9c9ab5cc3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/or.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/os.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/os.res
deleted file mode 100644
index fb390c75d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/os.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/os_RU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/os_RU.res
deleted file mode 100644
index 49db81285..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/os_RU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa.res
deleted file mode 100644
index 56a032af1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Arab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Arab.res
deleted file mode 100644
index e2beb26a0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Arab_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Arab_PK.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Arab_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Guru.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Guru.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Guru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Guru_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Guru_IN.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_Guru_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_IN.res
deleted file mode 100644
index 22d69b5e3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_PK.res
deleted file mode 100644
index d0e799851..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pa_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pcm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pcm.res
deleted file mode 100644
index 911514fbc..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pcm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pl.res
deleted file mode 100644
index 4c97d67b2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pool.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pool.res
deleted file mode 100644
index 260a322c8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pool.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/prg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/prg.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/prg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ps.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ps.res
deleted file mode 100644
index 3e943a2ca..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ps.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ps_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ps_PK.res
deleted file mode 100644
index 0c6f8f223..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ps_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt.res
deleted file mode 100644
index 90035b237..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_AO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_AO.res
deleted file mode 100644
index 9540366e1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_AO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_CH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_CH.res
deleted file mode 100644
index 2117a6ce4..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_CV.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_CV.res
deleted file mode 100644
index 9b1ddda0f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_CV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_GQ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_GQ.res
deleted file mode 100644
index 2117a6ce4..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_GQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_GW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_GW.res
deleted file mode 100644
index 2117a6ce4..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_GW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_LU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_LU.res
deleted file mode 100644
index fcd52832f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_MO.res
deleted file mode 100644
index 8b808ea3a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_MZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_MZ.res
deleted file mode 100644
index 72989025c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_MZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_PT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_PT.res
deleted file mode 100644
index 42c08ac15..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_PT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_ST.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_ST.res
deleted file mode 100644
index 3c9e2b936..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_ST.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_TL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_TL.res
deleted file mode 100644
index 2117a6ce4..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/pt_TL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu.res
deleted file mode 100644
index 1f065272f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu_BO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu_BO.res
deleted file mode 100644
index acdfaab86..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu_BO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu_EC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu_EC.res
deleted file mode 100644
index 74e62fc00..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/qu_EC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/raj.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/raj.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/raj.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/res_index.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/res_index.res
deleted file mode 100644
index c961da829..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/res_index.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rm.res
deleted file mode 100644
index e00948542..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rn.res
deleted file mode 100644
index e7784514b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ro.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ro.res
deleted file mode 100644
index 6cd31fc25..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ro.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ro_MD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ro_MD.res
deleted file mode 100644
index 4551f9d46..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ro_MD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rof.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rof.res
deleted file mode 100644
index 5316c242e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rof.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/root.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/root.res
deleted file mode 100644
index 2d750cab0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru.res
deleted file mode 100644
index 838906b49..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_BY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_BY.res
deleted file mode 100644
index c54ab64eb..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_BY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_KG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_KG.res
deleted file mode 100644
index bee47cd63..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_KG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_KZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_KZ.res
deleted file mode 100644
index ac86ed0f5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_KZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_MD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_MD.res
deleted file mode 100644
index 60503242d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ru_MD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rw.res
deleted file mode 100644
index 81935f394..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rwk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rwk.res
deleted file mode 100644
index 37daf81f6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/rwk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sa.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sa.res
deleted file mode 100644
index 274dd4671..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sah.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sah.res
deleted file mode 100644
index 002d618d2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sah.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/saq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/saq.res
deleted file mode 100644
index f6bfbcf23..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/saq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat.res
deleted file mode 100644
index 4967e55cf..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_IN.res
deleted file mode 100644
index f0fb3c7f8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_Olck.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_Olck.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_Olck.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_Olck_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_Olck_IN.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sat_Olck_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sbp.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sbp.res
deleted file mode 100644
index 5b2d8aae5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sbp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sc.res
deleted file mode 100644
index 2f4e5e5a5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd.res
deleted file mode 100644
index a9ba02d40..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Arab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Arab.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Arab_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Arab_PK.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Arab_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Deva.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Deva.res
deleted file mode 100644
index 85ac01805..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Deva_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Deva_IN.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_Deva_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_IN.res
deleted file mode 100644
index cfdfbe05a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_PK.res
deleted file mode 100644
index 382f2b14b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sd_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/se.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/se.res
deleted file mode 100644
index a67427f86..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/se.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/se_SE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/se_SE.res
deleted file mode 100644
index c623b7792..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/se_SE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/seh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/seh.res
deleted file mode 100644
index 9f860ed99..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/seh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ses.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ses.res
deleted file mode 100644
index 5f544a60a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ses.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sg.res
deleted file mode 100644
index a09732b1b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh.res
deleted file mode 100644
index 160511344..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_BA.res
deleted file mode 100644
index d2b86a98c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_CS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_CS.res
deleted file mode 100644
index 6298f220a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_YU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_YU.res
deleted file mode 100644
index 6298f220a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sh_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi.res
deleted file mode 100644
index aded30ff4..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Latn.res
deleted file mode 100644
index ff6e8e7bb..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_MA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_MA.res
deleted file mode 100644
index 6efe8734d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Tfng.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Tfng.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Tfng.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Tfng_MA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Tfng_MA.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/shi_Tfng_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/si.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/si.res
deleted file mode 100644
index 0abd318f1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/si.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sk.res
deleted file mode 100644
index 865b614d9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sl.res
deleted file mode 100644
index c7a003284..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/smn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/smn.res
deleted file mode 100644
index 624691cf2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/smn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sn.res
deleted file mode 100644
index 20ed84b47..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so.res
deleted file mode 100644
index 49a8ef61e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_DJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_DJ.res
deleted file mode 100644
index 4de48ecc3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_DJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_ET.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_ET.res
deleted file mode 100644
index 9826b1ca2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_ET.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_KE.res
deleted file mode 100644
index c1b00a259..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/so_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sq.res
deleted file mode 100644
index f19e982c8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sq_MK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sq_MK.res
deleted file mode 100644
index ba6c5ad62..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sq_MK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr.res
deleted file mode 100644
index 29391a278..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_BA.res
deleted file mode 100644
index a29cd5756..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_CS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_CS.res
deleted file mode 100644
index 4d76c51ae..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_BA.res
deleted file mode 100644
index 1b345bfe8..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_CS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_CS.res
deleted file mode 100644
index 815489921..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_RS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_RS.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_XK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_XK.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_YU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_YU.res
deleted file mode 100644
index 815489921..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Cyrl_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn.res
deleted file mode 100644
index 7475e7656..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_BA.res
deleted file mode 100644
index 586b505d0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_CS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_CS.res
deleted file mode 100644
index 6298f220a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_ME.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_ME.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_RS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_RS.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_YU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_YU.res
deleted file mode 100644
index 6298f220a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_Latn_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_ME.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_ME.res
deleted file mode 100644
index 31e7378d4..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_RS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_RS.res
deleted file mode 100644
index 815489921..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_XK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_XK.res
deleted file mode 100644
index d12c2c147..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_YU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_YU.res
deleted file mode 100644
index 4d76c51ae..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sr_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su.res
deleted file mode 100644
index 717b352eb..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_ID.res
deleted file mode 100644
index 2fa0f3ad6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_Latn.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_Latn_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_Latn_ID.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/su_Latn_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/supplementalData.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/supplementalData.res
deleted file mode 100644
index cce3c0dee..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/supplementalData.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sv.res
deleted file mode 100644
index 4bfdd82b3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw.res
deleted file mode 100644
index 88abcfa78..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_CD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_CD.res
deleted file mode 100644
index 0d0eff2a9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_CD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_KE.res
deleted file mode 100644
index 2a61bc9df..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_UG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_UG.res
deleted file mode 100644
index 37a615233..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/sw_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/syr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/syr.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/syr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/szl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/szl.res
deleted file mode 100644
index 78fbee613..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/szl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta.res
deleted file mode 100644
index f0eedba3a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_LK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_LK.res
deleted file mode 100644
index 1f2c8be0b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_LK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_MY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_MY.res
deleted file mode 100644
index 125d46c3e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_MY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_SG.res
deleted file mode 100644
index cce5cdcdf..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ta_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/te.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/te.res
deleted file mode 100644
index 39ec2d24e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/te.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/teo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/teo.res
deleted file mode 100644
index 7ebef2034..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/teo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/teo_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/teo_KE.res
deleted file mode 100644
index cff71f8c6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/teo_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tg.res
deleted file mode 100644
index b0bb128c9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/th.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/th.res
deleted file mode 100644
index 06f00859d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/th.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ti.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ti.res
deleted file mode 100644
index 805cb71a9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ti.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ti_ER.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ti_ER.res
deleted file mode 100644
index eb2b9b55d..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ti_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tk.res
deleted file mode 100644
index fbea6948a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tl.res
deleted file mode 100644
index b82cd14dc..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tl_PH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tl_PH.res
deleted file mode 100644
index 4ad8e19ec..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tl_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/to.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/to.res
deleted file mode 100644
index e5a9950ca..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/to.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tok.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tok.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tr.res
deleted file mode 100644
index a1d2bde02..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tt.res
deleted file mode 100644
index e2c0f1b8c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/twq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/twq.res
deleted file mode 100644
index 5f544a60a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/twq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tzm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tzm.res
deleted file mode 100644
index 388e1b723..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/tzm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ug.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ug.res
deleted file mode 100644
index af8e1096e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ug.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uk.res
deleted file mode 100644
index f57745124..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ur.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ur.res
deleted file mode 100644
index 42888ffa6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ur_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ur_IN.res
deleted file mode 100644
index 476dd8e53..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/ur_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz.res
deleted file mode 100644
index f746b0d95..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_AF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_AF.res
deleted file mode 100644
index 51c57958a..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Arab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Arab.res
deleted file mode 100644
index dacc3b722..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Arab_AF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Arab_AF.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Arab_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Cyrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Cyrl.res
deleted file mode 100644
index 6a1b97a3e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Latn.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Latn_UZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Latn_UZ.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_Latn_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_UZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_UZ.res
deleted file mode 100644
index 670271dad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/uz_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai.res
deleted file mode 100644
index cf4e6a6a3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_LR.res
deleted file mode 100644
index eaeea5225..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Latn.res
deleted file mode 100644
index 445a03cfb..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Vaii.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Vaii.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Vaii.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Vaii_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Vaii_LR.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vai_Vaii_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vec.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vec.res
deleted file mode 100644
index 4a63485be..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vec.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vi.res
deleted file mode 100644
index d7dcdfc81..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vmw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vmw.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vmw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vun.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vun.res
deleted file mode 100644
index 37daf81f6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/vun.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/wae.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/wae.res
deleted file mode 100644
index b2ecb0f2f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/wae.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/wo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/wo.res
deleted file mode 100644
index 0ff876625..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/wo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xh.res
deleted file mode 100644
index 370eb30d6..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xnr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xnr.res
deleted file mode 100644
index 8d42a104f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xnr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xog.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xog.res
deleted file mode 100644
index 66c0b4a9f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/xog.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yav.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yav.res
deleted file mode 100644
index da88d370f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yav.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yi.res
deleted file mode 100644
index c35c0a0e3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yo.res
deleted file mode 100644
index a2c4503f1..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yo_BJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yo_BJ.res
deleted file mode 100644
index 13a4e715f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yo_BJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl.res
deleted file mode 100644
index 559e65762..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl_CO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl_CO.res
deleted file mode 100644
index ab6923589..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl_CO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl_VE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl_VE.res
deleted file mode 100644
index ab6923589..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yrl_VE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue.res
deleted file mode 100644
index a62f975aa..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_CN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_CN.res
deleted file mode 100644
index 22669e38f..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_HK.res
deleted file mode 100644
index cbab78b3c..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hans.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hans.res
deleted file mode 100644
index 1365b7f2b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hans.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hans_CN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hans_CN.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hans_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hant.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hant.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hant.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hant_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hant_HK.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/yue_Hant_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/za.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/za.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/za.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zgh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zgh.res
deleted file mode 100644
index 118646a1b..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zgh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh.res
deleted file mode 100644
index db21afab0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_CN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_CN.res
deleted file mode 100644
index 5a8940f77..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_HK.res
deleted file mode 100644
index 7142f20b9..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans.res
deleted file mode 100644
index 5f3f275ad..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_CN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_CN.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_HK.res
deleted file mode 100644
index 6957f2130..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_MO.res
deleted file mode 100644
index a84edceb2..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_SG.res
deleted file mode 100644
index 4ac76cb39..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hans_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant.res
deleted file mode 100644
index 3a05298b3..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_HK.res
deleted file mode 100644
index 526330fa5..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_MO.res
deleted file mode 100644
index 8b6a7e22e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_TW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_TW.res
deleted file mode 100644
index e98214df0..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_Hant_TW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_MO.res
deleted file mode 100644
index 98e2b3d5e..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_SG.res
deleted file mode 100644
index 91b2add88..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_TW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_TW.res
deleted file mode 100644
index 76d99a058..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zh_TW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zu.res
deleted file mode 100644
index 0d412b891..000000000
--- a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/curr/zu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/af.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/af.res
new file mode 100644
index 000000000..84d89b879
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/af.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/af_NA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/af_NA.res
new file mode 100644
index 000000000..2a003011c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/af_NA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/agq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/agq.res
new file mode 100644
index 000000000..1bd3f8916
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/agq.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ak.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ak.res
new file mode 100644
index 000000000..b04c9121b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ak.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/am.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/am.res
new file mode 100644
index 000000000..5fc6a7ab2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/am.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar.res
new file mode 100644
index 000000000..f205d53b4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_AE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_AE.res
new file mode 100644
index 000000000..c2ac1bda0
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_AE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_DJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_DJ.res
new file mode 100644
index 000000000..dc2fe2362
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_DJ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_ER.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_ER.res
new file mode 100644
index 000000000..df588951e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_ER.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_KM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_KM.res
new file mode 100644
index 000000000..4ac4867a7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_KM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_LB.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_LB.res
new file mode 100644
index 000000000..f138ee6ae
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_LB.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SA.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SO.res
new file mode 100644
index 000000000..7e5fed18f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SS.res
new file mode 100644
index 000000000..39879806f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ar_SS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ars.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ars.res
new file mode 100644
index 000000000..ba8cb73a0
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ars.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/as.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/as.res
new file mode 100644
index 000000000..f07e09be0
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/as.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/asa.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/asa.res
new file mode 100644
index 000000000..368403bba
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/asa.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ast.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ast.res
new file mode 100644
index 000000000..95d86a339
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ast.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az.res
new file mode 100644
index 000000000..82cd91b8d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_AZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_AZ.res
new file mode 100644
index 000000000..0e56db7b0
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_AZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Cyrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Cyrl.res
new file mode 100644
index 000000000..e28bd4246
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Cyrl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Latn.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Latn_AZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Latn_AZ.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/az_Latn_AZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bas.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bas.res
new file mode 100644
index 000000000..cefd32668
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bas.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/be.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/be.res
new file mode 100644
index 000000000..e14908106
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/be.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bem.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bem.res
new file mode 100644
index 000000000..cf7f6050c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bem.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bez.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bez.res
new file mode 100644
index 000000000..944a6a4ea
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bez.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bg.res
new file mode 100644
index 000000000..32d1e8f61
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bg.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bgc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bgc.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bgc.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bho.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bho.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bho.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/blo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/blo.res
new file mode 100644
index 000000000..ce00eba14
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/blo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bm.res
new file mode 100644
index 000000000..1455a0191
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bm.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bn.res
new file mode 100644
index 000000000..710993a07
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bn_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bn_IN.res
new file mode 100644
index 000000000..c2b0135f9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bn_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bo.res
new file mode 100644
index 000000000..ecb27eac2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bo_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bo_IN.res
new file mode 100644
index 000000000..d0bbc8a62
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bo_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/br.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/br.res
new file mode 100644
index 000000000..42f8a0685
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/br.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/brx.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/brx.res
new file mode 100644
index 000000000..a8d569ef7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/brx.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs.res
new file mode 100644
index 000000000..9b840a0dc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_BA.res
new file mode 100644
index 000000000..f51ce7b46
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_BA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Cyrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Cyrl.res
new file mode 100644
index 000000000..8437878d4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Cyrl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Latn.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Latn_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Latn_BA.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/bs_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ca.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ca.res
new file mode 100644
index 000000000..9f125892d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ca.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ca_FR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ca_FR.res
new file mode 100644
index 000000000..25c92923c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ca_FR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ccp.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ccp.res
new file mode 100644
index 000000000..a1c9447e1
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ccp.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ce.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ce.res
new file mode 100644
index 000000000..31a4dbbf9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ce.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ceb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ceb.res
new file mode 100644
index 000000000..fc5f3f064
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ceb.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cgg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cgg.res
new file mode 100644
index 000000000..84de05e40
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cgg.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/chr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/chr.res
new file mode 100644
index 000000000..ef72e8583
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/chr.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ckb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ckb.res
new file mode 100644
index 000000000..05b18136d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ckb.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cs.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cs.res
new file mode 100644
index 000000000..96365c47b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cs.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/csw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/csw.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/csw.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cv.res
new file mode 100644
index 000000000..4c84c6de2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cv.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cy.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cy.res
new file mode 100644
index 000000000..edd6c41bf
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/cy.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/da.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/da.res
new file mode 100644
index 000000000..d855bd99e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/da.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dav.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dav.res
new file mode 100644
index 000000000..7b49aa226
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dav.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de.res
new file mode 100644
index 000000000..38fb025c3
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_CH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_CH.res
new file mode 100644
index 000000000..2637c6b28
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_CH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_LI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_LI.res
new file mode 100644
index 000000000..9c9a89465
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_LI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_LU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_LU.res
new file mode 100644
index 000000000..e5b9193df
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/de_LU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dje.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dje.res
new file mode 100644
index 000000000..20ec61c0b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dje.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/doi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/doi.res
new file mode 100644
index 000000000..5a6a31692
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/doi.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dsb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dsb.res
new file mode 100644
index 000000000..26556dd7d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dsb.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dua.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dua.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dua.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dyo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dyo.res
new file mode 100644
index 000000000..bba2438ed
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dyo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dz.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dz.res
new file mode 100644
index 000000000..d1f255879
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/dz.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ebu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ebu.res
new file mode 100644
index 000000000..05dbf5055
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ebu.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ee.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ee.res
new file mode 100644
index 000000000..26f6efec8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ee.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/el.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/el.res
new file mode 100644
index 000000000..a453898dc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/el.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en.res
new file mode 100644
index 000000000..3bb1b6e01
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_001.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_001.res
new file mode 100644
index 000000000..37805510b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_001.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_150.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_150.res
new file mode 100644
index 000000000..b781ad34c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_150.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AG.res
new file mode 100644
index 000000000..4a2c3e2e7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AI.res
new file mode 100644
index 000000000..4a2c3e2e7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AT.res
new file mode 100644
index 000000000..f93a33b8e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AT.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AU.res
new file mode 100644
index 000000000..b5646e5ec
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_AU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BB.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BB.res
new file mode 100644
index 000000000..3e3f5f82b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BB.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BE.res
new file mode 100644
index 000000000..13e6248a6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BI.res
new file mode 100644
index 000000000..4b1cb3adc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BM.res
new file mode 100644
index 000000000..f84b36416
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BS.res
new file mode 100644
index 000000000..a79e3065c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BW.res
new file mode 100644
index 000000000..8ef069457
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BZ.res
new file mode 100644
index 000000000..d45af3386
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_BZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CA.res
new file mode 100644
index 000000000..4c8310660
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CC.res
new file mode 100644
index 000000000..ce68684ed
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CC.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CH.res
new file mode 100644
index 000000000..13e6248a6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CK.res
new file mode 100644
index 000000000..a717ebaf4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CM.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CX.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CX.res
new file mode 100644
index 000000000..ce68684ed
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CX.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CY.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_CY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DE.res
new file mode 100644
index 000000000..13e6248a6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DG.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DK.res
new file mode 100644
index 000000000..b21e1c3b7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DM.res
new file mode 100644
index 000000000..4a2c3e2e7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_DM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ER.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ER.res
new file mode 100644
index 000000000..d4acd52fc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ER.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FI.res
new file mode 100644
index 000000000..13e6248a6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FJ.res
new file mode 100644
index 000000000..12bffa645
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FJ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FK.res
new file mode 100644
index 000000000..13243d870
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FM.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_FM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GB.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GB.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GB.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GD.res
new file mode 100644
index 000000000..4a2c3e2e7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GD.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GG.res
new file mode 100644
index 000000000..cbbf39a51
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GH.res
new file mode 100644
index 000000000..a1048266b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GI.res
new file mode 100644
index 000000000..1c417453b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GM.res
new file mode 100644
index 000000000..2d3b6bb11
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GY.res
new file mode 100644
index 000000000..c3a0f6108
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_GY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_HK.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_HK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ID.res
new file mode 100644
index 000000000..6ef847f4f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ID.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IE.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IL.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IM.res
new file mode 100644
index 000000000..cbbf39a51
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IN.res
new file mode 100644
index 000000000..af72133a7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IO.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_IO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_JE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_JE.res
new file mode 100644
index 000000000..cbbf39a51
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_JE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_JM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_JM.res
new file mode 100644
index 000000000..fad414629
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_JM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KE.res
new file mode 100644
index 000000000..27b3f86ca
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KI.res
new file mode 100644
index 000000000..ce68684ed
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KN.res
new file mode 100644
index 000000000..4a2c3e2e7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KY.res
new file mode 100644
index 000000000..1be318710
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_KY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LC.res
new file mode 100644
index 000000000..4a2c3e2e7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LC.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LR.res
new file mode 100644
index 000000000..5e64dd1a8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LS.res
new file mode 100644
index 000000000..1f545dcc8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_LS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MG.res
new file mode 100644
index 000000000..f684ce873
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MO.res
new file mode 100644
index 000000000..d9685d48b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MS.res
new file mode 100644
index 000000000..4a2c3e2e7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MT.res
new file mode 100644
index 000000000..6abfe8e94
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MT.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MU.res
new file mode 100644
index 000000000..ab17b877b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MV.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MV.res
new file mode 100644
index 000000000..8fe6c6bc1
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MV.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MW.res
new file mode 100644
index 000000000..694db1bc9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MY.res
new file mode 100644
index 000000000..5957fb7f6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_MY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NA.res
new file mode 100644
index 000000000..bb8938bdb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NF.res
new file mode 100644
index 000000000..ce68684ed
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NF.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NG.res
new file mode 100644
index 000000000..f860f20c9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NH.res
new file mode 100644
index 000000000..b36054655
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NL.res
new file mode 100644
index 000000000..13e6248a6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NR.res
new file mode 100644
index 000000000..ce68684ed
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NU.res
new file mode 100644
index 000000000..a717ebaf4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NZ.res
new file mode 100644
index 000000000..a717ebaf4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_NZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PG.res
new file mode 100644
index 000000000..bbcfb0ba1
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PK.res
new file mode 100644
index 000000000..948ba3069
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PN.res
new file mode 100644
index 000000000..a717ebaf4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PW.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_PW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_RH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_RH.res
new file mode 100644
index 000000000..d5ea48d5a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_RH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_RW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_RW.res
new file mode 100644
index 000000000..4a1938e88
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_RW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SB.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SB.res
new file mode 100644
index 000000000..765c5b922
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SB.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SC.res
new file mode 100644
index 000000000..bf36255bf
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SC.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SD.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SD.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SE.res
new file mode 100644
index 000000000..bd8ec9aae
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SG.res
new file mode 100644
index 000000000..12cf4acea
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SH.res
new file mode 100644
index 000000000..921d273fd
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SI.res
new file mode 100644
index 000000000..13e6248a6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SL.res
new file mode 100644
index 000000000..f3ef0e5b2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SS.res
new file mode 100644
index 000000000..c18de6b58
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SX.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SX.res
new file mode 100644
index 000000000..5c7d328a2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SX.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SZ.res
new file mode 100644
index 000000000..76b904658
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_SZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TC.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TC.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TK.res
new file mode 100644
index 000000000..a717ebaf4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TO.res
new file mode 100644
index 000000000..acfb762a7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TT.res
new file mode 100644
index 000000000..37ef70121
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TT.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TV.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TV.res
new file mode 100644
index 000000000..ce68684ed
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TV.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TZ.res
new file mode 100644
index 000000000..135200b2d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_TZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_UG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_UG.res
new file mode 100644
index 000000000..4b420627c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_UG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VC.res
new file mode 100644
index 000000000..4a2c3e2e7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VC.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VG.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VU.res
new file mode 100644
index 000000000..48a41f2f7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_VU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_WS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_WS.res
new file mode 100644
index 000000000..d19fd26bc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_WS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZA.res
new file mode 100644
index 000000000..1f545dcc8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZM.res
new file mode 100644
index 000000000..0e0c3c558
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZW.res
new file mode 100644
index 000000000..b5d2bd646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/en_ZW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/eo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/eo.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/eo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es.res
new file mode 100644
index 000000000..1a9f7ea5f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_419.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_419.res
new file mode 100644
index 000000000..4dff7f959
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_419.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_AR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_AR.res
new file mode 100644
index 000000000..89fd59b6c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_AR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BO.res
new file mode 100644
index 000000000..73ade0cf4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BR.res
new file mode 100644
index 000000000..1ebb78cbd
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BZ.res
new file mode 100644
index 000000000..fe1fa2687
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_BZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CL.res
new file mode 100644
index 000000000..4e81b4a94
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CO.res
new file mode 100644
index 000000000..bca48584e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CR.res
new file mode 100644
index 000000000..93d8d16ad
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CU.res
new file mode 100644
index 000000000..713734bc5
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_CU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_DO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_DO.res
new file mode 100644
index 000000000..00eb751b4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_DO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_EC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_EC.res
new file mode 100644
index 000000000..852ccac04
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_EC.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_GQ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_GQ.res
new file mode 100644
index 000000000..944a8936a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_GQ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_GT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_GT.res
new file mode 100644
index 000000000..b5a0bc125
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_GT.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_HN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_HN.res
new file mode 100644
index 000000000..7ca61b49e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_HN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_MX.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_MX.res
new file mode 100644
index 000000000..dc1b67146
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_MX.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_NI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_NI.res
new file mode 100644
index 000000000..663900ae4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_NI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PA.res
new file mode 100644
index 000000000..525953a5d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PE.res
new file mode 100644
index 000000000..8a75e4160
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PH.res
new file mode 100644
index 000000000..2d1f9230d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PR.res
new file mode 100644
index 000000000..852ccac04
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PY.res
new file mode 100644
index 000000000..aa24ded76
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_PY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_SV.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_SV.res
new file mode 100644
index 000000000..852ccac04
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_SV.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_US.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_US.res
new file mode 100644
index 000000000..f83eeb5be
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_US.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_UY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_UY.res
new file mode 100644
index 000000000..28e34a777
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_UY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_VE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_VE.res
new file mode 100644
index 000000000..46b3fa333
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/es_VE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/et.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/et.res
new file mode 100644
index 000000000..0a1199135
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/et.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/eu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/eu.res
new file mode 100644
index 000000000..268848589
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/eu.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ewo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ewo.res
new file mode 100644
index 000000000..555b517d9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ewo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fa.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fa.res
new file mode 100644
index 000000000..da0920143
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fa.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fa_AF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fa_AF.res
new file mode 100644
index 000000000..9cf179764
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fa_AF.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff.res
new file mode 100644
index 000000000..12eeee740
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm.res
new file mode 100644
index 000000000..1409c8a58
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_BF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_BF.res
new file mode 100644
index 000000000..4704e0528
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_BF.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_CM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_CM.res
new file mode 100644
index 000000000..4704e0528
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_CM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GH.res
new file mode 100644
index 000000000..79491d0b1
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GM.res
new file mode 100644
index 000000000..1a967afba
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GW.res
new file mode 100644
index 000000000..4704e0528
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_GW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_LR.res
new file mode 100644
index 000000000..cd76b5748
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_LR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_MR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_MR.res
new file mode 100644
index 000000000..7a515aa20
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_MR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_NE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_NE.res
new file mode 100644
index 000000000..4704e0528
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_NE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_NG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_NG.res
new file mode 100644
index 000000000..e6057fb4f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_NG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_SL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_SL.res
new file mode 100644
index 000000000..f302cc3f8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_SL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_SN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_SN.res
new file mode 100644
index 000000000..4704e0528
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Adlm_SN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_CM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_CM.res
new file mode 100644
index 000000000..073e093fa
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_CM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_GN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_GN.res
new file mode 100644
index 000000000..f47fe2f56
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_GN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_CM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_CM.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_CM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GH.res
new file mode 100644
index 000000000..f94a3c197
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GM.res
new file mode 100644
index 000000000..3be659e89
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GN.res
new file mode 100644
index 000000000..c1b1b2674
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_GN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_LR.res
new file mode 100644
index 000000000..1c0ec69f0
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_LR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_MR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_MR.res
new file mode 100644
index 000000000..5ebd7181d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_MR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_NG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_NG.res
new file mode 100644
index 000000000..f01be23bb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_NG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_SL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_SL.res
new file mode 100644
index 000000000..5ebe61dbf
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_SL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_SN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_SN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_Latn_SN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_MR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_MR.res
new file mode 100644
index 000000000..341328a0b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_MR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_SN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_SN.res
new file mode 100644
index 000000000..5cbee29ed
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ff_SN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fi.res
new file mode 100644
index 000000000..4b242cab8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fi.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fil.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fil.res
new file mode 100644
index 000000000..dd1146fdb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fil.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fil_PH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fil_PH.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fil_PH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fo.res
new file mode 100644
index 000000000..c3322cebd
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fo_DK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fo_DK.res
new file mode 100644
index 000000000..38f074c34
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fo_DK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr.res
new file mode 100644
index 000000000..289045ed6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_BI.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_BI.res
new file mode 100644
index 000000000..f977bd94f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_BI.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_CA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_CA.res
new file mode 100644
index 000000000..564a9afa3
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_CA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_CD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_CD.res
new file mode 100644
index 000000000..3f7b3257d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_CD.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_DJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_DJ.res
new file mode 100644
index 000000000..ca650b732
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_DJ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_DZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_DZ.res
new file mode 100644
index 000000000..59448a925
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_DZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_GN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_GN.res
new file mode 100644
index 000000000..02c052d97
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_GN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_HT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_HT.res
new file mode 100644
index 000000000..5b2468938
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_HT.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_KM.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_KM.res
new file mode 100644
index 000000000..b9b28ab4d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_KM.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_LU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_LU.res
new file mode 100644
index 000000000..2379a18fd
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_LU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MG.res
new file mode 100644
index 000000000..b9db69c39
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MR.res
new file mode 100644
index 000000000..135073392
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MU.res
new file mode 100644
index 000000000..a7359ca52
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_MU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_RW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_RW.res
new file mode 100644
index 000000000..703056d32
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_RW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_SC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_SC.res
new file mode 100644
index 000000000..43dbc6bd4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_SC.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_SY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_SY.res
new file mode 100644
index 000000000..a65c01f8b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_SY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_TN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_TN.res
new file mode 100644
index 000000000..a2584e99d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_TN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_VU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_VU.res
new file mode 100644
index 000000000..e8878f4ae
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fr_VU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fur.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fur.res
new file mode 100644
index 000000000..90751f20a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fur.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fy.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fy.res
new file mode 100644
index 000000000..28ce41948
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/fy.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ga.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ga.res
new file mode 100644
index 000000000..89591b0ba
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ga.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gd.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gd.res
new file mode 100644
index 000000000..8a7d4b0d4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gd.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gl.res
new file mode 100644
index 000000000..ff342c675
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gsw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gsw.res
new file mode 100644
index 000000000..f514daae4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gsw.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gu.res
new file mode 100644
index 000000000..a5be948f9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gu.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/guz.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/guz.res
new file mode 100644
index 000000000..7b49aa226
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/guz.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gv.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/gv.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ha.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ha.res
new file mode 100644
index 000000000..01a247a76
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ha.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ha_GH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ha_GH.res
new file mode 100644
index 000000000..c8dae3125
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ha_GH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/haw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/haw.res
new file mode 100644
index 000000000..e9fb3c208
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/haw.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/he.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/he.res
new file mode 100644
index 000000000..88874f48d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/he.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/he_IL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/he_IL.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/he_IL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hi.res
new file mode 100644
index 000000000..d56df24db
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hi.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hi_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hi_Latn.res
new file mode 100644
index 000000000..eaacdd48a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hi_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hr.res
new file mode 100644
index 000000000..28c0f9ecc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hr.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hr_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hr_BA.res
new file mode 100644
index 000000000..73552d468
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hr_BA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hsb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hsb.res
new file mode 100644
index 000000000..409424d86
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hsb.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hu.res
new file mode 100644
index 000000000..c8f10a103
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hu.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hy.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hy.res
new file mode 100644
index 000000000..7ac85f7fa
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/hy.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ia.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ia.res
new file mode 100644
index 000000000..7cbbc152c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ia.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/id.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/id.res
new file mode 100644
index 000000000..c5b1a62f7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/id.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/id_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/id_ID.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/id_ID.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ie.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ie.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ie.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ig.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ig.res
new file mode 100644
index 000000000..62e1ae358
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ig.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ii.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ii.res
new file mode 100644
index 000000000..1f79df118
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ii.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/in.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/in.res
new file mode 100644
index 000000000..3d8dbccb8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/in.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/in_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/in_ID.res
new file mode 100644
index 000000000..a2bd18b28
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/in_ID.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/is.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/is.res
new file mode 100644
index 000000000..be1315faa
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/is.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/it.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/it.res
new file mode 100644
index 000000000..961a69a46
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/it.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/iw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/iw.res
new file mode 100644
index 000000000..ac8e10790
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/iw.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/iw_IL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/iw_IL.res
new file mode 100644
index 000000000..8b459cb2a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/iw_IL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ja.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ja.res
new file mode 100644
index 000000000..a6bcb2755
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ja.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jgo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jgo.res
new file mode 100644
index 000000000..989b373ec
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jgo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jmc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jmc.res
new file mode 100644
index 000000000..93f579f49
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jmc.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jv.res
new file mode 100644
index 000000000..d1950ab4c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/jv.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ka.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ka.res
new file mode 100644
index 000000000..69de3cfe1
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ka.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kab.res
new file mode 100644
index 000000000..f91dc8840
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kab.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kam.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kam.res
new file mode 100644
index 000000000..48bda05d9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kam.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kde.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kde.res
new file mode 100644
index 000000000..b6b0ce6e8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kde.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kea.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kea.res
new file mode 100644
index 000000000..3684823a8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kea.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kgp.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kgp.res
new file mode 100644
index 000000000..d55a8b281
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kgp.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/khq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/khq.res
new file mode 100644
index 000000000..20ec61c0b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/khq.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ki.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ki.res
new file mode 100644
index 000000000..b8a6a1831
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ki.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kk.res
new file mode 100644
index 000000000..d27648239
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kk.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kkj.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kkj.res
new file mode 100644
index 000000000..b72dd578b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kkj.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kl.res
new file mode 100644
index 000000000..2cdcaff9d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kln.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kln.res
new file mode 100644
index 000000000..3deba4ab2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kln.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/km.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/km.res
new file mode 100644
index 000000000..8bbc4f4ce
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/km.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kn.res
new file mode 100644
index 000000000..2c425a1c2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ko.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ko.res
new file mode 100644
index 000000000..199c721b9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ko.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kok.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kok.res
new file mode 100644
index 000000000..89b958192
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kok.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks.res
new file mode 100644
index 000000000..19f1a5662
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Arab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Arab.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Arab.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Arab_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Arab_IN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Arab_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Deva.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Deva.res
new file mode 100644
index 000000000..f98f0db62
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_Deva.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_IN.res
new file mode 100644
index 000000000..4c5a9b1f7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ks_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksb.res
new file mode 100644
index 000000000..c32156646
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksb.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksf.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksf.res
new file mode 100644
index 000000000..7eb96cf9e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksf.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksh.res
new file mode 100644
index 000000000..818bf0fc1
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ksh.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ku.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ku.res
new file mode 100644
index 000000000..ddc38f5f6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ku.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kw.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kw.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv.res
new file mode 100644
index 000000000..959fe8e43
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Deva.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Deva.res
new file mode 100644
index 000000000..8d58b3551
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Deva.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_IN.res
new file mode 100644
index 000000000..b356f2140
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Latn.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Latn_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Latn_IN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Latn_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Orya.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Orya.res
new file mode 100644
index 000000000..8d58b3551
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Orya.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Telu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Telu.res
new file mode 100644
index 000000000..8d58b3551
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/kxv_Telu.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ky.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ky.res
new file mode 100644
index 000000000..f73915279
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ky.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lag.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lag.res
new file mode 100644
index 000000000..50e35b83e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lag.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lb.res
new file mode 100644
index 000000000..85ddedc2c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lb.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lg.res
new file mode 100644
index 000000000..34bbe7b98
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lg.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lij.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lij.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lij.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lkt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lkt.res
new file mode 100644
index 000000000..fe05be52d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lkt.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lmo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lmo.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lmo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ln.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ln.res
new file mode 100644
index 000000000..289b3c947
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ln.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ln_AO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ln_AO.res
new file mode 100644
index 000000000..1a31942df
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ln_AO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lo.res
new file mode 100644
index 000000000..b38c15fff
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lrc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lrc.res
new file mode 100644
index 000000000..17bd491c6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lrc.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lt.res
new file mode 100644
index 000000000..976a609fe
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lt.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lu.res
new file mode 100644
index 000000000..c79453e4c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lu.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/luo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/luo.res
new file mode 100644
index 000000000..16e0c3931
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/luo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/luy.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/luy.res
new file mode 100644
index 000000000..8088f0b01
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/luy.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lv.res
new file mode 100644
index 000000000..149feb52e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/lv.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mai.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mai.res
new file mode 100644
index 000000000..a2a1eab29
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mai.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mas.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mas.res
new file mode 100644
index 000000000..6401af012
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mas.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mas_TZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mas_TZ.res
new file mode 100644
index 000000000..9efa9c491
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mas_TZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mer.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mer.res
new file mode 100644
index 000000000..58e1ec35c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mer.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mfe.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mfe.res
new file mode 100644
index 000000000..c43466ad3
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mfe.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mg.res
new file mode 100644
index 000000000..5160c90b2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mg.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mgh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mgh.res
new file mode 100644
index 000000000..dbc4ff8a9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mgh.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mgo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mgo.res
new file mode 100644
index 000000000..a4d71b9ac
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mgo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mi.res
new file mode 100644
index 000000000..efda2c582
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mi.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mk.res
new file mode 100644
index 000000000..5be5061d6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mk.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ml.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ml.res
new file mode 100644
index 000000000..6cfaa133c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ml.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mn.res
new file mode 100644
index 000000000..33b07b527
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni.res
new file mode 100644
index 000000000..48d2486c8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_Beng.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_Beng.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_Beng.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_Beng_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_Beng_IN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_Beng_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_IN.res
new file mode 100644
index 000000000..023821d4a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mni_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mo.res
new file mode 100644
index 000000000..44f23c543
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mr.res
new file mode 100644
index 000000000..d48c814b3
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mr.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms.res
new file mode 100644
index 000000000..3ba1e51f7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_BN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_BN.res
new file mode 100644
index 000000000..ff3ec2201
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_BN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_ID.res
new file mode 100644
index 000000000..6c73a19c2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_ID.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_SG.res
new file mode 100644
index 000000000..a573b12be
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ms_SG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mt.res
new file mode 100644
index 000000000..dabf98b67
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mt.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mua.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mua.res
new file mode 100644
index 000000000..fc8a3eeea
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mua.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/my.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/my.res
new file mode 100644
index 000000000..fa7bee4e2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/my.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mzn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mzn.res
new file mode 100644
index 000000000..1fdcf5fd8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/mzn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/naq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/naq.res
new file mode 100644
index 000000000..b947781e8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/naq.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nb.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nb.res
new file mode 100644
index 000000000..b15088c84
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nb.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nd.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nd.res
new file mode 100644
index 000000000..ec074ec64
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nd.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nds.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nds.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nds.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ne.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ne.res
new file mode 100644
index 000000000..a446ee0de
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ne.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl.res
new file mode 100644
index 000000000..a73f08782
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_AW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_AW.res
new file mode 100644
index 000000000..66af2fe02
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_AW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_BQ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_BQ.res
new file mode 100644
index 000000000..8bff8ef47
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_BQ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_CW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_CW.res
new file mode 100644
index 000000000..877690b42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_CW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_SR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_SR.res
new file mode 100644
index 000000000..ef90eb22b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_SR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_SX.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_SX.res
new file mode 100644
index 000000000..877690b42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nl_SX.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nmg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nmg.res
new file mode 100644
index 000000000..f556f4b05
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nmg.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nn.res
new file mode 100644
index 000000000..c705ac34c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nn_NO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nn_NO.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nn_NO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nnh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nnh.res
new file mode 100644
index 000000000..219e27e06
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nnh.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no.res
new file mode 100644
index 000000000..639496933
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no_NO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no_NO.res
new file mode 100644
index 000000000..ffb1522a9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no_NO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no_NO_NY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no_NO_NY.res
new file mode 100644
index 000000000..829edbc95
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/no_NO_NY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nqo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nqo.res
new file mode 100644
index 000000000..bbe11b669
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nqo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nus.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nus.res
new file mode 100644
index 000000000..9a738032a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nus.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nyn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nyn.res
new file mode 100644
index 000000000..cce0b895e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/nyn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/oc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/oc.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/oc.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/om.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/om.res
new file mode 100644
index 000000000..506a965ce
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/om.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/om_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/om_KE.res
new file mode 100644
index 000000000..c1c72c56b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/om_KE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/or.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/or.res
new file mode 100644
index 000000000..45fe0e5d0
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/or.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/os.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/os.res
new file mode 100644
index 000000000..cc0fd6705
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/os.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/os_RU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/os_RU.res
new file mode 100644
index 000000000..3cad50f67
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/os_RU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa.res
new file mode 100644
index 000000000..66769ef59
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Arab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Arab.res
new file mode 100644
index 000000000..c9b400390
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Arab.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Arab_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Arab_PK.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Guru.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Guru.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Guru.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Guru_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Guru_IN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_Guru_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_IN.res
new file mode 100644
index 000000000..a64d1c4d0
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_PK.res
new file mode 100644
index 000000000..40256bce7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pa_PK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pcm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pcm.res
new file mode 100644
index 000000000..0317b49a2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pcm.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pl.res
new file mode 100644
index 000000000..21a2e5ff2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pool.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pool.res
new file mode 100644
index 000000000..bbf19f17d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pool.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/prg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/prg.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/prg.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ps.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ps.res
new file mode 100644
index 000000000..00f2d9e0c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ps.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ps_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ps_PK.res
new file mode 100644
index 000000000..3f59a151a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ps_PK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt.res
new file mode 100644
index 000000000..2bb19f52d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_AO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_AO.res
new file mode 100644
index 000000000..86d40dd3f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_AO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_CH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_CH.res
new file mode 100644
index 000000000..62fc9d726
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_CH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_CV.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_CV.res
new file mode 100644
index 000000000..f1540829f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_CV.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_GQ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_GQ.res
new file mode 100644
index 000000000..62fc9d726
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_GQ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_GW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_GW.res
new file mode 100644
index 000000000..62fc9d726
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_GW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_LU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_LU.res
new file mode 100644
index 000000000..a7e6080d7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_LU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_MO.res
new file mode 100644
index 000000000..85a943865
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_MO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_MZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_MZ.res
new file mode 100644
index 000000000..ce1484966
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_MZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_PT.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_PT.res
new file mode 100644
index 000000000..2e88b607f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_PT.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_ST.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_ST.res
new file mode 100644
index 000000000..5d7a048de
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_ST.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_TL.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_TL.res
new file mode 100644
index 000000000..62fc9d726
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/pt_TL.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu.res
new file mode 100644
index 000000000..380bb61b2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu_BO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu_BO.res
new file mode 100644
index 000000000..ffc95339d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu_BO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu_EC.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu_EC.res
new file mode 100644
index 000000000..531c89023
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/qu_EC.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/raj.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/raj.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/raj.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/res_index.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/res_index.res
new file mode 100644
index 000000000..7de003252
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/res_index.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rm.res
new file mode 100644
index 000000000..a19b49577
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rm.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rn.res
new file mode 100644
index 000000000..76cc1ab8f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ro.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ro.res
new file mode 100644
index 000000000..0aa333167
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ro.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ro_MD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ro_MD.res
new file mode 100644
index 000000000..0f1fd0632
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ro_MD.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rof.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rof.res
new file mode 100644
index 000000000..2bcb33f6f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rof.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/root.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/root.res
new file mode 100644
index 000000000..2b49e04bb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/root.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru.res
new file mode 100644
index 000000000..10f36a94f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_BY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_BY.res
new file mode 100644
index 000000000..e61a15802
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_BY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_KG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_KG.res
new file mode 100644
index 000000000..b2203e60e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_KG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_KZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_KZ.res
new file mode 100644
index 000000000..bc4f72ec4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_KZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_MD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_MD.res
new file mode 100644
index 000000000..7ac5d1b92
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ru_MD.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rw.res
new file mode 100644
index 000000000..6cb010b46
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rw.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rwk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rwk.res
new file mode 100644
index 000000000..93f579f49
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/rwk.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sa.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sa.res
new file mode 100644
index 000000000..ba828cc41
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sa.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sah.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sah.res
new file mode 100644
index 000000000..7439051a5
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sah.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/saq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/saq.res
new file mode 100644
index 000000000..b8056df18
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/saq.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat.res
new file mode 100644
index 000000000..7ef605e71
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_IN.res
new file mode 100644
index 000000000..3ee418cfb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_Olck.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_Olck.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_Olck.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_Olck_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_Olck_IN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sat_Olck_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sbp.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sbp.res
new file mode 100644
index 000000000..5581aaedc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sbp.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sc.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sc.res
new file mode 100644
index 000000000..003652cf6
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sc.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd.res
new file mode 100644
index 000000000..4546681ce
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Arab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Arab.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Arab.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Arab_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Arab_PK.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Deva.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Deva.res
new file mode 100644
index 000000000..896a06ec5
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Deva.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Deva_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Deva_IN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_Deva_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_IN.res
new file mode 100644
index 000000000..2618cabef
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_PK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_PK.res
new file mode 100644
index 000000000..f9fc7f9ad
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sd_PK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/se.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/se.res
new file mode 100644
index 000000000..aff1ba155
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/se.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/se_SE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/se_SE.res
new file mode 100644
index 000000000..cbfa88948
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/se_SE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/seh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/seh.res
new file mode 100644
index 000000000..2a17b7f09
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/seh.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ses.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ses.res
new file mode 100644
index 000000000..20ec61c0b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ses.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sg.res
new file mode 100644
index 000000000..4dd9f5edb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sg.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh.res
new file mode 100644
index 000000000..6c353be5d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_BA.res
new file mode 100644
index 000000000..a0987f360
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_BA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_CS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_CS.res
new file mode 100644
index 000000000..9e5fa727e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_CS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_YU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_YU.res
new file mode 100644
index 000000000..9e5fa727e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sh_YU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi.res
new file mode 100644
index 000000000..e0b893fec
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Latn.res
new file mode 100644
index 000000000..7f7673c02
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_MA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_MA.res
new file mode 100644
index 000000000..da457f49f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_MA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Tfng.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Tfng.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Tfng.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Tfng_MA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Tfng_MA.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/shi_Tfng_MA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/si.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/si.res
new file mode 100644
index 000000000..613e44bee
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/si.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sk.res
new file mode 100644
index 000000000..3956219a7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sk.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sl.res
new file mode 100644
index 000000000..27645e096
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/smn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/smn.res
new file mode 100644
index 000000000..3230b7272
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/smn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sn.res
new file mode 100644
index 000000000..3a48c51a9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so.res
new file mode 100644
index 000000000..ba616837a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_DJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_DJ.res
new file mode 100644
index 000000000..0608892a4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_DJ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_ET.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_ET.res
new file mode 100644
index 000000000..f3c84b608
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_ET.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_KE.res
new file mode 100644
index 000000000..61e5d3470
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/so_KE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sq.res
new file mode 100644
index 000000000..591c7c102
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sq.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sq_MK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sq_MK.res
new file mode 100644
index 000000000..00235343b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sq_MK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr.res
new file mode 100644
index 000000000..03e7c6ebb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_BA.res
new file mode 100644
index 000000000..7983d5930
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_BA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_CS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_CS.res
new file mode 100644
index 000000000..58e14a4c7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_CS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_BA.res
new file mode 100644
index 000000000..d64a95369
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_BA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_CS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_CS.res
new file mode 100644
index 000000000..b03231802
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_CS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_RS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_RS.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_RS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_XK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_XK.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_XK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_YU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_YU.res
new file mode 100644
index 000000000..b03231802
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Cyrl_YU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn.res
new file mode 100644
index 000000000..b9d22bb54
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_BA.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_BA.res
new file mode 100644
index 000000000..02042208b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_CS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_CS.res
new file mode 100644
index 000000000..9e5fa727e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_CS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_ME.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_ME.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_ME.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_RS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_RS.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_RS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_YU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_YU.res
new file mode 100644
index 000000000..9e5fa727e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_Latn_YU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_ME.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_ME.res
new file mode 100644
index 000000000..e6fb5be82
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_ME.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_RS.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_RS.res
new file mode 100644
index 000000000..b03231802
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_RS.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_XK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_XK.res
new file mode 100644
index 000000000..9054b04b4
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_XK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_YU.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_YU.res
new file mode 100644
index 000000000..58e14a4c7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sr_YU.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su.res
new file mode 100644
index 000000000..e3b4421eb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_ID.res
new file mode 100644
index 000000000..b43bb2fb7
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_ID.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_Latn.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_Latn_ID.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_Latn_ID.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/su_Latn_ID.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/supplementalData.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/supplementalData.res
new file mode 100644
index 000000000..c72574fef
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/supplementalData.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sv.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sv.res
new file mode 100644
index 000000000..44c3f0a9a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sv.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw.res
new file mode 100644
index 000000000..0828e954d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_CD.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_CD.res
new file mode 100644
index 000000000..33369b99c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_CD.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_KE.res
new file mode 100644
index 000000000..c2ce12b00
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_KE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_UG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_UG.res
new file mode 100644
index 000000000..faf0bff25
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/sw_UG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/syr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/syr.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/syr.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/szl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/szl.res
new file mode 100644
index 000000000..cb29067a0
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/szl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta.res
new file mode 100644
index 000000000..41ecbc543
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_LK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_LK.res
new file mode 100644
index 000000000..b5064dffd
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_LK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_MY.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_MY.res
new file mode 100644
index 000000000..348af165e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_MY.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_SG.res
new file mode 100644
index 000000000..75bf83372
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ta_SG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/te.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/te.res
new file mode 100644
index 000000000..768120606
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/te.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/teo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/teo.res
new file mode 100644
index 000000000..9846118b8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/teo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/teo_KE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/teo_KE.res
new file mode 100644
index 000000000..4017655cf
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/teo_KE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tg.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tg.res
new file mode 100644
index 000000000..eeffd4650
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tg.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/th.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/th.res
new file mode 100644
index 000000000..1ce6475d1
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/th.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ti.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ti.res
new file mode 100644
index 000000000..199b12c61
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ti.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ti_ER.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ti_ER.res
new file mode 100644
index 000000000..431305803
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ti_ER.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tk.res
new file mode 100644
index 000000000..37f93b73e
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tk.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tl.res
new file mode 100644
index 000000000..1817dbcd2
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tl_PH.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tl_PH.res
new file mode 100644
index 000000000..7cab7ab9b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tl_PH.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/to.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/to.res
new file mode 100644
index 000000000..73a5967dd
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/to.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tok.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tok.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tok.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tr.res
new file mode 100644
index 000000000..8c9277d73
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tr.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tt.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tt.res
new file mode 100644
index 000000000..24ee871aa
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tt.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/twq.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/twq.res
new file mode 100644
index 000000000..20ec61c0b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/twq.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tzm.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tzm.res
new file mode 100644
index 000000000..fb61ef3b8
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/tzm.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ug.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ug.res
new file mode 100644
index 000000000..ef135fd97
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ug.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uk.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uk.res
new file mode 100644
index 000000000..68b2bac0b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uk.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ur.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ur.res
new file mode 100644
index 000000000..02a4dbe02
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ur.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ur_IN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ur_IN.res
new file mode 100644
index 000000000..d74462f1b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/ur_IN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz.res
new file mode 100644
index 000000000..de662f674
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_AF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_AF.res
new file mode 100644
index 000000000..b5e0785bc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_AF.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Arab.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Arab.res
new file mode 100644
index 000000000..f554deb7d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Arab.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Arab_AF.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Arab_AF.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Arab_AF.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Cyrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Cyrl.res
new file mode 100644
index 000000000..0d71b823a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Cyrl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Latn.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Latn_UZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Latn_UZ.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_Latn_UZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_UZ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_UZ.res
new file mode 100644
index 000000000..836aa4440
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/uz_UZ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai.res
new file mode 100644
index 000000000..e5da94068
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_LR.res
new file mode 100644
index 000000000..0b77f89a9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_LR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Latn.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Latn.res
new file mode 100644
index 000000000..f10305bcb
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Latn.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Vaii.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Vaii.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Vaii.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Vaii_LR.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Vaii_LR.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vai_Vaii_LR.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vec.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vec.res
new file mode 100644
index 000000000..22883dded
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vec.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vi.res
new file mode 100644
index 000000000..b555d700a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vi.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vmw.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vmw.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vmw.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vun.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vun.res
new file mode 100644
index 000000000..93f579f49
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/vun.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/wae.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/wae.res
new file mode 100644
index 000000000..c88680d3d
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/wae.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/wo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/wo.res
new file mode 100644
index 000000000..731bd58ac
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/wo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xh.res
new file mode 100644
index 000000000..ea52a478c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xh.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xnr.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xnr.res
new file mode 100644
index 000000000..4b0db0d9c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xnr.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xog.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xog.res
new file mode 100644
index 000000000..90abc7a06
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/xog.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yav.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yav.res
new file mode 100644
index 000000000..bcc06cdd1
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yav.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yi.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yi.res
new file mode 100644
index 000000000..365da535c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yi.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yo.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yo.res
new file mode 100644
index 000000000..d242545d9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yo.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yo_BJ.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yo_BJ.res
new file mode 100644
index 000000000..936324727
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yo_BJ.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl.res
new file mode 100644
index 000000000..23f97a796
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl_CO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl_CO.res
new file mode 100644
index 000000000..9ffd15dc9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl_CO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl_VE.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl_VE.res
new file mode 100644
index 000000000..9ffd15dc9
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yrl_VE.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue.res
new file mode 100644
index 000000000..b2d48550a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_CN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_CN.res
new file mode 100644
index 000000000..75d42c873
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_CN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_HK.res
new file mode 100644
index 000000000..3fd7348cc
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_HK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hans.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hans.res
new file mode 100644
index 000000000..129cb60e3
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hans.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hans_CN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hans_CN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hant.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hant.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hant.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hant_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hant_HK.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/yue_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/za.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/za.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/za.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zgh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zgh.res
new file mode 100644
index 000000000..a7b64640f
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zgh.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh.res
new file mode 100644
index 000000000..c72dfb527
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_CN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_CN.res
new file mode 100644
index 000000000..d78643e9c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_CN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_HK.res
new file mode 100644
index 000000000..c3e87ee8b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_HK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans.res
new file mode 100644
index 000000000..1d2307b83
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_CN.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_CN.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_HK.res
new file mode 100644
index 000000000..bd89acd9b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_HK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_MO.res
new file mode 100644
index 000000000..7dfee1d94
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_MO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_SG.res
new file mode 100644
index 000000000..97cb70314
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hans_SG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant.res
new file mode 100644
index 000000000..c340d2c8a
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_HK.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_HK.res
new file mode 100644
index 000000000..8252bc028
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_MO.res
new file mode 100644
index 000000000..5635de055
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_MO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_TW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_TW.res
new file mode 100644
index 000000000..25b627c42
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_Hant_TW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_MO.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_MO.res
new file mode 100644
index 000000000..5a7fc689b
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_MO.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_SG.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_SG.res
new file mode 100644
index 000000000..27194e315
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_SG.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_TW.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_TW.res
new file mode 100644
index 000000000..93f1f972c
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zh_TW.res
Binary files differ
diff --git a/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zu.res b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zu.res
new file mode 100644
index 000000000..8f30bcc37
--- /dev/null
+++ b/icu4j/main/currdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/curr/zu.res
Binary files differ
diff --git a/icu4j/main/framework/pom.xml b/icu4j/main/framework/pom.xml
index 2b50d739a..7139c8640 100644
--- a/icu4j/main/framework/pom.xml
+++ b/icu4j/main/framework/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/framework/src/test/java/com/ibm/icu/dev/test/TestFmwk.java b/icu4j/main/framework/src/test/java/com/ibm/icu/dev/test/TestFmwk.java
index 067f96e65..a58a32786 100644
--- a/icu4j/main/framework/src/test/java/com/ibm/icu/dev/test/TestFmwk.java
+++ b/icu4j/main/framework/src/test/java/com/ibm/icu/dev/test/TestFmwk.java
@@ -397,7 +397,7 @@ abstract public class TestFmwk extends AbstractTestLog {
if (s == null) {
return defVal;
}
- return (maxVal == -1) ? Integer.valueOf(s) : Math.max(Integer.valueOf(s), maxVal);
+ return (maxVal == -1) ? Integer.parseInt(s) : Math.max(Integer.parseInt(s), maxVal);
}
public long getLongProperty(String key, long defVal) {
@@ -405,7 +405,7 @@ abstract public class TestFmwk extends AbstractTestLog {
if (s == null) {
return defVal;
}
- return Long.valueOf(s);
+ return Long.parseLong(s);
}
public int getInclusion() {
diff --git a/icu4j/main/icu4j/pom.xml b/icu4j/main/icu4j/pom.xml
index 95ffd0d16..fbb7c1f90 100644
--- a/icu4j/main/icu4j/pom.xml
+++ b/icu4j/main/icu4j/pom.xml
@@ -9,7 +9,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/langdata/pom.xml b/icu4j/main/langdata/pom.xml
index 2d95be17f..dbb98f136 100644
--- a/icu4j/main/langdata/pom.xml
+++ b/icu4j/main/langdata/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/af.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/af.res
deleted file mode 100644
index 8cf2e7791..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/af.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/agq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/agq.res
deleted file mode 100644
index b32be0734..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/agq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ak.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ak.res
deleted file mode 100644
index ee0f0a475..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ak.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/am.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/am.res
deleted file mode 100644
index 4a0d14649..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/am.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar.res
deleted file mode 100644
index aecab3d74..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_EG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_EG.res
deleted file mode 100644
index c73684f92..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_EG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_LY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_LY.res
deleted file mode 100644
index b97c86977..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_LY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_SA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_SA.res
deleted file mode 100644
index dcdbad2dd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_SA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_XB.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_XB.res
deleted file mode 100644
index 9ee80acee..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ar_XB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ars.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ars.res
deleted file mode 100644
index 8c536036f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ars.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/as.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/as.res
deleted file mode 100644
index ee66b2a25..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/as.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/asa.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/asa.res
deleted file mode 100644
index 4f7b7cfa6..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/asa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ast.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ast.res
deleted file mode 100644
index d5e663a99..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ast.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az.res
deleted file mode 100644
index f0cf03e65..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_AZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_AZ.res
deleted file mode 100644
index 800cecfd1..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Cyrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Cyrl.res
deleted file mode 100644
index 95df5f801..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Latn.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Latn_AZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Latn_AZ.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/az_Latn_AZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bas.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bas.res
deleted file mode 100644
index 8433940b5..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bas.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/be.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/be.res
deleted file mode 100644
index e1d1489be..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/be.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bem.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bem.res
deleted file mode 100644
index c6e736e60..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bem.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bez.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bez.res
deleted file mode 100644
index bde252240..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bez.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bg.res
deleted file mode 100644
index f33d3a06e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bgc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bgc.res
deleted file mode 100644
index 24761713f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bgc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bho.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bho.res
deleted file mode 100644
index 7cecff73f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bho.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/blo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/blo.res
deleted file mode 100644
index 4b4dd09bd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/blo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bm.res
deleted file mode 100644
index 2aa432e50..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bn.res
deleted file mode 100644
index aea89e32e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bn_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bn_IN.res
deleted file mode 100644
index b4cbdcf64..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bn_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bo.res
deleted file mode 100644
index 0db38e32b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/br.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/br.res
deleted file mode 100644
index a47d4becd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/br.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/brx.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/brx.res
deleted file mode 100644
index 951b980c0..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/brx.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs.res
deleted file mode 100644
index 5b4a4a134..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_BA.res
deleted file mode 100644
index b022a7ec8..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Cyrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Cyrl.res
deleted file mode 100644
index e0c09fc2c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Latn.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Latn_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Latn_BA.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/bs_Latn_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ca.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ca.res
deleted file mode 100644
index 2dbc7f694..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ca.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ccp.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ccp.res
deleted file mode 100644
index aa6129139..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ccp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ce.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ce.res
deleted file mode 100644
index 09c1a23f6..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ce.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ceb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ceb.res
deleted file mode 100644
index a9add4338..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ceb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cgg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cgg.res
deleted file mode 100644
index a2d061b90..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cgg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/chr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/chr.res
deleted file mode 100644
index 0cb348dd3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/chr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ckb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ckb.res
deleted file mode 100644
index 017356b82..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ckb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cs.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cs.res
deleted file mode 100644
index 138ce0513..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cs.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/csw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/csw.res
deleted file mode 100644
index 5e9144be9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/csw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cv.res
deleted file mode 100644
index 7d7cfb625..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cy.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cy.res
deleted file mode 100644
index 86a7ac148..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/cy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/da.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/da.res
deleted file mode 100644
index 713e092b7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/da.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dav.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dav.res
deleted file mode 100644
index f44a6e79f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dav.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de.res
deleted file mode 100644
index 8885a74bb..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de_AT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de_AT.res
deleted file mode 100644
index aed43f13e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de_AT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de_CH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de_CH.res
deleted file mode 100644
index 39c4c0de8..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/de_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dje.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dje.res
deleted file mode 100644
index 20394d6df..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dje.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/doi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/doi.res
deleted file mode 100644
index 4536fdda3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/doi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dsb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dsb.res
deleted file mode 100644
index 99ea3b347..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dua.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dua.res
deleted file mode 100644
index a9dbc9b57..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dua.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dyo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dyo.res
deleted file mode 100644
index 6d6645db9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dyo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dz.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dz.res
deleted file mode 100644
index 13111e4e9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/dz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ebu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ebu.res
deleted file mode 100644
index 3d91e06a3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ebu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ee.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ee.res
deleted file mode 100644
index 886cbf525..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ee.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/el.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/el.res
deleted file mode 100644
index f7b04af70..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/el.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en.res
deleted file mode 100644
index a83613e08..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_001.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_001.res
deleted file mode 100644
index b136f48f5..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_001.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_150.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_150.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_150.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AI.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AT.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AU.res
deleted file mode 100644
index 93ee52be1..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_AU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BB.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BB.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BE.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BM.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BS.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BW.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BZ.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_BZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CA.res
deleted file mode 100644
index 4cbfe5c31..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CC.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CH.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CK.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CM.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CX.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CX.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CY.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_CY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DE.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DK.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DM.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_DM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ER.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ER.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FI.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FJ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FJ.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FK.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FM.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_FM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GB.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GB.res
deleted file mode 100644
index 772bab6bd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GD.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GD.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GH.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GI.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GM.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GY.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_GY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_HK.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ID.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IE.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IL.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IM.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IN.res
deleted file mode 100644
index 2e1cb6e98..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IO.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_IO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_JE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_JE.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_JE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_JM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_JM.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_JM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KE.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KI.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KN.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KY.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_KY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LC.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LR.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LS.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_LS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MO.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MS.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MT.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MU.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MV.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MV.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MW.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MY.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_MY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NA.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NF.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NF.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NH.res
deleted file mode 100644
index 6776f42fe..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NL.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NR.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NU.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NZ.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_NZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PK.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PN.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PW.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_PW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_RH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_RH.res
deleted file mode 100644
index 976c183c2..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_RH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_RW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_RW.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_RW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SB.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SB.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SB.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SC.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SD.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SD.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SE.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SH.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SI.res
deleted file mode 100644
index 324d1c417..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SL.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SS.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SX.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SX.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SZ.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_SZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TC.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TK.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TO.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TT.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TV.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TV.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TZ.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_TZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_UG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_UG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_UG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VC.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VG.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VU.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_VU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_WS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_WS.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_WS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_XA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_XA.res
deleted file mode 100644
index fc9c21143..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_XA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZA.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZM.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZW.res
deleted file mode 100644
index 4d0df1c9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/en_ZW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/eo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/eo.res
deleted file mode 100644
index 8ec1964cc..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/eo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es.res
deleted file mode 100644
index 5a43b0bce..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_419.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_419.res
deleted file mode 100644
index 043706a85..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_419.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_AR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_AR.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_AR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BO.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BR.res
deleted file mode 100644
index d247b825d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BZ.res
deleted file mode 100644
index d247b825d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_BZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CL.res
deleted file mode 100644
index db23d34e0..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CO.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CR.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CU.res
deleted file mode 100644
index d247b825d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_CU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_DO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_DO.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_DO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_EC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_EC.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_EC.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_GT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_GT.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_GT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_HN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_HN.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_HN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_MX.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_MX.res
deleted file mode 100644
index 76d16a9b7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_MX.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_NI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_NI.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_NI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PA.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PE.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PR.res
deleted file mode 100644
index 1cce22515..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PY.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_PY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_SV.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_SV.res
deleted file mode 100644
index 1cce22515..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_SV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_US.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_US.res
deleted file mode 100644
index 1da3068d8..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_US.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_UY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_UY.res
deleted file mode 100644
index d247b825d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_UY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_VE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_VE.res
deleted file mode 100644
index 7cbe6b4db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/es_VE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/et.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/et.res
deleted file mode 100644
index 64e042252..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/et.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/eu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/eu.res
deleted file mode 100644
index 6850730aa..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/eu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ewo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ewo.res
deleted file mode 100644
index 44ff016d2..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ewo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fa.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fa.res
deleted file mode 100644
index 1b5d84619..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fa_AF.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fa_AF.res
deleted file mode 100644
index e78034822..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fa_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff.res
deleted file mode 100644
index 04806e493..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Adlm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Adlm.res
deleted file mode 100644
index 2bb5ba703..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Adlm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_CM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_CM.res
deleted file mode 100644
index 4f0cb9aaf..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_GN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_GN.res
deleted file mode 100644
index f6be604b2..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_CM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_CM.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_CM.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_GN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_GN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_GN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_MR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_MR.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_SN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_SN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_Latn_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_MR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_MR.res
deleted file mode 100644
index 150e27e5c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_MR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_SN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_SN.res
deleted file mode 100644
index 2be0d2dae..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ff_SN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fi.res
deleted file mode 100644
index 375936cca..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fil.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fil.res
deleted file mode 100644
index 4c291adc7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fil.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fil_PH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fil_PH.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fil_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fo.res
deleted file mode 100644
index 0fd120f44..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr.res
deleted file mode 100644
index 3e78c0f7e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_BE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_BE.res
deleted file mode 100644
index 8af7322a1..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_BE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_CA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_CA.res
deleted file mode 100644
index 83c9a922e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_CA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_CH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_CH.res
deleted file mode 100644
index 3ff46f217..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fr_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fur.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fur.res
deleted file mode 100644
index eac01d0fe..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fy.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fy.res
deleted file mode 100644
index b18c816bf..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/fy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ga.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ga.res
deleted file mode 100644
index 1868e58c0..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ga.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gd.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gd.res
deleted file mode 100644
index 84f7a2a0b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gl.res
deleted file mode 100644
index b754dc6c3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gsw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gsw.res
deleted file mode 100644
index 4f3e38a3f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gsw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gu.res
deleted file mode 100644
index 9369bc51e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/guz.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/guz.res
deleted file mode 100644
index cb46ba228..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/guz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gv.res
deleted file mode 100644
index 93c796248..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/gv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ha.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ha.res
deleted file mode 100644
index f0c23e0df..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ha.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ha_NE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ha_NE.res
deleted file mode 100644
index 427f06a3f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ha_NE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/haw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/haw.res
deleted file mode 100644
index 56751cabf..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/haw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/he.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/he.res
deleted file mode 100644
index 7cad82acf..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/he.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/he_IL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/he_IL.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/he_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hi.res
deleted file mode 100644
index 126881655..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hi_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hi_Latn.res
deleted file mode 100644
index 34a831421..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hr.res
deleted file mode 100644
index e81fda020..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hsb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hsb.res
deleted file mode 100644
index 2a1689a9e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hsb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hu.res
deleted file mode 100644
index 6c807d220..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hy.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hy.res
deleted file mode 100644
index ce8cf1c3a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/hy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ia.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ia.res
deleted file mode 100644
index d33b965c2..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ia.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/id.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/id.res
deleted file mode 100644
index 54dcf2476..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/id.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/id_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/id_ID.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/id_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ie.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ie.res
deleted file mode 100644
index a6e64e6ec..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ie.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ig.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ig.res
deleted file mode 100644
index d51511470..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ig.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ii.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ii.res
deleted file mode 100644
index 67cf7849a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ii.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/in.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/in.res
deleted file mode 100644
index ace11f10b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/in.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/in_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/in_ID.res
deleted file mode 100644
index 89b0f053d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/in_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/is.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/is.res
deleted file mode 100644
index 2d727ab89..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/is.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/it.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/it.res
deleted file mode 100644
index b2c70304c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/it.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/iw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/iw.res
deleted file mode 100644
index 41e755bb4..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/iw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/iw_IL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/iw_IL.res
deleted file mode 100644
index 49551c91a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/iw_IL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ja.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ja.res
deleted file mode 100644
index 4a017bfc1..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ja.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jgo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jgo.res
deleted file mode 100644
index a1ee4ef18..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jgo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jmc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jmc.res
deleted file mode 100644
index 11b0517d4..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jmc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jv.res
deleted file mode 100644
index 94a252b3f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/jv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ka.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ka.res
deleted file mode 100644
index 28d1c3f58..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ka.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kab.res
deleted file mode 100644
index 8b38fca34..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kam.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kam.res
deleted file mode 100644
index 4cc966d1a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kam.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kde.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kde.res
deleted file mode 100644
index e90db662c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kde.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kea.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kea.res
deleted file mode 100644
index c111fcac3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kea.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kgp.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kgp.res
deleted file mode 100644
index 3a5dbff2c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kgp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/khq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/khq.res
deleted file mode 100644
index ab9dc318a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/khq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ki.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ki.res
deleted file mode 100644
index 61eaad104..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ki.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kk.res
deleted file mode 100644
index a768cc193..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kkj.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kkj.res
deleted file mode 100644
index a1529386b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kkj.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kl.res
deleted file mode 100644
index f80a3715a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kln.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kln.res
deleted file mode 100644
index 53e74af8f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/km.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/km.res
deleted file mode 100644
index 9397e8e2b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/km.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kn.res
deleted file mode 100644
index c557e565e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ko.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ko.res
deleted file mode 100644
index 28aaf212f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ko.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kok.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kok.res
deleted file mode 100644
index 1053d46ab..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks.res
deleted file mode 100644
index 85a570f0c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Arab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Arab.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Arab_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Arab_IN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Arab_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Deva.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Deva.res
deleted file mode 100644
index 2666b1c1b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_IN.res
deleted file mode 100644
index 366ea6fad..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ks_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksb.res
deleted file mode 100644
index 0b7dc1ab7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksf.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksf.res
deleted file mode 100644
index e2b4f80f9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksf.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksh.res
deleted file mode 100644
index 9ca4e270a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ksh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ku.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ku.res
deleted file mode 100644
index ec66f3808..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ku.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kw.res
deleted file mode 100644
index 246f32bee..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv.res
deleted file mode 100644
index ee5d97e32..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Deva.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Deva.res
deleted file mode 100644
index fbd5ead66..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Orya.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Orya.res
deleted file mode 100644
index c1ccd1e86..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Orya.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Telu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Telu.res
deleted file mode 100644
index 6a06119d5..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/kxv_Telu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ky.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ky.res
deleted file mode 100644
index ae369e6f8..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ky.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lag.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lag.res
deleted file mode 100644
index 4c3741699..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lag.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lb.res
deleted file mode 100644
index 9c9934606..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lg.res
deleted file mode 100644
index a7a99ef96..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lij.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lij.res
deleted file mode 100644
index 2f3858d47..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lij.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lkt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lkt.res
deleted file mode 100644
index 7e18899e9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lkt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lmo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lmo.res
deleted file mode 100644
index 58608fd23..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lmo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ln.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ln.res
deleted file mode 100644
index e953928db..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ln.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lo.res
deleted file mode 100644
index d89fd8d8a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lrc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lrc.res
deleted file mode 100644
index 71f0473c0..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lrc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lt.res
deleted file mode 100644
index ccddcf624..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lu.res
deleted file mode 100644
index 4bc9bf314..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/luo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/luo.res
deleted file mode 100644
index feaff210e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/luo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/luy.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/luy.res
deleted file mode 100644
index 80ba81121..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/luy.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lv.res
deleted file mode 100644
index da50dd16a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/lv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mai.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mai.res
deleted file mode 100644
index 0057a1cf9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mai.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mas.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mas.res
deleted file mode 100644
index 73333e38d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mas.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mer.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mer.res
deleted file mode 100644
index 775574fda..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mer.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mfe.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mfe.res
deleted file mode 100644
index b5cb0c608..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mfe.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mg.res
deleted file mode 100644
index ad9376250..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mgh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mgh.res
deleted file mode 100644
index bc68db563..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mgh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mgo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mgo.res
deleted file mode 100644
index 4e4dd0b44..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mgo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mi.res
deleted file mode 100644
index 7f8d06946..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mk.res
deleted file mode 100644
index a03dfe6c4..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ml.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ml.res
deleted file mode 100644
index 2a562dc5d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ml.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mn.res
deleted file mode 100644
index 557671b55..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni.res
deleted file mode 100644
index f97c0c63b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_Beng.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_Beng.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_Beng.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_Beng_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_Beng_IN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_Beng_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_IN.res
deleted file mode 100644
index f6c8022df..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mni_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mo.res
deleted file mode 100644
index e2361fb11..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mr.res
deleted file mode 100644
index 11cab7847..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ms.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ms.res
deleted file mode 100644
index b37bb9c0f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ms.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mt.res
deleted file mode 100644
index c6e8c29b7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mua.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mua.res
deleted file mode 100644
index 46920f7c6..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mua.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/my.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/my.res
deleted file mode 100644
index 3350b0246..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/my.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mzn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mzn.res
deleted file mode 100644
index acee7495d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/mzn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/naq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/naq.res
deleted file mode 100644
index 31660a1bd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/naq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nb.res
deleted file mode 100644
index d5114e24a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nb.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nd.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nd.res
deleted file mode 100644
index bdfe514ef..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nds.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nds.res
deleted file mode 100644
index f98f1ba5c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nds.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ne.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ne.res
deleted file mode 100644
index 376de7188..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ne.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nl.res
deleted file mode 100644
index 5320890d8..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nmg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nmg.res
deleted file mode 100644
index 5b21f5c1e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nmg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nn.res
deleted file mode 100644
index 985611593..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nn_NO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nn_NO.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nn_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nnh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nnh.res
deleted file mode 100644
index f9ee27de6..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nnh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no.res
deleted file mode 100644
index bf04a845a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no_NO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no_NO.res
deleted file mode 100644
index ad6b17b9a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no_NO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no_NO_NY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no_NO_NY.res
deleted file mode 100644
index 0618185fe..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/no_NO_NY.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nqo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nqo.res
deleted file mode 100644
index 147f4188e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nqo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nus.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nus.res
deleted file mode 100644
index 0a1c7900c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nus.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nyn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nyn.res
deleted file mode 100644
index a41422e86..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/nyn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/oc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/oc.res
deleted file mode 100644
index 7577f9ae9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/oc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/om.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/om.res
deleted file mode 100644
index 697463484..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/om.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/or.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/or.res
deleted file mode 100644
index ce6426dff..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/or.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/os.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/os.res
deleted file mode 100644
index 430077796..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/os.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa.res
deleted file mode 100644
index 4dcec8e2e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Arab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Arab.res
deleted file mode 100644
index 9df62d608..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Arab_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Arab_PK.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Arab_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Guru.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Guru.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Guru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Guru_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Guru_IN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_Guru_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_IN.res
deleted file mode 100644
index 4ce9d7c15..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_PK.res
deleted file mode 100644
index d4e4a0526..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pa_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pcm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pcm.res
deleted file mode 100644
index 37ef1bb04..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pcm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pl.res
deleted file mode 100644
index b98b07ad7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pool.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pool.res
deleted file mode 100644
index 00816ce3a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pool.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/prg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/prg.res
deleted file mode 100644
index 4cce07b52..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/prg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ps.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ps.res
deleted file mode 100644
index 78e0d4534..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ps.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ps_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ps_PK.res
deleted file mode 100644
index 58ebaab69..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ps_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt.res
deleted file mode 100644
index 0f356ddfe..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_AO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_AO.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_AO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_CH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_CH.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_CH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_CV.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_CV.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_CV.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_GQ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_GQ.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_GQ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_GW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_GW.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_GW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_LU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_LU.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_LU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_MO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_MO.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_MZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_MZ.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_MZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_PT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_PT.res
deleted file mode 100644
index b4334377b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_PT.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_ST.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_ST.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_ST.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_TL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_TL.res
deleted file mode 100644
index f90c8479b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/pt_TL.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/qu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/qu.res
deleted file mode 100644
index c47d6e135..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/qu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/raj.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/raj.res
deleted file mode 100644
index ab39b5f15..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/raj.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/res_index.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/res_index.res
deleted file mode 100644
index 2e8c16572..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/res_index.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rm.res
deleted file mode 100644
index e3b895cbd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rn.res
deleted file mode 100644
index 124bfee9c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ro.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ro.res
deleted file mode 100644
index ef2c89434..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ro.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ro_MD.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ro_MD.res
deleted file mode 100644
index 25407eb22..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ro_MD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rof.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rof.res
deleted file mode 100644
index b64756179..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rof.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/root.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/root.res
deleted file mode 100644
index 120d55e3c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ru.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ru.res
deleted file mode 100644
index 922bd304e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ru.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rw.res
deleted file mode 100644
index 1f819d00e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rwk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rwk.res
deleted file mode 100644
index 82ab2034d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/rwk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sa.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sa.res
deleted file mode 100644
index dcd6e0ef5..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sa.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sah.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sah.res
deleted file mode 100644
index f45e22016..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sah.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/saq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/saq.res
deleted file mode 100644
index 37ba86fce..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/saq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat.res
deleted file mode 100644
index 1680e099b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_IN.res
deleted file mode 100644
index 689b0aa5a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_Olck.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_Olck.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_Olck.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_Olck_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_Olck_IN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sat_Olck_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sbp.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sbp.res
deleted file mode 100644
index ee12d02bc..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sbp.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sc.res
deleted file mode 100644
index ab44dc39c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sc.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd.res
deleted file mode 100644
index 5180a0f2e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Arab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Arab.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Arab_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Arab_PK.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Arab_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Deva.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Deva.res
deleted file mode 100644
index 0846ba1aa..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Deva.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Deva_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Deva_IN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_Deva_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_IN.res
deleted file mode 100644
index 081ee1af3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_PK.res
deleted file mode 100644
index 7181b28cd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sd_PK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/se.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/se.res
deleted file mode 100644
index 35d534eee..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/se.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/se_FI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/se_FI.res
deleted file mode 100644
index 5fb64df81..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/se_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/seh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/seh.res
deleted file mode 100644
index 45ef67fbf..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/seh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ses.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ses.res
deleted file mode 100644
index 683690d2c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ses.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sg.res
deleted file mode 100644
index 458362e59..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh.res
deleted file mode 100644
index b0c77b24d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_BA.res
deleted file mode 100644
index 3bb78b0e1..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_CS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_CS.res
deleted file mode 100644
index af0ba0463..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_YU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_YU.res
deleted file mode 100644
index af0ba0463..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sh_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi.res
deleted file mode 100644
index fae6c7ed8..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Latn.res
deleted file mode 100644
index 9944fadcf..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_MA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_MA.res
deleted file mode 100644
index 13fdb45c9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Tfng.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Tfng.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Tfng.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Tfng_MA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Tfng_MA.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/shi_Tfng_MA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/si.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/si.res
deleted file mode 100644
index b5e906b8e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/si.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sk.res
deleted file mode 100644
index 56a218cb3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sl.res
deleted file mode 100644
index d551cee69..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/smn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/smn.res
deleted file mode 100644
index f091b71cc..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/smn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sn.res
deleted file mode 100644
index 47226b25b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/so.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/so.res
deleted file mode 100644
index 18862d496..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/so.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sq.res
deleted file mode 100644
index c1cb0fbf0..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr.res
deleted file mode 100644
index 096338491..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_BA.res
deleted file mode 100644
index 6e27ce88a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_CS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_CS.res
deleted file mode 100644
index cd326c743..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_BA.res
deleted file mode 100644
index 2bbcae721..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_CS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_CS.res
deleted file mode 100644
index 33d027fc9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_ME.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_ME.res
deleted file mode 100644
index 2e42033dd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_RS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_RS.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_XK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_XK.res
deleted file mode 100644
index 46e1cff91..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_YU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_YU.res
deleted file mode 100644
index 33d027fc9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Cyrl_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn.res
deleted file mode 100644
index 49d414d9d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_BA.res
deleted file mode 100644
index dc58689ec..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_BA.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_CS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_CS.res
deleted file mode 100644
index af0ba0463..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_CS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_ME.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_ME.res
deleted file mode 100644
index 1d4593441..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_RS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_RS.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_XK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_XK.res
deleted file mode 100644
index d4176e7f3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_YU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_YU.res
deleted file mode 100644
index af0ba0463..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_Latn_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_ME.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_ME.res
deleted file mode 100644
index 269e9d1cc..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_ME.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_RS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_RS.res
deleted file mode 100644
index 33d027fc9..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_RS.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_XK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_XK.res
deleted file mode 100644
index 8a140bd95..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_XK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_YU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_YU.res
deleted file mode 100644
index cd326c743..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sr_YU.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su.res
deleted file mode 100644
index ec992afbd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_ID.res
deleted file mode 100644
index 9dbe07c4d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_Latn.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_Latn_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_Latn_ID.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/su_Latn_ID.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sv.res
deleted file mode 100644
index d1c007330..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sv.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sv_FI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sv_FI.res
deleted file mode 100644
index 25bc17c43..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sv_FI.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw.res
deleted file mode 100644
index 18ff3b140..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw_CD.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw_CD.res
deleted file mode 100644
index 5c7c2e757..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw_CD.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw_KE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw_KE.res
deleted file mode 100644
index 34ddad0b2..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/sw_KE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/syr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/syr.res
deleted file mode 100644
index 1e36658ad..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/syr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/szl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/szl.res
deleted file mode 100644
index 1f903a27c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/szl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ta.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ta.res
deleted file mode 100644
index 6752741c3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ta.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/te.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/te.res
deleted file mode 100644
index b215f64fe..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/te.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/teo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/teo.res
deleted file mode 100644
index 9a5d5cd3c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/teo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tg.res
deleted file mode 100644
index 027f69ecb..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tg.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/th.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/th.res
deleted file mode 100644
index 41b196473..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/th.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ti.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ti.res
deleted file mode 100644
index 207b7f5b6..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ti.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ti_ER.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ti_ER.res
deleted file mode 100644
index a964fdf88..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ti_ER.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tk.res
deleted file mode 100644
index 898304ddc..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tl.res
deleted file mode 100644
index c07a7672d..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tl_PH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tl_PH.res
deleted file mode 100644
index 0d15e79eb..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tl_PH.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/to.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/to.res
deleted file mode 100644
index 8f008a539..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/to.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tok.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tok.res
deleted file mode 100644
index 753a70c0a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tok.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tr.res
deleted file mode 100644
index 0c9398890..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tt.res
deleted file mode 100644
index ea7202fbe..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tt.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/twq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/twq.res
deleted file mode 100644
index b1688575e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/twq.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tzm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tzm.res
deleted file mode 100644
index 3b1069fc0..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/tzm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ug.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ug.res
deleted file mode 100644
index de301e82c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ug.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uk.res
deleted file mode 100644
index 6f00a6eae..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uk.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ur.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ur.res
deleted file mode 100644
index 49f3af2e3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ur.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ur_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ur_IN.res
deleted file mode 100644
index 6f544427a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/ur_IN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz.res
deleted file mode 100644
index 84cc31e68..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_AF.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_AF.res
deleted file mode 100644
index fde20746f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Arab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Arab.res
deleted file mode 100644
index 6f12b123f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Arab.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Arab_AF.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Arab_AF.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Arab_AF.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Cyrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Cyrl.res
deleted file mode 100644
index 000252f54..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Cyrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Latn.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Latn_UZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Latn_UZ.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_Latn_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_UZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_UZ.res
deleted file mode 100644
index 8355d2ee3..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/uz_UZ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai.res
deleted file mode 100644
index f347219f1..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_LR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_LR.res
deleted file mode 100644
index fa511227c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Latn.res
deleted file mode 100644
index bcbe2e8d6..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Vaii.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Vaii.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Vaii.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Vaii_LR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Vaii_LR.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vai_Vaii_LR.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vec.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vec.res
deleted file mode 100644
index 2aa1ac455..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vec.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vi.res
deleted file mode 100644
index 162072a02..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vmw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vmw.res
deleted file mode 100644
index 567d9fea0..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vmw.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vun.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vun.res
deleted file mode 100644
index ef437a740..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/vun.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/wae.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/wae.res
deleted file mode 100644
index 1973ea97b..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/wae.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/wo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/wo.res
deleted file mode 100644
index a2ffe02ff..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/wo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xh.res
deleted file mode 100644
index 1b91dba98..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xnr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xnr.res
deleted file mode 100644
index 1833a3554..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xnr.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xog.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xog.res
deleted file mode 100644
index 12647dd18..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/xog.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yav.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yav.res
deleted file mode 100644
index d15fd4ee8..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yav.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yi.res
deleted file mode 100644
index e61483892..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yi.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yo.res
deleted file mode 100644
index fde500d48..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yo.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yo_BJ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yo_BJ.res
deleted file mode 100644
index 82e0164c1..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yo_BJ.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl.res
deleted file mode 100644
index 88c2e1a10..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl_CO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl_CO.res
deleted file mode 100644
index 2892c26fd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl_CO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl_VE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl_VE.res
deleted file mode 100644
index 2892c26fd..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yrl_VE.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue.res
deleted file mode 100644
index e99188c88..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_CN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_CN.res
deleted file mode 100644
index d70c618dc..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_HK.res
deleted file mode 100644
index 1f8ccb9f8..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hans.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hans.res
deleted file mode 100644
index 0196644a4..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hans.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hans_CN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hans_CN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hans_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hant.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hant.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hant.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hant_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hant_HK.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/yue_Hant_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/za.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/za.res
deleted file mode 100644
index c7a6bde2a..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/za.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zgh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zgh.res
deleted file mode 100644
index a30360e48..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zgh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh.res
deleted file mode 100644
index 1cb0e63da..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_CN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_CN.res
deleted file mode 100644
index 23ba4e3dc..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_HK.res
deleted file mode 100644
index d11ec0613..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans.res
deleted file mode 100644
index 783e328e7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans_CN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans_CN.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans_CN.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans_SG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans_SG.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hans_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant.res
deleted file mode 100644
index fc9ce896e..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_HK.res
deleted file mode 100644
index df4ee20ad..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_HK.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_MO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_MO.res
deleted file mode 100644
index 2ac466b3c..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_TW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_TW.res
deleted file mode 100644
index 21b6671a7..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_Hant_TW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_MO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_MO.res
deleted file mode 100644
index 63cdde918..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_MO.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_SG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_SG.res
deleted file mode 100644
index 1a33351f2..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_SG.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_TW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_TW.res
deleted file mode 100644
index dee3a6526..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zh_TW.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zu.res
deleted file mode 100644
index 7c298c44f..000000000
--- a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt74b/lang/zu.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/af.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/af.res
new file mode 100644
index 000000000..913a31702
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/af.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/agq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/agq.res
new file mode 100644
index 000000000..d0c105682
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/agq.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ak.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ak.res
new file mode 100644
index 000000000..667eaa232
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ak.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/am.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/am.res
new file mode 100644
index 000000000..e04fc98ee
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/am.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar.res
new file mode 100644
index 000000000..a7b80a131
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_EG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_EG.res
new file mode 100644
index 000000000..c6befa9e9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_EG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_LY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_LY.res
new file mode 100644
index 000000000..e886ce65a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_LY.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_SA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_SA.res
new file mode 100644
index 000000000..0621bee14
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_SA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_XB.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_XB.res
new file mode 100644
index 000000000..f00c3b6cf
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ar_XB.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ars.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ars.res
new file mode 100644
index 000000000..ec80a7a92
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ars.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/as.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/as.res
new file mode 100644
index 000000000..b2fb0f1bc
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/as.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/asa.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/asa.res
new file mode 100644
index 000000000..70589046a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/asa.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ast.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ast.res
new file mode 100644
index 000000000..ae55525e5
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ast.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az.res
new file mode 100644
index 000000000..cb965e8ac
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_AZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_AZ.res
new file mode 100644
index 000000000..bef5df52e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_AZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Cyrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Cyrl.res
new file mode 100644
index 000000000..2c2560887
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Cyrl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Latn.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Latn_AZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Latn_AZ.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/az_Latn_AZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bas.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bas.res
new file mode 100644
index 000000000..47babe4b8
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bas.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/be.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/be.res
new file mode 100644
index 000000000..0f11a560b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/be.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bem.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bem.res
new file mode 100644
index 000000000..18192fa6b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bem.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bez.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bez.res
new file mode 100644
index 000000000..9fe601b84
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bez.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bg.res
new file mode 100644
index 000000000..3e3331624
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bg.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bgc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bgc.res
new file mode 100644
index 000000000..2150dfb00
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bgc.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bho.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bho.res
new file mode 100644
index 000000000..fd3423963
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bho.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/blo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/blo.res
new file mode 100644
index 000000000..8fa9187a7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/blo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bm.res
new file mode 100644
index 000000000..20b228baf
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bm.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bn.res
new file mode 100644
index 000000000..034ea6c7c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bn_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bn_IN.res
new file mode 100644
index 000000000..0842561cb
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bn_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bo.res
new file mode 100644
index 000000000..d1120e050
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/br.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/br.res
new file mode 100644
index 000000000..386d032dd
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/br.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/brx.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/brx.res
new file mode 100644
index 000000000..fee252c5b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/brx.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs.res
new file mode 100644
index 000000000..d943c8661
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_BA.res
new file mode 100644
index 000000000..4673a9680
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_BA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Cyrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Cyrl.res
new file mode 100644
index 000000000..db9e9630c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Cyrl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Latn.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Latn_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Latn_BA.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/bs_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ca.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ca.res
new file mode 100644
index 000000000..9d3159dca
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ca.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ccp.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ccp.res
new file mode 100644
index 000000000..44909292c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ccp.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ce.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ce.res
new file mode 100644
index 000000000..2b1c72769
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ce.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ceb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ceb.res
new file mode 100644
index 000000000..fe9ad5fed
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ceb.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cgg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cgg.res
new file mode 100644
index 000000000..bd7e83a47
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cgg.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/chr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/chr.res
new file mode 100644
index 000000000..2b2454762
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/chr.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ckb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ckb.res
new file mode 100644
index 000000000..ef893340f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ckb.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cs.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cs.res
new file mode 100644
index 000000000..81189d411
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cs.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/csw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/csw.res
new file mode 100644
index 000000000..7383d6d69
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/csw.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cv.res
new file mode 100644
index 000000000..59d8b2bb5
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cv.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cy.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cy.res
new file mode 100644
index 000000000..406e0fabc
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/cy.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/da.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/da.res
new file mode 100644
index 000000000..cb90aec06
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/da.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dav.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dav.res
new file mode 100644
index 000000000..bff9386cf
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dav.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de.res
new file mode 100644
index 000000000..49bbda28c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de_AT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de_AT.res
new file mode 100644
index 000000000..91afe5fca
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de_AT.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de_CH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de_CH.res
new file mode 100644
index 000000000..8637b9e3b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/de_CH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dje.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dje.res
new file mode 100644
index 000000000..5d9820e8c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dje.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/doi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/doi.res
new file mode 100644
index 000000000..b0162594a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/doi.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dsb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dsb.res
new file mode 100644
index 000000000..760168ab1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dsb.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dua.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dua.res
new file mode 100644
index 000000000..ae75b7048
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dua.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dyo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dyo.res
new file mode 100644
index 000000000..6b334c783
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dyo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dz.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dz.res
new file mode 100644
index 000000000..53e040d5c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/dz.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ebu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ebu.res
new file mode 100644
index 000000000..809e5faf0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ebu.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ee.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ee.res
new file mode 100644
index 000000000..da7e42f19
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ee.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/el.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/el.res
new file mode 100644
index 000000000..702c3048a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/el.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en.res
new file mode 100644
index 000000000..368cef15e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_001.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_001.res
new file mode 100644
index 000000000..c83c84e67
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_001.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_150.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_150.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_150.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AI.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AI.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AT.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AT.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AU.res
new file mode 100644
index 000000000..0519c6ac5
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_AU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BB.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BB.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BB.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BE.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BM.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BS.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BW.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BW.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BZ.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_BZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CA.res
new file mode 100644
index 000000000..92aca6aca
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CC.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CC.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CH.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CK.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CM.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CX.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CX.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CX.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CY.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_CY.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DE.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DK.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DM.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_DM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ER.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ER.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ER.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FI.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FI.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FJ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FJ.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FJ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FK.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FM.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_FM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GB.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GB.res
new file mode 100644
index 000000000..6f5688519
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GB.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GD.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GD.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GD.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GH.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GI.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GI.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GM.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GY.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_GY.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_HK.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_HK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ID.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ID.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IE.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IL.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IL.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IM.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IN.res
new file mode 100644
index 000000000..671095f5c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IO.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_IO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_JE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_JE.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_JE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_JM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_JM.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_JM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KE.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KI.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KI.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KN.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KY.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_KY.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LC.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LC.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LR.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LS.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_LS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MO.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MS.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MT.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MT.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MU.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MV.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MV.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MV.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MW.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MW.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MY.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_MY.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NA.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NF.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NF.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NF.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NH.res
new file mode 100644
index 000000000..23195e4f0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NL.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NL.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NR.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NU.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NZ.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_NZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PK.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PN.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PW.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_PW.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_RH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_RH.res
new file mode 100644
index 000000000..bb8bebc68
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_RH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_RW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_RW.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_RW.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SB.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SB.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SB.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SC.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SC.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SD.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SD.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SD.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SE.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SH.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SI.res
new file mode 100644
index 000000000..58fe8cb7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SI.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SL.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SL.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SS.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SX.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SX.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SX.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SZ.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_SZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TC.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TC.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TK.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TO.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TT.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TT.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TV.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TV.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TV.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TZ.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_TZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_UG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_UG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_UG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VC.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VC.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VG.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VU.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_VU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_WS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_WS.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_WS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_XA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_XA.res
new file mode 100644
index 000000000..3d9e3547e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_XA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZA.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZM.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZW.res
new file mode 100644
index 000000000..60d34e3b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/en_ZW.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/eo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/eo.res
new file mode 100644
index 000000000..61a9f5137
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/eo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es.res
new file mode 100644
index 000000000..8864540b4
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_419.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_419.res
new file mode 100644
index 000000000..2257ca8a8
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_419.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_AR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_AR.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_AR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BO.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BR.res
new file mode 100644
index 000000000..f3d699053
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BZ.res
new file mode 100644
index 000000000..f3d699053
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_BZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CL.res
new file mode 100644
index 000000000..dc74eea50
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CL.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CO.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CR.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CU.res
new file mode 100644
index 000000000..f3d699053
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_CU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_DO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_DO.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_DO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_EC.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_EC.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_EC.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_GT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_GT.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_GT.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_HN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_HN.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_HN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_MX.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_MX.res
new file mode 100644
index 000000000..39a890aef
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_MX.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_NI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_NI.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_NI.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PA.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PE.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PR.res
new file mode 100644
index 000000000..271871907
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PY.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_PY.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_SV.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_SV.res
new file mode 100644
index 000000000..271871907
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_SV.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_US.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_US.res
new file mode 100644
index 000000000..2853b6e1b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_US.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_UY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_UY.res
new file mode 100644
index 000000000..f3d699053
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_UY.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_VE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_VE.res
new file mode 100644
index 000000000..8e508e073
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/es_VE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/et.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/et.res
new file mode 100644
index 000000000..bb2296bf0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/et.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/eu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/eu.res
new file mode 100644
index 000000000..3ce20ab92
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/eu.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ewo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ewo.res
new file mode 100644
index 000000000..3fe28db73
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ewo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fa.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fa.res
new file mode 100644
index 000000000..217b7eb3f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fa.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fa_AF.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fa_AF.res
new file mode 100644
index 000000000..894542b62
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fa_AF.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff.res
new file mode 100644
index 000000000..038a9147c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Adlm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Adlm.res
new file mode 100644
index 000000000..de37adc4a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Adlm.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_CM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_CM.res
new file mode 100644
index 000000000..1233dba86
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_CM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_GN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_GN.res
new file mode 100644
index 000000000..f47ae21f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_GN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_CM.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_CM.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_CM.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_GN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_GN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_GN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_MR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_MR.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_MR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_SN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_SN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_Latn_SN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_MR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_MR.res
new file mode 100644
index 000000000..e3adf71b3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_MR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_SN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_SN.res
new file mode 100644
index 000000000..de016672e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ff_SN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fi.res
new file mode 100644
index 000000000..c17ebf362
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fi.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fil.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fil.res
new file mode 100644
index 000000000..347cfdf92
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fil.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fil_PH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fil_PH.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fil_PH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fo.res
new file mode 100644
index 000000000..79f46e21e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr.res
new file mode 100644
index 000000000..ca4aee34f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_BE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_BE.res
new file mode 100644
index 000000000..239a43b51
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_BE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_CA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_CA.res
new file mode 100644
index 000000000..1d107be30
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_CA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_CH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_CH.res
new file mode 100644
index 000000000..3ebcb71c4
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fr_CH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fur.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fur.res
new file mode 100644
index 000000000..18b9d68fd
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fur.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fy.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fy.res
new file mode 100644
index 000000000..4260c02ce
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/fy.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ga.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ga.res
new file mode 100644
index 000000000..f88f4462c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ga.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gd.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gd.res
new file mode 100644
index 000000000..d4e49a68a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gd.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gl.res
new file mode 100644
index 000000000..4bb086793
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gsw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gsw.res
new file mode 100644
index 000000000..d631b5b54
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gsw.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gu.res
new file mode 100644
index 000000000..ccd4bcee7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gu.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/guz.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/guz.res
new file mode 100644
index 000000000..0b069145a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/guz.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gv.res
new file mode 100644
index 000000000..3d4b86243
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/gv.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ha.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ha.res
new file mode 100644
index 000000000..23344c13d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ha.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ha_NE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ha_NE.res
new file mode 100644
index 000000000..b481010b9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ha_NE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/haw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/haw.res
new file mode 100644
index 000000000..3c8465648
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/haw.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/he.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/he.res
new file mode 100644
index 000000000..7ce14015c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/he.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/he_IL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/he_IL.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/he_IL.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hi.res
new file mode 100644
index 000000000..9b02e51fa
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hi.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hi_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hi_Latn.res
new file mode 100644
index 000000000..274f8be69
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hi_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hr.res
new file mode 100644
index 000000000..bd9fe1338
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hr.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hsb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hsb.res
new file mode 100644
index 000000000..bbd77b4ef
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hsb.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hu.res
new file mode 100644
index 000000000..1bc45f9a4
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hu.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hy.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hy.res
new file mode 100644
index 000000000..32dc7955d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/hy.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ia.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ia.res
new file mode 100644
index 000000000..c36dd7793
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ia.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/id.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/id.res
new file mode 100644
index 000000000..aa57d6caa
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/id.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/id_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/id_ID.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/id_ID.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ie.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ie.res
new file mode 100644
index 000000000..c4bfe643f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ie.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ig.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ig.res
new file mode 100644
index 000000000..57290119e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ig.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ii.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ii.res
new file mode 100644
index 000000000..d0c5dab23
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ii.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/in.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/in.res
new file mode 100644
index 000000000..72a536e91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/in.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/in_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/in_ID.res
new file mode 100644
index 000000000..eeaa918b6
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/in_ID.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/is.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/is.res
new file mode 100644
index 000000000..79479e519
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/is.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/it.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/it.res
new file mode 100644
index 000000000..7c3da7d62
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/it.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/iw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/iw.res
new file mode 100644
index 000000000..b050759aa
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/iw.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/iw_IL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/iw_IL.res
new file mode 100644
index 000000000..d500b69ea
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/iw_IL.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ja.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ja.res
new file mode 100644
index 000000000..2023829a7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ja.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jgo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jgo.res
new file mode 100644
index 000000000..4eb4148c7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jgo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jmc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jmc.res
new file mode 100644
index 000000000..348358e86
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jmc.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jv.res
new file mode 100644
index 000000000..ca34cb57c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/jv.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ka.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ka.res
new file mode 100644
index 000000000..048dcbcf6
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ka.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kab.res
new file mode 100644
index 000000000..7f68c55cf
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kab.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kam.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kam.res
new file mode 100644
index 000000000..e88bfdaf0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kam.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kde.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kde.res
new file mode 100644
index 000000000..25a4a67a3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kde.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kea.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kea.res
new file mode 100644
index 000000000..9a8a1a488
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kea.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kgp.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kgp.res
new file mode 100644
index 000000000..b63407184
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kgp.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/khq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/khq.res
new file mode 100644
index 000000000..e21bc7b30
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/khq.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ki.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ki.res
new file mode 100644
index 000000000..9a097ebb2
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ki.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kk.res
new file mode 100644
index 000000000..e4c994205
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kk.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kkj.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kkj.res
new file mode 100644
index 000000000..7a7471de8
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kkj.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kl.res
new file mode 100644
index 000000000..37d09ef89
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kln.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kln.res
new file mode 100644
index 000000000..f9c6bfce1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kln.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/km.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/km.res
new file mode 100644
index 000000000..1aaa479e0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/km.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kn.res
new file mode 100644
index 000000000..72a0279d4
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ko.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ko.res
new file mode 100644
index 000000000..8d1bcfd74
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ko.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kok.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kok.res
new file mode 100644
index 000000000..8db0fd75d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kok.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks.res
new file mode 100644
index 000000000..a2a8de696
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Arab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Arab.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Arab.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Arab_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Arab_IN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Arab_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Deva.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Deva.res
new file mode 100644
index 000000000..1ab46326c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_Deva.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_IN.res
new file mode 100644
index 000000000..de23fe9a1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ks_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksb.res
new file mode 100644
index 000000000..cdc66659a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksb.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksf.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksf.res
new file mode 100644
index 000000000..432f24657
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksf.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksh.res
new file mode 100644
index 000000000..373b2bad3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ksh.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ku.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ku.res
new file mode 100644
index 000000000..8e643c342
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ku.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kw.res
new file mode 100644
index 000000000..0ed391ed3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kw.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv.res
new file mode 100644
index 000000000..49a5e8cf1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Deva.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Deva.res
new file mode 100644
index 000000000..17633e04e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Deva.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_IN.res
new file mode 100644
index 000000000..b2853998b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Latn.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Latn_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Latn_IN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Latn_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Orya.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Orya.res
new file mode 100644
index 000000000..926fb6679
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Orya.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Telu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Telu.res
new file mode 100644
index 000000000..c76fa5bc1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/kxv_Telu.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ky.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ky.res
new file mode 100644
index 000000000..062d60eb5
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ky.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lag.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lag.res
new file mode 100644
index 000000000..bea52296a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lag.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lb.res
new file mode 100644
index 000000000..3e24751ce
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lb.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lg.res
new file mode 100644
index 000000000..bf437cfe7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lg.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lij.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lij.res
new file mode 100644
index 000000000..bd24b0e2b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lij.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lkt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lkt.res
new file mode 100644
index 000000000..3d71756ad
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lkt.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lmo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lmo.res
new file mode 100644
index 000000000..473f887d1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lmo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ln.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ln.res
new file mode 100644
index 000000000..95a050ab2
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ln.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lo.res
new file mode 100644
index 000000000..d29a0cf4d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lrc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lrc.res
new file mode 100644
index 000000000..e6174e6f3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lrc.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lt.res
new file mode 100644
index 000000000..016b67e9a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lt.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lu.res
new file mode 100644
index 000000000..b778c5cb2
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lu.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/luo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/luo.res
new file mode 100644
index 000000000..8853af2a2
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/luo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/luy.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/luy.res
new file mode 100644
index 000000000..656691dab
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/luy.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lv.res
new file mode 100644
index 000000000..e639ca063
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/lv.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mai.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mai.res
new file mode 100644
index 000000000..485e5df94
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mai.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mas.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mas.res
new file mode 100644
index 000000000..b70758079
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mas.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mer.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mer.res
new file mode 100644
index 000000000..efe2407f0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mer.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mfe.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mfe.res
new file mode 100644
index 000000000..4346e8e3a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mfe.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mg.res
new file mode 100644
index 000000000..15f63b9f5
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mg.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mgh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mgh.res
new file mode 100644
index 000000000..10460d06c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mgh.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mgo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mgo.res
new file mode 100644
index 000000000..0bdac3a2f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mgo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mi.res
new file mode 100644
index 000000000..b1888c35c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mi.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mk.res
new file mode 100644
index 000000000..e574f5f81
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mk.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ml.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ml.res
new file mode 100644
index 000000000..998337bfc
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ml.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mn.res
new file mode 100644
index 000000000..fa45b78f5
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni.res
new file mode 100644
index 000000000..38a742308
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_Beng.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_Beng.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_Beng.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_Beng_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_Beng_IN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_Beng_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_IN.res
new file mode 100644
index 000000000..274856c82
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mni_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mo.res
new file mode 100644
index 000000000..964895c0c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mr.res
new file mode 100644
index 000000000..299fcbde7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mr.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ms.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ms.res
new file mode 100644
index 000000000..016adb6aa
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ms.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mt.res
new file mode 100644
index 000000000..f2011f9e1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mt.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mua.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mua.res
new file mode 100644
index 000000000..a52d68b89
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mua.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/my.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/my.res
new file mode 100644
index 000000000..1d612ce46
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/my.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mzn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mzn.res
new file mode 100644
index 000000000..9f0c2eef8
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/mzn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/naq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/naq.res
new file mode 100644
index 000000000..4e102c265
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/naq.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nb.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nb.res
new file mode 100644
index 000000000..58672866d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nb.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nd.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nd.res
new file mode 100644
index 000000000..5e2e7ea44
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nd.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nds.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nds.res
new file mode 100644
index 000000000..30221cb17
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nds.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ne.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ne.res
new file mode 100644
index 000000000..87c84e4ba
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ne.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nl.res
new file mode 100644
index 000000000..696fb75af
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nmg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nmg.res
new file mode 100644
index 000000000..a43abe735
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nmg.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nn.res
new file mode 100644
index 000000000..0e509d842
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nn_NO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nn_NO.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nn_NO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nnh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nnh.res
new file mode 100644
index 000000000..327c1d824
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nnh.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no.res
new file mode 100644
index 000000000..ad9d90f66
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no_NO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no_NO.res
new file mode 100644
index 000000000..d34cf7027
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no_NO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no_NO_NY.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no_NO_NY.res
new file mode 100644
index 000000000..b22ff16e5
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/no_NO_NY.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nqo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nqo.res
new file mode 100644
index 000000000..a36da3381
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nqo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nus.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nus.res
new file mode 100644
index 000000000..4e64139c9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nus.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nyn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nyn.res
new file mode 100644
index 000000000..683530cf5
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/nyn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/oc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/oc.res
new file mode 100644
index 000000000..c86a08770
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/oc.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/om.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/om.res
new file mode 100644
index 000000000..1284f16b4
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/om.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/or.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/or.res
new file mode 100644
index 000000000..dd9f84ba1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/or.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/os.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/os.res
new file mode 100644
index 000000000..4b87c0ee1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/os.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa.res
new file mode 100644
index 000000000..7ad95355c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Arab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Arab.res
new file mode 100644
index 000000000..c1438c0b8
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Arab.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Arab_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Arab_PK.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Guru.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Guru.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Guru.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Guru_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Guru_IN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_Guru_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_IN.res
new file mode 100644
index 000000000..99ec2be55
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_PK.res
new file mode 100644
index 000000000..60cee1aea
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pa_PK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pcm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pcm.res
new file mode 100644
index 000000000..7f2270e3d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pcm.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pl.res
new file mode 100644
index 000000000..a99cb559f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pool.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pool.res
new file mode 100644
index 000000000..4a5ae87ce
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pool.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/prg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/prg.res
new file mode 100644
index 000000000..2a25a7e7b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/prg.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ps.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ps.res
new file mode 100644
index 000000000..a05ed765c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ps.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ps_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ps_PK.res
new file mode 100644
index 000000000..58864596e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ps_PK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt.res
new file mode 100644
index 000000000..0efebf7bf
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_AO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_AO.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_AO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_CH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_CH.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_CH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_CV.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_CV.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_CV.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_GQ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_GQ.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_GQ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_GW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_GW.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_GW.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_LU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_LU.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_LU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_MO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_MO.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_MO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_MZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_MZ.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_MZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_PT.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_PT.res
new file mode 100644
index 000000000..3cca40e7e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_PT.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_ST.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_ST.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_ST.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_TL.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_TL.res
new file mode 100644
index 000000000..4df0974f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/pt_TL.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/qu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/qu.res
new file mode 100644
index 000000000..27c28f54c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/qu.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/raj.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/raj.res
new file mode 100644
index 000000000..ded05cd50
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/raj.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/res_index.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/res_index.res
new file mode 100644
index 000000000..47697993a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/res_index.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rm.res
new file mode 100644
index 000000000..7b307393a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rm.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rn.res
new file mode 100644
index 000000000..0cf6ce104
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ro.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ro.res
new file mode 100644
index 000000000..8ac0ce02e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ro.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ro_MD.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ro_MD.res
new file mode 100644
index 000000000..1447b2f4f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ro_MD.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rof.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rof.res
new file mode 100644
index 000000000..c8ca97f57
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rof.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/root.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/root.res
new file mode 100644
index 000000000..e241d4ff9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/root.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ru.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ru.res
new file mode 100644
index 000000000..efd5337fd
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ru.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rw.res
new file mode 100644
index 000000000..d2d799bd2
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rw.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rwk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rwk.res
new file mode 100644
index 000000000..0458c7ca9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/rwk.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sa.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sa.res
new file mode 100644
index 000000000..153e92246
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sa.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sah.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sah.res
new file mode 100644
index 000000000..cdd9a2cb2
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sah.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/saq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/saq.res
new file mode 100644
index 000000000..caf04c63f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/saq.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat.res
new file mode 100644
index 000000000..1ac65732d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_IN.res
new file mode 100644
index 000000000..9836a52f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_Olck.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_Olck.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_Olck.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_Olck_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_Olck_IN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sat_Olck_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sbp.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sbp.res
new file mode 100644
index 000000000..0cae1aaa4
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sbp.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sc.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sc.res
new file mode 100644
index 000000000..6c44be3eb
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sc.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd.res
new file mode 100644
index 000000000..2fd9af9ee
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Arab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Arab.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Arab.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Arab_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Arab_PK.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Deva.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Deva.res
new file mode 100644
index 000000000..acee93b87
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Deva.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Deva_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Deva_IN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_Deva_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_IN.res
new file mode 100644
index 000000000..07316d96d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_PK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_PK.res
new file mode 100644
index 000000000..8abcde1fb
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sd_PK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/se.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/se.res
new file mode 100644
index 000000000..e384dc6b4
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/se.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/se_FI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/se_FI.res
new file mode 100644
index 000000000..95ffcad5d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/se_FI.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/seh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/seh.res
new file mode 100644
index 000000000..0e22368b1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/seh.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ses.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ses.res
new file mode 100644
index 000000000..2459ea3e1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ses.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sg.res
new file mode 100644
index 000000000..516f043fa
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sg.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh.res
new file mode 100644
index 000000000..3dabad6f9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_BA.res
new file mode 100644
index 000000000..3e7330515
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_BA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_CS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_CS.res
new file mode 100644
index 000000000..e77b3e3ec
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_CS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_YU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_YU.res
new file mode 100644
index 000000000..e77b3e3ec
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sh_YU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi.res
new file mode 100644
index 000000000..6c686f92b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Latn.res
new file mode 100644
index 000000000..96521317a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_MA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_MA.res
new file mode 100644
index 000000000..b3bc405d0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_MA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Tfng.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Tfng.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Tfng.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Tfng_MA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Tfng_MA.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/shi_Tfng_MA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/si.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/si.res
new file mode 100644
index 000000000..94c942bbc
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/si.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sk.res
new file mode 100644
index 000000000..ab1fc9d64
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sk.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sl.res
new file mode 100644
index 000000000..c176a6d48
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/smn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/smn.res
new file mode 100644
index 000000000..5673753fd
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/smn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sn.res
new file mode 100644
index 000000000..c7253102a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/so.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/so.res
new file mode 100644
index 000000000..c1cdd4291
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/so.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sq.res
new file mode 100644
index 000000000..ee6bb6431
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sq.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr.res
new file mode 100644
index 000000000..b458e4df7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_BA.res
new file mode 100644
index 000000000..e2e5235f0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_BA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_CS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_CS.res
new file mode 100644
index 000000000..83283de0f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_CS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_BA.res
new file mode 100644
index 000000000..310f7c432
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_BA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_CS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_CS.res
new file mode 100644
index 000000000..ef101db11
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_CS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_ME.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_ME.res
new file mode 100644
index 000000000..27c7a3368
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_ME.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_RS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_RS.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_RS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_XK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_XK.res
new file mode 100644
index 000000000..9a20c80a0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_XK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_YU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_YU.res
new file mode 100644
index 000000000..ef101db11
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Cyrl_YU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn.res
new file mode 100644
index 000000000..6244005fd
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_BA.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_BA.res
new file mode 100644
index 000000000..774bda68b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_CS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_CS.res
new file mode 100644
index 000000000..e77b3e3ec
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_CS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_ME.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_ME.res
new file mode 100644
index 000000000..443051a3a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_ME.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_RS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_RS.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_RS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_XK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_XK.res
new file mode 100644
index 000000000..1c1f74947
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_XK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_YU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_YU.res
new file mode 100644
index 000000000..e77b3e3ec
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_Latn_YU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_ME.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_ME.res
new file mode 100644
index 000000000..ca7ebea53
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_ME.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_RS.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_RS.res
new file mode 100644
index 000000000..ef101db11
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_RS.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_XK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_XK.res
new file mode 100644
index 000000000..233b31d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_XK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_YU.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_YU.res
new file mode 100644
index 000000000..83283de0f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sr_YU.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su.res
new file mode 100644
index 000000000..7d1dc7610
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_ID.res
new file mode 100644
index 000000000..62ed2e846
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_ID.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_Latn.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_Latn_ID.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_Latn_ID.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/su_Latn_ID.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sv.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sv.res
new file mode 100644
index 000000000..58b6323f4
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sv.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sv_FI.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sv_FI.res
new file mode 100644
index 000000000..d218c1196
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sv_FI.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw.res
new file mode 100644
index 000000000..92cae68ea
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw_CD.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw_CD.res
new file mode 100644
index 000000000..89377006d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw_CD.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw_KE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw_KE.res
new file mode 100644
index 000000000..992ee0207
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/sw_KE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/syr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/syr.res
new file mode 100644
index 000000000..18bd3b8ac
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/syr.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/szl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/szl.res
new file mode 100644
index 000000000..2df90df69
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/szl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ta.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ta.res
new file mode 100644
index 000000000..118ebd163
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ta.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/te.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/te.res
new file mode 100644
index 000000000..aff4c9b2e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/te.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/teo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/teo.res
new file mode 100644
index 000000000..329ca423f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/teo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tg.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tg.res
new file mode 100644
index 000000000..0114f50c6
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tg.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/th.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/th.res
new file mode 100644
index 000000000..3899f7eab
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/th.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ti.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ti.res
new file mode 100644
index 000000000..4de6a5ee9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ti.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ti_ER.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ti_ER.res
new file mode 100644
index 000000000..0031da854
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ti_ER.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tk.res
new file mode 100644
index 000000000..7d78fedd1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tk.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tl.res
new file mode 100644
index 000000000..ee08ff338
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tl_PH.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tl_PH.res
new file mode 100644
index 000000000..17c9c57c6
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tl_PH.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/to.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/to.res
new file mode 100644
index 000000000..758832a6b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/to.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tok.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tok.res
new file mode 100644
index 000000000..e27438eb7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tok.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tr.res
new file mode 100644
index 000000000..c2e68063d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tr.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tt.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tt.res
new file mode 100644
index 000000000..b45d1e25a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tt.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/twq.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/twq.res
new file mode 100644
index 000000000..6c071bf87
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/twq.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tzm.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tzm.res
new file mode 100644
index 000000000..7ca702f32
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/tzm.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ug.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ug.res
new file mode 100644
index 000000000..b3d87904b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ug.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uk.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uk.res
new file mode 100644
index 000000000..241746b85
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uk.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ur.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ur.res
new file mode 100644
index 000000000..1b962c844
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ur.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ur_IN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ur_IN.res
new file mode 100644
index 000000000..fdaa13176
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/ur_IN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz.res
new file mode 100644
index 000000000..6a0506dff
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_AF.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_AF.res
new file mode 100644
index 000000000..36e2e994c
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_AF.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Arab.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Arab.res
new file mode 100644
index 000000000..c1a87d4c3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Arab.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Arab_AF.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Arab_AF.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Arab_AF.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Cyrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Cyrl.res
new file mode 100644
index 000000000..91d1346c9
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Cyrl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Latn.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Latn_UZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Latn_UZ.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_Latn_UZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_UZ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_UZ.res
new file mode 100644
index 000000000..6f708f4d6
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/uz_UZ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai.res
new file mode 100644
index 000000000..1a892e7ea
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_LR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_LR.res
new file mode 100644
index 000000000..954fd003a
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_LR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Latn.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Latn.res
new file mode 100644
index 000000000..8e2d81d61
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Latn.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Vaii.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Vaii.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Vaii.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Vaii_LR.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Vaii_LR.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vai_Vaii_LR.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vec.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vec.res
new file mode 100644
index 000000000..873c14610
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vec.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vi.res
new file mode 100644
index 000000000..819273903
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vi.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vmw.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vmw.res
new file mode 100644
index 000000000..89a77dfa3
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vmw.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vun.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vun.res
new file mode 100644
index 000000000..e0a00fb4f
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/vun.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/wae.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/wae.res
new file mode 100644
index 000000000..2dfa843b1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/wae.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/wo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/wo.res
new file mode 100644
index 000000000..26de428bd
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/wo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xh.res
new file mode 100644
index 000000000..142a3742d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xh.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xnr.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xnr.res
new file mode 100644
index 000000000..065bbd6b8
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xnr.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xog.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xog.res
new file mode 100644
index 000000000..162d0a004
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/xog.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yav.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yav.res
new file mode 100644
index 000000000..146ca1916
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yav.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yi.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yi.res
new file mode 100644
index 000000000..97839fbff
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yi.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yo.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yo.res
new file mode 100644
index 000000000..d0eddb9fc
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yo.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yo_BJ.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yo_BJ.res
new file mode 100644
index 000000000..b527b3be6
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yo_BJ.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl.res
new file mode 100644
index 000000000..7ead6e9d0
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl_CO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl_CO.res
new file mode 100644
index 000000000..20b1be569
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl_CO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl_VE.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl_VE.res
new file mode 100644
index 000000000..20b1be569
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yrl_VE.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue.res
new file mode 100644
index 000000000..ed98b4933
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_CN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_CN.res
new file mode 100644
index 000000000..747dcbfd8
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_CN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_HK.res
new file mode 100644
index 000000000..8595c7e0e
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_HK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hans.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hans.res
new file mode 100644
index 000000000..dd0e1b4dd
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hans.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hans_CN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hans_CN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hant.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hant.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hant.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hant_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hant_HK.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/yue_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/za.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/za.res
new file mode 100644
index 000000000..a2fd3dc82
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/za.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zgh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zgh.res
new file mode 100644
index 000000000..732bb7a33
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zgh.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh.res
new file mode 100644
index 000000000..f2a8b5940
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_CN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_CN.res
new file mode 100644
index 000000000..9867cc597
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_CN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_HK.res
new file mode 100644
index 000000000..583323102
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_HK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans.res
new file mode 100644
index 000000000..61e042d91
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans_CN.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans_CN.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans_SG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans_SG.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hans_SG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant.res
new file mode 100644
index 000000000..d141af3e7
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_HK.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_HK.res
new file mode 100644
index 000000000..3279b5872
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_MO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_MO.res
new file mode 100644
index 000000000..df841ad17
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_MO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_TW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_TW.res
new file mode 100644
index 000000000..aaf19189b
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_Hant_TW.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_MO.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_MO.res
new file mode 100644
index 000000000..2454d939d
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_MO.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_SG.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_SG.res
new file mode 100644
index 000000000..bfa9272e6
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_SG.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_TW.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_TW.res
new file mode 100644
index 000000000..ec58f7b01
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zh_TW.res
Binary files differ
diff --git a/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zu.res b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zu.res
new file mode 100644
index 000000000..b188c95c1
--- /dev/null
+++ b/icu4j/main/langdata/src/main/resources/com/ibm/icu/impl/data/icudt75b/lang/zu.res
Binary files differ
diff --git a/icu4j/main/localespi/pom.xml b/icu4j/main/localespi/pom.xml
index 93356c53d..198fca359 100644
--- a/icu4j/main/localespi/pom.xml
+++ b/icu4j/main/localespi/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/localespi/src/main/java/com/ibm/icu/impl/jdkadapter/CalendarICU.java b/icu4j/main/localespi/src/main/java/com/ibm/icu/impl/jdkadapter/CalendarICU.java
index c4ce868a3..45b7c871c 100644
--- a/icu4j/main/localespi/src/main/java/com/ibm/icu/impl/jdkadapter/CalendarICU.java
+++ b/icu4j/main/localespi/src/main/java/com/ibm/icu/impl/jdkadapter/CalendarICU.java
@@ -328,7 +328,7 @@ public class CalendarICU extends java.util.Calendar {
Map<String,Integer> res = new HashMap<String,Integer>();
for (int i = 0; i < strings.length; i++) {
if (strings[i].length() != 0) {
- res.put(strings[i], Integer.valueOf(i));
+ res.put(strings[i], i);
}
}
return res;
diff --git a/icu4j/main/localespi/src/test/java/com/ibm/icu/dev/test/localespi/NumberFormatTest.java b/icu4j/main/localespi/src/test/java/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
index 4e60d2be1..35fd57609 100644
--- a/icu4j/main/localespi/src/test/java/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
+++ b/icu4j/main/localespi/src/test/java/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
@@ -158,6 +158,8 @@ public class NumberFormatTest extends TestFmwk {
124578.369D,
};
+ // We want to really be sure that we test those exact classes.
+ @SuppressWarnings("UnnecessaryBoxing")
Object[] TEST_NUMBERS = {
Byte.valueOf((byte)13),
Integer.valueOf(3961),
diff --git a/icu4j/main/regiondata/pom.xml b/icu4j/main/regiondata/pom.xml
index 98d184f4f..9cd895133 100644
--- a/icu4j/main/regiondata/pom.xml
+++ b/icu4j/main/regiondata/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Adlm.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Adlm.res
deleted file mode 100644
index aac97515a..000000000
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Adlm.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hi_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hi_Latn.res
deleted file mode 100644
index c0982b078..000000000
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hi_Latn.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks.res
deleted file mode 100644
index 6c7ae1b97..000000000
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/res_index.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/res_index.res
deleted file mode 100644
index 00ab96e08..000000000
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/res_index.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/root.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/root.res
deleted file mode 100644
index 912dd925c..000000000
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/root.res
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/af.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/af.res
index 0f1ff4abd..0f1ff4abd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/af.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/af.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/agq.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/agq.res
index 81c3c7979..81c3c7979 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/agq.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/agq.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ak.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ak.res
index f566aa04f..f566aa04f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ak.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ak.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/am.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/am.res
index 443efac61..443efac61 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/am.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/am.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar.res
index f929e78ed..f929e78ed 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_AE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_AE.res
index 642f32777..642f32777 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_AE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_AE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_LY.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_LY.res
index 9f74aa8a1..9f74aa8a1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_LY.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_LY.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_SA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_SA.res
index 27a310a24..27a310a24 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_SA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_SA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_XB.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_XB.res
index 093f38d12..093f38d12 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ar_XB.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ar_XB.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ars.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ars.res
index a13d22aed..a13d22aed 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ars.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ars.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/as.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/as.res
index c6640d439..c6640d439 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/as.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/as.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/asa.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/asa.res
index c74b680a4..c74b680a4 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/asa.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/asa.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ast.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ast.res
index 7889ab6b2..7889ab6b2 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ast.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ast.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az.res
index bea914a24..bea914a24 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_AZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_AZ.res
index 47b461cd2..47b461cd2 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_AZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_AZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Cyrl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Cyrl.res
index 9b4364b40..9b4364b40 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Cyrl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Cyrl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Latn.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Latn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Latn_AZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Latn_AZ.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/az_Latn_AZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/az_Latn_AZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bas.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bas.res
index e3a89d3cf..e3a89d3cf 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bas.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bas.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/be.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/be.res
index 007f57699..007f57699 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/be.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/be.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bem.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bem.res
index daaf8faa5..daaf8faa5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bem.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bem.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bez.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bez.res
index 90a9f6104..90a9f6104 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bez.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bez.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bg.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bg.res
index 2e5fc0c3b..2e5fc0c3b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bg.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bg.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bgc.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bgc.res
index 69262d464..69262d464 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bgc.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bgc.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bho.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bho.res
index 21fa7453a..21fa7453a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bho.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bho.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/blo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/blo.res
index 25c0eb89c..25c0eb89c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/blo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/blo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bm.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bm.res
index eebb14863..eebb14863 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bm.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bm.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bn.res
index 90c9ead67..90c9ead67 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bn_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bn_IN.res
index 6bb9a4619..6bb9a4619 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bn_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bn_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bo.res
index fb9c0b4d3..fb9c0b4d3 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bo_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bo_IN.res
index 1c0e4de83..1c0e4de83 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bo_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bo_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/br.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/br.res
index 79f299fcf..79f299fcf 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/br.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/br.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/brx.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/brx.res
index 9bfd3a0d8..9bfd3a0d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/brx.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/brx.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs.res
index df6f6bf24..df6f6bf24 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_BA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_BA.res
index 4ad5c76e6..4ad5c76e6 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_BA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_BA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Cyrl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Cyrl.res
index 6edcd9e7b..6edcd9e7b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Cyrl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Cyrl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Latn.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Latn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Latn_BA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Latn_BA.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/bs_Latn_BA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/bs_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ca.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ca.res
index 9b87bb040..9b87bb040 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ca.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ca.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ccp.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ccp.res
index 9aff561e9..9aff561e9 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ccp.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ccp.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ce.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ce.res
index fa166b1d8..fa166b1d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ce.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ce.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ceb.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ceb.res
index ca19e0474..ca19e0474 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ceb.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ceb.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cgg.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cgg.res
index fc89f621d..fc89f621d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cgg.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cgg.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/chr.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/chr.res
index 9d533ae33..9d533ae33 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/chr.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/chr.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ckb.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ckb.res
index f12ef75ae..f12ef75ae 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ckb.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ckb.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cs.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cs.res
index 665d2f54b..665d2f54b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cs.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cs.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/csw.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/csw.res
index 9b0a817c6..9b0a817c6 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/csw.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/csw.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cv.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cv.res
index 133376ad0..133376ad0 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cv.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cv.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cy.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cy.res
index 4bbbdf9e6..4bbbdf9e6 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/cy.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/cy.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/da.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/da.res
index 1e3c6a6fa..1e3c6a6fa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/da.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/da.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dav.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dav.res
index 4075f9504..4075f9504 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dav.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dav.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de.res
index acda3c0d4..acda3c0d4 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de_AT.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de_AT.res
index a4a4f1c06..a4a4f1c06 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de_AT.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de_AT.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de_CH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de_CH.res
index 369aefb26..369aefb26 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/de_CH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/de_CH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dje.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dje.res
index aad3e0bd1..aad3e0bd1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dje.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dje.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/doi.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/doi.res
index 4e4c20c21..4e4c20c21 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/doi.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/doi.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dsb.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dsb.res
index 72e2114d3..72e2114d3 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dsb.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dsb.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dua.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dua.res
index 493e6c311..493e6c311 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dua.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dua.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dyo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dyo.res
index 991c14ea1..991c14ea1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dyo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dyo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dz.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dz.res
index fc6f1bf4b..fc6f1bf4b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/dz.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/dz.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ebu.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ebu.res
index 4075f9504..4075f9504 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ebu.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ebu.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ee.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ee.res
index 832799a2b..832799a2b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ee.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ee.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/el.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/el.res
index d9d193a0f..d9d193a0f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/el.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/el.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en.res
index 4c70f297e..4c70f297e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_001.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_001.res
index dad85aa6b..dad85aa6b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_001.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_001.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_150.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_150.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_150.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_150.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AI.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AI.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AI.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AI.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AT.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AT.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AT.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AT.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AU.res
index e6bdcdc8d..e6bdcdc8d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_AU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_AU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BB.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BB.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BB.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BB.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BE.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BM.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BS.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BW.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BW.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BW.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BZ.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_BZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_BZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CA.res
index be99339c3..be99339c3 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CC.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CC.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CC.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CC.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CH.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CK.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CM.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CX.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CX.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CX.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CX.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CY.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CY.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_CY.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_CY.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DE.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DK.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DM.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_DM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_DM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ER.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ER.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ER.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ER.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FI.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FI.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FI.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FI.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FJ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FJ.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FJ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FJ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FK.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FM.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_FM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_FM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GB.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GB.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GB.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GB.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GD.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GD.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GD.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GD.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GH.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GI.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GI.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GI.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GI.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GM.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GY.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GY.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_GY.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_GY.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_HK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_HK.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_HK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_HK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ID.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ID.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ID.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ID.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IE.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IL.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IL.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IL.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IL.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IM.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IN.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IO.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_IO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_IO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_JE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_JE.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_JE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_JE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_JM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_JM.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_JM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_JM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KE.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KI.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KI.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KI.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KI.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KN.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KY.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KY.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_KY.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_KY.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LC.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LC.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LC.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LC.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LR.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LS.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_LS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_LS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MO.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MS.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MT.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MT.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MT.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MT.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MU.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MV.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MV.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MV.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MV.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MW.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MW.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MW.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MY.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MY.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_MY.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_MY.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NA.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NF.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NF.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NF.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NF.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NH.res
index 2dbda9136..2dbda9136 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NL.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NL.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NL.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NL.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NR.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NU.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NZ.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_NZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_NZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PK.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PN.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PW.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_PW.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_PW.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_RH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_RH.res
index a6eabcbc1..a6eabcbc1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_RH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_RH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_RW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_RW.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_RW.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_RW.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SB.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SB.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SB.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SB.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SC.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SC.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SC.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SC.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SD.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SD.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SD.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SD.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SE.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SH.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SI.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SI.res
index 78e91ecaa..78e91ecaa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SI.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SI.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SL.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SL.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SL.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SL.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SS.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SX.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SX.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SX.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SX.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SZ.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_SZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_SZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TC.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TC.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TC.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TC.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TK.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TO.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TT.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TT.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TT.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TT.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TV.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TV.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TV.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TV.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TZ.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_TZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_TZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_UG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_UG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_UG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_UG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VC.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VC.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VC.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VC.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VG.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VU.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_VU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_VU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_WS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_WS.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_WS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_WS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_XA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_XA.res
index ff3196342..ff3196342 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_XA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_XA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZA.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZM.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZW.res
index 9b8d90880..9b8d90880 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/en_ZW.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/en_ZW.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/eo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/eo.res
index 97d4899db..97d4899db 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/eo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/eo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es.res
index cdb106684..cdb106684 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_419.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_419.res
index 7b92377ce..7b92377ce 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_419.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_419.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_AR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_AR.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_AR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_AR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BO.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BR.res
index 1d7fbb494..1d7fbb494 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BZ.res
index 1d7fbb494..1d7fbb494 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_BZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_BZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CL.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CL.res
index efc5fea9f..efc5fea9f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CL.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CL.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CO.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CR.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CU.res
index 1d7fbb494..1d7fbb494 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_CU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_CU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_DO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_DO.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_DO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_DO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_EC.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_EC.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_EC.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_EC.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_GT.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_GT.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_GT.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_GT.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_HN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_HN.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_HN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_HN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_MX.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_MX.res
index 9baee19e4..9baee19e4 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_MX.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_MX.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_NI.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_NI.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_NI.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_NI.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PA.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PE.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PR.res
index cad38ae95..cad38ae95 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PY.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PY.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_PY.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_PY.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_SV.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_SV.res
index cad38ae95..cad38ae95 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_SV.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_SV.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_US.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_US.res
index 6f641e87e..6f641e87e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_US.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_US.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_UY.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_UY.res
index 1d7fbb494..1d7fbb494 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_UY.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_UY.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_VE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_VE.res
index 293209bf5..293209bf5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/es_VE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/es_VE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/et.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/et.res
index bc66d4f13..bc66d4f13 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/et.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/et.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/eu.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/eu.res
index 26aee085d..26aee085d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/eu.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/eu.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ewo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ewo.res
index 8c25ab1e7..8c25ab1e7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ewo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ewo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fa.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fa.res
index f77dc67d9..f77dc67d9 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fa.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fa.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fa_AF.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fa_AF.res
index e21ff2190..e21ff2190 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fa_AF.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fa_AF.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff.res
index bca02e11d..bca02e11d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Adlm.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Adlm.res
new file mode 100644
index 000000000..8c8a4fa87
--- /dev/null
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Adlm.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_CM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_CM.res
index 947ede105..947ede105 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_CM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_CM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_GN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_GN.res
index 4f1c6d779..4f1c6d779 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_GN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_GN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_CM.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_CM.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_CM.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_CM.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_GN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_GN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_GN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_GN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_MR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_MR.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_MR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_MR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_SN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_SN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_Latn_SN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_Latn_SN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_MR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_MR.res
index 4acaebc94..4acaebc94 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_MR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_MR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_SN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_SN.res
index 36f05b6ab..36f05b6ab 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ff_SN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ff_SN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fi.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fi.res
index d5311715a..d5311715a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fi.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fi.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fil.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fil.res
index 893696eae..893696eae 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fil.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fil.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fil_PH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fil_PH.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fil_PH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fil_PH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fo.res
index abffd858a..abffd858a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr.res
index 3621add0d..3621add0d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr_BE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr_BE.res
index 6fb2bcfa7..6fb2bcfa7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr_BE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr_BE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr_CA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr_CA.res
index 0f615bd87..0f615bd87 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fr_CA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fr_CA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fur.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fur.res
index 403d11ec6..403d11ec6 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fur.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fur.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fy.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fy.res
index c7c35f7bb..c7c35f7bb 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/fy.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/fy.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ga.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ga.res
index d4bbeb47a..d4bbeb47a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ga.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ga.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gd.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gd.res
index 740775a3b..740775a3b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gd.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gd.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gl.res
index 5dcc1fc1b..5dcc1fc1b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gsw.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gsw.res
index 5aa9f986a..5aa9f986a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gsw.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gsw.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gu.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gu.res
index e95a3eec0..e95a3eec0 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gu.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gu.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/guz.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/guz.res
index 4075f9504..4075f9504 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/guz.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/guz.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gv.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gv.res
index 0c5abbbe7..0c5abbbe7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/gv.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/gv.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ha.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ha.res
index 5cdcca8c0..5cdcca8c0 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ha.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ha.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/haw.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/haw.res
index f50228074..f50228074 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/haw.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/haw.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/he.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/he.res
index 9921d78cb..9921d78cb 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/he.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/he.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/he_IL.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/he_IL.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/he_IL.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/he_IL.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hi.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hi.res
index f80d97174..f80d97174 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hi.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hi.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hi_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hi_Latn.res
new file mode 100644
index 000000000..bcf3c46be
--- /dev/null
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hi_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hr.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hr.res
index fcdafb40e..fcdafb40e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hr.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hr.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hsb.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hsb.res
index bac0c2512..bac0c2512 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hsb.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hsb.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hu.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hu.res
index 1354a29a2..1354a29a2 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hu.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hu.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hy.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hy.res
index b0a196e1a..b0a196e1a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/hy.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/hy.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ia.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ia.res
index 3959e6eaf..3959e6eaf 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ia.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ia.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/id.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/id.res
index cf9e79417..cf9e79417 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/id.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/id.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/id_ID.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/id_ID.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/id_ID.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/id_ID.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ie.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ie.res
index eb06dcf91..eb06dcf91 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ie.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ie.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ig.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ig.res
index 99a81e6f9..99a81e6f9 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ig.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ig.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ii.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ii.res
index 53c8ce687..53c8ce687 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ii.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ii.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/in.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/in.res
index 1297ee620..1297ee620 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/in.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/in.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/in_ID.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/in_ID.res
index 41cd409d6..41cd409d6 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/in_ID.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/in_ID.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/is.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/is.res
index a6b254ea3..a6b254ea3 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/is.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/is.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/it.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/it.res
index 226c0bfda..226c0bfda 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/it.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/it.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/iw.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/iw.res
index 8984dba64..8984dba64 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/iw.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/iw.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/iw_IL.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/iw_IL.res
index 5570fd61b..5570fd61b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/iw_IL.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/iw_IL.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ja.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ja.res
index 8a856df65..8a856df65 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ja.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ja.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jgo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jgo.res
index bf1cefc49..bf1cefc49 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jgo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jgo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jmc.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jmc.res
index 4075f9504..4075f9504 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jmc.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jmc.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jv.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jv.res
index 1c4edeb7f..1c4edeb7f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/jv.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/jv.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ka.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ka.res
index b2dea7c3c..b2dea7c3c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ka.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ka.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kab.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kab.res
index 6dc8e4ddd..6dc8e4ddd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kab.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kab.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kam.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kam.res
index 0e05fcac4..0e05fcac4 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kam.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kam.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kde.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kde.res
index df4027ba1..df4027ba1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kde.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kde.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kea.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kea.res
index 70a1d74eb..70a1d74eb 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kea.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kea.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kgp.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kgp.res
index 0d49a3896..0d49a3896 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kgp.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kgp.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/khq.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/khq.res
index b563ed911..b563ed911 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/khq.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/khq.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ki.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ki.res
index c14964ac7..c14964ac7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ki.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ki.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kk.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kk.res
index 9223cd41f..9223cd41f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kk.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kk.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kkj.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kkj.res
index 7fc115766..7fc115766 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kkj.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kkj.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kl.res
index 52b8da709..52b8da709 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kln.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kln.res
index c212f9eb2..c212f9eb2 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kln.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kln.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/km.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/km.res
index 612eeaee5..612eeaee5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/km.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/km.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kn.res
index 3bce0ad7d..3bce0ad7d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ko.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ko.res
index 0b1ccd1ca..0b1ccd1ca 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ko.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ko.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ko_KP.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ko_KP.res
index e4d21bede..e4d21bede 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ko_KP.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ko_KP.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kok.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kok.res
index 8131b4dff..8131b4dff 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kok.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kok.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks.res
new file mode 100644
index 000000000..7ee6a640d
--- /dev/null
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Arab.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Arab.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Arab.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Arab.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Arab_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Arab_IN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Arab_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Arab_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Deva.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Deva.res
index 5f7bfd263..5f7bfd263 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_Deva.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_Deva.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_IN.res
index dc3c481c3..dc3c481c3 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ks_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ks_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksb.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksb.res
index 3fec6bea0..3fec6bea0 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksb.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksb.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksf.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksf.res
index 55cfccfad..55cfccfad 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksf.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksf.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksh.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksh.res
index d17b5c0bc..d17b5c0bc 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ksh.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ksh.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ku.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ku.res
index d72443b61..d72443b61 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ku.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ku.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kw.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kw.res
index 6b201a4d5..6b201a4d5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kw.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kw.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv.res
index 59e30e2df..59e30e2df 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Deva.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Deva.res
index 0b3853a74..0b3853a74 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Deva.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Deva.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_IN.res
new file mode 100644
index 000000000..f605f5c41
--- /dev/null
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_Beng.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Latn.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_Beng.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_Beng_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Latn_IN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_Beng_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Latn_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Orya.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Orya.res
index d8549727d..d8549727d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Orya.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Orya.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Telu.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Telu.res
index 9b701b586..9b701b586 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/kxv_Telu.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/kxv_Telu.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ky.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ky.res
index 7684e4854..7684e4854 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ky.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ky.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lag.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lag.res
index 7bb476b4d..7bb476b4d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lag.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lag.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lb.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lb.res
index dc1f5755e..dc1f5755e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lb.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lb.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lg.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lg.res
index b1c8a4acb..b1c8a4acb 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lg.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lg.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lij.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lij.res
index a66363a3f..a66363a3f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lij.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lij.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lkt.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lkt.res
index 56b40243a..56b40243a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lkt.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lkt.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lmo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lmo.res
index 6de0d8dbd..6de0d8dbd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lmo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lmo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ln.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ln.res
index 04ccc832f..04ccc832f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ln.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ln.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lo.res
index 0a02c1059..0a02c1059 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lrc.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lrc.res
index 344a274bd..344a274bd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lrc.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lrc.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lt.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lt.res
index 08b66f130..08b66f130 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lt.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lt.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lu.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lu.res
index 624a629b4..624a629b4 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lu.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lu.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/luo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/luo.res
index 0819a0e41..0819a0e41 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/luo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/luo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/luy.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/luy.res
index 92a38748e..92a38748e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/luy.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/luy.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lv.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lv.res
index f0e809422..f0e809422 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/lv.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/lv.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mai.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mai.res
index 3ddc77c90..3ddc77c90 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mai.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mai.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mas.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mas.res
index 6c41d92d8..6c41d92d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mas.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mas.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mer.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mer.res
index 7bfbd4c9d..7bfbd4c9d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mer.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mer.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mfe.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mfe.res
index 15837fea7..15837fea7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mfe.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mfe.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mg.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mg.res
index c98398d5f..c98398d5f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mg.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mg.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mgh.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mgh.res
index 1b6986fc4..1b6986fc4 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mgh.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mgh.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mgo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mgo.res
index 02c844db0..02c844db0 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mgo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mgo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mi.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mi.res
index fc860d626..fc860d626 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mi.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mi.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mk.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mk.res
index 56845dcc1..56845dcc1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mk.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mk.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ml.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ml.res
index 1df2bd893..1df2bd893 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ml.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ml.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mn.res
index 371b072cf..371b072cf 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni.res
index c5d976367..c5d976367 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Guru.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_Beng.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Guru.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_Beng.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nn_NO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_Beng_IN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nn_NO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_Beng_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_IN.res
index 3233b3839..3233b3839 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mni_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mni_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mo.res
index 7c1c6872d..7c1c6872d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mr.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mr.res
index 63e602612..63e602612 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mr.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mr.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ms.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ms.res
index ff9ac0a88..ff9ac0a88 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ms.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ms.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mt.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mt.res
index a8602d585..a8602d585 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mt.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mt.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mua.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mua.res
index 2a83053c2..2a83053c2 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mua.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mua.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/my.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/my.res
index 1f9a1b192..1f9a1b192 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/my.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/my.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mzn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mzn.res
index 2b7e5899f..2b7e5899f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/mzn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/mzn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/naq.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/naq.res
index 082f867c4..082f867c4 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/naq.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/naq.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nb.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nb.res
index 7de73189e..7de73189e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nb.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nb.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nd.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nd.res
index acb4b2a94..acb4b2a94 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nd.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nd.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nds.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nds.res
index 09813a99a..09813a99a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nds.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nds.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ne.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ne.res
index 8152051bf..8152051bf 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ne.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ne.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nl.res
index a5c0671a7..a5c0671a7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nmg.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nmg.res
index 9d11bf9e1..9d11bf9e1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nmg.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nmg.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nn.res
index 750351281..750351281 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Arab_PK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nn_NO.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Arab_PK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nn_NO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nnh.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nnh.res
index c285ea3b1..c285ea3b1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nnh.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nnh.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no.res
index 724c694ba..724c694ba 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no_NO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no_NO.res
index d51b58e3d..d51b58e3d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no_NO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no_NO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no_NO_NY.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no_NO_NY.res
index 109a4be4f..109a4be4f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/no_NO_NY.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/no_NO_NY.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nqo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nqo.res
index 8b0c3f88c..8b0c3f88c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nqo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nqo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nus.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nus.res
index 2f3b21d2b..2f3b21d2b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nus.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nus.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nyn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nyn.res
index 558ad6987..558ad6987 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/nyn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/nyn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/oc.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/oc.res
index 8ce359d3c..8ce359d3c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/oc.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/oc.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/om.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/om.res
index bd5a0c547..bd5a0c547 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/om.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/om.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/or.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/or.res
index 1a51e3536..1a51e3536 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/or.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/or.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/os.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/os.res
index a1a080709..a1a080709 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/os.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/os.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa.res
index 17b53a878..17b53a878 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Arab.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Arab.res
index 64bc302ea..64bc302ea 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Arab.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Arab.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Guru_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Arab_PK.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_Guru_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_Olck.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Guru.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_Olck.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Guru.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_Olck_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Guru_IN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_Olck_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_Guru_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_IN.res
index 3b02199db..3b02199db 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_PK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_PK.res
index 5fc75e5cd..5fc75e5cd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pa_PK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pa_PK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pcm.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pcm.res
index 85aab9b9d..85aab9b9d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pcm.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pcm.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pl.res
index 31134878b..31134878b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pool.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pool.res
index 8722fbe80..8722fbe80 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pool.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pool.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/prg.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/prg.res
index 87dfd5f8c..87dfd5f8c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/prg.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/prg.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ps.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ps.res
index 2cc44b42d..2cc44b42d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ps.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ps.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ps_PK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ps_PK.res
index c481a1598..c481a1598 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ps_PK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ps_PK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt.res
index 0cdf7deb5..0cdf7deb5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_AO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_AO.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_AO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_AO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_CH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_CH.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_CH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_CH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_CV.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_CV.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_CV.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_CV.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_GQ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_GQ.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_GQ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_GQ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_GW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_GW.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_GW.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_GW.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_LU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_LU.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_LU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_LU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_MO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_MO.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_MO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_MO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_MZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_MZ.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_MZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_MZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_PT.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_PT.res
index 98817b520..98817b520 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_PT.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_PT.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_ST.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_ST.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_ST.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_ST.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_TL.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_TL.res
index 87f9ac5c1..87f9ac5c1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/pt_TL.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/pt_TL.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/qu.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/qu.res
index 11861546b..11861546b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/qu.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/qu.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/raj.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/raj.res
index e557436cb..e557436cb 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/raj.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/raj.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/res_index.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/res_index.res
new file mode 100644
index 000000000..aa934d711
--- /dev/null
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/res_index.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rm.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rm.res
index 6424a7bab..6424a7bab 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rm.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rm.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rn.res
index 2e9f78432..2e9f78432 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ro.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ro.res
index 65d5b5994..65d5b5994 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ro.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ro.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ro_MD.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ro_MD.res
index a103d36b6..a103d36b6 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ro_MD.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ro_MD.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rof.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rof.res
index 7b1c249ef..7b1c249ef 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rof.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rof.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/root.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/root.res
new file mode 100644
index 000000000..c8600c021
--- /dev/null
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/root.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ru.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ru.res
index 60dae4232..60dae4232 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ru.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ru.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ru_UA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ru_UA.res
index 2c8c4af67..2c8c4af67 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ru_UA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ru_UA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rw.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rw.res
index a91db5532..a91db5532 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rw.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rw.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rwk.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rwk.res
index 4075f9504..4075f9504 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/rwk.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/rwk.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sa.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sa.res
index 7f56a6a58..7f56a6a58 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sa.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sa.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sah.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sah.res
index 3d030031b..3d030031b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sah.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sah.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/saq.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/saq.res
index 4075f9504..4075f9504 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/saq.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/saq.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat.res
index d8bec5919..d8bec5919 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_IN.res
index bd8da02f9..bd8da02f9 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sat_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Arab.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_Olck.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Arab.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_Olck.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Arab_PK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_Olck_IN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Arab_PK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sat_Olck_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sbp.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sbp.res
index 16d51f7d9..16d51f7d9 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sbp.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sbp.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sc.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sc.res
index d19bf3f45..d19bf3f45 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sc.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sc.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd.res
index d31779b8f..d31779b8f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Tfng.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Arab.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Tfng.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Arab.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Deva_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Arab_PK.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Deva_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Arab_PK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Deva.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Deva.res
index 10a36d3a7..10a36d3a7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_Deva.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Deva.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Tfng_MA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Deva_IN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Tfng_MA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_Deva_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_IN.res
index ef0fb78dd..ef0fb78dd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_PK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_PK.res
index 7bcfc9ab5..7bcfc9ab5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sd_PK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sd_PK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/se.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/se.res
index 73db54806..73db54806 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/se.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/se.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/se_FI.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/se_FI.res
index e798b0657..e798b0657 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/se_FI.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/se_FI.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/seh.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/seh.res
index fcfd1eb4b..fcfd1eb4b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/seh.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/seh.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ses.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ses.res
index b563ed911..b563ed911 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ses.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ses.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sg.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sg.res
index 3810e60f2..3810e60f2 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sg.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sg.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh.res
index e04aa0ba9..e04aa0ba9 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_BA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_BA.res
index e077d63db..e077d63db 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_BA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_BA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_CS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_CS.res
index 0e72c7915..0e72c7915 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_CS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_CS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_YU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_YU.res
index 0e72c7915..0e72c7915 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sh_YU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sh_YU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi.res
index 8d5b7c9ec..8d5b7c9ec 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Latn.res
index 3789b3cee..3789b3cee 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_Latn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_MA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_MA.res
index ea5817e98..ea5817e98 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/shi_MA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_MA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Tfng.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Tfng.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_RS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Tfng_MA.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_RS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/shi_Tfng_MA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/si.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/si.res
index 830b4f58d..830b4f58d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/si.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/si.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sk.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sk.res
index b233720c5..b233720c5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sk.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sk.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sl.res
index 9c0b47dcb..9c0b47dcb 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/smn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/smn.res
index d52c0467e..d52c0467e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/smn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/smn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sn.res
index 89c08d78b..89c08d78b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/so.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/so.res
index 7c8897b80..7c8897b80 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/so.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/so.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sq.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sq.res
index ba0c1b833..ba0c1b833 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sq.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sq.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr.res
index ee817dd86..ee817dd86 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_BA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_BA.res
index 0fb66d47a..0fb66d47a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_BA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_BA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_CS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_CS.res
index ce7afd371..ce7afd371 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_CS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_CS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_Latn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_BA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_BA.res
index dff67a403..dff67a403 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_BA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_BA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_CS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_CS.res
index 0cccaba59..0cccaba59 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_CS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_CS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_ME.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_ME.res
index a6163a2ff..a6163a2ff 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_ME.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_ME.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_RS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_RS.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_RS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_RS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_XK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_XK.res
index 5df7279aa..5df7279aa 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_XK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_XK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_YU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_YU.res
index 0cccaba59..0cccaba59 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Cyrl_YU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Cyrl_YU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn.res
index ba3f9349e..ba3f9349e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_BA.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_BA.res
index 785bb4799..785bb4799 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_BA.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_BA.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_CS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_CS.res
index 0e72c7915..0e72c7915 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_CS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_CS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_ME.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_ME.res
index 7a88fda63..7a88fda63 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_ME.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_ME.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_Latn_ID.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_RS.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_Latn_ID.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_RS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_XK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_XK.res
index 108ed4a84..108ed4a84 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_XK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_XK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_YU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_YU.res
index 0e72c7915..0e72c7915 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_Latn_YU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_Latn_YU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_ME.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_ME.res
index 8e1efab79..8e1efab79 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_ME.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_ME.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_RS.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_RS.res
index 0cccaba59..0cccaba59 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_RS.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_RS.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_XK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_XK.res
index d197e4946..d197e4946 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_XK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_XK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_YU.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_YU.res
index ce7afd371..ce7afd371 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sr_YU.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sr_YU.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su.res
index b820eed74..b820eed74 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_ID.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_ID.res
index bde9e2a33..bde9e2a33 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/su_ID.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_ID.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_Latn.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Latn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Arab_AF.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_Latn_ID.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Arab_AF.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/su_Latn_ID.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sv.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sv.res
index afd685c60..afd685c60 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sv.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sv.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw.res
index 7c31f5e06..7c31f5e06 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw_CD.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw_CD.res
index 922b5a54f..922b5a54f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw_CD.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw_CD.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw_KE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw_KE.res
index 356d648cc..356d648cc 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/sw_KE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/sw_KE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/syr.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/syr.res
index 0aaaba15c..0aaaba15c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/syr.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/syr.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/szl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/szl.res
index 2050a5aca..2050a5aca 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/szl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/szl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ta.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ta.res
index 3b2914dd6..3b2914dd6 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ta.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ta.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/te.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/te.res
index a3023e4d7..a3023e4d7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/te.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/te.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/teo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/teo.res
index ad4380000..ad4380000 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/teo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/teo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tg.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tg.res
index 24d08739f..24d08739f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tg.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tg.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/th.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/th.res
index 344883e00..344883e00 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/th.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/th.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ti.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ti.res
index 52fd70d5e..52fd70d5e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ti.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ti.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tk.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tk.res
index dfbb231a0..dfbb231a0 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tk.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tk.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tl.res
index 8f9790039..8f9790039 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tl_PH.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tl_PH.res
index 7b97d0991..7b97d0991 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tl_PH.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tl_PH.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/to.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/to.res
index a1d9ee521..a1d9ee521 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/to.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/to.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tok.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tok.res
index b248863dd..b248863dd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tok.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tok.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tr.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tr.res
index 89e7a230c..89e7a230c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tr.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tr.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tt.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tt.res
index 76f463e0d..76f463e0d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tt.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tt.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/twq.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/twq.res
index b64aeccb9..b64aeccb9 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/twq.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/twq.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tzm.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tzm.res
index c8e114dcd..c8e114dcd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/tzm.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/tzm.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ug.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ug.res
index 9819e86e7..9819e86e7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ug.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ug.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uk.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uk.res
index 4cf38e378..4cf38e378 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uk.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uk.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ur.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ur.res
index 5de7360ee..5de7360ee 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ur.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ur.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ur_IN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ur_IN.res
index b2e6e902a..b2e6e902a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/ur_IN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/ur_IN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz.res
index 66774776f..66774776f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_AF.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_AF.res
index e53a2de32..e53a2de32 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_AF.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_AF.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Arab.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Arab.res
index c69da9b9b..c69da9b9b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Arab.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Arab.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Latn_UZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Arab_AF.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Latn_UZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Arab_AF.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Cyrl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Cyrl.res
index 747d1dea7..747d1dea7 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_Cyrl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Cyrl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Vaii.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Latn.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Vaii.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Vaii_LR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Latn_UZ.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Vaii_LR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_Latn_UZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_UZ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_UZ.res
index f2c07fb58..f2c07fb58 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/uz_UZ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/uz_UZ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai.res
index e7540a447..e7540a447 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_LR.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_LR.res
index e90fec28d..e90fec28d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_LR.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_LR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Latn.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Latn.res
index c4b139fe0..c4b139fe0 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vai_Latn.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Latn.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hant.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Vaii.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hant.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Vaii.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hans_CN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Vaii_LR.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hans_CN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vai_Vaii_LR.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vec.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vec.res
index dd9f0ccfd..dd9f0ccfd 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vec.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vec.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vi.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vi.res
index c9802144e..c9802144e 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vi.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vi.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vmw.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vmw.res
index 0a2724286..0a2724286 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vmw.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vmw.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vun.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vun.res
index 4075f9504..4075f9504 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/vun.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/vun.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/wae.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/wae.res
index f5fb32842..f5fb32842 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/wae.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/wae.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/wo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/wo.res
index 99330bbea..99330bbea 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/wo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/wo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xh.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xh.res
index 53264abbb..53264abbb 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xh.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xh.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xnr.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xnr.res
index c7e37bf57..c7e37bf57 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xnr.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xnr.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xog.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xog.res
index 02ff22597..02ff22597 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/xog.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/xog.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yav.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yav.res
index c508ca607..c508ca607 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yav.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yav.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yi.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yi.res
index 118daad62..118daad62 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yi.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yi.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yo.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yo.res
index a52622ab1..a52622ab1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yo.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yo.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yo_BJ.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yo_BJ.res
index eb97881f2..eb97881f2 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yo_BJ.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yo_BJ.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl.res
index 0f5de5d1c..0f5de5d1c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl_CO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl_CO.res
index edb9c194a..edb9c194a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl_CO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl_CO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl_VE.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl_VE.res
index edb9c194a..edb9c194a 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yrl_VE.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yrl_VE.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue.res
index d9b40ce35..d9b40ce35 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_CN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_CN.res
index cf117e9bb..cf117e9bb 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_CN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_CN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_HK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_HK.res
index b7a8b5b6b..b7a8b5b6b 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_HK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_HK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hans.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hans.res
index 651a0eac1..651a0eac1 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hans.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hans.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hant_HK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hans_CN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/yue_Hant_HK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hant.res
index 12d9d96d8..12d9d96d8 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hant.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans_CN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hant_HK.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans_CN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/yue_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/za.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/za.res
index 02bc921b5..02bc921b5 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/za.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/za.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zgh.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zgh.res
index 4f6a130d0..4f6a130d0 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zgh.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zgh.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh.res
index a3be1137c..a3be1137c 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_CN.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_CN.res
index 0926a8b26..0926a8b26 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_CN.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_CN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_HK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_HK.res
index 061f5119f..061f5119f 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_HK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_HK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans.res
new file mode 100644
index 000000000..12d9d96d8
--- /dev/null
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans_SG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans_CN.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hans_SG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans_CN.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_TW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans_SG.res
index d488c4958..d488c4958 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_TW.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hans_SG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant.res
index 1cae03cf9..1cae03cf9 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_HK.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_HK.res
index 9468d95a4..9468d95a4 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_HK.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_HK.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_MO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_MO.res
index afa2b5a25..afa2b5a25 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_Hant_MO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_MO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_TW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_TW.res
new file mode 100644
index 000000000..d488c4958
--- /dev/null
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_Hant_TW.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_MO.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_MO.res
index 168780dda..168780dda 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_MO.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_MO.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_SG.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_SG.res
index 4e89fce4d..4e89fce4d 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_SG.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_SG.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_TW.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_TW.res
index 501370fde..501370fde 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zh_TW.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zh_TW.res
Binary files differ
diff --git a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zu.res b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zu.res
index 9a36d6820..9a36d6820 100644
--- a/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt74b/region/zu.res
+++ b/icu4j/main/regiondata/src/main/resources/com/ibm/icu/impl/data/icudt75b/region/zu.res
Binary files differ
diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar
index 0cf509269..8d5a5c850 100644
--- a/icu4j/main/shared/data/icudata.jar
+++ b/icu4j/main/shared/data/icudata.jar
Binary files differ
diff --git a/icu4j/main/shared/data/icutzdata.jar b/icu4j/main/shared/data/icutzdata.jar
index 61a62b3eb..f55df4f92 100644
--- a/icu4j/main/shared/data/icutzdata.jar
+++ b/icu4j/main/shared/data/icutzdata.jar
Binary files differ
diff --git a/icu4j/main/shared/data/testdata.jar b/icu4j/main/shared/data/testdata.jar
index b464dbdf4..323447e79 100644
--- a/icu4j/main/shared/data/testdata.jar
+++ b/icu4j/main/shared/data/testdata.jar
Binary files differ
diff --git a/icu4j/main/translit/pom.xml b/icu4j/main/translit/pom.xml
index d003a24a4..5567c8210 100644
--- a/icu4j/main/translit/pom.xml
+++ b/icu4j/main/translit/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/main/translit/src/main/java/com/ibm/icu/text/AnyTransliterator.java b/icu4j/main/translit/src/main/java/com/ibm/icu/text/AnyTransliterator.java
index 87e98af7f..dec3a5e19 100644
--- a/icu4j/main/translit/src/main/java/com/ibm/icu/text/AnyTransliterator.java
+++ b/icu4j/main/translit/src/main/java/com/ibm/icu/text/AnyTransliterator.java
@@ -184,7 +184,7 @@ class AnyTransliterator extends Transliterator {
}
}
- Integer key = Integer.valueOf(source);
+ Integer key = source;
Transliterator t = cache.get(key);
if (t == null) {
String sourceName = UScript.getName(source);
diff --git a/icu4j/main/translit/src/main/java/com/ibm/icu/text/Transliterator.java b/icu4j/main/translit/src/main/java/com/ibm/icu/text/Transliterator.java
index 8a561dd26..5ed51dd39 100644
--- a/icu4j/main/translit/src/main/java/com/ibm/icu/text/Transliterator.java
+++ b/icu4j/main/translit/src/main/java/com/ibm/icu/text/Transliterator.java
@@ -18,6 +18,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.Objects;
+import java.util.function.Supplier;
import com.ibm.icu.impl.ICUData;
import com.ibm.icu.impl.ICUResourceBundle;
@@ -1507,7 +1508,7 @@ public abstract class Transliterator implements StringTransform {
MessageFormat format = new MessageFormat(
bundle.getString(RB_DISPLAY_NAME_PATTERN));
// Construct the argument array
- Object[] args = new Object[] { Integer.valueOf(2), stv[0], stv[1] };
+ Object[] args = new Object[] { 2, stv[0], stv[1] };
// Use display names for the scripts, if they exist
for (int j=1; j<=2; ++j) {
@@ -2185,7 +2186,18 @@ public abstract class Transliterator implements StringTransform {
if (type.equals("file") || type.equals("internal")) {
// Rest of line is <resource>:<encoding>:<direction>
// pos colon c2
- String resString = res.getString("resource");
+ // BEGIN Android patch: Lazily load transliterator rules.
+ // String resString = res.getString("resource");
+ int rowIndex = row;
+ Supplier<String> resSupplier = () -> {
+ // Avoid capturing UResourceBundle objects, but read the resource string
+ // with the captured row ID.
+ UResourceBundle rootBund = UResourceBundle.getBundleInstance(
+ ICUData.ICU_TRANSLIT_BASE_NAME, ROOT);
+ UResourceBundle transIDsBund = rootBund.get(RB_RULE_BASED_IDS);
+ UResourceBundle thisBund = transIDsBund.get(rowIndex).get(0);
+ return thisBund.getString("resource");
+ };
int dir;
String direction = res.getString("direction");
switch (direction.charAt(0)) {
@@ -2199,9 +2211,10 @@ public abstract class Transliterator implements StringTransform {
throw new RuntimeException("Can't parse direction: " + direction);
}
registry.put(ID,
- resString, // resource
+ resSupplier, // resource
dir,
!type.equals("internal"));
+ // END Android patch: Lazily load transliterator rules.
} else if (type.equals("alias")) {
//'alias'; row[2]=createInstance argument
String resString = res.getString();
diff --git a/icu4j/main/translit/src/main/java/com/ibm/icu/text/TransliteratorRegistry.java b/icu4j/main/translit/src/main/java/com/ibm/icu/text/TransliteratorRegistry.java
index be6bda496..4a6d7a4fd 100644
--- a/icu4j/main/translit/src/main/java/com/ibm/icu/text/TransliteratorRegistry.java
+++ b/icu4j/main/translit/src/main/java/com/ibm/icu/text/TransliteratorRegistry.java
@@ -23,6 +23,7 @@ import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Set;
+import java.util.function.Supplier;
import com.ibm.icu.impl.ICUData;
import com.ibm.icu.impl.ICUResourceBundle;
@@ -221,14 +222,39 @@ class TransliteratorRegistry {
// Entry classes
//----------------------------------------------------------------------
+ // BEGIN Android patch: Lazily load transliterator rules.
static class ResourceEntry {
- public String resource;
- public int direction;
+ private final Supplier<String> resourceSupplier;
+ public final int direction;
+ private String resource;
public ResourceEntry(String n, int d) {
resource = n;
direction = d;
+ resourceSupplier = null;
+ }
+
+ public ResourceEntry(Supplier<String> resourceSupplier, int dir) {
+ this.resourceSupplier = resourceSupplier;
+ direction = dir;
+ }
+
+ public String getResource() {
+ if (resourceSupplier == null) {
+ return resource;
+ }
+
+ synchronized (this) {
+ if (resource != null) {
+ return resource;
+ }
+
+ String str = resourceSupplier.get();
+ resource = str;
+ return str;
+ }
}
}
+ // END Android patch: Lazily load transliterator rules.
// An entry representing a rule in a locale resource bundle
static class LocaleEntry {
@@ -349,6 +375,15 @@ class TransliteratorRegistry {
registerEntry(ID, new ResourceEntry(resourceName, dir), visible);
}
+ // BEGIN Android patch: Lazily load transliterator rules.
+ void put(String ID,
+ Supplier<String> resourceSupplier,
+ int dir,
+ boolean visible) {
+ registerEntry(ID, new ResourceEntry(resourceSupplier, dir), visible);
+ }
+ // END Android patch: Lazily load transliterator rules.
+
/**
* Register an ID and an alias ID. This adds an entry to the
* dynamic store, or replaces an existing entry. Any entry in the
@@ -876,7 +911,9 @@ class TransliteratorRegistry {
try {
ResourceEntry re = (ResourceEntry) entry;
- parser.parse(re.resource, re.direction);
+ // Android patch: Lazily load transliterator rules.
+ // parser.parse(re.resource, re.direction);
+ parser.parse(re.getResource(), re.direction);
} catch (ClassCastException e) {
// If we pull a rule from a locale resource bundle it will
diff --git a/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/el.res b/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/el.res
index 9474df27d..9474df27d 100644
--- a/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/el.res
+++ b/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/el.res
Binary files differ
diff --git a/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/en.res b/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/en.res
index 528e5a0aa..528e5a0aa 100644
--- a/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/en.res
+++ b/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/en.res
Binary files differ
diff --git a/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/root.res b/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/root.res
index b8f547e79..b8f547e79 100644
--- a/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt74b/translit/root.res
+++ b/icu4j/main/translit/src/main/resources/com/ibm/icu/impl/data/icudt75b/translit/root.res
Binary files differ
diff --git a/icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java b/icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
index e3e809dce..9dbf040ad 100644
--- a/icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
+++ b/icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
@@ -282,7 +282,7 @@ public class UnicodeMapTest extends TestFmwk {
logln(unicodeMap.toString());
}
for (int i = start; i <= end; ++i) {
- hashMap.put(new Integer(i), value);
+ hashMap.put(i, value);
}
if (!hasSameValues(unicodeMap, hashMap)) {
errln("Failed at " + count);
@@ -293,7 +293,7 @@ public class UnicodeMapTest extends TestFmwk {
private boolean hasSameValues(UnicodeMap unicodeMap, HashMap hashMap) {
for (int i = 0; i < MODIFY_TEST_LIMIT; ++i) {
Object unicodeMapValue = unicodeMap.getValue(i);
- Object hashMapValue = hashMap.get(new Integer(i));
+ Object hashMapValue = hashMap.get(i);
if (unicodeMapValue != hashMapValue) {
return false;
}
diff --git a/icu4j/maven-migration/pom.xml b/icu4j/maven-migration/pom.xml
index 341057fd7..68c65a68f 100644
--- a/icu4j/maven-migration/pom.xml
+++ b/icu4j/maven-migration/pom.xml
@@ -104,7 +104,7 @@
<licenses>
<license>
- <name>Unicode/ICU License</name>
+ <name>Unicode-3.0</name>
<url>https://raw.githubusercontent.com/unicode-org/icu/main/LICENSE</url>
<distribution>repo</distribution>
</license>
diff --git a/icu4j/perf-tests/pom.xml b/icu4j/perf-tests/pom.xml
index 81004c46e..80d95d96d 100644
--- a/icu4j/perf-tests/pom.xml
+++ b/icu4j/perf-tests/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
</parent>
<artifactId>perf-tests</artifactId>
diff --git a/icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java b/icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
index 9d083f997..24ed994a7 100644
--- a/icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
+++ b/icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
@@ -657,7 +657,7 @@ public class NormalizerPerformanceTest extends PerfTest {
try {
if (sun) {
- normalizerArgs = new Object[] { null, null, new Integer(0) };
+ normalizerArgs = new Object[] { null, null, 0 };
normalizerArgs[1] = normalizer.getField(compose ? "COMPOSE" : "DECOMP").get(null);
normalizerMethod = normalizer.getMethod("normalize", new Class[] { String.class, normalizerArgs[1].getClass(), int.class });
// sun.text.Normalizer.normalize(line, compose
diff --git a/icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java b/icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
index a8e95e1ad..488d1742d 100644
--- a/icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
+++ b/icu4j/perf-tests/src/main/java/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
@@ -8,7 +8,6 @@
*/
package com.ibm.icu.dev.test.perf;
import java.util.HashSet;
-import java.util.Iterator;
import com.ibm.icu.text.UnicodeSet;
import com.ibm.icu.text.UnicodeSetIterator;
@@ -25,7 +24,7 @@ public class UnicodeSetPerf extends PerfTest {
UnicodeSet testChars;
UnicodeSetIterator it;
UnicodeSet us;
- HashSet hs;
+ HashSet<Integer> hs;
public static void main(String[] args) throws Exception {
new UnicodeSetPerf().run(args);
@@ -41,7 +40,7 @@ public class UnicodeSetPerf extends PerfTest {
testChars = new UnicodeSet(pattern);
it = new UnicodeSetIterator(testChars);
us = new UnicodeSet();
- hs = new HashSet();
+ hs = new HashSet<>();
}
PerfTest.Function testUnicodeSetAdd() {
@@ -72,7 +71,7 @@ public class UnicodeSetPerf extends PerfTest {
int n=0;
while (it.nextRange()) {
for (int cp = it.codepoint; cp <= it.codepointEnd; ++cp) {
- hs.add(new Integer(cp));
+ hs.add(cp);
++n;
}
}
@@ -108,13 +107,13 @@ public class UnicodeSetPerf extends PerfTest {
hs.clear();
it.reset();
while (it.next()) {
- hs.add(new Integer(it.codepoint));
+ hs.add(it.codepoint);
}
return new PerfTest.Function() {
public void call() {
int temp = 0;
for (int cp = 0; cp <= 0x10FFFF; ++cp) {
- if (hs.contains(new Integer(cp))) {
+ if (hs.contains(cp)) {
temp += cp;
}
}
@@ -146,14 +145,13 @@ public class UnicodeSetPerf extends PerfTest {
hs.clear();
it.reset();
while (it.next()) {
- hs.add(new Integer(it.codepoint));
+ hs.add(it.codepoint);
}
return new PerfTest.Function() {
public void call() {
int temp = 0;
- Iterator itr = hs.iterator();
- while (itr.hasNext()) {
- temp += ((Integer)itr.next()).intValue();
+ for (Integer value : hs) {
+ temp += value;
}
}
diff --git a/icu4j/pom.xml b/icu4j/pom.xml
index dd982e79b..821a1f381 100644
--- a/icu4j/pom.xml
+++ b/icu4j/pom.xml
@@ -8,7 +8,7 @@
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<packaging>pom</packaging>
<name>${proj-title} (${project.artifactId})</name>
@@ -54,16 +54,18 @@
<maven.compiler.target>1.8</maven.compiler.target>
<maven-central-repo-url>https://oss.sonatype.org</maven-central-repo-url>
+ <maven-central-releases-repo-url>${maven-central-repo-url}/service/local/staging/deploy/maven2</maven-central-releases-repo-url>
<maven-central-snapshots-repo-url>${maven-central-repo-url}/content/repositories/snapshots</maven-central-snapshots-repo-url>
<junit.version>4.13.2</junit.version>
<junitparams.version>1.1.1</junitparams.version>
+ <gson.version>2.10.1</gson.version>
<proj-title>International Components for Unicode for Java</proj-title>
<proj.displayname>${project.artifactId}</proj.displayname>
<!-- Version update! -->
- <icu.major.version>74</icu.major.version>
+ <icu.major.version>75</icu.major.version>
<!-- Variables used to generate the javadoc -->
<!-- Version update! -->
@@ -104,7 +106,7 @@
<licenses>
<license>
- <name>Unicode/ICU License</name>
+ <name>Unicode-3.0</name>
<url>https://raw.githubusercontent.com/unicode-org/icu/main/LICENSE</url>
<distribution>repo</distribution>
</license>
@@ -237,6 +239,10 @@
<version>3.3.0</version>
</plugin>
<plugin>
+ <artifactId>maven-gpg-plugin</artifactId>
+ <version>3.1.0</version>
+ </plugin>
+ <plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.4.5</version>
</plugin>
@@ -456,6 +462,16 @@
</goals>
</execution>
</executions>
+ <configuration>
+ <excludes>
+ <exclude>/com/ibm/icu/impl/data/icudt*/**</exclude>
+ <exclude>/com/ibm/icu/impl/duration/impl/data/*.xml</exclude>
+ <exclude>/com/ibm/icu/impl/duration/impl/data/*.xml.escaped</exclude>
+ <exclude>/com/ibm/icu/impl/duration/impl/data/*.txt</exclude>
+ <exclude>/com/ibm/icu/ICUConfig.properties</exclude>
+ <exclude>/**/package.html</exclude>
+ </excludes>
+ </configuration>
</plugin>
</plugins>
</build>
@@ -627,6 +643,43 @@
</build>
</profile>
+ <profile>
+ <!-- mvn test -ntp -DskipTests -DskipITs -P errorprone -->
+ <id>errorprone</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>${maven.compiler.source}</source>
+ <target>${maven.compiler.target}</target>
+ <encoding>UTF-8</encoding>
+ <!-- Use <compilerArg> to pass flags to errorprone. See https://errorprone.info/docs/flags -->
+ <showWarnings>true</showWarnings>
+ <compilerArgs>
+ <arg>-XDcompilePolicy=simple</arg>
+ <!--
+ -XepAllErrorsAsWarnings:
+ If we let errors be errors they fail and stop the build, so we don't get a full report.
+ So we force them all to be reported as warning.
+ The drawback is that there are not errors now, they get mixed with the real warnings.
+ -->
+ <arg>-Xplugin:ErrorProne -XepAllErrorsAsWarnings</arg>
+ </compilerArgs>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>com.google.errorprone</groupId>
+ <artifactId>error_prone_core</artifactId>
+ <version>2.25.0</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
</profiles>
</project>
diff --git a/icu4j/releases_tools/shared.sh b/icu4j/releases_tools/shared.sh
index 37bdf5d04..f3e655766 100755
--- a/icu4j/releases_tools/shared.sh
+++ b/icu4j/releases_tools/shared.sh
@@ -5,10 +5,10 @@
export MAVEN_ARGS='--no-transfer-progress'
# Version update!
-export artifact_version='74.2'
-export github_rel_version='74.2'
-export api_report_version='74'
-export api_report_prev_version='73'
+export artifact_version='75.1'
+export github_rel_version='75_1'
+export api_report_version='75'
+export api_report_prev_version='74'
export out_dir=target
function checkThatJdk8IsDefault() {
diff --git a/icu4j/samples/pom.xml b/icu4j/samples/pom.xml
index 7ddfe6828..c8761a27c 100644
--- a/icu4j/samples/pom.xml
+++ b/icu4j/samples/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
</parent>
<artifactId>samples</artifactId>
diff --git a/icu4j/tools/build/icu4j65.api3.gz b/icu4j/tools/build/icu4j65.api3.gz
deleted file mode 100644
index c05a8cd2d..000000000
--- a/icu4j/tools/build/icu4j65.api3.gz
+++ /dev/null
Binary files differ
diff --git a/icu4j/tools/build/icu4j75.api3.gz b/icu4j/tools/build/icu4j75.api3.gz
new file mode 100644
index 000000000..e81b50956
--- /dev/null
+++ b/icu4j/tools/build/icu4j75.api3.gz
Binary files differ
diff --git a/icu4j/tools/build/pom.xml b/icu4j/tools/build/pom.xml
index 78d95fd71..63f651808 100644
--- a/icu4j/tools/build/pom.xml
+++ b/icu4j/tools/build/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/tools/build/src/main/java/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java b/icu4j/tools/build/src/main/java/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java
index 3a15a4089..206a8321b 100644
--- a/icu4j/tools/build/src/main/java/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java
+++ b/icu4j/tools/build/src/main/java/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java
@@ -64,6 +64,18 @@ public class APIStatusConsistencyChecker {
{"clone", "java.lang.Object()"},
};
+ // Exceptions - API status of these methods are different from the parent
+ // by intent.
+ //
+ // TODO: We should revisit this and see if we want to continue
+ // to handle these as exceptions, or update our policy.
+ static final String[][] CONSISTENCY_EXCEPTIONS = {
+ //{"<class>", "<method>"},
+ {"com.ibm.icu.text.Normalizer", "clone"},
+ {"com.ibm.icu.text.PersonNameFormatter", "toString"},
+ {"com.ibm.icu.text.SimplePersonName", "toString"},
+ };
+
public void checkConsistency() {
Map<String, APIInfo> classMap = new TreeMap<>();
// Build a map of APIInfo for classes, indexed by class name
@@ -116,8 +128,19 @@ public class APIStatusConsistencyChecker {
String classVer = clsApi.getStatusVersion();
if (methodStatus != classStatus || !Objects.equals(methodVer, classVer)) {
- pw.println("## Error ## " + methodName + " in " + fullClassName);
- errCount++;
+ boolean isExcepted = false;
+ for (String[] exceptMethod : CONSISTENCY_EXCEPTIONS) {
+ if (exceptMethod[0].equals(fullClassName) && exceptMethod[1].equals(methodName)) {
+ isExcepted = true;
+ break;
+ }
+ }
+ if (isExcepted) {
+ pw.println("## Info ## " + methodName + " in " + fullClassName + " (included in the exception list)");
+ } else {
+ pw.println("## Error ## " + methodName + " in " + fullClassName);
+ errCount++;
+ }
}
}
}
diff --git a/icu4j/tools/misc/pom.xml b/icu4j/tools/misc/pom.xml
index 9e74a326c..d162ef5a9 100644
--- a/icu4j/tools/misc/pom.xml
+++ b/icu4j/tools/misc/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
index 745d0e3c7..8b25f04a9 100644
--- a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
+++ b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
@@ -206,7 +206,7 @@ public class BIG5Tool {
ChEl c = (ChEl)encounteredChars[i];
cumulativeChars += c.occurences;
cumulativePercent = cumulativeChars*100/totalMbcsChars;
- charList.add(new Integer(c.charCode));
+ charList.add(c.charCode);
}
Object [] sortedChars = charList.toArray();
Arrays.sort(sortedChars);
diff --git a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
index 367aa19e1..29420878b 100644
--- a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
+++ b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
@@ -206,7 +206,7 @@ public class EUCTool {
ChEl c = (ChEl)encounteredChars[i];
cumulativeChars += c.occurences;
cumulativePercent = cumulativeChars*100/totalMbcsChars;
- charList.add(new Integer(c.charCode));
+ charList.add(c.charCode);
}
Object [] sortedChars = charList.toArray();
Arrays.sort(sortedChars);
diff --git a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
index a26b80f7f..19c750d2d 100644
--- a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
+++ b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
@@ -140,7 +140,7 @@ public class InputFile implements NGramList.NGramKeyMapper
value += (bytes[b] & 0xFF);
}
- return new Integer(value);
+ return value;
}
public byte[] encode(char[] chars)
diff --git a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
index 6d51dd32c..5d8699c64 100644
--- a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
+++ b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
@@ -289,7 +289,7 @@ public class StatisticsTool implements NGramParser.NGramParserClient, NGramList.
writeStatistics(statKeys, false);
if (inputFile.getVisualOrder()) {
- ArrayList reversed = new ArrayList(statKeys.size());
+ ArrayList<Integer> reversed = new ArrayList(statKeys.size());
for (Iterator it = statKeys.iterator(); it.hasNext();) {
Integer key = (Integer) it.next();
@@ -301,7 +301,7 @@ public class StatisticsTool implements NGramParser.NGramParserClient, NGramList.
k >>= 8;
}
- reversed.add(new Integer(r));
+ reversed.add(r);
}
Collections.sort(reversed);
diff --git a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
index ff11e6c8f..96d4631c2 100644
--- a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
+++ b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
@@ -65,7 +65,7 @@ public class ScriptRunModuleWriter extends ScriptModuleWriter
}
for (int record = 0; record < recordCount; record += 1) {
- scriptRangeOffsets[scriptData.getRecord(record).scriptCode() - minScript].addElement(new Integer(record));
+ scriptRangeOffsets[scriptData.getRecord(record).scriptCode() - minScript].addElement(record);
}
output.println();
diff --git a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
index 14130c203..41f925382 100644
--- a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
+++ b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
@@ -83,6 +83,6 @@ public class CalculateCRC32 {
}
public byte [] toBytes() {
- return new BigInteger(new Integer(cachedCRC).toString()).toByteArray();
+ return new BigInteger(Integer.valueOf(cachedCRC).toString()).toByteArray();
}
}
diff --git a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/timezone/ICUZDump.java b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/timezone/ICUZDump.java
index 3c8d6af0d..f2a80e5ab 100644
--- a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/timezone/ICUZDump.java
+++ b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/timezone/ICUZDump.java
@@ -145,7 +145,7 @@ public class ICUZDump {
public int getOffset(long time) {
try {
Method method = tzobj.getClass().getMethod("getOffset", new Class[] {long.class});
- Object result = method.invoke(tzobj, new Object[] {new Long(time)});
+ Object result = method.invoke(tzobj, new Object[] {time});
return ((Integer)result).intValue();
} catch (Exception e) {
e.printStackTrace();
diff --git a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
index 99156f50a..a1a270199 100644
--- a/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
+++ b/icu4j/tools/misc/src/main/java/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
@@ -167,7 +167,7 @@ class UnicodeSetCloseOver {
// and a string of length 3.
v.clear();
for (int j=0; j<a.length; ++j) {
- v.add(new Integer(a[j].length()));
+ v.add(a[j].length());
}
Collections.sort(v);
buf.setLength(0);
diff --git a/icu4j/tools/utilities-for-cldr/pom.xml b/icu4j/tools/utilities-for-cldr/pom.xml
index 3d05a804a..f06cd8e55 100644
--- a/icu4j/tools/utilities-for-cldr/pom.xml
+++ b/icu4j/tools/utilities-for-cldr/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j-root</artifactId>
- <version>74.2</version>
+ <version>75.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/libandroidicu/include/unicode/platform.h b/libandroidicu/include/unicode/platform.h
index a99784366..7aca76c67 100644
--- a/libandroidicu/include/unicode/platform.h
+++ b/libandroidicu/include/unicode/platform.h
@@ -207,6 +207,17 @@
#endif
/**
+ * \def U_REAL_MSVC
+ * Defined if the compiler is the real MSVC compiler (and not something like
+ * Clang setting _MSC_VER in order to compile Windows code that requires it).
+ * Otherwise undefined.
+ * @internal
+ */
+#if (defined(_MSC_VER) && !(defined(__clang__) && __clang__)) || defined(U_IN_DOXYGEN)
+# define U_REAL_MSVC
+#endif
+
+/**
* \def CYGWINMSVC
* Defined if this is Windows with Cygwin, but using MSVC rather than gcc.
* Otherwise undefined.
@@ -302,51 +313,6 @@
# define U_PLATFORM_IS_DARWIN_BASED 0
#endif
-/**
- * \def U_HAVE_STDINT_H
- * Defines whether stdint.h is available. It is a C99 standard header.
- * We used to include inttypes.h which includes stdint.h but we usually do not need
- * the additional definitions from inttypes.h.
- * @internal
- */
-#ifdef U_HAVE_STDINT_H
- /* Use the predefined value. */
-#elif U_PLATFORM_USES_ONLY_WIN32_API
-# if defined(__BORLANDC__) || U_PLATFORM == U_PF_MINGW || (defined(_MSC_VER) && _MSC_VER>=1600)
- /* Windows Visual Studio 9 and below do not have stdint.h & inttypes.h, but VS 2010 adds them. */
-# define U_HAVE_STDINT_H 1
-# else
-# define U_HAVE_STDINT_H 0
-# endif
-#elif U_PLATFORM == U_PF_SOLARIS
- /* Solaris has inttypes.h but not stdint.h. */
-# define U_HAVE_STDINT_H 0
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
- /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-# define U_HAVE_STDINT_H 0
-#else
-# define U_HAVE_STDINT_H 1
-#endif
-
-/**
- * \def U_HAVE_INTTYPES_H
- * Defines whether inttypes.h is available. It is a C99 standard header.
- * We include inttypes.h where it is available but stdint.h is not.
- * @internal
- */
-#ifdef U_HAVE_INTTYPES_H
- /* Use the predefined value. */
-#elif U_PLATFORM == U_PF_SOLARIS
- /* Solaris has inttypes.h but not stdint.h. */
-# define U_HAVE_INTTYPES_H 1
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
- /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-# define U_HAVE_INTTYPES_H 1
-#else
- /* Most platforms have both inttypes.h and stdint.h, or neither. */
-# define U_HAVE_INTTYPES_H U_HAVE_STDINT_H
-#endif
-
/*===========================================================================*/
/** @{ Compiler and environment features */
/*===========================================================================*/
@@ -507,6 +473,8 @@
/* Otherwise use the predefined value. */
#elif !defined(__cplusplus)
# define U_CPLUSPLUS_VERSION 0
+#elif __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
+# define U_CPLUSPLUS_VERSION 17
#elif __cplusplus >= 201402L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
# define U_CPLUSPLUS_VERSION 14
#elif __cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)
@@ -754,9 +722,9 @@
/*
* Notes:
* C++11 and C11 require support for UTF-16 literals
- * TODO: Fix for plain C. Doesn't work on Mac.
+ * Doesn't work on Mac C11 (see workaround in ptypes.h).
*/
-# if U_CPLUSPLUS_VERSION >= 11 || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
+# if defined(__cplusplus) || !U_PLATFORM_IS_DARWIN_BASED
# define U_HAVE_CHAR16_T 1
# else
# define U_HAVE_CHAR16_T 0
diff --git a/libandroidicu/include/unicode/ptypes.h b/libandroidicu/include/unicode/ptypes.h
index 70324ffee..270a729cc 100644
--- a/libandroidicu/include/unicode/ptypes.h
+++ b/libandroidicu/include/unicode/ptypes.h
@@ -42,89 +42,25 @@
/* NULL, size_t, wchar_t */
#include <stddef.h>
-/*
- * If all compilers provided all of the C99 headers and types,
- * we would just unconditionally #include <stdint.h> here
- * and not need any of the stuff after including platform.h.
- */
-
-/* Find out if we have stdint.h etc. */
+/* More platform-specific definitions. */
#include "unicode/platform.h"
/*===========================================================================*/
/* Generic data types */
/*===========================================================================*/
-/* If your platform does not have the <stdint.h> header, you may
- need to edit the typedefs in the #else section below.
- Use #if...#else...#endif with predefined compiler macros if possible. */
-#if U_HAVE_STDINT_H
-
-/*
- * We mostly need <stdint.h> (which defines the standard integer types) but not <inttypes.h>.
- * <inttypes.h> includes <stdint.h> and adds the printf/scanf helpers PRId32, SCNx16 etc.
- * which we almost never use, plus stuff like imaxabs() which we never use.
- */
#include <stdint.h>
-#if U_PLATFORM == U_PF_OS390
-/* The features header is needed to get (u)int64_t sometimes. */
-#include <features.h>
-/* z/OS has <stdint.h>, but some versions are missing uint8_t (APAR PK62248). */
-#if !defined(__uint8_t)
-#define __uint8_t 1
-typedef unsigned char uint8_t;
-#endif
-#endif /* U_PLATFORM == U_PF_OS390 */
-
-#elif U_HAVE_INTTYPES_H
-
-# include <inttypes.h>
-
-#else /* neither U_HAVE_STDINT_H nor U_HAVE_INTTYPES_H */
-
-/// \cond
-#if ! U_HAVE_INT8_T
-typedef signed char int8_t;
-#endif
-
-#if ! U_HAVE_UINT8_T
-typedef unsigned char uint8_t;
-#endif
-
-#if ! U_HAVE_INT16_T
-typedef signed short int16_t;
-#endif
-
-#if ! U_HAVE_UINT16_T
-typedef unsigned short uint16_t;
-#endif
-
-#if ! U_HAVE_INT32_T
-typedef signed int int32_t;
-#endif
-
-#if ! U_HAVE_UINT32_T
-typedef unsigned int uint32_t;
+// C++11 and C11 both specify that the data type char16_t should exist, C++11
+// as a keyword and C11 as a typedef in the uchar.h header file, but not all
+// implementations (looking at you, Apple, spring 2024) actually do this, so
+// ICU4C must detect and deal with that.
+#if !defined(__cplusplus) && !defined(U_IN_DOXYGEN)
+# if U_HAVE_CHAR16_T
+# include <uchar.h>
+# else
+ typedef uint16_t char16_t;
+# endif
#endif
-#if ! U_HAVE_INT64_T
-#ifdef _MSC_VER
- typedef signed __int64 int64_t;
-#else
- typedef signed long long int64_t;
-#endif
-#endif
-
-#if ! U_HAVE_UINT64_T
-#ifdef _MSC_VER
- typedef unsigned __int64 uint64_t;
-#else
- typedef unsigned long long uint64_t;
-#endif
-#endif
-/// \endcond
-
-#endif /* U_HAVE_STDINT_H / U_HAVE_INTTYPES_H */
-
#endif /* _PTYPES_H */
diff --git a/libandroidicu/include/unicode/ucal.h b/libandroidicu/include/unicode/ucal.h
index f351b6c9d..0eb4b21d3 100644
--- a/libandroidicu/include/unicode/ucal.h
+++ b/libandroidicu/include/unicode/ucal.h
@@ -442,7 +442,6 @@ enum UCalendarDateFields {
*/
UCAL_IS_LEAP_MONTH,
-#ifndef U_HIDE_DRAFT_API
/**
* Field number indicating the month. This is a calendar-specific value.
* Differ from UCAL_MONTH, this value is continuous and unique within a
@@ -464,10 +463,9 @@ enum UCalendarDateFields {
* and there is an extra "Leap Month 5" which associated with UCAL_ORDINAL_MONTH
* value 5 before "Month 6" of year 4664.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UCAL_ORDINAL_MONTH,
-#endif // U_HIDE_DRAFT_API
/* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
* it is needed for layout of Calendar, DateFormat, and other objects */
@@ -476,12 +474,7 @@ enum UCalendarDateFields {
* One more than the highest normal UCalendarDateFields value.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
-#ifdef U_HIDE_DRAFT_API
- // Must include all fields that will be in structs
- UCAL_FIELD_COUNT = UCAL_IS_LEAP_MONTH + 2,
-#else // U_HIDE_DRAFT_API (for UCAL_ORDINAL_MONTH)
UCAL_FIELD_COUNT = UCAL_ORDINAL_MONTH + 1,
-#endif // U_HIDE_DRAFT_API (for UCAL_ORDINAL_MONTH)
#endif // U_FORCE_HIDE_DEPRECATED_API
diff --git a/libandroidicu/include/unicode/uchar.h b/libandroidicu/include/unicode/uchar.h
index 747089133..4572230d9 100644
--- a/libandroidicu/include/unicode/uchar.h
+++ b/libandroidicu/include/unicode/uchar.h
@@ -25,6 +25,7 @@
#ifndef UCHAR_H
#define UCHAR_H
+#include <stdbool.h>
#include "unicode/utypes.h"
#include "unicode/stringoptions.h"
#include "unicode/ucpmap.h"
@@ -668,12 +669,21 @@ typedef enum UProperty {
* @stable ICU 63
*/
UCHAR_VERTICAL_ORIENTATION=0x1018,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Enumerated property Identifier_Status.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ * @draft ICU 75
+ */
+ UCHAR_IDENTIFIER_STATUS=0x1019,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for enumerated/integer Unicode properties.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_INT_LIMIT=0x1019,
+ UCHAR_INT_LIMIT=0x101A,
#endif // U_HIDE_DEPRECATED_API
/** Bitmask property General_Category_Mask.
@@ -774,12 +784,28 @@ typedef enum UProperty {
UCHAR_SCRIPT_EXTENSIONS=0x7000,
/** First constant for Unicode properties with unusual value types. @stable ICU 4.6 */
UCHAR_OTHER_PROPERTY_START=UCHAR_SCRIPT_EXTENSIONS,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Miscellaneous property Identifier_Type.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Corresponds to u_hasIDType() and u_getIDTypes().
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @see u_hasIDType
+ * @see u_getIDTypes
+ * @draft ICU 75
+ */
+ UCHAR_IDENTIFIER_TYPE=0x7001,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for Unicode properties with unusual value types.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_OTHER_PROPERTY_LIMIT=0x7001,
+ UCHAR_OTHER_PROPERTY_LIMIT=0x7002,
#endif // U_HIDE_DEPRECATED_API
/** Represents a nonexistent or invalid property or property value. @stable ICU 2.4 */
@@ -2701,6 +2727,68 @@ typedef enum UVerticalOrientation {
U_VO_UPRIGHT,
} UVerticalOrientation;
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Identifier Status constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UCHAR_IDENTIFIER_STATUS
+ * @draft ICU 75
+ */
+typedef enum UIdentifierStatus {
+ /*
+ * Note: UIdentifierStatus constants are parsed by preparseucd.py.
+ * It matches lines like
+ * U_ID_STATUS_<Unicode Identifier_Status value name>
+ */
+
+ /** @draft ICU 75 */
+ U_ID_STATUS_RESTRICTED,
+ /** @draft ICU 75 */
+ U_ID_STATUS_ALLOWED,
+} UIdentifierStatus;
+
+/**
+ * Identifier Type constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UCHAR_IDENTIFIER_TYPE
+ * @draft ICU 75
+ */
+typedef enum UIdentifierType {
+ /*
+ * Note: UIdentifierType constants are parsed by preparseucd.py.
+ * It matches lines like
+ * U_ID_TYPE_<Unicode Identifier_Type value name>
+ */
+
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_CHARACTER,
+ /** @draft ICU 75 */
+ U_ID_TYPE_DEPRECATED,
+ /** @draft ICU 75 */
+ U_ID_TYPE_DEFAULT_IGNORABLE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_NFKC,
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_XID,
+ /** @draft ICU 75 */
+ U_ID_TYPE_EXCLUSION,
+ /** @draft ICU 75 */
+ U_ID_TYPE_OBSOLETE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_TECHNICAL,
+ /** @draft ICU 75 */
+ U_ID_TYPE_UNCOMMON_USE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_LIMITED_USE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_INCLUSION,
+ /** @draft ICU 75 */
+ U_ID_TYPE_RECOMMENDED,
+} UIdentifierType;
+#endif // U_HIDE_DRAFT_API
+
/**
* Check a binary Unicode property for a code point.
*
@@ -3905,6 +3993,59 @@ u_isIDStart(UChar32 c);
U_CAPI UBool U_EXPORT2
u_isIDPart(UChar32 c);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Does the set of Identifier_Type values code point c contain the given type?
+ *
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @param c code point
+ * @param type Identifier_Type to check
+ * @return true if type is in Identifier_Type(c)
+ * @draft ICU 75
+ */
+U_CAPI bool U_EXPORT2
+u_hasIDType(UChar32 c, UIdentifierType type);
+
+/**
+ * Writes code point c's Identifier_Type as a list of UIdentifierType values
+ * to the output types array and returns the number of types.
+ *
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ * There is always at least one type.
+ * The order of output values is undefined.
+ * Each type is output at most once;
+ * there cannot be more output values than UIdentifierType constants.
+ * In addition, only some of the types can be combined with others,
+ * and usually only a small number of types occur together.
+ * Future versions might add additional types.
+ * See UTS #39 and its data files for details.
+ *
+ * If there are more than capacity types to be written, then
+ * U_BUFFER_OVERFLOW_ERROR is set and the number of types is returned.
+ * (Usual ICU buffer handling behavior.)
+ *
+ * @param c code point
+ * @param types output array
+ * @param capacity capacity of the array
+ * @param pErrorCode Standard ICU error code. Its input value must
+ * pass the U_SUCCESS() test, or else the function returns
+ * immediately. Check for U_FAILURE() on output or use with
+ * function chaining. (See User Guide for details.)
+ * @return number of values in c's Identifier_Type,
+ * written to types unless U_BUFFER_OVERFLOW_ERROR indicates insufficient capacity
+ * @draft ICU 75
+ */
+U_CAPI int32_t U_EXPORT2
+u_getIDTypes(UChar32 c, UIdentifierType *types, int32_t capacity, UErrorCode *pErrorCode);
+#endif // U_HIDE_DRAFT_API
+
/**
* Determines if the specified character should be regarded
* as an ignorable character in an identifier,
diff --git a/libandroidicu/include/unicode/ucnv.h b/libandroidicu/include/unicode/ucnv.h
index 20c173b66..4a7972c95 100644
--- a/libandroidicu/include/unicode/ucnv.h
+++ b/libandroidicu/include/unicode/ucnv.h
@@ -344,8 +344,6 @@ ucnv_compareNames(const char *name1, const char *name2);
* other than its an alias starting with the letters "cp". Please do not
* associate any meaning to these aliases.</p>
*
- * \snippet samples/ucnv/convsamp.cpp ucnv_open
- *
* @param converterName Name of the coded character set table.
* This may have options appended to the string.
* IANA alias character set names, IBM CCSIDs starting with "ibm-",
@@ -1986,7 +1984,6 @@ ucnv_usesFallback(const UConverter *cnv);
* instead of the input signature bytes.
* <p>
* Usage:
- * \snippet samples/ucnv/convsamp.cpp ucnv_detectUnicodeSignature
*
* @param source The source string in which the signature should be detected.
* @param sourceLength Length of the input string, or -1 if terminated with a NUL byte.
diff --git a/libandroidicu/include/unicode/uconfig.h b/libandroidicu/include/unicode/uconfig.h
index 29d8b33b7..8017f3079 100644
--- a/libandroidicu/include/unicode/uconfig.h
+++ b/libandroidicu/include/unicode/uconfig.h
@@ -427,6 +427,18 @@
#endif
/**
+ * \def UCONFIG_NO_MF2
+ * This switch turns off the experimental MessageFormat 2.0 API.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+#ifndef UCONFIG_NO_MF2
+// Android patch: Disable experimental MF2 on Android.
+# define UCONFIG_NO_MF2 1
+#endif
+
+/**
* \def UCONFIG_NO_TRANSLITERATION
* This switch turns off transliteration.
*
diff --git a/libandroidicu/include/unicode/uloc.h b/libandroidicu/include/unicode/uloc.h
index 21179c1b6..9cd7f5e1b 100644
--- a/libandroidicu/include/unicode/uloc.h
+++ b/libandroidicu/include/unicode/uloc.h
@@ -399,6 +399,9 @@ uloc_setDefault(const char* localeID,
/**
* Gets the language code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the ISO language code with
* @param language the language code for localeID
* @param languageCapacity the size of the language buffer to store the
@@ -417,6 +420,9 @@ uloc_getLanguage(const char* localeID,
/**
* Gets the script code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the ISO language code with
* @param script the language code for localeID
* @param scriptCapacity the size of the language buffer to store the
@@ -435,6 +441,9 @@ uloc_getScript(const char* localeID,
/**
* Gets the country code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the country code with
* @param country the country code for localeID
* @param countryCapacity the size of the country buffer to store the
@@ -453,6 +462,9 @@ uloc_getCountry(const char* localeID,
/**
* Gets the variant code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the variant code with
* @param variant the variant code for localeID
* @param variantCapacity the size of the variant buffer to store the
@@ -471,6 +483,10 @@ uloc_getVariant(const char* localeID,
/**
* Gets the full name for the specified locale.
+ *
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* Note: This has the effect of 'canonicalizing' the ICU locale ID to
* a certain extent. Upper and lower case are set as needed.
* It does NOT map aliased names in any way.
@@ -1158,19 +1174,20 @@ uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity,
*
* If localeID is already in the maximal form, or there is no data available
* for maximization, it will be copied to the output buffer. For example,
- * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+ * "sh" cannot be maximized, since there is no reasonable maximization.
*
* Examples:
*
+ * "und_Zzzz" maximizes to "en_Latn_US"
+ *
* "en" maximizes to "en_Latn_US"
*
- * "de" maximizes to "de_Latn_US"
+ * "de" maximizes to "de_Latn_DE"
*
* "sr" maximizes to "sr_Cyrl_RS"
*
- * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
+ * "zh_Hani" maximizes to "zh_Hani_CN"
*
- * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
*
* @param localeID The locale to maximize
* @param maximizedLocaleID The maximized locale
diff --git a/libandroidicu/include/unicode/umachine.h b/libandroidicu/include/unicode/umachine.h
index 545abef59..c501b253b 100644
--- a/libandroidicu/include/unicode/umachine.h
+++ b/libandroidicu/include/unicode/umachine.h
@@ -370,22 +370,14 @@ typedef int8_t UBool;
#if 1
// #if 1 is normal. UChar defaults to char16_t in C++.
// For configuration testing of UChar=uint16_t temporarily change this to #if 0.
- // The intltest Makefile #defines UCHAR_TYPE=char16_t,
- // so we only #define it to uint16_t if it is undefined so far.
-#elif !defined(UCHAR_TYPE)
+#else
# define UCHAR_TYPE uint16_t
#endif
-#if defined(U_COMBINED_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION) || \
- defined(U_I18N_IMPLEMENTATION) || defined(U_IO_IMPLEMENTATION)
- // Inside the ICU library code, never configurable.
+#if defined(U_ALL_IMPLEMENTATION) || !defined(UCHAR_TYPE)
typedef char16_t UChar;
-#elif defined(UCHAR_TYPE)
- typedef UCHAR_TYPE UChar;
-#elif U_CPLUSPLUS_VERSION != 0
- typedef char16_t UChar; // C++
#else
- typedef uint16_t UChar; // C
+ typedef UCHAR_TYPE UChar;
#endif
/**
diff --git a/libandroidicu/include/unicode/urename.h b/libandroidicu/include/unicode/urename.h
index 74f2cae51..c94592ec0 100644
--- a/libandroidicu/include/unicode/urename.h
+++ b/libandroidicu/include/unicode/urename.h
@@ -272,6 +272,7 @@
#define u_getDataVersion U_ICU_ENTRY_POINT_RENAME(u_getDataVersion)
#define u_getDefaultConverter U_ICU_ENTRY_POINT_RENAME(u_getDefaultConverter)
#define u_getFC_NFKC_Closure U_ICU_ENTRY_POINT_RENAME(u_getFC_NFKC_Closure)
+#define u_getIDTypes U_ICU_ENTRY_POINT_RENAME(u_getIDTypes)
#define u_getISOComment U_ICU_ENTRY_POINT_RENAME(u_getISOComment)
#define u_getIntPropertyMap U_ICU_ENTRY_POINT_RENAME(u_getIntPropertyMap)
#define u_getIntPropertyMaxValue U_ICU_ENTRY_POINT_RENAME(u_getIntPropertyMaxValue)
@@ -289,6 +290,7 @@
#define u_getVersion U_ICU_ENTRY_POINT_RENAME(u_getVersion)
#define u_get_stdout U_ICU_ENTRY_POINT_RENAME(u_get_stdout)
#define u_hasBinaryProperty U_ICU_ENTRY_POINT_RENAME(u_hasBinaryProperty)
+#define u_hasIDType U_ICU_ENTRY_POINT_RENAME(u_hasIDType)
#define u_init U_ICU_ENTRY_POINT_RENAME(u_init)
#define u_isIDIgnorable U_ICU_ENTRY_POINT_RENAME(u_isIDIgnorable)
#define u_isIDPart U_ICU_ENTRY_POINT_RENAME(u_isIDPart)
@@ -1192,16 +1194,20 @@
#define ulocimp_canonicalize U_ICU_ENTRY_POINT_RENAME(ulocimp_canonicalize)
#define ulocimp_forLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_forLanguageTag)
#define ulocimp_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocimp_getBaseName)
-#define ulocimp_getCountry U_ICU_ENTRY_POINT_RENAME(ulocimp_getCountry)
#define ulocimp_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywordValue)
#define ulocimp_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywords)
#define ulocimp_getKnownCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_getKnownCanonicalizedLocaleForTest)
#define ulocimp_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocimp_getLanguage)
#define ulocimp_getName U_ICU_ENTRY_POINT_RENAME(ulocimp_getName)
+#define ulocimp_getParent U_ICU_ENTRY_POINT_RENAME(ulocimp_getParent)
+#define ulocimp_getRegion U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegion)
#define ulocimp_getRegionForSupplementalData U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegionForSupplementalData)
#define ulocimp_getScript U_ICU_ENTRY_POINT_RENAME(ulocimp_getScript)
+#define ulocimp_getSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_getSubtags)
+#define ulocimp_getVariant U_ICU_ENTRY_POINT_RENAME(ulocimp_getVariant)
#define ulocimp_isCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_isCanonicalizedLocaleForTest)
#define ulocimp_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_minimizeSubtags)
+#define ulocimp_setKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_setKeywordValue)
#define ulocimp_toBcpKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpKey)
#define ulocimp_toBcpType U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpType)
#define ulocimp_toLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_toLanguageTag)
@@ -1800,6 +1806,7 @@
#define usnum_multiplyByPowerOfTen U_ICU_ENTRY_POINT_RENAME(usnum_multiplyByPowerOfTen)
#define usnum_openForInt64 U_ICU_ENTRY_POINT_RENAME(usnum_openForInt64)
#define usnum_roundTo U_ICU_ENTRY_POINT_RENAME(usnum_roundTo)
+#define usnum_setMaximumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMaximumIntegerDigits)
#define usnum_setMinimumFractionDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumFractionDigits)
#define usnum_setMinimumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumIntegerDigits)
#define usnum_setSign U_ICU_ENTRY_POINT_RENAME(usnum_setSign)
diff --git a/libandroidicu/include/unicode/uscript.h b/libandroidicu/include/unicode/uscript.h
index dc97ab2ba..2c9cee1bf 100644
--- a/libandroidicu/include/unicode/uscript.h
+++ b/libandroidicu/include/unicode/uscript.h
@@ -500,6 +500,9 @@ typedef enum UScriptCode {
/** @stable ICU 72 */
USCRIPT_NAG_MUNDARI = 199,/* Nagm */
+ /** @stable ICU 75 */
+ USCRIPT_ARABIC_NASTALIQ = 200, /* Aran */
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UScriptCode value.
@@ -507,7 +510,7 @@ typedef enum UScriptCode {
*
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- USCRIPT_CODE_LIMIT = 200
+ USCRIPT_CODE_LIMIT = 201
#endif // U_HIDE_DEPRECATED_API
} UScriptCode;
diff --git a/libandroidicu/include/unicode/uset.h b/libandroidicu/include/unicode/uset.h
index ee4e0036d..cce95ce92 100644
--- a/libandroidicu/include/unicode/uset.h
+++ b/libandroidicu/include/unicode/uset.h
@@ -109,7 +109,6 @@ enum {
*/
USET_ADD_CASE_MAPPINGS = 4,
-#ifndef U_HIDE_DRAFT_API
/**
* Enable case insensitive matching.
* Same as USET_CASE_INSENSITIVE but using only Simple_Case_Folding (scf) mappings,
@@ -120,10 +119,9 @@ enum {
* regular expression implementations where only Simple_Case_Folding mappings are used,
* such as in ECMAScript (JavaScript) regular expressions.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
USET_SIMPLE_CASE_INSENSITIVE = 6
-#endif // U_HIDE_DRAFT_API
};
/**
diff --git a/libandroidicu/include/unicode/usimplenumberformatter.h b/libandroidicu/include/unicode/usimplenumberformatter.h
new file mode 100644
index 000000000..b67d7e56d
--- /dev/null
+++ b/libandroidicu/include/unicode/usimplenumberformatter.h
@@ -0,0 +1,309 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __USIMPLENUMBERFORMATTER_H__
+#define __USIMPLENUMBERFORMATTER_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/uformattednumber.h"
+#include "unicode/unumberoptions.h"
+
+/**
+ * \file
+ * \brief C API: Simple number formatting focused on low memory and code size.
+ *
+ * These functions render locale-aware number strings but without the bells and whistles found in
+ * other number formatting APIs such as those in unumberformatter.h, like units and currencies.
+ *
+ * Example using C++ helpers:
+ *
+ * <pre>
+ * LocalUSimpleNumberFormatterPointer uformatter(usnumf_openForLocale("de-CH", status));
+ * LocalUFormattedNumberPointer uresult(unumf_openResult(status));
+ * usnumf_formatInt64(uformatter.getAlias(), 55, uresult.getAlias(), status);
+ * assertEquals("",
+ * u"55",
+ * ufmtval_getString(unumf_resultAsValue(uresult.getAlias(), status), nullptr, status));
+ * </pre>
+ *
+ * Example using pure C:
+ *
+ * <pre>
+ * UErrorCode ec = U_ZERO_ERROR;
+ * USimpleNumberFormatter* uformatter = usnumf_openForLocale("bn", &ec);
+ * USimpleNumber* unumber = usnum_openForInt64(1000007, &ec);
+ * UFormattedNumber* uresult = unumf_openResult(&ec);
+ * usnumf_format(uformatter, unumber, uresult, &ec);
+ * int32_t len;
+ * const UChar* str = ufmtval_getString(unumf_resultAsValue(uresult, &ec), &len, &ec);
+ * if (assertSuccess("Formatting end-to-end", &ec)) {
+ * assertUEquals("Should produce a result in Bangla digits", u"১০,০০,০০৭", str);
+ * }
+
+ * // Cleanup:
+ * unumf_closeResult(uresult);
+ * usnum_close(unumber);
+ * usnumf_close(uformatter);
+ * </pre>
+ */
+
+/**
+ * An explicit sign option for a SimpleNumber.
+ *
+ * @stable ICU 73
+ */
+typedef enum USimpleNumberSign {
+ /**
+ * Render a plus sign.
+ *
+ * @stable ICU 73
+ */
+ UNUM_SIMPLE_NUMBER_PLUS_SIGN,
+ /**
+ * Render no sign.
+ *
+ * @stable ICU 73
+ */
+ UNUM_SIMPLE_NUMBER_NO_SIGN,
+ /**
+ * Render a minus sign.
+ *
+ * @stable ICU 73
+ */
+ UNUM_SIMPLE_NUMBER_MINUS_SIGN,
+} USimpleNumberSign;
+
+
+struct USimpleNumber;
+/**
+ * C-compatible version of icu::number::SimpleNumber.
+ *
+ * @stable ICU 73
+ */
+typedef struct USimpleNumber USimpleNumber;
+
+
+struct USimpleNumberFormatter;
+/**
+ * C-compatible version of icu::number::SimpleNumberFormatter.
+ *
+ * @stable ICU 73
+ */
+typedef struct USimpleNumberFormatter USimpleNumberFormatter;
+
+
+/**
+ * Creates a new USimpleNumber to be formatted with a USimpleNumberFormatter.
+ *
+ * @stable ICU 73
+ */
+U_CAPI USimpleNumber* U_EXPORT2
+usnum_openForInt64(int64_t value, UErrorCode* ec);
+
+
+/**
+ * Overwrites the value in a USimpleNumber to an int64_t.
+ *
+ * This can be used to reset the number value after formatting.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_setToInt64(USimpleNumber* unumber, int64_t value, UErrorCode* ec);
+
+
+/**
+ * Changes the value of the USimpleNumber by a power of 10.
+ *
+ * This function immediately mutates the inner value.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_multiplyByPowerOfTen(USimpleNumber* unumber, int32_t power, UErrorCode* ec);
+
+
+/**
+ * Rounds the value currently stored in the USimpleNumber to the given power of 10,
+ * which can be before or after the decimal separator.
+ *
+ * This function does not change minimum integer digits.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_roundTo(USimpleNumber* unumber, int32_t power, UNumberFormatRoundingMode roundingMode, UErrorCode* ec);
+
+
+/**
+ * Pads the beginning of the number with zeros up to the given minimum number of integer digits.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_setMinimumIntegerDigits(USimpleNumber* unumber, int32_t minimumIntegerDigits, UErrorCode* ec);
+
+
+/**
+ * Pads the end of the number with zeros up to the given minimum number of fraction digits.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_setMinimumFractionDigits(USimpleNumber* unumber, int32_t minimumFractionDigits, UErrorCode* ec);
+
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Sets the number of integer digits to the given amount, truncating if necessary.
+ *
+ * @draft ICU 75
+ */
+U_CAPI void U_EXPORT2
+usnum_setMaximumIntegerDigits(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec);
+#endif // U_HIDE_DRAFT_API
+
+
+#ifndef U_HIDE_DEPRECATED_API
+/**
+ * Alias for setMaximumIntegerDigits.
+ * Will be removed after ICU 75.
+ *
+ * @deprecated ICU 75
+ */
+U_CAPI void U_EXPORT2
+usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec);
+#endif // U_HIDE_DEPRECATED_API
+
+
+/**
+ * Sets the sign of the number: an explicit plus sign, explicit minus sign, or no sign.
+ *
+ * This setting is applied upon formatting the number.
+ *
+ * NOTE: This does not support accounting sign notation.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_setSign(USimpleNumber* unumber, USimpleNumberSign sign, UErrorCode* ec);
+
+
+/**
+ * Creates a new USimpleNumberFormatter with all locale defaults.
+ *
+ * @stable ICU 73
+ */
+U_CAPI USimpleNumberFormatter* U_EXPORT2
+usnumf_openForLocale(const char* locale, UErrorCode* ec);
+
+
+/**
+ * Creates a new USimpleNumberFormatter, overriding the grouping strategy.
+ *
+ * @stable ICU 73
+ */
+U_CAPI USimpleNumberFormatter* U_EXPORT2
+usnumf_openForLocaleAndGroupingStrategy(
+ const char* locale, UNumberGroupingStrategy groupingStrategy, UErrorCode* ec);
+
+
+/**
+ * Formats a number using this SimpleNumberFormatter.
+ *
+ * The USimpleNumber is cleared after calling this function. It can be re-used via
+ * usnum_setToInt64.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnumf_format(
+ const USimpleNumberFormatter* uformatter,
+ USimpleNumber* unumber,
+ UFormattedNumber* uresult,
+ UErrorCode* ec);
+
+
+/**
+ * Formats an integer using this SimpleNumberFormatter.
+ *
+ * For more control over the formatting, use USimpleNumber.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnumf_formatInt64(
+ const USimpleNumberFormatter* uformatter,
+ int64_t value,
+ UFormattedNumber* uresult,
+ UErrorCode* ec);
+
+
+/**
+ * Frees the memory held by a USimpleNumber.
+ *
+ * NOTE: Normally, a USimpleNumber should be adopted by usnumf_formatAndAdoptNumber.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_close(USimpleNumber* unumber);
+
+
+/**
+ * Frees the memory held by a USimpleNumberFormatter.
+ *
+ * @stable ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnumf_close(USimpleNumberFormatter* uformatter);
+
+
+#if U_SHOW_CPLUSPLUS_API
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalUSimpleNumberPointer
+ * "Smart pointer" class; closes a USimpleNumber via usnum_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * NOTE: Normally, a USimpleNumber should be adopted by usnumf_formatAndAdoptNumber.
+ * If you use LocalUSimpleNumberPointer, call `.orphan()` when passing to that function.
+ *
+ * Usage:
+ * <pre>
+ * LocalUSimpleNumberPointer uformatter(usnumf_openForInteger(...));
+ * // no need to explicitly call usnum_close()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @stable ICU 73
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberPointer, USimpleNumber, usnum_close);
+
+/**
+ * \class LocalUSimpleNumberFormatterPointer
+ * "Smart pointer" class; closes a USimpleNumberFormatter via usnumf_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * Usage:
+ * <pre>
+ * LocalUSimpleNumberFormatterPointer uformatter(usnumf_openForLocale(...));
+ * // no need to explicitly call usnumf_close()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @stable ICU 73
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberFormatterPointer, USimpleNumberFormatter, usnumf_close);
+
+U_NAMESPACE_END
+#endif // U_SHOW_CPLUSPLUS_API
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__USIMPLENUMBERFORMATTER_H__
diff --git a/libandroidicu/include/unicode/utypes.h b/libandroidicu/include/unicode/utypes.h
index f890d5d1d..6c7cc5134 100644
--- a/libandroidicu/include/unicode/utypes.h
+++ b/libandroidicu/include/unicode/utypes.h
@@ -438,6 +438,7 @@ typedef enum UErrorCode {
U_PLUGIN_CHANGED_LEVEL_WARNING = -120, /**< A plugin caused a level change. May not be an error, but later plugins may not load. */
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UErrorCode warning value.
@@ -568,12 +569,27 @@ typedef enum UErrorCode {
U_FORMAT_INEXACT_ERROR, /**< Cannot format a number exactly and rounding mode is ROUND_UNNECESSARY @stable ICU 4.8 */
U_NUMBER_ARG_OUTOFBOUNDS_ERROR, /**< The argument to a NumberFormatter helper method was out of bounds; the bounds are usually 0 to 999. @stable ICU 61 */
U_NUMBER_SKELETON_SYNTAX_ERROR, /**< The number skeleton passed to C++ NumberFormatter or C UNumberFormatter was invalid or contained a syntax error. @stable ICU 62 */
+
+ /* MessageFormat 2.0 errors */
+ U_MF_UNRESOLVED_VARIABLE_ERROR, /**< A variable is referred to but not bound by any definition @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_SYNTAX_ERROR, /**< Includes all syntax errors @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNKNOWN_FUNCTION_ERROR, /**< An annotation refers to a function not defined by the standard or custom function registry @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_VARIANT_KEY_MISMATCH_ERROR, /**< In a match-construct, one or more variants had a different number of keys from the number of selectors @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_FORMATTING_ERROR, /**< Covers all runtime errors: for example, an internally inconsistent set of options. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_NONEXHAUSTIVE_PATTERN_ERROR, /**< In a match-construct, the variants do not cover all possible values @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_DUPLICATE_OPTION_NAME_ERROR, /**< In an annotation, the same option name appears more than once @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_SELECTOR_ERROR, /**< A selector function is applied to an operand of the wrong type @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_MISSING_SELECTOR_ANNOTATION_ERROR, /**< A selector expression evaluates to an unannotated operand. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_DUPLICATE_DECLARATION_ERROR, /**< The same variable is declared in more than one .local or .input declaration. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_OPERAND_MISMATCH_ERROR, /**< An operand provided to a function does not have the required form for that function @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNSUPPORTED_STATEMENT_ERROR, /**< A message includes a reserved statement. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNSUPPORTED_EXPRESSION_ERROR, /**< A message includes syntax reserved for future standardization or private implementation use. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal formatting API error code.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- U_FMT_PARSE_ERROR_LIMIT = 0x10114,
+ U_FMT_PARSE_ERROR_LIMIT = 0x10121,
#endif // U_HIDE_DEPRECATED_API
/*
diff --git a/libandroidicu/include/unicode/uvernum.h b/libandroidicu/include/unicode/uvernum.h
index 1cdf8912f..eb7c50f38 100644
--- a/libandroidicu/include/unicode/uvernum.h
+++ b/libandroidicu/include/unicode/uvernum.h
@@ -53,13 +53,13 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION_MAJOR_NUM 74
+#define U_ICU_VERSION_MAJOR_NUM 75
/** The current ICU minor version as an integer.
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_MINOR_NUM 2
+#define U_ICU_VERSION_MINOR_NUM 1
/** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU
@@ -79,7 +79,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SUFFIX _74
+#define U_ICU_VERSION_SUFFIX _75
/**
* \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -132,7 +132,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION "74.2"
+#define U_ICU_VERSION "75.1"
/**
* The current ICU library major version number as a string, for library name suffixes.
@@ -145,13 +145,13 @@
*
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SHORT "74"
+#define U_ICU_VERSION_SHORT "75"
#ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C.
* @internal ICU 4.4 Internal Use Only
**/
-#define U_ICU_DATA_VERSION "74.2"
+#define U_ICU_DATA_VERSION "75.1"
#endif /* U_HIDE_INTERNAL_API */
/*===========================================================================
diff --git a/libandroidicu/static_shim/shim.cpp b/libandroidicu/static_shim/shim.cpp
index 12200eb4a..ecfbcbff2 100644
--- a/libandroidicu/static_shim/shim.cpp
+++ b/libandroidicu/static_shim/shim.cpp
@@ -56,6 +56,7 @@
#include <unicode/usearch.h>
#include <unicode/uset.h>
#include <unicode/ushape.h>
+#include <unicode/usimplenumberformatter.h>
#include <unicode/uspoof.h>
#include <unicode/usprep.h>
#include <unicode/ustring.h>
diff --git a/libicu/cts_headers/astro.h b/libicu/cts_headers/astro.h
index 372a79ac6..ef297c4b3 100644
--- a/libicu/cts_headers/astro.h
+++ b/libicu/cts_headers/astro.h
@@ -31,7 +31,7 @@ U_NAMESPACE_BEGIN
* at a given moment in time. Accordingly, each <code>CalendarAstronomer</code>
* object has a <code>time</code> property that determines the date
* and time for which its calculations are performed. You can set and
- * retrieve this property with {@link #setDate setDate}, {@link #getDate getDate}
+ * retrieve this property with {@link #setTime setTime}, {@link #getTime getTime}
* and related methods.
* <p>
* Almost all of the calculations performed by this class, or by any
@@ -72,7 +72,6 @@ public:
* value without worrying about whether other code will modify them.
*
* @see CalendarAstronomer.Equatorial
- * @see CalendarAstronomer.Horizon
* @internal
*/
class U_I18N_API Ecliptic : public UMemory {
@@ -141,7 +140,6 @@ public:
* value without worrying about whether other code will modify them.
*
* @see CalendarAstronomer.Ecliptic
- * @see CalendarAstronomer.Horizon
* @internal
*/
class U_I18N_API Equatorial : public UMemory {
@@ -201,66 +199,6 @@ public:
double declination;
};
- /**
- * Represents the position of an object in the sky relative to
- * the local horizon.
- * The <i>Altitude</i> represents the object's elevation above the horizon,
- * with objects below the horizon having a negative altitude.
- * The <i>Azimuth</i> is the geographic direction of the object from the
- * observer's position, with 0 representing north. The azimuth increases
- * clockwise from north.
- * <p>
- * Note that Horizon objects are immutable and cannot be modified
- * once they are constructed. This allows them to be passed and returned by
- * value without worrying about whether other code will modify them.
- *
- * @see CalendarAstronomer.Ecliptic
- * @see CalendarAstronomer.Equatorial
- * @internal
- */
- class U_I18N_API Horizon : public UMemory {
- public:
- /**
- * Constructs a Horizon coordinate object.
- * <p>
- * @param alt The altitude, measured in radians above the horizon.
- * @param azim The azimuth, measured in radians clockwise from north.
- * @internal
- */
- Horizon(double alt=0, double azim=0)
- : altitude(alt), azimuth(azim) { }
-
- /**
- * Setter for Ecliptic Coordinate object
- * @param alt The altitude, measured in radians above the horizon.
- * @param azim The azimuth, measured in radians clockwise from north.
- * @internal
- */
- void set(double alt, double azim) {
- altitude = alt;
- azimuth = azim;
- }
-
- /**
- * Return a string representation of this object, with the
- * angles measured in degrees.
- * @internal
- */
- UnicodeString toString() const;
-
- /**
- * The object's altitude above the horizon, in radians.
- * @internal
- */
- double altitude;
-
- /**
- * The object's direction, in radians clockwise from north.
- * @internal
- */
- double azimuth;
- };
-
public:
//-------------------------------------------------------------------------
// Assorted private data used for conversions
@@ -301,22 +239,6 @@ public:
CalendarAstronomer(UDate d);
/**
- * Construct a new <code>CalendarAstronomer</code> object with the given
- * latitude and longitude. The object's time is set to the current
- * date and time.
- * <p>
- * @param longitude The desired longitude, in <em>degrees</em> east of
- * the Greenwich meridian.
- *
- * @param latitude The desired latitude, in <em>degrees</em>. Positive
- * values signify North, negative South.
- *
- * @see java.util.Date#getTime()
- * @internal
- */
- CalendarAstronomer(double longitude, double latitude);
-
- /**
* Destructor
* @internal
*/
@@ -333,48 +255,17 @@ public:
* @param aTime the date and time, expressed as the number of milliseconds since
* 1/1/1970 0:00 GMT (Gregorian).
*
- * @see #setDate
* @see #getTime
* @internal
*/
void setTime(UDate aTime);
-
- /**
- * Set the current date and time of this <code>CalendarAstronomer</code> object. All
- * astronomical calculations are performed based on this time setting.
- *
- * @param aTime the date and time, expressed as the number of milliseconds since
- * 1/1/1970 0:00 GMT (Gregorian).
- *
- * @see #getTime
- * @internal
- */
- void setDate(UDate aDate) { setTime(aDate); }
-
- /**
- * Set the current date and time of this <code>CalendarAstronomer</code> object. All
- * astronomical calculations are performed based on this time setting.
- *
- * @param jdn the desired time, expressed as a "julian day number",
- * which is the number of elapsed days since
- * 1/1/4713 BC (Julian), 12:00 GMT. Note that julian day
- * numbers start at <em>noon</em>. To get the jdn for
- * the corresponding midnight, subtract 0.5.
- *
- * @see #getJulianDay
- * @see #JULIAN_EPOCH_MS
- * @internal
- */
- void setJulianDay(double jdn);
-
/**
* Get the current time of this <code>CalendarAstronomer</code> object,
* represented as the number of milliseconds since
* 1/1/1970 AD 0:00 GMT (Gregorian).
*
* @see #setTime
- * @see #getDate
* @internal
*/
UDate getTime();
@@ -384,59 +275,13 @@ public:
* expressed as a "julian day number", which is the number of elapsed
* days since 1/1/4713 BC (Julian), 12:00 GMT.
*
- * @see #setJulianDay
* @see #JULIAN_EPOCH_MS
* @internal
*/
double getJulianDay();
- /**
- * Return this object's time expressed in julian centuries:
- * the number of centuries after 1/1/1900 AD, 12:00 GMT
- *
- * @see #getJulianDay
- * @internal
- */
- double getJulianCentury();
-
- /**
- * Returns the current Greenwich sidereal time, measured in hours
- * @internal
- */
- double getGreenwichSidereal();
-
-private:
- double getSiderealOffset();
public:
/**
- * Returns the current local sidereal time, measured in hours
- * @internal
- */
- double getLocalSidereal();
-
- /**
- * Converts local sidereal time to Universal Time.
- *
- * @param lst The Local Sidereal Time, in hours since sidereal midnight
- * on this object's current date.
- *
- * @return The corresponding Universal Time, in milliseconds since
- * 1 Jan 1970, GMT.
- */
- //private:
- double lstToUT(double lst);
-
- /**
- *
- * Convert from ecliptic to equatorial coordinates.
- *
- * @param ecliptic The ecliptic
- * @param result Fillin result
- * @return reference to result
- */
- Equatorial& eclipticToEquatorial(Equatorial& result, const Ecliptic& ecliptic);
-
- /**
* Convert from ecliptic to equatorial coordinates.
*
* @param eclipLong The ecliptic longitude
@@ -447,21 +292,6 @@ public:
*/
Equatorial& eclipticToEquatorial(Equatorial& result, double eclipLong, double eclipLat);
- /**
- * Convert from ecliptic longitude to equatorial coordinates.
- *
- * @param eclipLong The ecliptic longitude
- *
- * @return The corresponding point in equatorial coordinates.
- * @internal
- */
- Equatorial& eclipticToEquatorial(Equatorial& result, double eclipLong) ;
-
- /**
- * @internal
- */
- Horizon& eclipticToHorizon(Horizon& result, double eclipLong) ;
-
//-------------------------------------------------------------------------
// The Sun
//-------------------------------------------------------------------------
@@ -484,40 +314,8 @@ public:
*/
/*public*/ void getSunLongitude(double julianDay, double &longitude, double &meanAnomaly);
- /**
- * The position of the sun at this object's current date and time,
- * in equatorial coordinates.
- * @param result fillin for the result
- * @internal
- */
- Equatorial& getSunPosition(Equatorial& result);
-
public:
/**
- * Constant representing the vernal equinox.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
- * @internal
- */
-// static double VERNAL_EQUINOX();
-
- /**
- * Constant representing the summer solstice.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "summer" refers to the northern hemisphere's seasons.
- * @internal
- */
- static double SUMMER_SOLSTICE();
-
- /**
- * Constant representing the autumnal equinox.
- * For use with {@link #getSunTime getSunTime}.
- * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
- * @internal
- */
-// static double AUTUMN_EQUINOX();
-
- /**
* Constant representing the winter solstice.
* For use with {@link #getSunTime getSunTime}.
* Note: In this case, "winter" refers to the northern hemisphere's seasons.
@@ -532,20 +330,6 @@ public:
*/
UDate getSunTime(double desired, UBool next);
- /**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- *
- * NOTE: This method only works well if this object is set to a
- * time near local noon. Because of variations between the local
- * official time zone and the geographic longitude, the
- * computation can flop over into an adjacent day if this object
- * is set to a time near local midnight.
- *
- * @internal
- */
- UDate getSunRiseSet(UBool rise);
-
//-------------------------------------------------------------------------
// The Moon
//-------------------------------------------------------------------------
@@ -569,22 +353,6 @@ public:
*/
double getMoonAge();
- /**
- * Calculate the phase of the moon at the time set in this object.
- * The returned phase is a <code>double</code> in the range
- * <code>0 <= phase < 1</code>, interpreted as follows:
- * <ul>
- * <li>0.00: New moon
- * <li>0.25: First quarter
- * <li>0.50: Full moon
- * <li>0.75: Last quarter
- * </ul>
- *
- * @see #getMoonAge
- * @internal
- */
- double getMoonPhase();
-
class U_I18N_API MoonAge : public UMemory {
public:
MoonAge(double l)
@@ -598,28 +366,7 @@ public:
* For use with {@link #getMoonTime getMoonTime}
* @internal
*/
- static const MoonAge NEW_MOON();
-
- /**
- * Constant representing the moon's first quarter.
- * For use with {@link #getMoonTime getMoonTime}
- * @internal
- */
-// static const MoonAge FIRST_QUARTER();
-
- /**
- * Constant representing a full moon.
- * For use with {@link #getMoonTime getMoonTime}
- * @internal
- */
- static const MoonAge FULL_MOON();
-
- /**
- * Constant representing the moon's last quarter.
- * For use with {@link #getMoonTime getMoonTime}
- * @internal
- */
-// static const MoonAge LAST_QUARTER();
+ static MoonAge NEW_MOON();
/**
* Find the next or previous time at which the Moon's ecliptic
@@ -630,21 +377,13 @@ public:
* is desired, <tt>false</tt> for the previous occurrence.
* @internal
*/
- UDate getMoonTime(double desired, UBool next);
UDate getMoonTime(const MoonAge& desired, UBool next);
- /**
- * Returns the time (GMT) of sunrise or sunset on the local date to which
- * this calendar is currently set.
- * @internal
- */
- UDate getMoonRiseSet(UBool rise);
-
//-------------------------------------------------------------------------
// Interpolation methods for finding the time at which a given event occurs
//-------------------------------------------------------------------------
- // private
+public:
class AngleFunc : public UMemory {
public:
virtual double eval(CalendarAstronomer&) = 0;
@@ -652,20 +391,10 @@ public:
};
friend class AngleFunc;
+private:
UDate timeOfAngle(AngleFunc& func, double desired,
double periodDays, double epsilon, UBool next);
- class CoordFunc : public UMemory {
- public:
- virtual void eval(Equatorial& result, CalendarAstronomer&) = 0;
- virtual ~CoordFunc();
- };
- friend class CoordFunc;
-
- double riseOrSet(CoordFunc& func, UBool rise,
- double diameter, double refraction,
- double epsilon);
-
//-------------------------------------------------------------------------
// Other utility methods
//-------------------------------------------------------------------------
@@ -691,29 +420,13 @@ private:
*/
UDate fTime;
- /* These aren't used yet, but they'll be needed for sunset calculations
- * and equatorial to horizon coordinate conversions
- */
- double fLongitude;
- double fLatitude;
- double fGmtOffset;
-
- //
// The following fields are used to cache calculated results for improved
// performance. These values all depend on the current time setting
// of this object, so the clearCache method is provided.
- //
-
double julianDay;
- double julianCentury;
double sunLongitude;
double meanAnomalySun;
- double moonLongitude;
double moonEclipLong;
- double meanAnomalyMoon;
- double eclipObliquity;
- double siderealT0;
- double siderealTime;
void clearCache();
diff --git a/libicu/cts_headers/brktrans.h b/libicu/cts_headers/brktrans.h
index 5dcc8c50c..45de01aa5 100644
--- a/libicu/cts_headers/brktrans.h
+++ b/libicu/cts_headers/brktrans.h
@@ -38,7 +38,7 @@ public:
* Constructs a transliterator.
* @param adoptedFilter the filter for this transliterator.
*/
- BreakTransliterator(UnicodeFilter* adoptedFilter = 0);
+ BreakTransliterator(UnicodeFilter* adoptedFilter = nullptr);
/**
* Destructor.
diff --git a/libicu/cts_headers/buddhcal.h b/libicu/cts_headers/buddhcal.h
index 01b59341c..1fa8395b3 100644
--- a/libicu/cts_headers/buddhcal.h
+++ b/libicu/cts_headers/buddhcal.h
@@ -139,10 +139,11 @@ private:
* use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
* as UCAL_ERA) specific to the calendar system, depending on which set of
* fields is newer.
+ * @param status
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Subclasses may override this method to compute several fields
* specific to each calendar system.
@@ -158,24 +159,9 @@ private:
*/
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- /**
- * Returns true because the Buddhist Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
+ virtual bool isEra0CountingBackward() const override { return false; }
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/bytesinkutil.h b/libicu/cts_headers/bytesinkutil.h
index 929c71fbe..b3bd487be 100644
--- a/libicu/cts_headers/bytesinkutil.h
+++ b/libicu/cts_headers/bytesinkutil.h
@@ -7,18 +7,52 @@
#ifndef BYTESINKUTIL_H
#define BYTESINKUTIL_H
+#include <type_traits>
+
#include "unicode/utypes.h"
#include "unicode/bytestream.h"
#include "unicode/edits.h"
+#include "charstr.h"
#include "cmemory.h"
#include "uassert.h"
+#include "ustr_imp.h"
U_NAMESPACE_BEGIN
class ByteSink;
-class CharString;
class Edits;
+class U_COMMON_API CharStringByteSink : public ByteSink {
+public:
+ CharStringByteSink(CharString* dest);
+ ~CharStringByteSink() override;
+
+ CharStringByteSink() = delete;
+ CharStringByteSink(const CharStringByteSink&) = delete;
+ CharStringByteSink& operator=(const CharStringByteSink&) = delete;
+
+ void Append(const char* bytes, int32_t n) override;
+
+ char* GetAppendBuffer(int32_t min_capacity,
+ int32_t desired_capacity_hint,
+ char* scratch,
+ int32_t scratch_capacity,
+ int32_t* result_capacity) override;
+
+private:
+ CharString& dest_;
+};
+
+// CharString doesn't provide the public API that StringByteSink requires a
+// string class to have so this template specialization replaces the default
+// implementation of StringByteSink<CharString> with CharStringByteSink.
+template<>
+class StringByteSink<CharString> : public CharStringByteSink {
+ public:
+ StringByteSink(CharString* dest) : CharStringByteSink(dest) { }
+ StringByteSink(CharString* dest, int32_t /*initialAppendCapacity*/) : CharStringByteSink(dest) { }
+};
+
class U_COMMON_API ByteSinkUtil {
public:
ByteSinkUtil() = delete; // all static
@@ -57,30 +91,64 @@ public:
ByteSink &sink, uint32_t options, Edits *edits,
UErrorCode &errorCode);
-private:
- static void appendNonEmptyUnchanged(const uint8_t *s, int32_t length,
- ByteSink &sink, uint32_t options, Edits *edits);
-};
-
-class U_COMMON_API CharStringByteSink : public ByteSink {
-public:
- CharStringByteSink(CharString* dest);
- ~CharStringByteSink() override;
-
- CharStringByteSink() = delete;
- CharStringByteSink(const CharStringByteSink&) = delete;
- CharStringByteSink& operator=(const CharStringByteSink&) = delete;
-
- void Append(const char* bytes, int32_t n) override;
+ /**
+ * Calls a lambda that writes to a ByteSink with a CheckedArrayByteSink
+ * and then returns through u_terminateChars(), in order to implement
+ * the classic ICU4C C API writing to a fix sized buffer on top of a
+ * contemporary C++ API.
+ *
+ * @param buffer receiving buffer
+ * @param capacity capacity of receiving buffer
+ * @param lambda that gets called with the sink as an argument
+ * @param status set to U_BUFFER_OVERFLOW_ERROR on overflow
+ * @return number of bytes written, or needed (in case of overflow)
+ * @internal
+ */
+ template <typename F,
+ typename = std::enable_if_t<
+ std::is_invocable_r_v<void, F, ByteSink&, UErrorCode&>>>
+ static int32_t viaByteSinkToTerminatedChars(char* buffer, int32_t capacity,
+ F&& lambda,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return 0; }
+ CheckedArrayByteSink sink(buffer, capacity);
+ lambda(sink, status);
+ if (U_FAILURE(status)) { return 0; }
+
+ int32_t reslen = sink.NumberOfBytesAppended();
+
+ if (sink.Overflowed()) {
+ status = U_BUFFER_OVERFLOW_ERROR;
+ return reslen;
+ }
+
+ return u_terminateChars(buffer, capacity, reslen, &status);
+ }
- char* GetAppendBuffer(int32_t min_capacity,
- int32_t desired_capacity_hint,
- char* scratch,
- int32_t scratch_capacity,
- int32_t* result_capacity) override;
+ /**
+ * Calls a lambda that writes to a ByteSink with a CharStringByteSink and
+ * then returns a CharString, in order to implement a contemporary C++ API
+ * on top of a C/C++ compatibility ByteSink API.
+ *
+ * @param lambda that gets called with the sink as an argument
+ * @param status to check and report
+ * @return the resulting string, or an empty string (in case of error)
+ * @internal
+ */
+ template <typename F,
+ typename = std::enable_if_t<
+ std::is_invocable_r_v<void, F, ByteSink&, UErrorCode&>>>
+ static CharString viaByteSinkToCharString(F&& lambda, UErrorCode& status) {
+ if (U_FAILURE(status)) { return {}; }
+ CharString result;
+ CharStringByteSink sink(&result);
+ lambda(sink, status);
+ return result;
+ }
private:
- CharString& dest_;
+ static void appendNonEmptyUnchanged(const uint8_t *s, int32_t length,
+ ByteSink &sink, uint32_t options, Edits *edits);
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/cecal.h b/libicu/cts_headers/cecal.h
index 16f36a797..8f634e796 100644
--- a/libicu/cts_headers/cecal.h
+++ b/libicu/cts_headers/cecal.h
@@ -98,7 +98,7 @@ protected:
* Return JD of start of given month/extended year
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
/**
* Calculate the limit for a specified type of limit and field
@@ -106,12 +106,6 @@ protected:
*/
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- /**
- * Returns true because Coptic/Ethiopic Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
protected:
/**
* The Coptic and Ethiopic calendars differ only in their epochs.
@@ -122,19 +116,6 @@ protected:
virtual int32_t getJDEpochOffset() const = 0;
/**
- * Convert an Coptic/Ethiopic year, month, and day to a Julian day.
- *
- * @param year the extended year
- * @param month the month
- * @param day the day
- * @param jdEpochOffset the epoch offset from Julian epoch
- * @return Julian day
- * @internal
- */
- static int32_t ceToJD(int32_t year, int32_t month, int32_t date,
- int32_t jdEpochOffset);
-
- /**
* Convert a Julian day to an Coptic/Ethiopic year, month and day
*
* @param julianDay the Julian day
diff --git a/libicu/cts_headers/charstr.h b/libicu/cts_headers/charstr.h
index 7749a804b..08283ca45 100644
--- a/libicu/cts_headers/charstr.h
+++ b/libicu/cts_headers/charstr.h
@@ -104,6 +104,13 @@ public:
*/
int32_t extract(char *dest, int32_t capacity, UErrorCode &errorCode) const;
+ bool operator==(const CharString& other) const {
+ return len == other.length() && (len == 0 || uprv_memcmp(data(), other.data(), len) == 0);
+ }
+ bool operator!=(const CharString& other) const {
+ return !operator==(other);
+ }
+
bool operator==(StringPiece other) const {
return len == other.length() && (len == 0 || uprv_memcmp(data(), other.data(), len) == 0);
}
diff --git a/libicu/cts_headers/chnsecal.h b/libicu/cts_headers/chnsecal.h
index e4910f6eb..41bd3557f 100644
--- a/libicu/cts_headers/chnsecal.h
+++ b/libicu/cts_headers/chnsecal.h
@@ -27,6 +27,7 @@
U_NAMESPACE_BEGIN
+class CalendarCache;
/**
* <code>ChineseCalendar</code> is a concrete subclass of {@link Calendar}
* that implements a traditional Chinese calendar. The traditional Chinese
@@ -152,23 +153,6 @@ class U_I18N_API ChineseCalendar : public Calendar {
*/
virtual void setTemporalMonthCode(const char* code, UErrorCode& status) override;
- protected:
-
- /**
- * Constructs a ChineseCalendar based on the current time in the default time zone
- * with the given locale, using the specified epoch year and time zone for
- * astronomical calculations.
- *
- * @param aLocale The given locale.
- * @param epochYear The epoch year to use for calculation.
- * @param zoneAstroCalc The TimeZone to use for astronomical calculations. If null,
- * will be set appropriately for Chinese calendar (UTC + 8:00).
- * @param success Indicates the status of ChineseCalendar object construction;
- * if successful, will not be changed to an error value.
- * @internal
- */
- ChineseCalendar(const Locale& aLocale, int32_t epochYear, const TimeZone* zoneAstroCalc, UErrorCode &success);
-
public:
/**
* Copy Constructor
@@ -197,9 +181,6 @@ class U_I18N_API ChineseCalendar : public Calendar {
// this value could be false for a date prior to the Winter Solstice of that
// year but that year still has a leap month and therefor is a leap year.
UBool hasLeapMonthBetweenWinterSolstices;
- int32_t fEpochYear; // Start year of this Chinese calendar instance.
- const TimeZone* fZoneAstroCalc; // Zone used for the astronomical calculation
- // of this Chinese calendar instance.
//----------------------------------------------------------------------
// Calendar framework
@@ -207,9 +188,9 @@ class U_I18N_API ChineseCalendar : public Calendar {
protected:
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
virtual const UFieldResolutionTable* getFieldResolutionTable() const override;
@@ -241,19 +222,7 @@ class U_I18N_API ChineseCalendar : public Calendar {
static const UFieldResolutionTable CHINESE_DATE_PRECEDENCE[];
- double daysToMillis(double days) const;
- double millisToDays(double millis) const;
- virtual int32_t winterSolstice(int32_t gyear) const;
- virtual int32_t newMoonNear(double days, UBool after) const;
- virtual int32_t synodicMonthsBetween(int32_t day1, int32_t day2) const;
- virtual int32_t majorSolarTerm(int32_t days) const;
- virtual UBool hasNoMajorSolarTerm(int32_t newMoon) const;
- virtual UBool isLeapMonthBetween(int32_t newMoon1, int32_t newMoon2) const;
- virtual void computeChineseFields(int32_t days, int32_t gyear,
- int32_t gmonth, UBool setAllFields);
- virtual int32_t newYear(int32_t gyear) const;
virtual void offsetMonth(int32_t newMoon, int32_t dom, int32_t delta, UErrorCode& status);
- const TimeZone* getChineseCalZoneAstroCalc() const;
// UObject stuff
public:
@@ -285,46 +254,29 @@ class U_I18N_API ChineseCalendar : public Calendar {
*/
virtual const char * getType() const override;
+ struct Setting {
+ int32_t epochYear;
+ const TimeZone* zoneAstroCalc;
+ CalendarCache** winterSolsticeCache;
+ CalendarCache** newYearCache;
+ };
protected:
- virtual int32_t internalGetMonth(int32_t defaultValue) const override;
+ virtual Setting getSetting(UErrorCode& status) const;
+ virtual int32_t internalGetMonth(int32_t defaultValue, UErrorCode& status) const override;
- virtual int32_t internalGetMonth() const override;
+ virtual int32_t internalGetMonth(UErrorCode& status) const override;
protected:
- /**
- * Returns true because the Islamic Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
private: // default century stuff.
- /**
- * Returns the beginning date of the 100-year window that dates
- * with 2-digit years are considered to fall within.
- */
- UDate internalGetDefaultCenturyStart() const;
-
- /**
- * Returns the first year of the 100-year window that dates with
- * 2-digit years are considered to fall within.
- */
- int32_t internalGetDefaultCenturyStartYear() const;
-
ChineseCalendar() = delete; // default constructor not implemented
+
+#ifdef __CalendarTest__
+ friend void CalendarTest::TestChineseCalendarComputeMonthStart();
+#endif
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/coptccal.h b/libicu/cts_headers/coptccal.h
index 396127e8a..587bf37d0 100644
--- a/libicu/cts_headers/coptccal.h
+++ b/libicu/cts_headers/coptccal.h
@@ -177,7 +177,7 @@ protected:
* Return the extended year defined by the current fields.
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Compute fields from the JD
@@ -185,18 +185,7 @@ protected:
*/
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
/**
* Return the date offset from Julian
@@ -204,7 +193,7 @@ protected:
*/
virtual int32_t getJDEpochOffset() const override;
-
+ virtual bool isEra0CountingBackward() const override { return true; }
public:
/**
* Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual
diff --git a/libicu/cts_headers/cpdtrans.h b/libicu/cts_headers/cpdtrans.h
index a27c617c9..b01c2df6a 100644
--- a/libicu/cts_headers/cpdtrans.h
+++ b/libicu/cts_headers/cpdtrans.h
@@ -63,7 +63,7 @@ public:
*/
CompoundTransliterator(Transliterator* const transliterators[],
int32_t transliteratorCount,
- UnicodeFilter* adoptedFilter = 0);
+ UnicodeFilter* adoptedFilter = nullptr);
/**
* Constructs a new compound transliterator.
diff --git a/libicu/cts_headers/dangical.h b/libicu/cts_headers/dangical.h
index 3e5b0bb85..bc96be2a3 100644
--- a/libicu/cts_headers/dangical.h
+++ b/libicu/cts_headers/dangical.h
@@ -88,8 +88,6 @@ class DangiCalendar : public ChineseCalendar {
private:
- const TimeZone* getDangiCalZoneAstroCalc(UErrorCode &status) const;
-
// UObject stuff
public:
/**
@@ -120,6 +118,8 @@ class DangiCalendar : public ChineseCalendar {
*/
const char * getType() const override;
+ protected:
+ virtual Setting getSetting(UErrorCode& status) const override;
private:
diff --git a/libicu/cts_headers/double-conversion-cached-powers.h b/libicu/cts_headers/double-conversion-cached-powers.h
index ade27baef..78e70378d 100644
--- a/libicu/cts_headers/double-conversion-cached-powers.h
+++ b/libicu/cts_headers/double-conversion-cached-powers.h
@@ -44,9 +44,7 @@
// ICU PATCH: Wrap in ICU namespace
U_NAMESPACE_BEGIN
-namespace double_conversion {
-
-namespace PowersOfTenCache {
+namespace double_conversion::PowersOfTenCache {
// Not all powers of ten are cached. The decimal exponent of two neighboring
// cached numbers will differ by kDecimalExponentDistance.
@@ -71,9 +69,7 @@ namespace PowersOfTenCache {
DiyFp* power,
int* found_exponent);
-} // namespace PowersOfTenCache
-
-} // namespace double_conversion
+} // namespace double_conversion::PowersOfTenCache
// ICU PATCH: Close ICU namespace
U_NAMESPACE_END
diff --git a/libicu/cts_headers/dtptngen_impl.h b/libicu/cts_headers/dtptngen_impl.h
index 74fe925b2..b6eb5f637 100644
--- a/libicu/cts_headers/dtptngen_impl.h
+++ b/libicu/cts_headers/dtptngen_impl.h
@@ -250,7 +250,7 @@ public:
virtual ~PatternMap();
void add(const UnicodeString& basePattern, const PtnSkeleton& skeleton, const UnicodeString& value, UBool skeletonWasSpecified, UErrorCode& status);
const UnicodeString* getPatternFromBasePattern(const UnicodeString& basePattern, UBool& skeletonWasSpecified) const;
- const UnicodeString* getPatternFromSkeleton(const PtnSkeleton& skeleton, const PtnSkeleton** specifiedSkeletonPtr = 0) const;
+ const UnicodeString* getPatternFromSkeleton(const PtnSkeleton& skeleton, const PtnSkeleton** specifiedSkeletonPtr = nullptr) const;
void copyFrom(const PatternMap& other, UErrorCode& status);
PtnElem* getHeader(char16_t baseChar) const;
UBool equals(const PatternMap& other) const;
diff --git a/libicu/cts_headers/ethpccal.h b/libicu/cts_headers/ethpccal.h
index 19d9e0efb..36a356118 100644
--- a/libicu/cts_headers/ethpccal.h
+++ b/libicu/cts_headers/ethpccal.h
@@ -169,7 +169,7 @@ protected:
* 1 AMETE_MIHRET 1
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Compute fields from the JD
@@ -177,18 +177,7 @@ protected:
*/
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
/**
* Return the date offset from Julian
@@ -341,7 +330,7 @@ protected:
* 1 AMETE_ALEM 5501
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Compute fields from the JD
diff --git a/libicu/cts_headers/formatted_string_builder.h b/libicu/cts_headers/formatted_string_builder.h
index 32e0900ae..2ea7ac4f1 100644
--- a/libicu/cts_headers/formatted_string_builder.h
+++ b/libicu/cts_headers/formatted_string_builder.h
@@ -171,7 +171,7 @@ class U_I18N_API FormattedStringBuilder : public UMemory {
* Gets an "unsafe" UnicodeString that is valid only as long as the FormattedStringBuilder is alive and
* unchanged. Slightly faster than toUnicodeString().
*/
- const UnicodeString toTempUnicodeString() const;
+ UnicodeString toTempUnicodeString() const;
UnicodeString toDebugString() const;
@@ -219,8 +219,8 @@ class U_I18N_API FormattedStringBuilder : public UMemory {
static_assert(
// std::is_pod<> is deprecated.
- std::is_standard_layout<FormattedStringBuilder::Field>::value &&
- std::is_trivial<FormattedStringBuilder::Field>::value,
+ std::is_standard_layout_v<FormattedStringBuilder::Field> &&
+ std::is_trivial_v<FormattedStringBuilder::Field>,
"Field should be a POD type for efficient initialization");
constexpr FormattedStringBuilder::Field::Field(uint8_t category, uint8_t field)
diff --git a/libicu/cts_headers/gregoimp.h b/libicu/cts_headers/gregoimp.h
index d65d6a4f8..cd7694040 100644
--- a/libicu/cts_headers/gregoimp.h
+++ b/libicu/cts_headers/gregoimp.h
@@ -14,6 +14,7 @@
#ifndef GREGOIMP_H
#define GREGOIMP_H
#include "unicode/utypes.h"
+#include "unicode/calendar.h"
#if !UCONFIG_NO_FORMATTING
#include "unicode/ures.h"
@@ -49,7 +50,7 @@ class ClockMath {
* @param denominator a divisor which must be != 0
* @return the floor of the quotient
*/
- static int64_t floorDivide(int64_t numerator, int64_t denominator);
+ static int64_t floorDivideInt64(int64_t numerator, int64_t denominator);
/**
* Divide two numbers, returning the floor of the quotient.
@@ -77,7 +78,25 @@ class ClockMath {
* |denominator|)</code>.
* @return the floor of the quotient
*/
- static int32_t floorDivide(double numerator, int32_t denominator,
+ static int32_t floorDivide(int32_t numerator, int32_t denominator,
+ int32_t* remainder);
+
+ /**
+ * Divide two numbers, returning the floor of the quotient and
+ * the modulus remainder. Unlike the built-in division, this is
+ * mathematically well-behaved. E.g., <code>-1/4</code> => 0 and
+ * <code>-1%4</code> => -1, but <code>floorDivide(-1,4)</code> =>
+ * -1 with <code>remainder</code> => 3. NOTE: If numerator is
+ * too large, the returned quotient may overflow.
+ * @param numerator the numerator
+ * @param denominator a divisor which must be != 0
+ * @param remainder output parameter to receive the
+ * remainder. Unlike <code>numerator % denominator</code>, this
+ * will always be non-negative, in the half-open range <code>[0,
+ * |denominator|)</code>.
+ * @return the floor of the quotient
+ */
+ static double floorDivide(double numerator, int32_t denominator,
int32_t* remainder);
/**
@@ -178,31 +197,31 @@ class Grego {
* @param dom 1-based day of month
* @return the day number, with day 0 == Jan 1 1970
*/
- static double fieldsToDay(int32_t year, int32_t month, int32_t dom);
+ static int64_t fieldsToDay(int32_t year, int32_t month, int32_t dom);
/**
* Convert a 1970-epoch day number to proleptic Gregorian year,
* month, day-of-month, and day-of-week.
- * @param day 1970-epoch day (integral value)
+ * @param day 1970-epoch day
* @param year output parameter to receive year
* @param month output parameter to receive month (0-based, 0==Jan)
* @param dom output parameter to receive day-of-month (1-based)
* @param dow output parameter to receive day-of-week (1-based, 1==Sun)
* @param doy output parameter to receive day-of-year (1-based)
*/
- static void dayToFields(double day, int32_t& year, int32_t& month,
+ static void dayToFields(int32_t day, int32_t& year, int32_t& month,
int32_t& dom, int32_t& dow, int32_t& doy);
/**
* Convert a 1970-epoch day number to proleptic Gregorian year,
* month, day-of-month, and day-of-week.
- * @param day 1970-epoch day (integral value)
+ * @param day 1970-epoch day
* @param year output parameter to receive year
* @param month output parameter to receive month (0-based, 0==Jan)
* @param dom output parameter to receive day-of-month (1-based)
* @param dow output parameter to receive day-of-week (1-based, 1==Sun)
*/
- static inline void dayToFields(double day, int32_t& year, int32_t& month,
+ static inline void dayToFields(int32_t day, int32_t& year, int32_t& month,
int32_t& dom, int32_t& dow);
/**
@@ -221,10 +240,10 @@ class Grego {
/**
* Return the day of week on the 1970-epoch day
- * @param day the 1970-epoch day (integral value)
+ * @param day the 1970-epoch day
* @return the day of week
*/
- static int32_t dayOfWeek(double day);
+ static int32_t dayOfWeek(int32_t day);
/**
* Returns the ordinal number for the specified day of week within the month.
@@ -283,7 +302,7 @@ Grego::previousMonthLength(int y, int m) {
return (m > 0) ? monthLength(y, m-1) : 31;
}
-inline void Grego::dayToFields(double day, int32_t& year, int32_t& month,
+inline void Grego::dayToFields(int32_t day, int32_t& year, int32_t& month,
int32_t& dom, int32_t& dow) {
int32_t doy_unused;
dayToFields(day,year,month,dom,dow,doy_unused);
@@ -291,7 +310,7 @@ inline void Grego::dayToFields(double day, int32_t& year, int32_t& month,
inline double Grego::julianDayToMillis(int32_t julian)
{
- return (julian - kEpochStartAsJulianDay) * kOneDay;
+ return (static_cast<double>(julian) - kEpochStartAsJulianDay) * kOneDay;
}
inline int32_t Grego::millisToJulianDay(double millis) {
@@ -300,10 +319,50 @@ inline int32_t Grego::millisToJulianDay(double millis) {
inline int32_t Grego::gregorianShift(int32_t eyear) {
int64_t y = (int64_t)eyear-1;
- int32_t gregShift = static_cast<int32_t>(ClockMath::floorDivide(y, (int64_t)400) - ClockMath::floorDivide(y, (int64_t)100) + 2);
- return gregShift;
+ int64_t gregShift = ClockMath::floorDivideInt64(y, 400LL) - ClockMath::floorDivideInt64(y, 100LL) + 2;
+ return static_cast<int32_t>(gregShift);
}
+#define IMPL_SYSTEM_DEFAULT_CENTURY(T, U) \
+ /** \
+ * The system maintains a static default century start date and Year. They \
+ * are initialized the first time they are used. Once the system default \
+ * century date and year are set, they do not change \
+ */ \
+ namespace { \
+ static UDate gSystemDefaultCenturyStart = DBL_MIN; \
+ static int32_t gSystemDefaultCenturyStartYear = -1; \
+ static icu::UInitOnce gSystemDefaultCenturyInit {}; \
+ static void U_CALLCONV \
+ initializeSystemDefaultCentury() { \
+ UErrorCode status = U_ZERO_ERROR; \
+ T calendar(U, status); \
+ /* initialize systemDefaultCentury and systemDefaultCenturyYear based */ \
+ /* on the current time. They'll be set to 80 years before */ \
+ /* the current time. */ \
+ if (U_FAILURE(status)) { \
+ return; \
+ } \
+ calendar.setTime(Calendar::getNow(), status); \
+ calendar.add(UCAL_YEAR, -80, status); \
+ gSystemDefaultCenturyStart = calendar.getTime(status); \
+ gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status); \
+ /* We have no recourse upon failure unless we want to propagate the */ \
+ /* failure out. */ \
+ } \
+ } /* namespace */ \
+ UDate T::defaultCenturyStart() const { \
+ /* lazy-evaluate systemDefaultCenturyStart */ \
+ umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury); \
+ return gSystemDefaultCenturyStart; \
+ } \
+ int32_t T::defaultCenturyStartYear() const { \
+ /* lazy-evaluate systemDefaultCenturyStart */ \
+ umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury); \
+ return gSystemDefaultCenturyStartYear; \
+ } \
+ UBool T::haveDefaultCentury() const { return true; }
+
U_NAMESPACE_END
#endif // !UCONFIG_NO_FORMATTING
diff --git a/libicu/cts_headers/hash.h b/libicu/cts_headers/hash.h
index bc103ee72..c1a1c5c65 100644
--- a/libicu/cts_headers/hash.h
+++ b/libicu/cts_headers/hash.h
@@ -148,12 +148,12 @@ inline void Hashtable::initSize(UHashFunction *keyHash, UKeyComparator *keyComp,
}
inline Hashtable::Hashtable(UKeyComparator *keyComp, UValueComparator *valueComp,
- UErrorCode& status) : hash(0) {
+ UErrorCode& status) : hash(nullptr) {
init( uhash_hashUnicodeString, keyComp, valueComp, status);
}
inline Hashtable::Hashtable(UBool ignoreKeyCase, UErrorCode& status)
- : hash(0)
+ : hash(nullptr)
{
init(ignoreKeyCase ? uhash_hashCaselessUnicodeString
: uhash_hashUnicodeString,
@@ -164,7 +164,7 @@ inline Hashtable::Hashtable(UBool ignoreKeyCase, UErrorCode& status)
}
inline Hashtable::Hashtable(UBool ignoreKeyCase, int32_t size, UErrorCode& status)
- : hash(0)
+ : hash(nullptr)
{
initSize(ignoreKeyCase ? uhash_hashCaselessUnicodeString
: uhash_hashUnicodeString,
@@ -175,13 +175,13 @@ inline Hashtable::Hashtable(UBool ignoreKeyCase, int32_t size, UErrorCode& statu
}
inline Hashtable::Hashtable(UErrorCode& status)
- : hash(0)
+ : hash(nullptr)
{
init(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, status);
}
inline Hashtable::Hashtable()
- : hash(0)
+ : hash(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
init(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, status);
diff --git a/libicu/cts_headers/hebrwcal.h b/libicu/cts_headers/hebrwcal.h
index 829a64221..342fdb0ef 100644
--- a/libicu/cts_headers/hebrwcal.h
+++ b/libicu/cts_headers/hebrwcal.h
@@ -319,7 +319,7 @@ public:
* implementation than the default implementation in Calendar.
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given extended year of this
@@ -350,10 +350,11 @@ public:
* use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
* as UCAL_ERA) specific to the calendar system, depending on which set of
* fields is newer.
+ * @param status
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Return the Julian day number of day before the first day of the
* given month in the given extended year. Subclasses should override
@@ -367,8 +368,8 @@ public:
* day of the given month and year
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
- UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month,
+ UBool useMonth, UErrorCode& status) const override;
/**
@@ -380,24 +381,7 @@ public:
virtual void validateField(UCalendarDateFields field, UErrorCode &status) override;
protected:
- /**
- * Returns true because the Hebrew Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
public:
/**
@@ -442,7 +426,7 @@ public:
virtual void setTemporalMonthCode(const char* code, UErrorCode& status ) override;
protected:
- virtual int32_t internalGetMonth() const override;
+ virtual int32_t internalGetMonth(UErrorCode& status) const override;
private: // Calendar-specific implementation
/**
diff --git a/libicu/cts_headers/indiancal.h b/libicu/cts_headers/indiancal.h
index 5ef9113a8..2062bcec9 100644
--- a/libicu/cts_headers/indiancal.h
+++ b/libicu/cts_headers/indiancal.h
@@ -209,7 +209,7 @@ public:
* @param year The month(0-based) in Indian year
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Indian year
@@ -225,7 +225,7 @@ public:
/**
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
//-------------------------------------------------------------------------
// Functions for converting from milliseconds to field values
@@ -234,7 +234,7 @@ public:
/**
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Override Calendar to compute several fields specific to the Indian
@@ -304,24 +304,8 @@ private:
// Default century.
protected:
- /**
- * Returns true because the Indian Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/islamcal.h b/libicu/cts_headers/islamcal.h
index 8469269bc..1fb9ecd50 100644
--- a/libicu/cts_headers/islamcal.h
+++ b/libicu/cts_headers/islamcal.h
@@ -198,15 +198,10 @@ class U_I18N_API IslamicCalendar : public Calendar {
protected:
/**
- * Determine whether a year is a leap year in the Islamic civil calendar
- */
- static UBool civilLeapYear(int32_t year);
-
- /**
* Return the day # on which the given year starts. Days are counted
* from the Hijri epoch, origin 0.
*/
- virtual int32_t yearStart(int32_t year) const;
+ virtual int64_t yearStart(int32_t year) const;
/**
* Return the day # on which the given month starts. Days are counted
@@ -215,29 +210,8 @@ class U_I18N_API IslamicCalendar : public Calendar {
* @param year The hijri year
* @param year The hijri month, 0-based
*/
- virtual int32_t monthStart(int32_t year, int32_t month) const;
-
- /**
- * Find the day number on which a particular month of the true/lunar
- * Islamic calendar starts.
- *
- * @param month The month in question, origin 0 from the Hijri epoch
- *
- * @return The day number on which the given month starts.
- */
- int32_t trueMonthStart(int32_t month) const;
+ virtual int64_t monthStart(int32_t year, int32_t month, UErrorCode& status) const;
- private:
- /**
- * Return the "age" of the moon at the given time; this is the difference
- * in ecliptic latitude between the moon and the sun. This method simply
- * calls CalendarAstronomer.moonAge, converts to degrees,
- * and adjusts the resultto be in the range [-180, 180].
- *
- * @param time The time at which the moon's age is desired,
- * in millis since 1/1/1970.
- */
- static double moonAge(UDate time, UErrorCode &status);
//----------------------------------------------------------------------
// Calendar framework
@@ -255,7 +229,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Islamic year
@@ -271,7 +245,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
/**
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
//-------------------------------------------------------------------------
// Functions for converting from milliseconds to field values
@@ -280,7 +254,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
/**
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Override Calendar to compute several fields specific to the Islamic
@@ -364,32 +338,8 @@ class U_I18N_API IslamicCalendar : public Calendar {
// Default century.
protected:
- /**
- * Returns true because the Islamic Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
-
- private:
- /**
- * Initializes the 100-year window that dates with 2-digit years
- * are considered to fall within so that its start date is 80 years
- * before the current time.
- */
- static void U_CALLCONV initializeSystemDefaultCentury();
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
/*
@@ -463,7 +413,7 @@ class U_I18N_API IslamicCivilCalendar : public IslamicCalendar {
* from the Hijri epoch, origin 0.
* @internal
*/
- virtual int32_t yearStart(int32_t year) const override;
+ virtual int64_t yearStart(int32_t year) const override;
/**
* Return the day # on which the given month starts. Days are counted
@@ -473,7 +423,7 @@ class U_I18N_API IslamicCivilCalendar : public IslamicCalendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t monthStart(int32_t year, int32_t month) const override;
+ virtual int64_t monthStart(int32_t year, int32_t month, UErrorCode& status) const override;
/**
* Return the length (in days) of the given month.
@@ -482,7 +432,7 @@ class U_I18N_API IslamicCivilCalendar : public IslamicCalendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Islamic year
@@ -584,7 +534,7 @@ class U_I18N_API IslamicTBLACalendar : public IslamicCivilCalendar {
* IslamicUmalquraCalendar
* This calendar is referred as "Islamic calendar, Umm al-Qura" in CLDR.
*/
-class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
+class U_I18N_API IslamicUmalquraCalendar : public IslamicCivilCalendar {
public:
/**
* Constructs an IslamicUmalquraCalendar based on the current time in the default time zone
@@ -646,7 +596,7 @@ class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
* from the Hijri epoch, origin 0.
* @internal
*/
- virtual int32_t yearStart(int32_t year) const override;
+ virtual int64_t yearStart(int32_t year) const override;
/**
* Return the day # on which the given month starts. Days are counted
@@ -656,7 +606,7 @@ class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t monthStart(int32_t year, int32_t month) const override;
+ virtual int64_t monthStart(int32_t year, int32_t month, UErrorCode& status) const override;
/**
* Return the length (in days) of the given month.
@@ -665,7 +615,7 @@ class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
* @param year The hijri month, 0-based
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Islamic year
diff --git a/libicu/cts_headers/iso8601cal.h b/libicu/cts_headers/iso8601cal.h
index 688fac358..957f12e4f 100644
--- a/libicu/cts_headers/iso8601cal.h
+++ b/libicu/cts_headers/iso8601cal.h
@@ -90,6 +90,8 @@ class ISO8601Calendar : public GregorianCalendar {
*/
virtual const char * getType() const override;
+ protected:
+ virtual bool isEra0CountingBackward() const override { return false; }
private:
diff --git a/libicu/cts_headers/japancal.h b/libicu/cts_headers/japancal.h
index 3ae4900a2..bd2a2ca07 100644
--- a/libicu/cts_headers/japancal.h
+++ b/libicu/cts_headers/japancal.h
@@ -123,7 +123,7 @@ public:
* Japanese calendar case, this is equal to the equivalent extended Gregorian year.
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Return the maximum value that this field could have, given the current date.
@@ -166,22 +166,7 @@ public:
*/
virtual const char * getType() const override;
- /**
- * @return false - no default century in Japanese
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Not used - no default century.
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
- /**
- * Not used - no default century.
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
private:
JapaneseCalendar(); // default constructor not implemented
@@ -212,7 +197,7 @@ protected:
* @param eyear the extended year
* @internal
*/
- virtual int32_t getDefaultMonthInYear(int32_t eyear) override;
+ virtual int32_t getDefaultMonthInYear(int32_t eyear, UErrorCode& status) override;
/***
* Called by computeJulianDay. Returns the default day (1-based) for the month,
@@ -223,6 +208,8 @@ protected:
* @internal
*/
virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month) override;
+
+ virtual bool isEra0CountingBackward() const override { return false; }
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/localefallback_data.h b/libicu/cts_headers/localefallback_data.h
index c847edeff..f6d7c87f5 100644
--- a/libicu/cts_headers/localefallback_data.h
+++ b/libicu/cts_headers/localefallback_data.h
@@ -26,10 +26,10 @@ const char scriptCodeChars[] =
const char dsLocaleIDChars[] =
"aaf\0aao\0aat\0ab\0abh\0abl\0abv\0acm\0acq\0acw\0acx\0adf\0adx\0"
"ady\0ae\0aeb\0aec\0aee\0aeq\0afb\0agi\0agj\0agx\0ahg\0aho\0ahr\0"
- "aib\0aij\0ain\0aio\0aiq\0ajp\0akk\0akv\0alk\0all\0alr\0alt\0alw\0"
- "am\0ams\0amw\0ani\0anp\0anr\0anu\0aot\0apc\0apd\0aph\0aqc\0ar\0"
- "arc\0arq\0ars\0ary\0arz\0as\0ase\0ask\0atn\0atv\0auj\0auz\0av\0"
- "avd\0avl\0awa\0awn\0axm\0ayh\0ayl\0ayn\0ayp\0az_IQ\0az_IR\0az_RU\0"
+ "aib\0aij\0ain\0aio\0aiq\0akk\0akv\0alk\0all\0alr\0alt\0alw\0am\0"
+ "ams\0amw\0ani\0anp\0anr\0anu\0aot\0apc\0apd\0aph\0aqc\0ar\0arc\0"
+ "arq\0ars\0ary\0arz\0as\0ase\0ask\0atn\0atv\0auj\0auz\0av\0avd\0"
+ "avl\0awa\0awn\0axm\0ayh\0ayl\0ayn\0ayp\0az_IQ\0az_IR\0az_RU\0"
"azb\0ba\0bal\0bap\0bax\0bbl\0bcq\0bdv\0bdz\0be\0bee\0bej\0bfb\0"
"bfq\0bft\0bfu\0bfw\0bfy\0bfz\0bg\0bgc\0bgd\0bgn\0bgp\0bgq\0bgw\0"
"bgx\0bha\0bhb\0bhd\0bhe\0bhh\0bhi\0bhj\0bhm\0bhn\0bho\0bht\0bhu\0"
@@ -53,58 +53,58 @@ const char dsLocaleIDChars[] =
"hno\0hoc\0hoh\0hoj\0how\0hoy\0hpo\0hrt\0hrz\0hsn\0hss\0htx\0hut\0"
"huy\0huz\0hy\0hyw\0ii\0imy\0inh\0int\0ior\0iru\0isk\0itk\0itl\0"
"iu\0iw\0ja\0jad\0jat\0jbe\0jbn\0jct\0jda\0jdg\0jdt\0jee\0jge\0"
- "ji\0jje\0jkm\0jml\0jna\0jnd\0jnl\0jns\0jog\0jpa\0jpr\0jrb\0jrb_MA\0"
+ "jje\0jkm\0jml\0jna\0jnd\0jnl\0jns\0jog\0jpa\0jpr\0jrb\0jrb_MA\0"
"jul\0jun\0juy\0jya\0jye\0ka\0kaa\0kap\0kaw\0kbd\0kbu\0kby\0kca\0"
"kdq\0kdt\0ket\0kex\0key\0kfa\0kfb\0kfc\0kfd\0kfe\0kfh\0kfi\0kfk\0"
"kfm\0kfp\0kfq\0kfr\0kfs\0kfx\0kfy\0kgj\0kgy\0khb\0khf\0khg\0khn\0"
"kht\0khv\0khw\0kif\0kim\0kip\0kjg\0kjh\0kjl\0kjo\0kjp\0kjt\0kk\0"
"kk_AF\0kk_CN\0kk_IR\0kk_MN\0kkf\0kkh\0kkt\0kle\0klj\0klr\0km\0"
"kmj\0kmz\0kn\0ko\0koi\0kok\0kpt\0kpy\0kqd\0kqy\0kra\0krc\0krk\0"
- "krr\0kru\0krv\0ks\0ksu\0ksw\0ksz\0ktb\0ktl\0ktp\0ku_LB\0kuf\0"
- "kum\0kv\0kva\0kvq\0kvt\0kvx\0kvy\0kxf\0kxk\0kxm\0kxp\0ky\0ky_CN\0"
- "kyu\0kyv\0kyw\0lab\0lad\0lae\0lah\0lbc\0lbe\0lbf\0lbj\0lbm\0lbo\0"
- "lbr\0lcp\0lep\0lez\0lhm\0lhs\0lif\0lis\0lkh\0lki\0lmh\0lmn\0lo\0"
- "loy\0lpo\0lrc\0lrk\0lrl\0lsa\0lsd\0lss\0luk\0luu\0luv\0luz\0lwl\0"
- "lwm\0lya\0lzh\0mag\0mai\0man_GN\0mby\0mde\0mdf\0mdx\0mdy\0mfa\0"
- "mfi\0mgp\0mhj\0mid\0mjl\0mjq\0mjr\0mjt\0mju\0mjv\0mjz\0mk\0mkb\0"
- "mke\0mki\0mkm\0ml\0mlf\0mn\0mn_CN\0mni\0mnj\0mns\0mnw\0mpz\0mr\0"
- "mra\0mrd\0mrj\0mro\0mrr\0ms_CC\0mtm\0mtr\0mud\0muk\0mut\0muv\0"
- "muz\0mvf\0mvy\0mvz\0mwr\0mwt\0mww\0my\0mym\0myv\0myz\0mzn\0nan\0"
- "nao\0ncd\0ncq\0ndf\0ne\0neg\0neh\0nei\0new\0ngt\0nio\0nit\0niv\0"
- "nli\0nlm\0nlx\0nmm\0nnp\0nod\0noe\0nog\0noi\0non\0nos\0npb\0nqo\0"
- "nsd\0nsf\0nsk\0nst\0nsv\0nty\0ntz\0nwc\0nwx\0nyl\0nyq\0oaa\0oac\0"
- "oar\0oav\0obm\0obr\0odk\0oht\0oj\0ojs\0okm\0oko\0okz\0ola\0ole\0"
- "omk\0omp\0omr\0oon\0or\0ort\0oru\0orv\0os\0osa\0osc\0osi\0ota\0"
- "otb\0otk\0oty\0pa\0pa_PK\0pal\0paq\0pbt\0pcb\0pce\0pcf\0pcg\0"
- "pch\0pci\0pcj\0peg\0peo\0pgd\0pgg\0pgl\0pgn\0phd\0phk\0phl\0phn\0"
- "pho\0phr\0pht\0phv\0phw\0pi\0pka\0pkr\0plk\0pll\0pmh\0pnt\0pra\0"
- "prc\0prd\0prp\0prt\0prx\0ps\0psh\0psi\0pst\0pum\0pwo\0pwr\0pww\0"
- "pyx\0qxq\0raa\0rab\0raf\0rah\0raj\0rav\0rbb\0rdb\0rei\0rhg\0rji\0"
- "rjs\0rka\0rki\0rkt\0rmi\0rmt\0rmz\0rom_BG\0rsk\0rtw\0ru\0rue\0"
- "rut\0rwr\0ryu\0sa\0sah\0sam\0sat\0saz\0sbn\0sbu\0sck\0scl\0scl_IN\0"
- "scp\0sct\0scu\0scx\0sd\0sd_IN\0sdb\0sdf\0sdg\0sdh\0sds\0sel\0"
- "sfm\0sga\0sgh\0sgj\0sgr\0sgt\0sgw\0sgy\0shd\0shi\0shm\0shn\0shu\0"
- "shv\0si\0sia\0sip\0siy\0siz\0sjd\0sjp\0sjt\0skb\0skj\0skr\0slq\0"
+ "krr\0kru\0krv\0ks\0ksu\0ksw\0ksz\0ktb\0ktl\0ktp\0ku_IR\0ku_LB\0"
+ "kuf\0kum\0kv\0kva\0kvq\0kvt\0kvx\0kvy\0kxf\0kxk\0kxm\0kxp\0ky\0"
+ "ky_CN\0kyu\0kyv\0kyw\0lab\0lad\0lae\0lah\0lbc\0lbe\0lbf\0lbj\0"
+ "lbm\0lbo\0lbr\0lcp\0lep\0lez\0lhm\0lhs\0lif\0lis\0lkh\0lki\0lmh\0"
+ "lmn\0lo\0loy\0lpo\0lrc\0lrk\0lrl\0lsa\0lsd\0lss\0luk\0luu\0luv\0"
+ "luz\0lwl\0lwm\0lya\0lzh\0mag\0mai\0man_GN\0mby\0mde\0mdf\0mdx\0"
+ "mdy\0mfa\0mfi\0mgp\0mhj\0mid\0mjl\0mjq\0mjr\0mjt\0mju\0mjv\0mjz\0"
+ "mk\0mkb\0mke\0mki\0mkm\0ml\0mlf\0mn\0mn_CN\0mni\0mnj\0mns\0mnw\0"
+ "mpz\0mr\0mra\0mrd\0mrj\0mro\0mrr\0ms_CC\0mtm\0mtr\0mud\0muk\0"
+ "mut\0muv\0muz\0mvf\0mvy\0mvz\0mwr\0mwt\0mww\0my\0mym\0myv\0myz\0"
+ "mzn\0nan\0nao\0ncd\0ncq\0ndf\0ne\0neg\0neh\0nei\0new\0ngt\0nio\0"
+ "nit\0niv\0nli\0nlm\0nlx\0nmm\0nnp\0nod\0noe\0nog\0noi\0non\0nos\0"
+ "npb\0nqo\0nsd\0nsf\0nsk\0nst\0nsv\0nty\0ntz\0nwc\0nwx\0nyl\0nyq\0"
+ "oaa\0oac\0oar\0oav\0obm\0obr\0odk\0oht\0oj\0ojs\0okm\0oko\0okz\0"
+ "ola\0ole\0omk\0omp\0omr\0oon\0or\0ort\0oru\0orv\0os\0osa\0osc\0"
+ "osi\0ota\0otb\0otk\0oty\0pa\0pa_PK\0pal\0paq\0pbt\0pcb\0pce\0"
+ "pcf\0pcg\0pch\0pci\0pcj\0peg\0peo\0pgd\0pgg\0pgl\0pgn\0phd\0phk\0"
+ "phl\0phn\0pho\0phr\0pht\0phv\0phw\0pi\0pka\0pkr\0plk\0pll\0pmh\0"
+ "pnt\0pra\0prc\0prd\0prt\0prx\0ps\0psh\0psi\0pst\0pum\0pwo\0pwr\0"
+ "pww\0pyx\0qxq\0raa\0rab\0raf\0rah\0raj\0rav\0rbb\0rdb\0rei\0rhg\0"
+ "rji\0rjs\0rka\0rki\0rkt\0rmi\0rmt\0rmz\0rom_BG\0rsk\0rtw\0ru\0"
+ "rue\0rut\0rwr\0ryu\0sa\0sah\0sam\0sat\0saz\0sbn\0sbu\0sck\0scl\0"
+ "scl_IN\0scp\0sct\0scu\0scx\0sd\0sd_IN\0sdb\0sdf\0sdg\0sdh\0sds\0"
+ "sel\0sfm\0sga\0sgh\0sgj\0sgr\0sgt\0sgw\0sgy\0shd\0shi\0shm\0shn\0"
+ "shu\0shv\0si\0sia\0sip\0siy\0siz\0sjd\0sjp\0sjt\0skb\0skj\0skr\0"
"smh\0smp\0smu\0smy\0soa\0sog\0soi\0sou\0spt\0spv\0sqo\0sqq\0sqt\0"
"sr\0srb\0srh\0srx\0srz\0ssh\0sss\0sts\0stv\0sty\0suz\0sva\0swb\0"
"swi\0swv\0syc\0syl\0syn\0syr\0syw\0ta\0tab\0taj\0tbk\0tcn\0tco\0"
"tcx\0tcy\0tda\0tdb\0tdd\0tdg\0tdh\0te\0tes\0tg\0tg_PK\0tge\0tgf\0"
"th\0the\0thf\0thi\0thl\0thm\0thq\0thr\0ths\0ti\0tig\0tij\0tin\0"
- "tjl\0tjo\0tkb\0tks\0tkt\0tmk\0tmr\0tnv\0tov\0tpu\0tra\0trg\0trm\0"
- "trw\0tsd\0tsj\0tt\0tth\0tto\0tts\0tvn\0twm\0txg\0txo\0tyr\0tyv\0"
- "ude\0udg\0udi\0udm\0ug\0ug_KZ\0ug_MN\0uga\0ugh\0ugo\0uk\0uki\0"
- "ulc\0unr\0unr_NP\0unx\0ur\0urk\0ush\0uum\0uz_AF\0uz_CN\0uzs\0"
- "vaa\0vaf\0vah\0vai\0vas\0vav\0vay\0vgr\0vmd\0vmh\0wal\0wbk\0wbq\0"
- "wbr\0wlo\0wme\0wne\0wni\0wsg\0wsv\0wtm\0wuu\0xal\0xan\0xas\0xco\0"
- "xcr\0xdq\0xhe\0xhm\0xis\0xka\0xkc\0xkj\0xkp\0xlc\0xld\0xly\0xmf\0"
- "xmn\0xmr\0xna\0xnr\0xpg\0xpi\0xpm\0xpr\0xrm\0xrn\0xsa\0xsr\0xss\0"
- "xub\0xuj\0xve\0xvi\0xwo\0xzh\0yai\0ybh\0ybi\0ydg\0yea\0yej\0yeu\0"
- "ygp\0yhd\0yi\0yig\0yih\0yiv\0ykg\0yna\0ynk\0yoi\0yoy\0yrk\0ysd\0"
- "ysn\0ysp\0ysr\0ysy\0yud\0yue\0yue_CN\0yug\0yux\0ywq\0ywu\0zau\0"
- "zba\0zch\0zdj\0zeh\0zen\0zgb\0zgh\0zgm\0zgn\0zh\0zh_AU\0zh_BN\0"
- "zh_GB\0zh_GF\0zh_HK\0zh_ID\0zh_MO\0zh_PA\0zh_PF\0zh_PH\0zh_SR\0"
- "zh_TH\0zh_TW\0zh_US\0zh_VN\0zhd\0zhx\0zkb\0zko\0zkt\0zkz\0zlj\0"
- "zln\0zlq\0zqe\0zrp\0zum\0zyg\0zyn\0zzj\0";
+ "tjl\0tjo\0tkb\0tks\0tkt\0tmr\0tnv\0tov\0tpu\0tra\0trg\0trm\0trw\0"
+ "tsd\0tsj\0tt\0tth\0tto\0tts\0tvn\0twm\0txg\0txo\0tyr\0tyv\0ude\0"
+ "udg\0udi\0udm\0ug\0ug_KZ\0ug_MN\0uga\0ugh\0ugo\0uk\0uki\0ulc\0"
+ "unr\0unr_NP\0unx\0ur\0urk\0ush\0uum\0uz_AF\0uz_CN\0uzs\0vaa\0"
+ "vaf\0vah\0vai\0vas\0vav\0vay\0vgr\0vmd\0vmh\0wal\0wbk\0wbq\0wbr\0"
+ "wlo\0wme\0wne\0wni\0wsg\0wsv\0wtm\0wuu\0xal\0xan\0xas\0xco\0xcr\0"
+ "xdq\0xhe\0xhm\0xis\0xka\0xkc\0xkj\0xkp\0xlc\0xld\0xly\0xmf\0xmn\0"
+ "xmr\0xna\0xnr\0xpg\0xpi\0xpm\0xpr\0xrm\0xrn\0xsa\0xsr\0xub\0xuj\0"
+ "xve\0xvi\0xwo\0xzh\0yai\0ybh\0ybi\0ydg\0yea\0yej\0yeu\0ygp\0yhd\0"
+ "yi\0yig\0yih\0yiv\0ykg\0yna\0ynk\0yoi\0yoy\0yrk\0ysd\0ysn\0ysp\0"
+ "ysr\0ysy\0yud\0yue\0yue_CN\0yug\0yux\0ywq\0ywu\0zau\0zba\0zch\0"
+ "zdj\0zeh\0zen\0zgb\0zgh\0zgm\0zgn\0zh\0zh_AU\0zh_BN\0zh_GB\0zh_GF\0"
+ "zh_HK\0zh_ID\0zh_MO\0zh_PA\0zh_PF\0zh_PH\0zh_SR\0zh_TH\0zh_TW\0"
+ "zh_US\0zh_VN\0zhd\0zhx\0zko\0zkt\0zkz\0zlj\0zln\0zlq\0zqe\0zrp\0"
+ "zum\0zyg\0zyn\0zzj\0";
const int32_t defaultScriptTable[] = {
0, 320, // aaf -> Mlym
@@ -138,996 +138,990 @@ const int32_t defaultScriptTable[] = {
110, 220, // ain -> Kana
114, 345, // aio -> Mymr
118, 10, // aiq -> Arab
- 122, 10, // ajp -> Arab
- 126, 570, // akk -> Xsux
- 130, 100, // akv -> Cyrl
- 134, 260, // alk -> Laoo
- 138, 320, // all -> Mlym
- 142, 100, // alr -> Cyrl
- 146, 100, // alt -> Cyrl
- 150, 120, // alw -> Ethi
- 154, 120, // am -> Ethi
- 157, 210, // ams -> Jpan
- 161, 475, // amw -> Syrc
- 165, 100, // ani -> Cyrl
- 169, 105, // anp -> Deva
- 173, 105, // anr -> Deva
- 177, 120, // anu -> Ethi
- 181, 45, // aot -> Beng
- 185, 10, // apc -> Arab
- 189, 10, // apd -> Arab
- 193, 105, // aph -> Deva
- 197, 100, // aqc -> Cyrl
- 201, 10, // ar -> Arab
- 204, 15, // arc -> Armi
- 208, 10, // arq -> Arab
- 212, 10, // ars -> Arab
- 216, 10, // ary -> Arab
- 220, 10, // arz -> Arab
- 224, 45, // as -> Beng
- 227, 450, // ase -> Sgnw
- 231, 10, // ask -> Arab
- 235, 10, // atn -> Arab
- 239, 100, // atv -> Cyrl
- 243, 10, // auj -> Arab
- 247, 10, // auz -> Arab
- 251, 100, // av -> Cyrl
- 254, 10, // avd -> Arab
- 258, 10, // avl -> Arab
- 262, 105, // awa -> Deva
- 266, 120, // awn -> Ethi
- 270, 20, // axm -> Armn
- 274, 10, // ayh -> Arab
- 278, 10, // ayl -> Arab
- 282, 10, // ayn -> Arab
- 286, 10, // ayp -> Arab
- 290, 10, // az_IQ -> Arab
- 296, 10, // az_IR -> Arab
- 302, 100, // az_RU -> Cyrl
- 308, 10, // azb -> Arab
- 312, 100, // ba -> Cyrl
- 315, 10, // bal -> Arab
- 319, 105, // bap -> Deva
- 323, 30, // bax -> Bamu
- 327, 125, // bbl -> Geor
- 331, 120, // bcq -> Ethi
- 335, 385, // bdv -> Orya
- 339, 10, // bdz -> Arab
- 343, 100, // be -> Cyrl
- 346, 105, // bee -> Deva
- 350, 10, // bej -> Arab
- 354, 105, // bfb -> Deva
- 358, 500, // bfq -> Taml
- 362, 10, // bft -> Arab
- 366, 535, // bfu -> Tibt
- 370, 385, // bfw -> Orya
- 374, 105, // bfy -> Deva
- 378, 105, // bfz -> Deva
- 382, 100, // bg -> Cyrl
- 385, 105, // bgc -> Deva
- 389, 105, // bgd -> Deva
- 393, 10, // bgn -> Arab
- 397, 10, // bgp -> Arab
- 401, 105, // bgq -> Deva
- 405, 105, // bgw -> Deva
- 409, 150, // bgx -> Grek
- 413, 105, // bha -> Deva
- 417, 105, // bhb -> Deva
- 421, 105, // bhd -> Deva
- 425, 10, // bhe -> Arab
- 429, 100, // bhh -> Cyrl
- 433, 105, // bhi -> Deva
- 437, 105, // bhj -> Deva
- 441, 10, // bhm -> Arab
- 445, 475, // bhn -> Syrc
- 449, 105, // bho -> Deva
- 453, 485, // bht -> Takr
- 457, 105, // bhu -> Deva
- 461, 105, // biy -> Deva
- 465, 475, // bjf -> Syrc
- 469, 105, // bjj -> Deva
- 473, 10, // bjm -> Arab
- 477, 345, // blk -> Mymr
- 481, 510, // blt -> Tavt
- 485, 105, // bmj -> Deva
- 489, 45, // bn -> Beng
- 492, 105, // bns -> Deva
- 496, 535, // bo -> Tibt
- 499, 100, // bph -> Cyrl
- 503, 105, // bpx -> Deva
- 507, 45, // bpy -> Beng
- 511, 10, // bqi -> Arab
- 515, 105, // bra -> Deva
- 519, 235, // brb -> Khmr
- 523, 105, // brd -> Deva
- 527, 10, // brh -> Arab
- 531, 10, // brk -> Arab
- 535, 260, // brv -> Laoo
- 539, 105, // brx -> Deva
- 543, 10, // bsh -> Arab
- 547, 10, // bsk -> Arab
- 551, 35, // bsq -> Bass
- 555, 120, // bst -> Ethi
- 559, 40, // btd -> Batk
- 563, 40, // btm -> Batk
- 567, 105, // btv -> Deva
- 571, 100, // bua -> Cyrl
- 575, 345, // bwe -> Mymr
- 579, 100, // bxm -> Cyrl
- 583, 330, // bxu -> Mong
- 587, 105, // byh -> Deva
- 591, 120, // byn -> Ethi
- 595, 105, // byw -> Deva
- 599, 530, // bzi -> Thai
- 603, 530, // cbn -> Thai
- 607, 60, // ccp -> Cakm
- 611, 515, // cde -> Telu
- 615, 105, // cdh -> Deva
- 619, 155, // cdi -> Gujr
- 623, 105, // cdj -> Deva
- 627, 105, // cdm -> Deva
- 631, 175, // cdo -> Hans
- 635, 45, // cdz -> Beng
- 639, 100, // ce -> Cyrl
- 642, 535, // cgk -> Tibt
- 646, 10, // chg -> Arab
- 650, 100, // chm -> Cyrl
- 654, 80, // chr -> Cher
- 658, 105, // chx -> Deva
- 662, 105, // cih -> Deva
- 666, 10, // cja -> Arab
- 670, 100, // cji -> Cyrl
- 674, 75, // cjm -> Cham
- 678, 175, // cjy -> Hans
- 682, 10, // ckb -> Arab
- 686, 100, // ckt -> Cyrl
- 690, 10, // clh -> Arab
- 694, 100, // clw -> Cyrl
- 698, 470, // cmg -> Soyo
- 702, 535, // cna -> Tibt
- 706, 175, // cnp -> Hans
- 710, 530, // cog -> Thai
- 714, 90, // cop -> Copt
- 718, 150, // cpg -> Grek
- 722, 65, // cr -> Cans
- 725, 100, // crh -> Cyrl
- 729, 65, // crj -> Cans
- 733, 65, // crk -> Cans
- 737, 65, // crl -> Cans
- 741, 65, // crm -> Cans
- 745, 345, // csh -> Mymr
- 749, 175, // csp -> Hans
- 753, 65, // csw -> Cans
- 757, 395, // ctd -> Pauc
- 761, 45, // ctg -> Beng
- 765, 105, // ctn -> Deva
- 769, 500, // ctt -> Taml
- 773, 100, // cu -> Cyrl
- 776, 255, // cuu -> Lana
- 780, 100, // cv -> Cyrl
- 783, 175, // czh -> Hans
- 787, 185, // czk -> Hebr
- 791, 105, // daq -> Deva
- 795, 100, // dar -> Cyrl
- 799, 10, // dcc -> Arab
- 803, 100, // ddo -> Cyrl
- 807, 10, // def -> Arab
- 811, 10, // deh -> Arab
- 815, 45, // der -> Beng
- 819, 105, // dhi -> Deva
- 823, 155, // dhn -> Gujr
- 827, 105, // dho -> Deva
- 831, 105, // dhw -> Deva
- 835, 535, // dka -> Tibt
- 839, 100, // dlg -> Cyrl
- 843, 310, // dmf -> Medf
- 847, 10, // dmk -> Arab
- 851, 10, // dml -> Arab
- 855, 100, // dng -> Cyrl
- 859, 345, // dnu -> Mymr
- 863, 345, // dnv -> Mymr
- 867, 105, // doi -> Deva
- 871, 120, // dox -> Ethi
- 875, 535, // dre -> Tibt
- 879, 105, // drq -> Deva
- 883, 120, // drs -> Ethi
- 887, 105, // dry -> Deva
- 891, 385, // dso -> Orya
- 895, 105, // dty -> Deva
- 899, 155, // dub -> Gujr
- 903, 105, // duh -> Deva
- 907, 105, // dus -> Deva
- 911, 525, // dv -> Thaa
- 914, 385, // dwk -> Orya
- 918, 105, // dwz -> Deva
- 922, 535, // dz -> Tibt
- 925, 535, // dzl -> Tibt
- 929, 150, // ecr -> Grek
- 933, 95, // ecy -> Cprt
- 937, 110, // egy -> Egyp
- 941, 215, // eky -> Kali
- 945, 150, // el -> Grek
- 948, 105, // emg -> Deva
- 952, 105, // emu -> Deva
- 956, 100, // enf -> Cyrl
- 960, 100, // enh -> Cyrl
- 964, 500, // era -> Taml
- 968, 135, // esg -> Gonm
- 972, 10, // esh -> Arab
- 976, 200, // ett -> Ital
- 980, 100, // eve -> Cyrl
- 984, 100, // evn -> Cyrl
- 988, 10, // fa -> Arab
- 991, 10, // fay -> Arab
- 995, 10, // faz -> Arab
- 999, 10, // fia -> Arab
- 1003, 105, // fmu -> Deva
- 1007, 10, // fub -> Arab
- 1011, 175, // gan -> Hans
- 1015, 385, // gaq -> Orya
- 1019, 155, // gas -> Gujr
- 1023, 515, // gau -> Telu
- 1027, 385, // gbj -> Orya
- 1031, 105, // gbk -> Deva
- 1035, 155, // gbl -> Gujr
- 1039, 105, // gbm -> Deva
- 1043, 10, // gbz -> Arab
- 1047, 385, // gdb -> Orya
- 1051, 100, // gdo -> Cyrl
- 1055, 105, // gdx -> Deva
- 1059, 120, // gez -> Ethi
- 1063, 10, // ggg -> Arab
- 1067, 10, // gha -> Arab
- 1071, 105, // ghe -> Deva
- 1075, 10, // ghr -> Arab
- 1079, 535, // ght -> Tibt
- 1083, 10, // gig -> Arab
- 1087, 100, // gin -> Cyrl
- 1091, 10, // gjk -> Arab
- 1095, 10, // gju -> Arab
- 1099, 100, // gld -> Cyrl
- 1103, 10, // glh -> Arab
- 1107, 10, // glk -> Arab
- 1111, 120, // gmv -> Ethi
- 1115, 275, // gmy -> Linb
- 1119, 535, // goe -> Tibt
- 1123, 120, // gof -> Ethi
- 1127, 105, // gok -> Deva
- 1131, 105, // gom -> Deva
- 1135, 515, // gon -> Telu
- 1139, 140, // got -> Goth
- 1143, 105, // gra -> Deva
- 1147, 95, // grc -> Cprt
- 1151, 45, // grt -> Beng
- 1155, 120, // gru -> Ethi
- 1159, 155, // gu -> Gujr
- 1162, 105, // gvr -> Deva
- 1166, 10, // gwc -> Arab
- 1170, 10, // gwf -> Arab
- 1174, 10, // gwt -> Arab
- 1178, 105, // gyo -> Deva
- 1182, 10, // gzi -> Arab
- 1186, 10, // ha_CM -> Arab
- 1192, 10, // ha_SD -> Arab
- 1198, 10, // hac -> Arab
- 1202, 175, // hak -> Hans
- 1206, 120, // har -> Ethi
- 1210, 10, // haz -> Arab
- 1214, 185, // hbo -> Hebr
- 1218, 120, // hdy -> Ethi
- 1222, 185, // he -> Hebr
- 1225, 105, // hi -> Deva
- 1228, 485, // hii -> Takr
- 1232, 570, // hit -> Xsux
- 1236, 10, // hkh -> Arab
- 1240, 105, // hlb -> Deva
- 1244, 190, // hlu -> Hluw
- 1248, 410, // hmd -> Plrd
- 1252, 50, // hmj -> Bopo
- 1256, 50, // hmq -> Bopo
- 1260, 10, // hnd -> Arab
- 1264, 105, // hne -> Deva
- 1268, 195, // hnj -> Hmnp
- 1272, 260, // hnj_AU -> Laoo
- 1279, 260, // hnj_CN -> Laoo
- 1286, 260, // hnj_FR -> Laoo
- 1293, 260, // hnj_GF -> Laoo
- 1300, 260, // hnj_LA -> Laoo
- 1307, 260, // hnj_MM -> Laoo
- 1314, 260, // hnj_SR -> Laoo
- 1321, 260, // hnj_TH -> Laoo
- 1328, 260, // hnj_VN -> Laoo
- 1335, 10, // hno -> Arab
- 1339, 105, // hoc -> Deva
- 1343, 10, // hoh -> Arab
- 1347, 105, // hoj -> Deva
- 1351, 170, // how -> Hani
- 1355, 105, // hoy -> Deva
- 1359, 345, // hpo -> Mymr
- 1363, 475, // hrt -> Syrc
- 1367, 10, // hrz -> Arab
- 1371, 175, // hsn -> Hans
- 1375, 10, // hss -> Arab
- 1379, 570, // htx -> Xsux
- 1383, 105, // hut -> Deva
- 1387, 185, // huy -> Hebr
- 1391, 100, // huz -> Cyrl
- 1395, 20, // hy -> Armn
- 1398, 20, // hyw -> Armn
- 1402, 575, // ii -> Yiii
- 1405, 285, // imy -> Lyci
- 1409, 100, // inh -> Cyrl
- 1413, 345, // int -> Mymr
- 1417, 120, // ior -> Ethi
- 1421, 500, // iru -> Taml
- 1425, 10, // isk -> Arab
- 1429, 185, // itk -> Hebr
- 1433, 100, // itl -> Cyrl
- 1437, 65, // iu -> Cans
- 1440, 185, // iw -> Hebr
- 1443, 210, // ja -> Jpan
- 1446, 10, // jad -> Arab
- 1450, 10, // jat -> Arab
- 1454, 185, // jbe -> Hebr
- 1458, 10, // jbn -> Arab
- 1462, 100, // jct -> Cyrl
- 1466, 535, // jda -> Tibt
- 1470, 10, // jdg -> Arab
- 1474, 100, // jdt -> Cyrl
- 1478, 105, // jee -> Deva
- 1482, 125, // jge -> Geor
- 1486, 185, // ji -> Hebr
- 1489, 165, // jje -> Hang
- 1493, 345, // jkm -> Mymr
- 1497, 105, // jml -> Deva
- 1501, 485, // jna -> Takr
- 1505, 10, // jnd -> Arab
- 1509, 105, // jnl -> Deva
- 1513, 105, // jns -> Deva
- 1517, 10, // jog -> Arab
- 1521, 185, // jpa -> Hebr
- 1525, 185, // jpr -> Hebr
- 1529, 185, // jrb -> Hebr
- 1533, 10, // jrb_MA -> Arab
- 1540, 105, // jul -> Deva
- 1544, 385, // jun -> Orya
- 1548, 385, // juy -> Orya
- 1552, 535, // jya -> Tibt
- 1556, 185, // jye -> Hebr
- 1560, 125, // ka -> Geor
- 1563, 100, // kaa -> Cyrl
- 1567, 100, // kap -> Cyrl
- 1571, 225, // kaw -> Kawi
- 1575, 100, // kbd -> Cyrl
- 1579, 10, // kbu -> Arab
- 1583, 10, // kby -> Arab
- 1587, 100, // kca -> Cyrl
- 1591, 45, // kdq -> Beng
- 1595, 530, // kdt -> Thai
- 1599, 100, // ket -> Cyrl
- 1603, 105, // kex -> Deva
- 1607, 515, // key -> Telu
- 1611, 245, // kfa -> Knda
- 1615, 105, // kfb -> Deva
- 1619, 515, // kfc -> Telu
- 1623, 245, // kfd -> Knda
- 1627, 500, // kfe -> Taml
- 1631, 320, // kfh -> Mlym
- 1635, 500, // kfi -> Taml
- 1639, 105, // kfk -> Deva
- 1643, 10, // kfm -> Arab
- 1647, 105, // kfp -> Deva
- 1651, 105, // kfq -> Deva
- 1655, 105, // kfr -> Deva
- 1659, 105, // kfs -> Deva
- 1663, 105, // kfx -> Deva
- 1667, 105, // kfy -> Deva
- 1671, 105, // kgj -> Deva
- 1675, 105, // kgy -> Deva
- 1679, 495, // khb -> Talu
- 1683, 530, // khf -> Thai
- 1687, 535, // khg -> Tibt
- 1691, 105, // khn -> Deva
- 1695, 345, // kht -> Mymr
- 1699, 100, // khv -> Cyrl
- 1703, 10, // khw -> Arab
- 1707, 105, // kif -> Deva
- 1711, 100, // kim -> Cyrl
- 1715, 105, // kip -> Deva
- 1719, 260, // kjg -> Laoo
- 1723, 100, // kjh -> Cyrl
- 1727, 105, // kjl -> Deva
- 1731, 105, // kjo -> Deva
- 1735, 345, // kjp -> Mymr
- 1739, 530, // kjt -> Thai
- 1743, 100, // kk -> Cyrl
- 1746, 10, // kk_AF -> Arab
- 1752, 10, // kk_CN -> Arab
- 1758, 10, // kk_IR -> Arab
- 1764, 10, // kk_MN -> Arab
- 1770, 535, // kkf -> Tibt
- 1774, 255, // kkh -> Lana
- 1778, 105, // kkt -> Deva
- 1782, 105, // kle -> Deva
- 1786, 10, // klj -> Arab
- 1790, 105, // klr -> Deva
- 1794, 235, // km -> Khmr
- 1797, 105, // kmj -> Deva
- 1801, 10, // kmz -> Arab
- 1805, 245, // kn -> Knda
- 1808, 250, // ko -> Kore
- 1811, 100, // koi -> Cyrl
- 1815, 105, // kok -> Deva
- 1819, 100, // kpt -> Cyrl
- 1823, 100, // kpy -> Cyrl
- 1827, 475, // kqd -> Syrc
- 1831, 120, // kqy -> Ethi
- 1835, 105, // kra -> Deva
- 1839, 100, // krc -> Cyrl
- 1843, 100, // krk -> Cyrl
- 1847, 235, // krr -> Khmr
- 1851, 105, // kru -> Deva
- 1855, 235, // krv -> Khmr
- 1859, 10, // ks -> Arab
- 1862, 345, // ksu -> Mymr
- 1866, 345, // ksw -> Mymr
- 1870, 105, // ksz -> Deva
- 1874, 120, // ktb -> Ethi
- 1878, 10, // ktl -> Arab
- 1882, 410, // ktp -> Plrd
- 1886, 10, // ku_LB -> Arab
- 1892, 260, // kuf -> Laoo
- 1896, 100, // kum -> Cyrl
- 1900, 100, // kv -> Cyrl
- 1903, 100, // kva -> Cyrl
- 1907, 345, // kvq -> Mymr
- 1911, 345, // kvt -> Mymr
- 1915, 10, // kvx -> Arab
- 1919, 215, // kvy -> Kali
- 1923, 345, // kxf -> Mymr
- 1927, 345, // kxk -> Mymr
- 1931, 530, // kxm -> Thai
- 1935, 10, // kxp -> Arab
- 1939, 100, // ky -> Cyrl
- 1942, 10, // ky_CN -> Arab
- 1948, 215, // kyu -> Kali
- 1952, 105, // kyv -> Deva
- 1956, 105, // kyw -> Deva
- 1960, 270, // lab -> Lina
- 1964, 185, // lad -> Hebr
- 1968, 105, // lae -> Deva
- 1972, 10, // lah -> Arab
- 1976, 280, // lbc -> Lisu
- 1980, 100, // lbe -> Cyrl
- 1984, 105, // lbf -> Deva
- 1988, 535, // lbj -> Tibt
- 1992, 105, // lbm -> Deva
- 1996, 260, // lbo -> Laoo
- 2000, 105, // lbr -> Deva
- 2004, 530, // lcp -> Thai
- 2008, 265, // lep -> Lepc
- 2012, 100, // lez -> Cyrl
- 2016, 105, // lhm -> Deva
- 2020, 475, // lhs -> Syrc
- 2024, 105, // lif -> Deva
- 2028, 280, // lis -> Lisu
- 2032, 535, // lkh -> Tibt
- 2036, 10, // lki -> Arab
- 2040, 105, // lmh -> Deva
- 2044, 515, // lmn -> Telu
- 2048, 260, // lo -> Laoo
- 2051, 105, // loy -> Deva
- 2055, 410, // lpo -> Plrd
- 2059, 10, // lrc -> Arab
- 2063, 10, // lrk -> Arab
- 2067, 10, // lrl -> Arab
- 2071, 10, // lsa -> Arab
- 2075, 185, // lsd -> Hebr
- 2079, 10, // lss -> Arab
- 2083, 535, // luk -> Tibt
- 2087, 105, // luu -> Deva
- 2091, 10, // luv -> Arab
- 2095, 10, // luz -> Arab
- 2099, 530, // lwl -> Thai
- 2103, 530, // lwm -> Thai
- 2107, 535, // lya -> Tibt
- 2111, 175, // lzh -> Hans
- 2115, 105, // mag -> Deva
- 2119, 105, // mai -> Deva
- 2123, 360, // man_GN -> Nkoo
- 2130, 10, // mby -> Arab
- 2134, 10, // mde -> Arab
- 2138, 100, // mdf -> Cyrl
- 2142, 120, // mdx -> Ethi
- 2146, 120, // mdy -> Ethi
- 2150, 10, // mfa -> Arab
- 2154, 10, // mfi -> Arab
- 2158, 105, // mgp -> Deva
- 2162, 10, // mhj -> Arab
- 2166, 295, // mid -> Mand
- 2170, 105, // mjl -> Deva
- 2174, 320, // mjq -> Mlym
- 2178, 320, // mjr -> Mlym
- 2182, 105, // mjt -> Deva
- 2186, 515, // mju -> Telu
- 2190, 320, // mjv -> Mlym
- 2194, 105, // mjz -> Deva
- 2198, 100, // mk -> Cyrl
- 2201, 105, // mkb -> Deva
- 2205, 105, // mke -> Deva
- 2209, 10, // mki -> Arab
- 2213, 530, // mkm -> Thai
- 2217, 320, // ml -> Mlym
- 2220, 530, // mlf -> Thai
- 2224, 100, // mn -> Cyrl
- 2227, 330, // mn_CN -> Mong
- 2233, 45, // mni -> Beng
- 2237, 10, // mnj -> Arab
- 2241, 100, // mns -> Cyrl
- 2245, 345, // mnw -> Mymr
- 2249, 530, // mpz -> Thai
- 2253, 105, // mr -> Deva
- 2256, 530, // mra -> Thai
- 2260, 105, // mrd -> Deva
- 2264, 100, // mrj -> Cyrl
- 2268, 335, // mro -> Mroo
- 2272, 105, // mrr -> Deva
- 2276, 10, // ms_CC -> Arab
- 2282, 100, // mtm -> Cyrl
- 2286, 105, // mtr -> Deva
- 2290, 100, // mud -> Cyrl
- 2294, 535, // muk -> Tibt
- 2298, 105, // mut -> Deva
- 2302, 500, // muv -> Taml
- 2306, 120, // muz -> Ethi
- 2310, 330, // mvf -> Mong
- 2314, 10, // mvy -> Arab
- 2318, 120, // mvz -> Ethi
- 2322, 105, // mwr -> Deva
- 2326, 345, // mwt -> Mymr
- 2330, 195, // mww -> Hmnp
- 2334, 345, // my -> Mymr
- 2337, 120, // mym -> Ethi
- 2341, 100, // myv -> Cyrl
- 2345, 295, // myz -> Mand
- 2349, 10, // mzn -> Arab
- 2353, 175, // nan -> Hans
- 2357, 105, // nao -> Deva
- 2361, 105, // ncd -> Deva
- 2365, 260, // ncq -> Laoo
- 2369, 100, // ndf -> Cyrl
- 2373, 105, // ne -> Deva
- 2376, 100, // neg -> Cyrl
- 2380, 535, // neh -> Tibt
- 2384, 570, // nei -> Xsux
- 2388, 105, // new -> Deva
- 2392, 260, // ngt -> Laoo
- 2396, 100, // nio -> Cyrl
- 2400, 515, // nit -> Telu
- 2404, 100, // niv -> Cyrl
- 2408, 10, // nli -> Arab
- 2412, 10, // nlm -> Arab
- 2416, 105, // nlx -> Deva
- 2420, 105, // nmm -> Deva
- 2424, 560, // nnp -> Wcho
- 2428, 255, // nod -> Lana
- 2432, 105, // noe -> Deva
- 2436, 100, // nog -> Cyrl
- 2440, 105, // noi -> Deva
- 2444, 430, // non -> Runr
- 2448, 575, // nos -> Yiii
- 2452, 535, // npb -> Tibt
- 2456, 360, // nqo -> Nkoo
- 2460, 575, // nsd -> Yiii
- 2464, 575, // nsf -> Yiii
- 2468, 65, // nsk -> Cans
- 2472, 540, // nst -> Tnsa
- 2476, 575, // nsv -> Yiii
- 2480, 575, // nty -> Yiii
- 2484, 10, // ntz -> Arab
- 2488, 355, // nwc -> Newa
- 2492, 105, // nwx -> Deva
- 2496, 530, // nyl -> Thai
- 2500, 10, // nyq -> Arab
- 2504, 100, // oaa -> Cyrl
- 2508, 100, // oac -> Cyrl
- 2512, 475, // oar -> Syrc
- 2516, 125, // oav -> Geor
- 2520, 405, // obm -> Phnx
- 2524, 345, // obr -> Mymr
- 2528, 10, // odk -> Arab
- 2532, 570, // oht -> Xsux
- 2536, 65, // oj -> Cans
- 2539, 65, // ojs -> Cans
- 2543, 165, // okm -> Hang
- 2547, 170, // oko -> Hani
- 2551, 235, // okz -> Khmr
- 2555, 105, // ola -> Deva
- 2559, 535, // ole -> Tibt
- 2563, 100, // omk -> Cyrl
- 2567, 340, // omp -> Mtei
- 2571, 325, // omr -> Modi
- 2575, 105, // oon -> Deva
- 2579, 385, // or -> Orya
- 2582, 515, // ort -> Telu
- 2586, 10, // oru -> Arab
- 2590, 100, // orv -> Cyrl
- 2594, 100, // os -> Cyrl
- 2597, 390, // osa -> Osge
- 2601, 200, // osc -> Ital
- 2605, 205, // osi -> Java
- 2609, 10, // ota -> Arab
- 2613, 535, // otb -> Tibt
- 2617, 380, // otk -> Orkh
- 2621, 145, // oty -> Gran
- 2625, 160, // pa -> Guru
- 2628, 10, // pa_PK -> Arab
- 2634, 400, // pal -> Phli
- 2638, 100, // paq -> Cyrl
- 2642, 10, // pbt -> Arab
- 2646, 235, // pcb -> Khmr
- 2650, 345, // pce -> Mymr
- 2654, 320, // pcf -> Mlym
- 2658, 320, // pcg -> Mlym
- 2662, 105, // pch -> Deva
- 2666, 105, // pci -> Deva
- 2670, 515, // pcj -> Telu
- 2674, 385, // peg -> Orya
- 2678, 565, // peo -> Xpeo
- 2682, 230, // pgd -> Khar
- 2686, 105, // pgg -> Deva
- 2690, 370, // pgl -> Ogam
- 2694, 200, // pgn -> Ital
- 2698, 105, // phd -> Deva
- 2702, 345, // phk -> Mymr
- 2706, 10, // phl -> Arab
- 2710, 405, // phn -> Phnx
- 2714, 260, // pho -> Laoo
- 2718, 10, // phr -> Arab
- 2722, 530, // pht -> Thai
- 2726, 10, // phv -> Arab
- 2730, 105, // phw -> Deva
- 2734, 455, // pi -> Sinh
- 2737, 55, // pka -> Brah
- 2741, 320, // pkr -> Mlym
- 2745, 10, // plk -> Arab
- 2749, 345, // pll -> Mymr
- 2753, 55, // pmh -> Brah
- 2757, 150, // pnt -> Grek
- 2761, 230, // pra -> Khar
- 2765, 10, // prc -> Arab
- 2769, 10, // prd -> Arab
- 2773, 155, // prp -> Gujr
- 2777, 530, // prt -> Thai
- 2781, 10, // prx -> Arab
- 2785, 10, // ps -> Arab
- 2788, 10, // psh -> Arab
- 2792, 10, // psi -> Arab
- 2796, 10, // pst -> Arab
- 2800, 105, // pum -> Deva
- 2804, 345, // pwo -> Mymr
- 2808, 105, // pwr -> Deva
- 2812, 530, // pww -> Thai
- 2816, 345, // pyx -> Mymr
- 2820, 10, // qxq -> Arab
- 2824, 105, // raa -> Deva
- 2828, 105, // rab -> Deva
- 2832, 105, // raf -> Deva
- 2836, 45, // rah -> Beng
- 2840, 105, // raj -> Deva
- 2844, 105, // rav -> Deva
- 2848, 345, // rbb -> Mymr
- 2852, 10, // rdb -> Arab
- 2856, 385, // rei -> Orya
- 2860, 425, // rhg -> Rohg
- 2864, 105, // rji -> Deva
- 2868, 105, // rjs -> Deva
- 2872, 235, // rka -> Khmr
- 2876, 345, // rki -> Mymr
- 2880, 45, // rkt -> Beng
- 2884, 20, // rmi -> Armn
- 2888, 10, // rmt -> Arab
- 2892, 345, // rmz -> Mymr
- 2896, 100, // rom_BG -> Cyrl
- 2903, 100, // rsk -> Cyrl
- 2907, 105, // rtw -> Deva
- 2911, 100, // ru -> Cyrl
- 2914, 100, // rue -> Cyrl
- 2918, 100, // rut -> Cyrl
- 2922, 105, // rwr -> Deva
- 2926, 220, // ryu -> Kana
- 2930, 105, // sa -> Deva
- 2933, 100, // sah -> Cyrl
- 2937, 435, // sam -> Samr
- 2941, 375, // sat -> Olck
- 2945, 445, // saz -> Saur
- 2949, 10, // sbn -> Arab
- 2953, 535, // sbu -> Tibt
- 2957, 105, // sck -> Deva
- 2961, 10, // scl -> Arab
- 2965, 10, // scl_IN -> Arab
- 2972, 105, // scp -> Deva
- 2976, 260, // sct -> Laoo
- 2980, 485, // scu -> Takr
- 2984, 150, // scx -> Grek
- 2988, 10, // sd -> Arab
- 2991, 105, // sd_IN -> Deva
- 2997, 10, // sdb -> Arab
- 3001, 10, // sdf -> Arab
- 3005, 10, // sdg -> Arab
- 3009, 10, // sdh -> Arab
- 3013, 10, // sds -> Arab
- 3017, 100, // sel -> Cyrl
- 3021, 410, // sfm -> Plrd
- 3025, 370, // sga -> Ogam
- 3029, 100, // sgh -> Cyrl
- 3033, 105, // sgj -> Deva
- 3037, 10, // sgr -> Arab
- 3041, 535, // sgt -> Tibt
- 3045, 120, // sgw -> Ethi
- 3049, 10, // sgy -> Arab
- 3053, 10, // shd -> Arab
- 3057, 520, // shi -> Tfng
- 3061, 10, // shm -> Arab
- 3065, 345, // shn -> Mymr
- 3069, 10, // shu -> Arab
- 3073, 10, // shv -> Arab
- 3077, 455, // si -> Sinh
- 3080, 100, // sia -> Cyrl
- 3084, 535, // sip -> Tibt
- 3088, 10, // siy -> Arab
- 3092, 10, // siz -> Arab
- 3096, 100, // sjd -> Cyrl
- 3100, 105, // sjp -> Deva
- 3104, 100, // sjt -> Cyrl
- 3108, 530, // skb -> Thai
- 3112, 105, // skj -> Deva
- 3116, 10, // skr -> Arab
- 3120, 10, // slq -> Arab
- 3124, 575, // smh -> Yiii
- 3128, 435, // smp -> Samr
- 3132, 235, // smu -> Khmr
- 3136, 10, // smy -> Arab
- 3140, 510, // soa -> Tavt
- 3144, 460, // sog -> Sogd
- 3148, 105, // soi -> Deva
- 3152, 530, // sou -> Thai
- 3156, 535, // spt -> Tibt
- 3160, 385, // spv -> Orya
- 3164, 10, // sqo -> Arab
- 3168, 260, // sqq -> Laoo
- 3172, 10, // sqt -> Arab
- 3176, 100, // sr -> Cyrl
- 3179, 465, // srb -> Sora
- 3183, 10, // srh -> Arab
- 3187, 105, // srx -> Deva
- 3191, 10, // srz -> Arab
- 3195, 10, // ssh -> Arab
- 3199, 260, // sss -> Laoo
- 3203, 10, // sts -> Arab
- 3207, 120, // stv -> Ethi
- 3211, 100, // sty -> Cyrl
- 3215, 105, // suz -> Deva
- 3219, 125, // sva -> Geor
- 3223, 10, // swb -> Arab
- 3227, 170, // swi -> Hani
- 3231, 105, // swv -> Deva
- 3235, 475, // syc -> Syrc
- 3239, 45, // syl -> Beng
- 3243, 475, // syn -> Syrc
- 3247, 475, // syr -> Syrc
- 3251, 105, // syw -> Deva
- 3255, 500, // ta -> Taml
- 3258, 100, // tab -> Cyrl
- 3262, 105, // taj -> Deva
- 3266, 480, // tbk -> Tagb
- 3270, 535, // tcn -> Tibt
- 3274, 345, // tco -> Mymr
- 3278, 500, // tcx -> Taml
- 3282, 245, // tcy -> Knda
- 3286, 520, // tda -> Tfng
- 3290, 105, // tdb -> Deva
- 3294, 490, // tdd -> Tale
- 3298, 105, // tdg -> Deva
- 3302, 105, // tdh -> Deva
- 3306, 515, // te -> Telu
- 3309, 205, // tes -> Java
- 3313, 100, // tg -> Cyrl
- 3316, 10, // tg_PK -> Arab
- 3322, 105, // tge -> Deva
- 3326, 535, // tgf -> Tibt
- 3330, 530, // th -> Thai
- 3333, 105, // the -> Deva
- 3337, 105, // thf -> Deva
- 3341, 490, // thi -> Tale
- 3345, 105, // thl -> Deva
- 3349, 530, // thm -> Thai
- 3353, 105, // thq -> Deva
- 3357, 105, // thr -> Deva
- 3361, 105, // ths -> Deva
- 3365, 120, // ti -> Ethi
- 3368, 120, // tig -> Ethi
- 3372, 105, // tij -> Deva
- 3376, 100, // tin -> Cyrl
- 3380, 345, // tjl -> Mymr
- 3384, 10, // tjo -> Arab
- 3388, 105, // tkb -> Deva
- 3392, 10, // tks -> Arab
- 3396, 105, // tkt -> Deva
- 3400, 105, // tmk -> Deva
- 3404, 475, // tmr -> Syrc
- 3408, 60, // tnv -> Cakm
- 3412, 10, // tov -> Arab
- 3416, 235, // tpu -> Khmr
- 3420, 10, // tra -> Arab
- 3424, 185, // trg -> Hebr
- 3428, 10, // trm -> Arab
- 3432, 10, // trw -> Arab
- 3436, 150, // tsd -> Grek
- 3440, 535, // tsj -> Tibt
- 3444, 100, // tt -> Cyrl
- 3447, 260, // tth -> Laoo
- 3451, 260, // tto -> Laoo
- 3455, 530, // tts -> Thai
- 3459, 345, // tvn -> Mymr
- 3463, 105, // twm -> Deva
- 3467, 505, // txg -> Tang
- 3471, 545, // txo -> Toto
- 3475, 510, // tyr -> Tavt
- 3479, 100, // tyv -> Cyrl
- 3483, 100, // ude -> Cyrl
- 3487, 320, // udg -> Mlym
- 3491, 0, // udi -> Aghb
- 3495, 100, // udm -> Cyrl
- 3499, 10, // ug -> Arab
- 3502, 100, // ug_KZ -> Cyrl
- 3508, 100, // ug_MN -> Cyrl
- 3514, 550, // uga -> Ugar
- 3518, 100, // ugh -> Cyrl
- 3522, 530, // ugo -> Thai
- 3526, 100, // uk -> Cyrl
- 3529, 385, // uki -> Orya
- 3533, 100, // ulc -> Cyrl
- 3537, 45, // unr -> Beng
- 3541, 105, // unr_NP -> Deva
- 3548, 45, // unx -> Beng
- 3552, 10, // ur -> Arab
- 3555, 530, // urk -> Thai
- 3559, 10, // ush -> Arab
- 3563, 150, // uum -> Grek
- 3567, 10, // uz_AF -> Arab
- 3573, 100, // uz_CN -> Cyrl
- 3579, 10, // uzs -> Arab
- 3583, 500, // vaa -> Taml
- 3587, 10, // vaf -> Arab
- 3591, 105, // vah -> Deva
- 3595, 555, // vai -> Vaii
- 3599, 105, // vas -> Deva
- 3603, 105, // vav -> Deva
- 3607, 105, // vay -> Deva
- 3611, 10, // vgr -> Arab
- 3615, 245, // vmd -> Knda
- 3619, 10, // vmh -> Arab
- 3623, 120, // wal -> Ethi
- 3627, 10, // wbk -> Arab
- 3631, 515, // wbq -> Telu
- 3635, 105, // wbr -> Deva
- 3639, 10, // wlo -> Arab
- 3643, 105, // wme -> Deva
- 3647, 10, // wne -> Arab
- 3651, 10, // wni -> Arab
- 3655, 130, // wsg -> Gong
- 3659, 10, // wsv -> Arab
- 3663, 105, // wtm -> Deva
- 3667, 175, // wuu -> Hans
- 3671, 100, // xal -> Cyrl
- 3675, 120, // xan -> Ethi
- 3679, 100, // xas -> Cyrl
- 3683, 85, // xco -> Chrs
- 3687, 70, // xcr -> Cari
- 3691, 100, // xdq -> Cyrl
- 3695, 10, // xhe -> Arab
- 3699, 235, // xhm -> Khmr
- 3703, 385, // xis -> Orya
- 3707, 10, // xka -> Arab
- 3711, 10, // xkc -> Arab
- 3715, 10, // xkj -> Arab
- 3719, 10, // xkp -> Arab
- 3723, 285, // xlc -> Lyci
- 3727, 290, // xld -> Lydi
- 3731, 115, // xly -> Elym
- 3735, 125, // xmf -> Geor
- 3739, 300, // xmn -> Mani
- 3743, 315, // xmr -> Merc
- 3747, 350, // xna -> Narb
- 3751, 105, // xnr -> Deva
- 3755, 150, // xpg -> Grek
- 3759, 370, // xpi -> Ogam
- 3763, 100, // xpm -> Cyrl
- 3767, 415, // xpr -> Prti
- 3771, 100, // xrm -> Cyrl
- 3775, 100, // xrn -> Cyrl
- 3779, 440, // xsa -> Sarb
- 3783, 105, // xsr -> Deva
- 3787, 100, // xss -> Cyrl
- 3791, 500, // xub -> Taml
- 3795, 500, // xuj -> Taml
- 3799, 200, // xve -> Ital
- 3803, 10, // xvi -> Arab
- 3807, 100, // xwo -> Cyrl
- 3811, 305, // xzh -> Marc
- 3815, 100, // yai -> Cyrl
- 3819, 105, // ybh -> Deva
- 3823, 105, // ybi -> Deva
- 3827, 10, // ydg -> Arab
- 3831, 320, // yea -> Mlym
- 3835, 150, // yej -> Grek
- 3839, 515, // yeu -> Telu
- 3843, 410, // ygp -> Plrd
- 3847, 185, // yhd -> Hebr
- 3851, 185, // yi -> Hebr
- 3854, 575, // yig -> Yiii
- 3858, 185, // yih -> Hebr
- 3862, 575, // yiv -> Yiii
- 3866, 100, // ykg -> Cyrl
- 3870, 410, // yna -> Plrd
- 3874, 100, // ynk -> Cyrl
- 3878, 210, // yoi -> Jpan
- 3882, 530, // yoy -> Thai
- 3886, 100, // yrk -> Cyrl
- 3890, 575, // ysd -> Yiii
- 3894, 575, // ysn -> Yiii
- 3898, 575, // ysp -> Yiii
- 3902, 100, // ysr -> Cyrl
- 3906, 410, // ysy -> Plrd
- 3910, 185, // yud -> Hebr
- 3914, 180, // yue -> Hant
- 3918, 175, // yue_CN -> Hans
- 3925, 100, // yug -> Cyrl
- 3929, 100, // yux -> Cyrl
- 3933, 410, // ywq -> Plrd
- 3937, 410, // ywu -> Plrd
- 3941, 535, // zau -> Tibt
- 3945, 10, // zba -> Arab
- 3949, 170, // zch -> Hani
- 3953, 10, // zdj -> Arab
- 3957, 170, // zeh -> Hani
- 3961, 520, // zen -> Tfng
- 3965, 170, // zgb -> Hani
- 3969, 520, // zgh -> Tfng
- 3973, 170, // zgm -> Hani
- 3977, 170, // zgn -> Hani
- 3981, 175, // zh -> Hans
- 3984, 180, // zh_AU -> Hant
- 3990, 180, // zh_BN -> Hant
- 3996, 180, // zh_GB -> Hant
- 4002, 180, // zh_GF -> Hant
- 4008, 180, // zh_HK -> Hant
- 4014, 180, // zh_ID -> Hant
- 4020, 180, // zh_MO -> Hant
- 4026, 180, // zh_PA -> Hant
- 4032, 180, // zh_PF -> Hant
- 4038, 180, // zh_PH -> Hant
- 4044, 180, // zh_SR -> Hant
- 4050, 180, // zh_TH -> Hant
- 4056, 180, // zh_TW -> Hant
- 4062, 180, // zh_US -> Hant
- 4068, 180, // zh_VN -> Hant
- 4074, 170, // zhd -> Hani
- 4078, 365, // zhx -> Nshu
- 4082, 100, // zkb -> Cyrl
- 4086, 100, // zko -> Cyrl
- 4090, 240, // zkt -> Kits
- 4094, 100, // zkz -> Cyrl
- 4098, 170, // zlj -> Hani
- 4102, 170, // zln -> Hani
- 4106, 170, // zlq -> Hani
- 4110, 170, // zqe -> Hani
- 4114, 185, // zrp -> Hebr
- 4118, 10, // zum -> Arab
- 4122, 170, // zyg -> Hani
- 4126, 170, // zyn -> Hani
- 4130, 170, // zzj -> Hani
+ 122, 570, // akk -> Xsux
+ 126, 100, // akv -> Cyrl
+ 130, 260, // alk -> Laoo
+ 134, 320, // all -> Mlym
+ 138, 100, // alr -> Cyrl
+ 142, 100, // alt -> Cyrl
+ 146, 120, // alw -> Ethi
+ 150, 120, // am -> Ethi
+ 153, 210, // ams -> Jpan
+ 157, 475, // amw -> Syrc
+ 161, 100, // ani -> Cyrl
+ 165, 105, // anp -> Deva
+ 169, 105, // anr -> Deva
+ 173, 120, // anu -> Ethi
+ 177, 45, // aot -> Beng
+ 181, 10, // apc -> Arab
+ 185, 10, // apd -> Arab
+ 189, 105, // aph -> Deva
+ 193, 100, // aqc -> Cyrl
+ 197, 10, // ar -> Arab
+ 200, 15, // arc -> Armi
+ 204, 10, // arq -> Arab
+ 208, 10, // ars -> Arab
+ 212, 10, // ary -> Arab
+ 216, 10, // arz -> Arab
+ 220, 45, // as -> Beng
+ 223, 450, // ase -> Sgnw
+ 227, 10, // ask -> Arab
+ 231, 10, // atn -> Arab
+ 235, 100, // atv -> Cyrl
+ 239, 10, // auj -> Arab
+ 243, 10, // auz -> Arab
+ 247, 100, // av -> Cyrl
+ 250, 10, // avd -> Arab
+ 254, 10, // avl -> Arab
+ 258, 105, // awa -> Deva
+ 262, 120, // awn -> Ethi
+ 266, 20, // axm -> Armn
+ 270, 10, // ayh -> Arab
+ 274, 10, // ayl -> Arab
+ 278, 10, // ayn -> Arab
+ 282, 10, // ayp -> Arab
+ 286, 10, // az_IQ -> Arab
+ 292, 10, // az_IR -> Arab
+ 298, 100, // az_RU -> Cyrl
+ 304, 10, // azb -> Arab
+ 308, 100, // ba -> Cyrl
+ 311, 10, // bal -> Arab
+ 315, 105, // bap -> Deva
+ 319, 30, // bax -> Bamu
+ 323, 125, // bbl -> Geor
+ 327, 120, // bcq -> Ethi
+ 331, 385, // bdv -> Orya
+ 335, 10, // bdz -> Arab
+ 339, 100, // be -> Cyrl
+ 342, 105, // bee -> Deva
+ 346, 10, // bej -> Arab
+ 350, 105, // bfb -> Deva
+ 354, 500, // bfq -> Taml
+ 358, 10, // bft -> Arab
+ 362, 535, // bfu -> Tibt
+ 366, 385, // bfw -> Orya
+ 370, 105, // bfy -> Deva
+ 374, 105, // bfz -> Deva
+ 378, 100, // bg -> Cyrl
+ 381, 105, // bgc -> Deva
+ 385, 105, // bgd -> Deva
+ 389, 10, // bgn -> Arab
+ 393, 10, // bgp -> Arab
+ 397, 105, // bgq -> Deva
+ 401, 105, // bgw -> Deva
+ 405, 150, // bgx -> Grek
+ 409, 105, // bha -> Deva
+ 413, 105, // bhb -> Deva
+ 417, 105, // bhd -> Deva
+ 421, 10, // bhe -> Arab
+ 425, 100, // bhh -> Cyrl
+ 429, 105, // bhi -> Deva
+ 433, 105, // bhj -> Deva
+ 437, 10, // bhm -> Arab
+ 441, 475, // bhn -> Syrc
+ 445, 105, // bho -> Deva
+ 449, 485, // bht -> Takr
+ 453, 105, // bhu -> Deva
+ 457, 105, // biy -> Deva
+ 461, 475, // bjf -> Syrc
+ 465, 105, // bjj -> Deva
+ 469, 10, // bjm -> Arab
+ 473, 345, // blk -> Mymr
+ 477, 510, // blt -> Tavt
+ 481, 105, // bmj -> Deva
+ 485, 45, // bn -> Beng
+ 488, 105, // bns -> Deva
+ 492, 535, // bo -> Tibt
+ 495, 100, // bph -> Cyrl
+ 499, 105, // bpx -> Deva
+ 503, 45, // bpy -> Beng
+ 507, 10, // bqi -> Arab
+ 511, 105, // bra -> Deva
+ 515, 235, // brb -> Khmr
+ 519, 105, // brd -> Deva
+ 523, 10, // brh -> Arab
+ 527, 10, // brk -> Arab
+ 531, 260, // brv -> Laoo
+ 535, 105, // brx -> Deva
+ 539, 10, // bsh -> Arab
+ 543, 10, // bsk -> Arab
+ 547, 35, // bsq -> Bass
+ 551, 120, // bst -> Ethi
+ 555, 40, // btd -> Batk
+ 559, 40, // btm -> Batk
+ 563, 105, // btv -> Deva
+ 567, 100, // bua -> Cyrl
+ 571, 345, // bwe -> Mymr
+ 575, 100, // bxm -> Cyrl
+ 579, 330, // bxu -> Mong
+ 583, 105, // byh -> Deva
+ 587, 120, // byn -> Ethi
+ 591, 105, // byw -> Deva
+ 595, 530, // bzi -> Thai
+ 599, 530, // cbn -> Thai
+ 603, 60, // ccp -> Cakm
+ 607, 515, // cde -> Telu
+ 611, 105, // cdh -> Deva
+ 615, 155, // cdi -> Gujr
+ 619, 105, // cdj -> Deva
+ 623, 105, // cdm -> Deva
+ 627, 175, // cdo -> Hans
+ 631, 45, // cdz -> Beng
+ 635, 100, // ce -> Cyrl
+ 638, 535, // cgk -> Tibt
+ 642, 10, // chg -> Arab
+ 646, 100, // chm -> Cyrl
+ 650, 80, // chr -> Cher
+ 654, 105, // chx -> Deva
+ 658, 105, // cih -> Deva
+ 662, 10, // cja -> Arab
+ 666, 100, // cji -> Cyrl
+ 670, 75, // cjm -> Cham
+ 674, 175, // cjy -> Hans
+ 678, 10, // ckb -> Arab
+ 682, 100, // ckt -> Cyrl
+ 686, 10, // clh -> Arab
+ 690, 100, // clw -> Cyrl
+ 694, 470, // cmg -> Soyo
+ 698, 535, // cna -> Tibt
+ 702, 175, // cnp -> Hans
+ 706, 530, // cog -> Thai
+ 710, 90, // cop -> Copt
+ 714, 150, // cpg -> Grek
+ 718, 65, // cr -> Cans
+ 721, 100, // crh -> Cyrl
+ 725, 65, // crj -> Cans
+ 729, 65, // crk -> Cans
+ 733, 65, // crl -> Cans
+ 737, 65, // crm -> Cans
+ 741, 345, // csh -> Mymr
+ 745, 175, // csp -> Hans
+ 749, 65, // csw -> Cans
+ 753, 395, // ctd -> Pauc
+ 757, 45, // ctg -> Beng
+ 761, 105, // ctn -> Deva
+ 765, 500, // ctt -> Taml
+ 769, 100, // cu -> Cyrl
+ 772, 255, // cuu -> Lana
+ 776, 100, // cv -> Cyrl
+ 779, 175, // czh -> Hans
+ 783, 185, // czk -> Hebr
+ 787, 105, // daq -> Deva
+ 791, 100, // dar -> Cyrl
+ 795, 10, // dcc -> Arab
+ 799, 100, // ddo -> Cyrl
+ 803, 10, // def -> Arab
+ 807, 10, // deh -> Arab
+ 811, 45, // der -> Beng
+ 815, 105, // dhi -> Deva
+ 819, 155, // dhn -> Gujr
+ 823, 105, // dho -> Deva
+ 827, 105, // dhw -> Deva
+ 831, 535, // dka -> Tibt
+ 835, 100, // dlg -> Cyrl
+ 839, 310, // dmf -> Medf
+ 843, 10, // dmk -> Arab
+ 847, 10, // dml -> Arab
+ 851, 100, // dng -> Cyrl
+ 855, 345, // dnu -> Mymr
+ 859, 345, // dnv -> Mymr
+ 863, 105, // doi -> Deva
+ 867, 120, // dox -> Ethi
+ 871, 535, // dre -> Tibt
+ 875, 105, // drq -> Deva
+ 879, 120, // drs -> Ethi
+ 883, 105, // dry -> Deva
+ 887, 385, // dso -> Orya
+ 891, 105, // dty -> Deva
+ 895, 155, // dub -> Gujr
+ 899, 105, // duh -> Deva
+ 903, 105, // dus -> Deva
+ 907, 525, // dv -> Thaa
+ 910, 385, // dwk -> Orya
+ 914, 105, // dwz -> Deva
+ 918, 535, // dz -> Tibt
+ 921, 535, // dzl -> Tibt
+ 925, 150, // ecr -> Grek
+ 929, 95, // ecy -> Cprt
+ 933, 110, // egy -> Egyp
+ 937, 215, // eky -> Kali
+ 941, 150, // el -> Grek
+ 944, 105, // emg -> Deva
+ 948, 105, // emu -> Deva
+ 952, 100, // enf -> Cyrl
+ 956, 100, // enh -> Cyrl
+ 960, 500, // era -> Taml
+ 964, 135, // esg -> Gonm
+ 968, 10, // esh -> Arab
+ 972, 200, // ett -> Ital
+ 976, 100, // eve -> Cyrl
+ 980, 100, // evn -> Cyrl
+ 984, 10, // fa -> Arab
+ 987, 10, // fay -> Arab
+ 991, 10, // faz -> Arab
+ 995, 10, // fia -> Arab
+ 999, 105, // fmu -> Deva
+ 1003, 10, // fub -> Arab
+ 1007, 175, // gan -> Hans
+ 1011, 385, // gaq -> Orya
+ 1015, 155, // gas -> Gujr
+ 1019, 515, // gau -> Telu
+ 1023, 385, // gbj -> Orya
+ 1027, 105, // gbk -> Deva
+ 1031, 155, // gbl -> Gujr
+ 1035, 105, // gbm -> Deva
+ 1039, 10, // gbz -> Arab
+ 1043, 385, // gdb -> Orya
+ 1047, 100, // gdo -> Cyrl
+ 1051, 105, // gdx -> Deva
+ 1055, 120, // gez -> Ethi
+ 1059, 10, // ggg -> Arab
+ 1063, 10, // gha -> Arab
+ 1067, 105, // ghe -> Deva
+ 1071, 10, // ghr -> Arab
+ 1075, 535, // ght -> Tibt
+ 1079, 10, // gig -> Arab
+ 1083, 100, // gin -> Cyrl
+ 1087, 10, // gjk -> Arab
+ 1091, 10, // gju -> Arab
+ 1095, 100, // gld -> Cyrl
+ 1099, 10, // glh -> Arab
+ 1103, 10, // glk -> Arab
+ 1107, 120, // gmv -> Ethi
+ 1111, 275, // gmy -> Linb
+ 1115, 535, // goe -> Tibt
+ 1119, 120, // gof -> Ethi
+ 1123, 105, // gok -> Deva
+ 1127, 105, // gom -> Deva
+ 1131, 515, // gon -> Telu
+ 1135, 140, // got -> Goth
+ 1139, 105, // gra -> Deva
+ 1143, 95, // grc -> Cprt
+ 1147, 45, // grt -> Beng
+ 1151, 120, // gru -> Ethi
+ 1155, 155, // gu -> Gujr
+ 1158, 105, // gvr -> Deva
+ 1162, 10, // gwc -> Arab
+ 1166, 10, // gwf -> Arab
+ 1170, 10, // gwt -> Arab
+ 1174, 105, // gyo -> Deva
+ 1178, 10, // gzi -> Arab
+ 1182, 10, // ha_CM -> Arab
+ 1188, 10, // ha_SD -> Arab
+ 1194, 10, // hac -> Arab
+ 1198, 175, // hak -> Hans
+ 1202, 120, // har -> Ethi
+ 1206, 10, // haz -> Arab
+ 1210, 185, // hbo -> Hebr
+ 1214, 120, // hdy -> Ethi
+ 1218, 185, // he -> Hebr
+ 1221, 105, // hi -> Deva
+ 1224, 485, // hii -> Takr
+ 1228, 570, // hit -> Xsux
+ 1232, 10, // hkh -> Arab
+ 1236, 105, // hlb -> Deva
+ 1240, 190, // hlu -> Hluw
+ 1244, 410, // hmd -> Plrd
+ 1248, 50, // hmj -> Bopo
+ 1252, 50, // hmq -> Bopo
+ 1256, 10, // hnd -> Arab
+ 1260, 105, // hne -> Deva
+ 1264, 195, // hnj -> Hmnp
+ 1268, 260, // hnj_AU -> Laoo
+ 1275, 260, // hnj_CN -> Laoo
+ 1282, 260, // hnj_FR -> Laoo
+ 1289, 260, // hnj_GF -> Laoo
+ 1296, 260, // hnj_LA -> Laoo
+ 1303, 260, // hnj_MM -> Laoo
+ 1310, 260, // hnj_SR -> Laoo
+ 1317, 260, // hnj_TH -> Laoo
+ 1324, 260, // hnj_VN -> Laoo
+ 1331, 10, // hno -> Arab
+ 1335, 105, // hoc -> Deva
+ 1339, 10, // hoh -> Arab
+ 1343, 105, // hoj -> Deva
+ 1347, 170, // how -> Hani
+ 1351, 105, // hoy -> Deva
+ 1355, 345, // hpo -> Mymr
+ 1359, 475, // hrt -> Syrc
+ 1363, 10, // hrz -> Arab
+ 1367, 175, // hsn -> Hans
+ 1371, 10, // hss -> Arab
+ 1375, 570, // htx -> Xsux
+ 1379, 105, // hut -> Deva
+ 1383, 185, // huy -> Hebr
+ 1387, 100, // huz -> Cyrl
+ 1391, 20, // hy -> Armn
+ 1394, 20, // hyw -> Armn
+ 1398, 575, // ii -> Yiii
+ 1401, 285, // imy -> Lyci
+ 1405, 100, // inh -> Cyrl
+ 1409, 345, // int -> Mymr
+ 1413, 120, // ior -> Ethi
+ 1417, 500, // iru -> Taml
+ 1421, 10, // isk -> Arab
+ 1425, 185, // itk -> Hebr
+ 1429, 100, // itl -> Cyrl
+ 1433, 65, // iu -> Cans
+ 1436, 185, // iw -> Hebr
+ 1439, 210, // ja -> Jpan
+ 1442, 10, // jad -> Arab
+ 1446, 10, // jat -> Arab
+ 1450, 185, // jbe -> Hebr
+ 1454, 10, // jbn -> Arab
+ 1458, 100, // jct -> Cyrl
+ 1462, 535, // jda -> Tibt
+ 1466, 10, // jdg -> Arab
+ 1470, 100, // jdt -> Cyrl
+ 1474, 105, // jee -> Deva
+ 1478, 125, // jge -> Geor
+ 1482, 165, // jje -> Hang
+ 1486, 345, // jkm -> Mymr
+ 1490, 105, // jml -> Deva
+ 1494, 485, // jna -> Takr
+ 1498, 10, // jnd -> Arab
+ 1502, 105, // jnl -> Deva
+ 1506, 105, // jns -> Deva
+ 1510, 10, // jog -> Arab
+ 1514, 185, // jpa -> Hebr
+ 1518, 185, // jpr -> Hebr
+ 1522, 185, // jrb -> Hebr
+ 1526, 10, // jrb_MA -> Arab
+ 1533, 105, // jul -> Deva
+ 1537, 385, // jun -> Orya
+ 1541, 385, // juy -> Orya
+ 1545, 535, // jya -> Tibt
+ 1549, 185, // jye -> Hebr
+ 1553, 125, // ka -> Geor
+ 1556, 100, // kaa -> Cyrl
+ 1560, 100, // kap -> Cyrl
+ 1564, 225, // kaw -> Kawi
+ 1568, 100, // kbd -> Cyrl
+ 1572, 10, // kbu -> Arab
+ 1576, 10, // kby -> Arab
+ 1580, 100, // kca -> Cyrl
+ 1584, 45, // kdq -> Beng
+ 1588, 530, // kdt -> Thai
+ 1592, 100, // ket -> Cyrl
+ 1596, 105, // kex -> Deva
+ 1600, 515, // key -> Telu
+ 1604, 245, // kfa -> Knda
+ 1608, 105, // kfb -> Deva
+ 1612, 515, // kfc -> Telu
+ 1616, 245, // kfd -> Knda
+ 1620, 500, // kfe -> Taml
+ 1624, 320, // kfh -> Mlym
+ 1628, 500, // kfi -> Taml
+ 1632, 105, // kfk -> Deva
+ 1636, 10, // kfm -> Arab
+ 1640, 105, // kfp -> Deva
+ 1644, 105, // kfq -> Deva
+ 1648, 105, // kfr -> Deva
+ 1652, 105, // kfs -> Deva
+ 1656, 105, // kfx -> Deva
+ 1660, 105, // kfy -> Deva
+ 1664, 105, // kgj -> Deva
+ 1668, 105, // kgy -> Deva
+ 1672, 495, // khb -> Talu
+ 1676, 530, // khf -> Thai
+ 1680, 535, // khg -> Tibt
+ 1684, 105, // khn -> Deva
+ 1688, 345, // kht -> Mymr
+ 1692, 100, // khv -> Cyrl
+ 1696, 10, // khw -> Arab
+ 1700, 105, // kif -> Deva
+ 1704, 100, // kim -> Cyrl
+ 1708, 105, // kip -> Deva
+ 1712, 260, // kjg -> Laoo
+ 1716, 100, // kjh -> Cyrl
+ 1720, 105, // kjl -> Deva
+ 1724, 105, // kjo -> Deva
+ 1728, 345, // kjp -> Mymr
+ 1732, 530, // kjt -> Thai
+ 1736, 100, // kk -> Cyrl
+ 1739, 10, // kk_AF -> Arab
+ 1745, 10, // kk_CN -> Arab
+ 1751, 10, // kk_IR -> Arab
+ 1757, 10, // kk_MN -> Arab
+ 1763, 535, // kkf -> Tibt
+ 1767, 255, // kkh -> Lana
+ 1771, 105, // kkt -> Deva
+ 1775, 105, // kle -> Deva
+ 1779, 10, // klj -> Arab
+ 1783, 105, // klr -> Deva
+ 1787, 235, // km -> Khmr
+ 1790, 105, // kmj -> Deva
+ 1794, 10, // kmz -> Arab
+ 1798, 245, // kn -> Knda
+ 1801, 250, // ko -> Kore
+ 1804, 100, // koi -> Cyrl
+ 1808, 105, // kok -> Deva
+ 1812, 100, // kpt -> Cyrl
+ 1816, 100, // kpy -> Cyrl
+ 1820, 475, // kqd -> Syrc
+ 1824, 120, // kqy -> Ethi
+ 1828, 105, // kra -> Deva
+ 1832, 100, // krc -> Cyrl
+ 1836, 100, // krk -> Cyrl
+ 1840, 235, // krr -> Khmr
+ 1844, 105, // kru -> Deva
+ 1848, 235, // krv -> Khmr
+ 1852, 10, // ks -> Arab
+ 1855, 345, // ksu -> Mymr
+ 1859, 345, // ksw -> Mymr
+ 1863, 105, // ksz -> Deva
+ 1867, 120, // ktb -> Ethi
+ 1871, 10, // ktl -> Arab
+ 1875, 410, // ktp -> Plrd
+ 1879, 10, // ku_IR -> Arab
+ 1885, 10, // ku_LB -> Arab
+ 1891, 260, // kuf -> Laoo
+ 1895, 100, // kum -> Cyrl
+ 1899, 100, // kv -> Cyrl
+ 1902, 100, // kva -> Cyrl
+ 1906, 345, // kvq -> Mymr
+ 1910, 345, // kvt -> Mymr
+ 1914, 10, // kvx -> Arab
+ 1918, 215, // kvy -> Kali
+ 1922, 345, // kxf -> Mymr
+ 1926, 345, // kxk -> Mymr
+ 1930, 530, // kxm -> Thai
+ 1934, 10, // kxp -> Arab
+ 1938, 100, // ky -> Cyrl
+ 1941, 10, // ky_CN -> Arab
+ 1947, 215, // kyu -> Kali
+ 1951, 105, // kyv -> Deva
+ 1955, 105, // kyw -> Deva
+ 1959, 270, // lab -> Lina
+ 1963, 185, // lad -> Hebr
+ 1967, 105, // lae -> Deva
+ 1971, 10, // lah -> Arab
+ 1975, 280, // lbc -> Lisu
+ 1979, 100, // lbe -> Cyrl
+ 1983, 105, // lbf -> Deva
+ 1987, 535, // lbj -> Tibt
+ 1991, 105, // lbm -> Deva
+ 1995, 260, // lbo -> Laoo
+ 1999, 105, // lbr -> Deva
+ 2003, 530, // lcp -> Thai
+ 2007, 265, // lep -> Lepc
+ 2011, 100, // lez -> Cyrl
+ 2015, 105, // lhm -> Deva
+ 2019, 475, // lhs -> Syrc
+ 2023, 105, // lif -> Deva
+ 2027, 280, // lis -> Lisu
+ 2031, 535, // lkh -> Tibt
+ 2035, 10, // lki -> Arab
+ 2039, 105, // lmh -> Deva
+ 2043, 515, // lmn -> Telu
+ 2047, 260, // lo -> Laoo
+ 2050, 105, // loy -> Deva
+ 2054, 410, // lpo -> Plrd
+ 2058, 10, // lrc -> Arab
+ 2062, 10, // lrk -> Arab
+ 2066, 10, // lrl -> Arab
+ 2070, 10, // lsa -> Arab
+ 2074, 185, // lsd -> Hebr
+ 2078, 10, // lss -> Arab
+ 2082, 535, // luk -> Tibt
+ 2086, 105, // luu -> Deva
+ 2090, 10, // luv -> Arab
+ 2094, 10, // luz -> Arab
+ 2098, 530, // lwl -> Thai
+ 2102, 530, // lwm -> Thai
+ 2106, 535, // lya -> Tibt
+ 2110, 175, // lzh -> Hans
+ 2114, 105, // mag -> Deva
+ 2118, 105, // mai -> Deva
+ 2122, 360, // man_GN -> Nkoo
+ 2129, 10, // mby -> Arab
+ 2133, 10, // mde -> Arab
+ 2137, 100, // mdf -> Cyrl
+ 2141, 120, // mdx -> Ethi
+ 2145, 120, // mdy -> Ethi
+ 2149, 10, // mfa -> Arab
+ 2153, 10, // mfi -> Arab
+ 2157, 105, // mgp -> Deva
+ 2161, 10, // mhj -> Arab
+ 2165, 295, // mid -> Mand
+ 2169, 105, // mjl -> Deva
+ 2173, 320, // mjq -> Mlym
+ 2177, 320, // mjr -> Mlym
+ 2181, 105, // mjt -> Deva
+ 2185, 515, // mju -> Telu
+ 2189, 320, // mjv -> Mlym
+ 2193, 105, // mjz -> Deva
+ 2197, 100, // mk -> Cyrl
+ 2200, 105, // mkb -> Deva
+ 2204, 105, // mke -> Deva
+ 2208, 10, // mki -> Arab
+ 2212, 530, // mkm -> Thai
+ 2216, 320, // ml -> Mlym
+ 2219, 530, // mlf -> Thai
+ 2223, 100, // mn -> Cyrl
+ 2226, 330, // mn_CN -> Mong
+ 2232, 45, // mni -> Beng
+ 2236, 10, // mnj -> Arab
+ 2240, 100, // mns -> Cyrl
+ 2244, 345, // mnw -> Mymr
+ 2248, 530, // mpz -> Thai
+ 2252, 105, // mr -> Deva
+ 2255, 530, // mra -> Thai
+ 2259, 105, // mrd -> Deva
+ 2263, 100, // mrj -> Cyrl
+ 2267, 335, // mro -> Mroo
+ 2271, 105, // mrr -> Deva
+ 2275, 10, // ms_CC -> Arab
+ 2281, 100, // mtm -> Cyrl
+ 2285, 105, // mtr -> Deva
+ 2289, 100, // mud -> Cyrl
+ 2293, 535, // muk -> Tibt
+ 2297, 105, // mut -> Deva
+ 2301, 500, // muv -> Taml
+ 2305, 120, // muz -> Ethi
+ 2309, 330, // mvf -> Mong
+ 2313, 10, // mvy -> Arab
+ 2317, 120, // mvz -> Ethi
+ 2321, 105, // mwr -> Deva
+ 2325, 345, // mwt -> Mymr
+ 2329, 195, // mww -> Hmnp
+ 2333, 345, // my -> Mymr
+ 2336, 120, // mym -> Ethi
+ 2340, 100, // myv -> Cyrl
+ 2344, 295, // myz -> Mand
+ 2348, 10, // mzn -> Arab
+ 2352, 175, // nan -> Hans
+ 2356, 105, // nao -> Deva
+ 2360, 105, // ncd -> Deva
+ 2364, 260, // ncq -> Laoo
+ 2368, 100, // ndf -> Cyrl
+ 2372, 105, // ne -> Deva
+ 2375, 100, // neg -> Cyrl
+ 2379, 535, // neh -> Tibt
+ 2383, 570, // nei -> Xsux
+ 2387, 105, // new -> Deva
+ 2391, 260, // ngt -> Laoo
+ 2395, 100, // nio -> Cyrl
+ 2399, 515, // nit -> Telu
+ 2403, 100, // niv -> Cyrl
+ 2407, 10, // nli -> Arab
+ 2411, 10, // nlm -> Arab
+ 2415, 105, // nlx -> Deva
+ 2419, 105, // nmm -> Deva
+ 2423, 560, // nnp -> Wcho
+ 2427, 255, // nod -> Lana
+ 2431, 105, // noe -> Deva
+ 2435, 100, // nog -> Cyrl
+ 2439, 105, // noi -> Deva
+ 2443, 430, // non -> Runr
+ 2447, 575, // nos -> Yiii
+ 2451, 535, // npb -> Tibt
+ 2455, 360, // nqo -> Nkoo
+ 2459, 575, // nsd -> Yiii
+ 2463, 575, // nsf -> Yiii
+ 2467, 65, // nsk -> Cans
+ 2471, 540, // nst -> Tnsa
+ 2475, 575, // nsv -> Yiii
+ 2479, 575, // nty -> Yiii
+ 2483, 10, // ntz -> Arab
+ 2487, 355, // nwc -> Newa
+ 2491, 105, // nwx -> Deva
+ 2495, 530, // nyl -> Thai
+ 2499, 10, // nyq -> Arab
+ 2503, 100, // oaa -> Cyrl
+ 2507, 100, // oac -> Cyrl
+ 2511, 475, // oar -> Syrc
+ 2515, 125, // oav -> Geor
+ 2519, 405, // obm -> Phnx
+ 2523, 345, // obr -> Mymr
+ 2527, 10, // odk -> Arab
+ 2531, 570, // oht -> Xsux
+ 2535, 65, // oj -> Cans
+ 2538, 65, // ojs -> Cans
+ 2542, 165, // okm -> Hang
+ 2546, 170, // oko -> Hani
+ 2550, 235, // okz -> Khmr
+ 2554, 105, // ola -> Deva
+ 2558, 535, // ole -> Tibt
+ 2562, 100, // omk -> Cyrl
+ 2566, 340, // omp -> Mtei
+ 2570, 325, // omr -> Modi
+ 2574, 105, // oon -> Deva
+ 2578, 385, // or -> Orya
+ 2581, 515, // ort -> Telu
+ 2585, 10, // oru -> Arab
+ 2589, 100, // orv -> Cyrl
+ 2593, 100, // os -> Cyrl
+ 2596, 390, // osa -> Osge
+ 2600, 200, // osc -> Ital
+ 2604, 205, // osi -> Java
+ 2608, 10, // ota -> Arab
+ 2612, 535, // otb -> Tibt
+ 2616, 380, // otk -> Orkh
+ 2620, 145, // oty -> Gran
+ 2624, 160, // pa -> Guru
+ 2627, 10, // pa_PK -> Arab
+ 2633, 400, // pal -> Phli
+ 2637, 100, // paq -> Cyrl
+ 2641, 10, // pbt -> Arab
+ 2645, 235, // pcb -> Khmr
+ 2649, 345, // pce -> Mymr
+ 2653, 320, // pcf -> Mlym
+ 2657, 320, // pcg -> Mlym
+ 2661, 105, // pch -> Deva
+ 2665, 105, // pci -> Deva
+ 2669, 515, // pcj -> Telu
+ 2673, 385, // peg -> Orya
+ 2677, 565, // peo -> Xpeo
+ 2681, 230, // pgd -> Khar
+ 2685, 105, // pgg -> Deva
+ 2689, 370, // pgl -> Ogam
+ 2693, 200, // pgn -> Ital
+ 2697, 105, // phd -> Deva
+ 2701, 345, // phk -> Mymr
+ 2705, 10, // phl -> Arab
+ 2709, 405, // phn -> Phnx
+ 2713, 260, // pho -> Laoo
+ 2717, 10, // phr -> Arab
+ 2721, 530, // pht -> Thai
+ 2725, 10, // phv -> Arab
+ 2729, 105, // phw -> Deva
+ 2733, 455, // pi -> Sinh
+ 2736, 55, // pka -> Brah
+ 2740, 320, // pkr -> Mlym
+ 2744, 10, // plk -> Arab
+ 2748, 345, // pll -> Mymr
+ 2752, 55, // pmh -> Brah
+ 2756, 150, // pnt -> Grek
+ 2760, 230, // pra -> Khar
+ 2764, 10, // prc -> Arab
+ 2768, 10, // prd -> Arab
+ 2772, 530, // prt -> Thai
+ 2776, 10, // prx -> Arab
+ 2780, 10, // ps -> Arab
+ 2783, 10, // psh -> Arab
+ 2787, 10, // psi -> Arab
+ 2791, 10, // pst -> Arab
+ 2795, 105, // pum -> Deva
+ 2799, 345, // pwo -> Mymr
+ 2803, 105, // pwr -> Deva
+ 2807, 530, // pww -> Thai
+ 2811, 345, // pyx -> Mymr
+ 2815, 10, // qxq -> Arab
+ 2819, 105, // raa -> Deva
+ 2823, 105, // rab -> Deva
+ 2827, 105, // raf -> Deva
+ 2831, 45, // rah -> Beng
+ 2835, 105, // raj -> Deva
+ 2839, 105, // rav -> Deva
+ 2843, 345, // rbb -> Mymr
+ 2847, 10, // rdb -> Arab
+ 2851, 385, // rei -> Orya
+ 2855, 425, // rhg -> Rohg
+ 2859, 105, // rji -> Deva
+ 2863, 105, // rjs -> Deva
+ 2867, 235, // rka -> Khmr
+ 2871, 345, // rki -> Mymr
+ 2875, 45, // rkt -> Beng
+ 2879, 20, // rmi -> Armn
+ 2883, 10, // rmt -> Arab
+ 2887, 345, // rmz -> Mymr
+ 2891, 100, // rom_BG -> Cyrl
+ 2898, 100, // rsk -> Cyrl
+ 2902, 105, // rtw -> Deva
+ 2906, 100, // ru -> Cyrl
+ 2909, 100, // rue -> Cyrl
+ 2913, 100, // rut -> Cyrl
+ 2917, 105, // rwr -> Deva
+ 2921, 220, // ryu -> Kana
+ 2925, 105, // sa -> Deva
+ 2928, 100, // sah -> Cyrl
+ 2932, 435, // sam -> Samr
+ 2936, 375, // sat -> Olck
+ 2940, 445, // saz -> Saur
+ 2944, 10, // sbn -> Arab
+ 2948, 535, // sbu -> Tibt
+ 2952, 105, // sck -> Deva
+ 2956, 10, // scl -> Arab
+ 2960, 10, // scl_IN -> Arab
+ 2967, 105, // scp -> Deva
+ 2971, 260, // sct -> Laoo
+ 2975, 485, // scu -> Takr
+ 2979, 150, // scx -> Grek
+ 2983, 10, // sd -> Arab
+ 2986, 105, // sd_IN -> Deva
+ 2992, 10, // sdb -> Arab
+ 2996, 10, // sdf -> Arab
+ 3000, 10, // sdg -> Arab
+ 3004, 10, // sdh -> Arab
+ 3008, 10, // sds -> Arab
+ 3012, 100, // sel -> Cyrl
+ 3016, 410, // sfm -> Plrd
+ 3020, 370, // sga -> Ogam
+ 3024, 100, // sgh -> Cyrl
+ 3028, 105, // sgj -> Deva
+ 3032, 10, // sgr -> Arab
+ 3036, 535, // sgt -> Tibt
+ 3040, 120, // sgw -> Ethi
+ 3044, 10, // sgy -> Arab
+ 3048, 10, // shd -> Arab
+ 3052, 520, // shi -> Tfng
+ 3056, 10, // shm -> Arab
+ 3060, 345, // shn -> Mymr
+ 3064, 10, // shu -> Arab
+ 3068, 10, // shv -> Arab
+ 3072, 455, // si -> Sinh
+ 3075, 100, // sia -> Cyrl
+ 3079, 535, // sip -> Tibt
+ 3083, 10, // siy -> Arab
+ 3087, 10, // siz -> Arab
+ 3091, 100, // sjd -> Cyrl
+ 3095, 105, // sjp -> Deva
+ 3099, 100, // sjt -> Cyrl
+ 3103, 530, // skb -> Thai
+ 3107, 105, // skj -> Deva
+ 3111, 10, // skr -> Arab
+ 3115, 575, // smh -> Yiii
+ 3119, 435, // smp -> Samr
+ 3123, 235, // smu -> Khmr
+ 3127, 10, // smy -> Arab
+ 3131, 510, // soa -> Tavt
+ 3135, 460, // sog -> Sogd
+ 3139, 105, // soi -> Deva
+ 3143, 530, // sou -> Thai
+ 3147, 535, // spt -> Tibt
+ 3151, 385, // spv -> Orya
+ 3155, 10, // sqo -> Arab
+ 3159, 260, // sqq -> Laoo
+ 3163, 10, // sqt -> Arab
+ 3167, 100, // sr -> Cyrl
+ 3170, 465, // srb -> Sora
+ 3174, 10, // srh -> Arab
+ 3178, 105, // srx -> Deva
+ 3182, 10, // srz -> Arab
+ 3186, 10, // ssh -> Arab
+ 3190, 260, // sss -> Laoo
+ 3194, 10, // sts -> Arab
+ 3198, 120, // stv -> Ethi
+ 3202, 100, // sty -> Cyrl
+ 3206, 105, // suz -> Deva
+ 3210, 125, // sva -> Geor
+ 3214, 10, // swb -> Arab
+ 3218, 170, // swi -> Hani
+ 3222, 105, // swv -> Deva
+ 3226, 475, // syc -> Syrc
+ 3230, 45, // syl -> Beng
+ 3234, 475, // syn -> Syrc
+ 3238, 475, // syr -> Syrc
+ 3242, 105, // syw -> Deva
+ 3246, 500, // ta -> Taml
+ 3249, 100, // tab -> Cyrl
+ 3253, 105, // taj -> Deva
+ 3257, 480, // tbk -> Tagb
+ 3261, 535, // tcn -> Tibt
+ 3265, 345, // tco -> Mymr
+ 3269, 500, // tcx -> Taml
+ 3273, 245, // tcy -> Knda
+ 3277, 520, // tda -> Tfng
+ 3281, 105, // tdb -> Deva
+ 3285, 490, // tdd -> Tale
+ 3289, 105, // tdg -> Deva
+ 3293, 105, // tdh -> Deva
+ 3297, 515, // te -> Telu
+ 3300, 205, // tes -> Java
+ 3304, 100, // tg -> Cyrl
+ 3307, 10, // tg_PK -> Arab
+ 3313, 105, // tge -> Deva
+ 3317, 535, // tgf -> Tibt
+ 3321, 530, // th -> Thai
+ 3324, 105, // the -> Deva
+ 3328, 105, // thf -> Deva
+ 3332, 490, // thi -> Tale
+ 3336, 105, // thl -> Deva
+ 3340, 530, // thm -> Thai
+ 3344, 105, // thq -> Deva
+ 3348, 105, // thr -> Deva
+ 3352, 105, // ths -> Deva
+ 3356, 120, // ti -> Ethi
+ 3359, 120, // tig -> Ethi
+ 3363, 105, // tij -> Deva
+ 3367, 100, // tin -> Cyrl
+ 3371, 345, // tjl -> Mymr
+ 3375, 10, // tjo -> Arab
+ 3379, 105, // tkb -> Deva
+ 3383, 10, // tks -> Arab
+ 3387, 105, // tkt -> Deva
+ 3391, 475, // tmr -> Syrc
+ 3395, 60, // tnv -> Cakm
+ 3399, 10, // tov -> Arab
+ 3403, 235, // tpu -> Khmr
+ 3407, 10, // tra -> Arab
+ 3411, 185, // trg -> Hebr
+ 3415, 10, // trm -> Arab
+ 3419, 10, // trw -> Arab
+ 3423, 150, // tsd -> Grek
+ 3427, 535, // tsj -> Tibt
+ 3431, 100, // tt -> Cyrl
+ 3434, 260, // tth -> Laoo
+ 3438, 260, // tto -> Laoo
+ 3442, 530, // tts -> Thai
+ 3446, 345, // tvn -> Mymr
+ 3450, 105, // twm -> Deva
+ 3454, 505, // txg -> Tang
+ 3458, 545, // txo -> Toto
+ 3462, 510, // tyr -> Tavt
+ 3466, 100, // tyv -> Cyrl
+ 3470, 100, // ude -> Cyrl
+ 3474, 320, // udg -> Mlym
+ 3478, 0, // udi -> Aghb
+ 3482, 100, // udm -> Cyrl
+ 3486, 10, // ug -> Arab
+ 3489, 100, // ug_KZ -> Cyrl
+ 3495, 100, // ug_MN -> Cyrl
+ 3501, 550, // uga -> Ugar
+ 3505, 100, // ugh -> Cyrl
+ 3509, 530, // ugo -> Thai
+ 3513, 100, // uk -> Cyrl
+ 3516, 385, // uki -> Orya
+ 3520, 100, // ulc -> Cyrl
+ 3524, 45, // unr -> Beng
+ 3528, 105, // unr_NP -> Deva
+ 3535, 45, // unx -> Beng
+ 3539, 10, // ur -> Arab
+ 3542, 530, // urk -> Thai
+ 3546, 10, // ush -> Arab
+ 3550, 150, // uum -> Grek
+ 3554, 10, // uz_AF -> Arab
+ 3560, 100, // uz_CN -> Cyrl
+ 3566, 10, // uzs -> Arab
+ 3570, 500, // vaa -> Taml
+ 3574, 10, // vaf -> Arab
+ 3578, 105, // vah -> Deva
+ 3582, 555, // vai -> Vaii
+ 3586, 105, // vas -> Deva
+ 3590, 105, // vav -> Deva
+ 3594, 105, // vay -> Deva
+ 3598, 10, // vgr -> Arab
+ 3602, 245, // vmd -> Knda
+ 3606, 10, // vmh -> Arab
+ 3610, 120, // wal -> Ethi
+ 3614, 10, // wbk -> Arab
+ 3618, 515, // wbq -> Telu
+ 3622, 105, // wbr -> Deva
+ 3626, 10, // wlo -> Arab
+ 3630, 105, // wme -> Deva
+ 3634, 10, // wne -> Arab
+ 3638, 10, // wni -> Arab
+ 3642, 130, // wsg -> Gong
+ 3646, 10, // wsv -> Arab
+ 3650, 105, // wtm -> Deva
+ 3654, 175, // wuu -> Hans
+ 3658, 100, // xal -> Cyrl
+ 3662, 120, // xan -> Ethi
+ 3666, 100, // xas -> Cyrl
+ 3670, 85, // xco -> Chrs
+ 3674, 70, // xcr -> Cari
+ 3678, 100, // xdq -> Cyrl
+ 3682, 10, // xhe -> Arab
+ 3686, 235, // xhm -> Khmr
+ 3690, 385, // xis -> Orya
+ 3694, 10, // xka -> Arab
+ 3698, 10, // xkc -> Arab
+ 3702, 10, // xkj -> Arab
+ 3706, 10, // xkp -> Arab
+ 3710, 285, // xlc -> Lyci
+ 3714, 290, // xld -> Lydi
+ 3718, 115, // xly -> Elym
+ 3722, 125, // xmf -> Geor
+ 3726, 300, // xmn -> Mani
+ 3730, 315, // xmr -> Merc
+ 3734, 350, // xna -> Narb
+ 3738, 105, // xnr -> Deva
+ 3742, 150, // xpg -> Grek
+ 3746, 370, // xpi -> Ogam
+ 3750, 100, // xpm -> Cyrl
+ 3754, 415, // xpr -> Prti
+ 3758, 100, // xrm -> Cyrl
+ 3762, 100, // xrn -> Cyrl
+ 3766, 440, // xsa -> Sarb
+ 3770, 105, // xsr -> Deva
+ 3774, 500, // xub -> Taml
+ 3778, 500, // xuj -> Taml
+ 3782, 200, // xve -> Ital
+ 3786, 10, // xvi -> Arab
+ 3790, 100, // xwo -> Cyrl
+ 3794, 305, // xzh -> Marc
+ 3798, 100, // yai -> Cyrl
+ 3802, 105, // ybh -> Deva
+ 3806, 105, // ybi -> Deva
+ 3810, 10, // ydg -> Arab
+ 3814, 320, // yea -> Mlym
+ 3818, 150, // yej -> Grek
+ 3822, 515, // yeu -> Telu
+ 3826, 410, // ygp -> Plrd
+ 3830, 185, // yhd -> Hebr
+ 3834, 185, // yi -> Hebr
+ 3837, 575, // yig -> Yiii
+ 3841, 185, // yih -> Hebr
+ 3845, 575, // yiv -> Yiii
+ 3849, 100, // ykg -> Cyrl
+ 3853, 410, // yna -> Plrd
+ 3857, 100, // ynk -> Cyrl
+ 3861, 210, // yoi -> Jpan
+ 3865, 530, // yoy -> Thai
+ 3869, 100, // yrk -> Cyrl
+ 3873, 575, // ysd -> Yiii
+ 3877, 575, // ysn -> Yiii
+ 3881, 575, // ysp -> Yiii
+ 3885, 100, // ysr -> Cyrl
+ 3889, 410, // ysy -> Plrd
+ 3893, 185, // yud -> Hebr
+ 3897, 180, // yue -> Hant
+ 3901, 175, // yue_CN -> Hans
+ 3908, 100, // yug -> Cyrl
+ 3912, 100, // yux -> Cyrl
+ 3916, 410, // ywq -> Plrd
+ 3920, 410, // ywu -> Plrd
+ 3924, 535, // zau -> Tibt
+ 3928, 10, // zba -> Arab
+ 3932, 170, // zch -> Hani
+ 3936, 10, // zdj -> Arab
+ 3940, 170, // zeh -> Hani
+ 3944, 520, // zen -> Tfng
+ 3948, 170, // zgb -> Hani
+ 3952, 520, // zgh -> Tfng
+ 3956, 170, // zgm -> Hani
+ 3960, 170, // zgn -> Hani
+ 3964, 175, // zh -> Hans
+ 3967, 180, // zh_AU -> Hant
+ 3973, 180, // zh_BN -> Hant
+ 3979, 180, // zh_GB -> Hant
+ 3985, 180, // zh_GF -> Hant
+ 3991, 180, // zh_HK -> Hant
+ 3997, 180, // zh_ID -> Hant
+ 4003, 180, // zh_MO -> Hant
+ 4009, 180, // zh_PA -> Hant
+ 4015, 180, // zh_PF -> Hant
+ 4021, 180, // zh_PH -> Hant
+ 4027, 180, // zh_SR -> Hant
+ 4033, 180, // zh_TH -> Hant
+ 4039, 180, // zh_TW -> Hant
+ 4045, 180, // zh_US -> Hant
+ 4051, 180, // zh_VN -> Hant
+ 4057, 170, // zhd -> Hani
+ 4061, 365, // zhx -> Nshu
+ 4065, 100, // zko -> Cyrl
+ 4069, 240, // zkt -> Kits
+ 4073, 100, // zkz -> Cyrl
+ 4077, 170, // zlj -> Hani
+ 4081, 170, // zln -> Hani
+ 4085, 170, // zlq -> Hani
+ 4089, 170, // zqe -> Hani
+ 4093, 185, // zrp -> Hebr
+ 4097, 10, // zum -> Arab
+ 4101, 170, // zyg -> Hani
+ 4105, 170, // zyn -> Hani
+ 4109, 170, // zzj -> Hani
};
//======================================================================
diff --git a/libicu/cts_headers/locdistance.h b/libicu/cts_headers/locdistance.h
index 51b777e62..952f622e8 100644
--- a/libicu/cts_headers/locdistance.h
+++ b/libicu/cts_headers/locdistance.h
@@ -62,7 +62,7 @@ public:
ULocMatchFavorSubtag favorSubtag,
ULocMatchDirection direction) const;
- UBool isParadigmLSR(const LSR &lsr) const;
+ bool isParadigmLSR(const LSR &lsr) const;
int32_t getDefaultScriptDistance() const {
return defaultScriptDistance;
@@ -83,14 +83,14 @@ private:
// tic constexpr int32_t MAX_INDEX = 0x1fffff; // avoids sign bit
static constexpr int32_t INDEX_NEG_1 = 0xfffffc00;
- LocaleDistance(const LocaleDistanceData &data, const XLikelySubtags &likely);
+ LocaleDistance(const LocaleDistanceData &data, const LikelySubtags &likely);
LocaleDistance(const LocaleDistance &other) = delete;
LocaleDistance &operator=(const LocaleDistance &other) = delete;
static void initLocaleDistance(UErrorCode &errorCode);
- UBool isMatch(const LSR &desired, const LSR &supported,
- int32_t shiftedThreshold, ULocMatchFavorSubtag favorSubtag) const {
+ bool isMatch(const LSR &desired, const LSR &supported,
+ int32_t shiftedThreshold, ULocMatchFavorSubtag favorSubtag) const {
const LSR *pSupp = &supported;
return getBestIndexAndDistance(
desired, &pSupp, 1,
@@ -119,7 +119,7 @@ private:
return defaultRegionDistance;
}
- const XLikelySubtags &likelySubtags;
+ const LikelySubtags &likelySubtags;
// The trie maps each dlang+slang+dscript+sscript+dregion+sregion
// (encoded in ASCII with bit 7 set on the last character of each subtag) to a distance.
diff --git a/libicu/cts_headers/loclikelysubtags.h b/libicu/cts_headers/loclikelysubtags.h
index ebd9c1530..5c51e353c 100644
--- a/libicu/cts_headers/loclikelysubtags.h
+++ b/libicu/cts_headers/loclikelysubtags.h
@@ -19,7 +19,7 @@
U_NAMESPACE_BEGIN
-struct XLikelySubtagsData;
+struct LikelySubtagsData;
struct LocaleDistanceData {
LocaleDistanceData() = default;
@@ -37,15 +37,14 @@ private:
LocaleDistanceData &operator=(const LocaleDistanceData &) = delete;
};
-// TODO(ICU-20777): Rename to just LikelySubtags.
-class XLikelySubtags final : public UMemory {
+class LikelySubtags final : public UMemory {
public:
- ~XLikelySubtags();
+ ~LikelySubtags();
static constexpr int32_t SKIP_SCRIPT = 1;
// VisibleForTesting
- static const XLikelySubtags *getSingleton(UErrorCode &errorCode);
+ static const LikelySubtags *getSingleton(UErrorCode &errorCode);
// VisibleForTesting
LSR makeMaximizedLsrFrom(const Locale &locale,
@@ -72,9 +71,9 @@ public:
const LocaleDistanceData &getDistanceData() const { return distanceData; }
private:
- XLikelySubtags(XLikelySubtagsData &data);
- XLikelySubtags(const XLikelySubtags &other) = delete;
- XLikelySubtags &operator=(const XLikelySubtags &other) = delete;
+ LikelySubtags(LikelySubtagsData &data);
+ LikelySubtags(const LikelySubtags &other) = delete;
+ LikelySubtags &operator=(const LikelySubtags &other) = delete;
static void initLikelySubtags(UErrorCode &errorCode);
@@ -120,7 +119,7 @@ private:
int32_t lsrsLength;
#endif
- // distance/matcher data: see comment in XLikelySubtagsData::load()
+ // distance/matcher data: see comment in LikelySubtagsData::load()
LocaleDistanceData distanceData;
};
diff --git a/libicu/cts_headers/locutil.h b/libicu/cts_headers/locutil.h
index 31bfffd7a..8cf109c20 100644
--- a/libicu/cts_headers/locutil.h
+++ b/libicu/cts_headers/locutil.h
@@ -28,7 +28,7 @@ public:
static Locale& initLocaleFromName(const UnicodeString& id, Locale& result);
static UnicodeString& initNameFromLocale(const Locale& locale, UnicodeString& result);
static const Hashtable* getAvailableLocaleNames(const UnicodeString& bundleID);
- static UBool isFallbackOf(const UnicodeString& root, const UnicodeString& child);
+ static bool isFallbackOf(const UnicodeString& root, const UnicodeString& child);
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/measunit_impl.h b/libicu/cts_headers/measunit_impl.h
index c60ff2fc3..5ee5c7bb9 100644
--- a/libicu/cts_headers/measunit_impl.h
+++ b/libicu/cts_headers/measunit_impl.h
@@ -14,11 +14,9 @@
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
class LongNameHandler;
}
-} // namespace number
static const char16_t kDefaultCurrency[] = u"XXX";
static const char kDefaultCurrency8[] = "XXX";
diff --git a/libicu/cts_headers/messageformat2_allocation.h b/libicu/cts_headers/messageformat2_allocation.h
new file mode 100644
index 000000000..7be27e222
--- /dev/null
+++ b/libicu/cts_headers/messageformat2_allocation.h
@@ -0,0 +1,147 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_UTILS_H
+#define MESSAGEFORMAT2_UTILS_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/unistr.h"
+#include "uvector.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ // Helpers
+
+ template<typename T>
+ static T* copyArray(const T* source, int32_t len, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ U_ASSERT(source != nullptr);
+ U_ASSERT(len >= 0);
+ T* dest = new T[len];
+ if (dest == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ } else {
+ for (int32_t i = 0; i < len; i++) {
+ dest[i] = source[i];
+ }
+ }
+ return dest;
+ }
+
+ template<typename T>
+ static T* copyVectorToArray(const UVector& source, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ int32_t len = source.size();
+ T* dest = new T[len];
+ if (dest == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ } else {
+ for (int32_t i = 0; i < len; i++) {
+ dest[i] = *(static_cast<T*>(source.elementAt(i)));
+ }
+ }
+ return dest;
+ }
+
+ template<typename T>
+ static T* moveVectorToArray(UVector& source, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ int32_t len = source.size();
+ T* dest = new T[len];
+ if (dest == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ } else {
+ for (int32_t i = 0; i < len; i++) {
+ dest[i] = std::move(*static_cast<T*>(source.elementAt(i)));
+ }
+ source.removeAllElements();
+ }
+ return dest;
+ }
+
+ inline UVector* createUVectorNoAdopt(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ LocalPointer<UVector> result(new UVector(status));
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ return result.orphan();
+ }
+
+ inline UVector* createUVector(UErrorCode& status) {
+ UVector* result = createUVectorNoAdopt(status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ result->setDeleter(uprv_deleteUObject);
+ return result;
+ }
+
+ static UBool stringsEqual(const UElement s1, const UElement s2) {
+ return (*static_cast<UnicodeString*>(s1.pointer) == *static_cast<UnicodeString*>(s2.pointer));
+ }
+
+ inline UVector* createStringUVector(UErrorCode& status) {
+ UVector* v = createUVector(status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ v->setComparer(stringsEqual);
+ return v;
+ }
+
+ inline UVector* createStringVectorNoAdopt(UErrorCode& status) {
+ UVector* v = createUVectorNoAdopt(status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ v->setComparer(stringsEqual);
+ return v;
+ }
+
+ template<typename T>
+ inline T* create(T&& node, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ T* result = new T(std::move(node));
+ if (result == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+ }
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_UTILS_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/libicu/cts_headers/messageformat2_checker.h b/libicu/cts_headers/messageformat2_checker.h
new file mode 100644
index 000000000..4bb0498ef
--- /dev/null
+++ b/libicu/cts_headers/messageformat2_checker.h
@@ -0,0 +1,97 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT_CHECKER_H
+#define MESSAGEFORMAT_CHECKER_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model.h"
+#include "messageformat2_errors.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // Used for checking missing selector annotation errors
+ // and duplicate declaration errors (specifically for
+ // implicit declarations)
+ class TypeEnvironment : public UMemory {
+ public:
+ // MessageFormat has a simple type system;
+ // variables are in-scope and annotated; in-scope and unannotated;
+ // or free (a free variable has no explicit declaration in the scope
+ // of its use.)
+ enum Type {
+ Annotated,
+ Unannotated,
+ FreeVariable
+ };
+ void extend(const VariableName&, Type, UErrorCode& status);
+ Type get(const VariableName&) const;
+ bool known(const VariableName&) const;
+ TypeEnvironment(UErrorCode& status);
+
+ virtual ~TypeEnvironment();
+
+ private:
+ // Stores variables known to be annotated.
+ LocalPointer<UVector> annotated; // Vector of `VariableName`s
+ // Stores variables that are in-scope but unannotated.
+ LocalPointer<UVector> unannotated; // Vector of `VariableName`s
+ // Stores free variables that are used in the RHS of a declaration
+ LocalPointer<UVector> freeVars; // Vector of `VariableNames`; tracks free variables
+ // This can't just be "variables that don't appear in
+ // `annotated` or `unannotated`", as a use introduces
+ // an explicit declaration
+ }; // class TypeEnvironment
+
+ // Checks a data model for semantic errors
+ // (Errors are defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md )
+ class Checker {
+ public:
+ void check(UErrorCode&);
+ Checker(const MFDataModel& m, StaticErrors& e) : dataModel(m), errors(e) {}
+ private:
+
+ void requireAnnotated(const TypeEnvironment&, const Expression&, UErrorCode&);
+ void addFreeVars(TypeEnvironment& t, const Operand&, UErrorCode&);
+ void addFreeVars(TypeEnvironment& t, const Operator&, UErrorCode&);
+ void addFreeVars(TypeEnvironment& t, const OptionMap&, UErrorCode&);
+ void addFreeVars(TypeEnvironment& t, const Expression&, UErrorCode&);
+ void checkDeclarations(TypeEnvironment&, UErrorCode&);
+ void checkSelectors(const TypeEnvironment&, UErrorCode&);
+ void checkVariants(UErrorCode&);
+ void check(const OptionMap&);
+ void check(const Operand&);
+ void check(const Expression&);
+ void check(const Pattern&);
+ const MFDataModel& dataModel;
+ StaticErrors& errors;
+ }; // class Checker
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_CHECKER_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
+
diff --git a/libicu/cts_headers/messageformat2_errors.h b/libicu/cts_headers/messageformat2_errors.h
new file mode 100644
index 000000000..ef2ad20fa
--- /dev/null
+++ b/libicu/cts_headers/messageformat2_errors.h
@@ -0,0 +1,160 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_ERRORS_H
+#define MESSAGEFORMAT2_ERRORS_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+/**
+ * \file
+ * \brief C++ API: Formats messages using the draft MessageFormat 2.0.
+ */
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model_names.h"
+#include "unicode/unistr.h"
+
+#include "uvector.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // Errors
+ // ----------
+
+ class DynamicErrors;
+ class StaticErrors;
+
+ // Internal class -- used as a private field in MessageFormatter
+ template <typename ErrorType>
+ class Error : public UObject {
+ public:
+ Error(ErrorType ty) : type(ty) {}
+ Error(ErrorType ty, const UnicodeString& s) : type(ty), contents(s) {}
+ virtual ~Error();
+ private:
+ friend class DynamicErrors;
+ friend class StaticErrors;
+
+ ErrorType type;
+ UnicodeString contents;
+ }; // class Error
+
+ enum StaticErrorType {
+ DuplicateDeclarationError,
+ DuplicateOptionName,
+ MissingSelectorAnnotation,
+ NonexhaustivePattern,
+ SyntaxError,
+ UnsupportedStatementError,
+ VariantKeyMismatchError
+ };
+
+ enum DynamicErrorType {
+ UnresolvedVariable,
+ FormattingError,
+ OperandMismatchError,
+ ReservedError,
+ SelectorError,
+ UnknownFunction,
+ };
+
+ using StaticError = Error<StaticErrorType>;
+ using DynamicError = Error<DynamicErrorType>;
+
+ // These explicit instantiations have to come before the
+ // destructor definitions
+ template<>
+ Error<StaticErrorType>::~Error();
+ template<>
+ Error<DynamicErrorType>::~Error();
+
+ class StaticErrors : public UObject {
+ private:
+ friend class DynamicErrors;
+
+ LocalPointer<UVector> syntaxAndDataModelErrors;
+ bool dataModelError = false;
+ bool missingSelectorAnnotationError = false;
+ bool syntaxError = false;
+
+ public:
+ StaticErrors(UErrorCode&);
+
+ void setMissingSelectorAnnotation(UErrorCode&);
+ void setDuplicateOptionName(UErrorCode&);
+ void addSyntaxError(UErrorCode&);
+ bool hasDataModelError() const { return dataModelError; }
+ bool hasSyntaxError() const { return syntaxError; }
+ bool hasMissingSelectorAnnotationError() const { return missingSelectorAnnotationError; }
+ void addError(StaticError&&, UErrorCode&);
+ void checkErrors(UErrorCode&);
+
+ const StaticError& first() const;
+ StaticErrors(const StaticErrors&, UErrorCode&);
+ StaticErrors(StaticErrors&&) noexcept;
+ virtual ~StaticErrors();
+ }; // class StaticErrors
+
+ class DynamicErrors : public UObject {
+ private:
+ const StaticErrors& staticErrors;
+ LocalPointer<UVector> resolutionAndFormattingErrors;
+ bool formattingError = false;
+ bool selectorError = false;
+ bool unknownFunctionError = false;
+ bool unresolvedVariableError = false;
+
+ public:
+ DynamicErrors(const StaticErrors&, UErrorCode&);
+
+ int32_t count() const;
+ void setSelectorError(const FunctionName&, UErrorCode&);
+ void setReservedError(UErrorCode&);
+ void setUnresolvedVariable(const VariableName&, UErrorCode&);
+ void setUnknownFunction(const FunctionName&, UErrorCode&);
+ void setFormattingError(const FunctionName&, UErrorCode&);
+ // Used when the name of the offending formatter is unknown
+ void setFormattingError(UErrorCode&);
+ void setOperandMismatchError(const FunctionName&, UErrorCode&);
+ bool hasDataModelError() const { return staticErrors.hasDataModelError(); }
+ bool hasFormattingError() const { return formattingError; }
+ bool hasSelectorError() const { return selectorError; }
+ bool hasSyntaxError() const { return staticErrors.hasSyntaxError(); }
+ bool hasUnknownFunctionError() const { return unknownFunctionError; }
+ bool hasMissingSelectorAnnotationError() const { return staticErrors.hasMissingSelectorAnnotationError(); }
+ bool hasUnresolvedVariableError() const { return unresolvedVariableError; }
+ void addError(DynamicError&&, UErrorCode&);
+ void checkErrors(UErrorCode&) const;
+ bool hasError() const;
+ bool hasStaticError() const;
+
+ const DynamicError& first() const;
+ virtual ~DynamicErrors();
+ }; // class DynamicErrors
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_ERRORS_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/libicu/cts_headers/messageformat2_evaluation.h b/libicu/cts_headers/messageformat2_evaluation.h
new file mode 100644
index 000000000..b8ae02423
--- /dev/null
+++ b/libicu/cts_headers/messageformat2_evaluation.h
@@ -0,0 +1,209 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_EVALUATION_H
+#define MESSAGEFORMAT2_EVALUATION_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+/**
+ * \file
+ * \brief C++ API: Formats messages using the draft MessageFormat 2.0.
+ */
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_arguments.h"
+#include "unicode/messageformat2_data_model.h"
+#include "unicode/messageformat2_function_registry.h"
+#include "messageformat2_errors.h"
+
+// Auxiliary data structures used during formatting a message
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // PrioritizedVariant
+
+ // For how this class is used, see the references to (integer, variant) tuples
+ // in https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#pattern-selection
+ class PrioritizedVariant : public UObject {
+ public:
+ PrioritizedVariant() = default;
+ PrioritizedVariant(PrioritizedVariant&&) = default;
+ PrioritizedVariant& operator=(PrioritizedVariant&&) noexcept = default;
+ UBool operator<(const PrioritizedVariant&) const;
+ int32_t priority;
+ /* const */ SelectorKeys keys;
+ /* const */ Pattern pat;
+ PrioritizedVariant(uint32_t p,
+ const SelectorKeys& k,
+ const Pattern& pattern) noexcept : priority(p), keys(k), pat(pattern) {}
+ virtual ~PrioritizedVariant();
+ }; // class PrioritizedVariant
+
+ static inline int32_t comparePrioritizedVariants(UElement left, UElement right) {
+ const PrioritizedVariant& tuple1 = *(static_cast<const PrioritizedVariant*>(left.pointer));
+ const PrioritizedVariant& tuple2 = *(static_cast<const PrioritizedVariant*>(right.pointer));
+ if (tuple1 < tuple2) {
+ return -1;
+ }
+ if (tuple1.priority == tuple2.priority) {
+ return 0;
+ }
+ return 1;
+ }
+
+ // Encapsulates a value to be scrutinized by a `match` with its resolved
+ // options and the name of the selector
+ class ResolvedSelector : public UObject {
+ public:
+ ResolvedSelector() {}
+ ResolvedSelector(const FunctionName& fn,
+ Selector* selector,
+ FunctionOptions&& options,
+ FormattedPlaceholder&& value);
+ // Used either for errors, or when selector isn't yet known
+ explicit ResolvedSelector(FormattedPlaceholder&& value);
+ bool hasSelector() const { return selector.isValid(); }
+ const FormattedPlaceholder& argument() const { return value; }
+ FormattedPlaceholder&& takeArgument() { return std::move(value); }
+ const Selector* getSelector() {
+ U_ASSERT(selector.isValid());
+ return selector.getAlias();
+ }
+ FunctionOptions&& takeOptions() {
+ return std::move(options);
+ }
+ const FunctionName& getSelectorName() const { return selectorName; }
+ virtual ~ResolvedSelector();
+ ResolvedSelector& operator=(ResolvedSelector&&) noexcept;
+ ResolvedSelector(ResolvedSelector&&);
+ private:
+ FunctionName selectorName; // For error reporting
+ LocalPointer<Selector> selector;
+ FunctionOptions options;
+ FormattedPlaceholder value;
+ }; // class ResolvedSelector
+
+ // Closures and environments
+ // -------------------------
+
+ class Environment;
+
+ // A closure represents the right-hand side of a variable
+ // declaration, along with an environment giving values
+ // to its free variables
+ class Closure : public UMemory {
+ public:
+ const Expression& getExpr() const {
+ return expr;
+ }
+ const Environment& getEnv() const {
+ return env;
+ }
+ Closure(const Expression& expression, const Environment& environment) : expr(expression), env(environment) {}
+ Closure(Closure&&) = default;
+
+ virtual ~Closure();
+ private:
+
+ // An unevaluated expression
+ const Expression& expr;
+ // The environment mapping names used in this
+ // expression to other expressions
+ const Environment& env;
+ };
+
+ // An environment is represented as a linked chain of
+ // non-empty environments, terminating at an empty environment.
+ // It's searched using linear search.
+ class Environment : public UMemory {
+ public:
+ virtual bool has(const VariableName&) const = 0;
+ virtual const Closure& lookup(const VariableName&) const = 0;
+ static Environment* create(UErrorCode&);
+ static Environment* create(const VariableName&, Closure&&, Environment*, UErrorCode&);
+ virtual ~Environment();
+ };
+
+ class NonEmptyEnvironment;
+ class EmptyEnvironment : public Environment {
+ public:
+ EmptyEnvironment() = default;
+ virtual ~EmptyEnvironment();
+
+ private:
+ friend class Environment;
+
+ bool has(const VariableName&) const override;
+ const Closure& lookup(const VariableName&) const override;
+ static EmptyEnvironment* create(UErrorCode&);
+ static NonEmptyEnvironment* create(const VariableName&, Closure&&, Environment*, UErrorCode&);
+ };
+
+ class NonEmptyEnvironment : public Environment {
+ private:
+ friend class Environment;
+
+ bool has(const VariableName&) const override;
+ const Closure& lookup(const VariableName&) const override;
+ static NonEmptyEnvironment* create(const VariableName&, Closure&&, const Environment*, UErrorCode&);
+ virtual ~NonEmptyEnvironment();
+ private:
+ friend class Environment;
+
+ NonEmptyEnvironment(const VariableName& v, Closure&& c, Environment* e) : var(v), rhs(std::move(c)), parent(e) {}
+
+ // Maps VariableName onto Closure*
+ // Chain of linked environments
+ VariableName var;
+ Closure rhs;
+ const LocalPointer<Environment> parent;
+ };
+
+ // The context contains all the information needed to process
+ // an entire message: arguments, formatter cache, and error list
+
+ class MessageContext : public UMemory {
+ public:
+ MessageContext(const MessageArguments&, const StaticErrors&, UErrorCode&);
+
+ const Formattable* getGlobal(const VariableName&, UErrorCode&) const;
+
+ // If any errors were set, update `status` accordingly
+ void checkErrors(UErrorCode& status) const;
+ DynamicErrors& getErrors() { return errors; }
+
+ virtual ~MessageContext();
+
+ private:
+
+ const MessageArguments& arguments; // External message arguments
+ // Errors accumulated during parsing/formatting
+ DynamicErrors errors;
+ }; // class MessageContext
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_EVALUATION_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/libicu/cts_headers/messageformat2_function_registry_internal.h b/libicu/cts_headers/messageformat2_function_registry_internal.h
new file mode 100644
index 000000000..b34cb9b01
--- /dev/null
+++ b/libicu/cts_headers/messageformat2_function_registry_internal.h
@@ -0,0 +1,233 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_FUNCTION_REGISTRY_INTERNAL_H
+#define MESSAGEFORMAT2_FUNCTION_REGISTRY_INTERNAL_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/datefmt.h"
+#include "unicode/messageformat2_function_registry.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ // Built-in functions
+ /*
+ The standard functions are :datetime, :date, :time,
+ :number, :integer, and :string,
+ per https://github.com/unicode-org/message-format-wg/blob/main/spec/registry.md
+ as of https://github.com/unicode-org/message-format-wg/releases/tag/LDML45-alpha
+ */
+ class StandardFunctions {
+ friend class MessageFormatter;
+
+ static UnicodeString getStringOption(const FunctionOptions& opts,
+ const UnicodeString& optionName,
+ UErrorCode& errorCode);
+
+ class DateTime;
+
+ class DateTimeFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale& locale, UErrorCode& status) override;
+ static DateTimeFactory* date(UErrorCode&);
+ static DateTimeFactory* time(UErrorCode&);
+ static DateTimeFactory* dateTime(UErrorCode&);
+ DateTimeFactory() = delete;
+ virtual ~DateTimeFactory();
+
+ private:
+ friend class DateTime;
+
+ typedef enum DateTimeType {
+ Date,
+ Time,
+ DateTime
+ } DateTimeType;
+
+ DateTimeType type;
+ DateTimeFactory(DateTimeType t) : type(t) {}
+ };
+
+ class DateTime : public Formatter {
+ public:
+ FormattedPlaceholder format(FormattedPlaceholder&& toFormat, FunctionOptions&& options, UErrorCode& status) const override;
+ virtual ~DateTime();
+
+ private:
+ const Locale& locale;
+ const DateTimeFactory::DateTimeType type;
+ friend class DateTimeFactory;
+ DateTime(const Locale& l, DateTimeFactory::DateTimeType t) : locale(l), type(t) {}
+ const LocalPointer<icu::DateFormat> icuFormatter;
+
+ /*
+ Looks up an option by name, first checking `opts`, then the cached options
+ in `toFormat` if applicable, and finally using a default
+
+ Ignores any options with non-string values
+ */
+ UnicodeString getFunctionOption(const FormattedPlaceholder& toFormat,
+ const FunctionOptions& opts,
+ const UnicodeString& optionName) const;
+ // Version for options that don't have defaults; sets the error
+ // code instead of returning a default value
+ UnicodeString getFunctionOption(const FormattedPlaceholder& toFormat,
+ const FunctionOptions& opts,
+ const UnicodeString& optionName,
+ UErrorCode& errorCode) const;
+
+ };
+
+ // Note: IntegerFactory doesn't implement SelectorFactory;
+ // instead, an instance of PluralFactory is registered to the integer
+ // selector
+ // TODO
+ class IntegerFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale& locale, UErrorCode& status) override;
+ virtual ~IntegerFactory();
+ };
+
+ class NumberFactory : public FormatterFactory {
+ public:
+ Formatter* createFormatter(const Locale& locale, UErrorCode& status) override;
+ virtual ~NumberFactory();
+ private:
+ friend class IntegerFactory;
+ static NumberFactory integer(const Locale& locale, UErrorCode& status);
+ };
+
+ class Number : public Formatter {
+ public:
+ FormattedPlaceholder format(FormattedPlaceholder&& toFormat, FunctionOptions&& options, UErrorCode& status) const override;
+ virtual ~Number();
+
+ private:
+ friend class NumberFactory;
+ friend class StandardFunctions;
+
+ Number(const Locale& loc) : locale(loc), icuFormatter(number::NumberFormatter::withLocale(loc)) {}
+ Number(const Locale& loc, bool isInt) : locale(loc), isInteger(isInt), icuFormatter(number::NumberFormatter::withLocale(loc)) {}
+ static Number integer(const Locale& loc);
+
+ // These options have their own accessor methods, since they have different default values.
+ int32_t maximumFractionDigits(const FunctionOptions& options) const;
+ int32_t minimumFractionDigits(const FunctionOptions& options) const;
+ int32_t minimumSignificantDigits(const FunctionOptions& options) const;
+ int32_t maximumSignificantDigits(const FunctionOptions& options) const;
+ int32_t minimumIntegerDigits(const FunctionOptions& options) const;
+
+ bool usePercent(const FunctionOptions& options) const;
+ const Locale& locale;
+ const bool isInteger = false;
+ const number::LocalizedNumberFormatter icuFormatter;
+ };
+
+ static number::LocalizedNumberFormatter formatterForOptions(const Number& number,
+ const FunctionOptions& opts,
+ UErrorCode& status);
+
+ class PluralFactory : public SelectorFactory {
+ public:
+ Selector* createSelector(const Locale& locale, UErrorCode& status) const override;
+ virtual ~PluralFactory();
+
+ private:
+ friend class IntegerFactory;
+ friend class MessageFormatter;
+
+ PluralFactory() {}
+ PluralFactory(bool isInt) : isInteger(isInt) {}
+ static PluralFactory integer() { return PluralFactory(true);}
+ const bool isInteger = false;
+ };
+
+ class Plural : public Selector {
+ public:
+ void selectKey(FormattedPlaceholder&& val,
+ FunctionOptions&& options,
+ const UnicodeString* keys,
+ int32_t keysLen,
+ UnicodeString* prefs,
+ int32_t& prefsLen,
+ UErrorCode& status) const override;
+ virtual ~Plural();
+
+ private:
+ friend class IntegerFactory;
+ friend class PluralFactory;
+
+ // Can't use UPluralType for this since we want to include
+ // exact matching as an option
+ typedef enum PluralType {
+ PLURAL_ORDINAL,
+ PLURAL_CARDINAL,
+ PLURAL_EXACT
+ } PluralType;
+ Plural(const Locale& loc) : locale(loc) {}
+ Plural(const Locale& loc, bool isInt) : locale(loc), isInteger(isInt) {}
+ static Plural integer(const Locale& loc) { return Plural(loc, true); }
+ PluralType pluralType(const FunctionOptions& opts) const;
+ const Locale& locale;
+ const bool isInteger = false;
+ };
+
+ class TextFactory : public SelectorFactory {
+ public:
+ Selector* createSelector(const Locale& locale, UErrorCode& status) const override;
+ virtual ~TextFactory();
+ };
+
+ class TextSelector : public Selector {
+ public:
+ void selectKey(FormattedPlaceholder&& val,
+ FunctionOptions&& options,
+ const UnicodeString* keys,
+ int32_t keysLen,
+ UnicodeString* prefs,
+ int32_t& prefsLen,
+ UErrorCode& status) const override;
+ virtual ~TextSelector();
+
+ private:
+ friend class TextFactory;
+
+ // Formatting `value` to a string might require the locale
+ const Locale& locale;
+
+ TextSelector(const Locale& l) : locale(l) {}
+ };
+ };
+
+ extern void formatDateWithDefaults(const Locale& locale, UDate date, UnicodeString&, UErrorCode& errorCode);
+ extern number::FormattedNumber formatNumberWithDefaults(const Locale& locale, double toFormat, UErrorCode& errorCode);
+ extern number::FormattedNumber formatNumberWithDefaults(const Locale& locale, int32_t toFormat, UErrorCode& errorCode);
+ extern number::FormattedNumber formatNumberWithDefaults(const Locale& locale, int64_t toFormat, UErrorCode& errorCode);
+ extern number::FormattedNumber formatNumberWithDefaults(const Locale& locale, StringPiece toFormat, UErrorCode& errorCode);
+ extern DateFormat* defaultDateTimeInstance(const Locale&, UErrorCode&);
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_FUNCTION_REGISTRY_INTERNAL_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/libicu/cts_headers/messageformat2_macros.h b/libicu/cts_headers/messageformat2_macros.h
new file mode 100644
index 000000000..ee8cf0779
--- /dev/null
+++ b/libicu/cts_headers/messageformat2_macros.h
@@ -0,0 +1,113 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT2_MACROS_H
+#define MESSAGEFORMAT2_MACROS_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/format.h"
+#include "unicode/unistr.h"
+#include "plurrule_impl.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+using namespace pluralimpl;
+
+// Tokens for parser and serializer
+
+// Syntactically significant characters
+#define LEFT_CURLY_BRACE ((UChar32)0x007B)
+#define RIGHT_CURLY_BRACE ((UChar32)0x007D)
+#define HTAB ((UChar32)0x0009)
+#define CR ((UChar32)0x000D)
+#define LF ((UChar32)0x000A)
+#define IDEOGRAPHIC_SPACE ((UChar32)0x3000)
+
+#define PIPE ((UChar32)0x007C)
+#define EQUALS ((UChar32)0x003D)
+#define DOLLAR ((UChar32)0x0024)
+#define COLON ((UChar32)0x003A)
+#define PLUS ((UChar32)0x002B)
+#define HYPHEN ((UChar32)0x002D)
+#define PERIOD ((UChar32)0x002E)
+#define UNDERSCORE ((UChar32)0x005F)
+
+#define LOWERCASE_E ((UChar32)0x0065)
+#define UPPERCASE_E ((UChar32)0x0045)
+
+// Reserved sigils
+#define BANG ((UChar32)0x0021)
+#define AT ((UChar32)0x0040)
+#define PERCENT ((UChar32)0x0025)
+#define CARET ((UChar32)0x005E)
+#define AMPERSAND ((UChar32)0x0026)
+#define LESS_THAN ((UChar32)0x003C)
+#define GREATER_THAN ((UChar32)0x003E)
+#define QUESTION ((UChar32)0x003F)
+#define TILDE ((UChar32)0x007E)
+
+// Fallback
+#define REPLACEMENT ((UChar32) 0xFFFD)
+
+// MessageFormat2 uses four keywords: `.input`, `.local`, `.when`, and `.match`.
+
+static constexpr UChar32 ID_INPUT[] = {
+ 0x2E, 0x69, 0x6E, 0x70, 0x75, 0x74, 0 /* ".input" */
+};
+
+static constexpr UChar32 ID_LOCAL[] = {
+ 0x2E, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0 /* ".local" */
+};
+
+static constexpr UChar32 ID_MATCH[] = {
+ 0x2E, 0x6D, 0x61, 0x74, 0x63, 0x68, 0 /* ".match" */
+};
+
+// Returns immediately if `errorCode` indicates failure
+#define CHECK_ERROR(errorCode) \
+ if (U_FAILURE(errorCode)) { \
+ return; \
+ }
+
+// Returns immediately if `errorCode` indicates failure
+#define NULL_ON_ERROR(errorCode) \
+ if (U_FAILURE(errorCode)) { \
+ return nullptr; \
+ }
+
+// Returns immediately if `errorCode` indicates failure
+#define THIS_ON_ERROR(errorCode) \
+ if (U_FAILURE(errorCode)) { \
+ return *this; \
+ }
+
+// Returns immediately if `errorCode` indicates failure
+#define EMPTY_ON_ERROR(errorCode) \
+ if (U_FAILURE(errorCode)) { \
+ return {}; \
+ }
+
+} // namespace message2
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_MACROS_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/libicu/cts_headers/messageformat2_parser.h b/libicu/cts_headers/messageformat2_parser.h
new file mode 100644
index 000000000..92c0475d6
--- /dev/null
+++ b/libicu/cts_headers/messageformat2_parser.h
@@ -0,0 +1,184 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT_PARSER_H
+#define MESSAGEFORMAT_PARSER_H
+
+#include "unicode/messageformat2_data_model.h"
+#include "unicode/parseerr.h"
+
+#include "messageformat2_allocation.h"
+#include "messageformat2_errors.h"
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // Used for parameterizing options parsing code
+ // over the two builders that use it (Operator and Markup)
+ template <class T>
+ class OptionAdder {
+ private:
+ T& builder;
+ public:
+ OptionAdder(T& b) : builder(b) {}
+ void addOption(const UnicodeString& k, Operand&& r, UErrorCode& s) {
+ builder.addOption(k, std::move(r), s);
+ }
+ };
+
+ // Used for parameterizing attributes parsing code
+ // over the two builders that use it (Expression and Markup)
+ // Unfortunately the same OptionAdder class can't just be reused,
+ // becaues duplicate options are forbidden while duplicate attributes are not
+ template <class T>
+ class AttributeAdder {
+ private:
+ T& builder;
+ public:
+ AttributeAdder(T& b) : builder(b) {}
+ void addAttribute(const UnicodeString& k, Operand&& r, UErrorCode& s) {
+ builder.addAttribute(k, std::move(r), s);
+ }
+ };
+
+ // Parser class (private)
+ class Parser : public UMemory {
+ public:
+ virtual ~Parser();
+ private:
+ friend class MessageFormatter;
+
+ void parse(UParseError&, UErrorCode&);
+
+ /*
+ Use an internal "parse error" structure to make it easier to translate
+ absolute offsets to line offsets.
+ This is translated back to a `UParseError` at the end of parsing.
+ */
+ typedef struct MessageParseError {
+ // The line on which the error occurred
+ uint32_t line;
+ // The offset, relative to the erroneous line, on which the error occurred
+ uint32_t offset;
+ // The total number of characters seen before advancing to the current line. It has a value of 0 if line == 0.
+ // It includes newline characters, because the index does too.
+ uint32_t lengthBeforeCurrentLine;
+
+ // This parser doesn't yet use the last two fields.
+ UChar preContext[U_PARSE_CONTEXT_LEN];
+ UChar postContext[U_PARSE_CONTEXT_LEN];
+ } MessageParseError;
+
+ Parser(const UnicodeString &input, MFDataModel::Builder& dataModelBuilder, StaticErrors& e, UnicodeString& normalizedInputRef)
+ : source(input), index(0), errors(e), normalizedInput(normalizedInputRef), dataModel(dataModelBuilder) {
+ parseError.line = 0;
+ parseError.offset = 0;
+ parseError.lengthBeforeCurrentLine = 0;
+ parseError.preContext[0] = '\0';
+ parseError.postContext[0] = '\0';
+ }
+
+ // Used so `parseEscapeSequence()` can handle all types of escape sequences
+ // (literal, text, and reserved)
+ typedef enum { LITERAL, TEXT, RESERVED } EscapeKind;
+
+ static void translateParseError(const MessageParseError&, UParseError&);
+ static void setParseError(MessageParseError&, uint32_t);
+ void maybeAdvanceLine();
+ Pattern parseSimpleMessage(UErrorCode&);
+ void parseBody(UErrorCode&);
+ void parseDeclarations(UErrorCode&);
+ void parseUnsupportedStatement(UErrorCode&);
+ void parseLocalDeclaration(UErrorCode&);
+ void parseInputDeclaration(UErrorCode&);
+ void parseSelectors(UErrorCode&);
+
+ void parseWhitespaceMaybeRequired(bool, UErrorCode&);
+ void parseRequiredWhitespace(UErrorCode&);
+ void parseOptionalWhitespace(UErrorCode&);
+ void parseToken(UChar32, UErrorCode&);
+ void parseTokenWithWhitespace(UChar32, UErrorCode&);
+ template <int32_t N>
+ void parseToken(const UChar32 (&)[N], UErrorCode&);
+ template <int32_t N>
+ void parseTokenWithWhitespace(const UChar32 (&)[N], UErrorCode&);
+ bool nextIsMatch() const;
+ UnicodeString parseName(UErrorCode&);
+ UnicodeString parseIdentifier(UErrorCode&);
+ UnicodeString parseDigits(UErrorCode&);
+ VariableName parseVariableName(UErrorCode&);
+ FunctionName parseFunction(UErrorCode&);
+ void parseEscapeSequence(EscapeKind, UnicodeString&, UErrorCode&);
+ void parseLiteralEscape(UnicodeString&, UErrorCode&);
+ Literal parseUnquotedLiteral(UErrorCode&);
+ Literal parseQuotedLiteral(UErrorCode&);
+ Literal parseLiteral(UErrorCode&);
+ template<class T>
+ void parseAttribute(AttributeAdder<T>&, UErrorCode&);
+ template<class T>
+ void parseAttributes(AttributeAdder<T>&, UErrorCode&);
+ template<class T>
+ void parseOption(OptionAdder<T>&, UErrorCode&);
+ template<class T>
+ void parseOptions(OptionAdder<T>&, UErrorCode&);
+ void parseReservedEscape(UnicodeString&, UErrorCode&);
+ void parseReservedChunk(Reserved::Builder&, UErrorCode&);
+ Reserved parseReserved(UErrorCode&);
+ Reserved parseReservedBody(Reserved::Builder&, UErrorCode&);
+ Operator parseAnnotation(UErrorCode&);
+ void parseLiteralOrVariableWithAnnotation(bool, Expression::Builder&, UErrorCode&);
+ Markup parseMarkup(UErrorCode&);
+ Expression parseExpression(UErrorCode&);
+ std::variant<Expression, Markup> parsePlaceholder(UErrorCode&);
+ void parseTextEscape(UnicodeString&, UErrorCode&);
+ UnicodeString parseText(UErrorCode&);
+ Key parseKey(UErrorCode&);
+ SelectorKeys parseNonEmptyKeys(UErrorCode&);
+ void errorPattern(UErrorCode& status);
+ Pattern parseQuotedPattern(UErrorCode&);
+
+ // The input string
+ const UnicodeString &source;
+ // The current position within the input string
+ uint32_t index;
+ // Represents the current line (and when an error is indicated),
+ // character offset within the line of the parse error
+ MessageParseError parseError;
+
+ // The structure to use for recording errors
+ StaticErrors& errors;
+
+ // Normalized version of the input string (optional whitespace removed)
+ UnicodeString& normalizedInput;
+
+ // The parent builder
+ MFDataModel::Builder &dataModel;
+ }; // class Parser
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_PARSER_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
diff --git a/libicu/cts_headers/messageformat2_serializer.h b/libicu/cts_headers/messageformat2_serializer.h
new file mode 100644
index 000000000..4b72d1ca7
--- /dev/null
+++ b/libicu/cts_headers/messageformat2_serializer.h
@@ -0,0 +1,75 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#ifndef MESSAGEFORMAT_SERIALIZER_H
+#define MESSAGEFORMAT_SERIALIZER_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model.h"
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ using namespace data_model;
+
+ // Serializer class (private)
+ // Converts a data model back to a string
+ // TODO: Should be private; made public so tests
+ // can use it
+ class U_I18N_API Serializer : public UMemory {
+ public:
+ Serializer(const MFDataModel& m, UnicodeString& s) : dataModel(m), result(s) {}
+ void serialize();
+
+ const MFDataModel& dataModel;
+ UnicodeString& result;
+
+ private:
+
+ void whitespace();
+ void emit(UChar32);
+ template <int32_t N>
+ void emit(const UChar32 (&)[N]);
+ void emit(const UnicodeString&);
+ void emit(const Literal&);
+ void emit(const Key&);
+ void emit(const SelectorKeys&);
+ void emit(const Operand&);
+ void emit(const Reserved&);
+ void emit(const Expression&);
+ void emit(const PatternPart&);
+ void emit(const Pattern&);
+ void emit(const Variant*);
+ void emitAttributes(const OptionMap&);
+ void emit(const OptionMap&);
+ void serializeUnsupported();
+ void serializeDeclarations();
+ void serializeSelectors();
+ void serializeVariants();
+ }; // class Serializer
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_SERIALIZER_H
+
+#endif // U_HIDE_DEPRECATED_API
+// eof
+
diff --git a/libicu/cts_headers/name2uni.h b/libicu/cts_headers/name2uni.h
index 6881c6bc8..ba8fbc823 100644
--- a/libicu/cts_headers/name2uni.h
+++ b/libicu/cts_headers/name2uni.h
@@ -33,7 +33,7 @@ public:
* Constructs a transliterator.
* @param adoptedFilter the filter for this transliterator.
*/
- NameUnicodeTransliterator(UnicodeFilter* adoptedFilter = 0);
+ NameUnicodeTransliterator(UnicodeFilter* adoptedFilter = nullptr);
/**
* Destructor.
diff --git a/libicu/cts_headers/nfrule.h b/libicu/cts_headers/nfrule.h
index fda74fabf..2ae074cd8 100644
--- a/libicu/cts_headers/nfrule.h
+++ b/libicu/cts_headers/nfrule.h
@@ -66,6 +66,8 @@ public:
char16_t getDecimalPoint() const { return decimalPoint; }
int64_t getDivisor() const;
+
+ bool hasModulusSubstitution() const;
void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
void doFormat(double number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
@@ -117,6 +119,9 @@ private:
NFRule(const NFRule &other); // forbid copying of this class
NFRule &operator=(const NFRule &other); // forbid copying of this class
+
+ // TODO: temporary hack to allow MultiplierSubstitution to get to formatter's rounding mode
+ friend class MultiplierSubstitution;
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/normalizer2impl.h b/libicu/cts_headers/normalizer2impl.h
index f5ede24fc..b74c2a112 100644
--- a/libicu/cts_headers/normalizer2impl.h
+++ b/libicu/cts_headers/normalizer2impl.h
@@ -141,12 +141,12 @@ public:
/** Constructs only; init() should be called. */
ReorderingBuffer(const Normalizer2Impl &ni, UnicodeString &dest) :
impl(ni), str(dest),
- start(NULL), reorderStart(NULL), limit(NULL),
+ start(nullptr), reorderStart(nullptr), limit(nullptr),
remainingCapacity(0), lastCC(0) {}
/** Constructs, removes the string contents, and initializes for a small initial capacity. */
ReorderingBuffer(const Normalizer2Impl &ni, UnicodeString &dest, UErrorCode &errorCode);
~ReorderingBuffer() {
- if(start!=NULL) {
+ if (start != nullptr) {
str.releaseBuffer((int32_t)(limit-start));
}
}
@@ -245,7 +245,7 @@ private:
*/
class U_COMMON_API Normalizer2Impl : public UObject {
public:
- Normalizer2Impl() : normTrie(NULL), fCanonIterData(NULL) { }
+ Normalizer2Impl() : normTrie(nullptr), fCanonIterData(nullptr) {}
virtual ~Normalizer2Impl();
void init(const int32_t *inIndexes, const UCPTrie *inTrie,
@@ -623,7 +623,7 @@ private:
const uint16_t *getMapping(uint16_t norm16) const { return extraData+(norm16>>OFFSET_SHIFT); }
const uint16_t *getCompositionsListForDecompYes(uint16_t norm16) const {
if(norm16<JAMO_L || MIN_NORMAL_MAYBE_YES<=norm16) {
- return NULL;
+ return nullptr;
} else if(norm16<minMaybeYes) {
return getMapping(norm16); // for yesYes; if Jamo L: harmless empty list
} else {
diff --git a/libicu/cts_headers/number_affixutils.h b/libicu/cts_headers/number_affixutils.h
index 5cfde61ff..e59096546 100644
--- a/libicu/cts_headers/number_affixutils.h
+++ b/libicu/cts_headers/number_affixutils.h
@@ -14,8 +14,8 @@
#include "formatted_string_builder.h"
#include "unicode/uniset.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
enum AffixPatternState {
STATE_BASE = 0,
@@ -234,8 +234,7 @@ class U_I18N_API AffixUtils {
}
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_asformat.h b/libicu/cts_headers/number_asformat.h
index f921b4294..f447e0c4b 100644
--- a/libicu/cts_headers/number_asformat.h
+++ b/libicu/cts_headers/number_asformat.h
@@ -18,8 +18,8 @@
#include "decNumber.h"
#include "charstr.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* A wrapper around LocalizedNumberFormatter implementing the Format interface, enabling improved
@@ -97,8 +97,7 @@ class U_I18N_API LocalizedNumberFormatterAsFormat : public Format {
Locale fLocale;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif // __NUMBER_ASFORMAT_H__
diff --git a/libicu/cts_headers/number_compact.h b/libicu/cts_headers/number_compact.h
index aee1df745..95896c029 100644
--- a/libicu/cts_headers/number_compact.h
+++ b/libicu/cts_headers/number_compact.h
@@ -14,8 +14,8 @@
#include "resource.h"
#include "number_patternmodifier.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
static const int32_t COMPACT_MAX_DIGITS = 20;
@@ -90,9 +90,7 @@ class CompactHandler : public MicroPropsGenerator, public UMemory {
void precomputeAllModifiers(MutablePatternModifier &buildReference, UErrorCode &status);
};
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_COMPACT_H__
diff --git a/libicu/cts_headers/number_currencysymbols.h b/libicu/cts_headers/number_currencysymbols.h
index c2223bd0f..13b9a9691 100644
--- a/libicu/cts_headers/number_currencysymbols.h
+++ b/libicu/cts_headers/number_currencysymbols.h
@@ -11,9 +11,8 @@
#include "charstr.h"
#include "number_decimfmtprops.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace number::impl {
// Exported as U_I18N_API for tests
class U_I18N_API CurrencySymbols : public UMemory {
@@ -62,9 +61,7 @@ class U_I18N_API CurrencySymbols : public UMemory {
CurrencyUnit
resolveCurrency(const DecimalFormatProperties& properties, const Locale& locale, UErrorCode& status);
-
-} // namespace impl
-} // namespace numparse
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMBER_CURRENCYSYMBOLS_H__
diff --git a/libicu/cts_headers/number_decimalquantity.h b/libicu/cts_headers/number_decimalquantity.h
index 2211fe9c1..2303186c6 100644
--- a/libicu/cts_headers/number_decimalquantity.h
+++ b/libicu/cts_headers/number_decimalquantity.h
@@ -13,8 +13,8 @@
#include "plurrule_impl.h"
#include "number_types.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
// Forward-declare (maybe don't want number_utils.h included here):
class DecNum;
@@ -53,12 +53,20 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
DecimalQuantity &operator=(DecimalQuantity&& src) noexcept;
/**
+ * If the minimum integer digits are greater than `minInt`,
+ * sets it to `minInt`.
+ *
+ * @param minInt The minimum number of integer digits.
+ */
+ void decreaseMinIntegerTo(int32_t minInt);
+
+ /**
* Sets the minimum integer digits that this {@link DecimalQuantity} should generate.
* This method does not perform rounding.
*
* @param minInt The minimum number of integer digits.
*/
- void setMinInteger(int32_t minInt);
+ void increaseMinIntegerTo(int32_t minInt);
/**
* Sets the minimum fraction digits that this {@link DecimalQuantity} should generate.
@@ -549,8 +557,7 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
void switchStorage();
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_decimfmtprops.h b/libicu/cts_headers/number_decimfmtprops.h
index 5f72f6498..6cf4b4c10 100644
--- a/libicu/cts_headers/number_decimfmtprops.h
+++ b/libicu/cts_headers/number_decimfmtprops.h
@@ -33,8 +33,7 @@ template class U_I18N_API LocalPointer<CurrencyPluralInfo>;
#endif
#endif
-namespace number {
-namespace impl {
+namespace number::impl {
// Exported as U_I18N_API because it is a public member field of exported DecimalFormatProperties
// Using this wrapper is rather unfortunate, but is needed on Windows platforms in order to allow
@@ -166,8 +165,8 @@ struct U_I18N_API DecimalFormatProperties : public UMemory {
bool _equals(const DecimalFormatProperties& other, bool ignoreForFastFormat) const;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
+
U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_decnum.h b/libicu/cts_headers/number_decnum.h
index 94a0b31bc..2bf9fd39c 100644
--- a/libicu/cts_headers/number_decnum.h
+++ b/libicu/cts_headers/number_decnum.h
@@ -22,8 +22,7 @@ U_NAMESPACE_BEGIN
template class U_I18N_API MaybeStackHeaderAndArray<decNumber, char, DECNUM_INITIAL_CAPACITY>;
#endif
-namespace number {
-namespace impl {
+namespace number::impl {
/** A very thin C++ wrapper around decNumber.h */
// Exported as U_I18N_API for tests
@@ -84,8 +83,7 @@ class U_I18N_API DecNum : public UMemory {
void _setTo(const char* str, int32_t maxDigits, UErrorCode& status);
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_formatimpl.h b/libicu/cts_headers/number_formatimpl.h
index 62d532126..ba979d8bd 100644
--- a/libicu/cts_headers/number_formatimpl.h
+++ b/libicu/cts_headers/number_formatimpl.h
@@ -18,8 +18,8 @@
#include "number_microprops.h"
#include "number_utypes.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* This is the "brain" of the number formatting pipeline. It ties all the pieces together, taking in a MacroProps and a
@@ -170,8 +170,7 @@ class NumberFormatterImpl : public UMemory {
UErrorCode &status);
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_longnames.h b/libicu/cts_headers/number_longnames.h
index 56d8c9b24..ef1ce7410 100644
--- a/libicu/cts_headers/number_longnames.h
+++ b/libicu/cts_headers/number_longnames.h
@@ -13,8 +13,8 @@
#include "number_utils.h"
#include "number_modifiers.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
// LongNameHandler takes care of formatting currency and measurement unit names,
// as well as populating the gender of measure units.
@@ -263,8 +263,7 @@ class LongNameMultiplexer : public MicroPropsGenerator, public UMemory {
}
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_LONGNAMES_H__
diff --git a/libicu/cts_headers/number_mapper.h b/libicu/cts_headers/number_mapper.h
index c01607e56..fc5617cb4 100644
--- a/libicu/cts_headers/number_mapper.h
+++ b/libicu/cts_headers/number_mapper.h
@@ -16,9 +16,7 @@
#include "numparse_impl.h"
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
-
+namespace number::impl {
class AutoAffixPatternProvider;
class CurrencyPluralInfoAffixProvider;
@@ -142,9 +140,9 @@ class AutoAffixPatternProvider {
}
inline void setTo(const AffixPatternProvider* provider, UErrorCode& status) {
- if (auto ptr = dynamic_cast<const PropertiesAffixPatternProvider*>(provider)) {
+ if (const auto* ptr = dynamic_cast<const PropertiesAffixPatternProvider*>(provider)) {
propertiesAPP = *ptr;
- } else if (auto ptr = dynamic_cast<const CurrencyPluralInfoAffixProvider*>(provider)) {
+ } else if (const auto* ptr = dynamic_cast<const CurrencyPluralInfoAffixProvider*>(provider)) {
currencyPluralInfoAPP = *ptr;
} else {
status = U_INTERNAL_PROGRAM_ERROR;
@@ -257,9 +255,7 @@ class NumberPropertyMapper {
DecimalFormatProperties* exportedProperties, UErrorCode& status);
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_MAPPER_H__
diff --git a/libicu/cts_headers/number_microprops.h b/libicu/cts_headers/number_microprops.h
index 18addaae0..6d58bc3c3 100644
--- a/libicu/cts_headers/number_microprops.h
+++ b/libicu/cts_headers/number_microprops.h
@@ -20,8 +20,8 @@
#include "charstr.h"
#include "util.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* A copyable container for the integer values of mixed unit measurements.
@@ -188,8 +188,7 @@ struct MicroProps : public MicroPropsGenerator {
bool exhausted = false;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif // __NUMBER_MICROPROPS_H__
diff --git a/libicu/cts_headers/number_modifiers.h b/libicu/cts_headers/number_modifiers.h
index da6956bcf..1afee495d 100644
--- a/libicu/cts_headers/number_modifiers.h
+++ b/libicu/cts_headers/number_modifiers.h
@@ -15,8 +15,8 @@
#include "formatted_string_builder.h"
#include "number_types.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* The canonical implementation of {@link Modifier}, containing a prefix and suffix string.
@@ -41,7 +41,7 @@ class U_I18N_API ConstantAffixModifier : public Modifier, public UObject {
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
private:
UnicodeString fPrefix;
@@ -77,7 +77,7 @@ class U_I18N_API SimpleModifier : public Modifier, public UMemory {
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
/**
* TODO: This belongs in SimpleFormatterImpl. The only reason I haven't moved it there yet is because
@@ -170,7 +170,7 @@ class U_I18N_API ConstantMultiFieldModifier : public Modifier, public UMemory {
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
protected:
// NOTE: In Java, these are stored as array pointers. In C++, the FormattedStringBuilder is stored by
@@ -264,7 +264,7 @@ class U_I18N_API EmptyModifier : public Modifier, public UMemory {
output.obj = nullptr;
}
- bool semanticallyEquivalent(const Modifier& other) const override {
+ bool strictEquals(const Modifier& other) const override {
return other.getCodePointCount() == 0;
}
@@ -350,8 +350,7 @@ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory {
AdoptingSignumModifierStore mods[StandardPlural::COUNT] = {};
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_multiplier.h b/libicu/cts_headers/number_multiplier.h
index c752935b7..62b04778e 100644
--- a/libicu/cts_headers/number_multiplier.h
+++ b/libicu/cts_headers/number_multiplier.h
@@ -10,9 +10,8 @@
#include "numparse_types.h"
#include "number_decimfmtprops.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* Wraps a {@link Multiplier} for use in the number formatting pipeline.
@@ -48,9 +47,7 @@ static inline Scale scaleFromProperties(const DecimalFormatProperties& propertie
}
}
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMBER_MULTIPLIER_H__
diff --git a/libicu/cts_headers/number_patternmodifier.h b/libicu/cts_headers/number_patternmodifier.h
index ee38c20c9..4cae16004 100644
--- a/libicu/cts_headers/number_patternmodifier.h
+++ b/libicu/cts_headers/number_patternmodifier.h
@@ -33,8 +33,7 @@ template class U_I18N_API LocalPointer<number::impl::AdoptingModifierStore>;
#endif
#endif
-namespace number {
-namespace impl {
+namespace number::impl {
// Forward declaration
class MutablePatternModifier;
@@ -191,7 +190,7 @@ class U_I18N_API MutablePatternModifier
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
/**
* Returns the string that substitutes a given symbol type in a pattern.
@@ -255,9 +254,8 @@ class U_I18N_API MutablePatternModifier
void prepareAffix(bool isPrefix);
};
+} // namespace number::impl
-} // namespace impl
-} // namespace number
U_NAMESPACE_END
#endif //__NUMBER_PATTERNMODIFIER_H__
diff --git a/libicu/cts_headers/number_patternstring.h b/libicu/cts_headers/number_patternstring.h
index 989d0d346..2b3ab02be 100644
--- a/libicu/cts_headers/number_patternstring.h
+++ b/libicu/cts_headers/number_patternstring.h
@@ -16,8 +16,8 @@
#include "number_decimfmtprops.h"
#include "number_affixutils.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
// Forward declaration
class PatternParser;
@@ -330,8 +330,7 @@ class U_I18N_API PatternStringUtils {
UErrorCode& status);
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_roundingutils.h b/libicu/cts_headers/number_roundingutils.h
index 665712725..08c62dd6a 100644
--- a/libicu/cts_headers/number_roundingutils.h
+++ b/libicu/cts_headers/number_roundingutils.h
@@ -11,8 +11,7 @@
#include "string_segment.h"
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
namespace roundingutils {
enum Section {
@@ -238,8 +237,7 @@ class RoundingImpl {
*/
void parseIncrementOption(const StringSegment &segment, Precision &outPrecision, UErrorCode &status);
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_ROUNDINGUTILS_H__
diff --git a/libicu/cts_headers/number_scientific.h b/libicu/cts_headers/number_scientific.h
index 22140a09a..60122b155 100644
--- a/libicu/cts_headers/number_scientific.h
+++ b/libicu/cts_headers/number_scientific.h
@@ -9,8 +9,8 @@
#include "number_types.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace number::impl {
// Forward-declare
class ScientificHandler;
@@ -34,7 +34,7 @@ class U_I18N_API ScientificModifier : public UMemory, public Modifier {
void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
+ bool strictEquals(const Modifier& other) const override;
private:
int32_t fExponent;
@@ -59,8 +59,7 @@ class ScientificHandler : public UMemory, public MicroPropsGenerator, public Mul
friend class ScientificModifier;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_SCIENTIFIC_H__
diff --git a/libicu/cts_headers/number_skeletons.h b/libicu/cts_headers/number_skeletons.h
index 27f69cd48..47a1a7ace 100644
--- a/libicu/cts_headers/number_skeletons.h
+++ b/libicu/cts_headers/number_skeletons.h
@@ -13,8 +13,7 @@
#include "string_segment.h"
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
// Forward-declaration
struct SeenMacroProps;
@@ -385,8 +384,7 @@ UPRV_BLOCK_MACRO_BEGIN { \
} // namespace
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMBER_SKELETONS_H__
diff --git a/libicu/cts_headers/number_types.h b/libicu/cts_headers/number_types.h
index 84846efb9..a67099e5e 100644
--- a/libicu/cts_headers/number_types.h
+++ b/libicu/cts_headers/number_types.h
@@ -20,8 +20,7 @@
#include "formatted_string_builder.h"
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
// For convenience and historical reasons, import the Field typedef to the namespace.
typedef FormattedStringBuilder::Field Field;
@@ -225,10 +224,15 @@ class U_I18N_API Modifier {
virtual void getParameters(Parameters& output) const = 0;
/**
+ * Returns whether this Modifier equals another Modifier.
+ */
+ virtual bool strictEquals(const Modifier& other) const = 0;
+
+ /**
* Returns whether this Modifier is *semantically equivalent* to the other Modifier;
* in many cases, this is the same as equal, but parameters should be ignored.
*/
- virtual bool semanticallyEquivalent(const Modifier& other) const = 0;
+ bool semanticallyEquivalent(const Modifier& other) const;
};
@@ -364,9 +368,7 @@ class U_I18N_API NullableValue {
T fValue;
};
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__NUMBER_TYPES_H__
diff --git a/libicu/cts_headers/number_usageprefs.h b/libicu/cts_headers/number_usageprefs.h
index e90df99d3..9aebc3140 100644
--- a/libicu/cts_headers/number_usageprefs.h
+++ b/libicu/cts_headers/number_usageprefs.h
@@ -23,8 +23,7 @@ U_NAMESPACE_BEGIN
using ::icu::units::ComplexUnitsConverter;
using ::icu::units::UnitsRouter;
-namespace number {
-namespace impl {
+namespace number::impl {
/**
* A MicroPropsGenerator which uses UnitsRouter to produce output converted to a
@@ -62,8 +61,7 @@ class U_I18N_API UsagePrefsHandler : public MicroPropsGenerator, public UMemory
const MicroPropsGenerator *fParent;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
// Export explicit template instantiations of LocalPointerBase and LocalPointer.
// This is required when building DLLs for Windows. (See datefmt.h,
@@ -84,8 +82,7 @@ template class U_I18N_API LocalPointer<ComplexUnitsConverter>;
#endif
#endif
-namespace number {
-namespace impl {
+namespace number::impl {
/**
* A MicroPropsGenerator which converts a measurement from one MeasureUnit to
@@ -118,8 +115,8 @@ class U_I18N_API UnitConversionHandler : public MicroPropsGenerator, public UMem
const MicroPropsGenerator *fParent;
};
-} // namespace impl
-} // namespace number
+} // namespace number::impl
+
U_NAMESPACE_END
#endif // __NUMBER_USAGEPREFS_H__
diff --git a/libicu/cts_headers/number_utils.h b/libicu/cts_headers/number_utils.h
index bc369c940..39c56f4d1 100644
--- a/libicu/cts_headers/number_utils.h
+++ b/libicu/cts_headers/number_utils.h
@@ -21,8 +21,7 @@
U_NAMESPACE_BEGIN
-namespace number {
-namespace impl {
+namespace number::impl {
enum CldrPatternStyle {
CLDR_PATTERN_STYLE_DECIMAL,
@@ -102,8 +101,7 @@ inline StandardPlural::Form getPluralSafe(
} // namespace utils
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_utypes.h b/libicu/cts_headers/number_utypes.h
index 0c1304018..9f606f178 100644
--- a/libicu/cts_headers/number_utypes.h
+++ b/libicu/cts_headers/number_utypes.h
@@ -13,9 +13,8 @@
#include "formatted_string_builder.h"
#include "formattedval_impl.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace number::impl {
/** Helper function used in upluralrules.cpp */
const DecimalQuantity* validateUFormattedNumberToDecimalQuantity(
@@ -50,9 +49,7 @@ public:
const char *gender = "";
};
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMBER_UTYPES_H__
diff --git a/libicu/cts_headers/numparse_affixes.h b/libicu/cts_headers/numparse_affixes.h
index 81b633c26..a9e1c414e 100644
--- a/libicu/cts_headers/numparse_affixes.h
+++ b/libicu/cts_headers/numparse_affixes.h
@@ -16,8 +16,8 @@
#include "number_currencysymbols.h"
U_NAMESPACE_BEGIN
-namespace numparse {
-namespace impl {
+
+namespace numparse::impl {
// Forward-declaration of implementation classes for friending
class AffixPatternMatcherBuilder;
@@ -44,8 +44,7 @@ class U_I18N_API CodePointMatcher : public NumberParseMatcher, public UMemory {
UChar32 fCp;
};
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
// Export a explicit template instantiations of MaybeStackArray, MemoryPool and CompactUnicodeString.
// When building DLLs for Windows this is required even though no direct access leaks out of the i18n library.
@@ -58,8 +57,7 @@ template class U_I18N_API MemoryPool<numparse::impl::CodePointMatcher, 8>;
template class U_I18N_API numparse::impl::CompactUnicodeString<4>;
#endif
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
struct AffixTokenMatcherSetupData {
const CurrencySymbols& currencySymbols;
@@ -221,9 +219,8 @@ class AffixMatcherWarehouse {
parse_flags_t parseFlags, UErrorCode& status);
};
+} // namespace numparse::impl
-} // namespace impl
-} // namespace numparse
U_NAMESPACE_END
#endif //__NUMPARSE_AFFIXES_H__
diff --git a/libicu/cts_headers/numparse_compositions.h b/libicu/cts_headers/numparse_compositions.h
index f085912de..b21941dee 100644
--- a/libicu/cts_headers/numparse_compositions.h
+++ b/libicu/cts_headers/numparse_compositions.h
@@ -18,8 +18,7 @@ U_NAMESPACE_BEGIN
template class U_I18N_API MaybeStackArray<const numparse::impl::NumberParseMatcher*, 3>;
#endif
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
/**
* Base class for AnyMatcher and SeriesMatcher.
@@ -115,9 +114,8 @@ class U_I18N_API ArraySeriesMatcher : public SeriesMatcher {
int32_t fMatchersLen;
};
+} // namespace numparse::impl
-} // namespace impl
-} // namespace numparse
U_NAMESPACE_END
#endif //__SOURCE_NUMPARSE_COMPOSITIONS__
diff --git a/libicu/cts_headers/numparse_currency.h b/libicu/cts_headers/numparse_currency.h
index 4e99334a3..4d71d4fbc 100644
--- a/libicu/cts_headers/numparse_currency.h
+++ b/libicu/cts_headers/numparse_currency.h
@@ -13,8 +13,8 @@
#include "number_currencysymbols.h"
#include "unicode/uniset.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
using ::icu::number::impl::CurrencySymbols;
@@ -65,9 +65,7 @@ class U_I18N_API CombinedCurrencyMatcher : public NumberParseMatcher, public UMe
bool matchCurrency(StringSegment& segment, ParsedNumber& result, UErrorCode& status) const;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_CURRENCY_H__
diff --git a/libicu/cts_headers/numparse_decimal.h b/libicu/cts_headers/numparse_decimal.h
index 07c9afecc..b770749fa 100644
--- a/libicu/cts_headers/numparse_decimal.h
+++ b/libicu/cts_headers/numparse_decimal.h
@@ -10,8 +10,8 @@
#include "unicode/uniset.h"
#include "numparse_types.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
using ::icu::number::impl::Grouper;
@@ -67,9 +67,7 @@ class DecimalMatcher : public NumberParseMatcher, public UMemory {
bool validateGroup(int32_t sepType, int32_t count, bool isPrimary) const;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_DECIMAL_H__
diff --git a/libicu/cts_headers/numparse_impl.h b/libicu/cts_headers/numparse_impl.h
index 380d9aa4c..4695a624d 100644
--- a/libicu/cts_headers/numparse_impl.h
+++ b/libicu/cts_headers/numparse_impl.h
@@ -29,8 +29,7 @@ U_NAMESPACE_BEGIN
template class U_I18N_API MaybeStackArray<const numparse::impl::NumberParseMatcher*, 10>;
#endif
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
// Exported as U_I18N_API for tests
class U_I18N_API NumberParserImpl : public MutableMatcherCollection, public UMemory {
@@ -102,9 +101,8 @@ class U_I18N_API NumberParserImpl : public MutableMatcherCollection, public UMem
StringSegment& segment, ParsedNumber& result, int32_t recursionLevels, UErrorCode& status) const;
};
+} // namespace numparse::impl
-} // namespace impl
-} // namespace numparse
U_NAMESPACE_END
#endif //__NUMPARSE_IMPL_H__
diff --git a/libicu/cts_headers/numparse_scientific.h b/libicu/cts_headers/numparse_scientific.h
index 5617c0c6a..ed214b717 100644
--- a/libicu/cts_headers/numparse_scientific.h
+++ b/libicu/cts_headers/numparse_scientific.h
@@ -14,9 +14,8 @@
using icu::number::impl::Grouper;
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
class ScientificMatcher : public NumberParseMatcher, public UMemory {
public:
@@ -38,9 +37,7 @@ class ScientificMatcher : public NumberParseMatcher, public UMemory {
UnicodeString fCustomPlusSign;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_SCIENTIFIC_H__
diff --git a/libicu/cts_headers/numparse_symbols.h b/libicu/cts_headers/numparse_symbols.h
index beb133f7d..3bc07b2be 100644
--- a/libicu/cts_headers/numparse_symbols.h
+++ b/libicu/cts_headers/numparse_symbols.h
@@ -11,9 +11,8 @@
#include "unicode/uniset.h"
#include "static_unicode_sets.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
/**
* A base class for many matchers that performs a simple match against a UnicodeString and/or UnicodeSet.
@@ -164,9 +163,7 @@ class U_I18N_API PlusSignMatcher : public SymbolMatcher {
bool fAllowTrailing;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_SYMBOLS_H__
diff --git a/libicu/cts_headers/numparse_types.h b/libicu/cts_headers/numparse_types.h
index 8e881793f..d5a53379b 100644
--- a/libicu/cts_headers/numparse_types.h
+++ b/libicu/cts_headers/numparse_types.h
@@ -12,8 +12,7 @@
#include "string_segment.h"
U_NAMESPACE_BEGIN
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
// Forward-declarations
class ParsedNumber;
@@ -263,9 +262,7 @@ class U_I18N_API MutableMatcherCollection {
virtual void addMatcher(NumberParseMatcher& matcher) = 0;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__NUMPARSE_TYPES_H__
diff --git a/libicu/cts_headers/numparse_utils.h b/libicu/cts_headers/numparse_utils.h
index 8fda4f436..a842c6fae 100644
--- a/libicu/cts_headers/numparse_utils.h
+++ b/libicu/cts_headers/numparse_utils.h
@@ -10,10 +10,8 @@
#include "numparse_types.h"
#include "unicode/uniset.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
-namespace utils {
-
+U_NAMESPACE_BEGIN
+namespace numparse::impl::utils {
inline static void putLeadCodePoints(const UnicodeSet* input, UnicodeSet* output) {
for (int32_t i = 0; i < input->getRangeCount(); i++) {
@@ -33,10 +31,7 @@ inline static void copyCurrencyCode(char16_t* dest, const char16_t* src) {
dest[3] = 0;
}
-
-} // namespace utils
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl::utils
U_NAMESPACE_END
#endif //__NUMPARSE_UTILS_H__
diff --git a/libicu/cts_headers/numparse_validators.h b/libicu/cts_headers/numparse_validators.h
index 9bb4b482b..3425bb07a 100644
--- a/libicu/cts_headers/numparse_validators.h
+++ b/libicu/cts_headers/numparse_validators.h
@@ -10,9 +10,8 @@
#include "numparse_types.h"
#include "static_unicode_sets.h"
-U_NAMESPACE_BEGIN namespace numparse {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace numparse::impl {
class ValidationMatcher : public NumberParseMatcher {
public:
@@ -86,9 +85,7 @@ class MultiplierParseHandler : public ValidationMatcher, public UMemory {
::icu::number::Scale fMultiplier;
};
-
-} // namespace impl
-} // namespace numparse
+} // namespace numparse::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMPARSE_VALIDATORS_H__
diff --git a/libicu/cts_headers/numrange_impl.h b/libicu/cts_headers/numrange_impl.h
index ac1d8a589..cdee3d84e 100644
--- a/libicu/cts_headers/numrange_impl.h
+++ b/libicu/cts_headers/numrange_impl.h
@@ -17,9 +17,8 @@
#include "formattedval_impl.h"
#include "pluralranges.h"
-U_NAMESPACE_BEGIN namespace number {
-namespace impl {
-
+U_NAMESPACE_BEGIN
+namespace number::impl {
/**
* Class similar to UFormattedNumberData.
@@ -80,9 +79,7 @@ class NumberRangeFormatterImpl : public UMemory {
const UFormattedNumberRangeData* validateUFormattedNumberRange(
const UFormattedNumberRange* uresult, UErrorCode& status);
-
-} // namespace impl
-} // namespace number
+} // namespace number::impl
U_NAMESPACE_END
#endif //__SOURCE_NUMRANGE_TYPES_H__
diff --git a/libicu/cts_headers/persncal.h b/libicu/cts_headers/persncal.h
index b943321a5..daf7508b7 100644
--- a/libicu/cts_headers/persncal.h
+++ b/libicu/cts_headers/persncal.h
@@ -176,7 +176,7 @@ class PersianCalendar : public Calendar {
* Return the day # on which the given year starts. Days are counted
* from the Hijri epoch, origin 0.
*/
- int32_t yearStart(int32_t year);
+ int32_t yearStart(int32_t year, UErrorCode& status);
/**
* Return the day # on which the given month starts. Days are counted
@@ -185,7 +185,7 @@ class PersianCalendar : public Calendar {
* @param year The hijri shamsi year
* @param year The hijri shamsi month, 0-based
*/
- int32_t monthStart(int32_t year, int32_t month) const;
+ int32_t monthStart(int32_t year, int32_t month, UErrorCode& status) const;
//----------------------------------------------------------------------
// Calendar framework
@@ -203,7 +203,7 @@ class PersianCalendar : public Calendar {
* @param year The hijri shamsi month, 0-based
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given Persian year
@@ -219,7 +219,7 @@ class PersianCalendar : public Calendar {
/**
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override;
//-------------------------------------------------------------------------
// Functions for converting from milliseconds to field values
@@ -228,7 +228,7 @@ class PersianCalendar : public Calendar {
/**
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Override Calendar to compute several fields specific to the Persian
@@ -296,24 +296,7 @@ class PersianCalendar : public Calendar {
PersianCalendar(); // default constructor not implemented
protected:
- /**
- * Returns true because the Persian Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/pluralranges.h b/libicu/cts_headers/pluralranges.h
index eba59c70e..c06317850 100644
--- a/libicu/cts_headers/pluralranges.h
+++ b/libicu/cts_headers/pluralranges.h
@@ -17,11 +17,9 @@
U_NAMESPACE_BEGIN
// Forward declarations
-namespace number {
-namespace impl {
+namespace number::impl {
class UFormattedNumberRangeData;
}
-}
class StandardPluralRanges : public UMemory {
public:
diff --git a/libicu/cts_headers/propname_data.h b/libicu/cts_headers/propname_data.h
index 7bdbe8ec4..579547e41 100644
--- a/libicu/cts_headers/propname_data.h
+++ b/libicu/cts_headers/propname_data.h
@@ -11,102 +11,104 @@
U_NAMESPACE_BEGIN
-const int32_t PropNameData::indexes[8]={0x20,0x1690,0x5337,0xae61,0xae61,0xae61,0x31,0};
+const int32_t PropNameData::indexes[8]={0x20,0x16fc,0x5471,0xb130,0xb130,0xb130,0x31,0};
-const int32_t PropNameData::valueMaps[1436]={
-6,0,0x4b,0,0xf7,0x368,0xf7,0x37e,0xf7,0x393,0xf7,0x3a9,0xf7,0x3b4,0xf7,0x3d5,
-0xf7,0x3e5,0xf7,0x3f4,0xf7,0x402,0xf7,0x426,0xf7,0x43d,0xf7,0x455,0xf7,0x46c,0xf7,0x47b,
-0xf7,0x48a,0xf7,0x49b,0xf7,0x4a9,0xf7,0x4bb,0xf7,0x4d5,0xf7,0x4f0,0xf7,0x505,0xf7,0x522,
-0xf7,0x533,0xf7,0x53e,0xf7,0x55d,0xf7,0x573,0xf7,0x584,0xf7,0x594,0xf7,0x5af,0xf7,0x5c8,
-0xf7,0x5d9,0xf7,0x5f3,0xf7,0x606,0xf7,0x616,0xf7,0x630,0xf7,0x649,0xf7,0x660,0xf7,0x674,
-0xf7,0x68a,0xf7,0x69e,0xf7,0x6b4,0xf7,0x6ce,0xf7,0x6e6,0xf7,0x702,0xf7,0x70a,0xf7,0x712,
-0xf7,0x71a,0xf7,0x722,0xf7,0x72b,0xf7,0x738,0xf7,0x74b,0xf7,0x768,0xf7,0x785,0xf7,0x7a2,
-0xf7,0x7c0,0xf7,0x7de,0xf7,0x802,0xf7,0x80f,0xf7,0x829,0xf7,0x83e,0xf7,0x859,0xf7,0x870,
-0xf7,0x887,0xf7,0x8a9,0xf7,0x8c8,0xf7,0x8e1,0xf7,0x90e,0xf7,0x947,0xf7,0x978,0xf7,0x9a7,
-0xf7,0x9d6,0xf7,0x9eb,0xf7,0xa04,0xf7,0xa2f,0xf7,0x1000,0x1019,0xa60,0x173,0xc80,0x18e,0x331c,
-0xfd,0x333b,0x2db,0x3479,0x2f1,0x34d3,0x2fb,0x3730,0x31d,0x405b,0x389,0x40cb,0x393,0x43b0,0x3c7,0x43ee,
-0x3cf,0x4f33,0x49b,0x4fb1,0x4a5,0x4fd6,0x4ab,0x4ff0,0x4b1,0x5011,0x4b8,0x502b,0xfd,0x5050,0xfd,0x5076,
-0x4bf,0x5120,0x4d5,0x5199,0x4e8,0x524b,0x503,0x5282,0x50a,0x5462,0x51e,0x58e2,0x546,0x2000,0x2001,0x5941,
-0x54e,0x3000,0x3001,0x59cd,0,0x4000,0x400e,0x59df,0,0x59e8,0,0x5a02,0,0x5a13,0,0x5a24,
-0,0x5a3a,0,0x5a43,0,0x5a60,0,0x5a7e,0,0x5a9c,0,0x5aba,0,0x5ad0,0,0x5ae4,
-0,0x5afa,0,0x7000,0x7001,0x5b13,0,0x87a,0x12,0,1,0x12,0x20,0x898,0x4a,0,
-1,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf,0x10,0x11,0x12,0x13,0x14,
-0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,
-0x54,0x5b,0x67,0x6b,0x76,0x7a,0x81,0x82,0x84,0x85,0xc8,0xca,0xd6,0xd8,0xda,0xdc,
-0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xe9,0xea,0xf0,0x2e,0x40,0x4c,0x5e,0x68,0x79,0x84,
-0x91,0x9e,0xab,0xb8,0xc5,0xd2,0xdf,0xec,0xf9,0x106,0x113,0x120,0x12d,0x13a,0x147,0x154,
-0x161,0x16e,0x17b,0x188,0x195,0x1a2,0x1af,0x1bc,0x1c9,0x1d6,0x1e3,0x1f0,0x1fd,0x20c,0x21b,0x22a,
-0x239,0x248,0x257,0x266,0x275,0x28f,0x2a3,0x2b7,0x2d2,0x2e1,0x2ea,0x2fa,0x302,0x30b,0x31a,0x323,
-0x333,0x344,0x355,0xa39,1,0,0x17,0xa6f,0xa80,0xa91,0xaa5,0xabc,0xad4,0xae6,0xafb,0xb12,
-0xb27,0xb37,0xb49,0xb66,0xb82,0xb94,0xbb1,0xbcd,0xbe9,0xbfe,0xc13,0xc2d,0xc48,0xc63,0xbdb,1,
-0,0x149,0xc8b,0xc98,0xcab,0xcd3,0xcf1,0xd0f,0xd27,0xd52,0xd7c,0xd94,0xda7,0xdba,0xdc9,0xdd8,
-0xde7,0xdf6,0xe0d,0xe1e,0xe31,0xe44,0xe51,0xe5e,0xe6d,0xe7e,0xe93,0xea4,0xeaf,0xeb8,0xec9,0xeda,
-0xeed,0xeff,0xf12,0xf25,0xf64,0xf71,0xf7e,0xf8b,0xfa0,0xfd0,0xfea,0x100b,0x1036,0x1059,0x10b7,0x10de,
-0x10f9,0x1108,0x112f,0x1157,0x117a,0x119d,0x11c7,0x11e0,0x11ff,0x1222,0x1246,0x1259,0x1273,0x129d,0x12b5,0x12dd,
-0x1306,0x1319,0x132c,0x133f,0x1366,0x1375,0x1395,0x13c3,0x13e1,0x140f,0x142b,0x1446,0x145f,0x1478,0x1499,0x14c9,
-0x14e8,0x150a,0x153e,0x156b,0x15b0,0x15d1,0x15fb,0x161c,0x1645,0x1658,0x168b,0x16a2,0x16b1,0x16c2,0x16ed,0x1704,
-0x1735,0x1763,0x17a6,0x17b1,0x17ea,0x17fb,0x180c,0x1819,0x182c,0x1866,0x188a,0x18ae,0x18e8,0x1920,0x194b,0x1963,
-0x198f,0x19bb,0x19c8,0x19d7,0x19f4,0x1a16,0x1a44,0x1a64,0x1a8b,0x1ab2,0x1ad1,0x1ae4,0x1af5,0x1b06,0x1b2b,0x1b50,
-0x1b77,0x1bab,0x1bd8,0x1bf6,0x1c09,0x1c22,0x1c5b,0x1c6a,0x1c8a,0x1cac,0x1cce,0x1ce5,0x1cfc,0x1d29,0x1d42,0x1d5b,
-0x1d8c,0x1db6,0x1dd1,0x1de4,0x1e03,0x1e0c,0x1e1f,0x1e3d,0x1e5b,0x1e6e,0x1e85,0x1e9a,0x1ecf,0x1ef3,0x1f08,0x1f17,
-0x1f2a,0x1f4e,0x1f57,0x1f7b,0x1f92,0x1fa5,0x1fb4,0x1fbf,0x1fe0,0x1ff8,0x2007,0x2016,0x2025,0x203c,0x2051,0x2066,
-0x209f,0x20b2,0x20ce,0x20d9,0x20e6,0x2114,0x2138,0x215b,0x216e,0x2190,0x21a3,0x21be,0x21e1,0x2204,0x2229,0x223a,
-0x2269,0x2296,0x22ad,0x22c8,0x22d7,0x2302,0x233a,0x2374,0x23a2,0x23b3,0x23c0,0x23e4,0x23f3,0x240f,0x2429,0x2446,
-0x247e,0x2493,0x24c0,0x24df,0x250d,0x252d,0x2561,0x2570,0x259a,0x25bd,0x25e8,0x25f3,0x2604,0x261f,0x2643,0x2650,
-0x2665,0x268c,0x26b7,0x26ee,0x2701,0x2712,0x2742,0x2753,0x2762,0x2777,0x2795,0x27a8,0x27bb,0x27d2,0x27ef,0x27fa,
-0x2803,0x2825,0x283a,0x285f,0x2876,0x289f,0x28ba,0x28cf,0x28e8,0x2909,0x293e,0x294f,0x2980,0x29a4,0x29b5,0x29ce,
-0x29d9,0x2a06,0x2a28,0x2a56,0x2a89,0x2a98,0x2aa9,0x2ac6,0x2b08,0x2b2f,0x2b3c,0x2b51,0x2b75,0x2b9b,0x2bd4,0x2be5,
-0x2c09,0x2c14,0x2c21,0x2c30,0x2c55,0x2c83,0x2c9f,0x2cbc,0x2cc9,0x2cda,0x2cf8,0x2d1b,0x2d38,0x2d45,0x2d65,0x2d82,
-0x2da3,0x2dcc,0x2ddd,0x2dfc,0x2e15,0x2e2e,0x2e3f,0x2e88,0x2e99,0x2eb2,0x2ee1,0x2f0e,0x2f33,0x2f75,0x2f91,0x2fa0,
-0x2fb7,0x2fe5,0x2ffe,0x3027,0x3041,0x307c,0x309a,0x30a9,0x30c9,0x30e4,0x3108,0x3124,0x3142,0x3160,0x3177,0x3186,
-0x3191,0x31ce,0x31e1,0x320b,0x322b,0x3259,0x327d,0x32a5,0x32ca,0x32d5,0x32ee,0x1fe5,1,0,0x12,0x3352,
-0x3362,0x3375,0x3385,0x3395,0x33a4,0x33b4,0x33c6,0x33d9,0x33eb,0x33fb,0x340b,0x341a,0x3429,0x3439,0x3446,0x3455,
-0x3469,0x20a3,1,0,6,0x348e,0x3499,0x34a6,0x34b3,0x34c0,0x34cb,0x20e7,1,0,0x1e,0x34e8,
-0x34f7,0x350c,0x3521,0x3536,0x354a,0x355b,0x356f,0x3582,0x3593,0x35ac,0x35be,0x35cf,0x35e3,0x35f6,0x360e,0x3620,
-0x362b,0x363b,0x3649,0x365e,0x3673,0x3689,0x36a3,0x36b9,0x36c9,0x36dd,0x36f1,0x3702,0x371a,0x2312,1,0,
-0x68,0x3742,0x3765,0x376e,0x377b,0x3786,0x378f,0x379a,0x37a3,0x37bc,0x37c1,0x37ca,0x37e7,0x37f0,0x37fd,0x3806,
-0x382a,0x3831,0x383a,0x384d,0x3858,0x3861,0x386c,0x3885,0x388e,0x389d,0x38a8,0x38b1,0x38bc,0x38c5,0x38cc,0x38d5,
-0x38e0,0x38e9,0x3902,0x390b,0x3918,0x3923,0x3934,0x393f,0x3954,0x396b,0x3974,0x397d,0x3996,0x39a1,0x39aa,0x39b3,
-0x39ca,0x39e7,0x39f2,0x3a03,0x3a0e,0x3a15,0x3a22,0x3a2f,0x3a5c,0x3a71,0x3a7a,0x3a95,0x3ab8,0x3ad9,0x3afa,0x3b1f,
-0x3b46,0x3b67,0x3b8a,0x3bab,0x3bd2,0x3bf3,0x3c18,0x3c37,0x3c56,0x3c75,0x3c92,0x3cb3,0x3cd4,0x3cf7,0x3d1c,0x3d3b,
-0x3d5a,0x3d7b,0x3da2,0x3dc7,0x3de6,0x3e07,0x3e2a,0x3e45,0x3e5e,0x3e79,0x3e92,0x3eaf,0x3eca,0x3ee7,0x3f06,0x3f23,
-0x3f40,0x3f5f,0x3f7c,0x3f97,0x3fb4,0x3fd1,0x4004,0x402b,0x403e,0x2675,1,0,6,0x406c,0x407b,0x408b,
-0x409b,0x40ab,0x40bc,0x26d3,1,0,0x30,0x40da,0x40e6,0x40f4,0x4103,0x4112,0x4122,0x4133,0x4147,0x415c,
-0x4172,0x4185,0x4199,0x41a9,0x41b2,0x41bd,0x41cd,0x41e9,0x41fb,0x4209,0x4218,0x4224,0x4239,0x424d,0x4260,0x426e,
-0x4282,0x4290,0x429a,0x42ac,0x42b8,0x42c6,0x42d6,0x42dd,0x42e4,0x42eb,0x42f2,0x42f9,0x430f,0x4330,0x870,0x4342,
-0x434d,0x435c,0x4365,0x4370,0x4383,0x4394,0x43a5,0x2963,1,0,4,0x43c1,0x43cc,0x43d8,0x43e2,0x2989,
-1,0,0xc8,0x43f9,0x4406,0x441b,0x4428,0x4437,0x4445,0x4454,0x4463,0x4475,0x4484,0x4492,0x44a3,0x44b2,
-0x44c1,0x44ce,0x44da,0x44e9,0x44f8,0x4502,0x450f,0x451c,0x452b,0x4539,0x4548,0x4554,0x455e,0x456a,0x457a,0x458a,
-0x4598,0x45a4,0x45b5,0x45c1,0x45cd,0x45db,0x45e8,0x45f4,0x4601,0xea4,0x460e,0x461c,0x4636,0x463f,0x464d,0x465b,
-0x4667,0x4676,0x4684,0x4692,0x469e,0x46ad,0x46bb,0x46c9,0x46d6,0x46e5,0x4700,0x470f,0x4720,0x4731,0x4744,0x4756,
-0x4765,0x4777,0x4786,0x4792,0x479d,0x1fb4,0x47aa,0x47b5,0x47c0,0x47cb,0x47d6,0x47f1,0x47fc,0x4807,0x4812,0x4825,
-0x4839,0x4844,0x4853,0x4862,0x486d,0x4878,0x4885,0x4894,0x48a2,0x48ad,0x48c8,0x48d2,0x48e3,0x48f4,0x4903,0x4914,
-0x491f,0x492a,0x4935,0x4940,0x494b,0x4956,0x4961,0x496b,0x4976,0x4986,0x4991,0x499f,0x49ac,0x49b7,0x49c6,0x49d3,
-0x49e0,0x49ef,0x49fc,0x4a0d,0x4a1f,0x4a2f,0x4a3a,0x4a4d,0x4a64,0x4a72,0x4a7f,0x4a8a,0x4a97,0x4aa8,0x4ac4,0x4ada,
-0x4ae5,0x4b02,0x4b12,0x4b21,0x4b2c,0x4b37,0x20ce,0x4b43,0x4b4e,0x4b66,0x4b76,0x4b85,0x4b93,0x4ba1,0x4bac,0x4bb7,
-0x4bcb,0x4be2,0x4bfa,0x4c0a,0x4c1a,0x4c2a,0x4c3c,0x4c47,0x4c52,0x4c5c,0x4c68,0x4c76,0x4c89,0x4c95,0x4ca2,0x4cad,
-0x4cc9,0x4cd6,0x4ce4,0x4cfd,0x29ce,0x4d0c,0x27ef,0x4d19,0x4d27,0x4d39,0x4d47,0x4d53,0x4d63,0x2c09,0x4d71,0x4d7d,
-0x4d88,0x4d93,0x4d9e,0x4db2,0x4dc0,0x4dd7,0x4de3,0x4df7,0x4e05,0x4e17,0x4e2d,0x4e3b,0x4e4d,0x4e5b,0x4e78,0x4e8a,
-0x4e97,0x4ea8,0x4eba,0x4ed4,0x4ee1,0x4ef4,0x4f05,0x3186,0x4f12,0x32ca,0x4f21,0x33e3,1,0,6,0x4f4d,
-0x4f60,0x4f70,0x4f7e,0x4f8f,0x4f9f,0x343f,0x12,0,1,0x4fc9,0x4fcf,0x344c,0x12,0,1,0x4fc9,
-0x4fcf,0x3459,1,0,3,0x4fc9,0x4fcf,0x5008,0x346f,1,0,3,0x4fc9,0x4fcf,0x5008,0x3485,
-1,0,0x12,0x5092,0x509c,0x50a8,0x50af,0x50ba,0x50bf,0x50c6,0x50cd,0x50d6,0x50db,0x50e0,0x50f0,0x870,
-0x4342,0x50fc,0x434d,0x510c,0x435c,0x352e,1,0,0xf,0x5092,0x5133,0x513d,0x5147,0x5152,0x4218,0x515c,
-0x5168,0x5170,0x5177,0x5181,0x50a8,0x50af,0x50bf,0x518b,0x35b5,1,0,0x17,0x5092,0x51a8,0x5147,0x51b4,
-0x51c1,0x51cf,0x4218,0x51da,0x50a8,0x51eb,0x50bf,0x51fa,0x5208,0x870,0x4330,0x5214,0x5225,0x4342,0x50fc,0x434d,
-0x510c,0x435c,0x5236,0x36d2,1,0,3,0x5269,0x5271,0x5279,0x36eb,1,0,0x10,0x52a2,0x52a9,
-0x52b8,0x52d9,0x52fc,0x5307,0x5326,0x533d,0x534a,0x5353,0x5372,0x53a5,0x53c0,0x53ef,0x540c,0x5431,0x3784,1,
-0,0x24,0x5480,0x548d,0x54a0,0x54ad,0x54da,0x54ff,0x5514,0x5533,0x5554,0x5581,0x55ba,0x55dd,0x5600,0x562d,
-0x5662,0x5689,0x56b2,0x56e9,0x5718,0x5739,0x575e,0x576d,0x5790,0x57a7,0x57b4,0x57c3,0x57e0,0x57f9,0x581c,0x5841,
-0x585a,0x586f,0x587e,0x588f,0x589c,0x58bd,0x3954,1,0,4,0x58fb,0x5906,0x591e,0x5936,0x3990,0x36,
-1,2,4,8,0xe,0x10,0x20,0x3e,0x40,0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,
-0x1000,0x2000,0x4000,0x7000,0x8000,0x10000,0x20000,0x40000,0x78001,0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,
-0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,0x30f80000,0x34e8,0x34f7,0x350c,0x3521,0x596f,0x3536,0x354a,0x5965,0x355b,0x356f,
-0x3582,0x5980,0x3593,0x35ac,0x35be,0x5997,0x35cf,0x35e3,0x35f6,0x59c0,0x360e,0x3620,0x362b,0x363b,0x595c,0x3649,
-0x365e,0x3673,0x3689,0x36a3,0x36b9,0x36c9,0x36dd,0x36f1,0x59b6,0x3702,0x371a,0x59a1
+const int32_t PropNameData::valueMaps[1463]={
+6,0,0x4b,0,0xfb,0x368,0xfb,0x37e,0xfb,0x393,0xfb,0x3a9,0xfb,0x3b4,0xfb,0x3d5,
+0xfb,0x3e5,0xfb,0x3f4,0xfb,0x402,0xfb,0x426,0xfb,0x43d,0xfb,0x455,0xfb,0x46c,0xfb,0x47b,
+0xfb,0x48a,0xfb,0x49b,0xfb,0x4a9,0xfb,0x4bb,0xfb,0x4d5,0xfb,0x4f0,0xfb,0x505,0xfb,0x522,
+0xfb,0x533,0xfb,0x53e,0xfb,0x55d,0xfb,0x573,0xfb,0x584,0xfb,0x594,0xfb,0x5af,0xfb,0x5c8,
+0xfb,0x5d9,0xfb,0x5f3,0xfb,0x606,0xfb,0x616,0xfb,0x630,0xfb,0x649,0xfb,0x660,0xfb,0x674,
+0xfb,0x68a,0xfb,0x69e,0xfb,0x6b4,0xfb,0x6ce,0xfb,0x6e6,0xfb,0x702,0xfb,0x70a,0xfb,0x712,
+0xfb,0x71a,0xfb,0x722,0xfb,0x72b,0xfb,0x738,0xfb,0x74b,0xfb,0x768,0xfb,0x785,0xfb,0x7a2,
+0xfb,0x7c0,0xfb,0x7de,0xfb,0x802,0xfb,0x80f,0xfb,0x829,0xfb,0x83e,0xfb,0x859,0xfb,0x870,
+0xfb,0x887,0xfb,0x8a9,0xfb,0x8c8,0xfb,0x8e1,0xfb,0x90e,0xfb,0x947,0xfb,0x978,0xfb,0x9a7,
+0xfb,0x9d6,0xfb,0x9eb,0xfb,0xa04,0xfb,0xa2f,0xfb,0x1000,0x101a,0xa60,0x177,0xc80,0x192,0x331c,
+0x101,0x333b,0x2df,0x3479,0x2f5,0x34d3,0x2ff,0x3730,0x321,0x405b,0x38d,0x40cb,0x397,0x43b0,0x3cb,0x43ee,
+0x3d3,0x4f3e,0x4a0,0x4fbc,0x4aa,0x4fe1,0x4b0,0x4ffb,0x4b6,0x501c,0x4bd,0x5036,0x101,0x505b,0x101,0x5081,
+0x4c4,0x512b,0x4da,0x51a4,0x4ed,0x5256,0x508,0x528d,0x50f,0x546d,0x523,0x58ed,0x54b,0x594c,0x553,0x2000,
+0x2001,0x5999,0x559,0x3000,0x3001,0x5a25,0,0x4000,0x400e,0x5a37,0,0x5a40,0,0x5a5a,0,0x5a6b,
+0,0x5a7c,0,0x5a92,0,0x5a9b,0,0x5ab8,0,0x5ad6,0,0x5af4,0,0x5b12,0,0x5b28,
+0,0x5b3c,0,0x5b52,0,0x7000,0x7002,0x5b6b,0,0x5b82,0x5a7,0x896,0x12,0,1,0x12,
+0x20,0x8b4,0x4a,0,1,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf,0x10,
+0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,
+0x21,0x22,0x23,0x24,0x54,0x5b,0x67,0x6b,0x76,0x7a,0x81,0x82,0x84,0x85,0xc8,0xca,
+0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xe9,0xea,0xf0,0x2e,0x40,0x4c,
+0x5e,0x68,0x79,0x84,0x91,0x9e,0xab,0xb8,0xc5,0xd2,0xdf,0xec,0xf9,0x106,0x113,0x120,
+0x12d,0x13a,0x147,0x154,0x161,0x16e,0x17b,0x188,0x195,0x1a2,0x1af,0x1bc,0x1c9,0x1d6,0x1e3,0x1f0,
+0x1fd,0x20c,0x21b,0x22a,0x239,0x248,0x257,0x266,0x275,0x28f,0x2a3,0x2b7,0x2d2,0x2e1,0x2ea,0x2fa,
+0x302,0x30b,0x31a,0x323,0x333,0x344,0x355,0xa55,1,0,0x17,0xa6f,0xa80,0xa91,0xaa5,0xabc,
+0xad4,0xae6,0xafb,0xb12,0xb27,0xb37,0xb49,0xb66,0xb82,0xb94,0xbb1,0xbcd,0xbe9,0xbfe,0xc13,0xc2d,
+0xc48,0xc63,0xbf7,1,0,0x149,0xc8b,0xc98,0xcab,0xcd3,0xcf1,0xd0f,0xd27,0xd52,0xd7c,0xd94,
+0xda7,0xdba,0xdc9,0xdd8,0xde7,0xdf6,0xe0d,0xe1e,0xe31,0xe44,0xe51,0xe5e,0xe6d,0xe7e,0xe93,0xea4,
+0xeaf,0xeb8,0xec9,0xeda,0xeed,0xeff,0xf12,0xf25,0xf64,0xf71,0xf7e,0xf8b,0xfa0,0xfd0,0xfea,0x100b,
+0x1036,0x1059,0x10b7,0x10de,0x10f9,0x1108,0x112f,0x1157,0x117a,0x119d,0x11c7,0x11e0,0x11ff,0x1222,0x1246,0x1259,
+0x1273,0x129d,0x12b5,0x12dd,0x1306,0x1319,0x132c,0x133f,0x1366,0x1375,0x1395,0x13c3,0x13e1,0x140f,0x142b,0x1446,
+0x145f,0x1478,0x1499,0x14c9,0x14e8,0x150a,0x153e,0x156b,0x15b0,0x15d1,0x15fb,0x161c,0x1645,0x1658,0x168b,0x16a2,
+0x16b1,0x16c2,0x16ed,0x1704,0x1735,0x1763,0x17a6,0x17b1,0x17ea,0x17fb,0x180c,0x1819,0x182c,0x1866,0x188a,0x18ae,
+0x18e8,0x1920,0x194b,0x1963,0x198f,0x19bb,0x19c8,0x19d7,0x19f4,0x1a16,0x1a44,0x1a64,0x1a8b,0x1ab2,0x1ad1,0x1ae4,
+0x1af5,0x1b06,0x1b2b,0x1b50,0x1b77,0x1bab,0x1bd8,0x1bf6,0x1c09,0x1c22,0x1c5b,0x1c6a,0x1c8a,0x1cac,0x1cce,0x1ce5,
+0x1cfc,0x1d29,0x1d42,0x1d5b,0x1d8c,0x1db6,0x1dd1,0x1de4,0x1e03,0x1e0c,0x1e1f,0x1e3d,0x1e5b,0x1e6e,0x1e85,0x1e9a,
+0x1ecf,0x1ef3,0x1f08,0x1f17,0x1f2a,0x1f4e,0x1f57,0x1f7b,0x1f92,0x1fa5,0x1fb4,0x1fbf,0x1fe0,0x1ff8,0x2007,0x2016,
+0x2025,0x203c,0x2051,0x2066,0x209f,0x20b2,0x20ce,0x20d9,0x20e6,0x2114,0x2138,0x215b,0x216e,0x2190,0x21a3,0x21be,
+0x21e1,0x2204,0x2229,0x223a,0x2269,0x2296,0x22ad,0x22c8,0x22d7,0x2302,0x233a,0x2374,0x23a2,0x23b3,0x23c0,0x23e4,
+0x23f3,0x240f,0x2429,0x2446,0x247e,0x2493,0x24c0,0x24df,0x250d,0x252d,0x2561,0x2570,0x259a,0x25bd,0x25e8,0x25f3,
+0x2604,0x261f,0x2643,0x2650,0x2665,0x268c,0x26b7,0x26ee,0x2701,0x2712,0x2742,0x2753,0x2762,0x2777,0x2795,0x27a8,
+0x27bb,0x27d2,0x27ef,0x27fa,0x2803,0x2825,0x283a,0x285f,0x2876,0x289f,0x28ba,0x28cf,0x28e8,0x2909,0x293e,0x294f,
+0x2980,0x29a4,0x29b5,0x29ce,0x29d9,0x2a06,0x2a28,0x2a56,0x2a89,0x2a98,0x2aa9,0x2ac6,0x2b08,0x2b2f,0x2b3c,0x2b51,
+0x2b75,0x2b9b,0x2bd4,0x2be5,0x2c09,0x2c14,0x2c21,0x2c30,0x2c55,0x2c83,0x2c9f,0x2cbc,0x2cc9,0x2cda,0x2cf8,0x2d1b,
+0x2d38,0x2d45,0x2d65,0x2d82,0x2da3,0x2dcc,0x2ddd,0x2dfc,0x2e15,0x2e2e,0x2e3f,0x2e88,0x2e99,0x2eb2,0x2ee1,0x2f0e,
+0x2f33,0x2f75,0x2f91,0x2fa0,0x2fb7,0x2fe5,0x2ffe,0x3027,0x3041,0x307c,0x309a,0x30a9,0x30c9,0x30e4,0x3108,0x3124,
+0x3142,0x3160,0x3177,0x3186,0x3191,0x31ce,0x31e1,0x320b,0x322b,0x3259,0x327d,0x32a5,0x32ca,0x32d5,0x32ee,0x2001,
+1,0,0x12,0x3352,0x3362,0x3375,0x3385,0x3395,0x33a4,0x33b4,0x33c6,0x33d9,0x33eb,0x33fb,0x340b,0x341a,
+0x3429,0x3439,0x3446,0x3455,0x3469,0x20bf,1,0,6,0x348e,0x3499,0x34a6,0x34b3,0x34c0,0x34cb,0x2103,
+1,0,0x1e,0x34e8,0x34f7,0x350c,0x3521,0x3536,0x354a,0x355b,0x356f,0x3582,0x3593,0x35ac,0x35be,0x35cf,
+0x35e3,0x35f6,0x360e,0x3620,0x362b,0x363b,0x3649,0x365e,0x3673,0x3689,0x36a3,0x36b9,0x36c9,0x36dd,0x36f1,0x3702,
+0x371a,0x232e,1,0,0x68,0x3742,0x3765,0x376e,0x377b,0x3786,0x378f,0x379a,0x37a3,0x37bc,0x37c1,0x37ca,
+0x37e7,0x37f0,0x37fd,0x3806,0x382a,0x3831,0x383a,0x384d,0x3858,0x3861,0x386c,0x3885,0x388e,0x389d,0x38a8,0x38b1,
+0x38bc,0x38c5,0x38cc,0x38d5,0x38e0,0x38e9,0x3902,0x390b,0x3918,0x3923,0x3934,0x393f,0x3954,0x396b,0x3974,0x397d,
+0x3996,0x39a1,0x39aa,0x39b3,0x39ca,0x39e7,0x39f2,0x3a03,0x3a0e,0x3a15,0x3a22,0x3a2f,0x3a5c,0x3a71,0x3a7a,0x3a95,
+0x3ab8,0x3ad9,0x3afa,0x3b1f,0x3b46,0x3b67,0x3b8a,0x3bab,0x3bd2,0x3bf3,0x3c18,0x3c37,0x3c56,0x3c75,0x3c92,0x3cb3,
+0x3cd4,0x3cf7,0x3d1c,0x3d3b,0x3d5a,0x3d7b,0x3da2,0x3dc7,0x3de6,0x3e07,0x3e2a,0x3e45,0x3e5e,0x3e79,0x3e92,0x3eaf,
+0x3eca,0x3ee7,0x3f06,0x3f23,0x3f40,0x3f5f,0x3f7c,0x3f97,0x3fb4,0x3fd1,0x4004,0x402b,0x403e,0x2691,1,0,
+6,0x406c,0x407b,0x408b,0x409b,0x40ab,0x40bc,0x26ef,1,0,0x30,0x40da,0x40e6,0x40f4,0x4103,0x4112,
+0x4122,0x4133,0x4147,0x415c,0x4172,0x4185,0x4199,0x41a9,0x41b2,0x41bd,0x41cd,0x41e9,0x41fb,0x4209,0x4218,0x4224,
+0x4239,0x424d,0x4260,0x426e,0x4282,0x4290,0x429a,0x42ac,0x42b8,0x42c6,0x42d6,0x42dd,0x42e4,0x42eb,0x42f2,0x42f9,
+0x430f,0x4330,0x870,0x4342,0x434d,0x435c,0x4365,0x4370,0x4383,0x4394,0x43a5,0x297f,1,0,4,0x43c1,
+0x43cc,0x43d8,0x43e2,0x29a5,1,0,0xc9,0x43f9,0x4406,0x441b,0x4428,0x4437,0x4445,0x4454,0x4463,0x4475,
+0x4484,0x4492,0x44a3,0x44b2,0x44c1,0x44ce,0x44da,0x44e9,0x44f8,0x4502,0x450f,0x451c,0x452b,0x4539,0x4548,0x4554,
+0x455e,0x456a,0x457a,0x458a,0x4598,0x45a4,0x45b5,0x45c1,0x45cd,0x45db,0x45e8,0x45f4,0x4601,0xea4,0x460e,0x461c,
+0x4636,0x463f,0x464d,0x465b,0x4667,0x4676,0x4684,0x4692,0x469e,0x46ad,0x46bb,0x46c9,0x46d6,0x46e5,0x4700,0x470f,
+0x4720,0x4731,0x4744,0x4756,0x4765,0x4777,0x4786,0x4792,0x479d,0x1fb4,0x47aa,0x47b5,0x47c0,0x47cb,0x47d6,0x47f1,
+0x47fc,0x4807,0x4812,0x4825,0x4839,0x4844,0x4853,0x4862,0x486d,0x4878,0x4885,0x4894,0x48a2,0x48ad,0x48c8,0x48d2,
+0x48e3,0x48f4,0x4903,0x4914,0x491f,0x492a,0x4935,0x4940,0x494b,0x4956,0x4961,0x496b,0x4976,0x4986,0x4991,0x499f,
+0x49ac,0x49b7,0x49c6,0x49d3,0x49e0,0x49ef,0x49fc,0x4a0d,0x4a1f,0x4a2f,0x4a3a,0x4a4d,0x4a64,0x4a72,0x4a7f,0x4a8a,
+0x4a97,0x4aa8,0x4ac4,0x4ada,0x4ae5,0x4b02,0x4b12,0x4b21,0x4b2c,0x4b37,0x20ce,0x4b43,0x4b4e,0x4b66,0x4b76,0x4b85,
+0x4b93,0x4ba1,0x4bac,0x4bb7,0x4bcb,0x4be2,0x4bfa,0x4c0a,0x4c1a,0x4c2a,0x4c3c,0x4c47,0x4c52,0x4c5c,0x4c68,0x4c76,
+0x4c89,0x4c95,0x4ca2,0x4cad,0x4cc9,0x4cd6,0x4ce4,0x4cfd,0x29ce,0x4d0c,0x27ef,0x4d19,0x4d27,0x4d39,0x4d47,0x4d53,
+0x4d63,0x2c09,0x4d71,0x4d7d,0x4d88,0x4d93,0x4d9e,0x4db2,0x4dc0,0x4dd7,0x4de3,0x4df7,0x4e05,0x4e17,0x4e2d,0x4e3b,
+0x4e4d,0x4e5b,0x4e78,0x4e8a,0x4e97,0x4ea8,0x4eba,0x4ed4,0x4ee1,0x4ef4,0x4f05,0x3186,0x4f12,0x32ca,0x4f21,0x4f33,
+0x3403,1,0,6,0x4f58,0x4f6b,0x4f7b,0x4f89,0x4f9a,0x4faa,0x345f,0x12,0,1,0x4fd4,0x4fda,
+0x346c,0x12,0,1,0x4fd4,0x4fda,0x3479,1,0,3,0x4fd4,0x4fda,0x5013,0x348f,1,0,
+3,0x4fd4,0x4fda,0x5013,0x34a5,1,0,0x12,0x509d,0x50a7,0x50b3,0x50ba,0x50c5,0x50ca,0x50d1,0x50d8,
+0x50e1,0x50e6,0x50eb,0x50fb,0x870,0x4342,0x5107,0x434d,0x5117,0x435c,0x354e,1,0,0xf,0x509d,0x513e,
+0x5148,0x5152,0x515d,0x4218,0x5167,0x5173,0x517b,0x5182,0x518c,0x50b3,0x50ba,0x50ca,0x5196,0x35d5,1,0,
+0x17,0x509d,0x51b3,0x5152,0x51bf,0x51cc,0x51da,0x4218,0x51e5,0x50b3,0x51f6,0x50ca,0x5205,0x5213,0x870,0x4330,
+0x521f,0x5230,0x4342,0x5107,0x434d,0x5117,0x435c,0x5241,0x36f2,1,0,3,0x5274,0x527c,0x5284,0x370b,
+1,0,0x10,0x52ad,0x52b4,0x52c3,0x52e4,0x5307,0x5312,0x5331,0x5348,0x5355,0x535e,0x537d,0x53b0,0x53cb,
+0x53fa,0x5417,0x543c,0x37a4,1,0,0x24,0x548b,0x5498,0x54ab,0x54b8,0x54e5,0x550a,0x551f,0x553e,0x555f,
+0x558c,0x55c5,0x55e8,0x560b,0x5638,0x566d,0x5694,0x56bd,0x56f4,0x5723,0x5744,0x5769,0x5778,0x579b,0x57b2,0x57bf,
+0x57ce,0x57eb,0x5804,0x5827,0x584c,0x5865,0x587a,0x5889,0x589a,0x58a7,0x58c8,0x3974,1,0,4,0x5906,
+0x5911,0x5929,0x5941,0x39b0,0x12,0,1,0x5971,0x5988,0x39c7,0x36,1,2,4,8,0xe,
+0x10,0x20,0x3e,0x40,0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,0x1000,0x2000,0x4000,0x7000,0x8000,
+0x10000,0x20000,0x40000,0x78001,0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,
+0x30f80000,0x34e8,0x34f7,0x350c,0x3521,0x59c7,0x3536,0x354a,0x59bd,0x355b,0x356f,0x3582,0x59d8,0x3593,0x35ac,0x35be,
+0x59ef,0x35cf,0x35e3,0x35f6,0x5a18,0x360e,0x3620,0x362b,0x363b,0x59b4,0x3649,0x365e,0x3673,0x3689,0x36a3,0x36b9,
+0x36c9,0x36dd,0x36f1,0x5a0e,0x3702,0x371a,0x59f9,0x3cde,1,0,0xc,0x5ba3,0x5bc0,0x5bd7,0x5bfc,0x5c0f,
+0x5c20,0x5c35,0x5c48,0x5c5d,0x5c78,0x5c91,0x5ca6
};
-const uint8_t PropNameData::bytesTries[15527]={
+const uint8_t PropNameData::bytesTries[15733]={
0,0x15,0x6d,0xc3,0xc7,0x73,0xc2,0x12,0x76,0x7a,0x76,0x6a,0x77,0xa2,0x52,0x78,
1,0x64,0x50,0x69,0x10,0x64,1,0x63,0x30,0x73,0x62,0x13,0x74,0x61,0x72,0x74,
0x63,0x60,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x61,0x13,0x69,0x67,0x69,0x74,
@@ -167,15 +169,15 @@ const uint8_t PropNameData::bytesTries[15527]={
0x30,0x77,0x10,0x73,0x77,0x11,0x79,0x6e,0x75,0x12,0x65,0x72,0x6e,1,0x73,0x38,
0x77,0x18,0x68,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x77,0x14,0x79,0x6e,0x74,
0x61,0x78,0x75,0x10,0x6d,0x9f,1,0x6d,0x3c,0x75,0x1a,0x6f,0x74,0x61,0x74,0x69,
-0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x53,0x12,0x61,0x72,0x6b,0x53,0x66,0xc2,0x2e,0x69,
-0xc1,0x72,0x69,0xa2,0x6f,0x6a,0xa4,0x3f,0x6c,4,0x62,0xc3,8,0x63,0x8c,0x65,
+0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x53,0x12,0x61,0x72,0x6b,0x53,0x66,0xc2,0x4a,0x69,
+0xc1,0x8e,0x69,0xa2,0x6f,0x6a,0xa4,0x5b,0x6c,4,0x62,0xc3,8,0x63,0x8c,0x65,
0x98,0x69,0xa2,0x56,0x6f,2,0x65,0x4b,0x67,0x4c,0x77,0x11,0x65,0x72,0x4c,0x13,
0x63,0x61,0x73,0x65,0x4c,0x16,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40,4,
0x11,0x69,0x63,0x1f,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,0x65,0x78,0x63,0x65,0x70,
0x74,0x69,0x6f,0x6e,0x4b,0xd8,0x40,4,0x11,0x63,0x63,0xc3,0x10,0x18,0x61,0x64,
0x63,0x61,0x6e,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,0x62,0x69,0x6e,
0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,0x10,0x16,0x6e,0x65,0x62,0x72,0x65,
-0x61,0x6b,0xc3,8,2,0x64,0x4a,0x6e,0xa2,0x91,0x73,1,0x63,0xd9,0x40,3,
+0x61,0x6b,0xc3,8,2,0x64,0x4a,0x6e,0xa2,0xad,0x73,1,0x63,0xd9,0x40,3,
0x6f,0x16,0x63,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0xd9,0x40,3,2,0x63,0xa2,0x44,
0x65,0xa2,0x6c,0x73,0x40,2,0x62,0x48,0x74,0x64,0x75,0xa2,0x48,0x1b,0x6e,0x61,
0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0xa3,0x48,0x44,0x1c,0x69,0x6e,
@@ -183,750 +185,752 @@ const uint8_t PropNameData::bytesTries[15527]={
0x72,0x1c,0x69,0x6e,0x61,0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x47,
0x11,0x72,0x74,0x41,0x3e,0x10,0x6f,1,0x6d,0x30,0x6e,0x14,0x74,0x69,0x6e,0x75,
0x65,0x3f,0x16,0x70,0x61,0x74,0x6d,0x61,0x74,0x68,1,0x63,0x30,0x73,0x13,0x74,
-0x61,0x72,0x74,0xa3,0x49,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0xa3,0x4a,0x10,
-0x6f,0x42,0x16,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x43,2,0x64,0x2e,0x70,0x86,
-0x73,0x10,0x63,0xc3,0x17,0x11,0x69,0x63,1,0x70,0x46,0x73,0x1e,0x79,0x6c,0x6c,
-0x61,0x62,0x69,0x63,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x17,0x10,0x6f,
-0x1f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,
-0x79,0xc3,0x16,0x10,0x63,0xc3,0x16,2,0x67,0xc3,6,0x6f,0x26,0x74,0xc3,7,
-0x11,0x69,0x6e,1,0x63,0x4a,0x69,0x11,0x6e,0x67,1,0x67,0x2e,0x74,0x12,0x79,
-0x70,0x65,0xc3,7,0x13,0x72,0x6f,0x75,0x70,0xc3,6,0x48,0x15,0x6f,0x6e,0x74,
-0x72,0x6f,0x6c,0x49,0x66,0x86,0x67,0xa2,0x4a,0x68,3,0x61,0x36,0x65,0x58,0x73,
-0x68,0x79,0x13,0x70,0x68,0x65,0x6e,0x3d,0x1f,0x6e,0x67,0x75,0x6c,0x73,0x79,0x6c,
-0x6c,0x61,0x62,0x6c,0x65,0x74,0x79,0x70,0x65,0xc3,0xb,0x10,0x78,0x3a,0x14,0x64,
-0x69,0x67,0x69,0x74,0x3b,0x10,0x74,0xc3,0xb,0x16,0x75,0x6c,0x6c,0x63,0x6f,0x6d,
-0x70,0x1f,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x78,0x63,0x6c,0x75,0x73,0x69,
-0x6f,0x6e,0x33,2,0x63,0xa2,0x44,0x65,0xa2,0x4b,0x72,3,0x61,0x34,0x62,0x84,
-0x65,0x8a,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x11,0x70,0x68,0x7c,0x12,0x65,0x6d,0x65,
-3,0x62,0x5e,0x63,0x30,0x65,0x48,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x1a,0x6c,0x75,
-0x73,0x74,0x65,0x72,0x62,0x72,0x65,0x61,0x6b,0xc3,0x12,0x14,0x78,0x74,0x65,0x6e,
-0x64,0x37,0x12,0x61,0x73,0x65,0x35,0x11,0x78,0x74,0x37,0xc2,5,1,0x62,0xc3,
-0x12,0x6d,0xd9,0x20,0,0x1c,0x6e,0x65,0x72,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,
-0x6f,0x72,0x79,0xc2,5,0x13,0x6d,0x61,0x73,0x6b,0xd9,0x20,0,0x61,0xa2,0xa2,
-0x62,0xa2,0xd0,0x63,0xa4,0x4f,0x64,0xa6,0x1c,0x65,5,0x6d,0x75,0x6d,0x6e,0x70,
-0xa2,0x6b,0x78,0x10,0x74,0x30,1,0x65,0x2c,0x70,0x12,0x69,0x63,0x74,0xa1,0x12,
-0x6e,0x64,0x65,1,0x64,0x24,0x72,0x31,0x1b,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,
-0x61,0x70,0x68,0x69,0x63,0xa1,0x10,0x6f,1,0x64,0x97,0x6a,0x10,0x69,0x92,3,
-0x63,0x44,0x6b,0x54,0x6d,0x70,0x70,0x1a,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,
-0x69,0x6f,0x6e,0x95,0x17,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x9b,0x1c,0x65,
-0x79,0x63,0x61,0x70,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0xa3,0x42,0x16,0x6f,
-0x64,0x69,0x66,0x69,0x65,0x72,0x96,0x13,0x62,0x61,0x73,0x65,0x99,0x12,0x72,0x65,
-0x73,0x95,0x61,0x30,0x62,0x4e,0x63,0x12,0x6f,0x6d,0x70,0x9b,0xc2,4,0x1b,0x73,
-0x74,0x61,0x73,0x69,0x61,0x6e,0x77,0x69,0x64,0x74,0x68,0xc3,4,0x12,0x61,0x73,
-0x65,0x99,3,0x67,0x44,0x68,0x4a,0x6c,0x4e,0x73,0x1a,0x63,0x69,0x69,0x68,0x65,
-0x78,0x64,0x69,0x67,0x69,0x74,0x23,0x10,0x65,0xd9,0x40,0,0x11,0x65,0x78,0x23,
-1,0x6e,0x38,0x70,0x11,0x68,0x61,0x20,0x14,0x62,0x65,0x74,0x69,0x63,0x21,0x11,
-0x75,0x6d,0x79,5,0x6c,0x22,0x6c,0x36,0x6d,0x52,0x70,1,0x62,0xd9,0x40,0xd,
-0x74,0xc3,0x15,2,0x61,0x32,0x6b,0xc3,1,0x6f,0x11,0x63,0x6b,0xc3,1,0x11,
-0x6e,0x6b,0x7b,0x10,0x67,0xd9,0x40,1,0x61,0xa2,0x4f,0x63,0xc3,0,0x69,0x11,
-0x64,0x69,2,0x63,0x54,0x6d,0x74,0x70,0x1b,0x61,0x69,0x72,0x65,0x64,0x62,0x72,
-0x61,0x63,0x6b,0x65,0x74,0xd8,0x40,0xd,0x13,0x74,0x79,0x70,0x65,0xc3,0x15,0x24,
-1,0x6c,0x30,0x6f,0x14,0x6e,0x74,0x72,0x6f,0x6c,0x25,0x12,0x61,0x73,0x73,0xc3,
-0,0x26,0x14,0x69,0x72,0x72,0x6f,0x72,1,0x65,0x38,0x69,0x16,0x6e,0x67,0x67,
-0x6c,0x79,0x70,0x68,0xd9,0x40,1,0x10,0x64,0x27,0x17,0x73,0x69,0x63,0x65,0x6d,
-0x6f,0x6a,0x69,0xa3,0x41,6,0x68,0x7c,0x68,0x54,0x69,0x85,0x6f,0xa2,0x6f,0x77,
-4,0x63,0x30,0x6b,0x36,0x6c,0x87,0x74,0x8b,0x75,0x89,1,0x66,0x8d,0x6d,0x8f,
-0x11,0x63,0x66,0x91,0x18,0x61,0x6e,0x67,0x65,0x73,0x77,0x68,0x65,0x6e,4,0x63,
-0x44,0x6c,0x6c,0x6e,0x7e,0x74,0x98,0x75,0x18,0x70,0x70,0x65,0x72,0x63,0x61,0x73,
-0x65,0x64,0x89,0x12,0x61,0x73,0x65,1,0x66,0x30,0x6d,0x14,0x61,0x70,0x70,0x65,
-0x64,0x8f,0x14,0x6f,0x6c,0x64,0x65,0x64,0x8d,0x18,0x6f,0x77,0x65,0x72,0x63,0x61,
-0x73,0x65,0x64,0x87,0x1c,0x66,0x6b,0x63,0x63,0x61,0x73,0x65,0x66,0x6f,0x6c,0x64,
-0x65,0x64,0x91,0x18,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x64,0x8b,0x13,0x6d,
-0x70,0x65,0x78,0x33,0x61,0x2e,0x63,0xa2,0x48,0x66,0xd9,0x40,2,1,0x6e,0x72,
-0x73,0x10,0x65,3,0x64,0x83,0x66,0x3a,0x69,0x4a,0x73,0x17,0x65,0x6e,0x73,0x69,
-0x74,0x69,0x76,0x65,0x65,0x15,0x6f,0x6c,0x64,0x69,0x6e,0x67,0xd9,0x40,2,0x17,
-0x67,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,0x85,0x13,0x6f,0x6e,0x69,0x63,0x1f,0x61,
-0x6c,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,
-2,0x10,0x63,0xc3,2,3,0x61,0x30,0x65,0x34,0x69,0xa2,0x41,0x74,0xc3,3,
-0x11,0x73,0x68,0x29,2,0x63,0x3a,0x66,0x58,0x70,0x2c,0x16,0x72,0x65,0x63,0x61,
-0x74,0x65,0x64,0x2d,0x1d,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x74,
-0x79,0x70,0x65,0xc3,3,0x15,0x61,0x75,0x6c,0x74,0x69,0x67,0x1f,0x6e,0x6f,0x72,
-0x61,0x62,0x6c,0x65,0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x2b,0x2a,0x10,
-0x61,0x2e,0x15,0x63,0x72,0x69,0x74,0x69,0x63,0x2f,3,0x66,0x34,0x6e,0x3e,0x74,
-0x42,0x79,0x22,0x11,0x65,0x73,0x23,0x20,0x13,0x61,0x6c,0x73,0x65,0x21,0x20,0x10,
-0x6f,0x21,0x22,0x12,0x72,0x75,0x65,0x23,0xb,0x6b,0x5b,0x6f,0x23,0x6f,0x3c,0x72,
-0x4c,0x76,1,0x69,0x24,0x72,0x33,0x13,0x72,0x61,0x6d,0x61,0x33,0x10,0x76,0x22,
-0x14,0x65,0x72,0x6c,0x61,0x79,0x23,0xa2,0xe2,0x13,0x69,0x67,0x68,0x74,0xa3,0xe2,
-0x6b,0x58,0x6c,0x74,0x6e,3,0x6b,0x2f,0x6f,0x30,0x72,0x21,0x75,0x12,0x6b,0x74,
-0x61,0x2f,0x19,0x74,0x72,0x65,0x6f,0x72,0x64,0x65,0x72,0x65,0x64,0x21,1,0x61,
-0x24,0x76,0x31,0x18,0x6e,0x61,0x76,0x6f,0x69,0x63,0x69,0x6e,0x67,0x31,0xa2,0xe0,
-0x12,0x65,0x66,0x74,0xa3,0xe0,0x64,0x45,0x64,0x4e,0x68,0x88,0x69,1,0x6f,0x26,
-0x73,0xa3,0xf0,0x1a,0x74,0x61,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,
-0xf0,2,0x61,0xa3,0xea,0x62,0xa3,0xe9,0x6f,0x13,0x75,0x62,0x6c,0x65,1,0x61,
-0x30,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa3,0xe9,0x13,0x62,0x6f,0x76,0x65,0xa3,0xea,
-0x12,0x61,0x6e,0x72,0x2c,0x15,0x65,0x61,0x64,0x69,0x6e,0x67,0x2d,0x61,0xa2,0x7b,
-0x62,0xa2,0xd4,0x63,0x11,0x63,0x63,4,0x31,0x3c,0x32,0xa2,0x42,0x33,0xa2,0x56,
-0x38,0xa2,0x64,0x39,0x10,0x31,0xa3,0x5b,9,0x35,0xa,0x35,0x3f,0x36,0x41,0x37,
-0x43,0x38,0x45,0x39,0x47,0x30,0x30,0x31,0x3c,0x32,0x42,0x33,0x4e,0x34,0x3d,0x34,
-1,0x33,0xa3,0x67,0x37,0xa3,0x6b,0x36,0x10,0x38,0xa3,0x76,0x38,1,0x32,0xa3,
-0x7a,0x39,0xa3,0x81,0x3a,2,0x30,0xa3,0x82,0x32,0xa3,0x84,0x33,0xa3,0x85,9,
-0x35,0xa,0x35,0x53,0x36,0x55,0x37,0x57,0x38,0x59,0x39,0x5b,0x30,0x49,0x31,0x4b,
-0x32,0x4d,0x33,0x4f,0x34,0x51,6,0x33,8,0x33,0x63,0x34,0x65,0x35,0x67,0x36,
-0x69,0x30,0x5d,0x31,0x5f,0x32,0x61,0x10,0x34,0xa3,0x54,0xa2,0xe6,3,0x62,0xa0,
-0x6c,0xa3,0xe4,0x72,0xa3,0xe8,0x74,2,0x61,0x74,0x62,0x7c,0x74,0x14,0x61,0x63,
-0x68,0x65,0x64,1,0x61,0x3e,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa2,0xca,0x13,0x6c,
-0x65,0x66,0x74,0xa3,0xc8,0x13,0x62,0x6f,0x76,0x65,0xa2,0xd6,0x14,0x72,0x69,0x67,
-0x68,0x74,0xa3,0xd8,0xa2,0xd6,0x10,0x72,0xa3,0xd8,0xa2,0xca,0x10,0x6c,0xa3,0xc8,
-0x12,0x6f,0x76,0x65,0xa2,0xe6,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,
-0xe8,0x12,0x65,0x66,0x74,0xa3,0xe4,0xa2,0xdc,2,0x65,0x2c,0x6c,0xa3,0xda,0x72,
-0xa3,0xde,0x12,0x6c,0x6f,0x77,0xa2,0xdc,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,
-0x74,0xa3,0xde,0x12,0x65,0x66,0x74,0xa3,0xda,0xb,0x6e,0xc0,0xca,0x72,0x5f,0x72,
-0x46,0x73,0xa2,0x48,0x77,1,0x68,0x24,0x73,0x33,0x17,0x69,0x74,0x65,0x73,0x70,
-0x61,0x63,0x65,0x33,0x22,1,0x69,0x30,0x6c,2,0x65,0x3d,0x69,0x4b,0x6f,0x3f,
-0x18,0x67,0x68,0x74,0x74,0x6f,0x6c,0x65,0x66,0x74,0x22,2,0x65,0x38,0x69,0x48,
-0x6f,0x16,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x3f,0x17,0x6d,0x62,0x65,0x64,0x64,
-0x69,0x6e,0x67,0x3d,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4b,0x30,0x1e,0x65,0x67,
-0x6d,0x65,0x6e,0x74,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x31,0x6e,0xa2,
-0x41,0x6f,0xa2,0x53,0x70,2,0x61,0x66,0x64,0x86,0x6f,0x1b,0x70,0x64,0x69,0x72,
-0x65,0x63,0x74,0x69,0x6f,0x6e,0x61,0x6c,1,0x66,0x32,0x69,0x15,0x73,0x6f,0x6c,
-0x61,0x74,0x65,0x4d,0x14,0x6f,0x72,0x6d,0x61,0x74,0x41,0x1f,0x72,0x61,0x67,0x72,
-0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2f,1,0x66,0x41,
-0x69,0x4d,1,0x6f,0x28,0x73,0x10,0x6d,0x43,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,
-0x6e,0x67,0x6d,0x61,0x72,0x6b,0x43,1,0x6e,0x35,0x74,0x19,0x68,0x65,0x72,0x6e,
-0x65,0x75,0x74,0x72,0x61,0x6c,0x35,0x65,0x88,0x65,0x98,0x66,0xa2,0x6a,0x6c,0x20,
-1,0x65,0x30,0x72,2,0x65,0x37,0x69,0x49,0x6f,0x39,0x18,0x66,0x74,0x74,0x6f,
-0x72,0x69,0x67,0x68,0x74,0x20,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,
-0x72,0x69,0x64,0x65,0x39,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x37,0x15,
-0x73,0x6f,0x6c,0x61,0x74,0x65,0x49,3,0x6e,0x25,0x73,0x27,0x74,0x29,0x75,0x15,
-0x72,0x6f,0x70,0x65,0x61,0x6e,2,0x6e,0x3c,0x73,0x46,0x74,0x18,0x65,0x72,0x6d,
-0x69,0x6e,0x61,0x74,0x6f,0x72,0x29,0x14,0x75,0x6d,0x62,0x65,0x72,0x25,0x17,0x65,
-0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x27,1,0x69,0x28,0x73,0x10,0x69,0x47,0x1f,
-0x72,0x73,0x74,0x73,0x74,0x72,0x6f,0x6e,0x67,0x69,0x73,0x6f,0x6c,0x61,0x74,0x65,
-0x47,0x61,0x4e,0x62,0x84,0x63,1,0x6f,0x24,0x73,0x2d,0x1c,0x6d,0x6d,0x6f,0x6e,
-0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2d,2,0x6c,0x3b,0x6e,0x2b,0x72,
-0x13,0x61,0x62,0x69,0x63,1,0x6c,0x30,0x6e,0x14,0x75,0x6d,0x62,0x65,0x72,0x2b,
-0x14,0x65,0x74,0x74,0x65,0x72,0x3b,0x2e,1,0x6e,0x45,0x6f,0x1c,0x75,0x6e,0x64,
-0x61,0x72,0x79,0x6e,0x65,0x75,0x74,0x72,0x61,0x6c,0x45,0,0x16,0x6d,0xc9,0x20,
-0x74,0xc2,0x30,0x77,0x89,0x77,0x86,0x79,0xa2,0x46,0x7a,1,0x61,0x58,0x6e,0x1a,
-0x61,0x6d,0x65,0x6e,0x6e,0x79,0x6d,0x75,0x73,0x69,0x63,0xa4,0x40,0x19,0x61,0x6c,
-0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa5,0x40,0x1c,0x6e,0x61,0x62,0x61,0x7a,
-0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa5,0x18,0x10,0x61,1,0x6e,0x36,0x72,
-0x16,0x61,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0xfc,0x12,0x63,0x68,0x6f,0xa5,0x2c,
-1,0x65,0x88,0x69,2,0x6a,0x3c,0x72,0x68,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,
-0x6c,0x65,0x73,0xa3,0x48,0x12,0x69,0x6e,0x67,0xa2,0x74,0x1e,0x68,0x65,0x78,0x61,
-0x67,0x72,0x61,0x6d,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x74,0x16,0x61,0x64,
-0x69,0x63,0x61,0x6c,0x73,0xa3,0x49,0x13,0x7a,0x69,0x64,0x69,0xa5,0x34,0x74,0xa2,
-0x65,0x75,0xa4,0x4f,0x76,3,0x61,0x3c,0x65,0x80,0x69,0xa2,0x50,0x73,0xa2,0x6c,
-0x12,0x73,0x75,0x70,0xa3,0x7d,1,0x69,0xa3,0x9f,0x72,0x1e,0x69,0x61,0x74,0x69,
-0x6f,0x6e,0x73,0x65,0x6c,0x65,0x63,0x74,0x6f,0x72,0x73,0xa2,0x6c,0x19,0x73,0x75,
-0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x7d,1,0x64,0x3c,0x72,0x19,0x74,
-0x69,0x63,0x61,0x6c,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x91,0x14,0x69,0x63,0x65,0x78,
-0x74,0xa2,0xaf,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xaf,0x15,0x74,0x68,
-0x6b,0x75,0x71,0x69,0xa5,0x3f,5,0x69,0x3f,0x69,0x5a,0x6f,0x8c,0x72,0x1c,0x61,
-0x6e,0x73,0x70,0x6f,0x72,0x74,0x61,0x6e,0x64,0x6d,0x61,0x70,0xa2,0xcf,0x16,0x73,
-0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xcf,2,0x62,0x34,0x66,0x3c,0x72,0x13,0x68,
-0x75,0x74,0x61,0xa3,0xfb,0x13,0x65,0x74,0x61,0x6e,0x57,0x14,0x69,0x6e,0x61,0x67,
-0x68,0xa3,0x90,0x11,0x74,0x6f,0xa5,0x3d,0x61,0x3e,0x65,0xa2,0xa0,0x68,0x10,0x61,
-1,0x61,0x24,0x69,0x53,0x11,0x6e,0x61,0x3d,4,0x67,0x8e,0x69,0xa2,0x49,0x6b,
-0xa2,0x72,0x6d,0xa2,0x74,0x6e,0x10,0x67,1,0x73,0x68,0x75,0x10,0x74,0xa4,0x10,
-1,0x63,0x40,0x73,0x11,0x75,0x70,0xa4,0x33,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,
-0x74,0xa5,0x33,0x18,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0xa5,0x11,0x10,
-0x61,0xa5,0x3c,2,0x61,0x2a,0x62,0x32,0x73,0xa3,0x60,0x12,0x6c,0x6f,0x67,0xa3,
-0x62,0x13,0x61,0x6e,0x77,0x61,0xa3,0x65,3,0x6c,0x52,0x74,0x56,0x76,0x5e,0x78,
-0x16,0x75,0x61,0x6e,0x6a,0x69,0x6e,0x67,0xa2,0x7c,0x16,0x73,0x79,0x6d,0x62,0x6f,
-0x6c,0x73,0xa3,0x7c,0x10,0x65,0xa3,0x70,0x12,0x68,0x61,0x6d,0xa3,0xae,0x12,0x69,
-0x65,0x74,0xa3,0xb7,0x11,0x72,0x69,0xa3,0xdc,0x11,0x69,0x6c,0x48,0x12,0x73,0x75,
-0x70,0xa4,0x2b,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x2b,0x13,0x6c,0x75,
-0x67,0x75,0x4b,2,0x63,0x8c,0x67,0xa2,0x41,0x6e,0x1f,0x69,0x66,0x69,0x65,0x64,
-0x63,0x61,0x6e,0x61,0x64,0x69,0x61,0x6e,0x61,0x62,0x6f,0x1f,0x72,0x69,0x67,0x69,
-0x6e,0x61,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x62,0x17,0x65,0x78,
-0x74,0x65,0x6e,0x64,0x65,0x64,0xa2,0xad,0x10,0x61,0xa5,0x3e,0x11,0x61,0x73,0x62,
-0x12,0x65,0x78,0x74,0xa2,0xad,0x10,0x61,0xa5,0x3e,0x15,0x61,0x72,0x69,0x74,0x69,
-0x63,0xa3,0x78,0x70,0xc3,0x4b,0x70,0xa6,0x61,0x72,0xa8,0x1d,0x73,7,0x6f,0xc1,
-0xbe,0x6f,0xa2,0x69,0x70,0xa2,0x85,0x75,0xa2,0xa4,0x79,2,0x6c,0x50,0x6d,0x62,
-0x72,0x12,0x69,0x61,0x63,0x3a,0x12,0x73,0x75,0x70,0xa4,0x17,0x16,0x70,0x6c,0x65,
-0x6d,0x65,0x6e,0x74,0xa5,0x17,0x17,0x6f,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0xa3,
-0x8f,0x13,0x62,0x6f,0x6c,0x73,1,0x61,0x4c,0x66,0x10,0x6f,0x1f,0x72,0x6c,0x65,
-0x67,0x61,0x63,0x79,0x63,0x6f,0x6d,0x70,0x75,0x74,0x69,0x6e,0x67,0xa5,0x32,0x1f,
-0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x78,0x74,
-1,0x61,0xa5,0x2a,0x65,0x14,0x6e,0x64,0x65,0x64,0x61,0xa5,0x2a,2,0x67,0x34,
-0x72,0x3e,0x79,0x13,0x6f,0x6d,0x62,0x6f,0xa5,0x16,0x13,0x64,0x69,0x61,0x6e,0xa5,
-0x23,0x17,0x61,0x73,0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0xda,1,0x61,0x32,0x65,
-0x14,0x63,0x69,0x61,0x6c,0x73,0xa3,0x56,0x12,0x63,0x69,0x6e,0x1f,0x67,0x6d,0x6f,
-0x64,0x69,0x66,0x69,0x65,0x72,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,2,0x6e,
-0x48,0x70,0x76,0x74,0x1d,0x74,0x6f,0x6e,0x73,0x69,0x67,0x6e,0x77,0x72,0x69,0x74,
-0x69,0x6e,0x67,0xa5,6,0x15,0x64,0x61,0x6e,0x65,0x73,0x65,0xa2,0x9b,0x12,0x73,
-0x75,0x70,0xa2,0xdb,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xdb,4,0x61,
-0xa2,0xa8,0x65,0x5c,0x6d,0x9e,0x70,0xa2,0x4b,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,
-0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,
-0xa5,5,0x10,0x72,1,0x61,0x4e,0x73,0x12,0x63,0x72,0x69,0x1f,0x70,0x74,0x73,
-0x61,0x6e,0x64,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x73,0x14,0x6e,
-0x64,0x73,0x75,0x62,0x73,0x1b,0x61,0x74,0x68,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,
-0x72,0x73,0xa3,0x6a,1,0x6c,0x40,0x75,1,0x61,0x6e,0x6e,0x17,0x63,0x74,0x75,
-0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x15,0x65,0x6d,0x65,0x6e,0x74,0x61,1,0x6c,
-0x50,0x72,0x1e,0x79,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0x61,0x72,
-0x65,0x61,1,0x61,0xa3,0x6d,0x62,0xa3,0x6e,3,0x61,0x5c,0x6d,0x78,0x70,0xa2,
-0x41,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,
-0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa5,5,0x14,0x72,0x72,0x6f,0x77,0x73,
-2,0x61,0xa3,0x67,0x62,0xa3,0x68,0x63,0xa3,0xfa,0x13,0x61,0x74,0x68,0x65,0x1f,
-0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,
-0xa3,0x6a,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x61,
-0x88,0x68,0xa2,0x48,0x69,0xa2,0x71,0x6d,0x12,0x61,0x6c,0x6c,1,0x66,0x46,0x6b,
-0x15,0x61,0x6e,0x61,0x65,0x78,0x74,0xa4,0x29,0x15,0x65,0x6e,0x73,0x69,0x6f,0x6e,
-0xa5,0x29,0x12,0x6f,0x72,0x6d,1,0x73,0xa3,0x54,0x76,0x16,0x61,0x72,0x69,0x61,
-0x6e,0x74,0x73,0xa3,0x54,1,0x6d,0x36,0x75,0x16,0x72,0x61,0x73,0x68,0x74,0x72,
-0x61,0xa3,0xa1,0x15,0x61,0x72,0x69,0x74,0x61,0x6e,0xa3,0xac,1,0x61,0x52,0x6f,
-0x13,0x72,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,
-0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa3,0xf7,1,0x72,0x2e,0x76,0x12,0x69,0x61,0x6e,
-0xa3,0x79,0x12,0x61,0x64,0x61,0xa3,0xd9,1,0x64,0x50,0x6e,0x13,0x68,0x61,0x6c,
-0x61,0x50,0x1d,0x61,0x72,0x63,0x68,0x61,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,
-0x73,0xa3,0xf9,0x13,0x64,0x68,0x61,0x6d,0xa3,0xf8,5,0x72,0x35,0x72,0x44,0x73,
-0x64,0x75,1,0x61,0xa3,0x4e,0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,
-0x71,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0xa2,0x4e,0x13,0x61,0x72,0x65,
-0x61,0xa3,0x4e,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,
-0xa3,0xf6,0x61,0x40,0x68,0x82,0x6c,0x19,0x61,0x79,0x69,0x6e,0x67,0x63,0x61,0x72,
-0x64,0x73,0xa3,0xcc,2,0x68,0x38,0x6c,0x4a,0x75,0x15,0x63,0x69,0x6e,0x68,0x61,
-0x75,0xa3,0xf5,0x17,0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xf3,0x15,0x6d,
-0x79,0x72,0x65,0x6e,0x65,0xa3,0xf4,1,0x61,0x8e,0x6f,1,0x65,0x74,0x6e,0x16,
-0x65,0x74,0x69,0x63,0x65,0x78,0x74,0xa2,0x72,1,0x65,0x2c,0x73,0x11,0x75,0x70,
-0xa3,0x8d,0x15,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa2,0x72,0x19,0x73,0x75,0x70,0x70,
-0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x8d,0x15,0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,
-0x97,1,0x67,0x3e,0x69,0x13,0x73,0x74,0x6f,0x73,0xa2,0xa6,0x13,0x64,0x69,0x73,
-0x63,0xa3,0xa6,0x12,0x73,0x70,0x61,0xa3,0x96,1,0x65,0x5c,0x75,1,0x6d,0x2a,
-0x6e,0x11,0x69,0x63,0x67,0x10,0x69,0xa2,0xc0,0x1d,0x6e,0x75,0x6d,0x65,0x72,0x61,
-0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xc0,0x13,0x6a,0x61,0x6e,0x67,0xa3,
-0xa3,0x6d,0xa2,0xf0,0x6e,0xa8,0x23,0x6f,6,0x70,0x63,0x70,0x56,0x72,0x8a,0x73,
-0xa2,0x4c,0x74,0x10,0x74,0x1f,0x6f,0x6d,0x61,0x6e,0x73,0x69,0x79,0x61,0x71,0x6e,
-0x75,0x6d,0x62,0x65,0x72,0x73,0xa5,0x28,0x18,0x74,0x69,0x63,0x61,0x6c,0x63,0x68,
-0x61,0x72,0x1f,0x61,0x63,0x74,0x65,0x72,0x72,0x65,0x63,0x6f,0x67,0x6e,0x69,0x74,
-0x69,0x6f,0x6e,0x85,1,0x69,0x46,0x6e,0x1e,0x61,0x6d,0x65,0x6e,0x74,0x61,0x6c,
-0x64,0x69,0x6e,0x67,0x62,0x61,0x74,0x73,0xa3,0xf2,0x11,0x79,0x61,0x47,1,0x61,
-0x30,0x6d,0x13,0x61,0x6e,0x79,0x61,0xa3,0x7a,0x11,0x67,0x65,0xa5,0xf,0x63,0xa2,
-0x7b,0x67,0xa2,0x7b,0x6c,1,0x63,0xa2,0x6c,0x64,6,0x70,0x42,0x70,0x3a,0x73,
-0x5a,0x74,0x88,0x75,0x14,0x79,0x67,0x68,0x75,0x72,0xa5,0x3b,0x11,0x65,0x72,1,
-0x6d,0x2e,0x73,0x12,0x69,0x61,0x6e,0xa3,0x8c,0x11,0x69,0x63,0xa3,0xf1,0x10,0x6f,
-1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xbb,
-0x13,0x64,0x69,0x61,0x6e,0xa5,0x22,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0xbf,0x68,
-0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,
-0xa3,0xf0,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa5,4,0x14,0x74,0x61,
-0x6c,0x69,0x63,0xa3,0x58,0x13,0x68,0x69,0x6b,0x69,0xa3,0x9d,0x10,0x72,0x85,0x12,
-0x68,0x61,0x6d,0x65,6,0x6f,0x86,0x6f,0x6c,0x72,0xa2,0x61,0x75,0xa2,0x62,0x79,
-0x14,0x61,0x6e,0x6d,0x61,0x72,0x58,0x12,0x65,0x78,0x74,2,0x61,0xa3,0xb6,0x62,
-0xa3,0xee,0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb6,0x62,0xa3,0xee,1,
-0x64,0x52,0x6e,0x15,0x67,0x6f,0x6c,0x69,0x61,0x6e,0x6a,0x12,0x73,0x75,0x70,0xa4,
-0xd,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0xd,0x10,0x69,0xa2,0xec,0x13,
-0x66,0x69,0x65,0x72,1,0x6c,0x3c,0x74,0x19,0x6f,0x6e,0x65,0x6c,0x65,0x74,0x74,
-0x65,0x72,0x73,0xa3,0x8a,0x15,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,0x10,0x6f,0xa3,
-0xed,1,0x6c,0x44,0x73,0x11,0x69,0x63,0xa2,0x5c,0x18,0x61,0x6c,0x73,0x79,0x6d,
-0x62,0x6f,0x6c,0x73,0xa3,0x5c,0x13,0x74,0x61,0x6e,0x69,0xa5,3,0x61,0xa2,0x9b,
-0x65,0xa4,0x4c,0x69,1,0x61,0xa2,0x8f,0x73,0x10,0x63,5,0x70,0x18,0x70,0xa2,
-0x71,0x73,0x36,0x74,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x15,0x79,
-0x6d,0x62,0x6f,0x6c,0x73,0x8f,0x61,0xa2,0x66,0x65,0x46,0x6d,0x19,0x61,0x74,0x68,
-0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x17,0x6c,
-0x6c,0x61,0x6e,0x65,0x6f,0x75,0x73,2,0x6d,0x3a,0x73,0x6c,0x74,0x17,0x65,0x63,
-0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x11,0x61,0x74,0x1f,0x68,0x65,0x6d,0x61,0x74,
-0x69,0x63,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,
-0xa3,0x69,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x8e,0x12,0x61,0x6e,0x64,1,0x61,
-0x3c,0x70,0x19,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa3,0xcd,0x14,
-0x72,0x72,0x6f,0x77,0x73,0xa3,0x73,0x10,0x6f,0xa3,0xd8,7,0x72,0x6f,0x72,0x44,
-0x73,0x4e,0x74,0x62,0x79,0x19,0x61,0x6e,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,
-0xa5,0x20,0x13,0x63,0x68,0x65,0x6e,0xa5,0xc,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f,
-0x6e,0x64,0x69,0xa5,0x14,0x10,0x68,2,0x61,0x3a,0x65,0x4a,0x6f,0x17,0x70,0x65,
-0x72,0x61,0x74,0x6f,0x72,0x73,0x7f,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0xa3,
-0x5d,0x16,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,1,0x61,0x36,0x6f,0x17,0x70,0x65,
-0x72,0x61,0x74,0x6f,0x72,0x73,0x7f,0x11,0x6c,0x70,0x1f,0x68,0x61,0x6e,0x75,0x6d,
-0x65,0x72,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5d,0x68,0x50,0x6b,
-0x7e,0x6c,0x88,0x6e,1,0x64,0x34,0x69,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,
-0xea,0x12,0x61,0x69,0x63,0xa3,0xc6,1,0x61,0x3e,0x6a,0x12,0x6f,0x6e,0x67,0xa2,
-0xaa,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xaa,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xe9,
-0x13,0x61,0x73,0x61,0x72,0xa5,0x1f,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x4f,3,
-0x64,0x6c,0x65,0x7e,0x6e,0xa2,0x47,0x72,0x14,0x6f,0x69,0x74,0x69,0x63,1,0x63,
-0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xd7,0x15,
-0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0xd6,0x17,0x65,0x66,0x61,0x69,0x64,0x72,0x69,
-0x6e,0xa5,0x21,0x17,0x74,0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa2,0xb8,0x12,0x65,
-0x78,0x74,0xa2,0xd5,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xd5,0x18,0x64,
-0x65,0x6b,0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0xeb,6,0x6b,0x3b,0x6b,0x56,0x6f,
-0x5a,0x75,0x64,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,
-0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa5,0x27,0x10,0x6f,0xa3,0x92,0x14,0x62,
-0x6c,0x6f,0x63,0x6b,0x21,1,0x6d,0x2c,0x73,0x11,0x68,0x75,0xa5,0x15,0x17,0x62,
-0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0x7b,0x61,0x44,0x62,0x21,0x65,0x10,0x77,1,
-0x61,0xa5,0xe,0x74,0x14,0x61,0x69,0x6c,0x75,0x65,0xa3,0x8b,2,0x62,0x3c,0x67,
-0x4a,0x6e,0x17,0x64,0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa5,0x26,0x15,0x61,0x74,
-0x61,0x65,0x61,0x6e,0xa3,0xef,0x16,0x6d,0x75,0x6e,0x64,0x61,0x72,0x69,0xa5,0x47,
-0x67,0xc4,0x5d,0x6a,0xc1,0xe4,0x6a,0xa2,0xdf,0x6b,0xa2,0xf8,0x6c,4,0x61,0x54,
-0x65,0xa2,0x6b,0x69,0xa2,0x82,0x6f,0xa2,0xc1,0x79,1,0x63,0x2e,0x64,0x12,0x69,
-0x61,0x6e,0xa3,0xa9,0x12,0x69,0x61,0x6e,0xa3,0xa7,1,0x6f,0x55,0x74,0x11,0x69,
-0x6e,1,0x31,0x96,0x65,0x11,0x78,0x74,6,0x64,0x21,0x64,0xa3,0x95,0x65,0x2c,
-0x66,0xa5,0x39,0x67,0xa5,0x3a,0xa2,0xe7,0x13,0x6e,0x64,0x65,0x64,6,0x64,0xc,
-0x64,0xa3,0x95,0x65,0xa3,0xe7,0x66,0xa5,0x39,0x67,0xa5,0x3a,0x61,0x2a,0x62,0x29,
-0x63,0xa3,0x94,0x26,0x18,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x6d,0x24,
-0x12,0x73,0x75,0x70,0x24,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x25,1,0x70,
-0x42,0x74,0x1d,0x74,0x65,0x72,0x6c,0x69,0x6b,0x65,0x73,0x79,0x6d,0x62,0x6f,0x6c,
-0x73,0x79,0x12,0x63,0x68,0x61,0xa3,0x9c,2,0x6d,0x4e,0x6e,0x54,0x73,0x10,0x75,
-0xa2,0xb0,0x12,0x73,0x75,0x70,0xa4,0x31,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
-0xa5,0x31,0x11,0x62,0x75,0xa3,0x6f,0x12,0x65,0x61,0x72,1,0x61,0xa3,0xe8,0x62,
-1,0x69,0x38,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x75,0x17,
-0x64,0x65,0x6f,0x67,0x72,0x61,0x6d,0x73,0xa3,0x76,0x1a,0x77,0x73,0x75,0x72,0x72,
-0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4d,0x10,0x61,1,0x6d,0x32,0x76,0x14,0x61,
-0x6e,0x65,0x73,0x65,0xa3,0xb5,0x10,0x6f,0x5c,0x12,0x65,0x78,0x74,1,0x61,0xa3,
-0xb4,0x62,0xa3,0xb9,1,0x61,0xa2,0x43,0x68,4,0x61,0x40,0x69,0x50,0x6d,0x6e,
-0x6f,0x86,0x75,0x15,0x64,0x61,0x77,0x61,0x64,0x69,0xa3,0xe6,0x16,0x72,0x6f,0x73,
-0x68,0x74,0x68,0x69,0xa3,0x89,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,
-0x63,0x72,0x69,0x70,0x74,0xa5,0x30,0x11,0x65,0x72,0x68,0x16,0x73,0x79,0x6d,0x62,
-0x6f,0x6c,0x73,0xa3,0x71,0x12,0x6a,0x6b,0x69,0xa3,0xe5,5,0x74,0x35,0x74,0x34,
-0x77,0x7a,0x79,0x13,0x61,0x68,0x6c,0x69,0xa3,0xa2,0x14,0x61,0x6b,0x61,0x6e,0x61,
-0x9e,1,0x65,0x4c,0x70,0x10,0x68,0x1f,0x6f,0x6e,0x65,0x74,0x69,0x63,0x65,0x78,
-0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0x6b,0x11,0x78,0x74,0xa3,0x6b,0x10,
-0x69,0xa5,0x46,0x69,0xa2,0x4e,0x6b,0xa2,0x51,0x6e,3,0x61,0x34,0x62,0x84,0x67,
-0x8a,0x6e,0x12,0x61,0x64,0x61,0x4d,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0xcb,
-0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xcb,0x11,0x78,0x74,2,0x61,0xa5,
-0x13,0x62,0xa5,0x38,0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa5,0x13,0x62,0xa5,
-0x38,0x11,0x75,0x6e,0xa3,0x42,0x11,0x78,0x69,0x96,0x17,0x72,0x61,0x64,0x69,0x63,
-0x61,0x6c,0x73,0x97,0x12,0x74,0x68,0x69,0xa3,0xc1,0x1c,0x74,0x6f,0x76,0x69,0x6b,
-0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa5,0x45,0x67,0xa2,0xb5,0x68,0xa4,0x84,
-0x69,3,0x64,0x4c,0x6d,0xa2,0x55,0x6e,0xa2,0x62,0x70,0x13,0x61,0x65,0x78,0x74,
-0x2a,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0x2b,1,0x63,0x99,0x65,0x17,0x6f,
-0x67,0x72,0x61,0x70,0x68,0x69,0x63,1,0x64,0x56,0x73,0x15,0x79,0x6d,0x62,0x6f,
-0x6c,0x73,0xa4,0xb,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
-0x69,0x6f,0x6e,0xa5,0xb,0x13,0x65,0x73,0x63,0x72,0x1f,0x69,0x70,0x74,0x69,0x6f,
-0x6e,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x99,0x1c,0x70,0x65,0x72,
-0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0xba,1,0x64,0x62,0x73,
-0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,
-0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0xbd,0x13,0x6c,0x61,0x76,0x69,0xa3,0xbe,
-0x11,0x69,0x63,1,0x6e,0x3e,0x73,0x1a,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,
-0x65,0x72,0x73,0xa5,0x1e,0x19,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,
-0xa3,0xb2,4,0x65,0x74,0x6c,0xa2,0x82,0x6f,0xa2,0x9a,0x72,0xa2,0x9e,0x75,2,
-0x6a,0x34,0x6e,0x3e,0x72,0x14,0x6d,0x75,0x6b,0x68,0x69,0x43,0x14,0x61,0x72,0x61,
-0x74,0x69,0x45,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x1c,1,
-0x6e,0xa2,0x46,0x6f,1,0x6d,0x6e,0x72,0x13,0x67,0x69,0x61,0x6e,0x5a,1,0x65,
-0x40,0x73,0x11,0x75,0x70,0xa2,0x87,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
-0x87,0x11,0x78,0x74,0xa4,0x1b,0x14,0x65,0x6e,0x64,0x65,0x64,0xa5,0x1b,0x1a,0x65,
-0x74,0x72,0x69,0x63,0x73,0x68,0x61,0x70,0x65,0x73,0x8c,0x12,0x65,0x78,0x74,0xa2,
-0xe3,0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0xe3,0x1e,0x65,0x72,0x61,0x6c,0x70,0x75,
-0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x61,0x67,0x6f,0x6c,0x69,
-0x74,0x69,0x63,0xa2,0x88,0x12,0x73,0x75,0x70,0xa4,0xa,0x16,0x70,0x6c,0x65,0x6d,
-0x65,0x6e,0x74,0xa5,0xa,0x13,0x74,0x68,0x69,0x63,0xa3,0x59,1,0x61,0x5c,0x65,
-0x11,0x65,0x6b,0x30,1,0x61,0x38,0x65,0x11,0x78,0x74,0x6e,0x14,0x65,0x6e,0x64,
-0x65,0x64,0x6f,0x17,0x6e,0x64,0x63,0x6f,0x70,0x74,0x69,0x63,0x31,0x13,0x6e,0x74,
-0x68,0x61,0xa3,0xe4,2,0x61,0xa2,0x48,0x65,0xa2,0xdf,0x69,1,0x67,0x30,0x72,
-0x14,0x61,0x67,0x61,0x6e,0x61,0x9d,0x10,0x68,1,0x70,0x3a,0x73,0x18,0x75,0x72,
-0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4b,1,0x72,0x3c,0x75,0x19,0x73,0x75,
-0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,0x11,0x69,0x76,0x1f,0x61,0x74,
-0x65,0x75,0x73,0x65,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,
-2,0x6c,0x32,0x6e,0x9a,0x74,0x12,0x72,0x61,0x6e,0xa5,2,0x10,0x66,2,0x61,
-0x58,0x6d,0x70,0x77,0x14,0x69,0x64,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x75,0x6c,
-0x6c,0x77,0x69,0x64,0x74,0x68,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x1a,0x6e,0x64,
-0x66,0x75,0x6c,0x6c,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x13,0x61,0x72,0x6b,0x73,
-0xa3,0x52,2,0x67,0x34,0x69,0xa2,0x45,0x75,0x12,0x6e,0x6f,0x6f,0xa3,0x63,0x11,
-0x75,0x6c,0xa2,0x4a,2,0x63,0x3c,0x6a,0x5e,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,
-0x6c,0x65,0x73,0xa3,0x4a,0x1f,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x69,0x6c,0x69,
-0x74,0x79,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x12,0x61,0x6d,0x6f,0x5c,0x17,0x65,0x78,
-0x74,0x65,0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,0x19,0x66,0x69,
-0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa5,0x1d,0x13,0x62,0x72,0x65,0x77,0x37,
-0x61,0xa4,0xc,0x62,0xa6,0x59,0x63,0xa8,0x2e,0x64,0xac,0xe9,0x65,5,0x6d,0xa9,
-0x6d,0x94,0x6e,0xa2,0x41,0x74,0x15,0x68,0x69,0x6f,0x70,0x69,0x63,0x5e,1,0x65,
-0x40,0x73,0x11,0x75,0x70,0xa2,0x86,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
-0x86,0x11,0x78,0x74,0xa2,0x85,2,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x65,0x13,0x6e,
-0x64,0x65,0x64,0xa2,0x85,1,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x16,0x6f,0x74,0x69,
-0x63,0x6f,0x6e,0x73,0xa3,0xce,0x15,0x63,0x6c,0x6f,0x73,0x65,0x64,2,0x61,0x5a,
-0x63,0x9e,0x69,0x1c,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x75,
-0x70,0xa2,0xc4,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc4,0x16,0x6c,0x70,
-0x68,0x61,0x6e,0x75,0x6d,0x86,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0xc3,0x13,
-0x72,0x69,0x63,0x73,0x86,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
-0xc3,0x11,0x6a,0x6b,0xa2,0x44,0x1f,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x61,0x6e,
-0x64,0x6d,0x6f,0x6e,0x74,0x68,0x73,0xa3,0x44,0x61,0x4a,0x67,0x76,0x6c,1,0x62,
-0x30,0x79,0x13,0x6d,0x61,0x69,0x63,0xa5,0x25,0x13,0x61,0x73,0x61,0x6e,0xa3,0xe2,
-0x13,0x72,0x6c,0x79,0x64,0x1f,0x79,0x6e,0x61,0x73,0x74,0x69,0x63,0x63,0x75,0x6e,
-0x65,0x69,0x66,0x6f,0x72,0x6d,0xa5,1,0x1f,0x79,0x70,0x74,0x69,0x61,0x6e,0x68,
-0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,1,0x66,0x26,0x73,0xa3,0xc2,0x1c,
-0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa5,0x24,7,
-0x6e,0xc0,0xf2,0x6e,0x3e,0x72,0xa2,0x5d,0x73,0xa2,0xe5,0x76,0x14,0x65,0x73,0x74,
-0x61,0x6e,0xa3,0xbc,1,0x61,0x92,0x63,0x13,0x69,0x65,0x6e,0x74,1,0x67,0x34,
-0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xa5,0x13,0x72,0x65,0x65,0x6b,1,
-0x6d,0x34,0x6e,0x15,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x7f,0x13,0x75,0x73,0x69,
-0x63,0xa2,0x7e,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x7e,
-0x10,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
-0x70,0x68,0x73,0xa3,0xfe,2,0x61,0x32,0x6d,0xa2,0x7e,0x72,0x12,0x6f,0x77,0x73,
-0x7d,0x12,0x62,0x69,0x63,0x38,3,0x65,0x4a,0x6d,0x80,0x70,0xa2,0x50,0x73,0x11,
-0x75,0x70,0xa2,0x80,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x80,0x11,0x78,
-0x74,3,0x61,0xa3,0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x65,0x13,0x6e,0x64,0x65,
-0x64,2,0x61,0xa3,0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x12,0x61,0x74,0x68,0xa2,
-0xd3,0x18,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x61,0x1f,0x6c,0x70,0x68,0x61,
-0x62,0x65,0x74,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd3,1,0x66,
-0x42,0x72,0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,
-0x6d,0x73,1,0x61,0xa3,0x51,0x62,0xa3,0x55,0x14,0x65,0x6e,0x69,0x61,0x6e,0x35,
-0x12,0x63,0x69,0x69,0x23,0x64,0x9e,0x65,0xa2,0x42,0x68,0xa2,0x4d,0x6c,1,0x63,
-0x62,0x70,0x17,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x70,1,0x66,0xa3,0x50,0x72,
-0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,
-0xa3,0x50,0x16,0x68,0x65,0x6d,0x69,0x63,0x61,0x6c,0xa2,0xd0,0x16,0x73,0x79,0x6d,
-0x62,0x6f,0x6c,0x73,0xa3,0xd0,0x12,0x6c,0x61,0x6d,0xa5,7,0x1a,0x67,0x65,0x61,
-0x6e,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x77,0x11,0x6f,0x6d,0xa3,0xfd,7,
-0x6f,0x71,0x6f,0x64,0x72,0xa2,0x41,0x75,0xa2,0x58,0x79,0x1b,0x7a,0x61,0x6e,0x74,
-0x69,0x6e,0x65,0x6d,0x75,0x73,0x69,0x63,0xa2,0x5b,0x18,0x61,0x6c,0x73,0x79,0x6d,
-0x62,0x6f,0x6c,0x73,0xa3,0x5b,1,0x70,0x34,0x78,0x16,0x64,0x72,0x61,0x77,0x69,
-0x6e,0x67,0x89,0x14,0x6f,0x6d,0x6f,0x66,0x6f,0xa0,0x12,0x65,0x78,0x74,0xa2,0x43,
-0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0x43,0x10,0x61,1,0x68,0x40,0x69,0x12,0x6c,
-0x6c,0x65,0x92,0x17,0x70,0x61,0x74,0x74,0x65,0x72,0x6e,0x73,0x93,0x11,0x6d,0x69,
-0xa3,0xc9,1,0x67,0x2c,0x68,0x11,0x69,0x64,0xa3,0x64,0x14,0x69,0x6e,0x65,0x73,
-0x65,0xa3,0x81,0x61,0x48,0x65,0xa2,0x4e,0x68,0xa2,0x52,0x6c,0x1a,0x6f,0x63,0x6b,
-0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x8b,3,0x6c,0x34,0x6d,0x40,0x73,0x66,
-0x74,0x11,0x61,0x6b,0xa3,0xc7,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x93,0x11,0x75,
-0x6d,0xa2,0xb1,0x12,0x73,0x75,0x70,0xa2,0xca,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,
-0x74,0xa3,0xca,1,0x69,0x30,0x73,0x13,0x61,0x76,0x61,0x68,0xa3,0xdd,0x15,0x63,
-0x6c,0x61,0x74,0x69,0x6e,0x23,0x14,0x6e,0x67,0x61,0x6c,0x69,0x41,0x16,0x61,0x69,
-0x6b,0x73,0x75,0x6b,0x69,0xa5,8,5,0x6f,0xc1,0x60,0x6f,0xa2,0x69,0x75,0xa4,
-0x24,0x79,1,0x70,0xa2,0x44,0x72,0x14,0x69,0x6c,0x6c,0x69,0x63,0x32,1,0x65,
-0x4c,0x73,0x11,0x75,0x70,0xa2,0x61,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa2,
-0x61,0x12,0x61,0x72,0x79,0xa3,0x61,0x11,0x78,0x74,4,0x61,0xa3,0x9e,0x62,0xa3,
-0xa0,0x63,0xa5,9,0x64,0xa5,0x43,0x65,0x13,0x6e,0x64,0x65,0x64,3,0x61,0xa3,
-0x9e,0x62,0xa3,0xa0,0x63,0xa5,9,0x64,0xa5,0x43,0x10,0x72,1,0x69,0x34,0x6f,
-0x15,0x6d,0x69,0x6e,0x6f,0x61,0x6e,0xa5,0x36,0x1a,0x6f,0x74,0x73,0x79,0x6c,0x6c,
-0x61,0x62,0x61,0x72,0x79,0xa3,0x7b,3,0x6d,0x5a,0x6e,0xa2,0x95,0x70,0xa2,0xa0,
-0x75,0x17,0x6e,0x74,0x69,0x6e,0x67,0x72,0x6f,0x64,0xa2,0x9a,0x17,0x6e,0x75,0x6d,
-0x65,0x72,0x61,0x6c,0x73,0xa3,0x9a,2,0x62,0x3a,0x6d,0xa2,0x5f,0x70,0x15,0x61,
-0x74,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x14,0x69,0x6e,0x69,0x6e,0x67,2,0x64,0x46,
-0x68,0x9e,0x6d,0x1d,0x61,0x72,0x6b,0x73,0x66,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,
-0x6c,0x73,0x77,0x1e,0x69,0x61,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x6d,0x61,
-0x72,0x6b,0x73,0x2e,2,0x65,0x40,0x66,0xa6,0x52,0x73,0x18,0x75,0x70,0x70,0x6c,
-0x65,0x6d,0x65,0x6e,0x74,0xa3,0x83,0x16,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,0xa3,
-0xe0,0x17,0x61,0x6c,0x66,0x6d,0x61,0x72,0x6b,0x73,0xa3,0x52,0x11,0x6f,0x6e,0x1f,
-0x69,0x6e,0x64,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,
-0xa3,0xb2,0x1b,0x74,0x72,0x6f,0x6c,0x70,0x69,0x63,0x74,0x75,0x72,0x65,0x73,0x83,
-0x12,0x74,0x69,0x63,0xa2,0x84,0x1b,0x65,0x70,0x61,0x63,0x74,0x6e,0x75,0x6d,0x62,
-0x65,0x72,0x73,0xa3,0xdf,1,0x6e,0x3e,0x72,0x1b,0x72,0x65,0x6e,0x63,0x79,0x73,
-0x79,0x6d,0x62,0x6f,0x6c,0x73,0x75,0x15,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa2,0x98,
-0x16,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa2,0x99,0x1d,0x61,0x6e,0x64,0x70,0x75,
-0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x99,0x61,0xa2,0xea,0x68,0xa4,
-0x14,0x6a,0x10,0x6b,0xa2,0x47,4,0x63,0x92,0x65,0xa2,0x83,0x72,0xa2,0xa1,0x73,
-0xa2,0xb3,0x75,0x1f,0x6e,0x69,0x66,0x69,0x65,0x64,0x69,0x64,0x65,0x6f,0x67,0x72,
-0x61,0x70,0x68,0x73,0xa2,0x47,0x18,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,
-8,0x65,0x71,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x69,
-0xa5,0x48,0x14,0x6f,0x6d,0x70,0x61,0x74,0xa2,0x45,1,0x66,0x96,0x69,1,0x62,
-0x44,0x64,0x17,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x12,0x73,0x75,
-0x70,0xa3,0x5f,0x14,0x69,0x6c,0x69,0x74,0x79,0xa2,0x45,1,0x66,0x54,0x69,0x18,
-0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x19,0x73,0x75,0x70,0x70,
-0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x5f,0x13,0x6f,0x72,0x6d,0x73,0xa3,0x53,0x11,
-0x78,0x74,8,0x65,0xf,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,
-0x42,0x69,0xa5,0x48,0x61,0xa3,0x46,0x62,0xa3,0x5e,0x63,0xa3,0xc5,0x64,0xa3,0xd1,
-0x19,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x73,0x75,0x70,0x94,0x16,0x70,0x6c,0x65,
-0x6d,0x65,0x6e,0x74,0x95,1,0x74,0x50,0x79,0x14,0x6d,0x62,0x6f,0x6c,0x73,0x9a,
-0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x9b,
-0x14,0x72,0x6f,0x6b,0x65,0x73,0xa3,0x82,2,0x6e,0x48,0x72,0x64,0x75,0x1d,0x63,
-0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,0xde,0x1d,
-0x61,0x64,0x69,0x61,0x6e,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x63,0x12,
-0x69,0x61,0x6e,0xa3,0xa8,2,0x61,0x3a,0x65,0x4c,0x6f,0x16,0x72,0x61,0x73,0x6d,
-0x69,0x61,0x6e,0xa5,0x2d,1,0x6b,0x26,0x6d,0xa3,0xa4,0x11,0x6d,0x61,0xa3,0xd4,
-1,0x72,0x38,0x73,0x17,0x73,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa5,0x19,0x13,
-0x6f,0x6b,0x65,0x65,0x60,0x12,0x73,0x75,0x70,0xa2,0xff,0x16,0x70,0x6c,0x65,0x6d,
-0x65,0x6e,0x74,0xa3,0xff,3,0x65,0x3e,0x69,0x8e,0x6f,0xa2,0x71,0x75,0x15,0x70,
-0x6c,0x6f,0x79,0x61,0x6e,0xa3,0xe1,1,0x73,0x60,0x76,0x16,0x61,0x6e,0x61,0x67,
-0x61,0x72,0x69,0x3e,0x12,0x65,0x78,0x74,0xa2,0xb3,1,0x61,0xa5,0x44,0x65,0x13,
-0x6e,0x64,0x65,0x64,0xa2,0xb3,0x10,0x61,0xa5,0x44,0x13,0x65,0x72,0x65,0x74,0xa3,
-0x5a,2,0x61,0x3a,0x6e,0x82,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa5,
-0x2f,0x18,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x73,0x2e,2,0x65,0x30,0x66,
-0x36,0x73,0x11,0x75,0x70,0xa3,0x83,0x11,0x78,0x74,0xa3,0xe0,0x18,0x6f,0x72,0x73,
-0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x14,0x67,0x62,0x61,0x74,0x73,0x91,1,0x67,
-0x3e,0x6d,0x12,0x69,0x6e,0x6f,0xa2,0xab,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xab,
-0x11,0x72,0x61,0xa5,0x1a,8,0x6d,0x5f,0x6d,0x3a,0x6e,0x48,0x73,0x7a,0x76,0xa2,
-0x4b,0x77,0x12,0x69,0x64,0x65,0x43,0x11,0x65,0x64,0x32,0x12,0x69,0x61,0x6c,0x33,
-2,0x61,0x40,0x62,0x37,0x6f,1,0x62,0x28,0x6e,0x10,0x65,0x21,0x13,0x72,0x65,
-0x61,0x6b,0x37,0x10,0x72,0x34,0x12,0x72,0x6f,0x77,0x35,2,0x6d,0x38,0x71,0x46,
-0x75,1,0x62,0x3d,0x70,0x3e,0x11,0x65,0x72,0x3f,1,0x61,0x24,0x6c,0x39,0x11,
-0x6c,0x6c,0x39,1,0x72,0x3b,0x75,0x12,0x61,0x72,0x65,0x3b,0x12,0x65,0x72,0x74,
-0x40,0x13,0x69,0x63,0x61,0x6c,0x41,0x63,0x58,0x65,0x92,0x66,0x96,0x69,1,0x6e,
-0x36,0x73,0x10,0x6f,0x30,0x14,0x6c,0x61,0x74,0x65,0x64,0x31,0x11,0x69,0x74,0x2e,
-0x12,0x69,0x61,0x6c,0x2f,2,0x61,0x36,0x69,0x48,0x6f,0x10,0x6d,0x24,0x12,0x70,
-0x61,0x74,0x25,0x10,0x6e,0x22,0x15,0x6f,0x6e,0x69,0x63,0x61,0x6c,0x23,0x13,0x72,
-0x63,0x6c,0x65,0x27,0x11,0x6e,0x63,0x27,2,0x69,0x3a,0x6f,0x44,0x72,0x10,0x61,
-0x2c,0x14,0x63,0x74,0x69,0x6f,0x6e,0x2d,0x10,0x6e,0x28,0x11,0x61,0x6c,0x29,0x11,
-0x6e,0x74,0x2b,4,0x61,0x3a,0x66,0x4c,0x68,0x5e,0x6e,0x70,0x77,0x2a,0x12,0x69,
-0x64,0x65,0x2b,0x22,0x17,0x6d,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x26,0x17,
-0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,0x27,0x24,0x17,0x61,0x6c,0x66,0x77,0x69,
-0x64,0x74,0x68,0x25,0x20,1,0x61,0x30,0x65,0x14,0x75,0x74,0x72,0x61,0x6c,0x21,
-0x28,0x13,0x72,0x72,0x6f,0x77,0x29,0xd,0x6e,0xc0,0xfb,0x73,0x6d,0x73,0x3a,0x74,
-0x98,0x75,0xa2,0x49,0x7a,2,0x6c,0x3b,0x70,0x3d,0x73,0x39,5,0x6f,0x28,0x6f,
-0x57,0x70,0x34,0x75,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x45,0x11,0x61,0x63,
-1,0x65,0x32,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x31,0x18,0x73,0x65,0x70,
-0x61,0x72,0x61,0x74,0x6f,0x72,0x39,0x63,0x53,0x6b,0x55,0x6d,0x51,0x1d,0x69,0x74,
-0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x27,1,0x6e,0x40,
-0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x23,
-0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x21,0x6e,0x8a,0x6f,0xa2,0x47,0x70,
-8,0x66,0x14,0x66,0x5b,0x69,0x59,0x6f,0x4f,0x72,0x24,0x73,0x49,0x17,0x69,0x76,
-0x61,0x74,0x65,0x75,0x73,0x65,0x43,0x61,0x2c,0x63,0x4d,0x64,0x47,0x65,0x4b,0x1f,
-0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,
-0x3d,2,0x64,0x33,0x6c,0x35,0x6f,0x36,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,
-0x67,0x6d,0x61,0x72,0x6b,0x2d,1,0x70,0x7c,0x74,0x12,0x68,0x65,0x72,3,0x6c,
-0x38,0x6e,0x42,0x70,0x4c,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x57,0x14,0x65,0x74,
-0x74,0x65,0x72,0x2b,0x14,0x75,0x6d,0x62,0x65,0x72,0x37,0x19,0x75,0x6e,0x63,0x74,
-0x75,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,
-0x61,0x74,0x69,0x6f,0x6e,0x49,0x66,0x9e,0x66,0x88,0x69,0xa2,0x4b,0x6c,0xa2,0x5c,
-0x6d,4,0x61,0x60,0x63,0x31,0x65,0x2f,0x6e,0x2d,0x6f,0x15,0x64,0x69,0x66,0x69,
-0x65,0x72,1,0x6c,0x30,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x55,0x14,0x65,0x74,
-0x74,0x65,0x72,0x29,0x17,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x51,1,0x69,
-0x2e,0x6f,0x13,0x72,0x6d,0x61,0x74,0x41,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,
-0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,
-0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,6,0x6d,0x18,0x6d,
-0x29,0x6f,0x28,0x74,0x27,0x75,0x23,0x2a,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,
-0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x65,0x28,0x69,0x3c,0x6c,0x25,0x19,0x74,0x74,
-0x65,0x72,0x6e,0x75,0x6d,0x62,0x65,0x72,0x35,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,
-0x72,0x61,0x74,0x6f,0x72,0x3b,0x63,0x44,0x64,0xa2,0x60,0x65,0x1b,0x6e,0x63,0x6c,
-0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x2f,6,0x6e,0x39,0x6e,0x46,0x6f,
-0x4e,0x73,0x45,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,
-0x6c,0x53,0x20,0x12,0x74,0x72,0x6c,0x3f,0x42,0x10,0x6e,1,0x6e,0x2c,0x74,0x12,
-0x72,0x6f,0x6c,0x3f,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,
-0x61,0x74,0x69,0x6f,0x6e,0x4d,0x63,0x3f,0x66,0x41,0x6c,0x1d,0x6f,0x73,0x65,0x70,
-0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4b,2,0x61,0x30,0x65,0x4a,
-0x69,0x12,0x67,0x69,0x74,0x33,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,
-0x74,0x69,0x6f,0x6e,0x47,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,
-0x72,0x33,0,0x13,0x6e,0xc1,0xf,0x74,0x76,0x74,0x4c,0x76,0x9a,0x77,0xa2,0x48,
-0x79,0xa2,0x49,0x7a,1,0x61,0x2c,0x68,0x12,0x61,0x69,0x6e,0x8b,0x11,0x69,0x6e,
-0x85,2,0x61,0x36,0x65,0x3c,0x68,0x14,0x69,0x6e,0x79,0x65,0x68,0xa3,0x66,1,
-0x68,0x71,0x77,0x73,1,0x68,0x28,0x74,0x10,0x68,0x77,0x16,0x6d,0x61,0x72,0x62,
-0x75,0x74,0x61,0x74,0x13,0x67,0x6f,0x61,0x6c,0x3d,0x1a,0x65,0x72,0x74,0x69,0x63,
-0x61,0x6c,0x74,0x61,0x69,0x6c,0xa3,0x67,0x11,0x61,0x77,0x79,1,0x65,0x32,0x75,
-0x11,0x64,0x68,0x80,0x11,0x68,0x65,0x83,0x10,0x68,0x7a,1,0x62,0x34,0x77,0x16,
-0x69,0x74,0x68,0x74,0x61,0x69,0x6c,0x7f,0x14,0x61,0x72,0x72,0x65,0x65,0x7d,0x6e,
-0xa2,0x4c,0x70,0xa2,0x69,0x71,0xa2,0x69,0x72,0xa2,0x6f,0x73,5,0x74,0x22,0x74,
-0x38,0x77,0x4c,0x79,0x16,0x72,0x69,0x61,0x63,0x77,0x61,0x77,0x6f,0x18,0x72,0x61,
-0x69,0x67,0x68,0x74,0x77,0x61,0x77,0xa3,0x55,0x15,0x61,0x73,0x68,0x6b,0x61,0x66,
-0x6d,0x61,0x2e,0x65,0x38,0x68,0x11,0x69,0x6e,0x6b,0x10,0x64,0x62,0x11,0x68,0x65,
-0x65,1,0x65,0x2e,0x6d,0x13,0x6b,0x61,0x74,0x68,0x69,0x10,0x6e,0x67,2,0x6f,
-0x2c,0x75,0x50,0x79,0x10,0x61,0x91,1,0x6a,0x28,0x6f,0x10,0x6e,0x55,0x1a,0x6f,
-0x69,0x6e,0x69,0x6e,0x67,0x67,0x72,0x6f,0x75,0x70,0x21,0x10,0x6e,0x57,0x10,0x65,
-0x59,0x10,0x61,1,0x66,0x5b,0x70,0x10,0x68,0x5d,1,0x65,0x38,0x6f,0x18,0x68,
-0x69,0x6e,0x67,0x79,0x61,0x79,0x65,0x68,0x93,1,0x68,0x5f,0x76,0x16,0x65,0x72,
-0x73,0x65,0x64,0x70,0x65,0x61,0x67,0xc1,0xc7,0x67,0xa4,0x52,0x68,0xa4,0x59,0x6b,
-0xa4,0x99,0x6c,0xa4,0xb2,0x6d,2,0x61,0x2e,0x65,0xa4,0x3e,0x69,0x10,0x6d,0x53,
-1,0x6c,0xa2,0xe7,0x6e,0x16,0x69,0x63,0x68,0x61,0x65,0x61,0x6e,0,0x12,0x6e,
-0x76,0x73,0x51,0x73,0x3e,0x74,0x5c,0x77,0xa0,0x79,0xa2,0x42,0x7a,0x13,0x61,0x79,
-0x69,0x6e,0xa3,0x54,0x10,0x61,1,0x64,0x2e,0x6d,0x12,0x65,0x6b,0x68,0xa3,0x4c,
-0x11,0x68,0x65,0xa3,0x4b,3,0x61,0x38,0x65,0x3c,0x68,0x4a,0x77,0x13,0x65,0x6e,
-0x74,0x79,0xa3,0x51,0x10,0x77,0xa3,0x4d,1,0x6e,0xa3,0x4e,0x74,0x10,0x68,0xa3,
-0x4f,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x50,0x11,0x61,0x77,0xa3,0x52,0x12,0x6f,
-0x64,0x68,0xa3,0x53,0x6e,0x3a,0x6f,0x40,0x70,0x46,0x71,0x4a,0x72,0x12,0x65,0x73,
-0x68,0xa3,0x4a,0x11,0x75,0x6e,0xa3,0x46,0x11,0x6e,0x65,0xa3,0x47,0x10,0x65,0xa3,
-0x48,0x12,0x6f,0x70,0x68,0xa3,0x49,0x67,0x33,0x67,0x38,0x68,0x40,0x6b,0x5e,0x6c,
-0x66,0x6d,0x11,0x65,0x6d,0xa3,0x45,0x13,0x69,0x6d,0x65,0x6c,0xa1,1,0x65,0x32,
-0x75,0x14,0x6e,0x64,0x72,0x65,0x64,0xa3,0x42,0x11,0x74,0x68,0xa3,0x41,0x12,0x61,
-0x70,0x68,0xa3,0x43,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x44,0x61,0x34,0x62,0x4a,
-0x64,0x50,0x66,0x12,0x69,0x76,0x65,0x9f,1,0x6c,0x2a,0x79,0x11,0x69,0x6e,0x97,
-0x12,0x65,0x70,0x68,0x95,0x12,0x65,0x74,0x68,0x99,1,0x61,0x30,0x68,0x14,0x61,
-0x6d,0x65,0x64,0x68,0x9d,0x13,0x6c,0x65,0x74,0x68,0x9b,0x15,0x61,0x79,0x61,0x6c,
-0x61,0x6d,6,0x6e,0x2c,0x6e,0x34,0x72,0x5e,0x73,0x62,0x74,0x11,0x74,0x61,0xa3,
-0x63,2,0x67,0x2e,0x6e,0x32,0x79,0x10,0x61,0xa3,0x60,0x10,0x61,0xa3,0x5d,1,
-0x61,0xa3,0x5e,0x6e,0x10,0x61,0xa3,0x5f,0x10,0x61,0xa3,0x61,0x11,0x73,0x61,0xa3,
-0x62,0x62,0x3c,0x6a,0x42,0x6c,0x10,0x6c,1,0x61,0xa3,0x5b,0x6c,0x10,0x61,0xa3,
-0x5c,0x11,0x68,0x61,0xa3,0x59,0x10,0x61,0xa3,0x5a,0x11,0x65,0x6d,0x51,0x10,0x61,
-1,0x66,0x37,0x6d,0x11,0x61,0x6c,0x39,1,0x61,0x40,0x65,0x3e,1,0x68,0x28,
-0x74,0x10,0x68,0x45,0x40,0x13,0x67,0x6f,0x61,0x6c,0x43,2,0x68,0x3b,0x6d,0x5c,
-0x6e,0x1a,0x69,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,1,0x6b,0x2a,
-0x70,0x10,0x61,0xa3,0x65,0x15,0x69,0x6e,0x6e,0x61,0x79,0x61,0xa3,0x64,0x1a,0x7a,
-0x61,0x6f,0x6e,0x68,0x65,0x68,0x67,0x6f,0x61,0x6c,0x3d,2,0x61,0x3a,0x68,0x44,
-0x6e,0x17,0x6f,0x74,0x74,0x65,0x64,0x68,0x65,0x68,0x4b,1,0x66,0x47,0x70,0x10,
-0x68,0x49,0x12,0x61,0x70,0x68,0x89,0x11,0x61,0x6d,0x4c,0x12,0x61,0x64,0x68,0x4f,
-0x61,0x6e,0x62,0xa2,0x54,0x64,0xa2,0x70,0x65,0x31,0x66,2,0x61,0x3e,0x65,0x4a,
-0x69,0x19,0x6e,0x61,0x6c,0x73,0x65,0x6d,0x6b,0x61,0x74,0x68,0x35,0x15,0x72,0x73,
-0x69,0x79,0x65,0x68,0x8f,0x86,0x10,0x68,0x33,2,0x66,0x3c,0x69,0x70,0x6c,1,
-0x61,0x28,0x65,0x10,0x66,0x27,0x11,0x70,0x68,0x25,0x14,0x72,0x69,0x63,0x61,0x6e,
-2,0x66,0x30,0x6e,0x36,0x71,0x11,0x61,0x66,0xa3,0x58,0x11,0x65,0x68,0xa3,0x56,
-0x12,0x6f,0x6f,0x6e,0xa3,0x57,0x10,0x6e,0x23,1,0x65,0x4a,0x75,0x10,0x72,0x1f,
-0x75,0x73,0x68,0x61,0x73,0x6b,0x69,0x79,0x65,0x68,0x62,0x61,0x72,0x72,0x65,0x65,
-0x8d,1,0x68,0x29,0x74,0x10,0x68,0x2b,0x11,0x61,0x6c,0x2c,0x16,0x61,0x74,0x68,
-0x72,0x69,0x73,0x68,0x2f,7,0x6e,0x2e,0x6e,0x2c,0x72,0x3e,0x74,0x56,0x75,0x21,
-0x18,0x6f,0x6e,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x21,0x28,0x1a,0x69,0x67,0x68,
-0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x29,0x2a,0x19,0x72,0x61,0x6e,0x73,0x70,
-0x61,0x72,0x65,0x6e,0x74,0x2b,0x63,0x23,0x64,0x40,0x6a,0x56,0x6c,0x26,0x19,0x65,
-0x66,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x27,0x24,0x19,0x75,0x61,0x6c,0x6a,
-0x6f,0x69,0x6e,0x69,0x6e,0x67,0x25,0x19,0x6f,0x69,0x6e,0x63,0x61,0x75,0x73,0x69,
-0x6e,0x67,0x23,0,0x14,0x6e,0xc0,0xe5,0x73,0x5e,0x77,0x23,0x77,0x40,0x78,0x58,
-0x7a,0x10,0x77,0x58,1,0x6a,0x75,0x73,0x13,0x70,0x61,0x63,0x65,0x59,1,0x6a,
-0x5d,0x6f,0x17,0x72,0x64,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x5d,0x10,0x78,0x21,0x73,
-0x4a,0x75,0x7a,0x76,1,0x66,0x7d,0x69,0x7e,0x13,0x72,0x61,0x6d,0x61,0x7e,0x14,
-0x66,0x69,0x6e,0x61,0x6c,0x7d,4,0x61,0x51,0x67,0x53,0x70,0x28,0x75,0x30,0x79,
-0x57,0x54,0x12,0x61,0x63,0x65,0x55,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x53,
-0x15,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x21,0x6e,0x60,0x6f,0xa2,0x41,0x70,0xa2,0x50,
-0x71,0xa2,0x6e,0x72,1,0x65,0x24,0x69,0x6f,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,
-0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x6f,4,0x65,0x3e,0x6c,0x5b,0x6f,
-0x46,0x73,0x45,0x75,0x46,0x14,0x6d,0x65,0x72,0x69,0x63,0x47,0x15,0x78,0x74,0x6c,
-0x69,0x6e,0x65,0x5b,0x17,0x6e,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x45,0x10,0x70,
-0x48,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,
-1,0x6f,0x3e,0x72,0x4c,0x1a,0x65,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,
-0x63,0x4d,0x4a,0x1b,0x73,0x74,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,
-0x4b,0x10,0x75,0x4e,0x16,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x68,0x7b,0x68,
-0x50,0x69,0x86,0x6a,0xa2,0x61,0x6c,0xa2,0x65,0x6d,0x1c,0x61,0x6e,0x64,0x61,0x74,
-0x6f,0x72,0x79,0x62,0x72,0x65,0x61,0x6b,0x2d,4,0x32,0x5f,0x33,0x61,0x65,0x34,
-0x6c,0x6d,0x79,0x3a,0x13,0x70,0x68,0x65,0x6e,0x3b,0x19,0x62,0x72,0x65,0x77,0x6c,
-0x65,0x74,0x74,0x65,0x72,0x6d,2,0x64,0x28,0x6e,0x3c,0x73,0x41,0x3c,0x18,0x65,
-0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x3d,0x3e,1,0x66,0x3e,0x73,0x11,0x65,
-0x70,1,0x61,0x22,0x65,0x14,0x72,0x61,0x62,0x6c,0x65,0x3f,0x18,0x69,0x78,0x6e,
-0x75,0x6d,0x65,0x72,0x69,0x63,0x41,2,0x6c,0x63,0x74,0x65,0x76,0x67,1,0x66,
-0x43,0x69,0x15,0x6e,0x65,0x66,0x65,0x65,0x64,0x43,0x61,0x42,0x62,0xa2,0x49,0x63,
-0xa2,0x76,0x65,0xa2,0xfc,0x67,0x10,0x6c,0x38,0x11,0x75,0x65,0x39,5,0x6d,0xf,
-0x6d,0x28,0x70,0x79,0x73,0x7b,0x16,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x69,
-0x23,0x6b,0x38,0x6c,0x24,0x17,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x25,0x76,
-0x13,0x73,0x61,0x72,0x61,0x76,1,0x70,0x2e,0x73,0x13,0x74,0x61,0x72,0x74,0x7b,
-0x15,0x72,0x65,0x62,0x61,0x73,0x65,0x79,4,0x32,0x27,0x61,0x29,0x62,0x2b,0x6b,
-0x2d,0x72,0x12,0x65,0x61,0x6b,2,0x61,0x36,0x62,0x3e,0x73,0x15,0x79,0x6d,0x62,
-0x6f,0x6c,0x73,0x57,0x13,0x66,0x74,0x65,0x72,0x29,1,0x65,0x2a,0x6f,0x11,0x74,
-0x68,0x27,0x13,0x66,0x6f,0x72,0x65,0x2b,7,0x6d,0x51,0x6d,0x33,0x6f,0x28,0x70,
-0x69,0x72,0x35,1,0x6d,0x76,0x6e,1,0x64,0x3c,0x74,0x1a,0x69,0x6e,0x67,0x65,
-0x6e,0x74,0x62,0x72,0x65,0x61,0x6b,0x2f,0x15,0x69,0x74,0x69,0x6f,0x6e,0x61,0x1f,
-0x6c,0x6a,0x61,0x70,0x61,0x6e,0x65,0x73,0x65,0x73,0x74,0x61,0x72,0x74,0x65,0x72,
-0x6b,1,0x62,0x3a,0x70,0x19,0x6c,0x65,0x78,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,
-0x51,0x18,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x33,0x61,0x6a,0x62,0x2f,
-0x6a,0x6b,0x6c,0x30,0x13,0x6f,0x73,0x65,0x70,1,0x61,0x38,0x75,0x18,0x6e,0x63,
-0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x31,0x18,0x72,0x65,0x6e,0x74,0x68,0x65,0x73,
-0x69,0x73,0x69,0x1b,0x72,0x72,0x69,0x61,0x67,0x65,0x72,0x65,0x74,0x75,0x72,0x6e,
-0x35,2,0x62,0x3e,0x6d,0x46,0x78,0x36,0x18,0x63,0x6c,0x61,0x6d,0x61,0x74,0x69,
-0x6f,0x6e,0x37,0x70,0x12,0x61,0x73,0x65,0x71,0x72,0x16,0x6f,0x64,0x69,0x66,0x69,
-0x65,0x72,0x73,1,0x64,0x42,0x6e,1,0x6f,0x32,0x75,0x26,0x14,0x6d,0x65,0x72,
-0x69,0x63,0x27,0x11,0x6e,0x65,0x21,1,0x65,0x2e,0x69,0x24,0x12,0x67,0x69,0x74,
-0x25,0x22,0x14,0x63,0x69,0x6d,0x61,0x6c,0x23,0,0x18,0x6e,0xc4,0x6f,0x74,0xc1,
-0x91,0x77,0x96,0x77,0xa2,0x4c,0x78,0xa2,0x70,0x79,0xa2,0x7a,0x7a,6,0x73,0x1e,
-0x73,0x34,0x78,0x42,0x79,0x48,0x7a,0x11,0x7a,0x7a,0xa3,0x67,0x10,0x79,1,0x65,
-0xa3,0xae,0x6d,0xa3,0x81,0x11,0x78,0x78,0xa3,0x66,0x11,0x79,0x79,0x21,0x61,0x30,
-0x69,0x58,0x6d,0x11,0x74,0x68,0xa3,0x80,0x10,0x6e,1,0x61,0x26,0x62,0xa3,0xb1,
-0x1a,0x62,0x61,0x7a,0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa3,0xb1,0x11,0x6e,
-0x68,0x23,2,0x61,0x30,0x63,0x5a,0x6f,0x11,0x6c,0x65,0xa3,0x9b,1,0x6e,0x3c,
-0x72,0x10,0x61,0xa2,0x92,0x15,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0x92,0x12,0x63,
-0x68,0x6f,0xa3,0xbc,0x11,0x68,0x6f,0xa3,0xbc,1,0x70,0x2c,0x73,0x11,0x75,0x78,
-0xa3,0x65,0x11,0x65,0x6f,0x9b,1,0x65,0x2c,0x69,0x72,0x11,0x69,0x69,0x73,0x11,
-0x7a,0x69,0xa2,0xc0,0x11,0x64,0x69,0xa3,0xc0,0x74,0x66,0x75,0xa2,0xde,0x76,1,
-0x61,0x48,0x69,1,0x73,0x38,0x74,0x10,0x68,0xa2,0xc5,0x13,0x6b,0x75,0x71,0x69,
-0xa3,0xc5,0x10,0x70,0xa3,0x64,0x10,0x69,0xa2,0x63,0x10,0x69,0xa3,0x63,7,0x68,
-0x3e,0x68,0x34,0x69,0x48,0x6e,0x86,0x6f,0x11,0x74,0x6f,0xa3,0xc4,0x10,0x61,1,
-0x61,0x24,0x69,0x6d,0x6a,0x11,0x6e,0x61,0x6b,2,0x62,0x3a,0x66,0x4a,0x72,0x10,
-0x68,0xa2,0x9e,0x12,0x75,0x74,0x61,0xa3,0x9e,1,0x65,0x24,0x74,0x6f,0x12,0x74,
-0x61,0x6e,0x6f,0x14,0x69,0x6e,0x61,0x67,0x68,0x99,0x11,0x73,0x61,0xa3,0xc3,0x61,
-0x36,0x65,0xa2,0x65,0x66,0xa2,0x71,0x67,0x11,0x6c,0x67,0x75,6,0x6c,0x28,0x6c,
-0x32,0x6d,0x38,0x6e,0x44,0x76,0x10,0x74,0xa3,0x7f,1,0x65,0x89,0x75,0x97,1,
-0x69,0x24,0x6c,0x67,0x10,0x6c,0x67,0x10,0x67,0xa2,0x9a,1,0x73,0x2a,0x75,0x10,
-0x74,0xa3,0x9a,0x10,0x61,0xa3,0xc3,0x67,0x36,0x69,0x52,0x6b,0x10,0x72,0xa2,0x99,
-0x10,0x69,0xa3,0x99,1,0x61,0x30,0x62,0x7a,0x13,0x61,0x6e,0x77,0x61,0x7b,0x12,
-0x6c,0x6f,0x67,0x75,2,0x6c,0x32,0x74,0x34,0x76,0x12,0x69,0x65,0x74,0xa3,0x7f,
-0x10,0x65,0x89,0x12,0x68,0x61,0x6d,0xa3,0x6a,1,0x6c,0x2a,0x6e,0x10,0x67,0xa3,
-0x62,0x10,0x75,0x68,0x11,0x67,0x75,0x69,0x11,0x6e,0x67,0x99,1,0x67,0x32,0x6e,
-0x14,0x6b,0x6e,0x6f,0x77,0x6e,0xa3,0x67,0x11,0x61,0x72,0x8a,0x13,0x69,0x74,0x69,
-0x63,0x8b,0x71,0xc1,0x13,0x71,0xa2,0xde,0x72,0xa2,0xe3,0x73,6,0x69,0x8a,0x69,
-0x72,0x6f,0xa2,0x4c,0x75,0xa2,0x75,0x79,1,0x6c,0x46,0x72,4,0x63,0x65,0x65,
-0xa3,0x5f,0x69,0x2c,0x6a,0xa3,0x60,0x6e,0xa3,0x61,0x11,0x61,0x63,0x65,0x10,0x6f,
-0x94,0x16,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0x95,2,0x64,0x3c,0x67,0x4c,0x6e,
-1,0x64,0xa3,0x91,0x68,0x62,0x12,0x61,0x6c,0x61,0x63,0x10,0x64,0xa2,0xa6,0x12,
-0x68,0x61,0x6d,0xa3,0xa6,0x17,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa3,0x70,
-2,0x67,0x3a,0x72,0x52,0x79,0x10,0x6f,0xa2,0xb0,0x12,0x6d,0x62,0x6f,0xa3,0xb0,
-1,0x64,0x26,0x6f,0xa3,0xb8,0xa2,0xb7,0x12,0x69,0x61,0x6e,0xa3,0xb7,0x10,0x61,
-0xa2,0x98,0x16,0x73,0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0x98,0x11,0x6e,0x64,0xa2,
-0x71,0x14,0x61,0x6e,0x65,0x73,0x65,0xa3,0x71,0x61,0x5c,0x67,0xa2,0x43,0x68,1,
-0x61,0x2a,0x72,0x10,0x64,0xa3,0x97,2,0x72,0x28,0x76,0x30,0x77,0x87,0x12,0x61,
-0x64,0x61,0xa3,0x97,0x12,0x69,0x61,0x6e,0x87,2,0x6d,0x40,0x72,0x58,0x75,0x10,
-0x72,0xa2,0x6f,0x15,0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0x6f,1,0x61,0x26,0x72,
-0xa3,0x7e,0x14,0x72,0x69,0x74,0x61,0x6e,0xa3,0x7e,1,0x61,0xa3,0x5e,0x62,0xa3,
-0x85,0x11,0x6e,0x77,0xa3,0x70,0x11,0x61,0x61,1,0x63,0x2f,0x69,0x23,3,0x65,
-0x3e,0x6a,0x48,0x6f,0x4e,0x75,0x10,0x6e,1,0x69,0x24,0x72,0x61,0x10,0x63,0x61,
-0x13,0x6a,0x61,0x6e,0x67,0xa3,0x6e,0x11,0x6e,0x67,0xa3,0x6e,1,0x68,0x2a,0x72,
-0x10,0x6f,0xa3,0x5d,0x10,0x67,0xa3,0xb6,0x6e,0xa2,0x83,0x6f,0xa4,1,0x70,5,
-0x6c,0x1e,0x6c,0x44,0x72,0x4a,0x73,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,
-0x6c,0x61,0x76,0x69,0xa3,0x7b,0x11,0x72,0x64,0xa3,0x5c,0x11,0x74,0x69,0xa3,0x7d,
-0x61,0x7c,0x65,0xa2,0x54,0x68,3,0x61,0x3e,0x6c,0x4e,0x6e,0x5e,0x6f,0x16,0x65,
-0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,0x5b,0x10,0x67,0xa2,0x5a,0x12,0x73,0x70,0x61,
-0xa3,0x5a,2,0x69,0xa3,0x7a,0x70,0xa3,0x7b,0x76,0xa3,0x7c,0x10,0x78,0xa3,0x5b,
-2,0x68,0x3e,0x6c,0x50,0x75,0x10,0x63,0xa2,0xa5,0x14,0x69,0x6e,0x68,0x61,0x75,
-0xa3,0xa5,0x17,0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0x4b,0x10,0x6d,0xa2,
-0x90,0x14,0x79,0x72,0x65,0x6e,0x65,0xa3,0x90,0x11,0x72,0x6d,0xa3,0x59,6,0x6b,
-0x36,0x6b,0x56,0x73,0x6e,0x75,0x74,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,
-0x70,0x75,0x61,0x63,0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xba,1,0x67,
-0x2e,0x6f,0xa2,0x57,0x10,0x6f,0xa3,0x57,0x10,0x62,0xa3,0x84,0x11,0x68,0x75,0xa3,
-0x96,0x12,0x73,0x68,0x75,0xa3,0x96,0x61,0x42,0x62,0x9e,0x65,0x10,0x77,1,0x61,
-0xa3,0xaa,0x74,0x14,0x61,0x69,0x6c,0x75,0x65,0x97,3,0x62,0x32,0x67,0x40,0x6e,
-0x56,0x72,0x10,0x62,0xa3,0x8e,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0x8f,0x10,
-0x6d,0xa2,0xc7,0x15,0x75,0x6e,0x64,0x61,0x72,0x69,0xa3,0xc7,0x10,0x64,0xa2,0xbb,
-0x16,0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa3,0xbb,0x11,0x61,0x74,0xa3,0x8f,4,
-0x67,0x3c,0x6c,0x4e,0x72,0xa2,0x8e,0x73,0xa2,0x9c,0x75,0x11,0x67,0x72,0xa3,0xc2,
-1,0x61,0x2a,0x68,0x11,0x61,0x6d,0x5b,0x10,0x6d,0x5b,1,0x63,0xa2,0x6a,0x64,
-6,0x70,0x41,0x70,0x3a,0x73,0x58,0x74,0x86,0x75,0x14,0x79,0x67,0x68,0x75,0x72,
-0xa3,0xc2,0x11,0x65,0x72,1,0x6d,0x2c,0x73,0x12,0x69,0x61,0x6e,0x9b,0x11,0x69,
-0x63,0xa3,0x59,0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,
-0x69,0x61,0x6e,0xa3,0x85,0x13,0x64,0x69,0x61,0x6e,0xa3,0xb8,0x14,0x75,0x72,0x6b,
-0x69,0x63,0xa3,0x58,0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,
-0x61,0x62,0x69,0x61,0x6e,0xa3,0x8e,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,
-0xa3,0x4c,0x14,0x74,0x61,0x6c,0x69,0x63,0x5d,1,0x68,0x26,0x6b,0xa3,0x6d,0x12,
-0x69,0x6b,0x69,0xa3,0x6d,2,0x69,0x2c,0x6b,0x30,0x79,0x10,0x61,0x5f,0x11,0x79,
-0x61,0x5f,0x10,0x68,0xa3,0x58,2,0x61,0x36,0x67,0x3c,0x6d,0x10,0x61,0x84,0x12,
-0x6e,0x79,0x61,0x85,0x11,0x67,0x65,0xa3,0xab,0x10,0x65,0xa3,0xab,0x68,0xc3,0x15,
-0x6b,0xc2,0x2c,0x6b,0xa4,0x17,0x6c,0xa4,0xba,0x6d,8,0x6f,0x46,0x6f,0x48,0x72,
-0x74,0x74,0x80,0x75,0x86,0x79,1,0x61,0x28,0x6d,0x10,0x72,0x59,0x13,0x6e,0x6d,
-0x61,0x72,0x59,2,0x64,0x2e,0x6e,0x32,0x6f,0x10,0x6e,0xa3,0x72,0x10,0x69,0xa3,
-0xa3,0x10,0x67,0x56,0x14,0x6f,0x6c,0x69,0x61,0x6e,0x57,0x10,0x6f,0xa2,0x95,0x10,
-0x6f,0xa3,0x95,0x11,0x65,0x69,0xa3,0x73,0x11,0x6c,0x74,0xa2,0xa4,0x12,0x61,0x6e,
-0x69,0xa3,0xa4,0x61,0x36,0x65,0xa2,0x67,0x69,0xa2,0xbd,0x6c,0x11,0x79,0x6d,0x55,
-6,0x6e,0x38,0x6e,0x32,0x72,0x5c,0x73,0x6c,0x79,0x10,0x61,0xa3,0x55,1,0x64,
-0x38,0x69,0xa2,0x79,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0x79,0xa2,0x54,0x12,
-0x61,0x69,0x63,0xa3,0x54,0x10,0x63,0xa2,0xa9,0x12,0x68,0x65,0x6e,0xa3,0xa9,0x18,
-0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xaf,0x68,0x36,0x6b,0x4c,0x6c,
-0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x55,1,0x61,0x26,0x6a,0xa3,0xa0,0x13,0x6a,
-0x61,0x6e,0x69,0xa3,0xa0,0x10,0x61,0xa2,0xb4,0x12,0x73,0x61,0x72,0xa3,0xb4,3,
-0x64,0x78,0x65,0x94,0x6e,0xa2,0x42,0x72,1,0x63,0xa3,0x8d,0x6f,0xa2,0x56,0x13,
-0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
-0x70,0x68,0x73,0xa3,0x56,0x15,0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0x8d,1,0x65,
-0x26,0x66,0xa3,0xb5,0x16,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa3,0xb5,0x17,0x74,
-0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa3,0x73,0x10,0x64,0xa2,0x8c,0x17,0x65,0x6b,
-0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0x8c,0x11,0x61,0x6f,0xa3,0x5c,6,0x6e,0x1a,
-0x6e,0x34,0x6f,0x38,0x70,0x3e,0x74,0x11,0x68,0x69,0xa3,0x78,0x11,0x64,0x61,0x4b,
-0x11,0x72,0x65,0xa3,0x77,0x11,0x65,0x6c,0xa3,0x8a,0x61,0x32,0x68,0xa2,0x44,0x69,
-0x11,0x74,0x73,0xa3,0xbf,5,0x74,0x23,0x74,0x34,0x77,0x56,0x79,0x13,0x61,0x68,
-0x6c,0x69,0xa3,0x4f,0x14,0x61,0x6b,0x61,0x6e,0x61,0x4c,0x19,0x6f,0x72,0x68,0x69,
-0x72,0x61,0x67,0x61,0x6e,0x61,0x8d,0x10,0x69,0xa3,0xc6,0x69,0x38,0x6c,0x40,0x6e,
-1,0x61,0x4d,0x6e,0x12,0x61,0x64,0x61,0x4b,0x12,0x74,0x68,0x69,0xa3,0x78,0x10,
-0x69,0xa3,0x4f,4,0x61,0x40,0x69,0x52,0x6d,0x70,0x6f,0x7c,0x75,0x15,0x64,0x61,
-0x77,0x61,0x64,0x69,0xa3,0x91,0x10,0x72,0x92,0x15,0x6f,0x73,0x68,0x74,0x68,0x69,
-0x93,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,
-0xa3,0xbf,1,0x65,0x24,0x72,0x4f,0x10,0x72,0x4f,0x10,0x6a,0xa2,0x9d,0x11,0x6b,
-0x69,0xa3,0x9d,4,0x61,0x5c,0x65,0x90,0x69,0xa0,0x6f,0xa2,0x5d,0x79,1,0x63,
-0x34,0x64,0x10,0x69,0xa2,0x6c,0x11,0x61,0x6e,0xa3,0x6c,0x10,0x69,0xa2,0x6b,0x11,
-0x61,0x6e,0xa3,0x6b,2,0x6e,0x42,0x6f,0x46,0x74,3,0x66,0xa3,0x50,0x67,0xa3,
-0x51,0x69,0x24,0x6e,0x53,0x10,0x6e,0x53,0x10,0x61,0xa3,0x6a,0x50,0x10,0x6f,0x51,
-0x11,0x70,0x63,0xa2,0x52,0x11,0x68,0x61,0xa3,0x52,2,0x6d,0x2e,0x6e,0x36,0x73,
-0x10,0x75,0xa3,0x83,0x10,0x62,0x80,0x10,0x75,0x81,2,0x61,0xa3,0x53,0x62,0x83,
-0x65,0x11,0x61,0x72,1,0x61,0xa3,0x53,0x62,0x83,0x11,0x6d,0x61,0xa3,0x8b,0x68,
-0x6e,0x69,0xa2,0x95,0x6a,2,0x61,0x30,0x70,0x52,0x75,0x11,0x72,0x63,0xa3,0x94,
-1,0x6d,0x38,0x76,0x10,0x61,0xa2,0x4e,0x13,0x6e,0x65,0x73,0x65,0xa3,0x4e,0x10,
-0x6f,0xa3,0xad,0x11,0x61,0x6e,0xa3,0x69,6,0x6c,0x1e,0x6c,0x34,0x6d,0x3a,0x72,
-0x48,0x75,0x11,0x6e,0x67,0xa3,0x4c,0x11,0x75,0x77,0xa3,0x9c,0x10,0x6e,1,0x67,
-0xa3,0x4b,0x70,0xa3,0xba,0x11,0x6b,0x74,0x8d,0x61,0x3c,0x65,0xa2,0x43,0x69,0x11,
-0x72,0x61,0x48,0x13,0x67,0x61,0x6e,0x61,0x49,1,0x6e,0x34,0x74,0x10,0x72,0xa2,
-0xa2,0x11,0x61,0x6e,0xa3,0xa2,0x42,6,0x6f,0xe,0x6f,0x77,0x73,0xa3,0x49,0x74,
-0xa3,0x4a,0x75,0x12,0x6e,0x6f,0x6f,0x77,0x62,0xa3,0xac,0x67,0x3e,0x69,0x42,0x19,
-0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa3,0xb6,0x44,0x11,0x75,0x6c,
-0x45,0x11,0x62,0x72,0x46,0x11,0x65,0x77,0x47,2,0x6d,0x2e,0x6e,0x4a,0x74,0x11,
-0x61,0x6c,0x5d,0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,
-0x63,0xa3,0x74,2,0x64,0x66,0x68,0x6a,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,
-0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,
-0xa3,0x7d,0x13,0x6c,0x61,0x76,0x69,0xa3,0x7a,0x10,0x73,0xa3,0x4d,0x15,0x65,0x72,
-0x69,0x74,0x65,0x64,0x23,0x64,0xc1,0xd,0x64,0xa2,0x7a,0x65,0xa2,0xc1,0x67,4,
-0x65,0x82,0x6c,0x9a,0x6f,0xa2,0x46,0x72,0xa2,0x55,0x75,2,0x6a,0x3c,0x6e,0x4e,
-0x72,1,0x6d,0x24,0x75,0x41,0x13,0x75,0x6b,0x68,0x69,0x41,1,0x61,0x24,0x72,
-0x3f,0x13,0x72,0x61,0x74,0x69,0x3f,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,
-0x69,0xa3,0xb3,0x10,0x6f,1,0x6b,0xa3,0x48,0x72,0x38,0x13,0x67,0x69,0x61,0x6e,
-0x39,0x11,0x61,0x67,0x90,0x15,0x6f,0x6c,0x69,0x74,0x69,0x63,0x91,1,0x6e,0x30,
-0x74,0x10,0x68,0x3a,0x11,0x69,0x63,0x3b,1,0x67,0xa3,0xb3,0x6d,0xa3,0xaf,1,
-0x61,0x32,0x65,1,0x65,0x24,0x6b,0x3d,0x10,0x6b,0x3d,0x10,0x6e,0xa2,0x89,0x12,
-0x74,0x68,0x61,0xa3,0x89,4,0x65,0x46,0x69,0x6c,0x6f,0x8c,0x73,0x9a,0x75,0x11,
-0x70,0x6c,0xa2,0x87,0x13,0x6f,0x79,0x61,0x6e,0xa3,0x87,1,0x73,0x38,0x76,0x10,
-0x61,0x34,0x15,0x6e,0x61,0x67,0x61,0x72,0x69,0x35,0x13,0x65,0x72,0x65,0x74,0x33,
-1,0x61,0x36,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa3,0xbe,0x10,0x6b,
-0xa3,0xbe,0x11,0x67,0x72,0xa2,0xb2,0x10,0x61,0xa3,0xb2,0x11,0x72,0x74,0x33,2,
-0x67,0x3a,0x6c,0x72,0x74,0x11,0x68,0x69,0x36,0x13,0x6f,0x70,0x69,0x63,0x37,0x10,
-0x79,2,0x64,0xa3,0x45,0x68,0xa3,0x46,0x70,0xa2,0x47,0x1e,0x74,0x69,0x61,0x6e,
-0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x47,1,0x62,0x36,
-0x79,0x10,0x6d,0xa2,0xb9,0x12,0x61,0x69,0x63,0xa3,0xb9,0x10,0x61,0xa2,0x88,0x12,
-0x73,0x61,0x6e,0xa3,0x88,0x61,0xa2,0xc9,0x62,0xa4,0x2e,0x63,6,0x6f,0x52,0x6f,
-0x76,0x70,0x92,0x75,0xa2,0x41,0x79,1,0x70,0x3e,0x72,2,0x69,0x2a,0x6c,0x31,
-0x73,0xa3,0x44,0x13,0x6c,0x6c,0x69,0x63,0x31,0x10,0x72,1,0x69,0x34,0x6f,0x15,
-0x6d,0x69,0x6e,0x6f,0x61,0x6e,0xa3,0xc1,0x11,0x6f,0x74,0x7f,1,0x6d,0x30,0x70,
-0x10,0x74,0x2e,0x11,0x69,0x63,0x2f,0x12,0x6d,0x6f,0x6e,0x21,1,0x6d,0x28,0x72,
-0x10,0x74,0x7f,0x10,0x6e,0xa3,0xc1,0x16,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa3,
-0x65,0x61,0x32,0x68,0xa2,0x41,0x69,0x11,0x72,0x74,0xa3,0x43,3,0x6b,0x4c,0x6e,
-0x50,0x72,0x76,0x75,0x1d,0x63,0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,
-0x69,0x61,0x6e,0xa3,0x9f,0x10,0x6d,0xa3,0x76,1,0x61,0x24,0x73,0x71,0x1d,0x64,
-0x69,0x61,0x6e,0x61,0x62,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x71,0x10,0x69,
-0xa2,0x68,0x11,0x61,0x6e,0xa3,0x68,3,0x61,0x32,0x65,0x44,0x6f,0x52,0x72,0x10,
-0x73,0xa3,0xbd,1,0x6b,0x26,0x6d,0xa3,0x42,0x11,0x6d,0x61,0xa3,0x76,0x10,0x72,
-0x2c,0x13,0x6f,0x6b,0x65,0x65,0x2d,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa3,
-0xbd,6,0x68,0x4a,0x68,0x48,0x6e,0x4e,0x72,0x76,0x76,1,0x65,0x2a,0x73,0x10,
-0x74,0xa3,0x75,0x13,0x73,0x74,0x61,0x6e,0xa3,0x75,0x11,0x6f,0x6d,0xa3,0xa1,0x11,
-0x61,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
-0x70,0x68,0x73,0xa3,0x9c,1,0x61,0x3e,0x6d,2,0x65,0x2a,0x69,0xa3,0x74,0x6e,
-0x27,0x13,0x6e,0x69,0x61,0x6e,0x27,0x10,0x62,0x24,0x11,0x69,0x63,0x25,0x64,0x30,
+0x61,0x72,0x74,0xa3,0x49,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0xa3,0x4a,1,
+0x6e,0x36,0x6f,0x42,0x16,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x43,0x15,0x74,0x69,
+0x66,0x69,0x65,0x72,1,0x73,0x30,0x74,0x12,0x79,0x70,0x65,0xd9,0x70,1,0x14,
+0x74,0x61,0x74,0x75,0x73,0xc3,0x19,2,0x64,0x2e,0x70,0x86,0x73,0x10,0x63,0xc3,
+0x17,0x11,0x69,0x63,1,0x70,0x46,0x73,0x1e,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,
+0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x17,0x10,0x6f,0x1f,0x73,0x69,0x74,
+0x69,0x6f,0x6e,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x16,0x10,
+0x63,0xc3,0x16,2,0x67,0xc3,6,0x6f,0x26,0x74,0xc3,7,0x11,0x69,0x6e,1,
+0x63,0x4a,0x69,0x11,0x6e,0x67,1,0x67,0x2e,0x74,0x12,0x79,0x70,0x65,0xc3,7,
+0x13,0x72,0x6f,0x75,0x70,0xc3,6,0x48,0x15,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x49,
+0x66,0x86,0x67,0xa2,0x4a,0x68,3,0x61,0x36,0x65,0x58,0x73,0x68,0x79,0x13,0x70,
+0x68,0x65,0x6e,0x3d,0x1f,0x6e,0x67,0x75,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x6c,
+0x65,0x74,0x79,0x70,0x65,0xc3,0xb,0x10,0x78,0x3a,0x14,0x64,0x69,0x67,0x69,0x74,
+0x3b,0x10,0x74,0xc3,0xb,0x16,0x75,0x6c,0x6c,0x63,0x6f,0x6d,0x70,0x1f,0x6f,0x73,
+0x69,0x74,0x69,0x6f,0x6e,0x65,0x78,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x33,2,
+0x63,0xa2,0x44,0x65,0xa2,0x4b,0x72,3,0x61,0x34,0x62,0x84,0x65,0x8a,0x6c,0x12,
+0x69,0x6e,0x6b,0x39,0x11,0x70,0x68,0x7c,0x12,0x65,0x6d,0x65,3,0x62,0x5e,0x63,
+0x30,0x65,0x48,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x1a,0x6c,0x75,0x73,0x74,0x65,0x72,
+0x62,0x72,0x65,0x61,0x6b,0xc3,0x12,0x14,0x78,0x74,0x65,0x6e,0x64,0x37,0x12,0x61,
+0x73,0x65,0x35,0x11,0x78,0x74,0x37,0xc2,5,1,0x62,0xc3,0x12,0x6d,0xd9,0x20,
+0,0x1c,0x6e,0x65,0x72,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc2,
+5,0x13,0x6d,0x61,0x73,0x6b,0xd9,0x20,0,0x61,0xa2,0xa2,0x62,0xa2,0xd0,0x63,
+0xa4,0x4f,0x64,0xa6,0x1c,0x65,5,0x6d,0x75,0x6d,0x6e,0x70,0xa2,0x6b,0x78,0x10,
+0x74,0x30,1,0x65,0x2c,0x70,0x12,0x69,0x63,0x74,0xa1,0x12,0x6e,0x64,0x65,1,
+0x64,0x24,0x72,0x31,0x1b,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,
+0x63,0xa1,0x10,0x6f,1,0x64,0x97,0x6a,0x10,0x69,0x92,3,0x63,0x44,0x6b,0x54,
+0x6d,0x70,0x70,0x1a,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x95,
+0x17,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x9b,0x1c,0x65,0x79,0x63,0x61,0x70,
+0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0xa3,0x42,0x16,0x6f,0x64,0x69,0x66,0x69,
+0x65,0x72,0x96,0x13,0x62,0x61,0x73,0x65,0x99,0x12,0x72,0x65,0x73,0x95,0x61,0x30,
+0x62,0x4e,0x63,0x12,0x6f,0x6d,0x70,0x9b,0xc2,4,0x1b,0x73,0x74,0x61,0x73,0x69,
+0x61,0x6e,0x77,0x69,0x64,0x74,0x68,0xc3,4,0x12,0x61,0x73,0x65,0x99,3,0x67,
+0x44,0x68,0x4a,0x6c,0x4e,0x73,0x1a,0x63,0x69,0x69,0x68,0x65,0x78,0x64,0x69,0x67,
+0x69,0x74,0x23,0x10,0x65,0xd9,0x40,0,0x11,0x65,0x78,0x23,1,0x6e,0x38,0x70,
+0x11,0x68,0x61,0x20,0x14,0x62,0x65,0x74,0x69,0x63,0x21,0x11,0x75,0x6d,0x79,5,
+0x6c,0x22,0x6c,0x36,0x6d,0x52,0x70,1,0x62,0xd9,0x40,0xd,0x74,0xc3,0x15,2,
+0x61,0x32,0x6b,0xc3,1,0x6f,0x11,0x63,0x6b,0xc3,1,0x11,0x6e,0x6b,0x7b,0x10,
+0x67,0xd9,0x40,1,0x61,0xa2,0x4f,0x63,0xc3,0,0x69,0x11,0x64,0x69,2,0x63,
+0x54,0x6d,0x74,0x70,0x1b,0x61,0x69,0x72,0x65,0x64,0x62,0x72,0x61,0x63,0x6b,0x65,
+0x74,0xd8,0x40,0xd,0x13,0x74,0x79,0x70,0x65,0xc3,0x15,0x24,1,0x6c,0x30,0x6f,
+0x14,0x6e,0x74,0x72,0x6f,0x6c,0x25,0x12,0x61,0x73,0x73,0xc3,0,0x26,0x14,0x69,
+0x72,0x72,0x6f,0x72,1,0x65,0x38,0x69,0x16,0x6e,0x67,0x67,0x6c,0x79,0x70,0x68,
+0xd9,0x40,1,0x10,0x64,0x27,0x17,0x73,0x69,0x63,0x65,0x6d,0x6f,0x6a,0x69,0xa3,
+0x41,6,0x68,0x7c,0x68,0x54,0x69,0x85,0x6f,0xa2,0x6f,0x77,4,0x63,0x30,0x6b,
+0x36,0x6c,0x87,0x74,0x8b,0x75,0x89,1,0x66,0x8d,0x6d,0x8f,0x11,0x63,0x66,0x91,
+0x18,0x61,0x6e,0x67,0x65,0x73,0x77,0x68,0x65,0x6e,4,0x63,0x44,0x6c,0x6c,0x6e,
+0x7e,0x74,0x98,0x75,0x18,0x70,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x89,0x12,
+0x61,0x73,0x65,1,0x66,0x30,0x6d,0x14,0x61,0x70,0x70,0x65,0x64,0x8f,0x14,0x6f,
+0x6c,0x64,0x65,0x64,0x8d,0x18,0x6f,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x87,
+0x1c,0x66,0x6b,0x63,0x63,0x61,0x73,0x65,0x66,0x6f,0x6c,0x64,0x65,0x64,0x91,0x18,
+0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x64,0x8b,0x13,0x6d,0x70,0x65,0x78,0x33,
+0x61,0x2e,0x63,0xa2,0x48,0x66,0xd9,0x40,2,1,0x6e,0x72,0x73,0x10,0x65,3,
+0x64,0x83,0x66,0x3a,0x69,0x4a,0x73,0x17,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65,
+0x65,0x15,0x6f,0x6c,0x64,0x69,0x6e,0x67,0xd9,0x40,2,0x17,0x67,0x6e,0x6f,0x72,
+0x61,0x62,0x6c,0x65,0x85,0x13,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,
+0x62,0x69,0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,2,0x10,0x63,0xc3,
+2,3,0x61,0x30,0x65,0x34,0x69,0xa2,0x41,0x74,0xc3,3,0x11,0x73,0x68,0x29,
+2,0x63,0x3a,0x66,0x58,0x70,0x2c,0x16,0x72,0x65,0x63,0x61,0x74,0x65,0x64,0x2d,
+0x1d,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x74,0x79,0x70,0x65,0xc3,
+3,0x15,0x61,0x75,0x6c,0x74,0x69,0x67,0x1f,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,
+0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x2b,0x2a,0x10,0x61,0x2e,0x15,0x63,
+0x72,0x69,0x74,0x69,0x63,0x2f,3,0x66,0x34,0x6e,0x3e,0x74,0x42,0x79,0x22,0x11,
+0x65,0x73,0x23,0x20,0x13,0x61,0x6c,0x73,0x65,0x21,0x20,0x10,0x6f,0x21,0x22,0x12,
+0x72,0x75,0x65,0x23,0xb,0x6b,0x5b,0x6f,0x23,0x6f,0x3c,0x72,0x4c,0x76,1,0x69,
+0x24,0x72,0x33,0x13,0x72,0x61,0x6d,0x61,0x33,0x10,0x76,0x22,0x14,0x65,0x72,0x6c,
+0x61,0x79,0x23,0xa2,0xe2,0x13,0x69,0x67,0x68,0x74,0xa3,0xe2,0x6b,0x58,0x6c,0x74,
+0x6e,3,0x6b,0x2f,0x6f,0x30,0x72,0x21,0x75,0x12,0x6b,0x74,0x61,0x2f,0x19,0x74,
+0x72,0x65,0x6f,0x72,0x64,0x65,0x72,0x65,0x64,0x21,1,0x61,0x24,0x76,0x31,0x18,
+0x6e,0x61,0x76,0x6f,0x69,0x63,0x69,0x6e,0x67,0x31,0xa2,0xe0,0x12,0x65,0x66,0x74,
+0xa3,0xe0,0x64,0x45,0x64,0x4e,0x68,0x88,0x69,1,0x6f,0x26,0x73,0xa3,0xf0,0x1a,
+0x74,0x61,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xf0,2,0x61,0xa3,
+0xea,0x62,0xa3,0xe9,0x6f,0x13,0x75,0x62,0x6c,0x65,1,0x61,0x30,0x62,0x13,0x65,
+0x6c,0x6f,0x77,0xa3,0xe9,0x13,0x62,0x6f,0x76,0x65,0xa3,0xea,0x12,0x61,0x6e,0x72,
+0x2c,0x15,0x65,0x61,0x64,0x69,0x6e,0x67,0x2d,0x61,0xa2,0x7b,0x62,0xa2,0xd4,0x63,
+0x11,0x63,0x63,4,0x31,0x3c,0x32,0xa2,0x42,0x33,0xa2,0x56,0x38,0xa2,0x64,0x39,
+0x10,0x31,0xa3,0x5b,9,0x35,0xa,0x35,0x3f,0x36,0x41,0x37,0x43,0x38,0x45,0x39,
+0x47,0x30,0x30,0x31,0x3c,0x32,0x42,0x33,0x4e,0x34,0x3d,0x34,1,0x33,0xa3,0x67,
+0x37,0xa3,0x6b,0x36,0x10,0x38,0xa3,0x76,0x38,1,0x32,0xa3,0x7a,0x39,0xa3,0x81,
+0x3a,2,0x30,0xa3,0x82,0x32,0xa3,0x84,0x33,0xa3,0x85,9,0x35,0xa,0x35,0x53,
+0x36,0x55,0x37,0x57,0x38,0x59,0x39,0x5b,0x30,0x49,0x31,0x4b,0x32,0x4d,0x33,0x4f,
+0x34,0x51,6,0x33,8,0x33,0x63,0x34,0x65,0x35,0x67,0x36,0x69,0x30,0x5d,0x31,
+0x5f,0x32,0x61,0x10,0x34,0xa3,0x54,0xa2,0xe6,3,0x62,0xa0,0x6c,0xa3,0xe4,0x72,
+0xa3,0xe8,0x74,2,0x61,0x74,0x62,0x7c,0x74,0x14,0x61,0x63,0x68,0x65,0x64,1,
+0x61,0x3e,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa2,0xca,0x13,0x6c,0x65,0x66,0x74,0xa3,
+0xc8,0x13,0x62,0x6f,0x76,0x65,0xa2,0xd6,0x14,0x72,0x69,0x67,0x68,0x74,0xa3,0xd8,
+0xa2,0xd6,0x10,0x72,0xa3,0xd8,0xa2,0xca,0x10,0x6c,0xa3,0xc8,0x12,0x6f,0x76,0x65,
+0xa2,0xe6,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xe8,0x12,0x65,0x66,
+0x74,0xa3,0xe4,0xa2,0xdc,2,0x65,0x2c,0x6c,0xa3,0xda,0x72,0xa3,0xde,0x12,0x6c,
+0x6f,0x77,0xa2,0xdc,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xde,0x12,
+0x65,0x66,0x74,0xa3,0xda,0xb,0x6e,0xc0,0xca,0x72,0x5f,0x72,0x46,0x73,0xa2,0x48,
+0x77,1,0x68,0x24,0x73,0x33,0x17,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x33,
+0x22,1,0x69,0x30,0x6c,2,0x65,0x3d,0x69,0x4b,0x6f,0x3f,0x18,0x67,0x68,0x74,
+0x74,0x6f,0x6c,0x65,0x66,0x74,0x22,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,
+0x72,0x72,0x69,0x64,0x65,0x3f,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x3d,
+0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4b,0x30,0x1e,0x65,0x67,0x6d,0x65,0x6e,0x74,
+0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x31,0x6e,0xa2,0x41,0x6f,0xa2,0x53,
+0x70,2,0x61,0x66,0x64,0x86,0x6f,0x1b,0x70,0x64,0x69,0x72,0x65,0x63,0x74,0x69,
+0x6f,0x6e,0x61,0x6c,1,0x66,0x32,0x69,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4d,
+0x14,0x6f,0x72,0x6d,0x61,0x74,0x41,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,
+0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2f,1,0x66,0x41,0x69,0x4d,1,0x6f,
+0x28,0x73,0x10,0x6d,0x43,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,
+0x72,0x6b,0x43,1,0x6e,0x35,0x74,0x19,0x68,0x65,0x72,0x6e,0x65,0x75,0x74,0x72,
+0x61,0x6c,0x35,0x65,0x88,0x65,0x98,0x66,0xa2,0x6a,0x6c,0x20,1,0x65,0x30,0x72,
+2,0x65,0x37,0x69,0x49,0x6f,0x39,0x18,0x66,0x74,0x74,0x6f,0x72,0x69,0x67,0x68,
+0x74,0x20,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,0x72,0x69,0x64,0x65,
+0x39,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x37,0x15,0x73,0x6f,0x6c,0x61,
+0x74,0x65,0x49,3,0x6e,0x25,0x73,0x27,0x74,0x29,0x75,0x15,0x72,0x6f,0x70,0x65,
+0x61,0x6e,2,0x6e,0x3c,0x73,0x46,0x74,0x18,0x65,0x72,0x6d,0x69,0x6e,0x61,0x74,
+0x6f,0x72,0x29,0x14,0x75,0x6d,0x62,0x65,0x72,0x25,0x17,0x65,0x70,0x61,0x72,0x61,
+0x74,0x6f,0x72,0x27,1,0x69,0x28,0x73,0x10,0x69,0x47,0x1f,0x72,0x73,0x74,0x73,
+0x74,0x72,0x6f,0x6e,0x67,0x69,0x73,0x6f,0x6c,0x61,0x74,0x65,0x47,0x61,0x4e,0x62,
+0x84,0x63,1,0x6f,0x24,0x73,0x2d,0x1c,0x6d,0x6d,0x6f,0x6e,0x73,0x65,0x70,0x61,
+0x72,0x61,0x74,0x6f,0x72,0x2d,2,0x6c,0x3b,0x6e,0x2b,0x72,0x13,0x61,0x62,0x69,
+0x63,1,0x6c,0x30,0x6e,0x14,0x75,0x6d,0x62,0x65,0x72,0x2b,0x14,0x65,0x74,0x74,
+0x65,0x72,0x3b,0x2e,1,0x6e,0x45,0x6f,0x1c,0x75,0x6e,0x64,0x61,0x72,0x79,0x6e,
+0x65,0x75,0x74,0x72,0x61,0x6c,0x45,0,0x16,0x6d,0xc9,0x20,0x74,0xc2,0x30,0x77,
+0x89,0x77,0x86,0x79,0xa2,0x46,0x7a,1,0x61,0x58,0x6e,0x1a,0x61,0x6d,0x65,0x6e,
+0x6e,0x79,0x6d,0x75,0x73,0x69,0x63,0xa4,0x40,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,
+0x74,0x69,0x6f,0x6e,0xa5,0x40,0x1c,0x6e,0x61,0x62,0x61,0x7a,0x61,0x72,0x73,0x71,
+0x75,0x61,0x72,0x65,0xa5,0x18,0x10,0x61,1,0x6e,0x36,0x72,0x16,0x61,0x6e,0x67,
+0x63,0x69,0x74,0x69,0xa3,0xfc,0x12,0x63,0x68,0x6f,0xa5,0x2c,1,0x65,0x88,0x69,
+2,0x6a,0x3c,0x72,0x68,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,
+0x48,0x12,0x69,0x6e,0x67,0xa2,0x74,0x1e,0x68,0x65,0x78,0x61,0x67,0x72,0x61,0x6d,
+0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x74,0x16,0x61,0x64,0x69,0x63,0x61,0x6c,
+0x73,0xa3,0x49,0x13,0x7a,0x69,0x64,0x69,0xa5,0x34,0x74,0xa2,0x65,0x75,0xa4,0x4f,
+0x76,3,0x61,0x3c,0x65,0x80,0x69,0xa2,0x50,0x73,0xa2,0x6c,0x12,0x73,0x75,0x70,
+0xa3,0x7d,1,0x69,0xa3,0x9f,0x72,0x1e,0x69,0x61,0x74,0x69,0x6f,0x6e,0x73,0x65,
+0x6c,0x65,0x63,0x74,0x6f,0x72,0x73,0xa2,0x6c,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,
+0x6d,0x65,0x6e,0x74,0xa3,0x7d,1,0x64,0x3c,0x72,0x19,0x74,0x69,0x63,0x61,0x6c,
+0x66,0x6f,0x72,0x6d,0x73,0xa3,0x91,0x14,0x69,0x63,0x65,0x78,0x74,0xa2,0xaf,0x16,
+0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xaf,0x15,0x74,0x68,0x6b,0x75,0x71,0x69,
+0xa5,0x3f,5,0x69,0x3f,0x69,0x5a,0x6f,0x8c,0x72,0x1c,0x61,0x6e,0x73,0x70,0x6f,
+0x72,0x74,0x61,0x6e,0x64,0x6d,0x61,0x70,0xa2,0xcf,0x16,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0xa3,0xcf,2,0x62,0x34,0x66,0x3c,0x72,0x13,0x68,0x75,0x74,0x61,0xa3,
+0xfb,0x13,0x65,0x74,0x61,0x6e,0x57,0x14,0x69,0x6e,0x61,0x67,0x68,0xa3,0x90,0x11,
+0x74,0x6f,0xa5,0x3d,0x61,0x3e,0x65,0xa2,0xa0,0x68,0x10,0x61,1,0x61,0x24,0x69,
+0x53,0x11,0x6e,0x61,0x3d,4,0x67,0x8e,0x69,0xa2,0x49,0x6b,0xa2,0x72,0x6d,0xa2,
+0x74,0x6e,0x10,0x67,1,0x73,0x68,0x75,0x10,0x74,0xa4,0x10,1,0x63,0x40,0x73,
+0x11,0x75,0x70,0xa4,0x33,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x33,0x18,
+0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0xa5,0x11,0x10,0x61,0xa5,0x3c,2,
+0x61,0x2a,0x62,0x32,0x73,0xa3,0x60,0x12,0x6c,0x6f,0x67,0xa3,0x62,0x13,0x61,0x6e,
+0x77,0x61,0xa3,0x65,3,0x6c,0x52,0x74,0x56,0x76,0x5e,0x78,0x16,0x75,0x61,0x6e,
+0x6a,0x69,0x6e,0x67,0xa2,0x7c,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x7c,
+0x10,0x65,0xa3,0x70,0x12,0x68,0x61,0x6d,0xa3,0xae,0x12,0x69,0x65,0x74,0xa3,0xb7,
+0x11,0x72,0x69,0xa3,0xdc,0x11,0x69,0x6c,0x48,0x12,0x73,0x75,0x70,0xa4,0x2b,0x16,
+0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x2b,0x13,0x6c,0x75,0x67,0x75,0x4b,2,
+0x63,0x8c,0x67,0xa2,0x41,0x6e,0x1f,0x69,0x66,0x69,0x65,0x64,0x63,0x61,0x6e,0x61,
+0x64,0x69,0x61,0x6e,0x61,0x62,0x6f,0x1f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x73,
+0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x62,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,
+0x65,0x64,0xa2,0xad,0x10,0x61,0xa5,0x3e,0x11,0x61,0x73,0x62,0x12,0x65,0x78,0x74,
+0xa2,0xad,0x10,0x61,0xa5,0x3e,0x15,0x61,0x72,0x69,0x74,0x69,0x63,0xa3,0x78,0x70,
+0xc3,0x4b,0x70,0xa6,0x61,0x72,0xa8,0x1d,0x73,7,0x6f,0xc1,0xbe,0x6f,0xa2,0x69,
+0x70,0xa2,0x85,0x75,0xa2,0xa4,0x79,2,0x6c,0x50,0x6d,0x62,0x72,0x12,0x69,0x61,
+0x63,0x3a,0x12,0x73,0x75,0x70,0xa4,0x17,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
+0xa5,0x17,0x17,0x6f,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0xa3,0x8f,0x13,0x62,0x6f,
+0x6c,0x73,1,0x61,0x4c,0x66,0x10,0x6f,0x1f,0x72,0x6c,0x65,0x67,0x61,0x63,0x79,
+0x63,0x6f,0x6d,0x70,0x75,0x74,0x69,0x6e,0x67,0xa5,0x32,0x1f,0x6e,0x64,0x70,0x69,
+0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x78,0x74,1,0x61,0xa5,0x2a,
+0x65,0x14,0x6e,0x64,0x65,0x64,0x61,0xa5,0x2a,2,0x67,0x34,0x72,0x3e,0x79,0x13,
+0x6f,0x6d,0x62,0x6f,0xa5,0x16,0x13,0x64,0x69,0x61,0x6e,0xa5,0x23,0x17,0x61,0x73,
+0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0xda,1,0x61,0x32,0x65,0x14,0x63,0x69,0x61,
+0x6c,0x73,0xa3,0x56,0x12,0x63,0x69,0x6e,0x1f,0x67,0x6d,0x6f,0x64,0x69,0x66,0x69,
+0x65,0x72,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,2,0x6e,0x48,0x70,0x76,0x74,
+0x1d,0x74,0x6f,0x6e,0x73,0x69,0x67,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa5,
+6,0x15,0x64,0x61,0x6e,0x65,0x73,0x65,0xa2,0x9b,0x12,0x73,0x75,0x70,0xa2,0xdb,
+0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xdb,4,0x61,0xa2,0xa8,0x65,0x5c,
+0x6d,0x9e,0x70,0xa2,0x4b,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,0x6c,0x73,0x61,0x6e,
+0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa5,5,0x10,0x72,
+1,0x61,0x4e,0x73,0x12,0x63,0x72,0x69,0x1f,0x70,0x74,0x73,0x61,0x6e,0x64,0x73,
+0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x73,0x14,0x6e,0x64,0x73,0x75,0x62,
+0x73,0x1b,0x61,0x74,0x68,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,0xa3,0x6a,
+1,0x6c,0x40,0x75,1,0x61,0x6e,0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,
+0x6e,0xa3,0x8e,0x15,0x65,0x6d,0x65,0x6e,0x74,0x61,1,0x6c,0x50,0x72,0x1e,0x79,
+0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0x61,0x72,0x65,0x61,1,0x61,
+0xa3,0x6d,0x62,0xa3,0x6e,3,0x61,0x5c,0x6d,0x78,0x70,0xa2,0x41,0x73,0x13,0x79,
+0x6d,0x62,0x6f,0x1f,0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,
+0x61,0x70,0x68,0x73,0xa5,5,0x14,0x72,0x72,0x6f,0x77,0x73,2,0x61,0xa3,0x67,
+0x62,0xa3,0x68,0x63,0xa3,0xfa,0x13,0x61,0x74,0x68,0x65,0x1f,0x6d,0x61,0x74,0x69,
+0x63,0x61,0x6c,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,0xa3,0x6a,0x19,0x75,
+0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x61,0x88,0x68,0xa2,0x48,
+0x69,0xa2,0x71,0x6d,0x12,0x61,0x6c,0x6c,1,0x66,0x46,0x6b,0x15,0x61,0x6e,0x61,
+0x65,0x78,0x74,0xa4,0x29,0x15,0x65,0x6e,0x73,0x69,0x6f,0x6e,0xa5,0x29,0x12,0x6f,
+0x72,0x6d,1,0x73,0xa3,0x54,0x76,0x16,0x61,0x72,0x69,0x61,0x6e,0x74,0x73,0xa3,
+0x54,1,0x6d,0x36,0x75,0x16,0x72,0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0xa1,0x15,
+0x61,0x72,0x69,0x74,0x61,0x6e,0xa3,0xac,1,0x61,0x52,0x6f,0x13,0x72,0x74,0x68,
+0x61,0x1f,0x6e,0x64,0x66,0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,
+0x6c,0x73,0xa3,0xf7,1,0x72,0x2e,0x76,0x12,0x69,0x61,0x6e,0xa3,0x79,0x12,0x61,
+0x64,0x61,0xa3,0xd9,1,0x64,0x50,0x6e,0x13,0x68,0x61,0x6c,0x61,0x50,0x1d,0x61,
+0x72,0x63,0x68,0x61,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0xf9,0x13,
+0x64,0x68,0x61,0x6d,0xa3,0xf8,5,0x72,0x35,0x72,0x44,0x73,0x64,0x75,1,0x61,
+0xa3,0x4e,0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x69,0x76,
+0x61,0x74,0x65,0x75,0x73,0x65,0xa2,0x4e,0x13,0x61,0x72,0x65,0x61,0xa3,0x4e,0x1b,
+0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,0xa3,0xf6,0x61,0x40,
+0x68,0x82,0x6c,0x19,0x61,0x79,0x69,0x6e,0x67,0x63,0x61,0x72,0x64,0x73,0xa3,0xcc,
+2,0x68,0x38,0x6c,0x4a,0x75,0x15,0x63,0x69,0x6e,0x68,0x61,0x75,0xa3,0xf5,0x17,
+0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xf3,0x15,0x6d,0x79,0x72,0x65,0x6e,
+0x65,0xa3,0xf4,1,0x61,0x8e,0x6f,1,0x65,0x74,0x6e,0x16,0x65,0x74,0x69,0x63,
+0x65,0x78,0x74,0xa2,0x72,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0x8d,0x15,0x6e,
+0x73,0x69,0x6f,0x6e,0x73,0xa2,0x72,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,
+0x6e,0x74,0xa3,0x8d,0x15,0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,0x97,1,0x67,0x3e,
+0x69,0x13,0x73,0x74,0x6f,0x73,0xa2,0xa6,0x13,0x64,0x69,0x73,0x63,0xa3,0xa6,0x12,
+0x73,0x70,0x61,0xa3,0x96,1,0x65,0x5c,0x75,1,0x6d,0x2a,0x6e,0x11,0x69,0x63,
+0x67,0x10,0x69,0xa2,0xc0,0x1d,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0x79,0x6d,
+0x62,0x6f,0x6c,0x73,0xa3,0xc0,0x13,0x6a,0x61,0x6e,0x67,0xa3,0xa3,0x6d,0xa2,0xf0,
+0x6e,0xa8,0x23,0x6f,6,0x70,0x63,0x70,0x56,0x72,0x8a,0x73,0xa2,0x4c,0x74,0x10,
+0x74,0x1f,0x6f,0x6d,0x61,0x6e,0x73,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,0x65,
+0x72,0x73,0xa5,0x28,0x18,0x74,0x69,0x63,0x61,0x6c,0x63,0x68,0x61,0x72,0x1f,0x61,
+0x63,0x74,0x65,0x72,0x72,0x65,0x63,0x6f,0x67,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x85,
+1,0x69,0x46,0x6e,0x1e,0x61,0x6d,0x65,0x6e,0x74,0x61,0x6c,0x64,0x69,0x6e,0x67,
+0x62,0x61,0x74,0x73,0xa3,0xf2,0x11,0x79,0x61,0x47,1,0x61,0x30,0x6d,0x13,0x61,
+0x6e,0x79,0x61,0xa3,0x7a,0x11,0x67,0x65,0xa5,0xf,0x63,0xa2,0x7b,0x67,0xa2,0x7b,
+0x6c,1,0x63,0xa2,0x6c,0x64,6,0x70,0x42,0x70,0x3a,0x73,0x5a,0x74,0x88,0x75,
+0x14,0x79,0x67,0x68,0x75,0x72,0xa5,0x3b,0x11,0x65,0x72,1,0x6d,0x2e,0x73,0x12,
+0x69,0x61,0x6e,0xa3,0x8c,0x11,0x69,0x63,0xa3,0xf1,0x10,0x6f,1,0x67,0x3a,0x75,
+0x18,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xbb,0x13,0x64,0x69,0x61,
+0x6e,0xa5,0x22,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0xbf,0x68,0x42,0x69,0x54,0x6e,
+0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xf0,0x17,0x75,
+0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa5,4,0x14,0x74,0x61,0x6c,0x69,0x63,0xa3,
+0x58,0x13,0x68,0x69,0x6b,0x69,0xa3,0x9d,0x10,0x72,0x85,0x12,0x68,0x61,0x6d,0x65,
+6,0x6f,0x86,0x6f,0x6c,0x72,0xa2,0x61,0x75,0xa2,0x62,0x79,0x14,0x61,0x6e,0x6d,
+0x61,0x72,0x58,0x12,0x65,0x78,0x74,2,0x61,0xa3,0xb6,0x62,0xa3,0xee,0x65,0x13,
+0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb6,0x62,0xa3,0xee,1,0x64,0x52,0x6e,0x15,
+0x67,0x6f,0x6c,0x69,0x61,0x6e,0x6a,0x12,0x73,0x75,0x70,0xa4,0xd,0x16,0x70,0x6c,
+0x65,0x6d,0x65,0x6e,0x74,0xa5,0xd,0x10,0x69,0xa2,0xec,0x13,0x66,0x69,0x65,0x72,
+1,0x6c,0x3c,0x74,0x19,0x6f,0x6e,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0xa3,
+0x8a,0x15,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,0x10,0x6f,0xa3,0xed,1,0x6c,0x44,
+0x73,0x11,0x69,0x63,0xa2,0x5c,0x18,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,
+0xa3,0x5c,0x13,0x74,0x61,0x6e,0x69,0xa5,3,0x61,0xa2,0x9b,0x65,0xa4,0x4c,0x69,
+1,0x61,0xa2,0x8f,0x73,0x10,0x63,5,0x70,0x18,0x70,0xa2,0x71,0x73,0x36,0x74,
+0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x15,0x79,0x6d,0x62,0x6f,0x6c,
+0x73,0x8f,0x61,0xa2,0x66,0x65,0x46,0x6d,0x19,0x61,0x74,0x68,0x73,0x79,0x6d,0x62,
+0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x17,0x6c,0x6c,0x61,0x6e,0x65,
+0x6f,0x75,0x73,2,0x6d,0x3a,0x73,0x6c,0x74,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,
+0x61,0x6c,0x81,0x11,0x61,0x74,0x1f,0x68,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,
+0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x15,0x79,
+0x6d,0x62,0x6f,0x6c,0x73,0x8e,0x12,0x61,0x6e,0x64,1,0x61,0x3c,0x70,0x19,0x69,
+0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa3,0xcd,0x14,0x72,0x72,0x6f,0x77,
+0x73,0xa3,0x73,0x10,0x6f,0xa3,0xd8,7,0x72,0x6f,0x72,0x44,0x73,0x4e,0x74,0x62,
+0x79,0x19,0x61,0x6e,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa5,0x20,0x13,0x63,
+0x68,0x65,0x6e,0xa5,0xc,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa5,
+0x14,0x10,0x68,2,0x61,0x3a,0x65,0x4a,0x6f,0x17,0x70,0x65,0x72,0x61,0x74,0x6f,
+0x72,0x73,0x7f,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0xa3,0x5d,0x16,0x6d,0x61,
+0x74,0x69,0x63,0x61,0x6c,1,0x61,0x36,0x6f,0x17,0x70,0x65,0x72,0x61,0x74,0x6f,
+0x72,0x73,0x7f,0x11,0x6c,0x70,0x1f,0x68,0x61,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,
+0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5d,0x68,0x50,0x6b,0x7e,0x6c,0x88,0x6e,
+1,0x64,0x34,0x69,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0xea,0x12,0x61,0x69,
+0x63,0xa3,0xc6,1,0x61,0x3e,0x6a,0x12,0x6f,0x6e,0x67,0xa2,0xaa,0x14,0x74,0x69,
+0x6c,0x65,0x73,0xa3,0xaa,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xe9,0x13,0x61,0x73,0x61,
+0x72,0xa5,0x1f,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x4f,3,0x64,0x6c,0x65,0x7e,
+0x6e,0xa2,0x47,0x72,0x14,0x6f,0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69,
+0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xd7,0x15,0x75,0x72,0x73,0x69,
+0x76,0x65,0xa3,0xd6,0x17,0x65,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa5,0x21,0x17,
+0x74,0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa2,0xb8,0x12,0x65,0x78,0x74,0xa2,0xd5,
+0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xd5,0x18,0x64,0x65,0x6b,0x69,0x6b,
+0x61,0x6b,0x75,0x69,0xa3,0xeb,6,0x6b,0x3b,0x6b,0x56,0x6f,0x5a,0x75,0x64,0x79,
+0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,0x68,0x75,0x65,0x68,
+0x6d,0x6f,0x6e,0x67,0xa5,0x27,0x10,0x6f,0xa3,0x92,0x14,0x62,0x6c,0x6f,0x63,0x6b,
+0x21,1,0x6d,0x2c,0x73,0x11,0x68,0x75,0xa5,0x15,0x17,0x62,0x65,0x72,0x66,0x6f,
+0x72,0x6d,0x73,0x7b,0x61,0x44,0x62,0x21,0x65,0x10,0x77,1,0x61,0xa5,0xe,0x74,
+0x14,0x61,0x69,0x6c,0x75,0x65,0xa3,0x8b,2,0x62,0x3c,0x67,0x4a,0x6e,0x17,0x64,
+0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa5,0x26,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,
+0xa3,0xef,0x16,0x6d,0x75,0x6e,0x64,0x61,0x72,0x69,0xa5,0x47,0x67,0xc4,0x5d,0x6a,
+0xc1,0xe4,0x6a,0xa2,0xdf,0x6b,0xa2,0xf8,0x6c,4,0x61,0x54,0x65,0xa2,0x6b,0x69,
+0xa2,0x82,0x6f,0xa2,0xc1,0x79,1,0x63,0x2e,0x64,0x12,0x69,0x61,0x6e,0xa3,0xa9,
+0x12,0x69,0x61,0x6e,0xa3,0xa7,1,0x6f,0x55,0x74,0x11,0x69,0x6e,1,0x31,0x96,
+0x65,0x11,0x78,0x74,6,0x64,0x21,0x64,0xa3,0x95,0x65,0x2c,0x66,0xa5,0x39,0x67,
+0xa5,0x3a,0xa2,0xe7,0x13,0x6e,0x64,0x65,0x64,6,0x64,0xc,0x64,0xa3,0x95,0x65,
+0xa3,0xe7,0x66,0xa5,0x39,0x67,0xa5,0x3a,0x61,0x2a,0x62,0x29,0x63,0xa3,0x94,0x26,
+0x18,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x6d,0x24,0x12,0x73,0x75,0x70,
+0x24,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x25,1,0x70,0x42,0x74,0x1d,0x74,
+0x65,0x72,0x6c,0x69,0x6b,0x65,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x79,0x12,0x63,
+0x68,0x61,0xa3,0x9c,2,0x6d,0x4e,0x6e,0x54,0x73,0x10,0x75,0xa2,0xb0,0x12,0x73,
+0x75,0x70,0xa4,0x31,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x31,0x11,0x62,
+0x75,0xa3,0x6f,0x12,0x65,0x61,0x72,1,0x61,0xa3,0xe8,0x62,1,0x69,0x38,0x73,
+0x17,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x75,0x17,0x64,0x65,0x6f,0x67,
+0x72,0x61,0x6d,0x73,0xa3,0x76,0x1a,0x77,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,
+0x65,0x73,0xa3,0x4d,0x10,0x61,1,0x6d,0x32,0x76,0x14,0x61,0x6e,0x65,0x73,0x65,
+0xa3,0xb5,0x10,0x6f,0x5c,0x12,0x65,0x78,0x74,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,
+1,0x61,0xa2,0x43,0x68,4,0x61,0x40,0x69,0x50,0x6d,0x6e,0x6f,0x86,0x75,0x15,
+0x64,0x61,0x77,0x61,0x64,0x69,0xa3,0xe6,0x16,0x72,0x6f,0x73,0x68,0x74,0x68,0x69,
+0xa3,0x89,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,
+0x74,0xa5,0x30,0x11,0x65,0x72,0x68,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,
+0x71,0x12,0x6a,0x6b,0x69,0xa3,0xe5,5,0x74,0x35,0x74,0x34,0x77,0x7a,0x79,0x13,
+0x61,0x68,0x6c,0x69,0xa3,0xa2,0x14,0x61,0x6b,0x61,0x6e,0x61,0x9e,1,0x65,0x4c,
+0x70,0x10,0x68,0x1f,0x6f,0x6e,0x65,0x74,0x69,0x63,0x65,0x78,0x74,0x65,0x6e,0x73,
+0x69,0x6f,0x6e,0x73,0xa3,0x6b,0x11,0x78,0x74,0xa3,0x6b,0x10,0x69,0xa5,0x46,0x69,
+0xa2,0x4e,0x6b,0xa2,0x51,0x6e,3,0x61,0x34,0x62,0x84,0x67,0x8a,0x6e,0x12,0x61,
+0x64,0x61,0x4d,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0xcb,0x16,0x70,0x6c,0x65,
+0x6d,0x65,0x6e,0x74,0xa3,0xcb,0x11,0x78,0x74,2,0x61,0xa5,0x13,0x62,0xa5,0x38,
+0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa5,0x13,0x62,0xa5,0x38,0x11,0x75,0x6e,
+0xa3,0x42,0x11,0x78,0x69,0x96,0x17,0x72,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x97,
+0x12,0x74,0x68,0x69,0xa3,0xc1,0x1c,0x74,0x6f,0x76,0x69,0x6b,0x6e,0x75,0x6d,0x65,
+0x72,0x61,0x6c,0x73,0xa5,0x45,0x67,0xa2,0xb5,0x68,0xa4,0x84,0x69,3,0x64,0x4c,
+0x6d,0xa2,0x55,0x6e,0xa2,0x62,0x70,0x13,0x61,0x65,0x78,0x74,0x2a,0x16,0x65,0x6e,
+0x73,0x69,0x6f,0x6e,0x73,0x2b,1,0x63,0x99,0x65,0x17,0x6f,0x67,0x72,0x61,0x70,
+0x68,0x69,0x63,1,0x64,0x56,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa4,0xb,
+0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa5,
+0xb,0x13,0x65,0x73,0x63,0x72,0x1f,0x69,0x70,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,
+0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x99,0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,
+0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0xba,1,0x64,0x62,0x73,0x1b,0x63,0x72,0x69,
+0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,
+0x69,0x61,0x6e,0xa3,0xbd,0x13,0x6c,0x61,0x76,0x69,0xa3,0xbe,0x11,0x69,0x63,1,
+0x6e,0x3e,0x73,0x1a,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa5,
+0x1e,0x19,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0xa3,0xb2,4,0x65,
+0x74,0x6c,0xa2,0x82,0x6f,0xa2,0x9a,0x72,0xa2,0x9e,0x75,2,0x6a,0x34,0x6e,0x3e,
+0x72,0x14,0x6d,0x75,0x6b,0x68,0x69,0x43,0x14,0x61,0x72,0x61,0x74,0x69,0x45,0x18,
+0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x1c,1,0x6e,0xa2,0x46,0x6f,
+1,0x6d,0x6e,0x72,0x13,0x67,0x69,0x61,0x6e,0x5a,1,0x65,0x40,0x73,0x11,0x75,
+0x70,0xa2,0x87,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x87,0x11,0x78,0x74,
+0xa4,0x1b,0x14,0x65,0x6e,0x64,0x65,0x64,0xa5,0x1b,0x1a,0x65,0x74,0x72,0x69,0x63,
+0x73,0x68,0x61,0x70,0x65,0x73,0x8c,0x12,0x65,0x78,0x74,0xa2,0xe3,0x14,0x65,0x6e,
+0x64,0x65,0x64,0xa3,0xe3,0x1e,0x65,0x72,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,
+0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x61,0x67,0x6f,0x6c,0x69,0x74,0x69,0x63,0xa2,
+0x88,0x12,0x73,0x75,0x70,0xa4,0xa,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,
+0xa,0x13,0x74,0x68,0x69,0x63,0xa3,0x59,1,0x61,0x5c,0x65,0x11,0x65,0x6b,0x30,
+1,0x61,0x38,0x65,0x11,0x78,0x74,0x6e,0x14,0x65,0x6e,0x64,0x65,0x64,0x6f,0x17,
+0x6e,0x64,0x63,0x6f,0x70,0x74,0x69,0x63,0x31,0x13,0x6e,0x74,0x68,0x61,0xa3,0xe4,
+2,0x61,0xa2,0x48,0x65,0xa2,0xdf,0x69,1,0x67,0x30,0x72,0x14,0x61,0x67,0x61,
+0x6e,0x61,0x9d,0x10,0x68,1,0x70,0x3a,0x73,0x18,0x75,0x72,0x72,0x6f,0x67,0x61,
+0x74,0x65,0x73,0xa3,0x4b,1,0x72,0x3c,0x75,0x19,0x73,0x75,0x72,0x72,0x6f,0x67,
+0x61,0x74,0x65,0x73,0xa3,0x4c,0x11,0x69,0x76,0x1f,0x61,0x74,0x65,0x75,0x73,0x65,
+0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,2,0x6c,0x32,0x6e,
+0x9a,0x74,0x12,0x72,0x61,0x6e,0xa5,2,0x10,0x66,2,0x61,0x58,0x6d,0x70,0x77,
+0x14,0x69,0x64,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x75,0x6c,0x6c,0x77,0x69,0x64,
+0x74,0x68,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x1a,0x6e,0x64,0x66,0x75,0x6c,0x6c,
+0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x13,0x61,0x72,0x6b,0x73,0xa3,0x52,2,0x67,
+0x34,0x69,0xa2,0x45,0x75,0x12,0x6e,0x6f,0x6f,0xa3,0x63,0x11,0x75,0x6c,0xa2,0x4a,
+2,0x63,0x3c,0x6a,0x5e,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,
+0x4a,0x1f,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x6a,0x61,
+0x6d,0x6f,0xa3,0x41,0x12,0x61,0x6d,0x6f,0x5c,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,
+0x65,0x64,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,0x19,0x66,0x69,0x72,0x6f,0x68,0x69,
+0x6e,0x67,0x79,0x61,0xa5,0x1d,0x13,0x62,0x72,0x65,0x77,0x37,0x61,0xa4,0xc,0x62,
+0xa6,0x59,0x63,0xa8,0x2e,0x64,0xac,0xe9,0x65,5,0x6d,0xa9,0x6d,0x94,0x6e,0xa2,
+0x41,0x74,0x15,0x68,0x69,0x6f,0x70,0x69,0x63,0x5e,1,0x65,0x40,0x73,0x11,0x75,
+0x70,0xa2,0x86,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x86,0x11,0x78,0x74,
+0xa2,0x85,2,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x65,0x13,0x6e,0x64,0x65,0x64,0xa2,
+0x85,1,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x16,0x6f,0x74,0x69,0x63,0x6f,0x6e,0x73,
+0xa3,0xce,0x15,0x63,0x6c,0x6f,0x73,0x65,0x64,2,0x61,0x5a,0x63,0x9e,0x69,0x1c,
+0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x75,0x70,0xa2,0xc4,0x16,
+0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc4,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,
+0x6d,0x86,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0xc3,0x13,0x72,0x69,0x63,0x73,
+0x86,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc3,0x11,0x6a,0x6b,
+0xa2,0x44,0x1f,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x61,0x6e,0x64,0x6d,0x6f,0x6e,
+0x74,0x68,0x73,0xa3,0x44,0x61,0x4a,0x67,0x76,0x6c,1,0x62,0x30,0x79,0x13,0x6d,
+0x61,0x69,0x63,0xa5,0x25,0x13,0x61,0x73,0x61,0x6e,0xa3,0xe2,0x13,0x72,0x6c,0x79,
+0x64,0x1f,0x79,0x6e,0x61,0x73,0x74,0x69,0x63,0x63,0x75,0x6e,0x65,0x69,0x66,0x6f,
+0x72,0x6d,0xa5,1,0x1f,0x79,0x70,0x74,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,
+0x67,0x6c,0x79,0x70,0x68,1,0x66,0x26,0x73,0xa3,0xc2,0x1c,0x6f,0x72,0x6d,0x61,
+0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa5,0x24,7,0x6e,0xc0,0xf2,0x6e,
+0x3e,0x72,0xa2,0x5d,0x73,0xa2,0xe5,0x76,0x14,0x65,0x73,0x74,0x61,0x6e,0xa3,0xbc,
+1,0x61,0x92,0x63,0x13,0x69,0x65,0x6e,0x74,1,0x67,0x34,0x73,0x15,0x79,0x6d,
+0x62,0x6f,0x6c,0x73,0xa3,0xa5,0x13,0x72,0x65,0x65,0x6b,1,0x6d,0x34,0x6e,0x15,
+0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x7f,0x13,0x75,0x73,0x69,0x63,0xa2,0x7e,0x19,
+0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x7e,0x10,0x74,0x1f,0x6f,
+0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,
+0xfe,2,0x61,0x32,0x6d,0xa2,0x7e,0x72,0x12,0x6f,0x77,0x73,0x7d,0x12,0x62,0x69,
+0x63,0x38,3,0x65,0x4a,0x6d,0x80,0x70,0xa2,0x50,0x73,0x11,0x75,0x70,0xa2,0x80,
+0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x80,0x11,0x78,0x74,3,0x61,0xa3,
+0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x65,0x13,0x6e,0x64,0x65,0x64,2,0x61,0xa3,
+0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x12,0x61,0x74,0x68,0xa2,0xd3,0x18,0x65,0x6d,
+0x61,0x74,0x69,0x63,0x61,0x6c,0x61,0x1f,0x6c,0x70,0x68,0x61,0x62,0x65,0x74,0x69,
+0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd3,1,0x66,0x42,0x72,0x1e,0x65,
+0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,1,0x61,
+0xa3,0x51,0x62,0xa3,0x55,0x14,0x65,0x6e,0x69,0x61,0x6e,0x35,0x12,0x63,0x69,0x69,
+0x23,0x64,0x9e,0x65,0xa2,0x42,0x68,0xa2,0x4d,0x6c,1,0x63,0x62,0x70,0x17,0x68,
+0x61,0x62,0x65,0x74,0x69,0x63,0x70,1,0x66,0xa3,0x50,0x72,0x1e,0x65,0x73,0x65,
+0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x50,0x16,0x68,
+0x65,0x6d,0x69,0x63,0x61,0x6c,0xa2,0xd0,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,
+0xa3,0xd0,0x12,0x6c,0x61,0x6d,0xa5,7,0x1a,0x67,0x65,0x61,0x6e,0x6e,0x75,0x6d,
+0x62,0x65,0x72,0x73,0xa3,0x77,0x11,0x6f,0x6d,0xa3,0xfd,7,0x6f,0x71,0x6f,0x64,
+0x72,0xa2,0x41,0x75,0xa2,0x58,0x79,0x1b,0x7a,0x61,0x6e,0x74,0x69,0x6e,0x65,0x6d,
+0x75,0x73,0x69,0x63,0xa2,0x5b,0x18,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,
+0xa3,0x5b,1,0x70,0x34,0x78,0x16,0x64,0x72,0x61,0x77,0x69,0x6e,0x67,0x89,0x14,
+0x6f,0x6d,0x6f,0x66,0x6f,0xa0,0x12,0x65,0x78,0x74,0xa2,0x43,0x14,0x65,0x6e,0x64,
+0x65,0x64,0xa3,0x43,0x10,0x61,1,0x68,0x40,0x69,0x12,0x6c,0x6c,0x65,0x92,0x17,
+0x70,0x61,0x74,0x74,0x65,0x72,0x6e,0x73,0x93,0x11,0x6d,0x69,0xa3,0xc9,1,0x67,
+0x2c,0x68,0x11,0x69,0x64,0xa3,0x64,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x81,0x61,
+0x48,0x65,0xa2,0x4e,0x68,0xa2,0x52,0x6c,0x1a,0x6f,0x63,0x6b,0x65,0x6c,0x65,0x6d,
+0x65,0x6e,0x74,0x73,0x8b,3,0x6c,0x34,0x6d,0x40,0x73,0x66,0x74,0x11,0x61,0x6b,
+0xa3,0xc7,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x93,0x11,0x75,0x6d,0xa2,0xb1,0x12,
+0x73,0x75,0x70,0xa2,0xca,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xca,1,
+0x69,0x30,0x73,0x13,0x61,0x76,0x61,0x68,0xa3,0xdd,0x15,0x63,0x6c,0x61,0x74,0x69,
+0x6e,0x23,0x14,0x6e,0x67,0x61,0x6c,0x69,0x41,0x16,0x61,0x69,0x6b,0x73,0x75,0x6b,
+0x69,0xa5,8,5,0x6f,0xc1,0x60,0x6f,0xa2,0x69,0x75,0xa4,0x24,0x79,1,0x70,
+0xa2,0x44,0x72,0x14,0x69,0x6c,0x6c,0x69,0x63,0x32,1,0x65,0x4c,0x73,0x11,0x75,
+0x70,0xa2,0x61,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa2,0x61,0x12,0x61,0x72,
+0x79,0xa3,0x61,0x11,0x78,0x74,4,0x61,0xa3,0x9e,0x62,0xa3,0xa0,0x63,0xa5,9,
+0x64,0xa5,0x43,0x65,0x13,0x6e,0x64,0x65,0x64,3,0x61,0xa3,0x9e,0x62,0xa3,0xa0,
+0x63,0xa5,9,0x64,0xa5,0x43,0x10,0x72,1,0x69,0x34,0x6f,0x15,0x6d,0x69,0x6e,
+0x6f,0x61,0x6e,0xa5,0x36,0x1a,0x6f,0x74,0x73,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,
+0x79,0xa3,0x7b,3,0x6d,0x5a,0x6e,0xa2,0x95,0x70,0xa2,0xa0,0x75,0x17,0x6e,0x74,
+0x69,0x6e,0x67,0x72,0x6f,0x64,0xa2,0x9a,0x17,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,
+0x73,0xa3,0x9a,2,0x62,0x3a,0x6d,0xa2,0x5f,0x70,0x15,0x61,0x74,0x6a,0x61,0x6d,
+0x6f,0xa3,0x41,0x14,0x69,0x6e,0x69,0x6e,0x67,2,0x64,0x46,0x68,0x9e,0x6d,0x1d,
+0x61,0x72,0x6b,0x73,0x66,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x1e,
+0x69,0x61,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x6d,0x61,0x72,0x6b,0x73,0x2e,
+2,0x65,0x40,0x66,0xa6,0x52,0x73,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,
+0x74,0xa3,0x83,0x16,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,0xa3,0xe0,0x17,0x61,0x6c,
+0x66,0x6d,0x61,0x72,0x6b,0x73,0xa3,0x52,0x11,0x6f,0x6e,0x1f,0x69,0x6e,0x64,0x69,
+0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0xa3,0xb2,0x1b,0x74,
+0x72,0x6f,0x6c,0x70,0x69,0x63,0x74,0x75,0x72,0x65,0x73,0x83,0x12,0x74,0x69,0x63,
+0xa2,0x84,0x1b,0x65,0x70,0x61,0x63,0x74,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,
+0xdf,1,0x6e,0x3e,0x72,0x1b,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0x75,0x15,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa2,0x98,0x16,0x6e,0x75,0x6d,
+0x62,0x65,0x72,0x73,0xa2,0x99,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,
+0x61,0x74,0x69,0x6f,0x6e,0xa3,0x99,0x61,0xa2,0xea,0x68,0xa4,0x14,0x6a,0x10,0x6b,
+0xa2,0x47,4,0x63,0x92,0x65,0xa2,0x83,0x72,0xa2,0xa1,0x73,0xa2,0xb3,0x75,0x1f,
+0x6e,0x69,0x66,0x69,0x65,0x64,0x69,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,
+0xa2,0x47,0x18,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,8,0x65,0x71,0x65,
+0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x69,0xa5,0x48,0x14,0x6f,
+0x6d,0x70,0x61,0x74,0xa2,0x45,1,0x66,0x96,0x69,1,0x62,0x44,0x64,0x17,0x65,
+0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x12,0x73,0x75,0x70,0xa3,0x5f,0x14,
+0x69,0x6c,0x69,0x74,0x79,0xa2,0x45,1,0x66,0x54,0x69,0x18,0x64,0x65,0x6f,0x67,
+0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,
+0x6e,0x74,0xa3,0x5f,0x13,0x6f,0x72,0x6d,0x73,0xa3,0x53,0x11,0x78,0x74,8,0x65,
+0xf,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x69,0xa5,0x48,
+0x61,0xa3,0x46,0x62,0xa3,0x5e,0x63,0xa3,0xc5,0x64,0xa3,0xd1,0x19,0x61,0x64,0x69,
+0x63,0x61,0x6c,0x73,0x73,0x75,0x70,0x94,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
+0x95,1,0x74,0x50,0x79,0x14,0x6d,0x62,0x6f,0x6c,0x73,0x9a,0x1d,0x61,0x6e,0x64,
+0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x9b,0x14,0x72,0x6f,0x6b,
+0x65,0x73,0xa3,0x82,2,0x6e,0x48,0x72,0x64,0x75,0x1d,0x63,0x61,0x73,0x69,0x61,
+0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,0xde,0x1d,0x61,0x64,0x69,0x61,
+0x6e,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x63,0x12,0x69,0x61,0x6e,0xa3,
+0xa8,2,0x61,0x3a,0x65,0x4c,0x6f,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa5,
+0x2d,1,0x6b,0x26,0x6d,0xa3,0xa4,0x11,0x6d,0x61,0xa3,0xd4,1,0x72,0x38,0x73,
+0x17,0x73,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa5,0x19,0x13,0x6f,0x6b,0x65,0x65,
+0x60,0x12,0x73,0x75,0x70,0xa2,0xff,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
+0xff,3,0x65,0x3e,0x69,0x8e,0x6f,0xa2,0x71,0x75,0x15,0x70,0x6c,0x6f,0x79,0x61,
+0x6e,0xa3,0xe1,1,0x73,0x60,0x76,0x16,0x61,0x6e,0x61,0x67,0x61,0x72,0x69,0x3e,
+0x12,0x65,0x78,0x74,0xa2,0xb3,1,0x61,0xa5,0x44,0x65,0x13,0x6e,0x64,0x65,0x64,
+0xa2,0xb3,0x10,0x61,0xa5,0x44,0x13,0x65,0x72,0x65,0x74,0xa3,0x5a,2,0x61,0x3a,
+0x6e,0x82,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa5,0x2f,0x18,0x63,0x72,
+0x69,0x74,0x69,0x63,0x61,0x6c,0x73,0x2e,2,0x65,0x30,0x66,0x36,0x73,0x11,0x75,
+0x70,0xa3,0x83,0x11,0x78,0x74,0xa3,0xe0,0x18,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0x77,0x14,0x67,0x62,0x61,0x74,0x73,0x91,1,0x67,0x3e,0x6d,0x12,0x69,
+0x6e,0x6f,0xa2,0xab,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xab,0x11,0x72,0x61,0xa5,
+0x1a,8,0x6d,0x5f,0x6d,0x3a,0x6e,0x48,0x73,0x7a,0x76,0xa2,0x4b,0x77,0x12,0x69,
+0x64,0x65,0x43,0x11,0x65,0x64,0x32,0x12,0x69,0x61,0x6c,0x33,2,0x61,0x40,0x62,
+0x37,0x6f,1,0x62,0x28,0x6e,0x10,0x65,0x21,0x13,0x72,0x65,0x61,0x6b,0x37,0x10,
+0x72,0x34,0x12,0x72,0x6f,0x77,0x35,2,0x6d,0x38,0x71,0x46,0x75,1,0x62,0x3d,
+0x70,0x3e,0x11,0x65,0x72,0x3f,1,0x61,0x24,0x6c,0x39,0x11,0x6c,0x6c,0x39,1,
+0x72,0x3b,0x75,0x12,0x61,0x72,0x65,0x3b,0x12,0x65,0x72,0x74,0x40,0x13,0x69,0x63,
+0x61,0x6c,0x41,0x63,0x58,0x65,0x92,0x66,0x96,0x69,1,0x6e,0x36,0x73,0x10,0x6f,
+0x30,0x14,0x6c,0x61,0x74,0x65,0x64,0x31,0x11,0x69,0x74,0x2e,0x12,0x69,0x61,0x6c,
+0x2f,2,0x61,0x36,0x69,0x48,0x6f,0x10,0x6d,0x24,0x12,0x70,0x61,0x74,0x25,0x10,
+0x6e,0x22,0x15,0x6f,0x6e,0x69,0x63,0x61,0x6c,0x23,0x13,0x72,0x63,0x6c,0x65,0x27,
+0x11,0x6e,0x63,0x27,2,0x69,0x3a,0x6f,0x44,0x72,0x10,0x61,0x2c,0x14,0x63,0x74,
+0x69,0x6f,0x6e,0x2d,0x10,0x6e,0x28,0x11,0x61,0x6c,0x29,0x11,0x6e,0x74,0x2b,4,
+0x61,0x3a,0x66,0x4c,0x68,0x5e,0x6e,0x70,0x77,0x2a,0x12,0x69,0x64,0x65,0x2b,0x22,
+0x17,0x6d,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x26,0x17,0x75,0x6c,0x6c,0x77,
+0x69,0x64,0x74,0x68,0x27,0x24,0x17,0x61,0x6c,0x66,0x77,0x69,0x64,0x74,0x68,0x25,
+0x20,1,0x61,0x30,0x65,0x14,0x75,0x74,0x72,0x61,0x6c,0x21,0x28,0x13,0x72,0x72,
+0x6f,0x77,0x29,0xd,0x6e,0xc0,0xfb,0x73,0x6d,0x73,0x3a,0x74,0x98,0x75,0xa2,0x49,
+0x7a,2,0x6c,0x3b,0x70,0x3d,0x73,0x39,5,0x6f,0x28,0x6f,0x57,0x70,0x34,0x75,
+0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x45,0x11,0x61,0x63,1,0x65,0x32,0x69,
+0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x31,0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,
+0x6f,0x72,0x39,0x63,0x53,0x6b,0x55,0x6d,0x51,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,
+0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x27,1,0x6e,0x40,0x70,0x1c,0x70,0x65,
+0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x23,0x17,0x61,0x73,0x73,
+0x69,0x67,0x6e,0x65,0x64,0x21,0x6e,0x8a,0x6f,0xa2,0x47,0x70,8,0x66,0x14,0x66,
+0x5b,0x69,0x59,0x6f,0x4f,0x72,0x24,0x73,0x49,0x17,0x69,0x76,0x61,0x74,0x65,0x75,
+0x73,0x65,0x43,0x61,0x2c,0x63,0x4d,0x64,0x47,0x65,0x4b,0x1f,0x72,0x61,0x67,0x72,
+0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x3d,2,0x64,0x33,
+0x6c,0x35,0x6f,0x36,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,
+0x6b,0x2d,1,0x70,0x7c,0x74,0x12,0x68,0x65,0x72,3,0x6c,0x38,0x6e,0x42,0x70,
+0x4c,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x57,0x14,0x65,0x74,0x74,0x65,0x72,0x2b,
+0x14,0x75,0x6d,0x62,0x65,0x72,0x37,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
+0x6f,0x6e,0x4f,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,
+0x6e,0x49,0x66,0x9e,0x66,0x88,0x69,0xa2,0x4b,0x6c,0xa2,0x5c,0x6d,4,0x61,0x60,
+0x63,0x31,0x65,0x2f,0x6e,0x2d,0x6f,0x15,0x64,0x69,0x66,0x69,0x65,0x72,1,0x6c,
+0x30,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x55,0x14,0x65,0x74,0x74,0x65,0x72,0x29,
+0x17,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x51,1,0x69,0x2e,0x6f,0x13,0x72,
+0x6d,0x61,0x74,0x41,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
+0x69,0x6f,0x6e,0x5b,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,
+0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,6,0x6d,0x18,0x6d,0x29,0x6f,0x28,0x74,
+0x27,0x75,0x23,0x2a,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,
+0x65,0x72,0x25,0x65,0x28,0x69,0x3c,0x6c,0x25,0x19,0x74,0x74,0x65,0x72,0x6e,0x75,
+0x6d,0x62,0x65,0x72,0x35,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,
+0x72,0x3b,0x63,0x44,0x64,0xa2,0x60,0x65,0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,
+0x67,0x6d,0x61,0x72,0x6b,0x2f,6,0x6e,0x39,0x6e,0x46,0x6f,0x4e,0x73,0x45,0x75,
+0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x53,0x20,0x12,
+0x74,0x72,0x6c,0x3f,0x42,0x10,0x6e,1,0x6e,0x2c,0x74,0x12,0x72,0x6f,0x6c,0x3f,
+0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,
+0x6e,0x4d,0x63,0x3f,0x66,0x41,0x6c,0x1d,0x6f,0x73,0x65,0x70,0x75,0x6e,0x63,0x74,
+0x75,0x61,0x74,0x69,0x6f,0x6e,0x4b,2,0x61,0x30,0x65,0x4a,0x69,0x12,0x67,0x69,
+0x74,0x33,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,
+0x47,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,0x72,0x33,0,0x13,
+0x6e,0xc1,0xf,0x74,0x76,0x74,0x4c,0x76,0x9a,0x77,0xa2,0x48,0x79,0xa2,0x49,0x7a,
+1,0x61,0x2c,0x68,0x12,0x61,0x69,0x6e,0x8b,0x11,0x69,0x6e,0x85,2,0x61,0x36,
+0x65,0x3c,0x68,0x14,0x69,0x6e,0x79,0x65,0x68,0xa3,0x66,1,0x68,0x71,0x77,0x73,
+1,0x68,0x28,0x74,0x10,0x68,0x77,0x16,0x6d,0x61,0x72,0x62,0x75,0x74,0x61,0x74,
+0x13,0x67,0x6f,0x61,0x6c,0x3d,0x1a,0x65,0x72,0x74,0x69,0x63,0x61,0x6c,0x74,0x61,
+0x69,0x6c,0xa3,0x67,0x11,0x61,0x77,0x79,1,0x65,0x32,0x75,0x11,0x64,0x68,0x80,
+0x11,0x68,0x65,0x83,0x10,0x68,0x7a,1,0x62,0x34,0x77,0x16,0x69,0x74,0x68,0x74,
+0x61,0x69,0x6c,0x7f,0x14,0x61,0x72,0x72,0x65,0x65,0x7d,0x6e,0xa2,0x4c,0x70,0xa2,
+0x69,0x71,0xa2,0x69,0x72,0xa2,0x6f,0x73,5,0x74,0x22,0x74,0x38,0x77,0x4c,0x79,
+0x16,0x72,0x69,0x61,0x63,0x77,0x61,0x77,0x6f,0x18,0x72,0x61,0x69,0x67,0x68,0x74,
+0x77,0x61,0x77,0xa3,0x55,0x15,0x61,0x73,0x68,0x6b,0x61,0x66,0x6d,0x61,0x2e,0x65,
+0x38,0x68,0x11,0x69,0x6e,0x6b,0x10,0x64,0x62,0x11,0x68,0x65,0x65,1,0x65,0x2e,
+0x6d,0x13,0x6b,0x61,0x74,0x68,0x69,0x10,0x6e,0x67,2,0x6f,0x2c,0x75,0x50,0x79,
+0x10,0x61,0x91,1,0x6a,0x28,0x6f,0x10,0x6e,0x55,0x1a,0x6f,0x69,0x6e,0x69,0x6e,
+0x67,0x67,0x72,0x6f,0x75,0x70,0x21,0x10,0x6e,0x57,0x10,0x65,0x59,0x10,0x61,1,
+0x66,0x5b,0x70,0x10,0x68,0x5d,1,0x65,0x38,0x6f,0x18,0x68,0x69,0x6e,0x67,0x79,
+0x61,0x79,0x65,0x68,0x93,1,0x68,0x5f,0x76,0x16,0x65,0x72,0x73,0x65,0x64,0x70,
+0x65,0x61,0x67,0xc1,0xc7,0x67,0xa4,0x52,0x68,0xa4,0x59,0x6b,0xa4,0x99,0x6c,0xa4,
+0xb2,0x6d,2,0x61,0x2e,0x65,0xa4,0x3e,0x69,0x10,0x6d,0x53,1,0x6c,0xa2,0xe7,
+0x6e,0x16,0x69,0x63,0x68,0x61,0x65,0x61,0x6e,0,0x12,0x6e,0x76,0x73,0x51,0x73,
+0x3e,0x74,0x5c,0x77,0xa0,0x79,0xa2,0x42,0x7a,0x13,0x61,0x79,0x69,0x6e,0xa3,0x54,
+0x10,0x61,1,0x64,0x2e,0x6d,0x12,0x65,0x6b,0x68,0xa3,0x4c,0x11,0x68,0x65,0xa3,
+0x4b,3,0x61,0x38,0x65,0x3c,0x68,0x4a,0x77,0x13,0x65,0x6e,0x74,0x79,0xa3,0x51,
+0x10,0x77,0xa3,0x4d,1,0x6e,0xa3,0x4e,0x74,0x10,0x68,0xa3,0x4f,0x14,0x61,0x6d,
+0x65,0x64,0x68,0xa3,0x50,0x11,0x61,0x77,0xa3,0x52,0x12,0x6f,0x64,0x68,0xa3,0x53,
+0x6e,0x3a,0x6f,0x40,0x70,0x46,0x71,0x4a,0x72,0x12,0x65,0x73,0x68,0xa3,0x4a,0x11,
+0x75,0x6e,0xa3,0x46,0x11,0x6e,0x65,0xa3,0x47,0x10,0x65,0xa3,0x48,0x12,0x6f,0x70,
+0x68,0xa3,0x49,0x67,0x33,0x67,0x38,0x68,0x40,0x6b,0x5e,0x6c,0x66,0x6d,0x11,0x65,
+0x6d,0xa3,0x45,0x13,0x69,0x6d,0x65,0x6c,0xa1,1,0x65,0x32,0x75,0x14,0x6e,0x64,
+0x72,0x65,0x64,0xa3,0x42,0x11,0x74,0x68,0xa3,0x41,0x12,0x61,0x70,0x68,0xa3,0x43,
+0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x44,0x61,0x34,0x62,0x4a,0x64,0x50,0x66,0x12,
+0x69,0x76,0x65,0x9f,1,0x6c,0x2a,0x79,0x11,0x69,0x6e,0x97,0x12,0x65,0x70,0x68,
+0x95,0x12,0x65,0x74,0x68,0x99,1,0x61,0x30,0x68,0x14,0x61,0x6d,0x65,0x64,0x68,
+0x9d,0x13,0x6c,0x65,0x74,0x68,0x9b,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,6,0x6e,
+0x2c,0x6e,0x34,0x72,0x5e,0x73,0x62,0x74,0x11,0x74,0x61,0xa3,0x63,2,0x67,0x2e,
+0x6e,0x32,0x79,0x10,0x61,0xa3,0x60,0x10,0x61,0xa3,0x5d,1,0x61,0xa3,0x5e,0x6e,
+0x10,0x61,0xa3,0x5f,0x10,0x61,0xa3,0x61,0x11,0x73,0x61,0xa3,0x62,0x62,0x3c,0x6a,
+0x42,0x6c,0x10,0x6c,1,0x61,0xa3,0x5b,0x6c,0x10,0x61,0xa3,0x5c,0x11,0x68,0x61,
+0xa3,0x59,0x10,0x61,0xa3,0x5a,0x11,0x65,0x6d,0x51,0x10,0x61,1,0x66,0x37,0x6d,
+0x11,0x61,0x6c,0x39,1,0x61,0x40,0x65,0x3e,1,0x68,0x28,0x74,0x10,0x68,0x45,
+0x40,0x13,0x67,0x6f,0x61,0x6c,0x43,2,0x68,0x3b,0x6d,0x5c,0x6e,0x1a,0x69,0x66,
+0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,1,0x6b,0x2a,0x70,0x10,0x61,0xa3,
+0x65,0x15,0x69,0x6e,0x6e,0x61,0x79,0x61,0xa3,0x64,0x1a,0x7a,0x61,0x6f,0x6e,0x68,
+0x65,0x68,0x67,0x6f,0x61,0x6c,0x3d,2,0x61,0x3a,0x68,0x44,0x6e,0x17,0x6f,0x74,
+0x74,0x65,0x64,0x68,0x65,0x68,0x4b,1,0x66,0x47,0x70,0x10,0x68,0x49,0x12,0x61,
+0x70,0x68,0x89,0x11,0x61,0x6d,0x4c,0x12,0x61,0x64,0x68,0x4f,0x61,0x6e,0x62,0xa2,
+0x54,0x64,0xa2,0x70,0x65,0x31,0x66,2,0x61,0x3e,0x65,0x4a,0x69,0x19,0x6e,0x61,
+0x6c,0x73,0x65,0x6d,0x6b,0x61,0x74,0x68,0x35,0x15,0x72,0x73,0x69,0x79,0x65,0x68,
+0x8f,0x86,0x10,0x68,0x33,2,0x66,0x3c,0x69,0x70,0x6c,1,0x61,0x28,0x65,0x10,
+0x66,0x27,0x11,0x70,0x68,0x25,0x14,0x72,0x69,0x63,0x61,0x6e,2,0x66,0x30,0x6e,
+0x36,0x71,0x11,0x61,0x66,0xa3,0x58,0x11,0x65,0x68,0xa3,0x56,0x12,0x6f,0x6f,0x6e,
+0xa3,0x57,0x10,0x6e,0x23,1,0x65,0x4a,0x75,0x10,0x72,0x1f,0x75,0x73,0x68,0x61,
+0x73,0x6b,0x69,0x79,0x65,0x68,0x62,0x61,0x72,0x72,0x65,0x65,0x8d,1,0x68,0x29,
+0x74,0x10,0x68,0x2b,0x11,0x61,0x6c,0x2c,0x16,0x61,0x74,0x68,0x72,0x69,0x73,0x68,
+0x2f,7,0x6e,0x2e,0x6e,0x2c,0x72,0x3e,0x74,0x56,0x75,0x21,0x18,0x6f,0x6e,0x6a,
+0x6f,0x69,0x6e,0x69,0x6e,0x67,0x21,0x28,0x1a,0x69,0x67,0x68,0x74,0x6a,0x6f,0x69,
+0x6e,0x69,0x6e,0x67,0x29,0x2a,0x19,0x72,0x61,0x6e,0x73,0x70,0x61,0x72,0x65,0x6e,
+0x74,0x2b,0x63,0x23,0x64,0x40,0x6a,0x56,0x6c,0x26,0x19,0x65,0x66,0x74,0x6a,0x6f,
+0x69,0x6e,0x69,0x6e,0x67,0x27,0x24,0x19,0x75,0x61,0x6c,0x6a,0x6f,0x69,0x6e,0x69,
+0x6e,0x67,0x25,0x19,0x6f,0x69,0x6e,0x63,0x61,0x75,0x73,0x69,0x6e,0x67,0x23,0,
+0x14,0x6e,0xc0,0xe5,0x73,0x5e,0x77,0x23,0x77,0x40,0x78,0x58,0x7a,0x10,0x77,0x58,
+1,0x6a,0x75,0x73,0x13,0x70,0x61,0x63,0x65,0x59,1,0x6a,0x5d,0x6f,0x17,0x72,
+0x64,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x5d,0x10,0x78,0x21,0x73,0x4a,0x75,0x7a,0x76,
+1,0x66,0x7d,0x69,0x7e,0x13,0x72,0x61,0x6d,0x61,0x7e,0x14,0x66,0x69,0x6e,0x61,
+0x6c,0x7d,4,0x61,0x51,0x67,0x53,0x70,0x28,0x75,0x30,0x79,0x57,0x54,0x12,0x61,
+0x63,0x65,0x55,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x53,0x15,0x6e,0x6b,0x6e,
+0x6f,0x77,0x6e,0x21,0x6e,0x60,0x6f,0xa2,0x41,0x70,0xa2,0x50,0x71,0xa2,0x6e,0x72,
+1,0x65,0x24,0x69,0x6f,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64,0x69,
+0x63,0x61,0x74,0x6f,0x72,0x6f,4,0x65,0x3e,0x6c,0x5b,0x6f,0x46,0x73,0x45,0x75,
+0x46,0x14,0x6d,0x65,0x72,0x69,0x63,0x47,0x15,0x78,0x74,0x6c,0x69,0x6e,0x65,0x5b,
+0x17,0x6e,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x45,0x10,0x70,0x48,0x1c,0x65,0x6e,
+0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,1,0x6f,0x3e,0x72,
+0x4c,0x1a,0x65,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x4d,0x4a,0x1b,
+0x73,0x74,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x4b,0x10,0x75,0x4e,
+0x16,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x68,0x7b,0x68,0x50,0x69,0x86,0x6a,
+0xa2,0x61,0x6c,0xa2,0x65,0x6d,0x1c,0x61,0x6e,0x64,0x61,0x74,0x6f,0x72,0x79,0x62,
+0x72,0x65,0x61,0x6b,0x2d,4,0x32,0x5f,0x33,0x61,0x65,0x34,0x6c,0x6d,0x79,0x3a,
+0x13,0x70,0x68,0x65,0x6e,0x3b,0x19,0x62,0x72,0x65,0x77,0x6c,0x65,0x74,0x74,0x65,
+0x72,0x6d,2,0x64,0x28,0x6e,0x3c,0x73,0x41,0x3c,0x18,0x65,0x6f,0x67,0x72,0x61,
+0x70,0x68,0x69,0x63,0x3d,0x3e,1,0x66,0x3e,0x73,0x11,0x65,0x70,1,0x61,0x22,
+0x65,0x14,0x72,0x61,0x62,0x6c,0x65,0x3f,0x18,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,
+0x69,0x63,0x41,2,0x6c,0x63,0x74,0x65,0x76,0x67,1,0x66,0x43,0x69,0x15,0x6e,
+0x65,0x66,0x65,0x65,0x64,0x43,0x61,0x42,0x62,0xa2,0x49,0x63,0xa2,0x76,0x65,0xa2,
+0xfc,0x67,0x10,0x6c,0x38,0x11,0x75,0x65,0x39,5,0x6d,0xf,0x6d,0x28,0x70,0x79,
+0x73,0x7b,0x16,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x69,0x23,0x6b,0x38,0x6c,
+0x24,0x17,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x25,0x76,0x13,0x73,0x61,0x72,
+0x61,0x76,1,0x70,0x2e,0x73,0x13,0x74,0x61,0x72,0x74,0x7b,0x15,0x72,0x65,0x62,
+0x61,0x73,0x65,0x79,4,0x32,0x27,0x61,0x29,0x62,0x2b,0x6b,0x2d,0x72,0x12,0x65,
+0x61,0x6b,2,0x61,0x36,0x62,0x3e,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x57,
+0x13,0x66,0x74,0x65,0x72,0x29,1,0x65,0x2a,0x6f,0x11,0x74,0x68,0x27,0x13,0x66,
+0x6f,0x72,0x65,0x2b,7,0x6d,0x51,0x6d,0x33,0x6f,0x28,0x70,0x69,0x72,0x35,1,
+0x6d,0x76,0x6e,1,0x64,0x3c,0x74,0x1a,0x69,0x6e,0x67,0x65,0x6e,0x74,0x62,0x72,
+0x65,0x61,0x6b,0x2f,0x15,0x69,0x74,0x69,0x6f,0x6e,0x61,0x1f,0x6c,0x6a,0x61,0x70,
+0x61,0x6e,0x65,0x73,0x65,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x6b,1,0x62,0x3a,
+0x70,0x19,0x6c,0x65,0x78,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x51,0x18,0x69,0x6e,
+0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x33,0x61,0x6a,0x62,0x2f,0x6a,0x6b,0x6c,0x30,
+0x13,0x6f,0x73,0x65,0x70,1,0x61,0x38,0x75,0x18,0x6e,0x63,0x74,0x75,0x61,0x74,
+0x69,0x6f,0x6e,0x31,0x18,0x72,0x65,0x6e,0x74,0x68,0x65,0x73,0x69,0x73,0x69,0x1b,
+0x72,0x72,0x69,0x61,0x67,0x65,0x72,0x65,0x74,0x75,0x72,0x6e,0x35,2,0x62,0x3e,
+0x6d,0x46,0x78,0x36,0x18,0x63,0x6c,0x61,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x37,0x70,
+0x12,0x61,0x73,0x65,0x71,0x72,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x73,1,
+0x64,0x42,0x6e,1,0x6f,0x32,0x75,0x26,0x14,0x6d,0x65,0x72,0x69,0x63,0x27,0x11,
+0x6e,0x65,0x21,1,0x65,0x2e,0x69,0x24,0x12,0x67,0x69,0x74,0x25,0x22,0x14,0x63,
+0x69,0x6d,0x61,0x6c,0x23,0,0x18,0x6e,0xc4,0x6f,0x74,0xc1,0x91,0x77,0x96,0x77,
+0xa2,0x4c,0x78,0xa2,0x70,0x79,0xa2,0x7a,0x7a,6,0x73,0x1e,0x73,0x34,0x78,0x42,
+0x79,0x48,0x7a,0x11,0x7a,0x7a,0xa3,0x67,0x10,0x79,1,0x65,0xa3,0xae,0x6d,0xa3,
+0x81,0x11,0x78,0x78,0xa3,0x66,0x11,0x79,0x79,0x21,0x61,0x30,0x69,0x58,0x6d,0x11,
+0x74,0x68,0xa3,0x80,0x10,0x6e,1,0x61,0x26,0x62,0xa3,0xb1,0x1a,0x62,0x61,0x7a,
+0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa3,0xb1,0x11,0x6e,0x68,0x23,2,0x61,
+0x30,0x63,0x5a,0x6f,0x11,0x6c,0x65,0xa3,0x9b,1,0x6e,0x3c,0x72,0x10,0x61,0xa2,
+0x92,0x15,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0x92,0x12,0x63,0x68,0x6f,0xa3,0xbc,
+0x11,0x68,0x6f,0xa3,0xbc,1,0x70,0x2c,0x73,0x11,0x75,0x78,0xa3,0x65,0x11,0x65,
+0x6f,0x9b,1,0x65,0x2c,0x69,0x72,0x11,0x69,0x69,0x73,0x11,0x7a,0x69,0xa2,0xc0,
+0x11,0x64,0x69,0xa3,0xc0,0x74,0x66,0x75,0xa2,0xde,0x76,1,0x61,0x48,0x69,1,
+0x73,0x38,0x74,0x10,0x68,0xa2,0xc5,0x13,0x6b,0x75,0x71,0x69,0xa3,0xc5,0x10,0x70,
+0xa3,0x64,0x10,0x69,0xa2,0x63,0x10,0x69,0xa3,0x63,7,0x68,0x3e,0x68,0x34,0x69,
+0x48,0x6e,0x86,0x6f,0x11,0x74,0x6f,0xa3,0xc4,0x10,0x61,1,0x61,0x24,0x69,0x6d,
+0x6a,0x11,0x6e,0x61,0x6b,2,0x62,0x3a,0x66,0x4a,0x72,0x10,0x68,0xa2,0x9e,0x12,
+0x75,0x74,0x61,0xa3,0x9e,1,0x65,0x24,0x74,0x6f,0x12,0x74,0x61,0x6e,0x6f,0x14,
+0x69,0x6e,0x61,0x67,0x68,0x99,0x11,0x73,0x61,0xa3,0xc3,0x61,0x36,0x65,0xa2,0x65,
+0x66,0xa2,0x71,0x67,0x11,0x6c,0x67,0x75,6,0x6c,0x28,0x6c,0x32,0x6d,0x38,0x6e,
+0x44,0x76,0x10,0x74,0xa3,0x7f,1,0x65,0x89,0x75,0x97,1,0x69,0x24,0x6c,0x67,
+0x10,0x6c,0x67,0x10,0x67,0xa2,0x9a,1,0x73,0x2a,0x75,0x10,0x74,0xa3,0x9a,0x10,
+0x61,0xa3,0xc3,0x67,0x36,0x69,0x52,0x6b,0x10,0x72,0xa2,0x99,0x10,0x69,0xa3,0x99,
+1,0x61,0x30,0x62,0x7a,0x13,0x61,0x6e,0x77,0x61,0x7b,0x12,0x6c,0x6f,0x67,0x75,
+2,0x6c,0x32,0x74,0x34,0x76,0x12,0x69,0x65,0x74,0xa3,0x7f,0x10,0x65,0x89,0x12,
+0x68,0x61,0x6d,0xa3,0x6a,1,0x6c,0x2a,0x6e,0x10,0x67,0xa3,0x62,0x10,0x75,0x68,
+0x11,0x67,0x75,0x69,0x11,0x6e,0x67,0x99,1,0x67,0x32,0x6e,0x14,0x6b,0x6e,0x6f,
+0x77,0x6e,0xa3,0x67,0x11,0x61,0x72,0x8a,0x13,0x69,0x74,0x69,0x63,0x8b,0x71,0xc1,
+0x13,0x71,0xa2,0xde,0x72,0xa2,0xe3,0x73,6,0x69,0x8a,0x69,0x72,0x6f,0xa2,0x4c,
+0x75,0xa2,0x75,0x79,1,0x6c,0x46,0x72,4,0x63,0x65,0x65,0xa3,0x5f,0x69,0x2c,
+0x6a,0xa3,0x60,0x6e,0xa3,0x61,0x11,0x61,0x63,0x65,0x10,0x6f,0x94,0x16,0x74,0x69,
+0x6e,0x61,0x67,0x72,0x69,0x95,2,0x64,0x3c,0x67,0x4c,0x6e,1,0x64,0xa3,0x91,
+0x68,0x62,0x12,0x61,0x6c,0x61,0x63,0x10,0x64,0xa2,0xa6,0x12,0x68,0x61,0x6d,0xa3,
+0xa6,0x17,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa3,0x70,2,0x67,0x3a,0x72,
+0x52,0x79,0x10,0x6f,0xa2,0xb0,0x12,0x6d,0x62,0x6f,0xa3,0xb0,1,0x64,0x26,0x6f,
+0xa3,0xb8,0xa2,0xb7,0x12,0x69,0x61,0x6e,0xa3,0xb7,0x10,0x61,0xa2,0x98,0x16,0x73,
+0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0x98,0x11,0x6e,0x64,0xa2,0x71,0x14,0x61,0x6e,
+0x65,0x73,0x65,0xa3,0x71,0x61,0x5c,0x67,0xa2,0x43,0x68,1,0x61,0x2a,0x72,0x10,
+0x64,0xa3,0x97,2,0x72,0x28,0x76,0x30,0x77,0x87,0x12,0x61,0x64,0x61,0xa3,0x97,
+0x12,0x69,0x61,0x6e,0x87,2,0x6d,0x40,0x72,0x58,0x75,0x10,0x72,0xa2,0x6f,0x15,
+0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0x6f,1,0x61,0x26,0x72,0xa3,0x7e,0x14,0x72,
+0x69,0x74,0x61,0x6e,0xa3,0x7e,1,0x61,0xa3,0x5e,0x62,0xa3,0x85,0x11,0x6e,0x77,
+0xa3,0x70,0x11,0x61,0x61,1,0x63,0x2f,0x69,0x23,3,0x65,0x3e,0x6a,0x48,0x6f,
+0x4e,0x75,0x10,0x6e,1,0x69,0x24,0x72,0x61,0x10,0x63,0x61,0x13,0x6a,0x61,0x6e,
+0x67,0xa3,0x6e,0x11,0x6e,0x67,0xa3,0x6e,1,0x68,0x2a,0x72,0x10,0x6f,0xa3,0x5d,
+0x10,0x67,0xa3,0xb6,0x6e,0xa2,0x83,0x6f,0xa4,1,0x70,5,0x6c,0x1e,0x6c,0x44,
+0x72,0x4a,0x73,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,
+0xa3,0x7b,0x11,0x72,0x64,0xa3,0x5c,0x11,0x74,0x69,0xa3,0x7d,0x61,0x7c,0x65,0xa2,
+0x54,0x68,3,0x61,0x3e,0x6c,0x4e,0x6e,0x5e,0x6f,0x16,0x65,0x6e,0x69,0x63,0x69,
+0x61,0x6e,0xa3,0x5b,0x10,0x67,0xa2,0x5a,0x12,0x73,0x70,0x61,0xa3,0x5a,2,0x69,
+0xa3,0x7a,0x70,0xa3,0x7b,0x76,0xa3,0x7c,0x10,0x78,0xa3,0x5b,2,0x68,0x3e,0x6c,
+0x50,0x75,0x10,0x63,0xa2,0xa5,0x14,0x69,0x6e,0x68,0x61,0x75,0xa3,0xa5,0x17,0x61,
+0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0x4b,0x10,0x6d,0xa2,0x90,0x14,0x79,0x72,
+0x65,0x6e,0x65,0xa3,0x90,0x11,0x72,0x6d,0xa3,0x59,6,0x6b,0x36,0x6b,0x56,0x73,
+0x6e,0x75,0x74,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,
+0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xba,1,0x67,0x2e,0x6f,0xa2,0x57,
+0x10,0x6f,0xa3,0x57,0x10,0x62,0xa3,0x84,0x11,0x68,0x75,0xa3,0x96,0x12,0x73,0x68,
+0x75,0xa3,0x96,0x61,0x42,0x62,0x9e,0x65,0x10,0x77,1,0x61,0xa3,0xaa,0x74,0x14,
+0x61,0x69,0x6c,0x75,0x65,0x97,3,0x62,0x32,0x67,0x40,0x6e,0x56,0x72,0x10,0x62,
+0xa3,0x8e,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0x8f,0x10,0x6d,0xa2,0xc7,0x15,
+0x75,0x6e,0x64,0x61,0x72,0x69,0xa3,0xc7,0x10,0x64,0xa2,0xbb,0x16,0x69,0x6e,0x61,
+0x67,0x61,0x72,0x69,0xa3,0xbb,0x11,0x61,0x74,0xa3,0x8f,4,0x67,0x3c,0x6c,0x4e,
+0x72,0xa2,0x8e,0x73,0xa2,0x9c,0x75,0x11,0x67,0x72,0xa3,0xc2,1,0x61,0x2a,0x68,
+0x11,0x61,0x6d,0x5b,0x10,0x6d,0x5b,1,0x63,0xa2,0x6a,0x64,6,0x70,0x41,0x70,
+0x3a,0x73,0x58,0x74,0x86,0x75,0x14,0x79,0x67,0x68,0x75,0x72,0xa3,0xc2,0x11,0x65,
+0x72,1,0x6d,0x2c,0x73,0x12,0x69,0x61,0x6e,0x9b,0x11,0x69,0x63,0xa3,0x59,0x10,
+0x6f,1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,
+0x85,0x13,0x64,0x69,0x61,0x6e,0xa3,0xb8,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0x58,
+0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,
+0x6e,0xa3,0x8e,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa3,0x4c,0x14,0x74,
+0x61,0x6c,0x69,0x63,0x5d,1,0x68,0x26,0x6b,0xa3,0x6d,0x12,0x69,0x6b,0x69,0xa3,
+0x6d,2,0x69,0x2c,0x6b,0x30,0x79,0x10,0x61,0x5f,0x11,0x79,0x61,0x5f,0x10,0x68,
+0xa3,0x58,2,0x61,0x36,0x67,0x3c,0x6d,0x10,0x61,0x84,0x12,0x6e,0x79,0x61,0x85,
+0x11,0x67,0x65,0xa3,0xab,0x10,0x65,0xa3,0xab,0x68,0xc3,0x15,0x6b,0xc2,0x2c,0x6b,
+0xa4,0x17,0x6c,0xa4,0xba,0x6d,8,0x6f,0x46,0x6f,0x48,0x72,0x74,0x74,0x80,0x75,
+0x86,0x79,1,0x61,0x28,0x6d,0x10,0x72,0x59,0x13,0x6e,0x6d,0x61,0x72,0x59,2,
+0x64,0x2e,0x6e,0x32,0x6f,0x10,0x6e,0xa3,0x72,0x10,0x69,0xa3,0xa3,0x10,0x67,0x56,
+0x14,0x6f,0x6c,0x69,0x61,0x6e,0x57,0x10,0x6f,0xa2,0x95,0x10,0x6f,0xa3,0x95,0x11,
+0x65,0x69,0xa3,0x73,0x11,0x6c,0x74,0xa2,0xa4,0x12,0x61,0x6e,0x69,0xa3,0xa4,0x61,
+0x36,0x65,0xa2,0x67,0x69,0xa2,0xbd,0x6c,0x11,0x79,0x6d,0x55,6,0x6e,0x38,0x6e,
+0x32,0x72,0x5c,0x73,0x6c,0x79,0x10,0x61,0xa3,0x55,1,0x64,0x38,0x69,0xa2,0x79,
+0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0x79,0xa2,0x54,0x12,0x61,0x69,0x63,0xa3,
+0x54,0x10,0x63,0xa2,0xa9,0x12,0x68,0x65,0x6e,0xa3,0xa9,0x18,0x61,0x72,0x61,0x6d,
+0x67,0x6f,0x6e,0x64,0x69,0xa3,0xaf,0x68,0x36,0x6b,0x4c,0x6c,0x15,0x61,0x79,0x61,
+0x6c,0x61,0x6d,0x55,1,0x61,0x26,0x6a,0xa3,0xa0,0x13,0x6a,0x61,0x6e,0x69,0xa3,
+0xa0,0x10,0x61,0xa2,0xb4,0x12,0x73,0x61,0x72,0xa3,0xb4,3,0x64,0x78,0x65,0x94,
+0x6e,0xa2,0x42,0x72,1,0x63,0xa3,0x8d,0x6f,0xa2,0x56,0x13,0x69,0x74,0x69,0x63,
+1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,
+0x56,0x15,0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0x8d,1,0x65,0x26,0x66,0xa3,0xb5,
+0x16,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa3,0xb5,0x17,0x74,0x65,0x69,0x6d,0x61,
+0x79,0x65,0x6b,0xa3,0x73,0x10,0x64,0xa2,0x8c,0x17,0x65,0x6b,0x69,0x6b,0x61,0x6b,
+0x75,0x69,0xa3,0x8c,0x11,0x61,0x6f,0xa3,0x5c,6,0x6e,0x1a,0x6e,0x34,0x6f,0x38,
+0x70,0x3e,0x74,0x11,0x68,0x69,0xa3,0x78,0x11,0x64,0x61,0x4b,0x11,0x72,0x65,0xa3,
+0x77,0x11,0x65,0x6c,0xa3,0x8a,0x61,0x32,0x68,0xa2,0x44,0x69,0x11,0x74,0x73,0xa3,
+0xbf,5,0x74,0x23,0x74,0x34,0x77,0x56,0x79,0x13,0x61,0x68,0x6c,0x69,0xa3,0x4f,
+0x14,0x61,0x6b,0x61,0x6e,0x61,0x4c,0x19,0x6f,0x72,0x68,0x69,0x72,0x61,0x67,0x61,
+0x6e,0x61,0x8d,0x10,0x69,0xa3,0xc6,0x69,0x38,0x6c,0x40,0x6e,1,0x61,0x4d,0x6e,
+0x12,0x61,0x64,0x61,0x4b,0x12,0x74,0x68,0x69,0xa3,0x78,0x10,0x69,0xa3,0x4f,4,
+0x61,0x40,0x69,0x52,0x6d,0x70,0x6f,0x7c,0x75,0x15,0x64,0x61,0x77,0x61,0x64,0x69,
+0xa3,0x91,0x10,0x72,0x92,0x15,0x6f,0x73,0x68,0x74,0x68,0x69,0x93,0x1d,0x74,0x61,
+0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xbf,1,0x65,
+0x24,0x72,0x4f,0x10,0x72,0x4f,0x10,0x6a,0xa2,0x9d,0x11,0x6b,0x69,0xa3,0x9d,4,
+0x61,0x5c,0x65,0x90,0x69,0xa0,0x6f,0xa2,0x5d,0x79,1,0x63,0x34,0x64,0x10,0x69,
+0xa2,0x6c,0x11,0x61,0x6e,0xa3,0x6c,0x10,0x69,0xa2,0x6b,0x11,0x61,0x6e,0xa3,0x6b,
+2,0x6e,0x42,0x6f,0x46,0x74,3,0x66,0xa3,0x50,0x67,0xa3,0x51,0x69,0x24,0x6e,
+0x53,0x10,0x6e,0x53,0x10,0x61,0xa3,0x6a,0x50,0x10,0x6f,0x51,0x11,0x70,0x63,0xa2,
+0x52,0x11,0x68,0x61,0xa3,0x52,2,0x6d,0x2e,0x6e,0x36,0x73,0x10,0x75,0xa3,0x83,
+0x10,0x62,0x80,0x10,0x75,0x81,2,0x61,0xa3,0x53,0x62,0x83,0x65,0x11,0x61,0x72,
+1,0x61,0xa3,0x53,0x62,0x83,0x11,0x6d,0x61,0xa3,0x8b,0x68,0x6e,0x69,0xa2,0x95,
+0x6a,2,0x61,0x30,0x70,0x52,0x75,0x11,0x72,0x63,0xa3,0x94,1,0x6d,0x38,0x76,
+0x10,0x61,0xa2,0x4e,0x13,0x6e,0x65,0x73,0x65,0xa3,0x4e,0x10,0x6f,0xa3,0xad,0x11,
+0x61,0x6e,0xa3,0x69,6,0x6c,0x1e,0x6c,0x34,0x6d,0x3a,0x72,0x48,0x75,0x11,0x6e,
+0x67,0xa3,0x4c,0x11,0x75,0x77,0xa3,0x9c,0x10,0x6e,1,0x67,0xa3,0x4b,0x70,0xa3,
+0xba,0x11,0x6b,0x74,0x8d,0x61,0x3c,0x65,0xa2,0x43,0x69,0x11,0x72,0x61,0x48,0x13,
+0x67,0x61,0x6e,0x61,0x49,1,0x6e,0x34,0x74,0x10,0x72,0xa2,0xa2,0x11,0x61,0x6e,
+0xa3,0xa2,0x42,6,0x6f,0xe,0x6f,0x77,0x73,0xa3,0x49,0x74,0xa3,0x4a,0x75,0x12,
+0x6e,0x6f,0x6f,0x77,0x62,0xa3,0xac,0x67,0x3e,0x69,0x42,0x19,0x66,0x69,0x72,0x6f,
+0x68,0x69,0x6e,0x67,0x79,0x61,0xa3,0xb6,0x44,0x11,0x75,0x6c,0x45,0x11,0x62,0x72,
+0x46,0x11,0x65,0x77,0x47,2,0x6d,0x2e,0x6e,0x4a,0x74,0x11,0x61,0x6c,0x5d,0x1c,
+0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0x74,2,
+0x64,0x66,0x68,0x6a,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,
+0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0x7d,0x13,0x6c,
+0x61,0x76,0x69,0xa3,0x7a,0x10,0x73,0xa3,0x4d,0x15,0x65,0x72,0x69,0x74,0x65,0x64,
+0x23,0x64,0xc1,0xd,0x64,0xa2,0x7a,0x65,0xa2,0xc1,0x67,4,0x65,0x82,0x6c,0x9a,
+0x6f,0xa2,0x46,0x72,0xa2,0x55,0x75,2,0x6a,0x3c,0x6e,0x4e,0x72,1,0x6d,0x24,
+0x75,0x41,0x13,0x75,0x6b,0x68,0x69,0x41,1,0x61,0x24,0x72,0x3f,0x13,0x72,0x61,
+0x74,0x69,0x3f,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xb3,0x10,
+0x6f,1,0x6b,0xa3,0x48,0x72,0x38,0x13,0x67,0x69,0x61,0x6e,0x39,0x11,0x61,0x67,
+0x90,0x15,0x6f,0x6c,0x69,0x74,0x69,0x63,0x91,1,0x6e,0x30,0x74,0x10,0x68,0x3a,
+0x11,0x69,0x63,0x3b,1,0x67,0xa3,0xb3,0x6d,0xa3,0xaf,1,0x61,0x32,0x65,1,
+0x65,0x24,0x6b,0x3d,0x10,0x6b,0x3d,0x10,0x6e,0xa2,0x89,0x12,0x74,0x68,0x61,0xa3,
+0x89,4,0x65,0x46,0x69,0x6c,0x6f,0x8c,0x73,0x9a,0x75,0x11,0x70,0x6c,0xa2,0x87,
+0x13,0x6f,0x79,0x61,0x6e,0xa3,0x87,1,0x73,0x38,0x76,0x10,0x61,0x34,0x15,0x6e,
+0x61,0x67,0x61,0x72,0x69,0x35,0x13,0x65,0x72,0x65,0x74,0x33,1,0x61,0x36,0x76,
+0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa3,0xbe,0x10,0x6b,0xa3,0xbe,0x11,0x67,
+0x72,0xa2,0xb2,0x10,0x61,0xa3,0xb2,0x11,0x72,0x74,0x33,2,0x67,0x3a,0x6c,0x72,
+0x74,0x11,0x68,0x69,0x36,0x13,0x6f,0x70,0x69,0x63,0x37,0x10,0x79,2,0x64,0xa3,
+0x45,0x68,0xa3,0x46,0x70,0xa2,0x47,0x1e,0x74,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,
+0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x47,1,0x62,0x36,0x79,0x10,0x6d,0xa2,
+0xb9,0x12,0x61,0x69,0x63,0xa3,0xb9,0x10,0x61,0xa2,0x88,0x12,0x73,0x61,0x6e,0xa3,
+0x88,0x61,0xa2,0xc9,0x62,0xa4,0x32,0x63,6,0x6f,0x52,0x6f,0x76,0x70,0x92,0x75,
+0xa2,0x41,0x79,1,0x70,0x3e,0x72,2,0x69,0x2a,0x6c,0x31,0x73,0xa3,0x44,0x13,
+0x6c,0x6c,0x69,0x63,0x31,0x10,0x72,1,0x69,0x34,0x6f,0x15,0x6d,0x69,0x6e,0x6f,
+0x61,0x6e,0xa3,0xc1,0x11,0x6f,0x74,0x7f,1,0x6d,0x30,0x70,0x10,0x74,0x2e,0x11,
+0x69,0x63,0x2f,0x12,0x6d,0x6f,0x6e,0x21,1,0x6d,0x28,0x72,0x10,0x74,0x7f,0x10,
+0x6e,0xa3,0xc1,0x16,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa3,0x65,0x61,0x32,0x68,
+0xa2,0x41,0x69,0x11,0x72,0x74,0xa3,0x43,3,0x6b,0x4c,0x6e,0x50,0x72,0x76,0x75,
+0x1d,0x63,0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,
+0x9f,0x10,0x6d,0xa3,0x76,1,0x61,0x24,0x73,0x71,0x1d,0x64,0x69,0x61,0x6e,0x61,
+0x62,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x71,0x10,0x69,0xa2,0x68,0x11,0x61,
+0x6e,0xa3,0x68,3,0x61,0x32,0x65,0x44,0x6f,0x52,0x72,0x10,0x73,0xa3,0xbd,1,
+0x6b,0x26,0x6d,0xa3,0x42,0x11,0x6d,0x61,0xa3,0x76,0x10,0x72,0x2c,0x13,0x6f,0x6b,
+0x65,0x65,0x2d,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa3,0xbd,6,0x68,0x4e,
+0x68,0x48,0x6e,0x4e,0x72,0x76,0x76,1,0x65,0x2a,0x73,0x10,0x74,0xa3,0x75,0x13,
+0x73,0x74,0x61,0x6e,0xa3,0x75,0x11,0x6f,0x6d,0xa3,0xa1,0x11,0x61,0x74,0x1f,0x6f,
+0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,
+0x9c,1,0x61,0x3e,0x6d,2,0x65,0x2a,0x69,0xa3,0x74,0x6e,0x27,0x13,0x6e,0x69,
+0x61,0x6e,0x27,1,0x62,0x26,0x6e,0xa3,0xc8,0x24,0x11,0x69,0x63,0x25,0x64,0x30,
0x66,0x44,0x67,0x11,0x68,0x62,0xa3,0x9f,0x10,0x6c,1,0x61,0x26,0x6d,0xa3,0xa7,
0x10,0x6d,0xa3,0xa7,0x11,0x61,0x6b,0xa3,0x93,6,0x6c,0x3c,0x6c,0x52,0x6f,0x56,
0x72,0x66,0x75,1,0x67,0x30,0x68,1,0x64,0x79,0x69,0x10,0x64,0x79,0x10,0x69,
@@ -1028,59 +1032,70 @@ const uint8_t PropNameData::bytesTries[15527]={
0x68,0x74,0x27,0x20,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x21,1,0x72,0x24,0x75,
0x25,0x22,0x18,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x65,0x64,1,0x72,0x32,0x75,
0x15,0x70,0x72,0x69,0x67,0x68,0x74,0x25,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x23,
-0xd,0x6e,0xc1,0x86,0x73,0xa8,0x73,0x4c,0x74,0xa2,0x76,0x75,0xa2,0x83,0x7a,0xd8,
-0x70,0,2,0x6c,0xd9,0x20,0,0x70,0xd9,0x40,0,0x73,0xc3,0,0xfe,0xf,
-0,0,0,7,0x6f,0x3c,0x6f,0xff,8,0,0,0,0x70,0x3a,0x75,0x6e,
-0x79,0x13,0x6d,0x62,0x6f,0x6c,0xff,0xf,0,0,0,0x11,0x61,0x63,1,0x65,
-0x34,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0,0x18,0x73,0x65,0x70,0x61,
-0x72,0x61,0x74,0x6f,0x72,0xc3,0,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0xe1,
-0,0,0x63,0xff,2,0,0,0,0x65,0x38,0x6b,0xff,4,0,0,0,
-0x6d,0xff,1,0,0,0,0x16,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x70,
-0,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,
-0x31,1,0x6e,0x40,0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,
-0x74,0x65,0x72,0x25,0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x23,0x6e,0xa2,
-0x69,0x6f,0xa2,0x89,0x70,0xfe,0x30,0xf8,0,0,9,0x69,0x33,0x69,0xff,0x10,
-0,0,0,0x6f,0xfd,0x80,0,0,0x72,0x54,0x73,0xf9,0,0,0x75,0x12,
-0x6e,0x63,0x74,0xfe,0x30,0xf8,0,0,0x15,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,
-0x30,0xf8,0,0,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0xdd,0,0,
-0x61,0x48,0x63,0xfd,0x40,0,0,0x64,0xe9,0,0,0x65,0xfd,0x20,0,0,
-0x66,0xff,0x20,0,0,0,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,
-0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x40,0,0xbe,0,3,0x64,0xa7,0,
-0x6c,0xab,0,0x6f,0x30,0x75,0x13,0x6d,0x62,0x65,0x72,0xbf,0,0xb2,0,0x1b,
-0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa1,1,0x70,0x92,
-0x74,0x12,0x68,0x65,0x72,0xe6,0x80,1,3,0x6c,0x40,0x6e,0x4a,0x70,0x56,0x73,
-0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,8,0,0,0,0x14,0x65,0x74,0x74,0x65,
-0x72,0x61,0x14,0x75,0x6d,0x62,0x65,0x72,0xb3,0,0x19,0x75,0x6e,0x63,0x74,0x75,
-0x61,0x74,0x69,0x6f,0x6e,0xfd,0x80,0,0,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,
-0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xf9,0,0,0x66,0xc0,0xc4,0x66,0xa2,0x47,
-0x69,0xa2,0x64,0x6c,0xa2,0x79,0x6d,0xa4,0xc0,4,0x61,0x6c,0x63,0xa5,0,0x65,
-0xa3,0x80,0x6e,0xa1,0x6f,0x15,0x64,0x69,0x66,0x69,0x65,0x72,1,0x6c,0x38,0x73,
-0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,4,0,0,0,0x14,0x65,0x74,0x74,0x65,
-0x72,0x41,1,0x72,0x3c,0x74,0x16,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,1,
-0,0,0,0x10,0x6b,0xa5,0xc0,1,0x69,0x32,0x6f,0x13,0x72,0x6d,0x61,0x74,
-0xdb,0,0,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
-0x6f,0x6e,0xff,0x20,0,0,0,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,
-0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x10,0,0,0,0x9c,
-7,0x6d,0x18,0x6d,0x41,0x6f,0x28,0x74,0x31,0x75,0x25,0x60,0x1c,0x77,0x65,0x72,
-0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x29,0x63,0x3d,0x65,0x28,0x69,
-0x42,0x6c,0x29,0x13,0x74,0x74,0x65,0x72,0x9c,0x15,0x6e,0x75,0x6d,0x62,0x65,0x72,
-0xab,0,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x20,
-0,0x63,0x46,0x64,0xa2,0x96,0x65,0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,
-0x6d,0x61,0x72,0x6b,0xa3,0x80,0xe6,0x80,1,7,0x6e,0x57,0x6e,0x52,0x6f,0x5e,
-0x73,0xe1,0,0,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,
-0x6f,0x6c,0xff,2,0,0,0,0x22,0x12,0x74,0x72,0x6c,0xd9,0x80,0,0xdc,
-0,0,1,0x6d,0x62,0x6e,1,0x6e,0x30,0x74,0x12,0x72,0x6f,0x6c,0xd9,0x80,
-0,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
-0x6f,0x6e,0xfd,0x40,0,0,0x19,0x62,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,
-0x6b,0xa5,0xc0,0x61,0x58,0x63,0xd9,0x80,0,0x66,0xdb,0,0,0x6c,0x1d,0x6f,
-0x73,0x65,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x20,0,
-0,0x18,0x73,0x65,0x64,0x6c,0x65,0x74,0x74,0x65,0x72,0x3d,2,0x61,0x32,0x65,
-0x50,0x69,0x12,0x67,0x69,0x74,0xa7,0,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,
-0x75,0x61,0x74,0x69,0x6f,0x6e,0xe9,0,0,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,
-0x75,0x6d,0x62,0x65,0x72,0xa7,0
+1,0x61,0x38,0x72,0x18,0x65,0x73,0x74,0x72,0x69,0x63,0x74,0x65,0x64,0x21,0x15,
+0x6c,0x6c,0x6f,0x77,0x65,0x64,0x23,0xd,0x6e,0xc1,0x86,0x73,0xa8,0x73,0x4c,0x74,
+0xa2,0x76,0x75,0xa2,0x83,0x7a,0xd8,0x70,0,2,0x6c,0xd9,0x20,0,0x70,0xd9,
+0x40,0,0x73,0xc3,0,0xfe,0xf,0,0,0,7,0x6f,0x3c,0x6f,0xff,8,
+0,0,0,0x70,0x3a,0x75,0x6e,0x79,0x13,0x6d,0x62,0x6f,0x6c,0xff,0xf,0,
+0,0,0x11,0x61,0x63,1,0x65,0x34,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,
+0xa5,0,0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xc3,0,0x16,0x72,
+0x72,0x6f,0x67,0x61,0x74,0x65,0xe1,0,0,0x63,0xff,2,0,0,0,0x65,
+0x38,0x6b,0xff,4,0,0,0,0x6d,0xff,1,0,0,0,0x16,0x70,0x61,
+0x72,0x61,0x74,0x6f,0x72,0xd9,0x70,0,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,
+0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x31,1,0x6e,0x40,0x70,0x1c,0x70,0x65,0x72,
+0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x17,0x61,0x73,0x73,0x69,
+0x67,0x6e,0x65,0x64,0x23,0x6e,0xa2,0x69,0x6f,0xa2,0x89,0x70,0xfe,0x30,0xf8,0,
+0,9,0x69,0x33,0x69,0xff,0x10,0,0,0,0x6f,0xfd,0x80,0,0,0x72,
+0x54,0x73,0xf9,0,0,0x75,0x12,0x6e,0x63,0x74,0xfe,0x30,0xf8,0,0,0x15,
+0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x30,0xf8,0,0,0x17,0x69,0x76,0x61,0x74,
+0x65,0x75,0x73,0x65,0xdd,0,0,0x61,0x48,0x63,0xfd,0x40,0,0,0x64,0xe9,
+0,0,0x65,0xfd,0x20,0,0,0x66,0xff,0x20,0,0,0,0x1f,0x72,0x61,
+0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x40,
+0,0xbe,0,3,0x64,0xa7,0,0x6c,0xab,0,0x6f,0x30,0x75,0x13,0x6d,0x62,
+0x65,0x72,0xbf,0,0xb2,0,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,
+0x61,0x72,0x6b,0xa1,1,0x70,0x92,0x74,0x12,0x68,0x65,0x72,0xe6,0x80,1,3,
+0x6c,0x40,0x6e,0x4a,0x70,0x56,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,8,0,
+0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x61,0x14,0x75,0x6d,0x62,0x65,0x72,0xb3,
+0,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x80,0,0,
+0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xf9,0,
+0,0x66,0xc0,0xc4,0x66,0xa2,0x47,0x69,0xa2,0x64,0x6c,0xa2,0x79,0x6d,0xa4,0xc0,
+4,0x61,0x6c,0x63,0xa5,0,0x65,0xa3,0x80,0x6e,0xa1,0x6f,0x15,0x64,0x69,0x66,
+0x69,0x65,0x72,1,0x6c,0x38,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,4,0,
+0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x41,1,0x72,0x3c,0x74,0x16,0x68,0x73,
+0x79,0x6d,0x62,0x6f,0x6c,0xff,1,0,0,0,0x10,0x6b,0xa5,0xc0,1,0x69,
+0x32,0x6f,0x13,0x72,0x6d,0x61,0x74,0xdb,0,0,0x1d,0x6e,0x61,0x6c,0x70,0x75,
+0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x20,0,0,0,0x10,0x6e,
+0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,
+0x6e,0xff,0x10,0,0,0,0x9c,7,0x6d,0x18,0x6d,0x41,0x6f,0x28,0x74,0x31,
+0x75,0x25,0x60,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,
+0x72,0x29,0x63,0x3d,0x65,0x28,0x69,0x42,0x6c,0x29,0x13,0x74,0x74,0x65,0x72,0x9c,
+0x15,0x6e,0x75,0x6d,0x62,0x65,0x72,0xab,0,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,
+0x72,0x61,0x74,0x6f,0x72,0xd9,0x20,0,0x63,0x46,0x64,0xa2,0x96,0x65,0x1b,0x6e,
+0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa3,0x80,0xe6,0x80,1,
+7,0x6e,0x57,0x6e,0x52,0x6f,0x5e,0x73,0xe1,0,0,0x75,0x1b,0x72,0x72,0x65,
+0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,2,0,0,0,0x22,0x12,
+0x74,0x72,0x6c,0xd9,0x80,0,0xdc,0,0,1,0x6d,0x62,0x6e,1,0x6e,0x30,
+0x74,0x12,0x72,0x6f,0x6c,0xd9,0x80,0,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,
+0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x40,0,0,0x19,0x62,0x69,
+0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0xc0,0x61,0x58,0x63,0xd9,0x80,0,
+0x66,0xdb,0,0,0x6c,0x1d,0x6f,0x73,0x65,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,
+0x74,0x69,0x6f,0x6e,0xfd,0x20,0,0,0x18,0x73,0x65,0x64,0x6c,0x65,0x74,0x74,
+0x65,0x72,0x3d,2,0x61,0x32,0x65,0x50,0x69,0x12,0x67,0x69,0x74,0xa7,0,0x1c,
+0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xe9,0,0,
+0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,0x72,0xa7,0,8,0x6e,
+0x50,0x6e,0x46,0x6f,0x7a,0x72,0x88,0x74,0x9c,0x75,0x19,0x6e,0x63,0x6f,0x6d,0x6d,
+0x6f,0x6e,0x75,0x73,0x65,0x31,0x11,0x6f,0x74,2,0x63,0x2e,0x6e,0x3e,0x78,0x11,
+0x69,0x64,0x29,0x17,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x21,0x12,0x66,0x6b,
+0x63,0x27,0x16,0x62,0x73,0x6f,0x6c,0x65,0x74,0x65,0x2d,0x19,0x65,0x63,0x6f,0x6d,
+0x6d,0x65,0x6e,0x64,0x65,0x64,0x37,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,
+0x2f,0x64,0x40,0x65,0x78,0x69,0x88,0x6c,0x18,0x69,0x6d,0x69,0x74,0x65,0x64,0x75,
+0x73,0x65,0x33,0x10,0x65,1,0x66,0x34,0x70,0x16,0x72,0x65,0x63,0x61,0x74,0x65,
+0x64,0x23,0x1c,0x61,0x75,0x6c,0x74,0x69,0x67,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,
+0x25,0x17,0x78,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x2b,0x17,0x6e,0x63,0x6c,0x75,
+0x73,0x69,0x6f,0x6e,0x35
};
-const char PropNameData::nameGroups[23338]={
+const char PropNameData::nameGroups[23743]={
2,'A','l','p','h','a',0,'A','l','p','h','a','b','e','t','i','c',0,
4,'N',0,'N','o',0,'F',0,'F','a','l','s','e',0,4,'Y',0,'Y','e','s',0,'T',0,'T','r','u','e',0,
2,'N','R',0,'N','o','t','_','R','e','o','r','d','e','r','e','d',0,
@@ -1878,8 +1893,8 @@ const char PropNameData::nameGroups[23338]={
2,'O','u','g','r',0,'O','l','d','_','U','y','g','h','u','r',0,
2,'T','n','s','a',0,'T','a','n','g','s','a',0,2,'V','i','t','h',0,'V','i','t','h','k','u','q','i',0,
2,'N','a','g','m',0,'N','a','g','_','M','u','n','d','a','r','i',0,
-2,'h','s','t',0,'H','a','n','g','u','l','_','S','y','l','l','a','b','l','e','_','T','y','p','e',0,
-2,'N','A',0,'N','o','t','_','A','p','p','l','i','c','a','b','l','e',0,
+2,'A','r','a','n',0,'A','r','a','n',0,2,'h','s','t',0,'H','a','n','g','u','l','_','S','y','l','l','a','b','l','e','_',
+'T','y','p','e',0,2,'N','A',0,'N','o','t','_','A','p','p','l','i','c','a','b','l','e',0,
2,'L',0,'L','e','a','d','i','n','g','_','J','a','m','o',0,
2,'V',0,'V','o','w','e','l','_','J','a','m','o',0,2,'T',0,'T','r','a','i','l','i','n','g','_','J','a','m','o',0,
2,'L','V',0,'L','V','_','S','y','l','l','a','b','l','e',0,
@@ -1975,8 +1990,12 @@ const char PropNameData::nameGroups[23338]={
'n','d','e','n','t',0,2,'v','o',0,'V','e','r','t','i','c','a','l','_','O','r','i','e','n','t','a','t','i','o','n',0,
2,'R',0,'R','o','t','a','t','e','d',0,2,'T','r',0,'T','r','a','n','s','f','o','r','m','e','d','_','R','o','t','a','t',
'e','d',0,2,'T','u',0,'T','r','a','n','s','f','o','r','m','e','d','_','U','p','r','i','g','h','t',0,
-2,'U',0,'U','p','r','i','g','h','t',0,2,'g','c','m',0,'G','e','n','e','r','a','l','_','C','a','t','e','g','o','r','y',
-'_','M','a','s','k',0,2,'C',0,'O','t','h','e','r',0,2,'L',0,'L','e','t','t','e','r',0,
+2,'U',0,'U','p','r','i','g','h','t',0,2,'I','d','e','n','t','i','f','i','e','r','_','S','t','a','t','u','s',0,
+'I','d','e','n','t','i','f','i','e','r','_','S','t','a','t','u','s',0,
+2,'R','e','s','t','r','i','c','t','e','d',0,'R','e','s','t','r','i','c','t','e','d',0,
+2,'A','l','l','o','w','e','d',0,'A','l','l','o','w','e','d',0,
+2,'g','c','m',0,'G','e','n','e','r','a','l','_','C','a','t','e','g','o','r','y','_','M','a','s','k',0,
+2,'C',0,'O','t','h','e','r',0,2,'L',0,'L','e','t','t','e','r',0,
2,'L','C',0,'C','a','s','e','d','_','L','e','t','t','e','r',0,
3,'M',0,'M','a','r','k',0,'C','o','m','b','i','n','i','n','g','_','M','a','r','k',0,
2,'N',0,'N','u','m','b','e','r',0,3,'P',0,'P','u','n','c','t','u','a','t','i','o','n',0,
@@ -1994,7 +2013,20 @@ const char PropNameData::nameGroups[23338]={
2,'n','a','1',0,'U','n','i','c','o','d','e','_','1','_','N','a','m','e',0,
2,'u','c',0,'U','p','p','e','r','c','a','s','e','_','M','a','p','p','i','n','g',0,
2,'b','p','b',0,'B','i','d','i','_','P','a','i','r','e','d','_','B','r','a','c','k','e','t',0,
-2,'s','c','x',0,'S','c','r','i','p','t','_','E','x','t','e','n','s','i','o','n','s',0
+2,'s','c','x',0,'S','c','r','i','p','t','_','E','x','t','e','n','s','i','o','n','s',0,
+2,'I','d','e','n','t','i','f','i','e','r','_','T','y','p','e',0,'I','d','e','n','t','i','f','i','e','r','_','T','y','p','e',
+0,2,'N','o','t','_','C','h','a','r','a','c','t','e','r',0,'N','o','t','_','C','h','a','r','a','c','t','e','r',0,
+2,'D','e','p','r','e','c','a','t','e','d',0,'D','e','p','r','e','c','a','t','e','d',0,
+2,'D','e','f','a','u','l','t','_','I','g','n','o','r','a','b','l','e',0,'D','e','f','a','u','l','t','_','I','g','n','o','r',
+'a','b','l','e',0,2,'N','o','t','_','N','F','K','C',0,'N','o','t','_','N','F','K','C',0,
+2,'N','o','t','_','X','I','D',0,'N','o','t','_','X','I','D',0,
+2,'E','x','c','l','u','s','i','o','n',0,'E','x','c','l','u','s','i','o','n',0,
+2,'O','b','s','o','l','e','t','e',0,'O','b','s','o','l','e','t','e',0,
+2,'T','e','c','h','n','i','c','a','l',0,'T','e','c','h','n','i','c','a','l',0,
+2,'U','n','c','o','m','m','o','n','_','U','s','e',0,'U','n','c','o','m','m','o','n','_','U','s','e',0,
+2,'L','i','m','i','t','e','d','_','U','s','e',0,'L','i','m','i','t','e','d','_','U','s','e',0,
+2,'I','n','c','l','u','s','i','o','n',0,'I','n','c','l','u','s','i','o','n',0,
+2,'R','e','c','o','m','m','e','n','d','e','d',0,'R','e','c','o','m','m','e','n','d','e','d',0
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/rbbinode.h b/libicu/cts_headers/rbbinode.h
index 4ed84d4e0..497a31b8d 100644
--- a/libicu/cts_headers/rbbinode.h
+++ b/libicu/cts_headers/rbbinode.h
@@ -94,9 +94,10 @@ class RBBINode : public UMemory {
RBBINode(NodeType t);
RBBINode(const RBBINode &other);
~RBBINode();
+ static void NRDeleteNode(RBBINode *node);
RBBINode *cloneTree();
- RBBINode *flattenVariables();
+ RBBINode *flattenVariables(UErrorCode &status, int depth=0);
void flattenSets();
void findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &status);
diff --git a/libicu/cts_headers/rbt.h b/libicu/cts_headers/rbt.h
index 59fa286a4..fdb0047df 100644
--- a/libicu/cts_headers/rbt.h
+++ b/libicu/cts_headers/rbt.h
@@ -115,7 +115,7 @@ private:
*/
RuleBasedTransliterator(const UnicodeString& id,
const TransliterationRuleData* theData,
- UnicodeFilter* adoptedFilter = 0);
+ UnicodeFilter* adoptedFilter = nullptr);
friend class Transliterator; // to access following ct
diff --git a/libicu/cts_headers/regexcst.h b/libicu/cts_headers/regexcst.h
index a475b6b36..02a95da85 100644
--- a/libicu/cts_headers/regexcst.h
+++ b/libicu/cts_headers/regexcst.h
@@ -357,214 +357,214 @@ static const struct RegexTableEl gRuleParseStateTable[] = {
, {doSetFinish, 255, 14,0, false} // 205 set-finish
, {doExit, 255, 206,0, true} // 206 errorDeath
};
-static const char * const RegexStateNames[] = { 0,
+static const char * const RegexStateNames[] = {nullptr,
"start",
"term",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"expr-quant",
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"expr-cont",
- 0,
- 0,
+ nullptr,
+ nullptr,
"open-paren-quant",
- 0,
+ nullptr,
"open-paren-quant2",
- 0,
+ nullptr,
"open-paren",
- 0,
+ nullptr,
"open-paren-extended",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"open-paren-lookbehind",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"paren-comment",
- 0,
- 0,
+ nullptr,
+ nullptr,
"paren-flag",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"named-capture",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"quant-star",
- 0,
- 0,
+ nullptr,
+ nullptr,
"quant-plus",
- 0,
- 0,
+ nullptr,
+ nullptr,
"quant-opt",
- 0,
- 0,
+ nullptr,
+ nullptr,
"interval-open",
- 0,
+ nullptr,
"interval-lower",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"interval-upper",
- 0,
- 0,
+ nullptr,
+ nullptr,
"interval-type",
- 0,
- 0,
+ nullptr,
+ nullptr,
"backslash",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"named-backref",
- 0,
+ nullptr,
"named-backref-2",
- 0,
+ nullptr,
"named-backref-3",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"set-open",
- 0,
- 0,
+ nullptr,
+ nullptr,
"set-open2",
- 0,
+ nullptr,
"set-posix",
- 0,
- 0,
+ nullptr,
+ nullptr,
"set-start",
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-start-dash",
- 0,
+ nullptr,
"set-start-amp",
- 0,
+ nullptr,
"set-after-lit",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-after-set",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-after-range",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-after-op",
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
"set-set-amp",
- 0,
- 0,
+ nullptr,
+ nullptr,
"set-lit-amp",
- 0,
+ nullptr,
"set-set-dash",
- 0,
- 0,
+ nullptr,
+ nullptr,
"set-range-dash",
- 0,
+ nullptr,
"set-range-amp",
- 0,
+ nullptr,
"set-lit-dash",
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-lit-dash-escape",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-escape",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
"set-finish",
"errorDeath",
- 0};
+ nullptr};
U_NAMESPACE_END
#endif
diff --git a/libicu/cts_headers/ruleiter.h b/libicu/cts_headers/ruleiter.h
index 41731407d..22dec1e8c 100644
--- a/libicu/cts_headers/ruleiter.h
+++ b/libicu/cts_headers/ruleiter.h
@@ -224,7 +224,7 @@ private:
};
inline UBool RuleCharacterIterator::inVariable() const {
- return buf != 0;
+ return buf != nullptr;
}
U_NAMESPACE_END
diff --git a/libicu/cts_headers/string_segment.h b/libicu/cts_headers/string_segment.h
index b581f7e57..38eb62370 100644
--- a/libicu/cts_headers/string_segment.h
+++ b/libicu/cts_headers/string_segment.h
@@ -61,7 +61,7 @@ class U_I18N_API StringSegment : public UMemory {
UnicodeString toUnicodeString() const;
- const UnicodeString toTempUnicodeString() const;
+ UnicodeString toTempUnicodeString() const;
/**
* Returns the first code point in the string segment, or -1 if the string starts with an invalid
diff --git a/libicu/cts_headers/taiwncal.h b/libicu/cts_headers/taiwncal.h
index b0a30f910..a8fa3d182 100644
--- a/libicu/cts_headers/taiwncal.h
+++ b/libicu/cts_headers/taiwncal.h
@@ -139,7 +139,7 @@ private:
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Subclasses may override this method to compute several fields
* specific to each calendar system.
@@ -155,24 +155,7 @@ private:
*/
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- /**
- * Returns true because the Taiwan Calendar does have a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * Returns the date of the start of the default century
- * @return start of century - in milliseconds since epoch, 1970
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
-
- /**
- * Returns the year in which the default century begins
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/tznames_impl.h b/libicu/cts_headers/tznames_impl.h
index 8ca2f84e7..3ab1e5cc9 100644
--- a/libicu/cts_headers/tznames_impl.h
+++ b/libicu/cts_headers/tznames_impl.h
@@ -26,6 +26,7 @@
#include "uhash.h"
#include "uvector.h"
#include "umutex.h"
+#include "charstr.h"
// Some zone display names involving supplementary characters can be over 50 chars, 100 UTF-16 code units, 200 UTF-8 bytes
#define ZONE_NAME_U16_MAX 128
@@ -255,7 +256,7 @@ public:
private:
Locale fLocale;
- char fRegion[ULOC_COUNTRY_CAPACITY];
+ CharString fRegion;
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/ucase.h b/libicu/cts_headers/ucase.h
index e03b31187..af7387360 100644
--- a/libicu/cts_headers/ucase.h
+++ b/libicu/cts_headers/ucase.h
@@ -357,7 +357,7 @@ enum {
/* definitions for 16-bit case properties word ------------------------------ */
U_CFUNC const UTrie2 * U_EXPORT2
-ucase_getTrie();
+ucase_getTrie(void);
/* 2-bit constants for types of cased characters */
#define UCASE_TYPE_MASK 3
diff --git a/libicu/cts_headers/uchar_props_data.h b/libicu/cts_headers/uchar_props_data.h
index 032422397..0cacf142a 100644
--- a/libicu/cts_headers/uchar_props_data.h
+++ b/libicu/cts_headers/uchar_props_data.h
@@ -1477,139 +1477,139 @@ static const UTrie2 propsTrie={
nullptr, 0, false, false, 0, nullptr
};
-static const uint16_t propsVectorsTrie_index[32764]={
+static const uint16_t propsVectorsTrie_index[32784]={
0x53e,0x546,0x54e,0x556,0x56e,0x576,0x57e,0x586,0x58e,0x596,0x59e,0x5a6,0x5ae,0x5b6,0x5be,0x5c6,
-0x5cd,0x5d5,0x5dd,0x5e5,0x5e8,0x5f0,0x5f8,0x600,0x608,0x610,0x618,0x620,0x628,0x630,0x638,0x640,
-0x648,0x650,0x657,0x65f,0x667,0x66f,0x677,0x67f,0x687,0x68f,0x694,0x69c,0x6a3,0x6ab,0x6b3,0x6bb,
-0x6c3,0x6cb,0x6d3,0x6db,0x6e2,0x6ea,0x6f2,0x6fa,0x702,0x70a,0x712,0x71a,0x722,0x72a,0x732,0x73a,
-0x1b43,0xd8f,0xe5b,0x1192,0x12d1,0x1d0b,0x1eaa,0x1d03,0x13f0,0x1400,0x13e8,0x13f8,0x80f,0x815,0x81d,0x825,
-0x82d,0x833,0x83b,0x843,0x84b,0x851,0x859,0x861,0x869,0x86f,0x877,0x87f,0x887,0x88f,0x897,0x89e,
-0x8a6,0x8ac,0x8b4,0x8bc,0x8c4,0x8ca,0x8d2,0x8da,0x8e2,0x1408,0x8ea,0x8f2,0x8fa,0x901,0x909,0x911,
-0x919,0x91d,0x925,0x92c,0x934,0x93c,0x944,0x94c,0x1723,0x172b,0x954,0x95c,0x964,0x96c,0x974,0x97b,
-0x1789,0x1779,0x1781,0x1a7e,0x1a86,0x1418,0x983,0x1410,0x166c,0x166c,0x166e,0x142c,0x142d,0x1420,0x1422,0x1424,
-0x1791,0x1793,0x98b,0x1793,0x993,0x998,0x9a0,0x1798,0x9a6,0x1793,0x9ac,0x9b4,0xc6f,0x17a0,0x17a0,0x9bc,
-0x17b0,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,
-0x17b1,0x17b1,0x17b1,0x17a8,0x9c4,0x17b9,0x17b9,0x9cc,0xb97,0xb9f,0xba7,0xbaf,0x17c9,0x17c1,0x9d4,0x9dc,
-0x9e4,0x17d3,0x17db,0x9ec,0x17d1,0x9f4,0x1b4b,0xd97,0xbb7,0xbbf,0xbc7,0xbcc,0x19e4,0xc96,0xc9d,0x1940,
-0xc47,0x1b53,0xd9f,0xda7,0xdaf,0xdb7,0xf65,0xf69,0x1a44,0x1a49,0xcd5,0xcdd,0x1aba,0x1ac2,0x1c23,0xe63,
-0x1aca,0xd23,0xd2b,0x1ad2,0x110a,0x11ba,0xf3d,0xdbf,0x1960,0x1948,0x1958,0x1950,0x19fc,0x19f4,0x19b0,0x1a3c,
-0x1435,0x1435,0x1435,0x1435,0x1438,0x1435,0x1435,0x1440,0x9fc,0x1448,0xa00,0xa08,0x1448,0xa10,0xa18,0xa20,
-0x1458,0x1450,0x1460,0xa28,0xa30,0x1468,0xa38,0xa40,0x1470,0x1478,0x1480,0x1488,0xa48,0x1490,0x1497,0x149f,
-0x14a7,0x14af,0x14b7,0x14bf,0x14c7,0x14ce,0x14d6,0x14de,0x14e6,0x14ee,0x14f1,0x14f3,0x17e3,0x18d6,0x18dc,0x1a2c,
-0x14fb,0xa50,0xa58,0x1621,0x1626,0x1629,0x162f,0x1503,0x1637,0x1637,0x1513,0x150b,0x151b,0x1523,0x152b,0x1533,
-0x153b,0x1543,0x154b,0x1553,0x18e4,0x1938,0x1a8e,0x1beb,0x1563,0x1569,0x1571,0x1579,0x155b,0x1581,0x18ec,0x18f3,
-0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x18fb,0x18fb,0x18fb,0x18fb,0x1903,0x190a,0x190c,0x1913,
-0x191b,0x191f,0x191f,0x1922,0x191f,0x191f,0x1928,0x191f,0x1968,0x1a34,0x1a96,0xbd4,0xbda,0x1d4f,0x1d57,0x1e35,
-0x19d4,0x19c8,0x19cc,0x1a51,0x19b8,0x19b8,0x19b8,0xc57,0x19c0,0xc77,0x1a14,0xcc5,0xc5f,0xc67,0xc67,0x1ada,
-0x1a04,0x1a9e,0xcad,0xcb5,0xa60,0x17f3,0x17f3,0xa68,0x17fb,0x17fb,0x17fb,0x17fb,0x17fb,0x17fb,0xa70,0x742,
-0x1654,0x1676,0xa78,0x167e,0xa80,0x1686,0x168e,0x1696,0xa88,0xa8d,0x169e,0x16a5,0xa92,0x1803,0x1a24,0xc4f,
-0xa9a,0x1700,0x1707,0x16ad,0x170f,0x1713,0x16b5,0x16b9,0x16d2,0x16d2,0x16d4,0x16c1,0x16c9,0x16c9,0x16ca,0x171b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
-0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180e,0x1970,0x1970,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
-0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16e3,0x1b3b,0x1f16,
-0x1816,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,
-0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,
-0x181c,0x181c,0x181c,0x181c,0xaa2,0x1824,0xaaa,0x1b5b,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,
-0x1ae2,0xd33,0x1af6,0x1aee,0x1af8,0x1b63,0x1b63,0xdc7,0x19dc,0x1a59,0x1aae,0x1ab2,0x1aa6,0x1c1b,0xce5,0xcec,
-0x1a0c,0xcbd,0x1a61,0xcf4,0x1b00,0x1b03,0xd3b,0x1b6b,0x1b13,0x1b0b,0xd43,0xdcf,0x1b73,0x1b77,0xdd7,0x1014,
-0x1b1b,0xd4b,0xd53,0x1b7f,0x1b8f,0x1b87,0xddf,0xf0d,0xe6b,0xe73,0x1da5,0xfc4,0x1e52,0x1e52,0x1b97,0xde7,
-0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
-0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
-0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
-0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
-0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
-0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
-0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
-0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
-0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
-0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
-0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
-0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
-0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
-0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
-0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
-0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
-0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
-0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
-0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
-0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
-0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
-0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0xab2,0xdef,0xdf2,
+0x5cd,0x5d5,0x5dd,0x5e5,0x5ed,0x5f5,0x5fd,0x605,0x60d,0x615,0x61d,0x625,0x62d,0x635,0x63d,0x645,
+0x64d,0x655,0x65c,0x664,0x66c,0x674,0x67c,0x684,0x68c,0x694,0x699,0x6a1,0x6a8,0x6b0,0x6b8,0x6c0,
+0x6c8,0x6d0,0x6d8,0x6e0,0x6e7,0x6ef,0x6f7,0x6ff,0x707,0x70f,0x717,0x71f,0x727,0x72f,0x737,0x73f,
+0x1b48,0xd94,0xe60,0x1197,0x12d6,0x1d10,0x1eaf,0x1d08,0x13f5,0x1405,0x13ed,0x13fd,0x814,0x81a,0x822,0x82a,
+0x832,0x838,0x840,0x848,0x850,0x856,0x85e,0x866,0x86e,0x874,0x87c,0x884,0x88c,0x894,0x89c,0x8a3,
+0x8ab,0x8b1,0x8b9,0x8c1,0x8c9,0x8cf,0x8d7,0x8df,0x8e7,0x140d,0x8ef,0x8f7,0x8ff,0x906,0x90e,0x916,
+0x91e,0x922,0x92a,0x931,0x939,0x941,0x949,0x951,0x1727,0x172f,0x959,0x961,0x969,0x971,0x979,0x980,
+0x178d,0x177d,0x1785,0x1a82,0x1a8a,0x141d,0x988,0x1415,0x1670,0x1670,0x1672,0x1431,0x1432,0x1425,0x1427,0x1429,
+0x1795,0x1797,0x990,0x1797,0x998,0x99d,0x9a5,0x179c,0x9ab,0x1797,0x9b1,0x9b9,0xc74,0x17a4,0x17a4,0x9c1,
+0x17b4,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,
+0x17b5,0x17b5,0x17b5,0x17ac,0x9c9,0x17bd,0x17bd,0x9d1,0xb9c,0xba4,0xbac,0xbb4,0x17cd,0x17c5,0x9d9,0x9e1,
+0x9e9,0x17d7,0x17df,0x9f1,0x17d5,0x9f9,0x1b50,0xd9c,0xbbc,0xbc4,0xbcc,0xbd1,0x19e8,0xc9b,0xca2,0x1944,
+0xc4c,0x1b58,0xda4,0xdac,0xdb4,0xdbc,0xf6a,0xf6e,0x1a48,0x1a4d,0xcda,0xce2,0x1abe,0x1ac6,0x1c28,0xe68,
+0x1ace,0xd28,0xd30,0x1ad6,0x110f,0x11bf,0xf42,0xdc4,0x1964,0x194c,0x195c,0x1954,0x1a00,0x19f8,0x19b4,0x1a40,
+0x1442,0x1442,0x1442,0x1442,0x143a,0x1442,0x1442,0x1444,0xa01,0x144c,0xa05,0xa0d,0x144c,0xa15,0xa1d,0xa25,
+0x145c,0x1454,0x1464,0xa2d,0xa35,0x146c,0xa3d,0xa45,0x1474,0x147c,0x1484,0x148c,0xa4d,0x1494,0x149b,0x14a3,
+0x14ab,0x14b3,0x14bb,0x14c3,0x14cb,0x14d2,0x14da,0x14e2,0x14ea,0x14f2,0x14f5,0x14f7,0x17e7,0x18da,0x18e0,0x1a30,
+0x14ff,0xa55,0xa5d,0x1625,0x162a,0x162d,0x1633,0x1507,0x163b,0x163b,0x1517,0x150f,0x151f,0x1527,0x152f,0x1537,
+0x153f,0x1547,0x154f,0x1557,0x18e8,0x193c,0x1a92,0x1bf0,0x1567,0x156d,0x1575,0x157d,0x155f,0x1585,0x18f0,0x18f7,
+0x17ef,0x17ef,0x17ef,0x17ef,0x17ef,0x17ef,0x17ef,0x17ef,0x18ff,0x18ff,0x18ff,0x18ff,0x1907,0x190e,0x1910,0x1917,
+0x191f,0x1923,0x1923,0x1926,0x1923,0x1923,0x192c,0x1923,0x196c,0x1a38,0x1a9a,0xbd9,0xbdf,0x1d54,0x1d5c,0x1e3a,
+0x19d8,0x19cc,0x19d0,0x1a55,0x19bc,0x19bc,0x19bc,0xc5c,0x19c4,0xc7c,0x1a18,0xcca,0xc64,0xc6c,0xc6c,0x1ade,
+0x1a08,0x1aa2,0xcb2,0xcba,0xa65,0x17f7,0x17f7,0xa6d,0x17ff,0x17ff,0x17ff,0x17ff,0x17ff,0x17ff,0xa75,0x747,
+0x1658,0x167a,0xa7d,0x1682,0xa85,0x168a,0x1692,0x169a,0xa8d,0xa92,0x16a2,0x16a9,0xa97,0x1807,0x1a28,0xc54,
+0xa9f,0x1704,0x170b,0x16b1,0x1713,0x1717,0x16b9,0x16bd,0x16d6,0x16d6,0x16d8,0x16c5,0x16cd,0x16cd,0x16ce,0x171f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x1812,0x1974,0x1974,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e7,0x1b40,0x1f1b,
+0x181a,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,
+0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,0x1820,
+0x1820,0x1820,0x1820,0x1820,0xaa7,0x1828,0xaaf,0x1b60,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,
+0x1ae6,0xd38,0x1afb,0x1af3,0x1afd,0x1b68,0x1b68,0xdcc,0x19e0,0x1a5d,0x1ab2,0x1ab6,0x1aaa,0x1c20,0xcea,0xcf1,
+0x1a10,0xcc2,0x1a65,0xcf9,0x1b05,0x1b08,0xd40,0x1b70,0x1b18,0x1b10,0xd48,0xdd4,0x1b78,0x1b7c,0xddc,0x1019,
+0x1b20,0xd50,0xd58,0x1b84,0x1b94,0x1b8c,0xde4,0xf12,0xe70,0xe78,0x1daa,0xfc9,0x1e57,0x1e57,0x1b9c,0xdec,
+0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,
+0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,
+0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,
+0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,
+0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,
+0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,
+0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,
+0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,
+0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,
+0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,
+0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,
+0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,
+0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,
+0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,
+0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,
+0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,
+0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,
+0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,
+0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,
+0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,
+0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,
+0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0x1775,0x176f,0x1770,0x1771,0x1772,0x1773,0x1774,0xab7,0xdf4,0xdf7,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
-0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
-0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,
-0x16f0,0x16f8,0x1930,0x139d,0x1a1c,0x1a1c,0x13a1,0x13a8,0xaba,0xac2,0xaca,0x15a1,0x15a8,0x15b0,0xad2,0x15b8,
-0x15f6,0x15f6,0x1589,0x1591,0x15c0,0x15ed,0x15ee,0x15fe,0x15c8,0x15cd,0x15d5,0x15dd,0xada,0x15e5,0xae2,0x1599,
-0xccd,0x1606,0xaea,0xaf2,0x160e,0x1614,0x1619,0xafa,0xb0a,0x165c,0x1664,0x1647,0x164c,0xb12,0xb1a,0xb02,
-0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,
-0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x173b,0x173b,0x173b,0x173b,
-0x1578,0x1578,0x15b8,0x15f8,0x1638,0x1678,0x16b8,0x16f8,0x1734,0x1774,0x17a0,0x17e0,0x1820,0x1860,0x18a0,0x18e0,
-0x1920,0x195c,0x199c,0x19dc,0x1a1c,0x1a50,0x1a8c,0x1acc,0x1b0c,0x1b4c,0x1b88,0x1bc8,0x1c08,0x1c48,0x1c88,0x1cc8,
+0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,
+0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,0x1747,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,
+0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x1643,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,
+0x16f4,0x16fc,0x1934,0x13a2,0x1a20,0x1a20,0x13a6,0x13ad,0xabf,0xac7,0xacf,0x15a5,0x15ac,0x15b4,0xad7,0x15bc,
+0x15fa,0x15fa,0x158d,0x1595,0x15c4,0x15f1,0x15f2,0x1602,0x15cc,0x15d1,0x15d9,0x15e1,0xadf,0x15e9,0xae7,0x159d,
+0xcd2,0x160a,0xaef,0xaf7,0x1612,0x1618,0x161d,0xaff,0xb0f,0x1660,0x1668,0x164b,0x1650,0xb17,0xb1f,0xb07,
+0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,
+0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x173f,0x173f,0x173f,0x173f,
+0x1578,0x1578,0x15b8,0x15f8,0x1638,0x1678,0x16b8,0x16f8,0x1734,0x1774,0x17b4,0x17f4,0x1834,0x1874,0x18b4,0x18f4,
+0x1934,0x1970,0x19b0,0x19f0,0x1a30,0x1a64,0x1aa0,0x1ae0,0x1b20,0x1b60,0x1b9c,0x1bdc,0x1c1c,0x1c5c,0x1c9c,0x1cdc,
0xe59,0xa80,0xac0,0xb00,0xb40,0xb6b,0xf99,0xa40,0xed9,0xa40,0xa40,0xa40,0xa40,0xbab,0x13f5,0x13f5,
0xf19,0xfd9,0xa40,0xa40,0xa40,0xbeb,0xf59,0xc2b,0xa40,0xc51,0xc91,0xcd1,0xd11,0xd51,0xe99,0xdc9,
0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,
@@ -1646,1886 +1646,1887 @@ static const uint16_t propsVectorsTrie_index[32764]={
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0xc2c,0xc2f,0xdfa,0x1df5,0x101c,0x74a,0x55e,0x10b6,0xcfc,0xd7b,0x55e,0x55e,0x1d1b,0xf15,0xf1d,0x1e3d,
-0xc7f,0xc86,0xc8e,0x1b9f,0x1dd5,0x55e,0x1db5,0xfec,0x1ba7,0xe02,0xe0a,0xe12,0x1044,0x752,0x55e,0x55e,
-0x1baf,0x1baf,0x75a,0x55e,0x1e6a,0x10ce,0x1e62,0x10d6,0x1f56,0x11d0,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0xe1a,0x1fae,0x12c9,0x134b,0x134c,0x1f76,0x11f8,0x11ff,0x1206,0x1308,0x130c,0x1280,0x1216,
-0x1c2b,0x1c2d,0xe7b,0xe82,0x1bb7,0x1bbf,0xe22,0xf35,0x1d13,0xefd,0xf05,0xfe4,0x1d33,0x1d37,0x1d3f,0x1064,
-0xfb4,0x1d95,0x762,0x55e,0x10be,0x10c6,0x1d9d,0xfbc,0xf96,0xf9c,0xfa4,0xfac,0x55e,0x55e,0x55e,0x55e,
-0x1eda,0x1ed2,0x1140,0x1148,0x1e1d,0x1e15,0x108c,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e05,0x104c,0x1054,0x105c,
-0x1dcd,0x1dc5,0xffc,0x1138,0x1d47,0xf45,0x76a,0x55e,0x109c,0x10a4,0x772,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x1f4e,0x11b2,0x77a,0x55e,0x55e,0x1e2d,0x1e25,0x1094,0x1288,0x128e,0x1296,0x55e,0x55e,0x121e,0x1222,0x122a,
-0x1f0e,0x1f06,0x119a,0x1efe,0x1ef6,0x118a,0x1dfd,0x103c,0x135c,0x135f,0x135f,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x10ee,0x10f3,0x10fb,0x1102,0x112a,0x1130,0x55e,0x55e,0x116e,0x1172,0x117a,0x11c2,0x11c8,0x782,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x11e0,0x136f,0x1374,0x137c,0x55e,0x55e,0x786,0x1f96,0x1270,
-0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,
-0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a6e,0xd04,0xd0b,0xd0b,0xd0b,
-0x1a76,0x1a76,0x1a76,0xd13,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x78e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0xc31,0xc34,0xdff,0x1dfa,0x1021,0x74f,0x55e,0x10bb,0xd01,0xd80,0x55e,0x55e,0x1d20,0xf1a,0xf22,0x1e42,
+0xc84,0xc8b,0xc93,0x1ba4,0x1dda,0x55e,0x1dba,0xff1,0x1bac,0xe07,0xe0f,0xe17,0x1049,0x757,0x55e,0x55e,
+0x1bb4,0x1bb4,0x75f,0x55e,0x1e6f,0x10d3,0x1e67,0x10db,0x1f5b,0x11d5,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0xe1f,0x1fb3,0x12ce,0x1350,0x1351,0x1f7b,0x11fd,0x1204,0x120b,0x130d,0x1311,0x1285,0x121b,
+0x1c30,0x1c32,0xe80,0xe87,0x1bbc,0x1bc4,0xe27,0xf3a,0x1d18,0xf02,0xf0a,0xfe9,0x1d38,0x1d3c,0x1d44,0x1069,
+0xfb9,0x1d9a,0x767,0x55e,0x10c3,0x10cb,0x1da2,0xfc1,0xf9b,0xfa1,0xfa9,0xfb1,0x55e,0x55e,0x55e,0x55e,
+0x1edf,0x1ed7,0x1145,0x114d,0x1e22,0x1e1a,0x1091,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e0a,0x1051,0x1059,0x1061,
+0x1dd2,0x1dca,0x1001,0x113d,0x1d4c,0xf4a,0x76f,0x55e,0x10a1,0x10a9,0x777,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x1f53,0x11b7,0x77f,0x55e,0x55e,0x1e32,0x1e2a,0x1099,0x128d,0x1293,0x129b,0x55e,0x55e,0x1223,0x1227,0x122f,
+0x1f13,0x1f0b,0x119f,0x1f03,0x1efb,0x118f,0x1e02,0x1041,0x1361,0x1364,0x1364,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x10f3,0x10f8,0x1100,0x1107,0x112f,0x1135,0x55e,0x55e,0x1173,0x1177,0x117f,0x11c7,0x11cd,0x787,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x11e5,0x1374,0x1379,0x1381,0x55e,0x55e,0x78b,0x1f9b,0x1275,
+0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,
+0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a72,0xd09,0xd10,0xd10,0xd10,
+0x1a7a,0x1a7a,0x1a7a,0xd18,0x1e5f,0x1e5f,0x1e5f,0x1e5f,0x1e5f,0x1e5f,0x793,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x792,0x1fc6,0x1fc6,0x12d9,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,
-0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0xe8a,0x1004,0x100c,0x1fce,
-0x1314,0x131c,0xf4d,0x1ded,0x1de5,0x102c,0x1034,0x79a,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1f6e,0x1f66,0x11f0,
-0x55e,0x55e,0x55e,0x1d2b,0x1d2b,0xf25,0x1d23,0xf2d,0x55e,0x55e,0x1122,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x797,0x1fcb,0x1fcb,0x12de,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,
+0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0x1c3a,0xe8f,0x1009,0x1011,0x1fd3,
+0x1319,0x1321,0xf52,0x1df2,0x1dea,0x1031,0x1039,0x79f,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1f73,0x1f6b,0x11f5,
+0x55e,0x55e,0x55e,0x1d30,0x1d30,0xf2a,0x1d28,0xf32,0x55e,0x55e,0x1127,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x79e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7a3,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1d7d,0x1d7d,0x1d7d,0xf71,0xf76,
-0x7a6,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1d82,0x1d82,0x1d82,0xf76,0xf7b,
+0x7ab,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1fde,0x133c,0x1343,0x1fd6,0x1fd6,0x1fd6,0x7ae,
-0x55e,0x1849,0x1849,0x1849,0x1849,0x1849,0x1849,0x1849,0xb30,0x1859,0xb38,0x185a,0x1851,0x1862,0x1868,0x1870,
-0xb40,0x1998,0x1998,0x7b6,0x55e,0x55e,0x55e,0x1367,0x11e8,0x1988,0x1988,0xc37,0xd1b,0x55e,0x55e,0x55e,
-0x55e,0x18a1,0x18a8,0xb48,0x18ab,0xb50,0xb58,0xb60,0x18a5,0xb68,0xb70,0xb78,0x18aa,0x18b2,0x18a1,0x18a8,
-0x18a4,0x18ab,0x18b3,0x18a2,0x18a9,0x18a5,0xb7f,0x1878,0x1880,0x1887,0x188e,0x187b,0x1883,0x188a,0x1891,0xb87,
-0x1899,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,
-0x1e82,0x1e72,0x1e75,0x1e72,0x1e7c,0x10de,0x7be,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1fe3,0x1341,0x1348,0x1fdb,0x1fdb,0x1fdb,0x7b3,
+0x55e,0x184d,0x184d,0x184d,0x184d,0x184d,0x184d,0x184d,0xb35,0x185d,0xb3d,0x185e,0x1855,0x1866,0x186c,0x1874,
+0xb45,0x199c,0x199c,0x7bb,0x55e,0x55e,0x55e,0x136c,0x11ed,0x198c,0x198c,0xc3c,0xd20,0x55e,0x55e,0x55e,
+0x55e,0x18a5,0x18ac,0xb4d,0x18af,0xb55,0xb5d,0xb65,0x18a9,0xb6d,0xb75,0xb7d,0x18ae,0x18b6,0x18a5,0x18ac,
+0x18a8,0x18af,0x18b7,0x18a6,0x18ad,0x18a9,0xb84,0x187c,0x1884,0x188b,0x1892,0x187f,0x1887,0x188e,0x1895,0xb8c,
+0x189d,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,0x1e87,
+0x1e87,0x1e77,0x1e7a,0x1e77,0x1e81,0x10e3,0x7c3,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x12f5,0x12fd,0x1300,0x1300,0x1300,0x1300,0x1300,
-0x1300,0x1112,0x111a,0x1fe6,0x1354,0x7c6,0x55e,0x55e,0x55e,0x1f8e,0x1232,0x7ce,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x7d2,0x1324,0x1f9e,0x1278,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7da,0x1384,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x12fa,0x1302,0x1305,0x1305,0x1305,0x1305,0x1305,
+0x1305,0x1117,0x111f,0x1feb,0x1359,0x7cb,0x55e,0x55e,0x55e,0x1f93,0x1237,0x7d3,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x7d7,0x1329,0x1fa3,0x127d,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7df,0x1389,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x12e1,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0xff4,0x55e,0x1eca,0x1ec2,0x10e6,0x55e,0x55e,0x55e,0x55e,
+0x12e6,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0xff9,0x55e,0x1ecf,0x1ec7,0x10eb,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x7e2,0x1f5e,0x11d8,0x55e,0x55e,0x123a,0x123b,0x7ea,0x55e,0x55e,0x55e,0x55e,
-0x55e,0xec2,0xeca,0xed2,0xeda,0xee2,0xeea,0xef1,0xef5,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x7e7,0x1f63,0x11dd,0x55e,0x55e,0x123f,0x1240,0x7ef,0x55e,0x55e,0x55e,0x55e,
+0x55e,0xec7,0xecf,0xed7,0xedf,0xee7,0xeef,0xef6,0xefa,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7ee,0x106c,0x1e0d,0x1072,0x1e0d,0x107a,0x107f,0x1084,
-0x1084,0x1e92,0x1eb2,0x1eba,0x1f26,0x1e9a,0x1f7e,0x1ea2,0x1f2e,0x1f86,0x1f86,0x11a2,0x11aa,0x1252,0x1258,0x1260,
-0x1268,0x1fa6,0x1fa6,0x1fa6,0x1fa6,0x12ac,0x1fa6,0x12b2,0x12b6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,
-0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,
-0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f7,0xb8f,0x18bb,0x18bb,0x18bb,0x7ff,0x7ff,0x7ff,
-0x7ff,0x1990,0x1990,0x1990,0x1990,0x1990,0x1990,0x1990,0x807,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
-0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
-0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
-0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
-0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0xbe2,0xbe9,0xbf1,0xbf9,0x1978,0x1978,0x1978,
-0xc01,0xc09,0xc0c,0x19a8,0x19a0,0xc3f,0xd5b,0xd5f,0xd63,0x55e,0x55e,0x55e,0x55e,0xd6b,0x1b23,0xd73,
-0xf5d,0x182c,0xb22,0xb28,0x1024,0xc14,0x19ec,0xca5,0x55e,0x1841,0x1834,0x1839,0x1980,0xc1c,0xc24,0x1150,
-0x1156,0x1d85,0xf7e,0x1d75,0xf55,0x132c,0x1334,0x55e,0x55e,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,
-0x1dad,0x1dad,0xfcc,0xfd4,0xfdc,0x12e9,0x12ed,0x55e,0x55e,0x1b2b,0xd83,0x1b33,0x1b33,0xd87,0xe92,0xe9a,
-0xea2,0x1bfb,0x1be3,0x1c03,0x1c0b,0x1bf3,0xe2a,0xe2e,0xe35,0xe3d,0xe41,0xe49,0xe51,0xe53,0xe53,0xe53,
-0xe53,0x1c6c,0x1c74,0x1c6c,0x1c7a,0x1c82,0x1c4d,0x1c8a,0x1c92,0x1c6c,0x1c9a,0x1ca2,0x1ca9,0x1cb1,0x1c55,0x1c6c,
-0x1cb6,0x1c5d,0x1c64,0x1cbe,0x1cc4,0x1d66,0x1d6d,0x1d5f,0x1ccb,0x1cd3,0x1cdb,0x1ce3,0x1ddd,0x1ceb,0x1cf3,0xeaa,
-0xeb2,0x1c3d,0x1c3d,0x1c3d,0xeba,0x1d8d,0x1d8d,0xf86,0xf8e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7f3,0x1071,0x1e12,0x1077,0x1e12,0x107f,0x1084,0x1089,
+0x1089,0x1e97,0x1eb7,0x1ebf,0x1f2b,0x1e9f,0x1f83,0x1ea7,0x1f33,0x1f8b,0x1f8b,0x11a7,0x11af,0x1257,0x125d,0x1265,
+0x126d,0x1fab,0x1fab,0x1fab,0x1fab,0x12b1,0x1fab,0x12b7,0x12bb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,
+0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,
+0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fc,0xb94,0x18bf,0x18bf,0x18bf,0x804,0x804,0x804,
+0x804,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x80c,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0xbe7,0xbee,0xbf6,0xbfe,0x197c,0x197c,0x197c,
+0xc06,0xc0e,0xc11,0x19ac,0x19a4,0xc44,0xd60,0xd64,0xd68,0x55e,0x55e,0x55e,0x55e,0xd70,0x1b28,0xd78,
+0xf62,0x1830,0xb27,0xb2d,0x1029,0xc19,0x19f0,0xcaa,0x55e,0x1845,0x1838,0x183d,0x1984,0xc21,0xc29,0x1155,
+0x115b,0x1d8a,0xf83,0x1d7a,0xf5a,0x1331,0x1339,0x55e,0x55e,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,
+0x1db2,0x1db2,0xfd1,0xfd9,0xfe1,0x12ee,0x12f2,0x55e,0x55e,0x1b30,0xd88,0x1b38,0x1b38,0xd8c,0xe97,0xe9f,
+0xea7,0x1c00,0x1be8,0x1c08,0x1c10,0x1bf8,0xe2f,0xe33,0xe3a,0xe42,0xe46,0xe4e,0xe56,0xe58,0xe58,0xe58,
+0xe58,0x1c71,0x1c79,0x1c71,0x1c7f,0x1c87,0x1c52,0x1c8f,0x1c97,0x1c71,0x1c9f,0x1ca7,0x1cae,0x1cb6,0x1c5a,0x1c71,
+0x1cbb,0x1c62,0x1c69,0x1cc3,0x1cc9,0x1d6b,0x1d72,0x1d64,0x1cd0,0x1cd8,0x1ce0,0x1ce8,0x1de2,0x1cf0,0x1cf8,0xeaf,
+0xeb7,0x1c42,0x1c42,0x1c42,0xebf,0x1d92,0x1d92,0xf8b,0xf93,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,
-0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e4a,0x1e45,0x1e45,0x1e45,0x10ac,0x10ae,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x115e,0x1c45,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,
-0x1f1e,0x1f3e,0x1166,0x1243,0x124a,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,
-0x1182,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,
+0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4f,0x1e4a,0x1e4a,0x1e4a,0x10b1,0x10b3,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1163,0x1c4a,0x1f23,0x1f23,0x1f23,0x1f23,0x1f23,0x1f23,
+0x1f23,0x1f43,0x116b,0x1248,0x124f,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,0x1f4b,
+0x1187,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,
-0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc9,0x1bc7,0x1bd1,0x1bc7,0x1bc7,
-0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bd4,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bdb,0x120e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,
+0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bce,0x1bcc,0x1bd6,0x1bcc,0x1bcc,
+0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bd9,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1bcc,0x1be0,0x1213,0x55e,0x55e,0x55e,0x55e,
0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,
-0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,
-0x1eee,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x129e,
-0x12a4,0x12be,0x12c1,0x12c1,0x12c1,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
-0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c6,
-0x138c,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x13d0,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,
-0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x13e0,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x18ce,0x18ce,0x18ce,0x18ce,
-0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x13b0,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138d,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1395,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138d,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x13b8,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x13c0,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x13c8,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x13d8,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x174b,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1753,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x175b,0x175b,0x175b,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
-0x1763,0x1763,0x1763,0x1763,0x1763,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
-0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
-0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
-0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
-0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
-0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
-0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
-0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x53d,0x53d,0x53d,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,
+0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,0x1eef,
+0x1ef3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x1fc3,0x12a3,
+0x12a9,0x12c3,0x12c6,0x12c6,0x12c6,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18ca,
+0x1391,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x13d5,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,
+0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x1ffb,0x13e5,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x18d2,0x18d2,0x18d2,0x18d2,
+0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x13b5,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1392,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x139a,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,
+0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1391,0x1392,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x13bd,0x1d00,0x1d00,0x1d00,0x1d00,0x1d00,0x1d00,0x13c5,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x13cd,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x13dd,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x174f,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1757,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,0x175f,
+0x175f,0x175f,0x175f,0x175f,0x175f,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,
+0x18c7,0x18c7,0x18c7,0x18c7,0x18c7,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,
+0x1c18,0x1c18,0x1c18,0x1c18,0x1c18,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,
+0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1e8f,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,
+0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1ee7,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,
+0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1f3b,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,
+0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1fbb,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,
+0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x1ff3,0x53d,0x53d,0x53d,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
0x2e2,0x2e5,0x2ee,0x2e8,0x2e8,0x2eb,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
-0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x7da,0x7d4,0x7b9,0x79e,0x7aa,0x7a7,0x79e,0x7b6,
-0x7a4,0x7b0,0x79e,0x7cb,0x7c2,0x7b3,0x7d7,0x7ad,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,
-0x79b,0x79b,0x7bf,0x7bc,0x7c5,0x7c5,0x7c5,0x7d4,0x79e,0x7e6,0x7e6,0x7e6,0x7e6,0x7e6,0x7e6,0x7e0,
-0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,
-0x7e0,0x7e0,0x7e0,0x7a4,0x7aa,0x7b0,0x7d1,0x798,0x7ce,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7dd,
-0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,
-0x7dd,0x7dd,0x7dd,0x7a4,0x7c8,0x7a1,0x7c5,0x2e2,0,0,0,0,0,0,0,0,
+0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x828,0x822,0x804,0x7ec,0x7f8,0x7f5,0x7ec,0x807,
+0x7f2,0x7fe,0x7ec,0x819,0x80d,0x801,0x825,0x7fb,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,
+0x7e9,0x7e9,0x810,0x80a,0x813,0x813,0x813,0x822,0x7ec,0x834,0x834,0x834,0x834,0x834,0x834,0x82e,
+0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,
+0x82e,0x82e,0x82e,0x7f2,0x7f8,0x7fe,0x81f,0x7e6,0x81c,0x831,0x831,0x831,0x831,0x831,0x831,0x82b,
+0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,
+0x82b,0x82b,0x82b,0x7f2,0x816,0x7ef,0x813,0x2e2,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x300,0x2f1,0x2f1,
0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,
-0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f4,0x64b,0x7ef,0x7f2,0x651,0x7f2,0x7ec,0x645,
-0x63c,0x2fa,0x65a,0x2fd,0x7f5,0x633,0x648,0x7e9,0x64e,0x657,0x639,0x639,0x63f,0x2f7,0x645,0x642,
-0x63c,0x639,0x65a,0x2fd,0x636,0x636,0x636,0x64b,0x306,0x306,0x306,0x306,0x306,0x306,0x663,0x306,
-0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x663,0x306,0x306,0x306,0x306,0x306,0x306,0x654,
-0x663,0x306,0x306,0x306,0x306,0x306,0x663,0x65d,0x660,0x660,0x303,0x303,0x303,0x303,0x65d,0x303,
-0x660,0x660,0x660,0x303,0x660,0x660,0x303,0x303,0x65d,0x303,0x660,0x660,0x303,0x303,0x303,0x654,
-0x65d,0x660,0x660,0x303,0x660,0x303,0x65d,0x303,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,
-0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x30f,0x666,0x312,0x669,0x312,0x309,0x312,0x309,
-0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x66f,0x666,
-0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x666,0x672,0x66c,0x312,0x309,0x312,0x309,
-0x666,0x312,0x309,0x312,0x309,0x312,0x309,0x672,0x66c,0x66f,0x666,0x312,0x669,0x312,0x309,0x312,
-0x669,0x675,0x66f,0x666,0x312,0x669,0x312,0x309,0x312,0x309,0x66f,0x666,0x312,0x309,0x312,0x309,
-0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x66f,0x666,
-0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,
-0x312,0x312,0x309,0x312,0x309,0x312,0x309,0x30c,0x315,0x321,0x321,0x315,0x321,0x315,0x321,0x321,
-0x315,0x321,0x321,0x321,0x315,0x315,0x321,0x321,0x321,0x321,0x315,0x321,0x321,0x315,0x321,0x321,
-0x321,0x315,0x315,0x315,0x321,0x321,0x315,0x321,0x324,0x318,0x321,0x315,0x321,0x315,0x321,0x321,
-0x315,0x321,0x315,0x315,0x321,0x315,0x321,0x324,0x318,0x321,0x321,0x321,0x315,0x321,0x315,0x321,
-0x321,0x315,0x315,0x31e,0x321,0x315,0x315,0x315,0x31e,0x31e,0x31e,0x31e,0x327,0x327,0x31b,0x327,
-0x327,0x31b,0x327,0x327,0x31b,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,
-0x678,0x324,0x678,0x324,0x678,0x315,0x324,0x318,0x324,0x318,0x324,0x318,0x321,0x315,0x324,0x318,
-0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x318,0x327,0x327,0x31b,0x324,0x318,0x9cf,0x9cf,
-0x9d2,0x9cc,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,
-0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x9d2,0x9cc,0x9d2,0x9cc,
-0x9cf,0x9c9,0x9d2,0x9cc,0xb8e,0xc87,0x9cf,0x9c9,0x9cf,0x9c9,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,
-0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,0xc87,0xc87,0xc87,0xd80,0xd80,0xd80,0xd83,0xd83,
-0xd80,0xd83,0xd83,0xd80,0xd80,0xd83,0xec1,0xec4,0xec4,0xec4,0xec4,0xec1,0xec4,0xec1,0xec4,0xec1,
-0xec4,0xec1,0xec4,0xec1,0x32a,0x67b,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32a,0x67b,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32d,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0xc8a,0xc8a,
-0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x339,0x339,0x339,0x339,0x339,0x339,0x339,
-0x336,0x336,0x333,0x333,0x681,0x333,0x339,0x684,0x33c,0x684,0x684,0x684,0x33c,0x684,0x339,0x339,
-0x687,0x33f,0x333,0x333,0x333,0x333,0x333,0x333,0x67e,0x67e,0x67e,0x67e,0x330,0x67e,0x333,0xb04,
-0x342,0x342,0x342,0x342,0x342,0x333,0x333,0x333,0x333,0x333,0x9de,0x9de,0x9db,0x9d8,0x9db,0xc8d,
-0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68d,0x68d,0x92d,0x68d,0x68d,0x930,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xc3f,
-0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xe85,0xe85,0xe85,0xe85,0xe88,0xd4d,0xd4d,0xd4d,
-0x690,0x690,0xb0a,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,
-0xf6f,0xf6c,0xf6f,0xf6c,0x34e,0x357,0xf6f,0xf6c,9,9,0x35d,0xec7,0xec7,0xec7,0x345,0x14b8,
-9,9,9,9,0x35a,0x348,0x36c,0x34b,0x36c,0x36c,0x36c,9,0x36c,9,0x36c,0x36c,
-0x363,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,
-0x696,0x696,9,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x36c,0x36c,0x363,0x363,0x363,0x363,
-0x363,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,
-0x693,0x693,0x360,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x363,0x363,0x363,0x363,0x363,0xf6f,
-0x36f,0x36f,0x372,0x36c,0x36c,0x36f,0x366,0x9e1,0xb97,0xb94,0x369,0x9e1,0x369,0x9e1,0x369,0x9e1,
-0x369,0x9e1,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,
-0x36f,0x36f,0x366,0x360,0xb46,0xb43,0xb91,0xc93,0xc90,0xc96,0xc93,0xc90,0xd86,0xd89,0xd89,0xd89,
-0x9f0,0x6a2,0x37e,0x381,0x37e,0x37e,0x37e,0x381,0x37e,0x37e,0x37e,0x37e,0x381,0x9f0,0x381,0x37e,
-0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x6a2,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,
-0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,
-0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x69c,0x699,0x699,0x699,0x699,0x699,0x699,
-0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x9ea,0x69c,0x378,0x37b,
-0x378,0x378,0x378,0x37b,0x378,0x378,0x378,0x378,0x37b,0x9ea,0x37b,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x381,0x37b,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x375,0x939,
-0x93c,0x91e,0x91e,0x111c,0x9e4,0x9e4,0xb9d,0xb9a,0x9ed,0x9e7,0x9ed,0x9e7,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x381,0x37b,0x37e,
-0x378,0xb9d,0xb9a,0x37e,0x378,0xb9d,0xb9a,0x37e,0x378,0xb9d,0xb9a,0xeca,0x381,0x37b,0x381,0x37b,
-0x37e,0x378,0x381,0x37b,0x37e,0x378,0x381,0x37b,0x381,0x37b,0x381,0x37b,0x37e,0x378,0x381,0x37b,
-0x381,0x37b,0x381,0x37b,0x37e,0x378,0x381,0x37b,0x9f0,0x9ea,0x381,0x37b,0x381,0x37b,0x381,0x37b,
-0x381,0x37b,0xd8f,0xd8c,0x381,0x37b,0xecd,0xeca,0xecd,0xeca,0xecd,0xeca,0xc03,0xc00,0xc03,0xc00,
-0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xefa,0xef7,0xefa,0xef7,
-0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,
-0x1155,0x1152,0x132f,0x132c,0x14ee,0x14eb,0x14ee,0x14eb,0x14ee,0x14eb,0x14ee,0x14eb,0xc,0x393,0x393,0x393,
-0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,
-0x393,0x393,0x393,0x393,0x393,0x393,0x393,0xc,0xc,0x396,0x384,0x384,0x384,0x38a,0x384,0x387,
-0x18f9,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,
-0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,
-0x38d,0x38d,0x38d,0x390,0x18f9,0x399,0x9f3,0xc,0xc,0x14bb,0x14bb,0x13d7,0xf,0x960,0x960,0x960,
-0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0xd92,0x960,
-0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x39c,0x39c,0x39c,0x39c,
-0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xed0,0x39c,0x39c,0x39c,0x3a8,0x39c,0x39f,0x39c,0x39c,0x3ab,
-0x963,0xd95,0xd98,0xd95,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x3ae,0x3ae,0x3ae,0x3ae,
-0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,
-0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0xf,0xf,0xf,0xf,0x18fc,0x3ae,0x3ae,0x3ae,0x3a5,
-0x3a2,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xcab,0xcab,0xcab,0xcab,
-0x13da,0x14be,0xf78,0xf78,0xf78,0xf75,0xf75,0xd9e,0x8a6,0xca5,0xca2,0xca2,0xc99,0xc99,0xc99,0xc99,
-0xc99,0xc99,0xf72,0xf72,0xf72,0xf72,0xf72,0x8a3,0x14b5,0x1b0f,0xda1,0x8a9,0x12f6,0x3c9,0x3cc,0x3cc,
-0x3cc,0x3cc,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0x8ac,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0xb3d,
-0xb3d,0xb3d,0xc99,0xc9f,0xc9c,0xd9b,0xd9b,0xd9b,0xd9b,0xd9b,0xd9b,0x12f3,0x93f,0x93f,0x93f,0x93f,
-0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x3c3,0x3c0,0x3bd,0x3ba,0xba0,0xba0,0x921,0x3c9,0x3c9,0x3d5,
-0x3c9,0x3cf,0x3cf,0x3cf,0x3cf,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x9f9,0x9f9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x9f9,0x3cc,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x9f9,0x3c9,0x3c9,0x3c9,0x3cc,0x942,0x3c9,0x3b4,0x3b4,
-0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b1,0x3ba,0x3b7,0x3b7,0x3b4,0x3b4,0x3b4,0x3b4,0x3d2,0x3d2,0x3b4,
-0x3b4,0x3ba,0x3b7,0x3b7,0x3b7,0x3b4,0xca8,0xca8,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,
-0x3c6,0x3c6,0x9f9,0x9f9,0x9f9,0x9f6,0x9f6,0xca8,0xa0e,0xa0e,0xa0e,0xa08,0xa08,0xa08,0xa08,0xa08,
-0xa08,0xa08,0xa08,0xa05,0xa08,0xa05,0x12,0xa11,0xa0b,0x9fc,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
-0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
-0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xcae,0xcae,0xcae,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,
-0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,
-0x9ff,0x9ff,0x9ff,0x12,0x12,0xcae,0xcae,0xcae,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,
-0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,
-0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,
-0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
-0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
-0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa14,0xa14,
-0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xba3,0x15,0x15,0x15,0x15,0x15,0x15,
-0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,
-0xf12,0xf12,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,
-0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,
-0xf15,0xf15,0xf15,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf18,0xf18,0xf0c,0xf0c,
-0xf0f,0xf1e,0xf1b,0xff,0xff,0x1920,0x1923,0x1923,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xb16,0xb16,0xb19,0xb19,0xb16,0xb16,0xb16,0xb16,
-0xb16,0xb16,0xb16,0xb16,0x1c53,0x1c53,0x1c50,0x1c50,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1626,
-0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
-0x1e9,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,
-0x1248,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1bed,0x1bea,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,
-0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,
-0x1491,0x1491,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1fe,
-0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,
-0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,
-0x196e,0x196e,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1ad3,0x288,0x288,0x288,0x288,0x288,0x288,0x288,
-0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x1761,0x1761,0x1761,0x1761,0x204,0x204,0x204,0x204,
-0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
-0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x29d,0x1bd5,0x1bd5,0x1bd5,
-0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x29d,0x1bd5,0x1bd5,0x29d,0x16c5,0x16c5,0x16c5,0x16c5,0x1ec,0x1ec,0x1ec,0x1ec,
-0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x2b2,0x2b2,0x2b2,0x2b2,
-0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xdf5,0xdf5,0xdf2,0xdf2,0xdf2,0xdf5,0xd2,0xd2,
-0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x210,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
-0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x1c08,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,
-0x1a25,0x1a25,0x26d,0x26d,0x26d,0x26d,0x1a28,0x1a22,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,
-0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,
-0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x252,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
-0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,
-0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0,0,0,0,0,0,0,0,
+0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f4,0x690,0x83d,0x840,0x696,0x840,0x83a,0x68a,
+0x681,0x2fa,0x69f,0x2fd,0x843,0x678,0x68d,0x837,0x693,0x69c,0x67e,0x67e,0x684,0x2f7,0x68a,0x687,
+0x681,0x67e,0x69f,0x2fd,0x67b,0x67b,0x67b,0x690,0x306,0x306,0x306,0x306,0x306,0x306,0x6a8,0x306,
+0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x6a8,0x306,0x306,0x306,0x306,0x306,0x306,0x699,
+0x6a8,0x306,0x306,0x306,0x306,0x306,0x6a8,0x6a2,0x6a5,0x6a5,0x303,0x303,0x303,0x303,0x6a2,0x303,
+0x6a5,0x6a5,0x6a5,0x303,0x6a5,0x6a5,0x303,0x303,0x6a2,0x303,0x6a5,0x6a5,0x303,0x303,0x303,0x699,
+0x6a2,0x6a5,0x6a5,0x303,0x6a5,0x303,0x6a2,0x303,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x30f,0x6b1,0x312,0x6b4,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x6b7,0x6b1,
+0x312,0x30c,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x312,0x6b1,0x6ae,0x6ab,0x312,0x30c,0x312,0x30c,
+0x6b1,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x6ae,0x6ab,0x6b7,0x6b1,0x312,0x6b4,0x312,0x30c,0x312,
+0x6b4,0x6ba,0x6b7,0x6b1,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x6b7,0x6b1,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x6b7,0x6b1,
+0x312,0x30c,0x312,0x6b4,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x309,0x318,0x327,0x327,0x324,0x327,0x324,0x327,0x327,
+0x324,0x327,0x327,0x327,0x324,0x31e,0x327,0x333,0x327,0x327,0x324,0x327,0x327,0x324,0x327,0x327,
+0x327,0x324,0x324,0x324,0x327,0x327,0x324,0x327,0x336,0x330,0x327,0x324,0x327,0x324,0x327,0x327,
+0x324,0x327,0x31e,0x31e,0x327,0x324,0x327,0x336,0x330,0x327,0x327,0x327,0x324,0x327,0x324,0x327,
+0x327,0x315,0x31e,0x321,0x327,0x324,0x31e,0x315,0x31b,0x31b,0x31b,0x31b,0x32d,0x32d,0x32a,0x32d,
+0x32d,0x32a,0x32d,0x32d,0x32a,0x336,0x6bd,0x336,0x6bd,0x336,0x6bd,0x336,0x6bd,0x336,0x6bd,0x336,
+0x6bd,0x336,0x6bd,0x336,0x6bd,0x324,0x336,0x330,0x336,0x330,0x336,0x330,0x327,0x324,0x336,0x330,
+0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x330,0x32d,0x32d,0x32a,0x336,0x330,0xa29,0xa29,
+0xa35,0xa32,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,
+0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0x336,0x330,0xa35,0xa32,0xa35,0xa32,
+0xa29,0xa26,0xa35,0xa32,0xc0c,0xd08,0xa2f,0xa2c,0xa2f,0xa2c,0xa35,0xa32,0xa35,0xa32,0xa35,0xa32,
+0xa35,0xa32,0xa35,0xa32,0xa35,0xa32,0xa35,0xa32,0xd05,0xd05,0xd05,0xe01,0xe01,0xe01,0xe04,0xe04,
+0xe01,0xe04,0xe04,0xe01,0xe01,0xe04,0xf4e,0xf51,0xf51,0xf51,0xf51,0xf4e,0xf51,0xf4e,0xf51,0xf4e,
+0xf51,0xf4e,0xf51,0xf4e,0x339,0x6c0,0x339,0x342,0x342,0x339,0x342,0x342,0x339,0x345,0x339,0x342,
+0x339,0x339,0x339,0x339,0x339,0x6c0,0x339,0x342,0x339,0x339,0x339,0x339,0x342,0x342,0x339,0x339,
+0x339,0x339,0x339,0x339,0x339,0x339,0x342,0x339,0x339,0x339,0x339,0x33f,0x339,0x339,0x339,0x339,
+0x33f,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x342,0x339,0x339,
+0x339,0x339,0x339,0x339,0x339,0x339,0x342,0x339,0x33c,0x339,0x339,0x339,0x339,0x339,0x339,0x339,
+0x339,0x339,0x33f,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0xa38,0xa38,0xa38,
+0xa38,0xa38,0xd0b,0xd0b,0x35d,0x35d,0x35d,0x35d,0x35d,0x35d,0x35d,0x35d,0x35d,0x351,0x351,0x357,
+0x357,0x351,0x351,0x351,0x34e,0x34e,0x348,0x348,0x6c3,0x348,0x351,0x6c9,0x354,0x6c9,0x6c9,0x6c9,
+0x354,0x6c9,0x351,0x351,0x6cc,0x35a,0x348,0x348,0x348,0x348,0x348,0x348,0x6c6,0x6c6,0x6c6,0x6c6,
+0x34b,0x6c6,0x348,0xb82,0x35d,0x35d,0x35d,0x35d,0x35d,0x348,0x348,0x348,0x348,0x348,0xa44,0xa44,
+0xa41,0xa3b,0xa3e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
+0xd0e,0xd0e,0xd0e,0xd0e,0x6db,0x6db,0x6db,0x6db,0x6db,0x6d5,0x6db,0x6db,0x6db,0x6db,0x6db,0x6db,
+0x6db,0x6d5,0x6cf,0x6db,0x6db,0x6db,0x6cf,0x6db,0x6db,0x6cf,0x6d5,0x6cf,0x6cf,0x6cf,0x6cf,0x6db,
+0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6d5,0x6d5,0x6db,0x6db,0x6db,0x6db,0x6db,0x6db,0x6cf,0x6cf,0x6cf,
+0x6cf,0x6db,0x6db,0x6cf,0x6db,0x6db,0x6d5,0x6cf,0x6d5,0x6db,0x6d5,0x6cf,0x6db,0x6db,0x6cf,0x6cf,
+0x6cf,0x6cf,0x6cf,0x6cf,0x6d8,0x6d8,0x981,0x6d8,0x6d8,0x984,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,
+0xb85,0xb85,0xb85,0xcbd,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xf15,0xf0f,0xf0f,0xf0f,
+0xf12,0xdce,0xdce,0xdce,0x6d2,0x6d2,0xb88,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,
+0xd02,0xd02,0xd02,0xd02,0x100e,0x100b,0x100e,0x100b,0x369,0x375,0x100e,0x100b,9,9,0x378,0xf54,
+0xf54,0xf54,0x360,0x158a,9,9,9,9,0x372,0x363,0x38d,0x366,0x38d,0x38d,0x38d,9,
+0x38d,9,0x38d,0x38d,0x38a,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,
+0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,9,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x6e1,0x38d,0x38d,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,
+0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x387,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x6de,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x1011,0x390,0x390,0x393,0x384,0x384,0x390,0x381,0xa4a,0xc15,0xc12,0x37b,0xa47,
+0x37b,0xa47,0x37b,0xa47,0x37b,0xa47,0x36f,0x36c,0x36f,0x36c,0x36f,0x36c,0x36f,0x36c,0x36f,0x36c,
+0x36f,0x36c,0x36f,0x36c,0x390,0x390,0x381,0x37e,0xbc4,0xbc1,0xc0f,0xd14,0xd11,0xd17,0xd14,0xd11,
+0xe07,0xe0a,0xe0a,0xe0a,0xa59,0x6ed,0x3ab,0x3ae,0x3ab,0x3ab,0x3ab,0x3ae,0x3ab,0x3ab,0x3ab,0x3ab,
+0x3ae,0xa59,0x3ae,0x3ab,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ed,0x6ea,0x6ea,
+0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,
+0x6ea,0x6ea,0x6ea,0x6ea,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e7,0x6e4,0x6e4,
+0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,0x6e4,
+0xa53,0x6e7,0x3a5,0x3a8,0x3a5,0x3a5,0x3a5,0x3a8,0x3a5,0x3a5,0x3a5,0x3a5,0x3a8,0xa53,0x3a8,0x3a5,
+0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,
+0x39f,0x399,0x39f,0x399,0x39f,0x399,0x3a2,0x39c,0x39f,0x399,0x39f,0x399,0x39f,0x399,0x39f,0x399,
+0x39f,0x399,0x396,0x98d,0x990,0x972,0x972,0x11e2,0xa4d,0xa4d,0xc1b,0xc18,0xa56,0xa50,0xa56,0xa50,
+0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,
+0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,
+0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,0x3ab,0x3a5,
+0x3ab,0x3ae,0x3a8,0x3ab,0x3a5,0xc1b,0xc18,0x3ab,0x3a5,0xc1b,0xc18,0x3ab,0x3a5,0xc1b,0xc18,0xf57,
+0x3ae,0x3a8,0x3ae,0x3a8,0x3ab,0x3a5,0x3ae,0x3a8,0x3ab,0x3a5,0x3ae,0x3a8,0x3ae,0x3a8,0x3ae,0x3a8,
+0x3ab,0x3a5,0x3ae,0x3a8,0x3ae,0x3a8,0x3ae,0x3a8,0x3ab,0x3a5,0x3ae,0x3a8,0xa59,0xa53,0x3ae,0x3a8,
+0x3ae,0x3a8,0x3ae,0x3a8,0x3ae,0x3a8,0xe10,0xe0d,0x3ae,0x3a8,0xf5a,0xf57,0xf5a,0xf57,0xf5a,0xf57,
+0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e,
+0xf87,0xf84,0xf87,0xf84,0x1092,0x108f,0x1092,0x108f,0x1092,0x108f,0x1092,0x108f,0x1092,0x108f,0x1092,0x108f,
+0x1092,0x108f,0x1092,0x108f,0x121b,0x1218,0x13f8,0x13f5,0x15c6,0x15c3,0x15c0,0x15bd,0x15c0,0x15bd,0x15c6,0x15c3,
+0xc,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,
+0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0xc,0xc,0x3c3,0x3b1,0x3b1,
+0x3b1,0x3b7,0x3b1,0x3b4,0x19d7,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,
+0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,
+0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3ba,0x19d7,0x3c6,0xa5c,0xc,0xc,0x158d,0x158d,0x14a6,
+0xf,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,
+0x9b4,0x9b4,0xe13,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,
+0x3c9,0x3c9,0x3c9,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0xf5d,0x3c9,0x3c9,0x3c9,0x3d8,0x3c9,
+0x3cf,0x3c9,0x3c9,0x3db,0x9b7,0xe16,0xe1c,0xe19,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,
+0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0xf,0xf,0xf,0xf,0x19da,
+0x3de,0x3de,0x3de,0x3d5,0x3d2,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+0xd2c,0xd2c,0xd2c,0xd2c,0x14a9,0x1590,0x101a,0x101a,0x101a,0x1017,0x1017,0xe22,0x8f7,0xd26,0xd23,0xd23,
+0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0x1014,0x1014,0x1014,0x1014,0x1014,0x8f4,0x1587,0x1bfc,0xe25,0x8fa,
+0x13bf,0x3ff,0x402,0x402,0x402,0x402,0x402,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x101d,0x101d,0x101d,0x101d,0x101d,
+0x8fd,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x978,0x978,0x978,0x978,0x978,
+0x978,0x978,0x978,0xbbb,0xbbb,0xbbb,0xd1a,0xd20,0xd1d,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0x13bc,
+0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x3f3,0x3f0,0x3ed,0x3ea,0xc1e,0xc1e,
+0x975,0x3ff,0x3ff,0x408,0x3ff,0x3fc,0x3fc,0x3fc,0x3fc,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3f9,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3f9,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0xa62,0xa62,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0xa62,0x402,0x3ff,0x402,0x3ff,
+0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0xa62,0x3ff,0x3ff,0x3ff,0x402,
+0x996,0x3ff,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e1,0x3ea,0x3e7,0x3e7,0x3e4,0x3e4,0x3e4,
+0x3e4,0x405,0x405,0x3e4,0x3e4,0x3ea,0x3e7,0x3e7,0x3e7,0x3e4,0xd29,0xd29,0x3f6,0x3f6,0x3f6,0x3f6,
+0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0xa62,0xa62,0xa62,0xa5f,0xa5f,0xd29,0xa77,0xa77,0xa77,0xa71,
+0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa6e,0xa71,0xa6e,0x12,0xa7a,0xa74,0xa65,0xa74,0xa74,
+0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,
+0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xd2f,0xd2f,0xd2f,0xa6b,0xa6b,0xa6b,0xa6b,
+0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa68,0xa68,0xa68,0xa68,
+0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0x12,0x12,0xd2f,0xd2f,0xd2f,0xe85,0xe85,0xe85,0xe85,
+0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,
+0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,
+0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0xa80,0xa80,0xa80,0xa80,
+0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,
+0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,
+0xa80,0xa80,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xc21,0x15,0x15,
+0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xf9f,0xf9f,0xf9f,0xf9f,
+0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,
+0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,
+0xfa2,0xfa2,0xfa2,0xfa2,0xfa5,0xfa5,0xfa5,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,
+0xfa8,0xfa8,0xf99,0xf99,0xf9c,0xfae,0xfab,0xff,0xff,0x19fe,0x1a01,0x1a01,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xb94,0xb94,0xb97,0xb97,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0x1d40,0x1d40,0x1d3d,0x1d3d,0x1dd,0x1dd,0x1dd,0x1dd,
+0x1dd,0x1dd,0x1dd,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1e9,0x1e9,0x1e9,0x1e9,
+0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1311,0x1311,0x1311,0x1311,
+0x1311,0x1311,0x1311,0x1311,0x1311,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1cda,0x1cd7,0x1bf,0x1bf,
+0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1563,0x1563,0x1563,0x1563,
+0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1c59,0x1c59,0x1c59,0x1c59,
+0x1c59,0x1c59,0x1c59,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x246,0x246,0x246,0x246,
+0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1a4f,0x1a4f,0x1a4f,0x1a4f,
+0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1bc0,0x288,0x288,0x288,
+0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x183f,0x183f,0x183f,0x183f,
+0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1cc2,0x1cc2,0x1cc2,0x1cc2,
+0x29d,0x1cc2,0x1cc2,0x1cc2,0x1cc2,0x1cc2,0x1cc2,0x1cc2,0x29d,0x1cc2,0x1cc2,0x29d,0x17a3,0x17a3,0x17a3,0x17a3,
+0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1c9e,0x1c9e,0x1c9e,0x1c9e,
+0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xe7c,0xe7c,0xe79,0xe79,
+0xe79,0xe7c,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x210,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x2b8,0x2b8,0x2b8,0x2b8,
+0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x1cf5,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1b0c,0x1b0c,0x1b0c,0x1b0c,
+0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x26d,0x26d,0x26d,0x26d,0x1b0f,0x1b09,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1c92,0x1c92,0x1c92,0x1c92,
+0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1d25,0x1d25,0x1d25,0x1d25,
+0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x252,0x1a64,0x1a64,0x1a64,
+0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x270,0x270,0x270,0x270,
+0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0x95d,0x95d,3,3,3,3,3,3,3,3,
+0,0,0,0,0,0,0,0,0,0,0x9b1,0x9b1,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,0x95d,0x95d,6,6,6,6,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,0x9b1,0x9b1,
6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,0xd53,0xd53,0xd53,0xd53,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,0x14c4,0x3f0,0x3ff,0x3ff,
-0x18,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x18,0x18,0x405,0x405,0x18,0x18,0x405,
-0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x18,0x405,0x405,
-0x405,0x405,0x405,0x405,0x405,0x18,0x405,0x18,0x18,0x18,0x405,0x405,0x405,0x405,0x18,0x18,
-0x3f3,0xcb4,0x3f0,0x3ff,0x3ff,0x3f0,0x3f0,0x3f0,0x3f0,0x18,0x18,0x3ff,0x3ff,0x18,0x18,0x402,
-0x402,0x3f6,0xda7,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3f0,0x18,0x18,0x18,0x18,
-0x408,0x408,0x18,0x408,0x405,0x405,0x3f0,0x3f0,0x18,0x18,0x948,0x948,0x948,0x948,0x948,0x948,
-0x948,0x948,0x948,0x948,0x405,0x405,0x3fc,0x3fc,0x3f9,0x3f9,0x3f9,0x3f9,0x3f9,0x3fc,0x3f9,0x112b,
-0x185a,0x1857,0x18ff,0x18,0x1b,0xcb7,0x40b,0xcba,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x1b,
-0x1b,0x1b,0x1b,0x417,0x417,0x1b,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,
-0x417,0x417,0x417,0x417,0x417,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x1b,0x417,0x41a,
-0x1b,0x417,0x41a,0x1b,0x417,0x417,0x1b,0x1b,0x40e,0x1b,0x414,0x414,0x414,0x40b,0x40b,0x1b,
-0x1b,0x1b,0x1b,0x40b,0x40b,0x1b,0x1b,0x40b,0x40b,0x411,0x1b,0x1b,0x1b,0xf84,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x41a,0x41a,0x41a,0x417,0x1b,0x41a,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x40b,0x40b,0x417,0x417,
-0x417,0xf84,0x1902,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1e,0x41d,0x41d,0x426,
-0x1e,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0xcc3,0x429,0x1e,0x429,0x429,0x429,0x1e,0x429,
-0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x1e,0x429,0x429,
-0x429,0x429,0x429,0x429,0x429,0x1e,0x429,0x429,0x1e,0x429,0x429,0x429,0x429,0x429,0x1e,0x1e,
-0x420,0x429,0x426,0x426,0x426,0x41d,0x41d,0x41d,0x41d,0x41d,0x1e,0x41d,0x41d,0x426,0x1e,0x426,
-0x426,0x423,0x1e,0x1e,0x429,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x1e,0x1e,0x1e,0x1e,0x429,0xcc3,0xcbd,0xcbd,0x1e,0x1e,0x94e,0x94e,0x94e,0x94e,0x94e,0x94e,
-0x94e,0x94e,0x94e,0x94e,0x13dd,0xcc0,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x16da,0x185d,0x185d,
-0x185d,0x1860,0x1860,0x1860,0x21,0x42c,0x43b,0x43b,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
-0x441,0x21,0x21,0x441,0x441,0x21,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
-0x441,0x441,0x441,0x441,0x441,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x21,0x441,0x441,
-0x21,0xcc6,0x441,0x441,0x441,0x441,0x21,0x21,0x42f,0x441,0x42c,0x42c,0x43b,0x42c,0x42c,0x42c,
-0xf87,0x21,0x21,0x43b,0x43e,0x21,0x21,0x43e,0x43e,0x432,0x21,0x21,0x21,0x21,0x21,0x21,
-0x21,0x1a6d,0x42c,0x42c,0x21,0x21,0x21,0x21,0x444,0x444,0x21,0x441,0x441,0x441,0xf87,0xf87,
-0x21,0x21,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x435,0xcc6,0x1302,0x1302,
-0x1302,0x1302,0x1302,0x1302,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x24,0x24,0x447,0x453,
-0x24,0x453,0x453,0x453,0x453,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x24,0x453,0x453,
-0x456,0x453,0x24,0x24,0x24,0x453,0x453,0x24,0x453,0x24,0x453,0x453,0x24,0x24,0x24,0x453,
-0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x453,0x453,0x453,
-0x453,0x453,0xdaa,0x453,0x453,0x453,0x24,0x24,0x24,0x24,0x447,0x44d,0x447,0x44d,0x44d,0x24,
-0x24,0x24,0x44d,0x44d,0x44d,0x24,0x450,0x450,0x450,0x44a,0x24,0x24,0xf8a,0x24,0x24,0x24,
-0x24,0x24,0x24,0x447,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xebe,0x954,
-0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x951,0x951,0x951,0xd7a,0xcc9,0xcc9,0xcc9,0xcc9,
-0xcc9,0xccc,0xcc9,0x24,0x24,0x24,0x24,0x24,0x14c7,0x465,0x465,0x465,0x1905,0x468,0x468,0x468,
-0x468,0x468,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x468,0x468,0x468,
-0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x468,0x468,0x468,
-0x468,0x468,0x468,0x468,0x14ca,0x468,0x468,0x468,0x468,0x468,0x27,0x27,0x1b12,0xf93,0x459,0x459,
-0x459,0x465,0x465,0x465,0x465,0x27,0x459,0x459,0x45c,0x27,0x459,0x459,0x459,0x45f,0x27,0x27,
-0x27,0x27,0x27,0x27,0x27,0x459,0x459,0x27,0xf93,0xf93,0x16dd,0x27,0x27,0x1b15,0x27,0x27,
-0x468,0x468,0xf8d,0xf8d,0x27,0x27,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,
-0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x19d1,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,
-0x179d,0x14cd,0x471,0x471,0x1908,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,
-0x477,0x2a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,
-0x477,0x2a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,0x477,
-0x477,0x477,0x2a,0x2a,0xccf,0xcd2,0x471,0x46b,0x474,0x471,0x46b,0x471,0x471,0x2a,0x46b,0x474,
-0x474,0x2a,0x474,0x474,0x46b,0x46e,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x46b,0x46b,0x2a,
-0x2a,0x2a,0x2a,0x2a,0x2a,0x1b18,0x477,0x2a,0x477,0x477,0xed6,0xed6,0x2a,0x2a,0x957,0x957,
-0x957,0x957,0x957,0x957,0x957,0x957,0x957,0x957,0x2a,0xed9,0xed9,0x1bdb,0x2a,0x2a,0x2a,0x2a,
-0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x1863,0x14d0,0x483,0x483,0x1a70,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x489,0x2d,0x489,0x489,0x489,0x2d,0x489,0x489,0x489,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x483,0x47a,0x47a,0x47a,0xf96,0x2d,0x483,0x483,
-0x483,0x2d,0x486,0x486,0x486,0x47d,0x1308,0x17a0,0x2d,0x2d,0x2d,0x2d,0x17a3,0x17a3,0x17a3,0x47a,
-0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x16e0,0x489,0x489,0xf96,0xf96,0x2d,0x2d,0x480,0x480,
-0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0x17a0,0x17a0,
-0x17a0,0xf9c,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0x30,0x1a73,0xa23,0xa23,0x30,0xa29,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,
-0x30,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0x30,0xa29,0x30,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0x30,0x30,0xa1d,0x30,
-0x30,0x30,0x30,0xa1a,0xa23,0xa23,0xa1a,0xa1a,0xa1a,0x30,0xa1a,0x30,0xa23,0xa23,0xa26,0xa23,
-0xa26,0xa26,0xa26,0xa1a,0x30,0x30,0x30,0x30,0x30,0x30,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,
-0x14d3,0x14d3,0x14d3,0x14d3,0x30,0x30,0xa23,0xa23,0xa20,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
-0x30,0x30,0x30,0x30,0x33,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,
-0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,
-0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x48f,0x4a4,0x4a1,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x495,0x33,
-0x33,0x33,0x33,0x48c,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4a4,0x4a7,0x492,0x492,0x492,0x492,0x492,
-0x492,0x48f,0x492,0x498,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49b,0x49b,
-0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+0x1596,0x426,0x435,0x435,0x18,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x18,0x18,0x43e,
+0x43e,0x18,0x18,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,
+0x43e,0x18,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x18,0x43e,0x18,0x18,0x18,0x43e,0x43e,
+0x43e,0x43e,0x18,0x18,0x429,0xd35,0x426,0x435,0x435,0x426,0x426,0x426,0x426,0x18,0x18,0x435,
+0x435,0x18,0x18,0x438,0x438,0x42c,0xe2b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x426,
+0x18,0x18,0x18,0x18,0x43b,0x43b,0x18,0x43b,0x43e,0x43e,0x426,0x426,0x18,0x18,0x99c,0x99c,
+0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x43e,0x43e,0x432,0x432,0x42f,0x42f,0x42f,0x42f,
+0x42f,0x432,0x42f,0x11f1,0x1938,0x1935,0x19dd,0x18,0x1b,0xd38,0x441,0xd3b,0x1b,0x450,0x450,0x450,
+0x450,0x450,0x450,0x1b,0x1b,0x1b,0x1b,0x450,0x450,0x1b,0x1b,0x450,0x450,0x450,0x450,0x450,
+0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x1b,0x450,0x450,0x450,0x450,0x450,0x450,
+0x450,0x1b,0x450,0x44d,0x1b,0x450,0x44d,0x1b,0x450,0x450,0x1b,0x1b,0x444,0x1b,0x44a,0x44a,
+0x44a,0x441,0x441,0x1b,0x1b,0x1b,0x1b,0x441,0x441,0x1b,0x1b,0x441,0x441,0x447,0x1b,0x1b,
+0x1b,0x1026,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x44d,0x44d,0x44d,0x450,0x1b,0x44d,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,0x99f,
+0x441,0x441,0x450,0x450,0x450,0x1026,0x19e0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1e,0x453,0x453,0x45c,0x1e,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0xd44,0x45f,0x1e,0x45f,
+0x45f,0x45f,0x1e,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,
+0x45f,0x1e,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x1e,0x45f,0x45f,0x1e,0x45f,0x45f,0x45f,
+0x45f,0x45f,0x1e,0x1e,0x456,0x45f,0x45c,0x45c,0x45c,0x453,0x453,0x453,0x453,0x453,0x1e,0x453,
+0x453,0x45c,0x1e,0x45c,0x45c,0x459,0x1e,0x1e,0x45f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x45f,0xd44,0xd3e,0xd3e,0x1e,0x1e,0x9a2,0x9a2,
+0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x9a2,0x14ac,0xd41,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x17b8,0x193b,0x193b,0x193b,0x193e,0x193e,0x193e,0x21,0x462,0x471,0x471,0x21,0x47a,0x47a,0x47a,
+0x47a,0x47a,0x47a,0x47a,0x47a,0x21,0x21,0x47a,0x47a,0x21,0x21,0x47a,0x47a,0x47a,0x47a,0x47a,
+0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x21,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,
+0x47a,0x21,0x47a,0x47a,0x21,0xd47,0x47a,0x47a,0x47a,0x47a,0x21,0x21,0x465,0x47a,0x462,0x462,
+0x471,0x462,0x462,0x462,0x1029,0x21,0x21,0x471,0x474,0x21,0x21,0x474,0x474,0x468,0x21,0x21,
+0x21,0x21,0x21,0x21,0x21,0x1b54,0x462,0x462,0x21,0x21,0x21,0x21,0x477,0x477,0x21,0x47a,
+0x47a,0x47a,0x1029,0x1029,0x21,0x21,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,
+0x46b,0xd47,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+0x24,0x24,0x47d,0x489,0x24,0x489,0x489,0x489,0x489,0x489,0x489,0x24,0x24,0x24,0x489,0x489,
+0x489,0x24,0x489,0x489,0x48c,0x489,0x24,0x24,0x24,0x489,0x489,0x24,0x489,0x24,0x489,0x489,
+0x24,0x24,0x24,0x489,0x489,0x24,0x24,0x24,0x489,0x489,0x489,0x24,0x24,0x24,0x489,0x489,
+0x489,0x489,0x489,0x489,0x489,0x489,0xe2e,0x489,0x489,0x489,0x24,0x24,0x24,0x24,0x47d,0x483,
+0x47d,0x483,0x483,0x24,0x24,0x24,0x483,0x483,0x483,0x24,0x486,0x486,0x486,0x480,0x24,0x24,
+0x102c,0x24,0x24,0x24,0x24,0x24,0x24,0x47d,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+0x24,0x24,0xf4b,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a5,0x9a5,0x9a5,0xdfb,
+0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4d,0xd4a,0x24,0x24,0x24,0x24,0x24,0x1599,0x49b,0x49b,0x49b,
+0x19e3,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x27,0x49e,0x49e,0x49e,0x27,0x49e,0x49e,
+0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x27,0x49e,0x49e,
+0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x159c,0x49e,0x49e,0x49e,0x49e,0x49e,0x27,0x27,
+0x1bff,0x1038,0x48f,0x48f,0x48f,0x49b,0x49b,0x49b,0x49b,0x27,0x48f,0x48f,0x492,0x27,0x48f,0x48f,
+0x48f,0x495,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x48f,0x48f,0x27,0x1035,0x1035,0x17bb,0x27,
+0x27,0x1c02,0x27,0x27,0x49e,0x49e,0x102f,0x102f,0x27,0x27,0x498,0x498,0x498,0x498,0x498,0x498,
+0x498,0x498,0x498,0x498,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x1ab2,0x1032,0x1032,0x1032,0x1032,
+0x1032,0x1032,0x1032,0x1032,0x187b,0x159f,0x4a7,0x4a7,0x19e6,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
+0x4b0,0x2a,0x4b0,0x4b0,0x4b0,0x2a,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
+0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x2a,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
+0x2a,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x2a,0x2a,0xd50,0xd53,0x4a7,0x4a1,0x4aa,0x4a7,0x4a1,0x4a7,
+0x4a7,0x2a,0x4a1,0x4aa,0x4aa,0x2a,0x4aa,0x4aa,0x4a1,0x4a4,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+0x2a,0x4a1,0x4a1,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x1c05,0x4ad,0x2a,0x4b0,0x4b0,0xf63,0xf63,
+0x2a,0x2a,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x2a,0xf66,0xf66,0x1cc8,
+0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x1941,0x15a2,0x4bc,0x4bc,
+0x1b57,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x2d,0x4c2,0x4c2,0x4c2,0x2d,0x4c2,0x4c2,
+0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4bc,0x4b3,0x4b3,0x4b3,
+0x103b,0x2d,0x4bc,0x4bc,0x4bc,0x2d,0x4bf,0x4bf,0x4bf,0x4b6,0x13d1,0x187e,0x2d,0x2d,0x2d,0x2d,
+0x1881,0x1881,0x1881,0x4b3,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x17be,0x4c2,0x4c2,0x103b,0x103b,
+0x2d,0x2d,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x103e,0x103e,0x103e,0x103e,
+0x103e,0x103e,0x187e,0x187e,0x187e,0x1041,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x30,0x1b5a,0xa92,0xa92,
+0x30,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa98,0xa98,0xa9b,0xa9b,0xa9b,
+0xa9b,0xa9b,0xa9b,0x30,0x30,0x30,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa98,0xa9b,
+0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0x30,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,
+0xa9b,0xa9b,0xa9b,0xa9b,0x30,0xa9b,0x30,0x30,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0x30,
+0x30,0x30,0xa89,0x30,0x30,0x30,0x30,0xa86,0xa92,0xa92,0xa86,0xa86,0xa86,0x30,0xa86,0x30,
+0xa92,0xa92,0xa95,0xa92,0xa95,0xa95,0xa95,0xa83,0x30,0x30,0x30,0x30,0x30,0x30,0x15a5,0x15a5,
+0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x30,0x30,0xa92,0xa8f,0xa8c,0x30,0x30,0x30,
+0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x33,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,
+0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,
+0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4c8,0x4dd,0x4da,0x4c8,0x4c8,0x4c8,0x4c8,
+0x4c8,0x4c8,0x4ce,0x33,0x33,0x33,0x33,0x4c5,0x4e3,0x4e3,0x4e3,0x4e3,0x4e3,0x4dd,0x4e0,0x4cb,
+0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4c8,0x4cb,0x4d1,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,
+0x4d7,0x4d7,0x4d4,0x4d4,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
-0x36,0x4b9,0x4b9,0x36,0x4b9,0x36,0x19d7,0x4b9,0x4b9,0x19d7,0x4b9,0x36,0x19d7,0x4b9,0x19d7,0x19d7,
-0x19d7,0x19d7,0x19d7,0x19d7,0x4b9,0x4b9,0x4b9,0x4b9,0x19d7,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,
-0x19d7,0x4b9,0x4b9,0x4b9,0x36,0x4b9,0x36,0x4b9,0x19d7,0x19d7,0x4b9,0x4b9,0x19d7,0x4b9,0x4b9,0x4b9,
-0x4b9,0x4ad,0x4b9,0x4b6,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x19d4,0x4ad,0x4ad,0x4b9,0x36,0x36,
-0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x36,0x4bf,0x36,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4ad,0x1bde,0x36,
-0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x36,0x36,0x4bc,0x4bc,0x13e0,0x13e0,
-0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+0x33,0x33,0x33,0x33,0x36,0x4f5,0x4f5,0x36,0x4f5,0x36,0x1ab8,0x4f5,0x4f5,0x1ab8,0x4f5,0x36,
+0x1ab8,0x4f5,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x4f5,0x4f5,0x4f5,0x4f5,0x1ab8,0x4f5,0x4f5,0x4f5,
+0x4f5,0x4f5,0x4f5,0x4f5,0x1ab8,0x4f5,0x4f5,0x4f5,0x36,0x4f5,0x36,0x4f5,0x1ab8,0x1ab8,0x4f5,0x4f5,
+0x1ab8,0x4f5,0x4f5,0x4f5,0x4f5,0x4e6,0x4f5,0x4ef,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x1ab5,0x4e6,
+0x4e6,0x4f5,0x36,0x36,0x4fb,0x4fb,0x4fb,0x4fb,0x4fb,0x36,0x4f8,0x36,0x4e9,0x4e9,0x4e9,0x4e9,
+0x4e9,0x4e6,0x1ccb,0x36,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0x36,0x36,
+0x4f2,0x4f2,0x14af,0x14af,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
-0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x39,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,
-0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,
-0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99f,0xa38,0xfab,0xfab,0x39,0x39,0x39,
-0x39,0x966,0x966,0x969,0x966,0x969,0x969,0x975,0x969,0x975,0x966,0x966,0x966,0x966,0x966,0x996,
-0x966,0x969,0x96f,0x96f,0x972,0x97b,0x96c,0x96c,0x99c,0x99c,0x99c,0x99c,0x1311,0x130b,0x130b,0x130b,
-0x966,0x966,0x966,0x969,0x966,0x966,0xa2c,0x966,0x39,0x966,0x966,0x966,0x966,0x969,0x966,0x966,
-0x966,0x966,0x969,0x966,0x966,0x966,0x966,0x969,0x966,0x966,0x966,0x966,0x969,0x966,0xa2c,0xa2c,
-0xa2c,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0xa2c,0x969,0xa2c,0xa2c,0xa2c,0x39,0xa35,0xa35,
-0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa2f,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0x39,0xfa2,0xa32,
-0xdad,0xdad,0xfa5,0xfa8,0xfa2,0x112e,0x112e,0x112e,0x112e,0x130e,0x130e,0x39,0x39,0x39,0x39,0x39,
+0x36,0x36,0x36,0x36,0x9fc,0x9fc,0x9fc,0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,0x39,0x9fc,0x9fc,0x9fc,
+0x9fc,0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,
+0x9f9,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9fc,0x9f9,0xaaa,0x1050,
+0x1050,0x39,0x39,0x39,0x39,0x9bd,0x9bd,0x9ba,0x9bd,0x9ba,0x9ba,0x9cf,0x9ba,0x9cf,0x9bd,0x9bd,
+0x9bd,0x9bd,0x9bd,0x9f3,0x9bd,0x9ba,0x9c9,0x9c9,0x9cc,0x9d5,0x9c6,0x9c6,0x9fc,0x9fc,0x9fc,0x9fc,
+0x13da,0x13d4,0x13d4,0x13d4,0x9bd,0x9bd,0x9bd,0x9ba,0x9bd,0x9bd,0xa9e,0x9bd,0x39,0x9bd,0x9bd,0x9bd,
+0x9bd,0x9ba,0x9bd,0x9bd,0x9bd,0x9bd,0x9ba,0x9bd,0x9bd,0x9bd,0x9bd,0x9ba,0x9bd,0x9bd,0x9bd,0x9bd,
+0x9ba,0x9bd,0xa9e,0xa9e,0xa9e,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0xa9e,0x9ba,0xa9e,0xa9e,
+0xa9e,0x39,0xaa7,0xaa7,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa1,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,
+0xaa4,0x39,0x1047,0xaa4,0xe31,0xe31,0x104a,0x104d,0x1047,0x11f4,0x11f4,0x11f4,0x11f4,0x13d7,0x13d7,0x39,
0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
-0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x4c8,0x4c8,0x4c8,0x4c8,
-0x4c8,0x4c8,0x3c,0x13e6,0x3c,0x3c,0x3c,0x3c,0x3c,0x13e6,0x3c,0x3c,0x4c5,0x4c5,0x4c5,0x4c5,
-0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0x3f,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
-0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,
-0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0x1314,0x1314,0xdb6,
-0xdb9,0xa5c,0xa65,0xa59,0xa59,0xa59,0xa59,0xa65,0xa65,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,
-0xa5f,0xa5f,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0x3f,0x3f,0x3f,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa68,0xa68,0xa68,0xa68,0xa68,0x16e6,0x42,0x42,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x42,0x42,
-0xa7a,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,
-0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa77,0xa74,0x45,0x45,0x45,
-0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa80,0xa80,0xa80,0xa83,0xa83,
-0xa83,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
-0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xa86,0xaa4,0xaa4,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa8c,0xa89,0xaad,0xaad,0xa9e,0xaa7,0xa95,0xa92,0xa9b,0xa98,0xaa7,0xcd5,0x4b,0x4b,
-0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
-0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
-0xab9,0xab9,0xb31,0xb34,0xabf,0xb2e,0xabc,0xab9,0xac2,0xad1,0xac5,0xad4,0xad4,0xad4,0xab0,0x1b1b,
-0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0x190b,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xab3,0xfc9,0x4e,0x4e,0x4e,0x4e,0x4e,
-0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x51,0x51,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x4e9,0x51,0x4e9,0x51,0x4e9,0x51,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e0,0x4e6,0x4e0,
-0x4e0,0x4dd,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4dd,0x4dd,0x4dd,
-0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x51,0x4dd,0x4dd,0x4dd,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4dd,0x4dd,0x4dd,
-0x51,0x51,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e3,0x4e0,0x51,
-0xba9,0xbac,0xbac,0xbac,0xfd2,0x54,0x14b2,0x14b2,0x14b2,0x14b2,0x4f2,0x4f2,0x4f2,0x4f2,0x4f2,0x4f2,
-0x53d,0xbbe,0x57,0x57,0x6d8,0x53d,0x53d,0x53d,0x53d,0x53d,0x543,0x555,0x543,0x54f,0x549,0x6db,
-0x53a,0x6d5,0x6d5,0x6d5,0x6d5,0x53a,0x53a,0x53a,0x53a,0x53a,0x540,0x552,0x540,0x54c,0x546,0x57,
-0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x57,0x57,0x57,
-0x1b1e,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
-0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x561,0x561,0x561,
-0x561,0x564,0xae0,0xae0,0xbc4,0xbca,0xbca,0xbc7,0xbc7,0xbc7,0xbc7,0xdcb,0xedc,0xedc,0xedc,0xedc,
-0x1119,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
-0x594,0x594,0x594,0xae9,0xee5,0xfd8,0xfd8,0xfd8,0xfd8,0x1275,0x16ec,0x16ec,0x60,0x60,0x60,0x60,
-0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x5a0,0x5a0,0x59d,0x59d,0x59d,0x59d,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0xaf2,0xaf2,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+0x501,0x501,0x501,0x501,0x501,0x501,0x3c,0x14b5,0x3c,0x3c,0x3c,0x3c,0x3c,0x14b5,0x3c,0x3c,
+0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0x3f,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xe40,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0x3f,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,0x3f,0x3f,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xe40,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0x3f,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0x3f,0xad4,0xad4,
+0xad4,0xad4,0x3f,0x3f,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0x3f,
+0x3f,0x13dd,0x13dd,0xe3a,0xe3d,0xace,0xad7,0xacb,0xacb,0xacb,0xacb,0xad7,0xad7,0xad1,0xad1,0xad1,
+0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,
+0xac8,0x3f,0x3f,0x3f,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,
+0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0x17c4,0x42,0x42,0x17c1,0x17c1,0x17c1,0x17c1,
+0x17c1,0x17c1,0x42,0x42,0xaec,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
+0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xae9,
+0xae6,0x45,0x45,0x45,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf2,
+0xaf2,0xaf2,0xaf5,0xaf5,0xaf5,0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x48,0x48,0x48,
+0x48,0x48,0x48,0x48,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xaf8,0xb1f,0xb1f,0xb04,0xb04,0xb04,
+0xb04,0xb04,0xafe,0xafe,0xb04,0xb01,0xb07,0xafb,0xb2b,0xb2b,0xb19,0xb25,0xb13,0xb0d,0xb16,0xb10,
+0xb25,0xd56,0x4b,0x4b,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0x4b,0x4b,
+0x4b,0x4b,0x4b,0x4b,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0x4b,0x4b,
+0x4b,0x4b,0x4b,0x4b,0xb37,0xb37,0xbaf,0xbb2,0xb3d,0xbac,0xb3a,0xb37,0xb40,0xb4f,0xb43,0xb52,
+0xb52,0xb52,0xb2e,0x1c08,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0x4e,0x4e,
+0x4e,0x4e,0x4e,0x4e,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0x19e9,0x4e,0x4e,0x4e,
+0x4e,0x4e,0x4e,0x4e,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb31,0x106e,0x4e,
+0x4e,0x4e,0x4e,0x4e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
+0x124e,0x124e,0x124e,0x124e,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,
+0x52b,0x52b,0x52b,0x52b,0x528,0x528,0x528,0x528,0x528,0x528,0x51,0x51,0x52b,0x52b,0x52b,0x52b,
+0x52b,0x52b,0x51,0x51,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x51,0x52b,0x51,0x52b,
+0x51,0x52b,0x51,0x52b,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,
+0x52b,0x52b,0x52b,0x52b,0x528,0x522,0x528,0x522,0x528,0x522,0x528,0x522,0x528,0x522,0x528,0x522,
+0x528,0x522,0x51,0x51,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,
+0x52b,0x52b,0x52b,0x52b,0x528,0x528,0x528,0x528,0x528,0x51,0x528,0x528,0x52b,0x52b,0x52b,0x525,
+0x52b,0x51c,0x522,0x51c,0x51c,0x519,0x528,0x528,0x528,0x51,0x528,0x528,0x52b,0x525,0x52b,0x525,
+0x52b,0x519,0x519,0x519,0x528,0x528,0x528,0x522,0x51,0x51,0x528,0x528,0x52b,0x52b,0x52b,0x525,
+0x51,0x519,0x519,0x519,0x528,0x528,0x528,0x522,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x525,
+0x52b,0x519,0x519,0x519,0x51,0x51,0x528,0x528,0x528,0x51,0x528,0x528,0x52b,0x525,0x52b,0x525,
+0x52b,0x51f,0x51c,0x51,0xc27,0xc2a,0xc2a,0xc2a,0x107a,0x54,0x1584,0x1584,0x1584,0x1584,0x534,0x534,
+0x534,0x534,0x534,0x534,0x57f,0xc3c,0x57,0x57,0x726,0x57f,0x57f,0x57f,0x57f,0x57f,0x585,0x597,
+0x585,0x591,0x58b,0x729,0x57c,0x723,0x723,0x723,0x723,0x57c,0x57c,0x57c,0x57c,0x57c,0x582,0x594,
+0x582,0x58e,0x588,0x57,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,
+0x13e0,0x57,0x57,0x57,0x1c0b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+0x5a,0x5a,0x5a,0x5a,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,
+0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0xb5e,0xb5e,0xc42,0xc48,0xc48,0xc45,0xc45,0xc45,0xc45,0xe52,
+0xf69,0xf69,0xf69,0xf69,0x11df,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+0x5d,0x5d,0x5d,0x5d,0x5d6,0x5d6,0x5d6,0xb67,0xf72,0x1080,0x1080,0x1080,0x1080,0x133e,0x17ca,0x17ca,
+0x60,0x60,0x60,0x60,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x5e5,0x5e5,
+0x5e2,0x5e2,0x5e2,0x5e2,0x606,0x606,0x606,0x606,0x606,0xb70,0xb70,0x63,0x63,0x63,0x63,0x63,
0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
-0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x66,0x66,0x66,0x66,0x66,
+0x63,0x63,0x63,0x63,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x66,
0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0x69,0xb0d,0xb0d,0xb0d,0xb0d,0xb10,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb10,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
-0x6f,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81f,0x81c,0x81f,0x81c,
-0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,
-0x81c,0x81c,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x822,0x81c,
-0x81c,0x81c,0x81c,0x81c,0x81f,0xc63,0xc63,0x6f,0x6f,0x936,0x936,0x8fd,0x8fd,0x825,0x828,0xc60,
-0x72,0x72,0x72,0x72,0x72,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,
-0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,
-0x83a,0x1107,0x18d2,0x19bc,0x75,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x75,0x906,0x906,0x909,0x909,0x909,0x909,0x909,0x909,
-0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
-0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
-0x846,0x846,0x846,0x846,0x846,0xd5f,0xd5f,0x78,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb25,0xb25,0x7b,0x7b,0x7b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
-0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0x7e,
-0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,
-0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x9c0,0x9c0,0x9c0,0x9c0,0x81,0x81,0x81,0x81,
-0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,
-0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x84,
-0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,
-0x84,0x84,0x84,0x84,0x84,0xafe,0x5fa,0x600,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,
-0x606,0x5fd,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x84,
-0x600,0x600,0x600,0x600,0x600,0x84,0x600,0x84,0x600,0x600,0x84,0x600,0x600,0x84,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x603,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x1329,0x1329,0x1b21,0x87,0x87,0x87,0x87,0x87,
-0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x615,0x60f,0x612,0x618,0x615,
-0x60f,0x615,0x60f,0x615,0x60f,0x615,0x615,0x60f,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x612,0x60f,
-0x612,0x612,0x612,0x60f,0x612,0x612,0x612,0x612,0x87,0x87,0x612,0x612,0x612,0x612,0x60f,0x60f,
-0x612,0x60f,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x60f,0x60f,
-0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x1b21,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
-0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0x85e,0x870,0x86d,0x870,0x86d,0xc81,0xc81,0xd6b,
-0xd68,0x861,0x861,0x861,0x861,0x873,0x873,0x873,0x88b,0x88e,0x89d,0x8a,0x891,0x894,0x8a0,0x8a0,
-0x888,0x87f,0x879,0x87f,0x879,0x87f,0x879,0x87c,0x87c,0x897,0x897,0x89a,0x897,0x897,0x897,0x8a,
-0x897,0x885,0x882,0x87c,0x8a,0x8a,0x8a,0x8a,0x621,0x62d,0x621,0xbfd,0x621,0x8d,0x621,0x62d,
-0x621,0x62d,0x621,0x62d,0x621,0x62d,0x621,0x62d,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,
-0x624,0x62a,0x624,0x62a,0x624,0x8d,0x8d,0x61e,0x75f,0x762,0x777,0x77a,0x759,0x762,0x762,0x93,
-0x741,0x744,0x744,0x744,0x744,0x741,0x741,0x93,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
-0x90,0xb01,0xb01,0xb01,0x9c3,0x73b,0x630,0x630,0x93,0x789,0x768,0x759,0x762,0x75f,0x759,0x76b,
-0x75c,0x756,0x759,0x777,0x76e,0x765,0x786,0x759,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,
-0x783,0x783,0x774,0x771,0x777,0x777,0x777,0x789,0x74a,0x747,0x747,0x747,0x747,0x747,0x747,0x747,
-0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,
-0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x93,0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,
-0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,
-0x93,0x93,0x747,0x747,0x747,0x93,0x93,0x93,0xb4c,0xb4c,0xb4c,0xb4c,0x96,0x96,0x96,0x96,
-0x96,0x96,0x96,0x96,0x96,0x186f,0x186f,0x186f,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,
-0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0x99,0x99,0x99,0x99,0x99,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0x9f,0x9f,0xfe4,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x1b24,0x1b24,0x9f,0x9f,0x9f,0x9f,0x9f,
+0x66,0x66,0x66,0x66,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0x69,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8e,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8e,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+0x69,0x69,0x69,0x69,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
+0x6c,0x6c,0x6c,0x6c,0x6f,0x873,0x86d,0x873,0x86d,0x873,0x86d,0x873,0x86d,0x873,0x86d,0x86d,
+0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,0x870,0x86d,
+0x870,0x86d,0x870,0x86d,0x86d,0x86d,0x86d,0x873,0x86d,0x873,0x86d,0x873,0x86d,0x86d,0x86d,0x86d,
+0x86d,0x86d,0x873,0x86d,0x86d,0x86d,0x86d,0x86d,0x870,0xce1,0xce1,0x6f,0x6f,0x98a,0x98a,0x951,
+0x951,0x876,0x879,0xcde,0x72,0x72,0x72,0x72,0x72,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,
+0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,
+0x88b,0x88b,0x88b,0x88b,0x88b,0x11cd,0x19b0,0x1a9d,0x75,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x75,0x95a,0x95a,0x95d,0x95d,
+0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x897,0x897,0x897,0x897,
+0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,
+0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0x897,0xde0,0xde0,0x78,0xba3,0xba3,0xba3,0xba3,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0x7b,0x7b,0x7b,0xba9,0xba9,0xba9,0xba9,
+0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xcea,0xba9,0xba9,
+0xba9,0xcea,0xba9,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x1275,0x1275,0x1275,0x1275,
+0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0xa1d,0xa1d,0xa1d,0xa1d,
+0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x12ea,0x12ea,0x12ea,0x12ea,
+0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x64e,0x64e,0x64e,0x64e,
+0x64e,0x64e,0x64e,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x63c,
+0x63c,0x63c,0x63c,0x63c,0x84,0x84,0x84,0x84,0x84,0xb7c,0x63f,0x645,0x64b,0x64b,0x64b,0x64b,
+0x64b,0x64b,0x64b,0x64b,0x64b,0x642,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,
+0x645,0x645,0x645,0x84,0x645,0x645,0x645,0x645,0x645,0x84,0x645,0x84,0x645,0x645,0x84,0x645,
+0x645,0x84,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x648,0x65a,0x654,0x65a,0x654,
+0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x13f2,0x13f2,0x1c0e,0x87,
+0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x65a,
+0x654,0x657,0x65d,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x65a,0x654,0x654,0x654,0x654,0x657,
+0x654,0x654,0x657,0x654,0x657,0x657,0x657,0x654,0x657,0x657,0x657,0x657,0x87,0x87,0x657,0x657,
+0x657,0x657,0x654,0x654,0x657,0x654,0x654,0x654,0x654,0x657,0x654,0x654,0x654,0x654,0x654,0x657,
+0x657,0x657,0x654,0x654,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x1c0e,0xbc7,0xbc7,0xbc7,0xbc7,
+0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0x8af,0x8c1,0x8be,0x8c1,
+0x8be,0xcff,0xcff,0xdec,0xde9,0x8b2,0x8b2,0x8b2,0x8b2,0x8c4,0x8c4,0x8c4,0x8dc,0x8df,0x8ee,0x8a,
+0x8e2,0x8e5,0x8f1,0x8f1,0x8d9,0x8d0,0x8ca,0x8d0,0x8ca,0x8d0,0x8ca,0x8cd,0x8cd,0x8e8,0x8e8,0x8eb,
+0x8e8,0x8e8,0x8e8,0x8a,0x8e8,0x8d6,0x8d3,0x8cd,0x8a,0x8a,0x8a,0x8a,0x666,0x672,0x666,0xc7b,
+0x666,0x8d,0x666,0x672,0x666,0x672,0x666,0x672,0x666,0x672,0x666,0x672,0x672,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x8d,0x8d,0x663,0x7ad,0x7b0,0x7c5,0x7c8,
+0x7a7,0x7b0,0x7b0,0x93,0x78f,0x792,0x792,0x792,0x792,0x78f,0x78f,0x93,0x90,0x90,0x90,0x90,
+0x90,0x90,0x90,0x90,0x90,0xb7f,0xb7f,0xb7f,0xa20,0x789,0x675,0x675,0x93,0x7d7,0x7b6,0x7a7,
+0x7b0,0x7ad,0x7a7,0x7b9,0x7aa,0x7a4,0x7a7,0x7c5,0x7bc,0x7b3,0x7d4,0x7a7,0x7d1,0x7d1,0x7d1,0x7d1,
+0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7c2,0x7bf,0x7c5,0x7c5,0x7c5,0x7d7,0x798,0x795,0x795,0x795,
+0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,
+0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x93,0x93,0x93,0x795,0x795,
+0x795,0x795,0x795,0x795,0x93,0x93,0x795,0x795,0x795,0x795,0x795,0x795,0x93,0x93,0x795,0x795,
+0x795,0x795,0x795,0x795,0x93,0x93,0x795,0x795,0x795,0x93,0x93,0x93,0xbca,0xbca,0xbca,0xbca,
+0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x194d,0x194d,0x194d,0xbd0,0xbd0,0xbd0,0xbd0,
+0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0x99,
+0x99,0x99,0x99,0x99,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,
+0x1713,0x1713,0x1713,0x1713,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,
+0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+0x9c,0x9c,0x9c,0x9c,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0x9f,0x9f,0x108c,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x1c11,0x1c11,0x9f,
0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xa2,0xb7f,0xb7f,
-0xa2,0xa2,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb7c,0xa2,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,
-0xb7c,0xcf3,0xb7c,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xa2,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xddd,0xddd,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb76,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xef4,0xef1,0xa2,0xa2,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xa5,0xb85,0xa5,0xa5,
+0x9f,0x9f,0x9f,0x9f,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfd,0xa2,0xbfd,0xbfd,0xa2,0xa2,0xbfd,0xa2,0xa2,0xbfd,0xbfd,0xa2,0xa2,0xbfd,0xbfd,0xbfd,
+0xbfd,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfa,0xbfa,0xbfa,0xbfa,0xa2,0xbfa,
+0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xd74,0xbfa,0xbfa,0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xa2,
+0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xa2,0xbfd,
+0xbfd,0xbfd,0xbfd,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xa2,0xbfd,0xa2,0xa2,0xa2,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xa2,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xe64,0xe64,0xa2,0xa2,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfa,0xbfa,0xbfa,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xf81,0xf7e,0xa2,0xa2,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xa5,0xc03,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,
0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,
-0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xc0c,0xc0c,0xc0c,0xc0c,
-0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0x1b2a,0xc0c,0xc0c,0xc0c,0xc0c,0xc06,0xc06,
-0xc09,0x1b27,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x1b2a,0xc15,0xc15,0xc15,0xc15,
-0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc0f,0xc0f,
-0xc12,0xc75,0xc75,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xc1b,0xc1b,0xc1b,0xc1b,
-0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc18,0xc18,
-0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xc21,0xc21,0xc21,0xc21,
-0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xb1,0xc21,0xc21,0xc21,0xb1,0xc1e,0xc1e,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd05,0xd05,0xd05,0xd05,
-0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,
-0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0x14f1,0x14f1,0xb4,0xcf6,0xcf6,0xcf6,0xd02,
-0xd02,0xd02,0xd02,0xcf6,0xcf6,0xd02,0xd02,0xd02,0xb4,0xb4,0xb4,0xb4,0xd02,0xd02,0xcf6,0xd02,
-0xd02,0xd02,0xd02,0xd02,0xd02,0xcf9,0xcf9,0xcf9,0xb4,0xb4,0xb4,0xb4,0xcfc,0xb4,0xb4,0xb4,
-0xd08,0xd08,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xd0b,0xd0b,0xd0b,0xd0b,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xb7,0xb7,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0xba,0xba,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0xba,0x1a76,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xbd,
-0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xbd,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
+0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0x1c17,0xc8a,0xc8a,
+0xc8a,0xc8a,0xc84,0xc84,0xc87,0x1c14,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x1c17,
+0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,0xc93,
+0xc93,0xc93,0xc8d,0xc8d,0xc90,0xcf3,0xcf3,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,
+0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,
+0xc99,0xc99,0xc96,0xc96,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xb1,0xc9f,0xc9f,
+0xc9f,0xb1,0xc9c,0xc9c,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,
+0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0x15c9,0x15c9,0xb4,
+0xd77,0xd77,0xd77,0xd83,0xd83,0xd83,0xd83,0xd77,0xd77,0xd83,0xd83,0xd83,0xb4,0xb4,0xb4,0xb4,
+0xd83,0xd83,0xd77,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd7a,0xd7a,0xd7a,0xb4,0xb4,0xb4,0xb4,
+0xd7d,0xb4,0xb4,0xb4,0xd89,0xd89,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,
+0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,
+0xd8c,0xd8c,0xb7,0xb7,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,
+0xb7,0xb7,0xb7,0xb7,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0xba,0xba,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0xba,0x1b5d,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xbd,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xbd,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xbd,0xdb0,0xdb0,0xbd,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xbd,0xbd,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,
+0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xdb0,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
-0xbd,0xbd,0xbd,0xbd,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
-0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xc0,
-0xc0,0xc0,0xc0,0xc0,0xd71,0xd71,0xd77,0xc3,0xc3,0xc3,0xc3,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,
-0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,
-0xd6e,0xd6e,0xd6e,0xd6e,0xc3,0xc3,0xc3,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,
-0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,
-0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xc6,0xd35,
-0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,
-0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xc9,0xc9,
-0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
-0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
-0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xcc,0xcc,0xd44,0xcc,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
-0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
-0xd44,0xd44,0xcc,0xd44,0xd44,0xcc,0xcc,0xcc,0xd44,0xcc,0xcc,0xd44,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0x14f7,0x14f7,0x17a9,0x17a9,0xd5,0x10e6,0x10e6,0x10e6,0x10e6,
-0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x1a85,0x126,0x126,0x126,0xe0a,0xe0a,0xe0a,0xe0a,
-0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,
-0xe0a,0xe0a,0xe0a,0xe01,0xe01,0xe07,0xe07,0xe01,0xd8,0xd8,0xe04,0xe04,0x1113,0x1113,0x1113,0x1113,
-0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0x1c56,0xc72,0xc72,0xc72,0xc72,
-0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xe1c,0xe19,0xe1c,0xe19,
-0xe19,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0x1161,0x115e,0x1161,0x115e,0x115b,0x115b,0x115b,0x13ef,0x13ec,
-0xde,0xde,0xde,0xde,0xde,0xe16,0xe13,0xe13,0xe13,0xe10,0xe16,0xe13,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1,0xe25,0xe25,0xe25,0xe25,
-0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe22,0xe22,0xe22,0xe22,
-0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe7,0x13f2,0xe7,0xe7,0xe7,0xe7,0xe7,0x13f2,0xe7,0xe7,0xe7f,0xe7f,0xe7f,0xe7f,
-0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe40,0xe34,0xe34,0xe34,
-0xea,0xe34,0xe34,0xea,0xea,0xea,0xea,0xea,0xe34,0xe34,0xe34,0xe34,0xe40,0xe40,0xe40,0xe40,
-0xea,0xe40,0xe40,0xe40,0xea,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,
-0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0x1914,0x1914,0xea,0xea,
-0xe31,0xe31,0xe31,0xea,0xea,0xea,0xea,0xe37,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,
-0x1911,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe43,0xe43,
-0xe3a,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0x1167,0x1167,0xed,0xed,0xed,0xed,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe52,0xe52,0xe52,
-0xe4f,0xe4f,0xe52,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xed,0xed,
-0xed,0xed,0xed,0xed,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0x1164,0xed,
-0xed,0xed,0xe49,0xe49,0xe58,0xe58,0xe58,0xe58,0xf0,0xf0,0xf0,0xf0,0xe58,0xe58,0xe58,0xe58,
-0xe58,0xe58,0xe58,0xe58,0xe55,0xe58,0xe58,0xe58,0xe58,0xe58,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
-0xf0,0xf0,0xf0,0xf0,0x1506,0x150c,0x1509,0x1854,0x17af,0x1878,0x1878,0x1878,0x1878,0x1878,0x191a,0x1917,
-0x191d,0x1917,0x191d,0x19dd,0x1a79,0x1a79,0x1a79,0x1b3c,0x1b3c,0x1b36,0x1b33,0x1b36,0x1b33,0x1b36,0x1b33,0x1b36,
-0x1b33,0x1b39,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
+0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,
+0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,
+0xdb3,0xdb3,0xdb3,0xc0,0xc0,0xc0,0xc0,0xc0,0xdf2,0xdf2,0xdf8,0xc3,0xc3,0xc3,0xc3,0xdef,
+0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,
+0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xc3,0xc3,0xc3,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
+0xdf5,0xdf5,0xdf5,0xdf5,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,
+0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,
+0xdb9,0xdb9,0xc6,0xdb6,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,
+0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,
+0xdc2,0xdc2,0xc9,0xc9,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xc9,0xc9,
+0xc9,0xc9,0xc9,0xc9,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,
+0x1911,0x1911,0x1911,0x1911,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xcc,0xcc,0xdc5,0xcc,0xdc5,0xdc5,
+0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,
+0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xcc,0xdc5,0xdc5,0xcc,0xcc,0xcc,0xdc5,0xcc,0xcc,0xdc5,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,
+0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0x15cf,0x15cf,0x1887,0x1887,0xd5,
+0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x1b72,0x126,0x126,0x126,
+0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,
+0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe88,0xe88,0xe8e,0xe8e,0xe88,0xd8,0xd8,0xe8b,0xe8b,
+0x11d9,0x11d9,0x11d9,0x11d9,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0x1d43,
+0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,
+0xea3,0xea0,0xea3,0xea0,0xea0,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0x122a,0x1227,0x122a,0x1227,0x1221,
+0x1224,0x1224,0x14be,0x14bb,0xde,0xde,0xde,0xde,0xde,0xe9d,0xe9a,0xe9a,0xe9a,0xe97,0xe9d,0xe9a,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe1,
+0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,0xeac,
+0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xea9,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,
+0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xe7,0x14c1,0xe7,0xe7,0xe7,0xe7,0xe7,0x14c1,0xe7,0xe7,
+0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
+0xec7,0xebb,0xebb,0xebb,0xea,0xebb,0xebb,0xea,0xea,0xea,0xea,0xea,0xebb,0xebb,0xebb,0xebb,
+0xec7,0xec7,0xec7,0xec7,0xea,0xec7,0xec7,0xec7,0xea,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,
+0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,0xec7,
+0x19f2,0x19f2,0xea,0xea,0xeb8,0xeb8,0xeb8,0xea,0xea,0xea,0xea,0xebe,0xec1,0xec1,0xec1,0xec1,
+0xec1,0xec1,0xec1,0xec1,0x19ef,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xec4,0xec4,0xec4,0xec4,
+0xec4,0xec4,0xeca,0xeca,0xec1,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xed6,0xed6,0xed6,0xed6,
+0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0x1230,0x1230,0xed,0xed,0xed,0xed,0xed6,0xed6,0xed6,0xed6,
+0xed6,0xed9,0xed9,0xed9,0xed6,0xed6,0xed9,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,
+0xed6,0xed6,0xed,0xed,0xed,0xed,0xed,0xed,0xed3,0xed3,0xed3,0xed3,0xed3,0xed3,0xed3,0xed3,
+0xed3,0xed3,0x122d,0xed,0xed,0xed,0xed0,0xed0,0xedf,0xedf,0xedf,0xedf,0xf0,0xf0,0xf0,0xf0,
+0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedc,0xedf,0xedf,0xedf,0xedf,0xedf,0xf0,0xf0,
+0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x15de,0x15e4,0x15e1,0x1932,0x188d,0x1956,0x1956,0x1956,
+0x1956,0x1956,0x19f8,0x19f5,0x19fb,0x19f5,0x19fb,0x1abe,0x1b60,0x1b60,0x1b60,0x1c29,0x1c29,0x1c23,0x1c20,0x1c23,
+0x1c20,0x1c23,0x1c20,0x1c23,0x1c20,0x1c26,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
-0xf3,0xf3,0xf3,0xf3,0xe7c,0xe7c,0xe7c,0xe79,0xe79,0xe70,0xe70,0xe79,0xe76,0xe76,0xe76,0xe76,
-0x1a7c,0xf6,0xf6,0xf6,0x12cc,0x12cc,0x12cc,0x12cf,0x12cf,0x12cf,0x12d2,0x12d2,0x12d5,0x12d2,0x14a,0x14a,
-0x14a,0x14a,0x14a,0x14a,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0x13fe,0x13fe,0xf9,0xf9,0xf9,0xf9,
-0xf9,0xf9,0xf9,0xe82,0x133b,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
-0xf9,0xf9,0xf9,0x1338,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
-0xc45,0xc45,0xc45,0xc45,0xeaf,0xea0,0xe9a,0xeac,0xea9,0xea3,0xea3,0xeb2,0xe9d,0xea6,0xfc,0xfc,
-0xfc,0xfc,0xfc,0xfc,0xf36,0xf36,0xf21,0xf36,0xf39,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,
-0x1b3f,0x102,0x102,0x102,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf42,0xf42,
-0xf2a,0xf2d,0xf42,0xf42,0xf27,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf24,
-0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,
-0xf2a,0x1b42,0x1b42,0x102,0x1b4b,0x1b45,0x19e3,0x19e0,0x19e3,0x19e3,0x19e3,0x1a82,0x1a7f,0x1a82,0x1a7f,0x105,
-0x105,0x105,0x105,0x105,0x1b4b,0x1b45,0x105,0x1b45,0x105,0x1b45,0x1b4b,0x1b45,0x1b4b,0x1b45,0x105,0x105,
-0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
-0x105,0x105,0x1b48,0x1b48,0x1b48,0x1a82,0x1a7f,0x1515,0x1407,0x1407,0x133e,0x103e,0x103e,0x103e,0x103e,0x103e,
-0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
-0xf51,0xf51,0xf51,0xf51,0xf4e,0xf4e,0xf54,0xf54,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,
-0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,
-0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf57,0xf57,0xf57,0xf57,0x1170,0x1170,0x10b,0x10b,0x10b,0xf5a,
-0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,
-0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x1701,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,
+0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf06,0xf06,0xf06,0xf03,0xf03,0xefa,0xefa,0xf03,
+0xf00,0xf00,0xf00,0xf00,0x1b63,0xf6,0xf6,0xf6,0x1395,0x1395,0x1395,0x1398,0x1398,0x1398,0x139b,0x139b,
+0x139e,0x139b,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0x14d0,0x14d0,
+0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf0c,0x1404,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
+0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0x1401,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,
+0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xf3c,0xf2d,0xf27,0xf39,0xf36,0xf30,0xf30,0xf3f,
+0xf2a,0xf33,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc9,0xfc9,0xfb1,0xfc9,0xfcc,0xfcf,0xfcf,0xfcf,
+0xfcf,0xfcf,0xfcf,0xfcf,0x1c2c,0x102,0x102,0x102,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,
+0xfc3,0xfc3,0xfd5,0xfd5,0xfbd,0xfc0,0xfd5,0xfd5,0xfba,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,
+0xfbd,0xfbd,0xfbd,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfbd,0xfbd,0xfbd,0xfbd,
+0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0x1c2f,0x1c2f,0x102,0x1c38,0x1c35,0x1aca,0x1ac7,0x1aca,0x1aca,0x1aca,0x1b6f,
+0x1b6c,0x1b6f,0x1b6c,0x105,0x105,0x105,0x105,0x105,0x1c38,0x1c35,0x105,0x1c35,0x105,0x1c35,0x1c38,0x1c35,
+0x1c38,0x1c35,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
+0x105,0x105,0x105,0x105,0x105,0x105,0x1c32,0x1c32,0x1c32,0x1b69,0x1b66,0x15ed,0x14d9,0x14d9,0x140d,0x10ef,
+0x10ef,0x10ef,0x10ef,0x10ef,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,
+0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xfed,0xfed,0xff3,0xff3,0x108,0x108,0x108,0x108,
+0x108,0x108,0x108,0x108,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,
+0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xff6,0xff6,0xff6,0xff6,0x1239,0x1239,
+0x10b,0x10b,0x10b,0xff9,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,
+0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x17df,0x10e,0x10e,
0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,
-0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0xf66,0xf66,0xf66,0x1521,
-0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x111,0xf63,0xf63,0xf63,0xf63,
-0x151e,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0xf69,0xf69,0xf69,0xf69,
-0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0x192c,0x192c,
-0x192c,0x192c,0x192c,0x192c,0x192c,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x1065,0x1065,0x1065,0x1065,
-0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,
-0x1062,0x1062,0x1059,0x1056,0x117,0x117,0x117,0x1068,0x1068,0x105c,0x105c,0x105c,0x105f,0x105f,0x105f,0x105f,
-0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,0x117,0x117,0x117,0x1065,0x1065,0x1065,0x106b,0x106b,0x106b,0x106b,
-0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x1080,0x1080,0x1080,0x1080,
-0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1083,0x1083,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,
-0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x10aa,0x10aa,0x10aa,0x10aa,
-0x10a4,0x17b5,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x10b0,0x10b0,0x10a7,0x10a7,0x10a7,0x10a7,
-0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x10ce,0x10ce,0x10ce,0x10ce,
-0x10ce,0x10ce,0x10ce,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c8,0x10cb,
-0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x10c5,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10da,0x10da,0x10d1,0x10d1,0x10da,
-0x10da,0x10d1,0x10d1,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x10dd,0x10dd,0x10dd,0x10d1,
-0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10d1,0x10da,0x123,0x123,0x10d7,0x10d7,0x10d7,0x10d7,
-0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x123,0x123,0x10d4,0x10e3,0x10e3,0x10e3,0x152d,0x126,0x126,0x126,
+0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,
+0x1005,0x1005,0x1005,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x111,
+0x1002,0x1002,0x1002,0x1002,0x15f6,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,
+0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,0x1008,
+0x1008,0x1008,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x114,0x114,0x114,0x114,0x114,0x114,0x114,
+0x1125,0x1125,0x1125,0x1125,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1113,0x1113,0x1113,0x1113,
+0x1113,0x1113,0x1113,0x1113,0x1122,0x1122,0x1119,0x1116,0x117,0x117,0x117,0x1128,0x1128,0x111c,0x111c,0x111c,
+0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x117,0x117,0x117,0x1125,0x1125,0x1125,
+0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,
+0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1140,0x1146,0x1146,0x11a,0x11a,0x11a,0x11a,
+0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,
+0x1170,0x1170,0x1170,0x1170,0x116a,0x1893,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x1176,0x1176,
+0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,
+0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,
+0x1188,0x1188,0x118e,0x1191,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x118b,
+0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x11a0,
+0x11a0,0x1197,0x1197,0x11a0,0x11a0,0x1197,0x1197,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,
+0x11a3,0x11a3,0x11a3,0x1197,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x1197,0x11a0,0x123,0x123,
+0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x123,0x123,0x119a,0x11a9,0x11a9,0x11a9,
+0x1605,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,
0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,
-0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x10e9,0x10e9,0x10e9,0x10e9,
-0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,
-0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10ec,0x129,0x129,0x10ef,0x10ef,0x10ef,0x10ef,
-0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,
-0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x12c,0x12c,0x12c,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x12f,0x12f,0x12f,
-0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x10f8,0x10f8,0x10f8,0x10f8,
-0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,
-0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x132,0x132,0x132,0x132,0x132,0x10f5,0x10fb,0x10fb,0x10fb,0x10fb,
-0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x135,0x135,0x135,0x135,0x10fe,0x10fe,0x10fe,0x10fe,
-0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,
-0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x1176,0x1176,0x1176,0x1176,
-0x117f,0x1176,0x1176,0x1176,0x117f,0x1176,0x1176,0x1176,0x1176,0x1173,0x13b,0x13b,0x117c,0x117c,0x117c,0x117c,
-0x117c,0x117c,0x117c,0x1182,0x117c,0x1182,0x117c,0x117c,0x117c,0x1182,0x1182,0x13b,0x1185,0x1185,0x1185,0x1185,
-0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
-0x1185,0x1185,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x119d,0x1188,0x119d,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x141,0x1191,0x119a,0x1188,0x119a,
-0x119a,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x1188,
-0x1188,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x141,0x141,0x118b,0x1197,0x1197,0x1197,0x1197,
-0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x141,0x141,0x141,0x141,0x141,0x141,0x1197,0x1197,0x1197,0x1197,
-0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x141,0x141,0x141,0x141,0x141,0x141,0x1194,0x1194,0x1194,0x1194,
-0x1194,0x1194,0x1194,0x11a3,0x11a6,0x11a6,0x11a6,0x11a6,0x1194,0x1194,0x141,0x141,0x156c,0x156c,0x156c,0x156c,
-0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x1569,0x1a97,0x12e7,0x12c0,0x12de,0x12de,
-0x12de,0x12de,0x12de,0x12de,0x12de,0x12c6,0x12c3,0x12ba,0x12ba,0x12e4,0x12ba,0x12ba,0x12ba,0x12ba,0x12c9,0x14a6,
-0x14ac,0x14a9,0x14a9,0x18f3,0x16c8,0x16c8,0x1a64,0x144,0x144,0x144,0x144,0x144,0x11bb,0x11bb,0x11bb,0x11bb,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11b2,0x11b2,0x11b5,0x11be,
-0x11b8,0x11b8,0x11b8,0x11be,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x12ab,0x12ab,0x12ab,0x12ab,
-0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,
-0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x14d,0x14d,0x14d,0x11dc,0x11d0,0x11d0,0x11d0,
-0x11d0,0x11d0,0x11d0,0x11d3,0x11e2,0x11e2,0x11d0,0x11d0,0x11d0,0x11d0,0x150,0x12db,0x11d6,0x11d6,0x11d6,0x11d6,
-0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x150,0x150,0x150,0x150,0x11d0,0x11d0,0x1200,0x11f4,0x1200,0x153,
-0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,
-0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x11fd,0x11fd,0x1203,0x11f7,0x11fa,0x1218,0x1218,0x1218,0x1212,
-0x1212,0x1209,0x1212,0x1212,0x1209,0x1212,0x1212,0x121b,0x1215,0x120c,0x156,0x156,0x120f,0x120f,0x120f,0x120f,
-0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x156,0x156,0x156,0x156,0x156,0x156,0x1221,0x1221,0x1221,0x1221,
-0x1221,0x1221,0x1221,0x159,0x159,0x159,0x159,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,
-0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,
-0x121e,0x121e,0x121e,0x121e,0x159,0x159,0x159,0x159,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
-0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x15c,0x1227,
-0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,
-0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x15f,0x15f,
-0x15f,0x1233,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,
-0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x162,0x162,
-0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,
-0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x165,0x165,0x165,0x165,0x165,
-0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,
-0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,
-0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x16b,0x1263,0x1263,0x1b4e,0x16e,0x16e,0x16e,0x16e,0x16e,
-0x16e,0x16e,0x16e,0x16e,0x16e,0x1935,0x16e,0x16e,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,
-0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,
-0x1836,0x1836,0x1836,0x1836,0x1836,0x1a88,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
+0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,
+0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11b2,0x129,0x129,
+0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,
+0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x12c,0x12c,0x12c,
+0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,
+0x11b8,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,
+0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,
+0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x132,0x132,0x132,0x132,0x132,0x11bb,
+0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x135,0x135,0x135,0x135,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11c4,0x11c4,0x11c4,0x11c4,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,
+0x123f,0x123f,0x123f,0x123f,0x1248,0x123f,0x123f,0x123f,0x1248,0x123f,0x123f,0x123f,0x123f,0x123c,0x13b,0x13b,
+0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x124b,0x1245,0x124b,0x1245,0x1245,0x1245,0x124b,0x124b,0x13b,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1266,0x1251,0x1266,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x141,
+0x125a,0x1263,0x1251,0x1263,0x1263,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1266,0x1266,0x1266,
+0x1266,0x1266,0x1266,0x1251,0x1251,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x141,0x141,0x1254,
+0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x141,0x141,0x141,0x141,0x141,0x141,
+0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x141,0x141,0x141,0x141,0x141,0x141,
+0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x126c,0x126f,0x126f,0x126f,0x126f,0x125d,0x125d,0x141,0x141,
+0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1644,0x1b84,
+0x13b0,0x1389,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x138f,0x138c,0x1383,0x1383,0x13ad,0x1383,0x1383,
+0x1383,0x1383,0x1392,0x1578,0x157e,0x157b,0x157b,0x19d1,0x17a6,0x17a6,0x1b4b,0x144,0x144,0x144,0x144,0x144,
+0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,
+0x127b,0x127b,0x127e,0x1287,0x1281,0x1281,0x1281,0x1287,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,
+0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,
+0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x14d,0x14d,0x14d,
+0x12a5,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x129c,0x12ab,0x12ab,0x1299,0x1299,0x1299,0x1299,0x150,0x13a4,
+0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x150,0x150,0x150,0x150,0x1299,0x1299,
+0x12c9,0x12bd,0x12c9,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,
+0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x12c6,0x12c6,0x12cc,0x12c0,0x12c3,
+0x12e1,0x12e1,0x12e1,0x12db,0x12db,0x12d2,0x12db,0x12db,0x12d2,0x12db,0x12db,0x12e4,0x12de,0x12d5,0x156,0x156,
+0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x156,0x156,0x156,0x156,0x156,0x156,
+0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x159,0x159,0x159,0x159,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,
+0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,
+0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x159,0x159,0x159,0x159,0x12f3,0x12f3,0x12f3,0x12f3,
+0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,
+0x12f3,0x12f3,0x15c,0x12f0,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x1302,0x1302,0x1302,0x1302,
+0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,
+0x1302,0x1302,0x15f,0x15f,0x15f,0x12fc,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x1308,0x1308,0x1308,0x1308,
+0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,0x1308,
+0x1308,0x1308,0x162,0x162,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x130e,0x130e,0x130e,0x130e,
+0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x165,
+0x165,0x165,0x165,0x165,0x130b,0x130b,0x130b,0x130b,0x130b,0x130b,0x130b,0x130b,0x1314,0x1314,0x1314,0x1314,
+0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,
+0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x16b,0x132c,0x132c,0x1c3b,0x16e,
+0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x1a16,0x16e,0x16e,0x1557,0x1557,0x1557,0x1557,
+0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1914,0x1914,0x1914,0x1914,
+0x1914,0x1914,0x1914,0x1914,0x1914,0x1914,0x1914,0x1914,0x1914,0x1b75,0x171,0x171,0x171,0x171,0x171,0x171,
0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
-0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,
-0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,
-0x134a,0x134a,0x134a,0x134a,0x12b4,0x13b0,0x13b0,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
-0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x1839,
-0x174,0x174,0x174,0x174,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x13d4,0x13d4,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x174,0x174,0x174,0x174,0x174,0x174,
+0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x1419,0x1419,
+0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,
+0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x137d,0x147f,0x147f,0x174,0x174,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,
+0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,
+0x147f,0x147f,0x147f,0x1917,0x174,0x174,0x174,0x174,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,
+0x1377,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x14a3,0x14a3,0x174,0x174,0x174,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x174,0x174,
0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x1353,0x1353,0x1353,0x1353,
-0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
-0x1353,0x1353,0x1353,0x1353,0x1353,0x134d,0x134d,0x134d,0x177,0x177,0x1350,0x177,0x1365,0x1365,0x1365,0x1365,
-0x1365,0x1365,0x1356,0x135f,0x1359,0x1359,0x135f,0x135f,0x135f,0x1359,0x135f,0x1359,0x1359,0x1359,0x1362,0x1362,
-0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x135c,0x135c,0x135c,0x135c,0x17d,0x1368,0x1368,0x1368,
-0x1368,0x1368,0x1368,0x17d,0x17d,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x17d,0x17d,0x1368,0x1368,0x1368,
-0x1368,0x1368,0x1368,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x1368,0x1368,0x1368,0x1368,
-0x1368,0x1368,0x1368,0x17d,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x17d,0x15cf,0x15cf,0x15cf,0x15cf,
-0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x136b,0x136b,0x136b,0x136b,
-0x136b,0x136b,0x136e,0x1383,0x1383,0x1374,0x1374,0x1374,0x1374,0x1374,0x180,0x180,0x180,0x180,0x1371,0x1371,
-0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1377,0x1377,
-0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1b54,0x1b57,0x1b57,0x1b51,0x1b51,0x1b57,0x180,0x180,
-0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x153c,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x186,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x153f,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x13b9,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,
-0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x186,0x186,
-0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x13ce,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x154b,0x154b,
-0x154b,0x154b,0x154b,0x154b,0x16bf,0x154b,0x154b,0x154b,0x1791,0x1842,0x1842,0x187b,0x187b,0x1a46,0x1af1,0x1af1,
-0x189,0x189,0x189,0x189,0x1c3e,0x1bc0,0x1bc0,0x1bc0,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,
-0x154b,0x154b,0x154b,0x16bc,0x16bc,0x189,0x189,0x189,0x154b,0x154b,0x154b,0x154b,0x1842,0x1842,0x1842,0x18de,
-0x18de,0x19c2,0x1a46,0x1af1,0x1af1,0x189,0x189,0x189,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1be4,0x1be4,0x1be4,0x18c,
-0x18c,0x18c,0x18c,0x1be4,0x1be4,0x1be4,0x1be4,0x1be4,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
-0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,
-0x18f,0x1428,0x18f,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x1428,0x18f,0x18f,0x18f,0x18f,0x1428,
-0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
-0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
-0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,
-0x18f,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x1428,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
-0x1428,0x1428,0x1428,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
+0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
+0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,
+0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x141c,0x141c,0x141c,0x177,0x177,0x141f,0x177,
+0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1425,0x142e,0x1428,0x1428,0x142e,0x142e,0x142e,0x1428,0x142e,0x1428,
+0x1428,0x1428,0x1431,0x1431,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x142b,0x142b,0x142b,0x142b,
+0x17d,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,0x17d,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,
+0x17d,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,
+0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x17d,
+0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
+0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143d,0x1452,0x1452,0x1443,0x1443,0x1443,0x1443,0x1443,0x180,0x180,
+0x180,0x180,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,
+0x1440,0x1440,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1c41,0x1c44,0x1c44,0x1c3e,
+0x1c3e,0x1c44,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x1614,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1458,0x1458,0x1458,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x186,0x186,0x1458,0x1458,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1617,0x186,0x1458,0x1458,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1488,0x186,0x1458,0x1458,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1617,0x1617,0x1617,0x1617,
+0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,
+0x1617,0x1617,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x149d,0x149a,0x149a,0x149a,
+0x149a,0x149a,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x179d,0x1623,0x1623,0x1623,0x186f,0x1920,0x1920,0x1959,
+0x1959,0x1b2d,0x1bde,0x1bde,0x189,0x189,0x189,0x189,0x1d2b,0x1cad,0x1cad,0x1cad,0x1623,0x1623,0x1623,0x1623,
+0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x179a,0x179a,0x189,0x189,0x189,0x1623,0x1623,0x1623,0x1623,
+0x1920,0x1920,0x1920,0x19bc,0x19bc,0x1aa3,0x1b2d,0x1bde,0x1bde,0x189,0x189,0x189,0x145b,0x145b,0x145b,0x145b,
+0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
+0x1cd1,0x1cd1,0x1cd1,0x18c,0x18c,0x18c,0x18c,0x1cd1,0x1cd1,0x1cd1,0x1cd1,0x1cd1,0x14fa,0x14fa,0x14fa,0x14fa,
+0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x18f,
+0x14fa,0x18f,0x18f,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,
+0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x14fa,0x18f,
+0x18f,0x18f,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x18f,
+0x14fa,0x18f,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x14fa,0x18f,
+0x14fa,0x18f,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,
+0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x18f,0x18f,0x18f,0x18f,0x14fa,0x14fa,0x14fa,
+0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
-0x18f,0x18f,0x18f,0x18f,0x1425,0x1425,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
-0x18f,0x18f,0x18f,0x18f,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x142b,0x142b,0x142b,0x142b,0x142b,
-0x143a,0x142b,0x142e,0x142e,0x142b,0x142b,0x142b,0x1431,0x1431,0x192,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,
-0x1437,0x1437,0x1437,0x1437,0x1434,0x1440,0x1440,0x1440,0x1941,0x193e,0x193e,0x1a8e,0x192,0x192,0x192,0x192,
-0x192,0x192,0x192,0x192,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,
-0x15e1,0x15e1,0x15e1,0x15e1,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x1449,
-0x1443,0x1443,0x1449,0x1449,0x1452,0x1452,0x144c,0x144f,0x144f,0x1449,0x1446,0x195,0x195,0x195,0x195,0x195,
-0x195,0x195,0x195,0x195,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
-0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x198,0x198,0x198,0x198,
-0x1716,0x1716,0x1455,0x1455,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
-0x1716,0x1716,0x1716,0x1716,0x198,0x198,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
-0x1716,0x1716,0x1716,0x1716,0x1461,0x1461,0x1461,0x1461,0x1461,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19b,
-0x19b,0x19b,0x19b,0x19e9,0x1461,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,
-0x145e,0x145e,0x145e,0x145e,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19b,0x19b,0x19b,0x19b,
-0x19b,0x19b,0x19b,0x145b,0x145b,0x145b,0x145b,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,
-0x1464,0x1464,0x1464,0x1464,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x19e,0x19e,0x19e,
-0x19e,0x19e,0x19e,0x19e,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x19e,0x19e,
-0x19e,0x19e,0x19e,0x19e,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1a1,0x1a1,0x1a1,0x1a1,
-0x1a1,0x1a1,0x1a1,0x1a1,0x12e1,0x12de,0x12e1,0x12bd,0x12de,0x12e4,0x12e4,0x12e7,0x12e4,0x12e7,0x12ea,0x12de,
-0x12e7,0x12e7,0x12de,0x12de,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x148b,
-0x1494,0x148b,0x1494,0x1494,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x1497,0x148e,0x19f2,0x1b63,0x1a4,0x1a4,
-0x1a4,0x1a4,0x1a4,0x1a4,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,
-0x155d,0x155d,0x1a7,0x1a7,0x155a,0x155a,0x155a,0x155a,0x155a,0x1560,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,
-0x1a7,0x1a7,0x1a7,0x1a7,0x1566,0x1566,0x1566,0x1566,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,
-0x1aa,0x1aa,0x1aa,0x1563,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x2af,
-0x1bae,0x1bae,0x1bae,0x1bae,0x16cb,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
-0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
-0x1ad,0x1ad,0x1ad,0x1ad,0x1a97,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,
-0x1b66,0x1b66,0x1b66,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
+0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x14f7,0x14f7,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
+0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x14fd,
+0x14fd,0x14fd,0x14fd,0x14fd,0x150c,0x14fd,0x1500,0x1500,0x14fd,0x14fd,0x14fd,0x1503,0x1503,0x192,0x1509,0x1509,
+0x1509,0x1509,0x1509,0x1509,0x1509,0x1509,0x1509,0x1509,0x1506,0x1512,0x1512,0x1512,0x1a22,0x1a1f,0x1a1f,0x1b7b,
+0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,
+0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x151e,0x151e,0x151e,0x151e,0x151e,0x151e,0x151e,0x151e,
+0x151e,0x151e,0x151e,0x151b,0x1515,0x1515,0x151b,0x151b,0x1524,0x1524,0x151e,0x1521,0x1521,0x151b,0x1518,0x195,
+0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x198,0x198,0x198,0x198,0x17f4,0x17f4,0x1527,0x1527,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x198,0x198,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x1533,0x1533,0x1533,0x1533,0x1533,0x1ad6,0x1ad6,0x1ad6,
+0x1ad6,0x1ad6,0x1ad6,0x19b,0x19b,0x19b,0x19b,0x1ad0,0x1533,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,
+0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,
+0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x152d,0x152d,0x152d,0x152d,0x1536,0x1536,0x1536,0x1536,0x1536,
+0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,
+0x1557,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,
+0x1554,0x1554,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,
+0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x13aa,0x13a7,0x13aa,0x1386,0x13a7,0x13ad,0x13ad,0x13b0,
+0x13ad,0x13b0,0x13b3,0x13a7,0x13b0,0x13b0,0x13a7,0x13a7,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x156c,0x156c,0x156c,0x155d,0x1566,0x155d,0x1566,0x1566,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x1569,0x1560,
+0x1ad9,0x1c50,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,
+0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1a7,0x1a7,0x1635,0x1635,0x1635,0x1635,0x1635,0x163b,0x1a7,0x1a7,
+0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1641,0x1641,0x1641,0x1641,0x1aa,0x1aa,0x1aa,0x1aa,
+0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x163e,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,
+0x1c9b,0x1c9b,0x1c9b,0x2af,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x17a9,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,
+0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,
+0x17a0,0x17a0,0x17a0,0x17a0,0x1ad,0x1ad,0x1ad,0x1ad,0x1b84,0x1c56,0x1c56,0x1c56,0x1c56,0x1c56,0x1c56,0x1c56,
+0x1c56,0x1c56,0x1c56,0x1c56,0x1c53,0x1c53,0x1c53,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
-0x1b0,0x1b0,0x1b0,0x1b0,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1b3,
-0x1b3,0x1b3,0x1b3,0x1b3,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1b3,0x1b3,0x1575,0x156f,0x1572,0x157b,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
-0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
-0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
-0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1944,0x1944,0x1944,
-0x1944,0x1be7,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,
-0x1a49,0x1a49,0x1a49,0x1a49,0x1b9,0x1b9,0x1b9,0x1b9,0x1bc3,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,
-0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x172b,0x16ce,0x158a,0x16d4,0x1bc,0x1596,0x1596,0x1596,
-0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x1bc,0x1596,0x1596,0x1bc,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,
-0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,
-0x1596,0x1bc,0x1596,0x1596,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x19ce,0x16d1,0x1593,0x1584,0x158a,
-0x1584,0x158a,0x158a,0x158a,0x158a,0x1bc,0x1bc,0x158a,0x158a,0x1bc,0x1bc,0x158d,0x158d,0x1590,0x1bc,0x1bc,
-0x172e,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1584,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x159c,0x1599,0x1599,
-0x1596,0x1596,0x158a,0x158a,0x1bc,0x1bc,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1bc,0x1bc,0x1bc,
-0x1587,0x1587,0x1587,0x1587,0x1587,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,
-0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
-0x15b1,0x15b1,0x1bf,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
-0x15c3,0x15c3,0x15c3,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15ba,0x15bd,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,
-0x1731,0x1731,0x1731,0x1731,0x15cf,0x15cc,0x19f5,0x19f5,0x1a9d,0x1aa0,0x1a9a,0x1a9a,0x1c5,0x1c5,0x1c5,0x1c5,
-0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,
-0x15e1,0x15e1,0x15e1,0x15d8,0x15db,0x15de,0x15e1,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,
-0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15e4,0x15e4,0x1ce,0x1ce,0x1ce,0x1ce,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,
-0x15ed,0x15ed,0x16d7,0x15ed,0x15ed,0x15ed,0x15ea,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,
-0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x1d1,0x1d1,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,
-0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
-0x15fc,0x160e,0x160e,0x1602,0x160b,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
-0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
-0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,
-0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1d7,
-0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1d7,0x1d7,0x1d7,0x1d7,0x1617,0x1617,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1620,0x1620,0x1620,0x1620,0x1620,0x161a,0x1623,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,
-0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1620,0x1620,0x1620,0x1620,0x1620,0x1da,
-0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
-0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1dd,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1632,0x1632,0x1632,0x1632,0x1632,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,
-0x164d,0x164d,0x1650,0x1650,0x1653,0x1644,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,
-0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x1e3,0x1644,0x1644,0x1644,0x1644,0x1644,
-0x1644,0x1644,0x1e3,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x164d,0x164d,0x164d,
+0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1653,0x1653,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1b3,0x1b3,0x1650,0x164a,0x164d,0x1656,0x1659,0x1659,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x1659,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x165c,0x165c,0x165c,0x165c,
0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
-0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
-0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,
-0x1665,0x1665,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1662,0x1662,0x1662,0x1662,0x1e9,0x1e9,0x1e9,
-0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1668,
-0x167a,0x167a,0x1668,0x1668,0x1668,0x1668,0x1ef,0x1ef,0x167a,0x167a,0x167d,0x167d,0x1668,0x1668,0x167a,0x166e,
-0x166b,0x1671,0x1683,0x1683,0x1674,0x1674,0x1677,0x1677,0x1677,0x1683,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
-0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x1737,0x1737,0x1737,0x1737,0x1734,0x1734,0x1ef,0x1ef,
-0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
+0x165c,0x1a25,0x1a25,0x1a25,0x1a25,0x1cd4,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b30,0x1b30,0x1b30,0x1b30,
+0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b9,0x1b9,0x1b9,0x1b9,0x1cb0,0x1b9,0x1b9,0x1b9,
+0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1809,0x17ac,0x1665,0x17b2,
+0x1bc,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1bc,0x1bc,0x1671,0x1671,0x1bc,0x1bc,0x1671,
+0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1bc,0x1671,0x1671,
+0x1671,0x1671,0x1671,0x1671,0x1671,0x1bc,0x1671,0x1671,0x1bc,0x1671,0x1671,0x1671,0x1671,0x1671,0x1bc,0x1aaf,
+0x17af,0x166e,0x165f,0x1665,0x165f,0x1665,0x1665,0x1665,0x1665,0x1bc,0x1bc,0x1665,0x1665,0x1bc,0x1bc,0x1668,
+0x1668,0x166b,0x1bc,0x1bc,0x180c,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x165f,0x1bc,0x1bc,0x1bc,0x1bc,
+0x1bc,0x1677,0x1674,0x1674,0x1671,0x1671,0x1665,0x1665,0x1bc,0x1bc,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,
+0x1662,0x1bc,0x1bc,0x1bc,0x1662,0x1662,0x1662,0x1662,0x1662,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,
+0x1bc,0x1bc,0x1bc,0x1bc,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,
+0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x1bf,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,
+0x168c,0x168c,0x168c,0x168c,0x169e,0x169e,0x169e,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1695,0x1698,0x1c2,
+0x1c2,0x1c2,0x1c2,0x1c2,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x1c2,0x1c2,
+0x1c2,0x1c2,0x1c2,0x1c2,0x180f,0x180f,0x180f,0x180f,0x16aa,0x16a7,0x1adc,0x1adc,0x1b8a,0x1b8d,0x1b87,0x1b87,
+0x1c5,0x1c5,0x1c5,0x1c5,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,
+0x183c,0x183c,0x183c,0x183c,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
+0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
+0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,
+0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16b3,0x16b6,0x16b9,0x16bc,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,
+0x1cb,0x1cb,0x1cb,0x1cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16bf,0x16bf,0x1ce,0x1ce,0x1ce,0x1ce,0x16c2,
+0x16c2,0x16c2,0x16c2,0x16c2,0x16c8,0x16c8,0x17b5,0x16c8,0x16c8,0x16c8,0x16c5,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,
+0x1ce,0x1ce,0x1ce,0x1ce,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x1d1,0x1d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,
+0x16d1,0x16d1,0x16d1,0x16d1,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
+0x1d1,0x1d1,0x1d1,0x1d1,0x16d7,0x16e9,0x16e9,0x16dd,0x16e6,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
+0x1d4,0x1d4,0x1d4,0x1d4,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x1d4,0x1d4,
+0x1d4,0x1d4,0x1d4,0x1d4,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,
+0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,
+0x16ef,0x16ef,0x16ef,0x1d7,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x1d7,0x1d7,
+0x1d7,0x1d7,0x16f2,0x16f2,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16f5,0x1701,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,
+0x16fe,0x16fe,0x16fe,0x16fe,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16fe,0x16fe,
+0x16fe,0x16fe,0x16fe,0x1da,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,
+0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,
+0x1707,0x1707,0x1707,0x1dd,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,
+0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1713,0x1710,0x1710,0x1710,0x1710,0x1710,0x1e0,
+0x1e0,0x1e0,0x1e0,0x1e0,0x172b,0x172b,0x172e,0x172e,0x1731,0x1722,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,
+0x1e3,0x1e3,0x1e3,0x1e3,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1e3,0x1722,
+0x1722,0x1722,0x1722,0x1722,0x1722,0x1722,0x1e3,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x1e3,0x1e3,0x1e3,0x1e3,
+0x1e3,0x172b,0x172b,0x172b,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x1e6,0x1e6,0x1e6,
+0x1e6,0x1e6,0x1e6,0x1e6,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
+0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1740,0x1740,0x1740,
+0x1740,0x1e9,0x1e9,0x1e9,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
+0x175e,0x175e,0x175e,0x1746,0x1758,0x1758,0x1746,0x1746,0x1746,0x1746,0x1ef,0x1ef,0x1758,0x1758,0x175b,0x175b,
+0x1746,0x1746,0x1758,0x174c,0x1749,0x174f,0x1761,0x1761,0x1752,0x1752,0x1755,0x1755,0x1755,0x1761,0x1818,0x1818,
+0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1818,0x1815,0x1815,0x1815,0x1815,
+0x1812,0x1812,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
-0x1f2,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
-0x1686,0x1686,0x1686,0x1686,0x1686,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1f5,0x1f5,0x1f5,0x1f5,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1f5,0x1f5,0x1aa3,0x1aa3,0x1f5,0x1f5,
-0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,
+0x1ef,0x1ef,0x1ef,0x1ef,0x1f2,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,
+0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,
+0x1f2,0x1f2,0x1f2,0x1f2,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1f5,0x1f5,0x1f5,0x1f5,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1f5,0x1f5,
+0x1b90,0x1b90,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,
0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,
-0x168c,0x169b,0x1692,0x168f,0x16a1,0x16a1,0x1695,0x16a1,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
-0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
-0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,
-0x16a4,0x16a4,0x16a4,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x16ad,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x1947,0x1fe,0x1fe,0x173d,0x173d,0x173d,
-0x1749,0x1749,0x173d,0x173d,0x173d,0x173d,0x174c,0x173d,0x173d,0x173d,0x173d,0x1740,0x1fe,0x1fe,0x1fe,0x1fe,
-0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1743,0x1743,0x1752,0x1752,0x1752,0x1743,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,
+0x1f5,0x1f5,0x1f5,0x1f5,0x176a,0x1779,0x1770,0x176d,0x177f,0x177f,0x1773,0x177f,0x1f8,0x1f8,0x1f8,0x1f8,
+0x1f8,0x1f8,0x1f8,0x1f8,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1f8,0x1f8,
+0x1f8,0x1f8,0x1f8,0x1f8,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1782,0x1782,
+0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,
+0x1fb,0x1fb,0x1fb,0x178b,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,
+0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x1a28,0x1fe,
+0x1fe,0x181b,0x181b,0x181b,0x1827,0x1827,0x181b,0x181b,0x181b,0x181b,0x182a,0x181b,0x181b,0x181b,0x181b,0x181e,
+0x1fe,0x1fe,0x1fe,0x1fe,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1821,0x1821,
+0x1830,0x1830,0x1830,0x1821,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x201,0x201,0x201,0x201,0x201,
0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,
-0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
-0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x207,0x1767,0x1767,0x207,0x207,
-0x207,0x207,0x207,0x1764,0x1764,0x1764,0x1764,0x1764,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x20a,
-0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
-0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
-0x176a,0x176d,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
-0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x20d,0x20d,0x20d,0x20d,0x20d,
-0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
-0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x20d,0x20d,0x20d,0x20d,0x20d,
-0x20d,0x20d,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x177c,0x177c,0x177c,0x177c,0x1779,0x177c,0x177c,0x177f,
-0x1782,0x177f,0x177f,0x177c,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,
-0x210,0x210,0x210,0x1779,0x1779,0x1779,0x1779,0x1779,0x17d9,0x17d9,0x17d9,0x17d9,0x17d0,0x17d0,0x17d0,0x17ca,
-0x17cd,0x17cd,0x17cd,0x19f8,0x213,0x213,0x213,0x213,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,
-0x17d6,0x17d6,0x213,0x213,0x213,0x213,0x17d3,0x17d3,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
-0x17f4,0x216,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
-0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f1,0x17df,0x17df,0x17df,0x17df,
-0x17df,0x17df,0x17df,0x216,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17f1,0x17e2,0x17f4,0x17f7,0x17f7,0x17eb,
-0x17e8,0x17e8,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x17ee,0x17ee,0x17ee,0x17ee,
-0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,
-0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x216,0x216,0x216,0x1803,0x1806,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
-0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,
-0x17fa,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
-0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x21c,
-0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,
-0x17fd,0x21c,0x21c,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x21c,0x17fd,0x17fd,0x21c,0x17fd,0x17fd,
-0x17fd,0x17fd,0x17fd,0x21c,0x21c,0x21c,0x21c,0x21c,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
-0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x184b,0x18e7,0x1a52,0x1a55,0x1afd,0x21f,0x21f,0x21f,
-0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x1afa,0x1afa,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,
-0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
-0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x222,0x222,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
-0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x222,0x1809,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
-0x1800,0x1809,0x1800,0x1800,0x1809,0x1800,0x1800,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
-0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x225,0x225,0x225,
-0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,
-0x1827,0x1827,0x1818,0x1812,0x1812,0x1827,0x1815,0x182a,0x182a,0x182a,0x182a,0x182d,0x182d,0x1821,0x181e,0x181b,
-0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1aa6,0x1821,0x228,0x181b,0x194a,0x19fb,
-0x1aa9,0x1aa9,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
+0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x1845,0x1845,0x1845,0x1845,
+0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x207,
+0x1845,0x1845,0x207,0x207,0x207,0x207,0x207,0x1842,0x1842,0x1842,0x1842,0x1842,0x1848,0x1848,0x1848,0x1848,
+0x1848,0x1848,0x1848,0x20a,0x1848,0x20a,0x1848,0x1848,0x1848,0x1848,0x20a,0x1848,0x1848,0x1848,0x1848,0x1848,
+0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x20a,0x1848,0x1848,0x1848,0x1848,0x1848,
+0x1848,0x1848,0x1848,0x1848,0x1848,0x184b,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x16a1,0x16a1,0x16a1,0x16a1,
+0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x1854,0x1854,0x1854,0x1854,
+0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x20d,
+0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x1851,0x1851,0x1851,0x1851,
+0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x20d,
+0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x185a,0x185a,0x185a,0x185a,
+0x1857,0x185a,0x185a,0x185d,0x1860,0x185d,0x185d,0x185a,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,
+0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x1857,0x1857,0x1857,0x1857,0x1857,0x18b7,0x18b7,0x18b7,0x18b7,
+0x18ae,0x18ae,0x18ae,0x18a8,0x18ab,0x18ab,0x18ab,0x1adf,0x213,0x213,0x213,0x213,0x18b4,0x18b4,0x18b4,0x18b4,
+0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x213,0x213,0x213,0x213,0x18b1,0x18b1,0x18d2,0x18d2,0x18d2,0x18d2,
+0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x216,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,
+0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18cf,
+0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x216,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18cf,0x18c0,
+0x18d2,0x18d5,0x18d5,0x18c9,0x18c6,0x18c6,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,
+0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x216,0x216,0x216,0x18e1,0x18e4,0x18ea,0x18ea,
+0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18d8,0x18d8,0x18d8,0x18d8,
+0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x1a46,0x1a46,0x1a46,0x1a46,
+0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x18db,0x18db,0x18db,0x18db,
+0x18db,0x18db,0x18db,0x21c,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
+0x18db,0x18db,0x18db,0x18db,0x18db,0x21c,0x21c,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x21c,0x18db,
+0x18db,0x21c,0x18db,0x18db,0x18db,0x18db,0x18db,0x21c,0x21c,0x21c,0x21c,0x21c,0x1cfb,0x1cfb,0x1cfb,0x1cfb,
+0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1929,0x19c5,0x1b39,0x1b3c,
+0x1bea,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x1be7,0x1be7,0x21f,0x21f,
+0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x18ea,0x18ea,0x18ea,0x18ea,
+0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x222,0x222,0x18de,0x18de,
+0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x222,0x18e7,0x18de,0x18de,
+0x18de,0x18de,0x18de,0x18de,0x18de,0x18e7,0x18de,0x18de,0x18e7,0x18de,0x18de,0x222,0x222,0x222,0x222,0x222,
+0x222,0x222,0x222,0x222,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,
+0x18ed,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,
+0x225,0x225,0x225,0x225,0x1905,0x1905,0x18f6,0x18f0,0x18f0,0x1905,0x18f3,0x1908,0x1908,0x1908,0x1908,0x190b,
+0x190b,0x18ff,0x18fc,0x18f9,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1b93,0x18ff,
+0x228,0x18f9,0x1a2b,0x1ae2,0x1b96,0x1b96,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
-0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
-0x1833,0x1833,0x1833,0x1833,0x22b,0x22b,0x22b,0x22b,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,
-0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,
-0x1830,0x1830,0x1830,0x1830,0x22b,0x22b,0x22b,0x22b,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
-0x184e,0x184e,0x184e,0x184e,0x184e,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x1a58,0x1a58,0x1a58,0x1a58,0x1a58,0x1a58,
-0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x1bcc,0x1bcc,0x1bcc,0x231,0x231,0x231,0x231,0x231,
-0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x273,0x273,0x1c41,0x273,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x234,
-0x188d,0x188d,0x234,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,
-0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x234,
-0x234,0x234,0x1881,0x234,0x1881,0x1881,0x234,0x1881,0x1881,0x1881,0x1884,0x1881,0x1887,0x1887,0x1890,0x1881,
-0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,
-0x188a,0x188a,0x234,0x234,0x234,0x234,0x234,0x234,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x237,0x237,0x237,0x237,0x189f,0x18a2,0x18a2,0x23a,0x23a,0x23a,0x23a,0x23a,
-0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,
-0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,
-0x18b1,0x18b1,0x18b1,0x23d,0x23d,0x23d,0x23d,0x23d,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,
-0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x18bd,0x18c0,0x18cf,0x18cf,0x18c0,0x18c3,0x18bd,0x18ba,
-0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x18a8,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x18a5,
-0x18a5,0x1893,0x1893,0x1893,0x18a8,0x18a8,0x18a8,0x18a8,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
-0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x243,0x243,0x243,0x243,
-0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,
-0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x243,0x243,0x1a61,0x1a61,0x1a61,0x1a61,0x1b03,0x1c47,0x1c47,0x1c47,
-0x1a61,0x1a61,0x1a61,0x1bcf,0x1bcf,0x276,0x276,0x276,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
-0x1962,0x1962,0x1962,0x1962,0x195f,0x195f,0x195f,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,
-0x195f,0x1959,0x1956,0x195c,0x246,0x246,0x246,0x246,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
-0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
-0x1965,0x1965,0x1965,0x249,0x249,0x1965,0x1965,0x1965,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x24c,0x1974,
-0x1974,0x24c,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,
-0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1971,0x1971,0x1971,0x1971,0x1971,0x24c,
-0x1968,0x1968,0x24c,0x1971,0x1971,0x1968,0x1971,0x196b,0x1974,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,
-0x197d,0x197d,0x1980,0x1980,0x1977,0x1977,0x1977,0x1977,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
-0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
-0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1986,0x1983,0x1983,0x1983,
-0x1986,0x1983,0x1983,0x1983,0x1983,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
-0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,
-0x1992,0x1992,0x198f,0x1989,0x1989,0x198c,0x198c,0x1995,0x1995,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
-0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,
-0x1998,0x1998,0x1998,0x1998,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
-0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,
-0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199e,0x19a7,0x199b,0x199b,0x25b,0x25b,0x25b,0x25b,0x25b,
-0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19ad,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,
-0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,
-0x19b6,0x19b6,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b3,0x19b3,0x19b3,
-0x19b3,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
-0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,
-0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1bf9,0x1bff,0x1bff,0x1bff,0x1bff,0x1bff,0x1bff,0x1bfc,
-0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x264,0x264,
-0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,
-0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x267,
-0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,
-0x26a,0x26a,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,
-0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a19,0x1a19,0x1a19,0x1a10,0x1a10,0x1a10,0x1a10,
-0x26a,0x26a,0x1a10,0x1a10,0x1a19,0x1a19,0x1a19,0x1a19,0x1a13,0x1a1c,0x1a16,0x1a1c,0x1a19,0x26a,0x26a,0x26a,
-0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,
-0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
-0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x26d,0x26d,0x26d,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a28,
-0x1a28,0x1a28,0x1a28,0x1a28,0x1a2b,0x1a2b,0x26d,0x26d,0x270,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,
-0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,
-0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x270,0x270,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x1a5b,0x1a5b,0x1a5b,0x273,
-0x273,0x1c44,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x1a5e,0x1a5e,0x1a5e,0x1a5e,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1a61,0x1a61,0x1a61,0x1b03,0x1b03,0x1b03,0x1b03,0x1c47,
-0x1c47,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1b03,0x1b03,
-0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x1c47,
-0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x1c47,0x276,0x1c47,
-0x1b03,0x1b03,0x1b03,0x1bd2,0x1bd2,0x1bd2,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1c47,0x1c47,
-0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x276,0x276,0x276,0x276,
-0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
-0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1c4a,0x1c4a,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
-0x1a37,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1a31,0x1a31,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x1a34,
-0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a3a,0x1a3a,0x1a3a,0x1a3a,
-0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x27c,0x27c,0x27c,0x27c,0x27c,0x1a3d,
-0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x27f,0x27f,0x27f,0x27f,
+0x228,0x228,0x228,0x228,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,
+0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x22b,0x22b,0x22b,0x22b,0x190e,0x190e,0x190e,0x190e,
+0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,
+0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x22b,0x22b,0x22b,0x22b,0x192c,0x192c,0x192c,0x192c,
+0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1b3f,0x1b3f,
+0x1b3f,0x1b3f,0x1b3f,0x1b3f,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x1cb9,0x1cb9,0x1cb9,0x231,
+0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x273,0x273,0x1d2e,0x273,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x196b,0x196b,0x196b,0x196b,
+0x196b,0x196b,0x196b,0x234,0x196b,0x196b,0x234,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,
+0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x195f,0x195f,0x195f,
+0x195f,0x195f,0x195f,0x234,0x234,0x234,0x195f,0x234,0x195f,0x195f,0x234,0x195f,0x195f,0x195f,0x1962,0x195f,
+0x1965,0x1965,0x196e,0x195f,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x1968,0x1968,0x1968,0x1968,
+0x1968,0x1968,0x1968,0x1968,0x1968,0x1968,0x234,0x234,0x234,0x234,0x234,0x234,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x237,0x237,0x237,0x237,0x197d,0x1980,0x1980,0x23a,
+0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x1c95,0x1c95,0x1c95,0x1c95,
+0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x1c95,0x198f,0x198f,0x198f,0x198f,
+0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x23d,0x23d,0x23d,0x23d,0x23d,0x1c62,0x1c62,0x1c62,0x1c62,
+0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x199b,0x199e,0x19ad,0x19ad,
+0x199e,0x19a1,0x199b,0x1998,0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x1986,0x1971,0x1971,0x1971,
+0x1971,0x1971,0x1971,0x1983,0x1983,0x1971,0x1971,0x1971,0x1986,0x1986,0x1986,0x1986,0x1ae8,0x1ae8,0x1ae8,0x1ae8,
+0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,
+0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x1a31,0x1a31,0x1a31,0x1a31,
+0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x243,0x243,0x1b48,0x1b48,0x1b48,0x1b48,
+0x1bf0,0x1d34,0x1d34,0x1d34,0x1b48,0x1b48,0x1b48,0x1cbc,0x1cbc,0x276,0x276,0x276,0x1a43,0x1a43,0x1a43,0x1a43,
+0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a40,0x1a40,0x1a40,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,
+0x1a34,0x1a34,0x1a34,0x1a34,0x1a40,0x1a3a,0x1a37,0x1a3d,0x246,0x246,0x246,0x246,0x1a46,0x1a46,0x1a46,0x1a46,
+0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,
+0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x249,0x249,0x1a46,0x1a46,0x1a46,0x1a55,0x1a55,0x1a55,0x1a55,
+0x1a55,0x1a55,0x24c,0x1a55,0x1a55,0x24c,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,
+0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a52,0x1a52,
+0x1a52,0x1a52,0x1a52,0x24c,0x1a49,0x1a49,0x24c,0x1a52,0x1a52,0x1a49,0x1a52,0x1a4c,0x1a55,0x24c,0x24c,0x24c,
+0x24c,0x24c,0x24c,0x24c,0x1a5e,0x1a5e,0x1a61,0x1a61,0x1a58,0x1a58,0x1a58,0x1a58,0x24f,0x24f,0x24f,0x24f,
+0x24f,0x24f,0x24f,0x24f,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x24f,0x24f,
+0x24f,0x24f,0x24f,0x24f,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,
+0x1a67,0x1a64,0x1a64,0x1a64,0x1a67,0x1a64,0x1a64,0x1a64,0x1a64,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
+0x252,0x252,0x252,0x252,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,
+0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a70,0x1a6a,0x1a6a,0x1a6d,0x1a6d,0x1a76,0x1a76,0x255,0x255,0x255,
+0x255,0x255,0x255,0x255,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,
+0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
+0x258,0x258,0x258,0x258,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,
+0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7c,0x1a7f,0x1a88,0x1a7c,0x1a7c,0x25b,
+0x25b,0x25b,0x25b,0x25b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8e,0x25e,0x25e,0x25e,0x25e,
+0x25e,0x25e,0x25e,0x25e,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,
+0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a97,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,
+0x1a91,0x1a94,0x1a94,0x1a94,0x1a94,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x261,0x261,0x261,0x261,0x261,0x261,
+0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x1c83,0x1c83,0x1c83,0x1c83,
+0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1c83,0x1ce6,0x1cec,0x1cec,0x1cec,
+0x1cec,0x1cec,0x1cec,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,0x1ce9,
+0x1ce9,0x1ce9,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x1af4,0x1af4,0x1af4,0x1af4,
+0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,
+0x1af4,0x1af4,0x1af4,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x1b03,0x1b03,0x1b03,0x1b03,
+0x1b03,0x1b03,0x1b03,0x1b03,0x26a,0x26a,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,
+0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b00,0x1b00,0x1b00,
+0x1af7,0x1af7,0x1af7,0x1af7,0x26a,0x26a,0x1af7,0x1af7,0x1b00,0x1b00,0x1b00,0x1b00,0x1afa,0x1b03,0x1afd,0x1b03,
+0x1b00,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,
+0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x1b0f,0x1b0f,0x1b0f,0x1b0f,
+0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x26d,0x26d,0x26d,0x1b06,0x1b06,0x1b06,0x1b06,
+0x1b06,0x1b06,0x1b06,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b12,0x1b12,0x26d,0x26d,0x270,0x1b15,0x1b15,0x1b15,
+0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,
+0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x1b15,0x270,0x270,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x1b42,0x1b42,0x1b42,0x273,0x273,0x1d31,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x1b45,0x1b45,0x1b45,0x1b45,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x1b48,0x1b48,0x1b48,0x1bf0,
+0x1bf0,0x1bf0,0x1bf0,0x1d34,0x1d34,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1b48,0x1b48,0x1b48,0x1b48,
+0x1b48,0x1b48,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1cbc,0x1cbc,0x1cbc,
+0x1cbc,0x1d34,0x1d34,0x1d34,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1d34,
+0x1d34,0x1d34,0x276,0x1d34,0x1bf0,0x1bf0,0x1bf0,0x1cbf,0x1cbf,0x1cbf,0x276,0x276,0x276,0x276,0x276,0x276,
+0x276,0x276,0x1d34,0x1d34,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1cbc,0x1cbc,0x1cbc,0x1d34,0x1d34,
+0x276,0x276,0x276,0x276,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1cbc,0x1d34,0x276,0x276,0x276,
+0x276,0x276,0x276,0x276,0x1cbf,0x1cbf,0x1cbf,0x1cbf,0x1cbf,0x1cbf,0x1cbf,0x1d37,0x1d37,0x276,0x276,0x276,
+0x276,0x276,0x276,0x276,0x1b1e,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,
+0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,
+0x279,0x279,0x279,0x1b1b,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,
+0x1b21,0x1b21,0x1b21,0x1b21,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x27c,0x27c,
+0x27c,0x27c,0x27c,0x1b24,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,
0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,
-0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x282,0x282,0x1aca,0x282,0x282,0x1aca,0x1aca,0x1aca,0x1aca,
-0x1aca,0x1aca,0x1aca,0x1aca,0x282,0x1aca,0x1aca,0x282,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,
-0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1ab2,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x282,0x1ac1,
-0x1ac4,0x282,0x282,0x1ab2,0x1ab2,0x1ac7,0x1ab8,0x1acd,0x1ac1,0x1acd,0x1ac1,0x1ab5,0x1ad0,0x1abb,0x1ad0,0x282,
-0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,
-0x1abe,0x1abe,0x282,0x282,0x282,0x282,0x282,0x282,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
-0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x285,0x285,
+0x27f,0x27f,0x27f,0x27f,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x282,0x282,0x1bb7,0x282,0x282,
+0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x282,0x1bb7,0x1bb7,0x282,0x1bb7,0x1bb7,0x1bb7,0x1bb7,
+0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1bb7,0x1b9f,0x1bae,0x1bae,0x1bae,
+0x1bae,0x1bae,0x282,0x1bae,0x1bb1,0x282,0x282,0x1b9f,0x1b9f,0x1bb4,0x1ba5,0x1bba,0x1bae,0x1bba,0x1bae,0x1ba2,
+0x1bbd,0x1ba8,0x1bbd,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x1bab,0x1bab,0x1bab,0x1bab,
+0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x282,0x282,0x282,0x282,0x282,0x282,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,
0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,
-0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,
-0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
-0x1ad6,0x1ad6,0x1ad6,0x28b,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
-0x1ad6,0x1ad6,0x1ad6,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
-0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,
-0x1ad9,0x1ad9,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,
-0x1b0c,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,
+0x285,0x285,0x285,0x285,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
+0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x28b,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
+0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
+0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1bc6,0x1bc6,0x1bc6,0x1bc6,
+0x1bc6,0x1bc6,0x1bc6,0x1bc6,0x1bc6,0x1bc6,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1bf9,0x1bf9,0x1bf9,0x1bf9,
+0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,
0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,
-0x28e,0x28e,0x28e,0x28e,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x291,0x1adc,
-0x1adc,0x1adf,0x291,0x291,0x1ae2,0x1ae2,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,
-0x291,0x291,0x291,0x291,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b72,0x1b75,0x1b75,0x1b75,
-0x1b75,0x1b75,0x1b75,0x294,0x1b78,0x1b78,0x294,0x294,0x294,0x294,0x294,0x294,0x1b6f,0x1b6f,0x1b6f,0x1b6f,
-0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
-0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7b,0x1b7b,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,
-0x297,0x297,0x297,0x297,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x29a,0x1b81,0x1b81,0x1b81,0x1b81,
-0x29a,0x1b81,0x1b81,0x29a,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,
-0x1b81,0x1b81,0x1b81,0x29a,0x1b84,0x1b8a,0x1b8a,0x1b87,0x1b87,0x1b87,0x2a0,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,
-0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,
-0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2a0,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2a0,
-0x2a0,0x2a0,0x2a0,0x2a0,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b90,0x1b8d,
-0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,
-0x1b8d,0x1b8d,0x1b8d,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x2a3,
-0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
+0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,
+0x1bcf,0x1bcf,0x291,0x1bc9,0x1bc9,0x1bcc,0x291,0x291,0x1bcf,0x1bcf,0x291,0x291,0x291,0x291,0x291,0x291,
+0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,
+0x1c5f,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x1c62,0x294,0x1c65,0x1c65,0x294,0x294,0x294,0x294,0x294,0x294,
+0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c5c,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c68,0x1c68,0x297,0x297,0x297,0x297,0x297,
+0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x29a,
+0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x29a,0x1c6e,0x1c6e,0x29a,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,
+0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x1c6e,0x29a,0x1c71,0x1c77,0x1c77,0x1c74,0x1c74,0x1c74,0x2a0,0x1c74,
+0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,
+0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x2a0,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,0x1c74,
+0x1c74,0x1c74,0x1c74,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,
+0x1c7a,0x1c7a,0x1c7d,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,
+0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x1c7a,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x1cef,0x1cef,0x1cef,
+0x1cef,0x1cef,0x1cef,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
-0x1b96,0x1b96,0x1b93,0x1b93,0x1b93,0x1b93,0x1b99,0x1b99,0x1b99,0x1b99,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
+0x2a3,0x2a3,0x2a3,0x2a3,0x1c83,0x1c83,0x1c80,0x1c80,0x1c80,0x1c80,0x1c86,0x1c86,0x1c86,0x1c86,0x2a6,0x2a6,
0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
-0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x2a9,
-0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,
-0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,
-0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba2,0x2ac,
-0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,
-0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x2af,0x1bae,0x1bae,0x1bae,0x1bae,
-0x1bae,0x1bae,0x1bae,0x2af,0x1bae,0x1bae,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,
-0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,
-0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x2af,0x2af,0x2af,
-0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x2b2,0x2b2,
-0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
-0x1bb4,0x1bb4,0x1bb4,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
-0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x2b5,0x2b5,0x2b5,0x2b5,
+0x2a6,0x2a6,0x2a6,0x2a6,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,
+0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x2a9,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x1c89,0x2a9,0x2a9,
+0x2a9,0x2a9,0x2a9,0x2a9,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,
+0x1638,0x1638,0x1638,0x1638,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,0x1c92,
+0x1c92,0x1c92,0x1c8f,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,
+0x2ac,0x2ac,0x2ac,0x2ac,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x2af,
+0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x1c9b,0x2af,0x1c9b,0x1c9b,0x2af,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,
+0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x2af,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,
+0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x2af,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x1c98,0x2af,0x1c98,
+0x1c98,0x2af,0x2af,0x2af,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,
+0x1ca1,0x1ca1,0x2b2,0x2b2,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,
+0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,
+0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,
0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,
-0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x1c05,0x1c05,0x1c05,
-0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0e,0x1c0e,0x1c0e,0x2b8,0x2b8,
-0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
-0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,
+0x2b5,0x1cf2,0x1cf2,0x1cf2,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cfb,
+0x1cfb,0x1cfb,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
+0x2b8,0x2b8,0x2b8,0x2b8,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x1cfe,0x2bb,0x2bb,
0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x1c14,0x1c14,0x1c14,0x1c14,
-0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,
-0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x1c17,0x1c17,0x1c2c,0x1c23,
-0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x2c1,0x1c29,0x1c29,
-0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,
-0x1c29,0x1c29,0x1c29,0x1c29,0x1c23,0x1c23,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x2c1,0x2c1,0x2c1,0x1c23,0x1c23,
-0x1c17,0x1c26,0x1c1a,0x1c2f,0x1c2f,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,
-0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,
-0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c32,0x1c32,0x1c32,0x1c32,
-0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,
-0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
+0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,0x1d01,
+0x1d01,0x1d01,0x1d01,0x1d01,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,
+0x1d04,0x1d04,0x1d19,0x1d10,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,
+0x1d16,0x2c1,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,
+0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d16,0x1d10,0x1d10,0x1d04,0x1d04,0x1d04,0x1d04,0x1d04,0x2c1,
+0x2c1,0x2c1,0x1d10,0x1d10,0x1d04,0x1d13,0x1d07,0x1d1c,0x1d1c,0x1d0a,0x1d0a,0x1d0a,0x1d0a,0x1d0a,0x1d0a,0x1d0a,
+0x1d0a,0x1d0a,0x1d0a,0x1d0a,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x1d0d,0x2c1,0x2c1,
+0x2c1,0x2c1,0x2c1,0x2c1,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,
+0x1d1f,0x1d1f,0x1d1f,0x1d1f,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x1d22,0x2c4,0x2c4,
+0x2c4,0x2c4,0x2c4,0x2c4,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
-0x2c7,0x2c7,0x95d,0x95d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
-0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
-0x2c7,0x2c7,0x2c7,0x2c7,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0x12a5,
-0x12a5,0x12a5,0x2ca,0x2ca,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
-0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0x2ca,0x2ca,
+0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x9b1,0x9b1,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,
+0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
+0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,
+0xced,0xced,0xced,0x136e,0x136e,0x136e,0x2ca,0x2ca,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,
+0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,
+0xf24,0xf24,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,
0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,
-0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,
-0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
-0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0x2cd,0x2cd,
-0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,
-0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1c3b,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0,
-0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,
-0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x2d3,0x2d3,
-0x1794,0x1794,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,
-0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
-0x18ea,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
-0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,
-0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x2df,0x2df,
-0x3e7,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3e7,0x3e7,0x3e7,0x3e7,0x3e1,0x1125,0x12fc,
-0x3ea,0x927,0x92a,0x3d8,0x3d8,0x1122,0x12f9,0x12f9,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,
-0x1122,0x3db,0x3db,0x3e7,0xcb1,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ea,0x3db,0x3db,0x8af,0x8b2,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,
-0x3e4,0xf81,0xf7e,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x14c1,0x1128,0x1128,0xed3,0xed3,0xda4,0xed3,0xed3,
-0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ed,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ed,0x3ea,0x3ea,0x3ed,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x12f9,0x12fc,0x3de,0x3ea,0x3e7,0x3e7,
-0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x1305,0x489,0x489,0x489,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x1305,0x1866,0x1866,0xf9f,0x47a,0x483,
-0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,
-0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xba6,0xba6,0xdb3,0xdb3,0x8b5,0xdb0,0x13e3,0x13e3,0x13e3,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,
-0x4ce,0x4ce,0x4ce,0x113d,0x113d,0x113d,0x113d,0x113d,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,
-0x4d1,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,
-0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,
-0x4ce,0x4ce,0x4ce,0x4ce,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d7,0x9a2,0xfcc,0xfcc,0xfcf,0xfcc,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0xfcf,0xfcc,0xfcf,0xfcc,0xfcf,0xfcc,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
-0x6a5,0x6a5,0x6a8,0x504,0x6b4,0x6b1,0x6b1,0x6ae,0x52e,0x52e,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0xb37,
-0x6b7,0x510,0x6cf,0x6d2,0x525,0x6b7,0x513,0x513,0x504,0x51f,0x51f,0x6a5,0x52b,0x528,0x6ab,0x4fe,
-0x4f5,0x4f5,0x4f8,0x4f8,0x4f8,0x4f8,0x4f8,0x4fb,0x4f8,0x4f8,0x4f8,0x4ef,0x537,0x534,0x531,0x531,
-0x6c3,0x519,0x516,0x6c0,0x6bd,0x6ba,0x6cc,0x507,0x6c9,0x6c9,0x51c,0x51f,0x6c6,0x6c6,0x51c,0x51f,
-0x501,0x504,0x504,0x504,0x522,0x50d,0x50a,0xbbb,0xada,0xada,0xad7,0xad7,0xad7,0xad7,0xbb2,0xbb2,
-0xbb2,0xbb2,0xbb8,0xcde,0xcdb,0xdbf,0xdc2,0xbb5,0xdc2,0xdc2,0xdc2,0xdc2,0xdbf,0xdc2,0xdc2,0xbaf,
-0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x558,0x55e,0x73e,0x55b,0x9a5,0x9c6,0xadd,0xadd,0xadd,
-0xbc1,0xbc1,0xdc8,0xdc8,0xdc8,0xdc8,0x1146,0x1149,0x1149,0x131a,0x14af,0x14d9,0x14dc,0x14dc,0x16e9,0x1869,
-0x56a,0x56a,0x582,0x6e4,0x567,0x6de,0x56a,0x57f,0x567,0x6e4,0x579,0x582,0x582,0x582,0x579,0x579,
-0x582,0x582,0x582,0x6ea,0x567,0x582,0x6e7,0x567,0x576,0x582,0x582,0x582,0x582,0x582,0x567,0x567,
-0x56d,0x6de,0x6e1,0x567,0x582,0x567,0x6ed,0x567,0x582,0x570,0x588,0x6f0,0x582,0x582,0x573,0x579,
-0x582,0x582,0x585,0x582,0x579,0x57c,0x57c,0x57c,0x57c,0xae6,0xae3,0xce1,0xdd1,0xbd6,0xbd9,0xbd9,
-0xbd3,0xbd0,0xbd0,0xbd0,0xbd0,0xbd9,0xbd6,0xbd6,0xbd6,0xbd6,0xbcd,0xbd0,0xdce,0xedf,0xee2,0xfd5,
-0x114c,0x114c,0x114c,0x6f6,0x6f3,0x58b,0x58e,0x58e,0x58e,0x58e,0x58e,0x6f3,0x6f6,0x6f6,0x6f3,0x58e,
-0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x597,0x597,0x597,0x597,
-0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x591,0x591,0x591,0x591,0x591,0x591,
-0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59a,0x59d,0x59d,0x59d,0x59d,0x59d,0x5a0,0x59a,
-0x59d,0x59d,0x59a,0x59a,0x59a,0x59a,0x59d,0x59d,0x6ff,0x6ff,0x59a,0x59a,0x59d,0x59d,0x59d,0x59d,
-0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x5a0,0x5a0,0x5a0,0x59d,0x59d,0x702,0x59d,
-0x702,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59a,0x59d,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
-0x59d,0x59d,0x59a,0x6ff,0x59a,0x59a,0x59a,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,
-0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0x705,0x5a3,0x705,0x705,
-0x5a6,0x5a3,0x5a3,0x705,0x705,0x5a6,0x5a3,0x705,0x5a6,0x5a3,0x5a3,0x705,0x5a3,0x705,0x5b2,0x5af,
-0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x705,
-0x5a6,0x705,0x5a6,0x705,0x705,0x705,0x705,0x705,0x70b,0x5a9,0x705,0x5a9,0x5a9,0x5a3,0x5a3,0x5a3,
-0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x705,0x5a3,0x5a3,0x5a3,0x5a6,0x5a3,0x5a3,
-0x5a6,0x5a3,0x5a3,0x5a6,0x705,0x5a6,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x708,0x705,0x5a6,0x5a3,
-0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x705,0x705,0x5a3,0x5a6,0x708,0x708,0x5a6,0x5a6,0x5a3,0x5a3,
-0x5a6,0x5a6,0x5a3,0x5a3,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x705,0x705,
-0x5a6,0x5a6,0x705,0x705,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5ac,0x5a3,0x5a3,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,
-0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0x5b5,0xaef,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5be,0x5bb,0x5be,0x5bb,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x70e,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x5b5,0x7fe,0x7fe,0x5b5,0x5b5,0x5b5,0x5b5,0x5b8,0x5b8,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x804,0x801,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0xaef,0xbe5,0xaef,0xaef,0xaef,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x717,0x717,0x717,0x717,
-0x717,0x717,0x717,0x717,0x717,0x717,0x5c7,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,
-0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xd50,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x5ca,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x5cd,0x5cd,0x5cd,0x5cd,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x720,0x720,0x720,0x720,
-0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x5d0,0x5d0,0x720,0x720,
-0x720,0x720,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0x726,0x726,0x5d3,0x723,
-0x723,0x723,0x723,0x723,0x723,0x723,0x5d3,0x5d3,0x5d3,0x5d3,0x5d6,0x5d6,0x5d6,0x5d6,0x726,0x726,
-0x5d6,0x5d6,0x726,0x726,0x5d3,0x5d3,0x5d3,0x5d3,0x726,0x726,0x5d6,0x5d6,0x726,0x726,0x5d3,0x5d3,
-0x5d3,0x5d3,0x726,0x726,0x723,0x5d3,0x5d6,0x726,0x5d3,0x5d3,0x723,0x726,0x726,0x726,0x5d6,0x5d6,
-0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x726,0x723,
-0x726,0x723,0x5d3,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d3,0x5d3,0x723,0xaf5,0xaf5,0xaf5,0xaf5,
-0xaf5,0xaf5,0xaf5,0xaf5,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xc5a,0xc5a,0xbeb,0x5dc,0x5dc,0x5dc,0x5dc,
-0x5d9,0x72f,0x72f,0x5d9,0x5d9,0x729,0x5d9,0x5d9,0x5d9,0x5d9,0x729,0x729,0x5d9,0x5d9,0x5d9,0x5d9,
-0xd59,0xd59,0xbee,0xbee,0xdda,0xaf8,0x5dc,0x5dc,0x72c,0x5df,0x72c,0x5dc,0x5d9,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5dc,0x5dc,0x5dc,0x5d9,0x5d9,0x5d9,0x5d9,0x72f,0x5d9,0x72f,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x72f,0x72f,0x5e2,0x72f,
-0x729,0x729,0x5d9,0x729,0x72c,0x729,0x729,0x5d9,0x729,0x72f,0x5e2,0x72f,0xaf8,0xaf8,0xbf1,0xbf1,
-0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xdd7,0xe8e,0x5e5,0x5e5,0x5e5,0x5e5,
-0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,
-0x5e8,0x13a4,0x13a4,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x14e2,0x5ee,0x5ee,0x5ee,
-0x5ee,0x13a4,0x5e8,0x5e8,0x5ee,0x5ee,0x13a7,0x13a7,0x5f4,0x5f4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,
+0x2ca,0x2ca,0x2ca,0x2ca,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0x2cd,0x2cd,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
+0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1caa,0x1caa,0x1caa,0x1caa,0x1d28,0x2d0,0x2d0,
+0x2d0,0x2d0,0x2d0,0x2d0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,
+0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,
+0x14a0,0x14a0,0x2d3,0x2d3,0x1872,0x1872,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,
+0x2d6,0x2d6,0x2d6,0x2d6,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,
+0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,
+0x2d9,0x2d9,0x2d9,0x2d9,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x1d46,0x1d46,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x2dc,
+0x2dc,0x2dc,0x2dc,0x2dc,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,
+0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x2df,0x2df,0x41a,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x41a,0x41a,0x41a,
+0x41a,0x414,0x11eb,0x13c5,0x420,0x97b,0x97e,0x40b,0x40b,0x11e8,0x13c2,0x13c2,0x41d,0x41d,0x41d,0x41d,
+0x41d,0x41d,0x41d,0x41d,0x11e8,0x40e,0x40e,0x41a,0xd32,0x420,0x420,0x420,0x420,0x420,0x420,0x420,
+0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,
+0x420,0x420,0x420,0x420,0x420,0x420,0x40e,0x40e,0x900,0x903,0x999,0x999,0x999,0x999,0x999,0x999,
+0x999,0x999,0x999,0x999,0x417,0x1023,0x1020,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x1593,0x11ee,0x11ee,0xf60,
+0xf60,0xe28,0xf60,0xf60,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x423,0x420,0x420,
+0x420,0x420,0x420,0x420,0x420,0x423,0x420,0x420,0x423,0x420,0x420,0x420,0x420,0x420,0x13c2,0x13c5,
+0x411,0x420,0x41a,0x41a,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x13ce,0x4c2,0x4c2,
+0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x13ce,0x1944,
+0x1944,0x1044,0x4b3,0x4bc,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,0x504,
+0x504,0x504,0x504,0x504,0x504,0x4fe,0x4fe,0x4fe,0x4fe,0x4fe,0x4fe,0xc24,0xc24,0xe37,0xe37,0x906,
+0xe34,0x14b2,0x14b2,0x14b2,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,
+0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,
+0x501,0x501,0x501,0x501,0x50a,0x50a,0x50a,0x1203,0x1203,0x1203,0x1203,0x1203,0x507,0x507,0x507,0x507,
+0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,
+0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x1200,0x1200,
+0x1200,0x1200,0x1200,0x1200,0x50d,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,
+0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,
+0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x50a,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,
+0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x513,0x513,
+0x513,0x513,0x510,0x9ff,0x1071,0x1071,0x1077,0x1071,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,
+0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,
+0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x516,0x513,0x1074,0x1071,0x1074,0x1071,0x1074,0x1071,
+0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,
+0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,
+0x6f0,0x6f0,0x6f3,0x546,0x6ff,0x6fc,0x6fc,0x702,0x570,0x570,0x52e,0x52e,0x52e,0x52e,0x52e,0xbb5,
+0x6f6,0x54f,0x71d,0x720,0x567,0x6f6,0x555,0x555,0x546,0x561,0x561,0x6f0,0x56d,0x56a,0x6f9,0x540,
+0x537,0x537,0x53a,0x53a,0x53a,0x53a,0x53a,0x53d,0x53a,0x53a,0x53a,0x531,0x579,0x576,0x573,0x573,
+0x70e,0x55b,0x558,0x70b,0x708,0x705,0x71a,0x552,0x714,0x717,0x55e,0x561,0x711,0x711,0x55e,0x561,
+0x543,0x546,0x546,0x546,0x564,0x54c,0x549,0xc39,0xb58,0xb58,0xb55,0xb55,0xb55,0xb55,0xc30,0xc30,
+0xc30,0xc30,0xc36,0xd5f,0xd5c,0xe43,0xe49,0xc33,0xe49,0xe49,0xe49,0xe49,0xe46,0xe49,0xe49,0xc2d,
+0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59a,0x5a0,0x78c,0x59d,0xa02,0xa23,0xb5b,0xb5b,0xb5b,
+0xc3f,0xc3f,0xe4f,0xe4f,0xe4f,0xe4f,0x120c,0x120f,0x120f,0x13e3,0x1581,0x15ab,0x15ae,0x15ae,0x17c7,0x1947,
+0x5af,0x5af,0x5c7,0x732,0x5a9,0x72c,0x5af,0x5c4,0x5a9,0x732,0x5be,0x5c7,0x5c7,0x5c7,0x5be,0x5be,
+0x5c7,0x5c7,0x5c7,0x738,0x5a9,0x5c7,0x735,0x5a9,0x5bb,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5a9,0x5a9,
+0x5b2,0x72c,0x72f,0x5a9,0x5c7,0x5a9,0x73b,0x5ac,0x5c7,0x5b5,0x5cd,0x73e,0x5c7,0x5c7,0x5b8,0x5be,
+0x5c7,0x5c7,0x5ca,0x5c7,0x5be,0x5c1,0x5c1,0x5c1,0x5c1,0xb64,0xb61,0xd62,0xe58,0xc54,0xc57,0xc57,
+0xc51,0xc4e,0xc4e,0xc4e,0xc4e,0xc57,0xc54,0xc54,0xc54,0xc54,0xc4b,0xc4e,0xe55,0xf6c,0xf6f,0x107d,
+0x1212,0x1212,0x1212,0x744,0x741,0x5d0,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x741,0x744,0x744,0x741,0x5d3,
+0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x5dc,0x5dc,0x5dc,0x5dc,
+0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
+0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5df,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e5,0x5df,
+0x5e2,0x5e2,0x5df,0x5df,0x5df,0x5df,0x5e2,0x5e2,0x74d,0x74d,0x5df,0x5df,0x5e2,0x5e2,0x5e2,0x5e2,
+0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e5,0x5e5,0x5e5,0x5e2,0x5e2,0x750,0x5e2,
+0x750,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5e2,0x5df,0x5e2,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,
+0x5e2,0x5e2,0x5df,0x74d,0x5df,0x5df,0x5df,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,
+0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0x753,0x5e8,0x753,0x753,
+0x5eb,0x5e8,0x5e8,0x753,0x753,0x5eb,0x5e8,0x753,0x5eb,0x5e8,0x5e8,0x753,0x5e8,0x753,0x5f7,0x5f1,
+0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x5e8,0x5e8,0x753,0x753,0x753,0x753,0x5e8,0x5e8,0x753,
+0x5eb,0x753,0x5eb,0x753,0x753,0x753,0x753,0x753,0x759,0x5f4,0x753,0x5f4,0x5f4,0x5e8,0x5e8,0x5e8,
+0x753,0x753,0x753,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x753,0x5e8,0x5e8,0x5e8,0x5eb,0x5e8,0x5e8,
+0x5eb,0x5e8,0x5e8,0x5eb,0x753,0x5eb,0x5e8,0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x756,0x753,0x5eb,0x5e8,
+0x753,0x753,0x753,0x753,0x5e8,0x5e8,0x753,0x753,0x5e8,0x5eb,0x756,0x756,0x5eb,0x5eb,0x5e8,0x5e8,
+0x5eb,0x5eb,0x5e8,0x5e8,0x5eb,0x5eb,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5eb,0x5eb,0x753,0x753,
+0x5eb,0x5eb,0x753,0x753,0x5eb,0x5eb,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5eb,0x5eb,0x5eb,0x5eb,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x753,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x735,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x13a4,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x13a4,0x13a4,0x5e8,0x129f,0x5e8,0x5e8,0x5e8,0x5f1,
-0x5f1,0x5f1,0x5f1,0x1326,0x1326,0x5e8,0x5eb,0x5eb,0x5ee,0x5e8,0x5e8,0x5e8,0xbf7,0xbf4,0xbf7,0xbf4,
-0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0x732,0x732,0x732,0x732,0x732,0x732,
-0x732,0x732,0x732,0x732,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x13a4,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x60c,0x60c,0x60c,0x60c,0x60c,0x60c,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
-0xb49,0xb49,0xb49,0xb49,0x615,0x615,0x95a,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x60c,0x60c,
-0xbfa,0xd7d,0x1b21,0x1b21,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x615,0x60f,0x612,0x618,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x615,0x60f,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,
-0x615,0x60f,0x615,0x60f,0x615,0x60f,0x612,0x618,0x612,0x618,0x615,0x60f,0x615,0x60f,0x615,0x60f,
-0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x612,0x615,0x60f,0x612,0x615,0x60f,0x612,0x618,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x60f,0x615,0x918,0x91b,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,
-0x1b21,0x1b21,0x1b21,0x1b21,0x612,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x60f,0x612,0x60f,0x60f,
-0x612,0x612,0x60f,0x60f,0x612,0x612,0x60f,0x612,0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x60f,0x612,
-0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x612,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x618,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x61b,0x61b,0x61b,0x61b,0xfe1,0xfe1,0xfe1,0x14e5,
-0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x16ef,0x16ef,0x864,0x86a,0x86a,0x876,0x876,0x867,0x85e,0x867,
-0x85e,0x867,0x85e,0x867,0x85e,0x867,0x85e,0x867,0x62a,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,
-0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,
-0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,
-0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
-0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
-0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,
-0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x717,0x717,0x717,0x717,
-0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x738,0x738,0x738,0x738,
-0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,
-0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0xc48,0x8c7,0x8be,0x8bb,
-0x8c1,0x8c4,0x74d,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x8cd,0x74d,0x74d,0x74d,
-0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,
-0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x8ca,0x8ca,
-0x753,0x8dc,0x8df,0x8e5,0x80a,0x816,0x8fa,0x813,0x8d3,0x8d0,0x8d3,0x8d0,0x8d9,0x8d6,0x8d9,0x8d6,
-0x8d3,0x8d0,0x810,0x8e5,0x8d3,0x8d0,0x8d3,0x8d0,0x8d3,0x8d0,0x8d3,0x8d0,0x8eb,0x8f1,0x8ee,0x8ee,
-0x759,0x795,0x795,0x795,0x795,0x795,0x795,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,
-0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x75c,0x777,0x756,0x77d,0x780,
-0x77a,0x792,0x792,0x792,0x792,0x792,0x792,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,
-0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x75c,0x777,0x756,0x777,0xc4b,
-0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
-0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
-0x7f8,0x7f8,0x1299,0x1299,0x1299,0x1299,0x1299,0x7fb,0x810,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
-0x813,0x813,0x933,0x933,0x933,0x933,0x819,0x819,0x8e8,0x8f7,0x8f7,0x8f7,0x8f7,0x8f4,0x80d,0x8e2,
-0xb1c,0xb1c,0xb1c,0xc5d,0xc7b,0xc78,0xb3a,0x8b8,0x81f,0x81c,0x81f,0x822,0x81c,0x81f,0x81c,0x81f,
-0x81c,0x81f,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,
-0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81c,0xc7e,0x831,0x82b,0x831,0x82b,0x831,0x82b,0x831,
-0x82b,0x831,0x82b,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,
-0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x831,0x82b,0x82e,0x82b,0x82e,
-0x82b,0x82e,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,
-0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82b,0x82b,0x82b,0x82b,0x831,0x82b,0x831,0x82b,0x831,
-0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x831,0x82b,0x82b,0x82b,0x82b,0x82b,0x82e,0x831,0x831,0x82e,
-0x82e,0x82e,0x82e,0x900,0x903,0x834,0x837,0xc66,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x840,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,
-0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,
-0xd62,0xd62,0xe91,0x843,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
-0xd5c,0xd5c,0xd5c,0xd5c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,
-0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,
-0x84c,0x84c,0x84c,0x1a6a,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
-0x912,0x912,0x912,0x912,0x912,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0xd65,0xd65,0xd65,0xd65,0x915,
-0x915,0x915,0x915,0x915,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,
-0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,
-0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0xd65,0xd65,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,
-0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,
-0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
-0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
-0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
-0x855,0x855,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,
-0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0x110a,0x110a,0x110a,0x110a,0x858,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x85b,0x85b,
-0x858,0x85b,0x858,0x85b,0x85b,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x85b,
-0x858,0x85b,0x858,0x85b,0x85b,0x858,0x858,0x85b,0x85b,0x85b,0x858,0x858,0x858,0x858,0x14a0,0x14a0,
-0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
-0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
-0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
-0x12d8,0x12d8,0x12d8,0x12d8,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0xd5c,0xc69,0xc69,0xc69,
-0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0x90f,0x90f,0x90f,0x90f,
-0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,
-0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0xc69,0xc69,0xc69,
-0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0x912,0x912,0x912,0x912,
-0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
-0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0xd65,0x99c,0x97e,0x97e,0x97e,
-0x97e,0x978,0x97e,0x97e,0x990,0x97e,0x97e,0x97b,0x987,0x98d,0x98d,0x98d,0x98d,0x98d,0x990,0x978,
-0x984,0x978,0x978,0x978,0x96c,0x96c,0x978,0x978,0x978,0x978,0x978,0x978,0x993,0x993,0x993,0x993,
-0x993,0x993,0x993,0x993,0x993,0x993,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
-0x97b,0x96c,0x978,0x96c,0x978,0x96c,0x98a,0x981,0x98a,0x981,0x999,0x999,0x9a8,0x9a8,0x9a8,0x9a8,
-0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,
-0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9ab,0x9ab,0x9ab,0x9ab,
-0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,
-0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ae,0x9ae,0x9ae,0x9ae,
-0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,
-0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b1,0x9b1,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9b4,0x9b4,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9bd,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9bd,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0xa4d,0xa4d,0xfc6,0xa4d,0xa4d,0xa4d,0xa50,0xa4d,0xfc6,0xa4d,0xa4d,0xfbd,
-0xa47,0xa3b,0xa3b,0xa3b,0xa3b,0xa4a,0xa3b,0xfae,0xfae,0xfae,0xa3b,0xa3e,0xa47,0xa41,0xfb4,0xfc0,
-0xfc0,0xfae,0xfae,0xfc6,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xa53,0xa53,
-0xa44,0xa44,0xa44,0xa44,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4a,0xa4a,0xa3b,0xa3b,0xfc6,0xfc6,
-0xfc6,0xfc6,0xfae,0xfae,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,
-0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,
-0xa4d,0xa4d,0xa4d,0xa4d,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6b,0xa71,0xa6e,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,
-0x1140,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa83,0xa83,0xa83,0xaa7,0xaa7,0xaa7,0xaaa,0xaaa,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
-0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xa8f,0xa8f,0xaa4,0xa86,0xa86,0xa86,0xa86,0xa86,
-0xa86,0xa86,0xaa4,0xaa4,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
-0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
-0xaa7,0xaa7,0xaa7,0xaa7,0xacb,0xacb,0xacb,0xacb,0xacb,0xab6,0xab6,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xace,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xaef,0xaef,0xaef,0xaef,
-0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
-0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xafb,0xafb,0xafb,0xafb,
-0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,
-0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb13,0xb13,0xb13,0xb13,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb1f,0xb1f,0xb1f,0xb1f,
-0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,
-0xb1f,0xb1f,0xb1f,0xb1f,0x13aa,0x13aa,0x13aa,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0xb22,0xb22,0xb22,0xb22,
-0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,
-0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0x1ae8,0x1ae8,
-0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb28,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5eb,0x5eb,0x5eb,0x5eb,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5eb,0x5eb,0x5eb,0x5eb,0x5e8,0x5ee,0x5e8,0x5e8,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,
+0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0x5fa,0xb6d,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x603,0x600,0x603,0x600,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x75c,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x5fa,0x5fa,0x84c,0x84c,0x5fa,0x5fa,0x5fa,0x5fa,0x5fd,0x5fd,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x5fa,0x852,0x84f,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,
+0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0xb6d,0xc63,0xb6d,0xb6d,0xb6d,0x606,0x606,0x606,0x606,
+0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,
+0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x765,0x765,0x765,0x765,
+0x765,0x765,0x765,0x765,0x765,0x765,0x60c,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,
+0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xcc0,0xdd1,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,
+0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x612,0x612,0x612,0x612,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76e,0x76e,0x76e,0x76e,
+0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x615,0x615,0x76e,0x76e,
+0x76e,0x76e,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0x774,0x774,0x618,0x771,
+0x771,0x771,0x771,0x771,0x771,0x771,0x618,0x618,0x618,0x618,0x61b,0x61b,0x61b,0x61b,0x774,0x774,
+0x61b,0x61b,0x774,0x774,0x618,0x618,0x618,0x618,0x774,0x774,0x61b,0x61b,0x774,0x774,0x618,0x618,
+0x618,0x618,0x774,0x774,0x771,0x618,0x61b,0x774,0x618,0x618,0x771,0x774,0x774,0x774,0x61b,0x61b,
+0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x774,0x771,
+0x774,0x771,0x618,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x618,0x618,0x771,0xb73,0xb73,0xb73,0xb73,
+0xb73,0xb73,0xb73,0xb73,0xc69,0xc69,0xc69,0xc69,0xc69,0xcd8,0xcd8,0xc69,0x621,0x621,0x621,0x621,
+0x61e,0x77d,0x77d,0x61e,0x61e,0x777,0x61e,0x61e,0x61e,0x61e,0x777,0x777,0x61e,0x61e,0x61e,0x61e,
+0xdda,0xdda,0xc6c,0xc6c,0xe61,0xb76,0x621,0x621,0x77a,0x624,0x77a,0x621,0x61e,0x61e,0x61e,0x61e,
+0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,
+0x61e,0x61e,0x61e,0x61e,0x61e,0x621,0x621,0x621,0x61e,0x61e,0x61e,0x61e,0x77d,0x61e,0x77d,0x61e,
+0x61e,0x61e,0x61e,0x61e,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
+0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x77d,0x77d,0x627,0x77d,
+0x777,0x777,0x61e,0x777,0x77a,0x777,0x777,0x61e,0x777,0x77d,0x627,0x77d,0xb76,0xb76,0xc6f,0xc6f,
+0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xe5e,0xf1b,0x62a,0x62a,0x62a,0x62a,
+0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,0x62a,
+0x62d,0x1473,0x1473,0x1473,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x15b4,0x633,0x633,0x633,
+0x633,0x1473,0x62d,0x62d,0x633,0x633,0x1476,0x1476,0x639,0x639,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x1473,0x62d,0x62d,0x62d,
+0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x62d,0x783,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x1473,0x62d,0x1473,0x62d,0x62d,0x62d,0x62d,0x1473,0x1473,0x1473,0x62d,0x1368,0x62d,0x62d,0x62d,0x636,
+0x636,0x636,0x636,0x13ef,0x13ef,0x62d,0x630,0x630,0x633,0x62d,0x62d,0x62d,0xc75,0xc72,0xc75,0xc72,
+0xc75,0xc72,0xc75,0xc72,0xc75,0xc72,0xc75,0xc72,0xc75,0xc72,0x780,0x780,0x780,0x780,0x780,0x780,
+0x780,0x780,0x780,0x780,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x62d,0x62d,0x62d,0x62d,0x1473,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,0x62d,
+0x62d,0x62d,0x62d,0x1473,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x651,0x651,0x651,0x651,0x651,0x651,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x654,0x654,0x654,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,
+0xbc7,0xbc7,0xbc7,0xbc7,0x65a,0x65a,0x9ae,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x651,0x651,
+0xc78,0xdfe,0x1c0e,0x1c0e,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,
+0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,
+0x657,0x65d,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,
+0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,
+0x65a,0x654,0x657,0x65d,0x65a,0x654,0x65a,0x654,0x657,0x65d,0x65a,0x654,0x657,0x65d,0x65a,0x654,
+0x65a,0x654,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,
+0x65a,0x654,0x65a,0x654,0x65a,0x654,0x657,0x65d,0x657,0x65d,0x65a,0x654,0x65a,0x654,0x65a,0x654,
+0x65a,0x654,0x65a,0x654,0x65a,0x654,0x65a,0x654,0x657,0x65a,0x654,0x657,0x65a,0x654,0x657,0x65d,
+0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,
+0x654,0x65a,0x96c,0x96f,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
+0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x657,0x654,0x657,0x657,0x657,0x657,0x657,0x657,0x654,0x657,0x654,0x654,
+0x657,0x657,0x654,0x654,0x657,0x657,0x654,0x657,0x654,0x657,0x654,0x654,0x657,0x654,0x654,0x657,
+0x654,0x657,0x654,0x654,0x657,0x654,0x657,0x657,0x654,0x654,0x654,0x657,0x654,0x654,0x654,0x654,
+0x654,0x657,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,
+0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x654,0x657,0x657,0x654,0x654,0x657,0x654,0x657,0x654,
+0x654,0x654,0x654,0x654,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,
+0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x657,
+0x657,0x657,0x657,0x657,0x657,0x657,0x657,0x65d,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,
+0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65d,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x660,0x660,0x660,0x660,0x1089,0x1089,0x1089,0x15b7,
+0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x17cd,0x17cd,0x8b5,0x8bb,0x8bb,0x8c7,0x8c7,0x8b8,0x8af,0x8b8,
+0x8af,0x8b8,0x8af,0x8b8,0x8af,0x8b8,0x8af,0x8b8,0x66f,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x66f,
+0x669,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66f,0x669,0x66f,0x669,0x66f,
+0x669,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,0x672,0x66f,0x669,0x66c,
+0x672,0x66f,0x669,0x66c,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,
+0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x762,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
+0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
+0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x768,0x768,0x768,0x768,0x768,0x768,
+0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x768,0x765,0x765,0x765,0x765,
+0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,
+0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x786,0x786,0x786,0x786,
+0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,
+0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0x786,0xcc6,0x918,0x90f,0x90c,
+0x912,0x915,0x79b,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x91e,0x79b,0x79b,0x79b,
+0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,
+0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x91b,0x91b,
+0x7a1,0x92d,0x930,0x936,0x858,0x867,0x94e,0x864,0x924,0x921,0x924,0x921,0x92a,0x927,0x92a,0x927,
+0x924,0x921,0x85e,0x936,0x924,0x921,0x924,0x921,0x924,0x921,0x924,0x921,0x93c,0x942,0x945,0x93f,
+0x7a7,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,
+0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7aa,0x7c5,0x7a4,0x7cb,0x7ce,
+0x7c8,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,
+0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7aa,0x7c5,0x7a4,0x7c5,0xcc9,
+0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
+0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
+0x846,0x846,0x1362,0x1362,0x1362,0x1362,0x1362,0x849,0x85e,0x861,0x861,0x861,0x861,0x861,0x861,0x861,
+0x861,0x861,0x987,0x987,0x987,0x987,0x86a,0x86a,0x939,0x94b,0x94b,0x94b,0x94b,0x948,0x85b,0x933,
+0xb9a,0xb9a,0xb9a,0xcdb,0xcf9,0xcf6,0xbb8,0x909,0x870,0x86d,0x870,0x873,0x86d,0x870,0x86d,0x870,
+0x86d,0x870,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x870,0x870,0x86d,0x870,0x870,0x86d,0x870,0x870,
+0x86d,0x870,0x870,0x86d,0x870,0x870,0x86d,0x86d,0xcfc,0x882,0x87c,0x882,0x87c,0x882,0x87c,0x882,
+0x87c,0x882,0x87c,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,
+0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x87c,0x87f,0x882,0x87c,0x87f,0x87c,0x87f,
+0x87c,0x87f,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87f,0x87f,0x87c,0x87f,0x87f,0x87c,0x87f,0x87f,
+0x87c,0x87f,0x87f,0x87c,0x87f,0x87f,0x87c,0x87c,0x87c,0x87c,0x87c,0x882,0x87c,0x882,0x87c,0x882,
+0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x882,0x87c,0x87c,0x87c,0x87c,0x87c,0x87f,0x882,0x882,0x87f,
+0x87f,0x87f,0x87f,0x954,0x957,0x885,0x888,0xce4,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x891,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,
+0x88e,0x88e,0x88e,0x88e,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,
+0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,
+0xde3,0xde3,0xf1e,0x894,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,
+0xddd,0xddd,0xddd,0xddd,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,
+0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,0x89d,
+0x89d,0x89d,0x89d,0x1b51,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,
+0x966,0x966,0x966,0x966,0x966,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0xde6,0xde6,0xde6,0xde6,0x969,
+0x969,0x969,0x969,0x969,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,
+0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,
+0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0xde6,0xde6,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,
+0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,
+0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x8a3,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,
+0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,
+0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,
+0x8a6,0x8a6,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,
+0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0x11d0,0x11d0,0x11d0,0x11d0,0x8a9,0x8a9,0x8a9,0x8a9,
+0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,
+0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8ac,0x8ac,
+0x8a9,0x8ac,0x8a9,0x8ac,0x8ac,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8ac,
+0x8a9,0x8ac,0x8a9,0x8ac,0x8ac,0x8a9,0x8a9,0x8ac,0x8ac,0x8ac,0x8a9,0x8a9,0x8a9,0x8a9,0x1572,0x1572,
+0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,
+0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,
+0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,
+0x13a1,0x13a1,0x13a1,0x13a1,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0xddd,0xce7,0xce7,0xce7,
+0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0x963,0x963,0x963,0x963,
+0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,
+0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0xce7,0xce7,0xce7,
+0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0x966,0x966,0x966,0x966,
+0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,
+0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0xde6,0x9fc,0x9d8,0x9d8,0x9d8,
+0x9d8,0x9d2,0x9d8,0x9d8,0x9ed,0x9d8,0x9d8,0x9e7,0x9e4,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ed,0x9d2,
+0x9de,0x9d2,0x9d2,0x9d2,0x9c0,0x9c0,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9f0,0x9f0,0x9f0,0x9f0,
+0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,
+0x9d5,0x9c6,0x9d2,0x9c6,0x9d2,0x9c3,0x9e1,0x9db,0x9e1,0x9db,0x9f6,0x9f6,0xa05,0xa05,0xa05,0xa05,
+0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,
+0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa08,0xa08,0xa08,0xa08,
+0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,
+0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa0b,0xa0b,0xa0b,0xa0b,
+0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
+0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa14,0xa14,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa0e,0xa0e,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa11,0xa11,0xa14,0xa14,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa1a,0xa1d,0xa1d,0xa1d,
+0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,
+0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1a,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,
+0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,
+0xa1d,0xa1d,0xa1d,0xa1d,0xabf,0xabf,0x106b,0xabf,0xabf,0xabf,0xac2,0xabf,0x106b,0xabf,0xabf,0x1062,
+0xab9,0xaad,0xaad,0xaad,0xaad,0xabc,0xaad,0x1053,0x1053,0x1053,0xaad,0xab0,0xab9,0xab3,0x1059,0x1065,
+0x1065,0x1053,0x1053,0x106b,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xbbe,0xac5,0xac5,
+0xab6,0xab6,0xab6,0xab6,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabc,0xabc,0xaad,0xaad,0x106b,0x106b,
+0x106b,0x106b,0x1053,0x1053,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,
+0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,
+0xabf,0xabf,0xabf,0xabf,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xe40,
+0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,0xad4,
+0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,
+0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,
+0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xadd,0xae3,0xae0,
+0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,
+0x1206,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,
+0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,
+0xae0,0xae0,0xae0,0xae0,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,
+0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,0xaf5,
+0xaf5,0xaf5,0xaf5,0xaf5,0xb25,0xb25,0xb25,0xb28,0xb28,0xb25,0xb25,0xb25,0xb22,0xb25,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb0a,0xb0a,0xb1f,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,
+0xaf8,0xaf8,0xb1f,0xb1f,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb2b,0xb2b,0xc6c,0xc6c,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
-0xb2b,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
-0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,
-0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0x14e8,
-0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xcf0,0xcf0,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,
-0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,
-0xb55,0xb55,0xced,0xced,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
-0xd3b,0xd3b,0xd3b,0xd3b,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,
-0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,
-0xb58,0xb58,0xb58,0xb58,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb61,0xb6d,0xb73,0xb73,0xb73,0xb67,0xb67,
-0xb67,0xb70,0xb64,0xb64,0xb64,0xb64,0xb64,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb73,
-0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb73,0xb73,0xb73,0xb67,0xb67,0xb73,0xb73,0xb73,
-0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,
-0xb6a,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0x16f2,0x16f2,
-0xb7f,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb76,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
+0xb25,0xb25,0xb25,0xb25,0xb49,0xb49,0xb49,0xb49,0xb49,0xb34,0xb34,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb4c,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb6d,0xb6d,0xb6d,0xb6d,
+0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,
+0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xc63,0xc63,0xc63,0xc63,0xc63,0xb79,0xb79,0xb79,0xb79,
0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb82,0xb82,0xb82,0xb82,
-0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,
-0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb88,0xb88,0xb88,0xb88,
-0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,
-0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0x1aee,
-0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1bba,0x1bba,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb8b,0xb8b,0xb8b,0xb8b,
0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
-0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
-0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe2,0xbe5,
-0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xce4,
-0xce7,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xeeb,0xeeb,0xeeb,0xeeb,
-0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,
-0xcea,0xcea,0xdd7,0xe8b,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xfdb,0x1278,0x1278,
-0xde0,0xde0,0xde0,0xde0,0xde0,0xde6,0xde3,0xefd,0xefd,0xefd,0xefd,0x13e9,0xfed,0x13e9,0x1332,0x1332,
-0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,
-0xc24,0xc24,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0x1104,0x1101,0xff3,0xff0,0xc27,0xc27,0xc27,0xc27,
-0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc2a,0xc2a,0xc2a,0xc2a,
-0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,
-0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2d,0xc2d,0xc2d,0xc33,
-0xc30,0xc57,0xc54,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,
-0xc30,0xc33,0xc30,0xc33,0xc30,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
-0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
-0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc33,0xc30,0xc33,0xc30,0xc2d,0xc2d,0xc2d,0xc2d,
-0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
-0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc33,0xc30,0xc2d,0xc2d,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc3c,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc3c,0xc3c,0xc3c,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc39,0xc36,0xc36,0xc36,
-0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
-0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
-0xcea,0xd56,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xe8b,0xe8b,0xdd7,0xdd7,0xdd7,0xdd7,
-0xdd7,0xdd7,0xeee,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0x129c,0x129c,0x127b,
-0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
-0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
-0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd14,0xd14,0xd14,0xd14,0xd14,0xd11,0xd26,0xd26,0xd26,0xd20,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd20,0xd26,0xd26,0xd26,0xd26,
-0xd1a,0xd1a,0xd23,0xd23,0xd23,0xd23,0xd17,0xd17,0xd17,0xd17,0xd17,0xd1d,0xdec,0xdec,0xdec,0xdec,
-0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xde9,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd20,0xd26,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd1a,0xd1a,0xd1a,
-0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,
-0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,
-0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xdef,0xdef,
-0xdef,0xdef,0xdef,0xdef,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0x110d,0x110d,0xff6,0xff6,0xff6,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
-0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
-0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
-0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
-0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
-0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
-0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
-0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xebb,0xebb,0xe0d,0xe0d,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0x1002,0x1002,0x1005,0x1002,0x1002,
-0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,
-0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,
-0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0x1b30,
-0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,
-0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0x1b2d,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
-0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,
-0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xf06,0xf06,0xf06,0xf06,0x1008,0x1008,0x1008,0x1008,0x1008,
-0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,
-0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,
-0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,
-0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe5b,
-0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,
-0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe61,0xe61,0xe61,0xe61,0xe61,
-0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe67,0xe67,
-0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe64,0xe6d,0x1014,0x100e,0x101d,0x100b,0xe6a,0xe6a,0x100b,0x100b,
-0xe7c,0xe7c,0xe70,0xe7c,0xe7c,0xe7c,0xe73,0xe7c,0xe7c,0xe7c,0xe7c,0xe70,0xe7c,0xe7c,0xe7c,0xe7c,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb9d,0xb9d,0xb9d,0xb9d,
+0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
+0xb9d,0xb9d,0xb9d,0xb9d,0x1479,0x1479,0x1479,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0xba0,0xba0,0xba0,0xba0,
+0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,
+0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0x1bd5,0x1bd5,
+0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba6,0xba3,0xba3,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,
+0xba9,0xba9,0xcea,0xcea,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,
+0xba9,0xba9,0xba9,0xba9,0xcea,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,
+0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,
+0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0x15ba,
+0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xd71,0xd71,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,
+0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,
+0xbd3,0xbd3,0xd6e,0xd6e,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,
+0xdbc,0xdbc,0xdbc,0xdbc,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,
+0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,
+0xbd6,0xbd6,0xbd6,0xbd6,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,
+0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,
+0xbd9,0xbd9,0xbd9,0xbd9,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbdf,0xbeb,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,
+0xbe5,0xbee,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbf1,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe8,0xbe8,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,0xbf1,0xbf1,0xbf1,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbf1,0xbf1,0xbf1,0xbf1,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,
+0xbe8,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0x17d0,0x17d0,
+0xbfd,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbf4,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbf4,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,
+0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfd,0xbfd,0xbfd,0xbfd,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc06,0xc06,0xc06,0xc06,
+0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,
+0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0x1bdb,
+0x1bdb,0x1bdb,0x1bdb,0x1bdb,0x1bdb,0x1bdb,0x1ca7,0x1ca7,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,
+0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc60,0xc63,
+0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xd65,
+0xd68,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xf78,0xf78,0xf78,0xf78,
+0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
+0xd6b,0xd6b,0xe5e,0xf18,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0x1083,0x1341,0x1341,
+0xe67,0xe67,0xe67,0xe67,0xe67,0xe6d,0xe6a,0xf8a,0xf8a,0xf8a,0xf8a,0x14b8,0x1095,0x14b8,0x13fb,0x13fb,
+0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,
+0xca2,0xca2,0xccf,0xccc,0xccf,0xccc,0xccf,0xccc,0x11ca,0x11c7,0x109b,0x1098,0xca5,0xca5,0xca5,0xca5,
+0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca5,0xca8,0xca8,0xca8,0xca8,
+0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,
+0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xcab,0xcab,0xcab,0xcb1,
+0xcae,0xcd5,0xcd2,0xcb1,0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcb1,
+0xcae,0xcb1,0xcae,0xcb1,0xcae,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcb1,0xcae,0xcb1,0xcae,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcb1,0xcae,0xcab,0xcab,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcba,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcba,0xcba,0xcba,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb7,0xcb4,0xcb4,0xcb4,
+0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,
+0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xced,
+0xd6b,0xdd7,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xf18,0xf18,0xe5e,0xe5e,0xe5e,0xe5e,
+0xe5e,0xe5e,0xf7b,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1365,0x1365,0x1344,
+0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,
+0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,
+0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd95,0xd95,0xd95,0xd95,0xd95,0xd92,0xda7,0xda7,0xda7,0xda1,
+0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda1,0xda7,0xda7,0xda7,0xda7,
+0xd9b,0xd9b,0xda4,0xda4,0xda4,0xda4,0xd98,0xd98,0xd98,0xd98,0xd98,0xd9e,0xe73,0xe73,0xe73,0xe73,
+0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe70,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,
+0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda1,0xda7,
+0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xd9b,0xd9b,0xd9b,
+0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,
+0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,
+0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xe76,0xe76,
+0xe76,0xe76,0xe76,0xe76,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0x11d3,0x11d3,0x109e,0x109e,0x109e,
+0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,
+0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,
+0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,
+0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,0xdb3,
+0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,
+0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,
+0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,
0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
-0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,
-0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,
-0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
-0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
-0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,
-0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,
-0xeeb,0xeeb,0xeeb,0xee8,0xee8,0xee8,0xee8,0xee8,0x114f,0x139b,0x139b,0x139b,0x139b,0x131d,0x131d,0x131d,
-0x139e,0x1320,0x1320,0x139e,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x17a6,0x17a6,0x17a6,0x17a6,0x186c,
-0xf00,0xf00,0xf00,0xf00,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,
-0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,
-0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
-0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fd,0x1875,0x1875,0x18f6,0x1875,0x1bd8,0x17ac,0x1335,0x1158,0xf03,0xf03,
-0xf21,0xf21,0xf21,0xf21,0xf33,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,
-0xf3c,0xf3c,0xf3f,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,
-0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf24,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf36,
-0xf21,0xf36,0xf33,0xf33,0xf48,0xf45,0xf48,0xf48,0xf48,0xf45,0xf45,0xf48,0xf45,0xf48,0xf45,0xf48,
-0xf45,0x102f,0x102f,0x102f,0x116d,0x1026,0x102f,0x1026,0xf45,0xf48,0xf45,0xf45,0x1026,0x1026,0x1026,0x1026,
-0x1029,0x102c,0x116d,0x116d,0xf4b,0xf4b,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1041,0x1038,0x1041,0x1038,0x1038,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1041,0x1038,0x1041,0x1038,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
-0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
-0xf51,0xf51,0xf51,0xf51,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,
-0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,
-0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,
-0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,
-0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,
-0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xfae,0xfc6,0xfbd,0xfc3,0xfc3,0xfc6,0xfc6,0xfbd,
-0xfbd,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc6,0xfc6,0xfc6,0xfae,0xfae,0xfae,0xfae,0xfc6,0xfc6,0xfc6,
-0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfae,0xfbd,0xfc0,0xfae,0xfae,0xfc3,
-0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfb1,0xfc6,0xfc3,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,
-0xfba,0xfba,0x1137,0x1137,0x1134,0x1131,0xfb7,0xfb7,0xfde,0xfde,0xfde,0xfde,0x129c,0x129c,0x127b,0x127b,
-0x127b,0x1278,0x1278,0x1278,0x1278,0x127b,0x13a1,0x127b,0x127b,0x127b,0x1278,0x127b,0x129c,0x1278,0x1278,0x1278,
-0x127b,0x127b,0x1278,0x1278,0x127b,0x1278,0x1278,0x127b,0xff9,0xff9,0xff9,0xff9,0xff9,0xff6,0xff6,0xff9,
-0xff9,0xff9,0xff9,0xff9,0xff9,0x14f4,0x14f4,0x14f4,0x110d,0xff6,0xff6,0xff6,0xff6,0x12a8,0x1284,0x1284,
-0x1284,0x1284,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x101a,0x101a,0x1017,0x1011,0x1017,0x1011,0x1017,0x1011,
-0x1017,0x1011,0x100e,0x100e,0x100e,0x100e,0x1023,0x1020,0x100e,0x116a,0x13f5,0x13f8,0x13f8,0x13f5,0x13f5,0x13f5,
-0x13f5,0x13f5,0x13fb,0x13fb,0x150f,0x1503,0x1503,0x1500,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1035,0x1032,0x1032,0x1041,0x1038,0x1341,0x133e,0x16fb,0x1341,0x133e,0x1404,0x1401,0x1512,0x1512,0x1518,0x1512,
-0x1518,0x1512,0x1518,0x1512,0x1518,0x1512,0x1518,0x1512,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
-0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x103b,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,
-0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1041,0x1038,0x1044,0x1044,0x104a,0x1050,0x1050,0x1050,0x1050,0x1050,
-0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
-0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x104a,0x1044,0x1044,0x1044,0x1044,0x104a,0x104a,
-0x1044,0x1044,0x104d,0x140d,0x140a,0x140a,0x1050,0x1050,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,
-0x1047,0x1047,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,
-0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,
-0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,
-0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,
-0x1071,0x1071,0x1071,0x1074,0x1071,0x1071,0x1077,0x1077,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,
-0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,
-0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
-0x1083,0x1083,0x1083,0x1083,0x1086,0x107d,0x108c,0x1089,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
-0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
-0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1347,0x1344,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
-0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109b,0x111f,0x108f,0x108f,0x108f,0x1095,0x1413,0x1413,0x1413,0x1413,
-0x1413,0x1413,0x1413,0x1413,0x1092,0x1092,0x1095,0x10a1,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
-0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
-0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x1527,0x1524,0x1527,0x1524,0x152a,0x152a,0x1704,0x1413,
-0x10aa,0x10aa,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,
-0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,
-0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10bc,0x10bc,0x10bc,0x10bc,
-0x10bc,0x10bc,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b6,0x10b6,0x10b6,0x1116,0x10bf,0x10ce,0x10ce,0x10ce,0x10ce,
-0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10b9,0x10b9,0x10b9,0x10b9,
-0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,
-0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10fb,0x10fb,0x10fb,0x10fb,
-0x1110,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,
-0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fe,0x10fe,0x10fe,0x10fe,
-0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,
-0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x110a,0x110a,0x110a,0x110a,
-0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x149d,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
-0x1785,0x1785,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x117f,0x117f,0x117f,0x117f,
-0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,
-0x117f,0x117f,0x1176,0x1176,0x1179,0x1179,0x117f,0x1176,0x1176,0x1176,0x1176,0x1176,0x1185,0x1185,0x1185,0x1185,
-0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
-0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11ac,0x11ac,0x11ac,0x11ac,
-0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,
-0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11a9,0x11af,0x11bb,0x11bb,0x11bb,0x11bb,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11c1,0x11c1,0x11c1,0x11c1,
-0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x12ed,0x11c7,0x12f0,
-0x11c7,0x11c7,0x11c7,0x11c7,0x11c4,0x11c4,0x11c4,0x11c7,0x1707,0x170a,0x1932,0x192f,0x11ca,0x11ca,0x11ca,0x11d9,
-0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,
-0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11cd,
-0x11d9,0x11d9,0x11ca,0x11ca,0x11ca,0x11ca,0x11d9,0x11d9,0x11ca,0x11ca,0x11d9,0x11d9,0x11eb,0x11eb,0x11eb,0x11eb,
-0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11ee,0x11eb,0x11eb,0x11eb,
-0x11eb,0x11eb,0x11eb,0x11e5,0x11e5,0x11e5,0x11eb,0x11e8,0x1530,0x1533,0x1536,0x1536,0x11fd,0x11fd,0x11fd,0x11fd,
-0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11f1,0x11fd,0x11f1,0x11f1,
-0x11f1,0x1206,0x1206,0x11f1,0x11f1,0x1206,0x11fd,0x1206,0x1206,0x11fd,0x11f1,0x11f4,0x11fd,0x11fd,0x11fd,0x11fd,
-0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
-0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x1218,0x1218,0x1218,0x1218,
-0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,
-0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1230,0x1230,0x1230,0x1230,
-0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,
-0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x122d,0x122d,0x122d,0x1239,0x1239,0x1239,0x1239,
-0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,
-0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1248,0x1248,0x1248,0x1248,
+0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
+0xf48,0xf48,0xe94,0xe94,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0x10ad,0x10ad,0x10b0,0x10b3,0x10ad,
+0x10a7,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,
+0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,
+0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,0xea3,0xea0,
+0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,
+0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,
+0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0x1c1d,
+0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,
+0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0x1c1a,
+0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,
+0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,
+0xf42,0xf42,0xf42,0xf42,0xf42,0xf42,0xf42,0xf42,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,
+0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xf93,0xf93,0xf93,0xf93,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,
+0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,
+0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,
+0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,
+0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,
+0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,
+0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee8,0xee2,
+0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,
+0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee5,0xee8,0xee8,0xee8,0xee8,0xee8,
+0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef1,0xef1,
+0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xeee,0xef7,0x10c2,0x10bc,0x10ce,0x10b9,0xeeb,0xeeb,0x10b9,0x10b9,
+0xf06,0xf06,0xefa,0xf06,0xf06,0xf06,0xefd,0xf06,0xf06,0xf06,0xf06,0xefa,0xf06,0xf06,0xf06,0xf06,
+0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,
+0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
+0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
+0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,
+0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,
+0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,
+0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,
+0xf78,0xf78,0xf78,0xf75,0xf75,0xf75,0xf75,0xf75,0x1215,0x146a,0x146a,0x146a,0x146a,0x13e6,0x13e6,0x13e6,
+0x146d,0x13e9,0x13e9,0x146d,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x1884,0x1884,0x1884,0x1884,0x194a,
+0xf8d,0xf8d,0xf8d,0xf8d,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,
+0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,
+0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,
+0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d5,0x1953,0x1953,0x19d4,0x1953,0x1cc5,0x188a,0x13fe,0x121e,0xf90,0xf90,
+0xfb1,0xfb1,0xfb1,0xfb1,0xfc6,0xfcf,0xfd2,0xfcf,0xfd2,0xfcf,0xfd2,0xfcf,0xfd2,0xfcf,0xfd2,0xfcf,
+0xfcf,0xfcf,0xfd2,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,
+0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfb4,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfc9,
+0xfb1,0xfc9,0xfc6,0xfc6,0xfe1,0xfde,0xfe1,0xfe1,0xfe1,0xfde,0xfde,0xfe1,0xfe4,0xfe7,0xfe4,0xfe7,
+0xfe4,0x10da,0x10da,0x10da,0x1236,0x10d7,0x10da,0x10d7,0xfd8,0xfdb,0xfd8,0xfde,0x10dd,0x10dd,0x10dd,0x10dd,
+0x10e0,0x10e3,0x1236,0x1236,0xfea,0xfea,0x10f8,0x10f5,0x10f8,0x10f5,0x10f8,0x10f5,0x10f8,0x10f5,0x10f8,0x10f5,
+0x10f8,0x10f5,0x10f8,0x10f5,0x10ec,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,
+0x10f2,0x10ec,0x10f2,0x10ec,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,
+0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,
+0xff0,0xff0,0xff0,0xff0,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,
+0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,
+0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,
+0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,
+0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,
+0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1053,0x106b,0x1062,0x1068,0x1068,0x106b,0x106b,0x1062,
+0x1062,0x1068,0x1068,0x1068,0x1068,0x1068,0x106b,0x106b,0x106b,0x1053,0x1053,0x1053,0x1053,0x106b,0x106b,0x106b,
+0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x1053,0x1062,0x1065,0x1053,0x1053,0x1068,
+0x1068,0x1068,0x1068,0x1068,0x1068,0x1056,0x106b,0x1068,0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,
+0x105f,0x105f,0x11fd,0x11fd,0x11fa,0x11f7,0x105c,0x105c,0x1086,0x1086,0x1086,0x1086,0x1365,0x1365,0x1344,0x1344,
+0x1344,0x1341,0x1341,0x1341,0x1341,0x1344,0x1470,0x1344,0x1344,0x1344,0x1341,0x1344,0x1365,0x1341,0x1341,0x1341,
+0x1344,0x1344,0x1341,0x1341,0x1344,0x1341,0x1341,0x1344,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x109e,0x109e,0x10a1,
+0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x15cc,0x15cc,0x15cc,0x11d3,0x109e,0x109e,0x109e,0x109e,0x1371,0x134d,0x134d,
+0x134d,0x134d,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x10c8,0x10c8,0x10c5,0x10bf,0x10c5,0x10bf,0x10c5,0x10bf,
+0x10c5,0x10bf,0x10cb,0x10cb,0x10cb,0x10cb,0x10d4,0x10d1,0x10cb,0x1233,0x14ca,0x14c7,0x14c7,0x14ca,0x14c4,0x14c4,
+0x14c4,0x14ca,0x14cd,0x14cd,0x15e7,0x15db,0x15db,0x15d8,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,
+0x10e9,0x10e6,0x10e6,0x10fe,0x10fb,0x1410,0x140d,0x17d9,0x140a,0x1407,0x14d6,0x14d3,0x15ea,0x15ea,0x15f0,0x15ea,
+0x15f0,0x15ea,0x15f0,0x15ea,0x15f0,0x15ea,0x15f0,0x15ea,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,
+0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,
+0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x1101,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,
+0x10ec,0x10f2,0x10ec,0x10f2,0x10ec,0x10f2,0x10f2,0x10ec,0x1104,0x1104,0x110a,0x1110,0x1110,0x1110,0x1110,0x1110,
+0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,
+0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x110a,0x1104,0x1104,0x1104,0x1104,0x110a,0x110a,
+0x1104,0x1104,0x110d,0x14df,0x14dc,0x14dc,0x1110,0x1110,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,
+0x1107,0x1107,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,
+0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,
+0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,
+0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,
+0x1131,0x1131,0x1131,0x1134,0x1131,0x1131,0x1137,0x1137,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,
+0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,
+0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,
+0x1143,0x1143,0x1143,0x1143,0x1149,0x113d,0x114f,0x114c,0x1146,0x1146,0x1146,0x1143,0x1143,0x1143,0x1143,0x1143,
+0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,
+0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1416,0x1413,0x1164,0x115e,
+0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1161,0x11e5,0x1152,0x1152,0x1152,0x115b,
+0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x1155,0x1155,0x1158,0x1167,0x1164,0x115e,0x1164,0x115e,
+0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,
+0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x1164,0x115e,0x15ff,0x15fc,0x15ff,0x15fc,
+0x1602,0x1602,0x17e2,0x14e5,0x1170,0x1170,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
+0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
+0x1173,0x1173,0x1173,0x1173,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,0x1170,
+0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1179,0x1179,0x1179,0x1179,0x1179,0x117c,0x117c,0x117c,0x11dc,0x1185,
+0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,0x1194,
+0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
+0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
+0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
+0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
+0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,
+0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,
+0x11c1,0x11c1,0x11c1,0x11c1,0x11d6,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,
+0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11d0,0x11d0,0x11d0,0x11d0,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x156f,0x1863,0x1863,0x1863,
+0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,
0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,
-0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x124e,0x124e,0x125a,0x125d,
-0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,
-0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x1260,0x125d,0x1260,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,
-0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x1260,0x125d,0x125d,0x125d,0x125d,0x125a,0x125a,0x125a,0x124e,
-0x124e,0x124e,0x124e,0x125a,0x125a,0x1254,0x1251,0x1257,0x1257,0x1266,0x1263,0x1263,0x1269,0x1269,0x1269,0x1269,
+0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x123f,0x123f,0x1242,0x1242,0x1248,0x123f,0x123f,0x123f,0x123f,0x123f,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
-0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x126f,0x126f,0x126f,0x126c,
-0x126c,0x126c,0x1269,0x1269,0x1269,0x1269,0x126c,0x1269,0x1269,0x1269,0x126f,0x126c,0x126f,0x126c,0x1269,0x1269,
0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
-0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x126f,0x126c,0x126c,0x1269,0x1269,0x1269,0x1269,
-0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1be1,0x1a07,0x1a07,0x1a07,0x1a07,
-0x1a07,0x1a07,0x1a07,0x1a0a,0x1a04,0x1bf3,0x1bf3,0x1bf3,0x1bf6,0x1bf0,0x1bf6,0x1bf0,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128d,0x128d,0x128d,0x1272,0x1938,0x1398,0x1296,0x1398,0x1398,
-0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1296,0x1398,0x1296,0x127b,0x127b,0x1323,0x1278,
-0x1323,0x1323,0x1323,0x1323,0x1278,0x1278,0x129c,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x127b,0x129c,0x129c,
-0x127b,0x129c,0x1278,0x127b,0x127b,0x127e,0x129c,0x1278,0x1278,0x129c,0x127b,0x127b,0x1395,0x1395,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1287,0x1287,0x1287,0x1287,0x13ad,0x138f,0x1290,0x13ad,0x13ad,0x13ad,
-0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x1836,0x1836,0x1836,0x1836,0x1836,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x1539,0x1539,0x1a88,0x1a88,0x1a88,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x1398,0x1398,0x1296,0x1398,
-0x1398,0x1398,0x1296,0x1398,0x1398,0x1398,0x1290,0x1290,0x1290,0x1290,0x1290,0x1392,0x1395,0x1395,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1293,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1293,0x1395,0x1395,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1416,0x1416,0x19e6,0x1a88,0x1a88,0x1a88,0x1395,0x1395,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1395,0x1395,0x1293,0x1395,0x1293,0x1293,0x1395,0x1395,0x1293,0x12b7,0x12b7,0x12b7,0x12b7,
-0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,
-0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x1341,0x133e,0x1341,0x133e,
-0x1341,0x133e,0x1341,0x133e,0x1341,0x133e,0x1404,0x1518,0x1518,0x1518,0x17b2,0x1926,0x1518,0x1518,0x16fe,0x16fe,
-0x16fe,0x16f8,0x16fe,0x16f8,0x1929,0x1926,0x19e3,0x19e0,0x19e3,0x19e0,0x19e3,0x19e0,0x1365,0x1365,0x1365,0x1365,
-0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,
-0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x137a,0x136b,0x137a,0x1380,
-0x1380,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,
-0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x136b,0x136b,0x136b,0x136b,
-0x136b,0x136b,0x136b,0x136b,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1386,0x1386,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x13b6,0x13b3,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bc,0x13bf,0x13bf,0x13bf,0x13bc,0x13bf,0x13bc,0x13bf,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bc,0x13bf,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,
-0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x1542,0x1542,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1788,0x1788,0x1788,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1788,0x1788,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1542,0x1542,0x1545,0x1545,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x16b3,0x13bf,0x13c2,
-0x13bf,0x13bf,0x13c2,0x1548,0x1548,0x1545,0x1545,0x1788,0x1788,0x1788,0x1788,0x1788,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x16b3,0x1545,0x1545,0x1545,
-0x1788,0x1788,0x1788,0x178b,0x178b,0x178b,0x178b,0x178b,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x13bf,0x1545,0x13c2,0x13c2,0x13bf,0x13bf,0x13c2,0x13c2,
-0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,
-0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,
-0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x13bf,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x16b3,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1788,0x1419,0x1419,0x1419,0x1419,0x1542,0x1542,0x1542,0x1542,
-0x1542,0x1542,0x1545,0x1788,0x1788,0x1788,0x1788,0x170d,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1548,0x1548,0x1545,0x1545,0x1545,0x1545,0x183f,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x14a3,0x13c5,0x13c5,0x13c5,
-0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x13c5,
-0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,
-0x13c5,0x13c5,0x14a3,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x14a3,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,
-0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x16b9,0x16b9,0x178e,
-0x178e,0x13c8,0x13c8,0x13c8,0x13c5,0x13c5,0x13c5,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x1638,0x1638,0x1638,0x1638,
-0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x13cb,0x13cb,0x13cb,0x13cb,
-0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,
-0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13ce,
-0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,
-0x13ce,0x13ce,0x13ce,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13d1,0x13d1,0x13d1,0x13d1,
-0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,
-0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x17bb,0x17bb,0x17b8,0x1710,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x141f,0x141f,0x141f,0x141f,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x154e,0x1422,0x1551,0x1422,0x1422,
-0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1713,
-0x1713,0x1b5d,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x1a8b,0x1a8b,0x142b,0x142b,0x142b,0x143d,
-0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,
-0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x1458,0x1458,0x1458,0x1458,
-0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,
-0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x145e,0x145e,0x145e,0x145e,
-0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,
-0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x19ec,0x1461,0x1461,0x1461,0x1461,
-0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,
-0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1467,0x1467,0x1473,0x1479,
-0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,
-0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1473,
-0x1473,0x1473,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1473,0x1476,0x1479,0x147c,0x147c,
-0x1479,0x147f,0x147f,0x146a,0x146d,0x1719,0x171c,0x171c,0x171c,0x1557,0x1a94,0x1a91,0x1470,0x1470,0x1470,0x1470,
-0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1554,0x1722,0x1725,0x171f,0x1728,0x1728,0x149a,0x149a,0x149a,0x149a,
+0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,
+0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1272,0x1278,
+0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,
+0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,
+0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x13b6,0x1290,0x13b9,0x1290,0x1290,0x1290,0x1290,0x128d,0x128d,0x128d,0x1290,0x17e5,0x17e8,0x1a13,0x1a10,
+0x1293,0x1293,0x1293,0x12a2,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,
+0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,
+0x12a8,0x12a8,0x12a8,0x1296,0x12a2,0x12a2,0x1293,0x1293,0x1293,0x1293,0x12a2,0x12a2,0x1293,0x1293,0x12a2,0x12a2,
+0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,
+0x12b7,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12b4,0x12ae,0x12ae,0x12ae,0x12b4,0x12b1,0x1608,0x160b,0x160e,0x160e,
+0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,
+0x12ba,0x12c6,0x12ba,0x12ba,0x12ba,0x12cf,0x12cf,0x12ba,0x12ba,0x12cf,0x12c6,0x12cf,0x12cf,0x12c6,0x12ba,0x12bd,
+0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,
+0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,
+0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,
+0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,
+0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,
+0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f6,0x12f6,0x12f6,
+0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,
+0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,
+0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,
+0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,
+0x1317,0x1317,0x1323,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,
+0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1329,0x1326,0x1329,0x1326,0x1326,0x1326,
+0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1329,0x1326,0x1326,0x1326,0x1326,
+0x1323,0x1323,0x1323,0x1317,0x1317,0x1317,0x1317,0x1323,0x1323,0x131d,0x131a,0x1320,0x1320,0x132f,0x132c,0x132c,
+0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,
+0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,
+0x1338,0x1338,0x1338,0x1335,0x1335,0x1335,0x1332,0x1332,0x1332,0x1332,0x1335,0x1332,0x1332,0x1332,0x1338,0x1335,
+0x1338,0x1335,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,
+0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1338,0x1335,0x1335,
+0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1cce,
+0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1af1,0x1aeb,0x1ce0,0x1ce0,0x1ce0,0x1ce3,0x1cdd,0x1ce3,0x1cdd,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1356,0x1356,0x1356,0x133b,0x1a19,
+0x1467,0x135f,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x135f,0x1467,0x135f,
+0x1344,0x1344,0x13ec,0x1341,0x13ec,0x13ec,0x13ec,0x13ec,0x1341,0x1341,0x1365,0x1341,0x1341,0x1341,0x1341,0x1341,
+0x1341,0x1344,0x1365,0x1365,0x1344,0x1365,0x1341,0x1344,0x1344,0x1347,0x1365,0x1341,0x1341,0x1365,0x1344,0x1344,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1350,0x1350,0x1350,0x1350,0x147c,0x145e,
+0x1359,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x1914,0x1914,0x1914,0x1914,0x1914,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1611,0x1611,0x1b75,0x1b75,0x1b75,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
+0x1467,0x1467,0x135f,0x1467,0x1467,0x1467,0x135f,0x1467,0x1467,0x1467,0x1359,0x1359,0x1359,0x1359,0x1359,0x1461,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x135c,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x135c,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x14e8,0x14e8,0x1acd,0x1b75,0x1b75,0x1b75,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x135c,0x1464,0x135c,0x135c,0x1464,0x1464,0x135c,
+0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
+0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
+0x140a,0x1407,0x140a,0x1407,0x140a,0x1407,0x140a,0x1407,0x140a,0x1407,0x14d6,0x15f0,0x15f0,0x15f0,0x1890,0x1a04,
+0x15f0,0x15f0,0x17dc,0x17dc,0x17dc,0x17d6,0x17dc,0x17d6,0x1a0a,0x1a07,0x1ac4,0x1ac1,0x1ac4,0x1ac1,0x1ac4,0x1ac1,
+0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
+0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
+0x1449,0x143a,0x1449,0x144f,0x144f,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,
+0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,
+0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
+0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
+0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x1485,0x1482,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,
+0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,
+0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148b,0x148b,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148b,0x148e,0x148e,0x148e,0x148b,0x148e,0x148b,0x148e,0x148b,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x1491,0x148e,0x148e,0x148e,0x148e,0x148b,0x148e,0x148b,0x148b,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148b,
+0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,
+0x148b,0x148b,0x161a,0x161a,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x1866,0x1866,0x1866,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x1866,0x1866,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x1491,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161a,0x161a,0x161d,0x161d,0x148e,0x148e,0x1491,0x1491,
+0x1491,0x1791,0x148e,0x1491,0x148e,0x148e,0x1491,0x1620,0x1620,0x161d,0x161d,0x1866,0x1866,0x1866,0x1866,0x1866,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x161d,0x161d,
+0x1791,0x161d,0x161d,0x161d,0x1866,0x1866,0x1866,0x1869,0x1869,0x1869,0x1869,0x1869,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x148e,0x161d,0x1491,0x1491,
+0x148e,0x148e,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x1491,0x1491,
+0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,
+0x1491,0x148e,0x148e,0x148e,0x1491,0x148e,0x148e,0x148e,0x148e,0x1491,0x1491,0x1491,0x148e,0x1491,0x1491,0x1491,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x1491,0x148e,0x1491,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x1791,0x148e,0x148e,0x148e,0x148e,0x161d,0x161d,0x1866,0x14eb,0x14eb,0x14eb,0x14eb,
+0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161d,0x1866,0x1866,0x1866,0x1866,0x17eb,0x148e,0x148e,0x148e,0x148e,
+0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1620,0x1620,0x161d,0x161d,0x161d,0x161d,0x191d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161d,0x148e,0x148e,0x148e,0x148e,0x148e,
+0x1575,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,
+0x1494,0x1575,0x1494,0x1494,0x1494,0x1575,0x1494,0x1575,0x1494,0x1575,0x1494,0x1575,0x1494,0x1494,0x1494,0x1575,
+0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1575,0x1575,0x1494,0x1494,0x1494,0x1494,0x1575,0x1494,0x1575,0x1575,
+0x1494,0x1494,0x1494,0x1494,0x1575,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,
+0x1494,0x1797,0x1797,0x186c,0x186c,0x1497,0x1497,0x1497,0x1494,0x1494,0x1494,0x1497,0x1497,0x1497,0x1497,0x1497,
+0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
+0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
-0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x190e,0x190e,0x190e,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
-0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x19da,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x1872,0x190e,
-0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1548,0x1545,0x1545,0x1545,0x1545,0x16b6,0x16b6,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x183c,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
-0x1545,0x1545,0x1545,0x1545,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
-0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
-0x1566,0x1566,0x1566,0x1566,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
-0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
-0x157e,0x157e,0x157e,0x157e,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
-0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
-0x1581,0x1581,0x1581,0x1581,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
-0x15ab,0x15ab,0x15ab,0x159f,0x159f,0x159f,0x15ab,0x15ab,0x159f,0x15ae,0x15a2,0x159f,0x15b4,0x15b4,0x15a8,0x15b4,
-0x15b4,0x15a5,0x17c4,0x1bed,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15b7,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,
-0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15c9,
-0x15d2,0x15d2,0x15d2,0x15d2,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15e7,0x15f0,0x15f0,0x15f0,
-0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
-0x15f0,0x15f0,0x15f0,0x15f0,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,
-0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,
-0x15f9,0x15f9,0x15f9,0x15f9,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
-0x160b,0x160b,0x160b,0x160b,0x1608,0x1608,0x1608,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x1608,
-0x1608,0x15fc,0x1608,0x15ff,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
-0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
-0x160b,0x160b,0x160b,0x160b,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,
-0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,
-0x162f,0x162c,0x162c,0x162c,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,
-0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x163e,0x163e,0x163e,0x163b,0x163b,0x163b,
-0x1638,0x1638,0x1638,0x1638,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1653,0x1653,0x1647,0x1644,0x1644,
-0x1644,0x1644,0x1644,0x1644,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,
-0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1656,0x1656,0x1656,0x1656,0x1656,
-0x1656,0x1656,0x1656,0x1656,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
+0x149a,0x149a,0x149a,0x149d,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
+0x149a,0x149a,0x149a,0x149a,0x149d,0x149d,0x149d,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
+0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,
+0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,
+0x1899,0x1899,0x1896,0x17ee,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14ee,0x14ee,0x14ee,0x14ee,0x14ee,0x14ee,
+0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x1626,
+0x14f4,0x162c,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x1629,0x1629,0x1629,
+0x1629,0x1629,0x162c,0x17f1,0x17f1,0x1c4a,0x189f,0x189f,0x189f,0x189f,0x189f,0x189f,0x189f,0x189f,0x1b78,0x1b78,
+0x14fd,0x14fd,0x14fd,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,
+0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,
+0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,
+0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,
+0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,
+0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1ad3,
+0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,
+0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,
+0x1539,0x1539,0x1545,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,
+0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,
+0x154b,0x154b,0x154b,0x1545,0x1545,0x1545,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1545,
+0x1548,0x154b,0x154e,0x154e,0x154b,0x1551,0x1551,0x153c,0x153f,0x17f7,0x17fa,0x17fa,0x17fa,0x1632,0x1b81,0x1b7e,
+0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x162f,0x1800,0x1803,0x17fd,0x1806,0x1806,
+0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x19ec,0x19ec,0x19ec,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x1abb,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,
+0x15cc,0x15cc,0x1950,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1620,0x161d,0x161d,0x161d,
+0x161d,0x1794,0x1794,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x191a,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,
+0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
-0x165c,0x165c,0x165c,0x165c,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,
-0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,
-0x1680,0x1680,0x1680,0x1680,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1689,0x1689,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
-0x16a1,0x16a1,0x16a1,0x16a1,0x168c,0x169b,0x169b,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x169b,0x168c,0x169e,
-0x169e,0x168c,0x169e,0x168c,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
+0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,
+0x168c,0x168c,0x168c,0x168c,0x1686,0x1686,0x1686,0x167a,0x167a,0x167a,0x1686,0x1686,0x167a,0x1689,0x167d,0x167a,
+0x168f,0x168f,0x1683,0x168f,0x168f,0x1680,0x18a2,0x1cda,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
-0x16a1,0x16a1,0x16a1,0x16a1,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
+0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x1692,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
-0x16aa,0x16aa,0x16aa,0x16aa,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
+0x16aa,0x16aa,0x16aa,0x16a4,0x16ad,0x16ad,0x16ad,0x16ad,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
-0x16b0,0x16b0,0x16b0,0x16b0,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,
-0x16f5,0x16f5,0x16f5,0x16f5,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,
-0x190e,0x190e,0x190e,0x19da,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
-0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
-0x1716,0x1716,0x1716,0x1716,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x175b,0x1758,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
+0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,
+0x16c2,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,
+0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,
+0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,
+0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,
+0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e3,0x16e3,0x16e3,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,
+0x16d7,0x16d7,0x16d7,0x16e3,0x16e3,0x16d7,0x16e3,0x16da,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,
+0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,
+0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,
+0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,0x170d,
+0x170d,0x170d,0x170d,0x170d,0x170d,0x170a,0x170a,0x170a,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
+0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x171c,0x171c,
+0x171c,0x1719,0x1719,0x1719,0x1716,0x1716,0x1716,0x1716,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x171f,0x171f,0x171f,0x171f,0x171f,0x171f,0x171f,0x1731,
+0x1731,0x1725,0x1722,0x1722,0x1722,0x1722,0x1722,0x1722,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,
+0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1734,
+0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
-0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,
-0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,
-0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
-0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
-0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
-0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
-0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x177c,0x177c,0x177c,0x177c,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x177c,0x177c,0x177c,
-0x177c,0x177c,0x177c,0x177c,0x177c,0x1779,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,
-0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,
-0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,
-0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,
-0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,
-0x187e,0x187e,0x187e,0x187e,0x1af7,0x1a4c,0x1a4c,0x1a4f,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,
-0x179a,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x18e4,0x1797,0x1797,0x1797,0x1797,0x1797,0x1845,0x1845,0x1845,
-0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x1797,0x19c5,0x19c5,0x1a4c,0x1a4c,0x1a4c,0x1a4c,0x1a4c,
-0x1a4c,0x1a4c,0x1a4c,0x1af4,0x1bc6,0x1a4f,0x1a4f,0x1a4f,0x18e1,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,
-0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e1,0x18e1,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,
-0x1b5d,0x1b60,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x193b,0x17be,0x17be,0x17be,0x17be,
-0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1848,0x1845,
-0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x1848,0x18e4,0x18e4,0x1848,0x1848,0x1848,0x1848,0x1848,
-0x1848,0x1848,0x1845,0x17c7,0x1848,0x1848,0x1848,0x1a4c,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x17c7,0x1845,
-0x1845,0x1845,0x1845,0x1845,0x18e1,0x19c5,0x19c5,0x19c5,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,
-0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x18e1,0x17dc,0x17dc,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,
-0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,
-0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,
-0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,
-0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x1827,0x1827,0x1827,
-0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
-0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
-0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,
+0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,
+0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x176a,0x1779,0x1779,0x176a,0x176a,0x176a,0x176a,0x176a,
+0x176a,0x1779,0x176a,0x177c,0x177c,0x176a,0x177c,0x176a,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,
+0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,
+0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,
+0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,
+0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,
+0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,
+0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,
+0x19ec,0x19ec,0x19ec,0x19ec,0x17d3,0x17d3,0x17d3,0x17d3,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,
+0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x1abb,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
+0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
+0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1839,0x1836,0x1833,0x1833,0x1833,0x1833,
+0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x183c,0x183c,0x183c,0x183c,
+0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,
+0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183f,0x183f,0x183f,0x183f,
+0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,
+0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x1851,0x1851,0x1851,0x1851,
0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,
-0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,
-0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x18a8,0x18a8,0x18a8,0x18a8,0x19fe,0x19fe,0x18ab,0x18ab,
-0x18ab,0x18ab,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x18a5,
-0x1896,0x1899,0x189c,0x18ae,0x18ae,0x194d,0x189f,0x189f,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,
-0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,
-0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,
-0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18b4,0x18ba,0x18b7,0x18b7,0x18b7,
-0x18b7,0x18c6,0x18cc,0x18b7,0x18b7,0x18b7,0x18b7,0x18c3,0x18c9,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,
-0x18b7,0x18b7,0x18b7,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,
-0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,
-0x18d5,0x18d5,0x18d5,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,
-0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1bb7,0x1bb7,0x1bb7,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x18e1,0x18e1,0x18e1,0x18e1,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x1a4c,0x1af4,0x19c5,0x19c5,0x19c5,0x19c5,0x1af7,
-0x1af4,0x1bc6,0x19c5,0x1a4c,0x19c5,0x19c5,0x19c5,0x19c5,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x19c5,
-0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,
-0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
-0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
-0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,
-0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,
-0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x1bc9,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
-0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
-0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
-0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,
-0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,
-0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
-0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
-0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,
-0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,
-0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,
-0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,
-0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,
-0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,
-0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19aa,0x19aa,0x19aa,0x19c5,0x19c5,0x19c5,0x1af4,0x1af4,0x1a4c,0x1a4c,0x1a4c,
-0x1a4c,0x1a4c,0x1a4c,0x1af4,0x1af4,0x1af4,0x1a4c,0x1a4c,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c8,0x19c8,0x19c5,
-0x19c8,0x19c8,0x1a4c,0x1a4f,0x1a4c,0x1a4c,0x1a4c,0x1a4c,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
-0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
-0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
-0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
-0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a67,0x1a67,0x1a31,0x1a67,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a37,0x1a37,0x1a37,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,
+0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1854,0x1854,0x1854,0x1854,
+0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,
+0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x185a,
+0x185a,0x185a,0x185a,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x1857,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,
+0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,
+0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x1872,0x1872,0x1872,0x1872,
+0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,
+0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x195c,0x195c,0x195c,0x195c,
+0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x1be4,0x1b33,0x1b33,0x1b36,0x1875,0x1875,0x1875,0x1875,
+0x1875,0x1875,0x1875,0x1875,0x1878,0x1926,0x1926,0x1926,0x1926,0x1926,0x1926,0x19c2,0x1875,0x1875,0x1875,0x1875,
+0x1875,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x19bf,0x19bf,
+0x19bf,0x19bf,0x19bf,0x19bf,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1875,0x1aa6,0x1aa6,0x1b33,
+0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1be1,0x1cb3,0x1b36,0x1b36,0x1b36,0x19bf,0x19c2,0x19c2,0x19c2,
+0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19bf,0x19bf,0x1b78,0x1b78,0x1b78,0x1b78,
+0x1b78,0x1b78,0x1b78,0x1b78,0x1c4a,0x1c4d,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1c47,0x1a1c,
+0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x189c,0x1923,0x1923,0x1923,0x1923,
+0x1923,0x1923,0x1926,0x1923,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x1926,0x19c2,0x19c2,0x1926,
+0x1926,0x1926,0x1926,0x1926,0x1926,0x1926,0x1923,0x18a5,0x1926,0x1926,0x1926,0x1b33,0x1923,0x1923,0x1923,0x1923,
+0x1923,0x1923,0x18a5,0x1923,0x1923,0x1923,0x1923,0x1923,0x19bf,0x1aa6,0x1aa6,0x1aa6,0x1923,0x1923,0x1923,0x1923,
+0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x19bf,0x18ba,0x18ba,0x18b7,0x18b7,
+0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,
+0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18ba,0x18ba,0x18ba,0x18ba,
+0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,
+0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x1908,0x1908,0x1908,0x1908,
+0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,
+0x1908,0x1905,0x1905,0x1905,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1908,0x1908,0x1908,0x1908,
+0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,
+0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x192c,0x192c,0x192c,0x192c,
+0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,
+0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192f,0x192f,0x192f,0x192f,
+0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,
+0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x1bed,
+0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1986,0x1986,0x1986,0x1986,
+0x1ae5,0x1ae5,0x1989,0x1989,0x1989,0x1989,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,
+0x1971,0x1971,0x1971,0x1983,0x1974,0x1977,0x197a,0x198c,0x198c,0x1a2e,0x197d,0x197d,0x1986,0x1986,0x1986,0x1986,
+0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,
+0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x19a7,0x19a7,0x19a7,0x19a7,
+0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x1992,
+0x1998,0x1995,0x1995,0x1995,0x1995,0x19a4,0x19aa,0x1995,0x1995,0x1995,0x1995,0x19a1,0x19a7,0x1995,0x1995,0x1995,
+0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,
+0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19b3,0x19b3,0x19b3,0x19b3,
+0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1bd8,0x1bd8,0x1bd8,0x1bd8,
+0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1bd8,0x1ca4,0x1ca4,0x1ca4,0x19b9,0x19b9,0x19b9,0x19b9,
+0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,
+0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19bf,0x19bf,0x19bf,0x19bf,
+0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1b33,0x1be1,0x1aa6,
+0x1aa6,0x1aa6,0x1aa6,0x1be4,0x1be1,0x1cb3,0x1aa6,0x1b33,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x19bf,0x19bf,0x19bf,0x19bf,
+0x19bf,0x19bf,0x19bf,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,
+0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x19c8,0x19c8,0x19c8,0x19c8,
+0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,
+0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19cb,0x19cb,0x19cb,0x19cb,
+0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,
+0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x1cb6,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,
+0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x1a43,0x1a43,0x1a43,0x1a43,
0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,
-0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
-0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
-0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,
-0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,
-0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,
-0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,
-0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
-0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
-0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
-0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
-0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
-0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
-0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
-0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
-0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
-0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,
-0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
-0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
-0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
-0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0,0,0,0
+0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a5e,0x1a5e,0x1a5e,0x1a5e,
+0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,
+0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a5e,0x1a64,0x1a64,0x1a64,0x1a64,
+0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,
+0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a82,0x1a82,0x1a82,0x1a82,
+0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,
+0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a85,0x1a85,0x1a85,0x1a85,
+0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,
+0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a8e,0x1a8e,0x1a8e,0x1a8e,
+0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,
+0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8b,0x1a8b,0x1a8b,0x1aa6,0x1aa6,0x1aa6,0x1be1,
+0x1be1,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1be1,0x1be1,0x1be1,0x1b33,0x1b33,0x1aa6,0x1aa6,0x1aa6,0x1aa6,
+0x1aa6,0x1aa9,0x1aa9,0x1aa6,0x1aa9,0x1aa9,0x1b33,0x1b36,0x1b33,0x1b33,0x1b33,0x1b33,0x1ae8,0x1ae8,0x1ae8,0x1ae8,
+0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,
+0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1b0f,0x1b0f,0x1b0f,0x1b0f,
+0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,
+0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b18,0x1b18,0x1b18,0x1b18,
+0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b4e,0x1b4e,0x1b18,0x1b4e,
+0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b18,0x1b1e,0x1b1e,0x1b1e,0x1b2a,0x1b2a,0x1b2a,0x1b2a,
+0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,
+0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
+0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
+0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bcf,0x1bcf,0x1bcf,0x1bcf,
+0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,
+0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bf3,0x1bf3,0x1bf3,0x1bf3,
+0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,
+0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf3,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,
+0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c8c,0x1c9e,0x1c9e,0x1c9e,0x1c9e,
+0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,
+0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1c9e,0x1ca1,0x1ca1,0x1ca1,0x1ca1,
+0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,
+0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1ca1,0x1cfb,0x1cfb,0x1cfb,0x1cfb,
+0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cf8,0x1cf8,0x1cf8,
+0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1cf8,0x1d3a,0x1d3a,0x1d3a,0x1d3a,
+0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,
+0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,
+0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0x1d46,0,0,0,0
};
static const UTrie2 propsVectorsTrie={
@@ -3533,17 +3534,17 @@ static const UTrie2 propsVectorsTrie={
propsVectorsTrie_index+5368,
nullptr,
5368,
- 27396,
+ 27416,
0xa40,
0x1578,
0x0,
0x0,
0x110000,
- 0x7ff8,
+ 0x800c,
nullptr, 0, false, false, 0, nullptr
};
-static const uint32_t propsVectors[7260]={
+static const uint32_t propsVectors[7497]={
0x67,0,0,0x67,0,0xe00000,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67,
0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1167,0,0,0x1267,0,
0,0x1367,0,0,0x1467,0,0,0x1567,0,0,0x1667,0,0,0x1767,0,0,
@@ -3590,416 +3591,431 @@ static const uint32_t propsVectors[7260]={
0,0,0x14067,0,0,0x14167,0,0,0x14367,0,0,0x14467,0,0,0x14567,0,
0,0x14667,0,0,0x14767,0,0,0xa0067,0,0xe00000,0xa4f67,0,0xe00000,0xa5f67,0,0xe00000,
0xac567,0,0xe00000,0xad167,0,0xe00000,0xb0067,0,0xe00000,0xb1267,0,0xe00000,0xb2e67,0,0xe00000,0xb4867,
-0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020,0x11000100,0x40000001,0xa5a040,0x11000100,0x40000001,
-0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200,0x24000000,0x200000,0x11000200,0x24000008,0x1710000,
-0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100,0x220401,0x11000319,0x7c00100,0x220402,0x11000319,
-0x7c00100,0x250400,0x11000319,0x7c00100,0x250401,0x11000419,0x7c00100,0x220400,0x11000419,0x7c00100,0x220401,0x11000419,0x7c00100,0x220402,0x11000419,0x7c00100,
-0x230400,0x11000419,0x7c00100,0x250400,0x11000419,0x7c00100,0x250401,0x11000419,0x7c00100,0x250402,0x11000519,0x7c00100,0x220400,0x11000519,0x7c00100,0x230400,
-0x11000600,0x4000400,0x200002,0x11000600,0x4000400,0x200400,0x11000600,0x7c00500,0x220400,0x11000600,0x7c00500,0x230400,0x11000600,0x7c00500,0x530400,0x11000600,
-0x7c00d00,0x230400,0x11000619,0x7c00500,0x22040f,0x11000800,0x4000010,0x1001401,0x11000800,0x4000400,0x200001,0x11000800,0x6800010,0x201001,0x11000800,0x7c00500,
-0x230401,0x11000807,0x7c00100,0x220400,0x11000807,0x7c00100,0x250400,0x1100080e,0x4000400,0x200000,0x1100080e,0x4000400,0x200002,0x1100080e,0x7000500,0x220402,
-0x1100080e,0x7c00100,0x220400,0x1100080e,0x7c00100,0x220401,0x1100080e,0x7c00100,0x220402,0x1100080e,0x7c00100,0x250400,0x1100080e,0x7c00100,0x250401,0x1100080e,
-0x7c00120,0x220402,0x1100080e,0x7c00120,0x250402,0x11000908,0x4000000,0x200000,0x11000908,0x7c00100,0x220400,0x11000908,0x7c00100,0x220401,0x11000908,0x7c00100,
-0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200400,0x11000a03,0x4000000,0x201000,0x11000a03,0x4000000,0x270000,0x11000a03,0x7c00100,0x220400,
-0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000a03,0xc000010,0x1049400,0x11000b13,0x2802500,0x962460,0x11000b13,
-0x4000000,0x200000,0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000,0x11000b13,0x4000010,0x200000,0x11000b13,0x7c00100,
-0x2633800,0x11000c00,0x80000000,0x1329960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,
-0x11000c02,0x4000000,0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100,0x230400,0x11000c02,0x7c00100,0x230401,0x11000c02,
-0x7c00100,0x230402,0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000f01,0x2802400,0x962460,0x11000f0a,0x2802100,0x962460,0x11000f0a,0x2802400,
-0x962460,0x11000f0a,0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a,0x7c00100,0x230400,0x11000f0a,0x7c00100,0x230401,
-0x11001004,0x2802100,0x962460,0x11001004,0x2802400,0x962460,0x11001004,0x2806400,0x962460,0x11001004,0x4000000,0x200000,0x11001004,0x4000000,0x1500000,0x11001004,
-0x6800100,0x962540,0x11001004,0x6800100,0x962541,0x11001004,0x7c00100,0x230400,0x11001004,0x7c00100,0x230401,0x11001110,0x2802100,0x962460,0x11001110,0x2802400,
-0x962460,0x11001110,0x2806400,0x962460,0x11001110,0x6800100,0x962540,0x11001110,0x7c00100,0x230400,0x11001110,0x7c00100,0x230401,0x1100120f,0x2802100,0x962460,
-0x1100120f,0x2802400,0x962460,0x1100120f,0x2806400,0x962460,0x1100120f,0x6800100,0x962540,0x1100120f,0x7c00100,0x230400,0x1100131f,0x2802100,0x962460,0x1100131f,
-0x2802400,0x962460,0x1100131f,0x2806400,0x962460,0x1100131f,0x4000000,0x200000,0x1100131f,0x6800000,0x1329800,0x1100131f,0x6800100,0x962540,0x1100131f,0x6800100,
-0x962541,0x1100131f,0x7c00100,0x230400,0x1100131f,0x7c00100,0x230401,0x11001423,0x2802100,0x962460,0x11001423,0x2806400,0x962460,0x11001423,0x6800100,0x962540,
-0x11001423,0x6800100,0x962541,0x11001423,0x7c00100,0x230400,0x11001423,0x7c00100,0x230401,0x11001524,0x2802100,0x962460,0x11001524,0x2802100,0x962461,0x11001524,
-0x2806400,0x962460,0x11001524,0x6800000,0x1329800,0x11001524,0x6800100,0x962540,0x11001524,0x7c00100,0x230400,0x11001615,0x2802100,0x962460,0x11001615,0x2806400,
-0x962460,0x11001615,0x6800100,0x962540,0x11001615,0x6800100,0x962541,0x11001615,0x7c00100,0x230400,0x1100171a,0x2802100,0x962460,0x1100171a,0x2806400,0x962460,
-0x1100171a,0x6800000,0x1329800,0x1100171a,0x6800100,0x962540,0x1100171a,0x6800100,0x962541,0x1100171a,0x7c00100,0x230400,0x11001900,0x4000000,0x1600000,0x11001926,
-0x2802100,0x1862460,0x11001926,0x2802400,0x1862460,0x11001926,0x2806100,0x1862460,0x11001926,0x4000000,0x200000,0x11001926,0x4000010,0x400000,0x11001926,0x6800000,
-0x1329800,0x11001926,0x7800100,0x1830142,0x11001926,0x7c00100,0x1830000,0x11001926,0x7c00900,0x1830000,0x11001926,0x7e00100,0x1830000,0x11001a18,0x2802100,0x1862460,
-0x11001a18,0x2802400,0x1862460,0x11001a18,0x6800000,0x1329800,0x11001a18,0x7800100,0x1830142,0x11001a18,0x7c00100,0x1830000,0x11001a18,0x7c00100,0x1830002,0x11001a18,
-0x7c00900,0x1830000,0x11001a18,0x7e00100,0x1830000,0x11001d0c,0x7c00100,0x230400,0x11001d0c,0x7c00100,0x250400,0x11001e12,0x7c00100,0x2230500,0x11001e12,0x7c00100,
-0x2330520,0x11001e12,0x7c80100,0x2330520,0x11002619,0x7c00100,0x220401,0x11002619,0x7c00100,0x220402,0x11002619,0x7c00100,0x250401,0x1100270e,0x4000400,0x200001,
-0x1100270e,0x4000400,0x200002,0x1100270e,0x4000400,0x500001,0x1100270e,0x7c00100,0x220401,0x1100270e,0x7c00100,0x250401,0x11002800,0x80000,0x918820,0x11002800,
-0x80000,0x1c18020,0x11002800,0x180000,0x918820,0x11002800,0x4000001,0x445801,0x11002800,0x4000001,0x445802,0x11002800,0x4000001,0xc4000b,0x11002800,0x6800000,
-0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800,0x24000000,0x810000,0x11002800,0x24000000,0x1410000,
-0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006,0xc0000b,0x11002800,0x24000008,0x1410000,0x11002800,
-0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000,0x11002800,0x2c000010,0x1248002,0x11002800,0x40000001,
-0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x2880000,0x2a65620,0x11002801,0x2882000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,0x4000000,0x20000f,
-0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020,0x81000f,0x11002900,0x4000020,0x141000e,0x11002900,
-0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000,0x11002a00,0x4000000,0x1600000,0x11002a00,0x4000000,
-0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00,0x4000000,0x200002,0x11002c00,0x4000000,0x20000f,
-0x11002c00,0x4000020,0x200000,0x11002c00,0x7c00000,0x200000,0x11002c00,0x7c00020,0x200000,0x11002c00,0x7c00120,0x220405,0x11002c00,0x7c00120,0x230402,0x11002c00,
-0x7c00120,0x250402,0x11002c00,0x7c00120,0x250405,0x11002c19,0x7c00100,0x250400,0x11002c19,0x7c00100,0x250401,0x11002d00,0x4000000,0x100006,0x11002d00,0x4000000,
-0x200006,0x11002d19,0x7c00100,0x220402,0x11002d19,0x7c00100,0x230400,0x11002d19,0x7c00100,0x250402,0x11002e00,0x24000000,0x200000,0x11002e00,0x24000020,0x200000,
-0x11002e00,0x24000020,0x200001,0x11002f00,0x24000020,0x200000,0x11002f00,0x24000020,0x200001,0x11002f00,0x24000020,0x200002,0x11002f00,0x24000020,0xf00000,0x11002f00,
-0x24000020,0x1600000,0x11002f00,0x24000022,0x1600000,0x11003000,0x24000000,0x200000,0x11003000,0x24000020,0x200000,0x11003000,0x24000020,0x810000,0x11003000,0x24000020,
-0x1410000,0x11003100,0x24000000,0x200000,0x11003200,0x24000000,0x200000,0x11003300,0x4000000,0x100003,0x11003400,0x24000000,0x100000,0x11003400,0x24000000,0x200000,
-0x11003500,0x24000000,0x200000,0x11003600,0x24000000,0x200000,0x11003600,0x24000020,0x200000,0x11003700,0x24000000,0x200000,0x11003700,0x24000000,0xe00000,0x11003700,
-0x24000000,0x2800000,0x11003700,0x24000020,0x200000,0x11003800,0x4000000,0x100000,0x11003800,0x24000000,0x200000,0x11003800,0x24000000,0xb00000,0x11003800,0x24000000,
-0xe00000,0x11003800,0x24000000,0x1710000,0x11003800,0x24000000,0x2800000,0x11005003,0x7c00100,0x220402,0x11005013,0x2802500,0x962460,0x11005013,0x4000020,0x200005,
-0x11005013,0x7c00100,0x2633801,0x11005013,0x7c00100,0x2633802,0x11005013,0x7c00100,0x2633805,0x11005019,0x7c00100,0x220402,0x11005102,0x7000100,0x230408,0x11005102,
-0x7c00100,0x230404,0x11005102,0x7c00100,0x230407,0x11005102,0x7c00100,0x230408,0x11005102,0x7c00100,0x230409,0x11005201,0x2802400,0x962460,0x11005500,0x80000,
-0x1e18820,0x11005502,0x7000100,0x230408,0x11005502,0x7c00100,0x230404,0x11005502,0x7c00100,0x230407,0x11005502,0x7c00100,0x230408,0x11005502,0x7c00100,0x230409,
-0x11005667,0x1000,0,0x11020200,0x80004,0x418820,0x11020200,0x4000000,0x100006,0x11020200,0x4000000,0x10000f,0x11020200,0x4000400,0x100002,0x11020200,
-0x4000400,0x500002,0x11020200,0x6800c00,0x101000,0x11020200,0x24000000,0x100000,0x11020200,0x24000000,0x200000,0x11020200,0x24000000,0x1400000,0x11020200,0x24000000,
-0x1500000,0x11020200,0x24000000,0x1600000,0x11020200,0x24000020,0x100000,0x11020200,0x24000020,0x1600000,0x11020219,0x7c00100,0x12040f,0x11020219,0x7c00100,0x220400,
-0x11020219,0x7c00100,0x220401,0x11020219,0x7c00100,0x250400,0x11020319,0x7c00100,0x220400,0x11020319,0x7c00100,0x220401,0x11020319,0x7c00100,0x220402,0x11020319,
-0x7c00100,0x250400,0x11020319,0x7c00100,0x250402,0x11020319,0x7d00100,0x220402,0x11020419,0x7c00100,0x220401,0x11020519,0x7c00100,0x220400,0x11020600,0x4000400,
-0x100002,0x11020600,0x4000400,0x200400,0x11020600,0x7c00500,0x130400,0x11020600,0x7c00d00,0x130400,0x11020701,0x2802400,0x962460,0x11020701,0x2802400,0x962461,
-0x11020701,0x2802400,0xc62460,0x1102080e,0x7c00100,0x220400,0x1102080e,0x7c00100,0x250400,0x11020908,0x7c00100,0x220400,0x11020908,0x7c00100,0x220401,0x11020908,
-0x7c00100,0x250400,0x11020908,0x7c00100,0x250401,0x11022800,0x24000000,0x100000,0x11022800,0x24000000,0x200000,0x11022800,0x24000000,0x200002,0x11022800,0x24000000,
-0x401000,0x11022800,0x24000000,0xf00002,0x11022800,0x24000000,0xf0ac02,0x11022800,0x24000000,0x1500000,0x11022800,0x24000002,0x100000,0x11022800,0x24000002,0x370000,
-0x11022800,0x24000002,0x470000,0x11022800,0x24000006,0x400000,0x11022800,0x24000008,0x1710000,0x11022800,0x24000008,0x1712c00,0x11022800,0x24000020,0x100000,0x11022800,
-0x24000020,0x1500000,0x11022800,0x24000020,0x1500002,0x11022900,0x4000000,0x10000e,0x11022900,0x4000000,0x10000f,0x11022919,0x7c00100,0x12040f,0x11022c00,0x4000000,
-0x100002,0x11022c00,0x4000000,0x10000f,0x11022c00,0x4000000,0x1500002,0x11022c00,0x4000000,0x1600002,0x11022c00,0x7c00120,0x120405,0x11022c0e,0x7c00100,0x250401,
-0x11022c19,0x7c00100,0x150401,0x11022d00,0x4000000,0x100006,0x11022d00,0x4000000,0x200006,0x11022d19,0x7c00100,0x120402,0x11022d19,0x7c00100,0x150402,0x11022e00,
-0x24000000,0x200000,0x11022e00,0x24000020,0x100000,0x11022f00,0x24000020,0x100000,0x11022f00,0x24000020,0x100001,0x11022f00,0x24000020,0x100002,0x11023000,0x24000000,
-0x100000,0x11023300,0x4000000,0x100002,0x11023300,0x4000000,0x100003,0x11023300,0x4000100,0x120403,0x11023300,0x4000100,0x150403,0x11023400,0x24000000,0x100000,
-0x11023500,0x24000000,0x100000,0x11023600,0x24000000,0x100000,0x11023600,0x24000020,0x100000,0x11023700,0x24000000,0x100000,0x11023700,0x24000000,0xe00000,0x11023700,
-0x24000020,0x100000,0x11023800,0x4000000,0x100000,0x11023800,0x24000000,0x200000,0x11024e67,0,0,0x11025600,0x4000000,0x100000,0x11042a00,0x4000000,
-0x1600000,0x11045700,0x4000000,0x20000a,0x11045700,0x4000020,0x20000a,0x11045712,0x7c00100,0xe3040a,0x11045712,0x7c80100,0xe3040a,0x11045716,0x7c00100,0xe30c0a,
-0x11045716,0x7c00100,0x2530c0a,0x11063d00,0x4000001,0x445811,0x11065700,0x4000000,0x810011,0x11065700,0x4000000,0xe00011,0x11065700,0x4000000,0x1410011,0x11065700,
-0x4000000,0x1500011,0x11065700,0x4000000,0x1600011,0x11065700,0x4000006,0xe70011,0x11065700,0x4000008,0xe00011,0x11065700,0x4000008,0xe02c11,0x11065700,0x4000010,
-0x871411,0x11065700,0x4000010,0x1201411,0x11065700,0x4000010,0x1271011,0x11065700,0x4000020,0xe00011,0x11065700,0x4000400,0xe00011,0x11065700,0x4000420,0xe00011,
-0x11065700,0x6800000,0xe01c11,0x11065700,0x6800040,0xe29811,0x11065700,0xc000010,0x80ac11,0x11065700,0xc000010,0xb48011,0x11065719,0x7c00100,0xe20411,0x11065719,
-0x7c00100,0xe50411,0x11065719,0x7c00140,0xe20411,0x11065719,0x7c00140,0xe50411,0x11080100,0x6800000,0x201c00,0x11080100,0x68000c0,0x1329800,0x11080100,0x24000000,
-0x200000,0x11080100,0x24000000,0x810000,0x11080100,0x24000000,0x1410000,0x11080100,0x24000000,0x1500000,0x11080100,0x24000000,0x1600000,0x11080100,0x24000000,0x1b00000,
-0x11080100,0x24000000,0x2410000,0x11080100,0x24000006,0xd70000,0x11080100,0x24000008,0x1713c00,0x11080100,0x24000008,0x1714000,0x11080100,0x24000010,0x1001400,0x11080100,
-0x24000010,0x1071000,0x11080100,0x24000010,0x1071400,0x11080100,0x24000020,0x200000,0x11080100,0x24000020,0x400000,0x11080100,0x24000020,0x1600000,0x11080100,0x24000400,
-0x200000,0x11080100,0x24000420,0x200000,0x11080100,0x2c000010,0xb48000,0x11080100,0x2c000010,0x100ac00,0x11080100,0x44000001,0x1a45800,0x11080119,0x7c00100,0x220400,
-0x11080119,0x7c00100,0x250400,0x11080119,0x7c001c0,0x220400,0x11080119,0x7c001c0,0x250400,0x11080200,0x4000400,0x200002,0x11080200,0x24000000,0x200000,0x11080200,
-0x24000000,0x1500000,0x11080200,0x24000000,0x1600000,0x11080200,0x24000020,0x200000,0x110a1e12,0x7c00100,0x2130480,0x110a1e12,0x7c80100,0x2130480,0x110a3000,0x24000000,
-0xe00000,0x110a3000,0x24100000,0x810001,0x110a3000,0x24100000,0x1410001,0x110a3700,0x24000000,0x200000,0x110a3d00,0x4000000,0xe00000,0x110a3d00,0x4000000,0xe00002,
-0x110a3d00,0x24000000,0xe00000,0x110a3d11,0x7c00300,0xe30000,0x110a3d11,0x7c00900,0x1230400,0x110a3d12,0x2802400,0x962460,0x110a3e14,0x7c00100,0xe30000,0x110a3e14,
-0x7c00100,0xe30001,0x110a3e14,0x7c00100,0x2530000,0x110a3e14,0x7c00900,0x1230000,0x110a3e14,0x7c00900,0x1230001,0x110a3f16,0x7c00100,0xe30c00,0x110a3f16,0x7c00100,
-0xe30c01,0x110a3f16,0x7c00100,0x2530c00,0x110a3f16,0x7c00900,0x1230c00,0x110a3f16,0x7c00900,0x1230c01,0x110a4005,0x7c00100,0xe30400,0x110a4112,0x7c00100,0xe30402,
-0x110a4112,0x7c80100,0xe30402,0x110a4400,0x4000000,0xe00000,0x110a4412,0x4000000,0xe00002,0x110a4412,0x4000000,0xe00003,0x110a4416,0x4000000,0xe00c03,0x110a4500,
-0x4000000,0xe0000d,0x110a4516,0x4000000,0xe00c0d,0x110a4711,0x7c40300,0xe30000,0x110a4f11,0x7c00300,0xe30001,0x110a4f11,0x7c40300,0xe30000,0x110a5300,0x4000000,
-0x810010,0x110a5300,0x4000000,0xe00002,0x110a5300,0x4000000,0xe00010,0x110a5300,0x4000000,0x1410010,0x110a5300,0x4000002,0xe70010,0x110a5300,0x4000008,0x810010,
-0x110a5300,0x4000008,0x1410010,0x110a5300,0x6800000,0xe01c02,0x110a5300,0x6800000,0xe01c10,0x110a5400,0x4000000,0x81000c,0x110a5400,0x4000000,0xe0000c,0x110a5400,
-0x4000000,0x141000c,0x110a5400,0x4000000,0x150000c,0x110a5400,0x4000000,0x160000c,0x110a5400,0x4000002,0xe7000c,0x110a5400,0x4000010,0x87140c,0x110a5400,0x4000010,
-0xe7000c,0x110a5400,0x4000010,0x120140c,0x110a5400,0x4000010,0x127100c,0x110a5400,0x4000020,0xe0000c,0x110a5400,0x4000026,0xe7000c,0x110a5400,0xc000010,0x80ac0c,
-0x110a5400,0xc000010,0xb4800c,0x11400c0c,0x4000010,0xb00000,0x11400c0c,0x4000010,0x1071400,0x11400c17,0xc000010,0xb48000,0x11400c1e,0x7c00900,0x230400,0x11400f4b,
-0xc000010,0x448000,0x11400f5f,0xc000010,0x448000,0x11401d94,0x4000000,0x200000,0x11403dcc,0x4000000,0xe00000,0x114457c1,0x4000008,0x81000a,0x114457c1,0x4000008,
-0x141000a,0x114457c1,0x4000010,0x87000a,0x114457c1,0x6800004,0x120000a,0x114457c1,0xc000010,0x84800a,0x114457ca,0x3802500,0x126246a,0x114457ca,0x7c00d00,0x2530c0a,
-0x114a3dc1,0x24000000,0x810000,0x114a3dc1,0x24000000,0x1410000,0x114a3dc1,0x24000008,0x810000,0x114a3dc1,0x24000008,0x1410000,0x114a3dc1,0x24000010,0x870000,0x114a3dc1,
-0x2c000010,0x848000,0x114a3dc7,0x4000000,0xe00000,0x114a3dc7,0x24000000,0xe00000,0x114a3dc7,0x24000002,0xe00000,0x114a3dc7,0x24000002,0x1200000,0x114a3dc7,0x24000008,
-0x810000,0x114a3dc7,0x24000008,0x1410000,0x114a3dca,0x7c00900,0x930c00,0x114a3dca,0x7c00900,0xe30c00,0x114a3dcc,0x7c00300,0xe30000,0x114a3eca,0x7000400,0x1200c02,
-0x114a3fc1,0x6800004,0x1200000,0x114a3fca,0x7c00d00,0x2530c00,0x114a42cc,0x4000000,0xe00000,0x114a42cc,0x4000000,0xe0000f,0x114a44cc,0x4000000,0xe00002,0x114a44cc,
-0x4000000,0xe00003,0x114a45cc,0x4000000,0xe00002,0x114a45cc,0x4000000,0xe0000d,0x11505113,0x24000000,0x810000,0x11505113,0x24000000,0x1410000,0x1180090a,0x2802400,
-0x962460,0x11800c27,0x2802100,0x962460,0x11800c27,0x2802500,0x962460,0x11800f32,0x2802400,0x962460,0x11800f3f,0x2802400,0x962460,0x11820700,0x2802400,0x962460,
-0x11820700,0x2802500,0x962460,0x118a3dcd,0x2802400,0x962460,0x118a3eca,0x2802400,0x962460,0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c2c,
-0x6800000,0x1329800,0x11c00c30,0xc000010,0xb48000,0x11c00f78,0x6800000,0x1329800,0x11c0107d,0x6800000,0x1329800,0x11c01181,0x6800000,0x1329800,0x11c01285,0x6800000,
-0x1329800,0x11c01489,0x4000000,0x200000,0x11c01489,0x6800000,0x1329800,0x11c0168d,0x6800000,0x1329800,0x11d05117,0x7c00100,0x230408,0x20000067,0x1000,0,
-0x20000b13,0x2802400,0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,0x962460,0x20001b27,0x2802100,0x962461,0x20001b27,0x2802400,0x962460,0x20001b27,
-0x2802500,0x962460,0x20001b27,0x2806400,0x962460,0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,0x20001b27,0x4000000,0x400000,0x20001b27,0x4000000,
-0x500000,0x20001b27,0x4000000,0x810000,0x20001b27,0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,0x4000000,0x1410000,0x20001b27,0x4000010,0xb00000,
-0x20001b27,0x4000010,0xc00000,0x20001b27,0x6800000,0x1329800,0x20001b27,0x6800100,0x462540,0x20001b27,0x6800400,0x962540,0x20001b27,0x7c00100,0x230400,0x20001b27,
-0x7c00100,0x230401,0x20002619,0x7c00100,0x220401,0x20002a00,0x4000000,0x1600000,0x20004b67,0,0x1900000,0x20004c67,0,0x1900000,0x20004d67,0,
-0x1900000,0x20006d67,0x1000,0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,0,0,0x200a4a12,0x7c00100,0x1f304c1,
-0x200a4a12,0x7c00100,0x20304e1,0x21005600,0x4000000,0x700000,0x21022a00,0x4000000,0x1600000,0x30000419,0x7c00100,0x220400,0x30000419,0x7c00100,0x220401,0x30000419,
-0x7c00100,0x250400,0x30000419,0x7c00100,0x250401,0x30000519,0x7c00100,0x220400,0x30000600,0x4000400,0x200400,0x30000600,0x7c00500,0x230400,0x30000605,0x4000400,
-0x200400,0x3000080e,0x7c00100,0x220400,0x30000908,0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,0x7c00100,0x220401,0x30000908,0x7c00100,0x250400,
-0x30000908,0x7c00100,0x250401,0x30000a03,0x4000006,0x400400,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,0x230400,0x30000d22,0x2802100,0x962460,0x30000d22,
-0x2802400,0x962460,0x30000d22,0x2802500,0x962460,0x30000d22,0x4000000,0x200000,0x30000d22,0x4000010,0x200000,0x30000d22,0x7c00100,0x230400,0x30000d22,0xc000010,
-0x248000,0x30000d22,0x80000000,0x218560,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,0x2802100,0x962460,0x30001821,0x2806400,0x962460,
-0x30001821,0x4000000,0x200000,0x30001821,0x6800100,0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,0x230400,0x30001b27,0x2802100,0x962460,0x30001b27,
-0x2802400,0x962460,0x30001b27,0x4000000,0x200000,0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,0x30001c1c,0x2802100,0x1862460,0x30001c1c,0x2802400,
-0x1862460,0x30001c1c,0x2806400,0x1862460,0x30001c1c,0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,0x6800100,0x1862540,0x30001c1c,0x7c00100,0x1830000,
-0x30001c1c,0x7c00100,0x1830001,0x30001c1c,0xc000010,0x448000,0x30001f0b,0x4000000,0x200000,0x30001f0b,0x4000010,0x200000,0x30001f0b,0x4000010,0x400000,0x30001f0b,
-0x6800000,0x200000,0x30001f0b,0x7c00100,0x230400,0x30001f0b,0xc000010,0x248000,0x30002006,0x7c00100,0x250400,0x30002128,0x4000000,0x200000,0x30002128,0x7c00100,
-0x230400,0x30002128,0xc000010,0x248000,0x3000221d,0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,0x4000001,0x445800,0x3000221d,0x7c00100,0x230400,
-0x30002300,0x4000010,0x400000,0x30002320,0x7c00100,0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,0x1862460,0x30002417,0x2806400,0x1862460,0x30002417,
-0x2882000,0x1862460,0x30002417,0x4000000,0x200000,0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,0x30002417,0x4000010,0x400000,0x30002417,0x4000010,
-0x1200000,0x30002417,0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,0x7d00100,0x1830000,0x30002417,0xc000010,0x448000,
-0x3000251b,0x80000,0xc18820,0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,0x500000,0x3000251b,
-0x4000010,0x400000,0x3000251b,0x4000010,0xb70000,0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,0x3000251b,0x7c00900,
-0x230400,0x3000251b,0xc000010,0xb48000,0x3000251b,0x12882000,0x962460,0x30002800,0x24000000,0x200000,0x30002800,0x2c000010,0x1248002,0x30002a00,0x4000000,0x1600000,
-0x30002b01,0x2000,0x962460,0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,0x220405,0x30002d19,0x7c00100,0x250400,0x30002e00,0x24000000,0x200000,0x30003000,
-0x24000000,0x200000,0x30003100,0x24000000,0x200000,0x30003600,0x24000000,0x200000,0x30003700,0x24000000,0x200000,0x3000392e,0x24000000,0x200000,0x30005013,0x7c00100,
-0x2633801,0x30005600,0,0x918820,0x30020600,0x4000400,0x500400,0x30020701,0x2802400,0x962460,0x30020701,0x2802400,0xc62460,0x300a3a11,0x4020000,0xe00000,
-0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,0xe00000,0x300a3c00,0x4010000,0xe00000,0x300a3d11,0x7c00300,0xe30002,0x300a4305,
-0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,0x300a4829,0x7c00900,0x1230400,0x300a4929,0x4000000,0xe00000,0x3040259a,0x4000010,
-0x400000,0x3040259a,0x4000010,0xb70000,0x3040259a,0xc000010,0xb48000,0x304028bc,0x4000001,0xc41c0b,0x304a3dcc,0x4000000,0xe00000,0x30800c27,0x2802100,0x962460,
-0x30c01c92,0x6800000,0x1329800,0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x200000,0x3100581e,
-0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,0x31005b00,0x4000000,0x200000,0x31005c00,0x80000,
-0x918820,0x31005c00,0x2802000,0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,0x4000000,0x200001,0x31005c00,0x6800000,0x962540,
-0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,0x1329805,0x31005d00,0x7c00120,0x220405,0x31005d00,
-0x7c00120,0x250405,0x31006000,0x82000,0x962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,0x310a5f11,0x7c00300,0xe30001,0x32000419,0x7c00100,
-0x250400,0x3200080e,0x4000020,0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,0x7c00100,0x220400,0x32000908,0x7c00100,0x250400,
-0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,0x1e18820,0x32002800,0x80020,0x218820,0x32002800,
-0x4000001,0x445802,0x32002800,0x24000000,0x200000,0x32002800,0x24000000,0x1500002,0x32002800,0x24000020,0x200000,0x32002800,0x2c000010,0x1248002,0x32002919,0x7c00100,
-0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,0x2802020,0x962460,0x32002c00,0x4000000,0x200000,
-0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,0x250405,0x32002e00,0x24000020,0x200000,0x32002f00,
-0x24000020,0x200000,0x32003000,0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,0x32003600,0x24000020,0x200000,0x32003700,0x24000000,
-0x100000,0x32003700,0x24000000,0x200000,0x32003800,0x24000000,0x810000,0x32003800,0x24000000,0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,
-0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100,0x250400,0x3200622a,0x2802100,0x962460,0x3200622a,0x2806400,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,
-0x2802100,0x962460,0x3200632b,0x6804000,0x962540,0x3200632b,0x7c00100,0x230400,0x3200642c,0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,
-0x962460,0x3200652d,0x7c00100,0x230400,0x32006600,0x24000020,0x200000,0x32006700,0x24000020,0x200000,0x32006800,0x24000020,0x200000,0x32006900,0x24000020,0x200000,
-0x32006900,0x24000020,0x810000,0x32006900,0x24000020,0x1410000,0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,
-0x2882000,0xc62460,0x32023300,0x4000000,0x100000,0x32026c01,0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,
-0x810000,0x32086600,0x24000020,0x1410000,0x32086900,0x24000020,0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x200000,0x320a3d11,0x7c00100,0x1230400,
-0x320a3e14,0x7c00100,0xe30010,0x320a3e14,0x7c00100,0x2530000,0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,
-0x7c00300,0xe30001,0x320a6b16,0x7c00100,0x2530c00,0x32406396,0xc000010,0x448000,0x324a3dcf,0x4000000,0xe00000,0x324a3dcf,0x7c00100,0x1230400,0x324a3fca,0x4000002,
-0x1200c00,0x324a53c7,0x24000000,0xe00000,0x32820701,0x2802000,0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200400,
-0x4000080e,0x7c00100,0x220400,0x4000080e,0x7c00100,0x250400,0x4000080e,0x7c00100,0x250402,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,0x40000c02,
-0x2802500,0x962460,0x40000c02,0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000c02,0x80000000,0x1329960,0x40000d22,0x7c00100,
-0x230400,0x40000f0a,0x7c00100,0x230400,0x40001004,0x7c00100,0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,
-0x4000120f,0x4000000,0x1600000,0x4000120f,0x7c00100,0x230400,0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,
-0x2802400,0x962460,0x40001615,0x7c00100,0x230400,0x40002417,0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,
-0x200000,0x40002c00,0x4000000,0x200002,0x40003000,0x24000000,0x200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40005a09,0x7c00100,0x220400,
-0x40005a09,0x7c00100,0x250400,0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,0x40006f30,
-0x6800000,0x1329800,0x40006f30,0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,0x4000000,
-0x200000,0x40007208,0x7c00100,0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,0x220400,
-0x40007219,0x7c00500,0x220400,0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007400,0x4000000,0x200000,0x40007531,
-0x7c00100,0x230400,0x40007631,0x7c00100,0x230400,0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,0x7c00100,0x230400,0x40007a32,0x6800000,
-0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f,0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,0x962460,0x40020701,0x2802400,0xc62460,
-0x40023300,0x4000000,0x200000,0x40027d01,0x12882000,0x962460,0x400a3700,0x24000000,0x200000,0x400a3700,0x24000000,0xe00000,0x400a4400,0x4000000,0xe0000d,0x400a4412,
-0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003,0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,0x4000000,0x1410010,0x40507719,0x4000000,
-0x200000,0x4050771c,0x4000000,0x400000,0x4050771f,0x4000000,0x200000,0x4050771f,0x4000000,0x400000,0x40c01489,0x4000000,0x200000,0x40d05117,0x4000000,0x200000,
-0x41000419,0x7c00100,0x220400,0x41000419,0x7c00100,0x250400,0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,
-0x7c00100,0x250400,0x41000b13,0x2802000,0x962460,0x41000b13,0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,
-0x1500000,0x41000c02,0xc000010,0xb48000,0x41000f0a,0x7c00100,0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,
-0x41001d0c,0x7c00100,0x22040f,0x41001d0c,0x7c00100,0x230400,0x41001f0b,0x2802400,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,
-0x24000000,0x200000,0x41002800,0x24000000,0x400000,0x41002919,0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,
-0x200000,0x41002c00,0x7c00120,0x220405,0x41003000,0x24000000,0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0xe00000,0x41005d00,0x7c00120,0x220405,
-0x41006600,0x24000020,0x200000,0x41006600,0x24000020,0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,0x41007219,0x7c00100,0x220400,0x41007300,
-0x24000000,0x200000,0x41007e0e,0x2802000,0x962460,0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,0x7c00100,0x230400,0x41008002,0x7c00100,
-0x230400,0x41008137,0x2802100,0x962460,0x41008137,0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,0x230400,0x41008301,0x2802000,0x962460,
-0x41008407,0x4000000,0x200000,0x41008407,0x4000000,0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,0x41008407,0x7c00100,0x250400,0x4100850b,
-0x7c00100,0x230400,0x4100860b,0x4000000,0x200000,0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,0x7c00100,0x220400,0x41008838,0x7c00100,
-0x250400,0x41008939,0x2802000,0x962460,0x41008939,0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,0x200000,0x41008939,0x4000000,0x400000,
-0x41008939,0x7c00100,0x230400,0x41008939,0xc000010,0x448000,0x41008a00,0x4000400,0x200400,0x41008b3b,0x4000000,0x1800000,0x41008b3b,0x6800000,0x1329800,0x41008b3b,
-0x7c00100,0x1830000,0x41008b3b,0x7e00100,0x1830000,0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,0x7c00100,0x22040f,0x41008d19,0x7c00100,
-0x220400,0x41008d19,0x7c00100,0x22040f,0x41008e00,0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,0x1710000,0x41008e00,0x24000006,0x400000,
-0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000,0x962460,0x41008f3a,0x4000000,0x200000,0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,
-0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f,0x41020701,0x2802000,0x962460,0x41020701,0x2802000,0xc62460,0x410a3700,0x24000000,0x200000,0x410a3700,0x24000000,
-0xe00000,0x410a4412,0x4000000,0xe00003,0x410a4711,0x7c40300,0xe30000,0x410a4f11,0x7c00300,0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,
-0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000,0xb00010,0x410a9100,0x4000000,0xf00010,0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,
-0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010,0x41408ad2,0x4000400,0x200000,0x414a82cc,0x4000000,0xe00000,0x41808300,0x2802000,0x962460,0x41c01489,0x6800000,
-0x1329800,0x50000419,0x7c00100,0x220400,0x50000419,0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,0x220400,0x50000908,0x7c00100,0x250400,
-0x50000b13,0x2802500,0x962460,0x50000f0a,0x7c00100,0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,0x50002b01,0x2802020,0x962460,0x50002c00,
-0x4000000,0x200000,0x50002c19,0x7c00100,0x220400,0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,0x24000020,0x200000,0x50003700,0x24000000,
-0x200000,0x50005d00,0x7c00120,0x220405,0x50005d00,0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,0x250400,0x50006600,0x24000020,0x200000,
-0x50007300,0x24000000,0x200000,0x50008301,0x2802400,0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,0x50009257,0x4000000,0x200000,0x50009257,
-0x4000010,0x1071400,0x50009257,0x6800000,0x1329800,0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,0x7c00900,0x230400,0x50009257,0xc000010,
-0xb48000,0x5000933e,0x2802100,0x962460,0x5000933e,0x2802400,0x962460,0x5000933e,0x4000000,0x400000,0x5000933e,0x4000000,0xe00000,0x5000933e,0x4000010,0x400000,
-0x5000933e,0x6800000,0xe29800,0x5000933e,0x6800100,0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x2f62540,0x5000933e,0x7c00100,0x2b30400,0x5000933e,
-0x7c00100,0x2b30401,0x5000933e,0xc000010,0x448000,0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,0x4000400,0x200400,0x5000965a,0x4000000,
-0x500000,0x5000965a,0x7c00100,0x230400,0x5000965a,0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,0x400000,0x5000975b,0x7c00100,0x230400,
-0x50009865,0x7c00100,0x230400,0x50009965,0x4000010,0x400000,0x50009965,0x7c00100,0x230400,0x50409acc,0x4000000,0x200000,0x5100080e,0x7c00100,0x220400,0x5100080e,
-0x7c00100,0x250400,0x51000c02,0x2802100,0x962460,0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,0x7c00100,0x230400,0x51000f0a,0x7c00100,
-0x230400,0x51000f0a,0x7c00500,0x230400,0x51001110,0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,0x230400,0x51001524,0x2802100,0x962460,
-0x51001524,0x4000000,0x200000,0x51001524,0x7c00100,0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,0x5100171a,0x4000000,0x1500000,0x5100171a,
-0x7c00100,0x230400,0x51001b27,0x4000000,0x200000,0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,0x7c00100,0x230400,0x51001c1c,0x2802100,
-0x1862460,0x51001c1c,0x2802500,0x1862460,0x51001c1c,0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,0x1329800,0x51001c1c,0x6800100,0x1862400,
-0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800500,0x1862400,0x51001c1c,0x7c00100,0x1830000,0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,
-0x7c00100,0x250400,0x51002800,0x80020,0x218820,0x51002c00,0x4000000,0x200000,0x51002d19,0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,
-0xe00000,0x51005201,0x2802400,0x962460,0x51005c00,0x4000000,0x200000,0x51006108,0x7c00100,0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,
-0x51006600,0x24000020,0x810000,0x51006600,0x24000020,0x1410000,0x51007300,0x24000000,0x200000,0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,
-0x2802000,0x962460,0x51008301,0x2802400,0x962460,0x51008301,0x2802400,0xc62460,0x51008a00,0x7c00500,0x230400,0x51008e00,0x24000000,0x200000,0x51008e00,0x24000000,
-0x400000,0x51008e00,0x24000000,0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000,0x51008e00,0x24000000,0x1710000,0x51008e00,0x24000002,0x200000,
-0x51008e00,0x24000500,0x230400,0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419,0x7c00100,0x22040e,0x51009419,0x7c00100,0x22040f,0x51009419,
-0x7c00100,0x250400,0x51009500,0x4000400,0x200400,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100,0x220400,0x51009519,0x7c00100,0x22040f,0x51009519,0x7c00100,
-0x230400,0x51009519,0x7c00100,0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800,0x51009b71,0x6800100,0x962540,0x51009b71,0x6804400,0x962540,
-0x51009b71,0x7c00100,0x230400,0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52,0x2802d00,0x962460,0x51009c52,0x4000010,0x400000,0x51009c52,
-0x6800000,0x1329800,0x51009c52,0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010,0x448000,0x51009d6d,0x6800000,0x1329800,0x51009d6d,0x7c00100,
-0x230400,0x51009d6d,0x7c00500,0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000,0x51009e08,0x2802100,0x962460,0x51009f63,0x4000010,0x400000,
-0x51009f63,0x6800000,0x1329800,0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63,0xc000010,0x448000,0x51009f63,0xc000010,0xb48000,0x5100a008,
-0x2000,0x962460,0x5100a008,0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100,0x220400,0x5100a008,0x7c00100,0x230400,0x5100a008,0x7c00100,
-0x250400,0x5100a008,0x7c00500,0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800,0x5100a16f,0x6800100,0x962540,0x5100a16f,0x7c00100,0x230400,
-0x5100a16f,0xc000010,0x448000,0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f,0x6800000,0x1329800,0x5100a24f,0x7c00100,0x230400,0x5100a24f,
-0xc000010,0x448000,0x5100a36e,0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100,0x962540,0x5100a36e,0x6804400,0x962540,0x5100a36e,0x7c00100,
-0x230400,0x5100a442,0x2802100,0x962460,0x5100a442,0x4000000,0xe00000,0x5100a442,0x6800000,0xe29800,0x5100a442,0x6800100,0x962540,0x5100a442,0x7c00100,0x430400,
-0x5100a442,0x7c00100,0x2d30400,0x5100a442,0xc000010,0x448000,0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601,0x2802000,0x962460,0x5100a76b,
-0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000,0xe00000,0x5100ab00,0x4000000,
-0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000,0x510a7300,0x24000000,0x200000,
-0x510aaa00,0x4000000,0xe00000,0x514a82cc,0x4000000,0xe00000,0x5150a20e,0x4000400,0x400000,0x51802bbe,0x2802000,0x962460,0x51c00908,0x2802400,0x962460,0x51c0a008,
-0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000,0x1600000,0x52001b00,0x4000000,
-0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,0x1862400,0x52001c1c,0x6800500,0x1862400,0x52001e12,0x7c00100,0x2230500,0x52001e12,0x7c00100,0x2330520,
-0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00,0x4000000,0x200006,0x52003000,
-0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400,0x962460,0x52008407,0x7c00100,
-0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000,0x52009419,0x7c00100,0x250400,
-0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e,0x4000010,0x200000,0x5200ac7e,
-0x7c00100,0x230400,0x5200ac7e,0xc000010,0x248000,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,0x2802100,0x1862460,0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,
-0x1862460,0x5200ae6a,0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,0x1329800,0x5200ae6a,0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,
-0x5200ae6a,0x7c00100,0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,0x5200b083,0x4000010,0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,
-0xc000010,0x448000,0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,0x4000010,0x400000,0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,
-0x448000,0x5200b30a,0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,0x230400,0x5200b54e,0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,
-0x5200b54e,0x4000000,0xe00000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0xe29800,0x5200b54e,0x6800100,0x962540,0x5200b54e,0x6804400,0x2f62540,0x5200b54e,
-0x7c00100,0x2b30400,0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,0x6800500,0x1862400,0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,
-0x1830000,0x5200b77f,0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,0x1800000,0x5200b77f,0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,
-0x5200b77f,0x7c00500,0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,0x5200b873,0x2802100,0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,
-0x6800000,0x1329800,0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,0x7c00100,0x230400,0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,
-0x2230500,0x5200b912,0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,0x400000,0x5200ba74,0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,
-0x5200bb85,0x7c00100,0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,0x5200bc75,0x7c00100,0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,
-0x7c00100,0x230400,0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,0x7c00100,0x230400,0x5200c002,0x4000000,0x200000,0x5200c178,0x2802100,
-0x962460,0x5200c178,0x2802400,0x962460,0x5200c178,0x2806400,0x962460,0x5200c178,0x4000000,0x200000,0x5200c178,0x6800100,0x962540,0x5200c178,0x7c00100,0x230400,
-0x5200c178,0x7c00100,0x230401,0x5200c178,0xc000010,0x448000,0x5200c178,0x80000000,0x1329960,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,0x5200c247,
-0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,0x4000000,0x100006,0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,0x24000000,
-0x2800000,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,0x100000,0x5202c300,0x4000000,0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,
-0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,0x5202c300,0x4000100,0x15040d,0x520a1e12,0x7c00100,0x2130480,0x520a3700,0x24000000,0xe00000,0x520a3800,
-0x24000000,0x100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,0x7c00300,0xe30001,0x520a7300,0x24000000,0x100000,0x520ab412,0x7c00100,0x2130480,0x520ac400,0x4000000,
-0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511,0x7c40300,0xe30000,0x5240af9c,0x7c00100,0x230400,0x5240afa1,0x4000400,0x200000,
-0x5240afa3,0x6800400,0x962540,0x5240afa3,0x7c00100,0x230400,0x5240afad,0x7c00100,0x230400,0x5240afaf,0x7c00100,0x230400,0x5240b2d4,0x4000000,0x200000,0x5240b2e3,
-0x4000000,0x200000,0x5240b2f1,0x4000000,0x200000,0x5240b2fc,0x4000000,0x1500000,0x524a44cc,0x4000000,0xe00003,0x5250b511,0x7c00900,0x430400,0x5280af9c,0x2802400,
-0x962460,0x5280af9d,0x2802400,0x962460,0x5280afa3,0x2802400,0x962460,0x5280afa5,0x2802400,0x962460,0x5280afa7,0x2802400,0x962460,0x52d0b308,0x2802400,0x962460,
-0x52d0b30c,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,0x60000f0a,
-0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,0x4000000,
-0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802400,0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,0x200000,
-0x60003000,0x24000000,0xe00000,0x60003700,0x24000000,0x200000,0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,0x60006108,
-0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,0x2802400,0xc62460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,0x7c00100,
-0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x2703580,0x6000c654,0x2802000,0x962460,
-0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,0x6000c73f,
-0x6800100,0x962540,0x6000c73f,0x6804000,0x2e62540,0x6000c73f,0x7c00100,0x2d30400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,0x2806400,
-0x2f62460,0x6000c941,0x4000000,0xe00000,0x6000c941,0x4000010,0xe00000,0x6000c941,0x6800000,0x2d29800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,0x2b30400,
-0x6000c941,0x7c00100,0x2c30400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,0x6000cc00,0x4000000,0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,
-0x4000000,0x100000,0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,0x4000100,0x15040d,0x600a3000,0x24000000,0x200000,0x600a3000,0x24000000,
-0xe00000,0x600a3700,0x24000000,0x200000,0x600a3800,0x24000000,0x200000,0x600a3800,0x24000000,0x2800000,0x600a4305,0x7c00100,0xe30400,0x600ac300,0x4000000,0x100000,
-0x600ac400,0x4000000,0xe0000d,0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000,0xe00000,0x600acd00,0x4000000,0x200000,0x600acd00,
-0x4000000,0xe00000,0x600acd00,0x4000000,0x2800000,0x600ace00,0x4000000,0xe00000,0x600ace00,0x4000000,0x2800000,0x600acf00,0x4000000,0xe00000,0x600acf00,0x4000000,
-0x2800000,0x600ad111,0x7c40300,0xe30000,0x604ac4cc,0x4000000,0xe00003,0x61000a03,0x4000000,0x1600000,0x61000c02,0x80000000,0x1329960,0x6100120f,0x4000000,0x200000,
-0x61001a18,0x7c00100,0x1830000,0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,0x61006600,0x24000020,0x200000,0x61008407,0x7c00100,0x220400,0x61008407,
-0x7c00100,0x250400,0x6100870c,0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,0x24000000,0x400000,0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,
-0x230400,0x61009519,0x7c00100,0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,0x22040f,0x61009b71,0x2802100,0x962460,0x61009b71,0x2806400,0x962460,
-0x61009b71,0x7c00100,0x230400,0x6100a008,0x2802100,0x962460,0x6100c300,0x4000000,0x20000f,0x6100cd00,0x4000000,0x200000,0x6100d202,0x2802400,0x962460,0x6100d202,
-0x2802500,0x962460,0x6100d202,0x7c00100,0x230400,0x6100d302,0x4000020,0x200000,0x6100d302,0x7c00120,0x230405,0x6100d476,0x2802100,0x962460,0x6100d476,0x2802100,
-0x962461,0x6100d476,0x2806400,0x962460,0x6100d476,0x4000000,0x400000,0x6100d476,0x6800000,0x1329800,0x6100d476,0x6800100,0x962540,0x6100d476,0x7c00100,0x230400,
-0x6100d476,0xc000010,0x448000,0x6100d573,0x2802100,0x962460,0x6100d573,0x2806400,0x962460,0x6100d573,0x6800100,0x962540,0x6100d573,0x7c00100,0x230400,0x6100d573,
-0x7c00900,0x230400,0x6100d573,0xc000010,0x448000,0x6100d68d,0x7c00100,0x230400,0x6100d756,0x7c00100,0x230400,0x6100d85c,0x2802500,0x962460,0x6100d85c,0x6800100,
-0x962540,0x6100d85c,0x7c00100,0x230400,0x6100d85c,0x7c00500,0x230400,0x6100d997,0x2802100,0x962460,0x6100d997,0x4000000,0x200000,0x6100d997,0x4000000,0x400000,
-0x6100d997,0x6800000,0x1329800,0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,0x6100d997,0x7c00100,0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,
-0xc000010,0x448000,0x6100da98,0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,0x4000000,0x200000,0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,
-0x962460,0x6100dc99,0x6800000,0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,0x962540,0x6100dc99,0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,
-0x610a4f11,0x7c00300,0xe30001,0x610ace00,0x4000000,0xe00000,0x6140afa1,0x7c00100,0x230400,0x6140afa3,0x7c00100,0x230400,0x6180af9e,0x2802400,0x962460,0x62002a00,
-0x4000000,0x1600000,0x63002800,0x80000,0x918820,0x63c00c15,0x80000,0x918820,0x7000080e,0x7c00100,0x250400,0x70000a03,0x4000000,0x200000,0x70000c00,0x80000000,
-0x1329960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,0x70001524,0x2802100,0x962460,0x70001524,0x7c00100,0x230400,0x70001615,0x2802100,0x962460,
-0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,0x7c00100,0x230400,0x70002a00,0x4000000,0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,
-0x24000000,0x200000,0x70003800,0x24000000,0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,0x7c00100,0x230400,0x70006108,0x7c00100,0x220400,0x70006108,0x7c00100,
-0x250400,0x70006f30,0x7c00100,0x230400,0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,0x200000,0x70008301,0x2802100,0x962460,0x70008301,0x2802400,0x962460,
-0x70008e00,0x24000000,0x200000,0x70008e00,0x24000000,0x400000,0x70008e00,0x24000002,0x400000,0x70008e00,0x24000008,0x1410000,0x70008e00,0x24000010,0x400000,0x70008e00,
-0x2c000010,0x448000,0x70009519,0x7c00100,0x220400,0x70009519,0x7c00100,0x230400,0x70009519,0x7c00100,0x250400,0x70009865,0x7c00100,0x230400,0x70009965,0x4000010,
-0x400000,0x70009965,0x7c00100,0x230400,0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,0x250400,0x7000a008,0x7c00500,0x22040f,0x7000a50e,0x4000000,0x200000,
-0x7000b61c,0x2802500,0x1862460,0x7000b61c,0x6800500,0x1862400,0x7000b61c,0x7c00100,0x1830000,0x7000c300,0x4000000,0x100000,0x7000c941,0x2806000,0xc62460,0x7000cc00,
-0x4000000,0xe00000,0x7000cd00,0x4000000,0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x2800000,0x7000cf00,0x4000000,0xe00000,0x7000d202,0x2802100,
-0x962460,0x7000d202,0x7c00100,0x230400,0x7000d997,0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86,0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,
-0x7000dd86,0xc000010,0x448000,0x7000de9f,0x4000000,0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2400,0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,
-0x2802000,0x962460,0x7000e187,0x2802100,0x962460,0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400,0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,
-0x230400,0x7000e300,0x4000000,0x200000,0x7000e489,0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489,0x6800100,0x962540,0x7000e489,0x6800100,0x962541,
-0x7000e489,0x6804400,0x2f62540,0x7000e489,0x7c00100,0x430400,0x7000e489,0x7c00100,0x2b30400,0x7000e489,0x7c00100,0x2d30400,0x7000e489,0x7c00900,0x430400,0x7000e59d,
-0x2802100,0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,0x200000,0x7000e59d,0x4000010,0x200000,0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,
-0x962540,0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,0x7000e691,0x2802100,0x962460,0x7000e691,0x2802400,0x962460,0x7000e691,0x2806400,0x962460,
-0x7000e691,0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,0x7c00100,0x230400,0x7000e700,0x4000400,0x200400,0x7000e70e,0x7c00100,0x220400,0x7000e719,
-0x7c00100,0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,0x230400,0x7000e9a0,0x2802400,0x962460,0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,
-0x500000,0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,0x7000ea79,0x4000000,0x200000,0x7000ea79,0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,
-0x7000ea79,0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,0x4000000,0x200000,0x7000eb8c,0x7c00100,0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,
-0x2806400,0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,0x1329800,0x7000eca3,0x6800100,0x962540,0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,
-0x448000,0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,0x7000ed95,0xc000010,0x448000,0x7000ee1c,0x2802500,0x1862460,0x7000ee1c,0x6800000,0x1329800,
-0x7000ee1c,0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,0x4000000,0x200000,0x7000ef8f,0x7c00100,0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,
-0x7c00100,0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,0x230400,0x7000f200,0x4000000,0x200000,0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,
-0x1710000,0x7000f34b,0x2802400,0x962460,0x7000f34b,0x4000000,0x200000,0x7000f34b,0x4000010,0x400000,0x7000f34b,0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,
-0x7000f34b,0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,0x4000000,0x200000,0x7000f490,0x7c00100,0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,
-0x4000000,0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,0x230400,0x7000f8a6,0x2802100,0x962460,0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,
-0x962460,0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,0x7000f8a6,0x4000800,0x200000,0x7000f8a6,0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,
-0x7000f8a6,0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,0x4000000,0x200000,0x7000fa00,0x4000000,0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,
-0x2802400,0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,0x200000,0x7000fb9e,0x6800000,0x1329800,0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,
-0x962541,0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,0x7000fc92,0x6800000,0x1329800,0x7000fc92,0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,
-0x7000fc92,0x7c00100,0x250400,0x700acd00,0x4000000,0xe00000,0x700acd00,0x4000000,0x2800000,0x700ace00,0x4000000,0xe00000,0x700acf00,0x4000000,0xe00000,0x700acf00,
-0x4000000,0x2800000,0x7050df21,0x4000000,0x200000,0x7050f729,0x80000,0x918820,0x7080afa1,0x2802400,0x962460,0x7090df21,0x2802400,0x962460,0x70d0e427,0x2802100,
-0x962460,0x70d0e427,0x2802400,0x962460,0x70d0e427,0x6800100,0x962540,0x70d0ea25,0x4000010,0x400000,0x8000120f,0x7c00100,0x230400,0x80001524,0x7c00100,0x230400,
-0x8000171a,0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,0x4000000,0x200000,0x80005208,
-0x2802400,0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,0x230400,0x80009519,0x7c00100,
-0x250400,0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,0x8000cd00,0x4000000,0xe00000,
-0x8000d202,0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802000,0x962460,0x8000d997,0x2802400,0x962460,0x8000d997,
-0x4000000,0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,0x962460,0x8000e489,0x7c00100,
-0x2d30400,0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,0x8000fda1,0x2802100,0x1862460,
-0x8000fda1,0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862400,0x8000fda1,0x6800100,0x1862540,0x8000fda1,
-0x7c00100,0x1830000,0x8000fda1,0xc000010,0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,
-0x220400,0x80010165,0x7c00100,0x230400,0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,
-0x8001044c,0x4000000,0x200000,0x8001044c,0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,
-0x4000010,0x400000,0x80010670,0xc000010,0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0xe00000,0x800acd00,0x4000000,0x2902460,0x800ace00,0x4000000,
-0xe00000,0x800acf00,0x4000000,0xe00000,0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0xe00000,0x800b0500,0x4000000,0x2800000,0x90001615,0x7c00100,0x230400,
-0x9000171a,0x4000000,0x200000,0x9000171a,0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802400,0x962460,0x90008e00,
-0x24000000,0x400000,0x90009519,0x7c00100,0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0x80000000,0x1329960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,
-0x962460,0x9000d202,0x7c00100,0x230400,0x9000e59d,0x2802100,0x962460,0x90010500,0x4000000,0xe00000,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,
-0x900107a7,0x2802c00,0x962460,0x900107a7,0x4000000,0x1400000,0x900107a7,0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,
-0x2802100,0x962460,0x900108a8,0x2806400,0x962460,0x900108a8,0x4000000,0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,
-0x1329800,0x900108a8,0x6800100,0x962540,0x900108a8,0x7c00100,0x230400,0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,
-0x90010ca9,0x2802100,0x962460,0x90010ca9,0x4000000,0x500000,0x90010ca9,0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,
-0x4000000,0x500000,0x90010eaa,0x2802100,0x962460,0x90010eaa,0x2802400,0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,
-0x400000,0x90010eaa,0x4000010,0x400000,0x90010eaa,0x6800000,0x1329800,0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,
-0x90010fab,0x7c00100,0x220400,0x90010fab,0x7c00100,0x250400,0x9002c300,0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0xe00000,0x900acd00,
-0x4000000,0x2800000,0x900acf00,0x4000000,0xe00000,0x900b0500,0x4000000,0xe00000,0x900b0500,0x4000000,0x2800000,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,
-0xe30000,0x900b119a,0x7c00300,0xe30000,0x90408e06,0x24000000,0x400000,0xa0001004,0x4000000,0x200000,0xa0001004,0x7c00100,0x230400,0xa000120f,0x2802100,0x962460,
-0xa000120f,0x2802400,0x962460,0xa000171a,0x2802100,0x962460,0xa000171a,0x2806400,0x962460,0xa0002a00,0x4000000,0x1600000,0xa0003000,0x24000000,0x200000,0xa000581e,
-0x7c00100,0x230400,0xa0007300,0x24000000,0x200000,0xa0008301,0x2802400,0x962460,0xa0008e00,0x24000000,0x400000,0xa000cf00,0x4000000,0xe00000,0xa0010500,0x4000000,
-0x200000,0xa00114af,0x2802100,0x962460,0xa00114af,0x2802400,0x962460,0xa00114af,0x2806400,0x962460,0xa00114af,0x6800000,0x1329800,0xa00114af,0x7c00100,0x230400,
-0xa00114af,0x7c00100,0x230560,0xa00116b0,0x2802100,0x962460,0xa00116b0,0x2802800,0x962460,0xa00116b0,0x2806400,0x962460,0xa00116b0,0x4000000,0x400000,0xa00116b0,
-0x4000000,0x500000,0xa00116b0,0x4000010,0x400000,0xa00116b0,0x6800100,0x962540,0xa00116b0,0x7c00100,0x230400,0xa00116b0,0x7c00100,0x230560,0xa00116b0,0xc000010,
-0x448000,0xa0011722,0x7c00100,0x230400,0xa00118b1,0x2802000,0x962460,0xa00118b1,0x2802100,0x962460,0xa00118b1,0x2806400,0x962460,0xa00118b1,0x4000000,0x200000,
-0xa00118b1,0x4000000,0x400000,0xa00118b1,0x4000000,0x500000,0xa00118b1,0x6800100,0x962540,0xa00118b1,0x7c00100,0x230400,0xa00118b1,0x7c00100,0x230560,0xa00118b1,
-0xc000010,0x448000,0xa00a4005,0x7c00100,0xe30400,0xa00a4711,0x7c40300,0xe30000,0xa00ac400,0x4000000,0xe00000,0xa00acb14,0x7c00100,0xe30000,0xa00acf00,0x4000000,
-0xe00000,0xa00b0500,0x4000000,0xe00000,0xa00b0500,0x4000000,0x2800000,0xa00b0b96,0x7c00900,0x1230400,0xa00b1211,0x7c40300,0xe30000,0xa00b1314,0x7c00100,0xe30000,
-0xa00b1596,0x7c00300,0xe30000,0xa040afb9,0x6800400,0x962540,0xa08083ba,0x2802400,0x962460,0xb0000a03,0x7c00100,0x220400,0xb0000b13,0x7c00100,0x2633800,0xb0001004,
-0x2802000,0x962460,0xb0001110,0x4000000,0x200000,0xb0001524,0x2802100,0x962460,0xb0001615,0x4000000,0x500000,0xb000251b,0x7c00100,0x230400,0xb0007300,0x24000000,
-0x200000,0xb0008939,0x4000000,0x200000,0xb0008939,0x7c00100,0x230400,0xb0008e00,0x24000000,0x200000,0xb0008e00,0x24000000,0x400000,0xb0008e00,0x24000010,0x400000,
-0xb0009257,0x2802000,0x962460,0xb0009257,0x4000000,0x1600000,0xb0009519,0x7c00100,0x220400,0xb0009519,0x7c00100,0x250400,0xb0009a00,0x4000000,0x200000,0xb000b30a,
-0x2802100,0x962460,0xb000b30a,0x7c00100,0x230400,0xb000c178,0x80000000,0x1329960,0xb000c300,0x4000000,0x200000,0xb000d202,0x2802000,0x962460,0xb000d476,0x6800100,
-0x962540,0xb000d476,0x7c00100,0x230400,0xb000e300,0x4000000,0xe00000,0xb000fda1,0x7c00100,0x1830000,0xb0010eaa,0x2802000,0x962460,0xb00116b0,0x7c00100,0x230400,
-0xb0011900,0x4000000,0xe00000,0xb0011ab2,0x2802100,0x962460,0xb0011ab2,0x2802400,0x962460,0xb0011ab2,0x2806400,0x962460,0xb0011ab2,0x4000000,0x200000,0xb0011ab2,
-0x6800100,0x962540,0xb0011ab2,0x7c00100,0x230400,0xb0011b0c,0x7c00100,0x230400,0xb0011cb3,0x2802100,0x962460,0xb0011cb3,0x2806400,0x962460,0xb0011cb3,0x6800000,
-0x1329800,0xb0011cb3,0x6800100,0x962540,0xb0011cb3,0x7c00100,0x230400,0xb0011db6,0x2802500,0x962460,0xb0011db6,0x6800000,0x1329800,0xb0011db6,0x7c00100,0x230400,
-0xb0011db6,0x7c00500,0x230400,0xb0011e00,0x4000000,0x200000,0xb0011e00,0x4000000,0x1500000,0xb0011fb4,0x2802100,0x962460,0xb0011fb4,0x6800100,0x962540,0xb0011fb4,
-0x7c00100,0x430400,0xb0011fb4,0x7c00100,0x2d30400,0xb0011fb4,0xc000010,0x448000,0xb0012000,0x4000000,0x200000,0xb00121b5,0x4000000,0x200000,0xb00121b5,0x4000010,
-0x400000,0xb00121b5,0x7c00100,0x220400,0xb00121b5,0x7c00100,0x250400,0xb00121b5,0xc000010,0x448000,0xb00122b8,0x4000000,0x200000,0xb00122b8,0x7c00100,0x230400,
-0xb00123b7,0x2802400,0x962460,0xb00123b7,0x4000000,0x200000,0xb00123b7,0x7c00100,0x230400,0xb00123b7,0xc000010,0x248000,0xb00a4005,0x7c00100,0xe30400,0xb00a4711,
-0x7c40300,0xe30000,0xb00acf00,0x4000000,0xe00000,0xb00b0500,0x4000000,0xe00000,0xb00b0500,0x4000000,0x2800000,0xb00b109a,0x7c00300,0xe30000,0xb080e487,0x2802000,
-0x962460,0xc0001524,0x4000000,0x500000,0xc0001a18,0x2806400,0x1862460,0xc0001a18,0x7c00100,0x1830000,0xc0007300,0x24000000,0x200000,0xc0008e00,0x24000010,0x400000,
-0xc0009519,0x7c00100,0x220400,0xc0009519,0x7c00100,0x250400,0xc000c300,0x4000000,0x20000f,0xc000d85c,0x2802100,0x962460,0xc000d85c,0x6800100,0x962540,0xc000d85c,
-0x7c00100,0x230400,0xc000dc99,0x7c00100,0x230400,0xc000e719,0x7c00100,0x220400,0xc00107a7,0x7c00100,0x230400,0xc0010eaa,0x7c00100,0x230400,0xc00116b0,0x7c00100,
-0x230560,0xc0011900,0x4000000,0x200000,0xc0012447,0,0x818820,0xc0012447,0,0xc18820,0xc0012447,0,0x1418820,0xc00125b9,0x7c00100,0x230400,
-0xc00126bb,0x2802100,0x962460,0xc00126bb,0x2806400,0x962460,0xc00126bb,0x4000000,0x500000,0xc00126bb,0x6800100,0x962540,0xc00126bb,0x7c00100,0x230400,0xc00127ba,
-0x2802400,0x962460,0xc00127ba,0x4000000,0x200000,0xc00127ba,0x6800000,0x1329800,0xc00127ba,0x7c00100,0x230400,0xc00127ba,0x7c00900,0x230400,0xc0012800,0x4000000,
-0x200000,0xc0012b23,0x4000000,0x200000,0xc0012b23,0x4000000,0x400000,0xc0012b23,0x4000000,0x1500000,0xc0012cbc,0x2802400,0x962460,0xc0012cbc,0x4000000,0x1600000,
-0xc0012cbc,0x6800000,0x1329800,0xc0012cbc,0x7c00100,0x230400,0xc00acf00,0x4000000,0xe00000,0xc00ae300,0x4000000,0xe00000,0xc00b0500,0x4000000,0xe00000,0xc00b0500,
-0x4000000,0x2800000,0xc00b0b11,0x4000000,0x1200000,0xc00b0b11,0x7c00900,0x1230400,0xc00b109a,0x7c00300,0xe30000,0xc00b2914,0x7c00100,0x2530000,0xc00b2916,0x7c00100,
-0x2530c00,0xc00b2a00,0x4000000,0xe00000,0xc040af5e,0x7c00100,0x230400,0xc0c12b89,0x4000000,0x200000,0xc14a44cc,0x4000000,0xe0000d,0xd000131f,0x2802c00,0x962460,
-0xd000171a,0x7c00100,0x230400,0xd0001821,0x2802100,0x962460,0xd0007300,0x24000000,0x200000,0xd0008e00,0x24000000,0x200000,0xd0008f3a,0x2806000,0x962460,0xd0009519,
-0x7c00100,0x220400,0xd0009519,0x7c00100,0x250400,0xd000a500,0x4000000,0x200000,0xd000c300,0x4000000,0xe00000,0xd000d202,0x7c00100,0x230400,0xd000d476,0x7c00100,
-0x230400,0xd000d997,0x2802100,0x962460,0xd000d997,0x6800100,0x962540,0xd000e001,0x2802100,0x962460,0xd000e700,0x4000400,0x200000,0xd000e719,0x7c00100,0x220400,
-0xd000e719,0x7c00500,0x22040f,0xd000fa00,0x4000000,0xe00000,0xd0010eaa,0x4000010,0x400000,0xd0010eaa,0x7c00100,0x230400,0xd0012dbd,0x4000000,0x200000,0xd0012dbd,
-0x7c00100,0x230400,0xd0012fbe,0x2802100,0x962460,0xd0012fbe,0x2802400,0x962460,0xd0012fbe,0x2806400,0x2f62460,0xd0012fbe,0x4000000,0x400000,0xd0012fbe,0x6800000,
-0xe29800,0xd0012fbe,0x6800100,0x962540,0xd0012fbe,0x6800100,0x962541,0xd0012fbe,0x6804400,0x962540,0xd0012fbe,0x7c00100,0x2b30400,0xd0012fbe,0x7c00100,0x2c30560,
-0xd0012fbe,0xc000010,0x448000,0xd0013183,0x7c00100,0x230400,0xd0013200,0x4000000,0x200000,0xd0013200,0x6800000,0x1329805,0xd00134c0,0x2802100,0x962460,0xd00134c0,
-0x4000002,0x400000,0xd00134c0,0x7c00100,0x230400,0xd00a4305,0x7c00100,0xe30400,0xd00a4611,0x7c40300,0xe30000,0xd00a4711,0x7c40300,0xe30000,0xd00a5e11,0x7c40300,
-0xe30000,0xd00acf00,0x4000000,0xe00000,0xd00b0500,0x4000000,0xe00000,0xd00b0500,0x4000000,0x2800000,0xd00b0b11,0x6800500,0x962540,0xd00b0bbf,0x2802200,0xc62460,
-0xd00b119a,0x7c00300,0xe30000,0xd00b2a00,0x4000000,0xe00000,0xd00b2e11,0x7c40300,0xe30000,0xd00b30bf,0x7c00300,0x230000,0xd00b339a,0x7c00300,0xe30000,0xe0000c02,
-0xc000010,0xb48000,0xe0001524,0x2802400,0x962460,0xe0001524,0x7c00100,0x230400,0xe0001615,0x7c00100,0x230400,0xe000251b,0x12882000,0x962460,0xe0002a00,0x4000000,
-0x1500000,0xe0005102,0x4000000,0x200000,0xe0005c00,0x4000000,0x200000,0xe000622a,0x6804400,0x962540,0xe000622a,0x7c00100,0x230400,0xe0008838,0x7c00100,0x220400,
-0xe0008838,0x7c00100,0x250400,0xe0008e00,0x24000000,0x810000,0xe0008e00,0x24000000,0x1410000,0xe0008e00,0x24000002,0x400000,0xe0008e00,0x2c000010,0xb48000,0xe000933e,
-0x7c00100,0x2b30400,0xe000933e,0xc000010,0x448000,0xe0009519,0x7c00100,0x220400,0xe0009519,0x7c00100,0x22040f,0xe0009519,0x7c00100,0x250400,0xe000c178,0x2802100,
-0x962460,0xe000c941,0x2802100,0x962460,0xe000c941,0x2806400,0x962460,0xe000c941,0x7c00100,0x2b30400,0xe000d202,0x2802400,0x962460,0xe000d202,0x7c00100,0x230400,
-0xe000d202,0x7c00500,0x230400,0xe000dc99,0x4000000,0x200000,0xe000e001,0x2802100,0x962460,0xe000e001,0x2802400,0x962460,0xe000fda1,0x7c00100,0x1830000,0xe0013502,
-0x2802400,0x962460,0xe0013502,0x4000000,0x200000,0xe0013502,0x7c00100,0x230400,0xe0013502,0x80000000,0x1329960,0xe00136c1,0x4000000,0x200000,0xe00136c1,0x7c00100,
-0x230400,0xe001370b,0x7c00100,0x230400,0xe0013919,0x7c00500,0x220400,0xe0013919,0x7c00500,0x22040f,0xe0013919,0x7c00d00,0x23040f,0xe0013a19,0x7c00100,0x220400,
-0xe0013a19,0x7c00100,0x230400,0xe0013bc2,0x2802400,0x962460,0xe0013bc2,0x7c00100,0x230400,0xe0013bc2,0xc000010,0x248000,0xe0013cc3,0x6800000,0x1329800,0xe0013cc3,
-0x7c00100,0x230400,0xe0013dc4,0x2802400,0x962460,0xe0013dc4,0x7c00100,0x230400,0xe0013e28,0x7c00100,0x230400,0xe0013fc5,0x7c00100,0x220400,0xe0013fc5,0x7c00100,
-0x250400,0xe0014000,0x4000000,0x200000,0xe0014001,0x2802400,0x962460,0xe00a4711,0x7c40300,0xe30000,0xe00a5e11,0x7c40300,0xe30000,0xe00ac511,0x7c40300,0xe30000,
-0xe00acf00,0x4000000,0xe00000,0xe00ae300,0x4000000,0xe00000,0xe00b0500,0x4000000,0xe00000,0xe00b1314,0x7c00100,0xe30000,0xe00b1316,0x7c00100,0xe30c00,0xe00b2a00,
-0x4000000,0xe00000,0xe00b2a00,0x4000000,0x2800000,0xe00b3816,0x7c00500,0x230c00,0xe0808328,0x2802400,0x962460,0xf0001615,0x6800100,0x962540,0xf0001a18,0x2802000,
-0x1862460,0xf000c247,0x7c00100,0x1430400,0xf000d000,0x4000000,0xe00000,0xf000e300,0x4000000,0xe00000,0xf000e59d,0x2802100,0x962460,0xf000e59d,0x7c00100,0x230400,
-0xf0012447,0,0x818820,0xf0012447,0,0xc18820,0xf0012447,0,0x1418820,0xf0012447,0x2802000,0x962460,0xf0012447,0x2802400,0x962460,0xf0012447,
-0x7c00100,0x230400,0xf0013a19,0x7c00100,0x220400,0xf0014102,0x2802400,0x962460,0xf0014308,0x2802100,0x962460,0xf0014308,0x7c00500,0x22040e,0xf0014308,0x7c00500,
-0x22040f,0xf001440a,0x4000000,0x500000,0xf0014500,0x4000000,0x200000,0xf00146c6,0x2802100,0x962460,0xf00146c6,0x2806000,0x2f62460,0xf00146c6,0x4000000,0xe00000,
-0xf00146c6,0x6800000,0x2d29800,0xf00146c6,0x6800100,0x962540,0xf00146c6,0x6804000,0x962540,0xf00146c6,0x7c00100,0x2b30400,0xf00146c6,0x7c00100,0x2c30560,0xf00146c6,
-0xc000010,0x448000,0xf00147c7,0x2802000,0x962460,0xf00147c7,0x6800000,0x1329800,0xf00147c7,0x7c00100,0x230400,0xf00ac511,0x7c40300,0xe30000,0xf00acf00,0x4000000,
-0xe00000,0xf00b2914,0x7c00100,0x2530000,0xf00b2916,0x7c00100,0x2530c00,0xf00b2a00,0x4000000,0xe00000,0xf00b2a00,0x4000000,0x2800000,0xf00b4211,0x7c40300,0xe30000,
-0xf10a3c00,0x4000000,0xe00000,0xf10a3c00,0x4008000,0xe00000,0xf10a8200,0x4008000,0xe00000,0xf10b4811,0x7c40300,0xe30000};
+0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x4440020,0x11000100,0x40000001,0x4643020,0x11000100,0x40000001,0x4a5a040,0x11000100,0x40000001,
+0x516a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc8c4000b,0x11000200,0x7c00100,0xc8220402,0x11000200,0x24000000,0x4200000,0x11000200,0x24000008,0x5710000,
+0x11000200,0x40000001,0x5d3b020,0x11000219,0x7c00100,0xfc220401,0x11000219,0x7c00100,0xfc250401,0x11000319,0x7c00100,0xc8220402,0x11000319,0x7c00100,0xfc220401,0x11000319,
+0x7c00100,0xfc250400,0x11000319,0x7c00100,0xfc250401,0x11000419,0x7c00100,0x8220400,0x11000419,0x7c00100,0x10220400,0x11000419,0x7c00100,0x10230400,0x11000419,0x7c00100,
+0x18220400,0x11000419,0x7c00100,0x18230400,0x11000419,0x7c00100,0x20220400,0x11000419,0x7c00100,0x20250400,0x11000419,0x7c00100,0xc8220402,0x11000419,0x7c00100,0xc8250402,
+0x11000419,0x7c00100,0xfc220401,0x11000419,0x7c00100,0xfc250400,0x11000419,0x7c00100,0xfc250401,0x11000519,0x7c00100,0x10220400,0x11000519,0x7c00100,0x10230400,0x11000519,
+0x7c00100,0x18220400,0x11000519,0x7c00100,0x30220400,0x11000519,0x7c00100,0xfc220400,0x11000600,0x4000400,0x4200400,0x11000600,0x4000400,0xc8200002,0x11000600,0x7c00500,
+0x10220400,0x11000600,0x7c00500,0x10230400,0x11000600,0x7c00500,0x10530400,0x11000600,0x7c00500,0xfc230400,0x11000600,0x7c00d00,0x10230400,0x11000619,0x7c00500,0xc822040f,
+0x11000800,0x4000010,0xc9001401,0x11000800,0x4000400,0xc8200001,0x11000800,0x6800010,0xc8201001,0x11000800,0x7c00500,0xc8230401,0x11000807,0x7c00100,0x80220400,0x11000807,
+0x7c00100,0x80250400,0x1100080e,0x4000400,0xc8200002,0x1100080e,0x4000400,0xf8200000,0x1100080e,0x7000500,0xc8220402,0x1100080e,0x7c00100,0x8250400,0x1100080e,0x7c00100,
+0x18220400,0x1100080e,0x7c00100,0xc8220402,0x1100080e,0x7c00100,0xc8250401,0x1100080e,0x7c00100,0xfc220400,0x1100080e,0x7c00100,0xfc220401,0x1100080e,0x7c00100,0xfc250401,
+0x1100080e,0x7c00120,0xc8220402,0x1100080e,0x7c00120,0xc8250402,0x11000908,0x4000000,0xc200000,0x11000908,0x7c00100,0x8220400,0x11000908,0x7c00100,0x8220401,0x11000908,
+0x7c00100,0x8250400,0x11000908,0x7c00100,0x8250401,0x11000908,0x7c00100,0xfc220400,0x11000908,0x7c00100,0xfc220401,0x11000908,0x7c00100,0xfc250400,0x11000908,0x7c00100,
+0xfc250401,0x11000a03,0x4000000,0x4200400,0x11000a03,0x4000000,0x4201000,0x11000a03,0x4000000,0x4270000,0x11000a03,0x7c00100,0xc8220402,0x11000a03,0x7c00100,0xfc220400,
+0x11000a03,0x7c00100,0xfc250400,0x11000a03,0x7c00500,0xfc230400,0x11000a03,0xc000010,0x5049400,0x11000b13,0x2802500,0x20962460,0x11000b13,0x2802500,0xfc962460,0x11000b13,
+0x4000000,0x4200000,0x11000b13,0x4000000,0xf8201000,0x11000b13,0x4000000,0xf8230400,0x11000b13,0x4000002,0x4400000,0x11000b13,0x4000010,0x4200000,0x11000b13,0x7c00100,
+0xfe633800,0x11000c00,0x80000000,0x5329960,0x11000c02,0x2802100,0x20962460,0x11000c02,0x2802400,0x20962460,0x11000c02,0x4000000,0x4200000,0x11000c02,0x4000000,0x5329400,
+0x11000c02,0x4000000,0x5329800,0x11000c02,0x4000000,0x5500000,0x11000c02,0x6800000,0xfd329800,0x11000c02,0x7c00100,0x8230400,0x11000c02,0x7c00100,0xc8230402,0x11000c02,
+0x7c00100,0xfc230400,0x11000c02,0x7c00100,0xfc230401,0x11000c02,0x7c00500,0xfc230400,0x11000c02,0x7d00100,0xc0230400,0x11000f01,0x2802400,0x10962460,0x11000f0a,0x2802100,
+0xfc962460,0x11000f0a,0x2802400,0xfc962460,0x11000f0a,0x2806400,0xfc962460,0x11000f0a,0x4000000,0x4200000,0x11000f0a,0x6800100,0xfc962540,0x11000f0a,0x7c00100,0xc8230401,
+0x11000f0a,0x7c00100,0xfc230400,0x11000f0a,0x7c00100,0xfc230401,0x11001004,0x2802100,0xfc962460,0x11001004,0x2802400,0xfc962460,0x11001004,0x2806400,0xfc962460,0x11001004,
+0x4000000,0x4200000,0x11001004,0x4000000,0x5500000,0x11001004,0x6800100,0xfc962540,0x11001004,0x6800100,0xfc962541,0x11001004,0x7c00100,0xc8230401,0x11001004,0x7c00100,
+0xfc230400,0x11001110,0x2802100,0xfc962460,0x11001110,0x2802400,0xfc962460,0x11001110,0x2806400,0xfc962460,0x11001110,0x6800100,0xfc962540,0x11001110,0x7c00100,0xc8230401,
+0x11001110,0x7c00100,0xfc230400,0x1100120f,0x2802100,0xfc962460,0x1100120f,0x2802400,0xfc962460,0x1100120f,0x2806400,0xfc962460,0x1100120f,0x6800100,0xfc962540,0x1100120f,
+0x7c00100,0xfc230400,0x1100131f,0x2802100,0xfc962460,0x1100131f,0x2802400,0xfc962460,0x1100131f,0x2806400,0xfc962460,0x1100131f,0x4000000,0x4200000,0x1100131f,0x6800000,
+0xfd329800,0x1100131f,0x6800100,0xfc962540,0x1100131f,0x6800100,0xfc962541,0x1100131f,0x7c00100,0xc8230401,0x1100131f,0x7c00100,0xfc230400,0x11001423,0x2802100,0xfc962460,
+0x11001423,0x2806400,0xfc962460,0x11001423,0x6800100,0xfc962540,0x11001423,0x6800100,0xfc962541,0x11001423,0x7c00100,0xfc230400,0x11001423,0x7c00100,0xfc230401,0x11001524,
+0x2802100,0xfc962460,0x11001524,0x2802100,0xfc962461,0x11001524,0x2806400,0xfc962460,0x11001524,0x6800000,0xfd329800,0x11001524,0x6800100,0xfc962540,0x11001524,0x7c00100,
+0xfc230400,0x11001615,0x2802100,0xfc962460,0x11001615,0x2806400,0xfc962460,0x11001615,0x6800100,0xfc962540,0x11001615,0x6800100,0xfc962541,0x11001615,0x7c00100,0x8230400,
+0x11001615,0x7c00100,0xfc230400,0x1100171a,0x2802100,0xfc962460,0x1100171a,0x2806400,0xfc962460,0x1100171a,0x6800000,0xfd329800,0x1100171a,0x6800100,0xfc962540,0x1100171a,
+0x6800100,0xfc962541,0x1100171a,0x7c00100,0xfc230400,0x11001900,0x4000000,0x5600000,0x11001926,0x2802100,0xfd862460,0x11001926,0x2802400,0xfd862460,0x11001926,0x2806100,
+0xfd862460,0x11001926,0x4000000,0x4200000,0x11001926,0x4000010,0x4400000,0x11001926,0x6800000,0xfd329800,0x11001926,0x7800100,0xc9830142,0x11001926,0x7c00100,0xfd830000,
+0x11001926,0x7c00900,0xfd830000,0x11001926,0x7e00100,0xfd830000,0x11001a18,0x2802100,0xfd862460,0x11001a18,0x2802400,0xfd862460,0x11001a18,0x6800000,0xfd329800,0x11001a18,
+0x7800100,0xc9830142,0x11001a18,0x7c00100,0xc9830002,0x11001a18,0x7c00100,0xfd830000,0x11001a18,0x7c00900,0xfd830000,0x11001a18,0x7e00100,0xfd830000,0x11001d0c,0x7c00100,
+0x8230400,0x11001d0c,0x7c00100,0x8250400,0x11001d0c,0x7c00100,0xfc230400,0x11001e12,0x7c00100,0xa230500,0x11001e12,0x7c00100,0xa330520,0x11001e12,0x7c80100,0xc6330520,
+0x11002619,0x7c00100,0xc8220402,0x11002619,0x7c00100,0xfc220401,0x11002619,0x7c00100,0xfc250401,0x1100270e,0x4000400,0xc8200001,0x1100270e,0x4000400,0xc8200002,0x1100270e,
+0x4000400,0xc8500001,0x1100270e,0x7c00100,0xc8220401,0x1100270e,0x7c00100,0xc8250401,0x1100270e,0x7c00100,0xfc220401,0x1100270e,0x7c00100,0xfc250401,0x11002800,0x80000,
+0xc4918820,0x11002800,0x80000,0xc5c18020,0x11002800,0x180000,0xc0918820,0x11002800,0x4000001,0xc8445801,0x11002800,0x4000001,0xc8445802,0x11002800,0x4000001,0xc8c4000b,
+0x11002800,0x6800000,0x10201c00,0x11002800,0x6800020,0x10201c00,0x11002800,0x24000000,0x4200000,0x11002800,0x24000000,0x4810000,0x11002800,0x24000000,0x5410000,0x11002800,
+0x24000000,0x5500000,0x11002800,0x24000000,0xc8200002,0x11002800,0x24000000,0xc9500002,0x11002800,0x24000002,0x4400000,0x11002800,0x24000006,0xc8c0000b,0x11002800,0x24000008,
+0x5410000,0x11002800,0x24000008,0x5710000,0x11002800,0x24000020,0x5001400,0x11002800,0x24000020,0xc9500002,0x11002800,0x2c000010,0x5248000,0x11002800,0x2c000010,0xc9248002,
+0x11002800,0x40000001,0x463b020,0x11002800,0x40080000,0xc4918820,0x11002801,0x2880000,0xc6a65620,0x11002801,0x2882000,0xc4962460,0x11002900,0x4000000,0xc820000e,0x11002900,
+0x4000000,0xc820000f,0x11002900,0x4000020,0xc820000e,0x11002900,0x4000020,0xc820000f,0x11002900,0x4000020,0xc881000e,0x11002900,0x4000020,0xc881000f,0x11002900,0x4000020,
+0xc941000e,0x11002900,0x4000020,0xc941000f,0x11002900,0x4000022,0xc820000e,0x11002900,0x4000022,0xc820000f,0x11002a00,0x4000000,0x5500000,0x11002a00,0x4000000,0x5600000,
+0x11002a00,0x4000000,0xc9600002,0x11002b01,0x2000,0x14962460,0x11002b01,0x2802020,0x10962460,0x11002c00,0x4000000,0x4200000,0x11002c00,0x4000000,0xc200000,0x11002c00,
+0x4000000,0xc8200002,0x11002c00,0x4000000,0xc820000f,0x11002c00,0x4000020,0x4200000,0x11002c00,0x7c00000,0x10200000,0x11002c00,0x7c00020,0x10200000,0x11002c00,0x7c00120,
+0xc8220405,0x11002c00,0x7c00120,0xc8230402,0x11002c00,0x7c00120,0xc8250402,0x11002c00,0x7c00120,0xc8250405,0x11002c19,0x7c00100,0x8250400,0x11002c19,0x7c00100,0xc8250401,
+0x11002d00,0x4000000,0xc8100006,0x11002d00,0x4000000,0xc8200006,0x11002d19,0x7c00100,0x18230400,0x11002d19,0x7c00100,0xc8220402,0x11002d19,0x7c00100,0xc8250402,0x11002e00,
+0x24000000,0x4200000,0x11002e00,0x24000020,0x4200000,0x11002e00,0x24000020,0x4200001,0x11002f00,0x24000020,0x4200000,0x11002f00,0x24000020,0x4200001,0x11002f00,0x24000020,
+0x4f00000,0x11002f00,0x24000020,0x5600000,0x11002f00,0x24000020,0xc8200002,0x11002f00,0x24000022,0x5600000,0x11003000,0x24000000,0x4200000,0x11003000,0x24000020,0x4200000,
+0x11003000,0x24000020,0x4810000,0x11003000,0x24000020,0x5410000,0x11003100,0x24000000,0x4200000,0x11003200,0x24000000,0x4200000,0x11003300,0x4000000,0xc8100003,0x11003400,
+0x24000000,0x4100000,0x11003400,0x24000000,0x4200000,0x11003500,0x24000000,0x4200000,0x11003600,0x24000000,0x4200000,0x11003600,0x24000020,0x4200000,0x11003700,0x24000000,
+0x4200000,0x11003700,0x24000000,0x4e00000,0x11003700,0x24000000,0x6800000,0x11003700,0x24000020,0x4200000,0x11003800,0x4000000,0x4100000,0x11003800,0x24000000,0x4200000,
+0x11003800,0x24000000,0x4b00000,0x11003800,0x24000000,0x4e00000,0x11003800,0x24000000,0x5710000,0x11003800,0x24000000,0x6800000,0x11005003,0x7c00100,0xc8220402,0x11005013,
+0x2802500,0x30962460,0x11005013,0x4000020,0xc8200005,0x11005013,0x7c00100,0xca633801,0x11005013,0x7c00100,0xca633802,0x11005013,0x7c00100,0xca633805,0x11005019,0x7c00100,
+0xc8220402,0x11005102,0x7000100,0xc8230408,0x11005102,0x7c00100,0xc8230404,0x11005102,0x7c00100,0xc8230407,0x11005102,0x7c00100,0xc8230408,0x11005102,0x7c00100,0xc8230409,
+0x11005201,0x2802400,0x10962460,0x11005500,0x80000,0xc5e18820,0x11005502,0x7000100,0xc8230408,0x11005502,0x7c00100,0xc8230404,0x11005502,0x7c00100,0xc8230407,0x11005502,
+0x7c00100,0xc8230408,0x11005502,0x7c00100,0xc8230409,0x11005667,0x1000,0,0x11020200,0x80004,0xc4418820,0x11020200,0x4000000,0xc8100006,0x11020200,0x4000000,
+0xc810000f,0x11020200,0x4000400,0xc8100002,0x11020200,0x4000400,0xc8500002,0x11020200,0x6800c00,0xf8101000,0x11020200,0x24000000,0x4100000,0x11020200,0x24000000,0x4200000,
+0x11020200,0x24000000,0x5400000,0x11020200,0x24000000,0x5500000,0x11020200,0x24000000,0x5600000,0x11020200,0x24000020,0x4100000,0x11020200,0x24000020,0x5600000,0x11020219,
+0x7c00100,0xc812040f,0x11020219,0x7c00100,0xfc220400,0x11020219,0x7c00100,0xfc220401,0x11020219,0x7c00100,0xfc250400,0x11020319,0x7c00100,0xc8220402,0x11020319,0x7c00100,
+0xc8250402,0x11020319,0x7c00100,0xfc220400,0x11020319,0x7c00100,0xfc220401,0x11020319,0x7c00100,0xfc250400,0x11020319,0x7d00100,0xc0220402,0x11020419,0x7c00100,0xfc220401,
+0x11020519,0x7c00100,0x10220400,0x11020600,0x4000400,0x4200400,0x11020600,0x4000400,0xc8100002,0x11020600,0x7c00500,0x10130400,0x11020600,0x7c00d00,0x10130400,0x11020701,
+0x2802400,0x10962460,0x11020701,0x2802400,0x10c62460,0x11020701,0x2802400,0x20962460,0x11020701,0x2802400,0xc8962461,0x11020701,0x2802400,0xfc962460,0x1102080e,0x7c00100,
+0xfc220400,0x1102080e,0x7c00100,0xfc250400,0x11020908,0x7c00100,0xfc220400,0x11020908,0x7c00100,0xfc220401,0x11020908,0x7c00100,0xfc250400,0x11020908,0x7c00100,0xfc250401,
+0x11022800,0x24000000,0x4100000,0x11022800,0x24000000,0x4200000,0x11022800,0x24000000,0x5500000,0x11022800,0x24000000,0xc8200002,0x11022800,0x24000000,0xc8f00002,0x11022800,
+0x24000000,0xc8f0ac02,0x11022800,0x24000000,0xf8401000,0x11022800,0x24000002,0x4100000,0x11022800,0x24000002,0x4370000,0x11022800,0x24000002,0x4470000,0x11022800,0x24000006,
+0xf8400000,0x11022800,0x24000008,0x5710000,0x11022800,0x24000008,0x5712c00,0x11022800,0x24000008,0xf9712c00,0x11022800,0x24000020,0x4100000,0x11022800,0x24000020,0x5500000,
+0x11022800,0x24000020,0xc9500002,0x11022900,0x4000000,0xc810000e,0x11022900,0x4000000,0xc810000f,0x11022919,0x7c00100,0xc812040f,0x11022c00,0x4000000,0xc8100002,0x11022c00,
+0x4000000,0xc810000f,0x11022c00,0x4000000,0xc9500002,0x11022c00,0x4000000,0xc9600002,0x11022c00,0x7c00120,0xc8120405,0x11022c0e,0x7c00100,0xc8250401,0x11022c19,0x7c00100,
+0xc8150401,0x11022d00,0x4000000,0xc8100006,0x11022d00,0x4000000,0xc8200006,0x11022d19,0x7c00100,0xc8120402,0x11022d19,0x7c00100,0xc8150402,0x11022e00,0x24000000,0x4200000,
+0x11022e00,0x24000020,0x4100000,0x11022f00,0x24000020,0x4100000,0x11022f00,0x24000020,0x4100001,0x11022f00,0x24000020,0xc8100002,0x11023000,0x24000000,0x4100000,0x11023300,
+0x4000000,0xc8100002,0x11023300,0x4000000,0xc8100003,0x11023300,0x4000100,0xc8120403,0x11023300,0x4000100,0xc8150403,0x11023400,0x24000000,0x4100000,0x11023500,0x24000000,
+0x4100000,0x11023600,0x24000000,0x4100000,0x11023600,0x24000020,0x4100000,0x11023700,0x24000000,0x4100000,0x11023700,0x24000000,0x4e00000,0x11023700,0x24000020,0x4100000,
+0x11023800,0x4000000,0x4100000,0x11023800,0x24000000,0x4200000,0x11024e67,0,0,0x11025600,0x4000000,0x4100000,0x11042a00,0x4000000,0x5600000,0x11045700,
+0x4000000,0xc820000a,0x11045700,0x4000020,0xc820000a,0x11045712,0x7c00100,0xc8e3040a,0x11045712,0x7c80100,0xc4e3040a,0x11045716,0x7c00100,0xc8e30c0a,0x11045716,0x7c00100,
+0xca530c0a,0x11063d00,0x4000001,0xc8445811,0x11065700,0x4000000,0xc8810011,0x11065700,0x4000000,0xc8e00011,0x11065700,0x4000000,0xc9410011,0x11065700,0x4000000,0xc9500011,
+0x11065700,0x4000000,0xc9600011,0x11065700,0x4000006,0xc8e70011,0x11065700,0x4000008,0xc8e00011,0x11065700,0x4000008,0xc8e02c11,0x11065700,0x4000010,0xc8871411,0x11065700,
+0x4000010,0xc9201411,0x11065700,0x4000010,0xc9271011,0x11065700,0x4000020,0xc8e00011,0x11065700,0x4000400,0xc8e00011,0x11065700,0x4000420,0xc8e00011,0x11065700,0x6800000,
+0xc8e01c11,0x11065700,0x6800040,0xc8e29811,0x11065700,0xc000010,0xc880ac11,0x11065700,0xc000010,0xc8b48011,0x11065719,0x7c00100,0xc8e20411,0x11065719,0x7c00100,0xc8e50411,
+0x11065719,0x7c00140,0xc8e20411,0x11065719,0x7c00140,0xc8e50411,0x11080100,0x6800000,0xfc201c00,0x11080100,0x68000c0,0xfd329800,0x11080100,0x24000000,0x4200000,0x11080100,
+0x24000000,0x4810000,0x11080100,0x24000000,0x5410000,0x11080100,0x24000000,0x5500000,0x11080100,0x24000000,0x5600000,0x11080100,0x24000000,0x5b00000,0x11080100,0x24000000,
+0x6410000,0x11080100,0x24000006,0xf8d70000,0x11080100,0x24000008,0x5714000,0x11080100,0x24000008,0xf9713c00,0x11080100,0x24000010,0x5001400,0x11080100,0x24000010,0x5071400,
+0x11080100,0x24000010,0xf9071000,0x11080100,0x24000020,0x4200000,0x11080100,0x24000020,0x4400000,0x11080100,0x24000020,0x5600000,0x11080100,0x24000400,0x4200000,0x11080100,
+0x24000420,0x4200000,0x11080100,0x2c000010,0x4b48000,0x11080100,0x2c000010,0xf900ac00,0x11080100,0x44000001,0x5a45800,0x11080119,0x7c00100,0xfc220400,0x11080119,0x7c00100,
+0xfc250400,0x11080119,0x7c001c0,0xfc220400,0x11080119,0x7c001c0,0xfc250400,0x11080200,0x4000400,0xc8200002,0x11080200,0x24000000,0x4200000,0x11080200,0x24000000,0x5500000,
+0x11080200,0x24000000,0x5600000,0x11080200,0x24000020,0x4200000,0x110a1e12,0x7c00100,0xa130480,0x110a1e12,0x7c80100,0xc6130480,0x110a3000,0x24000000,0x4e00000,0x110a3000,
+0x24100000,0xc0810001,0x110a3000,0x24100000,0xc1410001,0x110a3700,0x24000000,0x4200000,0x110a3d00,0x4000000,0x4e00000,0x110a3d00,0x4000000,0xc8e00002,0x110a3d00,0x24000000,
+0x4e00000,0x110a3d11,0x7c00300,0x10e30000,0x110a3d11,0x7c00300,0xfce30000,0x110a3d11,0x7c00900,0xfd230400,0x110a3d12,0x2802400,0x18962460,0x110a3e14,0x7c00100,0xfce30000,
+0x110a3e14,0x7c00100,0xfce30001,0x110a3e14,0x7c00100,0xfe530000,0x110a3e14,0x7c00900,0xfd230000,0x110a3e14,0x7c00900,0xfd230001,0x110a3f16,0x7c00100,0xfce30c00,0x110a3f16,
+0x7c00100,0xfce30c01,0x110a3f16,0x7c00100,0xfe530c00,0x110a3f16,0x7c00900,0xfd230c00,0x110a3f16,0x7c00900,0xfd230c01,0x110a4005,0x7c00100,0xfce30400,0x110a4112,0x7c00100,
+0xc8e30402,0x110a4112,0x7c80100,0xc4e30402,0x110a4400,0x4000000,0x14e00000,0x110a4412,0x4000000,0xc8e00002,0x110a4412,0x4000000,0xc8e00003,0x110a4416,0x4000000,0xc8e00c03,
+0x110a4500,0x4000000,0xc8e0000d,0x110a4516,0x4000000,0xc8e00c0d,0x110a4711,0x7c40300,0xfce30000,0x110a4f11,0x7c00300,0xc8e30001,0x110a4f11,0x7c40300,0xfce30000,0x110a5300,
+0x4000000,0xc8810010,0x110a5300,0x4000000,0xc8e00002,0x110a5300,0x4000000,0xc8e00010,0x110a5300,0x4000000,0xc9410010,0x110a5300,0x4000002,0xc8e70010,0x110a5300,0x4000008,
+0xc8810010,0x110a5300,0x4000008,0xc9410010,0x110a5300,0x6800000,0xc8e01c02,0x110a5300,0x6800000,0xc8e01c10,0x110a5400,0x4000000,0xc881000c,0x110a5400,0x4000000,0xc8e0000c,
+0x110a5400,0x4000000,0xc941000c,0x110a5400,0x4000000,0xc950000c,0x110a5400,0x4000000,0xc960000c,0x110a5400,0x4000002,0xc8e7000c,0x110a5400,0x4000010,0xc887140c,0x110a5400,
+0x4000010,0xc8e7000c,0x110a5400,0x4000010,0xc920140c,0x110a5400,0x4000010,0xc927100c,0x110a5400,0x4000020,0xc8e0000c,0x110a5400,0x4000026,0xc8e7000c,0x110a5400,0xc000010,
+0xc880ac0c,0x110a5400,0xc000010,0xc8b4800c,0x11400c0c,0x4000010,0x4b00000,0x11400c0c,0x4000010,0x5071400,0x11400c17,0xc000010,0x4b48000,0x11400c1e,0x7c00900,0x8230400,
+0x11400f4b,0xc000010,0x4448000,0x11400f5f,0xc000010,0x4448000,0x11401d94,0x4000000,0x4200000,0x11403dcc,0x4000000,0x4e00000,0x114457c1,0x4000008,0xc881000a,0x114457c1,
+0x4000008,0xc941000a,0x114457c1,0x4000010,0xc887000a,0x114457c1,0x6800004,0xc920000a,0x114457c1,0xc000010,0xc884800a,0x114457ca,0x3802500,0xc926246a,0x114457ca,0x7c00d00,
+0xca530c0a,0x114a3dc1,0x24000000,0x4810000,0x114a3dc1,0x24000000,0x5410000,0x114a3dc1,0x24000008,0x4810000,0x114a3dc1,0x24000008,0x5410000,0x114a3dc1,0x24000010,0x4870000,
+0x114a3dc1,0x2c000010,0x4848000,0x114a3dc7,0x4000000,0x4e00000,0x114a3dc7,0x24000000,0x4e00000,0x114a3dc7,0x24000002,0x4e00000,0x114a3dc7,0x24000002,0x5200000,0x114a3dc7,
+0x24000008,0x4810000,0x114a3dc7,0x24000008,0x5410000,0x114a3dc7,0x24000008,0xc810000,0x114a3dca,0x7c00900,0x10930c00,0x114a3dca,0x7c00900,0x10e30c00,0x114a3dcc,0x7c00300,
+0xfce30000,0x114a3eca,0x7000400,0xc9200c02,0x114a3fc1,0x6800004,0xf9200000,0x114a3fca,0x7c00d00,0xfe530c00,0x114a42cc,0x4000000,0x4e00000,0x114a42cc,0x4000000,0xc8e0000f,
+0x114a44cc,0x4000000,0xc8e00002,0x114a44cc,0x4000000,0xc8e00003,0x114a45cc,0x4000000,0xc8e00002,0x114a45cc,0x4000000,0xc8e0000d,0x11505113,0x24000000,0x14810000,0x11505113,
+0x24000000,0x15410000,0x1180090a,0x2802400,0x18962460,0x11800c27,0x2802100,0xfc962460,0x11800c27,0x2802500,0xfc962460,0x11800f32,0x2802400,0x8962460,0x11800f3f,0x2802400,
+0x8962460,0x11820700,0x2802400,0xfc962460,0x11820700,0x2802500,0xfc962460,0x118a3dcd,0x2802400,0x10962460,0x118a3eca,0x2802400,0xfc962460,0x11c00904,0x2802400,0x8962460,
+0x11c00908,0x2802400,0x18962460,0x11c00c2c,0x6800000,0xfd329800,0x11c00c30,0xc000010,0x4b48000,0x11c00f78,0x6800000,0xfd329800,0x11c0107d,0x6800000,0xfd329800,0x11c01181,
+0x6800000,0xfd329800,0x11c01285,0x6800000,0xfd329800,0x11c01489,0x4000000,0x4200000,0x11c01489,0x6800000,0xfd329800,0x11c0168d,0x6800000,0xfd329800,0x11d05117,0x7c00100,
+0xc8230408,0x20000067,0x1000,0,0x20000b13,0x2802400,0x20962460,0x20000b13,0x2802500,0x20962460,0x20001b27,0x2802100,0xc8962461,0x20001b27,0x2802100,0xfc962460,
+0x20001b27,0x2802400,0x10962460,0x20001b27,0x2802400,0x20962460,0x20001b27,0x2802400,0xfc962460,0x20001b27,0x2802500,0xfc962460,0x20001b27,0x2806400,0xfc962460,0x20001b27,
+0x2902100,0xc0962462,0x20001b27,0x4000000,0x4200000,0x20001b27,0x4000000,0x4400000,0x20001b27,0x4000000,0x4500000,0x20001b27,0x4000000,0x4810000,0x20001b27,0x4000000,
+0x4b00000,0x20001b27,0x4000000,0x5410000,0x20001b27,0x4000000,0xc8c0000b,0x20001b27,0x4000000,0xf8400000,0x20001b27,0x4000010,0x4b00000,0x20001b27,0x4000010,0x4c00000,
+0x20001b27,0x6800000,0xfd329800,0x20001b27,0x6800100,0xfc462540,0x20001b27,0x6800400,0xfc962540,0x20001b27,0x7c00100,0xc8230401,0x20001b27,0x7c00100,0xfc230400,0x20002619,
+0x7c00100,0xc8220401,0x20002a00,0x4000000,0x5600000,0x20004b67,0,0x1900000,0x20004c67,0,0x1900000,0x20004d67,0,0x1900000,0x20006d67,0x1000,
+0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,0,0,0x200a4a12,0x7c00100,0xfdf304c1,0x200a4a12,0x7c00100,0xfe0304e1,
+0x21005600,0x4000000,0x4700000,0x21022a00,0x4000000,0x5600000,0x30000419,0x7c00100,0x8220400,0x30000419,0x7c00100,0x8250400,0x30000419,0x7c00100,0x20220400,0x30000419,
+0x7c00100,0x20250400,0x30000419,0x7c00100,0xfc220401,0x30000419,0x7c00100,0xfc250401,0x30000519,0x7c00100,0x10220400,0x30000600,0x4000400,0x4200400,0x30000600,0x7c00500,
+0x10230400,0x30000600,0x7c00500,0xfc230400,0x30000605,0x4000400,0x4200400,0x3000080e,0x7c00100,0x8220400,0x3000080e,0x7c00100,0x10220400,0x30000908,0x2000,0xc962460,
+0x30000908,0x7c00100,0xfc220400,0x30000908,0x7c00100,0xfc220401,0x30000908,0x7c00100,0xfc250400,0x30000908,0x7c00100,0xfc250401,0x30000a03,0x4000006,0xf8400400,0x30000c02,
+0x4000000,0xf8200000,0x30000c02,0x7c00100,0xfc230400,0x30000d22,0x2802100,0x40962460,0x30000d22,0x2802400,0x50962460,0x30000d22,0x2802500,0x40962460,0x30000d22,0x4000000,
+0x44200000,0x30000d22,0x4000010,0x44200000,0x30000d22,0x7c00100,0x40230400,0x30000d22,0xc000010,0x44248000,0x30000d22,0x80000000,0x44218560,0x30000e25,0x2802500,0xfc962460,
+0x30000e25,0x7c00100,0xfc230400,0x30001821,0x2802100,0x30962460,0x30001821,0x2802100,0xfc962460,0x30001821,0x2806400,0xfc962460,0x30001821,0x4000000,0x4200000,0x30001821,
+0x6800100,0x30962540,0x30001821,0x6800100,0xfc962540,0x30001821,0x6800100,0xfc962541,0x30001821,0x7c00100,0x30230400,0x30001821,0x7c00100,0xfc230400,0x30001b27,0x2802100,
+0xfc962460,0x30001b27,0x2802400,0xfc962460,0x30001b27,0x4000000,0x4200000,0x30001b27,0x4000000,0x4400000,0x30001b27,0x7c00100,0xfc230400,0x30001c1c,0x2802100,0xfd862460,
+0x30001c1c,0x2802400,0xfd862460,0x30001c1c,0x2806400,0xfd862460,0x30001c1c,0x4000000,0x4200000,0x30001c1c,0x6800100,0xfd862400,0x30001c1c,0x6800100,0xfd862540,0x30001c1c,
+0x7c00100,0xfd830000,0x30001c1c,0x7c00100,0xfd830001,0x30001c1c,0xc000010,0x4448000,0x30001f0b,0x4000000,0x4200000,0x30001f0b,0x4000010,0x4200000,0x30001f0b,0x4000010,
+0x4400000,0x30001f0b,0x6800000,0x8200000,0x30001f0b,0x7c00100,0xfc230400,0x30001f0b,0xc000010,0x4248000,0x30002006,0x7c00100,0x40250400,0x30002128,0x4000000,0x44200000,
+0x30002128,0x7c00100,0x40230400,0x30002128,0xc000010,0x44248000,0x3000221d,0x4000000,0x84810000,0x3000221d,0x4000000,0x85410000,0x3000221d,0x4000001,0x84445800,0x3000221d,
+0x7c00100,0x80230400,0x30002300,0x4000010,0x4400000,0x30002320,0x7c00100,0x80230400,0x30002417,0x2802100,0xfd862460,0x30002417,0x2802400,0x9862460,0x30002417,0x2802400,
+0x11862460,0x30002417,0x2802400,0x19862460,0x30002417,0x2802400,0xfd862460,0x30002417,0x2806400,0xfd862460,0x30002417,0x2882000,0xc5862460,0x30002417,0x4000000,0x4200000,
+0x30002417,0x4000000,0x5600000,0x30002417,0x4000000,0xc400000,0x30002417,0x4000010,0x4400000,0x30002417,0x4000010,0x5200000,0x30002417,0x6800000,0xfd329800,0x30002417,
+0x6800100,0xfd862540,0x30002417,0x7c00100,0x9830000,0x30002417,0x7c00100,0xfd830000,0x30002417,0x7d00100,0xc1830000,0x30002417,0xc000010,0x4448000,0x3000251b,0x80000,
+0xc4c18820,0x3000251b,0x2802100,0xa0962460,0x3000251b,0x3c02100,0x80962460,0x3000251b,0x4000000,0x84200000,0x3000251b,0x4000006,0x84500000,0x3000251b,0x4000010,0x84400000,
+0x3000251b,0x4000010,0x84b70000,0x3000251b,0x4000800,0x84200000,0x3000251b,0x6800000,0x81329800,0x3000251b,0x7c00100,0x80230400,0x3000251b,0x7c00900,0x80230400,0x3000251b,
+0xc000010,0x84b48000,0x3000251b,0x12882000,0xc4962460,0x30002800,0x24000000,0x4200000,0x30002800,0x2c000010,0xc9248002,0x30002a00,0x4000000,0x5600000,0x30002b01,0x2000,
+0x14962460,0x30002c00,0x4000000,0x4200000,0x30002c00,0x7c00100,0xc8220405,0x30002d19,0x7c00100,0x18250400,0x30002e00,0x24000000,0x4200000,0x30003000,0x24000000,0x4200000,
+0x30003100,0x24000000,0x4200000,0x30003600,0x24000000,0x4200000,0x30003700,0x24000000,0x4200000,0x3000392e,0x24000000,0x14200000,0x30005013,0x7c00100,0xca633801,0x30005600,
+0,0x4918820,0x30020600,0x4000400,0x4500400,0x30020701,0x2802400,0x10962460,0x30020701,0x2802400,0x10c62460,0x300a3a11,0x4020000,0x4e00000,0x300a3a11,0x4020000,
+0xc8e00002,0x300a3b11,0x4020000,0xc8e00002,0x300a3c00,0x4008000,0x4e00000,0x300a3c00,0x4010000,0x4e00000,0x300a3d11,0x7c00300,0xc8e30002,0x300a4305,0x7c00100,0xfce30400,
+0x300a4611,0x7c40300,0xfce30000,0x300a4829,0x7c00100,0x40e30400,0x300a4829,0x7c00900,0x41230400,0x300a4929,0x4000000,0x44e00000,0x3040259a,0x4000010,0x84400000,0x3040259a,
+0x4000010,0x84b70000,0x3040259a,0xc000010,0x84b48000,0x304028bc,0x4000001,0xc8c41c0b,0x304a3dcc,0x4000000,0x4e00000,0x30800c27,0x2802100,0xfc962460,0x30c01c92,0x6800000,
+0xfd329800,0x3100080e,0x7c00120,0xc8220402,0x3100080e,0x7c00120,0xc8250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x84200000,0x3100581e,0x7c00100,0x80230400,
+0x3100590d,0x7c00100,0x80230400,0x31005a09,0x7c00100,0x80220400,0x31005a09,0x7c00100,0x80250400,0x31005b00,0x4000000,0x14200000,0x31005c00,0x80000,0xc4918820,0x31005c00,
+0x2802000,0x10962460,0x31005c00,0x2802400,0x10962460,0x31005c00,0x4000000,0x14200000,0x31005c00,0x4000000,0xc8200001,0x31005c00,0x6800000,0x10962540,0x31005c00,0x6800400,
+0x10962540,0x31005c01,0x2802400,0x10962460,0x31005d00,0x4000020,0xc8200005,0x31005d00,0x6800020,0xc9329805,0x31005d00,0x7c00120,0xc8220405,0x31005d00,0x7c00120,0xc8250405,
+0x31006000,0x82000,0xc4962460,0x31006000,0x180000,0xc0918820,0x310a5e11,0x7c40300,0xfce30000,0x310a5f11,0x7c00300,0xc8e30001,0x32000419,0x7c00100,0x20250400,0x3200080e,
+0x4000020,0x4200000,0x3200080e,0x7c00100,0x8220400,0x3200080e,0x7c00100,0x8250400,0x32000908,0x7c00100,0xfc220400,0x32000908,0x7c00100,0xfc250400,0x32000c02,0x7c00100,
+0x8230400,0x32000e25,0x7c00100,0xfc230400,0x32001d0c,0x7c00100,0xfc230400,0x32002800,0x80000,0xc5e18820,0x32002800,0x80020,0xc4218820,0x32002800,0x4000001,0xc8445802,
+0x32002800,0x24000000,0x4200000,0x32002800,0x24000000,0xc9500002,0x32002800,0x24000020,0x4200000,0x32002800,0x2c000010,0xc9248002,0x32002919,0x7c00100,0xc822040f,0x32002a00,
+0x4000000,0x5600000,0x32002b01,0x2000,0x14962460,0x32002b01,0x2802000,0x10962460,0x32002b01,0x2802020,0x10962460,0x32002c00,0x4000000,0x4200000,0x32002c00,0x4000020,
+0x4200000,0x32002c00,0x4000020,0xc8200005,0x32002c00,0x7c00120,0xc8220405,0x32002c00,0x7c00120,0xc8250405,0x32002e00,0x24000020,0x4200000,0x32002f00,0x24000020,0x4200000,
+0x32003000,0x24000000,0x4200000,0x32003000,0x24000020,0x4200000,0x32003500,0x24000000,0x4200000,0x32003600,0x24000020,0x4200000,0x32003700,0x24000000,0x4100000,0x32003700,
+0x24000000,0x4200000,0x32003800,0x24000000,0x4810000,0x32003800,0x24000000,0x5410000,0x32005102,0x4000000,0xc9500008,0x32005502,0x7c00100,0x10230400,0x32006108,0x7c00100,
+0x8220400,0x32006108,0x7c00100,0x8250400,0x3200622a,0x2802100,0x80962460,0x3200622a,0x2806400,0x80962460,0x3200622a,0x7c00100,0x80230400,0x3200632b,0x2802100,0x80962460,
+0x3200632b,0x6804000,0x80962540,0x3200632b,0x7c00100,0x80230400,0x3200642c,0x2802100,0x80962460,0x3200642c,0x7c00100,0x80230400,0x3200652d,0x2802100,0x80962460,0x3200652d,
+0x7c00100,0x80230400,0x32006600,0x24000020,0x4200000,0x32006700,0x24000020,0x4200000,0x32006800,0x24000020,0x4200000,0x32006900,0x24000020,0x4200000,0x32006900,0x24000020,
+0x4810000,0x32006900,0x24000020,0x5410000,0x32006a00,0x24000020,0x4200000,0x32006a00,0x24000020,0xc8200001,0x32006a00,0x24000020,0xc8200002,0x32020701,0x2882000,0xc4c62460,
+0x32023300,0x4000000,0x14100000,0x32026c01,0x12882000,0xc4962460,0x32065700,0x4000000,0xc8810011,0x32065700,0x4000000,0xc9410011,0x32086600,0x24000020,0x4810000,0x32086600,
+0x24000020,0x5410000,0x32086900,0x24000020,0x4810000,0x32086900,0x24000020,0x5410000,0x320a3600,0x24000020,0x4200000,0x320a3d11,0x7c00100,0x11230400,0x320a3e14,0x7c00100,
+0xc8e30010,0x320a3e14,0x7c00100,0xfe530000,0x320a3f16,0x7c00100,0xc8e30c10,0x320a4400,0x4000000,0xc8e00003,0x320a4929,0x4000000,0x44e00000,0x320a4f11,0x7c00300,0xc8e30001,
+0x320a6b16,0x7c00100,0xa530c00,0x32406396,0xc000010,0x84448000,0x324a3dcf,0x4000000,0x4e00000,0x324a3dcf,0x7c00100,0x11230400,0x324a3fca,0x4000002,0xf9200c00,0x324a53c7,
+0x24000000,0x14e00000,0x32820701,0x2802000,0x8962460,0x40000419,0x7c00100,0x10220400,0x40000419,0x7c00100,0x20220400,0x40000519,0x7c00100,0x10220400,0x40000600,0x4000400,
+0x4200400,0x4000080e,0x7c00100,0x8220400,0x4000080e,0x7c00100,0x8250400,0x4000080e,0x7c00100,0xc8250402,0x40000c02,0x2802100,0x20962460,0x40000c02,0x2802400,0x20962460,
+0x40000c02,0x2802500,0x20962460,0x40000c02,0x4000000,0x4200000,0x40000c02,0x4000000,0x5071400,0x40000c02,0x7c00100,0xfc230400,0x40000c02,0x80000000,0x5329960,0x40000d22,
+0x7c00100,0x40230400,0x40000f0a,0x7c00100,0xfc230400,0x40001004,0x7c00100,0xfc230400,0x40001110,0x2802100,0xfc962460,0x40001110,0x6800100,0xfc962540,0x4000120f,0x2802100,
+0xfc962460,0x4000120f,0x4000000,0x5600000,0x4000120f,0x7c00100,0xfc230400,0x4000131f,0x7c00100,0xfc230400,0x40001423,0x4000000,0x4200000,0x40001423,0x4000000,0x5600000,
+0x40001615,0x2802400,0xfc962460,0x40001615,0x7c00100,0xfc230400,0x40002417,0x2802400,0x19862460,0x40002417,0x4000000,0x4200000,0x40002800,0x6800000,0x20201c00,0x40002800,
+0x24000002,0x4200000,0x40002c00,0x4000000,0xc8200002,0x40003000,0x24000000,0x4200000,0x40003000,0x24000020,0x4200000,0x40003700,0x24000000,0x4200000,0x40005a09,0x7c00100,
+0x80220400,0x40005a09,0x7c00100,0x80250400,0x40005d00,0x7c00120,0xc8220405,0x40006f30,0x2802100,0x40962460,0x40006f30,0x2802400,0x40962460,0x40006f30,0x4000000,0x44200000,
+0x40006f30,0x6800000,0x41329800,0x40006f30,0x6800100,0x40962540,0x40006f30,0x7c00100,0x40230400,0x40006f30,0xc000010,0x44b48000,0x40007034,0x7c00100,0x41830000,0x40007117,
+0x4000000,0x4200000,0x40007208,0x7c00100,0x10220400,0x4000720e,0x7c00100,0x10220400,0x4000720e,0x7c00500,0xc822040e,0x4000720e,0x7c00500,0xc822040f,0x40007219,0x7c00100,
+0x10220400,0x40007219,0x7c00500,0x10220400,0x40007219,0x7c00500,0xc822040e,0x40007219,0x7c00500,0xc822040f,0x40007300,0x24000000,0x4200000,0x40007400,0x4000000,0x14200000,
+0x40007531,0x7c00100,0x80230400,0x40007631,0x7c00100,0x80230400,0x40007835,0x4000010,0x84400000,0x40007835,0x7c00100,0x80230400,0x40007933,0x7c00100,0x80230400,0x40007a32,
+0x6800000,0x81329800,0x40007a32,0x7c00100,0x80230400,0x40007b2f,0x7c00100,0x80230400,0x40007c00,0x4000000,0x14200000,0x40020701,0x2802400,0x10962460,0x40020701,0x2802400,
+0x10c62460,0x40023300,0x4000000,0x14200000,0x40027d01,0x12882000,0xc4962460,0x400a3700,0x24000000,0x4200000,0x400a3700,0x24000000,0x4e00000,0x400a4400,0x4000000,0xc8e0000d,
+0x400a4412,0x4000000,0xc8e00002,0x400a4412,0x4000000,0xc8e00003,0x400a4500,0x4000000,0xc8e0000d,0x400a5300,0x4000000,0xc8810010,0x400a5300,0x4000000,0xc9410010,0x40507719,
+0x4000000,0x84200000,0x4050771c,0x4000000,0x84400000,0x4050771f,0x4000000,0x84200000,0x4050771f,0x4000000,0x84400000,0x40c01489,0x4000000,0x4200000,0x40d05117,0x4000000,
+0x14200000,0x41000419,0x7c00100,0x20220400,0x41000419,0x7c00100,0x20250400,0x4100080e,0x7c00100,0xfc220400,0x4100080e,0x7c00100,0xfc250400,0x41000908,0x7c00100,0xfc220400,
+0x41000908,0x7c00100,0xfc250400,0x41000b13,0x2802000,0x28962460,0x41000b13,0x2802100,0x28962460,0x41000b13,0x2802100,0x30962460,0x41000b13,0x4000000,0xcb00000,0x41000c02,
+0x2802100,0x20962460,0x41000c02,0x4000000,0x5500000,0x41000c02,0xc000010,0x4b48000,0x41000f0a,0x7c00100,0xfc230400,0x41001004,0x7c00100,0xfc230400,0x41001423,0x7c00100,
+0xfc230400,0x41001b27,0x4000000,0x4500000,0x41001d0c,0x7c00100,0xc822040f,0x41001d0c,0x7c00100,0xfc230400,0x41001f0b,0x2802400,0xfc962460,0x41001f0b,0x4000000,0x4200000,
+0x41001f0b,0x7c00100,0xfc230400,0x41002800,0x24000000,0x4200000,0x41002800,0x24000000,0xc200000,0x41002800,0x24000000,0xc400000,0x41002919,0x7c00100,0xc822040e,0x41002a00,
+0x4000000,0x5600000,0x41002b01,0x2802020,0x10962460,0x41002c00,0x4000000,0x4200000,0x41002c00,0x7c00120,0xc8220405,0x41003000,0x24000000,0x4200000,0x41003700,0x24000000,
+0x4200000,0x41003700,0x24000000,0x4e00000,0x41005d00,0x7c00120,0xc8220405,0x41006600,0x24000020,0x4200000,0x41006600,0x24000020,0x4810000,0x41006600,0x24000020,0x5410000,
+0x41007208,0x7c00100,0xc822040f,0x41007219,0x7c00100,0x10220400,0x41007300,0x24000000,0x4200000,0x41007e0e,0x2802000,0x18962460,0x41007e0e,0x4000000,0xc200000,0x41007f0e,
+0x4000000,0x4200000,0x41007f0e,0x7c00100,0x8230400,0x41008002,0x7c00100,0xfc230400,0x41008137,0x2802100,0x80962460,0x41008137,0x4000000,0x84200000,0x41008137,0x6800100,
+0x80962540,0x41008137,0x7c00100,0x80230400,0x41008301,0x2802000,0x18962460,0x41008407,0x4000000,0x84200000,0x41008407,0x4000000,0x84400000,0x41008407,0x4000000,0x84b00000,
+0x41008407,0x7c00100,0x80220400,0x41008407,0x7c00100,0x80250400,0x4100850b,0x7c00100,0xfc230400,0x4100860b,0x4000000,0x4200000,0x4100860b,0x7c00100,0xfc230400,0x4100870c,
+0x7c00100,0x8220400,0x41008838,0x7c00100,0x80220400,0x41008838,0x7c00100,0x80250400,0x41008939,0x2802000,0x80962460,0x41008939,0x2802100,0x80962460,0x41008939,0x2806000,
+0x80962460,0x41008939,0x4000000,0x84200000,0x41008939,0x4000000,0x84400000,0x41008939,0x7c00100,0x80230400,0x41008939,0xc000010,0x84448000,0x41008a00,0x4000400,0x14200400,
+0x41008b3b,0x4000000,0x45800000,0x41008b3b,0x6800000,0x41329800,0x41008b3b,0x7c00100,0x41830000,0x41008b3b,0x7e00100,0x41830000,0x41008c3d,0x4000010,0x84400000,0x41008c3d,
+0x7c00100,0x80230400,0x41008d0e,0x7c00100,0xc822040f,0x41008d19,0x7c00100,0x10220400,0x41008d19,0x7c00100,0xc822040f,0x41008e00,0x24000000,0x5710000,0x41008e00,0x24000000,
+0xc200000,0x41008e00,0x24000000,0xc400000,0x41008e00,0x24000000,0x1d710000,0x41008e00,0x24000006,0x4400000,0x41008f3a,0x2802100,0x40962460,0x41008f3a,0x2806000,0x40962460,
+0x41008f3a,0x4000000,0x44200000,0x41008f3a,0x6800100,0x40962540,0x41008f3a,0x7c00100,0x40230400,0x4100903c,0x7c00100,0x40230400,0x4100903c,0x7c00100,0xc823040f,0x41020701,
+0x2802000,0x10962460,0x41020701,0x2802000,0x10c62460,0x41020701,0x2802000,0x20962460,0x410a3700,0x24000000,0x4200000,0x410a3700,0x24000000,0x4e00000,0x410a4412,0x4000000,
+0xc8e00003,0x410a4711,0x7c40300,0xfce30000,0x410a4f11,0x7c00300,0xc8e30001,0x410a9100,0x4000000,0xc8800010,0x410a9100,0x4000000,0xc8810010,0x410a9100,0x4000000,0xc8870010,
+0x410a9100,0x4000000,0xc8b00010,0x410a9100,0x4000000,0xc8f00010,0x410a9100,0x4000000,0xc9001410,0x410a9100,0x4000000,0xc9071010,0x410a9100,0x4000000,0xc9071410,0x410a9100,
+0x4000000,0xc9410010,0x41408ad2,0x4000400,0xc200000,0x414a82cc,0x4000000,0x4e00000,0x41808300,0x2802000,0x18962460,0x41c01489,0x6800000,0xfd329800,0x50000419,0x7c00100,
+0x20220400,0x50000419,0x7c00100,0x20250400,0x5000080e,0x7c00100,0xfc220400,0x50000908,0x7c00100,0xfc220400,0x50000908,0x7c00100,0xfc250400,0x50000b13,0x2802500,0x20962460,
+0x50000f0a,0x7c00100,0xfc230400,0x50001615,0x2802100,0xfc962460,0x50001615,0x7c00100,0xfc230400,0x50002b01,0x2802020,0x10962460,0x50002c00,0x4000000,0x4200000,0x50002c19,
+0x7c00100,0x8220400,0x50002d19,0x7c00100,0x8220400,0x50003000,0x24000000,0x4200000,0x50003000,0x24000020,0x4200000,0x50003700,0x24000000,0x4200000,0x50005d00,0x7c00120,
+0xc8220405,0x50005d00,0x7c00120,0xc8250405,0x50006108,0x7c00100,0xfc220400,0x50006108,0x7c00100,0xfc250400,0x50006600,0x24000020,0x4200000,0x50007300,0x24000000,0x4200000,
+0x50008301,0x2802400,0x10962460,0x50008a00,0x7c00500,0xfc230400,0x50009257,0x2802400,0x40962460,0x50009257,0x4000000,0x44200000,0x50009257,0x4000010,0x45071400,0x50009257,
+0x6800000,0x41329800,0x50009257,0x7c00100,0x40230400,0x50009257,0x7c00100,0x48230400,0x50009257,0x7c00500,0x40230400,0x50009257,0x7c00900,0x48230400,0x50009257,0xc000010,
+0x44b48000,0x5000933e,0x2802100,0x40962460,0x5000933e,0x2802400,0x40962460,0x5000933e,0x2802400,0x50962460,0x5000933e,0x4000000,0x44400000,0x5000933e,0x4000000,0x44e00000,
+0x5000933e,0x4000010,0x44400000,0x5000933e,0x6800000,0x40e29800,0x5000933e,0x6800100,0x40962540,0x5000933e,0x6800100,0x40962541,0x5000933e,0x6804400,0x42f62540,0x5000933e,
+0x7c00100,0x42b30400,0x5000933e,0x7c00100,0x42b30401,0x5000933e,0xc000010,0x44448000,0x50009419,0x7c00100,0x8220400,0x50009419,0x7c00100,0x8250400,0x50009419,0x7c00100,
+0x10220400,0x50009419,0x7c00100,0x10250400,0x50009419,0x7c00100,0x20220400,0x50009419,0x7c00100,0x20250400,0x50009500,0x4000400,0x4200400,0x5000965a,0x4000000,0x84500000,
+0x5000965a,0x7c00100,0x80230400,0x5000965a,0xc000010,0x84b48000,0x5000975b,0x4000000,0x84200000,0x5000975b,0x4000010,0x84400000,0x5000975b,0x7c00100,0x80230400,0x50009865,
+0x7c00100,0x80230400,0x50009965,0x4000010,0x84400000,0x50009965,0x7c00100,0x80230400,0x50409acc,0x4000000,0x4200000,0x5100080e,0x7c00100,0x8220400,0x5100080e,0x7c00100,
+0x8250400,0x5100080e,0x7c00100,0x10250400,0x51000c02,0x2802100,0x20962460,0x51000c02,0x4000000,0x5500000,0x51000c02,0x4000020,0x4200000,0x51000c02,0x7c00100,0xfc230400,
+0x51000f0a,0x7c00100,0xfc230400,0x51000f0a,0x7c00500,0xfc230400,0x51001110,0x2802100,0x20962460,0x5100131f,0x2802100,0x20962460,0x51001423,0x7c00100,0xfc230400,0x51001524,
+0x2802100,0x20962460,0x51001524,0x4000000,0x4200000,0x51001524,0x7c00100,0x8230400,0x51001524,0x7c00100,0xfc230400,0x5100171a,0x2802100,0x20962460,0x5100171a,0x4000000,
+0x4200000,0x5100171a,0x4000000,0x5500000,0x5100171a,0x7c00100,0xfc230400,0x51001b27,0x4000000,0x4200000,0x51001b27,0x4000000,0x4400000,0x51001b27,0x4000000,0x4500000,
+0x51001b27,0x7c00100,0xfc230400,0x51001c1c,0x2802100,0xfd862460,0x51001c1c,0x2802500,0xfd862460,0x51001c1c,0x2806400,0xfd862460,0x51001c1c,0x4000000,0x5800000,0x51001c1c,
+0x6800000,0xfd329800,0x51001c1c,0x6800100,0xfd862400,0x51001c1c,0x6800100,0xfd862540,0x51001c1c,0x6800500,0xfd862400,0x51001c1c,0x7c00100,0xfd830000,0x5100251b,0x7c00100,
+0x80230400,0x51002619,0x7c00100,0x10220400,0x51002619,0x7c00100,0x10250400,0x51002619,0x7c00100,0xfc250400,0x51002800,0x80020,0xc4218820,0x51002c00,0x4000000,0xc200000,
+0x51002d19,0x7c00100,0x8230400,0x51003700,0x24000000,0x4200000,0x51003700,0x24000000,0x4e00000,0x51005201,0x2802400,0x10962460,0x51005c00,0x4000000,0x14200000,0x51006108,
+0x7c00100,0xfc220400,0x51006108,0x7c00100,0xfc250400,0x51006600,0x24000020,0x4200000,0x51006600,0x24000020,0x4810000,0x51006600,0x24000020,0x5410000,0x51007300,0x24000000,
+0x4200000,0x51007300,0x24000020,0x4200000,0x51008002,0x7c00100,0xfc230400,0x51008301,0x2802000,0x10962460,0x51008301,0x2802000,0x18962460,0x51008301,0x2802400,0x10962460,
+0x51008301,0x2802400,0x10c62460,0x51008301,0x2802400,0x18962460,0x51008a00,0x7c00500,0xfc230400,0x51008e00,0x24000000,0x4200000,0x51008e00,0x24000000,0x4400000,0x51008e00,
+0x24000000,0x4810000,0x51008e00,0x24000000,0x5400000,0x51008e00,0x24000000,0x5410000,0x51008e00,0x24000000,0x5710000,0x51008e00,0x24000000,0xc400000,0x51008e00,0x24000002,
+0x4200000,0x51008e00,0x24000500,0xc230400,0x51008e00,0x2c000010,0xcb48000,0x51009419,0x7c00100,0x8220400,0x51009419,0x7c00100,0x8250400,0x51009419,0x7c00100,0x10220400,
+0x51009419,0x7c00100,0xc822040e,0x51009419,0x7c00100,0xc822040f,0x51009500,0x4000400,0x4200400,0x51009500,0x7c00500,0xfc230400,0x51009519,0x7c00100,0x8220400,0x51009519,
+0x7c00100,0x8230400,0x51009519,0x7c00100,0x8250400,0x51009519,0x7c00100,0x18220400,0x51009519,0x7c00100,0x18250400,0x51009519,0x7c00100,0x20220400,0x51009519,0x7c00100,
+0x20250400,0x51009519,0x7c00100,0xc822040f,0x51009b71,0x2802100,0x40962460,0x51009b71,0x6800000,0x41329800,0x51009b71,0x6800100,0x40962540,0x51009b71,0x6804400,0x40962540,
+0x51009b71,0x7c00100,0x40230400,0x51009c52,0x2802100,0x40962460,0x51009c52,0x2802400,0x40962460,0x51009c52,0x2802d00,0x40962460,0x51009c52,0x4000010,0x44400000,0x51009c52,
+0x6800000,0x41329800,0x51009c52,0x6800100,0x40962540,0x51009c52,0x7c00100,0x40230400,0x51009c52,0xc000010,0x44448000,0x51009d6d,0x6800000,0x41329800,0x51009d6d,0x7c00100,
+0x40230400,0x51009d6d,0x7c00500,0x40230400,0x51009d6d,0x7c00d00,0x40230400,0x51009d6d,0xc000010,0x44448000,0x51009e08,0x2802100,0x8962460,0x51009f63,0x4000010,0x44400000,
+0x51009f63,0x6800000,0x41329800,0x51009f63,0x7c00100,0x40230400,0x51009f63,0x7c00100,0x48230400,0x51009f63,0x7c00900,0x40230400,0x51009f63,0xc000010,0x44448000,0x51009f63,
+0xc000010,0x44b48000,0x5100a008,0x2000,0xc962460,0x5100a008,0x2802400,0x20962460,0x5100a008,0x4000000,0x4200000,0x5100a008,0x4000000,0xc200000,0x5100a008,0x7c00100,
+0x8220400,0x5100a008,0x7c00100,0x8230400,0x5100a008,0x7c00100,0x8250400,0x5100a008,0x7c00500,0xfc230400,0x5100a16f,0x2806400,0x40962460,0x5100a16f,0x6800000,0x41329800,
+0x5100a16f,0x6800100,0x40962540,0x5100a16f,0x7c00100,0x40230400,0x5100a16f,0xc000010,0x44448000,0x5100a24f,0x2802100,0x40962460,0x5100a24f,0x2802400,0x40962460,0x5100a24f,
+0x6800000,0x41329800,0x5100a24f,0x7c00100,0x40230400,0x5100a24f,0xc000010,0x44448000,0x5100a36e,0x2802100,0x80962460,0x5100a36e,0x4000000,0x84200000,0x5100a36e,0x6800100,
+0x80962540,0x5100a36e,0x6804400,0x80962540,0x5100a36e,0x7c00100,0x80230400,0x5100a442,0x2802100,0x40962460,0x5100a442,0x4000000,0x44e00000,0x5100a442,0x6800000,0x40e29800,
+0x5100a442,0x6800100,0x40962540,0x5100a442,0x7c00100,0x40430400,0x5100a442,0x7c00100,0x42d30400,0x5100a442,0xc000010,0x44448000,0x5100a500,0x4000000,0x4200000,0x5100a600,
+0x4000000,0xc200000,0x5100a601,0x2802000,0x8962460,0x5100a76b,0x7c00100,0x80230400,0x5100a868,0x7c00100,0x80230400,0x5100a96c,0x4000000,0x84200000,0x5100a96c,0x7c00100,
+0x80230400,0x5100aa00,0x4000000,0x4e00000,0x5100ab00,0x4000000,0x4e00000,0x51086600,0x24000020,0x4810000,0x51086600,0x24000020,0x5410000,0x510a4005,0x7c00100,0xfce30400,
+0x510a4711,0x7c40300,0xfce30000,0x510a7300,0x24000000,0x4200000,0x510aaa00,0x4000000,0x4e00000,0x514a82cc,0x4000000,0x4e00000,0x5150a20e,0x4000400,0x4400000,0x51802bbe,
+0x2802000,0x10962460,0x51c00908,0x2802400,0x18962460,0x51c0a008,0x2802400,0x20962460,0x52000f0a,0x2802100,0x20962460,0x52000f0a,0x6800100,0x8962540,0x52000f0a,0x7c00100,
+0xfc230400,0x52001004,0x4000000,0x5600000,0x52001b00,0x4000000,0x4200000,0x52001c1c,0x2802100,0xfd862460,0x52001c1c,0x6800100,0xfd862400,0x52001c1c,0x6800500,0xfd862400,
+0x52001e12,0x7c00100,0xa230500,0x52001e12,0x7c00100,0xa330520,0x52002128,0x4000002,0x44400000,0x52002128,0x7c00100,0x40230400,0x52002a00,0x4000000,0x5500000,0x52002a00,
+0x4000000,0x5600000,0x52002d00,0x4000000,0xc8200006,0x52003000,0x24000000,0x4200000,0x52006108,0x7c00100,0xfc220400,0x52006108,0x7c00100,0xfc250400,0x52008301,0x2802400,
+0x10962460,0x52008407,0x2802400,0x80962460,0x52008407,0x2802400,0x90962460,0x52008407,0x7c00100,0x80220400,0x52008407,0x7c00100,0x80250400,0x52008b3b,0x6800000,0x41800000,
+0x52008b3b,0x7c00100,0x41830000,0x52008e00,0x24000000,0xc400000,0x52009419,0x7c00100,0x8250400,0x5200975b,0x4000000,0x84200000,0x5200ac7e,0x2802000,0x80962460,0x5200ac7e,
+0x2802100,0x80962460,0x5200ac7e,0x2802400,0x80962460,0x5200ac7e,0x4000010,0x84200000,0x5200ac7e,0x7c00100,0x80230400,0x5200ac7e,0xc000010,0x84248000,0x5200ad28,0x7c00100,
+0x40230400,0x5200ae6a,0x2802100,0x41862460,0x5200ae6a,0x2802400,0x40962460,0x5200ae6a,0x2802400,0x41862460,0x5200ae6a,0x2806000,0x41862460,0x5200ae6a,0x4000000,0x45800000,
+0x5200ae6a,0x6800000,0x41329800,0x5200ae6a,0x6800100,0x41862400,0x5200ae6a,0x6800100,0x41862540,0x5200ae6a,0x7c00100,0x41830000,0x5200ae6a,0x7c00900,0x41830000,0x5200ae6a,
+0xc000010,0x45848000,0x5200b083,0x4000010,0x44400000,0x5200b083,0x7c00100,0x40230400,0x5200b083,0xc000010,0x44448000,0x5200b182,0x2802400,0x40962460,0x5200b182,0x4000000,
+0x44200000,0x5200b182,0x4000010,0x44400000,0x5200b182,0x7c00100,0x40230400,0x5200b182,0xc000010,0x44448000,0x5200b30a,0x2802400,0x8962460,0x5200b30a,0x4000000,0xc200000,
+0x5200b30a,0x7c00100,0x8230400,0x5200b54e,0x2802100,0x40962460,0x5200b54e,0x2802400,0x40962460,0x5200b54e,0x4000000,0x44e00000,0x5200b54e,0x4000010,0x44400000,0x5200b54e,
+0x6800000,0x40e29800,0x5200b54e,0x6800100,0x40962540,0x5200b54e,0x6804400,0x42f62540,0x5200b54e,0x7c00100,0x42b30400,0x5200b54e,0xc000010,0x44448000,0x5200b61c,0x4000000,
+0x5800000,0x5200b61c,0x6800500,0xfd862400,0x5200b61c,0x7c00100,0xfd830000,0x5200b61c,0x7c00900,0xfd830000,0x5200b77f,0x2802100,0x41862460,0x5200b77f,0x2802400,0x41862460,
+0x5200b77f,0x4000000,0x45800000,0x5200b77f,0x4000010,0x45800000,0x5200b77f,0x7c00100,0x41830000,0x5200b77f,0x7c00500,0x41830000,0x5200b77f,0x7c00900,0x41830000,0x5200b77f,
+0x7e00100,0x41830000,0x5200b873,0x2802100,0x40962460,0x5200b873,0x2806400,0x40962460,0x5200b873,0x6800000,0x41329800,0x5200b873,0x6800100,0x40962540,0x5200b873,0x6800400,
+0x40962540,0x5200b873,0x7c00100,0x40230400,0x5200b873,0xc000010,0x44448000,0x5200b912,0x7c00100,0xa230500,0x5200b912,0x7c00100,0xa330520,0x5200ba74,0x4000000,0x84200000,
+0x5200ba74,0x4000010,0x84400000,0x5200ba74,0x7c00100,0x80230400,0x5200bb85,0x4000000,0x84200000,0x5200bb85,0x7c00100,0x80230400,0x5200bc75,0x4000000,0x84400000,0x5200bc75,
+0x4000010,0x84400000,0x5200bc75,0x7c00100,0x80230400,0x5200bd7d,0x4000000,0x84200000,0x5200bd7d,0x7c00100,0x80230400,0x5200be7a,0x4000000,0x84200000,0x5200be7a,0x7c00100,
+0x80230400,0x5200bf58,0x7c00100,0x80230400,0x5200c002,0x4000000,0x4200000,0x5200c178,0x2802100,0x80962460,0x5200c178,0x2802400,0x80962460,0x5200c178,0x2806400,0x80962460,
+0x5200c178,0x4000000,0x84200000,0x5200c178,0x6800100,0x80962540,0x5200c178,0x7c00100,0x80230400,0x5200c178,0x7c00100,0x80230401,0x5200c178,0xc000010,0x84448000,0x5200c178,
+0x80000000,0x85329960,0x5200c247,0x7c00100,0x80230400,0x5200c247,0x7c00100,0x80830400,0x5200c247,0x7c00100,0x81430400,0x5200c300,0x4000000,0xc8200003,0x52022d00,0x4000000,
+0xc8100006,0x52023700,0x24000000,0x4100000,0x52023700,0x24000000,0x4e00000,0x52023700,0x24000000,0x6800000,0x52024400,0x4000000,0x4100000,0x52027300,0x24000000,0x4100000,
+0x5202c300,0x4000000,0x4100000,0x5202c300,0x4000000,0xc8100002,0x5202c300,0x4000000,0xc8100003,0x5202c300,0x4000000,0xc810000d,0x5202c300,0x4000100,0x4150400,0x5202c300,
+0x4000100,0xc815040d,0x520a1e12,0x7c00100,0xa130480,0x520a3700,0x24000000,0x4e00000,0x520a3800,0x24000000,0x4100000,0x520a4711,0x7c40300,0xfce30000,0x520a4f11,0x7c00300,
+0xc8e30001,0x520a7300,0x24000000,0x4100000,0x520ab412,0x7c00100,0xa130480,0x520ac400,0x4000000,0xc8e00002,0x520ac400,0x4000000,0xc8e0000d,0x520ac414,0x4000000,0xc8e0000d,
+0x520ac511,0x7c40300,0xfce30000,0x5240af9c,0x7c00100,0x8230400,0x5240afa1,0x4000400,0xc200000,0x5240afa3,0x6800400,0x8962540,0x5240afa3,0x7c00100,0x8230400,0x5240afad,
+0x7c00100,0x8230400,0x5240afaf,0x7c00100,0x8230400,0x5240b2d4,0x4000000,0x4200000,0x5240b2e3,0x4000000,0x4200000,0x5240b2f1,0x4000000,0x4200000,0x5240b2fc,0x4000000,
+0x5500000,0x524a44cc,0x4000000,0xc8e00003,0x5250b511,0x7c00900,0x60430400,0x5280af9c,0x2802400,0x8962460,0x5280af9d,0x2802400,0x8962460,0x5280afa3,0x2802400,0x8962460,
+0x5280afa5,0x2802400,0x8962460,0x5280afa7,0x2802400,0x8962460,0x52d0b308,0x2802400,0x8962460,0x52d0b30c,0x7c00100,0x8230400,0x60000c02,0x2802100,0x20962460,0x60000c02,
+0x7c00100,0xfc230400,0x60000f0a,0x2802100,0xfc962460,0x60000f0a,0x6800100,0xfc962540,0x60000f0a,0x7c00100,0xfc230400,0x6000131f,0x4000000,0x4200000,0x6000171a,0x7c00100,
+0xfc230400,0x6000171a,0x7c00100,0xfc230560,0x60001b27,0x2802100,0xfc962460,0x60001b27,0x4000000,0x4c00000,0x60001b27,0x7c00100,0xfc230400,0x60001f0b,0x2802400,0xfc962460,
+0x60002919,0x7c00100,0xc822040e,0x60002a00,0x4000000,0x5600000,0x60003000,0x24000000,0x4200000,0x60003000,0x24000000,0x4e00000,0x60003700,0x24000000,0x4200000,0x60003800,
+0x24000000,0x5710000,0x60005102,0x4000000,0x14200000,0x60006108,0x7c00100,0xfc220400,0x60006108,0x7c00100,0xfc250400,0x60006600,0x24000020,0x4200000,0x60008301,0x2802400,
+0x10c62460,0x6000903c,0x2806000,0x40962460,0x6000903c,0x4000000,0x44400000,0x60009519,0x7c00100,0x8220400,0x60009519,0x7c00100,0x8250400,0x60009519,0x7c00100,0x10220400,
+0x60009519,0x7c00100,0xfc250400,0x6000a008,0x7c00100,0x8220400,0x6000a008,0x7c00100,0x8250400,0x6000c300,0x4000000,0x6703580,0x6000c654,0x2802000,0x40962460,0x6000c654,
+0x4000010,0x44200000,0x6000c654,0x7c00100,0x40230400,0x6000c73f,0x2802000,0x40962460,0x6000c73f,0x2802100,0x40962460,0x6000c73f,0x4000000,0x44200000,0x6000c73f,0x6800100,
+0x40962540,0x6000c73f,0x6804000,0x42e62540,0x6000c73f,0x7c00100,0x42d30400,0x6000c80b,0x7c00100,0xfc230400,0x6000c941,0x2802100,0x80962460,0x6000c941,0x2806400,0x82f62460,
+0x6000c941,0x4000000,0x84e00000,0x6000c941,0x4000010,0x84e00000,0x6000c941,0x6800000,0x82d29800,0x6000c941,0x6800100,0x80962540,0x6000c941,0x7c00100,0x82b30400,0x6000c941,
+0x7c00100,0x82c30400,0x6000c941,0xc000010,0x84448000,0x6000ca82,0x7c00100,0x40230400,0x6000cc00,0x4000000,0x4e00000,0x6000d000,0x4000000,0x4200000,0x6002c300,0x4000000,
+0x4100000,0x6002c300,0x4000000,0xc810000d,0x6002c300,0x4000100,0x4150400,0x6002c300,0x4000100,0xc815040d,0x600a3000,0x24000000,0x4200000,0x600a3000,0x24000000,0x4e00000,
+0x600a3700,0x24000000,0x4200000,0x600a3800,0x24000000,0x4200000,0x600a3800,0x24000000,0x6800000,0x600a4305,0x7c00100,0xfce30400,0x600ac300,0x4000000,0x4100000,0x600ac400,
+0x4000000,0xc8e0000d,0x600acb14,0x7c00100,0x8e30000,0x600acb16,0x7c00100,0x8e30c00,0x600acc00,0x4000000,0x4e00000,0x600acd00,0x4000000,0x4200000,0x600acd00,0x4000000,
+0x4e00000,0x600acd00,0x4000000,0x6800000,0x600ace00,0x4000000,0x4e00000,0x600ace00,0x4000000,0x6800000,0x600acf00,0x4000000,0x4e00000,0x600acf00,0x4000000,0x6800000,
+0x600ad111,0x7c40300,0xfce30000,0x604ac4cc,0x4000000,0xc8e00003,0x61000a03,0x4000000,0x5600000,0x61000c02,0x80000000,0x5329960,0x6100120f,0x4000000,0x4200000,0x61001a18,
+0x7c00100,0xfd830000,0x61001d0c,0x7c00100,0xfc230400,0x61001d0c,0x7c00100,0xfc250400,0x61006600,0x24000020,0x4200000,0x61008407,0x7c00100,0x80220400,0x61008407,0x7c00100,
+0x80250400,0x6100870c,0x7c00100,0xfc220400,0x61008e00,0x24000000,0x4200000,0x61008e00,0x24000000,0x4400000,0x61008e00,0x24000000,0xc200000,0x61008e00,0x24000002,0x4300000,
+0x6100903c,0x7c00100,0x40230400,0x61009519,0x7c00100,0xfc220400,0x61009519,0x7c00100,0xfc250400,0x61009519,0x7c00500,0xc822040f,0x61009b71,0x2802100,0x40962460,0x61009b71,
+0x2806400,0x40962460,0x61009b71,0x7c00100,0x40230400,0x6100a008,0x2802100,0x8962460,0x6100c300,0x4000000,0xc820000f,0x6100cd00,0x4000000,0x4200000,0x6100d202,0x2802400,
+0x20962460,0x6100d202,0x2802500,0x20962460,0x6100d202,0x7c00100,0xfc230400,0x6100d302,0x4000020,0x4200000,0x6100d302,0x7c00120,0xc8230405,0x6100d476,0x2802100,0x40962460,
+0x6100d476,0x2802100,0x40962461,0x6100d476,0x2806400,0x40962460,0x6100d476,0x4000000,0x44400000,0x6100d476,0x6800000,0x41329800,0x6100d476,0x6800100,0x40962540,0x6100d476,
+0x7c00100,0x40230400,0x6100d476,0xc000010,0x44448000,0x6100d573,0x2802100,0x40962460,0x6100d573,0x2806400,0x40962460,0x6100d573,0x6800100,0x40962540,0x6100d573,0x7c00100,
+0x40230400,0x6100d573,0x7c00900,0x40230400,0x6100d573,0xc000010,0x44448000,0x6100d68d,0x7c00100,0x80230400,0x6100d756,0x7c00100,0x80230400,0x6100d85c,0x2802500,0x40962460,
+0x6100d85c,0x6800100,0x40962540,0x6100d85c,0x7c00100,0x40230400,0x6100d85c,0x7c00500,0x40230400,0x6100d997,0x2802100,0x80962460,0x6100d997,0x4000000,0x84200000,0x6100d997,
+0x4000000,0x84400000,0x6100d997,0x6800000,0x81329800,0x6100d997,0x6800100,0x80962540,0x6100d997,0x6804400,0x80962540,0x6100d997,0x7c00100,0x80230400,0x6100d997,0x7c00100,
+0x80230560,0x6100d997,0xc000010,0x84448000,0x6100da98,0x6800000,0x81329800,0x6100da98,0x7c00100,0x80230400,0x6100db71,0x4000000,0x44200000,0x6100dc99,0x2802100,0x80962460,
+0x6100dc99,0x2802400,0x80962460,0x6100dc99,0x6800000,0x81329800,0x6100dc99,0x6800100,0x80962540,0x6100dc99,0x6804400,0x80962540,0x6100dc99,0x7c00100,0x80230400,0x610a4711,
+0x7c40300,0xfce30000,0x610a4f11,0x7c00300,0xc8e30001,0x610ace00,0x4000000,0x4e00000,0x6140afa1,0x7c00100,0x8230400,0x6140afa3,0x7c00100,0x8230400,0x6180af9e,0x2802400,
+0x8962460,0x62002a00,0x4000000,0x5600000,0x63002800,0x80000,0xc4918820,0x63c00c15,0x80000,0xc4918820,0x7000080e,0x7c00100,0x8250400,0x70000a03,0x4000000,0x4200000,
+0x70000c00,0x80000000,0x5329960,0x70000f0a,0x7c00100,0x8230400,0x70001004,0x7c00100,0x8230400,0x70001524,0x2802100,0x8962460,0x70001524,0x7c00100,0x8230400,0x70001615,
+0x2802100,0x8962460,0x7000171a,0x2802100,0x8962460,0x70001821,0x6800000,0x9329800,0x70002320,0x7c00100,0x80230400,0x70002a00,0x4000000,0x5500000,0x70002a00,0x4000000,
+0x5600000,0x70003000,0x24000000,0x4200000,0x70003800,0x24000000,0x4e00000,0x70005201,0x2802400,0x10962460,0x7000581e,0x7c00100,0x80230400,0x70006108,0x7c00100,0x8220400,
+0x70006108,0x7c00100,0x8250400,0x70006108,0x7c00100,0xfc220400,0x70006108,0x7c00100,0xfc250400,0x70006f30,0x7c00100,0x40230400,0x70007300,0x24000000,0x4200000,0x70007f0e,
+0x4000000,0x4200000,0x70008301,0x2802100,0x10962460,0x70008301,0x2802400,0x10962460,0x70008e00,0x24000000,0x4200000,0x70008e00,0x24000000,0x4400000,0x70008e00,0x24000002,
+0x4400000,0x70008e00,0x24000008,0x5410000,0x70008e00,0x24000010,0x4400000,0x70008e00,0x2c000010,0x4448000,0x70009519,0x7c00100,0x8220400,0x70009519,0x7c00100,0x8230400,
+0x70009519,0x7c00100,0x8250400,0x70009865,0x7c00100,0x80230400,0x70009965,0x4000010,0x84400000,0x70009965,0x7c00100,0x80230400,0x7000a008,0x7c00100,0x8220400,0x7000a008,
+0x7c00100,0x8250400,0x7000a008,0x7c00500,0xc822040f,0x7000a50e,0x4000000,0x4200000,0x7000b61c,0x2802500,0xfd862460,0x7000b61c,0x6800500,0xfd862400,0x7000b61c,0x7c00100,
+0xfd830000,0x7000c300,0x4000000,0x4100000,0x7000c941,0x2806000,0x80c62460,0x7000cc00,0x4000000,0x4e00000,0x7000cd00,0x4000000,0x4200000,0x7000cd00,0x4000000,0x4e00000,
+0x7000cd00,0x4000000,0x6800000,0x7000cf00,0x4000000,0x4e00000,0x7000d202,0x2802100,0x20962460,0x7000d202,0x7c00100,0x8230400,0x7000d202,0x7c00100,0xfc230400,0x7000d997,
+0x7c00100,0x80230400,0x7000d997,0xc000010,0x84248000,0x7000dd86,0x2802400,0x80962460,0x7000dd86,0x7c00100,0x80230400,0x7000dd86,0xc000010,0x84448000,0x7000de9f,0x4000000,
+0x84200000,0x7000de9f,0x7c00100,0x80230400,0x7000e001,0x2400,0x4962460,0x7000e001,0x2802400,0x8962460,0x7000e187,0x2802000,0x80962460,0x7000e187,0x2802100,0x80962460,
+0x7000e187,0x4000000,0x84200000,0x7000e187,0x7c00100,0x80230400,0x7000e187,0xc000010,0x84448000,0x7000e288,0x7c00100,0x80230400,0x7000e300,0x4000000,0x4200000,0x7000e489,
+0x2802100,0x80962460,0x7000e489,0x2802400,0x80962460,0x7000e489,0x6800100,0x80962540,0x7000e489,0x6800100,0x80962541,0x7000e489,0x6804400,0x82f62540,0x7000e489,0x7c00100,
+0x80430400,0x7000e489,0x7c00100,0x82b30400,0x7000e489,0x7c00100,0x82d30400,0x7000e489,0x7c00900,0x80430400,0x7000e59d,0x2802100,0x80962460,0x7000e59d,0x2802400,0x80962460,
+0x7000e59d,0x4000000,0x84200000,0x7000e59d,0x4000010,0x84200000,0x7000e59d,0x6800100,0x80962540,0x7000e59d,0x6804400,0x80962540,0x7000e59d,0x7c00100,0x80230400,0x7000e59d,
+0xc000010,0x84448000,0x7000e691,0x2802100,0x80962460,0x7000e691,0x2802400,0x80962460,0x7000e691,0x2806400,0x80962460,0x7000e691,0x6800000,0x81329800,0x7000e691,0x6800100,
+0x80962540,0x7000e691,0x7c00100,0x80230400,0x7000e700,0x4000400,0x4200400,0x7000e70e,0x7c00100,0x8220400,0x7000e719,0x7c00100,0x8220400,0x7000e719,0x7c00500,0xc822040f,
+0x7000e853,0x7c00100,0x80230400,0x7000e9a0,0x2802400,0x80962460,0x7000e9a0,0x4000000,0x84200000,0x7000e9a0,0x4000000,0x84500000,0x7000e9a0,0x7c00100,0x80230400,0x7000ea79,
+0x2802400,0x80962460,0x7000ea79,0x4000000,0x84200000,0x7000ea79,0x4000000,0x84f00000,0x7000ea79,0x4000010,0x84400000,0x7000ea79,0x7c00100,0x80230400,0x7000eb8c,0x2802400,
+0x80962460,0x7000eb8c,0x4000000,0x84200000,0x7000eb8c,0x7c00100,0x80230400,0x7000eca3,0x2802100,0x80962460,0x7000eca3,0x2806400,0x80962460,0x7000eca3,0x4000000,0x84200000,
+0x7000eca3,0x6800000,0x81329800,0x7000eca3,0x6800100,0x80962540,0x7000eca3,0x7c00100,0x80230400,0x7000eca3,0xc000010,0x84448000,0x7000ed95,0x6800000,0xa1329800,0x7000ed95,
+0x7c00100,0xa0230400,0x7000ed95,0xc000010,0x84448000,0x7000ee1c,0x2802500,0x9862460,0x7000ee1c,0x6800000,0xfd329800,0x7000ee1c,0x7c00100,0x9830000,0x7000ee1c,0x7c00100,
+0xfd830000,0x7000ee1c,0x7c00900,0x9830000,0x7000ef8f,0x4000000,0x84200000,0x7000ef8f,0x7c00100,0x80230400,0x7000f08e,0x4000000,0x84200000,0x7000f08e,0x7c00100,0x80230400,
+0x7000f159,0x2802100,0x80962460,0x7000f159,0x7c00100,0x80230400,0x7000f200,0x4000000,0x4200000,0x7000f200,0x4000000,0x5200000,0x7000f200,0x4000000,0x5710000,0x7000f34b,
+0x2802400,0x80962460,0x7000f34b,0x4000000,0x84200000,0x7000f34b,0x4000010,0x84400000,0x7000f34b,0x6800000,0x81329800,0x7000f34b,0x7c00100,0x80230400,0x7000f34b,0x7c00900,
+0x80230400,0x7000f34b,0xc000010,0x84448000,0x7000f490,0x4000000,0x84200000,0x7000f490,0x7c00100,0x80230400,0x7000f5a5,0x7c00100,0x80230400,0x7000f67b,0x4000000,0x84200000,
+0x7000f67b,0x4000010,0x84200000,0x7000f67b,0x7c00100,0x80230400,0x7000f8a6,0x2802100,0x80962460,0x7000f8a6,0x2802400,0x80962460,0x7000f8a6,0x2806400,0x80962460,0x7000f8a6,
+0x4000000,0x84500000,0x7000f8a6,0x4000010,0x84b00000,0x7000f8a6,0x4000800,0x84200000,0x7000f8a6,0x6800100,0x80962540,0x7000f8a6,0x6800100,0x80962541,0x7000f8a6,0x7c00100,
+0x80230400,0x7000f8a6,0xc000010,0x84448000,0x7000f921,0x4000000,0x4200000,0x7000fa00,0x4000000,0x4200000,0x7000fb9e,0x2802100,0x80962460,0x7000fb9e,0x2802400,0x80962460,
+0x7000fb9e,0x2806400,0x80962460,0x7000fb9e,0x4000000,0x84200000,0x7000fb9e,0x6800000,0x81329800,0x7000fb9e,0x6800100,0x80962540,0x7000fb9e,0x6800100,0x80962541,0x7000fb9e,
+0x7c00100,0x80230400,0x7000fc92,0x4000000,0x84200000,0x7000fc92,0x6800000,0x81329800,0x7000fc92,0x7c00100,0x80220400,0x7000fc92,0x7c00100,0x80230400,0x7000fc92,0x7c00100,
+0x80250400,0x700acd00,0x4000000,0x4e00000,0x700acd00,0x4000000,0x6800000,0x700ace00,0x4000000,0x4e00000,0x700acf00,0x4000000,0x4e00000,0x700acf00,0x4000000,0x6800000,
+0x7050df21,0x4000000,0xc200000,0x7050f729,0x80000,0xc4918820,0x7080afa1,0x2802400,0x8962460,0x7090df21,0x2802400,0x8962460,0x70d0e427,0x2802100,0xfc962460,0x70d0e427,
+0x2802400,0xfc962460,0x70d0e427,0x6800100,0xfc962540,0x70d0ea25,0x4000010,0x84400000,0x8000120f,0x7c00100,0x20230400,0x80001524,0x7c00100,0x20230400,0x8000171a,0x7c00100,
+0x8230400,0x80002006,0x7c00100,0x40220400,0x80002006,0x7c00100,0x40250400,0x80002a00,0x4000000,0x5500000,0x80002d00,0x4000000,0x24200000,0x80005208,0x2802400,0x30962460,
+0x80005c00,0x4000000,0x34200000,0x80007300,0x24000000,0x24200000,0x80009519,0x7c00100,0x20220400,0x80009519,0x7c00100,0x20230400,0x80009519,0x7c00100,0x20250400,0x80009865,
+0x7c00100,0x80230400,0x8000a008,0x2802100,0x28962460,0x8000b30a,0x4000000,0x2c500000,0x8000b30a,0x7c00100,0x28230400,0x8000cd00,0x4000000,0x24e00000,0x8000d202,0x2802500,
+0x20962460,0x8000d202,0x7c00100,0x20230400,0x8000d68d,0x4000000,0x84200000,0x8000d997,0x2802000,0x80962460,0x8000d997,0x2802400,0x80962460,0x8000d997,0x4000000,0x84400000,
+0x8000d997,0x4000000,0x84500000,0x8000d997,0x7c00100,0x80230400,0x8000d997,0xc000010,0x84448000,0x8000e489,0x2802100,0x80962460,0x8000e489,0x7c00100,0x82d30400,0x8000e719,
+0x7c00100,0x20220400,0x8000f8a6,0x2802100,0x80962460,0x8000f8a6,0x7c00100,0x80230400,0x8000f8a6,0xc000010,0x84448000,0x8000fda1,0x2802100,0x81862460,0x8000fda1,0x2806400,
+0x81862460,0x8000fda1,0x4000000,0x85800000,0x8000fda1,0x6800000,0x81329800,0x8000fda1,0x6800100,0x81862400,0x8000fda1,0x6800100,0x81862540,0x8000fda1,0x7c00100,0x81830000,
+0x8000fda1,0xc000010,0x84448000,0x8000fe9c,0x7c00100,0x80230400,0x8000fe9c,0x7c00100,0x80830400,0x8000fe9c,0x7c00100,0x81430400,0x8000ff06,0x7c00100,0x40220400,0x80010165,
+0x7c00100,0x80230400,0x800102a2,0x4000000,0x84200000,0x800102a2,0x7c00100,0x80230400,0x800103a4,0x7c00100,0x80230400,0x800103a4,0xc000010,0x84448000,0x8001044c,0x4000000,
+0x84200000,0x8001044c,0x7c00100,0x80220400,0x8001044c,0x7c00100,0x80250400,0x80010670,0x2802000,0x80962460,0x80010670,0x4000000,0x84200000,0x80010670,0x4000010,0x84400000,
+0x80010670,0xc000010,0x84448000,0x800a4711,0x7c40300,0xfce30000,0x800acd00,0x4000000,0x4e00000,0x800acd00,0x4000000,0x6902460,0x800ace00,0x4000000,0x4e00000,0x800acf00,
+0x4000000,0x4e00000,0x800b0011,0x7c40300,0xfce30000,0x800b0500,0x4000000,0x4e00000,0x800b0500,0x4000000,0x6800000,0x90001615,0x7c00100,0xfc230400,0x9000171a,0x4000000,
+0x4200000,0x9000171a,0x7c00100,0xfc230400,0x90003000,0x24000000,0x4200000,0x90007f0e,0x4000000,0x4200000,0x90008301,0x2802400,0x10962460,0x90008e00,0x24000000,0x4400000,
+0x90009519,0x7c00100,0x10250400,0x9000a16f,0x2802100,0x40962460,0x9000d200,0x80000000,0x5329960,0x9000d202,0x2802000,0x20962460,0x9000d202,0x2802100,0x20962460,0x9000d202,
+0x7c00100,0xfc230400,0x9000e59d,0x2802100,0x80962460,0x90010500,0x4000000,0x4e00000,0x900107a7,0x2802100,0x40962460,0x900107a7,0x2802400,0x40962460,0x900107a7,0x2802c00,
+0x40962460,0x900107a7,0x4000000,0x45400000,0x900107a7,0x6800000,0x41329800,0x900107a7,0x7c00100,0x40220400,0x900107a7,0x7c00100,0x40250400,0x900108a8,0x2802100,0x80962460,
+0x900108a8,0x2806400,0x80962460,0x900108a8,0x4000000,0x84200000,0x900108a8,0x4000000,0x84400000,0x900108a8,0x4000010,0x84400000,0x900108a8,0x6800000,0x81329800,0x900108a8,
+0x6800100,0x80962540,0x900108a8,0x7c00100,0x80230400,0x900108a8,0xc000010,0x84448000,0x90010908,0x7c00100,0x8220400,0x90010a38,0x2802100,0x80962460,0x90010ca9,0x2802100,
+0x80962460,0x90010ca9,0x4000000,0x84500000,0x90010ca9,0x4000010,0x84b00000,0x90010ca9,0x6800100,0x80962540,0x90010ca9,0x7c00100,0x80230400,0x90010d1b,0x4000000,0x84500000,
+0x90010eaa,0x2802100,0x40962460,0x90010eaa,0x2802400,0x40962460,0x90010eaa,0x2806400,0x40962460,0x90010eaa,0x4000000,0x44200000,0x90010eaa,0x4000000,0x44400000,0x90010eaa,
+0x4000010,0x44400000,0x90010eaa,0x6800000,0x41329800,0x90010eaa,0x6800100,0x40962540,0x90010eaa,0x7c00100,0x40230400,0x90010eaa,0xc000010,0x44448000,0x90010fab,0x7c00100,
+0x40220400,0x90010fab,0x7c00100,0x40250400,0x9002c300,0x4000000,0x4100000,0x900ac400,0x4000000,0xc8e0000d,0x900acd00,0x4000000,0x4e00000,0x900acd00,0x4000000,0x6800000,
+0x900acf00,0x4000000,0x4e00000,0x900b0500,0x4000000,0x4e00000,0x900b0500,0x4000000,0x6800000,0x900b0b9a,0x7c00900,0x81230400,0x900b109a,0x7c00300,0x80e30000,0x900b119a,
+0x7c00300,0x80e30000,0x90408e06,0x24000000,0x4400000,0xa0001004,0x4000000,0x4200000,0xa0001004,0x7c00100,0x8230400,0xa000120f,0x2802100,0xfc962460,0xa000120f,0x2802400,
+0xfc962460,0xa000171a,0x2802100,0xfc962460,0xa000171a,0x2806400,0x8962460,0xa0002a00,0x4000000,0x5600000,0xa0003000,0x24000000,0x4200000,0xa000581e,0x7c00100,0x80230400,
+0xa0007300,0x24000000,0x4200000,0xa0008301,0x2802400,0x10962460,0xa0008e00,0x24000000,0x4400000,0xa000cf00,0x4000000,0x4e00000,0xa0010500,0x4000000,0x4200000,0xa00114af,
+0x2802100,0x80962460,0xa00114af,0x2802400,0x80962460,0xa00114af,0x2806400,0x80962460,0xa00114af,0x6800000,0x81329800,0xa00114af,0x7c00100,0x80230400,0xa00114af,0x7c00100,
+0x80230560,0xa00116b0,0x2802100,0x80962460,0xa00116b0,0x2802800,0x80962460,0xa00116b0,0x2806400,0x80962460,0xa00116b0,0x4000000,0x84400000,0xa00116b0,0x4000000,0x84500000,
+0xa00116b0,0x4000010,0x84400000,0xa00116b0,0x6800100,0x80962540,0xa00116b0,0x7c00100,0x80230400,0xa00116b0,0x7c00100,0x80230560,0xa00116b0,0xc000010,0x84448000,0xa0011722,
+0x7c00100,0x40230400,0xa00118b1,0x2802000,0x80962460,0xa00118b1,0x2802100,0x80962460,0xa00118b1,0x2806400,0x80962460,0xa00118b1,0x4000000,0x84200000,0xa00118b1,0x4000000,
+0x84400000,0xa00118b1,0x4000000,0x84500000,0xa00118b1,0x6800100,0x80962540,0xa00118b1,0x7c00100,0x80230400,0xa00118b1,0x7c00100,0x80230560,0xa00118b1,0xc000010,0x84448000,
+0xa00a4005,0x7c00100,0x8e30400,0xa00a4711,0x7c40300,0xfce30000,0xa00ac400,0x4000000,0x4e00000,0xa00acb14,0x7c00100,0x8e30000,0xa00acf00,0x4000000,0x4e00000,0xa00b0500,
+0x4000000,0x4e00000,0xa00b0500,0x4000000,0x6800000,0xa00b0b96,0x7c00900,0x81230400,0xa00b1211,0x7c40300,0xfce30000,0xa00b1314,0x7c00100,0x8e30000,0xa00b1596,0x7c00300,
+0x80e30000,0xa040afb9,0x6800400,0x8962540,0xa08083ba,0x2802400,0x10962460,0xb0000a03,0x7c00100,0x10220400,0xb0000b13,0x7c00100,0xfe633800,0xb0001004,0x2802000,0xfc962460,
+0xb0001110,0x4000000,0x4200000,0xb0001524,0x2802100,0xfc962460,0xb0001615,0x4000000,0x4500000,0xb000251b,0x7c00100,0x80230400,0xb0007300,0x24000000,0x4200000,0xb0008939,
+0x4000000,0x84200000,0xb0008939,0x7c00100,0x80230400,0xb0008e00,0x24000000,0x4200000,0xb0008e00,0x24000000,0x4400000,0xb0008e00,0x24000010,0x4400000,0xb0009257,0x2802000,
+0x40962460,0xb0009257,0x4000000,0x45600000,0xb0009519,0x7c00100,0x10220400,0xb0009519,0x7c00100,0x20220400,0xb0009519,0x7c00100,0x20250400,0xb0009a00,0x4000000,0x4200000,
+0xb000b30a,0x2802100,0x8962460,0xb000b30a,0x7c00100,0x8230400,0xb000c178,0x80000000,0x85329960,0xb000c300,0x4000000,0x4200000,0xb000d202,0x2802000,0x20962460,0xb000d476,
+0x6800100,0x40962540,0xb000d476,0x7c00100,0x40230400,0xb000e300,0x4000000,0x4e00000,0xb000fda1,0x7c00100,0x81830000,0xb0010eaa,0x2802000,0x40962460,0xb00116b0,0x7c00100,
+0x80230400,0xb0011900,0x4000000,0x4e00000,0xb0011ab2,0x2802100,0x80962460,0xb0011ab2,0x2802400,0x80962460,0xb0011ab2,0x2806400,0x80962460,0xb0011ab2,0x4000000,0x84200000,
+0xb0011ab2,0x6800100,0x80962540,0xb0011ab2,0x7c00100,0x80230400,0xb0011b0c,0x7c00100,0xfc230400,0xb0011cb3,0x2802100,0x40962460,0xb0011cb3,0x2806400,0x40962460,0xb0011cb3,
+0x6800000,0x41329800,0xb0011cb3,0x6800100,0x40962540,0xb0011cb3,0x7c00100,0x40230400,0xb0011db6,0x2802500,0x40962460,0xb0011db6,0x6800000,0x41329800,0xb0011db6,0x7c00100,
+0x40230400,0xb0011db6,0x7c00500,0x40230400,0xb0011e00,0x4000000,0x4200000,0xb0011e00,0x4000000,0x5500000,0xb0011fb4,0x2802100,0x80962460,0xb0011fb4,0x6800100,0x80962540,
+0xb0011fb4,0x7c00100,0x80430400,0xb0011fb4,0x7c00100,0x82d30400,0xb0011fb4,0xc000010,0x84448000,0xb0012000,0x4000000,0x4200000,0xb00121b5,0x4000000,0x84200000,0xb00121b5,
+0x4000010,0x84400000,0xb00121b5,0x7c00100,0x80220400,0xb00121b5,0x7c00100,0x80250400,0xb00121b5,0xc000010,0x84448000,0xb00122b8,0x4000000,0x84200000,0xb00122b8,0x7c00100,
+0x80230400,0xb00123b7,0x2802400,0x80962460,0xb00123b7,0x4000000,0x84200000,0xb00123b7,0x7c00100,0x80230400,0xb00123b7,0xc000010,0x84248000,0xb00a4005,0x7c00100,0xfce30400,
+0xb00a4711,0x7c40300,0xfce30000,0xb00acf00,0x4000000,0x4e00000,0xb00b0500,0x4000000,0x4e00000,0xb00b0500,0x4000000,0x6800000,0xb00b109a,0x7c00300,0x80e30000,0xb080e487,
+0x2802000,0xfc962460,0xc0001524,0x4000000,0x4500000,0xc0001a18,0x2806400,0xfd862460,0xc0001a18,0x7c00100,0xfd830000,0xc0007300,0x24000000,0x4200000,0xc0008e00,0x24000010,
+0x4400000,0xc0009519,0x7c00100,0x10220400,0xc0009519,0x7c00100,0x10250400,0xc0009519,0x7c00100,0xfc220400,0xc0009519,0x7c00100,0xfc250400,0xc000c300,0x4000000,0xc820000f,
+0xc000d85c,0x2802100,0x40962460,0xc000d85c,0x6800100,0x40962540,0xc000d85c,0x7c00100,0x40230400,0xc000dc99,0x7c00100,0x80230400,0xc000e719,0x7c00100,0xfc220400,0xc00107a7,
+0x7c00100,0x40230400,0xc0010eaa,0x7c00100,0x40230400,0xc00116b0,0x7c00100,0x80230560,0xc0011900,0x4000000,0x4200000,0xc0012447,0,0x84818820,0xc0012447,0,
+0x84c18820,0xc0012447,0,0x85418820,0xc00125b9,0x7c00100,0x80230400,0xc00126bb,0x2802100,0x80962460,0xc00126bb,0x2806400,0x80962460,0xc00126bb,0x4000000,0x84500000,
+0xc00126bb,0x6800100,0x80962540,0xc00126bb,0x7c00100,0x80230400,0xc00127ba,0x2802400,0x40962460,0xc00127ba,0x4000000,0x44200000,0xc00127ba,0x6800000,0x41329800,0xc00127ba,
+0x7c00100,0x40230400,0xc00127ba,0x7c00900,0x40230400,0xc0012800,0x4000000,0x4200000,0xc0012b23,0x4000000,0x4200000,0xc0012b23,0x4000000,0x4400000,0xc0012b23,0x4000000,
+0x5500000,0xc0012cbc,0x2802400,0x40962460,0xc0012cbc,0x4000000,0x45600000,0xc0012cbc,0x6800000,0x41329800,0xc0012cbc,0x7c00100,0x40230400,0xc00acf00,0x4000000,0x4e00000,
+0xc00ae300,0x4000000,0x4e00000,0xc00b0500,0x4000000,0x4e00000,0xc00b0500,0x4000000,0x6800000,0xc00b0b11,0x4000000,0x5200000,0xc00b0b11,0x7c00900,0x9230400,0xc00b109a,
+0x7c00300,0x80e30000,0xc00b2914,0x7c00100,0xfe530000,0xc00b2916,0x7c00100,0xfe530c00,0xc00b2a00,0x4000000,0x4e00000,0xc040af5e,0x7c00100,0x80230400,0xc0c12b89,0x4000000,
+0x4200000,0xc14a44cc,0x4000000,0xc8e0000d,0xd000131f,0x2802c00,0xfc962460,0xd000171a,0x7c00100,0x18230400,0xd0001821,0x2802100,0x10962460,0xd0007300,0x24000000,0x4200000,
+0xd0008e00,0x24000000,0x4200000,0xd0008f3a,0x2806000,0x40962460,0xd0009519,0x7c00100,0x8220400,0xd0009519,0x7c00100,0x8250400,0xd0009519,0x7c00100,0xfc220400,0xd0009519,
+0x7c00100,0xfc250400,0xd000a500,0x4000000,0x4200000,0xd000c300,0x4000000,0x4e00000,0xd000d202,0x7c00100,0xfc230400,0xd000d476,0x7c00100,0x40230400,0xd000d997,0x2802100,
+0x80962460,0xd000d997,0x6800100,0x80962540,0xd000e001,0x2802100,0x10962460,0xd000e700,0x4000400,0x4200000,0xd000e719,0x7c00100,0x10220400,0xd000e719,0x7c00500,0xc822040f,
+0xd000fa00,0x4000000,0x4e00000,0xd0010eaa,0x4000010,0x44400000,0xd0010eaa,0x7c00100,0x40230400,0xd0012dbd,0x4000000,0x84200000,0xd0012dbd,0x7c00100,0x80230400,0xd0012fbe,
+0x2802100,0x80962460,0xd0012fbe,0x2802400,0x80962460,0xd0012fbe,0x2806400,0x82f62460,0xd0012fbe,0x4000000,0x84400000,0xd0012fbe,0x6800000,0x80e29800,0xd0012fbe,0x6800100,
+0x80962540,0xd0012fbe,0x6800100,0x80962541,0xd0012fbe,0x6804400,0x80962540,0xd0012fbe,0x7c00100,0x82b30400,0xd0012fbe,0x7c00100,0x82c30560,0xd0012fbe,0xc000010,0x84448000,
+0xd0013183,0x7c00100,0x40230400,0xd0013200,0x4000000,0x4200000,0xd0013200,0x6800000,0xc9329805,0xd00134c0,0x2802100,0x80962460,0xd00134c0,0x4000002,0x84400000,0xd00134c0,
+0x7c00100,0x80230400,0xd00a4305,0x7c00100,0xfce30400,0xd00a4611,0x7c40300,0xfce30000,0xd00a4711,0x7c40300,0xfce30000,0xd00a5e11,0x7c40300,0xfce30000,0xd00acf00,0x4000000,
+0x4e00000,0xd00b0500,0x4000000,0x4e00000,0xd00b0500,0x4000000,0x6800000,0xd00b0b11,0x6800500,0xfc962540,0xd00b0bbf,0x2802200,0x80c62460,0xd00b119a,0x7c00300,0x80e30000,
+0xd00b2a00,0x4000000,0x4e00000,0xd00b2e11,0x7c40300,0xfce30000,0xd00b30bf,0x7c00300,0x80230000,0xd00b339a,0x7c00300,0x80e30000,0xe0000c02,0xc000010,0x4b48000,0xe0001524,
+0x2802400,0xfc962460,0xe0001524,0x7c00100,0xfc230400,0xe0001615,0x7c00100,0xfc230400,0xe000251b,0x12882000,0xc4962460,0xe0002a00,0x4000000,0x5500000,0xe0005102,0x4000000,
+0x14200000,0xe0005c00,0x4000000,0x14200000,0xe000622a,0x6804400,0x80962540,0xe000622a,0x7c00100,0x80230400,0xe0008838,0x7c00100,0x80220400,0xe0008838,0x7c00100,0x80250400,
+0xe0008e00,0x24000000,0x4810000,0xe0008e00,0x24000000,0x5410000,0xe0008e00,0x24000002,0x4400000,0xe0008e00,0x2c000010,0x4b48000,0xe000933e,0x7c00100,0x42b30400,0xe000933e,
+0xc000010,0x44448000,0xe0009519,0x7c00100,0xc822040f,0xe0009519,0x7c00100,0xfc220400,0xe0009519,0x7c00100,0xfc250400,0xe000c178,0x2802100,0x80962460,0xe000c941,0x2802100,
+0x80962460,0xe000c941,0x2806400,0x80962460,0xe000c941,0x7c00100,0x82b30400,0xe000d202,0x2802400,0x20962460,0xe000d202,0x7c00100,0xfc230400,0xe000d202,0x7c00500,0xfc230400,
+0xe000dc99,0x4000000,0x84200000,0xe000e001,0x2802100,0x20962460,0xe000e001,0x2802400,0x20962460,0xe000fda1,0x7c00100,0x81830000,0xe0013502,0x2802400,0x20962460,0xe0013502,
+0x4000000,0x4200000,0xe0013502,0x7c00100,0xfc230400,0xe0013502,0x80000000,0x5329960,0xe00136c1,0x4000000,0x84200000,0xe00136c1,0x7c00100,0x80230400,0xe001370b,0x7c00100,
+0xfc230400,0xe0013919,0x7c00500,0x20220400,0xe0013919,0x7c00500,0xc822040f,0xe0013919,0x7c00d00,0xc823040f,0xe0013a19,0x7c00100,0xfc220400,0xe0013a19,0x7c00100,0xfc230400,
+0xe0013bc2,0x2802400,0x80962460,0xe0013bc2,0x7c00100,0x80230400,0xe0013bc2,0xc000010,0x84248000,0xe0013cc3,0x6800000,0x81329800,0xe0013cc3,0x7c00100,0x80230400,0xe0013dc4,
+0x2802400,0x80962460,0xe0013dc4,0x7c00100,0x80230400,0xe0013e28,0x7c00100,0x40230400,0xe0013fc5,0x7c00100,0x80220400,0xe0013fc5,0x7c00100,0x80250400,0xe0014000,0x4000000,
+0x14200000,0xe0014001,0x2802400,0x10962460,0xe00a4711,0x7c40300,0xfce30000,0xe00a5e11,0x7c40300,0xfce30000,0xe00ac511,0x7c40300,0xfce30000,0xe00acf00,0x4000000,0x4e00000,
+0xe00ae300,0x4000000,0x4e00000,0xe00b0500,0x4000000,0x4e00000,0xe00b1314,0x7c00100,0xfce30000,0xe00b1316,0x7c00100,0xfce30c00,0xe00b2a00,0x4000000,0x4e00000,0xe00b2a00,
+0x4000000,0x6800000,0xe00b3816,0x7c00500,0x20230c00,0xe0808328,0x2802400,0x50962460,0xf0001615,0x6800100,0xfc962540,0xf0001a18,0x2802000,0xfd862460,0xf000c247,0x7c00100,
+0x81430400,0xf000d000,0x4000000,0x4e00000,0xf000e300,0x4000000,0x4e00000,0xf000e59d,0x2802100,0x80962460,0xf000e59d,0x7c00100,0x80230400,0xf0012447,0,0x84818820,
+0xf0012447,0,0x84c18820,0xf0012447,0,0x85418820,0xf0012447,0x2802000,0x80962460,0xf0012447,0x2802400,0x80962460,0xf0012447,0x7c00100,0x80230400,0xf0013a19,
+0x7c00100,0xfc220400,0xf0014102,0x2802400,0x20962460,0xf0014308,0x2802100,0xfc962460,0xf0014308,0x7c00500,0xc822040e,0xf0014308,0x7c00500,0xc822040f,0xf001440a,0x4000000,
+0x4500000,0xf0014500,0x4000000,0x4200000,0xf00146c6,0x2802100,0x80962460,0xf00146c6,0x2806000,0x82f62460,0xf00146c6,0x4000000,0x84e00000,0xf00146c6,0x6800000,0x82d29800,
+0xf00146c6,0x6800100,0x80962540,0xf00146c6,0x6804000,0x80962540,0xf00146c6,0x7c00100,0x82b30400,0xf00146c6,0x7c00100,0x82c30560,0xf00146c6,0xc000010,0x84448000,0xf00147c7,
+0x2802000,0x80962460,0xf00147c7,0x6800000,0x81329800,0xf00147c7,0x7c00100,0x80230400,0xf00ac511,0x7c40300,0xfce30000,0xf00acf00,0x4000000,0x4e00000,0xf00b2914,0x7c00100,
+0xfe530000,0xf00b2916,0x7c00100,0xfe530c00,0xf00b2a00,0x4000000,0x4e00000,0xf00b2a00,0x4000000,0x6800000,0xf00b4211,0x7c40300,0xfce30000,0xf10a3c00,0x4000000,0x4e00000,
+0xf10a3c00,0x4008000,0x4e00000,0xf10a8200,0x4008000,0x4e00000,0xf10b4811,0x7c40300,0xfce30000};
-static const int32_t countPropsVectors=7260;
+static const int32_t countPropsVectors=7497;
static const int32_t propsVectorsColumns=3;
static const uint16_t scriptExtensions[298]={
0x800e,0x8019,8,0x8059,8,2,8,0x8038,8,6,8,0x8019,2,0x22,0x25,0x57,
@@ -4022,6 +4038,6 @@ static const uint16_t scriptExtensions[298]={
0x804f,0x37,0x804e,2,0x8057,2,0x8025,2,0x115,0x2f,0x31,0x8053,0x2f,0x31,0x80c1,0x2f,
0x8031,2,0x8007,0x79,0x80c2,0x79,0x123,0x89,0x87,0x8087};
-static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2d4e,0x2d4e,0x2d4e,0x2d4e,0x6d50,3,0x89ac,0x8a41,0x8a41,0x8a41,0xb48c7,0x2f75a31,0,0,0,0};
+static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2d4e,0x2d4e,0x2d4e,0x2d4e,0x6d5a,3,0x8aa3,0x8b38,0x8b38,0x8b38,0xb48c8,0x2f75a31,0,0,0,0};
#endif // INCLUDED_FROM_UCHAR_C
diff --git a/libicu/cts_headers/ulocimp.h b/libicu/cts_headers/ulocimp.h
index efa0fa72e..7fb640628 100644
--- a/libicu/cts_headers/ulocimp.h
+++ b/libicu/cts_headers/ulocimp.h
@@ -10,6 +10,8 @@
#ifndef ULOCIMP_H
#define ULOCIMP_H
+#include <cstddef>
+
#include "unicode/bytestream.h"
#include "unicode/uloc.h"
@@ -40,8 +42,10 @@ uloc_getTableStringWithFallback(
int32_t *pLength,
UErrorCode *pErrorCode);
+namespace {
/*returns true if a is an ID separator false otherwise*/
-#define _isIDSeparator(a) (a == '_' || a == '-')
+inline bool _isIDSeparator(char a) { return a == '_' || a == '-'; }
+} // namespace
U_CFUNC const char*
uloc_getCurrentCountryID(const char* oldID);
@@ -49,53 +53,134 @@ uloc_getCurrentCountryID(const char* oldID);
U_CFUNC const char*
uloc_getCurrentLanguageID(const char* oldID);
-U_CFUNC void
-ulocimp_getKeywords(const char *localeID,
- char prev,
- icu::ByteSink& sink,
- UBool valuesToo,
- UErrorCode *status);
-
-icu::CharString U_EXPORT2
-ulocimp_getLanguage(const char *localeID,
- const char **pEnd,
- UErrorCode &status);
-
-icu::CharString U_EXPORT2
-ulocimp_getScript(const char *localeID,
- const char **pEnd,
- UErrorCode &status);
-
-icu::CharString U_EXPORT2
-ulocimp_getCountry(const char *localeID,
- const char **pEnd,
- UErrorCode &status);
-
-U_CAPI void U_EXPORT2
+U_EXPORT icu::CharString
+ulocimp_getKeywords(const char* localeID,
+ char prev,
+ bool valuesToo,
+ UErrorCode& status);
+
+U_EXPORT void
+ulocimp_getKeywords(const char* localeID,
+ char prev,
+ icu::ByteSink& sink,
+ bool valuesToo,
+ UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getName(const char* localeID,
+ UErrorCode& err);
+
+U_EXPORT void
ulocimp_getName(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_getBaseName(const char* localeID,
+ UErrorCode& err);
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_getBaseName(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_canonicalize(const char* localeID,
+ UErrorCode& err);
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_canonicalize(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
-U_CAPI void U_EXPORT2
+U_EXPORT icu::CharString
+ulocimp_getKeywordValue(const char* localeID,
+ const char* keywordName,
+ UErrorCode& status);
+
+U_EXPORT void
ulocimp_getKeywordValue(const char* localeID,
const char* keywordName,
icu::ByteSink& sink,
- UErrorCode* status);
+ UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getLanguage(const char* localeID, UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getScript(const char* localeID, UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getRegion(const char* localeID, UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_getVariant(const char* localeID, UErrorCode& status);
+
+U_EXPORT void
+ulocimp_setKeywordValue(const char* keywordName,
+ const char* keywordValue,
+ icu::CharString& localeID,
+ UErrorCode& status);
-U_CAPI void U_EXPORT2
+U_EXPORT int32_t
+ulocimp_setKeywordValue(const char* keywords,
+ const char* keywordName,
+ const char* keywordValue,
+ icu::ByteSink& sink,
+ UErrorCode& status);
+
+U_EXPORT void
+ulocimp_getSubtags(
+ const char* localeID,
+ icu::CharString* language,
+ icu::CharString* script,
+ icu::CharString* region,
+ icu::CharString* variant,
+ const char** pEnd,
+ UErrorCode& status);
+
+U_EXPORT void
+ulocimp_getSubtags(
+ const char* localeID,
+ icu::ByteSink* language,
+ icu::ByteSink* script,
+ icu::ByteSink* region,
+ icu::ByteSink* variant,
+ const char** pEnd,
+ UErrorCode& status);
+
+inline void
+ulocimp_getSubtags(
+ const char* localeID,
+ std::nullptr_t,
+ std::nullptr_t,
+ std::nullptr_t,
+ std::nullptr_t,
+ const char** pEnd,
+ UErrorCode& status) {
+ ulocimp_getSubtags(
+ localeID,
+ static_cast<icu::ByteSink*>(nullptr),
+ static_cast<icu::ByteSink*>(nullptr),
+ static_cast<icu::ByteSink*>(nullptr),
+ static_cast<icu::ByteSink*>(nullptr),
+ pEnd,
+ status);
+}
+
+U_EXPORT icu::CharString
+ulocimp_getParent(const char* localeID,
+ UErrorCode& err);
+
+U_EXPORT void
ulocimp_getParent(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_toLanguageTag(const char* localeID,
+ bool strict,
+ UErrorCode& status);
/**
* Writes a well-formed language tag for this locale ID.
@@ -116,11 +201,17 @@ ulocimp_getParent(const char* localeID,
*
* @internal ICU 64
*/
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_toLanguageTag(const char* localeID,
icu::ByteSink& sink,
- UBool strict,
- UErrorCode* err);
+ bool strict,
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_forLanguageTag(const char* langtag,
+ int32_t tagLen,
+ int32_t* parsedLength,
+ UErrorCode& status);
/**
* Returns a locale ID for the specified BCP47 language tag string.
@@ -148,12 +239,12 @@ ulocimp_toLanguageTag(const char* localeID,
* failed.
* @internal ICU 63
*/
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_forLanguageTag(const char* langtag,
int32_t tagLen,
icu::ByteSink& sink,
int32_t* parsedLength,
- UErrorCode* err);
+ UErrorCode& err);
/**
* Get the region to use for supplemental data lookup. Uses
@@ -161,28 +252,27 @@ ulocimp_forLanguageTag(const char* langtag,
* (2) any unicode_region_tag in the locale ID; if none then
* (3) if inferRegion is true, the region suggested by
* getLikelySubtags on the localeID.
- * If no region is found, returns length 0.
- *
+ * If no region is found, returns an empty string.
+ *
* @param localeID
* The complete locale ID (with keywords) from which
* to get the region to use for supplemental data.
* @param inferRegion
* If true, will try to infer region from localeID if
* no other region is found.
- * @param region
- * Buffer in which to put the region ID found; should
- * have a capacity at least ULOC_COUNTRY_CAPACITY.
- * @param regionCapacity
- * The actual capacity of the region buffer.
* @param status
* Pointer to in/out UErrorCode value for latest status.
* @return
- * The length of any region code found, or 0 if none.
+ * The region code found, empty if none found.
* @internal ICU 57
*/
-U_CAPI int32_t U_EXPORT2
-ulocimp_getRegionForSupplementalData(const char *localeID, UBool inferRegion,
- char *region, int32_t regionCapacity, UErrorCode* status);
+U_EXPORT icu::CharString
+ulocimp_getRegionForSupplementalData(const char *localeID, bool inferRegion,
+ UErrorCode& status);
+
+U_EXPORT icu::CharString
+ulocimp_addLikelySubtags(const char* localeID,
+ UErrorCode& status);
/**
* Add the likely subtags for a provided locale ID, per the algorithm described
@@ -213,10 +303,15 @@ ulocimp_getRegionForSupplementalData(const char *localeID, UBool inferRegion,
* or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
* @internal ICU 64
*/
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_addLikelySubtags(const char* localeID,
icu::ByteSink& sink,
- UErrorCode* err);
+ UErrorCode& err);
+
+U_EXPORT icu::CharString
+ulocimp_minimizeSubtags(const char* localeID,
+ bool favorScript,
+ UErrorCode& status);
/**
* Minimize the subtags for a provided locale ID, per the algorithm described
@@ -248,70 +343,72 @@ ulocimp_addLikelySubtags(const char* localeID,
* or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
* @internal ICU 64
*/
-U_CAPI void U_EXPORT2
+U_EXPORT void
ulocimp_minimizeSubtags(const char* localeID,
icu::ByteSink& sink,
bool favorScript,
- UErrorCode* err);
+ UErrorCode& err);
U_CAPI const char * U_EXPORT2
locale_getKeywordsStart(const char *localeID);
-U_CFUNC UBool
+bool
ultag_isExtensionSubtags(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isLanguageSubtag(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isPrivateuseValueSubtags(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isRegionSubtag(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isScriptSubtag(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isTransformedExtensionSubtags(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeExtensionSubtags(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleAttribute(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleAttributes(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleKey(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isUnicodeLocaleType(const char* s, int32_t len);
-U_CFUNC UBool
+bool
ultag_isVariantSubtags(const char* s, int32_t len);
-U_CAPI const char * U_EXPORT2
-ultag_getTKeyStart(const char *localeID);
+const char*
+ultag_getTKeyStart(const char* localeID);
-U_CFUNC const char*
+U_EXPORT const char*
ulocimp_toBcpKey(const char* key);
-U_CFUNC const char*
+U_EXPORT const char*
ulocimp_toLegacyKey(const char* key);
-U_CFUNC const char*
-ulocimp_toBcpType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType);
+U_EXPORT const char*
+ulocimp_toBcpType(const char* key, const char* type, bool* isKnownKey, bool* isSpecialType);
-U_CFUNC const char*
-ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType);
+U_EXPORT const char*
+ulocimp_toLegacyType(const char* key, const char* type, bool* isKnownKey, bool* isSpecialType);
/* Function for testing purpose */
-U_CAPI const char* const* ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* length);
+U_EXPORT const char* const*
+ulocimp_getKnownCanonicalizedLocaleForTest(int32_t& length);
// Return true if the value is already canonicalized.
-U_CAPI bool ulocimp_isCanonicalizedLocaleForTest(const char* localeName);
+U_EXPORT bool
+ulocimp_isCanonicalizedLocaleForTest(const char* localeName);
#endif
diff --git a/libicu/cts_headers/uni2name.h b/libicu/cts_headers/uni2name.h
index 1e01d7842..44f8d94d7 100644
--- a/libicu/cts_headers/uni2name.h
+++ b/libicu/cts_headers/uni2name.h
@@ -33,7 +33,7 @@ class UnicodeNameTransliterator : public Transliterator {
* Constructs a transliterator.
* @param adoptedFilter the filter to be adopted.
*/
- UnicodeNameTransliterator(UnicodeFilter* adoptedFilter = 0);
+ UnicodeNameTransliterator(UnicodeFilter* adoptedFilter = nullptr);
/**
* Destructor.
diff --git a/libicu/cts_headers/unicode/brkiter.h b/libicu/cts_headers/unicode/brkiter.h
index 1b10e6ef1..bd9662928 100644
--- a/libicu/cts_headers/unicode/brkiter.h
+++ b/libicu/cts_headers/unicode/brkiter.h
@@ -146,14 +146,13 @@ public:
* will return distinct unequal values.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
/**
* Return a CharacterIterator over the text being analyzed.
* @stable ICU 2.0
*/
- virtual CharacterIterator& getText(void) const = 0;
-
+ virtual CharacterIterator& getText() const = 0;
/**
* Get a UText for the text being analyzed.
@@ -228,14 +227,14 @@ public:
* @return The offset of the beginning of the text, zero.
* @stable ICU 2.0
*/
- virtual int32_t first(void) = 0;
+ virtual int32_t first() = 0;
/**
* Set the iterator position to the index immediately BEYOND the last character in the text being scanned.
* @return The index immediately BEYOND the last character in the text being scanned.
* @stable ICU 2.0
*/
- virtual int32_t last(void) = 0;
+ virtual int32_t last() = 0;
/**
* Set the iterator position to the boundary preceding the current boundary.
@@ -243,7 +242,7 @@ public:
* boundaries have been returned.
* @stable ICU 2.0
*/
- virtual int32_t previous(void) = 0;
+ virtual int32_t previous() = 0;
/**
* Advance the iterator to the boundary following the current boundary.
@@ -251,14 +250,14 @@ public:
* boundaries have been returned.
* @stable ICU 2.0
*/
- virtual int32_t next(void) = 0;
+ virtual int32_t next() = 0;
/**
* Return character index of the current iterator position within the text.
* @return The boundary most recently returned.
* @stable ICU 2.0
*/
- virtual int32_t current(void) const = 0;
+ virtual int32_t current() const = 0;
/**
* Advance the iterator to the first boundary following the specified offset.
@@ -530,7 +529,7 @@ public:
* must be closed by an explicit call to the destructor (not delete).
* @deprecated ICU 52. Always delete the BreakIterator.
*/
- inline UBool isBufferClone(void);
+ inline UBool isBufferClone();
#endif /* U_HIDE_DEPRECATED_API */
@@ -575,7 +574,7 @@ public:
* @return a StringEnumeration over the locales available at the time of the call
* @stable ICU 2.4
*/
- static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
+ static StringEnumeration* U_EXPORT2 getAvailableLocales();
#endif
/**
diff --git a/libicu/cts_headers/unicode/calendar.h b/libicu/cts_headers/unicode/calendar.h
index 26781f8a0..fbe501c9d 100644
--- a/libicu/cts_headers/unicode/calendar.h
+++ b/libicu/cts_headers/unicode/calendar.h
@@ -413,7 +413,7 @@ public:
* @return The current UTC time in milliseconds.
* @stable ICU 2.0
*/
- static UDate U_EXPORT2 getNow(void);
+ static UDate U_EXPORT2 getNow();
/**
* Gets this Calendar's time as milliseconds. May involve recalculation of time due
@@ -850,7 +850,7 @@ public:
* @return The time zone object associated with this calendar.
* @stable ICU 2.0
*/
- const TimeZone& getTimeZone(void) const;
+ const TimeZone& getTimeZone() const;
/**
* Returns the time zone owned by this calendar. The caller owns the returned object
@@ -860,7 +860,7 @@ public:
* @return The time zone object which was associated with this calendar.
* @stable ICU 2.0
*/
- TimeZone* orphanTimeZone(void);
+ TimeZone* orphanTimeZone();
/**
* Queries if the current date for this Calendar is in Daylight Savings Time.
@@ -892,7 +892,7 @@ public:
* @return True tells that date/time interpretation is to be lenient.
* @stable ICU 2.0
*/
- UBool isLenient(void) const;
+ UBool isLenient() const;
/**
* Sets the behavior for handling wall time repeating multiple times
@@ -925,7 +925,7 @@ public:
* @see #setRepeatedWallTimeOption
* @stable ICU 49
*/
- UCalendarWallTimeOption getRepeatedWallTimeOption(void) const;
+ UCalendarWallTimeOption getRepeatedWallTimeOption() const;
/**
* Sets the behavior for handling skipped wall time at positive time zone offset
@@ -960,7 +960,7 @@ public:
* @see #setSkippedWallTimeOption
* @stable ICU 49
*/
- UCalendarWallTimeOption getSkippedWallTimeOption(void) const;
+ UCalendarWallTimeOption getSkippedWallTimeOption() const;
/**
* Sets what the first day of the week is; e.g., Sunday in US, Monday in France.
@@ -977,7 +977,7 @@ public:
* @return The first day of the week.
* @deprecated ICU 2.6 use the overload with error code
*/
- EDaysOfWeek getFirstDayOfWeek(void) const;
+ EDaysOfWeek getFirstDayOfWeek() const;
#endif /* U_HIDE_DEPRECATED_API */
/**
@@ -1009,7 +1009,7 @@ public:
* @return The minimal days required in the first week of the year.
* @stable ICU 2.0
*/
- uint8_t getMinimalDaysInFirstWeek(void) const;
+ uint8_t getMinimalDaysInFirstWeek() const;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -1232,7 +1232,7 @@ public:
* resolving of time into time fields.
* @stable ICU 2.0
*/
- void clear(void);
+ void clear();
/**
* Clears the value in the given time field, both making it unset and assigning it a
@@ -1260,7 +1260,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
/**
* Returns the calendar type name string for this Calendar object.
@@ -1348,9 +1348,8 @@ public:
* this calendar system, false otherwise.
* @stable ICU 4.4
*/
- virtual UBool isWeekend(void) const;
+ virtual UBool isWeekend() const;
-#ifndef U_FORCE_HIDE_DRAFT_API
/**
* Returns true if the date is in a leap year. Recalculate the current time
* field values if the time value has been changed by a call to * setTime().
@@ -1363,7 +1362,7 @@ public:
* @param status ICU Error Code
* @return True if the date in the fields is in a Temporal proposal
* defined leap year. False otherwise.
- * @draft ICU 73
+ * @stable ICU 73
*/
virtual bool inTemporalLeapYear(UErrorCode& status) const;
@@ -1383,7 +1382,7 @@ public:
*
* @param status ICU Error Code
* @return One of 25 possible strings in {"M01".."M13", "M01L".."M12L"}.
- * @draft ICU 73
+ * @stable ICU 73
*/
virtual const char* getTemporalMonthCode(UErrorCode& status) const;
@@ -1404,12 +1403,10 @@ public:
* @param temporalMonth The value to be set for temporal monthCode.
* @param status ICU Error Code
*
- * @draft ICU 73
+ * @stable ICU 73
*/
virtual void setTemporalMonthCode(const char* temporalMonth, UErrorCode& status);
-#endif // U_FORCE_HIDE_DRAFT_API
-
protected:
/**
@@ -1550,6 +1547,13 @@ protected:
* @internal
*/
inline int32_t internalGet(UCalendarDateFields field) const {return fFields[field];}
+
+ /**
+ * The year in this calendar is counting from 1 backward if the era is 0.
+ * @return The year in era 0 of this calendar is counting backward from 1.
+ * @internal
+ */
+ virtual bool isEra0CountingBackward() const { return false; }
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -1561,7 +1565,7 @@ protected:
* @return The value for the UCAL_MONTH.
* @internal
*/
- virtual int32_t internalGetMonth() const;
+ virtual int32_t internalGetMonth(UErrorCode& status) const;
/**
* Use this function instead of internalGet(UCAL_MONTH, defaultValue). The implementation
@@ -1571,10 +1575,12 @@ protected:
*
* @param defaultValue a default value used if the UCAL_MONTH and
* UCAL_ORDINAL are both unset.
+ * @param status Output param set to failure code on function return
+ * when this function fails.
* @return The value for the UCAL_MONTH.
* @internal
*/
- virtual int32_t internalGetMonth(int32_t defaultValue) const;
+ virtual int32_t internalGetMonth(int32_t defaultValue, UErrorCode& status) const;
#ifndef U_HIDE_DEPRECATED_API
/**
@@ -1663,12 +1669,14 @@ protected:
* @param useMonth if false, compute the day before the first day of
* the given year, otherwise, compute the day before the first day of
* the given month
+ * @param status Output param set to failure code on function return
+ * when this function fails.
* @return the Julian day number of the day before the first
* day of the given month and year
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
- UBool useMonth) const = 0;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month,
+ UBool useMonth, UErrorCode& status) const = 0;
/**
* Return the number of days in the given month of the given extended
@@ -1677,7 +1685,7 @@ protected:
* implementation than the default implementation in Calendar.
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const ;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const ;
/**
* Return the number of days in the given extended year of this
@@ -1694,20 +1702,22 @@ protected:
* use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
* as UCAL_ERA) specific to the calendar system, depending on which set of
* fields is newer.
+ * @param status ICU Error Code
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() = 0;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) = 0;
/**
* Subclasses may override this. This method calls
* handleGetMonthLength() to obtain the calendar-specific month
* length.
* @param bestField which field to use to calculate the date
+ * @param status ICU Error Code
* @return julian day specified by calendar fields.
* @internal
*/
- virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField);
+ virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField, UErrorCode &status);
/**
* Subclasses must override this to convert from week fields
@@ -1717,7 +1727,7 @@ protected:
* @return the extended year, UCAL_EXTENDED_YEAR
* @internal
*/
- virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy);
+ virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy, UErrorCode& status);
/**
* Validate a single field of this calendar. Subclasses should
@@ -1731,10 +1741,11 @@ protected:
/**
* Compute the Julian day from fields. Will determine whether to use
* the JULIAN_DAY field directly, or other fields.
+ * @param status ICU Error Code
* @return the julian day
* @internal
*/
- int32_t computeJulianDay();
+ int32_t computeJulianDay(UErrorCode &status);
/**
* Compute the milliseconds in the day from the fields. This is a
@@ -1912,7 +1923,7 @@ protected:
* @return the current time without recomputing.
* @stable ICU 2.0
*/
- UDate internalGetTime(void) const { return fTime; }
+ UDate internalGetTime() const { return fTime; }
/**
* Set the current time without affecting flags or fields.
@@ -2022,9 +2033,11 @@ protected:
* Called by computeJulianDay. Returns the default month (0-based) for the year,
* taking year and era into account. Defaults to 0 for Gregorian, which doesn't care.
* @param eyear The extended year
+ * @param status Output param set to failure code on function return
+ * when this function fails.
* @internal
*/
- virtual int32_t getDefaultMonthInYear(int32_t eyear) ;
+ virtual int32_t getDefaultMonthInYear(int32_t eyear, UErrorCode& status);
/**
@@ -2155,7 +2168,7 @@ protected:
* returns the local DOW, valid range 0..6
* @internal
*/
- int32_t getLocalDOW();
+ int32_t getLocalDOW(UErrorCode& status);
#endif /* U_HIDE_INTERNAL_API */
private:
@@ -2340,7 +2353,7 @@ private:
* @return Day number from 1..7 (SUN..SAT).
* @internal
*/
- static uint8_t julianDayToDayOfWeek(double julian);
+ static uint8_t julianDayToDayOfWeek(int32_t julian);
#endif /* U_HIDE_INTERNAL_API */
private:
@@ -2360,7 +2373,7 @@ private:
* @return a StringEnumeration over the locales available at the time of the call
* @internal
*/
- static StringEnumeration* getAvailableLocales(void);
+ static StringEnumeration* getAvailableLocales();
/**
* Register a new Calendar factory. The factory will be adopted.
@@ -2551,6 +2564,16 @@ Calendar::internalSet(UCalendarDateFields field, int32_t value)
fIsSet[field] = true; // Remove later
}
+/**
+ * Macro for the class to declare it override
+ * haveDefaultCentury, defaultCenturyStart, and
+ * defaultCenturyStartYear functions in this class.
+ * @internal
+ */
+#define DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY \
+ virtual UBool haveDefaultCentury() const override; \
+ virtual UDate defaultCenturyStart() const override; \
+ virtual int32_t defaultCenturyStartYear() const override;
#ifndef U_HIDE_INTERNAL_API
inline int32_t Calendar::weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek)
diff --git a/libicu/cts_headers/unicode/caniter.h b/libicu/cts_headers/unicode/caniter.h
index 035bd0e64..b904ef2ff 100644
--- a/libicu/cts_headers/unicode/caniter.h
+++ b/libicu/cts_headers/unicode/caniter.h
@@ -128,9 +128,10 @@ public:
* @param skipZeros determine if skip zeros
* @param result the results in a set.
* @param status Fill-in parameter which receives the status of this operation.
+ * @param depth depth of the call.
* @internal
*/
- static void U_EXPORT2 permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status);
+ static void U_EXPORT2 permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status, int32_t depth=0);
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -182,8 +183,8 @@ private:
// transient fields
UnicodeString buffer;
- const Normalizer2 &nfd;
- const Normalizer2Impl &nfcImpl;
+ const Normalizer2 *nfd;
+ const Normalizer2Impl *nfcImpl;
// we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
UnicodeString *getEquivalents(const UnicodeString &segment, int32_t &result_len, UErrorCode &status); //private String[] getEquivalents(String segment)
diff --git a/libicu/cts_headers/unicode/chariter.h b/libicu/cts_headers/unicode/chariter.h
index 45f4d984c..411825677 100644
--- a/libicu/cts_headers/unicode/chariter.h
+++ b/libicu/cts_headers/unicode/chariter.h
@@ -133,8 +133,8 @@ public:
* @return the hash code.
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const = 0;
-
+ virtual int32_t hashCode() const = 0;
+
/**
* Returns a UClassID for this ForwardCharacterIterator ("poor man's
* RTTI").<P> Despite the fact that this function is public,
@@ -142,8 +142,8 @@ public:
* @return a UClassID for this ForwardCharacterIterator
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
-
+ virtual UClassID getDynamicClassID() const override = 0;
+
/**
* Gets the current code unit for returning and advances to the next code unit
* in the iteration range
@@ -152,8 +152,8 @@ public:
* @return the current code unit.
* @stable ICU 2.0
*/
- virtual char16_t nextPostInc(void) = 0;
-
+ virtual char16_t nextPostInc() = 0;
+
/**
* Gets the current code point for returning and advances to the next code point
* in the iteration range
@@ -162,8 +162,8 @@ public:
* @return the current code point.
* @stable ICU 2.0
*/
- virtual UChar32 next32PostInc(void) = 0;
-
+ virtual UChar32 next32PostInc() = 0;
+
/**
* Returns false if there are no more code units or code points
* at or after the current position in the iteration range.
@@ -389,7 +389,7 @@ public:
* @return the first code unit in its iteration range.
* @stable ICU 2.0
*/
- virtual char16_t first(void) = 0;
+ virtual char16_t first() = 0;
/**
* Sets the iterator to refer to the first code unit in its
@@ -399,7 +399,7 @@ public:
* @return the first code unit in its iteration range.
* @stable ICU 2.0
*/
- virtual char16_t firstPostInc(void);
+ virtual char16_t firstPostInc();
/**
* Sets the iterator to refer to the first code point in its
@@ -410,7 +410,7 @@ public:
* @return the first code point in its iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 first32(void) = 0;
+ virtual UChar32 first32() = 0;
/**
* Sets the iterator to refer to the first code point in its
@@ -420,7 +420,7 @@ public:
* @return the first code point in its iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 first32PostInc(void);
+ virtual UChar32 first32PostInc();
/**
* Sets the iterator to refer to the first code unit or code point in its
@@ -438,8 +438,8 @@ public:
* @return the last code unit.
* @stable ICU 2.0
*/
- virtual char16_t last(void) = 0;
-
+ virtual char16_t last() = 0;
+
/**
* Sets the iterator to refer to the last code point in its
* iteration range, and returns that code unit.
@@ -447,7 +447,7 @@ public:
* @return the last code point.
* @stable ICU 2.0
*/
- virtual UChar32 last32(void) = 0;
+ virtual UChar32 last32() = 0;
/**
* Sets the iterator to the end of its iteration range, just behind
@@ -486,15 +486,15 @@ public:
* @return the current code unit.
* @stable ICU 2.0
*/
- virtual char16_t current(void) const = 0;
-
+ virtual char16_t current() const = 0;
+
/**
* Returns the code point the iterator currently refers to.
* @return the current code point.
* @stable ICU 2.0
*/
- virtual UChar32 current32(void) const = 0;
-
+ virtual UChar32 current32() const = 0;
+
/**
* Advances to the next code unit in the iteration range
* (toward endIndex()), and returns that code unit. If there are
@@ -502,8 +502,8 @@ public:
* @return the next code unit.
* @stable ICU 2.0
*/
- virtual char16_t next(void) = 0;
-
+ virtual char16_t next() = 0;
+
/**
* Advances to the next code point in the iteration range
* (toward endIndex()), and returns that code point. If there are
@@ -514,8 +514,8 @@ public:
* @return the next code point.
* @stable ICU 2.0
*/
- virtual UChar32 next32(void) = 0;
-
+ virtual UChar32 next32() = 0;
+
/**
* Advances to the previous code unit in the iteration range
* (toward startIndex()), and returns that code unit. If there are
@@ -523,7 +523,7 @@ public:
* @return the previous code unit.
* @stable ICU 2.0
*/
- virtual char16_t previous(void) = 0;
+ virtual char16_t previous() = 0;
/**
* Advances to the previous code point in the iteration range
@@ -532,7 +532,7 @@ public:
* @return the previous code point.
* @stable ICU 2.0
*/
- virtual UChar32 previous32(void) = 0;
+ virtual UChar32 previous32() = 0;
/**
* Returns false if there are no more code units or code points
@@ -555,8 +555,8 @@ public:
* object of the character returned by first().
* @stable ICU 2.0
*/
- inline int32_t startIndex(void) const;
-
+ inline int32_t startIndex() const;
+
/**
* Returns the numeric index in the underlying text-storage
* object of the position immediately BEYOND the character
@@ -566,8 +566,8 @@ public:
* returned by last().
* @stable ICU 2.0
*/
- inline int32_t endIndex(void) const;
-
+ inline int32_t endIndex() const;
+
/**
* Returns the numeric index in the underlying text-storage
* object of the character the iterator currently refers to
@@ -576,7 +576,7 @@ public:
* the character the iterator currently refers to
* @stable ICU 2.0
*/
- inline int32_t getIndex(void) const;
+ inline int32_t getIndex() const;
/**
* Returns the length of the entire text in the underlying
@@ -708,22 +708,22 @@ CharacterIterator::setToEnd() {
}
inline int32_t
-CharacterIterator::startIndex(void) const {
+CharacterIterator::startIndex() const {
return begin;
}
inline int32_t
-CharacterIterator::endIndex(void) const {
+CharacterIterator::endIndex() const {
return end;
}
inline int32_t
-CharacterIterator::getIndex(void) const {
+CharacterIterator::getIndex() const {
return pos;
}
inline int32_t
-CharacterIterator::getLength(void) const {
+CharacterIterator::getLength() const {
return textLength;
}
diff --git a/libicu/cts_headers/unicode/choicfmt.h b/libicu/cts_headers/unicode/choicfmt.h
index 429fa0ceb..2b6fb626a 100644
--- a/libicu/cts_headers/unicode/choicfmt.h
+++ b/libicu/cts_headers/unicode/choicfmt.h
@@ -454,7 +454,7 @@ public:
* other classes have different class IDs.
* @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Returns the class ID for this class. This is useful only for
@@ -467,7 +467,7 @@ public:
* @return The class ID for all objects of this class.
* @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
private:
/**
diff --git a/libicu/cts_headers/unicode/coleitr.h b/libicu/cts_headers/unicode/coleitr.h
index bd0c569f3..1b7fec0d1 100644
--- a/libicu/cts_headers/unicode/coleitr.h
+++ b/libicu/cts_headers/unicode/coleitr.h
@@ -171,7 +171,7 @@ public:
* Resets the cursor to the beginning of the string.
* @stable ICU 2.0
*/
- void reset(void);
+ void reset();
/**
* Gets the ordering priority of the next character in the string.
@@ -263,7 +263,7 @@ public:
* @return the offset of the character.
* @stable ICU 2.0
*/
- int32_t getOffset(void) const;
+ int32_t getOffset() const;
/**
* Sets the offset of the currently processed character in the source string.
diff --git a/libicu/cts_headers/unicode/coll.h b/libicu/cts_headers/unicode/coll.h
index fc5af9534..4845e8f02 100644
--- a/libicu/cts_headers/unicode/coll.h
+++ b/libicu/cts_headers/unicode/coll.h
@@ -535,7 +535,7 @@ public:
* Generates the hash code for the collation object
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const = 0;
+ virtual int32_t hashCode() const = 0;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -599,7 +599,7 @@ public:
* @see Collator#setStrength
* @deprecated ICU 2.6 Use getAttribute(UCOL_STRENGTH...) instead
*/
- virtual ECollationStrength getStrength(void) const;
+ virtual ECollationStrength getStrength() const;
/**
* Sets the minimum strength to be used in comparison or transformation.
@@ -730,7 +730,7 @@ public:
* @return a StringEnumeration over the locales available at the time of the call
* @stable ICU 2.6
*/
- static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
+ static StringEnumeration* U_EXPORT2 getAvailableLocales();
/**
* Create a string enumerator of all possible keywords that are relevant to
@@ -864,7 +864,7 @@ public:
* IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
/**
* Universal attribute setter
@@ -1245,7 +1245,7 @@ public:
* @return true if the factory is visible.
* @stable ICU 2.6
*/
- virtual UBool visible(void) const;
+ virtual UBool visible() const;
/**
* Return a collator for the provided locale. If the locale
diff --git a/libicu/cts_headers/unicode/datefmt.h b/libicu/cts_headers/unicode/datefmt.h
index 27240a4e1..9b05ea457 100644
--- a/libicu/cts_headers/unicode/datefmt.h
+++ b/libicu/cts_headers/unicode/datefmt.h
@@ -532,7 +532,7 @@ public:
* @return A date/time formatter which the caller owns.
* @stable ICU 2.0
*/
- static DateFormat* U_EXPORT2 createInstance(void);
+ static DateFormat* U_EXPORT2 createInstance();
/**
* Creates a time formatter with the given formatting style for the given
@@ -673,7 +673,7 @@ public:
* numeric processing is lenient.
* @stable ICU 2.0
*/
- virtual UBool isLenient(void) const;
+ virtual UBool isLenient() const;
/**
* Specifies whether date/time parsing is to be lenient. With
@@ -702,8 +702,7 @@ public:
* Returns whether date/time parsing in the encapsulated Calendar object processing is lenient.
* @stable ICU 53
*/
- virtual UBool isCalendarLenient(void) const;
-
+ virtual UBool isCalendarLenient() const;
/**
* Specifies whether encapsulated Calendar date/time parsing is to be lenient. With
@@ -725,7 +724,7 @@ public:
* @return the calendar associated with this date/time formatter.
* @stable ICU 2.0
*/
- virtual const Calendar* getCalendar(void) const;
+ virtual const Calendar* getCalendar() const;
/**
* Set the calendar to be used by this date format. Initially, the default
@@ -754,7 +753,7 @@ public:
* @return the number formatter which this date/time formatter uses.
* @stable ICU 2.0
*/
- virtual const NumberFormat* getNumberFormat(void) const;
+ virtual const NumberFormat* getNumberFormat() const;
/**
* Allows you to set the number formatter. The caller should
@@ -776,7 +775,7 @@ public:
* @return the time zone associated with the calendar of DateFormat.
* @stable ICU 2.0
*/
- virtual const TimeZone& getTimeZone(void) const;
+ virtual const TimeZone& getTimeZone() const;
/**
* Sets the time zone for the calendar of this DateFormat object. The caller
diff --git a/libicu/cts_headers/unicode/dcfmtsym.h b/libicu/cts_headers/unicode/dcfmtsym.h
index 6b79c9900..52f226843 100644
--- a/libicu/cts_headers/unicode/dcfmtsym.h
+++ b/libicu/cts_headers/unicode/dcfmtsym.h
@@ -455,13 +455,13 @@ public:
* Returns that pattern stored in currency info. Internal API for use by NumberFormat API.
* @internal
*/
- inline const char16_t* getCurrencyPattern(void) const;
+ inline const char16_t* getCurrencyPattern() const;
/**
* Returns the numbering system with which this DecimalFormatSymbols was initialized.
* @internal
*/
- inline const char* getNumberingSystemName(void) const;
+ inline const char* getNumberingSystemName() const;
#endif /* U_HIDE_INTERNAL_API */
private:
diff --git a/libicu/cts_headers/unicode/decimfmt.h b/libicu/cts_headers/unicode/decimfmt.h
index f72ba6872..1c55e3677 100644
--- a/libicu/cts_headers/unicode/decimfmt.h
+++ b/libicu/cts_headers/unicode/decimfmt.h
@@ -60,11 +60,9 @@ class UFormattedNumberData;
}
}
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
class NumberParserImpl;
}
-}
/**
* **IMPORTANT:** New users are strongly encouraged to see if
@@ -1163,7 +1161,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see DecimalFormatSymbols
* @stable ICU 2.0
*/
- virtual const DecimalFormatSymbols* getDecimalFormatSymbols(void) const;
+ virtual const DecimalFormatSymbols* getDecimalFormatSymbols() const;
/**
* Sets the decimal format symbols, which is generally not changed
@@ -1188,7 +1186,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return desired CurrencyPluralInfo
* @stable ICU 4.2
*/
- virtual const CurrencyPluralInfo* getCurrencyPluralInfo(void) const;
+ virtual const CurrencyPluralInfo* getCurrencyPluralInfo() const;
/**
* Sets the currency plural format information,
@@ -1315,7 +1313,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Examples: with 100, 1.23 -> "123", and "123" -> 1.23
* @stable ICU 2.0
*/
- int32_t getMultiplier(void) const;
+ int32_t getMultiplier() const;
/**
* Set the multiplier for use in percent, permill, etc.
@@ -1344,7 +1342,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return the current value of the power-of-ten multiplier.
* @stable ICU 62
*/
- int32_t getMultiplierScale(void) const;
+ int32_t getMultiplierScale() const;
/**
* Sets a power of ten by which number should be multiplied before formatting, which
@@ -1376,7 +1374,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setRoundingMode
* @stable ICU 2.0
*/
- virtual double getRoundingIncrement(void) const;
+ virtual double getRoundingIncrement() const;
/**
* Set the rounding increment. In the absence of a rounding increment,
@@ -1399,7 +1397,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setRoundingMode
* @stable ICU 2.0
*/
- virtual ERoundingMode getRoundingMode(void) const override;
+ virtual ERoundingMode getRoundingMode() const override;
/**
* Set the rounding mode.
@@ -1422,7 +1420,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setPadPosition
* @stable ICU 2.0
*/
- virtual int32_t getFormatWidth(void) const;
+ virtual int32_t getFormatWidth() const;
/**
* Set the width to which the output of format() is padded.
@@ -1485,7 +1483,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #EPadPosition
* @stable ICU 2.0
*/
- virtual EPadPosition getPadPosition(void) const;
+ virtual EPadPosition getPadPosition() const;
/**
* Set the position at which padding will take place. This is the location
@@ -1515,7 +1513,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setExponentSignAlwaysShown
* @stable ICU 2.0
*/
- virtual UBool isScientificNotation(void) const;
+ virtual UBool isScientificNotation() const;
/**
* Set whether or not scientific notation is used. When scientific notation
@@ -1544,7 +1542,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setExponentSignAlwaysShown
* @stable ICU 2.0
*/
- virtual int8_t getMinimumExponentDigits(void) const;
+ virtual int8_t getMinimumExponentDigits() const;
/**
* Set the minimum exponent digits that will be shown. This has no
@@ -1572,7 +1570,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setExponentSignAlwaysShown
* @stable ICU 2.0
*/
- virtual UBool isExponentSignAlwaysShown(void) const;
+ virtual UBool isExponentSignAlwaysShown() const;
/**
* Set whether the exponent sign is always shown. This has no effect
@@ -1600,7 +1598,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see DecimalFormatSymbols::getGroupingSeparator
* @stable ICU 2.0
*/
- int32_t getGroupingSize(void) const;
+ int32_t getGroupingSize() const;
/**
* Set the grouping size. Grouping size is the number of digits between
@@ -1633,7 +1631,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see DecimalFormatSymbols::getGroupingSeparator
* @stable ICU 2.4
*/
- int32_t getSecondaryGroupingSize(void) const;
+ int32_t getSecondaryGroupingSize() const;
/**
* Set the secondary grouping size. If set to a value less than 1,
@@ -1700,7 +1698,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
* @stable ICU 2.0
*/
- UBool isDecimalSeparatorAlwaysShown(void) const;
+ UBool isDecimalSeparatorAlwaysShown() const;
/**
* Allows you to set the behavior of the decimal separator with integers.
@@ -1718,7 +1716,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return true if input must contain a match to decimal mark in pattern
* @stable ICU 54
*/
- UBool isDecimalPatternMatchRequired(void) const;
+ UBool isDecimalPatternMatchRequired() const;
/**
* Allows you to set the parse behavior of the pattern decimal mark.
@@ -2124,7 +2122,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override.
@@ -2137,7 +2135,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* other classes have different class IDs.
* @stable ICU 2.0
*/
- UClassID getDynamicClassID(void) const override;
+ UClassID getDynamicClassID() const override;
private:
diff --git a/libicu/cts_headers/unicode/docmain.h b/libicu/cts_headers/unicode/docmain.h
index 581b2e186..fa4dbbc05 100644
--- a/libicu/cts_headers/unicode/docmain.h
+++ b/libicu/cts_headers/unicode/docmain.h
@@ -143,6 +143,11 @@
* <td>icu::MessageFormat</td>
* </tr>
* <tr>
+ * <td>Message Formatting 2<br/>(technology preview)</td>
+ * <td>(no C API)</td>
+ * <td>icu::message2::MessageFormatter</td>
+ * </tr>
+ * <tr>
* <td>List Formatting</td>
* <td>ulistformatter.h</td>
* <td>icu::ListFormatter</td>
diff --git a/libicu/cts_headers/unicode/dtfmtsym.h b/libicu/cts_headers/unicode/dtfmtsym.h
index 3cd54092e..df8da36d8 100644
--- a/libicu/cts_headers/unicode/dtfmtsym.h
+++ b/libicu/cts_headers/unicode/dtfmtsym.h
@@ -567,7 +567,7 @@ public:
* @return the non-localized date-time pattern characters
* @stable ICU 2.0
*/
- static const char16_t * U_EXPORT2 getPatternUChars(void);
+ static const char16_t* U_EXPORT2 getPatternUChars();
/**
* Gets localized date-time pattern characters. For example: 'u', 't', etc.
@@ -971,7 +971,7 @@ private:
/**
* Delete all the storage owned by this object.
*/
- void dispose(void);
+ void dispose();
/**
* Copy all of the other's data to this.
@@ -982,12 +982,12 @@ private:
/**
* Create zone strings array by locale if not yet available
*/
- void initZoneStringsArray(void);
+ void initZoneStringsArray();
/**
* Delete just the zone strings.
*/
- void disposeZoneStrings(void);
+ void disposeZoneStrings();
/**
* Returns the date format field index of the pattern character c,
diff --git a/libicu/cts_headers/unicode/dtintrv.h b/libicu/cts_headers/unicode/dtintrv.h
index 8c172eb7a..1fd0ba5de 100644
--- a/libicu/cts_headers/unicode/dtintrv.h
+++ b/libicu/cts_headers/unicode/dtintrv.h
@@ -76,7 +76,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 4.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -89,9 +89,8 @@ public:
* other classes have different class IDs.
* @stable ICU 4.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
-
/**
* Copy constructor.
* @stable ICU 4.0
diff --git a/libicu/cts_headers/unicode/dtitvfmt.h b/libicu/cts_headers/unicode/dtitvfmt.h
index b4dc8cabf..7bfdf2d8a 100644
--- a/libicu/cts_headers/unicode/dtitvfmt.h
+++ b/libicu/cts_headers/unicode/dtitvfmt.h
@@ -344,11 +344,6 @@ public:
* @param status output param set to success/failure code on exit
* @return a date time interval formatter which the caller owns.
* @stable ICU 4.0
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined1
- * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined
- * <p>
*/
static DateIntervalFormat* U_EXPORT2 createInstance(
@@ -410,11 +405,6 @@ public:
* @param status output param set to success/failure code on exit
* @return a date time interval formatter which the caller owns.
* @stable ICU 4.0
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined1
- * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtCustomized
- * <p>
*/
static DateIntervalFormat* U_EXPORT2 createInstance(
const UnicodeString& skeleton,
@@ -604,8 +594,7 @@ public:
* this date interval formatter.
* @stable ICU 4.0
*/
- const DateIntervalInfo* getDateIntervalInfo(void) const;
-
+ const DateIntervalInfo* getDateIntervalInfo() const;
/**
* Set the date time interval patterns.
@@ -628,14 +617,14 @@ public:
* @return the date formatter associated with this date interval formatter.
* @stable ICU 4.0
*/
- const DateFormat* getDateFormat(void) const;
+ const DateFormat* getDateFormat() const;
/**
* Returns a reference to the TimeZone used by this DateIntervalFormat's calendar.
* @return the time zone associated with the calendar of DateIntervalFormat.
* @stable ICU 4.8
*/
- virtual const TimeZone& getTimeZone(void) const;
+ virtual const TimeZone& getTimeZone() const;
/**
* Sets the time zone for the calendar used by this DateIntervalFormat object. The
@@ -689,7 +678,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 4.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -702,7 +691,7 @@ public:
* other classes have different class IDs.
* @stable ICU 4.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
protected:
diff --git a/libicu/cts_headers/unicode/dtptngen.h b/libicu/cts_headers/unicode/dtptngen.h
index 8c374a309..3d09178b2 100644
--- a/libicu/cts_headers/unicode/dtptngen.h
+++ b/libicu/cts_headers/unicode/dtptngen.h
@@ -211,11 +211,6 @@ public:
* @return conflicting status. The value could be UDATPG_NO_CONFLICT,
* UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
* @stable ICU 3.8
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
- * \snippet samples/dtptngsample/dtptngsample.cpp addPatternExample
- * <p>
*/
UDateTimePatternConflict addPattern(const UnicodeString& pattern,
UBool override,
@@ -388,11 +383,6 @@ public:
* @return bestPattern
* The best pattern found from the given skeleton.
* @stable ICU 3.8
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
- * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample
- * <p>
*/
UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status);
@@ -436,11 +426,6 @@ public:
* which must not indicate a failure before the function call.
* @return pattern adjusted to match the skeleton fields widths and subtypes.
* @stable ICU 3.8
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
- * \snippet samples/dtptngsample/dtptngsample.cpp replaceFieldTypesExample
- * <p>
*/
UnicodeString replaceFieldTypes(const UnicodeString& pattern,
const UnicodeString& skeleton,
@@ -571,7 +556,7 @@ public:
*
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
private:
/**
@@ -645,7 +630,7 @@ private:
UnicodeString& getMutableFieldDisplayName(UDateTimePatternField field, UDateTimePGDisplayWidth width);
void getAppendName(UDateTimePatternField field, UnicodeString& value);
UnicodeString mapSkeletonMetacharacters(const UnicodeString& patternForm, int32_t* flags, UErrorCode& status);
- const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields, UErrorCode& status, const PtnSkeleton** specifiedSkeletonPtr = 0);
+ const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields, UErrorCode& status, const PtnSkeleton** specifiedSkeletonPtr = nullptr);
UnicodeString adjustFieldTypes(const UnicodeString& pattern, const PtnSkeleton* specifiedSkeleton, int32_t flags, UDateTimePatternMatchOptions options = UDATPG_MATCH_NO_OPTIONS);
UnicodeString getBestAppending(int32_t missingFields, int32_t flags, UErrorCode& status, UDateTimePatternMatchOptions options = UDATPG_MATCH_NO_OPTIONS);
int32_t getTopBitNumber(int32_t foundMask) const;
diff --git a/libicu/cts_headers/unicode/dtrule.h b/libicu/cts_headers/unicode/dtrule.h
index 19e94bc98..6e10bfcb0 100644
--- a/libicu/cts_headers/unicode/dtrule.h
+++ b/libicu/cts_headers/unicode/dtrule.h
@@ -160,7 +160,7 @@ public:
* @return The date rule type.
* @stable ICU 3.8
*/
- DateRuleType getDateRuleType(void) const;
+ DateRuleType getDateRuleType() const;
/**
* Gets the time rule type
@@ -168,14 +168,14 @@ public:
* or <code>UTC_TIME</code>.
* @stable ICU 3.8
*/
- TimeRuleType getTimeRuleType(void) const;
+ TimeRuleType getTimeRuleType() const;
/**
* Gets the rule month.
* @return The rule month.
* @stable ICU 3.8
*/
- int32_t getRuleMonth(void) const;
+ int32_t getRuleMonth() const;
/**
* Gets the rule day of month. When the date rule type
@@ -183,7 +183,7 @@ public:
* @return The rule day of month
* @stable ICU 3.8
*/
- int32_t getRuleDayOfMonth(void) const;
+ int32_t getRuleDayOfMonth() const;
/**
* Gets the rule day of week. When the date rule type
@@ -191,7 +191,7 @@ public:
* @return The rule day of week.
* @stable ICU 3.8
*/
- int32_t getRuleDayOfWeek(void) const;
+ int32_t getRuleDayOfWeek() const;
/**
* Gets the ordinal number of the occurrence of the day of week
@@ -200,16 +200,16 @@ public:
* @return The rule day of week ordinal number in the month.
* @stable ICU 3.8
*/
- int32_t getRuleWeekInMonth(void) const;
+ int32_t getRuleWeekInMonth() const;
/**
* Gets the rule time in the rule day.
* @return The time in the rule day in milliseconds.
* @stable ICU 3.8
*/
- int32_t getRuleMillisInDay(void) const;
+ int32_t getRuleMillisInDay() const;
-private:
+ private:
int32_t fMonth;
int32_t fDayOfMonth;
int32_t fDayOfWeek;
@@ -230,7 +230,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -243,7 +243,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/unicode/fieldpos.h b/libicu/cts_headers/unicode/fieldpos.h
index 0c092a005..23c6a1884 100644
--- a/libicu/cts_headers/unicode/fieldpos.h
+++ b/libicu/cts_headers/unicode/fieldpos.h
@@ -192,14 +192,14 @@ public:
* @return the field identifier.
* @stable ICU 2.0
*/
- int32_t getField(void) const { return fField; }
+ int32_t getField() const { return fField; }
/**
* Retrieve the index of the first character in the requested field.
* @return the index of the first character in the requested field.
* @stable ICU 2.0
*/
- int32_t getBeginIndex(void) const { return fBeginIndex; }
+ int32_t getBeginIndex() const { return fBeginIndex; }
/**
* Retrieve the index of the character following the last character in the
@@ -208,8 +208,8 @@ public:
* requested field.
* @stable ICU 2.0
*/
- int32_t getEndIndex(void) const { return fEndIndex; }
-
+ int32_t getEndIndex() const { return fEndIndex; }
+
/**
* Set the field.
* @param f the new value of the field.
diff --git a/libicu/cts_headers/unicode/fmtable.h b/libicu/cts_headers/unicode/fmtable.h
index 6bda35760..d251d35ba 100644
--- a/libicu/cts_headers/unicode/fmtable.h
+++ b/libicu/cts_headers/unicode/fmtable.h
@@ -35,11 +35,10 @@
U_NAMESPACE_BEGIN
class CharString;
-namespace number {
-namespace impl {
+
+namespace number::impl {
class DecimalQuantity;
}
-}
/**
* Formattable objects can be passed to the Format class or
@@ -274,7 +273,7 @@ public:
* @return the data type of this Formattable object.
* @stable ICU 2.0
*/
- Type getType(void) const;
+ Type getType() const;
/**
* Returns true if the data type of this Formattable object
@@ -290,7 +289,7 @@ public:
* @return the double value of this object.
* @stable ICU 2.0
*/
- double getDouble(void) const { return fValue.fDouble; }
+ double getDouble() const { return fValue.fDouble; }
/**
* Gets the double value of this object. If this object is of type
@@ -312,7 +311,7 @@ public:
* @return the long value of this object.
* @stable ICU 2.0
*/
- int32_t getLong(void) const { return (int32_t)fValue.fInt64; }
+ int32_t getLong() const { return (int32_t)fValue.fInt64; }
/**
* Gets the long value of this object. If the magnitude is too
@@ -338,7 +337,7 @@ public:
* @return the int64 value of this object.
* @stable ICU 2.8
*/
- int64_t getInt64(void) const { return fValue.fInt64; }
+ int64_t getInt64() const { return fValue.fInt64; }
/**
* Gets the int64 value of this object. If this object is of a numeric
@@ -403,7 +402,7 @@ public:
* @return a const reference to the string value of this object.
* @stable ICU 2.0
*/
- inline const UnicodeString& getString(void) const;
+ inline const UnicodeString& getString() const;
/**
* Gets a const reference to the string value of this object. If
@@ -421,7 +420,7 @@ public:
* @return a reference to the string value of this object.
* @stable ICU 2.0
*/
- inline UnicodeString& getString(void);
+ inline UnicodeString& getString();
/**
* Gets a reference to the string value of this object. If the
@@ -680,7 +679,7 @@ private:
* Cleans up the memory for unwanted values. For example, the adopted
* string or array objects.
*/
- void dispose(void);
+ void dispose();
/**
* Common initialization, for use by constructors.
@@ -719,11 +718,11 @@ inline UDate Formattable::getDate(UErrorCode& status) const {
return fValue.fDate;
}
-inline const UnicodeString& Formattable::getString(void) const {
+inline const UnicodeString& Formattable::getString() const {
return *fValue.fString;
}
-inline UnicodeString& Formattable::getString(void) {
+inline UnicodeString& Formattable::getString() {
return *fValue.fString;
}
diff --git a/libicu/cts_headers/unicode/formattednumber.h b/libicu/cts_headers/unicode/formattednumber.h
index 83178ea40..6b212d7c8 100644
--- a/libicu/cts_headers/unicode/formattednumber.h
+++ b/libicu/cts_headers/unicode/formattednumber.h
@@ -25,6 +25,7 @@
U_NAMESPACE_BEGIN
class FieldPositionIteratorHandler;
+class SimpleDateFormat;
namespace number { // icu::number
@@ -190,6 +191,9 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
// To give C API access to internals
friend struct impl::UFormattedNumberImpl;
+
+ // To give access to the data pointer for non-heap allocation
+ friend class icu::SimpleDateFormat;
};
template<typename StringClass>
diff --git a/libicu/cts_headers/unicode/fpositer.h b/libicu/cts_headers/unicode/fpositer.h
index 0e38d0b78..cae0dafd2 100644
--- a/libicu/cts_headers/unicode/fpositer.h
+++ b/libicu/cts_headers/unicode/fpositer.h
@@ -67,7 +67,7 @@ public:
* Constructs a new, empty iterator.
* @stable ICU 4.4
*/
- FieldPositionIterator(void);
+ FieldPositionIterator();
/**
* Copy constructor. If the copy failed for some reason, the new iterator will
diff --git a/libicu/cts_headers/unicode/gregocal.h b/libicu/cts_headers/unicode/gregocal.h
index ab5a9c157..511254852 100644
--- a/libicu/cts_headers/unicode/gregocal.h
+++ b/libicu/cts_headers/unicode/gregocal.h
@@ -324,7 +324,7 @@ public:
* @return The Gregorian cutover time for this calendar.
* @stable ICU 2.0
*/
- UDate getGregorianChange(void) const;
+ UDate getGregorianChange() const;
/**
* Return true if the given year is a leap year. Determination of whether a year is
@@ -435,7 +435,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -448,7 +448,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns the calendar type name string for this Calendar object.
@@ -483,22 +483,24 @@ public:
* @param useMonth if false, compute the day before the first day of
* the given year, otherwise, compute the day before the first day of
* the given month
+ * @param status Fill-in parameter which receives the status of this operation.
* @return the Julian day number of the day before the first
* day of the given month and year
* @internal
*/
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
- UBool useMonth) const override;
+ virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month,
+ UBool useMonth, UErrorCode& status) const override;
/**
* Subclasses may override this. This method calls
* handleGetMonthLength() to obtain the calendar-specific month
* length.
* @param bestField which field to use to calculate the date
+ * @param status Fill-in parameter which receives the status of this operation.
* @return julian day specified by calendar fields.
* @internal
*/
- virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField) override;
+ virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField, UErrorCode& status) override;
/**
* Return the number of days in the given month of the given extended
@@ -507,7 +509,7 @@ public:
* implementation than the default implementation in Calendar.
* @internal
*/
- virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override;
/**
* Return the number of days in the given extended year of this
@@ -521,10 +523,11 @@ public:
/**
* return the length of the given month.
* @param month the given month.
+ * @param status Fill-in parameter which receives the status of this operation.
* @return the length of the given month.
* @internal
*/
- virtual int32_t monthLength(int32_t month) const;
+ virtual int32_t monthLength(int32_t month, UErrorCode& status) const;
/**
* return the length of the month according to the given year.
@@ -541,7 +544,7 @@ public:
* @return the length of the year field
* @internal
*/
- int32_t yearLength(void) const;
+ int32_t yearLength() const;
#endif /* U_HIDE_INTERNAL_API */
@@ -582,10 +585,11 @@ public:
* use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
* as UCAL_ERA) specific to the calendar system, depending on which set of
* fields is newer.
+ * @param status
* @return the extended year
* @internal
*/
- virtual int32_t handleGetExtendedYear() override;
+ virtual int32_t handleGetExtendedYear(UErrorCode& status) override;
/**
* Subclasses may override this to convert from week fields
@@ -595,7 +599,7 @@ public:
* @return the extended year, UCAL_EXTENDED_YEAR
* @internal
*/
- virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy) override;
+ virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy, UErrorCode& status) override;
/**
@@ -615,6 +619,15 @@ public:
*/
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
+#ifndef U_HIDE_INTERNAL_API
+ /**
+ * The year in this calendar is counting from 1 backward if the era is 0.
+ * @return The year in era 0 of this calendar is counting backward from 1.
+ * @internal
+ */
+ virtual bool isEra0CountingBackward() const override { return true; }
+#endif // U_HIDE_INTERNAL_API
+
private:
/**
* Compute the julian day number of the given year.
@@ -630,7 +643,7 @@ public:
* Validates the values of the set time fields. True if they're all valid.
* @return True if the set time fields are all valid.
*/
- UBool validateFields(void) const;
+ UBool validateFields() const;
/**
* Validates the value of the given time field. True if it's valid.
@@ -709,23 +722,8 @@ public:
public: // internal implementation
- /**
- * @return true if this calendar has the notion of a default century
- * @internal
- */
- virtual UBool haveDefaultCentury() const override;
-
- /**
- * @return the start of the default century
- * @internal
- */
- virtual UDate defaultCenturyStart() const override;
+ DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY
- /**
- * @return the beginning year of the default century
- * @internal
- */
- virtual int32_t defaultCenturyStartYear() const override;
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/unicode/localematcher.h b/libicu/cts_headers/unicode/localematcher.h
index 603daf723..e16f1a31c 100644
--- a/libicu/cts_headers/unicode/localematcher.h
+++ b/libicu/cts_headers/unicode/localematcher.h
@@ -11,6 +11,8 @@
#if U_SHOW_CPLUSPLUS_API
+#include <optional>
+
#include "unicode/locid.h"
#include "unicode/stringpiece.h"
#include "unicode/uobject.h"
@@ -133,10 +135,10 @@ U_NAMESPACE_BEGIN
struct LSR;
+class LikelySubtags;
class LocaleDistance;
class LocaleLsrIterator;
class UVector;
-class XLikelySubtags;
/**
* Immutable class that picks the best match between a user's desired locales and
@@ -678,9 +680,9 @@ private:
int32_t putIfAbsent(const LSR &lsr, int32_t i, int32_t suppLength, UErrorCode &errorCode);
- int32_t getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remainingIter, UErrorCode &errorCode) const;
+ std::optional<int32_t> getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remainingIter, UErrorCode &errorCode) const;
- const XLikelySubtags &likelySubtags;
+ const LikelySubtags &likelySubtags;
const LocaleDistance &localeDistance;
int32_t thresholdDistance;
int32_t demotionPerDesiredLocale;
diff --git a/libicu/cts_headers/unicode/localpointer.h b/libicu/cts_headers/unicode/localpointer.h
index b8be3d794..9c891bf30 100644
--- a/libicu/cts_headers/unicode/localpointer.h
+++ b/libicu/cts_headers/unicode/localpointer.h
@@ -162,11 +162,11 @@ protected:
T *ptr;
private:
// No comparison operators with other LocalPointerBases.
- bool operator==(const LocalPointerBase<T> &other);
- bool operator!=(const LocalPointerBase<T> &other);
+ bool operator==(const LocalPointerBase<T> &other) = delete;
+ bool operator!=(const LocalPointerBase<T> &other) = delete;
// No ownership sharing: No copy constructor, no assignment operator.
- LocalPointerBase(const LocalPointerBase<T> &other);
- void operator=(const LocalPointerBase<T> &other);
+ LocalPointerBase(const LocalPointerBase<T> &other) = delete;
+ void operator=(const LocalPointerBase<T> &other) = delete;
};
/**
@@ -548,46 +548,60 @@ public:
* @stable ICU 4.4
*/
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction) \
- class LocalPointerClassName : public LocalPointerBase<Type> { \
- public: \
- using LocalPointerBase<Type>::operator*; \
- using LocalPointerBase<Type>::operator->; \
- explicit LocalPointerClassName(Type *p=nullptr) : LocalPointerBase<Type>(p) {} \
- LocalPointerClassName(LocalPointerClassName &&src) noexcept \
- : LocalPointerBase<Type>(src.ptr) { \
- src.ptr=nullptr; \
- } \
- /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */ \
- explicit LocalPointerClassName(std::unique_ptr<Type, decltype(&closeFunction)> &&p) \
- : LocalPointerBase<Type>(p.release()) {} \
- ~LocalPointerClassName() { if (ptr != nullptr) { closeFunction(ptr); } } \
- LocalPointerClassName &operator=(LocalPointerClassName &&src) noexcept { \
- if (ptr != nullptr) { closeFunction(ptr); } \
- LocalPointerBase<Type>::ptr=src.ptr; \
- src.ptr=nullptr; \
- return *this; \
- } \
- /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */ \
- LocalPointerClassName &operator=(std::unique_ptr<Type, decltype(&closeFunction)> &&p) { \
- adoptInstead(p.release()); \
- return *this; \
- } \
- void swap(LocalPointerClassName &other) noexcept { \
- Type *temp=LocalPointerBase<Type>::ptr; \
- LocalPointerBase<Type>::ptr=other.ptr; \
- other.ptr=temp; \
- } \
- friend inline void swap(LocalPointerClassName &p1, LocalPointerClassName &p2) noexcept { \
- p1.swap(p2); \
- } \
- void adoptInstead(Type *p) { \
- if (ptr != nullptr) { closeFunction(ptr); } \
- ptr=p; \
- } \
- operator std::unique_ptr<Type, decltype(&closeFunction)> () && { \
- return std::unique_ptr<Type, decltype(&closeFunction)>(LocalPointerBase<Type>::orphan(), closeFunction); \
- } \
+ using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
+
+#ifndef U_IN_DOXYGEN
+namespace internal {
+/**
+ * Implementation, do not use directly: use U_DEFINE_LOCAL_OPEN_POINTER.
+ *
+ * @see U_DEFINE_LOCAL_OPEN_POINTER
+ * @internal
+ */
+template <typename Type, auto closeFunction>
+class LocalOpenPointer : public LocalPointerBase<Type> {
+ using LocalPointerBase<Type>::ptr;
+public:
+ using LocalPointerBase<Type>::operator*;
+ using LocalPointerBase<Type>::operator->;
+ explicit LocalOpenPointer(Type *p=nullptr) : LocalPointerBase<Type>(p) {}
+ LocalOpenPointer(LocalOpenPointer &&src) noexcept
+ : LocalPointerBase<Type>(src.ptr) {
+ src.ptr=nullptr;
+ }
+ /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */
+ explicit LocalOpenPointer(std::unique_ptr<Type, decltype(closeFunction)> &&p)
+ : LocalPointerBase<Type>(p.release()) {}
+ ~LocalOpenPointer() { if (ptr != nullptr) { closeFunction(ptr); } }
+ LocalOpenPointer &operator=(LocalOpenPointer &&src) noexcept {
+ if (ptr != nullptr) { closeFunction(ptr); }
+ LocalPointerBase<Type>::ptr=src.ptr;
+ src.ptr=nullptr;
+ return *this;
+ }
+ /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */
+ LocalOpenPointer &operator=(std::unique_ptr<Type, decltype(closeFunction)> &&p) {
+ adoptInstead(p.release());
+ return *this;
+ }
+ void swap(LocalOpenPointer &other) noexcept {
+ Type *temp=LocalPointerBase<Type>::ptr;
+ LocalPointerBase<Type>::ptr=other.ptr;
+ other.ptr=temp;
+ }
+ friend inline void swap(LocalOpenPointer &p1, LocalOpenPointer &p2) noexcept {
+ p1.swap(p2);
}
+ void adoptInstead(Type *p) {
+ if (ptr != nullptr) { closeFunction(ptr); }
+ ptr=p;
+ }
+ operator std::unique_ptr<Type, decltype(closeFunction)> () && {
+ return std::unique_ptr<Type, decltype(closeFunction)>(LocalPointerBase<Type>::orphan(), closeFunction);
+ }
+};
+} // namespace internal
+#endif
U_NAMESPACE_END
diff --git a/libicu/cts_headers/unicode/locid.h b/libicu/cts_headers/unicode/locid.h
index f0bdc7ca5..60282d623 100644
--- a/libicu/cts_headers/unicode/locid.h
+++ b/libicu/cts_headers/unicode/locid.h
@@ -195,51 +195,50 @@ class UnicodeString;
class U_COMMON_API Locale : public UObject {
public:
/** Useful constant for the Root locale. @stable ICU 4.4 */
- static const Locale &U_EXPORT2 getRoot(void);
+ static const Locale& U_EXPORT2 getRoot();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getEnglish(void);
+ static const Locale& U_EXPORT2 getEnglish();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getFrench(void);
+ static const Locale& U_EXPORT2 getFrench();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getGerman(void);
+ static const Locale& U_EXPORT2 getGerman();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getItalian(void);
+ static const Locale& U_EXPORT2 getItalian();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getJapanese(void);
+ static const Locale& U_EXPORT2 getJapanese();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getKorean(void);
+ static const Locale& U_EXPORT2 getKorean();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getChinese(void);
+ static const Locale& U_EXPORT2 getChinese();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getSimplifiedChinese(void);
+ static const Locale& U_EXPORT2 getSimplifiedChinese();
/** Useful constant for this language. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getTraditionalChinese(void);
+ static const Locale& U_EXPORT2 getTraditionalChinese();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getFrance(void);
+ static const Locale& U_EXPORT2 getFrance();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getGermany(void);
+ static const Locale& U_EXPORT2 getGermany();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getItaly(void);
+ static const Locale& U_EXPORT2 getItaly();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getJapan(void);
+ static const Locale& U_EXPORT2 getJapan();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getKorea(void);
+ static const Locale& U_EXPORT2 getKorea();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getChina(void);
+ static const Locale& U_EXPORT2 getChina();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getPRC(void);
+ static const Locale& U_EXPORT2 getPRC();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getTaiwan(void);
+ static const Locale& U_EXPORT2 getTaiwan();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getUK(void);
+ static const Locale& U_EXPORT2 getUK();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getUS(void);
+ static const Locale& U_EXPORT2 getUS();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getCanada(void);
+ static const Locale& U_EXPORT2 getCanada();
/** Useful constant for this country/region. @stable ICU 2.0 */
- static const Locale &U_EXPORT2 getCanadaFrench(void);
-
+ static const Locale& U_EXPORT2 getCanadaFrench();
/**
* Construct a default locale object, a Locale for the default locale ID.
@@ -274,10 +273,10 @@ public:
* @see uloc_getDefault
* @stable ICU 2.0
*/
- Locale( const char * language,
- const char * country = 0,
- const char * variant = 0,
- const char * keywordsAndValues = 0);
+ Locale(const char* language,
+ const char* country = nullptr,
+ const char* variant = nullptr,
+ const char* keywordsAndValues = nullptr);
/**
* Initializes a Locale object from another Locale object.
@@ -370,7 +369,7 @@ public:
* @system
* @stable ICU 2.0
*/
- static const Locale& U_EXPORT2 getDefault(void);
+ static const Locale& U_EXPORT2 getDefault();
/**
* Sets the default. Normally set once at the beginning of a process,
@@ -518,20 +517,20 @@ public:
* If this Locale is already in the maximal form, or not valid, or there is
* no data available for maximization, the Locale will be unchanged.
*
- * For example, "und-Zzzz" cannot be maximized, since there is no
+ * For example, "sh" cannot be maximized, since there is no
* reasonable maximization.
*
* Examples:
*
+ * "und_Zzzz" maximizes to "en_Latn_US"
+ *
* "en" maximizes to "en_Latn_US"
*
- * "de" maximizes to "de_Latn_US"
+ * "de" maximizes to "de_Latn_DE"
*
* "sr" maximizes to "sr_Cyrl_RS"
*
- * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
- *
- * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
+ * "zh_Hani" maximizes to "zh_Hani_CN"
*
* @param status error information if maximizing this Locale failed.
* If this Locale is not well-formed, the error code is
@@ -792,7 +791,7 @@ public:
* there is no Windows LCID value that corresponds to this locale, returns 0.
* @stable ICU 2.0
*/
- uint32_t getLCID(void) const;
+ uint32_t getLCID() const;
/**
* Returns whether this locale's script is written right-to-left.
@@ -944,7 +943,7 @@ public:
* Generates a hash code for the locale.
* @stable ICU 2.0
*/
- int32_t hashCode(void) const;
+ int32_t hashCode() const;
/**
* Sets the locale to bogus
@@ -961,7 +960,7 @@ public:
* @return false if it is a real locale, true if it is a bogus locale
* @stable ICU 2.1
*/
- inline UBool isBogus(void) const;
+ inline UBool isBogus() const;
/**
* Returns a list of all installed locales.
@@ -1147,7 +1146,7 @@ private:
/**
* Initialize the locale cache for commonly used locales
*/
- static Locale *getLocaleCache(void);
+ static Locale* getLocaleCache();
char language[ULOC_LANG_CAPACITY];
char script[ULOC_SCRIPT_CAPACITY];
@@ -1184,6 +1183,7 @@ Locale::operator!=(const Locale& other) const
template<typename StringClass> inline StringClass
Locale::toLanguageTag(UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return {}; }
StringClass result;
StringByteSink<StringClass> sink(&result);
toLanguageTag(sink, status);
@@ -1211,7 +1211,7 @@ Locale::getScript() const
inline const char *
Locale::getVariant() const
{
- return &baseName[variantBegin];
+ return fIsBogus ? "" : &baseName[variantBegin];
}
inline const char *
@@ -1223,6 +1223,7 @@ Locale::getName() const
template<typename StringClass, typename OutputIterator> inline void
Locale::getKeywords(OutputIterator iterator, UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return; }
LocalPointer<StringEnumeration> keys(createKeywords(status));
if (U_FAILURE(status) || keys.isNull()) {
return;
@@ -1240,6 +1241,7 @@ Locale::getKeywords(OutputIterator iterator, UErrorCode& status) const
template<typename StringClass, typename OutputIterator> inline void
Locale::getUnicodeKeywords(OutputIterator iterator, UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return; }
LocalPointer<StringEnumeration> keys(createUnicodeKeywords(status));
if (U_FAILURE(status) || keys.isNull()) {
return;
@@ -1257,6 +1259,7 @@ Locale::getUnicodeKeywords(OutputIterator iterator, UErrorCode& status) const
template<typename StringClass> inline StringClass
Locale::getKeywordValue(StringPiece keywordName, UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return {}; }
StringClass result;
StringByteSink<StringClass> sink(&result);
getKeywordValue(keywordName, sink, status);
@@ -1266,6 +1269,7 @@ Locale::getKeywordValue(StringPiece keywordName, UErrorCode& status) const
template<typename StringClass> inline StringClass
Locale::getUnicodeKeywordValue(StringPiece keywordName, UErrorCode& status) const
{
+ if (U_FAILURE(status)) { return {}; }
StringClass result;
StringByteSink<StringClass> sink(&result);
getUnicodeKeywordValue(keywordName, sink, status);
@@ -1273,7 +1277,7 @@ Locale::getUnicodeKeywordValue(StringPiece keywordName, UErrorCode& status) cons
}
inline UBool
-Locale::isBogus(void) const {
+Locale::isBogus() const {
return fIsBogus;
}
diff --git a/libicu/cts_headers/unicode/measfmt.h b/libicu/cts_headers/unicode/measfmt.h
index 59bf546a9..c9894f0b5 100644
--- a/libicu/cts_headers/unicode/measfmt.h
+++ b/libicu/cts_headers/unicode/measfmt.h
@@ -273,7 +273,7 @@ class U_I18N_API MeasureFormat : public Format {
* @return The class ID for all objects of this class.
* @stable ICU 53
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -286,7 +286,7 @@ class U_I18N_API MeasureFormat : public Format {
* other classes have different class IDs.
* @stable ICU 53
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
protected:
/**
diff --git a/libicu/cts_headers/unicode/measunit.h b/libicu/cts_headers/unicode/measunit.h
index 8f3583578..9ce9b1a65 100644
--- a/libicu/cts_headers/unicode/measunit.h
+++ b/libicu/cts_headers/unicode/measunit.h
@@ -33,11 +33,9 @@ U_NAMESPACE_BEGIN
class StringEnumeration;
class MeasureUnitImpl;
-namespace number {
-namespace impl {
+namespace number::impl {
class LongNameHandler;
-}
-} // namespace number
+} // namespace number::impl
/**
* Enumeration for unit complexity. There are three levels:
@@ -107,13 +105,34 @@ typedef enum UMeasurePrefix {
*/
UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * SI prefix: ronna, 10^27.
+ *
+ * @draft ICU 75
+ */
+ UMEASURE_PREFIX_RONNA = UMEASURE_PREFIX_ONE + 27,
+
+ /**
+ * SI prefix: quetta, 10^30.
+ *
+ * @draft ICU 75
+ */
+ UMEASURE_PREFIX_QUETTA = UMEASURE_PREFIX_ONE + 30,
+#endif /* U_HIDE_DRAFT_API */
+
#ifndef U_HIDE_INTERNAL_API
/**
* ICU use only.
* Used to determine the set of base-10 SI prefixes.
* @internal
*/
+#ifndef U_HIDE_DRAFT_API
+ UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_QUETTA,
+#else /* U_HIDE_DRAFT_API */
UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA,
+#endif /* U_HIDE_DRAFT_API */
+
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -249,13 +268,34 @@ typedef enum UMeasurePrefix {
*/
UMEASURE_PREFIX_YOCTO = UMEASURE_PREFIX_ONE + -24,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * SI prefix: ronto, 10^-27.
+ *
+ * @draft ICU 75
+ */
+ UMEASURE_PREFIX_RONTO = UMEASURE_PREFIX_ONE + -27,
+
+ /**
+ * SI prefix: quecto, 10^-30.
+ *
+ * @draft ICU 75
+ */
+ UMEASURE_PREFIX_QUECTO = UMEASURE_PREFIX_ONE + -30,
+#endif /* U_HIDE_DRAFT_API */
+
#ifndef U_HIDE_INTERNAL_API
/**
* ICU use only.
* Used to determine the set of base-10 SI prefixes.
* @internal
*/
+#ifndef U_HIDE_DRAFT_API
+ UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_QUECTO,
+#else /* U_HIDE_DRAFT_API */
UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_YOCTO,
+#endif /* U_HIDE_DRAFT_API */
+
#endif // U_HIDE_INTERNAL_API
// Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
@@ -648,7 +688,7 @@ class U_I18N_API MeasureUnit: public UObject {
* @return The class ID for all objects of this class.
* @stable ICU 53
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -661,7 +701,7 @@ class U_I18N_API MeasureUnit: public UObject {
* other classes have different class IDs.
* @stable ICU 53
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
#ifndef U_HIDE_INTERNAL_API
/**
@@ -3026,23 +3066,21 @@ class U_I18N_API MeasureUnit: public UObject {
*/
static MeasureUnit getPoundPerSquareInch();
-#ifndef U_HIDE_DRAFT_API
/**
* Returns by pointer, unit of speed: beaufort.
* Caller owns returned value and must free it.
* Also see {@link #getBeaufort()}.
* @param status ICU error code.
- * @draft ICU 73
+ * @stable ICU 73
*/
static MeasureUnit *createBeaufort(UErrorCode &status);
/**
* Returns by value, unit of speed: beaufort.
* Also see {@link #createBeaufort()}.
- * @draft ICU 73
+ * @stable ICU 73
*/
static MeasureUnit getBeaufort();
-#endif /* U_HIDE_DRAFT_API */
/**
* Returns by pointer, unit of speed: kilometer-per-hour.
diff --git a/libicu/cts_headers/unicode/measure.h b/libicu/cts_headers/unicode/measure.h
index fbef17c8f..86d7b5121 100644
--- a/libicu/cts_headers/unicode/measure.h
+++ b/libicu/cts_headers/unicode/measure.h
@@ -124,7 +124,7 @@ class U_I18N_API Measure: public UObject {
* @return The class ID for all objects of this class.
* @stable ICU 53
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -137,7 +137,7 @@ class U_I18N_API Measure: public UObject {
* other classes have different class IDs.
* @stable ICU 53
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
protected:
/**
diff --git a/libicu/cts_headers/unicode/messageformat2.h b/libicu/cts_headers/unicode/messageformat2.h
new file mode 100644
index 000000000..d23ac8409
--- /dev/null
+++ b/libicu/cts_headers/unicode/messageformat2.h
@@ -0,0 +1,399 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT2_H
+#define MESSAGEFORMAT2_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+/**
+ * \file
+ * \brief C++ API: Formats messages using the draft MessageFormat 2.0.
+ */
+
+#include "unicode/messageformat2_arguments.h"
+#include "unicode/messageformat2_data_model.h"
+#include "unicode/messageformat2_function_registry.h"
+#include "unicode/unistr.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ class Environment;
+ class MessageContext;
+ class ResolvedSelector;
+ class StaticErrors;
+
+ /**
+ * <p>MessageFormatter is a Technical Preview API implementing MessageFormat 2.0.
+ *
+ * <p>See <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/syntax.md">the
+ * description of the syntax with examples and use cases</a> and the corresponding
+ * <a target="github" href="https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf">ABNF</a> grammar.</p>
+ *
+ * The MessageFormatter class is mutable and movable. It is not copyable.
+ * (It is mutable because if it has a custom function registry, the registry may include
+ * `FormatterFactory` objects implementing custom formatters, which are allowed to contain
+ * mutable state.)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API MessageFormatter : public UObject {
+ // Note: This class does not currently inherit from the existing
+ // `Format` class.
+ public:
+ /**
+ * Move assignment operator:
+ * The source MessageFormatter will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageFormatter& operator=(MessageFormatter&&) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~MessageFormatter();
+
+ /**
+ * Formats the message to a string, using the data model that was previously set or parsed,
+ * and the given `arguments` object.
+ *
+ * @param arguments Reference to message arguments
+ * @param status Input/output error code used to indicate syntax errors, data model
+ * errors, resolution errors, formatting errors, selection errors, as well
+ * as other errors (such as memory allocation failures). Partial output
+ * is still provided in the presence of most error types.
+ * @return The string result of formatting the message with the given arguments.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnicodeString formatToString(const MessageArguments& arguments, UErrorCode &status);
+
+ /**
+ * Not yet implemented; formats the message to a `FormattedMessage` object,
+ * using the data model that was previously set or parsed,
+ * and the given `arguments` object.
+ *
+ * @param arguments Reference to message arguments
+ * @param status Input/output error code used to indicate syntax errors, data model
+ * errors, resolution errors, formatting errors, selection errors, as well
+ * as other errors (such as memory allocation failures). Partial output
+ * is still provided in the presence of most error types.
+ * @return The `FormattedMessage` representing the formatted message.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedMessage format(const MessageArguments& arguments, UErrorCode &status) const {
+ (void) arguments;
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return FormattedMessage(status);
+ }
+
+ /**
+ * Accesses the locale that this `MessageFormatter` object was created with.
+ *
+ * @return A reference to the locale.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Locale& getLocale() const { return locale; }
+
+ /**
+ * Serializes the data model as a string in MessageFormat 2.0 syntax.
+ *
+ * @return result A string representation of the data model.
+ * The string is a valid MessageFormat 2.0 message.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnicodeString getPattern() const;
+
+ /**
+ * Accesses the data model referred to by this
+ * `MessageFormatter` object.
+ *
+ * @return A reference to the data model.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const MFDataModel& getDataModel() const;
+
+ /**
+ * The mutable Builder class allows each part of the MessageFormatter to be initialized
+ * separately; calling its `build()` method yields an immutable MessageFormatter.
+ *
+ * Not copyable or movable.
+ */
+ class U_I18N_API Builder : public UObject {
+ private:
+ friend class MessageFormatter;
+
+ // The pattern to be parsed to generate the formatted message
+ UnicodeString pattern;
+ bool hasPattern = false;
+ bool hasDataModel = false;
+ // The data model to be used to generate the formatted message
+ // Initialized either by `setDataModel()`, or by the parser
+ // through a call to `setPattern()`
+ MFDataModel dataModel;
+ // Normalized representation of the pattern;
+ // ignored if `setPattern()` wasn't called
+ UnicodeString normalizedInput;
+ // Errors (internal representation of parse errors)
+ // Ignored if `setPattern()` wasn't called
+ StaticErrors* errors;
+ Locale locale;
+ // Not owned
+ const MFFunctionRegistry* customMFFunctionRegistry;
+
+ public:
+ /**
+ * Sets the locale to use for formatting.
+ *
+ * @param locale The desired locale.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setLocale(const Locale& locale);
+ /**
+ * Sets the pattern (contents of the message) and parses it
+ * into a data model. If a data model was
+ * previously set, it is removed.
+ *
+ * @param pattern A string in MessageFormat 2.0 syntax.
+ * @param parseError Struct to receive information on the position
+ * of an error within the pattern.
+ * @param status Input/output error code. If the
+ * pattern cannot be parsed, set to failure code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setPattern(const UnicodeString& pattern, UParseError& parseError, UErrorCode& status);
+ /**
+ * Sets a custom function registry.
+ *
+ * @param functionRegistry Reference to the function registry to use.
+ * `functionRegistry` is not copied,
+ * and the caller must ensure its lifetime contains
+ * the lifetime of the `MessageFormatter` object built by this
+ * builder.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setFunctionRegistry(const MFFunctionRegistry& functionRegistry);
+ /**
+ * Sets a data model. If a pattern was previously set, it is removed.
+ *
+ * @param dataModel Data model to format. Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setDataModel(MFDataModel&& dataModel);
+ /**
+ * Constructs a new immutable MessageFormatter using the pattern or data model
+ * that was previously set, and the locale (if it was previously set)
+ * or default locale (otherwise).
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * @param status Input/output error code. If neither the pattern
+ * nor the data model is set, set to failure code.
+ * @return The new MessageFormatter object
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageFormatter build(UErrorCode& status) const;
+ /**
+ * Default constructor.
+ * Returns a Builder with the default locale and with no
+ * data model or pattern set. Either `setPattern()`
+ * or `setDataModel()` has to be called before calling `build()`.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ }; // class MessageFormatter::Builder
+
+ // TODO: Shouldn't be public; only used for testing
+ /**
+ * Returns a string consisting of the input with optional spaces removed.
+ *
+ * @return A normalized string representation of the input
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getNormalizedPattern() const { return normalizedInput; }
+
+ private:
+ friend class Builder;
+ friend class MessageContext;
+
+ MessageFormatter(const MessageFormatter::Builder& builder, UErrorCode &status);
+
+ MessageFormatter() = delete; // default constructor not implemented
+
+ // Do not define default assignment operator
+ const MessageFormatter &operator=(const MessageFormatter &) = delete;
+
+ ResolvedSelector resolveVariables(const Environment& env, const data_model::Operand&, MessageContext&, UErrorCode &) const;
+ ResolvedSelector resolveVariables(const Environment& env, const data_model::Expression&, MessageContext&, UErrorCode &) const;
+
+ // Selection methods
+
+ // Takes a vector of FormattedPlaceholders
+ void resolveSelectors(MessageContext&, const Environment& env, UErrorCode&, UVector&) const;
+ // Takes a vector of vectors of strings (input) and a vector of PrioritizedVariants (output)
+ void filterVariants(const UVector&, UVector&, UErrorCode&) const;
+ // Takes a vector of vectors of strings (input) and a vector of PrioritizedVariants (input/output)
+ void sortVariants(const UVector&, UVector&, UErrorCode&) const;
+ // Takes a vector of strings (input) and a vector of strings (output)
+ void matchSelectorKeys(const UVector&, MessageContext&, ResolvedSelector&& rv, UVector&, UErrorCode&) const;
+ // Takes a vector of FormattedPlaceholders (input),
+ // and a vector of vectors of strings (output)
+ void resolvePreferences(MessageContext&, UVector&, UVector&, UErrorCode&) const;
+
+ // Formatting methods
+ [[nodiscard]] FormattedPlaceholder formatLiteral(const data_model::Literal&) const;
+ void formatPattern(MessageContext&, const Environment&, const data_model::Pattern&, UErrorCode&, UnicodeString&) const;
+ // Formats a call to a formatting function
+ // Dispatches on argument type
+ [[nodiscard]] FormattedPlaceholder evalFormatterCall(FormattedPlaceholder&& argument,
+ MessageContext& context,
+ UErrorCode& status) const;
+ // Dispatches on function name
+ [[nodiscard]] FormattedPlaceholder evalFormatterCall(const FunctionName& functionName,
+ FormattedPlaceholder&& argument,
+ FunctionOptions&& options,
+ MessageContext& context,
+ UErrorCode& status) const;
+ // Formats an expression that appears as a selector
+ ResolvedSelector formatSelectorExpression(const Environment& env, const data_model::Expression&, MessageContext&, UErrorCode&) const;
+ // Formats an expression that appears in a pattern or as the definition of a local variable
+ [[nodiscard]] FormattedPlaceholder formatExpression(const Environment&, const data_model::Expression&, MessageContext&, UErrorCode&) const;
+ [[nodiscard]] FunctionOptions resolveOptions(const Environment& env, const OptionMap&, MessageContext&, UErrorCode&) const;
+ [[nodiscard]] FormattedPlaceholder formatOperand(const Environment&, const data_model::Operand&, MessageContext&, UErrorCode&) const;
+ [[nodiscard]] FormattedPlaceholder evalArgument(const data_model::VariableName&, MessageContext&, UErrorCode&) const;
+ void formatSelectors(MessageContext& context, const Environment& env, UErrorCode &status, UnicodeString& result) const;
+
+ // Function registry methods
+ bool hasCustomMFFunctionRegistry() const {
+ return (customMFFunctionRegistry != nullptr);
+ }
+
+ // Precondition: custom function registry exists
+ // Note: this is non-const because the values in the MFFunctionRegistry are mutable
+ // (a FormatterFactory can have mutable state)
+ const MFFunctionRegistry& getCustomMFFunctionRegistry() const;
+
+ bool isCustomFormatter(const FunctionName&) const;
+ FormatterFactory* lookupFormatterFactory(const FunctionName&, UErrorCode& status) const;
+ bool isBuiltInSelector(const FunctionName&) const;
+ bool isBuiltInFormatter(const FunctionName&) const;
+ bool isCustomSelector(const FunctionName&) const;
+ const SelectorFactory* lookupSelectorFactory(MessageContext&, const FunctionName&, UErrorCode&) const;
+ bool isSelector(const FunctionName& fn) const { return isBuiltInSelector(fn) || isCustomSelector(fn); }
+ bool isFormatter(const FunctionName& fn) const { return isBuiltInFormatter(fn) || isCustomFormatter(fn); }
+ const Formatter* lookupFormatter(const FunctionName&, UErrorCode&) const;
+
+ Selector* getSelector(MessageContext&, const FunctionName&, UErrorCode&) const;
+ Formatter* getFormatter(const FunctionName&, UErrorCode&) const;
+ bool getDefaultFormatterNameByType(const UnicodeString&, FunctionName&) const;
+
+ // Checking for resolution errors
+ void checkDeclarations(MessageContext&, Environment*&, UErrorCode&) const;
+ void check(MessageContext&, const Environment&, const data_model::Expression&, UErrorCode&) const;
+ void check(MessageContext&, const Environment&, const data_model::Operand&, UErrorCode&) const;
+ void check(MessageContext&, const Environment&, const OptionMap&, UErrorCode&) const;
+
+ void initErrors(UErrorCode&);
+ void clearErrors() const;
+ void cleanup() noexcept;
+
+ // The locale this MessageFormatter was created with
+ /* const */ Locale locale;
+
+ // Registry for built-in functions
+ MFFunctionRegistry standardMFFunctionRegistry;
+ // Registry for custom functions; may be null if no custom registry supplied
+ // Note: this is *not* owned by the MessageFormatter object
+ // The reason for this choice is to have a non-destructive MessageFormatter::Builder,
+ // while also not requiring the function registry to be deeply-copyable. Making the
+ // function registry copyable would impose a requirement on any implementations
+ // of the FormatterFactory and SelectorFactory interfaces to implement a custom
+ // clone() method, which is necessary to avoid sharing between copies of the
+ // function registry (and thus double-frees)
+ // Not deeply immutable (the values in the function registry are mutable,
+ // as a FormatterFactory can have mutable state
+ const MFFunctionRegistry* customMFFunctionRegistry;
+
+ // Data model, representing the parsed message
+ MFDataModel dataModel;
+
+ // Normalized version of the input string (optional whitespace removed)
+ UnicodeString normalizedInput;
+
+ // Errors -- only used while parsing and checking for data model errors; then
+ // the MessageContext keeps track of errors
+ // Must be a raw pointer to avoid including the internal header file
+ // defining StaticErrors
+ // Owned by `this`
+ StaticErrors* errors;
+
+ }; // class MessageFormatter
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_H
+
+// eof
diff --git a/libicu/cts_headers/unicode/messageformat2_arguments.h b/libicu/cts_headers/unicode/messageformat2_arguments.h
new file mode 100644
index 000000000..f79865a43
--- /dev/null
+++ b/libicu/cts_headers/unicode/messageformat2_arguments.h
@@ -0,0 +1,138 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT2_ARGUMENTS_H
+#define MESSAGEFORMAT2_ARGUMENTS_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+/**
+ * \file
+ * \brief C++ API: Formats messages using the draft MessageFormat 2.0.
+ */
+
+#include "unicode/messageformat2_data_model_names.h"
+#include "unicode/messageformat2_formattable.h"
+#include "unicode/unistr.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#include <map>
+
+U_NAMESPACE_BEGIN
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MessageFormatDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<UnicodeString>;
+template class U_I18N_API LocalPointerBase<message2::Formattable>;
+template class U_I18N_API LocalArray<UnicodeString>;
+template class U_I18N_API LocalArray<message2::Formattable>;
+#endif
+/// @endcond
+
+namespace message2 {
+
+ class MessageContext;
+
+ // Arguments
+ // ----------
+
+ /**
+ *
+ * The `MessageArguments` class represents the named arguments to a message.
+ * It is immutable and movable. It is not copyable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API MessageArguments : public UObject {
+ public:
+ /**
+ * Message arguments constructor, which takes a map and returns a container
+ * of arguments that can be passed to a `MessageFormatter`.
+ *
+ * @param args A reference to a map from strings (argument names) to `message2::Formattable`
+ * objects (argument values). The keys and values of the map are copied into the result.
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageArguments(const std::map<UnicodeString, Formattable>& args, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ argumentNames = LocalArray<UnicodeString>(new UnicodeString[argsLen = (int32_t) args.size()]);
+ arguments = LocalArray<Formattable>(new Formattable[argsLen]);
+ if (!argumentNames.isValid() || !arguments.isValid()) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ int32_t i = 0;
+ for (auto iter = args.begin(); iter != args.end(); ++iter) {
+ argumentNames[i] = iter->first;
+ arguments[i] = iter->second;
+ i++;
+ }
+ }
+ /**
+ * Move operator:
+ * The source MessageArguments will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageArguments& operator=(MessageArguments&&) noexcept;
+ /**
+ * Default constructor.
+ * Returns an empty arguments mapping.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MessageArguments() = default;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~MessageArguments();
+ private:
+ friend class MessageContext;
+
+ const Formattable* getArgument(const data_model::VariableName&, UErrorCode&) const;
+
+ // Avoids using Hashtable so that code constructing a Hashtable
+ // doesn't have to appear in this header file
+ LocalArray<UnicodeString> argumentNames;
+ LocalArray<Formattable> arguments;
+ int32_t argsLen = 0;
+ }; // class MessageArguments
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_ARGUMENTS_H
+
+// eof
diff --git a/libicu/cts_headers/unicode/messageformat2_data_model.h b/libicu/cts_headers/unicode/messageformat2_data_model.h
new file mode 100644
index 000000000..942a03f73
--- /dev/null
+++ b/libicu/cts_headers/unicode/messageformat2_data_model.h
@@ -0,0 +1,3090 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT_DATA_MODEL_H
+#define MESSAGEFORMAT_DATA_MODEL_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/localpointer.h"
+#include "unicode/messageformat2_data_model_names.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#include <algorithm>
+#include <cstddef>
+#include <iterator>
+#include <optional>
+#include <variant>
+#include <vector>
+
+U_NAMESPACE_BEGIN
+
+class UVector;
+
+// Helpers
+
+// Note: this _must_ be declared `inline` or else gcc will generate code
+// for its instantiations, which needs to be avoided because it returns
+// a std::vector
+template<typename T>
+static inline std::vector<T> toStdVector(const T* arr, int32_t len) {
+ std::vector<T> result;
+ for (int32_t i = 0; i < len; i++) {
+ result.push_back(arr[i]);
+ }
+ return result;
+}
+
+#if defined(U_REAL_MSVC)
+#pragma warning(push)
+// Ignore warning 4251 as these templates are instantiated later in this file,
+// after the classes used to instantiate them have been defined.
+#pragma warning(disable: 4251)
+#endif
+
+namespace message2 {
+ class Checker;
+ class MFDataModel;
+ class MessageFormatter;
+ class Parser;
+ class Serializer;
+
+
+ namespace data_model {
+ class Binding;
+ class Literal;
+ class Operator;
+
+ /**
+ * The `Reserved` class represents a `reserved` annotation, as in the `reserved` nonterminal
+ * in the MessageFormat 2 grammar or the `Reserved` interface
+ * defined in
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#expressions
+ *
+ * `Reserved` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Reserved : public UMemory {
+ public:
+ /**
+ * A `Reserved` is a sequence of literals.
+ *
+ * @return The number of literals.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int32_t numParts() const;
+ /**
+ * Indexes into the sequence.
+ * Precondition: i < numParts()
+ *
+ * @param i Index of the part being accessed.
+ * @return A reference to he i'th literal in the sequence
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Literal& getPart(int32_t i) const;
+
+ /**
+ * The mutable `Reserved::Builder` class allows the reserved sequence to be
+ * constructed one part at a time.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ UVector* parts; // Not a LocalPointer for the same reason as in `SelectorKeys::Builder`
+
+ public:
+ /**
+ * Adds a single literal to the reserved sequence.
+ *
+ * @param part The literal to be added. Passed by move.
+ * @param status Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(Literal&& part, UErrorCode& status) noexcept;
+ /**
+ * Constructs a new immutable `Reserved` using the list of parts
+ * set with previous `add()` calls.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * param status Input/output error code
+ * @return The new Reserved object
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Reserved build(UErrorCode& status) const noexcept;
+ /**
+ * Default constructor.
+ * Returns a builder with an empty Reserved sequence.
+ *
+ * param status Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Reserved::Builder
+ /**
+ * Non-member swap function.
+ * @param r1 will get r2's contents
+ * @param r2 will get r1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Reserved& r1, Reserved& r2) noexcept {
+ using std::swap;
+
+ swap(r1.bogus, r2.bogus);
+ swap(r1.parts, r2.parts);
+ swap(r1.len, r2.len);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Reserved(const Reserved& other);
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Reserved& operator=(Reserved) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Reserved into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Reserved() { parts = LocalArray<Literal>(); }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Reserved();
+ private:
+ friend class Builder;
+ friend class Operator;
+
+ // True if a copy failed; this has to be distinguished
+ // from a valid `Reserved` with empty parts
+ bool bogus = false;
+
+ // Possibly-empty list of parts
+ // `literal` reserved as a quoted literal; `reserved-char` / `reserved-escape`
+ // strings represented as unquoted literals
+ /* const */ LocalArray<Literal> parts;
+ int32_t len = 0;
+
+ Reserved(const UVector& parts, UErrorCode& status) noexcept;
+ // Helper
+ static void initLiterals(Reserved&, const Reserved&);
+ };
+
+ /**
+ * The `Literal` class corresponds to the `literal` nonterminal in the MessageFormat 2 grammar,
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf and the
+ * `Literal` interface defined in
+ * // https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#expressions
+ *
+ * `Literal` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Literal : public UObject {
+ public:
+ /**
+ * Returns the quoted representation of this literal (enclosed in '|' characters)
+ *
+ * @return A string representation of the literal enclosed in quote characters.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnicodeString quoted() const;
+ /**
+ * Returns the parsed string contents of this literal.
+ *
+ * @return A string representation of this literal.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& unquoted() const;
+ /**
+ * Determines if this literal appeared as a quoted literal in the message.
+ *
+ * @return true if and only if this literal appeared as a quoted literal in the
+ * message.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isQuoted() const { return thisIsQuoted; }
+ /**
+ * Literal constructor.
+ *
+ * @param q True if and only if this literal was parsed with the `quoted` nonterminal
+ * (appeared enclosed in '|' characters in the message text).
+ * @param s The string contents of this literal; escape sequences are assumed to have
+ * been interpreted already.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Literal(UBool q, const UnicodeString& s) : thisIsQuoted(q), contents(s) {}
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Literal(const Literal& other) : thisIsQuoted(other.thisIsQuoted), contents(other.contents) {}
+ /**
+ * Non-member swap function.
+ * @param l1 will get l2's contents
+ * @param l2 will get l1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Literal& l1, Literal& l2) noexcept {
+ using std::swap;
+
+ swap(l1.thisIsQuoted, l2.thisIsQuoted);
+ swap(l1.contents, l2.contents);
+ }
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Literal& operator=(Literal) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Literal into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Literal() = default;
+ /**
+ * Less than operator. Compares `this.stringContents()` with
+ * `other.stringContents()`. This method is used in representing
+ * the mapping from key lists to patterns in a message with variants,
+ * and is not expected to be useful otherwise.
+ *
+ * @param other The Literal to compare to this one.
+ * @return true if the parsed string corresponding to this `Literal`
+ * is less than the parsed string corresponding to the other `Literal`
+ * (according to `UnicodeString`'s less-than operator).
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator<(const Literal& other) const;
+ /**
+ * Equality operator. Compares `this.stringContents()` with
+ * `other.stringContents()`. This method is used in representing
+ * the mapping from key lists to patterns in a message with variants,
+ * and is not expected to be useful otherwise.
+ *
+ * @param other The Literal to compare to this one.
+ * @return true if the parsed string corresponding to this `Literal`
+ * equals the parsed string corresponding to the other `Literal`
+ * (according to `UnicodeString`'s equality operator).
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator==(const Literal& other) const;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Literal();
+
+ private:
+ friend class Reserved::Builder;
+
+ /* const */ bool thisIsQuoted = false;
+ /* const */ UnicodeString contents;
+ };
+ } // namespace data_model
+} // namespace message2
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Literal>;
+template class U_I18N_API LocalArray<message2::data_model::Literal>;
+#endif
+#if defined(U_REAL_MSVC)
+#pragma warning(pop)
+#endif
+/// @endcond
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::variants and std::optionals
+// that are used as a data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
+struct U_I18N_API std::_Nontrivial_dummy_type;
+template class U_I18N_API std::_Variant_storage_<false, icu::UnicodeString, icu::message2::data_model::Literal>;
+#endif
+template class U_I18N_API std::variant<icu::UnicodeString, icu::message2::data_model::Literal>;
+template class U_I18N_API std::optional<std::variant<icu::UnicodeString, icu::message2::data_model::Literal>>;
+template class U_I18N_API std::optional<icu::message2::data_model::Literal>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ namespace data_model {
+
+ /**
+ * The `Operand` class corresponds to the `operand` nonterminal in the MessageFormat 2 grammar,
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf .
+ * It represents a `Literal | VariableRef` -- see the `operand?` field of the `FunctionRef`
+ * interface defined at:
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#expressions
+ * with the difference that it can also represent a null operand (the absent operand in an
+ * `annotation` with no operand).
+ *
+ * `Operand` is immutable and is copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Operand : public UObject {
+ public:
+ /**
+ * Determines if this operand represents a variable.
+ *
+ * @return True if and only if the operand is a variable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isVariable() const;
+ /**
+ * Determines if this operand represents a literal.
+ *
+ * @return True if and only if the operand is a literal.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isLiteral() const;
+ /**
+ * Determines if this operand is the null operand.
+ *
+ * @return True if and only if the operand is the null operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual UBool isNull() const;
+ /**
+ * Returns a reference to this operand's variable name.
+ * Precondition: isVariable()
+ *
+ * @return A reference to the name of the variable
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& asVariable() const;
+ /**
+ * Returns a reference to this operand's literal contents.
+ * Precondition: isLiteral()
+ *
+ * @return A reference to the literal
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Literal& asLiteral() const;
+ /**
+ * Default constructor.
+ * Creates a null Operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operand() : contents(std::nullopt) {}
+ /**
+ * Variable operand constructor.
+ *
+ * @param v The variable name; an operand corresponding
+ * to a reference to `v` is returned.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit Operand(const UnicodeString& v) : contents(VariableName(v)) {}
+ /**
+ * Literal operand constructor.
+ *
+ * @param l The literal to use for this operand; an operand
+ * corresponding to `l` is returned.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit Operand(const Literal& l) : contents(l) {}
+ /**
+ * Non-member swap function.
+ * @param o1 will get o2's contents
+ * @param o2 will get o1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Operand& o1, Operand& o2) noexcept {
+ using std::swap;
+ (void) o1;
+ (void) o2;
+ swap(o1.contents, o2.contents);
+ }
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual Operand& operator=(Operand) noexcept;
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operand(const Operand&);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Operand();
+ private:
+ std::optional<std::variant<VariableName, Literal>> contents;
+ }; // class Operand
+
+ /**
+ * The `Key` class corresponds to the `key` nonterminal in the MessageFormat 2 grammar,
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf .
+ * It also corresponds to
+ * the `Literal | CatchallKey` that is the
+ * element type of the `keys` array in the `Variant` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#messages
+ *
+ * A key is either a literal or the wildcard symbol (represented in messages as '*')
+ *
+ * `Key` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Key : public UObject {
+ public:
+ /**
+ * Determines if this is a wildcard key
+ *
+ * @return True if and only if this is the wildcard key
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isWildcard() const { return !contents.has_value(); }
+ /**
+ * Returns the contents of this key as a literal.
+ * Precondition: !isWildcard()
+ *
+ * @return The literal contents of the key
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Literal& asLiteral() const;
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Key(const Key& other) : contents(other.contents) {}
+ /**
+ * Wildcard constructor; constructs a Key representing the
+ * catchall or wildcard key, '*'.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Key() : contents(std::nullopt) {}
+ /**
+ * Literal key constructor.
+ *
+ * @param lit A Literal to use for this key. The result matches the
+ * literal `lit`.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit Key(const Literal& lit) : contents(lit) {}
+ /**
+ * Non-member swap function.
+ * @param k1 will get k2's contents
+ * @param k2 will get k1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Key& k1, Key& k2) noexcept {
+ using std::swap;
+
+ swap(k1.contents, k2.contents);
+ }
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Key& operator=(Key) noexcept;
+ /**
+ * Less than operator. Compares the literal of `this` with the literal of `other`.
+ * This method is used in representing the mapping from key lists to patterns
+ * in a message with variants, and is not expected to be useful otherwise.
+ *
+ * @param other The Key to compare to this one.
+ * @return true if the two `Key`s are not wildcards and if `this.asLiteral()`
+ * < `other.asLiteral()`.
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator<(const Key& other) const;
+ /**
+ * Equality operator. Compares the literal of `this` with the literal of `other`.
+ * This method is used in representing the mapping from key lists to patterns
+ * in a message with variants, and is not expected to be useful otherwise.
+ *
+ * @param other The Key to compare to this one.
+ * @return true if either both `Key`s are wildcards, or `this.asLiteral()`
+ * == `other.asLiteral()`.
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator==(const Key& other) const;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Key();
+ private:
+ /* const */ std::optional<Literal> contents;
+ }; // class Key
+ } // namespace data_model
+} // namespace message2
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Key>;
+template class U_I18N_API LocalArray<message2::data_model::Key>;
+#endif
+/// @endcond
+
+namespace message2 {
+ namespace data_model {
+ /**
+ * The `SelectorKeys` class represents the key list for a single variant.
+ * It corresponds to the `keys` array in the `Variant` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#messages
+ *
+ * `SelectorKeys` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API SelectorKeys : public UObject {
+ public:
+ /**
+ * Returns the underlying list of keys.
+ *
+ * @return The list of keys for this variant.
+ * Returns an empty list if allocating this `SelectorKeys`
+ * object previously failed.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Key> getKeys() const {
+ return toStdVector<Key>(keys.getAlias(), len);
+ }
+ /**
+ * The mutable `SelectorKeys::Builder` class allows the key list to be constructed
+ * one key at a time.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class SelectorKeys;
+ UVector* keys; // This is a raw pointer and not a LocalPointer<UVector> to avoid undefined behavior warnings,
+ // since UVector is forward-declared
+ // The vector owns its elements
+ public:
+ /**
+ * Adds a single key to the list.
+ *
+ * @param key The key to be added. Passed by move
+ * @param status Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(Key&& key, UErrorCode& status) noexcept;
+ /**
+ * Constructs a new immutable `SelectorKeys` using the list of keys
+ * set with previous `add()` calls.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * @param status Input/output error code
+ * @return The new SelectorKeys object
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorKeys build(UErrorCode& status) const;
+ /**
+ * Default constructor.
+ * Returns a Builder with an empty list of keys.
+ *
+ * @param status Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class SelectorKeys::Builder
+ /**
+ * Less than operator. Compares the two key lists lexicographically.
+ * This method makes it possible for a `SelectorKeys` to be used as a map
+ * key, which allows variants to be represented as a map. It is not expected
+ * to be useful otherwise.
+ *
+ * @param other The SelectorKeys to compare to this one.
+ * @return true if `this` is less than `other`, comparing the two key lists
+ * lexicographically.
+ * Returns false otherwise.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool operator<(const SelectorKeys& other) const;
+ /**
+ * Default constructor.
+ * Puts the SelectorKeys into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorKeys() : len(0) {}
+ /**
+ * Non-member swap function.
+ * @param s1 will get s2's contents
+ * @param s2 will get s1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(SelectorKeys& s1, SelectorKeys& s2) noexcept {
+ using std::swap;
+
+ swap(s1.len, s2.len);
+ swap(s1.keys, s2.keys);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorKeys(const SelectorKeys& other);
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorKeys& operator=(SelectorKeys other) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~SelectorKeys();
+ private:
+ friend class Builder;
+ friend class message2::Checker;
+ friend class message2::MessageFormatter;
+ friend class message2::Serializer;
+
+ /* const */ LocalArray<Key> keys;
+ /* const */ int32_t len;
+
+ const Key* getKeysInternal() const;
+ SelectorKeys(const UVector& ks, UErrorCode& status);
+ }; // class SelectorKeys
+
+
+ } // namespace data_model
+
+
+ namespace data_model {
+ class Operator;
+
+ /**
+ * An `Option` pairs an option name with an Operand.
+ *
+ * `Option` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Option : public UObject {
+ public:
+ /**
+ * Accesses the right-hand side of the option.
+ *
+ * @return A reference to the operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Operand& getValue() const { return rand; }
+ /**
+ * Accesses the left-hand side of the option.
+ *
+ * @return A reference to the option name.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getName() const { return name; }
+ /**
+ * Constructor. Returns an `Option` representing the
+ * named option "name=rand".
+ *
+ * @param n The name of the option.
+ * @param r The value of the option.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Option(const UnicodeString& n, Operand&& r) : name(n), rand(std::move(r)) {}
+ /**
+ * Default constructor.
+ * Returns an Option in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Option() {}
+ /**
+ * Non-member swap function.
+ * @param o1 will get o2's contents
+ * @param o2 will get o1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Option& o1, Option& o2) noexcept {
+ using std::swap;
+
+ swap(o1.name, o2.name);
+ swap(o1.rand, o2.rand);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Option(const Option& other);
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Option& operator=(Option other) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Option();
+ private:
+ /* const */ UnicodeString name;
+ /* const */ Operand rand;
+ }; // class Option
+ } // namespace data_model
+} // namespace message2
+
+ /// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Option>;
+template class U_I18N_API LocalArray<message2::data_model::Option>;
+#endif
+/// @endcond
+
+namespace message2 {
+ namespace data_model {
+ // Internal only
+ #ifndef U_IN_DOXYGEN
+ // Options
+ // This is a wrapper class around a vector of options that provides lookup operations
+ class U_I18N_API OptionMap : public UObject {
+ public:
+ int32_t size() const;
+ // Needs to take an error code b/c an earlier copy might have failed
+ const Option& getOption(int32_t, UErrorCode&) const;
+ friend inline void swap(OptionMap& m1, OptionMap& m2) noexcept {
+ using std::swap;
+
+ swap(m1.bogus, m2.bogus);
+ swap(m1.options, m2.options);
+ swap(m1.len, m2.len);
+ }
+ OptionMap() : len(0) {}
+ OptionMap(const OptionMap&);
+ OptionMap& operator=(OptionMap);
+ std::vector<Option> getOptions() const {
+ return toStdVector<Option>(options.getAlias(), len);
+ }
+ OptionMap(const UVector&, UErrorCode&);
+ OptionMap(Option*, int32_t);
+ virtual ~OptionMap();
+
+ class U_I18N_API Builder : public UObject {
+ private:
+ UVector* options;
+ bool checkDuplicates = true;
+ public:
+ Builder& add(Option&& opt, UErrorCode&);
+ Builder(UErrorCode&);
+ static Builder attributes(UErrorCode&);
+ // As this class is private, build() is destructive
+ OptionMap build(UErrorCode&);
+ friend inline void swap(Builder& m1, Builder& m2) noexcept {
+ using std::swap;
+
+ swap(m1.options, m2.options);
+ swap(m1.checkDuplicates, m2.checkDuplicates);
+ }
+ Builder(Builder&&);
+ Builder(const Builder&) = delete;
+ Builder& operator=(Builder) noexcept;
+ virtual ~Builder();
+ }; // class OptionMap::Builder
+ private:
+ friend class message2::Serializer;
+
+ bool bogus = false;
+ LocalArray<Option> options;
+ int32_t len;
+ }; // class OptionMap
+ #endif
+
+ // Internal use only
+ #ifndef U_IN_DOXYGEN
+ class U_I18N_API Callable : public UObject {
+ public:
+ friend inline void swap(Callable& c1, Callable& c2) noexcept {
+ using std::swap;
+
+ swap(c1.name, c2.name);
+ swap(c1.options, c2.options);
+ }
+ const FunctionName& getName() const { return name; }
+ const OptionMap& getOptions() const { return options; }
+ Callable(const FunctionName& f, const OptionMap& opts) : name(f), options(opts) {}
+ Callable& operator=(Callable) noexcept;
+ Callable(const Callable&);
+ Callable() = default;
+ virtual ~Callable();
+ private:
+ /* const */ FunctionName name;
+ /* const */ OptionMap options;
+ };
+ #endif
+ } // namespace data_model
+} // namespace message2
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::variant that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
+template class U_I18N_API std::_Variant_storage_<false, icu::message2::data_model::Reserved,icu::message2::data_model::Callable>;
+#endif
+template class U_I18N_API std::variant<icu::message2::data_model::Reserved,icu::message2::data_model::Callable>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ namespace data_model {
+ /**
+ * The `Operator` class corresponds to the `FunctionRef | Reserved` type in the
+ * `Expression` interface defined in
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#patterns
+ *
+ * It represents the annotation that an expression can have: either a function name paired
+ * with a map from option names to operands (possibly empty),
+ * or a reserved sequence, which has no meaning and results in an error if the formatter
+ * is invoked.
+ *
+ * `Operator` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Operator : public UObject {
+ public:
+ /**
+ * Determines if this operator is a reserved annotation.
+ *
+ * @return true if and only if this operator represents a reserved sequence.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isReserved() const { return std::holds_alternative<Reserved>(contents); }
+ /**
+ * Accesses the function name.
+ * Precondition: !isReserved()
+ *
+ * @return The function name of this operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const FunctionName& getFunctionName() const;
+ /**
+ * Accesses the underlying reserved sequence.
+ * Precondition: isReserved()
+ *
+ * @return The reserved sequence represented by this operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Reserved& asReserved() const;
+ /**
+ * Accesses function options.
+ * Precondition: !isReserved()
+ *
+ * @return A vector of function options for this operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Option> getOptions() const {
+ const Callable* f = std::get_if<Callable>(&contents);
+ // This case should never happen, as the precondition is !isReserved()
+ if (f == nullptr) { return {}; }
+ const OptionMap& opts = f->getOptions();
+ return opts.getOptions();
+ }
+ /**
+ * The mutable `Operator::Builder` class allows the operator to be constructed
+ * incrementally.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class Operator;
+ bool isReservedSequence = false;
+ bool hasFunctionName = false;
+ bool hasOptions = false;
+ Reserved asReserved;
+ FunctionName functionName;
+ OptionMap::Builder options;
+ public:
+ /**
+ * Sets this operator to be a reserved sequence.
+ * If a function name and/or options were previously set,
+ * clears them.
+ *
+ * @param reserved The reserved sequence to set as the contents of this Operator.
+ * (Passed by move.)
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setReserved(Reserved&& reserved);
+ /**
+ * Sets this operator to be a function annotation and sets its name
+ * to `func`.
+ * If a reserved sequence was previously set, clears it.
+ *
+ * @param func The function name.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setFunctionName(FunctionName&& func);
+ /**
+ * Sets this operator to be a function annotation and adds a
+ * single option.
+ * If a reserved sequence was previously set, clears it.
+ *
+ * @param key The name of the option.
+ * @param value The value (right-hand side) of the option.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addOption(const UnicodeString &key, Operand&& value, UErrorCode& status) noexcept;
+ /**
+ * Constructs a new immutable `Operator` using the `reserved` annotation
+ * or the function name and options that were previously set.
+ * If neither `setReserved()` nor `setFunctionName()` was previously
+ * called, then `status` is set to U_INVALID_STATE_ERROR.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * The `build()` method is non-const for internal implementation reasons,
+ * but is observably const.
+ *
+ * @param status Input/output error code.
+ * @return The new Operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operator build(UErrorCode& status);
+ /**
+ * Default constructor.
+ * Returns a Builder with no function name or reserved sequence set.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Operator::Builder
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operator(const Operator& other) noexcept;
+ /**
+ * Non-member swap function.
+ * @param o1 will get o2's contents
+ * @param o2 will get o1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Operator& o1, Operator& o2) noexcept {
+ using std::swap;
+
+ swap(o1.contents, o2.contents);
+ }
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operator& operator=(Operator) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Operator into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Operator() : contents(Reserved()) {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Operator();
+ private:
+ friend class Binding;
+ friend class Builder;
+ friend class message2::Checker;
+ friend class message2::MessageFormatter;
+ friend class message2::Serializer;
+
+ // Function call constructor
+ Operator(const FunctionName& f, const UVector& options, UErrorCode&);
+ // Reserved sequence constructor
+ Operator(const Reserved& r) : contents(r) {}
+
+ const OptionMap& getOptionsInternal() const;
+ Operator(const FunctionName&, const OptionMap&);
+ /* const */ std::variant<Reserved, Callable> contents;
+ }; // class Operator
+ } // namespace data_model
+} // namespace message2
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::optional that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API std::optional<icu::message2::data_model::Operator>;
+template class U_I18N_API std::optional<icu::message2::data_model::Reserved>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ namespace data_model {
+ // Internal only
+ typedef enum UMarkupType {
+ UMARKUP_OPEN = 0,
+ UMARKUP_CLOSE,
+ UMARKUP_STANDALONE,
+ UMARKUP_COUNT
+ } UMarkupType;
+
+ /**
+ * The `Markup` class corresponds to the `markup` nonterminal in the MessageFormat 2
+ * grammar and the `markup` interface defined in
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model/message.json
+ *
+ * `Markup` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Markup : public UObject {
+ public:
+ /**
+ * Checks if this markup is an opening tag.
+ *
+ * @return True if and only if this represents an opening tag.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isOpen() const { return (type == UMARKUP_OPEN); }
+ /**
+ * Checks if this markup is an closing tag.
+ *
+ * @return True if and only if this represents an closing tag.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isClose() const { return (type == UMARKUP_CLOSE); }
+ /**
+ * Checks if this markup is an standalone tag.
+ *
+ * @return True if and only if this represents a standalone tag.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isStandalone() const { return (type == UMARKUP_STANDALONE); }
+ /**
+ * Gets the name of this markup
+ *
+ * @return A reference to the string identifying the markup
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getName() const { return name; }
+ /**
+ * Gets the options of this markup
+ *
+ * @return A reference to the string identifying the markup
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Option> getOptions() const { return options.getOptions(); }
+ /**
+ * Gets the attributes of this markup
+ *
+ * @return A vector of attributes
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Option> getAttributes() const { return attributes.getOptions(); }
+ /**
+ * Default constructor.
+ * Puts the Markup into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Markup() {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Markup();
+ /**
+ * The mutable `Markup::Builder` class allows the markup to be constructed
+ * incrementally.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class Markup;
+
+ UnicodeString name;
+ OptionMap::Builder options;
+ OptionMap::Builder attributes;
+ UMarkupType type = UMARKUP_COUNT;
+ public:
+ /**
+ * Sets the name of this markup.
+ *
+ * @param n A string representing the name.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setName(const UnicodeString& n) { name = n; return *this; }
+ /**
+ * Sets this to be an opening markup.
+ *
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setOpen() { type = UMARKUP_OPEN; return *this; }
+ /**
+ * Sets this to be an closing markup.
+ *
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setClose() { type = UMARKUP_CLOSE; return *this; }
+ /**
+ * Sets this to be a standalone markup.
+ *
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setStandalone() { type = UMARKUP_STANDALONE; return *this; }
+ /**
+ * Adds a single option.
+ *
+ * @param key The name of the option.
+ * @param value The value (right-hand side) of the option.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addOption(const UnicodeString &key, Operand&& value, UErrorCode& status);
+ /**
+ * Adds a single attribute.
+ *
+ * @param key The name of the attribute.
+ * @param value The value (right-hand side) of the attribute.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addAttribute(const UnicodeString &key, Operand&& value, UErrorCode& status);
+ /**
+ * Constructs a new immutable `Markup` using the name and type
+ * and (optionally) options and attributes that were previously set.
+ * If `setName()` and at least one of `setOpen()`, `setClose()`, and `setStandalone()`
+ * were not previously called,
+ * then `status` is set to U_INVALID_STATE_ERROR.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ * The `build()` method is non-const for internal implementation reasons,
+ * but is observably const.
+ *
+ * @param status Input/output error code.
+ * @return The new Markup.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Markup build(UErrorCode& status);
+ /**
+ * Default constructor.
+ * Returns a Builder with no name, type, options, or attributes set.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Markup::Builder
+
+ private:
+ friend class Builder;
+ friend class message2::Serializer;
+
+ UMarkupType type;
+ UnicodeString name;
+ OptionMap options;
+ OptionMap attributes;
+ const OptionMap& getOptionsInternal() const { return options; }
+ const OptionMap& getAttributesInternal() const { return attributes; }
+ Markup(UMarkupType, UnicodeString, OptionMap&&, OptionMap&&);
+ }; // class Markup
+
+ /**
+ * The `Expression` class corresponds to the `expression` nonterminal in the MessageFormat 2
+ * grammar and the `Expression` interface defined in
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#patterns
+ *
+ * It represents either an operand with no annotation; an annotation with no operand;
+ * or an operand annotated with an annotation.
+ *
+ * `Expression` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Expression : public UObject {
+ public:
+ /**
+ * Checks if this expression is an annotation
+ * with no operand.
+ *
+ * @return True if and only if the expression has
+ * an annotation and has no operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isStandaloneAnnotation() const;
+ /**
+ * Checks if this expression has a function
+ * annotation (with or without an operand). A reserved
+ * sequence is not a function annotation.
+ *
+ * @return True if and only if the expression has an annotation
+ * that is a function.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isFunctionCall() const;
+ /**
+ * Returns true if and only if this expression is
+ * annotated with a reserved sequence.
+ *
+ * @return True if and only if the expression has an
+ * annotation that is a reserved sequence,
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isReserved() const;
+ /**
+ * Accesses the function or reserved sequence
+ * annotating this expression.
+ * If !(isFunctionCall() || isReserved()), sets
+ * `status` to U_INVALID_STATE_ERROR.
+ *
+ * @param status Input/output error code.
+ * @return A non-owned pointer to the operator of this expression,
+ * which does not outlive the expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Operator* getOperator(UErrorCode& status) const;
+ /**
+ * Accesses the operand of this expression.
+ *
+ * @return A reference to the operand of this expression,
+ * which may be the null operand.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Operand& getOperand() const;
+ /**
+ * Gets the attributes of this expression
+ *
+ * @return A vector of attributes
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Option> getAttributes() const { return attributes.getOptions(); }
+ /**
+ * The mutable `Expression::Builder` class allows the operator to be constructed
+ * incrementally.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class Expression;
+
+ bool hasOperand = false;
+ bool hasOperator = false;
+ Operand rand;
+ Operator rator;
+ OptionMap::Builder attributes;
+ public:
+ /**
+ * Sets the operand of this expression.
+ *
+ * @param rAnd The operand to set. Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setOperand(Operand&& rAnd);
+ /**
+ * Sets the operator of this expression.
+ *
+ * @param rAtor The operator to set. Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setOperator(Operator&& rAtor);
+ /**
+ * Adds a single attribute.
+ *
+ * @param key The name of the attribute.
+ * @param value The value (right-hand side) of the attribute.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addAttribute(const UnicodeString &key, Operand&& value, UErrorCode& status);
+ /**
+ * Constructs a new immutable `Expression` using the operand and operator that
+ * were previously set. If neither `setOperand()` nor `setOperator()` was
+ * previously called, or if `setOperand()` was called with the null operand
+ * and `setOperator()` was never called, then `status` is set to
+ * U_INVALID_STATE_ERROR.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ * The `build()` method is non-const for internal implementation reasons,
+ * but is observably const.
+
+ * @param status Input/output error code.
+ * @return The new Expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Expression build(UErrorCode& status);
+ /**
+ * Default constructor.
+ * Returns a Builder with no operator or operand set.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Expression::Builder
+ /**
+ * Non-member swap function.
+ * @param e1 will get e2's contents
+ * @param e2 will get e1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Expression& e1, Expression& e2) noexcept {
+ using std::swap;
+
+ swap(e1.rator, e2.rator);
+ swap(e1.rand, e2.rand);
+ swap(e1.attributes, e2.attributes);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Expression(const Expression& other);
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Expression& operator=(Expression) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Expression into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Expression();
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Expression();
+ private:
+ friend class message2::Serializer;
+
+ /*
+ Internally, an expression is represented as the application of an optional operator to an operand.
+ The operand is always present; for function calls with no operand, it's represented
+ as an operand for which `isNull()` is true.
+
+ Operator | Operand
+ --------------------------------
+ { |42| :fun opt=value } => (FunctionName=fun, | Literal(quoted=true, contents="42")
+ options={opt: value})
+ { abcd } => null | Literal(quoted=false, contents="abcd")
+ { : fun opt=value } => (FunctionName=fun,
+ options={opt: value}) | NullOperand()
+ */
+
+ Expression(const Operator &rAtor, const Operand &rAnd, const OptionMap& attrs) : rator(rAtor), rand(rAnd), attributes(attrs) {}
+ Expression(const Operand &rAnd, const OptionMap& attrs) : rator(std::nullopt), rand(Operand(rAnd)), attributes(attrs) {}
+ Expression(const Operator &rAtor, const OptionMap& attrs) : rator(rAtor), rand(), attributes(attrs) {}
+ /* const */ std::optional<Operator> rator;
+ /* const */ Operand rand;
+ /* const */ OptionMap attributes;
+ const OptionMap& getAttributesInternal() const { return attributes; }
+ }; // class Expression
+ } // namespace data_model
+} // namespace message2
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Expression>;
+template class U_I18N_API LocalArray<message2::data_model::Expression>;
+#endif
+/// @endcond
+
+namespace message2 {
+ namespace data_model {
+ /**
+ * The `UnsupportedStatement` class corresponds to the `reserved-statement` nonterminal in the MessageFormat 2
+ * grammar and the `unsupported-statement` type defined in:
+ * https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model/message.json#L169
+ *
+ * It represents a keyword (string) together with an optional
+ * `Reserved` annotation and a non-empty list of expressions.
+ *
+ * `UnsupportedStatement` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API UnsupportedStatement : public UObject {
+ public:
+ /**
+ * Accesses the keyword of this statement.
+ *
+ * @return A reference to a string.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getKeyword() const { return keyword; }
+ /**
+ * Accesses the `reserved-body` of this statement.
+ *
+ * @param status Input/output error code. Set to U_ILLEGAL_ARGUMENT_ERROR
+ * if this unsupported statement has no body.
+ * @return A non-owned pointer to a `Reserved` annotation,
+ * which is non-null if U_SUCCESS(status).
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Reserved* getBody(UErrorCode& status) const;
+ /**
+ * Accesses the expressions of this statement.
+ *
+ * @return A vector of Expressions.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Expression> getExpressions() const {
+ if (expressionsLen <= 0 || !expressions.isValid()) {
+ // This case should never happen, but we can't use an assertion here
+ return {};
+ }
+ return toStdVector<Expression>(expressions.getAlias(), expressionsLen);
+ }
+ /**
+ * The mutable `UnsupportedStatement::Builder` class allows the statement to be constructed
+ * incrementally.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class UnsupportedStatement;
+ friend class message2::Parser;
+
+ UnicodeString keyword;
+ std::optional<Reserved> body;
+ UVector* expressions; // Vector of expressions;
+ // not a LocalPointer for
+ // the same reason as in `SelectorKeys::builder`
+ public:
+ /**
+ * Sets the keyword of this statement.
+ *
+ * @param k The keyword to set.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setKeyword(const UnicodeString& k);
+ /**
+ * Sets the body of this statement.
+ *
+ * @param r The `Reserved` annotation to set as the body. Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setBody(Reserved&& r);
+ /**
+ * Adds an expression to this statement.
+ *
+ * @param e The expression to add. Passed by move.
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addExpression(Expression&& e, UErrorCode& status);
+ /**
+ * Constructs a new immutable `UnsupportedStatement` using the keyword,
+ * body and (if applicable) expressions that were previously set.
+ * If `setKeyword()` was never called, then `status` is set to
+ * U_INVALID_STATE_ERROR. If `setBody()` was never called, the body is
+ * treated as absent (not an error). If `addExpression()` was not called
+ * at least once, then `status` is set to U_INVALID_STATE_ERROR.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ * @param status Input/output error code.
+ * @return The new UnsupportedStatement
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnsupportedStatement build(UErrorCode& status) const;
+ /**
+ * Default constructor.
+ * Returns a Builder with no keyword or body set.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class UnsupportedStatement::Builder
+ /**
+ * Non-member swap function.
+ * @param s1 will get s2's contents
+ * @param s2 will get s1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(UnsupportedStatement& s1, UnsupportedStatement& s2) noexcept {
+ using std::swap;
+
+ swap(s1.keyword, s2.keyword);
+ swap(s1.body, s2.body);
+ swap(s1.expressions, s2.expressions);
+ swap(s1.expressionsLen, s2.expressionsLen);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnsupportedStatement(const UnsupportedStatement& other);
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnsupportedStatement& operator=(UnsupportedStatement) noexcept;
+ /**
+ * Default constructor.
+ * Puts the UnsupportedStatement into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnsupportedStatement() : expressions(LocalArray<Expression>()) {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~UnsupportedStatement();
+ private:
+ friend class message2::Serializer;
+
+ /* const */ UnicodeString keyword;
+ /* const */ std::optional<Reserved> body;
+ /* const */ LocalArray<Expression> expressions;
+ /* const */ int32_t expressionsLen = 0;
+
+ const Expression* getExpressionsInternal() const { return expressions.getAlias(); }
+
+ UnsupportedStatement(const UnicodeString&, const std::optional<Reserved>&, const UVector&, UErrorCode&);
+ }; // class UnsupportedStatement
+
+ class Pattern;
+
+ // Despite the comments, `PatternPart` is internal-only
+ /**
+ * A `PatternPart` is a single element (text or expression) in a `Pattern`.
+ * It corresponds to the `body` field of the `Pattern` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#patterns
+ *
+ * `PatternPart` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class PatternPart : public UObject {
+ public:
+ /**
+ * Checks if the part is a text part.
+ *
+ * @return True if and only if this is a text part.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isText() const { return std::holds_alternative<UnicodeString>(piece); }
+ /**
+ * Checks if the part is a markup part.
+ *
+ * @return True if and only if this is a markup part.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isMarkup() const { return std::holds_alternative<Markup>(piece); }
+ /**
+ * Checks if the part is an expression part.
+ *
+ * @return True if and only if this is an expression part.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isExpression() const { return std::holds_alternative<Expression>(piece); }
+ /**
+ * Accesses the expression of the part.
+ * Precondition: isExpression()
+ *
+ * @return A reference to the part's underlying expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Expression& contents() const;
+ /**
+ * Accesses the expression of the part.
+ * Precondition: isMarkup()
+ *
+ * @return A reference to the part's underlying expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Markup& asMarkup() const;
+ /**
+ * Accesses the text contents of the part.
+ * Precondition: isText()
+ *
+ * @return A reference to a string representing the part's text..
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& asText() const;
+ /**
+ * Non-member swap function.
+ * @param p1 will get p2's contents
+ * @param p2 will get p1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(PatternPart& p1, PatternPart& p2) noexcept {
+ using std::swap;
+
+ swap(p1.piece, p2.piece);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ PatternPart(const PatternPart& other);
+ /**
+ * Assignment operator.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ PatternPart& operator=(PatternPart) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~PatternPart();
+ /**
+ * Text part constructor. Returns a text pattern part
+ * with text `t`.
+ *
+ * @param t A text string.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit PatternPart(const UnicodeString& t) : piece(t) {}
+ /**
+ * Expression part constructor. Returns an Expression pattern
+ * part with expression `e`.
+ *
+ * @param e An Expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit PatternPart(Expression&& e) : piece(e) {}
+ /**
+ * Markup part constructor. Returns a Markup pattern
+ * part with markup `m`
+ *
+ * @param m A Markup.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit PatternPart(Markup&& m) : piece(m) {}
+ /**
+ * Default constructor.
+ * Puts the PatternPart into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ PatternPart() = default;
+ private:
+ friend class Pattern;
+
+ std::variant<UnicodeString, Expression, Markup> piece;
+ }; // class PatternPart
+ } // namespace data_model
+} // namespace message2
+
+ /// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::PatternPart>;
+template class U_I18N_API LocalArray<message2::data_model::PatternPart>;
+template class U_I18N_API LocalPointerBase<message2::data_model::UnsupportedStatement>;
+template class U_I18N_API LocalArray<message2::data_model::UnsupportedStatement>;
+#endif
+/// @endcond
+
+namespace message2 {
+ namespace data_model {
+ /**
+ * A `Pattern` is a sequence of formattable parts.
+ * It corresponds to the `Pattern` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#patterns
+ *
+ * `Pattern` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Pattern : public UObject {
+ private:
+ friend class PatternPart;
+
+ public:
+ struct Iterator;
+ /**
+ * Returns the parts of this pattern
+ *
+ * @return A forward iterator of variants. Each element is either a string (text part)
+ * or an expression part.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Iterator begin() const {
+ return Iterator(this, 0);
+ }
+ /**
+ * Returns a special value to mark the end of iteration
+ *
+ * @return A forward iterator of variants. This should only be used for comparisons
+ * against an iterator returned by incrementing begin().
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Iterator end() const {
+ return Iterator(this, len);
+ }
+ /**
+ * The mutable `Pattern::Builder` class allows the pattern to be
+ * constructed one part at a time.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class Pattern;
+
+ UVector* parts; // Not a LocalPointer for the same reason as in `SelectorKeys::Builder`
+
+ public:
+ /**
+ * Adds a single expression part to the pattern.
+ *
+ * @param part The part to be added (passed by move)
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(Expression&& part, UErrorCode& status) noexcept;
+ /**
+ * Adds a single markup part to the pattern.
+ *
+ * @param part The part to be added (passed by move)
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(Markup&& part, UErrorCode& status) noexcept;
+ /**
+ * Adds a single text part to the pattern. Copies `part`.
+ *
+ * @param part The part to be added (passed by move)
+ * @param status Input/output error code.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& add(UnicodeString&& part, UErrorCode& status) noexcept;
+ /**
+ * Constructs a new immutable `Pattern` using the list of parts
+ * set with previous `add()` calls.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * @param status Input/output error code.
+ * @return The pattern object
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Pattern build(UErrorCode& status) const noexcept;
+ /**
+ * Default constructor.
+ * Returns a Builder with an empty sequence of PatternParts.
+ *
+ * @param status Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Pattern::Builder
+
+ /**
+ * Default constructor.
+ * Puts the Pattern into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Pattern() : parts(LocalArray<PatternPart>()) {}
+ /**
+ * Non-member swap function.
+ * @param p1 will get p2's contents
+ * @param p2 will get p1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Pattern& p1, Pattern& p2) noexcept {
+ using std::swap;
+
+ swap(p1.bogus, p2.bogus);
+ swap(p1.len, p2.len);
+ swap(p1.parts, p2.parts);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Pattern(const Pattern& other);
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Pattern& operator=(Pattern) noexcept;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Pattern();
+
+ /**
+ * The `Pattern::Iterator` class provides an iterator over the formattable
+ * parts of a pattern.
+ *
+ * `Pattern::Iterator` is mutable and is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ struct U_I18N_API Iterator {
+ private:
+ using iterator_category = std::forward_iterator_tag;
+ using difference_type = std::ptrdiff_t;
+ using value_type = std::variant<UnicodeString, Expression, Markup>;
+ using pointer = value_type*;
+ using reference = const value_type&;
+
+ friend class Pattern;
+ Iterator(const Pattern* p, int32_t i) : pos(i), pat(p) {}
+ friend bool operator== (const Iterator& a, const Iterator& b) { return (a.pat == b.pat && a.pos == b.pos); }
+
+ int32_t pos;
+ const Pattern* pat;
+
+ public:
+ /**
+ * Dereference operator (gets the element at the current iterator position)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ reference operator*() const {
+ const PatternPart& part = pat->parts[pos];
+ return patternContents(part);
+ }
+ /**
+ * Increment operator (advances to the next iterator position)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Iterator operator++() { pos++; return *this; }
+ /**
+ * Inequality comparison operator (used for comparing an iterator to the result of end())
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend bool operator!= (const Iterator& a, const Iterator& b) { return !(a == b); }
+ }; // struct Iterator
+
+ private:
+ friend class Builder;
+ friend class message2::MessageFormatter;
+ friend class message2::Serializer;
+
+ // Set to true if a copy constructor fails;
+ // needed in order to distinguish an uninitialized
+ // Pattern from a 0-length pattern
+ bool bogus = false;
+
+ // Possibly-empty array of parts
+ int32_t len = 0;
+ LocalArray<PatternPart> parts;
+
+ Pattern(const UVector& parts, UErrorCode& status);
+ // Helper
+ static void initParts(Pattern&, const Pattern&);
+
+ /**
+ * Returns the size.
+ *
+ * @return The number of parts in the pattern.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int32_t numParts() const;
+ /**
+ * Returns the `i`th part in the pattern.
+ * Precondition: i < numParts()
+ *
+ * @param i Index of the part being accessed.
+ * @return A reference to the part at index `i`.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const PatternPart& getPart(int32_t i) const;
+
+ // Gets around not being able to declare Pattern::Iterator as a friend
+ // in PatternPart
+ static const std::variant<UnicodeString, Expression, Markup>&
+ patternContents(const PatternPart& p) { return p.piece; }
+ }; // class Pattern
+
+ /**
+ * A `Variant` pairs a list of keys with a pattern
+ * It corresponds to the `Variant` interface
+ * defined in https://github.com/unicode-org/message-format-wg/tree/main/spec/data-model
+ *
+ * `Variant` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Variant : public UObject {
+ public:
+ /**
+ * Accesses the pattern of the variant.
+ *
+ * @return A reference to the pattern.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Pattern& getPattern() const { return p; }
+ /**
+ * Accesses the keys of the variant.
+ *
+ * @return A reference to the keys.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const SelectorKeys& getKeys() const { return k; }
+ /**
+ * Constructor. Returns a variant that formats to `pattern`
+ * when `keys` match the selector expressions in the enclosing
+ * `match` construct.
+ *
+ * @param keys A reference to a `SelectorKeys`.
+ * @param pattern A pattern (passed by move)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Variant(const SelectorKeys& keys, Pattern&& pattern) : k(keys), p(std::move(pattern)) {}
+ /**
+ * Non-member swap function.
+ * @param v1 will get v2's contents
+ * @param v2 will get v1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Variant& v1, Variant& v2) noexcept {
+ using std::swap;
+
+ swap(v1.k, v2.k);
+ swap(v1.p, v2.p);
+ }
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Variant& operator=(Variant other) noexcept;
+ /**
+ * Default constructor.
+ * Returns a Variant in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Variant() = default;
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Variant(const Variant&);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Variant();
+ private:
+ /* const */ SelectorKeys k;
+ /* const */ Pattern p;
+ }; // class Variant
+ } // namespace data_model
+
+ namespace data_model {
+ /**
+ * A `Binding` pairs a variable name with an expression.
+ * It corresponds to the `Declaration` interface
+ * defined in https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#messages
+ *
+ * `Binding` is immutable and copyable. It is not movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Binding : public UObject {
+ public:
+ /**
+ * Accesses the right-hand side of a binding.
+ *
+ * @return A reference to the expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Expression& getValue() const;
+ /**
+ * Accesses the left-hand side of the binding.
+ *
+ * @return A reference to the variable name.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const VariableName& getVariable() const { return var; }
+ /**
+ * Constructor for input binding.
+ *
+ * @param variableName The variable name (left-hand side) of the binding. Passed by move.
+ * @param rhs The right-hand side of the input binding. Passed by move.
+ * `rhs` must have an operand that is a variable reference to `variableName`.
+ * If `rhs` has an operator, it must be a function call.
+ * If either of these properties is violated, `errorCode` is set to
+ * U_INVALID_STATE_ERROR.
+ * @param errorCode Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ static Binding input(UnicodeString&& variableName, Expression&& rhs, UErrorCode& errorCode);
+ /**
+ * Returns true if and only if this binding represents a local declaration.
+ * Otherwise, it's an input declaration.
+ *
+ * @return True if this binding represents a variable and expression;
+ * false if it represents a variable plus an annotation.
+ */
+ UBool isLocal() const { return local; }
+ /**
+ * Constructor.
+ *
+ * @param v A variable name.
+ * @param e An expression.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Binding(const VariableName& v, Expression&& e) : var(v), expr(std::move(e)), local(true), annotation(nullptr) {}
+ /**
+ * Non-member swap function.
+ * @param b1 will get b2's contents
+ * @param b2 will get b1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Binding& b1, Binding& b2) noexcept {
+ using std::swap;
+
+ swap(b1.var, b2.var);
+ swap(b1.expr, b2.expr);
+ swap(b1.local, b2.local);
+ b1.updateAnnotation();
+ b2.updateAnnotation();
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Binding(const Binding& other);
+ /**
+ * Copy assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Binding& operator=(Binding) noexcept;
+ /**
+ * Default constructor.
+ * Puts the Binding into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Binding() : local(true) {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Binding();
+ private:
+ friend class message2::Checker;
+ friend class message2::MessageFormatter;
+ friend class message2::Parser;
+ friend class message2::Serializer;
+
+ /* const */ VariableName var;
+ /* const */ Expression expr;
+ /* const */ bool local;
+
+ // The following field is always nullptr for a local
+ // declaration, and possibly nullptr for an .input declaration
+ // If non-null, the referent is a member of `expr` so
+ // its lifetime is the same as the lifetime of the enclosing Binding
+ // (as long as there's no mutation)
+ const Callable* annotation = nullptr;
+
+ const OptionMap& getOptionsInternal() const;
+
+ bool hasAnnotation() const { return !local && (annotation != nullptr); }
+ void updateAnnotation();
+ }; // class Binding
+ } // namespace data_model
+} // namespace message2
+
+ /// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the LocalPointer that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API LocalPointerBase<message2::data_model::Variant>;
+template class U_I18N_API LocalPointerBase<message2::data_model::Binding>;
+template class U_I18N_API LocalArray<message2::data_model::Variant>;
+template class U_I18N_API LocalArray<message2::data_model::Binding>;
+#endif
+/// @endcond
+
+namespace message2 {
+ using namespace data_model;
+
+
+ // Internal only
+
+ class MFDataModel;
+
+ #ifndef U_IN_DOXYGEN
+ class Matcher : public UObject {
+ public:
+ Matcher& operator=(Matcher);
+ Matcher(const Matcher&);
+ /**
+ * Non-member swap function.
+ * @param m1 will get m2's contents
+ * @param m2 will get m1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Matcher& m1, Matcher& m2) noexcept {
+ using std::swap;
+
+ if (m1.bogus) {
+ m2.bogus = true;
+ return;
+ }
+ if (m2.bogus) {
+ m1.bogus = true;
+ return;
+ }
+ swap(m1.selectors, m2.selectors);
+ swap(m1.numSelectors, m2.numSelectors);
+ swap(m1.variants, m2.variants);
+ swap(m1.numVariants, m2.numVariants);
+ }
+ virtual ~Matcher();
+ private:
+
+ friend class MFDataModel;
+
+ Matcher(Expression* ss, int32_t ns, Variant* vs, int32_t nv);
+ Matcher() {}
+
+ // A Matcher may have numSelectors=0 and numVariants=0
+ // (this is a data model error, but it's representable).
+ // So we have to keep a separate flag to track failed copies.
+ bool bogus = false;
+
+ // The expressions that are being matched on.
+ LocalArray<Expression> selectors;
+ // The number of selectors
+ int32_t numSelectors = 0;
+ // The list of `when` clauses (case arms).
+ LocalArray<Variant> variants;
+ // The number of variants
+ int32_t numVariants = 0;
+ }; // class Matcher
+ #endif
+} // namespace message2
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::variant that is used as a
+// data member of various MFDataModel classes.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
+template class U_I18N_API std::_Variant_storage_<false, icu::message2::Matcher,icu::message2::data_model::Pattern>;
+#endif
+template class U_I18N_API std::variant<icu::message2::Matcher,icu::message2::data_model::Pattern>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ // -----------------------------------------------------------------------
+ // Public MFDataModel class
+
+ /**
+ *
+ * The `MFDataModel` class describes a parsed representation of the text of a message.
+ * This representation is public as higher-level APIs for messages will need to know its public
+ * interface: for example, to re-instantiate a parsed message with different values for imported
+ variables.
+ *
+ * The MFDataModel API implements <a target="github"
+ href="https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md">the
+ * specification of the abstract syntax (data model representation)</a> for MessageFormat.
+ *
+ * `MFDataModel` is immutable, copyable and movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API MFDataModel : public UMemory {
+ /*
+ Classes that represent nodes in the data model are nested inside the
+ `MFDataModel` class.
+
+ Classes such as `Expression`, `Pattern` and `VariantMap` are immutable and
+ are constructed using the builder pattern.
+
+ Most classes representing nodes have copy constructors. This is because builders
+ contain immutable data that must be copied when calling `build()`, since the builder
+ could go out of scope before the immutable result of the builder does. Copying is
+ also necessary to prevent unexpected mutation if intermediate builders are saved
+ and mutated again after calling `build()`.
+
+ The copy constructors perform a deep copy, for example by copying the entire
+ list of options for an `Operator` (and copying the entire underlying vector.)
+ Some internal fields should be `const`, but are declared as non-`const` to make
+ the copy constructor simpler to implement. (These are noted throughout.) In
+ other words, those fields are `const` except during the execution of a copy
+ constructor.
+
+ On the other hand, intermediate `Builder` methods that return a `Builder&`
+ mutate the state of the builder, so in code like:
+
+ Expression::Builder& exprBuilder = Expression::builder()-> setOperand(foo);
+ Expression::Builder& exprBuilder2 = exprBuilder.setOperator(bar);
+
+ the call to `setOperator()` would mutate `exprBuilder`, since `exprBuilder`
+ and `exprBuilder2` are references to the same object.
+
+ An alternate choice would be to make `build()` destructive, so that copying would
+ be unnecessary. Or, both copying and moving variants of `build()` could be
+ provided. Copying variants of the intermediate `Builder` methods could be
+ provided as well, if this proved useful.
+ */
+ public:
+ /**
+ * Accesses the local variable declarations for this data model.
+ *
+ * @return A vector of bindings for local variables.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Binding> getLocalVariables() const {
+ std::vector<Binding> result;
+ if (!bogus) {
+ return toStdVector<Binding>(bindings.getAlias(), bindingsLen);
+ }
+ return {};
+ }
+ /**
+ * Accesses the selectors. Returns an empty vector if this is a pattern message.
+ *
+ * @return A vector of selectors.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const std::vector<Expression> getSelectors() const {
+ if (std::holds_alternative<Pattern>(body)) {
+ return {};
+ }
+ const Matcher* match = std::get_if<Matcher>(&body);
+ // match must be non-null, given the previous check
+ return toStdVector<Expression>(match->selectors.getAlias(), match->numSelectors);
+ }
+ /**
+ * Accesses the variants. Returns an empty vector if this is a pattern message.
+ *
+ * @return A vector of variants.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<Variant> getVariants() const {
+ // Return empty vector if no variants
+ if (std::holds_alternative<Pattern>(body)) {
+ return {};
+ }
+ const Matcher* match = std::get_if<Matcher>(&body);
+ // match must be non-null, given the previous check
+ return toStdVector<Variant>(match->variants.getAlias(), match->numVariants);
+ return {};
+ }
+ /**
+ * Accesses the unsupported statements for this data model.
+ *
+ * @return A vector of unsupported statements.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ std::vector<UnsupportedStatement> getUnsupportedStatements() const {
+ std::vector<UnsupportedStatement> result;
+ if (!bogus) {
+ return toStdVector<UnsupportedStatement>(unsupportedStatements.getAlias(), unsupportedStatementsLen);
+ }
+ return {};
+ }
+ /**
+ * Accesses the pattern (in a message without selectors).
+ * Returns a reference to an empty pattern if the message has selectors.
+ *
+ * @return A reference to the pattern.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Pattern& getPattern() const;
+
+ /**
+ * The mutable `MFDataModel::Builder` class allows the data model to be
+ * constructed incrementally.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder;
+
+ /**
+ * Default constructor.
+ * Puts the MFDataModel into a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFDataModel();
+ /**
+ * Non-member swap function.
+ * @param m1 will get m2's contents
+ * @param m2 will get m1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(MFDataModel& m1, MFDataModel& m2) noexcept {
+ using std::swap;
+
+ if (m1.bogus) {
+ m2.bogus = true;
+ return;
+ }
+ if (m2.bogus) {
+ m1.bogus = true;
+ return;
+ }
+ swap(m1.body, m2.body);
+ swap(m1.bindings, m2.bindings);
+ swap(m1.bindingsLen, m2.bindingsLen);
+ swap(m1.unsupportedStatements, m2.unsupportedStatements);
+ swap(m1.unsupportedStatementsLen, m2.unsupportedStatementsLen);
+ }
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFDataModel& operator=(MFDataModel) noexcept;
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFDataModel(const MFDataModel& other);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~MFDataModel();
+
+ /**
+ * The mutable `MFDataModel::Builder` class allows the data model to be
+ * constructed incrementally. Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UMemory {
+ private:
+ friend class MFDataModel;
+
+ void checkDuplicate(const VariableName&, UErrorCode&) const;
+ void buildSelectorsMessage(UErrorCode&);
+ bool hasPattern = true;
+ bool hasSelectors = false;
+ Pattern pattern;
+ // The following members are not LocalPointers for the same reason as in SelectorKeys::Builder
+ UVector* selectors = nullptr;
+ UVector* variants = nullptr;
+ UVector* bindings = nullptr;
+ UVector* unsupportedStatements = nullptr;
+ public:
+ /**
+ * Adds a binding, There must not already be a binding
+ * with the same name.
+ *
+ * @param b The binding. Passed by move.
+ * @param status Input/output error code. Set to U_DUPLICATE_DECLARATION_ERROR
+ * if `addBinding()` was previously called with a binding
+ * with the same variable name as `b`.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addBinding(Binding&& b, UErrorCode& status);
+ /**
+ * Adds an unsupported statement.
+ *
+ * @param s The statement. Passed by move.
+ * @param status Input/output error code.
+ *
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addUnsupportedStatement(UnsupportedStatement&& s, UErrorCode& status);
+ /**
+ * Adds a selector expression. Copies `expression`.
+ * If a pattern was previously set, clears the pattern.
+ *
+ * @param selector Expression to add as a selector. Passed by move.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addSelector(Expression&& selector, UErrorCode& errorCode) noexcept;
+ /**
+ * Adds a single variant.
+ * If a pattern was previously set using `setPattern()`, clears the pattern.
+ *
+ * @param keys Keys for the variant. Passed by move.
+ * @param pattern Pattern for the variant. Passed by move.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& addVariant(SelectorKeys&& keys, Pattern&& pattern, UErrorCode& errorCode) noexcept;
+ /**
+ * Sets the body of the message as a pattern.
+ * If selectors and/or variants were previously set, clears them.
+ *
+ * @param pattern Pattern to represent the body of the message.
+ * Passed by move.
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setPattern(Pattern&& pattern);
+ /**
+ * Constructs a new immutable data model.
+ * If `setPattern()` has not been called and if `addSelector()` and
+ * `addVariant()` were not each called at least once,
+ * `status` is set to `U_INVALID_STATE_ERROR`.
+ * If `addSelector()` was called and `addVariant()` was never called,
+ * or vice versa, then `status` is set to U_INVALID_STATE_ERROR.
+ * Otherwise, either a Pattern or Selectors message is constructed
+ * based on the pattern that was previously set, or selectors and variants
+ * that were previously set.
+ *
+ * The builder object (`this`) can still be used after calling `build()`.
+ *
+ * @param status Input/output error code.
+ * @return The new MFDataModel
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFDataModel build(UErrorCode& status) const noexcept;
+ /**
+ * Default constructor.
+ * Returns a Builder with no pattern or selectors set.
+ * Either `setPattern()` or both `addSelector()` and
+ * `addVariant()` must be called before calling `build()`
+ * on the resulting builder.
+ *
+ * @param status Input/output error code.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& status);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ Builder(const Builder&) = delete;
+ Builder& operator=(const Builder&) = delete;
+ Builder(Builder&&) = delete;
+ Builder& operator=(Builder&&) = delete;
+ }; // class Builder
+
+ private:
+ friend class Checker;
+ friend class MessageFormatter;
+ friend class Serializer;
+
+ Pattern empty; // Provided so that `getPattern()` can return a result
+ // if called on a selectors message
+ bool hasPattern() const { return std::holds_alternative<Pattern>(body); }
+
+ bool bogus = false; // Set if a copy constructor fails
+
+ // A message body is either a matcher (selector list and variant list),
+ // or a single pattern
+ std::variant<Matcher, Pattern> body;
+
+ // Bindings for local variables
+ /* const */ LocalArray<Binding> bindings;
+ int32_t bindingsLen = 0;
+
+ // Unsupported statements
+ // (Treated as a type of `declaration` in the data model spec;
+ // stored separately for convenience)
+ /* const */ LocalArray<UnsupportedStatement> unsupportedStatements;
+ int32_t unsupportedStatementsLen = 0;
+
+ const Binding* getLocalVariablesInternal() const;
+ const Expression* getSelectorsInternal() const;
+ const Variant* getVariantsInternal() const;
+ const UnsupportedStatement* getUnsupportedStatementsInternal() const;
+
+ int32_t numSelectors() const {
+ const Matcher* matcher = std::get_if<Matcher>(&body);
+ return (matcher == nullptr ? 0 : matcher->numSelectors);
+ }
+ int32_t numVariants() const {
+ const Matcher* matcher = std::get_if<Matcher>(&body);
+ return (matcher == nullptr ? 0 : matcher->numVariants);
+ }
+
+ // Helper
+ void initBindings(const Binding*);
+
+ MFDataModel(const Builder& builder, UErrorCode&) noexcept;
+ }; // class MFDataModel
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_DATA_MODEL_H
+
+// eof
+
diff --git a/libicu/cts_headers/unicode/messageformat2_data_model_names.h b/libicu/cts_headers/unicode/messageformat2_data_model_names.h
new file mode 100644
index 000000000..fb3070793
--- /dev/null
+++ b/libicu/cts_headers/unicode/messageformat2_data_model_names.h
@@ -0,0 +1,42 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT_DATA_MODEL_NAMES_H
+#define MESSAGEFORMAT_DATA_MODEL_NAMES_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/unistr.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+
+ namespace data_model {
+ typedef UnicodeString VariableName;
+ typedef UnicodeString FunctionName;
+ } // namespace data_model
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT_DATA_MODEL_NAMES_H
+
+// eof
+
diff --git a/libicu/cts_headers/unicode/messageformat2_formattable.h b/libicu/cts_headers/unicode/messageformat2_formattable.h
new file mode 100644
index 000000000..8a779adb9
--- /dev/null
+++ b/libicu/cts_headers/unicode/messageformat2_formattable.h
@@ -0,0 +1,1017 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT2_FORMATTABLE_H
+#define MESSAGEFORMAT2_FORMATTABLE_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/chariter.h"
+#include "unicode/numberformatter.h"
+#include "unicode/messageformat2_data_model_names.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#include <map>
+#include <variant>
+
+U_NAMESPACE_BEGIN
+
+class Hashtable;
+class UVector;
+
+namespace message2 {
+
+ class Formatter;
+ class MessageContext;
+ class Selector;
+
+ // Formattable
+ // ----------
+
+ /**
+ * `FormattableObject` is an abstract class that can be implemented in order to define
+ * an arbitrary class that can be passed to a custom formatter or selector function.
+ * To be passed in such a way, it must be wrapped in a `Formattable` object.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormattableObject : public UObject {
+ public:
+ /**
+ * Returns an arbitrary string representing the type of this object.
+ * It's up to the implementor of this class, as well as the implementors
+ * of any custom functions that rely on particular values of this tag
+ * corresponding to particular classes that the object contents can be
+ * downcast to, to ensure that the type tags are used soundly.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual const UnicodeString& tag() const = 0;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~FormattableObject();
+ }; // class FormattableObject
+
+ class Formattable;
+} // namespace message2
+
+U_NAMESPACE_END
+
+/// @cond DOXYGEN_IGNORE
+// Export an explicit template instantiation of the std::variant that is used
+// to represent the message2::Formattable class.
+// (When building DLLs for Windows this is required.)
+// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
+// for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
+template class U_I18N_API std::_Variant_storage_<false,
+ double,
+ int64_t,
+ icu::UnicodeString,
+ icu::Formattable,
+ const icu::message2::FormattableObject *,
+ std::pair<const icu::message2::Formattable *,int32_t>>;
+#endif
+typedef std::pair<const icu::message2::Formattable*, int32_t> P;
+template class U_I18N_API std::variant<double,
+ int64_t,
+ icu::UnicodeString,
+ icu::Formattable,
+ const icu::message2::FormattableObject*,
+ P>;
+#endif
+/// @endcond
+
+U_NAMESPACE_BEGIN
+
+namespace message2 {
+ /**
+ * The `Formattable` class represents a typed value that can be formatted,
+ * originating either from a message argument or a literal in the code.
+ * ICU's Formattable class is not used in MessageFormat 2 because it's unsafe to copy an
+ * icu::Formattable value that contains an object. (See ICU-20275).
+ *
+ * `Formattable` is immutable (not deeply immutable) and
+ * is movable and copyable.
+ * (Copying does not do a deep copy when the wrapped value is an array or
+ * object. Likewise, while a pointer to a wrapped array or object is `const`,
+ * the referents of the pointers may be mutated by other code.)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Formattable : public UObject {
+ public:
+
+ /**
+ * Gets the data type of this Formattable object.
+ * @return the data type of this Formattable object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UFormattableType getType() const;
+
+ /**
+ * Gets the double value of this object. If this object is not of type
+ * UFMT_DOUBLE, then the result is undefined and the error code is set.
+ *
+ * @param status Input/output error code.
+ * @return the double value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ double getDouble(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (isDecimal() && getType() == UFMT_DOUBLE) {
+ return (std::get_if<icu::Formattable>(&contents))->getDouble();
+ }
+ if (std::holds_alternative<double>(contents)) {
+ return *(std::get_if<double>(&contents));
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return 0;
+ }
+
+ /**
+ * Gets the long value of this object. If this object is not of type
+ * UFMT_LONG then the result is undefined and the error code is set.
+ *
+ * @param status Input/output error code.
+ * @return the long value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int32_t getLong(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (isDecimal() && getType() == UFMT_LONG) {
+ return std::get_if<icu::Formattable>(&contents)->getLong();
+ }
+ if (std::holds_alternative<int64_t>(contents)) {
+ return static_cast<int32_t>(*(std::get_if<int64_t>(&contents)));
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return 0;
+ }
+
+ /**
+ * Gets the int64 value of this object. If this object is not of type
+ * kInt64 then the result is undefined and the error code is set.
+ * If conversion to int64 is desired, call getInt64()
+ *
+ * @param status Input/output error code.
+ * @return the int64 value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int64_t getInt64Value(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (isDecimal() && getType() == UFMT_INT64) {
+ return std::get_if<icu::Formattable>(&contents)->getInt64();
+ }
+ if (std::holds_alternative<int64_t>(contents)) {
+ return *(std::get_if<int64_t>(&contents));
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return 0;
+ }
+
+ /**
+ * Gets the int64 value of this object. If this object is of a numeric
+ * type and the magnitude is too large to fit in an int64, then
+ * the maximum or minimum int64 value, as appropriate, is returned
+ * and the status is set to U_INVALID_FORMAT_ERROR. If the
+ * magnitude fits in an int64, then a casting conversion is
+ * performed, with truncation of any fractional part. If this object is
+ * not a numeric type, then 0 is returned and
+ * the status is set to U_INVALID_FORMAT_ERROR.
+ * @param status the error code
+ * @return the int64 value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ int64_t getInt64(UErrorCode& status) const;
+ /**
+ * Gets the string value of this object. If this object is not of type
+ * kString then the result is undefined and the error code is set.
+ *
+ * @param status Input/output error code.
+ * @return A reference to the string value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getString(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (std::holds_alternative<UnicodeString>(contents)) {
+ return *std::get_if<UnicodeString>(&contents);
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return bogusString;
+ }
+
+ /**
+ * Gets the Date value of this object. If this object is not of type
+ * kDate then the result is undefined and the error code is set.
+ *
+ * @param status Input/output error code.
+ * @return the Date value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UDate getDate(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ if (isDate()) {
+ return *std::get_if<double>(&contents);
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return 0;
+ }
+
+ /**
+ * Returns true if the data type of this Formattable object
+ * is kDouble
+ * @return true if this is a pure numeric object
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool isNumeric() const { return (getType() == UFMT_DOUBLE || getType() == UFMT_LONG || getType() == UFMT_INT64); }
+
+ /**
+ * Gets the array value and count of this object. If this object
+ * is not of type kArray then the result is undefined and the error code is set.
+ *
+ * @param count fill-in with the count of this object.
+ * @param status Input/output error code.
+ * @return the array value of this object.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const Formattable* getArray(int32_t& count, UErrorCode& status) const;
+
+ /**
+ * Returns a pointer to the FormattableObject contained within this
+ * formattable, or if this object does not contain a FormattableObject,
+ * returns nullptr and sets the error code.
+ *
+ * @param status Input/output error code.
+ * @return a FormattableObject pointer, or nullptr
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const FormattableObject* getObject(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ // Can't return a reference since FormattableObject
+ // is an abstract class
+ if (getType() == UFMT_OBJECT) {
+ return *std::get_if<const FormattableObject*>(&contents);
+ // TODO: should assert that if type is object, object is non-null
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+ return nullptr;
+ }
+ /**
+ * Non-member swap function.
+ * @param f1 will get f2's contents
+ * @param f2 will get f1's contents
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ friend inline void swap(Formattable& f1, Formattable& f2) noexcept {
+ using std::swap;
+
+ swap(f1.contents, f2.contents);
+ swap(f1.holdsDate, f2.holdsDate);
+ }
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(const Formattable&);
+ /**
+ * Assignment operator
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable& operator=(Formattable) noexcept;
+ /**
+ * Default constructor. Leaves the Formattable in a
+ * valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable() : contents(0.0) {}
+ /**
+ * String constructor.
+ *
+ * @param s A string to wrap as a Formattable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(const UnicodeString& s) : contents(s) {}
+ /**
+ * Double constructor.
+ *
+ * @param d A double value to wrap as a Formattable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(double d) : contents(d) {}
+ /**
+ * Int64 constructor.
+ *
+ * @param i An int64 value to wrap as a Formattable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(int64_t i) : contents(i) {}
+ /**
+ * Date factory method.
+ *
+ * @param d A UDate value to wrap as a Formattable.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ static Formattable forDate(UDate d) {
+ Formattable f;
+ f.contents = d;
+ f.holdsDate = true;
+ return f;
+ }
+ /**
+ * Creates a Formattable object of an appropriate numeric type from a
+ * a decimal number in string form. The Formattable will retain the
+ * full precision of the input in decimal format, even when it exceeds
+ * what can be represented by a double or int64_t.
+ *
+ * @param number the unformatted (not localized) string representation
+ * of the Decimal number.
+ * @param status the error code. Possible errors include U_INVALID_FORMAT_ERROR
+ * if the format of the string does not conform to that of a
+ * decimal number.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ static Formattable forDecimal(std::string_view number, UErrorCode& status);
+ /**
+ * Array constructor.
+ *
+ * @param arr An array of Formattables, which is adopted.
+ * @param len The length of the array.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(const Formattable* arr, int32_t len) : contents(std::pair(arr, len)) {}
+ /**
+ * Object constructor.
+ *
+ * @param obj A FormattableObject (not adopted).
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Formattable(const FormattableObject* obj) : contents(obj) {}
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Formattable();
+ /**
+ * Converts the Formattable object to an ICU Formattable object.
+ * If this has type UFMT_OBJECT or kArray, then `status` is set to
+ * U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * @param status Input/output error code.
+ * @return An icu::Formattable value with the same value as this.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ icu::Formattable asICUFormattable(UErrorCode& status) const;
+ private:
+
+ std::variant<double,
+ int64_t,
+ UnicodeString,
+ icu::Formattable, // represents a Decimal
+ const FormattableObject*,
+ std::pair<const Formattable*, int32_t>> contents;
+ bool holdsDate = false; // otherwise, we get type errors about UDate being a duplicate type
+ UnicodeString bogusString; // :((((
+
+ UBool isDecimal() const {
+ return std::holds_alternative<icu::Formattable>(contents);
+ }
+ UBool isDate() const {
+ return std::holds_alternative<double>(contents) && holdsDate;
+ }
+ }; // class Formattable
+
+/**
+ * Internal use only, but has to be included here as part of the implementation
+ * of the header-only `FunctionOptions::getOptions()` method
+ *
+ * A `ResolvedFunctionOption` represents the result of evaluating
+ * a single named function option. It pairs the given name with the `Formattable`
+ * value resulting from evaluating the option's value.
+ *
+ * `ResolvedFunctionOption` is immutable and is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+#ifndef U_IN_DOXYGEN
+class U_I18N_API ResolvedFunctionOption : public UObject {
+ private:
+
+ /* const */ UnicodeString name;
+ /* const */ Formattable value;
+
+ public:
+ const UnicodeString& getName() const { return name; }
+ const Formattable& getValue() const { return value; }
+ ResolvedFunctionOption(const UnicodeString& n, const Formattable& f) : name(n), value(f) {}
+ ResolvedFunctionOption() {}
+ ResolvedFunctionOption(ResolvedFunctionOption&&);
+ ResolvedFunctionOption& operator=(ResolvedFunctionOption&& other) noexcept {
+ name = std::move(other.name);
+ value = std::move(other.value);
+ return *this;
+ }
+ virtual ~ResolvedFunctionOption();
+}; // class ResolvedFunctionOption
+#endif
+
+/**
+ * Mapping from option names to `message2::Formattable` objects, obtained
+ * by calling `getOptions()` on a `FunctionOptions` object.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+using FunctionOptionsMap = std::map<UnicodeString, message2::Formattable>;
+
+/**
+ * Structure encapsulating named options passed to a custom selector or formatter.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+class U_I18N_API FunctionOptions : public UObject {
+ public:
+ /**
+ * Returns a map of all name-value pairs provided as options to this function.
+ * The syntactic order of options is not guaranteed to
+ * be preserved.
+ *
+ * This class is immutable and movable but not copyable.
+ *
+ * @return A map from strings to `message2::Formattable` objects representing
+ * the results of resolving each option value.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptionsMap getOptions() const {
+ int32_t len;
+ const ResolvedFunctionOption* resolvedOptions = getResolvedFunctionOptions(len);
+ FunctionOptionsMap result;
+ for (int32_t i = 0; i < len; i++) {
+ const ResolvedFunctionOption& opt = resolvedOptions[i];
+ result[opt.getName()] = opt.getValue();
+ }
+ return result;
+ }
+ /**
+ * Default constructor.
+ * Returns an empty mapping.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptions() { options = nullptr; }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~FunctionOptions();
+ /**
+ * Move assignment operator:
+ * The source FunctionOptions will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptions& operator=(FunctionOptions&&) noexcept;
+ /**
+ * Move constructor:
+ * The source FunctionOptions will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptions(FunctionOptions&&);
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FunctionOptions& operator=(const FunctionOptions&) = delete;
+ private:
+ friend class MessageFormatter;
+ friend class StandardFunctions;
+
+ explicit FunctionOptions(UVector&&, UErrorCode&);
+
+ const ResolvedFunctionOption* getResolvedFunctionOptions(int32_t& len) const;
+ UBool getFunctionOption(const UnicodeString&, Formattable&) const;
+ // Returns empty string if option doesn't exist
+ UnicodeString getStringFunctionOption(const UnicodeString&) const;
+ int32_t optionsCount() const { return functionOptionsLen; }
+
+ // Named options passed to functions
+ // This is not a Hashtable in order to make it possible for code in a public header file
+ // to construct a std::map from it, on-the-fly. Otherwise, it would be impossible to put
+ // that code in the header because it would have to call internal Hashtable methods.
+ ResolvedFunctionOption* options;
+ int32_t functionOptionsLen = 0;
+}; // class FunctionOptions
+
+
+ // TODO doc comments
+ // Encapsulates either a formatted string or formatted number;
+ // more output types could be added in the future.
+
+ /**
+ * A `FormattedValue` represents the result of formatting a `message2::Formattable`.
+ * It contains either a string or a formatted number. (More types could be added
+ * in the future.)
+ *
+ * `FormattedValue` is immutable and movable. It is not copyable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormattedValue : public UObject {
+ public:
+ /**
+ * Formatted string constructor.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit FormattedValue(const UnicodeString&);
+ /**
+ * Formatted number constructor.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit FormattedValue(number::FormattedNumber&&);
+ /**
+ * Default constructor. Leaves the FormattedValue in
+ * a valid but undefined state.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedValue() : type(kString) {}
+ /**
+ * Returns true iff this is a formatted string.
+ *
+ * @return True if and only if this value is a formatted string.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isString() const { return type == kString; }
+ /**
+ * Returns true iff this is a formatted number.
+ *
+ * @return True if and only if this value is a formatted number.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isNumber() const { return type == kNumber; }
+ /**
+ * Gets the string contents of this value. If !isString(), then
+ * the result is undefined.
+ * @return A reference to a formatted string.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getString() const { return stringOutput; }
+ /**
+ * Gets the number contents of this value. If !isNumber(), then
+ * the result is undefined.
+ * @return A reference to a formatted number.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const number::FormattedNumber& getNumber() const { return numberOutput; }
+ /**
+ * Move assignment operator:
+ * The source FormattedValue will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedValue& operator=(FormattedValue&&) noexcept;
+ /**
+ * Move constructor:
+ * The source FormattedValue will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedValue(FormattedValue&& other) { *this = std::move(other); }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~FormattedValue();
+ private:
+ enum Type {
+ kString,
+ kNumber
+ };
+ Type type;
+ UnicodeString stringOutput;
+ number::FormattedNumber numberOutput;
+ }; // class FormattedValue
+
+ /**
+ * A `FormattablePlaceholder` encapsulates an input value (a `message2::Formattable`)
+ * together with an optional output value (a `message2::FormattedValue`).
+ * More information, such as source line/column numbers, could be added to the class
+ * in the future.
+ *
+ * `FormattablePlaceholder` is immutable (not deeply immutable) and movable.
+ * It is not copyable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormattedPlaceholder : public UObject {
+ public:
+ /**
+ * Fallback constructor. Constructs a value that represents a formatting error,
+ * without recording an input `Formattable` as the source.
+ *
+ * @param s An error string. (See the MessageFormat specification for details
+ * on fallback strings.)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ explicit FormattedPlaceholder(const UnicodeString& s) : fallback(s), type(kFallback) {}
+ /**
+ * Constructor for fully formatted placeholders.
+ *
+ * @param input A `FormattedPlaceholder` containing the fallback string and source
+ * `Formattable` used to construct the formatted value.
+ * @param output A `FormattedValue` representing the formatted output of `input`.
+ * Passed by move.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder(const FormattedPlaceholder& input, FormattedValue&& output)
+ : fallback(input.fallback), source(input.source),
+ formatted(std::move(output)), previousOptions(FunctionOptions()), type(kEvaluated) {}
+ /**
+ * Constructor for fully formatted placeholders with options.
+ *
+ * @param input A `FormattedPlaceholder` containing the fallback string and source
+ * `Formattable` used to construct the formatted value.
+ * @param opts Function options that were used to construct `output`. May be the empty map.
+ * @param output A `FormattedValue` representing the formatted output of `input`.
+ * Passed by move.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder(const FormattedPlaceholder& input, FunctionOptions&& opts, FormattedValue&& output)
+ : fallback(input.fallback), source(input.source),
+ formatted(std::move(output)), previousOptions(std::move(opts)), type(kEvaluated) {}
+ /**
+ * Constructor for unformatted placeholders.
+ *
+ * @param input A `Formattable` object.
+ * @param fb Fallback string to use if an error occurs while formatting the input.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder(const Formattable& input, const UnicodeString& fb)
+ : fallback(fb), source(input), type(kUnevaluated) {}
+ /**
+ * Default constructor. Leaves the FormattedPlaceholder in a
+ * valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder() : type(kNull) {}
+ /**
+ * Returns the source `Formattable` value for this placeholder.
+ * The result is undefined if this is a null operand.
+ *
+ * @return A message2::Formattable value.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const message2::Formattable& asFormattable() const;
+ /**
+ * Returns true iff this is a fallback placeholder.
+ *
+ * @return True if and only if this placeholder was constructed from a fallback string,
+ * with no `Formattable` source or formatting output.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isFallback() const { return type == kFallback; }
+ /**
+ * Returns true iff this is a null placeholder.
+ *
+ * @return True if and only if this placeholder represents the absent argument to a formatter
+ * that was invoked without an argument.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isNullOperand() const { return type == kNull; }
+ /**
+ * Returns true iff this has formatting output.
+ *
+ * @return True if and only if this was constructed from both an input `Formattable` and
+ * output `FormattedValue`.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool isEvaluated() const { return (type == kEvaluated); }
+ /**
+ * Returns true iff this represents a valid argument to the formatter.
+ *
+ * @return True if and only if this is neither the null argument nor a fallback placeholder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ bool canFormat() const { return !(isFallback() || isNullOperand()); }
+ /**
+ * Gets the fallback value of this placeholder, to be used in its place if an error occurs while
+ * formatting it.
+ * @return A reference to this placeholder's fallback string.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const UnicodeString& getFallback() const { return fallback; }
+ /**
+ * Returns the options of this placeholder. The result is the empty map if !isEvaluated().
+ * @return A reference to an option map, capturing the options that were used
+ * in producing the output of this `FormattedPlaceholder`
+ * (or empty if there is no output)
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const FunctionOptions& options() const { return previousOptions; }
+
+ /**
+ * Returns the formatted output of this placeholder. The result is undefined if !isEvaluated().
+ * @return A fully formatted `FormattedPlaceholder`.
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const FormattedValue& output() const { return formatted; }
+ /**
+ * Move assignment operator:
+ * The source FormattedPlaceholder will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder& operator=(FormattedPlaceholder&&) noexcept;
+ /**
+ * Move constructor:
+ * The source FormattedPlaceholder will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormattedPlaceholder(FormattedPlaceholder&& other) { *this = std::move(other); }
+ /**
+ * Formats this as a string, using defaults. If this is
+ * either the null operand or is a fallback value, the return value is the result of formatting the
+ * fallback value (which is the default fallback string if this is the null operand).
+ * If there is no formatted output and the input is object- or array-typed,
+ * then the argument is treated as a fallback value, since there is no default formatter
+ * for objects or arrays.
+ *
+ * @param locale The locale to use for formatting numbers or dates
+ * @param status Input/output error code
+ * @return The result of formatting this placeholder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UnicodeString formatToString(const Locale& locale,
+ UErrorCode& status) const;
+
+ private:
+ friend class MessageFormatter;
+
+ enum Type {
+ kFallback, // Represents the result of formatting that encountered an error
+ kNull, // Represents the absence of both an output and an input (not necessarily an error)
+ kUnevaluated, // `source` should be valid, but there's no result yet
+ kEvaluated, // `formatted` exists
+ };
+ UnicodeString fallback;
+ Formattable source;
+ FormattedValue formatted;
+ FunctionOptions previousOptions; // Ignored unless type is kEvaluated
+ Type type;
+ }; // class FormattedPlaceholder
+
+ /**
+ * Not yet implemented: The result of a message formatting operation. Based on
+ * ICU4J's FormattedMessage.java.
+ *
+ * The class will contain information allowing the result to be viewed as a string,
+ * iterator, etc. (TBD)
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormattedMessage : public icu::FormattedValue {
+ public:
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ FormattedMessage(UErrorCode& status) {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ int32_t length(UErrorCode& status) const {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return -1;
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ char16_t charAt(int32_t index, UErrorCode& status) const {
+ (void) index;
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return 0;
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ StringPiece subSequence(int32_t start, int32_t end, UErrorCode& status) const {
+ (void) start;
+ (void) end;
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return "";
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ UnicodeString toString(UErrorCode& status) const override {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return {};
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ UnicodeString toTempString(UErrorCode& status) const override {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return {};
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ Appendable& appendTo(Appendable& appendable, UErrorCode& status) const override {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return appendable;
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override {
+ (void) cfpos;
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return false;
+ }
+ /**
+ * Not yet implemented.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ CharacterIterator* toCharacterIterator(UErrorCode& status) {
+ if (U_SUCCESS(status)) {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ return nullptr;
+ }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for ICU internal use only.
+ */
+ virtual ~FormattedMessage();
+ }; // class FormattedMessage
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_FORMATTABLE_H
+
+// eof
diff --git a/libicu/cts_headers/unicode/messageformat2_function_registry.h b/libicu/cts_headers/unicode/messageformat2_function_registry.h
new file mode 100644
index 000000000..b8429e3b8
--- /dev/null
+++ b/libicu/cts_headers/unicode/messageformat2_function_registry.h
@@ -0,0 +1,429 @@
+// © 2024 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#ifndef MESSAGEFORMAT2_FUNCTION_REGISTRY_H
+#define MESSAGEFORMAT2_FUNCTION_REGISTRY_H
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#if !UCONFIG_NO_MF2
+
+#include "unicode/messageformat2_data_model_names.h"
+#include "unicode/messageformat2_formattable.h"
+
+#ifndef U_HIDE_DEPRECATED_API
+
+#include <map>
+
+U_NAMESPACE_BEGIN
+
+class Hashtable;
+class UVector;
+
+namespace message2 {
+
+ using namespace data_model;
+
+ /**
+ * Interface that factory classes for creating formatters must implement.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API FormatterFactory : public UObject {
+ // TODO: the coding guidelines say that interface classes
+ // shouldn't inherit from UObject, but if I change it so these
+ // classes don't, and the individual formatter factory classes
+ // inherit from public FormatterFactory, public UObject, then
+ // memory leaks ensue
+ public:
+ /**
+ * Constructs a new formatter object. This method is not const;
+ * formatter factories with local state may be defined.
+ *
+ * @param locale Locale to be used by the formatter.
+ * @param status Input/output error code.
+ * @return The new Formatter, which is non-null if U_SUCCESS(status).
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual Formatter* createFormatter(const Locale& locale, UErrorCode& status) = 0;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~FormatterFactory();
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormatterFactory& operator=(const FormatterFactory&) = delete;
+ }; // class FormatterFactory
+
+ /**
+ * Interface that factory classes for creating selectors must implement.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API SelectorFactory : public UObject {
+ public:
+ /**
+ * Constructs a new selector object.
+ *
+ * @param locale Locale to be used by the selector.
+ * @param status Input/output error code.
+ * @return The new selector, which is non-null if U_SUCCESS(status).
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual Selector* createSelector(const Locale& locale, UErrorCode& status) const = 0;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~SelectorFactory();
+ /**
+ * Copy constructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ SelectorFactory& operator=(const SelectorFactory&) = delete;
+ }; // class SelectorFactory
+
+ /**
+ * Defines mappings from names of formatters and selectors to functions implementing them.
+ * The required set of formatter and selector functions is defined in the spec. Users can
+ * also define custom formatter and selector functions.
+ *
+ * `MFFunctionRegistry` is immutable and movable. It is not copyable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API MFFunctionRegistry : public UObject {
+ private:
+
+ using FormatterMap = Hashtable; // Map from stringified function names to FormatterFactory*
+ using SelectorMap = Hashtable; // Map from stringified function names to SelectorFactory*
+
+ public:
+ /**
+ * Looks up a formatter factory by the name of the formatter. The result is non-const,
+ * since formatter factories may have local state. Returns the result by pointer
+ * rather than by reference since it can fail.
+ *
+ * @param formatterName Name of the desired formatter.
+ * @return A pointer to the `FormatterFactory` registered under `formatterName`, or null
+ * if no formatter was registered under that name. The pointer is not owned
+ * by the caller.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ FormatterFactory* getFormatter(const FunctionName& formatterName) const;
+ /**
+ * Looks up a selector factory by the name of the selector. (This returns the result by pointer
+ * rather than by reference since `FormatterFactory` is an abstract class.)
+ *
+ * @param selectorName Name of the desired selector.
+ * @return A pointer to the `SelectorFactory` registered under `selectorName`, or null
+ * if no formatter was registered under that name.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ const SelectorFactory* getSelector(const FunctionName& selectorName) const;
+ /**
+ * Looks up a formatter factory by a type tag. This method gets the name of the default formatter registered
+ * for that type. If no formatter was explicitly registered for this type, it returns false.
+ *
+ * @param formatterType Type tag for the desired `FormattableObject` type to be formatted.
+ * @param name Output parameter; initialized to the name of the default formatter for `formatterType`
+ * if one has been registered. Its value is undefined otherwise.
+ * @return True if and only if the function registry contains a default formatter for `formatterType`.
+ * If the return value is false, then the value of `name` is undefined.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ UBool getDefaultFormatterNameByType(const UnicodeString& formatterType, FunctionName& name) const;
+ /**
+ * The mutable Builder class allows each formatter and selector factory
+ * to be initialized separately; calling its `build()` method yields an
+ * immutable MFFunctionRegistry object.
+ *
+ * Builder is not copyable or movable.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Builder : public UObject {
+ private:
+ // Must use raw pointers to avoid instantiating `LocalPointer` on an internal type
+ FormatterMap* formatters;
+ SelectorMap* selectors;
+ Hashtable* formattersByType;
+
+ // Do not define copy constructor/assignment operator
+ Builder& operator=(const Builder&) = delete;
+ Builder(const Builder&) = delete;
+
+ public:
+ /*
+ Notes about `adoptFormatter()`'s type signature:
+
+ Alternative considered: take a non-owned FormatterFactory*
+ This is unsafe.
+
+ Alternative considered: take a FormatterFactory&
+ This requires getFormatter() to cast the reference to a pointer,
+ as it must return an unowned FormatterFactory* since it can fail.
+ That is also unsafe, since the caller could delete the pointer.
+
+ The "TemperatureFormatter" test from the previous ICU4J version doesn't work now,
+ as it only works if the `formatterFactory` argument is non-owned.
+ If registering a non-owned FormatterFactory is desirable, this could
+ be re-thought.
+ */
+ /**
+ * Registers a formatter factory to a given formatter name.
+ *
+ * @param formatterName Name of the formatter being registered.
+ * @param formatterFactory A pointer to a FormatterFactory object to use
+ * for creating `formatterName` formatters. This argument is adopted.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& adoptFormatter(const data_model::FunctionName& formatterName, FormatterFactory* formatterFactory, UErrorCode& errorCode);
+ /**
+ * Registers a formatter factory to a given type tag.
+ * (See `FormattableObject` for details on type tags.)
+ *
+ * @param type Tag for objects to be formatted with this formatter.
+ * @param functionName A reference to the name of the function to use for
+ * creating formatters for `formatterType` objects.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& setDefaultFormatterNameByType(const UnicodeString& type, const data_model::FunctionName& functionName, UErrorCode& errorCode);
+
+ /**
+ * Registers a selector factory to a given selector name. Adopts `selectorFactory`.
+ *
+ * @param selectorName Name of the selector being registered.
+ * @param selectorFactory A SelectorFactory object to use for creating `selectorName`
+ * selectors.
+ * @param errorCode Input/output error code
+ * @return A reference to the builder.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder& adoptSelector(const data_model::FunctionName& selectorName, SelectorFactory* selectorFactory, UErrorCode& errorCode);
+ /**
+ * Creates an immutable `MFFunctionRegistry` object with the selectors and formatters
+ * that were previously registered. The builder cannot be used after this call.
+ * The `build()` method is destructive to avoid the need for a deep copy of the
+ * `FormatterFactory` and `SelectorFactory` objects (this would be necessary because
+ * `FormatterFactory` can have mutable state), which in turn would require implementors
+ * of those interfaces to implement a `clone()` method.
+ *
+ * @return The new MFFunctionRegistry
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFFunctionRegistry build();
+ /**
+ * Default constructor.
+ * Returns a Builder with no functions registered.
+ *
+ * @param errorCode Input/output error code
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ Builder(UErrorCode& errorCode);
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Builder();
+ }; // class MFFunctionRegistry::Builder
+
+ /**
+ * Move assignment operator:
+ * The source MFFunctionRegistry will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFFunctionRegistry& operator=(MFFunctionRegistry&&) noexcept;
+ /**
+ * Move constructor:
+ * The source MFFunctionRegistry will be left in a valid but undefined state.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ MFFunctionRegistry(MFFunctionRegistry&& other) { *this = std::move(other); }
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~MFFunctionRegistry();
+
+ private:
+ friend class MessageContext;
+ friend class MessageFormatter;
+
+ // Do not define copy constructor or copy assignment operator
+ MFFunctionRegistry& operator=(const MFFunctionRegistry&) = delete;
+ MFFunctionRegistry(const MFFunctionRegistry&) = delete;
+
+ MFFunctionRegistry(FormatterMap* f, SelectorMap* s, Hashtable* byType);
+
+ MFFunctionRegistry() {}
+
+ // Debugging; should only be called on a function registry with
+ // all the standard functions registered
+ void checkFormatter(const char*) const;
+ void checkSelector(const char*) const;
+ void checkStandard() const;
+
+ bool hasFormatter(const data_model::FunctionName& f) const;
+ bool hasSelector(const data_model::FunctionName& s) const;
+ void cleanup() noexcept;
+
+ // Must use raw pointers to avoid instantiating `LocalPointer` on an internal type
+ FormatterMap* formatters = nullptr;
+ SelectorMap* selectors = nullptr;
+ // Mapping from strings (type tags) to FunctionNames
+ Hashtable* formattersByType = nullptr;
+ }; // class MFFunctionRegistry
+
+ /**
+ * Interface that formatter classes must implement.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Formatter : public UObject {
+ public:
+ /**
+ * Formats the input passed in `context` by setting an output using one of the
+ * `FormattingContext` methods or indicating an error.
+ *
+ * @param toFormat Placeholder, including a source formattable value and possibly
+ * the output of a previous formatter applied to it; see
+ * `message2::FormattedPlaceholder` for details. Passed by move.
+ * @param options The named function options. Passed by move
+ * @param status Input/output error code. Should not be set directly by the
+ * custom formatter, which should use `FormattingContext::setFormattingWarning()`
+ * to signal errors. The custom formatter may pass `status` to other ICU functions
+ * that can signal errors using this mechanism.
+ *
+ * @return The formatted value.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual FormattedPlaceholder format(FormattedPlaceholder&& toFormat,
+ FunctionOptions&& options,
+ UErrorCode& status) const = 0;
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Formatter();
+ }; // class Formatter
+
+ /**
+ * Interface that selector classes must implement.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ class U_I18N_API Selector : public UObject {
+ public:
+ /**
+ * Compares the input to an array of keys, and returns an array of matching
+ * keys sorted by preference.
+ *
+ * @param toFormat The unnamed function argument; passed by move.
+ * @param options A reference to the named function options.
+ * @param keys An array of strings that are compared to the input
+ * (`context.getFormattableInput()`) in an implementation-specific way.
+ * @param keysLen The length of `keys`.
+ * @param prefs An array of strings with length `keysLen`. The contents of
+ * the array is undefined. `selectKey()` should set the contents
+ * of `prefs` to a subset of `keys`, with the best match placed at the lowest index.
+ * @param prefsLen A reference that `selectKey()` should set to the length of `prefs`,
+ * which must be less than or equal to `keysLen`.
+ * @param status Input/output error code. Should not be set directly by the
+ * custom selector, which should use `FormattingContext::setSelectorError()`
+ * to signal errors. The custom selector may pass `status` to other ICU functions
+ * that can signal errors using this mechanism.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual void selectKey(FormattedPlaceholder&& toFormat,
+ FunctionOptions&& options,
+ const UnicodeString* keys,
+ int32_t keysLen,
+ UnicodeString* prefs,
+ int32_t& prefsLen,
+ UErrorCode& status) const = 0;
+ // Note: This takes array arguments because the internal MessageFormat code has to
+ // call this method, and can't include any code that constructs std::vectors.
+ /**
+ * Destructor.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+ virtual ~Selector();
+ }; // class Selector
+
+} // namespace message2
+
+U_NAMESPACE_END
+
+#endif // U_HIDE_DEPRECATED_API
+
+#endif /* #if !UCONFIG_NO_MF2 */
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // MESSAGEFORMAT2_FUNCTION_REGISTRY_H
+
+// eof
diff --git a/libicu/cts_headers/unicode/msgfmt.h b/libicu/cts_headers/unicode/msgfmt.h
index a8a61f90e..cb47ba487 100644
--- a/libicu/cts_headers/unicode/msgfmt.h
+++ b/libicu/cts_headers/unicode/msgfmt.h
@@ -444,7 +444,7 @@ public:
* @return the locale of the object.
* @stable ICU 2.0
*/
- virtual const Locale& getLocale(void) const;
+ virtual const Locale& getLocale() const;
/**
* Applies the given pattern string to this message format.
@@ -850,7 +850,7 @@ public:
* other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for
@@ -863,7 +863,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
#ifndef U_HIDE_INTERNAL_API
/**
diff --git a/libicu/cts_headers/unicode/normlzr.h b/libicu/cts_headers/unicode/normlzr.h
index 03a7aa080..0309bce53 100644
--- a/libicu/cts_headers/unicode/normlzr.h
+++ b/libicu/cts_headers/unicode/normlzr.h
@@ -466,7 +466,7 @@ public:
* @return the current normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 current(void);
+ UChar32 current();
/**
* Return the first character in the normalized text.
@@ -476,7 +476,7 @@ public:
* @return the first normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 first(void);
+ UChar32 first();
/**
* Return the last character in the normalized text.
@@ -486,7 +486,7 @@ public:
* @return the last normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 last(void);
+ UChar32 last();
/**
* Return the next character in the normalized text.
@@ -502,7 +502,7 @@ public:
* @return the next normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 next(void);
+ UChar32 next();
/**
* Return the previous character in the normalized text and decrement.
@@ -518,7 +518,7 @@ public:
* @return the previous normalized code point
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UChar32 previous(void);
+ UChar32 previous();
/**
* Set the iteration position in the input text that is being normalized,
@@ -536,7 +536,7 @@ public:
* This is equivalent to setIndexOnly(startIndex)).
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- void reset(void);
+ void reset();
/**
* Retrieve the current iteration position in the input text that is
@@ -552,7 +552,7 @@ public:
* @return the current index in the input text
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- int32_t getIndex(void) const;
+ int32_t getIndex() const;
/**
* Retrieve the index of the start of the input text. This is the begin index
@@ -562,7 +562,7 @@ public:
* @return the smallest index in the input text where the Normalizer operates
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- int32_t startIndex(void) const;
+ int32_t startIndex() const;
/**
* Retrieve the index of the end of the input text. This is the end index
@@ -574,7 +574,7 @@ public:
* @return the first index in the input text where the Normalizer does not operate
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- int32_t endIndex(void) const;
+ int32_t endIndex() const;
/**
* Returns true when both iterators refer to the same character in the same
@@ -610,7 +610,7 @@ public:
* @return the hash code
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- int32_t hashCode(void) const;
+ int32_t hashCode() const;
//-------------------------------------------------------------------------
// Property access methods
@@ -643,7 +643,7 @@ public:
* @see #setMode
* @deprecated ICU 56 Use Normalizer2 instead.
*/
- UNormalizationMode getUMode(void) const;
+ UNormalizationMode getUMode() const;
/**
* Set options that affect this <code>Normalizer</code>'s operation.
@@ -749,7 +749,7 @@ private:
UBool previousNormalize();
void init();
- void clearBuffer(void);
+ void clearBuffer();
//-------------------------------------------------------------------------
// Private data
diff --git a/libicu/cts_headers/unicode/nounit.h b/libicu/cts_headers/unicode/nounit.h
index 96aca35d0..6646074ce 100644
--- a/libicu/cts_headers/unicode/nounit.h
+++ b/libicu/cts_headers/unicode/nounit.h
@@ -43,7 +43,7 @@ namespace NoUnit {
* @stable ICU 68
*/
static inline MeasureUnit U_EXPORT2 base() {
- return MeasureUnit();
+ return {};
}
/**
diff --git a/libicu/cts_headers/unicode/numberformatter.h b/libicu/cts_headers/unicode/numberformatter.h
index 069324a9e..b02d987ce 100644
--- a/libicu/cts_headers/unicode/numberformatter.h
+++ b/libicu/cts_headers/unicode/numberformatter.h
@@ -93,15 +93,13 @@ class IFixedDecimal;
class FieldPositionIteratorHandler;
class FormattedStringBuilder;
-namespace numparse {
-namespace impl {
+namespace numparse::impl {
// Forward declarations:
class NumberParserImpl;
class MultiplierParseHandler;
-}
-}
+} // namespace numparse::impl
namespace units {
@@ -2497,11 +2495,18 @@ class U_I18N_API UnlocalizedNumberFormatter
explicit UnlocalizedNumberFormatter(
NumberFormatterSettings<UnlocalizedNumberFormatter>&& src) noexcept;
+ explicit UnlocalizedNumberFormatter(const impl::MacroProps &macros);
+
+ explicit UnlocalizedNumberFormatter(impl::MacroProps &&macros);
+
// To give the fluent setters access to this class's constructor:
friend class NumberFormatterSettings<UnlocalizedNumberFormatter>;
// To give NumberFormatter::with() access to this class's constructor:
friend class NumberFormatter;
+
+ // To give LNF::withoutLocale() access to this class's constructor:
+ friend class LocalizedNumberFormatter;
};
/**
@@ -2604,6 +2609,25 @@ class U_I18N_API LocalizedNumberFormatter
*/
Format* toFormat(UErrorCode& status) const;
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Disassociate the locale from this formatter.
+ *
+ * @return The fluent chain.
+ * @draft ICU 75
+ */
+ UnlocalizedNumberFormatter withoutLocale() const &;
+
+ /**
+ * Overload of withoutLocale() for use on an rvalue reference.
+ *
+ * @return The fluent chain.
+ * @see #withoutLocale
+ * @draft ICU 75
+ */
+ UnlocalizedNumberFormatter withoutLocale() &&;
+#endif // U_HIDE_DRAFT_API
+
/**
* Default constructor: puts the formatter into a valid but undefined state.
*
diff --git a/libicu/cts_headers/unicode/numberrangeformatter.h b/libicu/cts_headers/unicode/numberrangeformatter.h
index 8ca20f31d..b8bbc1ba0 100644
--- a/libicu/cts_headers/unicode/numberrangeformatter.h
+++ b/libicu/cts_headers/unicode/numberrangeformatter.h
@@ -462,11 +462,18 @@ class U_I18N_API UnlocalizedNumberRangeFormatter
explicit UnlocalizedNumberRangeFormatter(
NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>&& src) noexcept;
+ explicit UnlocalizedNumberRangeFormatter(const impl::RangeMacroProps &macros);
+
+ explicit UnlocalizedNumberRangeFormatter(impl::RangeMacroProps &&macros);
+
// To give the fluent setters access to this class's constructor:
friend class NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>;
// To give NumberRangeFormatter::with() access to this class's constructor:
friend class NumberRangeFormatter;
+
+ // To give LNRF::withoutLocale() access to this class's constructor:
+ friend class LocalizedNumberRangeFormatter;
};
/**
@@ -496,6 +503,25 @@ class U_I18N_API LocalizedNumberRangeFormatter
FormattedNumberRange formatFormattableRange(
const Formattable& first, const Formattable& second, UErrorCode& status) const;
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Disassociate the locale from this formatter.
+ *
+ * @return The fluent chain.
+ * @draft ICU 75
+ */
+ UnlocalizedNumberRangeFormatter withoutLocale() const &;
+
+ /**
+ * Overload of withoutLocale() for use on an rvalue reference.
+ *
+ * @return The fluent chain.
+ * @see #withoutLocale
+ * @draft ICU 75
+ */
+ UnlocalizedNumberRangeFormatter withoutLocale() &&;
+#endif // U_HIDE_DRAFT_API
+
/**
* Default constructor: puts the formatter into a valid but undefined state.
*
diff --git a/libicu/cts_headers/unicode/numfmt.h b/libicu/cts_headers/unicode/numfmt.h
index e1aa30927..aabbad4f1 100644
--- a/libicu/cts_headers/unicode/numfmt.h
+++ b/libicu/cts_headers/unicode/numfmt.h
@@ -199,23 +199,21 @@ public:
* @stable ICU 4.8
*/
kRoundUnnecessary,
-#ifndef U_HIDE_DRAFT_API
/**
* Rounds ties toward the odd number.
- * @draft ICU 73
+ * @stable ICU 73
*/
kRoundHalfOdd,
/**
* Rounds ties toward +∞.
- * @draft ICU 73
+ * @stable ICU 73
*/
kRoundHalfCeiling,
/**
* Rounds ties toward -∞.
- * @draft ICU 73
+ * @stable ICU 73
*/
kRoundHalfFloor,
-#endif /* U_HIDE_DRAFT_API */
};
/**
@@ -707,7 +705,7 @@ public:
* only.
* @stable ICU 2.0
*/
- UBool isParseIntegerOnly(void) const;
+ UBool isParseIntegerOnly() const;
/**
* Sets whether or not numbers should be parsed as integers only.
@@ -735,7 +733,7 @@ public:
* @see #setLenient
* @stable ICU 4.8
*/
- virtual UBool isLenient(void) const;
+ virtual UBool isLenient() const;
/**
* Create a default style NumberFormat for the current default locale.
@@ -898,7 +896,7 @@ public:
* @return a StringEnumeration over the locales available at the time of the call
* @stable ICU 2.6
*/
- static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
+ static StringEnumeration* U_EXPORT2 getAvailableLocales();
#endif /* UCONFIG_NO_SERVICE */
/**
@@ -910,7 +908,7 @@ public:
* @see setGroupingUsed
* @stable ICU 2.0
*/
- UBool isGroupingUsed(void) const;
+ UBool isGroupingUsed() const;
/**
* Set whether or not grouping will be used in this format.
@@ -928,7 +926,7 @@ public:
* @see setMaximumIntegerDigits
* @stable ICU 2.0
*/
- int32_t getMaximumIntegerDigits(void) const;
+ int32_t getMaximumIntegerDigits() const;
/**
* Sets the maximum number of digits allowed in the integer portion of a
@@ -952,7 +950,7 @@ public:
* @see setMinimumIntegerDigits
* @stable ICU 2.0
*/
- int32_t getMinimumIntegerDigits(void) const;
+ int32_t getMinimumIntegerDigits() const;
/**
* Sets the minimum number of digits allowed in the integer portion of a
@@ -974,7 +972,7 @@ public:
* @see setMaximumFractionDigits
* @stable ICU 2.0
*/
- int32_t getMaximumFractionDigits(void) const;
+ int32_t getMaximumFractionDigits() const;
/**
* Sets the maximum number of digits allowed in the fraction portion of a
@@ -996,7 +994,7 @@ public:
* @see setMinimumFractionDigits
* @stable ICU 2.0
*/
- int32_t getMinimumFractionDigits(void) const;
+ int32_t getMinimumFractionDigits() const;
/**
* Sets the minimum number of digits allowed in the fraction portion of a
@@ -1062,7 +1060,7 @@ public:
* @return A rounding mode
* @stable ICU 60
*/
- virtual ERoundingMode getRoundingMode(void) const;
+ virtual ERoundingMode getRoundingMode() const;
/**
* Set the rounding mode. If a subclass does not support rounding, this will do nothing.
@@ -1081,7 +1079,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override.
@@ -1094,7 +1092,7 @@ public:
* other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
protected:
@@ -1204,7 +1202,7 @@ public:
* be listed by getAvailableLocales.
* @stable ICU 2.6
*/
- virtual UBool visible(void) const = 0;
+ virtual UBool visible() const = 0;
/**
* Return the locale names directly supported by this factory. The number of names
@@ -1255,7 +1253,7 @@ public:
/**
* @stable ICU 2.6
*/
- virtual UBool visible(void) const override;
+ virtual UBool visible() const override;
/**
* @stable ICU 2.6
diff --git a/libicu/cts_headers/unicode/numsys.h b/libicu/cts_headers/unicode/numsys.h
index 51a6e147b..58072ff66 100644
--- a/libicu/cts_headers/unicode/numsys.h
+++ b/libicu/cts_headers/unicode/numsys.h
@@ -185,7 +185,7 @@ public:
* @stable ICU 4.2
*
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/libicu/cts_headers/unicode/parsepos.h b/libicu/cts_headers/unicode/parsepos.h
index d33a812ad..99cdd7eda 100644
--- a/libicu/cts_headers/unicode/parsepos.h
+++ b/libicu/cts_headers/unicode/parsepos.h
@@ -129,7 +129,7 @@ public:
* @return the current index.
* @stable ICU 2.0
*/
- inline int32_t getIndex(void) const;
+ inline int32_t getIndex() const;
/**
* Set the current parse position.
@@ -152,7 +152,7 @@ public:
* error index has not been set.
* @stable ICU 2.0
*/
- inline int32_t getErrorIndex(void) const;
+ inline int32_t getErrorIndex() const;
/**
* ICU "poor man's RTTI", returns a UClassID for this class.
diff --git a/libicu/cts_headers/unicode/platform.h b/libicu/cts_headers/unicode/platform.h
index a99784366..7aca76c67 100644
--- a/libicu/cts_headers/unicode/platform.h
+++ b/libicu/cts_headers/unicode/platform.h
@@ -207,6 +207,17 @@
#endif
/**
+ * \def U_REAL_MSVC
+ * Defined if the compiler is the real MSVC compiler (and not something like
+ * Clang setting _MSC_VER in order to compile Windows code that requires it).
+ * Otherwise undefined.
+ * @internal
+ */
+#if (defined(_MSC_VER) && !(defined(__clang__) && __clang__)) || defined(U_IN_DOXYGEN)
+# define U_REAL_MSVC
+#endif
+
+/**
* \def CYGWINMSVC
* Defined if this is Windows with Cygwin, but using MSVC rather than gcc.
* Otherwise undefined.
@@ -302,51 +313,6 @@
# define U_PLATFORM_IS_DARWIN_BASED 0
#endif
-/**
- * \def U_HAVE_STDINT_H
- * Defines whether stdint.h is available. It is a C99 standard header.
- * We used to include inttypes.h which includes stdint.h but we usually do not need
- * the additional definitions from inttypes.h.
- * @internal
- */
-#ifdef U_HAVE_STDINT_H
- /* Use the predefined value. */
-#elif U_PLATFORM_USES_ONLY_WIN32_API
-# if defined(__BORLANDC__) || U_PLATFORM == U_PF_MINGW || (defined(_MSC_VER) && _MSC_VER>=1600)
- /* Windows Visual Studio 9 and below do not have stdint.h & inttypes.h, but VS 2010 adds them. */
-# define U_HAVE_STDINT_H 1
-# else
-# define U_HAVE_STDINT_H 0
-# endif
-#elif U_PLATFORM == U_PF_SOLARIS
- /* Solaris has inttypes.h but not stdint.h. */
-# define U_HAVE_STDINT_H 0
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
- /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-# define U_HAVE_STDINT_H 0
-#else
-# define U_HAVE_STDINT_H 1
-#endif
-
-/**
- * \def U_HAVE_INTTYPES_H
- * Defines whether inttypes.h is available. It is a C99 standard header.
- * We include inttypes.h where it is available but stdint.h is not.
- * @internal
- */
-#ifdef U_HAVE_INTTYPES_H
- /* Use the predefined value. */
-#elif U_PLATFORM == U_PF_SOLARIS
- /* Solaris has inttypes.h but not stdint.h. */
-# define U_HAVE_INTTYPES_H 1
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
- /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-# define U_HAVE_INTTYPES_H 1
-#else
- /* Most platforms have both inttypes.h and stdint.h, or neither. */
-# define U_HAVE_INTTYPES_H U_HAVE_STDINT_H
-#endif
-
/*===========================================================================*/
/** @{ Compiler and environment features */
/*===========================================================================*/
@@ -507,6 +473,8 @@
/* Otherwise use the predefined value. */
#elif !defined(__cplusplus)
# define U_CPLUSPLUS_VERSION 0
+#elif __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
+# define U_CPLUSPLUS_VERSION 17
#elif __cplusplus >= 201402L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
# define U_CPLUSPLUS_VERSION 14
#elif __cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)
@@ -754,9 +722,9 @@
/*
* Notes:
* C++11 and C11 require support for UTF-16 literals
- * TODO: Fix for plain C. Doesn't work on Mac.
+ * Doesn't work on Mac C11 (see workaround in ptypes.h).
*/
-# if U_CPLUSPLUS_VERSION >= 11 || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
+# if defined(__cplusplus) || !U_PLATFORM_IS_DARWIN_BASED
# define U_HAVE_CHAR16_T 1
# else
# define U_HAVE_CHAR16_T 0
diff --git a/libicu/cts_headers/unicode/plurfmt.h b/libicu/cts_headers/unicode/plurfmt.h
index 8e6cbb445..b18489d7f 100644
--- a/libicu/cts_headers/unicode/plurfmt.h
+++ b/libicu/cts_headers/unicode/plurfmt.h
@@ -190,11 +190,6 @@ public:
* @param status output param set to success/failure code on exit, which
* must not indicate a failure before the function call.
* @stable ICU 4.0
- * <p>
- * <h4>Sample code</h4>
- * \snippet samples/plurfmtsample/plurfmtsample.cpp PluralFormatExample1
- * \snippet samples/plurfmtsample/plurfmtsample.cpp PluralFormatExample
- * <p>
*/
PluralFormat(const Locale& locale, const PluralRules& rules, UErrorCode& status);
@@ -513,7 +508,7 @@ public:
* @stable ICU 4.0
*
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/libicu/cts_headers/unicode/plurrule.h b/libicu/cts_headers/unicode/plurrule.h
index b7d95175f..7e2fe37f7 100644
--- a/libicu/cts_headers/unicode/plurrule.h
+++ b/libicu/cts_headers/unicode/plurrule.h
@@ -553,7 +553,7 @@ public:
* @stable ICU 4.0
*
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/libicu/cts_headers/unicode/ptypes.h b/libicu/cts_headers/unicode/ptypes.h
index 70324ffee..270a729cc 100644
--- a/libicu/cts_headers/unicode/ptypes.h
+++ b/libicu/cts_headers/unicode/ptypes.h
@@ -42,89 +42,25 @@
/* NULL, size_t, wchar_t */
#include <stddef.h>
-/*
- * If all compilers provided all of the C99 headers and types,
- * we would just unconditionally #include <stdint.h> here
- * and not need any of the stuff after including platform.h.
- */
-
-/* Find out if we have stdint.h etc. */
+/* More platform-specific definitions. */
#include "unicode/platform.h"
/*===========================================================================*/
/* Generic data types */
/*===========================================================================*/
-/* If your platform does not have the <stdint.h> header, you may
- need to edit the typedefs in the #else section below.
- Use #if...#else...#endif with predefined compiler macros if possible. */
-#if U_HAVE_STDINT_H
-
-/*
- * We mostly need <stdint.h> (which defines the standard integer types) but not <inttypes.h>.
- * <inttypes.h> includes <stdint.h> and adds the printf/scanf helpers PRId32, SCNx16 etc.
- * which we almost never use, plus stuff like imaxabs() which we never use.
- */
#include <stdint.h>
-#if U_PLATFORM == U_PF_OS390
-/* The features header is needed to get (u)int64_t sometimes. */
-#include <features.h>
-/* z/OS has <stdint.h>, but some versions are missing uint8_t (APAR PK62248). */
-#if !defined(__uint8_t)
-#define __uint8_t 1
-typedef unsigned char uint8_t;
-#endif
-#endif /* U_PLATFORM == U_PF_OS390 */
-
-#elif U_HAVE_INTTYPES_H
-
-# include <inttypes.h>
-
-#else /* neither U_HAVE_STDINT_H nor U_HAVE_INTTYPES_H */
-
-/// \cond
-#if ! U_HAVE_INT8_T
-typedef signed char int8_t;
-#endif
-
-#if ! U_HAVE_UINT8_T
-typedef unsigned char uint8_t;
-#endif
-
-#if ! U_HAVE_INT16_T
-typedef signed short int16_t;
-#endif
-
-#if ! U_HAVE_UINT16_T
-typedef unsigned short uint16_t;
-#endif
-
-#if ! U_HAVE_INT32_T
-typedef signed int int32_t;
-#endif
-
-#if ! U_HAVE_UINT32_T
-typedef unsigned int uint32_t;
+// C++11 and C11 both specify that the data type char16_t should exist, C++11
+// as a keyword and C11 as a typedef in the uchar.h header file, but not all
+// implementations (looking at you, Apple, spring 2024) actually do this, so
+// ICU4C must detect and deal with that.
+#if !defined(__cplusplus) && !defined(U_IN_DOXYGEN)
+# if U_HAVE_CHAR16_T
+# include <uchar.h>
+# else
+ typedef uint16_t char16_t;
+# endif
#endif
-#if ! U_HAVE_INT64_T
-#ifdef _MSC_VER
- typedef signed __int64 int64_t;
-#else
- typedef signed long long int64_t;
-#endif
-#endif
-
-#if ! U_HAVE_UINT64_T
-#ifdef _MSC_VER
- typedef unsigned __int64 uint64_t;
-#else
- typedef unsigned long long uint64_t;
-#endif
-#endif
-/// \endcond
-
-#endif /* U_HAVE_STDINT_H / U_HAVE_INTTYPES_H */
-
#endif /* _PTYPES_H */
diff --git a/libicu/cts_headers/unicode/rbbi.h b/libicu/cts_headers/unicode/rbbi.h
index 045238ac5..659e3e46b 100644
--- a/libicu/cts_headers/unicode/rbbi.h
+++ b/libicu/cts_headers/unicode/rbbi.h
@@ -44,7 +44,7 @@ class UnhandledEngine;
class UStack;
-#ifndef U_HIDE_DRAFT_API
+#ifndef U_HIDE_INTERNAL_API
/**
* The ExternalBreakEngine class define an abstract interface for the host environment
* to provide a low level facility to break text for unicode text in script that the text boundary
@@ -103,7 +103,7 @@ class ExternalBreakEngine : public UObject {
int32_t* foundBreaks, int32_t foundBreaksCapacity,
UErrorCode& status) const = 0;
};
-#endif /* U_HIDE_DRAFT_API */
+#endif /* U_HIDE_INTERNAL_API */
/**
@@ -388,14 +388,14 @@ public:
* @return A hash code
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const;
+ virtual int32_t hashCode() const;
/**
* Returns the description used to create this iterator
* @return the description used to create this iterator
* @stable ICU 2.0
*/
- virtual const UnicodeString& getRules(void) const;
+ virtual const UnicodeString& getRules() const;
//=======================================================================
// BreakIterator overrides
@@ -425,8 +425,7 @@ public:
* @return An iterator over the text being analyzed.
* @stable ICU 2.0
*/
- virtual CharacterIterator& getText(void) const override;
-
+ virtual CharacterIterator& getText() const override;
/**
* Get a UText for the text being analyzed.
@@ -486,14 +485,14 @@ public:
* @return The offset of the beginning of the text, zero.
* @stable ICU 2.0
*/
- virtual int32_t first(void) override;
+ virtual int32_t first() override;
/**
* Sets the current iteration position to the end of the text.
* @return The text's past-the-end offset.
* @stable ICU 2.0
*/
- virtual int32_t last(void) override;
+ virtual int32_t last() override;
/**
* Advances the iterator either forward or backward the specified number of steps.
@@ -512,14 +511,14 @@ public:
* @return The position of the first boundary after this one.
* @stable ICU 2.0
*/
- virtual int32_t next(void) override;
+ virtual int32_t next() override;
/**
* Moves the iterator backwards, to the last boundary preceding this one.
* @return The position of the last boundary position preceding this one.
* @stable ICU 2.0
*/
- virtual int32_t previous(void) override;
+ virtual int32_t previous() override;
/**
* Sets the iterator to refer to the first boundary position following
@@ -557,8 +556,7 @@ public:
* @return The current iteration position.
* @stable ICU 2.0
*/
- virtual int32_t current(void) const override;
-
+ virtual int32_t current() const override;
/**
* Return the status tag from the break rule that determined the boundary at
@@ -629,7 +627,7 @@ public:
* other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Returns the class ID for this class. This is useful only for
@@ -642,7 +640,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -799,7 +797,7 @@ private:
void dumpTables();
#endif /* U_HIDE_INTERNAL_API */
-#ifndef U_HIDE_DRAFT_API
+#ifndef U_HIDE_INTERNAL_API
/**
* Register a new external break engine. The external break engine will be adopted.
* Because ICU may choose to cache break engine internally, this must
@@ -811,7 +809,7 @@ private:
*/
static void U_EXPORT2 registerExternalBreakEngine(
ExternalBreakEngine* toAdopt, UErrorCode& status);
-#endif /* U_HIDE_DRAFT_API */
+#endif /* U_HIDE_INTERNAL_API */
};
diff --git a/libicu/cts_headers/unicode/rbnf.h b/libicu/cts_headers/unicode/rbnf.h
index f9a1c8f93..f42d91d77 100644
--- a/libicu/cts_headers/unicode/rbnf.h
+++ b/libicu/cts_headers/unicode/rbnf.h
@@ -436,7 +436,16 @@ enum URBNFRuleSetTag {
* <tr>
* <td>&lt;&lt;</td>
* <td>in normal rule</td>
- * <td>Divide the number by the rule's divisor and format the quotient</td>
+ * <td>Divide the number by the rule's divisor, perform floor() on the quotient,
+ * and format the resulting value.<br>
+ * If there is a DecimalFormat pattern between the &lt; characters and the
+ * rule does NOT also contain a &gt;&gt; substitution, we DON'T perform
+ * floor() on the quotient-- the quotient is passed through to the DecimalFormat
+ * intact. That is, for the value 1,900:<br>
+ * - "1/1000: &lt;&lt; thousand;" will produce "one thousand"<br>
+ * - "1/1000: &lt;0&lt; thousand;" will produce "2 thousand" (NOT "1 thousand")<br>
+ * - "1/1000: &lt;0&lt; seconds &gt;0&gt; milliseconds;" will produce "1 second 900 milliseconds"
+ * </td>
* </tr>
* <tr>
* <td></td>
@@ -764,7 +773,7 @@ public:
* @return the number of locales for which we have localized rule set display names.
* @stable ICU 3.2
*/
- virtual int32_t getNumberOfRuleSetDisplayNameLocales(void) const;
+ virtual int32_t getNumberOfRuleSetDisplayNameLocales() const;
/**
* Return the index'th display name locale.
@@ -978,7 +987,7 @@ public:
* @see #setLenient
* @stable ICU 2.0
*/
- virtual inline UBool isLenient(void) const override;
+ virtual inline UBool isLenient() const override;
#endif
@@ -1017,7 +1026,7 @@ public:
* @return A rounding mode
* @stable ICU 60
*/
- virtual ERoundingMode getRoundingMode(void) const override;
+ virtual ERoundingMode getRoundingMode() const override;
/**
* Set the rounding mode.
@@ -1032,14 +1041,14 @@ public:
*
* @stable ICU 2.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
*
* @stable ICU 2.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Sets the decimal format symbols, which is generally not changed
@@ -1122,7 +1131,7 @@ private:
#if !UCONFIG_NO_COLLATION
inline UBool
-RuleBasedNumberFormat::isLenient(void) const {
+RuleBasedNumberFormat::isLenient() const {
return lenient;
}
diff --git a/libicu/cts_headers/unicode/rbtz.h b/libicu/cts_headers/unicode/rbtz.h
index 1cc3483eb..3393b3d97 100644
--- a/libicu/cts_headers/unicode/rbtz.h
+++ b/libicu/cts_headers/unicode/rbtz.h
@@ -217,7 +217,7 @@ public:
* @return The TimeZone's raw GMT offset.
* @stable ICU 3.8
*/
- virtual int32_t getRawOffset(void) const override;
+ virtual int32_t getRawOffset() const override;
/**
* Queries if this time zone uses daylight savings time.
@@ -225,7 +225,7 @@ public:
* false, otherwise.
* @stable ICU 3.8
*/
- virtual UBool useDaylightTime(void) const override;
+ virtual UBool useDaylightTime() const override;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -313,8 +313,8 @@ public:
int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override;
private:
- void deleteRules(void);
- void deleteTransitions(void);
+ void deleteRules();
+ void deleteTransitions();
UVector* copyRules(UVector* source);
TimeZoneRule* findRuleInFinal(UDate date, UBool local,
int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
@@ -346,7 +346,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -359,7 +359,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/unicode/resbund.h b/libicu/cts_headers/unicode/resbund.h
index 30fc2ac0a..396537172 100644
--- a/libicu/cts_headers/unicode/resbund.h
+++ b/libicu/cts_headers/unicode/resbund.h
@@ -209,8 +209,7 @@ public:
* @return number of resources in a given resource.
* @stable ICU 2.0
*/
- int32_t
- getSize(void) const;
+ int32_t getSize() const;
/**
* returns a string from a string resource type
@@ -289,16 +288,14 @@ public:
* @return true if there are more elements, false if there is no more elements
* @stable ICU 2.0
*/
- UBool
- hasNext(void) const;
+ UBool hasNext() const;
/**
* Resets the internal context of a resource so that iteration starts from the first element.
*
* @stable ICU 2.0
*/
- void
- resetIterator(void);
+ void resetIterator();
/**
* Returns the key associated with this resource. Not all the resources have a key - only
@@ -307,8 +304,7 @@ public:
* @return a key associated to this resource, or nullptr if it doesn't have a key
* @stable ICU 2.0
*/
- const char*
- getKey(void) const;
+ const char* getKey() const;
/**
* Gets the locale ID of the resource bundle as a string.
@@ -317,9 +313,7 @@ public:
* @return the locale ID of the resource bundle as a string
* @stable ICU 2.0
*/
- const char*
- getName(void) const;
-
+ const char* getName() const;
/**
* Returns the type of a resource. Available types are defined in enum UResType
@@ -327,8 +321,7 @@ public:
* @return type of the given resource.
* @stable ICU 2.0
*/
- UResType
- getType(void) const;
+ UResType getType() const;
/**
* Returns the next resource in a given resource or nullptr if there are no more resources
@@ -424,8 +417,7 @@ public:
* @see getVersion
* @deprecated ICU 2.8 Use getVersion instead.
*/
- const char*
- getVersionNumber(void) const;
+ const char* getVersionNumber() const;
#endif /* U_HIDE_DEPRECATED_API */
/**
@@ -445,8 +437,7 @@ public:
* @return a Locale object
* @deprecated ICU 2.8 Use getLocale(ULocDataLocaleType type, UErrorCode &status) overload instead.
*/
- const Locale&
- getLocale(void) const;
+ const Locale& getLocale() const;
#endif /* U_HIDE_DEPRECATED_API */
/**
diff --git a/libicu/cts_headers/unicode/schriter.h b/libicu/cts_headers/unicode/schriter.h
index a2ab17982..96f03604a 100644
--- a/libicu/cts_headers/unicode/schriter.h
+++ b/libicu/cts_headers/unicode/schriter.h
@@ -156,14 +156,14 @@ public:
* @return a class ID for this object.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return a class ID for this class (not really public)
* @return a class ID for this class
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
protected:
/**
diff --git a/libicu/cts_headers/unicode/search.h b/libicu/cts_headers/unicode/search.h
index a8004efc4..d4fd9ce93 100644
--- a/libicu/cts_headers/unicode/search.h
+++ b/libicu/cts_headers/unicode/search.h
@@ -124,7 +124,7 @@ public:
* @return current index in the text being searched.
* @stable ICU 2.0
*/
- virtual int32_t getOffset(void) const = 0;
+ virtual int32_t getOffset() const = 0;
/**
* Sets the text searching attributes located in the enum
@@ -163,7 +163,7 @@ public:
* @see #last
* @stable ICU 2.0
*/
- int32_t getMatchedStart(void) const;
+ int32_t getMatchedStart() const;
/**
* Returns the length of text in the string which matches the search
@@ -179,8 +179,8 @@ public:
* @see #last
* @stable ICU 2.0
*/
- int32_t getMatchedLength(void) const;
-
+ int32_t getMatchedLength() const;
+
/**
* Returns the text that was matched by the most recent call to
* <tt>first</tt>, <tt>next</tt>, <tt>previous</tt>, or <tt>last</tt>.
@@ -224,7 +224,7 @@ public:
* @see #setBreakIterator
* @stable ICU 2.0
*/
- const BreakIterator * getBreakIterator(void) const;
+ const BreakIterator* getBreakIterator() const;
/**
* Set the string text to be searched. Text iteration will hence begin at
@@ -260,7 +260,7 @@ public:
* @return text string to be searched.
* @stable ICU 2.0
*/
- const UnicodeString & getText(void) const;
+ const UnicodeString& getText() const;
// operator overloading ----------------------------------------------
@@ -291,7 +291,7 @@ public:
* @return cloned object
* @stable ICU 2.0
*/
- virtual SearchIterator* safeClone(void) const = 0;
+ virtual SearchIterator* safeClone() const = 0;
/**
* Returns the first index at which the string text matches the search
diff --git a/libicu/cts_headers/unicode/selfmt.h b/libicu/cts_headers/unicode/selfmt.h
index 180238031..ead514548 100644
--- a/libicu/cts_headers/unicode/selfmt.h
+++ b/libicu/cts_headers/unicode/selfmt.h
@@ -337,7 +337,7 @@ public:
* ICU "poor man's RTTI", returns a UClassID for this class.
* @stable ICU 4.4
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/libicu/cts_headers/unicode/simpleformatter.h b/libicu/cts_headers/unicode/simpleformatter.h
index 7f58106fa..33bdd6d48 100644
--- a/libicu/cts_headers/unicode/simpleformatter.h
+++ b/libicu/cts_headers/unicode/simpleformatter.h
@@ -25,11 +25,9 @@
U_NAMESPACE_BEGIN
// Forward declaration:
-namespace number {
-namespace impl {
+namespace number::impl {
class SimpleModifier;
}
-}
/**
* Formats simple patterns like "{1} was born in {0}".
diff --git a/libicu/cts_headers/unicode/simplenumberformatter.h b/libicu/cts_headers/unicode/simplenumberformatter.h
index 32b79a94d..5aa33c694 100644
--- a/libicu/cts_headers/unicode/simplenumberformatter.h
+++ b/libicu/cts_headers/unicode/simplenumberformatter.h
@@ -30,6 +30,8 @@
U_NAMESPACE_BEGIN
+/* forward declaration */
+class SimpleDateFormat;
namespace number { // icu::number
@@ -41,22 +43,19 @@ class AdoptingSignumModifierStore;
} // icu::number::impl
-#ifndef U_HIDE_DRAFT_API
-
-
/**
* An input type for SimpleNumberFormatter.
*
* This class is mutable and not intended for public subclassing. This class is movable but not copyable.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
class U_I18N_API SimpleNumber : public UMemory {
public:
/**
* Creates a SimpleNumber for an integer.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
static SimpleNumber forInt64(int64_t value, UErrorCode& status);
@@ -65,43 +64,50 @@ class U_I18N_API SimpleNumber : public UMemory {
*
* This function immediately mutates the inner value.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
void multiplyByPowerOfTen(int32_t power, UErrorCode& status);
/**
- * Rounds the value currently stored in the SimpleNumber to the given power of 10.
+ * Rounds the value currently stored in the SimpleNumber to the given power of 10,
+ * which can be before or after the decimal separator.
*
- * This function immediately mutates the inner value.
+ * This function does not change minimum integer digits.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
void roundTo(int32_t power, UNumberFormatRoundingMode roundingMode, UErrorCode& status);
+#ifndef U_HIDE_DRAFT_API
/**
- * Truncates the most significant digits to the given maximum number of integer digits.
+ * Sets the number of integer digits to the given amount, truncating if necessary.
*
- * This function immediately mutates the inner value.
+ * @draft ICU 75
+ */
+ void setMaximumIntegerDigits(uint32_t maximumIntegerDigits, UErrorCode& status);
+#endif // U_HIDE_DRAFT_API
+
+#ifndef U_HIDE_DEPRECATED_API
+ /**
+ * Alias for setMaximumIntegerDigits.
+ * Will be removed after ICU 75.
*
- * @draft ICU 73
+ * @deprecated ICU 75
*/
void truncateStart(uint32_t maximumIntegerDigits, UErrorCode& status);
+#endif // U_HIDE_DEPRECATED_API
/**
* Pads the beginning of the number with zeros up to the given minimum number of integer digits.
*
- * This setting is applied upon formatting the number.
- *
- * @draft ICU 73
+ * @stable ICU 73
*/
void setMinimumIntegerDigits(uint32_t minimumIntegerDigits, UErrorCode& status);
/**
* Pads the end of the number with zeros up to the given minimum number of fraction digits.
*
- * This setting is applied upon formatting the number.
- *
- * @draft ICU 73
+ * @stable ICU 73
*/
void setMinimumFractionDigits(uint32_t minimumFractionDigits, UErrorCode& status);
@@ -112,7 +118,7 @@ class U_I18N_API SimpleNumber : public UMemory {
*
* NOTE: This does not support accounting sign notation.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
void setSign(USimpleNumberSign sign, UErrorCode& status);
@@ -121,14 +127,14 @@ class U_I18N_API SimpleNumber : public UMemory {
*
* NOTE: This number will fail to format; use forInt64() to create a SimpleNumber with a value.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumber() = default;
/**
* Destruct this SimpleNumber, cleaning up any memory it might own.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
~SimpleNumber() {
cleanup();
@@ -137,7 +143,7 @@ class U_I18N_API SimpleNumber : public UMemory {
/**
* SimpleNumber move constructor.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumber(SimpleNumber&& other) noexcept {
fData = other.fData;
@@ -148,7 +154,7 @@ class U_I18N_API SimpleNumber : public UMemory {
/**
* SimpleNumber move assignment.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumber& operator=(SimpleNumber&& other) noexcept {
cleanup();
@@ -169,6 +175,9 @@ class U_I18N_API SimpleNumber : public UMemory {
USimpleNumberSign fSign = UNUM_SIMPLE_NUMBER_NO_SIGN;
friend class SimpleNumberFormatter;
+
+ // Uses the private constructor to avoid a heap allocation
+ friend class icu::SimpleDateFormat;
};
@@ -180,14 +189,14 @@ class U_I18N_API SimpleNumber : public UMemory {
*
* This class is immutable and not intended for public subclassing. This class is movable but not copyable.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
class U_I18N_API SimpleNumberFormatter : public UMemory {
public:
/**
* Creates a new SimpleNumberFormatter with all locale defaults.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
static SimpleNumberFormatter forLocale(
const icu::Locale &locale,
@@ -196,7 +205,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
/**
* Creates a new SimpleNumberFormatter, overriding the grouping strategy.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
static SimpleNumberFormatter forLocaleAndGroupingStrategy(
const icu::Locale &locale,
@@ -209,7 +218,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
* IMPORTANT: For efficiency, this function borrows the symbols. The symbols MUST remain valid
* for the lifetime of the SimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
static SimpleNumberFormatter forLocaleAndSymbolsAndGroupingStrategy(
const icu::Locale &locale,
@@ -223,7 +232,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
* The SimpleNumber argument is "consumed". A new SimpleNumber object should be created for
* every formatting operation.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
FormattedNumber format(SimpleNumber value, UErrorCode &status) const;
@@ -232,7 +241,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
*
* For more control over the formatting, use SimpleNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
FormattedNumber formatInt64(int64_t value, UErrorCode &status) const {
return format(SimpleNumber::forInt64(value, status), status);
@@ -249,7 +258,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
/**
* Destruct this SimpleNumberFormatter, cleaning up any memory it might own.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
~SimpleNumberFormatter() {
cleanup();
@@ -258,14 +267,14 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
/**
* Creates a shell, initialized but non-functional SimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumberFormatter() = default;
/**
* SimpleNumberFormatter: Move constructor.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumberFormatter(SimpleNumberFormatter&& other) noexcept {
fGroupingStrategy = other.fGroupingStrategy;
@@ -280,7 +289,7 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
/**
* SimpleNumberFormatter: Move assignment.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
SimpleNumberFormatter& operator=(SimpleNumberFormatter&& other) noexcept {
cleanup();
@@ -316,8 +325,6 @@ class U_I18N_API SimpleNumberFormatter : public UMemory {
};
-#endif // U_HIDE_DRAFT_API
-
} // namespace number
U_NAMESPACE_END
diff --git a/libicu/cts_headers/unicode/simpletz.h b/libicu/cts_headers/unicode/simpletz.h
index 9005c9ccb..bf45c9185 100644
--- a/libicu/cts_headers/unicode/simpletz.h
+++ b/libicu/cts_headers/unicode/simpletz.h
@@ -636,7 +636,7 @@ public:
* @return The TimeZone's raw GMT offset.
* @stable ICU 2.0
*/
- virtual int32_t getRawOffset(void) const override;
+ virtual int32_t getRawOffset() const override;
/**
* Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add
@@ -666,7 +666,7 @@ public:
* but not 0.
* @stable ICU 2.0
*/
- virtual int32_t getDSTSavings(void) const override;
+ virtual int32_t getDSTSavings() const override;
/**
* Queries if this TimeZone uses Daylight Savings Time.
@@ -674,7 +674,7 @@ public:
* @return True if this TimeZone uses Daylight Savings Time; false otherwise.
* @stable ICU 2.0
*/
- virtual UBool useDaylightTime(void) const override;
+ virtual UBool useDaylightTime() const override;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -773,7 +773,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -786,7 +786,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
private:
/**
@@ -882,8 +882,8 @@ private:
/* Private for BasicTimeZone implementation */
void checkTransitionRules(UErrorCode& status) const;
void initTransitionRules(UErrorCode& status);
- void clearTransitionRules(void);
- void deleteTransitionRules(void);
+ void clearTransitionRules();
+ void deleteTransitionRules();
UBool transitionRulesInitialized;
InitialTimeZoneRule* initialRule;
TimeZoneTransition* firstTransition;
diff --git a/libicu/cts_headers/unicode/smpdtfmt.h b/libicu/cts_headers/unicode/smpdtfmt.h
index 4343bfbca..a37485a93 100644
--- a/libicu/cts_headers/unicode/smpdtfmt.h
+++ b/libicu/cts_headers/unicode/smpdtfmt.h
@@ -69,7 +69,8 @@ class SimpleNumberFormatter;
* getDateInstance(), getDateInstance(), or getDateTimeInstance() rather than
* explicitly constructing an instance of SimpleDateFormat. This way, the client
* is guaranteed to get an appropriate formatting pattern for whatever locale the
- * program is running in. However, if the client needs something more unusual than
+ * program is running in. If the client needs more control, they should consider using
+ * DateFormat::createInstanceForSkeleton(). However, if the client needs something more unusual than
* the default patterns in the locales, he can construct a SimpleDateFormat directly
* and give it an appropriate pattern (or use one of the factory methods on DateFormat
* and modify the pattern after the fact with toPattern() and applyPattern().
@@ -77,46 +78,32 @@ class SimpleNumberFormatter;
* <p><strong>Date and Time Patterns:</strong></p>
*
* <p>Date and time formats are specified by <em>date and time pattern</em> strings.
+ * The full syntax for date and time patterns can be found at
+ * <a href="https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns">https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns</a>.
+ *
* Within date and time pattern strings, all unquoted ASCII letters [A-Za-z] are reserved
- * as pattern letters representing calendar fields. <code>SimpleDateFormat</code> supports
- * the date and time formatting algorithm and pattern letters defined by
- * <a href="http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table">UTS#35
- * Unicode Locale Data Markup Language (LDML)</a> and further documented for ICU in the
- * <a href="https://unicode-org.github.io/icu/userguide/format_parse/datetime/#date-field-symbol-table">ICU
- * User Guide</a>. The following pattern letters are currently available (note that the actual
- * values depend on CLDR and may change from the examples shown here):</p>
+ * as pattern letters representing calendar fields. Some of the most commonly used pattern letters are:</p>
*
* <table border="1">
* <tr>
- * <th>Field</th>
* <th style="text-align: center">Sym.</th>
* <th style="text-align: center">No.</th>
* <th>Example</th>
* <th>Description</th>
* </tr>
* <tr>
- * <th rowspan="3">era</th>
- * <td style="text-align: center" rowspan="3">G</td>
+ * <td style="text-align: center">G</td>
* <td style="text-align: center">1..3</td>
* <td>AD</td>
- * <td rowspan="3">Era - Replaced with the Era string for the current date. One to three letters for the
+ * <td>Era - Replaced with the Era string for the current date. One to three letters for the
* abbreviated form, four letters for the long (wide) form, five for the narrow form.</td>
* </tr>
* <tr>
- * <td style="text-align: center">4</td>
- * <td>Anno Domini</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>A</td>
- * </tr>
- * <tr>
- * <th rowspan="6">year</th>
* <td style="text-align: center">y</td>
* <td style="text-align: center">1..n</td>
* <td>1996</td>
* <td>Year. Normally the length specifies the padding, but for two letters it also specifies the maximum
- * length. Example:<div align="center">
+ * length. Example:<div style="text-align: center">
* <center>
* <table border="1" cellpadding="2" cellspacing="0">
* <tr>
@@ -172,49 +159,11 @@ class SimpleNumberFormatter;
* </td>
* </tr>
* <tr>
- * <td style="text-align: center">Y</td>
- * <td style="text-align: center">1..n</td>
- * <td>1997</td>
- * <td>Year (in "Week of Year" based calendars). Normally the length specifies the padding,
- * but for two letters it also specifies the maximum length. This year designation is used in ISO
- * year-week calendar as defined by ISO 8601, but can be used in non-Gregorian based calendar systems
- * where week date processing is desired. May not always be the same value as calendar year.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">u</td>
- * <td style="text-align: center">1..n</td>
- * <td>4601</td>
- * <td>Extended year. This is a single number designating the year of this calendar system, encompassing
- * all supra-year fields. For example, for the Julian calendar system, year numbers are positive, with an
- * era of BCE or CE. An extended year value for the Julian calendar system assigns positive values to CE
- * years and negative values to BCE years, with 1 BCE being year 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center" rowspan="3">U</td>
- * <td style="text-align: center">1..3</td>
- * <td>&#30002;&#23376;</td>
- * <td rowspan="3">Cyclic year name. Calendars such as the Chinese lunar calendar (and related calendars)
- * and the Hindu calendars use 60-year cycles of year names. Use one through three letters for the abbreviated
- * name, four for the full (wide) name, or five for the narrow name (currently the data only provides abbreviated names,
- * which will be used for all requested name widths). If the calendar does not provide cyclic year name data,
- * or if the year value to be formatted is out of the range of years for which cyclic name data is provided,
- * then numeric formatting is used (behaves like 'y').</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>(currently also &#30002;&#23376;)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>(currently also &#30002;&#23376;)</td>
- * </tr>
- * <tr>
- * <th rowspan="6">quarter</th>
* <td rowspan="3" style="text-align: center">Q</td>
* <td style="text-align: center">1..2</td>
* <td>02</td>
- * <td rowspan="3">Quarter - Use one or two for the numerical quarter, three for the abbreviation, or four for the
- * full (wide) name (five for the narrow name is not yet supported).</td>
+ * <td rowspan="3">Quarter - Use one or two for the numerical quarter, three for the abbreviation, or four
+ * for the full (wide) name (five for the narrow name is not yet supported).</td>
* </tr>
* <tr>
* <td style="text-align: center">3</td>
@@ -225,48 +174,12 @@ class SimpleNumberFormatter;
* <td>2nd quarter</td>
* </tr>
* <tr>
- * <td rowspan="3" style="text-align: center">q</td>
- * <td style="text-align: center">1..2</td>
- * <td>02</td>
- * <td rowspan="3"><b>Stand-Alone</b> Quarter - Use one or two for the numerical quarter, three for the abbreviation,
- * or four for the full name (five for the narrow name is not yet supported).</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Q2</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>2nd quarter</td>
- * </tr>
- * <tr>
- * <th rowspan="8">month</th>
* <td rowspan="4" style="text-align: center">M</td>
* <td style="text-align: center">1..2</td>
* <td>09</td>
* <td rowspan="4">Month - Use one or two for the numerical month, three for the abbreviation, four for
* the full (wide) name, or five for the narrow name. With two ("MM"), the month number is zero-padded
- * if necessary (e.g. "08")</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Sep</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>September</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>S</td>
- * </tr>
- * <tr>
- * <td rowspan="4" style="text-align: center">L</td>
- * <td style="text-align: center">1..2</td>
- * <td>09</td>
- * <td rowspan="4"><b>Stand-Alone</b> Month - Use one or two for the numerical month, three for the abbreviation,
- * four for the full (wide) name, or 5 for the narrow name. With two ("LL"), the month number is zero-padded if
- * necessary (e.g. "08")</td>
+ * if necessary (e.g. "08").</td>
* </tr>
* <tr>
* <td style="text-align: center">3</td>
@@ -281,21 +194,6 @@ class SimpleNumberFormatter;
* <td>S</td>
* </tr>
* <tr>
- * <th rowspan="2">week</th>
- * <td style="text-align: center">w</td>
- * <td style="text-align: center">1..2</td>
- * <td>27</td>
- * <td>Week of Year. Use "w" to show the minimum number of digits, or "ww" to always show two digits
- * (zero-padding if necessary, e.g. "08").</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">W</td>
- * <td style="text-align: center">1</td>
- * <td>3</td>
- * <td>Week of Month</td>
- * </tr>
- * <tr>
- * <th rowspan="4">day</th>
* <td style="text-align: center">d</td>
* <td style="text-align: center">1..2</td>
* <td>1</td>
@@ -303,29 +201,6 @@ class SimpleNumberFormatter;
* two digits (zero-padding if necessary, e.g. "08").</td>
* </tr>
* <tr>
- * <td style="text-align: center">D</td>
- * <td style="text-align: center">1..3</td>
- * <td>345</td>
- * <td>Day of year</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">F</td>
- * <td style="text-align: center">1</td>
- * <td>2</td>
- * <td>Day of Week in Month. The example is for the 2nd Wed in July</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">g</td>
- * <td style="text-align: center">1..n</td>
- * <td>2451334</td>
- * <td>Modified Julian day. This is different from the conventional Julian day number in two regards.
- * First, it demarcates days at local zone midnight, rather than noon GMT. Second, it is a local number;
- * that is, it depends on the local time zone. It can be thought of as a single number that encompasses
- * all the date-related fields.</td>
- * </tr>
- * <tr>
- * <th rowspan="14">week<br>
- * day</th>
* <td rowspan="4" style="text-align: center">E</td>
* <td style="text-align: center">1..3</td>
* <td>Tue</td>
@@ -345,61 +220,12 @@ class SimpleNumberFormatter;
* <td>Tu</td>
* </tr>
* <tr>
- * <td rowspan="5" style="text-align: center">e</td>
- * <td style="text-align: center">1..2</td>
- * <td>2</td>
- * <td rowspan="5">Local day of week. Same as E except adds a numeric value that will depend on the local
- * starting day of the week, using one or two letters. For this example, Monday is the first day of the week.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Tue</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Tuesday</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>T</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">6</td>
- * <td>Tu</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">c</td>
- * <td style="text-align: center">1</td>
- * <td>2</td>
- * <td rowspan="5"><b>Stand-Alone</b> local day of week - Use one letter for the local numeric value (same
- * as 'e'), three for the short day, four for the full (wide) name, five for the narrow name, or six for
- * the short name.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Tue</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Tuesday</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>T</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">6</td>
- * <td>Tu</td>
- * </tr>
- * <tr>
- * <th>period</th>
* <td style="text-align: center">a</td>
* <td style="text-align: center">1</td>
* <td>AM</td>
* <td>AM or PM</td>
* </tr>
* <tr>
- * <th rowspan="4">hour</th>
* <td style="text-align: center">h</td>
* <td style="text-align: center">1..2</td>
* <td>11</td>
@@ -416,27 +242,13 @@ class SimpleNumberFormatter;
* 12-hour-cycle format (h or K). Use HH for zero padding.</td>
* </tr>
* <tr>
- * <td style="text-align: center">K</td>
- * <td style="text-align: center">1..2</td>
- * <td>0</td>
- * <td>Hour [0-11]. When used in a skeleton, only matches K or h, see above. Use KK for zero padding.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">k</td>
- * <td style="text-align: center">1..2</td>
- * <td>24</td>
- * <td>Hour [1-24]. When used in a skeleton, only matches k or H, see above. Use kk for zero padding.</td>
- * </tr>
- * <tr>
- * <th>minute</th>
* <td style="text-align: center">m</td>
* <td style="text-align: center">1..2</td>
* <td>59</td>
* <td>Minute. Use "m" to show the minimum number of digits, or "mm" to always show two digits
- * (zero-padding if necessary, e.g. "08").</td>
+ * (zero-padding if necessary, e.g. "08")..</td>
* </tr>
* <tr>
- * <th rowspan="3">second</th>
* <td style="text-align: center">s</td>
* <td style="text-align: center">1..2</td>
* <td>12</td>
@@ -444,28 +256,10 @@ class SimpleNumberFormatter;
* (zero-padding if necessary, e.g. "08").</td>
* </tr>
* <tr>
- * <td style="text-align: center">S</td>
- * <td style="text-align: center">1..n</td>
- * <td>3450</td>
- * <td>Fractional Second - truncates (like other time fields) to the count of letters when formatting.
- * Appends zeros if more than 3 letters specified. Truncates at three significant digits when parsing.
- * (example shows display using pattern SSSS for seconds value 12.34567)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">A</td>
- * <td style="text-align: center">1..n</td>
- * <td>69540000</td>
- * <td>Milliseconds in day. This field behaves <i>exactly</i> like a composite of all time-related fields,
- * not including the zone fields. As such, it also reflects discontinuities of those fields on DST transition
- * days. On a day of DST onset, it will jump forward. On a day of DST cessation, it will jump backward. This
- * reflects the fact that is must be combined with the offset field to obtain a unique local time value.</td>
- * </tr>
- * <tr>
- * <th rowspan="23">zone</th>
* <td rowspan="2" style="text-align: center">z</td>
* <td style="text-align: center">1..3</td>
* <td>PDT</td>
- * <td>The <i>short specific non-location format</i>.
+ * <td>Time zone. The <i>short specific non-location format</i>.
* Where that is unavailable, falls back to the <i>short localized GMT format</i> ("O").</td>
* </tr>
* <tr>
@@ -475,43 +269,10 @@ class SimpleNumberFormatter;
* Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO").</td>
* </tr>
* <tr>
- * <td rowspan="3" style="text-align: center">Z</td>
- * <td style="text-align: center">1..3</td>
- * <td>-0800</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * The format is equivalent to RFC 822 zone format (when optional seconds field is absent).
- * This is equivalent to the "xxxx" specifier.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>GMT-8:00</td>
- * <td>The <i>long localized GMT format</i>.
- * This is equivalent to the "OOOO" specifier.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.
- * This is equivalent to the "XXXXX" specifier.</td>
- * </tr>
- * <tr>
- * <td rowspan="2" style="text-align: center">O</td>
- * <td style="text-align: center">1</td>
- * <td>GMT-8</td>
- * <td>The <i>short localized GMT format</i>.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>GMT-08:00</td>
- * <td>The <i>long localized GMT format</i>.</td>
- * </tr>
- * <tr>
* <td rowspan="2" style="text-align: center">v</td>
* <td style="text-align: center">1</td>
* <td>PT</td>
- * <td>The <i>short generic non-location format</i>.
+ * <td>Time zone. The <i>short generic non-location format</i>.
* Where that is unavailable, falls back to the <i>generic location format</i> ("VVVV"),
* then the <i>short localized GMT format</i> as the final fallback.</td>
* </tr>
@@ -521,109 +282,6 @@ class SimpleNumberFormatter;
* <td>The <i>long generic non-location format</i>.
* Where that is unavailable, falls back to <i>generic location format</i> ("VVVV").
* </tr>
- * <tr>
- * <td rowspan="4" style="text-align: center">V</td>
- * <td style="text-align: center">1</td>
- * <td>uslax</td>
- * <td>The short time zone ID.
- * Where that is unavailable, the special short time zone ID <i>unk</i> (Unknown Zone) is used.<br>
- * <i><b>Note</b>: This specifier was originally used for a variant of the short specific non-location format,
- * but it was deprecated in the later version of the LDML specification. In CLDR 23/ICU 51, the definition of
- * the specifier was changed to designate a short time zone ID.</i></td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>America/Los_Angeles</td>
- * <td>The long time zone ID.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>Los Angeles</td>
- * <td>The exemplar city (location) for the time zone.
- * Where that is unavailable, the localized exemplar city name for the special zone <i>Etc/Unknown</i> is used
- * as the fallback (for example, "Unknown City"). </td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>Los Angeles Time</td>
- * <td>The <i>generic location format</i>.
- * Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO";
- * Note: Fallback is only necessary with a GMT-style Time Zone ID, like Etc/GMT-830.)<br>
- * This is especially useful when presenting possible timezone choices for user selection,
- * since the naming is more uniform than the "v" format.</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">X</td>
- * <td style="text-align: center">1</td>
- * <td>-08<br>
- * +0530<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours field and optional minutes field.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>-0800<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours and minutes fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>-08:00<br>
- * Z</td>
- * <td>The <i>ISO8601 extended format</i> with hours and minutes fields.
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>-0800<br>
- * -075258<br>
- * Z</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58<br>
- * Z</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)
- * The ISO8601 UTC indicator "Z" is used when local time offset is 0.</td>
- * </tr>
- * <tr>
- * <td rowspan="5" style="text-align: center">x</td>
- * <td style="text-align: center">1</td>
- * <td>-08<br>
- * +0530</td>
- * <td>The <i>ISO8601 basic format</i> with hours field and optional minutes field.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">2</td>
- * <td>-0800</td>
- * <td>The <i>ISO8601 basic format</i> with hours and minutes fields.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">3</td>
- * <td>-08:00</td>
- * <td>The <i>ISO8601 extended format</i> with hours and minutes fields.</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">4</td>
- * <td>-0800<br>
- * -075258</td>
- * <td>The <i>ISO8601 basic format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)</td>
- * </tr>
- * <tr>
- * <td style="text-align: center">5</td>
- * <td>-08:00<br>
- * -07:52:58</td>
- * <td>The <i>ISO8601 extended format</i> with hours, minutes and optional seconds fields.
- * (Note: The seconds field is not supported by the ISO8601 specification.)</td>
- * </tr>
* </table>
*
* <P>
@@ -1057,7 +715,7 @@ public:
* with this date-time formatter.
* @stable ICU 2.0
*/
- virtual const DateFormatSymbols* getDateFormatSymbols(void) const;
+ virtual const DateFormatSymbols* getDateFormatSymbols() const;
/**
* Set the date/time formatting symbols. The caller no longer owns the
@@ -1085,7 +743,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -1098,7 +756,7 @@ public:
* other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Set the calendar to be used by this date format. Initially, the default
@@ -1133,7 +791,7 @@ public:
* @return the time zone format associated with this date/time formatter.
* @internal ICU 49 technology preview
*/
- virtual const TimeZoneFormat* getTimeZoneFormat(void) const;
+ virtual const TimeZoneFormat* getTimeZoneFormat() const;
/**
* Set a particular UDisplayContext value in the formatter, such as
@@ -1216,16 +874,16 @@ public:
* @return locale in this simple date formatter
* @internal ICU 4.0
*/
- const Locale& getSmpFmtLocale(void) const;
+ const Locale& getSmpFmtLocale() const;
#endif /* U_HIDE_INTERNAL_API */
private:
friend class DateFormat;
friend class DateIntervalFormat;
- void initializeDefaultCentury(void);
+ void initializeDefaultCentury();
- void initializeBooleanAttributes(void);
+ void initializeBooleanAttributes();
SimpleDateFormat() = delete; // default constructor not implemented
diff --git a/libicu/cts_headers/unicode/sortkey.h b/libicu/cts_headers/unicode/sortkey.h
index 401b5abad..a9b6fee83 100644
--- a/libicu/cts_headers/unicode/sortkey.h
+++ b/libicu/cts_headers/unicode/sortkey.h
@@ -162,7 +162,7 @@ public:
* @return Returns true if the key is in an invalid, false otherwise.
* @stable ICU 2.0
*/
- UBool isBogus(void) const;
+ UBool isBogus() const;
/**
* Returns a pointer to the collation key values. The storage is owned
@@ -231,7 +231,7 @@ public:
* @see UnicodeString#hashCode
* @stable ICU 2.0
*/
- int32_t hashCode(void) const;
+ int32_t hashCode() const;
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
@@ -272,12 +272,12 @@ private:
* Set the CollationKey to a "bogus" or invalid state
* @return this CollationKey
*/
- CollationKey& setToBogus(void);
+ CollationKey& setToBogus();
/**
* Resets this CollationKey to an empty state
* @return this CollationKey
*/
- CollationKey& reset(void);
+ CollationKey& reset();
/**
* Allow private access to RuleBasedCollator
diff --git a/libicu/cts_headers/unicode/stringpiece.h b/libicu/cts_headers/unicode/stringpiece.h
index df7f36089..6f2a50eaf 100644
--- a/libicu/cts_headers/unicode/stringpiece.h
+++ b/libicu/cts_headers/unicode/stringpiece.h
@@ -130,13 +130,13 @@ class U_COMMON_API StringPiece : public UMemory {
* @stable ICU 65
*/
template <typename T,
- typename = typename std::enable_if<
- (std::is_same<decltype(T().data()), const char*>::value
+ typename = std::enable_if_t<
+ (std::is_same_v<decltype(T().data()), const char*>
#if defined(__cpp_char8_t)
- || std::is_same<decltype(T().data()), const char8_t*>::value
+ || std::is_same_v<decltype(T().data()), const char8_t*>
#endif
) &&
- std::is_same<decltype(T().size()), size_t>::value>::type>
+ std::is_same_v<decltype(T().size()), size_t>>>
StringPiece(T str)
: ptr_(reinterpret_cast<const char*>(str.data())),
length_(static_cast<int32_t>(str.size())) {}
diff --git a/libicu/cts_headers/unicode/stsearch.h b/libicu/cts_headers/unicode/stsearch.h
index b916aebf2..bbad9d22a 100644
--- a/libicu/cts_headers/unicode/stsearch.h
+++ b/libicu/cts_headers/unicode/stsearch.h
@@ -264,7 +264,7 @@ public:
* If a collator is created in the constructor, it will be destroyed here.
* @stable ICU 2.0
*/
- virtual ~StringSearch(void);
+ virtual ~StringSearch();
/**
* Clone this object.
@@ -324,7 +324,7 @@ public:
* @return current index in the text being searched.
* @stable ICU 2.0
*/
- virtual int32_t getOffset(void) const override;
+ virtual int32_t getOffset() const override;
/**
* Set the target text to be searched.
diff --git a/libicu/cts_headers/unicode/tblcoll.h b/libicu/cts_headers/unicode/tblcoll.h
index 43cf35d1a..0c018beb8 100644
--- a/libicu/cts_headers/unicode/tblcoll.h
+++ b/libicu/cts_headers/unicode/tblcoll.h
@@ -449,7 +449,7 @@ public:
* IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Returns the class ID for this class. This is useful only for comparing to
@@ -462,7 +462,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
#ifndef U_HIDE_DEPRECATED_API
/**
diff --git a/libicu/cts_headers/unicode/timezone.h b/libicu/cts_headers/unicode/timezone.h
index e512ef7f9..1c3be8e32 100644
--- a/libicu/cts_headers/unicode/timezone.h
+++ b/libicu/cts_headers/unicode/timezone.h
@@ -163,7 +163,7 @@ public:
* @see getUnknown
* @stable ICU 2.0
*/
- static const TimeZone* U_EXPORT2 getGMT(void);
+ static const TimeZone* U_EXPORT2 getGMT();
/**
* Creates a <code>TimeZone</code> for the given ID.
@@ -364,7 +364,7 @@ public:
* @see getUnknown
* @stable ICU 2.0
*/
- static TimeZone* U_EXPORT2 createDefault(void);
+ static TimeZone* U_EXPORT2 createDefault();
#ifndef U_HIDE_INTERNAL_API
/**
@@ -644,7 +644,7 @@ public:
* @return The TimeZone's raw GMT offset.
* @stable ICU 2.0
*/
- virtual int32_t getRawOffset(void) const = 0;
+ virtual int32_t getRawOffset() const = 0;
/**
* Fills in "ID" with the TimeZone's ID.
@@ -813,7 +813,7 @@ public:
*
* @stable ICU 2.0
*/
- virtual UBool useDaylightTime(void) const = 0;
+ virtual UBool useDaylightTime() const = 0;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -857,7 +857,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. This method is to
@@ -870,8 +870,8 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
-
+ virtual UClassID getDynamicClassID() const override = 0;
+
/**
* Returns the amount of time to be added to local standard time
* to get local wall clock time.
diff --git a/libicu/cts_headers/unicode/tmutamt.h b/libicu/cts_headers/unicode/tmutamt.h
index 88e892fb0..c73673b62 100644
--- a/libicu/cts_headers/unicode/tmutamt.h
+++ b/libicu/cts_headers/unicode/tmutamt.h
@@ -126,8 +126,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 4.2
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
-
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -140,8 +139,7 @@ public:
* other classes have different class IDs.
* @stable ICU 4.2
*/
- virtual UClassID getDynamicClassID(void) const override;
-
+ virtual UClassID getDynamicClassID() const override;
/**
* Get the time unit.
diff --git a/libicu/cts_headers/unicode/tmutfmt.h b/libicu/cts_headers/unicode/tmutfmt.h
index 02e0563a0..4f4684a4d 100644
--- a/libicu/cts_headers/unicode/tmutfmt.h
+++ b/libicu/cts_headers/unicode/tmutfmt.h
@@ -171,7 +171,7 @@ public:
* @return The class ID for all objects of this class.
* @deprecated ICU 53
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -184,7 +184,7 @@ public:
* other classes have different class IDs.
* @deprecated ICU 53
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
private:
Hashtable* fTimeUnitToCountToPatterns[TimeUnit::UTIMEUNIT_FIELD_COUNT];
diff --git a/libicu/cts_headers/unicode/translit.h b/libicu/cts_headers/unicode/translit.h
index 9ae32967f..cde8450c8 100644
--- a/libicu/cts_headers/unicode/translit.h
+++ b/libicu/cts_headers/unicode/translit.h
@@ -938,7 +938,7 @@ public:
* transliterator needs to examine
* @stable ICU 2.0
*/
- int32_t getMaximumContextLength(void) const;
+ int32_t getMaximumContextLength() const;
protected:
@@ -962,7 +962,7 @@ public:
* @see #getAvailableIDs
* @stable ICU 2.0
*/
- virtual const UnicodeString& getID(void) const;
+ virtual const UnicodeString& getID() const;
/**
* Returns a name for this transliterator that is appropriate for
@@ -1008,7 +1008,7 @@ public:
* if this transliterator uses no filter.
* @stable ICU 2.0
*/
- const UnicodeFilter* getFilter(void) const;
+ const UnicodeFilter* getFilter() const;
/**
* Returns the filter used by this transliterator, or <tt>nullptr</tt> if this
@@ -1019,7 +1019,7 @@ public:
* transliterator uses no filter.
* @stable ICU 2.4
*/
- UnicodeFilter* orphanFilter(void);
+ UnicodeFilter* orphanFilter();
/**
* Changes the filter used by this transliterator. If the filter
@@ -1374,7 +1374,7 @@ public:
* @return the number of registered source specifiers.
* @stable ICU 2.0
*/
- static int32_t U_EXPORT2 countAvailableSources(void);
+ static int32_t U_EXPORT2 countAvailableSources();
/**
* Return a registered source specifier.
@@ -1448,7 +1448,7 @@ protected:
* Non-mutexed internal method
* @internal
*/
- static int32_t _countAvailableSources(void);
+ static int32_t _countAvailableSources();
/**
* Non-mutexed internal method
@@ -1510,7 +1510,7 @@ public:
* @return The class ID for class Transliterator.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID <b>polymorphically</b>. This method
@@ -1527,7 +1527,7 @@ public:
* different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
private:
static UBool initializeRegistry(UErrorCode &status);
@@ -1541,7 +1541,7 @@ public:
* @return the number of IDs currently registered with the system.
* @obsolete ICU 3.4 use getAvailableIDs() instead
*/
- static int32_t U_EXPORT2 countAvailableIDs(void);
+ static int32_t U_EXPORT2 countAvailableIDs();
/**
* Return the index-th available ID. index must be between 0
@@ -1559,7 +1559,7 @@ public:
#endif /* U_HIDE_OBSOLETE_API */
};
-inline int32_t Transliterator::getMaximumContextLength(void) const {
+inline int32_t Transliterator::getMaximumContextLength() const {
return maximumContextLength;
}
diff --git a/libicu/cts_headers/unicode/tzfmt.h b/libicu/cts_headers/unicode/tzfmt.h
index 4bd80e0e3..5f93dd745 100644
--- a/libicu/cts_headers/unicode/tzfmt.h
+++ b/libicu/cts_headers/unicode/tzfmt.h
@@ -431,7 +431,7 @@ public:
* @see ParseOption
* @stable ICU 50
*/
- uint32_t getDefaultParseOptions(void) const;
+ uint32_t getDefaultParseOptions() const;
/**
* Sets the default parse options.
@@ -656,7 +656,7 @@ public:
* ICU "poor man's RTTI", returns a UClassID for this class.
* @stable ICU 50
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
diff --git a/libicu/cts_headers/unicode/tzrule.h b/libicu/cts_headers/unicode/tzrule.h
index 9ec1e9617..835e6b262 100644
--- a/libicu/cts_headers/unicode/tzrule.h
+++ b/libicu/cts_headers/unicode/tzrule.h
@@ -80,7 +80,7 @@ public:
* @return The standard time offset from UTC in milliseconds.
* @stable ICU 3.8
*/
- int32_t getRawOffset(void) const;
+ int32_t getRawOffset() const;
/**
* Gets the amount of daylight saving delta time from the standard time.
@@ -88,7 +88,7 @@ public:
* in milliseconds.
* @stable ICU 3.8
*/
- int32_t getDSTSavings(void) const;
+ int32_t getDSTSavings() const;
/**
* Returns if this rule represents the same rule and offsets as another.
@@ -340,7 +340,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -353,7 +353,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
/**
@@ -461,7 +461,7 @@ public:
* rule used by this time zone rule.
* @stable ICU 3.8
*/
- const DateTimeRule* getRule(void) const;
+ const DateTimeRule* getRule() const;
/**
* Gets the first year when this rule takes effect.
@@ -469,7 +469,7 @@ public:
* with 0 == 1 BCE, -1 == 2 BCE, etc.
* @stable ICU 3.8
*/
- int32_t getStartYear(void) const;
+ int32_t getStartYear() const;
/**
* Gets the end year when this rule takes effect.
@@ -477,7 +477,7 @@ public:
* with 0 == 1 BCE, -1 == 2 BCE, etc.
* @stable ICU 3.8
*/
- int32_t getEndYear(void) const;
+ int32_t getEndYear() const;
/**
* Gets the time when this rule takes effect in the given year.
@@ -581,7 +581,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -594,7 +594,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
/**
@@ -679,7 +679,7 @@ public:
* @return The time type used of the start times used by this rule.
* @stable ICU 3.8
*/
- DateTimeRule::TimeRuleType getTimeType(void) const;
+ DateTimeRule::TimeRuleType getTimeType() const;
/**
* Gets a start time at the index stored in this rule.
@@ -697,7 +697,7 @@ public:
* @return The number of start times.
* @stable ICU 3.8
*/
- int32_t countStartTimes(void) const;
+ int32_t countStartTimes() const;
/**
* Returns if this rule represents the same rule and offsets as another.
@@ -792,7 +792,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -805,7 +805,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
diff --git a/libicu/cts_headers/unicode/tztrans.h b/libicu/cts_headers/unicode/tztrans.h
index 5adbeb35e..57751c6fc 100644
--- a/libicu/cts_headers/unicode/tztrans.h
+++ b/libicu/cts_headers/unicode/tztrans.h
@@ -102,7 +102,7 @@ public:
* @return The time of the transition in milliseconds since the 1970 Jan 1 epoch time.
* @stable ICU 3.8
*/
- UDate getTime(void) const;
+ UDate getTime() const;
/**
* Sets the time of transition in milliseconds.
@@ -116,7 +116,7 @@ public:
* @return The time zone rule used after the transition.
* @stable ICU 3.8
*/
- const TimeZoneRule* getFrom(void) const;
+ const TimeZoneRule* getFrom() const;
/**
* Sets the rule used before the transition. The caller remains
@@ -155,7 +155,7 @@ public:
* @return The time zone rule used after the transition.
* @stable ICU 3.8
*/
- const TimeZoneRule* getTo(void) const;
+ const TimeZoneRule* getTo() const;
private:
UDate fTime;
@@ -174,7 +174,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -187,7 +187,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/unicode/ucal.h b/libicu/cts_headers/unicode/ucal.h
index f351b6c9d..0eb4b21d3 100644
--- a/libicu/cts_headers/unicode/ucal.h
+++ b/libicu/cts_headers/unicode/ucal.h
@@ -442,7 +442,6 @@ enum UCalendarDateFields {
*/
UCAL_IS_LEAP_MONTH,
-#ifndef U_HIDE_DRAFT_API
/**
* Field number indicating the month. This is a calendar-specific value.
* Differ from UCAL_MONTH, this value is continuous and unique within a
@@ -464,10 +463,9 @@ enum UCalendarDateFields {
* and there is an extra "Leap Month 5" which associated with UCAL_ORDINAL_MONTH
* value 5 before "Month 6" of year 4664.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UCAL_ORDINAL_MONTH,
-#endif // U_HIDE_DRAFT_API
/* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
* it is needed for layout of Calendar, DateFormat, and other objects */
@@ -476,12 +474,7 @@ enum UCalendarDateFields {
* One more than the highest normal UCalendarDateFields value.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
-#ifdef U_HIDE_DRAFT_API
- // Must include all fields that will be in structs
- UCAL_FIELD_COUNT = UCAL_IS_LEAP_MONTH + 2,
-#else // U_HIDE_DRAFT_API (for UCAL_ORDINAL_MONTH)
UCAL_FIELD_COUNT = UCAL_ORDINAL_MONTH + 1,
-#endif // U_HIDE_DRAFT_API (for UCAL_ORDINAL_MONTH)
#endif // U_FORCE_HIDE_DEPRECATED_API
diff --git a/libicu/cts_headers/unicode/uchar.h b/libicu/cts_headers/unicode/uchar.h
index 747089133..4572230d9 100644
--- a/libicu/cts_headers/unicode/uchar.h
+++ b/libicu/cts_headers/unicode/uchar.h
@@ -25,6 +25,7 @@
#ifndef UCHAR_H
#define UCHAR_H
+#include <stdbool.h>
#include "unicode/utypes.h"
#include "unicode/stringoptions.h"
#include "unicode/ucpmap.h"
@@ -668,12 +669,21 @@ typedef enum UProperty {
* @stable ICU 63
*/
UCHAR_VERTICAL_ORIENTATION=0x1018,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Enumerated property Identifier_Status.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ * @draft ICU 75
+ */
+ UCHAR_IDENTIFIER_STATUS=0x1019,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for enumerated/integer Unicode properties.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_INT_LIMIT=0x1019,
+ UCHAR_INT_LIMIT=0x101A,
#endif // U_HIDE_DEPRECATED_API
/** Bitmask property General_Category_Mask.
@@ -774,12 +784,28 @@ typedef enum UProperty {
UCHAR_SCRIPT_EXTENSIONS=0x7000,
/** First constant for Unicode properties with unusual value types. @stable ICU 4.6 */
UCHAR_OTHER_PROPERTY_START=UCHAR_SCRIPT_EXTENSIONS,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Miscellaneous property Identifier_Type.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Corresponds to u_hasIDType() and u_getIDTypes().
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @see u_hasIDType
+ * @see u_getIDTypes
+ * @draft ICU 75
+ */
+ UCHAR_IDENTIFIER_TYPE=0x7001,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for Unicode properties with unusual value types.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_OTHER_PROPERTY_LIMIT=0x7001,
+ UCHAR_OTHER_PROPERTY_LIMIT=0x7002,
#endif // U_HIDE_DEPRECATED_API
/** Represents a nonexistent or invalid property or property value. @stable ICU 2.4 */
@@ -2701,6 +2727,68 @@ typedef enum UVerticalOrientation {
U_VO_UPRIGHT,
} UVerticalOrientation;
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Identifier Status constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UCHAR_IDENTIFIER_STATUS
+ * @draft ICU 75
+ */
+typedef enum UIdentifierStatus {
+ /*
+ * Note: UIdentifierStatus constants are parsed by preparseucd.py.
+ * It matches lines like
+ * U_ID_STATUS_<Unicode Identifier_Status value name>
+ */
+
+ /** @draft ICU 75 */
+ U_ID_STATUS_RESTRICTED,
+ /** @draft ICU 75 */
+ U_ID_STATUS_ALLOWED,
+} UIdentifierStatus;
+
+/**
+ * Identifier Type constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UCHAR_IDENTIFIER_TYPE
+ * @draft ICU 75
+ */
+typedef enum UIdentifierType {
+ /*
+ * Note: UIdentifierType constants are parsed by preparseucd.py.
+ * It matches lines like
+ * U_ID_TYPE_<Unicode Identifier_Type value name>
+ */
+
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_CHARACTER,
+ /** @draft ICU 75 */
+ U_ID_TYPE_DEPRECATED,
+ /** @draft ICU 75 */
+ U_ID_TYPE_DEFAULT_IGNORABLE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_NFKC,
+ /** @draft ICU 75 */
+ U_ID_TYPE_NOT_XID,
+ /** @draft ICU 75 */
+ U_ID_TYPE_EXCLUSION,
+ /** @draft ICU 75 */
+ U_ID_TYPE_OBSOLETE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_TECHNICAL,
+ /** @draft ICU 75 */
+ U_ID_TYPE_UNCOMMON_USE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_LIMITED_USE,
+ /** @draft ICU 75 */
+ U_ID_TYPE_INCLUSION,
+ /** @draft ICU 75 */
+ U_ID_TYPE_RECOMMENDED,
+} UIdentifierType;
+#endif // U_HIDE_DRAFT_API
+
/**
* Check a binary Unicode property for a code point.
*
@@ -3905,6 +3993,59 @@ u_isIDStart(UChar32 c);
U_CAPI UBool U_EXPORT2
u_isIDPart(UChar32 c);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Does the set of Identifier_Type values code point c contain the given type?
+ *
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @param c code point
+ * @param type Identifier_Type to check
+ * @return true if type is in Identifier_Type(c)
+ * @draft ICU 75
+ */
+U_CAPI bool U_EXPORT2
+u_hasIDType(UChar32 c, UIdentifierType type);
+
+/**
+ * Writes code point c's Identifier_Type as a list of UIdentifierType values
+ * to the output types array and returns the number of types.
+ *
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ * There is always at least one type.
+ * The order of output values is undefined.
+ * Each type is output at most once;
+ * there cannot be more output values than UIdentifierType constants.
+ * In addition, only some of the types can be combined with others,
+ * and usually only a small number of types occur together.
+ * Future versions might add additional types.
+ * See UTS #39 and its data files for details.
+ *
+ * If there are more than capacity types to be written, then
+ * U_BUFFER_OVERFLOW_ERROR is set and the number of types is returned.
+ * (Usual ICU buffer handling behavior.)
+ *
+ * @param c code point
+ * @param types output array
+ * @param capacity capacity of the array
+ * @param pErrorCode Standard ICU error code. Its input value must
+ * pass the U_SUCCESS() test, or else the function returns
+ * immediately. Check for U_FAILURE() on output or use with
+ * function chaining. (See User Guide for details.)
+ * @return number of values in c's Identifier_Type,
+ * written to types unless U_BUFFER_OVERFLOW_ERROR indicates insufficient capacity
+ * @draft ICU 75
+ */
+U_CAPI int32_t U_EXPORT2
+u_getIDTypes(UChar32 c, UIdentifierType *types, int32_t capacity, UErrorCode *pErrorCode);
+#endif // U_HIDE_DRAFT_API
+
/**
* Determines if the specified character should be regarded
* as an ignorable character in an identifier,
diff --git a/libicu/cts_headers/unicode/uchriter.h b/libicu/cts_headers/unicode/uchriter.h
index 9fae5e7de..bd2f29877 100644
--- a/libicu/cts_headers/unicode/uchriter.h
+++ b/libicu/cts_headers/unicode/uchriter.h
@@ -126,7 +126,7 @@ public:
* @return the hash code.
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const override;
+ virtual int32_t hashCode() const override;
/**
* Returns a new UCharCharacterIterator referring to the same
@@ -144,7 +144,7 @@ public:
* @return the first code unit in its iteration range.
* @stable ICU 2.0
*/
- virtual char16_t first(void) override;
+ virtual char16_t first() override;
/**
* Sets the iterator to refer to the first code unit in its
@@ -154,7 +154,7 @@ public:
* @return the first code unit in its iteration range
* @stable ICU 2.0
*/
- virtual char16_t firstPostInc(void) override;
+ virtual char16_t firstPostInc() override;
/**
* Sets the iterator to refer to the first code point in its
@@ -165,7 +165,7 @@ public:
* @return the first code point in its iteration range
* @stable ICU 2.0
*/
- virtual UChar32 first32(void) override;
+ virtual UChar32 first32() override;
/**
* Sets the iterator to refer to the first code point in its
@@ -175,7 +175,7 @@ public:
* @return the first code point in its iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 first32PostInc(void) override;
+ virtual UChar32 first32PostInc() override;
/**
* Sets the iterator to refer to the last code unit in its
@@ -184,7 +184,7 @@ public:
* @return the last code unit in its iteration range.
* @stable ICU 2.0
*/
- virtual char16_t last(void) override;
+ virtual char16_t last() override;
/**
* Sets the iterator to refer to the last code point in its
@@ -193,7 +193,7 @@ public:
* @return the last code point in its iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 last32(void) override;
+ virtual UChar32 last32() override;
/**
* Sets the iterator to refer to the "position"-th code unit
@@ -223,14 +223,14 @@ public:
* @return the code unit the iterator currently refers to.
* @stable ICU 2.0
*/
- virtual char16_t current(void) const override;
+ virtual char16_t current() const override;
/**
* Returns the code point the iterator currently refers to.
* @return the code point the iterator currently refers to.
* @stable ICU 2.0
*/
- virtual UChar32 current32(void) const override;
+ virtual UChar32 current32() const override;
/**
* Advances to the next code unit in the iteration range (toward
@@ -239,7 +239,7 @@ public:
* @return the next code unit in the iteration range.
* @stable ICU 2.0
*/
- virtual char16_t next(void) override;
+ virtual char16_t next() override;
/**
* Gets the current code unit for returning and advances to the next code unit
@@ -249,7 +249,7 @@ public:
* @return the current code unit.
* @stable ICU 2.0
*/
- virtual char16_t nextPostInc(void) override;
+ virtual char16_t nextPostInc() override;
/**
* Advances to the next code point in the iteration range (toward
@@ -261,7 +261,7 @@ public:
* @return the next code point in the iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 next32(void) override;
+ virtual UChar32 next32() override;
/**
* Gets the current code point for returning and advances to the next code point
@@ -271,7 +271,7 @@ public:
* @return the current point.
* @stable ICU 2.0
*/
- virtual UChar32 next32PostInc(void) override;
+ virtual UChar32 next32PostInc() override;
/**
* Returns false if there are no more code units or code points
@@ -291,7 +291,7 @@ public:
* @return the previous code unit in the iteration range.
* @stable ICU 2.0
*/
- virtual char16_t previous(void) override;
+ virtual char16_t previous() override;
/**
* Advances to the previous code point in the iteration range (toward
@@ -300,7 +300,7 @@ public:
* @return the previous code point in the iteration range.
* @stable ICU 2.0
*/
- virtual UChar32 previous32(void) override;
+ virtual UChar32 previous32() override;
/**
* Returns false if there are no more code units or code points
@@ -363,14 +363,14 @@ public:
* @return a class ID for this class
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Return a class ID for this object (not really public)
* @return a class ID for this object.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
protected:
/**
diff --git a/libicu/cts_headers/unicode/ucnv.h b/libicu/cts_headers/unicode/ucnv.h
index 20c173b66..4a7972c95 100644
--- a/libicu/cts_headers/unicode/ucnv.h
+++ b/libicu/cts_headers/unicode/ucnv.h
@@ -344,8 +344,6 @@ ucnv_compareNames(const char *name1, const char *name2);
* other than its an alias starting with the letters "cp". Please do not
* associate any meaning to these aliases.</p>
*
- * \snippet samples/ucnv/convsamp.cpp ucnv_open
- *
* @param converterName Name of the coded character set table.
* This may have options appended to the string.
* IANA alias character set names, IBM CCSIDs starting with "ibm-",
@@ -1986,7 +1984,6 @@ ucnv_usesFallback(const UConverter *cnv);
* instead of the input signature bytes.
* <p>
* Usage:
- * \snippet samples/ucnv/convsamp.cpp ucnv_detectUnicodeSignature
*
* @param source The source string in which the signature should be detected.
* @param sourceLength Length of the input string, or -1 if terminated with a NUL byte.
diff --git a/libicu/cts_headers/unicode/uconfig.h b/libicu/cts_headers/unicode/uconfig.h
index 29d8b33b7..8017f3079 100644
--- a/libicu/cts_headers/unicode/uconfig.h
+++ b/libicu/cts_headers/unicode/uconfig.h
@@ -427,6 +427,18 @@
#endif
/**
+ * \def UCONFIG_NO_MF2
+ * This switch turns off the experimental MessageFormat 2.0 API.
+ *
+ * @internal ICU 75 technology preview
+ * @deprecated This API is for technology preview only.
+ */
+#ifndef UCONFIG_NO_MF2
+// Android patch: Disable experimental MF2 on Android.
+# define UCONFIG_NO_MF2 1
+#endif
+
+/**
* \def UCONFIG_NO_TRANSLITERATION
* This switch turns off transliteration.
*
diff --git a/libicu/cts_headers/unicode/uloc.h b/libicu/cts_headers/unicode/uloc.h
index 21179c1b6..9cd7f5e1b 100644
--- a/libicu/cts_headers/unicode/uloc.h
+++ b/libicu/cts_headers/unicode/uloc.h
@@ -399,6 +399,9 @@ uloc_setDefault(const char* localeID,
/**
* Gets the language code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the ISO language code with
* @param language the language code for localeID
* @param languageCapacity the size of the language buffer to store the
@@ -417,6 +420,9 @@ uloc_getLanguage(const char* localeID,
/**
* Gets the script code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the ISO language code with
* @param script the language code for localeID
* @param scriptCapacity the size of the language buffer to store the
@@ -435,6 +441,9 @@ uloc_getScript(const char* localeID,
/**
* Gets the country code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the country code with
* @param country the country code for localeID
* @param countryCapacity the size of the country buffer to store the
@@ -453,6 +462,9 @@ uloc_getCountry(const char* localeID,
/**
* Gets the variant code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the variant code with
* @param variant the variant code for localeID
* @param variantCapacity the size of the variant buffer to store the
@@ -471,6 +483,10 @@ uloc_getVariant(const char* localeID,
/**
* Gets the full name for the specified locale.
+ *
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* Note: This has the effect of 'canonicalizing' the ICU locale ID to
* a certain extent. Upper and lower case are set as needed.
* It does NOT map aliased names in any way.
@@ -1158,19 +1174,20 @@ uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity,
*
* If localeID is already in the maximal form, or there is no data available
* for maximization, it will be copied to the output buffer. For example,
- * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+ * "sh" cannot be maximized, since there is no reasonable maximization.
*
* Examples:
*
+ * "und_Zzzz" maximizes to "en_Latn_US"
+ *
* "en" maximizes to "en_Latn_US"
*
- * "de" maximizes to "de_Latn_US"
+ * "de" maximizes to "de_Latn_DE"
*
* "sr" maximizes to "sr_Cyrl_RS"
*
- * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
+ * "zh_Hani" maximizes to "zh_Hani_CN"
*
- * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
*
* @param localeID The locale to maximize
* @param maximizedLocaleID The maximized locale
diff --git a/libicu/cts_headers/unicode/ulocbuilder.h b/libicu/cts_headers/unicode/ulocbuilder.h
index f2e98612f..9b147292f 100644
--- a/libicu/cts_headers/unicode/ulocbuilder.h
+++ b/libicu/cts_headers/unicode/ulocbuilder.h
@@ -74,7 +74,7 @@ typedef struct ULocaleBuilder ULocaleBuilder;
* @draft ICU 74
*/
U_CAPI ULocaleBuilder* U_EXPORT2
-ulocbld_open();
+ulocbld_open(void);
/**
* Close the builder and destroy it's internal states.
diff --git a/libicu/cts_headers/unicode/umachine.h b/libicu/cts_headers/unicode/umachine.h
index 545abef59..c501b253b 100644
--- a/libicu/cts_headers/unicode/umachine.h
+++ b/libicu/cts_headers/unicode/umachine.h
@@ -370,22 +370,14 @@ typedef int8_t UBool;
#if 1
// #if 1 is normal. UChar defaults to char16_t in C++.
// For configuration testing of UChar=uint16_t temporarily change this to #if 0.
- // The intltest Makefile #defines UCHAR_TYPE=char16_t,
- // so we only #define it to uint16_t if it is undefined so far.
-#elif !defined(UCHAR_TYPE)
+#else
# define UCHAR_TYPE uint16_t
#endif
-#if defined(U_COMBINED_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION) || \
- defined(U_I18N_IMPLEMENTATION) || defined(U_IO_IMPLEMENTATION)
- // Inside the ICU library code, never configurable.
+#if defined(U_ALL_IMPLEMENTATION) || !defined(UCHAR_TYPE)
typedef char16_t UChar;
-#elif defined(UCHAR_TYPE)
- typedef UCHAR_TYPE UChar;
-#elif U_CPLUSPLUS_VERSION != 0
- typedef char16_t UChar; // C++
#else
- typedef uint16_t UChar; // C
+ typedef UCHAR_TYPE UChar;
#endif
/**
diff --git a/libicu/cts_headers/unicode/unifunct.h b/libicu/cts_headers/unicode/unifunct.h
index 875130249..4aeb0f5d7 100644
--- a/libicu/cts_headers/unicode/unifunct.h
+++ b/libicu/cts_headers/unicode/unifunct.h
@@ -83,7 +83,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID <b>polymorphically</b>. This method
@@ -100,7 +100,7 @@ public:
* different class IDs.
* @stable ICU 2.4
*/
- virtual UClassID getDynamicClassID(void) const override = 0;
+ virtual UClassID getDynamicClassID() const override = 0;
/**
* Set the data object associated with this functor. The data
diff --git a/libicu/cts_headers/unicode/uniset.h b/libicu/cts_headers/unicode/uniset.h
index 84774d9f3..127e4ce06 100644
--- a/libicu/cts_headers/unicode/uniset.h
+++ b/libicu/cts_headers/unicode/uniset.h
@@ -333,7 +333,7 @@ public:
* @see setToBogus()
* @stable ICU 4.0
*/
- inline UBool isBogus(void) const;
+ inline UBool isBogus() const;
/**
* Make this UnicodeSet object invalid.
@@ -522,7 +522,7 @@ public:
* @see Object#hashCode()
* @stable ICU 2.0
*/
- virtual int32_t hashCode(void) const;
+ virtual int32_t hashCode() const;
/**
* Get a UnicodeSet pointer from a USet
@@ -792,7 +792,7 @@ public:
* @stable ICU 2.0
* @see getRangeCount
*/
- virtual int32_t size(void) const;
+ virtual int32_t size() const;
/**
* Returns <tt>true</tt> if this set contains no elements.
@@ -800,7 +800,7 @@ public:
* @return <tt>true</tt> if this set contains no elements.
* @stable ICU 2.0
*/
- virtual UBool isEmpty(void) const;
+ virtual UBool isEmpty() const;
/**
* @return true if this set contains multi-character strings or the empty string.
@@ -1394,7 +1394,7 @@ public:
* A frozen set will not be modified.
* @stable ICU 2.0
*/
- virtual UnicodeSet& clear(void);
+ virtual UnicodeSet& clear();
/**
* Close this set over the given attribute. For the attribute
@@ -1440,7 +1440,7 @@ public:
* @see #getRangeEnd
* @stable ICU 2.4
*/
- virtual int32_t getRangeCount(void) const;
+ virtual int32_t getRangeCount() const;
/**
* Iteration method that returns the first character in the
@@ -1529,7 +1529,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Implement UnicodeFunctor API.
@@ -1539,9 +1539,9 @@ public:
* different class IDs.
* @stable ICU 2.4
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
-private:
+ private:
// Private API for the USet API
@@ -1602,7 +1602,7 @@ private:
bool ensureBufferCapacity(int32_t newLen);
- void swapBuffers(void);
+ void swapBuffers();
UBool allocateStrings(UErrorCode &status);
int32_t stringsSize() const;
diff --git a/libicu/cts_headers/unicode/unistr.h b/libicu/cts_headers/unicode/unistr.h
index 4074e8d07..a41e6358f 100644
--- a/libicu/cts_headers/unicode/unistr.h
+++ b/libicu/cts_headers/unicode/unistr.h
@@ -1611,9 +1611,9 @@ public:
* @stable ICU 2.0
*/
inline int32_t extract(int32_t start,
- int32_t startLength,
- char *target,
- const char *codepage = 0) const;
+ int32_t startLength,
+ char* target,
+ const char* codepage = nullptr) const;
/**
* Copy the characters in the range
@@ -1759,7 +1759,7 @@ public:
* @see countChar32
* @stable ICU 2.0
*/
- inline int32_t length(void) const;
+ inline int32_t length() const;
/**
* Count Unicode code points in the length char16_t code units of the string.
@@ -1808,7 +1808,7 @@ public:
* @return true if this string contains 0 characters, false otherwise.
* @stable ICU 2.0
*/
- inline UBool isEmpty(void) const;
+ inline UBool isEmpty() const;
/**
* Return the capacity of the internal buffer of the UnicodeString object.
@@ -1819,7 +1819,7 @@ public:
* @see getBuffer
* @stable ICU 2.0
*/
- inline int32_t getCapacity(void) const;
+ inline int32_t getCapacity() const;
/* Other operations */
@@ -1828,7 +1828,7 @@ public:
* @return The hash code of this UnicodeString.
* @stable ICU 2.0
*/
- inline int32_t hashCode(void) const;
+ inline int32_t hashCode() const;
/**
* Determine if this object contains a valid string.
@@ -1842,8 +1842,7 @@ public:
* @see setToBogus()
* @stable ICU 2.0
*/
- inline UBool isBogus(void) const;
-
+ inline UBool isBogus() const;
//========================================
// Write operations
@@ -2624,8 +2623,7 @@ public:
* @return a reference to this
* @stable ICU 2.0
*/
- UnicodeString& trim(void);
-
+ UnicodeString& trim();
/* Miscellaneous operations */
@@ -2634,7 +2632,7 @@ public:
* @return a reference to this
* @stable ICU 2.0
*/
- inline UnicodeString& reverse(void);
+ inline UnicodeString& reverse();
/**
* Reverse the range [`start`, `start + length`) in
@@ -2653,7 +2651,7 @@ public:
* @return A reference to this.
* @stable ICU 2.0
*/
- UnicodeString& toUpper(void);
+ UnicodeString& toUpper();
/**
* Convert the characters in this to UPPER CASE following the conventions of
@@ -2670,7 +2668,7 @@ public:
* @return A reference to this.
* @stable ICU 2.0
*/
- UnicodeString& toLower(void);
+ UnicodeString& toLower();
/**
* Convert the characters in this to lower case following the conventions of
@@ -3590,12 +3588,12 @@ private:
int32_t length);
// calculate hash code
- int32_t doHashCode(void) const;
+ int32_t doHashCode() const;
// get pointer to start of array
// these do not check for kOpenGetBuffer, unlike the public getBuffer() function
- inline char16_t* getArrayStart(void);
- inline const char16_t* getArrayStart(void) const;
+ inline char16_t* getArrayStart();
+ inline const char16_t* getArrayStart() const;
inline UBool hasShortLength() const;
inline int32_t getShortLength() const;
@@ -3622,7 +3620,7 @@ private:
UBool allocate(int32_t capacity);
// release the array if owned
- void releaseArray(void);
+ void releaseArray();
// turn a bogus string into an empty one
void unBogus();
@@ -3684,10 +3682,10 @@ private:
* Return false if memory could not be allocated.
*/
UBool cloneArrayIfNeeded(int32_t newCapacity = -1,
- int32_t growCapacity = -1,
- UBool doCopyArray = true,
- int32_t **pBufferToDelete = 0,
- UBool forceClone = false);
+ int32_t growCapacity = -1,
+ UBool doCopyArray = true,
+ int32_t** pBufferToDelete = nullptr,
+ UBool forceClone = false);
/**
* Common function for UnicodeString case mappings.
@@ -3702,9 +3700,9 @@ private:
UStringCaseMapper *stringCaseMapper);
// ref counting
- void addRef(void);
- int32_t removeRef(void);
- int32_t refCount(void) const;
+ void addRef();
+ int32_t removeRef();
+ int32_t refCount() const;
// constants
enum {
@@ -4510,7 +4508,7 @@ UnicodeString::extract(int32_t start,
{
// This dstSize value will be checked explicitly
- return extract(start, _length, dst, dst!=0 ? 0xffffffff : 0, codepage);
+ return extract(start, _length, dst, dst != nullptr ? 0xffffffff : 0, codepage);
}
#endif
diff --git a/libicu/cts_headers/unicode/urename.h b/libicu/cts_headers/unicode/urename.h
index 233b785fa..b82491251 100644
--- a/libicu/cts_headers/unicode/urename.h
+++ b/libicu/cts_headers/unicode/urename.h
@@ -272,6 +272,7 @@
#define u_getDataVersion U_ICU_ENTRY_POINT_RENAME(u_getDataVersion)
#define u_getDefaultConverter U_ICU_ENTRY_POINT_RENAME(u_getDefaultConverter)
#define u_getFC_NFKC_Closure U_ICU_ENTRY_POINT_RENAME(u_getFC_NFKC_Closure)
+#define u_getIDTypes U_ICU_ENTRY_POINT_RENAME(u_getIDTypes)
#define u_getISOComment U_ICU_ENTRY_POINT_RENAME(u_getISOComment)
#define u_getIntPropertyMap U_ICU_ENTRY_POINT_RENAME(u_getIntPropertyMap)
// #define u_getIntPropertyMaxValue U_ICU_ENTRY_POINT_RENAME(u_getIntPropertyMaxValue)
@@ -289,6 +290,7 @@
// #define u_getVersion U_ICU_ENTRY_POINT_RENAME(u_getVersion)
#define u_get_stdout U_ICU_ENTRY_POINT_RENAME(u_get_stdout)
// #define u_hasBinaryProperty U_ICU_ENTRY_POINT_RENAME(u_hasBinaryProperty)
+#define u_hasIDType U_ICU_ENTRY_POINT_RENAME(u_hasIDType)
#define u_init U_ICU_ENTRY_POINT_RENAME(u_init)
// #define u_isIDIgnorable U_ICU_ENTRY_POINT_RENAME(u_isIDIgnorable)
// #define u_isIDPart U_ICU_ENTRY_POINT_RENAME(u_isIDPart)
@@ -1192,16 +1194,20 @@
#define ulocimp_canonicalize U_ICU_ENTRY_POINT_RENAME(ulocimp_canonicalize)
#define ulocimp_forLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_forLanguageTag)
#define ulocimp_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocimp_getBaseName)
-#define ulocimp_getCountry U_ICU_ENTRY_POINT_RENAME(ulocimp_getCountry)
#define ulocimp_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywordValue)
#define ulocimp_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywords)
#define ulocimp_getKnownCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_getKnownCanonicalizedLocaleForTest)
#define ulocimp_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocimp_getLanguage)
#define ulocimp_getName U_ICU_ENTRY_POINT_RENAME(ulocimp_getName)
+#define ulocimp_getParent U_ICU_ENTRY_POINT_RENAME(ulocimp_getParent)
+#define ulocimp_getRegion U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegion)
#define ulocimp_getRegionForSupplementalData U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegionForSupplementalData)
#define ulocimp_getScript U_ICU_ENTRY_POINT_RENAME(ulocimp_getScript)
+#define ulocimp_getSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_getSubtags)
+#define ulocimp_getVariant U_ICU_ENTRY_POINT_RENAME(ulocimp_getVariant)
#define ulocimp_isCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_isCanonicalizedLocaleForTest)
#define ulocimp_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_minimizeSubtags)
+#define ulocimp_setKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_setKeywordValue)
#define ulocimp_toBcpKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpKey)
#define ulocimp_toBcpType U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpType)
#define ulocimp_toLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_toLanguageTag)
@@ -1800,6 +1806,7 @@
#define usnum_multiplyByPowerOfTen U_ICU_ENTRY_POINT_RENAME(usnum_multiplyByPowerOfTen)
#define usnum_openForInt64 U_ICU_ENTRY_POINT_RENAME(usnum_openForInt64)
#define usnum_roundTo U_ICU_ENTRY_POINT_RENAME(usnum_roundTo)
+#define usnum_setMaximumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMaximumIntegerDigits)
#define usnum_setMinimumFractionDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumFractionDigits)
#define usnum_setMinimumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumIntegerDigits)
#define usnum_setSign U_ICU_ENTRY_POINT_RENAME(usnum_setSign)
diff --git a/libicu/cts_headers/unicode/uscript.h b/libicu/cts_headers/unicode/uscript.h
index dc97ab2ba..2c9cee1bf 100644
--- a/libicu/cts_headers/unicode/uscript.h
+++ b/libicu/cts_headers/unicode/uscript.h
@@ -500,6 +500,9 @@ typedef enum UScriptCode {
/** @stable ICU 72 */
USCRIPT_NAG_MUNDARI = 199,/* Nagm */
+ /** @stable ICU 75 */
+ USCRIPT_ARABIC_NASTALIQ = 200, /* Aran */
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UScriptCode value.
@@ -507,7 +510,7 @@ typedef enum UScriptCode {
*
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- USCRIPT_CODE_LIMIT = 200
+ USCRIPT_CODE_LIMIT = 201
#endif // U_HIDE_DEPRECATED_API
} UScriptCode;
diff --git a/libicu/cts_headers/unicode/uset.h b/libicu/cts_headers/unicode/uset.h
index ee4e0036d..cce95ce92 100644
--- a/libicu/cts_headers/unicode/uset.h
+++ b/libicu/cts_headers/unicode/uset.h
@@ -109,7 +109,6 @@ enum {
*/
USET_ADD_CASE_MAPPINGS = 4,
-#ifndef U_HIDE_DRAFT_API
/**
* Enable case insensitive matching.
* Same as USET_CASE_INSENSITIVE but using only Simple_Case_Folding (scf) mappings,
@@ -120,10 +119,9 @@ enum {
* regular expression implementations where only Simple_Case_Folding mappings are used,
* such as in ECMAScript (JavaScript) regular expressions.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
USET_SIMPLE_CASE_INSENSITIVE = 6
-#endif // U_HIDE_DRAFT_API
};
/**
diff --git a/libicu/cts_headers/unicode/usimplenumberformatter.h b/libicu/cts_headers/unicode/usimplenumberformatter.h
index ef89b46b9..b67d7e56d 100644
--- a/libicu/cts_headers/unicode/usimplenumberformatter.h
+++ b/libicu/cts_headers/unicode/usimplenumberformatter.h
@@ -50,31 +50,28 @@
* </pre>
*/
-#ifndef U_HIDE_DRAFT_API
-
-
/**
* An explicit sign option for a SimpleNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
typedef enum USimpleNumberSign {
/**
* Render a plus sign.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UNUM_SIMPLE_NUMBER_PLUS_SIGN,
/**
* Render no sign.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UNUM_SIMPLE_NUMBER_NO_SIGN,
/**
* Render a minus sign.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
UNUM_SIMPLE_NUMBER_MINUS_SIGN,
} USimpleNumberSign;
@@ -84,7 +81,7 @@ struct USimpleNumber;
/**
* C-compatible version of icu::number::SimpleNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
typedef struct USimpleNumber USimpleNumber;
@@ -93,7 +90,7 @@ struct USimpleNumberFormatter;
/**
* C-compatible version of icu::number::SimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
typedef struct USimpleNumberFormatter USimpleNumberFormatter;
@@ -101,7 +98,7 @@ typedef struct USimpleNumberFormatter USimpleNumberFormatter;
/**
* Creates a new USimpleNumber to be formatted with a USimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI USimpleNumber* U_EXPORT2
usnum_openForInt64(int64_t value, UErrorCode* ec);
@@ -112,7 +109,7 @@ usnum_openForInt64(int64_t value, UErrorCode* ec);
*
* This can be used to reset the number value after formatting.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_setToInt64(USimpleNumber* unumber, int64_t value, UErrorCode* ec);
@@ -123,18 +120,19 @@ usnum_setToInt64(USimpleNumber* unumber, int64_t value, UErrorCode* ec);
*
* This function immediately mutates the inner value.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_multiplyByPowerOfTen(USimpleNumber* unumber, int32_t power, UErrorCode* ec);
/**
- * Rounds the value currently stored in the USimpleNumber to the given power of 10.
+ * Rounds the value currently stored in the USimpleNumber to the given power of 10,
+ * which can be before or after the decimal separator.
*
- * This function immediately mutates the inner value.
+ * This function does not change minimum integer digits.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_roundTo(USimpleNumber* unumber, int32_t power, UNumberFormatRoundingMode roundingMode, UErrorCode* ec);
@@ -143,9 +141,7 @@ usnum_roundTo(USimpleNumber* unumber, int32_t power, UNumberFormatRoundingMode r
/**
* Pads the beginning of the number with zeros up to the given minimum number of integer digits.
*
- * This setting is applied upon formatting the number.
- *
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_setMinimumIntegerDigits(USimpleNumber* unumber, int32_t minimumIntegerDigits, UErrorCode* ec);
@@ -154,23 +150,33 @@ usnum_setMinimumIntegerDigits(USimpleNumber* unumber, int32_t minimumIntegerDigi
/**
* Pads the end of the number with zeros up to the given minimum number of fraction digits.
*
- * This setting is applied upon formatting the number.
- *
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_setMinimumFractionDigits(USimpleNumber* unumber, int32_t minimumFractionDigits, UErrorCode* ec);
+#ifndef U_HIDE_DRAFT_API
/**
- * Truncates digits from the beginning of the number to the given maximum number of integer digits.
+ * Sets the number of integer digits to the given amount, truncating if necessary.
*
- * This function immediately mutates the inner value.
+ * @draft ICU 75
+ */
+U_CAPI void U_EXPORT2
+usnum_setMaximumIntegerDigits(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec);
+#endif // U_HIDE_DRAFT_API
+
+
+#ifndef U_HIDE_DEPRECATED_API
+/**
+ * Alias for setMaximumIntegerDigits.
+ * Will be removed after ICU 75.
*
- * @draft ICU 73
+ * @deprecated ICU 75
*/
U_CAPI void U_EXPORT2
usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec);
+#endif // U_HIDE_DEPRECATED_API
/**
@@ -180,7 +186,7 @@ usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UError
*
* NOTE: This does not support accounting sign notation.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_setSign(USimpleNumber* unumber, USimpleNumberSign sign, UErrorCode* ec);
@@ -189,7 +195,7 @@ usnum_setSign(USimpleNumber* unumber, USimpleNumberSign sign, UErrorCode* ec);
/**
* Creates a new USimpleNumberFormatter with all locale defaults.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI USimpleNumberFormatter* U_EXPORT2
usnumf_openForLocale(const char* locale, UErrorCode* ec);
@@ -198,7 +204,7 @@ usnumf_openForLocale(const char* locale, UErrorCode* ec);
/**
* Creates a new USimpleNumberFormatter, overriding the grouping strategy.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI USimpleNumberFormatter* U_EXPORT2
usnumf_openForLocaleAndGroupingStrategy(
@@ -211,7 +217,7 @@ usnumf_openForLocaleAndGroupingStrategy(
* The USimpleNumber is cleared after calling this function. It can be re-used via
* usnum_setToInt64.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnumf_format(
@@ -226,7 +232,7 @@ usnumf_format(
*
* For more control over the formatting, use USimpleNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnumf_formatInt64(
@@ -241,7 +247,7 @@ usnumf_formatInt64(
*
* NOTE: Normally, a USimpleNumber should be adopted by usnumf_formatAndAdoptNumber.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnum_close(USimpleNumber* unumber);
@@ -250,7 +256,7 @@ usnum_close(USimpleNumber* unumber);
/**
* Frees the memory held by a USimpleNumberFormatter.
*
- * @draft ICU 73
+ * @stable ICU 73
*/
U_CAPI void U_EXPORT2
usnumf_close(USimpleNumberFormatter* uformatter);
@@ -275,7 +281,7 @@ U_NAMESPACE_BEGIN
*
* @see LocalPointerBase
* @see LocalPointer
- * @draft ICU 73
+ * @stable ICU 73
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberPointer, USimpleNumber, usnum_close);
@@ -292,14 +298,12 @@ U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberPointer, USimpleNumber, usnum_clos
*
* @see LocalPointerBase
* @see LocalPointer
- * @draft ICU 73
+ * @stable ICU 73
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberFormatterPointer, USimpleNumberFormatter, usnumf_close);
U_NAMESPACE_END
#endif // U_SHOW_CPLUSPLUS_API
-#endif // U_HIDE_DRAFT_API
-
#endif /* #if !UCONFIG_NO_FORMATTING */
#endif //__USIMPLENUMBERFORMATTER_H__
diff --git a/libicu/cts_headers/unicode/utypes.h b/libicu/cts_headers/unicode/utypes.h
index f890d5d1d..6c7cc5134 100644
--- a/libicu/cts_headers/unicode/utypes.h
+++ b/libicu/cts_headers/unicode/utypes.h
@@ -438,6 +438,7 @@ typedef enum UErrorCode {
U_PLUGIN_CHANGED_LEVEL_WARNING = -120, /**< A plugin caused a level change. May not be an error, but later plugins may not load. */
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UErrorCode warning value.
@@ -568,12 +569,27 @@ typedef enum UErrorCode {
U_FORMAT_INEXACT_ERROR, /**< Cannot format a number exactly and rounding mode is ROUND_UNNECESSARY @stable ICU 4.8 */
U_NUMBER_ARG_OUTOFBOUNDS_ERROR, /**< The argument to a NumberFormatter helper method was out of bounds; the bounds are usually 0 to 999. @stable ICU 61 */
U_NUMBER_SKELETON_SYNTAX_ERROR, /**< The number skeleton passed to C++ NumberFormatter or C UNumberFormatter was invalid or contained a syntax error. @stable ICU 62 */
+
+ /* MessageFormat 2.0 errors */
+ U_MF_UNRESOLVED_VARIABLE_ERROR, /**< A variable is referred to but not bound by any definition @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_SYNTAX_ERROR, /**< Includes all syntax errors @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNKNOWN_FUNCTION_ERROR, /**< An annotation refers to a function not defined by the standard or custom function registry @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_VARIANT_KEY_MISMATCH_ERROR, /**< In a match-construct, one or more variants had a different number of keys from the number of selectors @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_FORMATTING_ERROR, /**< Covers all runtime errors: for example, an internally inconsistent set of options. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_NONEXHAUSTIVE_PATTERN_ERROR, /**< In a match-construct, the variants do not cover all possible values @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_DUPLICATE_OPTION_NAME_ERROR, /**< In an annotation, the same option name appears more than once @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_SELECTOR_ERROR, /**< A selector function is applied to an operand of the wrong type @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_MISSING_SELECTOR_ANNOTATION_ERROR, /**< A selector expression evaluates to an unannotated operand. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_DUPLICATE_DECLARATION_ERROR, /**< The same variable is declared in more than one .local or .input declaration. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_OPERAND_MISMATCH_ERROR, /**< An operand provided to a function does not have the required form for that function @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNSUPPORTED_STATEMENT_ERROR, /**< A message includes a reserved statement. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
+ U_MF_UNSUPPORTED_EXPRESSION_ERROR, /**< A message includes syntax reserved for future standardization or private implementation use. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal formatting API error code.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- U_FMT_PARSE_ERROR_LIMIT = 0x10114,
+ U_FMT_PARSE_ERROR_LIMIT = 0x10121,
#endif // U_HIDE_DEPRECATED_API
/*
diff --git a/libicu/cts_headers/unicode/uvernum.h b/libicu/cts_headers/unicode/uvernum.h
index 1cdf8912f..eb7c50f38 100644
--- a/libicu/cts_headers/unicode/uvernum.h
+++ b/libicu/cts_headers/unicode/uvernum.h
@@ -53,13 +53,13 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION_MAJOR_NUM 74
+#define U_ICU_VERSION_MAJOR_NUM 75
/** The current ICU minor version as an integer.
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_MINOR_NUM 2
+#define U_ICU_VERSION_MINOR_NUM 1
/** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU
@@ -79,7 +79,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SUFFIX _74
+#define U_ICU_VERSION_SUFFIX _75
/**
* \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -132,7 +132,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION "74.2"
+#define U_ICU_VERSION "75.1"
/**
* The current ICU library major version number as a string, for library name suffixes.
@@ -145,13 +145,13 @@
*
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SHORT "74"
+#define U_ICU_VERSION_SHORT "75"
#ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C.
* @internal ICU 4.4 Internal Use Only
**/
-#define U_ICU_DATA_VERSION "74.2"
+#define U_ICU_DATA_VERSION "75.1"
#endif /* U_HIDE_INTERNAL_API */
/*===========================================================================
diff --git a/libicu/cts_headers/unicode/vtzone.h b/libicu/cts_headers/unicode/vtzone.h
index 93f4ecb93..5e5e8d7d7 100644
--- a/libicu/cts_headers/unicode/vtzone.h
+++ b/libicu/cts_headers/unicode/vtzone.h
@@ -289,7 +289,7 @@ public:
* @return The TimeZone's raw GMT offset.
* @stable ICU 3.8
*/
- virtual int32_t getRawOffset(void) const override;
+ virtual int32_t getRawOffset() const override;
/**
* Queries if this time zone uses daylight savings time.
@@ -297,7 +297,7 @@ public:
* false, otherwise.
* @stable ICU 3.8
*/
- virtual UBool useDaylightTime(void) const override;
+ virtual UBool useDaylightTime() const override;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -445,7 +445,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 3.8
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -458,7 +458,7 @@ public:
* other classes have different class IDs.
* @stable ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/libicu/cts_headers/units_converter.h b/libicu/cts_headers/units_converter.h
index 8dc40cd10..01fa55706 100644
--- a/libicu/cts_headers/units_converter.h
+++ b/libicu/cts_headers/units_converter.h
@@ -110,10 +110,14 @@ void U_I18N_API addSingleFactorConstant(StringPiece baseStr, int32_t power, Sign
/**
* Represents the conversion rate between `source` and `target`.
+ * TODO ICU-22683: COnsider moving the handling of special mappings (e.g. beaufort) to a separate
+ * struct.
*/
struct U_I18N_API ConversionRate : public UMemory {
const MeasureUnitImpl source;
const MeasureUnitImpl target;
+ CharString specialSource;
+ CharString specialTarget;
double factorNum = 1;
double factorDen = 1;
double sourceOffset = 0;
@@ -121,7 +125,7 @@ struct U_I18N_API ConversionRate : public UMemory {
bool reciprocal = false;
ConversionRate(MeasureUnitImpl &&source, MeasureUnitImpl &&target)
- : source(std::move(source)), target(std::move(target)) {}
+ : source(std::move(source)), target(std::move(target)), specialSource(), specialTarget() {}
};
enum Convertibility {
@@ -224,6 +228,21 @@ class U_I18N_API UnitsConverter : public UMemory {
* Initialises the object.
*/
void init(const ConversionRates &ratesInfo, UErrorCode &status);
+
+ /**
+ * Convert from what should be discrete scale values for a particular unit like beaufort
+ * to a corresponding value in the base unit (which can have any decimal value, like meters/sec).
+ * This can handle different scales, specified by minBaseForScaleValues[].
+ */
+ double scaleToBase(double scaleValue, double minBaseForScaleValues[], int scaleMax) const;
+
+ /**
+ * Convert from a value in the base unit (which can have any decimal value, like meters/sec) to a corresponding
+ * discrete value in a scale (like beaufort), where each scale value represents a range of base values.
+ * This can handle different scales, specified by minBaseForScaleValues[].
+ */
+ double baseToScale(double baseValue, double minBaseForScaleValues[], int scaleMax) const;
+
};
} // namespace units
diff --git a/libicu/cts_headers/units_data.h b/libicu/cts_headers/units_data.h
index ad5033513..ccfe5fbef 100644
--- a/libicu/cts_headers/units_data.h
+++ b/libicu/cts_headers/units_data.h
@@ -31,7 +31,7 @@ class U_I18N_API ConversionRateInfo : public UMemory {
ConversionRateInfo() {}
ConversionRateInfo(StringPiece sourceUnit, StringPiece baseUnit, StringPiece factor,
StringPiece offset, UErrorCode &status)
- : sourceUnit(), baseUnit(), factor(), offset() {
+ : sourceUnit(), baseUnit(), factor(), offset(), specialMappingName() {
this->sourceUnit.append(sourceUnit, status);
this->baseUnit.append(baseUnit, status);
this->factor.append(factor, status);
@@ -41,6 +41,7 @@ class U_I18N_API ConversionRateInfo : public UMemory {
CharString baseUnit;
CharString factor;
CharString offset;
+ CharString specialMappingName; // the name of a special mapping used instead of factor + optional offset.
CharString systems;
};
diff --git a/libicu/cts_headers/uprops.h b/libicu/cts_headers/uprops.h
index 80347eab5..93120017f 100644
--- a/libicu/cts_headers/uprops.h
+++ b/libicu/cts_headers/uprops.h
@@ -224,23 +224,80 @@ enum {
/*
* Properties in vector word 2
* Bits
- * 31..26 unused since ICU 70 added uemoji.icu;
- * in ICU 57..69 stored emoji properties
+ * 31..26 ICU 75: Identifier_Type bit set
+ * ICU 70..74: unused
+ * ICU 57..69: emoji properties; moved to uemoji.icu in ICU 70
* 25..20 Line Break
* 19..15 Sentence Break
* 14..10 Word Break
* 9.. 5 Grapheme Cluster Break
* 4.. 0 Decomposition Type
*/
+
+#ifdef __cplusplus
+
+// https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type
+// The Identifier_Type maps each code point to a *set* of one or more values.
+// Some can be combined with others, some can only occur alone.
+// Exclusion & Limited_Use are combinable bits, but cannot occur together.
+// We use this forbidden combination for enumerated values.
+// We use 6 bits for all possible combinations.
+// If more combinable values are added, then we need to use more bits.
+//
+// We do not store separate data for Identifier_Status:
+// We can derive that from the encoded Identifier_Type via a simple range check.
+
+inline constexpr uint32_t UPROPS_2_ID_TYPE_MASK = 0xfc000000;
+inline constexpr int32_t UPROPS_2_ID_TYPE_SHIFT = 26;
+
enum {
- UPROPS_2_UNUSED_WAS_EXTENDED_PICTOGRAPHIC=26, // ICU 62..69
- UPROPS_2_UNUSED_WAS_EMOJI_COMPONENT, // ICU 60..69
- UPROPS_2_UNUSED_WAS_EMOJI, // ICU 57..69
- UPROPS_2_UNUSED_WAS_EMOJI_PRESENTATION, // ICU 57..69
- UPROPS_2_UNUSED_WAS_EMOJI_MODIFIER, // ICU 57..69
- UPROPS_2_UNUSED_WAS_EMOJI_MODIFIER_BASE // ICU 57..69
+ // A high bit for use in idTypeToEncoded[] but not used in the data
+ UPROPS_ID_TYPE_BIT = 0x80,
+
+ // Combinable bits
+ UPROPS_ID_TYPE_EXCLUSION = 0x20,
+ UPROPS_ID_TYPE_LIMITED_USE = 0x10,
+ UPROPS_ID_TYPE_UNCOMMON_USE = 8,
+ UPROPS_ID_TYPE_TECHNICAL = 4,
+ UPROPS_ID_TYPE_OBSOLETE = 2,
+ UPROPS_ID_TYPE_NOT_XID = 1,
+
+ // Exclusive values
+ UPROPS_ID_TYPE_NOT_CHARACTER = 0,
+
+ // Forbidden bit combination used for enumerating other exclusive values
+ UPROPS_ID_TYPE_FORBIDDEN = UPROPS_ID_TYPE_EXCLUSION | UPROPS_ID_TYPE_LIMITED_USE, // 0x30
+ UPROPS_ID_TYPE_DEPRECATED = UPROPS_ID_TYPE_FORBIDDEN, // 0x30
+ UPROPS_ID_TYPE_DEFAULT_IGNORABLE, // 0x31
+ UPROPS_ID_TYPE_NOT_NFKC, // 0x32
+
+ UPROPS_ID_TYPE_ALLOWED_MIN = UPROPS_ID_TYPE_FORBIDDEN + 0xc, // 0x3c
+ UPROPS_ID_TYPE_INCLUSION = UPROPS_ID_TYPE_FORBIDDEN + 0xe, // 0x3e
+ UPROPS_ID_TYPE_RECOMMENDED = UPROPS_ID_TYPE_FORBIDDEN + 0xf, // 0x3f
};
+/**
+ * Maps UIdentifierType to encoded bits.
+ * When UPROPS_ID_TYPE_BIT is set, then use "&" to test whether the value bit is set.
+ * When UPROPS_ID_TYPE_BIT is not set, then compare ("==") the array value with the data value.
+ */
+inline constexpr uint8_t uprops_idTypeToEncoded[] = {
+ UPROPS_ID_TYPE_NOT_CHARACTER,
+ UPROPS_ID_TYPE_DEPRECATED,
+ UPROPS_ID_TYPE_DEFAULT_IGNORABLE,
+ UPROPS_ID_TYPE_NOT_NFKC,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_NOT_XID,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_EXCLUSION,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_OBSOLETE,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_TECHNICAL,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_UNCOMMON_USE,
+ UPROPS_ID_TYPE_BIT | UPROPS_ID_TYPE_LIMITED_USE,
+ UPROPS_ID_TYPE_INCLUSION,
+ UPROPS_ID_TYPE_RECOMMENDED
+};
+
+#endif // __cplusplus
+
#define UPROPS_LB_MASK 0x03f00000
#define UPROPS_LB_SHIFT 20
diff --git a/libicu/ndk_headers/unicode/platform.h b/libicu/ndk_headers/unicode/platform.h
index 9808f2098..36ecdf7bd 100644
--- a/libicu/ndk_headers/unicode/platform.h
+++ b/libicu/ndk_headers/unicode/platform.h
@@ -207,6 +207,17 @@
#endif
/**
+ * \def U_REAL_MSVC
+ * Defined if the compiler is the real MSVC compiler (and not something like
+ * Clang setting _MSC_VER in order to compile Windows code that requires it).
+ * Otherwise undefined.
+ * \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only.
+ */
+#if (defined(_MSC_VER) && !(defined(__clang__) && __clang__)) || defined(U_IN_DOXYGEN)
+# define U_REAL_MSVC
+#endif
+
+/**
* \def CYGWINMSVC
* Defined if this is Windows with Cygwin, but using MSVC rather than gcc.
* Otherwise undefined.
@@ -302,51 +313,6 @@
# define U_PLATFORM_IS_DARWIN_BASED 0
#endif
-/**
- * \def U_HAVE_STDINT_H
- * Defines whether stdint.h is available. It is a C99 standard header.
- * We used to include inttypes.h which includes stdint.h but we usually do not need
- * the additional definitions from inttypes.h.
- * \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only.
- */
-#ifdef U_HAVE_STDINT_H
- /* Use the predefined value. */
-#elif U_PLATFORM_USES_ONLY_WIN32_API
-# if defined(__BORLANDC__) || U_PLATFORM == U_PF_MINGW || (defined(_MSC_VER) && _MSC_VER>=1600)
- /* Windows Visual Studio 9 and below do not have stdint.h & inttypes.h, but VS 2010 adds them. */
-# define U_HAVE_STDINT_H 1
-# else
-# define U_HAVE_STDINT_H 0
-# endif
-#elif U_PLATFORM == U_PF_SOLARIS
- /* Solaris has inttypes.h but not stdint.h. */
-# define U_HAVE_STDINT_H 0
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
- /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-# define U_HAVE_STDINT_H 0
-#else
-# define U_HAVE_STDINT_H 1
-#endif
-
-/**
- * \def U_HAVE_INTTYPES_H
- * Defines whether inttypes.h is available. It is a C99 standard header.
- * We include inttypes.h where it is available but stdint.h is not.
- * \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only.
- */
-#ifdef U_HAVE_INTTYPES_H
- /* Use the predefined value. */
-#elif U_PLATFORM == U_PF_SOLARIS
- /* Solaris has inttypes.h but not stdint.h. */
-# define U_HAVE_INTTYPES_H 1
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
- /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-# define U_HAVE_INTTYPES_H 1
-#else
- /* Most platforms have both inttypes.h and stdint.h, or neither. */
-# define U_HAVE_INTTYPES_H U_HAVE_STDINT_H
-#endif
-
/*===========================================================================*/
/** @{ Compiler and environment features */
/*===========================================================================*/
@@ -507,6 +473,8 @@
/* Otherwise use the predefined value. */
#elif !defined(__cplusplus)
# define U_CPLUSPLUS_VERSION 0
+#elif __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
+# define U_CPLUSPLUS_VERSION 17
#elif __cplusplus >= 201402L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
# define U_CPLUSPLUS_VERSION 14
#elif __cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)
@@ -754,9 +722,9 @@
/*
* Notes:
* C++11 and C11 require support for UTF-16 literals
- * TODO: Fix for plain C. Doesn't work on Mac.
+ * Doesn't work on Mac C11 (see workaround in ptypes.h).
*/
-# if U_CPLUSPLUS_VERSION >= 11 || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
+# if defined(__cplusplus) || !U_PLATFORM_IS_DARWIN_BASED
# define U_HAVE_CHAR16_T 1
# else
# define U_HAVE_CHAR16_T 0
diff --git a/libicu/ndk_headers/unicode/ptypes.h b/libicu/ndk_headers/unicode/ptypes.h
index d48d4cbc6..dee5ee078 100644
--- a/libicu/ndk_headers/unicode/ptypes.h
+++ b/libicu/ndk_headers/unicode/ptypes.h
@@ -44,91 +44,27 @@
/* NULL, size_t, wchar_t */
#include <stddef.h>
-/*
- * If all compilers provided all of the C99 headers and types,
- * we would just unconditionally #include <stdint.h> here
- * and not need any of the stuff after including platform.h.
- */
-
-/* Find out if we have stdint.h etc. */
+/* More platform-specific definitions. */
#include "unicode/platform.h"
/*===========================================================================*/
/* Generic data types */
/*===========================================================================*/
-/* If your platform does not have the <stdint.h> header, you may
- need to edit the typedefs in the #else section below.
- Use #if...#else...#endif with predefined compiler macros if possible. */
-#if U_HAVE_STDINT_H
-
-/*
- * We mostly need <stdint.h> (which defines the standard integer types) but not <inttypes.h>.
- * <inttypes.h> includes <stdint.h> and adds the printf/scanf helpers PRId32, SCNx16 etc.
- * which we almost never use, plus stuff like imaxabs() which we never use.
- */
#include <stdint.h>
-#if U_PLATFORM == U_PF_OS390
-/* The features header is needed to get (u)int64_t sometimes. */
-#include <features.h>
-/* z/OS has <stdint.h>, but some versions are missing uint8_t (APAR PK62248). */
-#if !defined(__uint8_t)
-#define __uint8_t 1
-typedef unsigned char uint8_t;
-#endif
-#endif /* U_PLATFORM == U_PF_OS390 */
-
-#elif U_HAVE_INTTYPES_H
-
-# include <inttypes.h>
-
-#else /* neither U_HAVE_STDINT_H nor U_HAVE_INTTYPES_H */
-
-/// \cond
-#if ! U_HAVE_INT8_T
-typedef signed char int8_t;
-#endif
-
-#if ! U_HAVE_UINT8_T
-typedef unsigned char uint8_t;
-#endif
-
-#if ! U_HAVE_INT16_T
-typedef signed short int16_t;
-#endif
-
-#if ! U_HAVE_UINT16_T
-typedef unsigned short uint16_t;
-#endif
-
-#if ! U_HAVE_INT32_T
-typedef signed int int32_t;
-#endif
-
-#if ! U_HAVE_UINT32_T
-typedef unsigned int uint32_t;
+// C++11 and C11 both specify that the data type char16_t should exist, C++11
+// as a keyword and C11 as a typedef in the uchar.h header file, but not all
+// implementations (looking at you, Apple, spring 2024) actually do this, so
+// ICU4C must detect and deal with that.
+#if !defined(__cplusplus) && !defined(U_IN_DOXYGEN)
+# if U_HAVE_CHAR16_T
+# include <uchar.h>
+# else
+ typedef uint16_t char16_t;
+# endif
#endif
-#if ! U_HAVE_INT64_T
-#ifdef _MSC_VER
- typedef signed __int64 int64_t;
-#else
- typedef signed long long int64_t;
-#endif
-#endif
-
-#if ! U_HAVE_UINT64_T
-#ifdef _MSC_VER
- typedef unsigned __int64 uint64_t;
-#else
- typedef unsigned long long uint64_t;
-#endif
-#endif
-/// \endcond
-
-#endif /* U_HAVE_STDINT_H / U_HAVE_INTTYPES_H */
-
#endif /* _PTYPES_H */
/** @} */ // addtogroup
diff --git a/libicu/ndk_headers/unicode/uchar.h b/libicu/ndk_headers/unicode/uchar.h
index aa63e4ada..000d95ce7 100644
--- a/libicu/ndk_headers/unicode/uchar.h
+++ b/libicu/ndk_headers/unicode/uchar.h
@@ -25,6 +25,7 @@
#ifndef UCHAR_H
#define UCHAR_H
+#include <stdbool.h>
#include "unicode/utypes.h"
#include "unicode/stringoptions.h"
#include "unicode/ucpmap.h"
@@ -670,12 +671,21 @@ typedef enum UProperty {
* \xrefitem stable "Stable" "Stable List" ICU 63
*/
UCHAR_VERTICAL_ORIENTATION=0x1018,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Enumerated property Identifier_Status.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ * \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75
+ */
+ UCHAR_IDENTIFIER_STATUS=0x1019,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for enumerated/integer Unicode properties.
* \xrefitem deprecated "Deprecated" "Deprecated List" ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_INT_LIMIT=0x1019,
+ UCHAR_INT_LIMIT=0x101A,
#endif // U_HIDE_DEPRECATED_API
/** Bitmask property General_Category_Mask.
@@ -776,12 +786,28 @@ typedef enum UProperty {
UCHAR_SCRIPT_EXTENSIONS=0x7000,
/** First constant for Unicode properties with unusual value types. \xrefitem stable "Stable" "Stable List" ICU 4.6 */
UCHAR_OTHER_PROPERTY_START=UCHAR_SCRIPT_EXTENSIONS,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Miscellaneous property Identifier_Type.
+ * Used for UTS #39 General Security Profile for Identifiers
+ * (https://www.unicode.org/reports/tr39/#General_Security_Profile).
+ *
+ * Corresponds to u_hasIDType() and u_getIDTypes().
+ *
+ * Each code point maps to a <i>set</i> of UIdentifierType values.
+ *
+ * @see u_hasIDType
+ * @see u_getIDTypes
+ * \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75
+ */
+ UCHAR_IDENTIFIER_TYPE=0x7001,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for Unicode properties with unusual value types.
* \xrefitem deprecated "Deprecated" "Deprecated List" ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_OTHER_PROPERTY_LIMIT=0x7001,
+ UCHAR_OTHER_PROPERTY_LIMIT=0x7002,
#endif // U_HIDE_DEPRECATED_API
/** Represents a nonexistent or invalid property or property value. \xrefitem stable "Stable" "Stable List" ICU 2.4 */
@@ -2703,6 +2729,68 @@ typedef enum UVerticalOrientation {
U_VO_UPRIGHT,
} UVerticalOrientation;
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Identifier Status constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UCHAR_IDENTIFIER_STATUS
+ * \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75
+ */
+typedef enum UIdentifierStatus {
+ /*
+ * Note: UIdentifierStatus constants are parsed by preparseucd.py.
+ * It matches lines like
+ * U_ID_STATUS_<Unicode Identifier_Status value name>
+ */
+
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_STATUS_RESTRICTED,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_STATUS_ALLOWED,
+} UIdentifierStatus;
+
+/**
+ * Identifier Type constants.
+ * See https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type.
+ *
+ * @see UCHAR_IDENTIFIER_TYPE
+ * \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75
+ */
+typedef enum UIdentifierType {
+ /*
+ * Note: UIdentifierType constants are parsed by preparseucd.py.
+ * It matches lines like
+ * U_ID_TYPE_<Unicode Identifier_Type value name>
+ */
+
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_NOT_CHARACTER,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_DEPRECATED,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_DEFAULT_IGNORABLE,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_NOT_NFKC,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_NOT_XID,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_EXCLUSION,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_OBSOLETE,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_TECHNICAL,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_UNCOMMON_USE,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_LIMITED_USE,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_INCLUSION,
+ /** \xrefitem draft "Draft" "Draft List" This API may be changed in the future versions and was introduced in ICU 75 */
+ U_ID_TYPE_RECOMMENDED,
+} UIdentifierType;
+#endif // U_HIDE_DRAFT_API
+
/**
* Check a binary Unicode property for a code point.
*
@@ -3907,6 +3995,12 @@ u_isIDPart(UChar32 c) __INTRODUCED_IN(31);
+#ifndef U_HIDE_DRAFT_API
+
+
+
+#endif // U_HIDE_DRAFT_API
+
/**
* Determines if the specified character should be regarded
* as an ignorable character in an identifier,
diff --git a/libicu/ndk_headers/unicode/uconfig.h b/libicu/ndk_headers/unicode/uconfig.h
index 2fe251275..025fe3830 100644
--- a/libicu/ndk_headers/unicode/uconfig.h
+++ b/libicu/ndk_headers/unicode/uconfig.h
@@ -427,6 +427,18 @@
#endif
/**
+ * \def UCONFIG_NO_MF2
+ * This switch turns off the experimental MessageFormat 2.0 API.
+ *
+ * \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview
+ * \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only.
+ */
+#ifndef UCONFIG_NO_MF2
+// Android patch: Disable experimental MF2 on Android.
+# define UCONFIG_NO_MF2 1
+#endif
+
+/**
* \def UCONFIG_NO_TRANSLITERATION
* This switch turns off transliteration.
*
diff --git a/libicu/ndk_headers/unicode/uloc.h b/libicu/ndk_headers/unicode/uloc.h
index 68c95ba52..59b63125b 100644
--- a/libicu/ndk_headers/unicode/uloc.h
+++ b/libicu/ndk_headers/unicode/uloc.h
@@ -387,6 +387,9 @@ uloc_getDefault(void) __INTRODUCED_IN(31);
/**
* Gets the language code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the ISO language code with
* @param language the language code for localeID
* @param languageCapacity the size of the language buffer to store the
@@ -407,6 +410,9 @@ uloc_getLanguage(const char* localeID,
/**
* Gets the script code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the ISO language code with
* @param script the language code for localeID
* @param scriptCapacity the size of the language buffer to store the
@@ -427,6 +433,9 @@ uloc_getScript(const char* localeID,
/**
* Gets the country code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the country code with
* @param country the country code for localeID
* @param countryCapacity the size of the country buffer to store the
@@ -447,6 +456,9 @@ uloc_getCountry(const char* localeID,
/**
* Gets the variant code for the specified locale.
*
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* @param localeID the locale to get the variant code with
* @param variant the variant code for localeID
* @param variantCapacity the size of the variant buffer to store the
@@ -467,6 +479,10 @@ uloc_getVariant(const char* localeID,
/**
* Gets the full name for the specified locale.
+ *
+ * This function may return with a failure error code for certain kinds of inputs
+ * but does not fully check for well-formed locale IDs / language tags.
+ *
* Note: This has the effect of 'canonicalizing' the ICU locale ID to
* a certain extent. Upper and lower case are set as needed.
* It does NOT map aliased names in any way.
@@ -1123,19 +1139,20 @@ uloc_acceptLanguage(char *result, int32_t resultAvailable,
*
* If localeID is already in the maximal form, or there is no data available
* for maximization, it will be copied to the output buffer. For example,
- * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+ * "sh" cannot be maximized, since there is no reasonable maximization.
*
* Examples:
*
+ * "und_Zzzz" maximizes to "en_Latn_US"
+ *
* "en" maximizes to "en_Latn_US"
*
- * "de" maximizes to "de_Latn_US"
+ * "de" maximizes to "de_Latn_DE"
*
* "sr" maximizes to "sr_Cyrl_RS"
*
- * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
+ * "zh_Hani" maximizes to "zh_Hani_CN"
*
- * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
*
* @param localeID The locale to maximize
* @param maximizedLocaleID The maximized locale
diff --git a/libicu/ndk_headers/unicode/umachine.h b/libicu/ndk_headers/unicode/umachine.h
index 1977d4220..25199f3ff 100644
--- a/libicu/ndk_headers/unicode/umachine.h
+++ b/libicu/ndk_headers/unicode/umachine.h
@@ -372,22 +372,14 @@ typedef int8_t UBool;
#if 1
// #if 1 is normal. UChar defaults to char16_t in C++.
// For configuration testing of UChar=uint16_t temporarily change this to #if 0.
- // The intltest Makefile #defines UCHAR_TYPE=char16_t,
- // so we only #define it to uint16_t if it is undefined so far.
-#elif !defined(UCHAR_TYPE)
+#else
# define UCHAR_TYPE uint16_t
#endif
-#if defined(U_COMBINED_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION) || \
- defined(U_I18N_IMPLEMENTATION) || defined(U_IO_IMPLEMENTATION)
- // Inside the ICU library code, never configurable.
+#if defined(U_ALL_IMPLEMENTATION) || !defined(UCHAR_TYPE)
typedef char16_t UChar;
-#elif defined(UCHAR_TYPE)
- typedef UCHAR_TYPE UChar;
-#elif U_CPLUSPLUS_VERSION != 0
- typedef char16_t UChar; // C++
#else
- typedef uint16_t UChar; // C
+ typedef UCHAR_TYPE UChar;
#endif
/**
diff --git a/libicu/ndk_headers/unicode/urename.h b/libicu/ndk_headers/unicode/urename.h
index 74f2cae51..c94592ec0 100644
--- a/libicu/ndk_headers/unicode/urename.h
+++ b/libicu/ndk_headers/unicode/urename.h
@@ -272,6 +272,7 @@
#define u_getDataVersion U_ICU_ENTRY_POINT_RENAME(u_getDataVersion)
#define u_getDefaultConverter U_ICU_ENTRY_POINT_RENAME(u_getDefaultConverter)
#define u_getFC_NFKC_Closure U_ICU_ENTRY_POINT_RENAME(u_getFC_NFKC_Closure)
+#define u_getIDTypes U_ICU_ENTRY_POINT_RENAME(u_getIDTypes)
#define u_getISOComment U_ICU_ENTRY_POINT_RENAME(u_getISOComment)
#define u_getIntPropertyMap U_ICU_ENTRY_POINT_RENAME(u_getIntPropertyMap)
#define u_getIntPropertyMaxValue U_ICU_ENTRY_POINT_RENAME(u_getIntPropertyMaxValue)
@@ -289,6 +290,7 @@
#define u_getVersion U_ICU_ENTRY_POINT_RENAME(u_getVersion)
#define u_get_stdout U_ICU_ENTRY_POINT_RENAME(u_get_stdout)
#define u_hasBinaryProperty U_ICU_ENTRY_POINT_RENAME(u_hasBinaryProperty)
+#define u_hasIDType U_ICU_ENTRY_POINT_RENAME(u_hasIDType)
#define u_init U_ICU_ENTRY_POINT_RENAME(u_init)
#define u_isIDIgnorable U_ICU_ENTRY_POINT_RENAME(u_isIDIgnorable)
#define u_isIDPart U_ICU_ENTRY_POINT_RENAME(u_isIDPart)
@@ -1192,16 +1194,20 @@
#define ulocimp_canonicalize U_ICU_ENTRY_POINT_RENAME(ulocimp_canonicalize)
#define ulocimp_forLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_forLanguageTag)
#define ulocimp_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocimp_getBaseName)
-#define ulocimp_getCountry U_ICU_ENTRY_POINT_RENAME(ulocimp_getCountry)
#define ulocimp_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywordValue)
#define ulocimp_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywords)
#define ulocimp_getKnownCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_getKnownCanonicalizedLocaleForTest)
#define ulocimp_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocimp_getLanguage)
#define ulocimp_getName U_ICU_ENTRY_POINT_RENAME(ulocimp_getName)
+#define ulocimp_getParent U_ICU_ENTRY_POINT_RENAME(ulocimp_getParent)
+#define ulocimp_getRegion U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegion)
#define ulocimp_getRegionForSupplementalData U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegionForSupplementalData)
#define ulocimp_getScript U_ICU_ENTRY_POINT_RENAME(ulocimp_getScript)
+#define ulocimp_getSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_getSubtags)
+#define ulocimp_getVariant U_ICU_ENTRY_POINT_RENAME(ulocimp_getVariant)
#define ulocimp_isCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_isCanonicalizedLocaleForTest)
#define ulocimp_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_minimizeSubtags)
+#define ulocimp_setKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_setKeywordValue)
#define ulocimp_toBcpKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpKey)
#define ulocimp_toBcpType U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpType)
#define ulocimp_toLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_toLanguageTag)
@@ -1800,6 +1806,7 @@
#define usnum_multiplyByPowerOfTen U_ICU_ENTRY_POINT_RENAME(usnum_multiplyByPowerOfTen)
#define usnum_openForInt64 U_ICU_ENTRY_POINT_RENAME(usnum_openForInt64)
#define usnum_roundTo U_ICU_ENTRY_POINT_RENAME(usnum_roundTo)
+#define usnum_setMaximumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMaximumIntegerDigits)
#define usnum_setMinimumFractionDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumFractionDigits)
#define usnum_setMinimumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumIntegerDigits)
#define usnum_setSign U_ICU_ENTRY_POINT_RENAME(usnum_setSign)
diff --git a/libicu/ndk_headers/unicode/uscript.h b/libicu/ndk_headers/unicode/uscript.h
index c1d227312..b5c3766ce 100644
--- a/libicu/ndk_headers/unicode/uscript.h
+++ b/libicu/ndk_headers/unicode/uscript.h
@@ -502,6 +502,9 @@ typedef enum UScriptCode {
/** \xrefitem stable "Stable" "Stable List" ICU 72 */
USCRIPT_NAG_MUNDARI = 199,/* Nagm */
+ /** \xrefitem stable "Stable" "Stable List" ICU 75 */
+ USCRIPT_ARABIC_NASTALIQ = 200, /* Aran */
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UScriptCode value.
@@ -509,7 +512,7 @@ typedef enum UScriptCode {
*
* \xrefitem deprecated "Deprecated" "Deprecated List" ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- USCRIPT_CODE_LIMIT = 200
+ USCRIPT_CODE_LIMIT = 201
#endif // U_HIDE_DEPRECATED_API
} UScriptCode;
diff --git a/libicu/ndk_headers/unicode/utypes.h b/libicu/ndk_headers/unicode/utypes.h
index 31c96052e..97c8bc4a2 100644
--- a/libicu/ndk_headers/unicode/utypes.h
+++ b/libicu/ndk_headers/unicode/utypes.h
@@ -428,6 +428,7 @@ typedef enum UErrorCode {
U_PLUGIN_CHANGED_LEVEL_WARNING = -120, /**< A plugin caused a level change. May not be an error, but later plugins may not load. */
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UErrorCode warning value.
@@ -558,12 +559,27 @@ typedef enum UErrorCode {
U_FORMAT_INEXACT_ERROR, /**< Cannot format a number exactly and rounding mode is ROUND_UNNECESSARY \xrefitem stable "Stable" "Stable List" ICU 4.8 */
U_NUMBER_ARG_OUTOFBOUNDS_ERROR, /**< The argument to a NumberFormatter helper method was out of bounds; the bounds are usually 0 to 999. \xrefitem stable "Stable" "Stable List" ICU 61 */
U_NUMBER_SKELETON_SYNTAX_ERROR, /**< The number skeleton passed to C++ NumberFormatter or C UNumberFormatter was invalid or contained a syntax error. \xrefitem stable "Stable" "Stable List" ICU 62 */
+
+ /* MessageFormat 2.0 errors */
+ U_MF_UNRESOLVED_VARIABLE_ERROR, /**< A variable is referred to but not bound by any definition \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_SYNTAX_ERROR, /**< Includes all syntax errors \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_UNKNOWN_FUNCTION_ERROR, /**< An annotation refers to a function not defined by the standard or custom function registry \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_VARIANT_KEY_MISMATCH_ERROR, /**< In a match-construct, one or more variants had a different number of keys from the number of selectors \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_FORMATTING_ERROR, /**< Covers all runtime errors: for example, an internally inconsistent set of options. \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_NONEXHAUSTIVE_PATTERN_ERROR, /**< In a match-construct, the variants do not cover all possible values \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_DUPLICATE_OPTION_NAME_ERROR, /**< In an annotation, the same option name appears more than once \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_SELECTOR_ERROR, /**< A selector function is applied to an operand of the wrong type \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_MISSING_SELECTOR_ANNOTATION_ERROR, /**< A selector expression evaluates to an unannotated operand. \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_DUPLICATE_DECLARATION_ERROR, /**< The same variable is declared in more than one .local or .input declaration. \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_OPERAND_MISMATCH_ERROR, /**< An operand provided to a function does not have the required form for that function \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_UNSUPPORTED_STATEMENT_ERROR, /**< A message includes a reserved statement. \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
+ U_MF_UNSUPPORTED_EXPRESSION_ERROR, /**< A message includes syntax reserved for future standardization or private implementation use. \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 75 technology preview \xrefitem deprecated "Deprecated" "Deprecated List" This API is for technology preview only. */
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal formatting API error code.
* \xrefitem deprecated "Deprecated" "Deprecated List" ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- U_FMT_PARSE_ERROR_LIMIT = 0x10114,
+ U_FMT_PARSE_ERROR_LIMIT = 0x10121,
#endif // U_HIDE_DEPRECATED_API
/*
diff --git a/libicu/ndk_headers/unicode/uvernum.h b/libicu/ndk_headers/unicode/uvernum.h
index ee5b5be70..86454c926 100644
--- a/libicu/ndk_headers/unicode/uvernum.h
+++ b/libicu/ndk_headers/unicode/uvernum.h
@@ -53,13 +53,13 @@
* This value will change in the subsequent releases of ICU
* \xrefitem stable "Stable" "Stable List" ICU 2.4
*/
-#define U_ICU_VERSION_MAJOR_NUM 74
+#define U_ICU_VERSION_MAJOR_NUM 75
/** The current ICU minor version as an integer.
* This value will change in the subsequent releases of ICU
* \xrefitem stable "Stable" "Stable List" ICU 2.6
*/
-#define U_ICU_VERSION_MINOR_NUM 2
+#define U_ICU_VERSION_MINOR_NUM 1
/** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU
@@ -79,7 +79,7 @@
* This value will change in the subsequent releases of ICU
* \xrefitem stable "Stable" "Stable List" ICU 2.6
*/
-#define U_ICU_VERSION_SUFFIX _74
+#define U_ICU_VERSION_SUFFIX _75
/**
* \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -132,7 +132,7 @@
* This value will change in the subsequent releases of ICU
* \xrefitem stable "Stable" "Stable List" ICU 2.4
*/
-#define U_ICU_VERSION "74.2"
+#define U_ICU_VERSION "75.1"
/**
* The current ICU library major version number as a string, for library name suffixes.
@@ -145,13 +145,13 @@
*
* \xrefitem stable "Stable" "Stable List" ICU 2.6
*/
-#define U_ICU_VERSION_SHORT "74"
+#define U_ICU_VERSION_SHORT "75"
#ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C.
* \xrefitem internal "Internal" "Internal List" Do not use. This API is for internal use only. ICU 4.4 Internal Use Only
**/
-#define U_ICU_DATA_VERSION "74.2"
+#define U_ICU_DATA_VERSION "75.1"
#endif /* U_HIDE_INTERNAL_API */
/*===========================================================================
diff --git a/tools/cldr/cldr-to-icu/build-icu-data.xml b/tools/cldr/cldr-to-icu/build-icu-data.xml
index 192670143..d3a5f386a 100644
--- a/tools/cldr/cldr-to-icu/build-icu-data.xml
+++ b/tools/cldr/cldr-to-icu/build-icu-data.xml
@@ -61,10 +61,10 @@
<property name="specialsDir" value="${basedir}/../../../icu4c/source/data/xml"/>
<!-- Default value for ICU version (icuver.txt). Update this for each release. -->
- <property name="icuVersion" value="74.2.0.0"/>
+ <property name="icuVersion" value="75.1.0.0"/>
<!-- Default value for ICU data version (icuver.txt). Update this for each release. -->
- <property name="icuDataVersion" value="74.2.0.0"/>
+ <property name="icuDataVersion" value="75.1.0.0"/>
<!-- An override for the CLDR version string (icuver.txt and others). This will be
extracted from the CLDR library used for building the data if not set here. -->
@@ -209,7 +209,7 @@
// K
ka, kab, kam, kde, kea, kgp, khq, ki, kk, kkj, kl, kln, km, kn, ko, kok, ks
- ks_Deva, ks_IN, ksb, ksf, ksh, ku, kw, kxv, kxv_Deva, kxv_Orya, kxv_Telu, ky
+ ks_Deva, ks_IN, ksb, ksf, ksh, ku, kw, kxv, kxv_Deva, kxv_IN, kxv_Orya, kxv_Telu, ky
// L
lag, lb, lg, lij, lkt, lmo, ln, lo, lrc, lt, lu, luo, luy, lv
diff --git a/tools/cldr/cldr-to-icu/pom.xml b/tools/cldr/cldr-to-icu/pom.xml
index 5b577cfd1..98a417684 100644
--- a/tools/cldr/cldr-to-icu/pom.xml
+++ b/tools/cldr/cldr-to-icu/pom.xml
@@ -83,7 +83,7 @@
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
- <version>74.1</version>
+ <version>75.0.1-SNAPSHOT</version>
<!-- Note: see https://github.com/unicode-org/icu/packages/1954682/versions
for the icu4j.version tag to use. In general we should just use the latest
SNAPSHOT for the ICU version that we want, so this should only need updating
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuFunctions.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuFunctions.java
index 1736ad439..f7a04c07a 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuFunctions.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuFunctions.java
@@ -7,7 +7,7 @@ import static java.lang.Integer.parseInt;
import java.time.LocalDate;
import java.time.LocalDateTime;
-import java.time.ZoneOffset;
+import java.time.ZoneId;
import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -34,12 +34,13 @@ final class IcuFunctions {
* <ul>
* <li>args[0] = ISO date string (e.g. "2019-05-23")
* <li>args[1] = Date field type name (e.g. "from")
+ * <li>args[2] = Timezone for ISO date string, as CLDR canonical “long” time zone ID; Etc/UTC for most
* </ul>
*/
static final NamedFunction DATE_FN =
- NamedFunction.create("date", 2, args -> {
+ NamedFunction.create("date", 3, args -> {
long millis =
- DateFieldType.toEnum(args.get(1)).toEpochMillis(LocalDate.parse(args.get(0)));
+ DateFieldType.toEnum(args.get(1)).toEpochMillis(LocalDate.parse(args.get(0)), args.get(2));
// Strictly speaking the masking is redundant and could be removed.
int hiBits = (int) ((millis >>> 32) & 0xFFFFFFFFL);
int loBits = (int) (millis & 0xFFFFFFFFL);
@@ -187,8 +188,9 @@ final class IcuFunctions {
this.adjustFn = adjustFn;
}
- long toEpochMillis(LocalDate date) {
- return adjustFn.apply(date).toInstant(ZoneOffset.UTC).toEpochMilli();
+ long toEpochMillis(LocalDate date, String tzid) {
+ // Need to check whether Java ZoneId handles all CLDR canonical “long” time zone IDs
+ return adjustFn.apply(date).atZone(ZoneId.of(tzid)).toInstant().toEpochMilli();
}
static DateFieldType toEnum(String value) {
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java
index cc61b6ffd..6373f9a4b 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java
@@ -111,7 +111,8 @@ public final class LdmlConverter {
"convertUnits",
"unitConstants",
"unitQuantities",
- "unitPreferenceData");
+ "unitPreferenceData",
+ "unitPrefixes");
private static final Predicate<CldrPath> GRAMMATICAL_FEATURES_PATHS =
supplementalMatcher("grammaticalData");
private static final Predicate<CldrPath> NUMBERING_SYSTEMS_PATHS =
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilder.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilder.java
index 30d1b7326..edce6b06e 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilder.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilder.java
@@ -8,7 +8,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSetMultimap;
import com.google.common.collect.ImmutableSortedMap;
import com.ibm.icu.impl.locale.LSR;
-import com.ibm.icu.impl.locale.XLikelySubtags;
+import com.ibm.icu.impl.locale.LikelySubtags;
import org.unicode.cldr.api.AttributeKey;
import org.unicode.cldr.api.CldrData;
import org.unicode.cldr.api.CldrPath;
@@ -149,7 +149,7 @@ final class LikelySubtagsBuilder {
}
}
- public static XLikelySubtags.Data build(CldrData supplementalData) {
+ public static LikelySubtags.Data build(CldrData supplementalData) {
// Build the table of LSR data from CLDR aliases and likely subtag information.
Aliases languageAliases = Aliases.getAliases(supplementalData, AliasType.LANGUAGE);
Aliases regionAliases = Aliases.getAliases(supplementalData, AliasType.TERRITORY);
@@ -175,12 +175,12 @@ final class LikelySubtagsBuilder {
// Build the Trie of the LSR table data.
Trie trie = writeLsrTable(lsrTable, lsrToIndex);
- // Note: Using XLikelySubtags as a fairly "dumb" container for the return values
+ // Note: Using LikelySubtags as a fairly "dumb" container for the return values
// requires us to do slightly awkward things like passing mutable arrays around, but
// the advantage it has is that this data structure is also what's used in client code,
// so if the likely subtags data changes, it will be a forcing function to change this
// code.
- return new XLikelySubtags.Data(
+ return new LikelySubtags.Data(
languageAliases.getCanonicalMap(),
regionAliases.getCanonicalMap(),
trie.toByteArray(),
@@ -214,7 +214,7 @@ final class LikelySubtagsBuilder {
// We already checked '*' is in every scripts table.
Map<String, LSR> regions = scripts.get("*");
if (regions.size() > 1) {
- languageSpan.putPrefixAndValue(XLikelySubtags.SKIP_SCRIPT);
+ languageSpan.putPrefixAndValue(LikelySubtags.SKIP_SCRIPT);
}
writeRegions(languageSpan, regions, lsrToIndex);
} else {
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapper.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapper.java
index 150a9db28..c8938397b 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapper.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapper.java
@@ -41,8 +41,8 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.primitives.Bytes;
import com.ibm.icu.impl.locale.LSR;
+import com.ibm.icu.impl.locale.LikelySubtags;
import com.ibm.icu.impl.locale.LocaleDistance;
-import com.ibm.icu.impl.locale.XLikelySubtags;
import com.ibm.icu.lang.UScript;
import com.ibm.icu.util.ULocale;
@@ -141,7 +141,7 @@ public final class LocaleDistanceMapper {
throw new IllegalStateException(
"The M49 list is too long. We can only encode up to 27 M49 codes.");
}
- XLikelySubtags.Data likelyData = LikelySubtagsBuilder.build(data);
+ LikelySubtags.Data likelyData = LikelySubtagsBuilder.build(data);
icuData.add(LIKELY_LANGUAGES, ofMapEntries(likelyData.languageAliases));
icuData.add(LIKELY_M49, RbValue.of(M49));
icuData.add(LIKELY_REGIONS, ofMapEntries(likelyData.regionAliases));
@@ -422,7 +422,7 @@ public final class LocaleDistanceMapper {
Set<LSR> paradigmLSRs = new LinkedHashSet<>();
for (String paradigm : LIST_SPLITTER.split(localesList)) {
- LSR max = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(new ULocale(paradigm), false);
+ LSR max = LikelySubtags.INSTANCE.makeMaximizedLsrFrom(new ULocale(paradigm), false);
// Clear the LSR flags to make the data equality test in LocaleDistanceTest happy.
paradigmLSRs.add(new LSR(max.language, max.script, max.region, LSR.DONT_CARE_FLAGS));
}
diff --git a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt
index 421b4eded..2b9093184 100644
--- a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt
+++ b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt
@@ -26,25 +26,63 @@
//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@tender="false"]
; /CurrencyMap/$1/<FIFO>/id ; values=$2
; /CurrencyMap/$1/<FIFO>/tender ; values=false
-//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@from="(%W)"][@iso4217="(%W)"]
- ; /CurrencyMap/$1/<FIFO>/id ; values=$3
- ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($2, from)
-//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@from="(%W)"][@iso4217="(%W)"][@tender="false"]
- ; /CurrencyMap/$1/<FIFO>/id ; values=$3
- ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($2, from)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, Etc/UTC)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@tz="(%W)"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, $4)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@tender="false"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, Etc/UTC)
+ ; /CurrencyMap/$1/<FIFO>/tender ; values=false
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@tz="(%W)"][@tender="false"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, $4)
+ ; /CurrencyMap/$1/<FIFO>/tender ; values=false
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@to="(%W)"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, Etc/UTC)
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($4, to, Etc/UTC)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@to="(%W)"][@tz="(%W)"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, $5)
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($4, to, $5)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@to="(%W)"][@to-tz="(%W)"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, Etc/UTC)
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($4, to, $5)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@to="(%W)"][@tz="(%W)"][@to-tz="(%W)"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, $5)
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($4, to, $6)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@to="(%W)"][@tender="false"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, Etc/UTC)
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($4, to, Etc/UTC)
+ ; /CurrencyMap/$1/<FIFO>/tender ; values=false
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@to="(%W)"][@tz="(%W)"][@tender="false"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, $5)
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($4, to, $5)
; /CurrencyMap/$1/<FIFO>/tender ; values=false
-//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@from="(%W)"][@to="(%W)"][@iso4217="(%W)"]
- ; /CurrencyMap/$1/<FIFO>/id ; values=$4
- ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($2, from)
- ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($3, to)
-//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@from="(%W)"][@to="(%W)"][@iso4217="(%W)"][@tender="false"]
- ; /CurrencyMap/$1/<FIFO>/id ; values=$4
- ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($2, from)
- ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($3, to)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@to="(%W)"][@to-tz="(%W)"][@tender="false"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, Etc/UTC)
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($4, to, $5)
+ ; /CurrencyMap/$1/<FIFO>/tender ; values=false
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@from="(%W)"][@to="(%W)"][@tz="(%W)"][@to-tz="(%W)"][@tender="false"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/from:intvector ; values=&date($3, from, $5)
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($4, to, $6)
; /CurrencyMap/$1/<FIFO>/tender ; values=false
-//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@to="(%W)"][@iso4217="(%W)"][@tender="false"]
- ; /CurrencyMap/$1/<FIFO>/id ; values=$3
- ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($2, to)
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@to="(%W)"][@tender="false"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($3, to, Etc/UTC)
+ ; /CurrencyMap/$1/<FIFO>/tender ; values=false
+//supplementalData/currencyData/region[@iso3166="(%W)"]/currency[@iso4217="(%W)"][@to="(%W)"][@tz="(%W)"][@tender="false"]
+ ; /CurrencyMap/$1/<FIFO>/id ; values=$2
+ ; /CurrencyMap/$1/<FIFO>/to:intvector ; values=&date($3, to, $4)
; /CurrencyMap/$1/<FIFO>/tender ; values=false
//supplementalData/currencyData/fractions/info[@iso4217="(%W)"][@digits="(%N)"][@rounding="(%N)"][@cashDigits="(%N)"][@cashRounding="(%N)"] ; /CurrencyMeta/$1:intvector ; values=$2 $3 $4 $5
//supplementalData/currencyData/fractions/info[@iso4217="(%W)"][@digits="(%N)"][@rounding="(%N)"][@cashRounding="(%N)"] ; /CurrencyMeta/$1:intvector ; values=$2 $3 $2 $4
@@ -147,6 +185,14 @@
# units.xml
+//supplementalData/unitPrefixes/unitPrefix[@type="(%W)"][@symbol="(%W)"][@power10="(%A)"]
+ ; /unitPrefixes/$1/symbol ; values=$2
+ ; /unitPrefixes/$1/power10 ; values=$3
+
+//supplementalData/unitPrefixes/unitPrefix[@type="(%W)"][@symbol="(%W)"][@power2="(%A)"]
+ ; /unitPrefixes/$1/symbol ; values=$2
+ ; /unitPrefixes/$1/power2 ; values=$3
+
//supplementalData/unitConstants/unitConstant[@constant="(%W)"][@value="(%A)"](?:[@status="%W"])?
; /unitConstants/$1 ; values="$2"
@@ -171,6 +217,10 @@
; /convertUnits/$1/factor ; values="$3"
; /convertUnits/$1/offset ; values=$4
+//supplementalData/convertUnits/convertUnit[@source="(%W)"][@baseUnit="(%W)"][@special="(%A)"]
+ ; /convertUnits/$1/target ; values=$2
+ ; /convertUnits/$1/special ; values=$3
+
//supplementalData/convertUnits/convertUnit[@source="(%W)"][@baseUnit="(%W)"][@systems="(%W)"]
; /convertUnits/$1/target ; values=$2
; /convertUnits/$1/factor ; values=1
@@ -193,6 +243,11 @@
; /convertUnits/$1/offset ; values=$4
; /convertUnits/$1/systems ; values="$5"
+//supplementalData/convertUnits/convertUnit[@source="(%W)"][@baseUnit="(%W)"][@special="(%A)"][@systems="(%W)"]
+ ; /convertUnits/$1/target ; values=$2
+ ; /convertUnits/$1/special ; values=$3
+ ; /convertUnits/$1/systems ; values="$4"
+
# note the following will go into metadata.txt, not units.txt
//supplementalData/metadata/alias/(unit|usage)Alias[@type="(%A)"][@replacement="(%A)"][@reason="(%A)"]
; /alias/$1/$2/reason ; values="$4"
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilderTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilderTest.java
index b16a1b119..b38f926d3 100644
--- a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilderTest.java
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilderTest.java
@@ -20,14 +20,14 @@ import org.unicode.cldr.api.CldrValue;
import com.google.common.collect.ImmutableMap;
import com.ibm.icu.impl.locale.LSR;
-import com.ibm.icu.impl.locale.XLikelySubtags;
+import com.ibm.icu.impl.locale.LikelySubtags;
import com.ibm.icu.util.BytesTrie;
public class LikelySubtagsBuilderTest {
@Test
public void testLanguageAliases() {
- XLikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
+ LikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
// Minimum mapping (or else code complains).
likelySubtag("und", "en_Latn_US"),
@@ -44,7 +44,7 @@ public class LikelySubtagsBuilderTest {
@Test
public void testTerritoryAliases() {
- XLikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
+ LikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
// Minimum mapping (or else code complains).
likelySubtag("und", "en_Latn_US"),
@@ -60,7 +60,7 @@ public class LikelySubtagsBuilderTest {
@Test
public void testLikelySubtags() {
- XLikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
+ LikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
likelySubtag("und", "en_Latn_US"),
likelySubtag("en", "en_Latn_US"),
likelySubtag("pt", "pt_Latn_BR"),
@@ -99,7 +99,7 @@ public class LikelySubtagsBuilderTest {
.inOrder();
}
- private static ImmutableMap<String, LSR> getTrieTable(XLikelySubtags.Data subtags) {
+ private static ImmutableMap<String, LSR> getTrieTable(LikelySubtags.Data subtags) {
// We rebuild the Trie from the byte[] data.
return TestData.getTrieTable(new BytesTrie(subtags.trie, 0), "*", i -> subtags.lsrs[i]);
}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TrieTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TrieTest.java
index e57981a82..a4f231259 100644
--- a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TrieTest.java
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TrieTest.java
@@ -139,7 +139,7 @@ public class TrieTest {
// We rebuild the Trie from the byte[] data.
BytesTrie trie = new BytesTrie(data, 0);
- // Mostly copied from XLikelySubtags (since the necessary constructor is private).
+ // Mostly copied from LikelySubtags (since the necessary constructor is private).
// Main change is the this no longer uses a TreeMap, since we want to test order.
Map<String, Integer> map = new LinkedHashMap<>();
StringBuilder sb = new StringBuilder();
diff --git a/tools/icuutil.py b/tools/icuutil.py
index f0c4719ee..4821809ef 100644
--- a/tools/icuutil.py
+++ b/tools/icuutil.py
@@ -209,10 +209,6 @@ def MakeAndCopyIcuDataFiles(icu_build_dir, copy_icu4c_dat_file_only=False):
subprocess.check_call(['env', 'ICU_DATA_VER=' + icu4j_data_ver, './extract-data-files.sh'])
os.chdir(icu_build_dir)
- # The upstream extract-data-files.sh extracts the files, but removed the binary data jar files.
- # We have to copy them again for the usage in AOSP .bp files.
- CopyIcu4jDataFiles()
-
testdata_out_dir = '%s/test/testdata/out' % icu4cDir()
print('Copying test data to %s ' % testdata_out_dir)
if os.path.exists(testdata_out_dir):
diff --git a/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java b/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
index cfb5340f8..13b3a9fff 100644
--- a/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
+++ b/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
@@ -793,6 +793,11 @@ public class Icu4jTransform {
"type:android.icu.text.Collator$CollatorFactory",
"type:android.icu.text.NumberFormat$NumberFormatFactory",
"type:android.icu.text.NumberFormat$SimpleNumberFormatFactory",
+
+ // TODO: Remove the below list when the next window for new Android API opens
+ "field:android.icu.lang.UScript#ARABIC_NASTALIQ",
+ "field:android.icu.text.UnicodeSet#SIMPLE_CASE_INSENSITIVE",
+ "field:android.icu.util.MeasureUnit#BEAUFORT",
};
/**
diff --git a/tools/updatecldrdata.py b/tools/updatecldrdata.py
index 30cfe453c..8240cbbe9 100755
--- a/tools/updatecldrdata.py
+++ b/tools/updatecldrdata.py
@@ -120,6 +120,15 @@ def main():
os.path.join(icu4j_build_dir, 'main/core/src/test/resources/com/ibm/icu/dev/data/cldr'),
os.path.join(icu_dir, 'icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/cldr'))
+ # Copy the generated localefallback_data.h and LocaleFallbackData.java
+ shutil.copy(
+ os.path.join(icu4c_build_dir, 'source/common/localefallback_data.h'),
+ os.path.join(icu_dir, 'icu4c/source/common/localefallback_data.h'))
+ shutil.copy(
+ os.path.join(icu4j_build_dir,
+ 'main/core/src/main/java/com/ibm/icu/impl/LocaleFallbackData.java'),
+ os.path.join(icu_dir, 'icu4j/main/core/src/main/java/com/ibm/icu/impl/LocaleFallbackData.java'))
+
print('Look in %s for new data source files' % icu4c_data_source_dir)
sys.exit(0)